From 74522dc18c958a2a3eeb37921bc61e81ee8c7fb0 Mon Sep 17 00:00:00 2001 From: ac360 Date: Wed, 12 Oct 2016 21:26:47 -0700 Subject: [PATCH 1/5] add cors --- .idea/encodings.xml | 6 + .idea/jsLibraryMappings.xml | 6 + .idea/misc.xml | 16 + .idea/modules.xml | 8 + .idea/serverless-crud.iml | 8 + .idea/vcs.xml | 6 + .idea/watcherTasks.xml | 4 + .idea/workspace.xml | 211 + .../cloudformation-template-create-stack.json | 99 + .../cloudformation-template-update-stack.json | 1051 + .serverless/serverless-crud.zip | Bin 0 -> 2149353 bytes handler.js | 15 + node_modules/aws-sdk/.changes/2.4.10.json | 12 + node_modules/aws-sdk/.changes/2.4.11.json | 32 + node_modules/aws-sdk/.changes/2.4.12.json | 42 + node_modules/aws-sdk/.changes/2.4.13.json | 27 + node_modules/aws-sdk/.changes/2.4.14.json | 17 + node_modules/aws-sdk/.changes/2.4.8.json | 42 + node_modules/aws-sdk/.changes/2.4.9.json | 22 + node_modules/aws-sdk/.changes/2.5.0.json | 37 + node_modules/aws-sdk/.changes/2.5.1.json | 17 + node_modules/aws-sdk/.changes/2.5.2.json | 22 + node_modules/aws-sdk/.changes/2.5.3.json | 7 + node_modules/aws-sdk/.changes/2.5.4.json | 17 + node_modules/aws-sdk/.changes/2.5.5.json | 22 + node_modules/aws-sdk/.changes/2.5.6.json | 7 + node_modules/aws-sdk/.changes/2.6.0.json | 22 + node_modules/aws-sdk/.changes/2.6.1.json | 7 + node_modules/aws-sdk/.changes/2.6.2.json | 7 + node_modules/aws-sdk/.changes/2.6.3.json | 17 + node_modules/aws-sdk/.changes/2.6.4.json | 32 + node_modules/aws-sdk/.changes/2.6.5.json | 12 + node_modules/aws-sdk/.changes/2.6.6.json | 12 + node_modules/aws-sdk/.changes/2.6.7.json | 12 + node_modules/aws-sdk/.changes/2.6.8.json | 12 + node_modules/aws-sdk/.jshintrc | 68 + node_modules/aws-sdk/.npmignore | 18 + node_modules/aws-sdk/.tesselinclude | 2 + node_modules/aws-sdk/CHANGELOG.md | 131 + node_modules/aws-sdk/CONTRIBUTING.md | 98 + node_modules/aws-sdk/LICENSE.txt | 202 + node_modules/aws-sdk/NOTICE.txt | 5 + node_modules/aws-sdk/README.md | 160 + node_modules/aws-sdk/UPGRADING.md | 157 + .../aws-sdk/apis/acm-2015-12-08.min.json | 263 + .../apis/acm-2015-12-08.paginators.json | 10 + .../apis/apigateway-2015-07-09.min.json | 3154 + .../apigateway-2015-07-09.paginators.json | 70 + ...ation-autoscaling-2016-02-06.examples.json | 257 + ...pplication-autoscaling-2016-02-06.min.json | 330 + ...ion-autoscaling-2016-02-06.paginators.json | 22 + .../apis/autoscaling-2011-01-01.examples.json | 1395 + .../apis/autoscaling-2011-01-01.min.json | 1608 + .../autoscaling-2011-01-01.paginators.json | 52 + .../apis/cloudformation-2010-05-15.min.json | 860 + .../cloudformation-2010-05-15.paginators.json | 27 + .../cloudformation-2010-05-15.waiters2.json | 235 + .../apis/cloudfront-2016-09-07.min.json | 1876 + .../cloudfront-2016-09-07.paginators.json | 32 + .../apis/cloudfront-2016-09-07.waiters2.json | 47 + .../aws-sdk/apis/cloudhsm-2014-05-30.min.json | 519 + .../apis/cloudsearch-2011-02-01.min.json | 837 + .../cloudsearch-2011-02-01.paginators.json | 13 + .../apis/cloudsearch-2013-01-01.min.json | 1086 + .../cloudsearch-2013-01-01.paginators.json | 20 + .../cloudsearchdomain-2013-01-01.min.json | 297 + .../apis/cloudtrail-2013-11-01.min.json | 454 + .../cloudtrail-2013-11-01.paginators.json | 7 + .../apis/codecommit-2015-04-13.min.json | 375 + .../codecommit-2015-04-13.paginators.json | 14 + .../apis/codedeploy-2014-10-06.min.json | 1120 + .../codedeploy-2014-10-06.paginators.json | 34 + .../apis/codedeploy-2014-10-06.waiters2.json | 30 + .../codepipeline-2015-07-09.examples.json | 902 + .../apis/codepipeline-2015-07-09.min.json | 1100 + .../apis/cognito-identity-2014-06-30.min.json | 487 + .../apis/cognito-idp-2016-04-18.min.json | 1866 + .../apis/cognito-sync-2014-06-30.min.json | 746 + .../aws-sdk/apis/config-2014-11-12.min.json | 857 + .../apis/config-2014-11-12.paginators.json | 10 + .../apis/datapipeline-2012-10-29.min.json | 666 + .../datapipeline-2012-10-29.paginators.json | 26 + .../apis/devicefarm-2015-06-23.examples.json | 1242 + .../apis/devicefarm-2015-06-23.min.json | 1404 + .../devicefarm-2015-06-23.paginators.json | 74 + .../apis/directconnect-2012-10-25.min.json | 563 + .../directconnect-2012-10-25.paginators.json | 22 + .../apis/discovery-2015-11-01.min.json | 356 + .../aws-sdk/apis/dms-2016-01-01.min.json | 1130 + .../aws-sdk/apis/ds-2015-04-16.min.json | 1033 + .../aws-sdk/apis/dynamodb-2011-12-05.min.json | 663 + .../apis/dynamodb-2011-12-05.paginators.json | 26 + .../apis/dynamodb-2011-12-05.waiters2.json | 35 + .../aws-sdk/apis/dynamodb-2012-08-10.min.json | 1050 + .../apis/dynamodb-2012-08-10.paginators.json | 26 + .../apis/dynamodb-2012-08-10.waiters2.json | 35 + .../aws-sdk/apis/ec2-2016-09-15.examples.json | 3740 + .../aws-sdk/apis/ec2-2016-09-15.min.json | 10892 ++ .../apis/ec2-2016-09-15.paginators.json | 138 + .../aws-sdk/apis/ec2-2016-09-15.waiters2.json | 593 + .../aws-sdk/apis/ecr-2015-09-21.examples.json | 215 + .../aws-sdk/apis/ecr-2015-09-21.min.json | 545 + .../aws-sdk/apis/ecs-2014-11-13.examples.json | 883 + .../aws-sdk/apis/ecs-2014-11-13.min.json | 1135 + .../apis/ecs-2014-11-13.paginators.json | 40 + .../aws-sdk/apis/ecs-2014-11-13.waiters2.json | 93 + .../apis/elasticache-2015-02-02.min.json | 1567 + .../elasticache-2015-02-02.paginators.json | 76 + .../apis/elasticache-2015-02-02.waiters2.json | 143 + .../elasticbeanstalk-2010-12-01.examples.json | 1109 + .../apis/elasticbeanstalk-2010-12-01.min.json | 1264 + ...lasticbeanstalk-2010-12-01.paginators.json | 25 + .../elasticfilesystem-2015-02-01.min.json | 395 + ...sticloadbalancing-2012-06-01.examples.json | 1036 + .../elasticloadbalancing-2012-06-01.min.json | 973 + ...icloadbalancing-2012-06-01.paginators.json | 18 + ...sticloadbalancing-2012-06-01.waiters2.json | 49 + ...icloadbalancingv2-2015-12-01.examples.json | 1384 + ...elasticloadbalancingv2-2015-12-01.min.json | 1022 + ...loadbalancingv2-2015-12-01.paginators.json | 20 + .../apis/elasticmapreduce-2009-03-31.min.json | 1241 + ...lasticmapreduce-2009-03-31.paginators.json | 32 + .../elasticmapreduce-2009-03-31.waiters2.json | 67 + .../elastictranscoder-2012-09-25.min.json | 1019 + ...astictranscoder-2012-09-25.paginators.json | 24 + ...elastictranscoder-2012-09-25.waiters2.json | 30 + .../apis/email-2010-12-01.examples.json | 953 + .../aws-sdk/apis/email-2010-12-01.min.json | 1214 + .../apis/email-2010-12-01.paginators.json | 13 + .../apis/email-2010-12-01.waiters2.json | 18 + .../aws-sdk/apis/es-2015-01-01.min.json | 502 + .../aws-sdk/apis/events-2015-10-07.min.json | 330 + .../aws-sdk/apis/firehose-2015-08-04.min.json | 550 + .../aws-sdk/apis/gamelift-2015-10-01.min.json | 1174 + .../aws-sdk/apis/glacier-2012-06-01.min.json | 1215 + .../apis/glacier-2012-06-01.paginators.json | 28 + .../apis/glacier-2012-06-01.waiters2.json | 39 + .../aws-sdk/apis/iam-2010-05-08.min.json | 2936 + .../apis/iam-2010-05-08.paginators.json | 198 + .../aws-sdk/apis/iam-2010-05-08.waiters2.json | 39 + .../apis/importexport-2010-06-01.min.json | 242 + .../importexport-2010-06-01.paginators.json | 11 + .../apis/inspector-2016-02-16.min.json | 1248 + .../aws-sdk/apis/iot-2015-05-28.min.json | 1934 + .../aws-sdk/apis/iot-data-2015-05-28.min.json | 128 + .../aws-sdk/apis/kinesis-2013-12-02.min.json | 503 + .../apis/kinesis-2013-12-02.paginators.json | 18 + .../apis/kinesis-2013-12-02.waiters2.json | 18 + .../apis/kinesisanalytics-2015-08-14.min.json | 755 + .../aws-sdk/apis/kms-2014-11-01.min.json | 759 + .../apis/kms-2014-11-01.paginators.json | 32 + .../aws-sdk/apis/lambda-2014-11-11.min.json | 423 + .../apis/lambda-2014-11-11.paginators.json | 16 + .../aws-sdk/apis/lambda-2015-03-31.min.json | 872 + .../apis/lambda-2015-03-31.paginators.json | 16 + .../aws-sdk/apis/logs-2014-03-28.min.json | 722 + .../apis/logs-2014-03-28.paginators.json | 49 + .../apis/machinelearning-2014-12-12.min.json | 1107 + ...machinelearning-2014-12-12.paginators.json | 28 + .../machinelearning-2014-12-12.waiters2.json | 81 + ...placecommerceanalytics-2015-07-01.min.json | 84 + node_modules/aws-sdk/apis/metadata.json | 305 + .../meteringmarketplace-2016-01-14.min.json | 47 + .../apis/mobileanalytics-2014-06-05.min.json | 74 + .../apis/monitoring-2010-08-01.min.json | 501 + .../monitoring-2010-08-01.paginators.json | 24 + .../apis/monitoring-2010-08-01.waiters2.json | 18 + .../aws-sdk/apis/opsworks-2013-02-18.min.json | 2141 + .../apis/opsworks-2013-02-18.paginators.json | 55 + .../apis/opsworks-2013-02-18.waiters2.json | 295 + .../aws-sdk/apis/rds-2013-01-10.min.json | 1895 + .../apis/rds-2013-01-10.paginators.json | 97 + .../aws-sdk/apis/rds-2013-02-12.min.json | 2027 + .../apis/rds-2013-02-12.paginators.json | 110 + .../aws-sdk/apis/rds-2013-09-09.min.json | 2163 + .../apis/rds-2013-09-09.paginators.json | 110 + .../aws-sdk/apis/rds-2013-09-09.waiters2.json | 97 + .../aws-sdk/apis/rds-2014-10-31.min.json | 3508 + .../apis/rds-2014-10-31.paginators.json | 110 + .../aws-sdk/apis/rds-2014-10-31.waiters2.json | 90 + .../aws-sdk/apis/redshift-2012-12-01.min.json | 2306 + .../apis/redshift-2012-12-01.paginators.json | 94 + .../apis/redshift-2012-12-01.waiters2.json | 97 + .../aws-sdk/apis/route53-2013-04-01.min.json | 2370 + .../apis/route53-2013-04-01.paginators.json | 33 + .../apis/route53-2013-04-01.waiters2.json | 18 + .../apis/route53domains-2014-05-15.min.json | 747 + .../route53domains-2014-05-15.paginators.json | 17 + .../aws-sdk/apis/s3-2006-03-01.min.json | 3787 + .../apis/s3-2006-03-01.paginators.json | 66 + .../aws-sdk/apis/s3-2006-03-01.waiters2.json | 73 + .../aws-sdk/apis/sdb-2009-04-15.min.json | 336 + .../apis/sdb-2009-04-15.paginators.json | 15 + .../apis/servicecatalog-2015-12-10.min.json | 529 + .../aws-sdk/apis/snowball-2016-06-30.min.json | 376 + .../apis/snowball-2016-06-30.paginators.json | 16 + .../aws-sdk/apis/sns-2010-03-31.min.json | 622 + .../apis/sns-2010-03-31.paginators.json | 29 + .../aws-sdk/apis/sqs-2012-11-05.examples.json | 618 + .../aws-sdk/apis/sqs-2012-11-05.min.json | 583 + .../apis/sqs-2012-11-05.paginators.json | 7 + .../aws-sdk/apis/ssm-2014-11-06.min.json | 932 + .../apis/ssm-2014-11-06.paginators.json | 40 + .../apis/storagegateway-2013-06-30.min.json | 1485 + .../storagegateway-2013-06-30.paginators.json | 52 + .../apis/streams.dynamodb-2012-08-10.min.json | 238 + .../aws-sdk/apis/sts-2011-06-15.min.json | 249 + .../aws-sdk/apis/support-2013-04-15.min.json | 569 + .../apis/support-2013-04-15.paginators.json | 25 + .../aws-sdk/apis/swf-2012-01-25.min.json | 2217 + .../apis/swf-2012-01-25.paginators.json | 46 + .../aws-sdk/apis/waf-2015-08-24.min.json | 1282 + .../apis/workspaces-2015-04-08.min.json | 538 + .../workspaces-2015-04-08.paginators.json | 20 + node_modules/aws-sdk/bower.json | 9 + node_modules/aws-sdk/browser.js | 6 + node_modules/aws-sdk/clients/acm.js | 18 + node_modules/aws-sdk/clients/all.js | 79 + node_modules/aws-sdk/clients/apigateway.js | 19 + .../aws-sdk/clients/applicationautoscaling.js | 18 + node_modules/aws-sdk/clients/autoscaling.js | 18 + .../aws-sdk/clients/browser_default.js | 61 + .../aws-sdk/clients/cloudformation.js | 19 + node_modules/aws-sdk/clients/cloudfront.js | 20 + node_modules/aws-sdk/clients/cloudhsm.js | 17 + node_modules/aws-sdk/clients/cloudsearch.js | 27 + .../aws-sdk/clients/cloudsearchdomain.js | 18 + node_modules/aws-sdk/clients/cloudtrail.js | 18 + node_modules/aws-sdk/clients/cloudwatch.js | 19 + .../aws-sdk/clients/cloudwatchevents.js | 17 + .../aws-sdk/clients/cloudwatchlogs.js | 18 + node_modules/aws-sdk/clients/codecommit.js | 18 + node_modules/aws-sdk/clients/codedeploy.js | 19 + node_modules/aws-sdk/clients/codepipeline.js | 17 + .../aws-sdk/clients/cognitoidentity.js | 18 + .../clients/cognitoidentityserviceprovider.js | 17 + node_modules/aws-sdk/clients/cognitosync.js | 17 + node_modules/aws-sdk/clients/configservice.js | 18 + node_modules/aws-sdk/clients/datapipeline.js | 18 + node_modules/aws-sdk/clients/devicefarm.js | 18 + node_modules/aws-sdk/clients/directconnect.js | 18 + .../aws-sdk/clients/directoryservice.js | 17 + node_modules/aws-sdk/clients/discovery.js | 17 + node_modules/aws-sdk/clients/dms.js | 17 + node_modules/aws-sdk/clients/dynamodb.js | 30 + .../aws-sdk/clients/dynamodbstreams.js | 17 + node_modules/aws-sdk/clients/ec2.js | 20 + node_modules/aws-sdk/clients/ecr.js | 17 + node_modules/aws-sdk/clients/ecs.js | 19 + node_modules/aws-sdk/clients/efs.js | 17 + node_modules/aws-sdk/clients/elasticache.js | 19 + .../aws-sdk/clients/elasticbeanstalk.js | 18 + .../aws-sdk/clients/elastictranscoder.js | 19 + node_modules/aws-sdk/clients/elb.js | 19 + node_modules/aws-sdk/clients/elbv2.js | 18 + node_modules/aws-sdk/clients/emr.js | 19 + node_modules/aws-sdk/clients/es.js | 17 + node_modules/aws-sdk/clients/firehose.js | 17 + node_modules/aws-sdk/clients/gamelift.js | 17 + node_modules/aws-sdk/clients/glacier.js | 20 + node_modules/aws-sdk/clients/iam.js | 19 + node_modules/aws-sdk/clients/importexport.js | 18 + node_modules/aws-sdk/clients/inspector.js | 17 + node_modules/aws-sdk/clients/iot.js | 17 + node_modules/aws-sdk/clients/iotdata.js | 18 + node_modules/aws-sdk/clients/kinesis.js | 19 + .../aws-sdk/clients/kinesisanalytics.js | 17 + node_modules/aws-sdk/clients/kms.js | 18 + node_modules/aws-sdk/clients/lambda.js | 27 + .../aws-sdk/clients/machinelearning.js | 20 + .../clients/marketplacecommerceanalytics.js | 17 + .../aws-sdk/clients/marketplacemetering.js | 17 + .../aws-sdk/clients/mobileanalytics.js | 17 + node_modules/aws-sdk/clients/opsworks.js | 19 + node_modules/aws-sdk/clients/rds.js | 47 + node_modules/aws-sdk/clients/redshift.js | 19 + node_modules/aws-sdk/clients/route53.js | 20 + .../aws-sdk/clients/route53domains.js | 18 + node_modules/aws-sdk/clients/s3.js | 20 + .../aws-sdk/clients/servicecatalog.js | 17 + node_modules/aws-sdk/clients/ses.js | 19 + node_modules/aws-sdk/clients/simpledb.js | 18 + node_modules/aws-sdk/clients/snowball.js | 18 + node_modules/aws-sdk/clients/sns.js | 18 + node_modules/aws-sdk/clients/sqs.js | 19 + node_modules/aws-sdk/clients/ssm.js | 18 + .../aws-sdk/clients/storagegateway.js | 18 + node_modules/aws-sdk/clients/sts.js | 18 + node_modules/aws-sdk/clients/support.js | 18 + node_modules/aws-sdk/clients/swf.js | 19 + node_modules/aws-sdk/clients/waf.js | 17 + node_modules/aws-sdk/clients/workspaces.js | 18 + .../aws-sdk/dist-tools/browser-builder.js | 87 + .../aws-sdk/dist-tools/client-creator.js | 216 + .../aws-sdk/dist-tools/create-all-services.js | 6 + .../aws-sdk/dist-tools/service-collector.js | 168 + node_modules/aws-sdk/dist-tools/transform.js | 43 + node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt | 96 + node_modules/aws-sdk/dist/aws-sdk.js | 99711 ++++++++++++++++ node_modules/aws-sdk/dist/aws-sdk.min.js | 40 + node_modules/aws-sdk/global.js | 2 + node_modules/aws-sdk/index.js | 2 + node_modules/aws-sdk/lib/api_loader.js | 12 + node_modules/aws-sdk/lib/aws.js | 7 + node_modules/aws-sdk/lib/browser.js | 14 + node_modules/aws-sdk/lib/browser_loader.js | 24 + node_modules/aws-sdk/lib/cloudfront/signer.js | 206 + node_modules/aws-sdk/lib/config.js | 511 + node_modules/aws-sdk/lib/core.js | 107 + node_modules/aws-sdk/lib/credentials.js | 150 + .../cognito_identity_credentials.js | 340 + .../credentials/credential_provider_chain.js | 135 + .../credentials/ec2_metadata_credentials.js | 81 + .../lib/credentials/ecs_credentials.js | 164 + .../credentials/environment_credentials.js | 91 + .../credentials/file_system_credentials.js | 68 + .../lib/credentials/saml_credentials.js | 89 + .../shared_ini_file_credentials.js | 204 + .../lib/credentials/temporary_credentials.js | 112 + .../credentials/web_identity_credentials.js | 96 + .../aws-sdk/lib/dynamodb/converter.js | 96 + .../aws-sdk/lib/dynamodb/document_client.js | 519 + node_modules/aws-sdk/lib/dynamodb/set.js | 53 + .../aws-sdk/lib/dynamodb/translator.js | 79 + node_modules/aws-sdk/lib/dynamodb/types.js | 40 + node_modules/aws-sdk/lib/event_listeners.js | 471 + node_modules/aws-sdk/lib/http.js | 208 + node_modules/aws-sdk/lib/http/node.js | 169 + node_modules/aws-sdk/lib/http/xhr.js | 122 + node_modules/aws-sdk/lib/json/builder.js | 56 + node_modules/aws-sdk/lib/json/parser.js | 64 + node_modules/aws-sdk/lib/metadata_service.js | 121 + node_modules/aws-sdk/lib/model/api.js | 63 + node_modules/aws-sdk/lib/model/collection.js | 20 + node_modules/aws-sdk/lib/model/operation.js | 53 + node_modules/aws-sdk/lib/model/paginator.js | 11 + .../aws-sdk/lib/model/resource_waiter.js | 30 + node_modules/aws-sdk/lib/model/shape.js | 346 + node_modules/aws-sdk/lib/node_loader.js | 67 + node_modules/aws-sdk/lib/param_validator.js | 254 + node_modules/aws-sdk/lib/protocol/json.js | 62 + node_modules/aws-sdk/lib/protocol/query.js | 97 + node_modules/aws-sdk/lib/protocol/rest.js | 130 + .../aws-sdk/lib/protocol/rest_json.js | 67 + node_modules/aws-sdk/lib/protocol/rest_xml.js | 87 + .../lib/query/query_param_serializer.js | 81 + node_modules/aws-sdk/lib/region_config.js | 69 + node_modules/aws-sdk/lib/region_config.json | 62 + node_modules/aws-sdk/lib/request.js | 756 + node_modules/aws-sdk/lib/resource_waiter.js | 178 + node_modules/aws-sdk/lib/response.js | 201 + node_modules/aws-sdk/lib/s3/managed_upload.js | 601 + .../aws-sdk/lib/sequential_executor.js | 231 + node_modules/aws-sdk/lib/service.js | 539 + .../aws-sdk/lib/services/apigateway.js | 34 + .../aws-sdk/lib/services/cloudfront.js | 12 + .../aws-sdk/lib/services/cloudsearchdomain.js | 120 + .../aws-sdk/lib/services/cognitoidentity.js | 15 + node_modules/aws-sdk/lib/services/dynamodb.js | 53 + node_modules/aws-sdk/lib/services/ec2.js | 62 + node_modules/aws-sdk/lib/services/glacier.js | 114 + node_modules/aws-sdk/lib/services/iotdata.js | 88 + .../aws-sdk/lib/services/machinelearning.js | 24 + node_modules/aws-sdk/lib/services/route53.js | 32 + node_modules/aws-sdk/lib/services/s3.js | 832 + node_modules/aws-sdk/lib/services/sqs.js | 131 + node_modules/aws-sdk/lib/services/sts.js | 47 + node_modules/aws-sdk/lib/services/swf.js | 10 + node_modules/aws-sdk/lib/signers/presign.js | 115 + .../aws-sdk/lib/signers/request_signer.js | 37 + node_modules/aws-sdk/lib/signers/s3.js | 169 + node_modules/aws-sdk/lib/signers/v2.js | 45 + node_modules/aws-sdk/lib/signers/v3.js | 74 + node_modules/aws-sdk/lib/signers/v3https.js | 22 + node_modules/aws-sdk/lib/signers/v4.js | 241 + node_modules/aws-sdk/lib/state_machine.js | 42 + node_modules/aws-sdk/lib/util.js | 846 + .../aws-sdk/lib/xml/browser_parser.js | 186 + node_modules/aws-sdk/lib/xml/builder.js | 86 + node_modules/aws-sdk/lib/xml/node_parser.js | 159 + .../aws-sdk/node_modules/buffer/.npmignore | 2 + .../aws-sdk/node_modules/buffer/.travis.yml | 8 + .../aws-sdk/node_modules/buffer/AUTHORS.md | 44 + .../aws-sdk/node_modules/buffer/LICENSE | 21 + .../aws-sdk/node_modules/buffer/README.md | 378 + .../buffer/bin/download-node-tests.js | 106 + .../aws-sdk/node_modules/buffer/bin/test.js | 41 + .../node_modules/buffer/bin/update-authors.sh | 21 + .../node_modules/buffer/bin/zuul-es5.yml | 14 + .../node_modules/buffer/bin/zuul-es6.yml | 6 + .../aws-sdk/node_modules/buffer/index.js | 1789 + .../buffer/node_modules/base64-js/LICENSE | 21 + .../buffer/node_modules/base64-js/README.md | 32 + .../node_modules/base64-js/base64js.min.js | 1 + .../buffer/node_modules/base64-js/index.js | 114 + .../node_modules/base64-js/package.json | 46 + .../node_modules/base64-js/test/big-data.js | 24 + .../node_modules/base64-js/test/convert.js | 48 + .../node_modules/base64-js/test/url-safe.js | 18 + .../buffer/node_modules/ieee754/.travis.yml | 7 + .../buffer/node_modules/ieee754/.zuul.yml | 20 + .../buffer/node_modules/ieee754/LICENSE | 28 + .../buffer/node_modules/ieee754/README.md | 47 + .../buffer/node_modules/ieee754/index.js | 84 + .../buffer/node_modules/ieee754/package.json | 71 + .../buffer/node_modules/ieee754/test/basic.js | 23 + .../buffer/node_modules/isarray/.npmignore | 1 + .../buffer/node_modules/isarray/.travis.yml | 4 + .../buffer/node_modules/isarray/Makefile | 6 + .../buffer/node_modules/isarray/README.md | 60 + .../node_modules/isarray/component.json | 19 + .../buffer/node_modules/isarray/index.js | 5 + .../buffer/node_modules/isarray/package.json | 54 + .../buffer/node_modules/isarray/test.js | 20 + .../aws-sdk/node_modules/buffer/package.json | 89 + .../node_modules/buffer/test/_polyfill.js | 150 + .../node_modules/buffer/test/base64.js | 47 + .../aws-sdk/node_modules/buffer/test/basic.js | 85 + .../node_modules/buffer/test/compare.js | 59 + .../node_modules/buffer/test/constructor.js | 193 + .../node_modules/buffer/test/from-string.js | 132 + .../node_modules/buffer/test/is-buffer.js | 22 + .../node_modules/buffer/test/methods.js | 127 + .../buffer/test/node/test-buffer-alloc.js | 1501 + .../test/node/test-buffer-arraybuffer.js | 112 + .../buffer/test/node/test-buffer-ascii.js | 28 + .../test/node/test-buffer-bad-overload.js | 18 + .../buffer/test/node/test-buffer-badhex.js | 46 + .../test/node/test-buffer-bytelength.js | 90 + .../test/node/test-buffer-compare-offset.js | 66 + .../buffer/test/node/test-buffer-concat.js | 40 + .../buffer/test/node/test-buffer-fill.js | 272 + .../buffer/test/node/test-buffer-includes.js | 305 + .../buffer/test/node/test-buffer-indexof.js | 523 + .../test/node/test-buffer-inheritance.js | 42 + .../buffer/test/node/test-buffer-inspect.js | 41 + .../buffer/test/node/test-buffer-iterator.js | 65 + .../test/node/test-buffer-safe-unsafe.js | 27 + .../buffer/test/node/test-buffer-slow.js | 63 + .../buffer/test/node/test-buffer-swap.js | 141 + .../test/node/test-buffer-zero-fill-cli.js | 35 + .../test/node/test-buffer-zero-fill-reset.js | 22 + .../buffer/test/node/test-buffer.js | 1534 + .../aws-sdk/node_modules/buffer/test/slice.js | 37 + .../node_modules/buffer/test/static.js | 17 + .../node_modules/buffer/test/to-string.js | 233 + .../aws-sdk/node_modules/buffer/test/write.js | 131 + .../buffer/test/write_infinity.js | 45 + .../node_modules/crypto-browserify/.npmignore | 1 + .../crypto-browserify/.travis.yml | 5 + .../node_modules/crypto-browserify/LICENSE | 24 + .../crypto-browserify/example/bundle.js | 637 + .../crypto-browserify/example/index.html | 12 + .../crypto-browserify/example/test.js | 4 + .../node_modules/crypto-browserify/helpers.js | 35 + .../node_modules/crypto-browserify/index.js | 97 + .../node_modules/crypto-browserify/md5.js | 163 + .../crypto-browserify/package.json | 49 + .../crypto-browserify/readme.markdown | 20 + .../node_modules/crypto-browserify/rng.js | 31 + .../node_modules/crypto-browserify/sha.js | 101 + .../node_modules/crypto-browserify/sha256.js | 79 + .../crypto-browserify/test/browser.js | 100 + .../crypto-browserify/test/node.js | 77 + .../crypto-browserify/test/package.json | 7 + .../crypto-browserify/test/simple.js | 36 + .../crypto-browserify/test/vectors/Readme.txt | 25 + .../test/vectors/byte-hashes.md5 | 196 + .../test/vectors/byte-hashes.sha1 | 196 + .../test/vectors/byte-hashes.sha256 | 196 + .../test/vectors/byte0000.dat | 0 .../test/vectors/byte0001.dat | 1 + .../test/vectors/byte0002.dat | 1 + .../test/vectors/byte0003.dat | 1 + .../test/vectors/byte0004.dat | 1 + .../test/vectors/byte0005.dat | 1 + .../test/vectors/byte0006.dat | 1 + .../test/vectors/byte0007.dat | 1 + .../test/vectors/byte0008.dat | 1 + .../test/vectors/byte0009.dat | 1 + .../test/vectors/byte0010.dat | Bin 0 -> 10 bytes .../test/vectors/byte0011.dat | Bin 0 -> 11 bytes .../test/vectors/byte0012.dat | 1 + .../test/vectors/byte0013.dat | 1 + .../test/vectors/byte0014.dat | 1 + .../test/vectors/byte0015.dat | Bin 0 -> 15 bytes .../test/vectors/byte0016.dat | Bin 0 -> 16 bytes .../test/vectors/byte0017.dat | Bin 0 -> 17 bytes .../test/vectors/byte0018.dat | Bin 0 -> 18 bytes .../test/vectors/byte0019.dat | Bin 0 -> 19 bytes .../test/vectors/byte0020.dat | Bin 0 -> 20 bytes .../test/vectors/byte0021.dat | Bin 0 -> 21 bytes .../test/vectors/byte0022.dat | Bin 0 -> 22 bytes .../test/vectors/byte0023.dat | Bin 0 -> 23 bytes .../test/vectors/byte0024.dat | Bin 0 -> 24 bytes .../test/vectors/byte0025.dat | Bin 0 -> 25 bytes .../test/vectors/byte0026.dat | Bin 0 -> 26 bytes .../test/vectors/byte0027.dat | Bin 0 -> 27 bytes .../test/vectors/byte0028.dat | Bin 0 -> 28 bytes .../test/vectors/byte0029.dat | Bin 0 -> 29 bytes .../test/vectors/byte0030.dat | Bin 0 -> 30 bytes .../test/vectors/byte0031.dat | Bin 0 -> 31 bytes .../test/vectors/byte0032.dat | Bin 0 -> 32 bytes .../test/vectors/byte0033.dat | Bin 0 -> 33 bytes .../test/vectors/byte0034.dat | Bin 0 -> 34 bytes .../test/vectors/byte0035.dat | Bin 0 -> 35 bytes .../test/vectors/byte0036.dat | Bin 0 -> 36 bytes .../test/vectors/byte0037.dat | Bin 0 -> 37 bytes .../test/vectors/byte0038.dat | Bin 0 -> 38 bytes .../test/vectors/byte0039.dat | Bin 0 -> 39 bytes .../test/vectors/byte0040.dat | Bin 0 -> 40 bytes .../test/vectors/byte0041.dat | Bin 0 -> 41 bytes .../test/vectors/byte0042.dat | Bin 0 -> 42 bytes .../test/vectors/byte0043.dat | Bin 0 -> 43 bytes .../test/vectors/byte0044.dat | Bin 0 -> 44 bytes .../test/vectors/byte0045.dat | Bin 0 -> 45 bytes .../test/vectors/byte0046.dat | Bin 0 -> 46 bytes .../test/vectors/byte0047.dat | Bin 0 -> 47 bytes .../test/vectors/byte0048.dat | Bin 0 -> 48 bytes .../test/vectors/byte0049.dat | Bin 0 -> 49 bytes .../test/vectors/byte0050.dat | Bin 0 -> 50 bytes .../test/vectors/byte0051.dat | Bin 0 -> 51 bytes .../test/vectors/byte0052.dat | Bin 0 -> 52 bytes .../test/vectors/byte0053.dat | Bin 0 -> 53 bytes .../test/vectors/byte0054.dat | Bin 0 -> 54 bytes .../test/vectors/byte0055.dat | Bin 0 -> 55 bytes .../test/vectors/byte0056.dat | Bin 0 -> 56 bytes .../test/vectors/byte0057.dat | Bin 0 -> 57 bytes .../test/vectors/byte0058.dat | Bin 0 -> 58 bytes .../test/vectors/byte0059.dat | Bin 0 -> 59 bytes .../test/vectors/byte0060.dat | Bin 0 -> 60 bytes .../test/vectors/byte0061.dat | Bin 0 -> 61 bytes .../test/vectors/byte0062.dat | Bin 0 -> 62 bytes .../test/vectors/byte0063.dat | Bin 0 -> 63 bytes .../test/vectors/byte0064.dat | Bin 0 -> 64 bytes .../test/vectors/byte0065.dat | Bin 0 -> 65 bytes .../test/vectors/byte0066.dat | Bin 0 -> 66 bytes .../test/vectors/byte0067.dat | Bin 0 -> 67 bytes .../test/vectors/byte0068.dat | Bin 0 -> 68 bytes .../test/vectors/byte0069.dat | Bin 0 -> 69 bytes .../test/vectors/byte0070.dat | Bin 0 -> 70 bytes .../test/vectors/byte0071.dat | Bin 0 -> 71 bytes .../test/vectors/byte0072.dat | Bin 0 -> 72 bytes .../test/vectors/byte0073.dat | Bin 0 -> 73 bytes .../test/vectors/byte0074.dat | Bin 0 -> 74 bytes .../test/vectors/byte0075.dat | Bin 0 -> 75 bytes .../test/vectors/byte0076.dat | Bin 0 -> 76 bytes .../test/vectors/byte0077.dat | Bin 0 -> 77 bytes .../test/vectors/byte0078.dat | Bin 0 -> 78 bytes .../test/vectors/byte0079.dat | Bin 0 -> 79 bytes .../test/vectors/byte0080.dat | Bin 0 -> 80 bytes .../test/vectors/byte0081.dat | Bin 0 -> 81 bytes .../test/vectors/byte0082.dat | Bin 0 -> 82 bytes .../test/vectors/byte0083.dat | Bin 0 -> 83 bytes .../test/vectors/byte0084.dat | Bin 0 -> 84 bytes .../test/vectors/byte0085.dat | Bin 0 -> 85 bytes .../test/vectors/byte0086.dat | Bin 0 -> 86 bytes .../test/vectors/byte0087.dat | Bin 0 -> 87 bytes .../test/vectors/byte0088.dat | Bin 0 -> 88 bytes .../test/vectors/byte0089.dat | Bin 0 -> 89 bytes .../test/vectors/byte0090.dat | Bin 0 -> 90 bytes .../test/vectors/byte0091.dat | Bin 0 -> 91 bytes .../test/vectors/byte0092.dat | Bin 0 -> 92 bytes .../test/vectors/byte0093.dat | Bin 0 -> 93 bytes .../test/vectors/byte0094.dat | Bin 0 -> 94 bytes .../test/vectors/byte0095.dat | Bin 0 -> 95 bytes .../test/vectors/byte0096.dat | Bin 0 -> 96 bytes .../test/vectors/byte0097.dat | Bin 0 -> 97 bytes .../test/vectors/byte0098.dat | Bin 0 -> 98 bytes .../test/vectors/byte0099.dat | Bin 0 -> 99 bytes .../test/vectors/byte0100.dat | Bin 0 -> 100 bytes .../test/vectors/byte0101.dat | Bin 0 -> 101 bytes .../test/vectors/byte0102.dat | Bin 0 -> 102 bytes .../test/vectors/byte0103.dat | Bin 0 -> 103 bytes .../test/vectors/byte0104.dat | Bin 0 -> 104 bytes .../test/vectors/byte0105.dat | Bin 0 -> 105 bytes .../test/vectors/byte0106.dat | Bin 0 -> 106 bytes .../test/vectors/byte0107.dat | Bin 0 -> 107 bytes .../test/vectors/byte0108.dat | Bin 0 -> 108 bytes .../test/vectors/byte0109.dat | Bin 0 -> 109 bytes .../test/vectors/byte0110.dat | Bin 0 -> 110 bytes .../test/vectors/byte0111.dat | Bin 0 -> 111 bytes .../test/vectors/byte0112.dat | Bin 0 -> 112 bytes .../test/vectors/byte0113.dat | Bin 0 -> 113 bytes .../test/vectors/byte0114.dat | Bin 0 -> 114 bytes .../test/vectors/byte0115.dat | Bin 0 -> 115 bytes .../test/vectors/byte0116.dat | Bin 0 -> 116 bytes .../test/vectors/byte0117.dat | Bin 0 -> 117 bytes .../test/vectors/byte0118.dat | Bin 0 -> 118 bytes .../test/vectors/byte0119.dat | Bin 0 -> 119 bytes .../test/vectors/byte0120.dat | Bin 0 -> 120 bytes .../test/vectors/byte0121.dat | Bin 0 -> 121 bytes .../test/vectors/byte0122.dat | Bin 0 -> 122 bytes .../test/vectors/byte0123.dat | Bin 0 -> 123 bytes .../test/vectors/byte0124.dat | Bin 0 -> 124 bytes .../test/vectors/byte0125.dat | Bin 0 -> 125 bytes .../test/vectors/byte0126.dat | Bin 0 -> 126 bytes .../test/vectors/byte0127.dat | Bin 0 -> 127 bytes .../test/vectors/byte0128.dat | Bin 0 -> 128 bytes .../test/vectors/byte0129.dat | Bin 0 -> 129 bytes .../test/vectors/byte0130.dat | Bin 0 -> 257 bytes .../test/vectors/byte0131.dat | Bin 0 -> 385 bytes .../test/vectors/byte0132.dat | Bin 0 -> 513 bytes .../test/vectors/byte0133.dat | Bin 0 -> 641 bytes .../test/vectors/byte0134.dat | Bin 0 -> 769 bytes .../test/vectors/byte0135.dat | Bin 0 -> 897 bytes .../test/vectors/byte0136.dat | Bin 0 -> 1025 bytes .../test/vectors/byte0137.dat | Bin 0 -> 1153 bytes .../test/vectors/byte0138.dat | Bin 0 -> 1281 bytes .../test/vectors/byte0139.dat | Bin 0 -> 1409 bytes .../test/vectors/byte0140.dat | Bin 0 -> 1537 bytes .../test/vectors/byte0141.dat | Bin 0 -> 1665 bytes .../test/vectors/byte0142.dat | Bin 0 -> 1793 bytes .../test/vectors/byte0143.dat | Bin 0 -> 1921 bytes .../test/vectors/byte0144.dat | Bin 0 -> 2049 bytes .../test/vectors/byte0145.dat | Bin 0 -> 2177 bytes .../test/vectors/byte0146.dat | Bin 0 -> 2305 bytes .../test/vectors/byte0147.dat | Bin 0 -> 2433 bytes .../test/vectors/byte0148.dat | Bin 0 -> 2561 bytes .../test/vectors/byte0149.dat | Bin 0 -> 2689 bytes .../test/vectors/byte0150.dat | Bin 0 -> 2817 bytes .../test/vectors/byte0151.dat | Bin 0 -> 2945 bytes .../test/vectors/byte0152.dat | Bin 0 -> 3073 bytes .../test/vectors/byte0153.dat | Bin 0 -> 3201 bytes .../test/vectors/byte0154.dat | Bin 0 -> 3329 bytes .../test/vectors/byte0155.dat | Bin 0 -> 3457 bytes .../test/vectors/byte0156.dat | Bin 0 -> 3585 bytes .../test/vectors/byte0157.dat | Bin 0 -> 3713 bytes .../test/vectors/byte0158.dat | Bin 0 -> 3841 bytes .../test/vectors/byte0159.dat | Bin 0 -> 3969 bytes .../test/vectors/byte0160.dat | Bin 0 -> 4097 bytes .../test/vectors/byte0161.dat | Bin 0 -> 4225 bytes .../test/vectors/byte0162.dat | Bin 0 -> 4353 bytes .../test/vectors/byte0163.dat | Bin 0 -> 4481 bytes .../test/vectors/byte0164.dat | Bin 0 -> 4609 bytes .../test/vectors/byte0165.dat | Bin 0 -> 4737 bytes .../test/vectors/byte0166.dat | Bin 0 -> 4865 bytes .../test/vectors/byte0167.dat | Bin 0 -> 4993 bytes .../test/vectors/byte0168.dat | Bin 0 -> 5121 bytes .../test/vectors/byte0169.dat | Bin 0 -> 5249 bytes .../test/vectors/byte0170.dat | Bin 0 -> 5377 bytes .../test/vectors/byte0171.dat | Bin 0 -> 5505 bytes .../test/vectors/byte0172.dat | Bin 0 -> 5633 bytes .../test/vectors/byte0173.dat | Bin 0 -> 5761 bytes .../test/vectors/byte0174.dat | Bin 0 -> 5889 bytes .../test/vectors/byte0175.dat | Bin 0 -> 6017 bytes .../test/vectors/byte0176.dat | Bin 0 -> 6145 bytes .../test/vectors/byte0177.dat | Bin 0 -> 6273 bytes .../test/vectors/byte0178.dat | Bin 0 -> 6401 bytes .../test/vectors/byte0179.dat | Bin 0 -> 6529 bytes .../test/vectors/byte0180.dat | Bin 0 -> 6657 bytes .../test/vectors/byte0181.dat | Bin 0 -> 6785 bytes .../test/vectors/byte0182.dat | Bin 0 -> 6913 bytes .../test/vectors/byte0183.dat | Bin 0 -> 7041 bytes .../test/vectors/byte0184.dat | Bin 0 -> 7169 bytes .../test/vectors/byte0185.dat | Bin 0 -> 7297 bytes .../test/vectors/byte0186.dat | Bin 0 -> 7425 bytes .../test/vectors/byte0187.dat | Bin 0 -> 7553 bytes .../test/vectors/byte0188.dat | Bin 0 -> 7681 bytes .../test/vectors/byte0189.dat | Bin 0 -> 7809 bytes .../test/vectors/byte0190.dat | Bin 0 -> 7937 bytes .../test/vectors/byte0191.dat | Bin 0 -> 8065 bytes .../test/vectors/byte0192.dat | Bin 0 -> 8193 bytes .../test/vectors/byte0193.dat | Bin 0 -> 8321 bytes .../test/vectors/byte0194.dat | Bin 0 -> 8449 bytes .../test/vectors/byte0195.dat | Bin 0 -> 8577 bytes .../aws-sdk/node_modules/jmespath/.eslintrc | 10 + .../aws-sdk/node_modules/jmespath/.npmignore | 1 + .../aws-sdk/node_modules/jmespath/.travis.yml | 6 + .../aws-sdk/node_modules/jmespath/BASELINE | 15 + .../node_modules/jmespath/Gruntfile.js | 36 + .../aws-sdk/node_modules/jmespath/LICENSE | 13 + .../aws-sdk/node_modules/jmespath/README.md | 57 + .../jmespath/artifacts/jmespath.min.js | 2 + .../aws-sdk/node_modules/jmespath/bower.json | 24 + .../aws-sdk/node_modules/jmespath/g.sh | 5 + .../aws-sdk/node_modules/jmespath/index.html | 93 + .../aws-sdk/node_modules/jmespath/james.html | 7 + .../aws-sdk/node_modules/jmespath/jmespath.js | 1667 + .../aws-sdk/node_modules/jmespath/jp.js | 23 + .../aws-sdk/node_modules/jmespath/l.js | 189 + .../node_modules/jmespath/package.json | 55 + .../aws-sdk/node_modules/jmespath/perf.js | 33 + .../node_modules/jmespath/reservedWords.json | 4 + .../node_modules/jmespath/test/compliance.js | 56 + .../jmespath/test/compliance/basic.json | 96 + .../jmespath/test/compliance/boolean.json | 257 + .../jmespath/test/compliance/current.json | 25 + .../jmespath/test/compliance/escape.json | 46 + .../jmespath/test/compliance/filters.json | 468 + .../jmespath/test/compliance/functions.json | 825 + .../jmespath/test/compliance/identifiers.json | 1377 + .../jmespath/test/compliance/indices.json | 346 + .../jmespath/test/compliance/literal.json | 190 + .../jmespath/test/compliance/multiselect.json | 393 + .../jmespath/test/compliance/pipe.json | 131 + .../jmespath/test/compliance/slice.json | 187 + .../jmespath/test/compliance/syntax.json | 616 + .../jmespath/test/compliance/unicode.json | 38 + .../jmespath/test/compliance/wildcard.json | 460 + .../node_modules/jmespath/test/jmespath.js | 217 + .../node_modules/querystring/.History.md.un~ | Bin 0 -> 7960 bytes .../node_modules/querystring/.Readme.md.un~ | Bin 0 -> 3225 bytes .../querystring/.package.json.un~ | Bin 0 -> 5710 bytes .../node_modules/querystring/.travis.yml | 4 + .../node_modules/querystring/History.md | 20 + .../node_modules/querystring/License.md | 19 + .../node_modules/querystring/Readme.md | 15 + .../node_modules/querystring/decode.js | 80 + .../node_modules/querystring/encode.js | 64 + .../aws-sdk/node_modules/querystring/index.js | 4 + .../node_modules/querystring/package.json | 81 + .../querystring/test/.index.js.un~ | Bin 0 -> 975 bytes .../querystring/test/common-index.js | 3 + .../node_modules/querystring/test/index.js | 210 + .../querystring/test/tap-index.js | 3 + node_modules/aws-sdk/node_modules/sax/LICENSE | 41 + .../aws-sdk/node_modules/sax/LICENSE-W3C.html | 188 + .../aws-sdk/node_modules/sax/README.md | 220 + .../aws-sdk/node_modules/sax/lib/sax.js | 1571 + .../aws-sdk/node_modules/sax/package.json | 40 + .../aws-sdk/node_modules/url/.npmignore | 1 + .../aws-sdk/node_modules/url/.travis.yml | 7 + .../aws-sdk/node_modules/url/.zuul.yml | 16 + node_modules/aws-sdk/node_modules/url/LICENSE | 21 + .../aws-sdk/node_modules/url/README.md | 108 + .../url/node_modules/punycode/LICENSE-MIT.txt | 20 + .../url/node_modules/punycode/README.md | 176 + .../url/node_modules/punycode/package.json | 61 + .../url/node_modules/punycode/punycode.js | 530 + .../aws-sdk/node_modules/url/package.json | 34 + node_modules/aws-sdk/node_modules/url/test.js | 1461 + node_modules/aws-sdk/node_modules/url/url.js | 707 + .../aws-sdk/node_modules/xml2js/LICENSE | 19 + .../aws-sdk/node_modules/xml2js/README.md | 406 + .../aws-sdk/node_modules/xml2js/lib/bom.js | 16 + .../node_modules/xml2js/lib/processors.js | 34 + .../aws-sdk/node_modules/xml2js/lib/xml2js.js | 537 + .../aws-sdk/node_modules/xml2js/package.json | 258 + .../node_modules/xmlbuilder/.npmignore | 4 + .../aws-sdk/node_modules/xmlbuilder/LICENSE | 21 + .../aws-sdk/node_modules/xmlbuilder/README.md | 84 + .../xmlbuilder/lib/XMLAttribute.js | 32 + .../node_modules/xmlbuilder/lib/XMLBuilder.js | 69 + .../node_modules/xmlbuilder/lib/XMLCData.js | 49 + .../node_modules/xmlbuilder/lib/XMLComment.js | 49 + .../xmlbuilder/lib/XMLDTDAttList.js | 72 + .../xmlbuilder/lib/XMLDTDElement.js | 52 + .../xmlbuilder/lib/XMLDTDEntity.js | 88 + .../xmlbuilder/lib/XMLDTDNotation.js | 60 + .../xmlbuilder/lib/XMLDeclaration.js | 73 + .../node_modules/xmlbuilder/lib/XMLDocType.js | 192 + .../node_modules/xmlbuilder/lib/XMLElement.js | 214 + .../node_modules/xmlbuilder/lib/XMLNode.js | 334 + .../lib/XMLProcessingInstruction.js | 51 + .../node_modules/xmlbuilder/lib/XMLRaw.js | 49 + .../xmlbuilder/lib/XMLStringifier.js | 167 + .../node_modules/xmlbuilder/lib/XMLText.js | 49 + .../node_modules/xmlbuilder/lib/index.js | 14 + .../node_modules/lodash/LICENSE.txt | 22 + .../xmlbuilder/node_modules/lodash/README.md | 116 + .../xmlbuilder/node_modules/lodash/array.js | 42 + .../node_modules/lodash/array/chunk.js | 47 + .../node_modules/lodash/array/compact.js | 30 + .../node_modules/lodash/array/difference.js | 40 + .../node_modules/lodash/array/drop.js | 39 + .../node_modules/lodash/array/dropRight.js | 40 + .../lodash/array/dropRightWhile.js | 63 + .../node_modules/lodash/array/dropWhile.js | 64 + .../node_modules/lodash/array/fill.js | 31 + .../node_modules/lodash/array/findIndex.js | 64 + .../lodash/array/findLastIndex.js | 62 + .../node_modules/lodash/array/first.js | 22 + .../node_modules/lodash/array/flatten.js | 32 + .../node_modules/lodash/array/flattenDeep.js | 21 + .../node_modules/lodash/array/head.js | 1 + .../node_modules/lodash/array/indexOf.js | 58 + .../node_modules/lodash/array/initial.js | 20 + .../node_modules/lodash/array/intersection.js | 67 + .../node_modules/lodash/array/last.js | 19 + .../node_modules/lodash/array/lastIndexOf.js | 60 + .../node_modules/lodash/array/object.js | 1 + .../node_modules/lodash/array/pull.js | 55 + .../node_modules/lodash/array/pullAt.js | 33 + .../node_modules/lodash/array/remove.js | 65 + .../node_modules/lodash/array/rest.js | 21 + .../node_modules/lodash/array/slice.js | 30 + .../node_modules/lodash/array/sortedIndex.js | 59 + .../lodash/array/sortedLastIndex.js | 31 + .../node_modules/lodash/array/tail.js | 1 + .../node_modules/lodash/array/take.js | 39 + .../node_modules/lodash/array/takeRight.js | 40 + .../lodash/array/takeRightWhile.js | 63 + .../node_modules/lodash/array/takeWhile.js | 64 + .../node_modules/lodash/array/union.js | 27 + .../node_modules/lodash/array/uniq.js | 74 + .../node_modules/lodash/array/unique.js | 1 + .../node_modules/lodash/array/unzip.js | 37 + .../node_modules/lodash/array/without.js | 28 + .../node_modules/lodash/array/xor.js | 36 + .../node_modules/lodash/array/zip.js | 28 + .../node_modules/lodash/array/zipObject.js | 39 + .../xmlbuilder/node_modules/lodash/chain.js | 15 + .../node_modules/lodash/chain/chain.js | 35 + .../node_modules/lodash/chain/commit.js | 1 + .../node_modules/lodash/chain/lodash.js | 122 + .../node_modules/lodash/chain/plant.js | 1 + .../node_modules/lodash/chain/reverse.js | 1 + .../node_modules/lodash/chain/run.js | 1 + .../node_modules/lodash/chain/tap.js | 29 + .../node_modules/lodash/chain/thru.js | 25 + .../node_modules/lodash/chain/toJSON.js | 1 + .../node_modules/lodash/chain/toString.js | 1 + .../node_modules/lodash/chain/value.js | 1 + .../node_modules/lodash/chain/valueOf.js | 1 + .../node_modules/lodash/chain/wrapperChain.js | 32 + .../lodash/chain/wrapperCommit.js | 32 + .../node_modules/lodash/chain/wrapperPlant.js | 45 + .../lodash/chain/wrapperReverse.js | 38 + .../lodash/chain/wrapperToString.js | 17 + .../node_modules/lodash/chain/wrapperValue.js | 20 + .../node_modules/lodash/collection.js | 44 + .../node_modules/lodash/collection/all.js | 1 + .../node_modules/lodash/collection/any.js | 1 + .../node_modules/lodash/collection/at.js | 34 + .../node_modules/lodash/collection/collect.js | 1 + .../lodash/collection/contains.js | 1 + .../node_modules/lodash/collection/countBy.js | 54 + .../node_modules/lodash/collection/detect.js | 1 + .../node_modules/lodash/collection/each.js | 1 + .../lodash/collection/eachRight.js | 1 + .../node_modules/lodash/collection/every.js | 62 + .../node_modules/lodash/collection/filter.js | 61 + .../node_modules/lodash/collection/find.js | 66 + .../lodash/collection/findLast.js | 29 + .../lodash/collection/findWhere.js | 37 + .../node_modules/lodash/collection/foldl.js | 1 + .../node_modules/lodash/collection/foldr.js | 1 + .../node_modules/lodash/collection/forEach.js | 42 + .../lodash/collection/forEachRight.js | 31 + .../node_modules/lodash/collection/groupBy.js | 59 + .../node_modules/lodash/collection/include.js | 1 + .../lodash/collection/includes.js | 61 + .../node_modules/lodash/collection/indexBy.js | 53 + .../node_modules/lodash/collection/inject.js | 1 + .../node_modules/lodash/collection/invoke.js | 30 + .../node_modules/lodash/collection/map.js | 68 + .../node_modules/lodash/collection/max.js | 1 + .../node_modules/lodash/collection/min.js | 1 + .../lodash/collection/partition.js | 66 + .../node_modules/lodash/collection/pluck.js | 31 + .../node_modules/lodash/collection/reduce.js | 48 + .../lodash/collection/reduceRight.js | 34 + .../node_modules/lodash/collection/reject.js | 61 + .../node_modules/lodash/collection/sample.js | 38 + .../node_modules/lodash/collection/select.js | 1 + .../node_modules/lodash/collection/shuffle.js | 36 + .../node_modules/lodash/collection/size.js | 29 + .../node_modules/lodash/collection/some.js | 63 + .../node_modules/lodash/collection/sortBy.js | 75 + .../lodash/collection/sortByAll.js | 41 + .../lodash/collection/sortByOrder.js | 48 + .../node_modules/lodash/collection/sum.js | 1 + .../node_modules/lodash/collection/where.js | 37 + .../xmlbuilder/node_modules/lodash/date.js | 3 + .../node_modules/lodash/date/now.js | 24 + .../node_modules/lodash/function.js | 26 + .../node_modules/lodash/function/after.js | 48 + .../node_modules/lodash/function/ary.js | 34 + .../node_modules/lodash/function/backflow.js | 1 + .../node_modules/lodash/function/before.js | 41 + .../node_modules/lodash/function/bind.js | 58 + .../node_modules/lodash/function/bindAll.js | 41 + .../node_modules/lodash/function/bindKey.js | 68 + .../node_modules/lodash/function/compose.js | 1 + .../node_modules/lodash/function/curry.js | 59 + .../lodash/function/curryRight.js | 56 + .../node_modules/lodash/function/debounce.js | 186 + .../node_modules/lodash/function/defer.js | 24 + .../node_modules/lodash/function/delay.js | 25 + .../node_modules/lodash/function/flow.js | 25 + .../node_modules/lodash/function/flowRight.js | 25 + .../node_modules/lodash/function/memoize.js | 82 + .../node_modules/lodash/function/negate.js | 32 + .../node_modules/lodash/function/once.js | 24 + .../node_modules/lodash/function/partial.js | 50 + .../lodash/function/partialRight.js | 49 + .../node_modules/lodash/function/rearg.js | 40 + .../node_modules/lodash/function/spread.js | 43 + .../node_modules/lodash/function/throttle.js | 72 + .../node_modules/lodash/function/wrap.js | 33 + .../xmlbuilder/node_modules/lodash/index.js | 11599 ++ .../lodash/internal/LazyWrapper.js | 27 + .../lodash/internal/LodashWrapper.js | 21 + .../node_modules/lodash/internal/MapCache.js | 24 + .../node_modules/lodash/internal/SetCache.js | 29 + .../node_modules/lodash/internal/arrayCopy.js | 20 + .../node_modules/lodash/internal/arrayEach.js | 22 + .../lodash/internal/arrayEachRight.js | 21 + .../lodash/internal/arrayEvery.js | 23 + .../lodash/internal/arrayFilter.js | 25 + .../node_modules/lodash/internal/arrayMap.js | 21 + .../node_modules/lodash/internal/arrayMax.js | 25 + .../node_modules/lodash/internal/arrayMin.js | 25 + .../lodash/internal/arrayReduce.js | 26 + .../lodash/internal/arrayReduceRight.js | 24 + .../node_modules/lodash/internal/arraySome.js | 23 + .../lodash/internal/assignDefaults.js | 13 + .../lodash/internal/assignOwnDefaults.js | 26 + .../lodash/internal/baseAssign.js | 35 + .../node_modules/lodash/internal/baseAt.js | 32 + .../lodash/internal/baseBindAll.js | 26 + .../lodash/internal/baseCallback.js | 36 + .../node_modules/lodash/internal/baseClone.js | 130 + .../lodash/internal/baseCompareAscending.js | 25 + .../node_modules/lodash/internal/baseCopy.js | 25 + .../lodash/internal/baseCreate.js | 23 + .../node_modules/lodash/internal/baseDelay.js | 23 + .../lodash/internal/baseDifference.js | 52 + .../node_modules/lodash/internal/baseEach.js | 30 + .../lodash/internal/baseEachRight.js | 28 + .../node_modules/lodash/internal/baseEvery.js | 22 + .../node_modules/lodash/internal/baseFill.js | 31 + .../lodash/internal/baseFilter.js | 22 + .../node_modules/lodash/internal/baseFind.js | 25 + .../lodash/internal/baseFlatten.js | 45 + .../node_modules/lodash/internal/baseFor.js | 30 + .../node_modules/lodash/internal/baseForIn.js | 17 + .../lodash/internal/baseForOwn.js | 17 + .../lodash/internal/baseForOwnRight.js | 17 + .../lodash/internal/baseForRight.js | 27 + .../lodash/internal/baseFunctions.js | 27 + .../lodash/internal/baseIndexOf.js | 27 + .../lodash/internal/baseInvoke.js | 28 + .../lodash/internal/baseIsEqual.js | 34 + .../lodash/internal/baseIsEqualDeep.js | 101 + .../lodash/internal/baseIsFunction.js | 15 + .../lodash/internal/baseIsMatch.js | 58 + .../lodash/internal/baseLodash.js | 10 + .../node_modules/lodash/internal/baseMap.js | 20 + .../lodash/internal/baseMatches.js | 45 + .../lodash/internal/baseMatchesProperty.js | 24 + .../node_modules/lodash/internal/baseMerge.js | 48 + .../lodash/internal/baseMergeDeep.js | 67 + .../lodash/internal/baseProperty.js | 14 + .../lodash/internal/basePullAt.js | 35 + .../lodash/internal/baseRandom.js | 20 + .../lodash/internal/baseReduce.js | 24 + .../lodash/internal/baseSetData.js | 17 + .../node_modules/lodash/internal/baseSlice.js | 32 + .../node_modules/lodash/internal/baseSome.js | 23 + .../lodash/internal/baseSortBy.js | 21 + .../lodash/internal/baseSortByOrder.js | 35 + .../lodash/internal/baseToString.js | 16 + .../node_modules/lodash/internal/baseUniq.js | 57 + .../lodash/internal/baseValues.js | 22 + .../lodash/internal/baseWrapperValue.js | 37 + .../lodash/internal/binaryIndex.js | 40 + .../lodash/internal/binaryIndexBy.js | 54 + .../lodash/internal/bindCallback.js | 39 + .../lodash/internal/bufferClone.js | 55 + .../lodash/internal/cacheIndexOf.js | 19 + .../node_modules/lodash/internal/cachePush.js | 20 + .../lodash/internal/charAtCallback.js | 12 + .../lodash/internal/charsLeftIndex.js | 18 + .../lodash/internal/charsRightIndex.js | 17 + .../lodash/internal/compareAscending.js | 16 + .../lodash/internal/compareMultiple.js | 43 + .../lodash/internal/composeArgs.js | 34 + .../lodash/internal/composeArgsRight.js | 36 + .../lodash/internal/createAggregator.js | 37 + .../lodash/internal/createAssigner.js | 47 + .../lodash/internal/createBindWrapper.js | 22 + .../lodash/internal/createCache.js | 22 + .../lodash/internal/createComposer.js | 39 + .../lodash/internal/createCompounder.js | 26 + .../lodash/internal/createCtorWrapper.js | 23 + .../lodash/internal/createExtremum.js | 38 + .../lodash/internal/createHybridWrapper.js | 105 + .../node_modules/lodash/internal/createPad.js | 32 + .../lodash/internal/createPartialWrapper.js | 43 + .../lodash/internal/createWrapper.js | 86 + .../lodash/internal/deburrLetter.js | 33 + .../lodash/internal/equalArrays.js | 54 + .../lodash/internal/equalByTag.js | 49 + .../lodash/internal/equalObjects.js | 74 + .../lodash/internal/escapeHtmlChar.js | 22 + .../lodash/internal/escapeStringChar.js | 23 + .../lodash/internal/extremumBy.js | 35 + .../node_modules/lodash/internal/getData.js | 15 + .../node_modules/lodash/internal/getView.js | 33 + .../lodash/internal/indexOfNaN.js | 24 + .../lodash/internal/initCloneArray.js | 26 + .../lodash/internal/initCloneByTag.js | 64 + .../lodash/internal/initCloneObject.js | 16 + .../lodash/internal/isBindable.js | 38 + .../node_modules/lodash/internal/isIndex.js | 22 + .../lodash/internal/isIterateeCall.js | 32 + .../node_modules/lodash/internal/isLength.js | 23 + .../lodash/internal/isObjectLike.js | 12 + .../node_modules/lodash/internal/isSpace.js | 14 + .../lodash/internal/isStrictComparable.js | 15 + .../node_modules/lodash/internal/lazyClone.js | 27 + .../lodash/internal/lazyReverse.js | 23 + .../node_modules/lodash/internal/lazyValue.js | 81 + .../node_modules/lodash/internal/mapDelete.js | 14 + .../node_modules/lodash/internal/mapGet.js | 14 + .../node_modules/lodash/internal/mapHas.js | 20 + .../node_modules/lodash/internal/mapSet.js | 18 + .../node_modules/lodash/internal/mergeData.js | 99 + .../node_modules/lodash/internal/metaMap.js | 9 + .../lodash/internal/pickByArray.js | 28 + .../lodash/internal/pickByCallback.js | 22 + .../node_modules/lodash/internal/reEscape.js | 4 + .../lodash/internal/reEvaluate.js | 4 + .../lodash/internal/reInterpolate.js | 4 + .../node_modules/lodash/internal/reorder.js | 29 + .../lodash/internal/replaceHolders.js | 28 + .../node_modules/lodash/internal/setData.js | 41 + .../lodash/internal/shimIsPlainObject.js | 51 + .../node_modules/lodash/internal/shimKeys.js | 42 + .../lodash/internal/sortedUniq.js | 29 + .../lodash/internal/toIterable.js | 22 + .../node_modules/lodash/internal/toObject.js | 14 + .../lodash/internal/trimmedLeftIndex.js | 19 + .../lodash/internal/trimmedRightIndex.js | 18 + .../lodash/internal/unescapeHtmlChar.js | 22 + .../lodash/internal/wrapperClone.js | 18 + .../xmlbuilder/node_modules/lodash/lang.js | 27 + .../node_modules/lodash/lang/clone.js | 69 + .../node_modules/lodash/lang/cloneDeep.js | 54 + .../node_modules/lodash/lang/isArguments.js | 38 + .../node_modules/lodash/lang/isArray.js | 41 + .../node_modules/lodash/lang/isBoolean.js | 36 + .../node_modules/lodash/lang/isDate.js | 36 + .../node_modules/lodash/lang/isElement.js | 42 + .../node_modules/lodash/lang/isEmpty.js | 48 + .../node_modules/lodash/lang/isEqual.js | 57 + .../node_modules/lodash/lang/isError.js | 37 + .../node_modules/lodash/lang/isFinite.js | 40 + .../node_modules/lodash/lang/isFunction.js | 43 + .../node_modules/lodash/lang/isMatch.js | 74 + .../node_modules/lodash/lang/isNaN.js | 35 + .../node_modules/lodash/lang/isNative.js | 55 + .../node_modules/lodash/lang/isNull.js | 21 + .../node_modules/lodash/lang/isNumber.js | 42 + .../node_modules/lodash/lang/isObject.js | 30 + .../node_modules/lodash/lang/isPlainObject.js | 62 + .../node_modules/lodash/lang/isRegExp.js | 36 + .../node_modules/lodash/lang/isString.js | 36 + .../node_modules/lodash/lang/isTypedArray.js | 75 + .../node_modules/lodash/lang/isUndefined.js | 21 + .../node_modules/lodash/lang/toArray.js | 31 + .../node_modules/lodash/lang/toPlainObject.js | 31 + .../xmlbuilder/node_modules/lodash/math.js | 6 + .../node_modules/lodash/math/add.js | 19 + .../node_modules/lodash/math/max.js | 53 + .../node_modules/lodash/math/min.js | 53 + .../node_modules/lodash/math/sum.js | 33 + .../xmlbuilder/node_modules/lodash/number.js | 4 + .../node_modules/lodash/number/inRange.js | 43 + .../node_modules/lodash/number/random.js | 70 + .../xmlbuilder/node_modules/lodash/object.js | 27 + .../node_modules/lodash/object/assign.js | 35 + .../node_modules/lodash/object/create.js | 48 + .../node_modules/lodash/object/defaults.js | 30 + .../node_modules/lodash/object/extend.js | 1 + .../node_modules/lodash/object/findKey.js | 58 + .../node_modules/lodash/object/findLastKey.js | 58 + .../node_modules/lodash/object/forIn.js | 39 + .../node_modules/lodash/object/forInRight.js | 35 + .../node_modules/lodash/object/forOwn.js | 38 + .../node_modules/lodash/object/forOwnRight.js | 35 + .../node_modules/lodash/object/functions.js | 23 + .../node_modules/lodash/object/has.js | 28 + .../node_modules/lodash/object/invert.js | 60 + .../node_modules/lodash/object/keys.js | 48 + .../node_modules/lodash/object/keysIn.js | 65 + .../node_modules/lodash/object/mapValues.js | 55 + .../node_modules/lodash/object/merge.js | 54 + .../node_modules/lodash/object/methods.js | 1 + .../node_modules/lodash/object/omit.js | 51 + .../node_modules/lodash/object/pairs.js | 30 + .../node_modules/lodash/object/pick.js | 41 + .../node_modules/lodash/object/result.js | 41 + .../node_modules/lodash/object/transform.js | 61 + .../node_modules/lodash/object/values.js | 33 + .../node_modules/lodash/object/valuesIn.js | 31 + .../node_modules/lodash/package.json | 62 + .../xmlbuilder/node_modules/lodash/string.js | 25 + .../node_modules/lodash/string/camelCase.js | 28 + .../node_modules/lodash/string/capitalize.js | 21 + .../node_modules/lodash/string/deburr.js | 27 + .../node_modules/lodash/string/endsWith.js | 40 + .../node_modules/lodash/string/escape.js | 48 + .../lodash/string/escapeRegExp.js | 32 + .../node_modules/lodash/string/kebabCase.js | 28 + .../node_modules/lodash/string/pad.js | 50 + .../node_modules/lodash/string/padLeft.js | 32 + .../node_modules/lodash/string/padRight.js | 32 + .../node_modules/lodash/string/parseInt.js | 67 + .../node_modules/lodash/string/repeat.js | 49 + .../node_modules/lodash/string/snakeCase.js | 27 + .../node_modules/lodash/string/startCase.js | 28 + .../node_modules/lodash/string/startsWith.js | 36 + .../node_modules/lodash/string/template.js | 229 + .../lodash/string/templateSettings.js | 67 + .../node_modules/lodash/string/trim.js | 42 + .../node_modules/lodash/string/trimLeft.js | 36 + .../node_modules/lodash/string/trimRight.js | 36 + .../node_modules/lodash/string/trunc.js | 105 + .../node_modules/lodash/string/unescape.js | 33 + .../node_modules/lodash/string/words.js | 38 + .../xmlbuilder/node_modules/lodash/support.js | 75 + .../xmlbuilder/node_modules/lodash/utility.js | 16 + .../node_modules/lodash/utility/attempt.js | 38 + .../node_modules/lodash/utility/callback.js | 53 + .../node_modules/lodash/utility/constant.js | 23 + .../node_modules/lodash/utility/identity.js | 20 + .../node_modules/lodash/utility/iteratee.js | 1 + .../node_modules/lodash/utility/matches.js | 33 + .../lodash/utility/matchesProperty.js | 33 + .../node_modules/lodash/utility/mixin.js | 91 + .../node_modules/lodash/utility/noop.js | 19 + .../node_modules/lodash/utility/property.js | 30 + .../node_modules/lodash/utility/propertyOf.js | 26 + .../node_modules/lodash/utility/range.js | 68 + .../node_modules/lodash/utility/times.js | 59 + .../node_modules/lodash/utility/uniqueId.js | 27 + .../node_modules/xmlbuilder/package.json | 45 + node_modules/aws-sdk/package.json | 143 + .../aws-sdk/scripts/changelog/README.md | 97 + .../aws-sdk/scripts/changelog/add-change.js | 239 + .../scripts/changelog/change-creator.js | 213 + .../scripts/changelog/create-changelog | 11 + .../aws-sdk/scripts/changelog/release | 35 + .../aws-sdk/scripts/changelog/util.js | 195 + node_modules/aws-sdk/scripts/console | 119 + .../aws-sdk/scripts/lib/translator.js | 153 + node_modules/aws-sdk/scripts/translate-api | 19 + node_modules/aws-sdk/testem.json | 3 + node_modules/uuid/.npmignore | 2 + node_modules/uuid/.travis.yml | 5 + node_modules/uuid/LICENSE.md | 2 + node_modules/uuid/README.md | 205 + node_modules/uuid/benchmark/README.md | 53 + node_modules/uuid/benchmark/bench.gnu | 174 + node_modules/uuid/benchmark/bench.sh | 34 + .../uuid/benchmark/benchmark-native.c | 34 + node_modules/uuid/benchmark/benchmark.js | 84 + node_modules/uuid/benchmark/package.json | 9 + node_modules/uuid/misc/compare.js | 62 + node_modules/uuid/misc/perf.js | 102 + node_modules/uuid/package.json | 59 + node_modules/uuid/rng-browser.js | 32 + node_modules/uuid/rng.js | 4 + node_modules/uuid/test/mocha.opts | 1 + node_modules/uuid/test/test.js | 105 + node_modules/uuid/uuid.js | 183 + serverless.yml | 25 +- 1160 files changed, 283620 insertions(+), 5 deletions(-) create mode 100644 .idea/encodings.xml create mode 100644 .idea/jsLibraryMappings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/serverless-crud.iml create mode 100644 .idea/vcs.xml create mode 100644 .idea/watcherTasks.xml create mode 100644 .idea/workspace.xml create mode 100644 .serverless/cloudformation-template-create-stack.json create mode 100644 .serverless/cloudformation-template-update-stack.json create mode 100644 .serverless/serverless-crud.zip create mode 100644 node_modules/aws-sdk/.changes/2.4.10.json create mode 100644 node_modules/aws-sdk/.changes/2.4.11.json create mode 100644 node_modules/aws-sdk/.changes/2.4.12.json create mode 100644 node_modules/aws-sdk/.changes/2.4.13.json create mode 100644 node_modules/aws-sdk/.changes/2.4.14.json create mode 100644 node_modules/aws-sdk/.changes/2.4.8.json create mode 100644 node_modules/aws-sdk/.changes/2.4.9.json create mode 100644 node_modules/aws-sdk/.changes/2.5.0.json create mode 100644 node_modules/aws-sdk/.changes/2.5.1.json create mode 100644 node_modules/aws-sdk/.changes/2.5.2.json create mode 100644 node_modules/aws-sdk/.changes/2.5.3.json create mode 100644 node_modules/aws-sdk/.changes/2.5.4.json create mode 100644 node_modules/aws-sdk/.changes/2.5.5.json create mode 100644 node_modules/aws-sdk/.changes/2.5.6.json create mode 100644 node_modules/aws-sdk/.changes/2.6.0.json create mode 100644 node_modules/aws-sdk/.changes/2.6.1.json create mode 100644 node_modules/aws-sdk/.changes/2.6.2.json create mode 100644 node_modules/aws-sdk/.changes/2.6.3.json create mode 100644 node_modules/aws-sdk/.changes/2.6.4.json create mode 100644 node_modules/aws-sdk/.changes/2.6.5.json create mode 100644 node_modules/aws-sdk/.changes/2.6.6.json create mode 100644 node_modules/aws-sdk/.changes/2.6.7.json create mode 100644 node_modules/aws-sdk/.changes/2.6.8.json create mode 100644 node_modules/aws-sdk/.jshintrc create mode 100644 node_modules/aws-sdk/.npmignore create mode 100644 node_modules/aws-sdk/.tesselinclude create mode 100644 node_modules/aws-sdk/CHANGELOG.md create mode 100644 node_modules/aws-sdk/CONTRIBUTING.md create mode 100644 node_modules/aws-sdk/LICENSE.txt create mode 100644 node_modules/aws-sdk/NOTICE.txt create mode 100644 node_modules/aws-sdk/README.md create mode 100644 node_modules/aws-sdk/UPGRADING.md create mode 100644 node_modules/aws-sdk/apis/acm-2015-12-08.min.json create mode 100644 node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json create mode 100644 node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json create mode 100644 node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json create mode 100644 node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json create mode 100644 node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json create mode 100644 node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json create mode 100644 node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json create mode 100644 node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json create mode 100644 node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json create mode 100644 node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json create mode 100644 node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json create mode 100644 node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json create mode 100644 node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json create mode 100644 node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json create mode 100644 node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json create mode 100644 node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json create mode 100644 node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json create mode 100644 node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json create mode 100644 node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json create mode 100644 node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json create mode 100644 node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json create mode 100644 node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json create mode 100644 node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json create mode 100644 node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json create mode 100644 node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json create mode 100644 node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json create mode 100644 node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json create mode 100644 node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json create mode 100644 node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json create mode 100644 node_modules/aws-sdk/apis/config-2014-11-12.min.json create mode 100644 node_modules/aws-sdk/apis/config-2014-11-12.paginators.json create mode 100644 node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json create mode 100644 node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json create mode 100644 node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json create mode 100644 node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json create mode 100644 node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json create mode 100644 node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json create mode 100644 node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json create mode 100644 node_modules/aws-sdk/apis/discovery-2015-11-01.min.json create mode 100644 node_modules/aws-sdk/apis/dms-2016-01-01.min.json create mode 100644 node_modules/aws-sdk/apis/ds-2015-04-16.min.json create mode 100644 node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json create mode 100644 node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json create mode 100644 node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json create mode 100644 node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json create mode 100644 node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json create mode 100644 node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json create mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json create mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.min.json create mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json create mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json create mode 100644 node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json create mode 100644 node_modules/aws-sdk/apis/ecr-2015-09-21.min.json create mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json create mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.min.json create mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json create mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json create mode 100644 node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json create mode 100644 node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json create mode 100644 node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json create mode 100644 node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json create mode 100644 node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json create mode 100644 node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json create mode 100644 node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json create mode 100644 node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json create mode 100644 node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json create mode 100644 node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json create mode 100644 node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json create mode 100644 node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json create mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.examples.json create mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.min.json create mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/es-2015-01-01.min.json create mode 100644 node_modules/aws-sdk/apis/events-2015-10-07.min.json create mode 100644 node_modules/aws-sdk/apis/firehose-2015-08-04.min.json create mode 100644 node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json create mode 100644 node_modules/aws-sdk/apis/glacier-2012-06-01.min.json create mode 100644 node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/iam-2010-05-08.min.json create mode 100644 node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json create mode 100644 node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json create mode 100644 node_modules/aws-sdk/apis/importexport-2010-06-01.min.json create mode 100644 node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/inspector-2016-02-16.min.json create mode 100644 node_modules/aws-sdk/apis/iot-2015-05-28.min.json create mode 100644 node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json create mode 100644 node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json create mode 100644 node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json create mode 100644 node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json create mode 100644 node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json create mode 100644 node_modules/aws-sdk/apis/kms-2014-11-01.min.json create mode 100644 node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/lambda-2014-11-11.min.json create mode 100644 node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json create mode 100644 node_modules/aws-sdk/apis/lambda-2015-03-31.min.json create mode 100644 node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json create mode 100644 node_modules/aws-sdk/apis/logs-2014-03-28.min.json create mode 100644 node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json create mode 100644 node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json create mode 100644 node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json create mode 100644 node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json create mode 100644 node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json create mode 100644 node_modules/aws-sdk/apis/metadata.json create mode 100644 node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json create mode 100644 node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json create mode 100644 node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json create mode 100644 node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json create mode 100644 node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json create mode 100644 node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-01-10.min.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-02-12.min.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-09-09.min.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json create mode 100644 node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json create mode 100644 node_modules/aws-sdk/apis/rds-2014-10-31.min.json create mode 100644 node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json create mode 100644 node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json create mode 100644 node_modules/aws-sdk/apis/redshift-2012-12-01.min.json create mode 100644 node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/route53-2013-04-01.min.json create mode 100644 node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json create mode 100644 node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json create mode 100644 node_modules/aws-sdk/apis/s3-2006-03-01.min.json create mode 100644 node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json create mode 100644 node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json create mode 100644 node_modules/aws-sdk/apis/sdb-2009-04-15.min.json create mode 100644 node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json create mode 100644 node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json create mode 100644 node_modules/aws-sdk/apis/snowball-2016-06-30.min.json create mode 100644 node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json create mode 100644 node_modules/aws-sdk/apis/sns-2010-03-31.min.json create mode 100644 node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json create mode 100644 node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json create mode 100644 node_modules/aws-sdk/apis/sqs-2012-11-05.min.json create mode 100644 node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json create mode 100644 node_modules/aws-sdk/apis/ssm-2014-11-06.min.json create mode 100644 node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json create mode 100644 node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json create mode 100644 node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json create mode 100644 node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json create mode 100644 node_modules/aws-sdk/apis/sts-2011-06-15.min.json create mode 100644 node_modules/aws-sdk/apis/support-2013-04-15.min.json create mode 100644 node_modules/aws-sdk/apis/support-2013-04-15.paginators.json create mode 100644 node_modules/aws-sdk/apis/swf-2012-01-25.min.json create mode 100644 node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json create mode 100644 node_modules/aws-sdk/apis/waf-2015-08-24.min.json create mode 100644 node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json create mode 100644 node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json create mode 100644 node_modules/aws-sdk/bower.json create mode 100644 node_modules/aws-sdk/browser.js create mode 100644 node_modules/aws-sdk/clients/acm.js create mode 100644 node_modules/aws-sdk/clients/all.js create mode 100644 node_modules/aws-sdk/clients/apigateway.js create mode 100644 node_modules/aws-sdk/clients/applicationautoscaling.js create mode 100644 node_modules/aws-sdk/clients/autoscaling.js create mode 100644 node_modules/aws-sdk/clients/browser_default.js create mode 100644 node_modules/aws-sdk/clients/cloudformation.js create mode 100644 node_modules/aws-sdk/clients/cloudfront.js create mode 100644 node_modules/aws-sdk/clients/cloudhsm.js create mode 100644 node_modules/aws-sdk/clients/cloudsearch.js create mode 100644 node_modules/aws-sdk/clients/cloudsearchdomain.js create mode 100644 node_modules/aws-sdk/clients/cloudtrail.js create mode 100644 node_modules/aws-sdk/clients/cloudwatch.js create mode 100644 node_modules/aws-sdk/clients/cloudwatchevents.js create mode 100644 node_modules/aws-sdk/clients/cloudwatchlogs.js create mode 100644 node_modules/aws-sdk/clients/codecommit.js create mode 100644 node_modules/aws-sdk/clients/codedeploy.js create mode 100644 node_modules/aws-sdk/clients/codepipeline.js create mode 100644 node_modules/aws-sdk/clients/cognitoidentity.js create mode 100644 node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js create mode 100644 node_modules/aws-sdk/clients/cognitosync.js create mode 100644 node_modules/aws-sdk/clients/configservice.js create mode 100644 node_modules/aws-sdk/clients/datapipeline.js create mode 100644 node_modules/aws-sdk/clients/devicefarm.js create mode 100644 node_modules/aws-sdk/clients/directconnect.js create mode 100644 node_modules/aws-sdk/clients/directoryservice.js create mode 100644 node_modules/aws-sdk/clients/discovery.js create mode 100644 node_modules/aws-sdk/clients/dms.js create mode 100644 node_modules/aws-sdk/clients/dynamodb.js create mode 100644 node_modules/aws-sdk/clients/dynamodbstreams.js create mode 100644 node_modules/aws-sdk/clients/ec2.js create mode 100644 node_modules/aws-sdk/clients/ecr.js create mode 100644 node_modules/aws-sdk/clients/ecs.js create mode 100644 node_modules/aws-sdk/clients/efs.js create mode 100644 node_modules/aws-sdk/clients/elasticache.js create mode 100644 node_modules/aws-sdk/clients/elasticbeanstalk.js create mode 100644 node_modules/aws-sdk/clients/elastictranscoder.js create mode 100644 node_modules/aws-sdk/clients/elb.js create mode 100644 node_modules/aws-sdk/clients/elbv2.js create mode 100644 node_modules/aws-sdk/clients/emr.js create mode 100644 node_modules/aws-sdk/clients/es.js create mode 100644 node_modules/aws-sdk/clients/firehose.js create mode 100644 node_modules/aws-sdk/clients/gamelift.js create mode 100644 node_modules/aws-sdk/clients/glacier.js create mode 100644 node_modules/aws-sdk/clients/iam.js create mode 100644 node_modules/aws-sdk/clients/importexport.js create mode 100644 node_modules/aws-sdk/clients/inspector.js create mode 100644 node_modules/aws-sdk/clients/iot.js create mode 100644 node_modules/aws-sdk/clients/iotdata.js create mode 100644 node_modules/aws-sdk/clients/kinesis.js create mode 100644 node_modules/aws-sdk/clients/kinesisanalytics.js create mode 100644 node_modules/aws-sdk/clients/kms.js create mode 100644 node_modules/aws-sdk/clients/lambda.js create mode 100644 node_modules/aws-sdk/clients/machinelearning.js create mode 100644 node_modules/aws-sdk/clients/marketplacecommerceanalytics.js create mode 100644 node_modules/aws-sdk/clients/marketplacemetering.js create mode 100644 node_modules/aws-sdk/clients/mobileanalytics.js create mode 100644 node_modules/aws-sdk/clients/opsworks.js create mode 100644 node_modules/aws-sdk/clients/rds.js create mode 100644 node_modules/aws-sdk/clients/redshift.js create mode 100644 node_modules/aws-sdk/clients/route53.js create mode 100644 node_modules/aws-sdk/clients/route53domains.js create mode 100644 node_modules/aws-sdk/clients/s3.js create mode 100644 node_modules/aws-sdk/clients/servicecatalog.js create mode 100644 node_modules/aws-sdk/clients/ses.js create mode 100644 node_modules/aws-sdk/clients/simpledb.js create mode 100644 node_modules/aws-sdk/clients/snowball.js create mode 100644 node_modules/aws-sdk/clients/sns.js create mode 100644 node_modules/aws-sdk/clients/sqs.js create mode 100644 node_modules/aws-sdk/clients/ssm.js create mode 100644 node_modules/aws-sdk/clients/storagegateway.js create mode 100644 node_modules/aws-sdk/clients/sts.js create mode 100644 node_modules/aws-sdk/clients/support.js create mode 100644 node_modules/aws-sdk/clients/swf.js create mode 100644 node_modules/aws-sdk/clients/waf.js create mode 100644 node_modules/aws-sdk/clients/workspaces.js create mode 100755 node_modules/aws-sdk/dist-tools/browser-builder.js create mode 100644 node_modules/aws-sdk/dist-tools/client-creator.js create mode 100644 node_modules/aws-sdk/dist-tools/create-all-services.js create mode 100644 node_modules/aws-sdk/dist-tools/service-collector.js create mode 100644 node_modules/aws-sdk/dist-tools/transform.js create mode 100644 node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt create mode 100644 node_modules/aws-sdk/dist/aws-sdk.js create mode 100644 node_modules/aws-sdk/dist/aws-sdk.min.js create mode 100644 node_modules/aws-sdk/global.js create mode 100644 node_modules/aws-sdk/index.js create mode 100644 node_modules/aws-sdk/lib/api_loader.js create mode 100644 node_modules/aws-sdk/lib/aws.js create mode 100644 node_modules/aws-sdk/lib/browser.js create mode 100644 node_modules/aws-sdk/lib/browser_loader.js create mode 100644 node_modules/aws-sdk/lib/cloudfront/signer.js create mode 100644 node_modules/aws-sdk/lib/config.js create mode 100644 node_modules/aws-sdk/lib/core.js create mode 100644 node_modules/aws-sdk/lib/credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/credential_provider_chain.js create mode 100644 node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/ecs_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/environment_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/file_system_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/saml_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/temporary_credentials.js create mode 100644 node_modules/aws-sdk/lib/credentials/web_identity_credentials.js create mode 100644 node_modules/aws-sdk/lib/dynamodb/converter.js create mode 100644 node_modules/aws-sdk/lib/dynamodb/document_client.js create mode 100644 node_modules/aws-sdk/lib/dynamodb/set.js create mode 100644 node_modules/aws-sdk/lib/dynamodb/translator.js create mode 100644 node_modules/aws-sdk/lib/dynamodb/types.js create mode 100644 node_modules/aws-sdk/lib/event_listeners.js create mode 100644 node_modules/aws-sdk/lib/http.js create mode 100644 node_modules/aws-sdk/lib/http/node.js create mode 100644 node_modules/aws-sdk/lib/http/xhr.js create mode 100644 node_modules/aws-sdk/lib/json/builder.js create mode 100644 node_modules/aws-sdk/lib/json/parser.js create mode 100644 node_modules/aws-sdk/lib/metadata_service.js create mode 100644 node_modules/aws-sdk/lib/model/api.js create mode 100644 node_modules/aws-sdk/lib/model/collection.js create mode 100644 node_modules/aws-sdk/lib/model/operation.js create mode 100644 node_modules/aws-sdk/lib/model/paginator.js create mode 100644 node_modules/aws-sdk/lib/model/resource_waiter.js create mode 100644 node_modules/aws-sdk/lib/model/shape.js create mode 100644 node_modules/aws-sdk/lib/node_loader.js create mode 100644 node_modules/aws-sdk/lib/param_validator.js create mode 100644 node_modules/aws-sdk/lib/protocol/json.js create mode 100644 node_modules/aws-sdk/lib/protocol/query.js create mode 100644 node_modules/aws-sdk/lib/protocol/rest.js create mode 100644 node_modules/aws-sdk/lib/protocol/rest_json.js create mode 100644 node_modules/aws-sdk/lib/protocol/rest_xml.js create mode 100644 node_modules/aws-sdk/lib/query/query_param_serializer.js create mode 100644 node_modules/aws-sdk/lib/region_config.js create mode 100644 node_modules/aws-sdk/lib/region_config.json create mode 100644 node_modules/aws-sdk/lib/request.js create mode 100644 node_modules/aws-sdk/lib/resource_waiter.js create mode 100644 node_modules/aws-sdk/lib/response.js create mode 100644 node_modules/aws-sdk/lib/s3/managed_upload.js create mode 100644 node_modules/aws-sdk/lib/sequential_executor.js create mode 100644 node_modules/aws-sdk/lib/service.js create mode 100644 node_modules/aws-sdk/lib/services/apigateway.js create mode 100644 node_modules/aws-sdk/lib/services/cloudfront.js create mode 100644 node_modules/aws-sdk/lib/services/cloudsearchdomain.js create mode 100644 node_modules/aws-sdk/lib/services/cognitoidentity.js create mode 100644 node_modules/aws-sdk/lib/services/dynamodb.js create mode 100644 node_modules/aws-sdk/lib/services/ec2.js create mode 100644 node_modules/aws-sdk/lib/services/glacier.js create mode 100644 node_modules/aws-sdk/lib/services/iotdata.js create mode 100644 node_modules/aws-sdk/lib/services/machinelearning.js create mode 100644 node_modules/aws-sdk/lib/services/route53.js create mode 100644 node_modules/aws-sdk/lib/services/s3.js create mode 100644 node_modules/aws-sdk/lib/services/sqs.js create mode 100644 node_modules/aws-sdk/lib/services/sts.js create mode 100644 node_modules/aws-sdk/lib/services/swf.js create mode 100644 node_modules/aws-sdk/lib/signers/presign.js create mode 100644 node_modules/aws-sdk/lib/signers/request_signer.js create mode 100644 node_modules/aws-sdk/lib/signers/s3.js create mode 100644 node_modules/aws-sdk/lib/signers/v2.js create mode 100644 node_modules/aws-sdk/lib/signers/v3.js create mode 100644 node_modules/aws-sdk/lib/signers/v3https.js create mode 100644 node_modules/aws-sdk/lib/signers/v4.js create mode 100644 node_modules/aws-sdk/lib/state_machine.js create mode 100644 node_modules/aws-sdk/lib/util.js create mode 100644 node_modules/aws-sdk/lib/xml/browser_parser.js create mode 100644 node_modules/aws-sdk/lib/xml/builder.js create mode 100644 node_modules/aws-sdk/lib/xml/node_parser.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/buffer/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/buffer/AUTHORS.md create mode 100644 node_modules/aws-sdk/node_modules/buffer/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/buffer/README.md create mode 100755 node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/bin/test.js create mode 100755 node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh create mode 100644 node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml create mode 100644 node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml create mode 100644 node_modules/aws-sdk/node_modules/buffer/index.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json create mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/package.json create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/base64.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/basic.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/compare.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/constructor.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/from-string.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/methods.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/slice.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/static.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/to-string.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/write.js create mode 100644 node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/index.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/md5.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/package.json create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/rng.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/sha.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 create mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0000.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0010.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0011.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0015.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0016.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0017.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0018.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0019.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0020.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0021.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0022.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0023.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0024.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0025.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0026.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0027.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0028.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0029.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0030.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0031.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0032.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0033.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0034.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0035.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0036.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0037.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0038.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0039.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0040.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0041.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0042.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0043.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0044.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0045.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0046.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0047.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0048.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0049.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0050.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0051.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0052.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0053.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0054.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0055.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0056.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0057.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0058.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0059.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0060.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0061.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0062.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0063.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0064.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0065.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0066.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0067.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0068.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0069.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0070.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0071.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0072.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0073.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0074.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0075.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0076.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0077.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0078.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0079.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0080.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0081.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0082.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0083.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0084.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0085.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0086.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0087.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0088.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0089.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0090.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0091.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0092.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0093.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0094.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0095.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0096.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0097.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0098.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0099.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0100.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0101.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0102.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0103.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0104.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0105.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0106.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0107.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0108.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0109.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0110.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0111.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0112.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0113.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0114.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0115.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0116.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0117.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0118.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0119.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0120.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0121.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0122.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0123.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0124.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0125.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0126.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0127.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0128.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0129.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0130.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0131.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0132.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0133.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0134.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0135.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0136.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0137.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0138.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0139.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0140.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0141.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0142.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0143.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0144.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0145.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0146.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0147.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0148.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0149.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0150.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0151.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0152.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0153.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0154.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0155.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0156.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0157.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0158.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0159.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0160.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0161.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0162.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0163.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0164.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0165.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0166.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0167.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0168.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0169.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0170.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0171.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0172.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0173.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0174.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0175.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0176.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0177.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0178.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0179.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0180.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0181.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0182.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0183.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0184.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0185.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0186.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0187.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0188.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0189.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0190.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0191.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0192.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0193.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0194.dat create mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0195.dat create mode 100644 node_modules/aws-sdk/node_modules/jmespath/.eslintrc create mode 100644 node_modules/aws-sdk/node_modules/jmespath/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/jmespath/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/jmespath/BASELINE create mode 100644 node_modules/aws-sdk/node_modules/jmespath/Gruntfile.js create mode 100644 node_modules/aws-sdk/node_modules/jmespath/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/jmespath/README.md create mode 100644 node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js create mode 100644 node_modules/aws-sdk/node_modules/jmespath/bower.json create mode 100755 node_modules/aws-sdk/node_modules/jmespath/g.sh create mode 100644 node_modules/aws-sdk/node_modules/jmespath/index.html create mode 100644 node_modules/aws-sdk/node_modules/jmespath/james.html create mode 100644 node_modules/aws-sdk/node_modules/jmespath/jmespath.js create mode 100755 node_modules/aws-sdk/node_modules/jmespath/jp.js create mode 100644 node_modules/aws-sdk/node_modules/jmespath/l.js create mode 100644 node_modules/aws-sdk/node_modules/jmespath/package.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/perf.js create mode 100644 node_modules/aws-sdk/node_modules/jmespath/reservedWords.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance.js create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json create mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js create mode 100644 node_modules/aws-sdk/node_modules/querystring/.History.md.un~ create mode 100644 node_modules/aws-sdk/node_modules/querystring/.Readme.md.un~ create mode 100644 node_modules/aws-sdk/node_modules/querystring/.package.json.un~ create mode 100644 node_modules/aws-sdk/node_modules/querystring/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/querystring/History.md create mode 100644 node_modules/aws-sdk/node_modules/querystring/License.md create mode 100644 node_modules/aws-sdk/node_modules/querystring/Readme.md create mode 100644 node_modules/aws-sdk/node_modules/querystring/decode.js create mode 100644 node_modules/aws-sdk/node_modules/querystring/encode.js create mode 100644 node_modules/aws-sdk/node_modules/querystring/index.js create mode 100644 node_modules/aws-sdk/node_modules/querystring/package.json create mode 100644 node_modules/aws-sdk/node_modules/querystring/test/.index.js.un~ create mode 100644 node_modules/aws-sdk/node_modules/querystring/test/common-index.js create mode 100644 node_modules/aws-sdk/node_modules/querystring/test/index.js create mode 100644 node_modules/aws-sdk/node_modules/querystring/test/tap-index.js create mode 100644 node_modules/aws-sdk/node_modules/sax/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html create mode 100644 node_modules/aws-sdk/node_modules/sax/README.md create mode 100644 node_modules/aws-sdk/node_modules/sax/lib/sax.js create mode 100644 node_modules/aws-sdk/node_modules/sax/package.json create mode 100644 node_modules/aws-sdk/node_modules/url/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/url/.travis.yml create mode 100644 node_modules/aws-sdk/node_modules/url/.zuul.yml create mode 100644 node_modules/aws-sdk/node_modules/url/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/url/README.md create mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/LICENSE-MIT.txt create mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/README.md create mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json create mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js create mode 100644 node_modules/aws-sdk/node_modules/url/package.json create mode 100644 node_modules/aws-sdk/node_modules/url/test.js create mode 100644 node_modules/aws-sdk/node_modules/url/url.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/xml2js/README.md create mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/bom.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/processors.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js create mode 100644 node_modules/aws-sdk/node_modules/xml2js/package.json create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/README.md create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLText.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/index.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/LICENSE.txt create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/LazyWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/LodashWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/MapCache.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/SetCache.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayCopy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEach.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEachRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEvery.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayFilter.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMap.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMax.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMin.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayReduce.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayReduceRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arraySome.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/assignDefaults.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/assignOwnDefaults.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseAssign.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseAt.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseBindAll.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCallback.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseClone.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCompareAscending.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCopy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCreate.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseDelay.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseDifference.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseEach.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseEachRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseEvery.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFill.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFilter.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFind.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFlatten.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFor.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForIn.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForOwn.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForOwnRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFunctions.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIndexOf.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseInvoke.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsEqual.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsEqualDeep.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsFunction.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsMatch.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseLodash.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMap.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMatches.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMatchesProperty.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMerge.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMergeDeep.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseProperty.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/basePullAt.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseRandom.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseReduce.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSetData.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSlice.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSome.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSortBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSortByOrder.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseToString.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseUniq.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseValues.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseWrapperValue.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/binaryIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/binaryIndexBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/bindCallback.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/bufferClone.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/cacheIndexOf.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/cachePush.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/charAtCallback.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/charsLeftIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/charsRightIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/compareAscending.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/compareMultiple.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/composeArgs.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/composeArgsRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createAggregator.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createAssigner.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createBindWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createCache.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createComposer.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createCompounder.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createCtorWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createExtremum.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createHybridWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createPad.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createPartialWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createWrapper.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/deburrLetter.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/equalArrays.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/equalByTag.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/equalObjects.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/escapeHtmlChar.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/escapeStringChar.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/extremumBy.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/getData.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/getView.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/indexOfNaN.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneArray.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneByTag.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isBindable.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isIterateeCall.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isLength.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isObjectLike.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isSpace.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isStrictComparable.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/lazyClone.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/lazyReverse.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/lazyValue.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapDelete.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapGet.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapHas.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapSet.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mergeData.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/metaMap.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/pickByArray.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/pickByCallback.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reEscape.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reEvaluate.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reInterpolate.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reorder.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/replaceHolders.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/setData.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/shimIsPlainObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/shimKeys.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/sortedUniq.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/toIterable.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/toObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/trimmedLeftIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/trimmedRightIndex.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/unescapeHtmlChar.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/wrapperClone.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/clone.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/cloneDeep.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isArguments.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isArray.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isBoolean.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isDate.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isElement.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isEmpty.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isEqual.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isError.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isFinite.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isFunction.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isMatch.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNaN.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNative.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNull.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNumber.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isPlainObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isRegExp.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isString.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isTypedArray.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isUndefined.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/toArray.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/toPlainObject.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/add.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/max.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/min.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/sum.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/number.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/number/inRange.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/number/random.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/assign.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/create.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/defaults.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/extend.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/findKey.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/findLastKey.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forIn.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forInRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forOwn.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forOwnRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/functions.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/has.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/invert.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/keys.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/keysIn.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/mapValues.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/merge.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/methods.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/omit.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/pairs.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/pick.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/result.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/transform.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/values.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/valuesIn.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/package.json create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/camelCase.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/capitalize.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/deburr.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/endsWith.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/escape.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/escapeRegExp.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/kebabCase.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/pad.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/padLeft.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/padRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/parseInt.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/repeat.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/snakeCase.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/startCase.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/startsWith.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/template.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/templateSettings.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trim.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trimLeft.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trimRight.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trunc.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/unescape.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/words.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/support.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/attempt.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/callback.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/constant.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/identity.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/iteratee.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/matches.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/matchesProperty.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/mixin.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/noop.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/property.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/propertyOf.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/range.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/times.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/uniqueId.js create mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/package.json create mode 100644 node_modules/aws-sdk/package.json create mode 100644 node_modules/aws-sdk/scripts/changelog/README.md create mode 100755 node_modules/aws-sdk/scripts/changelog/add-change.js create mode 100644 node_modules/aws-sdk/scripts/changelog/change-creator.js create mode 100755 node_modules/aws-sdk/scripts/changelog/create-changelog create mode 100755 node_modules/aws-sdk/scripts/changelog/release create mode 100755 node_modules/aws-sdk/scripts/changelog/util.js create mode 100755 node_modules/aws-sdk/scripts/console create mode 100644 node_modules/aws-sdk/scripts/lib/translator.js create mode 100755 node_modules/aws-sdk/scripts/translate-api create mode 100644 node_modules/aws-sdk/testem.json create mode 100644 node_modules/uuid/.npmignore create mode 100644 node_modules/uuid/.travis.yml create mode 100644 node_modules/uuid/LICENSE.md create mode 100644 node_modules/uuid/README.md create mode 100644 node_modules/uuid/benchmark/README.md create mode 100644 node_modules/uuid/benchmark/bench.gnu create mode 100755 node_modules/uuid/benchmark/bench.sh create mode 100644 node_modules/uuid/benchmark/benchmark-native.c create mode 100644 node_modules/uuid/benchmark/benchmark.js create mode 100644 node_modules/uuid/benchmark/package.json create mode 100644 node_modules/uuid/misc/compare.js create mode 100644 node_modules/uuid/misc/perf.js create mode 100644 node_modules/uuid/package.json create mode 100644 node_modules/uuid/rng-browser.js create mode 100644 node_modules/uuid/rng.js create mode 100644 node_modules/uuid/test/mocha.opts create mode 100644 node_modules/uuid/test/test.js create mode 100644 node_modules/uuid/uuid.js diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml new file mode 100644 index 0000000..b8387eb --- /dev/null +++ b/.idea/jsLibraryMappings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..eabe228 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..6bec890 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/serverless-crud.iml b/.idea/serverless-crud.iml new file mode 100644 index 0000000..c956989 --- /dev/null +++ b/.idea/serverless-crud.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml new file mode 100644 index 0000000..9338ba6 --- /dev/null +++ b/.idea/watcherTasks.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 0000000..0a011d1 --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + DEFINITION_ORDER + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1476332492455 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.serverless/cloudformation-template-create-stack.json b/.serverless/cloudformation-template-create-stack.json new file mode 100644 index 0000000..969844a --- /dev/null +++ b/.serverless/cloudformation-template-create-stack.json @@ -0,0 +1,99 @@ +{ + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "The AWS CloudFormation template for this Serverless application", + "Resources": { + "ServerlessDeploymentBucket": { + "Type": "AWS::S3::Bucket" + }, + "IamRoleLambdaExecution": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/" + } + }, + "IamPolicyLambdaExecution": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyName": "dev-serverless-crud-lambda", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": "arn:aws:logs:us-east-1:*:*" + }, + { + "Effect": "Allow", + "Action": [ + "dynamodb:DescribeTable", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:GetItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem" + ], + "Resource": "arn:aws:dynamodb:us-east-1:*:*" + } + ] + }, + "Roles": [ + { + "Ref": "IamRoleLambdaExecution" + } + ] + } + }, + "TodosDynamoDbTable": { + "Type": "AWS::DynamoDB::Table", + "DeletionPolicy": "Retain", + "Properties": { + "AttributeDefinitions": [ + { + "AttributeName": "id", + "AttributeType": "S" + } + ], + "KeySchema": [ + { + "AttributeName": "id", + "KeyType": "HASH" + } + ], + "ProvisionedThroughput": { + "ReadCapacityUnits": 1, + "WriteCapacityUnits": 1 + }, + "TableName": "todos" + } + } + }, + "Outputs": { + "ServerlessDeploymentBucketName": { + "Value": { + "Ref": "ServerlessDeploymentBucket" + } + } + } +} \ No newline at end of file diff --git a/.serverless/cloudformation-template-update-stack.json b/.serverless/cloudformation-template-update-stack.json new file mode 100644 index 0000000..dfeb475 --- /dev/null +++ b/.serverless/cloudformation-template-update-stack.json @@ -0,0 +1,1051 @@ +{ + "AWSTemplateFormatVersion": "2010-09-09", + "Description": "The AWS CloudFormation template for this Serverless application", + "Resources": { + "ServerlessDeploymentBucket": { + "Type": "AWS::S3::Bucket" + }, + "IamRoleLambdaExecution": { + "Type": "AWS::IAM::Role", + "Properties": { + "AssumeRolePolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Principal": { + "Service": [ + "lambda.amazonaws.com" + ] + }, + "Action": [ + "sts:AssumeRole" + ] + } + ] + }, + "Path": "/" + } + }, + "IamPolicyLambdaExecution": { + "Type": "AWS::IAM::Policy", + "Properties": { + "PolicyName": "dev-serverless-crud-lambda", + "PolicyDocument": { + "Version": "2012-10-17", + "Statement": [ + { + "Effect": "Allow", + "Action": [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents" + ], + "Resource": "arn:aws:logs:us-east-1:*:*" + }, + { + "Effect": "Allow", + "Action": [ + "dynamodb:DescribeTable", + "dynamodb:Query", + "dynamodb:Scan", + "dynamodb:GetItem", + "dynamodb:PutItem", + "dynamodb:UpdateItem", + "dynamodb:DeleteItem" + ], + "Resource": "arn:aws:dynamodb:us-east-1:*:*" + } + ] + }, + "Roles": [ + { + "Ref": "IamRoleLambdaExecution" + } + ] + } + }, + "TodosDynamoDbTable": { + "Type": "AWS::DynamoDB::Table", + "DeletionPolicy": "Retain", + "Properties": { + "AttributeDefinitions": [ + { + "AttributeName": "id", + "AttributeType": "S" + } + ], + "KeySchema": [ + { + "AttributeName": "id", + "KeyType": "HASH" + } + ], + "ProvisionedThroughput": { + "ReadCapacityUnits": 1, + "WriteCapacityUnits": 1 + }, + "TableName": "todos" + } + }, + "CreateLambdaFunction": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "ServerlessDeploymentBucket" + }, + "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" + }, + "FunctionName": "serverless-crud-dev-create", + "Handler": "handler.create", + "MemorySize": 1024, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambdaExecution", + "Arn" + ] + }, + "Runtime": "nodejs4.3", + "Timeout": 6 + } + }, + "ReadAllLambdaFunction": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "ServerlessDeploymentBucket" + }, + "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" + }, + "FunctionName": "serverless-crud-dev-readAll", + "Handler": "handler.readAll", + "MemorySize": 1024, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambdaExecution", + "Arn" + ] + }, + "Runtime": "nodejs4.3", + "Timeout": 6 + } + }, + "ReadOneLambdaFunction": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "ServerlessDeploymentBucket" + }, + "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" + }, + "FunctionName": "serverless-crud-dev-readOne", + "Handler": "handler.readOne", + "MemorySize": 1024, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambdaExecution", + "Arn" + ] + }, + "Runtime": "nodejs4.3", + "Timeout": 6 + } + }, + "UpdateLambdaFunction": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "ServerlessDeploymentBucket" + }, + "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" + }, + "FunctionName": "serverless-crud-dev-update", + "Handler": "handler.update", + "MemorySize": 1024, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambdaExecution", + "Arn" + ] + }, + "Runtime": "nodejs4.3", + "Timeout": 6 + } + }, + "DeleteLambdaFunction": { + "Type": "AWS::Lambda::Function", + "Properties": { + "Code": { + "S3Bucket": { + "Ref": "ServerlessDeploymentBucket" + }, + "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" + }, + "FunctionName": "serverless-crud-dev-delete", + "Handler": "handler.delete", + "MemorySize": 1024, + "Role": { + "Fn::GetAtt": [ + "IamRoleLambdaExecution", + "Arn" + ] + }, + "Runtime": "nodejs4.3", + "Timeout": 6 + } + }, + "ApiGatewayRestApi": { + "Type": "AWS::ApiGateway::RestApi", + "Properties": { + "Name": "dev-serverless-crud" + } + }, + "ApiGatewayResourceTodos": { + "Type": "AWS::ApiGateway::Resource", + "Properties": { + "ParentId": { + "Fn::GetAtt": [ + "ApiGatewayRestApi", + "RootResourceId" + ] + }, + "PathPart": "todos", + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayResourceTodosIdVar": { + "Type": "AWS::ApiGateway::Resource", + "Properties": { + "ParentId": { + "Ref": "ApiGatewayResourceTodos" + }, + "PathPart": "{id}", + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosPost": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "POST", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" + }, + "StatusCode": 200 + }, + { + "StatusCode": 400 + }, + { + "StatusCode": 401 + }, + { + "StatusCode": 403 + }, + { + "StatusCode": 404 + }, + { + "StatusCode": 422 + }, + { + "StatusCode": 500 + }, + { + "StatusCode": 502 + }, + { + "StatusCode": 504 + } + ], + "RequestParameters": {}, + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:aws:apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "CreateLambdaFunction", + "Arn" + ] + }, + "/invocations" + ] + ] + }, + "RequestTemplates": { + "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", + "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " + }, + "PassthroughBehavior": "NEVER", + "IntegrationResponses": [ + { + "StatusCode": 200, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "ResponseTemplates": {} + }, + { + "StatusCode": 400, + "SelectionPattern": ".*\\[400\\].*" + }, + { + "StatusCode": 401, + "SelectionPattern": ".*\\[401\\].*" + }, + { + "StatusCode": 403, + "SelectionPattern": ".*\\[403\\].*" + }, + { + "StatusCode": 404, + "SelectionPattern": ".*\\[404\\].*" + }, + { + "StatusCode": 422, + "SelectionPattern": ".*\\[422\\].*" + }, + { + "StatusCode": 500, + "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" + }, + { + "StatusCode": 502, + "SelectionPattern": ".*\\[502\\].*" + }, + { + "StatusCode": 504, + "SelectionPattern": ".*\\[504\\].*" + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodos" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosGet": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "GET", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" + }, + "StatusCode": 200 + }, + { + "StatusCode": 400 + }, + { + "StatusCode": 401 + }, + { + "StatusCode": 403 + }, + { + "StatusCode": 404 + }, + { + "StatusCode": 422 + }, + { + "StatusCode": 500 + }, + { + "StatusCode": 502 + }, + { + "StatusCode": 504 + } + ], + "RequestParameters": {}, + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:aws:apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "ReadAllLambdaFunction", + "Arn" + ] + }, + "/invocations" + ] + ] + }, + "RequestTemplates": { + "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", + "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " + }, + "PassthroughBehavior": "NEVER", + "IntegrationResponses": [ + { + "StatusCode": 200, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "ResponseTemplates": {} + }, + { + "StatusCode": 400, + "SelectionPattern": ".*\\[400\\].*" + }, + { + "StatusCode": 401, + "SelectionPattern": ".*\\[401\\].*" + }, + { + "StatusCode": 403, + "SelectionPattern": ".*\\[403\\].*" + }, + { + "StatusCode": 404, + "SelectionPattern": ".*\\[404\\].*" + }, + { + "StatusCode": 422, + "SelectionPattern": ".*\\[422\\].*" + }, + { + "StatusCode": 500, + "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" + }, + { + "StatusCode": 502, + "SelectionPattern": ".*\\[502\\].*" + }, + { + "StatusCode": 504, + "SelectionPattern": ".*\\[504\\].*" + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodos" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosIdVarGet": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "GET", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" + }, + "StatusCode": 200 + }, + { + "StatusCode": 400 + }, + { + "StatusCode": 401 + }, + { + "StatusCode": 403 + }, + { + "StatusCode": 404 + }, + { + "StatusCode": 422 + }, + { + "StatusCode": 500 + }, + { + "StatusCode": 502 + }, + { + "StatusCode": 504 + } + ], + "RequestParameters": {}, + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:aws:apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "ReadOneLambdaFunction", + "Arn" + ] + }, + "/invocations" + ] + ] + }, + "RequestTemplates": { + "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", + "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " + }, + "PassthroughBehavior": "NEVER", + "IntegrationResponses": [ + { + "StatusCode": 200, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "ResponseTemplates": {} + }, + { + "StatusCode": 400, + "SelectionPattern": ".*\\[400\\].*" + }, + { + "StatusCode": 401, + "SelectionPattern": ".*\\[401\\].*" + }, + { + "StatusCode": 403, + "SelectionPattern": ".*\\[403\\].*" + }, + { + "StatusCode": 404, + "SelectionPattern": ".*\\[404\\].*" + }, + { + "StatusCode": 422, + "SelectionPattern": ".*\\[422\\].*" + }, + { + "StatusCode": 500, + "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" + }, + { + "StatusCode": 502, + "SelectionPattern": ".*\\[502\\].*" + }, + { + "StatusCode": 504, + "SelectionPattern": ".*\\[504\\].*" + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodosIdVar" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosIdVarPut": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "PUT", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" + }, + "StatusCode": 200 + }, + { + "StatusCode": 400 + }, + { + "StatusCode": 401 + }, + { + "StatusCode": 403 + }, + { + "StatusCode": 404 + }, + { + "StatusCode": 422 + }, + { + "StatusCode": 500 + }, + { + "StatusCode": 502 + }, + { + "StatusCode": 504 + } + ], + "RequestParameters": {}, + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:aws:apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "UpdateLambdaFunction", + "Arn" + ] + }, + "/invocations" + ] + ] + }, + "RequestTemplates": { + "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", + "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " + }, + "PassthroughBehavior": "NEVER", + "IntegrationResponses": [ + { + "StatusCode": 200, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "ResponseTemplates": {} + }, + { + "StatusCode": 400, + "SelectionPattern": ".*\\[400\\].*" + }, + { + "StatusCode": 401, + "SelectionPattern": ".*\\[401\\].*" + }, + { + "StatusCode": 403, + "SelectionPattern": ".*\\[403\\].*" + }, + { + "StatusCode": 404, + "SelectionPattern": ".*\\[404\\].*" + }, + { + "StatusCode": 422, + "SelectionPattern": ".*\\[422\\].*" + }, + { + "StatusCode": 500, + "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" + }, + { + "StatusCode": 502, + "SelectionPattern": ".*\\[502\\].*" + }, + { + "StatusCode": 504, + "SelectionPattern": ".*\\[504\\].*" + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodosIdVar" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosIdVarDelete": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "DELETE", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" + }, + "StatusCode": 200 + }, + { + "StatusCode": 400 + }, + { + "StatusCode": 401 + }, + { + "StatusCode": 403 + }, + { + "StatusCode": 404 + }, + { + "StatusCode": 422 + }, + { + "StatusCode": 500 + }, + { + "StatusCode": 502 + }, + { + "StatusCode": 504 + } + ], + "RequestParameters": {}, + "Integration": { + "IntegrationHttpMethod": "POST", + "Type": "AWS_PROXY", + "Uri": { + "Fn::Join": [ + "", + [ + "arn:aws:apigateway:", + { + "Ref": "AWS::Region" + }, + ":lambda:path/2015-03-31/functions/", + { + "Fn::GetAtt": [ + "DeleteLambdaFunction", + "Arn" + ] + }, + "/invocations" + ] + ] + }, + "RequestTemplates": { + "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", + "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " + }, + "PassthroughBehavior": "NEVER", + "IntegrationResponses": [ + { + "StatusCode": 200, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'" + }, + "ResponseTemplates": {} + }, + { + "StatusCode": 400, + "SelectionPattern": ".*\\[400\\].*" + }, + { + "StatusCode": 401, + "SelectionPattern": ".*\\[401\\].*" + }, + { + "StatusCode": 403, + "SelectionPattern": ".*\\[403\\].*" + }, + { + "StatusCode": 404, + "SelectionPattern": ".*\\[404\\].*" + }, + { + "StatusCode": 422, + "SelectionPattern": ".*\\[422\\].*" + }, + { + "StatusCode": 500, + "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" + }, + { + "StatusCode": 502, + "SelectionPattern": ".*\\[502\\].*" + }, + { + "StatusCode": 504, + "SelectionPattern": ".*\\[504\\].*" + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodosIdVar" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosOptions": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "OPTIONS", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": true, + "method.response.header.Access-Control-Allow-Headers": true, + "method.response.header.Access-Control-Allow-Methods": true + }, + "StatusCode": "200" + } + ], + "RequestParameters": {}, + "Integration": { + "Type": "MOCK", + "RequestTemplates": { + "application/json": "{statusCode:200}" + }, + "IntegrationResponses": [ + { + "StatusCode": "200", + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'", + "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'", + "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,POST'" + }, + "ResponseTemplates": { + "application/json": "" + } + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodos" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayMethodTodosIdVarOptions": { + "Type": "AWS::ApiGateway::Method", + "Properties": { + "AuthorizationType": "NONE", + "HttpMethod": "OPTIONS", + "MethodResponses": [ + { + "ResponseModels": {}, + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": true, + "method.response.header.Access-Control-Allow-Headers": true, + "method.response.header.Access-Control-Allow-Methods": true + }, + "StatusCode": "200" + } + ], + "RequestParameters": {}, + "Integration": { + "Type": "MOCK", + "RequestTemplates": { + "application/json": "{statusCode:200}" + }, + "IntegrationResponses": [ + { + "StatusCode": "200", + "ResponseParameters": { + "method.response.header.Access-Control-Allow-Origin": "'*'", + "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'", + "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,DELETE,PUT,GET'" + }, + "ResponseTemplates": { + "application/json": "" + } + } + ] + }, + "ResourceId": { + "Ref": "ApiGatewayResourceTodosIdVar" + }, + "RestApiId": { + "Ref": "ApiGatewayRestApi" + } + } + }, + "ApiGatewayDeployment1476332749599": { + "Type": "AWS::ApiGateway::Deployment", + "Properties": { + "RestApiId": { + "Ref": "ApiGatewayRestApi" + }, + "StageName": "dev" + }, + "DependsOn": [ + "ApiGatewayMethodTodosPost", + "ApiGatewayMethodTodosGet", + "ApiGatewayMethodTodosIdVarGet", + "ApiGatewayMethodTodosIdVarPut", + "ApiGatewayMethodTodosIdVarDelete" + ] + }, + "CreateLambdaPermissionApiGateway": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "FunctionName": { + "Fn::GetAtt": [ + "CreateLambdaFunction", + "Arn" + ] + }, + "Action": "lambda:InvokeFunction", + "Principal": "apigateway.amazonaws.com" + } + }, + "ReadAllLambdaPermissionApiGateway": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "FunctionName": { + "Fn::GetAtt": [ + "ReadAllLambdaFunction", + "Arn" + ] + }, + "Action": "lambda:InvokeFunction", + "Principal": "apigateway.amazonaws.com" + } + }, + "ReadOneLambdaPermissionApiGateway": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "FunctionName": { + "Fn::GetAtt": [ + "ReadOneLambdaFunction", + "Arn" + ] + }, + "Action": "lambda:InvokeFunction", + "Principal": "apigateway.amazonaws.com" + } + }, + "UpdateLambdaPermissionApiGateway": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "FunctionName": { + "Fn::GetAtt": [ + "UpdateLambdaFunction", + "Arn" + ] + }, + "Action": "lambda:InvokeFunction", + "Principal": "apigateway.amazonaws.com" + } + }, + "DeleteLambdaPermissionApiGateway": { + "Type": "AWS::Lambda::Permission", + "Properties": { + "FunctionName": { + "Fn::GetAtt": [ + "DeleteLambdaFunction", + "Arn" + ] + }, + "Action": "lambda:InvokeFunction", + "Principal": "apigateway.amazonaws.com" + } + } + }, + "Outputs": { + "ServerlessDeploymentBucketName": { + "Value": { + "Ref": "ServerlessDeploymentBucket" + } + }, + "CreateLambdaFunctionArn": { + "Description": "Lambda function info", + "Value": { + "Fn::GetAtt": [ + "CreateLambdaFunction", + "Arn" + ] + } + }, + "ReadAllLambdaFunctionArn": { + "Description": "Lambda function info", + "Value": { + "Fn::GetAtt": [ + "ReadAllLambdaFunction", + "Arn" + ] + } + }, + "ReadOneLambdaFunctionArn": { + "Description": "Lambda function info", + "Value": { + "Fn::GetAtt": [ + "ReadOneLambdaFunction", + "Arn" + ] + } + }, + "UpdateLambdaFunctionArn": { + "Description": "Lambda function info", + "Value": { + "Fn::GetAtt": [ + "UpdateLambdaFunction", + "Arn" + ] + } + }, + "DeleteLambdaFunctionArn": { + "Description": "Lambda function info", + "Value": { + "Fn::GetAtt": [ + "DeleteLambdaFunction", + "Arn" + ] + } + }, + "ServiceEndpoint": { + "Description": "URL of the service endpoint", + "Value": { + "Fn::Join": [ + "", + [ + "https://", + { + "Ref": "ApiGatewayRestApi" + }, + ".execute-api.us-east-1.amazonaws.com/dev" + ] + ] + } + } + } +} \ No newline at end of file diff --git a/.serverless/serverless-crud.zip b/.serverless/serverless-crud.zip new file mode 100644 index 0000000000000000000000000000000000000000..937d6e39a6e81bd39d77896870a77731a93d62b2 GIT binary patch literal 2149353 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

pB7;TCevFTYR^rC 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%0DXLy)j<^fZ%UU^ta5WG`?a7@PRa3FrFx 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 z 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%0D&*P3z&P{KJ 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 z z=MRu5<L5Un@*OE3!ImQ1?GO%Gnd%Gq3WqwSg7dAR^dBghCKv(&p-MbOW% zI2u49TX_sd02l|8?&#q&bQhXkP)Ed5bLlCgv!YL_n#=_-CcK&onN#xEA(JPCe9VRd zdt5QHQb%y@E7F69kc)u5QeY*F551og8*CfV$`^tAeZdtW0aoWQmIALHm|LB_l_at* zUYHBKgMo{@_lEGg+?}@Bdf*ZoS&&euuiM-nF*8lOh zzX5*VOdJN2x7%-~tLwkbR@1*h_G=n23Jz+EnGqUN)j%$E$X*OXt7lJ_kmh^|$=KmO z&ntY^{=fFCoihLPC7>;I8o*Krmuoc?noBD1d)njE8Sg80TI_qYdH-@RA4uniz4o;O^&ad|Hf`?1J+R!-(ZLxC$ zpz0mC@Bgv&B76or(M=NbG+q2LXjKR4g1U?uTDJ^K_e-$Jm{kcx^|$r(MO|-TLILz! zhIFNocE{wH;{E~Ul6<9XpLsbXa{3XlO0>op)@Zs=@Qp!*R%#NGgYn$LUfBjDhw!u) zZAxSftCxr@9DnMQ*=&O^N_@0(@o05Dnfpa9mP*nOj!_2V
pVm^HezF$4>VQB7} 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
GT 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"+5s$Jt-tQ;J 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%0A|0UEN}0 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

s!lq~#?9vB0t5ROSF6Z|C(C>k=%!hGF#-4EQ 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�^mhMTc*oKKsakwIEoJko)~vaXI|<%gf=mk?xdSS9ex?^+UWG<{CC0r;OsRfQ2qvhxS551 z5{Jf!_BHi1qZ1aZT7b_B+_Mi{^I9dG~=fE74H zVenB8?8Qeag*AfKGNRGp8?Dnb_1-G-eDPWH6JByd_b$o!J=+;#PhbBVxFeihK3!ke zbw-Sdsj(X(V5e#eI4}PS@-6MB$=w5g2vGSz^u-*yqK=L%ZFtz10xS{PYynX&tx7?h znw7>G-eM>9Wu(h}s^l)KF(dr}0jBjH{((~PQ8znKM_L94H+cNv^8^7%WHQm6*HaUU z5uIk98yryo3a0prq?!C!tOkA^yvA8a=B{H$O(NRKWD2o)-oODJzrt`!Z;Zm#IGC|k zyNaA8(b8%*ysC{lI;T*Jp?GNHB|&Z#>$Ku>r~SI*D-o;253zp* zF<-dLR|fpUru2~e>E690Nu`%oHdARFbbuPj=v!hQ3_ukW?O53mAmA_XxLE)71SKKV6_GX?gW;`WxC{%yFjtY>AKotf zk}kVMp!-MZ9ScSpos{GW%rfBVJ{ zD!t37xfY0`k!6-*)kQi?3mHEP{rD*K+#~}&=`eSzF(aeT$aKNesA#bJJuVKSm)qv( z>wkXHd$*tM92}k>|MiF}WAhld;~=EGxMa^AfiDsl_@$ZD%nD>KDD&&z zScVzLCsjD^?0xeXL#ehPd{7(u1zDkC&N?}7tiKF zIXyTT&2VE8J*@L!DEn!-Ju@r^kZP$AowFFb7I8FJ9_>QsyoE+nTNAuQeF&S;Sp0$2 zP~HG}EfXqhB==xC8L3Pp^pkP4xTaf4oimahSbP;x>qLm|h(91f2imk^@h1HbcDO~; z`17SH^at%q1Oh@i6AJ11mh|z>4XxrqZ=k(&0hjNgBM$KeX{xZgrhv9Pxo1A{Y6|Fv zEh0uOw zFFruW4o8>G>hAEWx%i+HZXEDBCPKt&H0I^LQt+Rm$S690cT+dLhm#wqmlfgx&uMqb z@N`__q2xU%1etgUOdw{AT8C-G9&C2DN)DQ*u5#-D+v4PY+0Jn;9shys6xrWIYz%@{ zP(r82*Ee&}V+<%xplcVC5i*IY<-~NaXh_#$%JJ=fo!y(Vd8UzzQtu5RqwD)Ro5Nsj zL9J?7b1UFUgcMzE6S{hl!@#`N;MvWRYPG}hVh4Z;)F;R)O&0rsOvC%= zkiKa*MCc*cm!naN7}ziy&ygLN!`ekW{|`3KH9->eD*D9SOI7bPa1Mj_ML>5%}GmDH1)^ z{SnG`mS;r`kgvQh zmb`AJlRskaBdh_z$VYJAo>JJO0CtlzjQvW*82CHcb zK{%~g1!(LELMvmDk1QNs$1rpj+_-W}(GHQwcA;bE*2?YP30w26$261ls9%@WMkhf5Bn-K zKc)_Th7p-;6vc2)!&RFWmLF|rhc#H6erZUvmGixdRL5!zeVz*&xP)SBm4oxZ-zaMB~fzbl5dM#Qr_O%O>FPUx$Vp@-77xS zo!gZ|BI9a)F`qu$!9MKjA)n}ox8rcQ;^-r#QM2QeJf@^ukGuPi@I=&X^>E2`A3`-# ztYP^GB(JbdW*8X8m+qjs+gUrCPorc+Q<>!3)@HSU>h$k(+N+fZRYWIwFTey7f^qql zjf*C%sLA<`7ILhG8y!dKfXTYT@rs?~X+A?2Js*$5T-pU8_A5*14R+WXPC40o{G^Ih zwhwE+?RR^SD{-jFRu$ev@GGKfd|t78AkUzep7vkfzCC`?MG>Z@f*Yu69=@_wh>gw=P7}_CB`@IKGTQy?XyxGN;;N|4~t;CT6zte85 zo;5dfcm?yt-MPDK0vo1o2MNR`dK=QV23muMa&&%lVPWqG%0o&` z!~Tb0Prju;(rJVyi|~Z|csQa?9(54js}i4xM-bB#uom$-H(O~fo>Mf@UtlKM>h|X& z?TA4j^IWE}_HYn$$w!xnJ39wWiRZ|M8+8RZ*5I|YzUq*=z+2u8HZbsdARtgUJ!=|4 z0&~+)=)g8X4;lch8r->))ao;`=QQi-M;QWkeu7{P8M)ysWm2YpAYC#J(|-24Ow zca`k2ApnM#R#VI-8r4(kt+dCio9WTSKK1VM$#PVbA!ID>ET& zN$T@$nxxN{G5&S_%{`32hGUcpMT2zOxzVjgKYx`5X+R!wr6jX6O-Bx9<7xFXf37yP zO_X7!I-+>Xt!aVwbN~o0S|zZqc1P4Hiph2u^{h^cSs@=*6EIW;0WSkDNGu!Tn{l;6QD;hP_EZjD1A~Vj;hn)c(@~w z{tz%uVWIRAp$RbJs6BZzk&Tfcv6qPes8_e}yqF(l?Pa4Aa;h^{utr~sIS(O>pwJY# zP}V~hLfHqxUG$eT_Tl(Z^p|MD!K&|y!K!vh)669ZyJi&AgaU)FY0n4P-oXL11kjoJ z0;Bn^*-;W|d|#x7o<-=%(|`K#@&3d8LLe^{mD77x;`^$K(LG4E$>~NQ50`;lPnLXK zBC|Gipgp?uK64zedUV6-Qrod%yu)#gfFb8zl9bM8uvk7TeLH5$j6$+1!_Z%T9Qq;Q zO}C@teuV7rV6?h$?Vya3 zu1PLtIs~f=!kFQ~Szv8dDUNiQVm@$pN&z-vezWTsw{n&Tb;kd8iNY2Ix6s*f8w!oI=uZ)M)SajjhC`T8V1yn&IFlH|rvA5r>5 zq!3j$X((TVh;&$qO>4YQn30(x<<=6II&y7YV9cIYTXz<5%PG!|sMO&VvBB>zDxM?q zervQCHiilo>3832>=oUwGqmfq)h61_Pg(36fWI|?w_@Y0mvEVN;lC=AE9uyJ$mXhQ ziQLK}rx+g5cCT!xm)@z&nTD;A8Y2iHG846PngGm6N}->=gF zs%y)`=>&lQ=ngqtTnB(OdgxkV{L|F!y!TqEhnT7B8>8q>L0$*a+WmGZYmI=)(tqvj zKlsHR-#BB%yfgu793FBjq5m1*r%~Gj&49GXQO|7YdkXwpra8!Lr$VIzeGmWvXuSKV zS44l=6o`1xU)w(^Hp(t7<(FM8H-OL%~!$myBo^E<7$9liQd?yu^`;j|Z7D8ndbC?3Du5NiURxEG!*pmp*OMN(~iyW6Sw!I5T@Q}cP}CO9QzkysVK;*G+q)E z$&?lR3ra0(ZzXTQdt1?o_u9C_oxHekWO=1NmEUqpkW{wT+BA)hS8Rv4rpvE}%965Y zQb*eYyV;IsW@9sC7LqHgVHfqzcp^-m8m@89M`T#}y7UeeF_nmt_8F!gQuOPY^|IUC z@H(vf*^{Wn`E93*IbAM_+$;_6I9ta1&}4VdaeJgB5y<3IheY>k>h{$^xBKvuy1OQ?IPU8D>F>S4o#1|HuUoe+X2Lb2NN=xMf zT)FK*eb=(CBiekwl}9L_P)gt4_uZ>^r*j;+s=s^JWcSHCX@^rhSNjv4Vts&EExJm- zNQp$E_u+P3s!5NfJ$bwjn4mdL8lYUSi|YVzrRMo)iMviK4r8uRF}~45zOa_@$yV$2 z3Cgg3;gHN==Mq<`BNb#d$N!DP?Jm~ur!iG`+t#E6@q6emsdl#v<1_WD8pkEquI8-| zW;E)_{Pg`mj@0_(cE?4Z{`u)=ULW!?CaO@dq} zy@aO<0z+AzbmRB6ilSkF<`*HNAn|(>@q{0_Le3d3^{b*HCN7d2ZrP@%twc1#!# z#qAl`bwlQ%?q^o$0^4-pz*DaIHN2{JMb$vc6EW3^v|bSmX1IOM zrvP)px_0AJ@2ixBVR*n(isbUKT05*zR?rH1yap?;q4?5z-Jtw+Ye+TT0%UNiP@aR5 zmfw;(cjznKQw%_BTM`_+Q{Zk7$Fw$|;TV&+9M3Mj6-lgEy0!#dFRphHAhgm2{1n zvW^c&Y)w)Dtw%1UeDZ?oTUJcr1E;_wzn@k$kr@$e@+jifl; z@&QeK(Z_4%`%JvG$lIO!V1>iPTlSN;Vw6Pd85AoGYl~$7EI13NBfN+r@*{n7h~aX+ z!22hd3yk5{nuszE@{(NAXlY>b!nBG##;m#6xPs@ ztBm>!-UUF-D>;TjgFiS3I9kxfnV7t7>2U4xP@I!y3PU958FFU8Q?=kUT8EdJ z2-0x033>;y8mED*%hPH=s?4{bA3_do((alPA%D?eX%MA=fDLGMpRh3 zM=_NRtLB$jwd24o8ai6XN=`89TXL=Db38++bAavp#p-xAZayo#-kTbr=9?*LPwx0= zHqO+;YL=c6?5#-i&w^zg$12Ifbou!N*@GA6e>i)`b3&_~mJeoU$aY4|5qb;1jQOna z=^R@34iZ60#A~?{*sZFa>2pAJ9mlOx+^7grbtYQ5CaL3&Xf~_{#QhFf-K@ixHRw}nQ^Qz=m-a}m5Nowe%wLCK8ho9rtF@#yD#Nk2ELO(1< zqzw4IWIxdL2v^^Hkh8cSN7Gx1*XV!Y;Zc9d#WHavwV4@Jp&3iXZ$hehAfQIFG%9)B z*d`5|57^iWmz#B5N27>EFr85fKbAM63%c1yzAz;$ONNRBT=>P!!Y6J=KgZ4G2=8vX z-vZBgjw}dwEf{8=cgJ?CcMe~;w^8x0?h0V4q8&W%hqdoAHU;Jq5dM=>AN&iUX2R&O zjE?!L6&llL2%`};J2MmMetlqe@ol$!F0ShzO&hDM{CDq{2C3S;6-o9Hq8 zftg`XdaL_}0ak42yTV69+_`t$aT$8-l^ z5*ON~&>{TfXxIcVJt;zoqal^hUt}0N`B4Kx*QEu>Z(hD@&gzKL7?gabX0H)NhYlpp z7K-tPpsn#{_^;XDD1a&oxEfYBp*vP2v7l=AaWX*;+Oucwy(LZ6p&(7!^t5_69e4c8 zxoDXWp;uPCwrEmvR(=Dl59i0rrzUEG^@aZg4l&1ND5mlf$#dW1%0f?pKU3fQ-J(Xa zXdWJ}YAg7y*#y#DNJ(KXkVwRBkog6arUDHq`t4Fq6R6Bj2P^w21QstXqv1MKp;l!7 zy4-ZwqYd=6=@|UTsz%BT*5C;um{mveZn8d~zG=$}toy_cn4grb?~16-?RkNp1=kf{ zrtymi`|%Hgu#hId8FCHpUxk4(T4=&HWlqu(k;rf6o7}1&nV9Vj@5dv^7apUTI|NMu z^P8sPCv@60mtajGmgD07rP|*De*hX#)>h7c)PmPA>{<0FK2`YM8 z1V^i{06S-76ovh8xqxwTOW3F_4*PEqFS-Gi6VAihNm=3D|EIN+TTiS=18bUc)F#Bv zGUoj5;MibhK7PdKUn*2?osAEUvhv99Cn$a&+XHgjIo0ub?S}j|$zZ_p{+Jl}R z2sx~CU_@k?Q^~#4KWMS0m;V{9rj)aeX87c9^zUCz>ECDO-@iODf17`QH2;b>%Mf1W zFUXaNs{E*ZC7)4_Glq)4jA>mk41fiYZs_2?r_@)!mT37_etI&X2}U&{+DDQT90sT` zP%s?-hdbHv=z}-Mevgf$%^#@m{(G7+WtKI4Os#~8gX5O*v4bsYNfT7{nUPa+IMCfLHS=7^tmMoPB zWc+JqS};;(>&$ex_90q@yJDpAl{I2z@Q>Pr=egt~*3+ca<{Glm!!qEg#_x#n>Z>1$ z`RL5^H;kQw9q6e*0fA%F?o0J><8?XVFkXSbUaWCsvMSWIE)0x`H9U0Ca9^0Rm_>{) zSZ!2>Z+}PS*ovq}O*kdhL!8p(t$ZYE6S5Hb7^7=Jl6?-*+^e=_5$C29IB*1~v@~s< zS8z&ZwCgbf-#xLEKaKw6R(&HX(`Q2_Xfb@n5U>a50kS1_k%5s6GSH!12duXi5zjVY z0hINQM9w4Qj>3JlG8xwl&%U_(oWX5rJBQ2k=yf+E4E7~~pCK#1{;Sb~z4ak8b1PF_ zJ91v!jHa_%1Jd{K-@uyPB2B7kE21{W<{OpKsYCBZ^f{}=xs%G3RYX~oaP+42NOiLm z`5CW5zKG$_(1aO=rV5+=*(SPDsb|^=1Ss%(3xwqMT@8 zTZ94R;Sq0CTA4V7u5G!}(7!>;52{;WxW}{0H6Ht^DX2>sU6)2nD!U=~{Q*70gaFmy z{y#I2@HY-GyV2Vdo9%rKEeBz=7IWXDzw@YH7BFl6X=OMl|MXV_G>ZdxLzOp>Rcv0g z7{$o1hD+(@!sB1yyyjqWP+cl_Bb}3%8JAW&_s4zjw`Dy~`6qSq5|{NeIIKD<#FDFi z{D_Z+5J#J-n6R_^M}*ORz$!x4E$Nm1+KJF2xha^&7m*#om9^RdtT~d(Uhfoj= zj{NfKu4N8D7S-v~!{cXZk8`-Dx*p$PHJ2-RbJlu%4%4VYB(Ov z4~C$G-`x8SD-VMb{-v9DD}Dsf!HL4i$c&Psl+Fn;=59kq1E_!Qmx<$RGZ}$#(}xwD z!)XonwfaOJr*TeCqo3j_(0qNmSWd^$Q%^MtDUSJJc%s_rLyc=1<_AtbIUr&vH6f}s zhI+fe)*S)Jb9oBM_nipy2zACja^vYJz1gd%ZUIh9^@kitkkw{*xumF&0NlvN6}!Sd zP=qdYuzSdJ$Go^N7S`%)_B}7AsI40P^xG=S8I5u6I0uG5+&g^yd~X1&(V8;24@S%B z8Fu15G!_2-^7t>dB&fEWO)bfcE;ozy7|uQvdJ5JVL(a&X%-`>*3VQ=LrhGm`^Pz37 z``4YiHra~f8A6@ul5^)vv9-LdLMLDwXUFoF)fFYY#l<{+)Z@;9cDR z20t*r_V@4X@4H_J-TDo(vHM^9_wF31U;B6Nee1q~YvY04ck=7II|u655Ay9>F!wwA z_gzi%>)?C&^*ui8UkCU8H|$7$v?MduyuL*NegGhbA@*xT~r#SzN&H zI#cb)eBjC(cxU6tX?MsBN%m)Gpy9mUlZGnTaj}?Bq0jK;_#IBlAyW2`^U$7zRD8ud6dMQVx^&ECyS zcRii zc+9m7&-6SDzf?Q?`a$>`80J0sWfGhCc9x&=cwo?~CU_<~!gz`=c4Htj&;BG>mWS$- z$3y+$jRF_W?DVGZ4S70#gsl*W;W~RtJK;X#wKFd9-3Qa+F%`wI!ZT}dc%D0^ityhL z9OUrpyWraockYKA-i`Gd$~{iwGX&w*1CAeYxn9Z)IKn&c+QW%x@_ICb=~eOHC(ktU zbhFp*u;;ag?|=wy_-Bvkho{=^LU9i_CR7z%^ITFa3fJg)uobcs3aF4Rb5MohM!`xU zV%!HcEW$>1=f;=9)_v-Jt14&EcV_14q^@-r&G&%3+;bB^-%tA`!lWJkBz({SJNNGu&TGhjs6?lNH%^px_CXov@CF+ znP2L26itBZxkv#LD8M69?f59I{n0l$HU?w+YKUCXk>(-b;}SIi|0 z(XRXEzVF!nOeP}r)dAt{-n9S$2FR3 z@$*v@ydU|3pAVlZz!(gpct3s!!m*(#G3R`9Ec~u|EOes1KVk@E_q}g25ko@CfZ4bd zAH-Dbw*-U0Dx+^z7b zTG>C8-H03SjdjXteUEQza4$Xgrg6{C9wp`pbq#4crV3=x@ipiNNM_yRT`|Q?BJ{;e z*vV8)_f!MKYh$V64+^r39yg2Sse~OR>ky*^z9P2oYWf;11+ca^iCGhb3nW#mWLxXd zQ8;^UmCO6Xoe`3WC%L?XUY^XMJs4I$bAdA+?&ULM=X$%t&5a*0U~@iN(#pM2_xoLt z60}!3*yl(|&d5RqCQGp=tHal?S2(fQy~SlVXMOP%lDIrU9oTB|bZpiAkIg3faPQrN zy}^fz*^khRYzVMDLsDOVEeH0yBNL-%^nQI8C*ZFqi}BYmj<{8P4gRFl#@L6Rhcld~ z0JsJ+GgZy-nzW=;E{>gdHs7C_Dt|@z4V)gsBk@M9e(&8 zJ`{F9fG2<`4qypYuU?J9&~in?%L}Mb0KW$*X`yDd<+pxjCo0I1&JdN^eoc{?{8qlS zrbmp9-P?5RiZVDfft2Lyj`wKYzdQDw5wDadPtV#yoRE8aTNegQ+q8_)N|4y9w1+TQ z8X7Xe|CA(=8nj2g3jH9Ency|_;|LM}dEtU^?e8#Kc&AJk8P}Abz^TkO`>TW+Qm_58 zt^qk>!Z4B0#kzr&-Q)@$DL{FQ3Bp}UX@Fle(3AP+8Hc=zP1HWW8*K~nJBf{#J;o2i z#)z8nH@KGj%Wk9n>>?IvZtHs^RFLj!h~dX!y+AVzH*oG#38D1*Ee8tu81|$W=Q6gCnih@{Jf1HHTTRNI26=z|FY*NN|+$?!Y?-yD!+uiYtM~Ff7$-=7xlRJ3e7dLA{O%hTnIq zvNfpcer0~!sj1!|UxSuw!D4%FA{9m20#e<*l-9uMxg5hnv*X}_fd`V`CiB?~0LARp z+(OP-;+IMZQw?}ZGIEZkZ^!Dfm(1*GV}W$t#t;Xs3c{sfXFXwIXH6>u2mXQggdj-0 z5xzd{gEa8JY>Vip#RNM=Lw$hr5O)qa+@Mu>zv566u+`Ppcn%xP%KU(n4o$-R9kU8L zqT(_SH;K+v;zF-f(dV~eFk3>{?nujWLV^mYm&UyA@!%#nmlkP$!-1*1-~6ZAZZ4|s zHdP9w2MWBn;2vBJ{459te38xKAC7+9C;Q8APFE7|6xzwg;D_HA*P+=K{4MeXKfH)F zY8sUPcN~1MUD6WO`Fw>T)zPPSd0I^fQt?WfIwoh?iDHRVPLydr;EzPrkw%tb7)y40 zdg`1_#c{%nN4+)7WIiZweX${gk>(BFDGQ1A#W&wrLC$o4opCLO*b$(@1Phk)_QOy1 zT>cNrf8emnw^3T}6=0KgjHQ$Kp{@F%EnBwopEt95@&ULFfLXu!Zvxlo2U#zAx0t|V zK5&kQnUx*raaAQg?6YouwmJV#4aQ$y{nuCj-&gnmAVJ<|c(&U+kt z;X(n=fJ`26zBjzG6R%t}=G}EeA6%|Y;n(lqJHU)WbM7Io8_tl%bZy>kHR%#u*}TJh zHu^|!tpc-)R3Hw(HAE%8Z_&sO{XdHto-s5HY^!2e#b>yTMheCyM8yb;F-+;*6YKGD zj0=$lWy#mp1Np-INE=+5p1V5F;EnNUMBW(WbJZ1GdEIT`^&L$DIVa_i@#su6B*%P*gJIs ze`ZQV!kY-!Gjh;z3ZDD;0;~g;=*4<7hkQ9jd~hRV+*fyJJ)KQAAODWEt6q`AV%}}+ zlpY%g>i-LkmnsB0!*e(QoYAK7R7aTVBWLi9t44iUSj&hM+SV<1xIV`dO@_VMZD;})Q*(isnS`lvxLkr- zr9aRj_jj^@kBM=XJ9Rgchi5ny^G%YuB;y;7L?!S#x!>Tp}C2MmSuHk)PS1;R( z!UBTK&@e{=lqmJd{M{5j%CO7B(#{A6YXwNRAIxSS10Y);RNGqv&kH#AZ1p@MH*TNXq} zp&Js$DbIJtG3HkE+48T$i>c*AAqD5y*Z)jc8@S|5|84Grxl7H>4v_*BFBHdg=}SYT zRQw1x!vKOZfZxI9-I_-|gsY-Ud>>lgD!U<4_WKY6`=0Xy6U;;Cf}ZxO3NDziD{ zA6*S!XFZ!Jun`97e=rO24a|0Cq}Tp;gvbVadDfw<3NYK% z47h&6fL}sJL++?;A>6X6O~6=Gjr|``#oc1z6$O%&+SeKz;@x|~n+PMVrsXvl^ir;6 zA5I-FGnMSZa2XEAc0Ci4f(8`5I0QMU(TL%f84Es~-T32p);%Hj{{RR=f&1e|Zs~~E zU?Voq2qnYgnsCbrBdgsIPRTQM(u{CUFR3mX=@`Lol_VhNZ=@u-jY@fB#J-w%mIz7F zbSU0|;|5KrX_0vKnK8OolOV<3p&(cxVbwWUR(t5pw-2SI<@v2f~%qc znL!J16(V}%lpd}GRcVe1YzJ6r>S#mA#Lq5(D0V`_?-D=9pvg`+x?y%|jd!AuEF z6s=}%5?U6o;Omr9w7TM&^##M$tIy1zaX5_V^Ri9W~SzR3vLy;q~_F(il7+qZ;7dYJTEDtPJ5_ zq4kbSoeVWOo1DSt$!fL0T_=r~r7maQeK{L#D0&Iid%2pv!vzR1UH!7G!5-rI%jIjt zRCE)Qv?fY47*1*mkrH); zzC6Is$cW6sI$hE4A{dQ9LrmnCQ6TqKN-(lJ&_=!<@kTr}) zRBbj1z_|iRqt&)-lSkW*g4LQ8H(})CE&DBu(tOLPH=gDbf(8jVzX;nkTmG`f>zZLZ z;CO~P{5DqZKs~Usc@5o30w|U7T)As8-_n)>F1rHC8%Kw58iA?abEehXakrS)I62Gz@qHatjp%B>o2&D6Y!BDlTpWm@5Q z!bh6)+F+Xp>Gx)5#%H!c+dten@yr zF$oEQ#K89w3#=v>`PN%wv2PhF8uk}s232yaxA5`@HJ^(Qui@mPL_SkWD+aQZ+8bVi z!1KlBeDl)gB8E;F>CRLmU}_3rR^p#J_m5-vswLyZ8>Nk+mCaH-$c?92keWhl7e$}j zO5&gkzk*g46ts5gsMvjNfGmn^PH;SWP0Ydm^%ANmJba9LC}*6*$pn6sm;@QX&Y9c#&)j)JAr*5nM!ku8HD}CZE55MQewtfuQSf&)|{}Fsv zvLB$2P&hXr#50^w(uQ(1m2LiF4!4R7w|&{oZ5Rp*DVfMg2lCBNMGki9H27O~5+^p5 zfcV|0;V$Qd>39)z34>ES8B_cead&b}hv%0YnkXqwnWhvjq1Y5LMV8q<=|gr6r{tQ5 z*c7=|{4Lw?r#Tp_4MCjD(lUUEZnj{JsJg9iG5Ehd&l3(8QH_WSv36y=j&6NsZ^CC* z$rA8h<9{sXk5i`xMRu1+=+JAjN62on^-+x39t5yfg;eqO$eEkW^$uh*9a3D>ag$P8 zO)e=lJX6pEoWdgDsH0O0Rmyqd3WOPsWjSH1N+JW(Dw#re;&?+4@p9ej*G-^kIMdKv z*+zE-fceR62P+NeXHPXK?8yzi zRU!04+zhs%4=>N)XlkF+H|Ukl9-|qQm}r_*VyUj}_-0lJ`MEhX*-XlZ8Ks^JE7H@E zQbP{#f}J23&GG#CbgrYCd5x)Q(x*t&f*^pak2olsxXdH(^`FyAiS^8#d!9Z9;_+k8 zY}CCGrf>ek4Iyceyslk=h9J&Lrrg9d^)A(+>68DfRc7=q1XXAwf4{yslp}t!YeDz>FIc zUKT7idcIbaY&B8!ATbh&GMy$mP|}p9g!9{VP5l}+iWl$Fx=zy+gYs5@!_%A51+h=s zTLnb{+dwMN{$1C|Omod?$xX8sYSMF+QZqrhktwRk#2r^R!r@KF26#;ia$wf0aYdHy zG10}6*Voh|SMKqurG9rfO|}v6=)0UM_q_#MU@F#dka%ZW2M?pU+Zj5!i=6 z$iAqz##P{k^7krQT!GK6;S!1rjFigX=e-NGoI3M0;UJ#l@>5NfN zJ~tR5+_PmPxkDrK_rR%eh)fRUCib1;qYlY3&hc!Ks|u6ypTbW4tMlAESem*!SK9q~ z#v)@8ka)!jB3;->`vj+Vc_`*9(zGtRA)KS8Q; z-)aRS>gJ>6`W&`8-et$K0LCQy&hy3G--c3v8VdvsRl?T&@AyjwJf^}A zT%iXhYBz*?VB3GZB>&+TZ;T5Pe$xW{9Y7$KG&B}G2e1NMhS?0+;0k=f% z&zr6>&DrSVPxH-m_GI>292?e0EApZD{4v0m!SMb)?kR`EtSlD%HhkRK_0LFzPBY`q zWLn2(^Tn#Of!5afDvy_!z9;U$he&P&!oJ z#0Qj!`1G<{r=>r46C~P7%TLcQSDE6ct7%$yNI5w&#h2+U%-r`GMp^PE)HgBs4yxHo zmLvF^**qej!dI|5vL89-7z(h@WaZ_fuEeFPqP)lhi_~@12UT4R{HSiu5Z4KpXdbwQ zVH(u{dRR8uN0ao%0ljut7(IN_Ys=M8qcJT-gZW}r)f|zddbUhg%J^4@z|L8Rna7!} z*Xt7-Z8Wg@phow%xKV8>SCxl0CW?6?6V(qs=_YiI6xTIns#4xotM?>VqX+_ZDu_nb zU)1cPxlz6{NiSJx89vuyHxeQ}r?n{;(l`)2hGY*nD!j&KP zd2sI@>LDX9+)?+|=88QHayj^vRPh}=KnK(g!GqqwVGPlv_7D`)Nk+OB8eW>K+BcU_ zYbPX#9`1jWo3p0>cLXkyI;8oofvio zbu_#7J*h*$azI#)Hs`o4NT8rXgsQ3j^6D;(18_{h-V0O>D7s19>l`zQVAb0zV99)d zeF|$(#r8ZeerGyaQ1V&ygJbQ%nBe|lPlss2#2->TyM|L zVeucNfW?!p?@4dhbRlyyleVssyPmFfv)pa3c#UmbG~tGMGac_7ApqN*ZJHub_LCr$ z`ZEye%0GoK5~@^*cjiw?tj7B|hQxI_z%5BlNOiawlA;S=<1zjj=!w>Vv5LgxzQ_1; zJxao%o1E$6POpcQdHH<3K9~08!fq$J;#Uv5?iR^05hY|x4XjVvuk53Ve;8F|w==#$ z?dL{Sl$#KvY{>jfVwBaF3gt_cc-OB-{3qRdak(0IKQ1;;@%VD`Y|3yD)F<1Mhg8<$7Krwhb4Az zFP;11+dTR%BO`t`tr{L#h_i^>t)oX_jGOrx0D<}qTM{)jyP}*~GoNV}9v>f_9KWQ$ zo;*GX#^wpf<@TO2E`9Ny;wRA+WMvcUtL)#xXbl2JB&48mA1{_4QO8|~HbKo|p)^wX zi=2^2T%>vc5%PQ{Ux5jZ zQj}B{bT2hcAS{&F7z6m@If7*21v*&Z+!BWrtvcH&&E4)m~9S)7Gn>@$W z>Bb~0=zgBgVOg}Z@Q?O`R*!IFak)G}Tuzv+7jxX3WRqw6&TW0^_a$mT}9y6NvyLo@@L!q7Rr3e2`wlyTW z#vKhC5zZRU7#7q6}AwGYqMTJO1>5K=)c0aQ?|8aF{FXxsvvpn<@KwGjr57tBq}fz=m9|60hZ;(#rr z%|gPLc5Se5lWqcoUm$bJNb^vluN5^yVQGj-^`dr`IH$|27Ut zr0MD>DmAYrXvxylNO1iz8mz&Y%u%HQbubTqh;!65oZ~dJoQ@;6^|+>4zEm|o&1sIk z0&V^q=zV86rRd;`-$LEtgPc;6zCp2l+?VqQD;@GIFG&{P57eZI0QP}~t5P+Z@KDuv z0JXZL`|*7A&&A4?I8_M9sM;t5)67fNV8$ig6717{sZ=#n9pg(MhN_1Bpj4Fwi2EiX z9Qk2TGJJ4G!bAr4r_rKu#bk7 zsroS>qfZ`;)n% zjlAXY+-(iNwWW=pt&g^tbX2#@$}P)(4dxrJyMOD{ETgtOeCVBT3_LiI8+HThPB328 z!0JOw22BXyW%zRcp-4l6ppW>g1-FK!;Nt-)A9Z+#3udJi4F}=k^#DeXFgluS1s|$g zuuo)2Af{}tj4?uXdThubSPNeG$!v!bzF8g{7&tJkhp>_LSja#oF=d8gs|`3|8-sgB z6Z(Kmk2?TP*!_At5JipafWpBzfmGN*8D14osk@h$m}176`%Xk?^>q5HiK(^VoL^W2 zM5V5x)i!l;OgQ3x)*2{M&o|0OfDsGd;VwnyCc*Fz?huIet-sm zgbkjLmZaI{Q7vR((OS^5rbhGvI?GQZt!FiZa)`vefnfR(a$sW zCrOa^AC|d`Dr{!2$${5N7RViOUo*y5T-UZ}CV_se4~23_2`c`46&i3S@^_;Oy2M>T zF-#%qcy0fzY`s!GEmw?HPARoqFSd*BP!CJz-A_qro0ct0TGh6XPb?O^&XI~O4g4{0 z*u`D?^y2d31TKP8@&%x)bqi2+=}uR(T!SYsH|;E)vp4&0d-2W;PS@S!g@4c=s-Gdt zwvEg_TfFhysDMNj^zjl(K~zA(60%0b4fxeB@YLuHM6PT1b6Z%*Bc)xnCqb15-)hpW zMsQ`2!?bNy0cJvr+8AizMAVibkPP8n0Al|PIJTsyRofP|sM4K|XE(*AHjrd8HAWqk+J^7V^1aD>9k6#EF0J4JeYO4b&A;q@VpM4m1Jw=l{V+Aw_)ujtYMiLj ztYH&kHTvoFLpMPHr?F=sJ^;#3Yxr~KKRv!&t-AU6qfPmJZ32Wz7afAy$-a(2@N%ZR zPZ!P6i5PiKam*yQX@pbE@X$8!blJ9CSHkWm$8`42-rtB#xO$tKPLm@sMav1k3kEb?#`+LA{~&F7*_er6BI^TjPFHuqV9#3SwhQ(t7)l`oEMty(-;|0k1T4}cp0P^ukMV2 zp-cLLdAJ1*_@AE0;?__A@1WC3c-cgWX_DeoNc(!+5 zX$e=1dI%s^mpy&#(hg);Pd_@S%CaaY>8~jz%Wz58(GM6| zguulKl9zazjG#(@OLFdEHM$8-mG)t{|7t}dr?f(%P*VY z2bum;(3%!1O&Fvb7(REyZ&%x<-VdFAA!J7~MQ~I%qy4yq`mJaE0#~tDP82^$?r4R0M@v&qIzVo)>Xam0B-UeZ*dTs#>(&!e|&XN z79a(9g0DTQgfz^c;Jd|Ju&Kba?D!8AZUDjci%V>QT>u&Zpnct^vKl;K5tHKrR;9Gb zDUe|7{aOmN9%4)5v#=y7Ri|+CN(%njmZ0JjGiyle&<1H9WQG1aVFhxdC?2S_MRqX! zhSwX4{P6ym=Rq=Y_-#uIeb)bIniaywhXX+k$sB0?9aNMkfV7gKf0LHmFbQN4yKS=K z6A?{h!0`#R;|LjE6RCkMZd6+uylh+!+qf0aG%mMT7MIG32|C9wPeyZNl((X-Hd|M> zZIV9Hh&jP1ueZVQE#pUSL;BSh5pN`#SkX`y-L4;bH1P7x zyzDGZM=axW7nve4L&vxEyv|dXAv~+{1eYm;Arigy?`nkKM)fAL`BzJ0tUKVFIFnOb ze~QlUFas&vNfBROIS>s`KFao_P}I8NWVyf@o)?ju2m$~>0)tR-#g%iV!AklsR(LIS z{3}N1Xtd`YGO@sqZ-x6b(tagqnEMQ`HdsK(|gDe2@L;b zx`V96PI+nLOB$=}w40bbF@BY~trv9ixYobbf^Rx{Ocr$pjr&?WLM8klOYcgd4rmDg zt|{c2Gq%s5`MOKlLhFYPRZ%uX7UFlXCX{;mAa)e9(mW`Yl~+vEHTIzzFv2Sor%Xvn zR2%S0N&>R_m_z@DQ**@M-|_Tn0E$>gosI)$o>>)m`-hf6V~!*ct&JbIa%wUwK1Q3{ z_jyY4bPY8-eysrrNMT8TQ&s#fx*!ovcxc<#R%dGndK>MG8lHA9LH1bRYdvQ8v@I>01{*m44d|_iO zV&(UJy1g7EVd02eHZAi^%ln=Bz-h|wIm9#5Vt~IVLwJr|IGc$gP{Jg$QM;TywG=#-bpX2^^~sn$TJV3BjB8b9zG*s4n1Oi>` zrW#E*m)9$Lv=5eJZY4R#mUX4vbDrXH>1=v2-TdP%@;V}HB)|G*haOuV_fIDo|LB}~ z(hZF2yAB5Q%)!XH8yGekAV2ud$MvJ?q+O9%+4-Px|G`?>&~X!^@@wL7Kv52FVocS$ z8rE`re#ql}1p6@Gj?`K6KK3Y=oV*A^w*oFs>$v52}1pna9{=pw22tF<3HV8f?QU>-W zoK}v7Ff0%f-3GzW1(AvG%=&NAN)IAoG_8gD2Sez+)DLWOvVk0S_BIIq0=GPD?TA9r zvM%4`WFtpUG19@kCcYRjzFFL{xjsON)vWM`ToTM}SZFEWTZ8aL4_hB{qqkjHN=tv4 zVW&gQWq6uTSi%#c(pV=Kkmj7YZ-e092Eo4#f)ACg_b!RayXAIA9ywX1&wGa1%VnW+ zb?Mb2L6}(yO_TE~q(ArT4}#Zp*`>(kVP7r;)E^@VK8xH{2ODC1GNwsU}Hn@=Ej1>IG#a%jcM69;K4 z$r#_IT^lT1cTHgM3oK|J_L6EFdQvR}F~oYLb{06pcVL0fJ|H6X6@o~i>V!b$dy$RY z|0l7AUbK-eo1i7t)kwEN@E`73I!w-K{Xk8c2w>gO&UUR#P)#gK)puBEbxHRly$uC2 zsx}J2H1kq57%!z;!o;*+Dpk!?#|^}+8uo)yRTd!bL+vF(;HcruQ<{L-&$_s~fJMPI z@-_%Q+rka&bjYGNA`(DNFX4hV29rZMlCc2rk|R9zshG8 zYp_l%p;HHI^xFi%f3`S#I-OB)qb3o-P!#bWiiq?(!Hq_k) zyqa#1BGRvDF+T%NP>UfF%|^xIa={<2xBQchKCM;AG-Rbt&Tb@eTLl3 zcIR@=E^Yu;G|SLQAwyE%V~SM)7}r9(MrETfY$S|_pJEQc6WST{qbc=of?pblAZnc7 z4JL*COqBYt1IsIvhmQYT0aXyLz&G%kUq}<_cfx<`VZKwY;s*3WaU!7?eSvpm~BntnRh}DbFxP5f(;kkj81~?6tWw ziu9A-juw5hIt*{q9MI#py-;9y7ImBEpn-g?n(F+{Kw4!f8cPUq;TINA;(noXs20KI<9+3Tk`zR@^?q5{W@VZKtCBq4Q|sM_}y&;wmwuhAfWHwrg{iklW!BFWS+>A z(8A87GI^lsTX;nK&v9cMNB3dl>zyB-;gO}tSxyG5<^Bj52lz?g2 zZ8ivDd^H%m#x+p8DhzS=GXlI5+x~e{@Cs?Wmq%pPDV=rI;#)YUs?O6FCSTL68}O)K z2C2~-q>rxMFKuuKbera3c?tShg^`NbEc2r1;oYxzmD}c3fQXNkMy?T=ML0SD+P?y8 zEuSF04_*9hJbtBH;069XlISXN2T)Z8?)iP`F)ku+jV8{~s#ph4FBxQ>gM}J+-Wq{D zirx&ikbBzd>MsrDG2ykN%-0x=XGi_)BwbwtSMmL4f{gZH$^G{+i%Dk?skCVY|D^M3 z`{$e6jTEcBCxtI!pZrS-0I0{Qy1HS$A111rK2_O_8YikWYuJSN9I>01x7U1F8@*Kp zDl#X$Z{mBY5Ku<-I9j})&lV#jnQ``ddg6{iXIH;L8SE*`e`q^q<{p{>Rds7X=HygA zUeW`K7jK>+Xp|>le{QRAk;0n#G15(io|1=C!2^vcfn_wKZ!XXcW2Ufs%!%}wU= zzM?Gen4Ae5OUj#unl8tj%B#){+`nM=lu5AUHgCpa){X4d0Zt_=1l3%H4*K5O<}XMH zRT?7=`2b3`{?F6-WbvNb`w!1?rHIqeXg==b>lWdGZu4fuCeub%mhLNj>U?43;pxi* zB=Dt*?b0=rB3kCg4_@;#d+%Ouvl+y*cQlMH_&bbs99ySxX{v=`FTa`NYGw)jJPOxG zdc_Pu3P?tfwS6WQ$R^OBW3q^wL>n>VjlU6<#<4;T$97inYSP?tn9rhe&W+&p~V&|!fOS=FCYzvbJI=J zS2SUkoOMJq)H+b^`woPzV#}-0vXZW&pX_9kqD{F6KDTK&OrFVp7@|gG3lUh}e{cDH zoZ;d|G3+)CM<5@K3^YPd2o+^zLi)1PaQuhA<^f{*(-{E)=O#+k!6(4bHeuN};qn)f zhof0V&8`WBw|O|c4Vh8G8wCapZ%%LXaLhNic{s=nkc)ubAEue~abinFJHa0T2XFIm zY(5%ugU%gLdLsI}$is1)fy3Srgz7;CTolAAnE|oa`@PMy+?DOZ(oq&-93zH_? zXg&|m@N&|(BsAi3c?=Y~D8~!=Cv(@@LBw9N3a=#gFx>aa%X0I~5UVN*=k)u`=TUJ! z&nvxleY?8mi(hXFk5nE6zisM}{i>eGEZ954$IkH)5(K{T*T~p$yneix&APF5RkNyt zx407G9(>O@pF`Z76wzhjtWAINroW;YdabU;k9{Quo-a^P^w%zOmhBm@9yt?}hDE(Unro?Vmdz zG94j5{7nuV1Go0TZMPh?Jd%P!MlaemXU_~#pMZL5vs;K{X5z=9DHYynTooX}dl49K z7pv|cE90E9ez=!?!NES*Hm{3%{ejtK-c#@k%u*Vd@2k2@dm5M@?%ey~50M6j7IK>g z<~9usWxw{$pE*BVE}D@_)dS_CWav>P787KJndc^h#OPS4bost4;`od@r(${TWWe zR{@?3(gZ)LuEzfJWTx33#K|MyelRCZ1k`_mTs7N+Sm^})z*Ut6toth~MmTo}D`Sl; zfUC=iEtC@JcSFUu*=s_v?pPoB_wYsp^0jd{f;L8;-)675ZXk*ff+7TxEz9t(hL}1K zXx@(^-m&-_NT;kZS-eRm(a#o=Cc+#X&;5gDuR+QSM9)#CrGxLFNi>Cr1C_oR!M1dp z)8_Y((*`Leua?s$Nj0Dytc+YFFA(K&z~T%@Q=)DE9$Rb$A{Zc&V8R!MwXiwe>~i_;B}U?9>{*~ygE0` z0G07=TX@Mqs0U<-ftRp8HEx89btgP#vLzM5^9{oSo&7&Jz~yS(I93)G)vpQ!4LzLI z>J>vPtxTARuYsOeFcDV`p5kc6YEFh%&%u*tr~Nu?G;9Ny-roe{4xxUHxh94pYyR*wapu(Wh%};6R>bY@ayj zL2>|3XAtSuX$Ai>`f9uCo7?Tp@SiVu_xyVyfUU>hyt<9PpBA1~*`gZPsx)iZ8f)T~ z@N2*GbV3jA6IZ-VCsacS^`MMY1wqj4V>HH07006R3axZ3S1Jo|(Fd&7ii<8U+UCmo z1lbzM9T0KRxhMR84`HH#wNbFdy-hN7n`Fr3koTxQXm-p0v3oBPE-*Zmv6j=$@a0NB z%E}O8I&m*6xHE6@y|!K^Xp?nDv`vcSwaw%sNfif@*m`v{1Nbdfn{5J%|CR{R$#T3bhB z^s#q&OUaj;WXO3_r^$KB7Zpk)5|%DfLu*F4@5FDfnc1(*r_yz_uql>dLT^qk{c(~E zZR4unu%k$;tN7L~I#?d1l zUo7>_C%7%16ZUMa!-0V{o#oV2*;nD{PF^N`2l-{1u*UKv8AFf&4DNKaIwQ2@9akR} z29>+81YhcdzPc5Zk}Du}aV^rhoV{g^w^(^Tf+ywPuo?)Zjycyv%6E&mU}b?f>+$?- z1=o%yl#H4hVXM$B^O-Q|a|YqL%}hiH_6<&Rk&{knBPBO4=v5W-fK2-C@_R^9O{@wLs05R?@hHL%6Or)o>{A@z3{%IY>V(H}lD(EzScV>m*=9^m+Vd=+SE_oO?U zE)a$s6r--)Zc`cErZO6SfUt-kJvFhnxKWM0#dVqe`U{EMR7SU{j5eeBxRaxfJ*N1e zR&vsiDouE*ysL73kWv$$QG3s$ft9^q6HtDJ(y~S`ssWRV*APhU(eI&sg=?lVa!LD+ z=WiBGa1~(MsZqn)nry98_uTBq1$=mCtVVhDRAmknmvpQ+l3VY%VNL&vbi3NzqN*OG zoW{_onjcyQE#Jq~#*bTBtuxs2FE7uMq(Ha#qe8bt+O{k;R`CV&KJEftB@KrN5pFcm z(i`6J+}WZe(&F;gL`$9)YA788(wxZl;RkMcP;Qa;X0Ic_piJJ$QwuP2)nukjZc-r+yNd&csbirzcV_M$t%nU*D zr_K_UINlD15AHMYYlIf1eySl~RCNbgqRx1RIrNCdtwVWBq$W$$4{2rvT(4YS&@;AK(qettOcIa<$kj#*5j*y?%i+c7-;4QICr3kH;pydU zX5{1^e}q&bSu~n`MTu2kkJjB+L)#e|P0!||4LH1?**m;?{BU8qST9Fo2$}QEX8G{z zuQ9E=BQxIU{rWDr;@6YK_-k3nZ9bnbA)gN^LN9@FAerYQdQ>(i!|b6;n7hRTA~E>j z0A>yrwiEoqIsAA|wm|Jh3za_d?DHoQ9^Lpc+m`r-b5kKsy&0{v2#nM7?1*Pl>Omdv z5#*BQ(UTwO58{B)v&w$JMut|glKj(x(IyIdJi8=L?T@YP&t&XD_UKWzhX5bh$Lg9j z)j?jPa^pM*zZ)mgTUE`(*4;8YQx*^{JDP1MJB!B$L?FS=ax}OmvWQ^GZEL%ksiQoZ zdOOU(I_>c~K<3`I053NYz&d9{3)pMWO4u|D)~%~3WXzF8sXq<)?dzyPue3Sgh%I{) zwveqMpC^y=vU3fxlW~(9Ww#^qF@xS|Ee+oM*Z;m)!^_HA*b--3L&LVz-Z%JbyRsm* z*vW&nz?AC>H1`h#oYsK9tw2z%G5~GTE9p@%GPZlq;aI8mAxHs-#iiZ;#YZL#n7@x|&Ecmuil<0t!ES}KtOeH3)A?lao|fi6DD7Ro zo^;FEbZm}$me+)ENr`?4dlo{&J(-VJAD3iybeD~u_y>we(x z7H)^9VOxSNPA9QZxj$oBRtMsp%6Dh5unVr&65uz3GhD_NzzrJ;s99?ZcTIS6gDCSG z$gKp^42&JjRH+hTmBs=2N^2^tEO~9aKVMZ0yN)E95FKuOUM{$=^t_kGi&8i(dkaJOn@eNt9(4sHHfLkV!>{8 zhSAn}Tug9Gh>c>!cb;%oT=t}(E54&jWWbdlP4zmY@d|SivE?~eLO3EILriiA#BN-t zlMaavojLVzMJ~pJpzP&ny?(z~L2BU6d>cuE6z>YN~mikqz+=J@bAl`$CY`)XK3Pp7z3a{^B~qGwYus#3Vreh$s_ z+rnA6uCSDSxQ}RMjBA{9-ZSz#?1hgT+^uZ3*4BhM$ak}$##~qWD&?M~zI9j81HutoAQ-j~ zlI6p{(*lC`c#X6gwDCX;O4TVbB-Nl6GqgxDtHuP^g!}hnT`)=uw1Nf#EVlbHuw1@} zRyeup!j=M+NfigGC5sXHZm}!nf>(u(n^zNH{F2#Y(Azs0DDrl@6)w_3ut&<&_5)t* zR2q240b!)R!XhbDoe-3KFS54>$YgsZ+>$|>04UXE?EQahxtR$$)WFTKB!4_}U>we& zg)FCIC=Z(I;+h5^Qq}x4vXb>C{XlZsDK(hhZt}TY6`MDog(sccgE#?4KbVsy0%|yF zi-w{M6-~IR>N^lyt=auZU66sWs*OTIy&tLu2ULzVooH!MH$7 z)QmcW@zGRRs%*DI+^T1%(rVbTvY0MRZ41crfU*P5y1`wuuxwl|S1+wI{r*`{l80@9 z4A&Kq@ac?U5@J*%WWq)%8m8aP)(iecs#OyS1Z~nWlh5&xUTJ9?E!EQkN@HXbZf zZq~ASTvu(LyH?`OQwmSx&Z!m|5QO==2EX4)comnJ%>jFgy-?sFtY`Gr%9oa=ZU5ycqnHSG^^6Q?jCn5ipNIw;1+PH z>H&GCStstlwiCe<09gDy6vS@kqgeNEff}_T48N}30(@1!276U4T)O(e8vW_{<;CkI z43Mx8n;0e22?Z15*=%4kgh&2`iP<@tO(&<*nSb)9KdP>+g)-boi3Dyn5R0${m8NBT z3r!i-l9UU(+~mU84IAz;N$k|2nDp2e(jXtP{}l%~ElkB6ZAj9V;9LQ*dW2T!J?3?l zYJ^nwTu6U?=3Qyn5D$F-gn@kj!teu^JSdB=ER|arcn+T2UdU4mMGw!knvo+V@6lwt zxxGxYUm_%f$Bh-BTzJ~zxD_n(V$F{yupm_N#k_{_GnX$yi}?&8$E-3Zi2MxC(TA5ydivK*^o^?r zQK2s18>aPIb}v}^mU|es)oYowK3OP5O{IonR^CqWCV=9O)c0nTy563b4%1Ls<#7&nv|HSo5RM@U2jme` ze3bi#wrz=SGn@`U!6jttcWeDqBW??@U~yHL{W}9QX&r&h9zKrTF(Z10S^;A~(4Ot_u?dxaCnS`3$@&&$mKt&0HSJ3emErRfnsK+6qG=Cm9{nI>bbptG*en zAfZ=lbp6kw(2KvbpWp_I}Z@~(L|dWcO|)6WOfHZ8lFw5shebDziv+5)cU z)A{t`^5UfX*X0zKG5EPy*>=&BRIb637i*$Zg7VKZ+@>FOO9YDPCNIQ16ezACO4~+e z_kl{T3z(eV;6dtU{quBl&a(*ZX1QLt8TWR@D6z?Y)I-DOW@3~)+mCBp+f!GCx7PiP zcG!X5N9zoNa?)GA_ua&N1l1wS$J*peol+n`2B6v-)} zked$8$RElJJf*@-yqs36VrZ6_gu8*pupf%PDGgMGi5J2RvFfYl)F2jg?S7#Rf8glw zr`nSiln3f+f9c9giTk6MusN^7}0Xhphy~v z$>n$xN#_@D5O)I)jTsq>@4rjiToyu#h4+b?bj=MC$M;VOAX7kFs>^Tkw~6>kyNFJW zX$2pm`)a%Do7?Tp$eS;C_ZY3NyN$k|JkchU8lwTXuSu!O&Ngg~MKd|TKb?N)CNEbA zUCL9QEG{Xk^{?=BM(CORr^lD8RW~1he7u;T-L;7|idzl@W%l;%_r$JL-ZUt!auT+O zWSd~E4XY^?8*8jJjZ}y=%SieqK`=FJSx?YQ882wadlIsR5RG($I^O8T!`fq_+S2aX z*yH%i{)gxf@8`3{Xma$(U9ZzQ)Tjm}nX9x`VGLp(!Mj0qQLi=HTy2_?s!l%zJU_zI zyIZ|@^K3dNLv4i4m3=9!sefzSR4BGpIF-Z6WNIV#(l;k>c}k+?U`|ir#;|zTt-Kdy z`F7IFRbN-YNW*i)%IrN}dHKl<`q%9zAk+vyLqmVhU}&IMnNJrh^kbB)@`@C0aAjjS zP>+ywIW2Nan#)Y5e|eZcwUfn}+`&LK6L?!Kz6s}@d#dbJh~&vEC4!0NH0o;;63>LQUxGI}h6$>>lj-!su-9 zbmL37AbvDBs!(#jF{BuUGq3WoJST}`%`h@Fa=oi@ok8&|nHbxQ8MwvYmqL>-%msk6 z(3Tv7w@-t~Ffmdj#S|i@C{$7q8_Y%E3d%Gye|)GO!wCXXx4RDxhW&k3EUN9)WHJij*-*2ovaMux+d#Z6k7_RyCqqAtmq4@EiS zdoi<51x&&r8yCp!1n=r1C9VHiWeE?zl@Li9CDMak{TNr2$5tyG#n;MViR}ZyA4C0A zb2voKRk(%6-L+0l-6NYU=*UHng zOPiW4W64klN!uVl8%E&#(Z#k@_ocvdt>ip6Zxhz%)1~5!S#>90li~r`G3vM3ti|t- zVgr8A+MKt!M*x+T-JG=;DAjv#>_a;{xMt^-#}}%ypc;oxvSB|(X>B*Bx(duVoV6(lY9nvwppH^PRlyoU}~ApMD+4< zH9ki!D|AvaayKov(*Ag&7hbJM7?M^<%;gl$g!z@|pIgKqYgjd=(PIlvCo15@O^~s` zotWHh8qb={R4MIf5K4C;ZNbbp?%0CJ@KFZN(sfxp$^NCw3}nfyGF#SXt=%#|iu0i* zwnwV}uq;wN8dLH^w=hx!kr<=9VhxzMI-yfsze;6obMJ>wzlgUZ8RIMV*mR|Zx{VcZ_-S18*r(LilFh`-YlkaOPlImd;hKUaQ&v{LL55=QZ@2eC?>Gor za}53vzJzbB-&T=n_%PHmZs_}o?Mh5bgEUhOZSNF8f3)=i5#sdKGTEze%{iJfm-%?p=^ZxOC8Jd zr?9m=3v|3z1dSxuRBYJ0KMO+H<`q$IRRziHlRG--RuNx*Z%%r0pLm-%cq z(dZI|j}8*2i_#+!aD`_S_HJWql0T!as^oAs(?@pef6J{7c4Rku&FVRcNUV1|n&!qr zc-U^~MHMS*7KK~B(^lu&*>WDnyBX&xHD(j8)6gJEg~eN!7PJ4AuU8~(kMJPv&?=|D z42q?^;yO1i+g+#RQl>OWAKtYPvs$p0TPiu^EE$gC1%(2NXp%%${z?ymguvahtBdAU zsrkzt{NH=YqVQ3w?ie4A!kboOLQ~$) zgW*3J06B;X^^yXoueJPHDJ%|0BY(g=TL3v)Ygr8uV_s4Nw*Vz>#WRh|^AnR56TTh4 zJQZmL!EWQwIkh&(|YRnK7--D*J*MnlR2KNqKIKy zOkm8;2fMJXn?#7MT9Y8Q1`lX|MRU4h@Ps@Ev?C}psx8=+D@rW-@-8rxi6S<*=4+D9 z3V~|eY1e3SIG_Bum=hbHuQ&93IA~^>tJn!WySIxpS7~{sgNHk|aSnrccUW=d_|xjQ zKPeE281;=wfNanFw^>GWa0rBsc)Xa+y0Lv(6)ldG=l$0_?HZ?#w2>M%Mpb#?UaZny z4EMdxUK_Q%zqJX(t=t)HGum8&;0!Jd_s?2Zo%UoT-2Rjs=XSbZ!-&~?qzE-S8R-bt z4CMHd!pr)Q!}{V-mJ;4!_r!W?cs0WfXQoIG!O3&9!U?8iY!5Xsc?n3~S{;JbNQnqf z`=sCjxYG|43qK1&U`n+QSSzPhH@}$E#a%_wXRt(@cJ zLzC#qwj>hpD{_!ydT4^0ZBqvrvu2qv;Ubus4cJH#t0ir>Fl#@r5V1Xw>AnBOf_Pyz z?RWSFI1w+3PWK^H27g_wksjdhNE6O1X0gI!=2qq8wOfo>C@cZG;=GXYC#*WClViDM zT<>_Ja*V5_|4O;HI}5$aM*(t<=osIH>dUecudu8k6Ly;HEnNh7C)_~+-Nc=Rc%5=c zVvMS*%|!}qWXh57(-@OeSoC+osQ7r)M5S?~I%S2F!Q0|Xjo#t6(&$a^@UD3DdOE`k zEyDGTl;C4LIn9H_Iz-Q)kYtE6kFfHjVf{RvPZsZ~C0ott{VQx=_IVxeRvjxn_Vr6x z!9eXHl1HY-oh{xVrV*<3SUTj&(@5I#=fo#hf`Kbm>c>%5EbULu| z#e6baeT>ycLr#dIF&)o7B8MQZex|qvU`!LCXh%4nzgaZFRW?K#*4AWe@$uxx#p+_@ z)856CpeaktN^=tEKkOg9W+ciJuowCvj%{fbdp!;1aEEDiiG~DFyIXMe@ddIEYV)>D-JWm&F?MQJzUM?PkC$HYg770g6gK05Dob^OHQO_Ui z8WkiOZ(hF%=HEQ;yc|#m6DFSEv=W&-{J~wd6L8wXCW5e4Yx`wuMCfOZQ7O%`tVCos zoP$jzKPw`LU`bgW@StklWW)%~TL*6$wl$U-ufr&f_nQm^Hkd{RNXj3crUs7-EAzE? z1#f4l4b*08YGQhZh1~Z!IBQM3ij$e-g?*3p@RP5^Q}P97L?XZl&8(oK54$qixX7-F zUSaxw-fhkoFrK)TBfm{qkM@j_`9g@H$!Gtvw23Ur&1(SmV=#by0dGDN2!&rTs|;=? z@3&n{aDWHKlfm$Tzvj+ymz?0$W#OiSOotCVkaGQjinG3`QtsF7`>7#srri#qta%02 z76AO4`*jra1Y#_sa*HUzlza`W)Nd|D8wm&cwrYWgD2iTq*)w-q-XB5^{C2gWs{me^ zwj)V=xmaW0O%O8?h>!CR!5~nt6OxdGi8-Uy!<}Uws%3@Ex8F06YUmk_RYT3F>fwck zf{zLp)p|-&q(dk;Vtg8HK#1SA@j#D-22UOLAwvGvr`66Aa-ktfo=?BN8tmUYc=*ek z%ek?z|7SPY3|9a3X|y`Kyr6*kzdU&L%MahZ`sLoMyCVuy@}H}L|Mp+#U~;*9_``Rm zoBL@uo4ehIB`hH8|MTe`lC)58w1dI>5!t>#OM*#G%OK?+XU@^bhxhLd7E440Hdg;V z%e-Ez0Kv$1b}{+@7SvrV5%vGudxH@U5KHLd>xaL5!l1Y?fJ4#V$e#TXs1Nlw<8uoC zvm9;CaRT2PtPQ5^tuM{lW6v+_A^d?^>0AHu>aP5bz8=)i>d^l~;c zVruX3Vg#p!uTFfE_4I6x+sswxhkA#EFCQ*U{q=H$Fspm#o6Yj!*I)BEcSoj^(fjpX zFq5w*i}BYoy|2NNy}W>Afx+(_Ig0+>xvPlaHsN>+H{)D;T9ZEfmFm!u%6r5$I~;3Q zz0!;EmgPaO?0G<+o3|*qE*6R(ijM=zD&|BeEUq7PJQV?#^U)wv7Q@w@pV~lW9E`YIS(<;}k@=+D-R&7Z ztz*Czbe#pBeg2VcUIt!fsn-D2ts!wbS)oWVybw zrvnp^4{{0Dkq(PbphH1mE#`2dn3DY_K3wKa+innM^F*kW8^--EhWX?0#k8LQK{8gu zr9tHq`>*SZ$ME_D2U2#yK$D<1}P^-;HAjt|PYTD_iLANKuyWB%H zd$F8Fizb3hF$rWC7Fz2Hij_G^Q(;(}1TBFhEENll>Lj}pjSvgFZ-!skOrW`s*jBVz z0XPGyZ-S=VhoGU+Jc__8wIJB+2vosrnjsam5I7yvD5x?mCzBQg zoTSNhut^wZpZ>))1tP3OXnIz>ek;5YC%6pOAd-jq9z{503<}$3@W;27x$naunli&i z5>$(9$10hnn#DpBU-Epc34)l6_hfajQ}5$6yNYWPq*PV&(`a9;H?Vh`;_N19o_=a( zGOMzgd7mDZ47+y_x*PLutoT$ekwbl;Pk_@8`J{;g{Cf@foP=$HeXe1ilCo4$Q9Yh_+oo!m%ZAdmw`?f$a5@bA zWi_I>cny!2lU8PPGIGjy%K+25<dmTUnAJ@j2h4|bgV1|@QzfjU^wF5 z@o~M0=yMJ8`(3Y@%qEl!4Qr1DPTT(RtN^Z29IwJk;$Cx zz{a_72iMok>_c7zHM#`+)FCP`m$fA|!-8qzLV`3aQa@r>pMx36!jie(9==O!=w}5P zPZYBlOw7un(6fO-2t!1a^wQCG2t*^r*+P&`vI1k}85edLqgMJAc;z0^(qB!xu|0fU zs(_j^ho70=WU{n+m|HPJ2SN{oTAsp9&QSrY7ti<5Y@bgTQ5rVAzkF*>@HKbfU#>qSeO+F zVq$MX?Pku*Gra;JxoIAVS;pd;)Y!jUeLFltJ33@TMm%h>5g|Wn0`?8z`BwbGfvtyK zyelAdgvCeQn-M$}VnnP!v8Z>r>m_AK@$%g$OgqQx(%kzIywsBMJLk$-Ud-yPy|?r= z06kU%51`J3E~og(Dyccjxfo~0@Z76UTNAbunf;U>4bTsmsKN8m@|np$n$vVcvQJyq zNIzJ|z_cykb7mB}sKv}`{hJiSzr+s2L8{cpu#($$o)fDwKFeavu@ULw|GzBj?im@GqX9U>4sgUc@Y72UDyt=}XK z8uwv)*tgR{jR-7^YH*Xsl$HiHFY+53UxJka37Y*hG-m{}u(_Olr)A%B?ZVYG?b5Dg zc5Yf*ZE>~(7Ci-P!oOqc%5@SE7*)|0tyY-pHop^i>nUvw>!5KR&bVKS&dD(lBN!v` z`WgI+?9+s@K};!4PSp~?YEx|T5vK&jWtb-KrwLA2rvOSowZ8}^T4_c%AeRy3XMAWzpJ zBy$aG`<$z9L7_LetVHbQ$scbXBUkje4SUMC^8gNzA!=wHRj+1SM7S{oxbnvLkkNy2 zOh$V75fjHJyjHkz?!C(MJUcr6?Rha^{lqoqxsuC^*WK#H8~Wm*B5@gPrHDbXyn?su z1w9cwC6Rzwe-}&hoGwpHz%5<-c#gNGK}^|DcZsUwk&{u=CDM3O{qWtH0|xm7BSgm8 z=+Q@HV}aK*jO7Sp!t?SEJx>>#(ag4?;B~4ESDh{JLW;bx?NrM(;8(m{cgD<&c-Uq* z4^7v}6F43lzihHapDrA@;FeuzpsA0owf^3)g#?pETOAX3t@tLh*@}46)_#j%VxUJ* zgvP?m4!(&gIO!oGV}ry%271=Q2;OT^afBi2n7thUIk=uq=aeBG8BXFkKU4b~^oy3n<2!-0>oqiGwSqdt}Qs zY2NrWSCJe|r{LySNnPj2Ube?Mb6F4H>j8YQr}8u^b9k23NL8Yo;eA{*yGNd_C%<6I zvNN`L2ODGDT=96ugafcqxciQ*blePEShmpfib+q__;Wfs0iNOc&hireozdQ>i@f^Q z+r;x8F-nr-I!AfF@MFfPmARf*S8iUR(}19F(*rhnET`RlUC;jZB5>8gBTYme+v+J= zHGrcVOj!|{o}}fhU7^U1?KI)nAG`N%#n8CwGk+YzG5Yqc9eSh%yx z2rM7)9uA`HV)3raerp5(x7`sSLi}wKLSYkPHgLxGg@I?ZFAb=}mqKx1;FudfVOU)J z&3Ai)hEj8sfy@7HK=$@dKpBeOHU%txxly`%AKP2?FYU z_uk0DD7kNH0+GHXGr&;-JN{-Q^c;~Am(#I}M;P5hxtl754m)~b)Cb#S@eJAxWeD5L zU1%pw6ky$ZA`4h8mXnvrSK>N@y{MmFg(9lYM@Mhw=z~vX4gHXEI4JOO%Hqq*)%bk0 zrjue~YHdQkTtg&DQz)3PL5N7YLp}yr85Xq(_k%&tMPTt@Y>wd&2zZpijwDU1Pb9Kl zc=8czE-x$?yniL74W$+G5<-UDw4ks_%uUj-Rw>4i(1H9{e+HE|F8UkGlXfvvUX%kA zz>2@fYC@S;9c-9jniigH7UU>*APQIC_Igi9X<|7p40GomwZf12zz6Y_33bz?XY%4h zfl192y$!yuSTGK);sL2b~5LdT{Ni3}u9N zNPh*}fa}xP&u*AfKt4v5&>2~Xrc9xkfK%jfu#uliZX^_`DJdkObR<*P3^hd1zKao! zC1rj*Dzdi=dYV!iHr6vmofAPJgo2}+2_;PFk{ul6=JUAb$4w`rok0e}@AzyK zf{q#B_vv*Ih0GZYeWc#pSyDv#mrn^9cniv9Ywu(WGh3^2nePX1d8}P} zo>qT?Cw#;2902qszlW;zC}{8(u$q-5E=@?+oxA9ck2T~b&c~IBa2wR=z$a)hMC3GU z6{_Kfqk@Ea8(!fvN7s5tlZR zQa2iGovuwNQQuH%Vs5)8Wl8P!Q_1ox(^#m=w3vfhIJ4&rdWy5(JVQyxu~Ua!qQ|MAROdWhgwbph%CCEY!Ipn`iuip*Sp+C%K_a zNC6ZN-IO!S3KL*8_zg^i>8vF6>VUGc`;zC>1dcp!xR60lS*w5Be-3}EQb3{d9ch4v3nEv(Y8Yt z*2?Bx!g71jtq$L>t;X;e1ptB%=;?H|=nCEI;kv3hwS#Dj1_5gdr`v6!dh-kZ3|5!& zyFi{QdKGwO9o2|mH(HM}?`bZl?cSZM<{xa65pkfcfCu+Ypq|)|CZHd}2~`sOBH}`2 zAIXwF<2M+GgtDZv-sw~`rj_JR5Wl;3h<`FR*3O~m1yanQ?}1M(+S5Q1za2E4bv;|H z@eyB%HEUmBhRf`OMQif`uNzJsvYVSsNq+1E1%EwWo8#@2j0y}M!Qw)8Kw?e9`_)ud z&L_4=A2ml-WECbxU@|?uxtt-0-t--km6T|kYCpAUn;NRfBW7B}gM$4tWctw?s@kqa zRj;3M?7^6~B`3C_KYL#i%Pw^ZzXh{j^tlL9ru+o{rk|+MMDo5UMjtaQny1cq8o?E^ znz?rJj19Z$sW1mKec=~8*YKiOr45G7%{=HRVOGVs=yYde=Bz(Aa%xP-WSQqhrABnc zH>j5K!y8mvwxjFUP=)x$Q%w%Oo=;U&Ne^n$Q#rTYH`OFa%MqSV+az1=v2-TdP%?$}WA1JG=-njq2B%Dft|Z;xkJIuN6ikR)=J;?!Qe(F z5DcIO&&OWa`4kGnsEOp1tesCIJ4j&?H##_wP=xfiRUr*MJm3Ti>o$Z!XVOw?Uf5Utf94 zzYQr4i^HU&;nS%%B$QS_zHre^a4RZWYn$!H#Lw4+CO#>j?1gDhZMM`ZUnlHp_CZ(^rafe%Hh~ zdvd(qzjNih3qfLpE2e)X3$E#p^as4-PSPxLz;D=)3!$myeCF(gIm_Cx2heaqKr~ zWbtU%oVb5lO&{)2-dMNfug^_QB&Y4Z{&YO~_3IJ$^lphqB?I@gD74&^M|0=;D3k4{ zOB$8tv8H^sInZ%BTb>q%PHfz?geftXU-tg$*9T+zU=OR-ZkhV)!%sZ-hkKYt?0HAF z_yL-W<>NjI5LJXcqG0sHF&fh~&z@`Zd5qhtGdNqlS?GC4sdSGJ1k|bh1ZHI{5B7jO z?2yQP%k5gN@N|We|7JI;G|F$ZO?EnuC=I;^)3)2Cy2)7a6qeYE!5dQ9S+@m%INQ8B zvo$xm;bcvJx>)hP_wDuu)xZA4waIGttNaAD*7rRc>~n3po-SyUeX&X73nx(OVz+51Soh`#6nH9p{S0^cl!*RCb(B}R=Y_(!vb%1s`_zjmY9 z=KS$_H-6i<;pe6*9(;`78f)2dF<--~JLw*RWtWIN9^`Xv^yATN)&Z9h*RGq7>D{(k zsXfnXGLNd$jY?8q?T>lV*u;EQFPOu#1+v-V(ozqtYN!!D00X$T#-;OagaD1Pq~My4 ze_Nn?G1R-UUd(R0uYQQnwXJkB1~^9BrNPN}XQ|u_F~V%IpTETjf&T%C-XmztXJ)@3 z{mhL@jkpwV7okCO74b`vQdE~Egz&Rc^Pw1J(vy6ks6j!e^66lTZwVL}Rj!6qC*7rq zI1~+8SK}sr(a;CBM6v9Ep9|Y6Xcm16v1uDz2_RX(h@eii!Pnc*)79t=Qf$9m%%)?! zIjZmD##UaM%3JPZFwp1PKgTVO7UN4&nR9G{ztIMY{?$n5!J-O#7t~RENB%!M+`HpB z>;({XTkYZ0HM-7T^1z>KPldOd)0Nxe)6-{we*kOqIVf?rEE)}TZ-fFYJIQ-R+K4_z% z9(>T6O2$eO)FlPDtd|GpAGds^Y;C!E)6yHKKy%K_QCl&vMLoiALay3^XlI<&Nt8o9 zf|Lq>a8@3>{;Yn*LZlTDCR)L>r2kt$BeT5$Tite98?EnH3*;xqmy~s*XS-nlv^QjW zTbee0;2H1C9UHS&Lhjz#B%1_JAEZR6Y)2CT#HLQW_`M(m!ho{<7^fl%&>_;FQKQJ} zLSp}VqB^S>qbd4nam>#p+hmnS%37Yi z(6YV}EIOD~xa8mypCCe0FI~+1I>7S&(k+ zTz!NSsPU5E9?h|7Z_I7RFbZQ32Dsu)pCEG~=6-!nG@R0SB2-0Fr7=?9B*j znaUN|n}_Poxtj-tnN=Q2W!~0gE~p~R@5EN17*l`*8X&=k5Ifu+SIrAmFa#&%Ka_1j zK{f!7hHUUbK^B)HImnjG5$zEE?QIbyu<+W7;Nc1iOfLF1^vwW}TyuMV6JR65YS*l% zJlEc}2MkGBxNy&bhZ)v5V9t!)`q4*WyxXY+p66O}wDyBmJ;1Y72rI;4rN@?dvPZrO z@XIuRDZ8)Cuu1mO8%f)p;J|~q2%m?0l|vb{88;OQ1!kslg`JG(E@mmfIh!Ma&8#Pun=gT+=4D}c%BI1xISH7&aHLB zIbg|4X@zy}4WWW7q0NuohmG$mSx2<23?84H!0qH(C=3ToJIkwKG2g9{Z`;ms+TOG_ z;lc{p{WkxYlj{${3YbUkP3_1sj~2#x2bPTKn}^zZMWY)vO)PI$ z5EfICEzQS0wPns`M|>1`r#QF4LMyYho{?{wH@^A^^?FDnM%MB6>(dJuOVU!#; zm)fFaGqn6Qsxqxt86mbq+;g!yg3Xo89UgC4m^E?G3;PCNPq?w&hwX4cuU>PUeiYCx z>l+WVWpvb6ZE43DG!1(%Rhdsh>7Y}O*-EcRZn=|QdHo%3WN2myRo;r`8dwUZSFr)% zoth|s4fvpe&oqx`P&cx@k3L!rXd9!q-{ke{k4_!xCEBAOhg+yxllj_pTsosvHtgKb zk9OtO`1e~$x%rw!z++7f4v+h=H;ABm(7tD5d81T<0hXS}V*7Hbt^JN+$i%ORH0S8U@e=<=jz*v2|aPLpH_bb8sBrnVQOEu~Vr z$xS$#HmeJ!^H?q=9sK|7y?d7%x6wEFe?Eo6KXRluoY7n)Sz=b}GrGm|MzR!9ww_%- zULT6=(a_?MG%u1SiuSYbuc}Z$p&Q*q&((R>IY~4`<5DQp9Y7(=9tlBx-$;=1J++UaR25D*L`*(}_Bz zZxS8gDE$esWa4XDT9z*fd1kAE)bwX;q%^c6c?jDrCn}|V1BnPpB;n;RAm`mToWovb0A^c|D`>oUOG%LD{O&f&ybg zSQB;;MRGhv z+)+WbG15SK-40PB{viQ|f1YC}VY%`LedBvB95%4Pis8!i3ADUxd%zu$j+?|;Utc#+^Aq!LQXd|>XDwUOs!?c z%G6Y`sNLZFDa0mvlLq+AJCaGlSemRT4YJz^6pJB?UR$2I`hQS;rmdHz1c-7YK=Dgy z$SzB|Y46LQyq!Q~pR8p?PfeA}A@KPAa8?+jhPb2RJo=7NLE1AaQMGCOgXnu~>NkY9 zs>GkTpwrO)qq_%GzNnKFVOh4-AL{52b%cjg26XsWMM<4Ha$k1Y+xWEwohy6imWr$VrQJVol7+-?f2 z%g&HnVlN*p)BWKQHYAJ6npUO96SU2an2|lhuN{E0Ygb*rP=SkON4C~T7MBag>Tezn)MV1)ML*X;Vg*?KZL{U@HAr4wSKC$p2mc*-k^Z~bDh7#{cez8lwd&yE}~iskWaf;~dw z*W_{hI3E`=z zk_HSnX_aV!HIkaaV#&d-bbZg7_bG4be>S!P=uZs0Oxf$}c%LNeP{e4vxsdsyD zUoAX7jvs^-5*7XXiB=?(U9K5OI6eMAEo zOQ%Y)3h|wKLN~pohFr7oKzv~4cjj1CLZ0{5m7qFF|W@)!$7$9A_xAOp+OjHE0iWN_i@U68sv#lKr1!bN9moxJ~p?_7%w6?C<(#@S2*6P>}|nozue1 zRdpNEhDn29a)OPAPdyN62#{H`lsOeFYWN4@>u3zZw`I-%vrH>&R_clPq0&_l-@Ei= zfcft2Iw2V}s5_r}Nc^RQm0y${`ZS$&FjA!(uT*s3%{)U2^<0Jx7 zHN51<5oQ$BkgE9O1zvp_51sCyf0pwBr>!P;3pn= zjgaU-h9(=qY{$(&(ztzkEp!o`N~+}^Q(rr7TEtM@Sw?%Q$EnLmQ+6&Na?u=`RrHlO zHPEKwRkf6MA&524Wc2q^?^2f`v!(!8l6uEK;$jf3(=Yd!ER{z`GitXTOBD&!>J073 z1iYVE#Ta8asEPxG{wzUKDXPU^)X*W3h<|?rU0M6z=mepw4R$_FKpX9{6W-|FNYB{@FgsMBcIh;nqcpBF`q3`2C;8$uuShY6r-BgY)NX;ERdK;gdmW~nY~KallymS#JYN( zNX}L|yjZy(4b@Zb_3plo8_OB(6|t*QuYpt8e!1%%#S|5&998+CzlBig$ZH@ndUJzN zad*A}q)%m#A}&&&oFyV&t@`?NcX#K0<2z9HncL@3^@dmgA4fRLPuNO?P)ox_bG%!J z7tVfJ@Kd(SUVPdleu$GV@pFde^~Ak~YX`<+F)Tiyc*UTEaUCSOc3vj}pz}<&+FwVa z$quVONfHMcju;*yA6%ukPgsseB_YfX`5rCMPaRsJsHafiItm50ALdS>p$CmLL@FM( zS8uQTX@KjK3m~UDLE%VPNVs5uhXnD&B6heB5V<*-<8i0>T|wj)(eR3W_%3>c&OTjt z_;MYNy20Wq8(ldzUb?q$C5WW0jITX)URm@v|eDb?uYP)cUO;b{6C znJwj-IN?5LtHDBIO&42^&Z#@PctW8Ten?7&ZVNl?B{Y9CldkM|@lO0XgoE{J_PUrBFc~if?M-;D2Lozly2SHE&u8>B)8#{ANJ$)2kR%K}LrbRE zt+#AQUN_n-6#ofWBiV{nse>VO!eDqjc*jhxCR^P~drBGE4eBh~idwJ~b{o8$s7{to z@+Vv|p~=uryV5^$+JizT2cwhm)S(GK$sUG@H=u;Hj5_kbis7;TGGrP$C6Q-(4aOdA zrW-aF(>H_@?bxBw8jUJo#GegB@dxhl)nfc{kP2UhUTdpR&$S=5{emV-lYV}m^Xr_x<*DG*1rF$WF$f178SvJ(-N})SNSA3! zP-{Ow{X8E_Jgu$+SS|&<-bSE4nPMJ@Yr`^U$B~TEdU0>)xxapo?9T+JTCUp6cnU`5 z1*#!K&o^ej5G60ClT-g#t`&-*9RnFR)FDI2BI-v!d&Vt}hk zob(|ilo$3b1cPtWtT*bd4iBX1DXcyHWx^iuM97Yo6>!^(HPl7ZBeY5D2HNnj=*d%i zepJxwm$hl#Dl`_w;yf7A;{=ewi7QUt5&2gZvC@tt~eHO#L zggtUqUJc&+D@Z64l=?-xTC9d)EnkLG#bZ8heOnvog1({Ho!Rdu3QG>@0%1PVMGbRl zvlhGOva0JyB$IG4Ht~#|tSbs?ZjS>fsxpd&PZ`R7oN}iFqQ!6(TOeijjO(g)_ok7~B=B?GAhJ?QePbkB_}Dlm|A&a8v)9JTH3pKAMRt8mu@h0^ zugJPNZoMdK?^-$vbbAg@@}h-QV)EY2tP@ZM$${D}jzcMlolEt7FB2aTGqyv9>>g`0 z!)VADHO~%7sJXLT(QwM;h*Vt86feb`>{739W{3WS|d#WahSdhA!}k}{g%?u9KRDbr8xIR{ zDrl4%&z8=#&;!6SupajTO6fo0MDR>&Yyi!0IZ>wNZ~9G;{e7}74(Bya}g_^{n zJ;Kz5!MGf+#vcoQOs&6Hb5c}bNFg+JEOgHvSmw?BXc!_6*@D~6+k)HO-obX+;Qe^& zPQ{UHDD(^bBzKuvcakh4d~ zK>~!qh%XHe=3~FjxVN)&Z)<0NYX`fHL)z$Du1}uL7T8klbxuZ!P0Qter~7^~dpDRs znDKTdY@Pk>!N~xx&JI2;w}-P6yKxCSf3@}bWa2k358l076d%X3Oq~O6ccYJ9NijiI z(8V`qC;x4HGM^MT`m5Oj0iGKaK}NOI7AL{x<*LqNaWuTYw})k#nLW*ecQ~u^0*4I7 zIR3c$VLq7+AerL}!^xM1zdTywIBRF$L!afx>6PBPOq_oppv#bs}$w~L0wTzV+>3RsC)J(iK zO`W?MH=zP@dz~ge zD0~ZyuGo|{~r*qnF%I#2`gRLbRZ{b#hYmLsG!iYsl6KEgh@Xywma%c4W zPyg|v51B;m)rWA|4zUPxA zk7x7K{%pPAbM+*(jbC=~_<8Qa4TcloSxHLeLsB((E%F%q{Ji73m|?Ruv`H^3*WMx< z7}YTr{Y7`Q$4DkX_F)c@xi(v-QRoTOIvcTrwGk8{-V(n>!QSzo&LvM`*Y;^!&!1A!46xBuOt6TgU47)(4NH#4BlDw_s2QTZ188 zhviP*E^wB!buXW&mFosl&SD~wV1wi!ZL6!tqAFt-UP^gAuo=N0j>|dTCapJs0xZ7!$4UT z>iNVWyn1I14Kp^+oU3$&E}5AOj7D5L_t(5tBfFSSUByd_`lv|(uponwjSM1*!t`tu z{*N?rbL|2#wAsQ1SzU~g{ME2R?NYakI4J?u*-*N`9Jvk57QzJ#M=9#1;gP23>bDYC z&dkl~#*<+A6>{Dm!I0I~1qDO?@SV3rCV*r9lYQsQF|NdO{lnY!UUlp={o(CWEV(wi zf9Z}FZwa*z?q07ad{m}QhYPfkeGRp3wY6A)UN1BG*ln@P z3RC^z6}i|OXRj%5lGRe|`S-Tf^*Nkkp9OSQvcX_<%Ee?Ql-LPsJjZZWKS+mCnrz%@ zA~(T8_;^OS09ru#?GP=l1=Q!`qhfeEoFHu623}-smS)!ibo%9!MmqR*KAVh(MX&-;pCq3<^{-R*;MTH@~x)LJvx+)pu_*SOWial_lknvy-d$c1wX&-1xY(m#- z7w0XhfYUYhzF>nDF`w0He#V1eG;Nn;*&)Qj?Qx_8AfQOGuJDEvVP*tav$l6<+!}Tu zV(NSofJySh}ae@VZMXm z5NwG&5OgZa#@=K7{`aSKN5HX-bEZ^?bk{-tLj8I|Q{aM7FG$6SjuiC%KKtXBx`wz+lKoxjzqm=N`Q-DXrS-Jl|04wu4 ztQgVo+#epwmJiBmzaJr?lPGOhM$=4sZ%tG`;}*ZCNisl^Ys?(2-gi$LdD8xVw!#t6 zw2$2|;i+jBX00;z&OXXi|M)^=+$g71O@eV&COZpEN8tOQ=F{Pk1~go0Y{X+!Ot;i| zADsXuWMSv1dvxJtuhuRf@fF=I2865V*ZL+r|+qpm>-L408e=04KIS5Epj;>b1( zoKaaaek9v>#BtX3JtTgc9Fi7maFC{@Gst~NwfKQDtlOrrEWj+6w8@9qPv ztz~oP-XsEa4O4gV1iF#>yRmn@0Z$ICI5B0%|HaWjK9q1!6Yy(5z|}_k>et@Wv>s_b zm`t2cip%_F*~eI@!|AB_91`uTOt?!<3%i<$Z}dJfWx&N!mrTdIoZo;IhB%4&j*^BT z|I~(fDo0&f35IU=g^|OfExwdN2y1&OgxcyA5WYvE&bv8Zie6h>{6LRX+kn*iatFEy zZMJH`;wXt)sL72g3Oa!raCs=>dH`3W>iUdo&B>vLXe};9^9!t7LuzX-dH6o%c9OX# z6*#`v$?DnNZyJUBSr%sbsu!rv+BvQWf+$#4mLS)YL}%@J;x2MkVSZD(p4A2!q&ZEG ziE~Ohy%lupvcSC)QN)%5Oh_#dTtlBu-Ei3cJcsx<9SF7u_suxW87eJz|MO0sIE8SY zcx`m~IBU%)V}RUNRtm7Ul{Xt{k7gs>e}Y|K43JIuJ+f-(HVD!xfI4l6*0N92Hpr-X zTZLj@^A!s&M2NyH(_K;!bH3WbB{U?f1wiM#GyutfBVQSURZdrcv#2`8jjuCof|_c3 z9i=N{c@vHUU08iyOyAQJ%bWUh)wiU+cIaN@k{cJBx}aK^$BXe2wnH#9aCrFtCjrR z$L=-}rx2Pm_tO{u_?*)PCla`jOPxlAwZ89mc2)Twd_kvw0f%m#vOV{Xpb5>WXPZZ> zCNj0Pl_(skii6I_j>AcmU!uEf=HyPUBE~j!GmFoO*7{UVo$K$ z-q|_b!CY_WJf`Xe*j-uitP9)egR=%Jd`Zs-ojcDEqS-8;TWl^k>1pqAFf9k#3>5{F38Fa zRq5G8x#KxIw$oPbw5wuplNek%|c+nHDo`RthkN(*Ad#PAjq?A2D1p~xw-K+n69_f zD^DOst8hX<(&6&WVm-x)N6IQKAN|!3hYPb9!i6$|a$(G`(nX3h6)wtT%)vK0k0KX! z{m_O(@n$3^GIt3OlI*G-%*-+OZ|>3Ap3>D9q<%h`O$BN8@b@?0RH&X0N0C&M@PczB z+pxRatiGCyxc}+=4oWce)hH^6*�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%0Dfe37t1fHycN_ehF?{YOVz)h~`NzUF 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

ayxD|$muWh8QJ_$o{v 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 FB#sAf`j86Qx~4s1s&Q(%~N| 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

= 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 { todosCreate(event, (error, result) => { const response = { statusCode: 200, + headers: { + "Access-Control-Allow-Origin" : "*" + }, body: JSON.stringify(result), }; @@ -21,6 +24,9 @@ module.exports.readAll = (event, context, callback) => { todosReadAll(event, (error, result) => { const response = { statusCode: 200, + headers: { + "Access-Control-Allow-Origin" : "*" + }, body: JSON.stringify(result), }; @@ -32,6 +38,9 @@ module.exports.readOne = (event, context, callback) => { todosReadOne(event, (error, result) => { const response = { statusCode: 200, + headers: { + "Access-Control-Allow-Origin" : "*" + }, body: JSON.stringify(result), }; @@ -43,6 +52,9 @@ module.exports.update = (event, context, callback) => { todosUpdate(event, (error, result) => { const response = { statusCode: 200, + headers: { + "Access-Control-Allow-Origin" : "*" + }, body: JSON.stringify(result), }; @@ -54,6 +66,9 @@ module.exports.delete = (event, context, callback) => { todosDelete(event, (error, result) => { const response = { statusCode: 200, + headers: { + "Access-Control-Allow-Origin" : "*" + }, body: JSON.stringify(result), }; diff --git a/node_modules/aws-sdk/.changes/2.4.10.json b/node_modules/aws-sdk/.changes/2.4.10.json new file mode 100644 index 0000000..25aeba0 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.10.json @@ -0,0 +1,12 @@ +[ + { + "type": "feature", + "category": "util", + "description": "Parse ini files containing comments using #" + }, + { + "type": "feature", + "category": "Iot", + "description": "Adds support for thing types. Thing types are entities that store a description of common features of Things that are of the same logical type. Also adds support for `:` in Thing name. Adds a separator in Firehose action." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.11.json b/node_modules/aws-sdk/.changes/2.4.11.json new file mode 100644 index 0000000..4a89b5e --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.11.json @@ -0,0 +1,32 @@ +[ + { + "type": "feature", + "category": "APIGateway", + "description": "Adds support for authentication through Cognito User Pools." + }, + { + "type": "feature", + "category": "CognitoIdentityServiceProvider", + "description": "Introduces support for Your User Pools." + }, + { + "type": "feature", + "category": "DirectoryService", + "description": "Enables routing to on-premises public IP for Microsoft Active Directory." + }, + { + "type": "feature", + "category": "EC2", + "description": "Enables resolution of DNS queries from a peered VPC to a private IP address." + }, + { + "type": "feature", + "category": "ES", + "description": "Updates to Elasticsearch version 2.3, which offers improved performance, memory management, and security. It also offers several new features includinng pipeline aggregations to perform advanced analytics like moving averages and derivatives, and enhancements to geospatial queries." + }, + { + "type": "feature", + "category": "Waiter", + "description": "Adds Waiters for AWS.CodeDeploy." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.12.json b/node_modules/aws-sdk/.changes/2.4.12.json new file mode 100644 index 0000000..df969c8 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.12.json @@ -0,0 +1,42 @@ +[ + { + "type": "bugfix", + "category": "Request", + "description": "Adds a content-length check for the stream returned from `createReadStream()`, and the stream will emit an error when the bytes received are fewer than specified by the response content-length header." + }, + { + "type": "bugfix", + "category": "S3", + "description": "Reverts behavior introduced in version `2.4.0` of the SDK to default the `signatureVersion` of S3 clients to `v4`. S3 clients instantiated without a user-defined `signatureVersion` will now default to `v2` unless the region only supports `v4` signing. This change is being made due to issues sending non-ascii characters in headers when using `v4` signing." + }, + { + "type": "feature", + "category": "CloudWatchLogs", + "description": "Updates the `putMetricFilter` operation." + }, + { + "type": "feature", + "category": "EMR", + "description": "Adds enhanced debugging." + }, + { + "type": "feature", + "category": "Iot", + "description": "Adds `listOutgoingCertificates` and support for allowing autoregistration." + }, + { + "type": "feature", + "category": "MachineLearning", + "description": "Adds compute time and entity timestamp to multiple operations." + }, + { + "type": "feature", + "category": "RDS", + "description": "Support for license model and versioning of option groups." + }, + { + "type": "feature", + "category": "Route53Domains", + "description": "Adds new APIs to renew domains for a specified duration, get domain suggestions, and view billing." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.13.json b/node_modules/aws-sdk/.changes/2.4.13.json new file mode 100644 index 0000000..d674881 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.13.json @@ -0,0 +1,27 @@ +[ + { + "type": "feature", + "category": "ApplicationAutoScaling", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "AutoScaling", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "CodeDeploy", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "GameLift", + "description": "Provides a new Search API for GameLift, which allows game developers to retrieve filtered and sorted lists of their GameSessions." + }, + { + "type": "feature", + "category": "RDS", + "description": "You can now use the AWS Management Console to easily move your DB instance to a different VPC, or to a different subnet group in the same VPC. For more information, see Updating the VPC for a DB Instance. If your DB instance is not in a VPC, you can now use the AWS Management Console to easily move your DB instance into a VPC. You can now copy the source files from a MySQL database to an Amazon Simple Storage Service (Amazon S3) bucket, and then restore an Amazon Aurora DB cluster from those files. This option can be considerably faster than migrating data using mysqldump." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.14.json b/node_modules/aws-sdk/.changes/2.4.14.json new file mode 100644 index 0000000..3c90128 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.14.json @@ -0,0 +1,17 @@ +[ + { + "type": "feature", + "category": "CloudFront", + "description": "Amazon CloudFront now supports tagging for Web and Streaming distributions. Tags make it easier for you to allocate costs and optimize spending by categorizing and grouping AWS resources." + }, + { + "type": "feature", + "category": "ECR", + "description": "Adds filtering of ListImages requests based on whether an image is tagged or untagged." + }, + { + "type": "feature", + "category": "MarketplaceCommerceAnalytics", + "description": "Adds the `startSupportDataExport` operation." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.8.json b/node_modules/aws-sdk/.changes/2.4.8.json new file mode 100644 index 0000000..eb0322c --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.8.json @@ -0,0 +1,42 @@ +[ + { + "type": "feature", + "category": "CloudFormation", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "CloudHSM", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "DeviceFarm", + "description": "Adds session-based APIs." + }, + { + "type": "feature", + "category": "EMR", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "ElastiCache", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "ElasticBeanstalk", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "Redshift", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "SSM", + "description": "Adds notification support." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.9.json b/node_modules/aws-sdk/.changes/2.4.9.json new file mode 100644 index 0000000..1dcf3ac --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.4.9.json @@ -0,0 +1,22 @@ +[ + { + "type": "feature", + "category": "ACM", + "description": "Adds reason for failure when describing certificates." + }, + { + "type": "feature", + "category": "ConfigService", + "description": "Adds support for RDS and ACM resources types and introduces two new APIs: DeleteEvaluationResults and StartConfigRulesEvaluation. Updated PutConfigRule API can now create Config rules that are triggered by both configuration changes and periodicity." + }, + { + "type": "feature", + "category": "ElasticTranscoder", + "description": "Adds WAV file format output support." + }, + { + "type": "feature", + "category": "Paginator", + "description": "Adds paginator for SSM DescribeInstanceInformation operation." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.0.json b/node_modules/aws-sdk/.changes/2.5.0.json new file mode 100644 index 0000000..f7913fe --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.0.json @@ -0,0 +1,37 @@ +[ + { + "type": "feature", + "category": "AutoScaling", + "description": "Adds 3 new APIs for ELB L7 integration: attachLoadBalancerTargetGroups, detachLoadBalancerTargetGroups, and describeLoadBalancerTargetGroups." + }, + { + "type": "feature", + "category": "ECS", + "description": "Adds ECS support for ELBv2. Supports Application Load Balancer target groups to enable dynamic ports and path-based routing." + }, + { + "type": "feature", + "category": "ELBv2", + "description": "Adds new backwards incompatible application load balancer API version. Application load balancers are a new load balancer that is now supported by the Elastic Load Balancing service. Application load balancers support HTTP/2, WebSockets, routing based on URL path, and routing to multiple ports on a single instance." + }, + { + "type": "feature", + "category": "KMS", + "description": "Adds support for importing customer-supplied cryptographic keys. New import key feature lets you import keys from your own key management infrastructure to KMS for greater control over generation and storage of keys and meeting compliance requirements of sensitive workloads." + }, + { + "type": "feature", + "category": "KinesisAnalytics", + "description": "Adds the new service Amazon Kinesis Analytics, a fully managed service for continuously querying streaming data using standard SQL. With Kinesis Analytics, you can write standard SQL queries on streaming data and gain actionable insights in real-time, without having to learn any new programming skills. The service allows you to build applications that continuously read data from streaming data sources, process that data using standard SQL, and send the processed data to up to four destinations of your choice. Kinesis Analytics enables you to generate time-series analytics, feed a real-time dashboard, create real-time alarms and notifications, and much more." + }, + { + "type": "feature", + "category": "S3", + "description": "Adds support for IPv6/IPv4 Dualstack endpoint. A new opt-in boolean option `use Dualstack` can be specified for S3 service clients: `new AWS.S3({useDualstack: true})`. Alternatively, to configure it once for all subsequent S3 service clients: `AWS.config.update({s3: {useDualstack: true}})`." + }, + { + "type": "feature", + "category": "Snowball", + "description": "Adds Amazon Snowball, a new job management service." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.1.json b/node_modules/aws-sdk/.changes/2.5.1.json new file mode 100644 index 0000000..e552555 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.1.json @@ -0,0 +1,17 @@ +[ + { + "type": "feature", + "category": "ACM", + "description": "Increase tagging limit from 10 to 50." + }, + { + "type": "feature", + "category": "APIGateway", + "description": "Amazon API Gateway now supports API usage plans. Usage plans allows you to easily manage and monetize your APIs for your API-based business." + }, + { + "type": "feature", + "category": "ECS", + "description": "Adds support for memory reservation and network mode on task definitions. Also adds splunk as a supported log driver." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.2.json b/node_modules/aws-sdk/.changes/2.5.2.json new file mode 100644 index 0000000..42b8d2b --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.2.json @@ -0,0 +1,22 @@ +[ + { + "type": "bugfix", + "category": "Waiter", + "description": "Fixes bug in `clusterDeleted` waiter for AWS.Redshift." + }, + { + "type": "feature", + "category": "EC2", + "description": "Adds new APIs supporting dedicated host reservations. Also adds new property to response of `describeSpotFleetRequests` to indicate the activity status of spot fleet requests." + }, + { + "type": "feature", + "category": "Request", + "description": "eachItem method stops iteration on returning false (like eachPage)" + }, + { + "type": "feature", + "category": "WorkSpaces", + "description": "Adds new APIs to support the launch and management of WorkSpaces that are paid for and used by the hour." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.3.json b/node_modules/aws-sdk/.changes/2.5.3.json new file mode 100644 index 0000000..e46265d --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.3.json @@ -0,0 +1,7 @@ +[ + { + "type": "feature", + "category": "RDS", + "description": "Adds resource ARNs to Describe APIs." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.4.json b/node_modules/aws-sdk/.changes/2.5.4.json new file mode 100644 index 0000000..2e1f2a9 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.4.json @@ -0,0 +1,17 @@ +[ + { + "type": "feature", + "category": "CloudFront", + "description": "CloudFront is adding a Querystring Whitelist Option. Customers will be able to choose to forward certain querystring keys instead of a.) all of them or b.) none of them." + }, + { + "type": "feature", + "category": "CodePipeline", + "description": "CodePiepline has introduced a new feature to return pipeline execution details. Execution details consists of source revisions that are running in the pipeline. Customers will be able to tell what source revisions that are running through the stages in pipeline by fetching execution details of each stage." + }, + { + "type": "feature", + "category": "Route53", + "description": "With this release, Route 53 will support the following new features: support for the NAPTR DNS record type, a new testDNSAnswer API which enables customers to send a test query against a specific name server using spoofed delegation nameserver, resolver, and ECS IPs, and support metric-based health check in ap-south-1 region." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.5.json b/node_modules/aws-sdk/.changes/2.5.5.json new file mode 100644 index 0000000..ea028a5 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.5.json @@ -0,0 +1,22 @@ +[ + { + "type": "feature", + "category": "CognitoIdentityServiceProvider", + "description": "Adds support for bulk import of users." + }, + { + "type": "feature", + "category": "GameLift", + "description": "Adds Linux support." + }, + { + "type": "feature", + "category": "Iot", + "description": "Adds Iot as a default service in the browser distribution of the AWS SDK for JavaScript." + }, + { + "type": "feature", + "category": "RDS", + "description": "Adds information in response of describeOptionGroupOptions about options that conflict with each other." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.6.json b/node_modules/aws-sdk/.changes/2.5.6.json new file mode 100644 index 0000000..2788790 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.5.6.json @@ -0,0 +1,7 @@ +[ + { + "type": "feature", + "category": "RDS", + "description": "Adds new operation describeSourceRegions to provide list of all the source region names and endpoints for any region. Source regions are the regions where current region can get a replica or copy a snapshot from." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.0.json b/node_modules/aws-sdk/.changes/2.6.0.json new file mode 100644 index 0000000..f4e48ed --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.0.json @@ -0,0 +1,22 @@ +[ + { + "type": "feature", + "category": "CloudFront", + "description": "Adds HTTP2 support for Amazon CloudFront distributions." + }, + { + "type": "feature", + "category": "MetadataService", + "description": "Adds retry logic to the EC2 Metadata Service, so that EC2MetadataCredentials will retry TimeoutError. This retry logic is also added to ECSCredentials. Resolves #692" + }, + { + "type": "feature", + "category": "ServiceCatalog", + "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." + }, + { + "type": "feature", + "category": "Tools", + "description": "Adds support for bundling the SDK with webpack. Also adds support for creating node.js bundles using webpack or browserify." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.1.json b/node_modules/aws-sdk/.changes/2.6.1.json new file mode 100644 index 0000000..e557b87 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.1.json @@ -0,0 +1,7 @@ +[ + { + "type": "bugfix", + "category": "SDK", + "description": "Fixes an issue that caused all services to be loaded into memory when requiring the SDK. This issue was introduced in version `2.6.0` of the SDK, and address #1124." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.2.json b/node_modules/aws-sdk/.changes/2.6.2.json new file mode 100644 index 0000000..c6b97aa --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.2.json @@ -0,0 +1,7 @@ +[ + { + "type": "feature", + "category": "ServiceCatalog", + "description": "Updates the API for AWS.ServiceCatalog." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.3.json b/node_modules/aws-sdk/.changes/2.6.3.json new file mode 100644 index 0000000..220a6de --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.3.json @@ -0,0 +1,17 @@ +[ + { + "type": "bugfix", + "category": "Node_Https", + "description": "Fixes an issue caused when https.globalAgent is set to false." + }, + { + "type": "feature", + "category": "Iot", + "description": "Updates registerCertificate operation, and allows users to specify cannedAcl for S3 action." + }, + { + "type": "feature", + "category": "RDS", + "description": "Updates describeDbCluster operation to allow specifying a ReaderEndpoint for accessing cluster readers." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.4.json b/node_modules/aws-sdk/.changes/2.6.4.json new file mode 100644 index 0000000..611f7f2 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.4.json @@ -0,0 +1,32 @@ +[ + { + "type": "bugfix", + "category": "Browser", + "description": "Updates `url` and `querystring` dependencies to be controlled by the SDK instead of tools like browserify or webpack." + }, + { + "type": "bugfix", + "category": "Config", + "description": "Fixes an issue where specifying service-specific config on the global AWS.config object would fail if the service had not yet been instantiated." + }, + { + "type": "feature", + "category": "CodeDeploy", + "description": "AWS CodeDeploy now integrates with Amazon CloudWatch alarms, making it possible to stop a deployment if there is a change in the state of a specified alarm for a number of consecutive periods, as specified in the alarm threshold. AWS CodeDeploy also now supports automatically rolling back a deployment if certain conditions are met, such as a deployment failure or an activated alarm." + }, + { + "type": "feature", + "category": "EMR", + "description": "Added support for Security Configurations which can be used to enable encryption at-rest and in-transit for certain applications on Amazon EMR." + }, + { + "type": "feature", + "category": "RDS", + "description": "Provide local time zone support for AWS RDS SqlServer database instances." + }, + { + "type": "feature", + "category": "Redshift", + "description": "This release of Amazon Redshift introduces Enhanced VPC Routing. When you use Amazon Redshift Enhanced VPC Routing, Amazon Redshift forces all COPY and UNLOAD traffic between your cluster and your data repositories through your Amazon VPC." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.5.json b/node_modules/aws-sdk/.changes/2.6.5.json new file mode 100644 index 0000000..a089342 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.5.json @@ -0,0 +1,12 @@ +[ + { + "type": "bugfix", + "category": "apiVersion", + "description": "Fixes an issue where some service clients would fail to instantiate if an older apiVersion was specified." + }, + { + "type": "feature", + "category": "CloudFormation", + "description": "Adds support for specifying an IAM service role for CloudFormation stack operations." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.6.json b/node_modules/aws-sdk/.changes/2.6.6.json new file mode 100644 index 0000000..cdff647 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.6.json @@ -0,0 +1,12 @@ +[ + { + "type": "feature", + "category": "EC2", + "description": "Adding support for EC2 Convertible RIs and the EC2 RI regional benefit." + }, + { + "type": "feature", + "category": "S3", + "description": "S3 API update with partNumber extension and a bug fix to address list-objects command failing when a bucket is marked with request-pays." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.7.json b/node_modules/aws-sdk/.changes/2.6.7.json new file mode 100644 index 0000000..f7c928b --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.7.json @@ -0,0 +1,12 @@ +[ + { + "type": "feature", + "category": "CognitoIdentityServiceProvider", + "description": "Added new operation \"AdminCreateUser\" that creates a new user in the specified user pool and sends a welcome message via email or phone (SMS)." + }, + { + "type": "feature", + "category": "Route53", + "description": "Retries PriorRequestNotComplete errors." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.8.json b/node_modules/aws-sdk/.changes/2.6.8.json new file mode 100644 index 0000000..6339ae7 --- /dev/null +++ b/node_modules/aws-sdk/.changes/2.6.8.json @@ -0,0 +1,12 @@ +[ + { + "type": "feature", + "category": "ECR", + "description": "DescribeImages is a new api used to expose image metadata which today includes image size and image creation timestamp." + }, + { + "type": "feature", + "category": "ElastiCache", + "description": "Elasticache is launching a new major engine release of Redis, 3.2 (providing stability updates and new command sets over 2.8), as well as ElasticSupport for enabling Redis Cluster in 3.2, which provides support for multiple node groups to horizontally scale data, as well as superior engine failover capabilities." + } +] \ No newline at end of file diff --git a/node_modules/aws-sdk/.jshintrc b/node_modules/aws-sdk/.jshintrc new file mode 100644 index 0000000..89fbbba --- /dev/null +++ b/node_modules/aws-sdk/.jshintrc @@ -0,0 +1,68 @@ +{ + // JSHint Default Configuration File (as on JSHint website) + // See http://jshint.com/docs/ for more details + + "maxerr" : 50, // {int} Maximum error before stopping + + // Enforcing + "bitwise" : false, // true: Prohibit bitwise operators (&, |, ^, etc.) + "camelcase" : false, // true: Identifiers must be in camelCase + "curly" : false, // true: Require {} for every new block or scope + "eqeqeq" : true, // true: Require triple equals (===) for comparison + "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty() + "immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` + "indent" : false, // {int} Number of spaces to use for indentation + "latedef" : false, // true: Require variables/functions to be defined before being used + "newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()` + "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` + "noempty" : true, // true: Prohibit use of empty blocks + "nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment) + "plusplus" : false, // true: Prohibit use of `++` & `--` + "quotmark" : "single", // Quotation mark consistency: + // false : do nothing (default) + // true : ensure whatever is used is consistent + // "single" : require single quotes + // "double" : require double quotes + "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks) + "unused" : true, // true: Require all defined variables be used + "strict" : false, // true: Requires all functions run in ES5 Strict Mode + "maxparams" : false, // {int} Max number of formal params allowed per function + "maxdepth" : false, // {int} Max depth of nested blocks (within functions) + "maxstatements" : false, // {int} Max number statements per function + "maxcomplexity" : false, // {int} Max cyclomatic complexity per function + "maxlen" : false, // {int} Max number of characters per line + + // Relaxing + "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) + "boss" : false, // true: Tolerate assignments where comparisons would be expected + "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. + "eqnull" : false, // true: Tolerate use of `== null` + "es5" : false, // true: Allow ES5 syntax (ex: getters and setters) + "esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`) + "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features) + // (ex: `for each`, multiple try/catch, function expression…) + "evil" : false, // true: Tolerate use of `eval` and `new Function()` + "expr" : false, // true: Tolerate `ExpressionStatement` as Programs + "funcscope" : false, // true: Tolerate defining variables inside control statements + "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') + "iterator" : false, // true: Tolerate using the `__iterator__` property + "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block + "laxbreak" : false, // true: Tolerate possibly unsafe line breakings + "laxcomma" : false, // true: Tolerate comma-first style coding + "loopfunc" : false, // true: Tolerate functions being defined in loops + "multistr" : false, // true: Tolerate multi-line strings + "proto" : false, // true: Tolerate using the `__proto__` property + "scripturl" : false, // true: Tolerate script-targeted URLs + "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;` + "sub" : true, // true: Tolerate using `[]` notation when it can still be expressed in dot notation + "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;` + "validthis" : false, // true: Tolerate using this in a non-constructor function + + // Environments + "browser" : true, // Web Browser (window, document, etc) + "node" : true, // Node.js + "nonstandard" : true, // Widely adopted globals (escape, unescape, etc) + + // Custom Globals + "globals" : {} // additional predefined global variables +} diff --git a/node_modules/aws-sdk/.npmignore b/node_modules/aws-sdk/.npmignore new file mode 100644 index 0000000..3d4358c --- /dev/null +++ b/node_modules/aws-sdk/.npmignore @@ -0,0 +1,18 @@ +.yard* +.eslintrc +.travis.yml +.gitignore +apis/*.normal.json +configuration +configuration.sample +coverage +doc +doc-src +eslint-rules +Gemfile +Gemfile.lock +features +Rakefile +test +tasks +vendor diff --git a/node_modules/aws-sdk/.tesselinclude b/node_modules/aws-sdk/.tesselinclude new file mode 100644 index 0000000..2188ed1 --- /dev/null +++ b/node_modules/aws-sdk/.tesselinclude @@ -0,0 +1,2 @@ +apis/*.json +lib/services/*.js diff --git a/node_modules/aws-sdk/CHANGELOG.md b/node_modules/aws-sdk/CHANGELOG.md new file mode 100644 index 0000000..a46f5d4 --- /dev/null +++ b/node_modules/aws-sdk/CHANGELOG.md @@ -0,0 +1,131 @@ +# Changelog for AWS SDK for JavaScript + + + +## 2.6.8 +* feature: ECR: DescribeImages is a new api used to expose image metadata which today includes image size and image creation timestamp. +* feature: ElastiCache: Elasticache is launching a new major engine release of Redis, 3.2 (providing stability updates and new command sets over 2.8), as well as ElasticSupport for enabling Redis Cluster in 3.2, which provides support for multiple node groups to horizontally scale data, as well as superior engine failover capabilities. + +## 2.6.7 +* feature: CognitoIdentityServiceProvider: Added new operation "AdminCreateUser" that creates a new user in the specified user pool and sends a welcome message via email or phone (SMS). +* feature: Route53: Retries PriorRequestNotComplete errors. + +## 2.6.6 +* feature: EC2: Adding support for EC2 Convertible RIs and the EC2 RI regional benefit. +* feature: S3: S3 API update with partNumber extension and a bug fix to address list-objects command failing when a bucket is marked with request-pays. + +## 2.6.5 +* bugfix: apiVersion: Fixes an issue where some service clients would fail to instantiate if an older apiVersion was specified. +* feature: CloudFormation: Adds support for specifying an IAM service role for CloudFormation stack operations. + +## 2.6.4 +* bugfix: Browser: Updates `url` and `querystring` dependencies to be controlled by the SDK instead of tools like browserify or webpack. +* bugfix: Config: Fixes an issue where specifying service-specific config on the global AWS.config object would fail if the service had not yet been instantiated. +* feature: CodeDeploy: AWS CodeDeploy now integrates with Amazon CloudWatch alarms, making it possible to stop a deployment if there is a change in the state of a specified alarm for a number of consecutive periods, as specified in the alarm threshold. AWS CodeDeploy also now supports automatically rolling back a deployment if certain conditions are met, such as a deployment failure or an activated alarm. +* feature: EMR: Added support for Security Configurations which can be used to enable encryption at-rest and in-transit for certain applications on Amazon EMR. +* feature: RDS: Provide local time zone support for AWS RDS SqlServer database instances. +* feature: Redshift: This release of Amazon Redshift introduces Enhanced VPC Routing. When you use Amazon Redshift Enhanced VPC Routing, Amazon Redshift forces all COPY and UNLOAD traffic between your cluster and your data repositories through your Amazon VPC. + +## 2.6.3 +* bugfix: Node_Https: Fixes an issue caused when https.globalAgent is set to false. +* feature: Iot: Updates registerCertificate operation, and allows users to specify cannedAcl for S3 action. +* feature: RDS: Updates describeDbCluster operation to allow specifying a ReaderEndpoint for accessing cluster readers. + +## 2.6.2 +* feature: ServiceCatalog: Updates the API for AWS.ServiceCatalog. + +## 2.6.1 +* bugfix: SDK: Fixes an issue that caused all services to be loaded into memory when requiring the SDK. This issue was introduced in version `2.6.0` of the SDK, and address #1124. + +## 2.6.0 +* feature: CloudFront: Adds HTTP2 support for Amazon CloudFront distributions. +* feature: MetadataService: Adds retry logic to the EC2 Metadata Service, so that EC2MetadataCredentials will retry TimeoutError. This retry logic is also added to ECSCredentials. Resolves #692 +* feature: ServiceCatalog: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: Tools: Adds support for bundling the SDK with webpack. Also adds support for creating node.js bundles using webpack or browserify. + +## 2.5.6 +* feature: RDS: Adds new operation describeSourceRegions to provide list of all the source region names and endpoints for any region. Source regions are the regions where current region can get a replica or copy a snapshot from. + +## 2.5.5 +* feature: CognitoIdentityServiceProvider: Adds support for bulk import of users. +* feature: GameLift: Adds Linux support. +* feature: Iot: Adds Iot as a default service in the browser distribution of the AWS SDK for JavaScript. +* feature: RDS: Adds information in response of describeOptionGroupOptions about options that conflict with each other. + +## 2.5.4 +* feature: CloudFront: CloudFront is adding a Querystring Whitelist Option. Customers will be able to choose to forward certain querystring keys instead of a.) all of them or b.) none of them. +* feature: CodePipeline: CodePiepline has introduced a new feature to return pipeline execution details. Execution details consists of source revisions that are running in the pipeline. Customers will be able to tell what source revisions that are running through the stages in pipeline by fetching execution details of each stage. +* feature: Route53: With this release, Route 53 will support the following new features: support for the NAPTR DNS record type, a new testDNSAnswer API which enables customers to send a test query against a specific name server using spoofed delegation nameserver, resolver, and ECS IPs, and support metric-based health check in ap-south-1 region. + +## 2.5.3 +* feature: RDS: Adds resource ARNs to Describe APIs. + +## 2.5.2 +* bugfix: Waiter: Fixes bug in `clusterDeleted` waiter for AWS.Redshift. +* feature: EC2: Adds new APIs supporting dedicated host reservations. Also adds new property to response of `describeSpotFleetRequests` to indicate the activity status of spot fleet requests. +* feature: Request: eachItem method stops iteration on returning false (like eachPage) +* feature: WorkSpaces: Adds new APIs to support the launch and management of WorkSpaces that are paid for and used by the hour. + +## 2.5.1 +* feature: ACM: Increase tagging limit from 10 to 50. +* feature: APIGateway: Amazon API Gateway now supports API usage plans. Usage plans allows you to easily manage and monetize your APIs for your API-based business. +* feature: ECS: Adds support for memory reservation and network mode on task definitions. Also adds splunk as a supported log driver. + +## 2.5.0 +* feature: AutoScaling: Adds 3 new APIs for ELB L7 integration: attachLoadBalancerTargetGroups, detachLoadBalancerTargetGroups, and describeLoadBalancerTargetGroups. +* feature: ECS: Adds ECS support for ELBv2. Supports Application Load Balancer target groups to enable dynamic ports and path-based routing. +* feature: ELBv2: Adds new backwards incompatible application load balancer API version. Application load balancers are a new load balancer that is now supported by the Elastic Load Balancing service. Application load balancers support HTTP/2, WebSockets, routing based on URL path, and routing to multiple ports on a single instance. +* feature: KMS: Adds support for importing customer-supplied cryptographic keys. New import key feature lets you import keys from your own key management infrastructure to KMS for greater control over generation and storage of keys and meeting compliance requirements of sensitive workloads. +* feature: KinesisAnalytics: Adds the new service Amazon Kinesis Analytics, a fully managed service for continuously querying streaming data using standard SQL. With Kinesis Analytics, you can write standard SQL queries on streaming data and gain actionable insights in real-time, without having to learn any new programming skills. The service allows you to build applications that continuously read data from streaming data sources, process that data using standard SQL, and send the processed data to up to four destinations of your choice. Kinesis Analytics enables you to generate time-series analytics, feed a real-time dashboard, create real-time alarms and notifications, and much more. +* feature: S3: Adds support for IPv6/IPv4 Dualstack endpoint. A new opt-in boolean option `use Dualstack` can be specified for S3 service clients: `new AWS.S3({useDualstack: true})`. Alternatively, to configure it once for all subsequent S3 service clients: `AWS.config.update({s3: {useDualstack: true}})`. +* feature: Snowball: Adds Amazon Snowball, a new job management service. + +## 2.4.14 +* feature: CloudFront: Amazon CloudFront now supports tagging for Web and Streaming distributions. Tags make it easier for you to allocate costs and optimize spending by categorizing and grouping AWS resources. +* feature: ECR: Adds filtering of ListImages requests based on whether an image is tagged or untagged. +* feature: MarketplaceCommerceAnalytics: Adds the `startSupportDataExport` operation. + +## 2.4.13 +* feature: ApplicationAutoScaling: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: AutoScaling: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: CodeDeploy: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: GameLift: Provides a new Search API for GameLift, which allows game developers to retrieve filtered and sorted lists of their GameSessions. +* feature: RDS: You can now use the AWS Management Console to easily move your DB instance to a different VPC, or to a different subnet group in the same VPC. For more information, see Updating the VPC for a DB Instance. If your DB instance is not in a VPC, you can now use the AWS Management Console to easily move your DB instance into a VPC. You can now copy the source files from a MySQL database to an Amazon Simple Storage Service (Amazon S3) bucket, and then restore an Amazon Aurora DB cluster from those files. This option can be considerably faster than migrating data using mysqldump. + +## 2.4.12 +* bugfix: Request: Adds a content-length check for the stream returned from `createReadStream()`, and the stream will emit an error when the bytes received are fewer than specified by the response content-length header. +* bugfix: S3: Reverts behavior introduced in version `2.4.0` of the SDK to default the `signatureVersion` of S3 clients to `v4`. S3 clients instantiated without a user-defined `signatureVersion` will now default to `v2` unless the region only supports `v4` signing. This change is being made due to issues sending non-ascii characters in headers when using `v4` signing. +* feature: CloudWatchLogs: Updates the `putMetricFilter` operation. +* feature: EMR: Adds enhanced debugging. +* feature: Iot: Adds `listOutgoingCertificates` and support for allowing autoregistration. +* feature: MachineLearning: Adds compute time and entity timestamp to multiple operations. +* feature: RDS: Support for license model and versioning of option groups. +* feature: Route53Domains: Adds new APIs to renew domains for a specified duration, get domain suggestions, and view billing. + +## 2.4.11 +* feature: APIGateway: Adds support for authentication through Cognito User Pools. +* feature: CognitoIdentityServiceProvider: Introduces support for Your User Pools. +* feature: DirectoryService: Enables routing to on-premises public IP for Microsoft Active Directory. +* feature: EC2: Enables resolution of DNS queries from a peered VPC to a private IP address. +* feature: ES: Updates to Elasticsearch version 2.3, which offers improved performance, memory management, and security. It also offers several new features includinng pipeline aggregations to perform advanced analytics like moving averages and derivatives, and enhancements to geospatial queries. +* feature: Waiter: Adds Waiters for AWS.CodeDeploy. + +## 2.4.10 +* feature: util: Parse ini files containing comments using # +* feature: Iot: Adds support for thing types. Thing types are entities that store a description of common features of Things that are of the same logical type. Also adds support for `:` in Thing name. Adds a separator in Firehose action. + +## 2.4.9 +* feature: ACM: Adds reason for failure when describing certificates. +* feature: ConfigService: Adds support for RDS and ACM resources types and introduces two new APIs: DeleteEvaluationResults and StartConfigRulesEvaluation. Updated PutConfigRule API can now create Config rules that are triggered by both configuration changes and periodicity. +* feature: ElasticTranscoder: Adds WAV file format output support. +* feature: Paginator: Adds paginator for SSM DescribeInstanceInformation operation. + +## 2.4.8 +* feature: CloudFormation: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: CloudHSM: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: DeviceFarm: Adds session-based APIs. +* feature: EMR: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: ElastiCache: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: ElasticBeanstalk: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: Redshift: CORS support added. Now a default service in the browser build of the JavaScript SDK. +* feature: SSM: Adds notification support. \ No newline at end of file diff --git a/node_modules/aws-sdk/CONTRIBUTING.md b/node_modules/aws-sdk/CONTRIBUTING.md new file mode 100644 index 0000000..59df5f7 --- /dev/null +++ b/node_modules/aws-sdk/CONTRIBUTING.md @@ -0,0 +1,98 @@ +# Contributing to the AWS SDK for JavaScript + +We work hard to provide a high-quality and useful SDK, and we greatly value +feedback and contributions from our community. Whether it's a bug report, +new feature, correction, or additional documentation, we welcome your issues +and pull requests. Please read through this document before submitting any +issues or pull requests to ensure we have all the necessary information to +effectively respond to your bug report or contribution. + + +## Filing Bug Reports + +You can file bug reports against the SDK on the [GitHub issues][issues] page. + +If you are filing a report for a bug or regression in the SDK, it's extremely +helpful to provide as much information as possible when opening the original +issue. This helps us reproduce and investigate the possible bug without having +to wait for this extra information to be provided. Please read the following +guidelines prior to filing a bug report. + +1. Search through existing [issues][] to ensure that your specific issue has + not yet been reported. If it is a common issue, it is likely there is + already a bug report for your problem. + +2. Ensure that you have tested the latest version of the SDK. Although you + may have an issue against an older version of the SDK, we cannot provide + bug fixes for old versions. It's also possible that the bug may have been + fixed in the latest release. + +3. Provide as much information about your environment, SDK version, and + relevant dependencies as possible. For example, let us know what version + of Node.js you are using, or if it's a browser issue, which browser you + are using. If the issue only occurs with a specific dependency loaded, + please provide that dependency name and version. + +4. Provide a minimal test case that reproduces your issue or any error + information you related to your problem. We can provide feedback much + more quickly if we know what operations you are calling in the SDK. If + you cannot provide a full test case, provide as much code as you can + to help us diagnose the problem. Any relevant information should be provided + as well, like whether this is a persistent issue, or if it only occurs + some of the time. + + +## Submitting Pull Requests + +We are always happy to receive code and documentation contributions to the SDK. +Please be aware of the following notes prior to opening a pull request: + +1. The SDK is released under the [Apache license][license]. Any code you submit + will be released under that license. For substantial contributions, we may + ask you to sign a [Contributor License Agreement (CLA)][cla]. + +2. If you would like to implement support for a significant feature that is not + yet available in the SDK, please talk to us beforehand to avoid any + duplication of effort. + +### Testing + +To run the tests locally, install `phantomjs`. You can do so using [Homebrew][homebrew]: + +``` +brew install phantomjs +``` + +Then, to run all tests: + +``` +npm test +``` + +To run a particular test subset e.g. just the unit tests: + +``` +npm run-script unit +``` + +See the implementation of the `test` script in `package.json` for more options. + +### Changelog + +We have moved to using a changelog to document changes between SDK versions instead of [release notes][releasenotes]. +The release notes generally contained service client updates, and major SDK changes. +Our goal with the changelog is to document all changes made with each version of the SDK. +When submitting a pull request, please run the `add-change` script and commit the resulting JSON file so that your change gets added to the changelog. +From SDK root: +``` +node ./scripts/changelog/add-change.js +``` + +See the [add-change cli notes](./scripts/changelog/README.md) for more information. + +[issues]: https://github.com/aws/aws-sdk-js/issues +[pr]: https://github.com/aws/aws-sdk-js/pulls +[license]: http://aws.amazon.com/apache2.0/ +[cla]: http://en.wikipedia.org/wiki/Contributor_License_Agreement +[homebrew]: http://brew.sh/ +[releasenotes]: https://aws.amazon.com/releasenotes/JavaScript diff --git a/node_modules/aws-sdk/LICENSE.txt b/node_modules/aws-sdk/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/node_modules/aws-sdk/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/aws-sdk/NOTICE.txt b/node_modules/aws-sdk/NOTICE.txt new file mode 100644 index 0000000..54cd045 --- /dev/null +++ b/node_modules/aws-sdk/NOTICE.txt @@ -0,0 +1,5 @@ +AWS SDK for JavaScript +Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. + +This product includes software developed at +Amazon Web Services, Inc. (http://aws.amazon.com/). diff --git a/node_modules/aws-sdk/README.md b/node_modules/aws-sdk/README.md new file mode 100644 index 0000000..6365ec4 --- /dev/null +++ b/node_modules/aws-sdk/README.md @@ -0,0 +1,160 @@ +# AWS SDK for JavaScript + +[![NPM](https://nodei.co/npm/aws-sdk.svg?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/aws-sdk/) + +[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/aws/aws-sdk-js) + +[![Version](https://badge.fury.io/js/aws-sdk.svg)](http://badge.fury.io/js/aws-sdk) [![Build Status](https://travis-ci.org/aws/aws-sdk-js.svg?branch=master)](https://travis-ci.org/aws/aws-sdk-js) [![Coverage Status](https://coveralls.io/repos/aws/aws-sdk-js/badge.svg?branch=master)](https://coveralls.io/r/aws/aws-sdk-js?branch=master) + +The official AWS SDK for JavaScript, available for browsers and mobile devices, +or Node.js backends + +Release notes can be found at http://aws.amazon.com/releasenotes/SDK/JavaScript + +

+If you are upgrading from 1.x to 2.0 of the SDK, please see +the {file:UPGRADING.md} notes for information on how to migrate existing code +to work with the new major version. +

+ +## Installing + +### In the Browser + +To use the SDK in the browser, simply add the following script tag to your +HTML pages: + + + +You can also build a custom browser SDK with your specified set of AWS services. +This can allow you to reduce the SDK's size, specify different API versions of +services, or use AWS services that don't currently support CORS if you are +working in an environment that does not enforce CORS. To get started: + +http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/browser-building.html + +The AWS SDK is also compatible with [browserify](http://browserify.org). + +### In Node.js + +The preferred way to install the AWS SDK for Node.js is to use the +[npm](http://npmjs.org) package manager for Node.js. Simply type the following +into a terminal window: + +```sh +npm install aws-sdk +``` + +### Using Bower + +You can also use [Bower](http://bower.io) to install the SDK by typing the +following into a terminal window: + +```sh +bower install aws-sdk-js +``` + +## Usage and Getting Started + +You can find a getting started guide at: + +http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/ + +## Supported Services + +

Note: +Although all services are supported in the browser version of the SDK, +not all of the services are available in the default hosted build (using the +script tag provided above). A list of services in the hosted build are provided +in the "Working With Services" +section of the browser SDK guide, including instructions on how to build a +custom version of the SDK with extra services. +

+ +The SDK currently supports the following services: + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Service NameClass NameAPI Version
Amazon API GatewayAWS.APIGateway2015-07-09
Amazon CloudFrontAWS.CloudFront2014-10-21
Amazon CloudHSMAWS.CloudHSM2014-05-30
Amazon CloudSearchAWS.CloudSearch2013-01-01
Amazon CloudSearch DomainAWS.CloudSearchDomain2013-01-01
Amazon CloudWatchAWS.CloudWatch2010-08-01
Amazon CloudWatch EventsAWS.CloudWatchLogs2015-10-07
Amazon CloudWatch LogsAWS.CloudWatchLogs2014-03-28
Amazon Cognito IdentityAWS.CognitoIdentity2014-06-30
Amazon Cognito SyncAWS.CognitoSync2014-06-30
Amazon DynamoDBAWS.DynamoDB2012-08-10
Amazon DynamoDB StreamsAWS.DynamoDBStreams2012-08-10
Amazon EC2 Container RegistryAWS.ECR2015-09-21
Amazon EC2 Container ServiceAWS.ECS2014-11-13
Amazon Elastic Compute CloudAWS.EC22014-10-01
Amazon Elastic File SystemAWS.EFS2015-02-01
Amazon Elastic MapReduceAWS.EMR2009-03-31
Amazon Elastic TranscoderAWS.ElasticTranscoder2012-09-25
Amazon ElastiCacheAWS.ElastiCache2014-09-30
Amazon Elasticsearch ServiceAWS.ES2015-01-01
Amazon GameLiftAWS.GameLift2015-10-01
Amazon GlacierAWS.Glacier2012-06-01
Amazon InspectorAWS.Inspector2016-02-16
Amazon KinesisAWS.Kinesis2013-12-02
Amazon Kinesis AnalyticsAWS.KinesisAnalytics2015-08-14
Amazon Kinesis FirehoseAWS.Firehose2015-08-04
Amazon Machine LearningAWS.MachineLearning2014-12-12
Amazon Mobile AnalyticsAWS.MobileAnalytics2014-06-05
Amazon RedshiftAWS.Redshift2012-12-01
Amazon Relational Database ServiceAWS.RDS2014-09-01
Amazon Route 53AWS.Route532013-04-01
Amazon Route 53 DomainsAWS.Route53Domains2014-05-15
Amazon Simple Email ServiceAWS.SES2010-12-01
Amazon Simple Notification ServiceAWS.SNS2010-03-31
Amazon Simple Queue ServiceAWS.SQS2012-11-05
Amazon Simple Storage ServiceAWS.S32006-03-01
Amazon Simple Systems Management ServiceAWS.SSM2014-11-06
Amazon Simple Workflow ServiceAWS.SWF2012-01-25
Amazon SimpleDBAWS.SimpleDB2009-04-15
Amazon SnowballAWS.Snowball2016-06-30
Amazon WorkSpacesAWS.WorkSpaces2015-04-08
Auto ScalingAWS.AutoScaling2011-01-01
AWS Certificate ManagerAWS.ACM2015-12-08
AWS CloudFormationAWS.CloudFormation2010-05-15
AWS CloudTrailAWS.CloudTrail2013-11-01
AWS CodeCommitAWS.CodeCommit2015-04-13
AWS CodeDeployAWS.CodeDeploy2014-10-06
AWS CodePipelineAWS.CodePipeline2015-07-09
AWS ConfigAWS.ConfigService2014-11-12
AWS Data PipelineAWS.DataPipeline2012-10-29
AWS Database Migration ServiceAWS.DMS2016-01-01
AWS Device FarmAWS.DeviceFarm2015-06-23
AWS Direct ConnectAWS.DirectConnect2012-10-25
AWS Directory ServiceAWS.DirectoryService2015-04-16
AWS Elastic BeanstalkAWS.ElasticBeanstalk2010-12-01
AWS Identity and Access ManagementAWS.IAM2010-05-08
AWS Import/ExportAWS.ImportExport2010-06-01
AWS IoTAWS.Iot2015-05-28
AWS IoT Data PlaneAWS.IotData2015-05-28
AWS Key Management ServiceAWS.KMS2014-11-01
AWS LambdaAWS.Lambda2015-03-31
AWS Marketplace Commerce AnalyticsAWS.MarketplaceCommerceAnalytics2015-07-01
AWS Marketplace MeteringAWS.MarketplaceMetering2016-01-14
AWS OpsWorksAWS.OpsWorks2013-02-18
AWS Security Token ServiceAWS.STS2011-06-15
AWS Storage GatewayAWS.StorageGateway2013-06-30
AWS SupportAWS.Support2013-04-15
AWS WAFAWS.WAF2015-08-24
Elastic Load BalancingAWS.ELB2012-06-01
Elastic Load Balancing v2AWS.ELBv22015-12-01
+ +## License + +This SDK is distributed under the +[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), +see LICENSE.txt and NOTICE.txt for more information. diff --git a/node_modules/aws-sdk/UPGRADING.md b/node_modules/aws-sdk/UPGRADING.md new file mode 100644 index 0000000..f67fd91 --- /dev/null +++ b/node_modules/aws-sdk/UPGRADING.md @@ -0,0 +1,157 @@ +# @!title Upgrading Notes (1.x to 2.0) + +# Upgrading Notes (1.x to 2.0) + +This document captures breaking changes from 1.x versions to the first +stable 2.x (non-RC) release of the AWS SDK for JavaScript. + +## 1. Automatic Conversion of Base64 and Timestamp Types on Input/Output + +The SDK will now automatically encode and decode base64-encoded values, as well +as timestamp values, on the user's behalf. This change affects any operation +where Base64 or Timestamp values were sent by a request or returned in a +response, i.e., `AWS.DynamoDB` and `AWS.SQS`, which allow for Base64 +encoded values. + +User code that previously did base64 conversion no longer requires this. +Furthermore, values encoded as base64 are now returned as Buffer objects +from server responses (and can also be passed as Buffer input). For +example, the following 1.x `SQS.sendMessage()` parameters: + +```javascript +var params = { + MessageBody: 'Some Message', + MessageAttributes: { + attrName: { + DataType: 'Binary', + BinaryValue: new Buffer('example text').toString('base64') + } + } +}; +``` + +Can be rewritten as: + +```javascript +var params = { + MessageBody: 'Some Message', + MessageAttributes: { + attrName: { + DataType: 'Binary', + BinaryValue: 'example text' + } + } +}; +``` + +And the message will be read as: + +```javascript +sqs.receiveMessage(params, function(err, data) { + // buf is + var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue; + console.log(buf.toString()); // "example text" +}); +``` + +## 2. Moved response.data.RequestId to response.requestId + +The SDK now stores request IDs for all services in a consistent place on the +response object, rather than inside the response.data property. This is to +improve consistency across services that expose request IDs in different ways. +Note that this is also a breaking change that renames the +`response.data.RequestId` property to `response.requestId` +(or `this.requestId` inside of a callback). + +To migrate your code, change: + +```javascript +svc.operation(params, function (err, data) { + console.log('Request ID:', data.RequestId); +}); +``` + +To the following: + +```javascript +svc.operation(params, function () { + console.log('Request ID:', this.requestId); +}); +``` + +## 3. Exposed Wrapper Elements + +If you use {AWS.ElastiCache}, {AWS.RDS}, or {AWS.Redshift}, you must now access +the response through the top-level output property in the response for certain +operations. This change corrects the SDK to behave according to documentation +output, which was previously listing this wrapper element. + +Example: + +`RDS.describeEngineDefaultParameters()` used to return: + +```javascript +{ Parameters: [ ... ] } +``` + +This operation now returns: + +```javascript +{ EngineDefaults: { Parameters: [ ... ] } } +``` + +The full list of affected operations for each service are: + +**AWS.ElastiCache**: authorizeCacheSecurityGroupIngress, createCacheCluster, +createCacheParameterGroup, createCacheSecurityGroup, createCacheSubnetGroup, +createReplicationGroup, deleteCacheCluster, deleteReplicationGroup, +describeEngineDefaultParameters, modifyCacheCluster, modifyCacheSubnetGroup, +modifyReplicationGroup, purchaseReservedCacheNodesOffering, rebootCacheCluster, +revokeCacheSecurityGroupIngress + +**AWS.RDS**: addSourceIdentifierToSubscription, authorizeDBSecurityGroupIngress, +copyDBSnapshot, createDBInstance, createDBInstanceReadReplica, +createDBParameterGroup, createDBSecurityGroup, createDBSnapshot, +createDBSubnetGroup, createEventSubscription, createOptionGroup, +deleteDBInstance, deleteDBSnapshot, deleteEventSubscription, +describeEngineDefaultParameters, modifyDBInstance, modifyDBSubnetGroup, +modifyEventSubscription, modifyOptionGroup, promoteReadReplica, +purchaseReservedDBInstancesOffering, rebootDBInstance, +removeSourceIdentifierFromSubscription, restoreDBInstanceFromDBSnapshot, +restoreDBInstanceToPointInTime, revokeDBSecurityGroupIngress + +**AWS.Redshift**: authorizeClusterSecurityGroupIngress, authorizeSnapshotAccess, +copyClusterSnapshot, createCluster, createClusterParameterGroup, +createClusterSecurityGroup, createClusterSnapshot, createClusterSubnetGroup, +createEventSubscription, createHsmClientCertificate, createHsmConfiguration, +deleteCluster, deleteClusterSnapshot, describeDefaultClusterParameters, +disableSnapshotCopy, enableSnapshotCopy, modifyCluster, +modifyClusterSubnetGroup, modifyEventSubscription, +modifySnapshotCopyRetentionPeriod, purchaseReservedNodeOffering, rebootCluster, +restoreFromClusterSnapshot, revokeClusterSecurityGroupIngress, +revokeSnapshotAccess, rotateEncryptionKey + +## 4. Dropped `.Client` and `.client` Properties + +The `.Client` and `.client` properties have been removed from Service objects. +If you are using the `.Client` property on a Service class or a `.client` +property on an instance of the service, remove these properties from your code. + +Upgrading example: + +The following 1.x code: + +``` +var sts = new AWS.STS.Client(); +// or +var sts = new AWS.STS(); + +sts.client.operation(...); +``` + +Should be changed to the following: + +``` +var sts = new AWS.STS(); +sts.operation(...) +``` diff --git a/node_modules/aws-sdk/apis/acm-2015-12-08.min.json b/node_modules/aws-sdk/apis/acm-2015-12-08.min.json new file mode 100644 index 0000000..597156f --- /dev/null +++ b/node_modules/aws-sdk/apis/acm-2015-12-08.min.json @@ -0,0 +1,263 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-12-08", + "endpointPrefix": "acm", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "ACM", + "serviceFullName": "AWS Certificate Manager", + "signatureVersion": "v4", + "targetPrefix": "CertificateManager" + }, + "operations": { + "AddTagsToCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn", + "Tags" + ], + "members": { + "CertificateArn": {}, + "Tags": { + "shape": "S3" + } + } + } + }, + "DeleteCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn" + ], + "members": { + "CertificateArn": {} + } + } + }, + "DescribeCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn" + ], + "members": { + "CertificateArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Certificate": { + "type": "structure", + "members": { + "CertificateArn": {}, + "DomainName": {}, + "SubjectAlternativeNames": { + "shape": "Sc" + }, + "DomainValidationOptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "ValidationEmails": { + "type": "list", + "member": {} + }, + "ValidationDomain": {} + } + } + }, + "Serial": {}, + "Subject": {}, + "Issuer": {}, + "CreatedAt": { + "type": "timestamp" + }, + "IssuedAt": { + "type": "timestamp" + }, + "Status": {}, + "RevokedAt": { + "type": "timestamp" + }, + "RevocationReason": {}, + "NotBefore": { + "type": "timestamp" + }, + "NotAfter": { + "type": "timestamp" + }, + "KeyAlgorithm": {}, + "SignatureAlgorithm": {}, + "InUseBy": { + "type": "list", + "member": {} + }, + "FailureReason": {} + } + } + } + } + }, + "GetCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn" + ], + "members": { + "CertificateArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Certificate": {}, + "CertificateChain": {} + } + } + }, + "ListCertificates": { + "input": { + "type": "structure", + "members": { + "CertificateStatuses": { + "type": "list", + "member": {} + }, + "NextToken": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextToken": {}, + "CertificateSummaryList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CertificateArn": {}, + "DomainName": {} + } + } + } + } + } + }, + "ListTagsForCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn" + ], + "members": { + "CertificateArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Tags": { + "shape": "S3" + } + } + } + }, + "RemoveTagsFromCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn", + "Tags" + ], + "members": { + "CertificateArn": {}, + "Tags": { + "shape": "S3" + } + } + } + }, + "RequestCertificate": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "SubjectAlternativeNames": { + "shape": "Sc" + }, + "IdempotencyToken": {}, + "DomainValidationOptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DomainName", + "ValidationDomain" + ], + "members": { + "DomainName": {}, + "ValidationDomain": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "CertificateArn": {} + } + } + }, + "ResendValidationEmail": { + "input": { + "type": "structure", + "required": [ + "CertificateArn", + "Domain", + "ValidationDomain" + ], + "members": { + "CertificateArn": {}, + "Domain": {}, + "ValidationDomain": {} + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sc": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json b/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json new file mode 100644 index 0000000..036e358 --- /dev/null +++ b/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json @@ -0,0 +1,10 @@ +{ + "pagination": { + "ListCertificates": { + "limit_key": "MaxItems", + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "CertificateSummaryList" + } + } +} diff --git a/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json b/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json new file mode 100644 index 0000000..fc7db1c --- /dev/null +++ b/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json @@ -0,0 +1,3154 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-07-09", + "endpointPrefix": "apigateway", + "protocol": "rest-json", + "serviceFullName": "Amazon API Gateway", + "signatureVersion": "v4" + }, + "operations": { + "CreateApiKey": { + "http": { + "requestUri": "/apikeys", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "name": {}, + "description": {}, + "enabled": { + "type": "boolean" + }, + "generateDistinctId": { + "type": "boolean" + }, + "value": {}, + "stageKeys": { + "type": "list", + "member": { + "type": "structure", + "members": { + "restApiId": {}, + "stageName": {} + } + } + } + } + }, + "output": { + "shape": "S6" + } + }, + "CreateAuthorizer": { + "http": { + "requestUri": "/restapis/{restapi_id}/authorizers", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "name", + "type", + "identitySource" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "name": {}, + "type": {}, + "providerARNs": { + "shape": "Sb" + }, + "authType": {}, + "authorizerUri": {}, + "authorizerCredentials": {}, + "identitySource": {}, + "identityValidationExpression": {}, + "authorizerResultTtlInSeconds": { + "type": "integer" + } + } + }, + "output": { + "shape": "Se" + } + }, + "CreateBasePathMapping": { + "http": { + "requestUri": "/domainnames/{domain_name}/basepathmappings", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "domainName", + "restApiId" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + }, + "basePath": {}, + "restApiId": {}, + "stage": {} + } + }, + "output": { + "shape": "Sg" + } + }, + "CreateDeployment": { + "http": { + "requestUri": "/restapis/{restapi_id}/deployments", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": {}, + "stageDescription": {}, + "description": {}, + "cacheClusterEnabled": { + "type": "boolean" + }, + "cacheClusterSize": {}, + "variables": { + "shape": "Sk" + } + } + }, + "output": { + "shape": "Sl" + } + }, + "CreateDomainName": { + "http": { + "requestUri": "/domainnames", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "domainName", + "certificateName", + "certificateBody", + "certificatePrivateKey", + "certificateChain" + ], + "members": { + "domainName": {}, + "certificateName": {}, + "certificateBody": {}, + "certificatePrivateKey": {}, + "certificateChain": {} + } + }, + "output": { + "shape": "Sq" + } + }, + "CreateModel": { + "http": { + "requestUri": "/restapis/{restapi_id}/models", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "name", + "contentType" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "name": {}, + "description": {}, + "schema": {}, + "contentType": {} + } + }, + "output": { + "shape": "Ss" + } + }, + "CreateResource": { + "http": { + "requestUri": "/restapis/{restapi_id}/resources/{parent_id}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "parentId", + "pathPart" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "parentId": { + "location": "uri", + "locationName": "parent_id" + }, + "pathPart": {} + } + }, + "output": { + "shape": "Su" + } + }, + "CreateRestApi": { + "http": { + "requestUri": "/restapis", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {}, + "description": {}, + "cloneFrom": {} + } + }, + "output": { + "shape": "S16" + } + }, + "CreateStage": { + "http": { + "requestUri": "/restapis/{restapi_id}/stages", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName", + "deploymentId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": {}, + "deploymentId": {}, + "description": {}, + "cacheClusterEnabled": { + "type": "boolean" + }, + "cacheClusterSize": {}, + "variables": { + "shape": "Sk" + } + } + }, + "output": { + "shape": "S18" + } + }, + "CreateUsagePlan": { + "http": { + "requestUri": "/usageplans", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {}, + "description": {}, + "apiStages": { + "shape": "S1g" + }, + "throttle": { + "shape": "S1i" + }, + "quota": { + "shape": "S1j" + } + } + }, + "output": { + "shape": "S1l" + } + }, + "CreateUsagePlanKey": { + "http": { + "requestUri": "/usageplans/{usageplanId}/keys", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId", + "keyId", + "keyType" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "keyId": {}, + "keyType": {} + } + }, + "output": { + "shape": "S1n" + } + }, + "DeleteApiKey": { + "http": { + "method": "DELETE", + "requestUri": "/apikeys/{api_Key}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "apiKey" + ], + "members": { + "apiKey": { + "location": "uri", + "locationName": "api_Key" + } + } + } + }, + "DeleteAuthorizer": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "authorizerId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "authorizerId": { + "location": "uri", + "locationName": "authorizer_id" + } + } + } + }, + "DeleteBasePathMapping": { + "http": { + "method": "DELETE", + "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "domainName", + "basePath" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + }, + "basePath": { + "location": "uri", + "locationName": "base_path" + } + } + } + }, + "DeleteClientCertificate": { + "http": { + "method": "DELETE", + "requestUri": "/clientcertificates/{clientcertificate_id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "clientCertificateId" + ], + "members": { + "clientCertificateId": { + "location": "uri", + "locationName": "clientcertificate_id" + } + } + } + }, + "DeleteDeployment": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "deploymentId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "deploymentId": { + "location": "uri", + "locationName": "deployment_id" + } + } + } + }, + "DeleteDomainName": { + "http": { + "method": "DELETE", + "requestUri": "/domainnames/{domain_name}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "domainName" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + } + } + } + }, + "DeleteIntegration": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + } + } + } + }, + "DeleteIntegrationResponse": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + } + } + } + }, + "DeleteMethod": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + } + } + } + }, + "DeleteMethodResponse": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + } + } + } + }, + "DeleteModel": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/models/{model_name}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "modelName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "modelName": { + "location": "uri", + "locationName": "model_name" + } + } + } + }, + "DeleteResource": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + } + } + } + }, + "DeleteRestApi": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + } + } + } + }, + "DeleteStage": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + } + } + } + }, + "DeleteUsagePlan": { + "http": { + "method": "DELETE", + "requestUri": "/usageplans/{usageplanId}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + } + } + } + }, + "DeleteUsagePlanKey": { + "http": { + "method": "DELETE", + "requestUri": "/usageplans/{usageplanId}/keys/{keyId}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId", + "keyId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "keyId": { + "location": "uri", + "locationName": "keyId" + } + } + } + }, + "FlushStageAuthorizersCache": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + } + } + } + }, + "FlushStageCache": { + "http": { + "method": "DELETE", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/data", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + } + } + } + }, + "GenerateClientCertificate": { + "http": { + "requestUri": "/clientcertificates", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "description": {} + } + }, + "output": { + "shape": "S27" + } + }, + "GetAccount": { + "http": { + "method": "GET", + "requestUri": "/account" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "shape": "S29" + } + }, + "GetApiKey": { + "http": { + "method": "GET", + "requestUri": "/apikeys/{api_Key}" + }, + "input": { + "type": "structure", + "required": [ + "apiKey" + ], + "members": { + "apiKey": { + "location": "uri", + "locationName": "api_Key" + }, + "includeValue": { + "location": "querystring", + "locationName": "includeValue", + "type": "boolean" + } + } + }, + "output": { + "shape": "S6" + } + }, + "GetApiKeys": { + "http": { + "method": "GET", + "requestUri": "/apikeys" + }, + "input": { + "type": "structure", + "members": { + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + }, + "nameQuery": { + "location": "querystring", + "locationName": "name" + }, + "includeValues": { + "location": "querystring", + "locationName": "includeValues", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "warnings": { + "shape": "S8" + }, + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "S6" + } + } + } + } + }, + "GetAuthorizer": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "authorizerId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "authorizerId": { + "location": "uri", + "locationName": "authorizer_id" + } + } + }, + "output": { + "shape": "Se" + } + }, + "GetAuthorizers": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/authorizers" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "Se" + } + } + } + } + }, + "GetBasePathMapping": { + "http": { + "method": "GET", + "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}" + }, + "input": { + "type": "structure", + "required": [ + "domainName", + "basePath" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + }, + "basePath": { + "location": "uri", + "locationName": "base_path" + } + } + }, + "output": { + "shape": "Sg" + } + }, + "GetBasePathMappings": { + "http": { + "method": "GET", + "requestUri": "/domainnames/{domain_name}/basepathmappings" + }, + "input": { + "type": "structure", + "required": [ + "domainName" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "Sg" + } + } + } + } + }, + "GetClientCertificate": { + "http": { + "method": "GET", + "requestUri": "/clientcertificates/{clientcertificate_id}" + }, + "input": { + "type": "structure", + "required": [ + "clientCertificateId" + ], + "members": { + "clientCertificateId": { + "location": "uri", + "locationName": "clientcertificate_id" + } + } + }, + "output": { + "shape": "S27" + } + }, + "GetClientCertificates": { + "http": { + "method": "GET", + "requestUri": "/clientcertificates" + }, + "input": { + "type": "structure", + "members": { + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "S27" + } + } + } + } + }, + "GetDeployment": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "deploymentId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "deploymentId": { + "location": "uri", + "locationName": "deployment_id" + } + } + }, + "output": { + "shape": "Sl" + } + }, + "GetDeployments": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/deployments" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "Sl" + } + } + } + } + }, + "GetDomainName": { + "http": { + "method": "GET", + "requestUri": "/domainnames/{domain_name}" + }, + "input": { + "type": "structure", + "required": [ + "domainName" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + } + } + }, + "output": { + "shape": "Sq" + } + }, + "GetDomainNames": { + "http": { + "method": "GET", + "requestUri": "/domainnames" + }, + "input": { + "type": "structure", + "members": { + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "Sq" + } + } + } + } + }, + "GetExport": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName", + "exportType" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + }, + "exportType": { + "location": "uri", + "locationName": "export_type" + }, + "parameters": { + "shape": "Sk", + "location": "querystring" + }, + "accepts": { + "location": "header", + "locationName": "Accept" + } + } + }, + "output": { + "type": "structure", + "members": { + "contentType": { + "location": "header", + "locationName": "Content-Type" + }, + "contentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "body": { + "type": "blob" + } + }, + "payload": "body" + } + }, + "GetIntegration": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + } + } + }, + "output": { + "shape": "S11" + } + }, + "GetIntegrationResponse": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + } + } + }, + "output": { + "shape": "S14" + } + }, + "GetMethod": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + } + } + }, + "output": { + "shape": "Sw" + } + }, + "GetMethodResponse": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + } + } + }, + "output": { + "shape": "Sz" + } + }, + "GetModel": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/models/{model_name}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "modelName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "modelName": { + "location": "uri", + "locationName": "model_name" + }, + "flatten": { + "location": "querystring", + "locationName": "flatten", + "type": "boolean" + } + } + }, + "output": { + "shape": "Ss" + } + }, + "GetModelTemplate": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/models/{model_name}/default_template" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "modelName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "modelName": { + "location": "uri", + "locationName": "model_name" + } + } + }, + "output": { + "type": "structure", + "members": { + "value": {} + } + } + }, + "GetModels": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/models" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "Ss" + } + } + } + } + }, + "GetResource": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + } + } + }, + "output": { + "shape": "Su" + } + }, + "GetResources": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/resources" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "Su" + } + } + } + } + }, + "GetRestApi": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + } + } + }, + "output": { + "shape": "S16" + } + }, + "GetRestApis": { + "http": { + "method": "GET", + "requestUri": "/restapis" + }, + "input": { + "type": "structure", + "members": { + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "S16" + } + } + } + } + }, + "GetSdk": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName", + "sdkType" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + }, + "sdkType": { + "location": "uri", + "locationName": "sdk_type" + }, + "parameters": { + "shape": "Sk", + "location": "querystring" + } + } + }, + "output": { + "type": "structure", + "members": { + "contentType": { + "location": "header", + "locationName": "Content-Type" + }, + "contentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "body": { + "type": "blob" + } + }, + "payload": "body" + } + }, + "GetStage": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + } + } + }, + "output": { + "shape": "S18" + } + }, + "GetStages": { + "http": { + "method": "GET", + "requestUri": "/restapis/{restapi_id}/stages" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "deploymentId": { + "location": "querystring", + "locationName": "deploymentId" + } + } + }, + "output": { + "type": "structure", + "members": { + "item": { + "type": "list", + "member": { + "shape": "S18" + } + } + } + } + }, + "GetUsage": { + "http": { + "method": "GET", + "requestUri": "/usageplans/{usageplanId}/usage" + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId", + "startDate", + "endDate" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "keyId": { + "location": "querystring", + "locationName": "keyId" + }, + "startDate": { + "location": "querystring", + "locationName": "startDate" + }, + "endDate": { + "location": "querystring", + "locationName": "endDate" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "shape": "S3q" + } + }, + "GetUsagePlan": { + "http": { + "method": "GET", + "requestUri": "/usageplans/{usageplanId}" + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + } + } + }, + "output": { + "shape": "S1l" + } + }, + "GetUsagePlanKey": { + "http": { + "method": "GET", + "requestUri": "/usageplans/{usageplanId}/keys/{keyId}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId", + "keyId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "keyId": { + "location": "uri", + "locationName": "keyId" + } + } + }, + "output": { + "shape": "S1n" + } + }, + "GetUsagePlanKeys": { + "http": { + "method": "GET", + "requestUri": "/usageplans/{usageplanId}/keys" + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "position": { + "location": "querystring", + "locationName": "position" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + }, + "nameQuery": { + "location": "querystring", + "locationName": "name" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "S1n" + } + } + } + } + }, + "GetUsagePlans": { + "http": { + "method": "GET", + "requestUri": "/usageplans" + }, + "input": { + "type": "structure", + "members": { + "position": { + "location": "querystring", + "locationName": "position" + }, + "keyId": { + "location": "querystring", + "locationName": "keyId" + }, + "limit": { + "location": "querystring", + "locationName": "limit", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "position": {}, + "items": { + "locationName": "item", + "type": "list", + "member": { + "shape": "S1l" + } + } + } + } + }, + "ImportApiKeys": { + "http": { + "requestUri": "/apikeys?mode=import", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "body", + "format" + ], + "members": { + "body": { + "type": "blob" + }, + "format": { + "location": "querystring", + "locationName": "format" + }, + "failOnWarnings": { + "location": "querystring", + "locationName": "failonwarnings", + "type": "boolean" + } + }, + "payload": "body" + }, + "output": { + "type": "structure", + "members": { + "ids": { + "shape": "S8" + }, + "warnings": { + "shape": "S8" + } + } + } + }, + "ImportRestApi": { + "http": { + "requestUri": "/restapis?mode=import", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "body" + ], + "members": { + "failOnWarnings": { + "location": "querystring", + "locationName": "failonwarnings", + "type": "boolean" + }, + "parameters": { + "shape": "Sk", + "location": "querystring" + }, + "body": { + "type": "blob" + } + }, + "payload": "body" + }, + "output": { + "shape": "S16" + } + }, + "PutIntegration": { + "http": { + "method": "PUT", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "type" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "type": {}, + "integrationHttpMethod": { + "locationName": "httpMethod" + }, + "uri": {}, + "credentials": {}, + "requestParameters": { + "shape": "Sk" + }, + "requestTemplates": { + "shape": "Sk" + }, + "passthroughBehavior": {}, + "cacheNamespace": {}, + "cacheKeyParameters": { + "shape": "S8" + } + } + }, + "output": { + "shape": "S11" + } + }, + "PutIntegrationResponse": { + "http": { + "method": "PUT", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + }, + "selectionPattern": {}, + "responseParameters": { + "shape": "Sk" + }, + "responseTemplates": { + "shape": "Sk" + } + } + }, + "output": { + "shape": "S14" + } + }, + "PutMethod": { + "http": { + "method": "PUT", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "authorizationType" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "authorizationType": {}, + "authorizerId": {}, + "apiKeyRequired": { + "type": "boolean" + }, + "requestParameters": { + "shape": "Sx" + }, + "requestModels": { + "shape": "Sk" + } + } + }, + "output": { + "shape": "Sw" + } + }, + "PutMethodResponse": { + "http": { + "method": "PUT", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + }, + "responseParameters": { + "shape": "Sx" + }, + "responseModels": { + "shape": "Sk" + } + } + }, + "output": { + "shape": "Sz" + } + }, + "PutRestApi": { + "http": { + "method": "PUT", + "requestUri": "/restapis/{restapi_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "body" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "mode": { + "location": "querystring", + "locationName": "mode" + }, + "failOnWarnings": { + "location": "querystring", + "locationName": "failonwarnings", + "type": "boolean" + }, + "parameters": { + "shape": "Sk", + "location": "querystring" + }, + "body": { + "type": "blob" + } + }, + "payload": "body" + }, + "output": { + "shape": "S16" + } + }, + "TestInvokeAuthorizer": { + "http": { + "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "authorizerId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "authorizerId": { + "location": "uri", + "locationName": "authorizer_id" + }, + "headers": { + "shape": "S4e" + }, + "pathWithQueryString": {}, + "body": {}, + "stageVariables": { + "shape": "Sk" + }, + "additionalContext": { + "shape": "Sk" + } + } + }, + "output": { + "type": "structure", + "members": { + "clientStatus": { + "type": "integer" + }, + "log": {}, + "latency": { + "type": "long" + }, + "principalId": {}, + "policy": {}, + "authorization": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "claims": { + "shape": "Sk" + } + } + } + }, + "TestInvokeMethod": { + "http": { + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "pathWithQueryString": {}, + "body": {}, + "headers": { + "shape": "S4e" + }, + "clientCertificateId": {}, + "stageVariables": { + "shape": "Sk" + } + } + }, + "output": { + "type": "structure", + "members": { + "status": { + "type": "integer" + }, + "body": {}, + "headers": { + "shape": "S4e" + }, + "log": {}, + "latency": { + "type": "long" + } + } + } + }, + "UpdateAccount": { + "http": { + "method": "PATCH", + "requestUri": "/account" + }, + "input": { + "type": "structure", + "members": { + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S29" + } + }, + "UpdateApiKey": { + "http": { + "method": "PATCH", + "requestUri": "/apikeys/{api_Key}" + }, + "input": { + "type": "structure", + "required": [ + "apiKey" + ], + "members": { + "apiKey": { + "location": "uri", + "locationName": "api_Key" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S6" + } + }, + "UpdateAuthorizer": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "authorizerId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "authorizerId": { + "location": "uri", + "locationName": "authorizer_id" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Se" + } + }, + "UpdateBasePathMapping": { + "http": { + "method": "PATCH", + "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}" + }, + "input": { + "type": "structure", + "required": [ + "domainName", + "basePath" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + }, + "basePath": { + "location": "uri", + "locationName": "base_path" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Sg" + } + }, + "UpdateClientCertificate": { + "http": { + "method": "PATCH", + "requestUri": "/clientcertificates/{clientcertificate_id}" + }, + "input": { + "type": "structure", + "required": [ + "clientCertificateId" + ], + "members": { + "clientCertificateId": { + "location": "uri", + "locationName": "clientcertificate_id" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S27" + } + }, + "UpdateDeployment": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "deploymentId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "deploymentId": { + "location": "uri", + "locationName": "deployment_id" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Sl" + } + }, + "UpdateDomainName": { + "http": { + "method": "PATCH", + "requestUri": "/domainnames/{domain_name}" + }, + "input": { + "type": "structure", + "required": [ + "domainName" + ], + "members": { + "domainName": { + "location": "uri", + "locationName": "domain_name" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Sq" + } + }, + "UpdateIntegration": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S11" + } + }, + "UpdateIntegrationResponse": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S14" + } + }, + "UpdateMethod": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Sw" + } + }, + "UpdateMethodResponse": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId", + "httpMethod", + "statusCode" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "httpMethod": { + "location": "uri", + "locationName": "http_method" + }, + "statusCode": { + "location": "uri", + "locationName": "status_code" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Sz" + } + }, + "UpdateModel": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/models/{model_name}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "modelName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "modelName": { + "location": "uri", + "locationName": "model_name" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Ss" + } + }, + "UpdateResource": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/resources/{resource_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "resourceId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "resourceId": { + "location": "uri", + "locationName": "resource_id" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "Su" + } + }, + "UpdateRestApi": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S16" + } + }, + "UpdateStage": { + "http": { + "method": "PATCH", + "requestUri": "/restapis/{restapi_id}/stages/{stage_name}" + }, + "input": { + "type": "structure", + "required": [ + "restApiId", + "stageName" + ], + "members": { + "restApiId": { + "location": "uri", + "locationName": "restapi_id" + }, + "stageName": { + "location": "uri", + "locationName": "stage_name" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S18" + } + }, + "UpdateUsage": { + "http": { + "method": "PATCH", + "requestUri": "/usageplans/{usageplanId}/keys/{keyId}/usage" + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId", + "keyId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "keyId": { + "location": "uri", + "locationName": "keyId" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S3q" + } + }, + "UpdateUsagePlan": { + "http": { + "method": "PATCH", + "requestUri": "/usageplans/{usageplanId}" + }, + "input": { + "type": "structure", + "required": [ + "usagePlanId" + ], + "members": { + "usagePlanId": { + "location": "uri", + "locationName": "usageplanId" + }, + "patchOperations": { + "shape": "S4k" + } + } + }, + "output": { + "shape": "S1l" + } + } + }, + "shapes": { + "S6": { + "type": "structure", + "members": { + "id": {}, + "value": {}, + "name": {}, + "description": {}, + "enabled": { + "type": "boolean" + }, + "createdDate": { + "type": "timestamp" + }, + "lastUpdatedDate": { + "type": "timestamp" + }, + "stageKeys": { + "shape": "S8" + } + } + }, + "S8": { + "type": "list", + "member": {} + }, + "Sb": { + "type": "list", + "member": {} + }, + "Se": { + "type": "structure", + "members": { + "id": {}, + "name": {}, + "type": {}, + "providerARNs": { + "shape": "Sb" + }, + "authType": {}, + "authorizerUri": {}, + "authorizerCredentials": {}, + "identitySource": {}, + "identityValidationExpression": {}, + "authorizerResultTtlInSeconds": { + "type": "integer" + } + } + }, + "Sg": { + "type": "structure", + "members": { + "basePath": {}, + "restApiId": {}, + "stage": {} + } + }, + "Sk": { + "type": "map", + "key": {}, + "value": {} + }, + "Sl": { + "type": "structure", + "members": { + "id": {}, + "description": {}, + "createdDate": { + "type": "timestamp" + }, + "apiSummary": { + "type": "map", + "key": {}, + "value": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "authorizationType": {}, + "apiKeyRequired": { + "type": "boolean" + } + } + } + } + } + } + }, + "Sq": { + "type": "structure", + "members": { + "domainName": {}, + "certificateName": {}, + "certificateUploadDate": { + "type": "timestamp" + }, + "distributionDomainName": {} + } + }, + "Ss": { + "type": "structure", + "members": { + "id": {}, + "name": {}, + "description": {}, + "schema": {}, + "contentType": {} + } + }, + "Su": { + "type": "structure", + "members": { + "id": {}, + "parentId": {}, + "pathPart": {}, + "path": {}, + "resourceMethods": { + "type": "map", + "key": {}, + "value": { + "shape": "Sw" + } + } + } + }, + "Sw": { + "type": "structure", + "members": { + "httpMethod": {}, + "authorizationType": {}, + "authorizerId": {}, + "apiKeyRequired": { + "type": "boolean" + }, + "requestParameters": { + "shape": "Sx" + }, + "requestModels": { + "shape": "Sk" + }, + "methodResponses": { + "type": "map", + "key": {}, + "value": { + "shape": "Sz" + } + }, + "methodIntegration": { + "shape": "S11" + } + } + }, + "Sx": { + "type": "map", + "key": {}, + "value": { + "type": "boolean" + } + }, + "Sz": { + "type": "structure", + "members": { + "statusCode": {}, + "responseParameters": { + "shape": "Sx" + }, + "responseModels": { + "shape": "Sk" + } + } + }, + "S11": { + "type": "structure", + "members": { + "type": {}, + "httpMethod": {}, + "uri": {}, + "credentials": {}, + "requestParameters": { + "shape": "Sk" + }, + "requestTemplates": { + "shape": "Sk" + }, + "passthroughBehavior": {}, + "cacheNamespace": {}, + "cacheKeyParameters": { + "shape": "S8" + }, + "integrationResponses": { + "type": "map", + "key": {}, + "value": { + "shape": "S14" + } + } + } + }, + "S14": { + "type": "structure", + "members": { + "statusCode": {}, + "selectionPattern": {}, + "responseParameters": { + "shape": "Sk" + }, + "responseTemplates": { + "shape": "Sk" + } + } + }, + "S16": { + "type": "structure", + "members": { + "id": {}, + "name": {}, + "description": {}, + "createdDate": { + "type": "timestamp" + }, + "warnings": { + "shape": "S8" + } + } + }, + "S18": { + "type": "structure", + "members": { + "deploymentId": {}, + "clientCertificateId": {}, + "stageName": {}, + "description": {}, + "cacheClusterEnabled": { + "type": "boolean" + }, + "cacheClusterSize": {}, + "cacheClusterStatus": {}, + "methodSettings": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "metricsEnabled": { + "type": "boolean" + }, + "loggingLevel": {}, + "dataTraceEnabled": { + "type": "boolean" + }, + "throttlingBurstLimit": { + "type": "integer" + }, + "throttlingRateLimit": { + "type": "double" + }, + "cachingEnabled": { + "type": "boolean" + }, + "cacheTtlInSeconds": { + "type": "integer" + }, + "cacheDataEncrypted": { + "type": "boolean" + }, + "requireAuthorizationForCacheControl": { + "type": "boolean" + }, + "unauthorizedCacheControlHeaderStrategy": {} + } + } + }, + "variables": { + "shape": "Sk" + }, + "createdDate": { + "type": "timestamp" + }, + "lastUpdatedDate": { + "type": "timestamp" + } + } + }, + "S1g": { + "type": "list", + "member": { + "type": "structure", + "members": { + "apiId": {}, + "stage": {} + } + } + }, + "S1i": { + "type": "structure", + "members": { + "burstLimit": { + "type": "integer" + }, + "rateLimit": { + "type": "double" + } + } + }, + "S1j": { + "type": "structure", + "members": { + "limit": { + "type": "integer" + }, + "offset": { + "type": "integer" + }, + "period": {} + } + }, + "S1l": { + "type": "structure", + "members": { + "id": {}, + "name": {}, + "description": {}, + "apiStages": { + "shape": "S1g" + }, + "throttle": { + "shape": "S1i" + }, + "quota": { + "shape": "S1j" + } + } + }, + "S1n": { + "type": "structure", + "members": { + "id": {}, + "type": {}, + "value": {}, + "name": {} + } + }, + "S27": { + "type": "structure", + "members": { + "clientCertificateId": {}, + "description": {}, + "pemEncodedCertificate": {}, + "createdDate": { + "type": "timestamp" + }, + "expirationDate": { + "type": "timestamp" + } + } + }, + "S29": { + "type": "structure", + "members": { + "cloudwatchRoleArn": {}, + "throttleSettings": { + "shape": "S1i" + }, + "features": { + "shape": "S8" + }, + "apiKeyVersion": {} + } + }, + "S3q": { + "type": "structure", + "members": { + "usagePlanId": {}, + "startDate": {}, + "endDate": {}, + "position": {}, + "items": { + "locationName": "values", + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "type": "list", + "member": { + "type": "long" + } + } + } + } + } + }, + "S4e": { + "type": "map", + "key": {}, + "value": {} + }, + "S4k": { + "type": "list", + "member": { + "type": "structure", + "members": { + "op": {}, + "path": {}, + "value": {}, + "from": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json b/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json new file mode 100644 index 0000000..7a6965b --- /dev/null +++ b/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json @@ -0,0 +1,70 @@ +{ + "pagination": { + "GetApiKeys": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetBasePathMappings": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetClientCertificates": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetDeployments": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetDomainNames": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetModels": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetResources": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetRestApis": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetUsage": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetUsagePlans": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + }, + "GetUsagePlanKeys": { + "input_token": "position", + "output_token": "position", + "limit_key": "limit", + "result_key": "items" + } + } +} diff --git a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json new file mode 100644 index 0000000..53415ec --- /dev/null +++ b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json @@ -0,0 +1,257 @@ +{ + "version": "1.0", + "examples": { + "DeleteScalingPolicy": [ + { + "input": { + "PolicyName": "web-app-cpu-lt-25", + "ResourceId": "service/default/web-app", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes a scaling policy for the Amazon ECS service called web-app, which is running in the default cluster.", + "id": "to-delete-a-scaling-policy-1470863892689", + "title": "To delete a scaling policy" + } + ], + "DeregisterScalableTarget": [ + { + "input": { + "ResourceId": "service/default/web-app", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deregisters a scalable target for an Amazon ECS service called web-app that is running in the default cluster.", + "id": "to-deregister-a-scalable-target-1470864164895", + "title": "To deregister a scalable target" + } + ], + "DescribeScalableTargets": [ + { + "input": { + "ServiceNamespace": "ecs" + }, + "output": { + "ScalableTargets": [ + { + "CreationTime": "2016-05-06T11:21:46.199Z", + "MaxCapacity": 10, + "MinCapacity": 1, + "ResourceId": "service/default/web-app", + "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the scalable targets for the ecs service namespace.", + "id": "to-describe-scalable-targets-1470864286961", + "title": "To describe scalable targets" + } + ], + "DescribeScalingActivities": [ + { + "input": { + "ResourceId": "service/default/web-app", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + }, + "output": { + "ScalingActivities": [ + { + "ActivityId": "e6c5f7d1-dbbb-4a3f-89b2-51f33e766399", + "Cause": "monitor alarm web-app-cpu-lt-25 in state ALARM triggered policy web-app-cpu-lt-25", + "Description": "Setting desired count to 1.", + "EndTime": "2016-05-06T16:04:32.111Z", + "ResourceId": "service/default/web-app", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs", + "StartTime": "2016-05-06T16:03:58.171Z", + "StatusCode": "Successful", + "StatusMessage": "Successfully set desired count to 1. Change successfully fulfilled by ecs." + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the scaling activities for an Amazon ECS service called web-app that is running in the default cluster.", + "id": "to-describe-scaling-activities-for-a-scalable-target-1470864398629", + "title": "To describe scaling activities for a scalable target" + } + ], + "DescribeScalingPolicies": [ + { + "input": { + "ServiceNamespace": "ecs" + }, + "output": { + "NextToken": "", + "ScalingPolicies": [ + { + "Alarms": [ + { + "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-gt-75", + "AlarmName": "web-app-cpu-gt-75" + } + ], + "CreationTime": "2016-05-06T12:11:39.230Z", + "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75", + "PolicyName": "web-app-cpu-gt-75", + "PolicyType": "StepScaling", + "ResourceId": "service/default/web-app", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs", + "StepScalingPolicyConfiguration": { + "AdjustmentType": "PercentChangeInCapacity", + "Cooldown": 60, + "StepAdjustments": [ + { + "MetricIntervalLowerBound": 0, + "ScalingAdjustment": 200 + } + ] + } + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the scaling policies for the ecs service namespace.", + "id": "to-describe-scaling-policies-1470864609734", + "title": "To describe scaling policies" + } + ], + "PutScalingPolicy": [ + { + "input": { + "PolicyName": "web-app-cpu-gt-75", + "PolicyType": "StepScaling", + "ResourceId": "service/default/web-app", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs", + "StepScalingPolicyConfiguration": { + "AdjustmentType": "PercentChangeInCapacity", + "Cooldown": 60, + "StepAdjustments": [ + { + "MetricIntervalLowerBound": 0, + "ScalingAdjustment": 200 + } + ] + } + }, + "output": { + "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example applies a scaling policy to an Amazon ECS service called web-app in the default cluster. The policy increases the desired count of the service by 200%, with a cool down period of 60 seconds.", + "id": "to-apply-a-scaling-policy-to-an-amazon-ecs-service-1470864779862", + "title": "To apply a scaling policy to an Amazon ECS service" + }, + { + "input": { + "PolicyName": "fleet-cpu-gt-75", + "PolicyType": "StepScaling", + "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3", + "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity", + "ServiceNamespace": "ec2", + "StepScalingPolicyConfiguration": { + "AdjustmentType": "PercentChangeInCapacity", + "Cooldown": 180, + "StepAdjustments": [ + { + "MetricIntervalLowerBound": 0, + "ScalingAdjustment": 200 + } + ] + } + }, + "output": { + "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678910:scalingPolicy:89406401-0cb7-4130-b770-d97cca0e446b:resource/ec2/spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3:policyName/fleet-cpu-gt-75" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example applies a scaling policy to an Amazon EC2 Spot fleet. The policy increases the target capacity of the spot fleet by 200%, with a cool down period of 180 seconds.\",\n ", + "id": "to-apply-a-scaling-policy-to-an-amazon-ec2-spot-fleet-1472073278469", + "title": "To apply a scaling policy to an Amazon EC2 Spot fleet" + } + ], + "RegisterScalableTarget": [ + { + "input": { + "MaxCapacity": 10, + "MinCapacity": 1, + "ResourceId": "service/default/web-app", + "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole", + "ScalableDimension": "ecs:service:DesiredCount", + "ServiceNamespace": "ecs" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example registers a scalable target from an Amazon ECS service called web-app that is running on the default cluster, with a minimum desired count of 1 task and a maximum desired count of 10 tasks.", + "id": "to-register-a-new-scalable-target-1470864910380", + "title": "To register an ECS service as a scalable target" + }, + { + "input": { + "MaxCapacity": 10, + "MinCapacity": 1, + "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3", + "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingSpotRole", + "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity", + "ServiceNamespace": "ec2" + }, + "output": { + }, + "comments": { + }, + "description": "This example registers a scalable target from an Amazon EC2 Spot fleet with a minimum target capacity of 1 and a maximum of 10.", + "id": "to-register-an-ec2-spot-fleet-as-a-scalable-target-1472072899649", + "title": "To register an EC2 Spot fleet as a scalable target" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json new file mode 100644 index 0000000..469d9d0 --- /dev/null +++ b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json @@ -0,0 +1,330 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-02-06", + "endpointPrefix": "autoscaling", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Application Auto Scaling", + "signatureVersion": "v4", + "signingName": "application-autoscaling", + "targetPrefix": "AnyScaleFrontendService" + }, + "operations": { + "DeleteScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyName", + "ServiceNamespace", + "ResourceId", + "ScalableDimension" + ], + "members": { + "PolicyName": {}, + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeregisterScalableTarget": { + "input": { + "type": "structure", + "required": [ + "ServiceNamespace", + "ResourceId", + "ScalableDimension" + ], + "members": { + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeScalableTargets": { + "input": { + "type": "structure", + "required": [ + "ServiceNamespace" + ], + "members": { + "ServiceNamespace": {}, + "ResourceIds": { + "shape": "S9" + }, + "ScalableDimension": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ScalableTargets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ServiceNamespace", + "ResourceId", + "ScalableDimension", + "MinCapacity", + "MaxCapacity", + "RoleARN", + "CreationTime" + ], + "members": { + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "MinCapacity": { + "type": "integer" + }, + "MaxCapacity": { + "type": "integer" + }, + "RoleARN": {}, + "CreationTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeScalingActivities": { + "input": { + "type": "structure", + "required": [ + "ServiceNamespace" + ], + "members": { + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ScalingActivities": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ActivityId", + "ServiceNamespace", + "ResourceId", + "ScalableDimension", + "Description", + "Cause", + "StartTime", + "StatusCode" + ], + "members": { + "ActivityId": {}, + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "Description": {}, + "Cause": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "StatusCode": {}, + "StatusMessage": {}, + "Details": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeScalingPolicies": { + "input": { + "type": "structure", + "required": [ + "ServiceNamespace" + ], + "members": { + "PolicyNames": { + "shape": "S9" + }, + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ScalingPolicies": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "PolicyARN", + "PolicyName", + "ServiceNamespace", + "ResourceId", + "ScalableDimension", + "PolicyType", + "CreationTime" + ], + "members": { + "PolicyARN": {}, + "PolicyName": {}, + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "PolicyType": {}, + "StepScalingPolicyConfiguration": { + "shape": "St" + }, + "Alarms": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AlarmName", + "AlarmARN" + ], + "members": { + "AlarmName": {}, + "AlarmARN": {} + } + } + }, + "CreationTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "PutScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyName", + "ServiceNamespace", + "ResourceId", + "ScalableDimension" + ], + "members": { + "PolicyName": {}, + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "PolicyType": {}, + "StepScalingPolicyConfiguration": { + "shape": "St" + } + } + }, + "output": { + "type": "structure", + "required": [ + "PolicyARN" + ], + "members": { + "PolicyARN": {} + } + } + }, + "RegisterScalableTarget": { + "input": { + "type": "structure", + "required": [ + "ServiceNamespace", + "ResourceId", + "ScalableDimension" + ], + "members": { + "ServiceNamespace": {}, + "ResourceId": {}, + "ScalableDimension": {}, + "MinCapacity": { + "type": "integer" + }, + "MaxCapacity": { + "type": "integer" + }, + "RoleARN": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S9": { + "type": "list", + "member": {} + }, + "St": { + "type": "structure", + "members": { + "AdjustmentType": {}, + "StepAdjustments": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ScalingAdjustment" + ], + "members": { + "MetricIntervalLowerBound": { + "type": "double" + }, + "MetricIntervalUpperBound": { + "type": "double" + }, + "ScalingAdjustment": { + "type": "integer" + } + } + } + }, + "MinAdjustmentMagnitude": { + "type": "integer" + }, + "Cooldown": { + "type": "integer" + }, + "MetricAggregationType": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json new file mode 100644 index 0000000..97ae600 --- /dev/null +++ b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json @@ -0,0 +1,22 @@ +{ + "pagination": { + "DescribeScalableTargets": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ScalableTargets" + }, + "DescribeScalingPolicies": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ScalingPolicies" + }, + "DescribeScalingActivities": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ScalingActivities" + } + } +} diff --git a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json new file mode 100644 index 0000000..9dcaf88 --- /dev/null +++ b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json @@ -0,0 +1,1395 @@ +{ + "version": "1.0", + "examples": { + "AttachInstances": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "InstanceIds": [ + "i-93633f9b" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example attaches the specified instance to the specified Auto Scaling group.", + "id": "autoscaling-attach-instances-1", + "title": "To attach an instance to an Auto Scaling group" + } + ], + "AttachLoadBalancerTargetGroups": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "TargetGroupARNs": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example attaches the specified target group to the specified Auto Scaling group.", + "id": "autoscaling-attach-load-balancer-target-groups-1", + "title": "To attach a target group to an Auto Scaling group" + } + ], + "AttachLoadBalancers": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LoadBalancerNames": [ + "my-load-balancer" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example attaches the specified load balancer to the specified Auto Scaling group.", + "id": "autoscaling-attach-load-balancers-1", + "title": "To attach a load balancer to an Auto Scaling group" + } + ], + "CompleteLifecycleAction": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LifecycleActionResult": "CONTINUE", + "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635", + "LifecycleHookName": "my-lifecycle-hook" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example notifies Auto Scaling that the specified lifecycle action is complete so that it can finish launching or terminating the instance.", + "id": "autoscaling-complete-lifecycle-action-1", + "title": "To complete the lifecycle action" + } + ], + "CreateAutoScalingGroup": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LaunchConfigurationName": "my-launch-config", + "MaxSize": 3, + "MinSize": 1, + "VPCZoneIdentifier": "subnet-4176792c" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an Auto Scaling group.", + "id": "autoscaling-create-auto-scaling-group-1", + "title": "To create an Auto Scaling group" + }, + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "AvailabilityZones": [ + "us-west-2c" + ], + "HealthCheckGracePeriod": 120, + "HealthCheckType": "ELB", + "LaunchConfigurationName": "my-launch-config", + "LoadBalancerNames": [ + "my-load-balancer" + ], + "MaxSize": 3, + "MinSize": 1 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an Auto Scaling group and attaches the specified Classic Load Balancer.", + "id": "autoscaling-create-auto-scaling-group-2", + "title": "To create an Auto Scaling group with an attached load balancer" + }, + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "HealthCheckGracePeriod": 120, + "HealthCheckType": "ELB", + "LaunchConfigurationName": "my-launch-config", + "MaxSize": 3, + "MinSize": 1, + "TargetGroupARNs": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + ], + "VPCZoneIdentifier": "subnet-4176792c, subnet-65ea5f08" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an Auto Scaling group and attaches the specified target group.", + "id": "autoscaling-create-auto-scaling-group-3", + "title": "To create an Auto Scaling group with an attached target group" + } + ], + "CreateLaunchConfiguration": [ + { + "input": { + "IamInstanceProfile": "my-iam-role", + "ImageId": "ami-12345678", + "InstanceType": "m3.medium", + "LaunchConfigurationName": "my-launch-config", + "SecurityGroups": [ + "sg-eb2af88e" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a launch configuration.", + "id": "autoscaling-create-launch-configuration-1", + "title": "To create a launch configuration" + } + ], + "CreateOrUpdateTags": [ + { + "input": { + "Tags": [ + { + "Key": "Role", + "PropagateAtLaunch": true, + "ResourceId": "my-auto-scaling-group", + "ResourceType": "auto-scaling-group", + "Value": "WebServer" + }, + { + "Key": "Dept", + "PropagateAtLaunch": true, + "ResourceId": "my-auto-scaling-group", + "ResourceType": "auto-scaling-group", + "Value": "Research" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds two tags to the specified Auto Scaling group.", + "id": "autoscaling-create-or-update-tags-1", + "title": "To create or update tags for an Auto Scaling group" + } + ], + "DeleteAutoScalingGroup": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified Auto Scaling group.", + "id": "autoscaling-delete-auto-scaling-group-1", + "title": "To delete an Auto Scaling group" + }, + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "ForceDelete": true + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified Auto Scaling group and all its instances.", + "id": "autoscaling-delete-auto-scaling-group-2", + "title": "To delete an Auto Scaling group and all its instances" + } + ], + "DeleteLaunchConfiguration": [ + { + "input": { + "LaunchConfigurationName": "my-launch-config" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified launch configuration.", + "id": "autoscaling-delete-launch-configuration-1", + "title": "To delete a launch configuration" + } + ], + "DeleteLifecycleHook": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LifecycleHookName": "my-lifecycle-hook" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified lifecycle hook.", + "id": "autoscaling-delete-lifecycle-hook-1", + "title": "To delete a lifecycle hook" + } + ], + "DeleteNotificationConfiguration": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified notification from the specified Auto Scaling group.", + "id": "autoscaling-delete-notification-configuration-1", + "title": "To delete an Auto Scaling notification" + } + ], + "DeletePolicy": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "PolicyName": "ScaleIn" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified Auto Scaling policy.", + "id": "autoscaling-delete-policy-1", + "title": "To delete an Auto Scaling policy" + } + ], + "DeleteScheduledAction": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "ScheduledActionName": "my-scheduled-action" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified scheduled action from the specified Auto Scaling group.", + "id": "autoscaling-delete-scheduled-action-1", + "title": "To delete a scheduled action from an Auto Scaling group" + } + ], + "DeleteTags": [ + { + "input": { + "Tags": [ + { + "Key": "Dept", + "ResourceId": "my-auto-scaling-group", + "ResourceType": "auto-scaling-group", + "Value": "Research" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified tag from the specified Auto Scaling group.", + "id": "autoscaling-delete-tags-1", + "title": "To delete a tag from an Auto Scaling group" + } + ], + "DescribeAccountLimits": [ + { + "output": { + "MaxNumberOfAutoScalingGroups": 20, + "MaxNumberOfLaunchConfigurations": 100, + "NumberOfAutoScalingGroups": 3, + "NumberOfLaunchConfigurations": 5 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the Auto Scaling limits for your AWS account.", + "id": "autoscaling-describe-account-limits-1", + "title": "To describe your Auto Scaling account limits" + } + ], + "DescribeAdjustmentTypes": [ + { + "output": { + "AdjustmentTypes": [ + { + "AdjustmentType": "ChangeInCapacity" + }, + { + "AdjustmentType": "ExactCapcity" + }, + { + "AdjustmentType": "PercentChangeInCapacity" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the available adjustment types.", + "id": "autoscaling-describe-adjustment-types-1", + "title": "To describe the Auto Scaling adjustment types" + } + ], + "DescribeAutoScalingGroups": [ + { + "input": { + "AutoScalingGroupNames": [ + "my-auto-scaling-group" + ] + }, + "output": { + "AutoScalingGroups": [ + { + "AutoScalingGroupARN": "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group", + "AutoScalingGroupName": "my-auto-scaling-group", + "AvailabilityZones": [ + "us-west-2c" + ], + "CreatedTime": "2013-08-19T20:53:25.584Z", + "DefaultCooldown": 300, + "DesiredCapacity": 1, + "EnabledMetrics": [ + + ], + "HealthCheckGracePeriod": 300, + "HealthCheckType": "EC2", + "Instances": [ + { + "AvailabilityZone": "us-west-2c", + "HealthStatus": "Healthy", + "InstanceId": "i-4ba0837f", + "LaunchConfigurationName": "my-launch-config", + "LifecycleState": "InService" + } + ], + "LaunchConfigurationName": "my-launch-config", + "LoadBalancerNames": [ + + ], + "MaxSize": 1, + "MinSize": 0, + "NewInstancesProtectedFromScaleIn": false, + "SuspendedProcesses": [ + + ], + "Tags": [ + + ], + "TerminationPolicies": [ + "Default" + ], + "VPCZoneIdentifier": "subnet-12345678" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified Auto Scaling group.", + "id": "autoscaling-describe-auto-scaling-groups-1", + "title": "To describe an Auto Scaling group" + } + ], + "DescribeAutoScalingInstances": [ + { + "input": { + "InstanceIds": [ + "i-4ba0837f" + ] + }, + "output": { + "AutoScalingInstances": [ + { + "AutoScalingGroupName": "my-auto-scaling-group", + "AvailabilityZone": "us-west-2c", + "HealthStatus": "HEALTHY", + "InstanceId": "i-4ba0837f", + "LaunchConfigurationName": "my-launch-config", + "LifecycleState": "InService", + "ProtectedFromScaleIn": false + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified Auto Scaling instance.", + "id": "autoscaling-describe-auto-scaling-instances-1", + "title": "To describe one or more Auto Scaling instances" + } + ], + "DescribeAutoScalingNotificationTypes": [ + { + "output": { + "AutoScalingNotificationTypes": [ + "autoscaling:EC2_INSTANCE_LAUNCH", + "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", + "autoscaling:EC2_INSTANCE_TERMINATE", + "autoscaling:EC2_INSTANCE_TERMINATE_ERROR", + "autoscaling:TEST_NOTIFICATION" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the available notification types.", + "id": "autoscaling-describe-auto-scaling-notification-types-1", + "title": "To describe the Auto Scaling notification types" + } + ], + "DescribeLaunchConfigurations": [ + { + "input": { + "LaunchConfigurationNames": [ + "my-launch-config" + ] + }, + "output": { + "LaunchConfigurations": [ + { + "AssociatePublicIpAddress": true, + "BlockDeviceMappings": [ + + ], + "CreatedTime": "2014-05-07T17:39:28.599Z", + "EbsOptimized": false, + "ImageId": "ami-043a5034", + "InstanceMonitoring": { + "Enabled": true + }, + "InstanceType": "t1.micro", + "LaunchConfigurationARN": "arn:aws:autoscaling:us-west-2:123456789012:launchConfiguration:98d3b196-4cf9-4e88-8ca1-8547c24ced8b:launchConfigurationName/my-launch-config", + "LaunchConfigurationName": "my-launch-config", + "SecurityGroups": [ + "sg-67ef0308" + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified launch configuration.", + "id": "autoscaling-describe-launch-configurations-1", + "title": "To describe Auto Scaling launch configurations" + } + ], + "DescribeLifecycleHookTypes": [ + { + "output": { + "LifecycleHookTypes": [ + "autoscaling:EC2_INSTANCE_LAUNCHING", + "autoscaling:EC2_INSTANCE_TERMINATING" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the available lifecycle hook types.", + "id": "autoscaling-describe-lifecycle-hook-types-1", + "title": "To describe the available types of lifecycle hooks" + } + ], + "DescribeLifecycleHooks": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "output": { + "LifecycleHooks": [ + { + "AutoScalingGroupName": "my-auto-scaling-group", + "DefaultResult": "ABANDON", + "GlobalTimeout": 172800, + "HeartbeatTimeout": 3600, + "LifecycleHookName": "my-lifecycle-hook", + "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", + "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic", + "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the lifecycle hooks for the specified Auto Scaling group.", + "id": "autoscaling-describe-lifecycle-hooks-1", + "title": "To describe your lifecycle hooks" + } + ], + "DescribeLoadBalancerTargetGroups": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "output": { + "LoadBalancerTargetGroups": [ + { + "LoadBalancerTargetGroupARN": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "State": "Added" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the target groups attached to the specified Auto Scaling group.", + "id": "autoscaling-describe-load-balancer-target-groups-1", + "title": "To describe the target groups for an Auto Scaling group" + } + ], + "DescribeLoadBalancers": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "output": { + "LoadBalancers": [ + { + "LoadBalancerName": "my-load-balancer", + "State": "Added" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the load balancers attached to the specified Auto Scaling group.", + "id": "autoscaling-describe-load-balancers-1", + "title": "To describe the load balancers for an Auto Scaling group" + } + ], + "DescribeMetricCollectionTypes": [ + { + "output": { + "Granularities": [ + { + "Granularity": "1Minute" + } + ], + "Metrics": [ + { + "Metric": "GroupMinSize" + }, + { + "Metric": "GroupMaxSize" + }, + { + "Metric": "GroupDesiredCapacity" + }, + { + "Metric": "GroupInServiceInstances" + }, + { + "Metric": "GroupPendingInstances" + }, + { + "Metric": "GroupTerminatingInstances" + }, + { + "Metric": "GroupStandbyInstances" + }, + { + "Metric": "GroupTotalInstances" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the available metric collection types.", + "id": "autoscaling-describe-metric-collection-types-1", + "title": "To describe the Auto Scaling metric collection types" + } + ], + "DescribeNotificationConfigurations": [ + { + "input": { + "AutoScalingGroupNames": [ + "my-auto-scaling-group" + ] + }, + "output": { + "NotificationConfigurations": [ + { + "AutoScalingGroupName": "my-auto-scaling-group", + "NotificationType": "autoscaling:TEST_NOTIFICATION", + "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic-2" + }, + { + "AutoScalingGroupName": "my-auto-scaling-group", + "NotificationType": "autoscaling:TEST_NOTIFICATION", + "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the notification configurations for the specified Auto Scaling group.", + "id": "autoscaling-describe-notification-configurations-1", + "title": "To describe Auto Scaling notification configurations" + } + ], + "DescribePolicies": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "output": { + "ScalingPolicies": [ + { + "AdjustmentType": "ChangeInCapacity", + "Alarms": [ + + ], + "AutoScalingGroupName": "my-auto-scaling-group", + "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn", + "PolicyName": "ScaleIn", + "ScalingAdjustment": -1 + }, + { + "AdjustmentType": "PercentChangeInCapacity", + "Alarms": [ + + ], + "AutoScalingGroupName": "my-auto-scaling-group", + "Cooldown": 60, + "MinAdjustmentStep": 2, + "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2b435159-cf77-4e89-8c0e-d63b497baad7:autoScalingGroupName/my-auto-scaling-group:policyName/ScalePercentChange", + "PolicyName": "ScalePercentChange", + "ScalingAdjustment": 25 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the policies for the specified Auto Scaling group.", + "id": "autoscaling-describe-policies-1", + "title": "To describe Auto Scaling policies" + } + ], + "DescribeScalingActivities": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "output": { + "Activities": [ + { + "ActivityId": "f9f2d65b-f1f2-43e7-b46d-d86756459699", + "AutoScalingGroupName": "my-auto-scaling-group", + "Cause": "At 2013-08-19T20:53:25Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2013-08-19T20:53:29Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.", + "Description": "Launching a new EC2 instance: i-4ba0837f", + "Details": "details", + "EndTime": "2013-08-19T20:54:02Z", + "Progress": 100, + "StartTime": "2013-08-19T20:53:29.930Z", + "StatusCode": "Successful" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the scaling activities for the specified Auto Scaling group.", + "id": "autoscaling-describe-scaling-activities-1", + "title": "To describe the scaling activities for an Auto Scaling group" + } + ], + "DescribeScalingProcessTypes": [ + { + "output": { + "Processes": [ + { + "ProcessName": "AZRebalance" + }, + { + "ProcessName": "AddToLoadBalancer" + }, + { + "ProcessName": "AlarmNotification" + }, + { + "ProcessName": "HealthCheck" + }, + { + "ProcessName": "Launch" + }, + { + "ProcessName": "ReplaceUnhealthy" + }, + { + "ProcessName": "ScheduledActions" + }, + { + "ProcessName": "Terminate" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the Auto Scaling process types.", + "id": "autoscaling-describe-scaling-process-types-1", + "title": "To describe the Auto Scaling process types" + } + ], + "DescribeScheduledActions": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group" + }, + "output": { + "ScheduledUpdateGroupActions": [ + { + "AutoScalingGroupName": "my-auto-scaling-group", + "DesiredCapacity": 4, + "MaxSize": 6, + "MinSize": 2, + "Recurrence": "30 0 1 12 0", + "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-auto-scaling-group:scheduledActionName/my-scheduled-action", + "ScheduledActionName": "my-scheduled-action", + "StartTime": "2016-12-01T00:30:00Z", + "Time": "2016-12-01T00:30:00Z" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the scheduled actions for the specified Auto Scaling group.", + "id": "autoscaling-describe-scheduled-actions-1", + "title": "To describe scheduled actions" + } + ], + "DescribeTags": [ + { + "input": { + "Filters": [ + { + "Name": "auto-scaling-group", + "Values": [ + "my-auto-scaling-group" + ] + } + ] + }, + "output": { + "Tags": [ + { + "Key": "Dept", + "PropagateAtLaunch": true, + "ResourceId": "my-auto-scaling-group", + "ResourceType": "auto-scaling-group", + "Value": "Research" + }, + { + "Key": "Role", + "PropagateAtLaunch": true, + "ResourceId": "my-auto-scaling-group", + "ResourceType": "auto-scaling-group", + "Value": "WebServer" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the tags for the specified Auto Scaling group.", + "id": "autoscaling-describe-tags-1", + "title": "To describe tags" + } + ], + "DescribeTerminationPolicyTypes": [ + { + "output": { + "TerminationPolicyTypes": [ + "ClosestToNextInstanceHour", + "Default", + "NewestInstance", + "OldestInstance", + "OldestLaunchConfiguration" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the available termination policy types.", + "id": "autoscaling-describe-termination-policy-types-1", + "title": "To describe termination policy types" + } + ], + "DetachInstances": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "InstanceIds": [ + "i-93633f9b" + ], + "ShouldDecrementDesiredCapacity": true + }, + "output": { + "Activities": [ + { + "ActivityId": "5091cb52-547a-47ce-a236-c9ccbc2cb2c9", + "AutoScalingGroupName": "my-auto-scaling-group", + "Cause": "At 2015-04-12T15:02:16Z instance i-93633f9b was detached in response to a user request, shrinking the capacity from 2 to 1.", + "Description": "Detaching EC2 instance: i-93633f9b", + "Details": "details", + "Progress": 50, + "StartTime": "2015-04-12T15:02:16.179Z", + "StatusCode": "InProgress" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the specified instance from the specified Auto Scaling group.", + "id": "autoscaling-detach-instances-1", + "title": "To detach an instance from an Auto Scaling group" + } + ], + "DetachLoadBalancerTargetGroups": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "TargetGroupARNs": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the specified target group from the specified Auto Scaling group", + "id": "autoscaling-detach-load-balancer-target-groups-1", + "title": "To detach a target group from an Auto Scaling group" + } + ], + "DetachLoadBalancers": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LoadBalancerNames": [ + "my-load-balancer" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the specified load balancer from the specified Auto Scaling group.", + "id": "autoscaling-detach-load-balancers-1", + "title": "To detach a load balancer from an Auto Scaling group" + } + ], + "DisableMetricsCollection": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "Metrics": [ + "GroupDesiredCapacity" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example disables collecting data for the GroupDesiredCapacity metric for the specified Auto Scaling group.", + "id": "autoscaling-disable-metrics-collection-1", + "title": "To disable metrics collection for an Auto Scaling group" + } + ], + "EnableMetricsCollection": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "Granularity": "1Minute" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables data collection for the specified Auto Scaling group.", + "id": "autoscaling-enable-metrics-collection-1", + "title": "To enable metrics collection for an Auto Scaling group" + } + ], + "EnterStandby": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "InstanceIds": [ + "i-93633f9b" + ], + "ShouldDecrementDesiredCapacity": true + }, + "output": { + "Activities": [ + { + "ActivityId": "ffa056b4-6ed3-41ba-ae7c-249dfae6eba1", + "AutoScalingGroupName": "my-auto-scaling-group", + "Cause": "At 2015-04-12T15:10:23Z instance i-93633f9b was moved to standby in response to a user request, shrinking the capacity from 2 to 1.", + "Description": "Moving EC2 instance to Standby: i-93633f9b", + "Details": "details", + "Progress": 50, + "StartTime": "2015-04-12T15:10:23.640Z", + "StatusCode": "InProgress" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example puts the specified instance into standby mode.", + "id": "autoscaling-enter-standby-1", + "title": "To move instances into standby mode" + } + ], + "ExecutePolicy": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "HonorCooldown": true, + "PolicyName": "ScaleIn" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example executes the specified Auto Scaling policy for the specified Auto Scaling group.", + "id": "autoscaling-execute-policy-1", + "title": "To execute an Auto Scaling policy" + } + ], + "ExitStandby": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "InstanceIds": [ + "i-93633f9b" + ] + }, + "output": { + "Activities": [ + { + "ActivityId": "142928e1-a2dc-453a-9b24-b85ad6735928", + "AutoScalingGroupName": "my-auto-scaling-group", + "Cause": "At 2015-04-12T15:14:29Z instance i-93633f9b was moved out of standby in response to a user request, increasing the capacity from 1 to 2.", + "Description": "Moving EC2 instance out of Standby: i-93633f9b", + "Details": "details", + "Progress": 30, + "StartTime": "2015-04-12T15:14:29.886Z", + "StatusCode": "PreInService" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example moves the specified instance out of standby mode.", + "id": "autoscaling-exit-standby-1", + "title": "To move instances out of standby mode" + } + ], + "PutLifecycleHook": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LifecycleHookName": "my-lifecycle-hook", + "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", + "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic --role-arn", + "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a lifecycle hook.", + "id": "autoscaling-put-lifecycle-hook-1", + "title": "To create a lifecycle hook" + } + ], + "PutNotificationConfiguration": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "NotificationTypes": [ + "autoscaling:TEST_NOTIFICATION" + ], + "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the specified notification to the specified Auto Scaling group.", + "id": "autoscaling-put-notification-configuration-1", + "title": "To add an Auto Scaling notification" + } + ], + "PutScalingPolicy": [ + { + "input": { + "AdjustmentType": "ChangeInCapacity", + "AutoScalingGroupName": "my-auto-scaling-group", + "PolicyName": "ScaleIn", + "ScalingAdjustment": -1 + }, + "output": { + "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the specified policy to the specified Auto Scaling group.", + "id": "autoscaling-put-scaling-policy-1", + "title": "To add a scaling policy to an Auto Scaling group" + } + ], + "PutScheduledUpdateGroupAction": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "DesiredCapacity": 4, + "EndTime": "2014-05-12T08:00:00Z", + "MaxSize": 6, + "MinSize": 2, + "ScheduledActionName": "my-scheduled-action", + "StartTime": "2014-05-12T08:00:00Z" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the specified scheduled action to the specified Auto Scaling group.", + "id": "autoscaling-put-scheduled-update-group-action-1", + "title": "To add a scheduled action to an Auto Scaling group" + } + ], + "RecordLifecycleActionHeartbeat": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635", + "LifecycleHookName": "my-lifecycle-hook" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example records a lifecycle action heartbeat to keep the instance in a pending state.", + "id": "autoscaling-record-lifecycle-action-heartbeat-1", + "title": "To record a lifecycle action heartbeat" + } + ], + "ResumeProcesses": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "ScalingProcesses": [ + "AlarmNotification" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example resumes the specified suspended scaling process for the specified Auto Scaling group.", + "id": "autoscaling-resume-processes-1", + "title": "To resume Auto Scaling processes" + } + ], + "SetDesiredCapacity": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "DesiredCapacity": 2, + "HonorCooldown": true + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sets the desired capacity for the specified Auto Scaling group.", + "id": "autoscaling-set-desired-capacity-1", + "title": "To set the desired capacity for an Auto Scaling group" + } + ], + "SetInstanceHealth": [ + { + "input": { + "HealthStatus": "Unhealthy", + "InstanceId": "i-93633f9b" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sets the health status of the specified instance to Unhealthy.", + "id": "autoscaling-set-instance-health-1", + "title": "To set the health status of an instance" + } + ], + "SetInstanceProtection": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "InstanceIds": [ + "i-93633f9b" + ], + "ProtectedFromScaleIn": true + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables instance protection for the specified instance.", + "id": "autoscaling-set-instance-protection-1", + "title": "To enable instance protection for an instance" + }, + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "InstanceIds": [ + "i-93633f9b" + ], + "ProtectedFromScaleIn": false + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example disables instance protection for the specified instance.", + "id": "autoscaling-set-instance-protection-2", + "title": "To disable instance protection for an instance" + } + ], + "SuspendProcesses": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "ScalingProcesses": [ + "AlarmNotification" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example suspends the specified scaling process for the specified Auto Scaling group.", + "id": "autoscaling-suspend-processes-1", + "title": "To suspend Auto Scaling processes" + } + ], + "TerminateInstanceInAutoScalingGroup": [ + { + "input": { + "InstanceId": "i-93633f9b", + "ShouldDecrementDesiredCapacity": false + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example terminates the specified instance from the specified Auto Scaling group without updating the size of the group. Auto Scaling launches a replacement instance after the specified instance terminates.", + "id": "autoscaling-terminate-instance-in-auto-scaling-group-1", + "title": "To terminate an instance in an Auto Scaling group" + } + ], + "UpdateAutoScalingGroup": [ + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "LaunchConfigurationName": "new-launch-config" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example updates the launch configuration of the specified Auto Scaling group.", + "id": "autoscaling-update-auto-scaling-group-1", + "title": "To update the launch configuration" + }, + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "MaxSize": 3, + "MinSize": 1 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example updates the minimum size and maximum size of the specified Auto Scaling group.", + "id": "autoscaling-update-auto-scaling-group-2", + "title": "To update the minimum and maximum size" + }, + { + "input": { + "AutoScalingGroupName": "my-auto-scaling-group", + "NewInstancesProtectedFromScaleIn": true + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables instance protection for the specified Auto Scaling group.", + "id": "autoscaling-update-auto-scaling-group-3", + "title": "To enable instance protection" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json new file mode 100644 index 0000000..0b51538 --- /dev/null +++ b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json @@ -0,0 +1,1608 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2011-01-01", + "endpointPrefix": "autoscaling", + "protocol": "query", + "serviceFullName": "Auto Scaling", + "signatureVersion": "v4", + "xmlNamespace": "http://autoscaling.amazonaws.com/doc/2011-01-01/" + }, + "operations": { + "AttachInstances": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "InstanceIds": { + "shape": "S2" + }, + "AutoScalingGroupName": {} + } + } + }, + "AttachLoadBalancerTargetGroups": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "TargetGroupARNs" + ], + "members": { + "AutoScalingGroupName": {}, + "TargetGroupARNs": { + "shape": "S6" + } + } + }, + "output": { + "resultWrapper": "AttachLoadBalancerTargetGroupsResult", + "type": "structure", + "members": {} + } + }, + "AttachLoadBalancers": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "LoadBalancerNames" + ], + "members": { + "AutoScalingGroupName": {}, + "LoadBalancerNames": { + "shape": "Sa" + } + } + }, + "output": { + "resultWrapper": "AttachLoadBalancersResult", + "type": "structure", + "members": {} + } + }, + "CompleteLifecycleAction": { + "input": { + "type": "structure", + "required": [ + "LifecycleHookName", + "AutoScalingGroupName", + "LifecycleActionResult" + ], + "members": { + "LifecycleHookName": {}, + "AutoScalingGroupName": {}, + "LifecycleActionToken": {}, + "LifecycleActionResult": {}, + "InstanceId": {} + } + }, + "output": { + "resultWrapper": "CompleteLifecycleActionResult", + "type": "structure", + "members": {} + } + }, + "CreateAutoScalingGroup": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "MinSize", + "MaxSize" + ], + "members": { + "AutoScalingGroupName": {}, + "LaunchConfigurationName": {}, + "InstanceId": {}, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + }, + "DesiredCapacity": { + "type": "integer" + }, + "DefaultCooldown": { + "type": "integer" + }, + "AvailabilityZones": { + "shape": "Sn" + }, + "LoadBalancerNames": { + "shape": "Sa" + }, + "TargetGroupARNs": { + "shape": "S6" + }, + "HealthCheckType": {}, + "HealthCheckGracePeriod": { + "type": "integer" + }, + "PlacementGroup": {}, + "VPCZoneIdentifier": {}, + "TerminationPolicies": { + "shape": "Sr" + }, + "NewInstancesProtectedFromScaleIn": { + "type": "boolean" + }, + "Tags": { + "shape": "Su" + } + } + } + }, + "CreateLaunchConfiguration": { + "input": { + "type": "structure", + "required": [ + "LaunchConfigurationName" + ], + "members": { + "LaunchConfigurationName": {}, + "ImageId": {}, + "KeyName": {}, + "SecurityGroups": { + "shape": "S11" + }, + "ClassicLinkVPCId": {}, + "ClassicLinkVPCSecurityGroups": { + "shape": "S12" + }, + "UserData": {}, + "InstanceId": {}, + "InstanceType": {}, + "KernelId": {}, + "RamdiskId": {}, + "BlockDeviceMappings": { + "shape": "S14" + }, + "InstanceMonitoring": { + "shape": "S1d" + }, + "SpotPrice": {}, + "IamInstanceProfile": {}, + "EbsOptimized": { + "type": "boolean" + }, + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "PlacementTenancy": {} + } + } + }, + "CreateOrUpdateTags": { + "input": { + "type": "structure", + "required": [ + "Tags" + ], + "members": { + "Tags": { + "shape": "Su" + } + } + } + }, + "DeleteAutoScalingGroup": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "ForceDelete": { + "type": "boolean" + } + } + } + }, + "DeleteLaunchConfiguration": { + "input": { + "type": "structure", + "required": [ + "LaunchConfigurationName" + ], + "members": { + "LaunchConfigurationName": {} + } + } + }, + "DeleteLifecycleHook": { + "input": { + "type": "structure", + "required": [ + "LifecycleHookName", + "AutoScalingGroupName" + ], + "members": { + "LifecycleHookName": {}, + "AutoScalingGroupName": {} + } + }, + "output": { + "resultWrapper": "DeleteLifecycleHookResult", + "type": "structure", + "members": {} + } + }, + "DeleteNotificationConfiguration": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "TopicARN" + ], + "members": { + "AutoScalingGroupName": {}, + "TopicARN": {} + } + } + }, + "DeletePolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyName" + ], + "members": { + "AutoScalingGroupName": {}, + "PolicyName": {} + } + } + }, + "DeleteScheduledAction": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "ScheduledActionName" + ], + "members": { + "AutoScalingGroupName": {}, + "ScheduledActionName": {} + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "Tags" + ], + "members": { + "Tags": { + "shape": "Su" + } + } + } + }, + "DescribeAccountLimits": { + "output": { + "resultWrapper": "DescribeAccountLimitsResult", + "type": "structure", + "members": { + "MaxNumberOfAutoScalingGroups": { + "type": "integer" + }, + "MaxNumberOfLaunchConfigurations": { + "type": "integer" + }, + "NumberOfAutoScalingGroups": { + "type": "integer" + }, + "NumberOfLaunchConfigurations": { + "type": "integer" + } + } + } + }, + "DescribeAdjustmentTypes": { + "output": { + "resultWrapper": "DescribeAdjustmentTypesResult", + "type": "structure", + "members": { + "AdjustmentTypes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AdjustmentType": {} + } + } + } + } + } + }, + "DescribeAutoScalingGroups": { + "input": { + "type": "structure", + "members": { + "AutoScalingGroupNames": { + "shape": "S22" + }, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeAutoScalingGroupsResult", + "type": "structure", + "required": [ + "AutoScalingGroups" + ], + "members": { + "AutoScalingGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "MinSize", + "MaxSize", + "DesiredCapacity", + "DefaultCooldown", + "AvailabilityZones", + "HealthCheckType", + "CreatedTime" + ], + "members": { + "AutoScalingGroupName": {}, + "AutoScalingGroupARN": {}, + "LaunchConfigurationName": {}, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + }, + "DesiredCapacity": { + "type": "integer" + }, + "DefaultCooldown": { + "type": "integer" + }, + "AvailabilityZones": { + "shape": "Sn" + }, + "LoadBalancerNames": { + "shape": "Sa" + }, + "TargetGroupARNs": { + "shape": "S6" + }, + "HealthCheckType": {}, + "HealthCheckGracePeriod": { + "type": "integer" + }, + "Instances": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InstanceId", + "AvailabilityZone", + "LifecycleState", + "HealthStatus", + "LaunchConfigurationName", + "ProtectedFromScaleIn" + ], + "members": { + "InstanceId": {}, + "AvailabilityZone": {}, + "LifecycleState": {}, + "HealthStatus": {}, + "LaunchConfigurationName": {}, + "ProtectedFromScaleIn": { + "type": "boolean" + } + } + } + }, + "CreatedTime": { + "type": "timestamp" + }, + "SuspendedProcesses": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ProcessName": {}, + "SuspensionReason": {} + } + } + }, + "PlacementGroup": {}, + "VPCZoneIdentifier": {}, + "EnabledMetrics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Metric": {}, + "Granularity": {} + } + } + }, + "Status": {}, + "Tags": { + "shape": "S2f" + }, + "TerminationPolicies": { + "shape": "Sr" + }, + "NewInstancesProtectedFromScaleIn": { + "type": "boolean" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeAutoScalingInstances": { + "input": { + "type": "structure", + "members": { + "InstanceIds": { + "shape": "S2" + }, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeAutoScalingInstancesResult", + "type": "structure", + "members": { + "AutoScalingInstances": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InstanceId", + "AutoScalingGroupName", + "AvailabilityZone", + "LifecycleState", + "HealthStatus", + "LaunchConfigurationName", + "ProtectedFromScaleIn" + ], + "members": { + "InstanceId": {}, + "AutoScalingGroupName": {}, + "AvailabilityZone": {}, + "LifecycleState": {}, + "HealthStatus": {}, + "LaunchConfigurationName": {}, + "ProtectedFromScaleIn": { + "type": "boolean" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeAutoScalingNotificationTypes": { + "output": { + "resultWrapper": "DescribeAutoScalingNotificationTypesResult", + "type": "structure", + "members": { + "AutoScalingNotificationTypes": { + "shape": "S2m" + } + } + } + }, + "DescribeLaunchConfigurations": { + "input": { + "type": "structure", + "members": { + "LaunchConfigurationNames": { + "type": "list", + "member": {} + }, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLaunchConfigurationsResult", + "type": "structure", + "required": [ + "LaunchConfigurations" + ], + "members": { + "LaunchConfigurations": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "LaunchConfigurationName", + "ImageId", + "InstanceType", + "CreatedTime" + ], + "members": { + "LaunchConfigurationName": {}, + "LaunchConfigurationARN": {}, + "ImageId": {}, + "KeyName": {}, + "SecurityGroups": { + "shape": "S11" + }, + "ClassicLinkVPCId": {}, + "ClassicLinkVPCSecurityGroups": { + "shape": "S12" + }, + "UserData": {}, + "InstanceType": {}, + "KernelId": {}, + "RamdiskId": {}, + "BlockDeviceMappings": { + "shape": "S14" + }, + "InstanceMonitoring": { + "shape": "S1d" + }, + "SpotPrice": {}, + "IamInstanceProfile": {}, + "CreatedTime": { + "type": "timestamp" + }, + "EbsOptimized": { + "type": "boolean" + }, + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "PlacementTenancy": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeLifecycleHookTypes": { + "output": { + "resultWrapper": "DescribeLifecycleHookTypesResult", + "type": "structure", + "members": { + "LifecycleHookTypes": { + "shape": "S2m" + } + } + } + }, + "DescribeLifecycleHooks": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "LifecycleHookNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeLifecycleHooksResult", + "type": "structure", + "members": { + "LifecycleHooks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LifecycleHookName": {}, + "AutoScalingGroupName": {}, + "LifecycleTransition": {}, + "NotificationTargetARN": {}, + "RoleARN": {}, + "NotificationMetadata": {}, + "HeartbeatTimeout": { + "type": "integer" + }, + "GlobalTimeout": { + "type": "integer" + }, + "DefaultResult": {} + } + } + } + } + } + }, + "DescribeLoadBalancerTargetGroups": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerTargetGroupsResult", + "type": "structure", + "members": { + "LoadBalancerTargetGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerTargetGroupARN": {}, + "State": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeLoadBalancers": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancersResult", + "type": "structure", + "members": { + "LoadBalancers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "State": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeMetricCollectionTypes": { + "output": { + "resultWrapper": "DescribeMetricCollectionTypesResult", + "type": "structure", + "members": { + "Metrics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Metric": {} + } + } + }, + "Granularities": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Granularity": {} + } + } + } + } + } + }, + "DescribeNotificationConfigurations": { + "input": { + "type": "structure", + "members": { + "AutoScalingGroupNames": { + "shape": "S22" + }, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeNotificationConfigurationsResult", + "type": "structure", + "required": [ + "NotificationConfigurations" + ], + "members": { + "NotificationConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AutoScalingGroupName": {}, + "TopicARN": {}, + "NotificationType": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribePolicies": { + "input": { + "type": "structure", + "members": { + "AutoScalingGroupName": {}, + "PolicyNames": { + "type": "list", + "member": {} + }, + "PolicyTypes": { + "type": "list", + "member": {} + }, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribePoliciesResult", + "type": "structure", + "members": { + "ScalingPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AutoScalingGroupName": {}, + "PolicyName": {}, + "PolicyARN": {}, + "PolicyType": {}, + "AdjustmentType": {}, + "MinAdjustmentStep": { + "shape": "S3p" + }, + "MinAdjustmentMagnitude": { + "type": "integer" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "Cooldown": { + "type": "integer" + }, + "StepAdjustments": { + "shape": "S3s" + }, + "MetricAggregationType": {}, + "EstimatedInstanceWarmup": { + "type": "integer" + }, + "Alarms": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AlarmName": {}, + "AlarmARN": {} + } + } + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeScalingActivities": { + "input": { + "type": "structure", + "members": { + "ActivityIds": { + "type": "list", + "member": {} + }, + "AutoScalingGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeScalingActivitiesResult", + "type": "structure", + "required": [ + "Activities" + ], + "members": { + "Activities": { + "shape": "S41" + }, + "NextToken": {} + } + } + }, + "DescribeScalingProcessTypes": { + "output": { + "resultWrapper": "DescribeScalingProcessTypesResult", + "type": "structure", + "members": { + "Processes": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ProcessName" + ], + "members": { + "ProcessName": {} + } + } + } + } + } + }, + "DescribeScheduledActions": { + "input": { + "type": "structure", + "members": { + "AutoScalingGroupName": {}, + "ScheduledActionNames": { + "type": "list", + "member": {} + }, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeScheduledActionsResult", + "type": "structure", + "members": { + "ScheduledUpdateGroupActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AutoScalingGroupName": {}, + "ScheduledActionName": {}, + "ScheduledActionARN": {}, + "Time": { + "type": "timestamp" + }, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Recurrence": {}, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + }, + "DesiredCapacity": { + "type": "integer" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "members": { + "Filters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Values": { + "type": "list", + "member": {} + } + } + } + }, + "NextToken": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "Tags": { + "shape": "S2f" + }, + "NextToken": {} + } + } + }, + "DescribeTerminationPolicyTypes": { + "output": { + "resultWrapper": "DescribeTerminationPolicyTypesResult", + "type": "structure", + "members": { + "TerminationPolicyTypes": { + "shape": "Sr" + } + } + } + }, + "DetachInstances": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "ShouldDecrementDesiredCapacity" + ], + "members": { + "InstanceIds": { + "shape": "S2" + }, + "AutoScalingGroupName": {}, + "ShouldDecrementDesiredCapacity": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DetachInstancesResult", + "type": "structure", + "members": { + "Activities": { + "shape": "S41" + } + } + } + }, + "DetachLoadBalancerTargetGroups": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "TargetGroupARNs" + ], + "members": { + "AutoScalingGroupName": {}, + "TargetGroupARNs": { + "shape": "S6" + } + } + }, + "output": { + "resultWrapper": "DetachLoadBalancerTargetGroupsResult", + "type": "structure", + "members": {} + } + }, + "DetachLoadBalancers": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "LoadBalancerNames" + ], + "members": { + "AutoScalingGroupName": {}, + "LoadBalancerNames": { + "shape": "Sa" + } + } + }, + "output": { + "resultWrapper": "DetachLoadBalancersResult", + "type": "structure", + "members": {} + } + }, + "DisableMetricsCollection": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "Metrics": { + "shape": "S4r" + } + } + } + }, + "EnableMetricsCollection": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "Granularity" + ], + "members": { + "AutoScalingGroupName": {}, + "Metrics": { + "shape": "S4r" + }, + "Granularity": {} + } + } + }, + "EnterStandby": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "ShouldDecrementDesiredCapacity" + ], + "members": { + "InstanceIds": { + "shape": "S2" + }, + "AutoScalingGroupName": {}, + "ShouldDecrementDesiredCapacity": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "EnterStandbyResult", + "type": "structure", + "members": { + "Activities": { + "shape": "S41" + } + } + } + }, + "ExecutePolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyName" + ], + "members": { + "AutoScalingGroupName": {}, + "PolicyName": {}, + "HonorCooldown": { + "type": "boolean" + }, + "MetricValue": { + "type": "double" + }, + "BreachThreshold": { + "type": "double" + } + } + } + }, + "ExitStandby": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "InstanceIds": { + "shape": "S2" + }, + "AutoScalingGroupName": {} + } + }, + "output": { + "resultWrapper": "ExitStandbyResult", + "type": "structure", + "members": { + "Activities": { + "shape": "S41" + } + } + } + }, + "PutLifecycleHook": { + "input": { + "type": "structure", + "required": [ + "LifecycleHookName", + "AutoScalingGroupName" + ], + "members": { + "LifecycleHookName": {}, + "AutoScalingGroupName": {}, + "LifecycleTransition": {}, + "RoleARN": {}, + "NotificationTargetARN": {}, + "NotificationMetadata": {}, + "HeartbeatTimeout": { + "type": "integer" + }, + "DefaultResult": {} + } + }, + "output": { + "resultWrapper": "PutLifecycleHookResult", + "type": "structure", + "members": {} + } + }, + "PutNotificationConfiguration": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "TopicARN", + "NotificationTypes" + ], + "members": { + "AutoScalingGroupName": {}, + "TopicARN": {}, + "NotificationTypes": { + "shape": "S2m" + } + } + } + }, + "PutScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "PolicyName", + "AdjustmentType" + ], + "members": { + "AutoScalingGroupName": {}, + "PolicyName": {}, + "PolicyType": {}, + "AdjustmentType": {}, + "MinAdjustmentStep": { + "shape": "S3p" + }, + "MinAdjustmentMagnitude": { + "type": "integer" + }, + "ScalingAdjustment": { + "type": "integer" + }, + "Cooldown": { + "type": "integer" + }, + "MetricAggregationType": {}, + "StepAdjustments": { + "shape": "S3s" + }, + "EstimatedInstanceWarmup": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PutScalingPolicyResult", + "type": "structure", + "members": { + "PolicyARN": {} + } + } + }, + "PutScheduledUpdateGroupAction": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "ScheduledActionName" + ], + "members": { + "AutoScalingGroupName": {}, + "ScheduledActionName": {}, + "Time": { + "type": "timestamp" + }, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Recurrence": {}, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + }, + "DesiredCapacity": { + "type": "integer" + } + } + } + }, + "RecordLifecycleActionHeartbeat": { + "input": { + "type": "structure", + "required": [ + "LifecycleHookName", + "AutoScalingGroupName" + ], + "members": { + "LifecycleHookName": {}, + "AutoScalingGroupName": {}, + "LifecycleActionToken": {}, + "InstanceId": {} + } + }, + "output": { + "resultWrapper": "RecordLifecycleActionHeartbeatResult", + "type": "structure", + "members": {} + } + }, + "ResumeProcesses": { + "input": { + "shape": "S58" + } + }, + "SetDesiredCapacity": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName", + "DesiredCapacity" + ], + "members": { + "AutoScalingGroupName": {}, + "DesiredCapacity": { + "type": "integer" + }, + "HonorCooldown": { + "type": "boolean" + } + } + } + }, + "SetInstanceHealth": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "HealthStatus" + ], + "members": { + "InstanceId": {}, + "HealthStatus": {}, + "ShouldRespectGracePeriod": { + "type": "boolean" + } + } + } + }, + "SetInstanceProtection": { + "input": { + "type": "structure", + "required": [ + "InstanceIds", + "AutoScalingGroupName", + "ProtectedFromScaleIn" + ], + "members": { + "InstanceIds": { + "shape": "S2" + }, + "AutoScalingGroupName": {}, + "ProtectedFromScaleIn": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetInstanceProtectionResult", + "type": "structure", + "members": {} + } + }, + "SuspendProcesses": { + "input": { + "shape": "S58" + } + }, + "TerminateInstanceInAutoScalingGroup": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "ShouldDecrementDesiredCapacity" + ], + "members": { + "InstanceId": {}, + "ShouldDecrementDesiredCapacity": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "TerminateInstanceInAutoScalingGroupResult", + "type": "structure", + "members": { + "Activity": { + "shape": "S42" + } + } + } + }, + "UpdateAutoScalingGroup": { + "input": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "LaunchConfigurationName": {}, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + }, + "DesiredCapacity": { + "type": "integer" + }, + "DefaultCooldown": { + "type": "integer" + }, + "AvailabilityZones": { + "shape": "Sn" + }, + "HealthCheckType": {}, + "HealthCheckGracePeriod": { + "type": "integer" + }, + "PlacementGroup": {}, + "VPCZoneIdentifier": {}, + "TerminationPolicies": { + "shape": "Sr" + }, + "NewInstancesProtectedFromScaleIn": { + "type": "boolean" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S6": { + "type": "list", + "member": {} + }, + "Sa": { + "type": "list", + "member": {} + }, + "Sn": { + "type": "list", + "member": {} + }, + "Sr": { + "type": "list", + "member": {} + }, + "Su": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "ResourceId": {}, + "ResourceType": {}, + "Key": {}, + "Value": {}, + "PropagateAtLaunch": { + "type": "boolean" + } + } + } + }, + "S11": { + "type": "list", + "member": {} + }, + "S12": { + "type": "list", + "member": {} + }, + "S14": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DeviceName" + ], + "members": { + "VirtualName": {}, + "DeviceName": {}, + "Ebs": { + "type": "structure", + "members": { + "SnapshotId": {}, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": {}, + "DeleteOnTermination": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "Encrypted": { + "type": "boolean" + } + } + }, + "NoDevice": { + "type": "boolean" + } + } + } + }, + "S1d": { + "type": "structure", + "members": { + "Enabled": { + "type": "boolean" + } + } + }, + "S22": { + "type": "list", + "member": {} + }, + "S2f": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {}, + "Key": {}, + "Value": {}, + "PropagateAtLaunch": { + "type": "boolean" + } + } + } + }, + "S2m": { + "type": "list", + "member": {} + }, + "S3p": { + "type": "integer", + "deprecated": true + }, + "S3s": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ScalingAdjustment" + ], + "members": { + "MetricIntervalLowerBound": { + "type": "double" + }, + "MetricIntervalUpperBound": { + "type": "double" + }, + "ScalingAdjustment": { + "type": "integer" + } + } + } + }, + "S41": { + "type": "list", + "member": { + "shape": "S42" + } + }, + "S42": { + "type": "structure", + "required": [ + "ActivityId", + "AutoScalingGroupName", + "Cause", + "StartTime", + "StatusCode" + ], + "members": { + "ActivityId": {}, + "AutoScalingGroupName": {}, + "Description": {}, + "Cause": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "StatusCode": {}, + "StatusMessage": {}, + "Progress": { + "type": "integer" + }, + "Details": {} + } + }, + "S4r": { + "type": "list", + "member": {} + }, + "S58": { + "type": "structure", + "required": [ + "AutoScalingGroupName" + ], + "members": { + "AutoScalingGroupName": {}, + "ScalingProcesses": { + "type": "list", + "member": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json new file mode 100644 index 0000000..31bc094 --- /dev/null +++ b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json @@ -0,0 +1,52 @@ +{ + "pagination": { + "DescribeAutoScalingGroups": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "AutoScalingGroups" + }, + "DescribeAutoScalingInstances": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "AutoScalingInstances" + }, + "DescribeLaunchConfigurations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "LaunchConfigurations" + }, + "DescribeNotificationConfigurations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "NotificationConfigurations" + }, + "DescribePolicies": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "ScalingPolicies" + }, + "DescribeScalingActivities": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "Activities" + }, + "DescribeScheduledActions": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "ScheduledUpdateGroupActions" + }, + "DescribeTags": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "Tags" + } + } +} diff --git a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json new file mode 100644 index 0000000..a7abad5 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json @@ -0,0 +1,860 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-05-15", + "endpointPrefix": "cloudformation", + "protocol": "query", + "serviceFullName": "AWS CloudFormation", + "signatureVersion": "v4", + "xmlNamespace": "http://cloudformation.amazonaws.com/doc/2010-05-15/" + }, + "operations": { + "CancelUpdateStack": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {} + } + } + }, + "ContinueUpdateRollback": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "RoleARN": {} + } + }, + "output": { + "resultWrapper": "ContinueUpdateRollbackResult", + "type": "structure", + "members": {} + } + }, + "CreateChangeSet": { + "input": { + "type": "structure", + "required": [ + "StackName", + "ChangeSetName" + ], + "members": { + "StackName": {}, + "TemplateBody": {}, + "TemplateURL": {}, + "UsePreviousTemplate": { + "type": "boolean" + }, + "Parameters": { + "shape": "Sb" + }, + "Capabilities": { + "shape": "Sg" + }, + "ResourceTypes": { + "shape": "Si" + }, + "RoleARN": {}, + "NotificationARNs": { + "shape": "Sk" + }, + "Tags": { + "shape": "Sm" + }, + "ChangeSetName": {}, + "ClientToken": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateChangeSetResult", + "type": "structure", + "members": { + "Id": {} + } + } + }, + "CreateStack": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "TemplateBody": {}, + "TemplateURL": {}, + "Parameters": { + "shape": "Sb" + }, + "DisableRollback": { + "type": "boolean" + }, + "TimeoutInMinutes": { + "type": "integer" + }, + "NotificationARNs": { + "shape": "Sk" + }, + "Capabilities": { + "shape": "Sg" + }, + "ResourceTypes": { + "shape": "Si" + }, + "RoleARN": {}, + "OnFailure": {}, + "StackPolicyBody": {}, + "StackPolicyURL": {}, + "Tags": { + "shape": "Sm" + } + } + }, + "output": { + "resultWrapper": "CreateStackResult", + "type": "structure", + "members": { + "StackId": {} + } + } + }, + "DeleteChangeSet": { + "input": { + "type": "structure", + "required": [ + "ChangeSetName" + ], + "members": { + "ChangeSetName": {}, + "StackName": {} + } + }, + "output": { + "resultWrapper": "DeleteChangeSetResult", + "type": "structure", + "members": {} + } + }, + "DeleteStack": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "RetainResources": { + "type": "list", + "member": {} + }, + "RoleARN": {} + } + } + }, + "DescribeAccountLimits": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeAccountLimitsResult", + "type": "structure", + "members": { + "AccountLimits": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Value": { + "type": "integer" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeChangeSet": { + "input": { + "type": "structure", + "required": [ + "ChangeSetName" + ], + "members": { + "ChangeSetName": {}, + "StackName": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeChangeSetResult", + "type": "structure", + "members": { + "ChangeSetName": {}, + "ChangeSetId": {}, + "StackId": {}, + "StackName": {}, + "Description": {}, + "Parameters": { + "shape": "Sb" + }, + "CreationTime": { + "type": "timestamp" + }, + "ExecutionStatus": {}, + "Status": {}, + "StatusReason": {}, + "NotificationARNs": { + "shape": "Sk" + }, + "Capabilities": { + "shape": "Sg" + }, + "Tags": { + "shape": "Sm" + }, + "Changes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "ResourceChange": { + "type": "structure", + "members": { + "Action": {}, + "LogicalResourceId": {}, + "PhysicalResourceId": {}, + "ResourceType": {}, + "Replacement": {}, + "Scope": { + "type": "list", + "member": {} + }, + "Details": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Target": { + "type": "structure", + "members": { + "Attribute": {}, + "Name": {}, + "RequiresRecreation": {} + } + }, + "Evaluation": {}, + "ChangeSource": {}, + "CausingEntity": {} + } + } + } + } + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeStackEvents": { + "input": { + "type": "structure", + "members": { + "StackName": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeStackEventsResult", + "type": "structure", + "members": { + "StackEvents": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "StackId", + "EventId", + "StackName", + "Timestamp" + ], + "members": { + "StackId": {}, + "EventId": {}, + "StackName": {}, + "LogicalResourceId": {}, + "PhysicalResourceId": {}, + "ResourceType": {}, + "Timestamp": { + "type": "timestamp" + }, + "ResourceStatus": {}, + "ResourceStatusReason": {}, + "ResourceProperties": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeStackResource": { + "input": { + "type": "structure", + "required": [ + "StackName", + "LogicalResourceId" + ], + "members": { + "StackName": {}, + "LogicalResourceId": {} + } + }, + "output": { + "resultWrapper": "DescribeStackResourceResult", + "type": "structure", + "members": { + "StackResourceDetail": { + "type": "structure", + "required": [ + "LogicalResourceId", + "ResourceType", + "LastUpdatedTimestamp", + "ResourceStatus" + ], + "members": { + "StackName": {}, + "StackId": {}, + "LogicalResourceId": {}, + "PhysicalResourceId": {}, + "ResourceType": {}, + "LastUpdatedTimestamp": { + "type": "timestamp" + }, + "ResourceStatus": {}, + "ResourceStatusReason": {}, + "Description": {}, + "Metadata": {} + } + } + } + } + }, + "DescribeStackResources": { + "input": { + "type": "structure", + "members": { + "StackName": {}, + "LogicalResourceId": {}, + "PhysicalResourceId": {} + } + }, + "output": { + "resultWrapper": "DescribeStackResourcesResult", + "type": "structure", + "members": { + "StackResources": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "LogicalResourceId", + "ResourceType", + "Timestamp", + "ResourceStatus" + ], + "members": { + "StackName": {}, + "StackId": {}, + "LogicalResourceId": {}, + "PhysicalResourceId": {}, + "ResourceType": {}, + "Timestamp": { + "type": "timestamp" + }, + "ResourceStatus": {}, + "ResourceStatusReason": {}, + "Description": {} + } + } + } + } + } + }, + "DescribeStacks": { + "input": { + "type": "structure", + "members": { + "StackName": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeStacksResult", + "type": "structure", + "members": { + "Stacks": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "StackName", + "CreationTime", + "StackStatus" + ], + "members": { + "StackId": {}, + "StackName": {}, + "Description": {}, + "Parameters": { + "shape": "Sb" + }, + "CreationTime": { + "type": "timestamp" + }, + "LastUpdatedTime": { + "type": "timestamp" + }, + "StackStatus": {}, + "StackStatusReason": {}, + "DisableRollback": { + "type": "boolean" + }, + "NotificationARNs": { + "shape": "Sk" + }, + "TimeoutInMinutes": { + "type": "integer" + }, + "Capabilities": { + "shape": "Sg" + }, + "Outputs": { + "type": "list", + "member": { + "type": "structure", + "members": { + "OutputKey": {}, + "OutputValue": {}, + "Description": {} + } + } + }, + "RoleARN": {}, + "Tags": { + "shape": "Sm" + } + } + } + }, + "NextToken": {} + } + } + }, + "EstimateTemplateCost": { + "input": { + "type": "structure", + "members": { + "TemplateBody": {}, + "TemplateURL": {}, + "Parameters": { + "shape": "Sb" + } + } + }, + "output": { + "resultWrapper": "EstimateTemplateCostResult", + "type": "structure", + "members": { + "Url": {} + } + } + }, + "ExecuteChangeSet": { + "input": { + "type": "structure", + "required": [ + "ChangeSetName" + ], + "members": { + "ChangeSetName": {}, + "StackName": {} + } + }, + "output": { + "resultWrapper": "ExecuteChangeSetResult", + "type": "structure", + "members": {} + } + }, + "GetStackPolicy": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {} + } + }, + "output": { + "resultWrapper": "GetStackPolicyResult", + "type": "structure", + "members": { + "StackPolicyBody": {} + } + } + }, + "GetTemplate": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {} + } + }, + "output": { + "resultWrapper": "GetTemplateResult", + "type": "structure", + "members": { + "TemplateBody": {} + } + } + }, + "GetTemplateSummary": { + "input": { + "type": "structure", + "members": { + "TemplateBody": {}, + "TemplateURL": {}, + "StackName": {} + } + }, + "output": { + "resultWrapper": "GetTemplateSummaryResult", + "type": "structure", + "members": { + "Parameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterKey": {}, + "DefaultValue": {}, + "ParameterType": {}, + "NoEcho": { + "type": "boolean" + }, + "Description": {}, + "ParameterConstraints": { + "type": "structure", + "members": { + "AllowedValues": { + "type": "list", + "member": {} + } + } + } + } + } + }, + "Description": {}, + "Capabilities": { + "shape": "Sg" + }, + "CapabilitiesReason": {}, + "ResourceTypes": { + "shape": "Si" + }, + "Version": {}, + "Metadata": {} + } + } + }, + "ListChangeSets": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListChangeSetsResult", + "type": "structure", + "members": { + "Summaries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "StackName": {}, + "ChangeSetId": {}, + "ChangeSetName": {}, + "ExecutionStatus": {}, + "Status": {}, + "StatusReason": {}, + "CreationTime": { + "type": "timestamp" + }, + "Description": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListStackResources": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListStackResourcesResult", + "type": "structure", + "members": { + "StackResourceSummaries": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "LogicalResourceId", + "ResourceType", + "LastUpdatedTimestamp", + "ResourceStatus" + ], + "members": { + "LogicalResourceId": {}, + "PhysicalResourceId": {}, + "ResourceType": {}, + "LastUpdatedTimestamp": { + "type": "timestamp" + }, + "ResourceStatus": {}, + "ResourceStatusReason": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListStacks": { + "input": { + "type": "structure", + "members": { + "NextToken": {}, + "StackStatusFilter": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "ListStacksResult", + "type": "structure", + "members": { + "StackSummaries": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "StackName", + "CreationTime", + "StackStatus" + ], + "members": { + "StackId": {}, + "StackName": {}, + "TemplateDescription": {}, + "CreationTime": { + "type": "timestamp" + }, + "LastUpdatedTime": { + "type": "timestamp" + }, + "DeletionTime": { + "type": "timestamp" + }, + "StackStatus": {}, + "StackStatusReason": {} + } + } + }, + "NextToken": {} + } + } + }, + "SetStackPolicy": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "StackPolicyBody": {}, + "StackPolicyURL": {} + } + } + }, + "SignalResource": { + "input": { + "type": "structure", + "required": [ + "StackName", + "LogicalResourceId", + "UniqueId", + "Status" + ], + "members": { + "StackName": {}, + "LogicalResourceId": {}, + "UniqueId": {}, + "Status": {} + } + } + }, + "UpdateStack": { + "input": { + "type": "structure", + "required": [ + "StackName" + ], + "members": { + "StackName": {}, + "TemplateBody": {}, + "TemplateURL": {}, + "UsePreviousTemplate": { + "type": "boolean" + }, + "StackPolicyDuringUpdateBody": {}, + "StackPolicyDuringUpdateURL": {}, + "Parameters": { + "shape": "Sb" + }, + "Capabilities": { + "shape": "Sg" + }, + "ResourceTypes": { + "shape": "Si" + }, + "RoleARN": {}, + "StackPolicyBody": {}, + "StackPolicyURL": {}, + "NotificationARNs": { + "shape": "Sk" + }, + "Tags": { + "shape": "Sm" + } + } + }, + "output": { + "resultWrapper": "UpdateStackResult", + "type": "structure", + "members": { + "StackId": {} + } + } + }, + "ValidateTemplate": { + "input": { + "type": "structure", + "members": { + "TemplateBody": {}, + "TemplateURL": {} + } + }, + "output": { + "resultWrapper": "ValidateTemplateResult", + "type": "structure", + "members": { + "Parameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterKey": {}, + "DefaultValue": {}, + "NoEcho": { + "type": "boolean" + }, + "Description": {} + } + } + }, + "Description": {}, + "Capabilities": { + "shape": "Sg" + }, + "CapabilitiesReason": {} + } + } + } + }, + "shapes": { + "Sb": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterKey": {}, + "ParameterValue": {}, + "UsePreviousValue": { + "type": "boolean" + } + } + } + }, + "Sg": { + "type": "list", + "member": {} + }, + "Si": { + "type": "list", + "member": {} + }, + "Sk": { + "type": "list", + "member": {} + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json new file mode 100644 index 0000000..da6c17d --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json @@ -0,0 +1,27 @@ +{ + "pagination": { + "DescribeStackEvents": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "StackEvents" + }, + "DescribeStackResources": { + "result_key": "StackResources" + }, + "DescribeStacks": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Stacks" + }, + "ListStackResources": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "StackResourceSummaries" + }, + "ListStacks": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "StackSummaries" + } + } +} diff --git a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json new file mode 100644 index 0000000..f3a5cde --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json @@ -0,0 +1,235 @@ +{ + "version": 2, + "waiters": { + "StackExists": { + "delay": 5, + "operation": "DescribeStacks", + "maxAttempts": 20, + "acceptors": [ + { + "matcher": "status", + "expected": 200, + "state": "success" + }, + { + "matcher": "error", + "expected": "ValidationError", + "state": "retry" + } + ] + }, + "StackCreateComplete": { + "delay": 30, + "operation": "DescribeStacks", + "maxAttempts": 120, + "description": "Wait until stack status is CREATE_COMPLETE.", + "acceptors": [ + { + "expected": "CREATE_COMPLETE", + "matcher": "pathAll", + "state": "success", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "CREATE_FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "DELETE_COMPLETE", + "matcher": "pathAny", + "argument": "Stacks[].StackStatus", + "state": "failure" + }, + { + "expected": "DELETE_IN_PROGRESS", + "matcher": "pathAny", + "argument": "Stacks[].StackStatus", + "state": "failure" + }, + { + "expected": "DELETE_FAILED", + "matcher": "pathAny", + "argument": "Stacks[].StackStatus", + "state": "failure" + }, + { + "expected": "ROLLBACK_COMPLETE", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "ROLLBACK_FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "ROLLBACK_IN_PROGRESS", + "matcher": "pathAny", + "argument": "Stacks[].StackStatus", + "state": "failure" + }, + { + "expected": "ValidationError", + "matcher": "error", + "state": "failure" + } + ] + }, + "StackDeleteComplete": { + "delay": 30, + "operation": "DescribeStacks", + "maxAttempts": 120, + "description": "Wait until stack status is DELETE_COMPLETE.", + "acceptors": [ + { + "expected": "DELETE_COMPLETE", + "matcher": "pathAll", + "state": "success", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "ValidationError", + "matcher": "error", + "state": "success" + }, + { + "expected": "DELETE_FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "CREATE_COMPLETE", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "CREATE_FAILED", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "CREATE_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "ROLLBACK_COMPLETE", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "ROLLBACK_FAILED", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "ROLLBACK_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_COMPLETE", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_ROLLBACK_COMPLETE", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_ROLLBACK_FAILED", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_ROLLBACK_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + } + ] + }, + "StackUpdateComplete": { + "delay": 30, + "maxAttempts": 120, + "operation": "DescribeStacks", + "description": "Wait until stack status is UPDATE_COMPLETE.", + "acceptors": [ + { + "expected": "UPDATE_COMPLETE", + "matcher": "pathAll", + "state": "success", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "UPDATE_FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "UPDATE_ROLLBACK_COMPLETE", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "expected": "UPDATE_ROLLBACK_FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Stacks[].StackStatus" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "argument": "Stacks[].StackStatus", + "expected": "UPDATE_ROLLBACK_IN_PROGRESS", + "matcher": "pathAny", + "state": "failure" + }, + { + "expected": "ValidationError", + "matcher": "error", + "state": "failure" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json new file mode 100644 index 0000000..c5c6890 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json @@ -0,0 +1,1876 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-09-07", + "endpointPrefix": "cloudfront", + "globalEndpoint": "cloudfront.amazonaws.com", + "protocol": "rest-xml", + "serviceAbbreviation": "CloudFront", + "serviceFullName": "Amazon CloudFront", + "signatureVersion": "v4" + }, + "operations": { + "CreateCloudFrontOriginAccessIdentity": { + "http": { + "requestUri": "/2016-09-07/origin-access-identity/cloudfront", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "CloudFrontOriginAccessIdentityConfig" + ], + "members": { + "CloudFrontOriginAccessIdentityConfig": { + "shape": "S2", + "locationName": "CloudFrontOriginAccessIdentityConfig", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + } + }, + "payload": "CloudFrontOriginAccessIdentityConfig" + }, + "output": { + "type": "structure", + "members": { + "CloudFrontOriginAccessIdentity": { + "shape": "S5" + }, + "Location": { + "location": "header", + "locationName": "Location" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "CloudFrontOriginAccessIdentity" + } + }, + "CreateDistribution": { + "http": { + "requestUri": "/2016-09-07/distribution", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "DistributionConfig" + ], + "members": { + "DistributionConfig": { + "shape": "S7", + "locationName": "DistributionConfig", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + } + }, + "payload": "DistributionConfig" + }, + "output": { + "type": "structure", + "members": { + "Distribution": { + "shape": "S1o" + }, + "Location": { + "location": "header", + "locationName": "Location" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "Distribution" + } + }, + "CreateDistributionWithTags": { + "http": { + "requestUri": "/2016-09-07/distribution?WithTags", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "DistributionConfigWithTags" + ], + "members": { + "DistributionConfigWithTags": { + "locationName": "DistributionConfigWithTags", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + }, + "type": "structure", + "required": [ + "DistributionConfig", + "Tags" + ], + "members": { + "DistributionConfig": { + "shape": "S7" + }, + "Tags": { + "shape": "S1x" + } + } + } + }, + "payload": "DistributionConfigWithTags" + }, + "output": { + "type": "structure", + "members": { + "Distribution": { + "shape": "S1o" + }, + "Location": { + "location": "header", + "locationName": "Location" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "Distribution" + } + }, + "CreateInvalidation": { + "http": { + "requestUri": "/2016-09-07/distribution/{DistributionId}/invalidation", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "DistributionId", + "InvalidationBatch" + ], + "members": { + "DistributionId": { + "location": "uri", + "locationName": "DistributionId" + }, + "InvalidationBatch": { + "shape": "S24", + "locationName": "InvalidationBatch", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + } + }, + "payload": "InvalidationBatch" + }, + "output": { + "type": "structure", + "members": { + "Location": { + "location": "header", + "locationName": "Location" + }, + "Invalidation": { + "shape": "S28" + } + }, + "payload": "Invalidation" + } + }, + "CreateStreamingDistribution": { + "http": { + "requestUri": "/2016-09-07/streaming-distribution", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "StreamingDistributionConfig" + ], + "members": { + "StreamingDistributionConfig": { + "shape": "S2a", + "locationName": "StreamingDistributionConfig", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + } + }, + "payload": "StreamingDistributionConfig" + }, + "output": { + "type": "structure", + "members": { + "StreamingDistribution": { + "shape": "S2e" + }, + "Location": { + "location": "header", + "locationName": "Location" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "StreamingDistribution" + } + }, + "CreateStreamingDistributionWithTags": { + "http": { + "requestUri": "/2016-09-07/streaming-distribution?WithTags", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "StreamingDistributionConfigWithTags" + ], + "members": { + "StreamingDistributionConfigWithTags": { + "locationName": "StreamingDistributionConfigWithTags", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + }, + "type": "structure", + "required": [ + "StreamingDistributionConfig", + "Tags" + ], + "members": { + "StreamingDistributionConfig": { + "shape": "S2a" + }, + "Tags": { + "shape": "S1x" + } + } + } + }, + "payload": "StreamingDistributionConfigWithTags" + }, + "output": { + "type": "structure", + "members": { + "StreamingDistribution": { + "shape": "S2e" + }, + "Location": { + "location": "header", + "locationName": "Location" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "StreamingDistribution" + } + }, + "DeleteCloudFrontOriginAccessIdentity": { + "http": { + "method": "DELETE", + "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + } + } + } + }, + "DeleteDistribution": { + "http": { + "method": "DELETE", + "requestUri": "/2016-09-07/distribution/{Id}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + } + } + } + }, + "DeleteStreamingDistribution": { + "http": { + "method": "DELETE", + "requestUri": "/2016-09-07/streaming-distribution/{Id}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + } + } + } + }, + "GetCloudFrontOriginAccessIdentity": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "CloudFrontOriginAccessIdentity": { + "shape": "S5" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "CloudFrontOriginAccessIdentity" + } + }, + "GetCloudFrontOriginAccessIdentityConfig": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}/config" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "CloudFrontOriginAccessIdentityConfig": { + "shape": "S2" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "CloudFrontOriginAccessIdentityConfig" + } + }, + "GetDistribution": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/distribution/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Distribution": { + "shape": "S1o" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "Distribution" + } + }, + "GetDistributionConfig": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/distribution/{Id}/config" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "DistributionConfig": { + "shape": "S7" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "DistributionConfig" + } + }, + "GetInvalidation": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/distribution/{DistributionId}/invalidation/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "DistributionId", + "Id" + ], + "members": { + "DistributionId": { + "location": "uri", + "locationName": "DistributionId" + }, + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Invalidation": { + "shape": "S28" + } + }, + "payload": "Invalidation" + } + }, + "GetStreamingDistribution": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/streaming-distribution/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "StreamingDistribution": { + "shape": "S2e" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "StreamingDistribution" + } + }, + "GetStreamingDistributionConfig": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/streaming-distribution/{Id}/config" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "StreamingDistributionConfig": { + "shape": "S2a" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "StreamingDistributionConfig" + } + }, + "ListCloudFrontOriginAccessIdentities": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/origin-access-identity/cloudfront" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems" + } + } + }, + "output": { + "type": "structure", + "members": { + "CloudFrontOriginAccessIdentityList": { + "type": "structure", + "required": [ + "Marker", + "MaxItems", + "IsTruncated", + "Quantity" + ], + "members": { + "Marker": {}, + "NextMarker": {}, + "MaxItems": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "CloudFrontOriginAccessIdentitySummary", + "type": "structure", + "required": [ + "Id", + "S3CanonicalUserId", + "Comment" + ], + "members": { + "Id": {}, + "S3CanonicalUserId": {}, + "Comment": {} + } + } + } + } + } + }, + "payload": "CloudFrontOriginAccessIdentityList" + } + }, + "ListDistributions": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/distribution" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems" + } + } + }, + "output": { + "type": "structure", + "members": { + "DistributionList": { + "shape": "S36" + } + }, + "payload": "DistributionList" + } + }, + "ListDistributionsByWebACLId": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/distributionsByWebACLId/{WebACLId}" + }, + "input": { + "type": "structure", + "required": [ + "WebACLId" + ], + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems" + }, + "WebACLId": { + "location": "uri", + "locationName": "WebACLId" + } + } + }, + "output": { + "type": "structure", + "members": { + "DistributionList": { + "shape": "S36" + } + }, + "payload": "DistributionList" + } + }, + "ListInvalidations": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/distribution/{DistributionId}/invalidation" + }, + "input": { + "type": "structure", + "required": [ + "DistributionId" + ], + "members": { + "DistributionId": { + "location": "uri", + "locationName": "DistributionId" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems" + } + } + }, + "output": { + "type": "structure", + "members": { + "InvalidationList": { + "type": "structure", + "required": [ + "Marker", + "MaxItems", + "IsTruncated", + "Quantity" + ], + "members": { + "Marker": {}, + "NextMarker": {}, + "MaxItems": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "InvalidationSummary", + "type": "structure", + "required": [ + "Id", + "CreateTime", + "Status" + ], + "members": { + "Id": {}, + "CreateTime": { + "type": "timestamp" + }, + "Status": {} + } + } + } + } + } + }, + "payload": "InvalidationList" + } + }, + "ListStreamingDistributions": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/streaming-distribution" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems" + } + } + }, + "output": { + "type": "structure", + "members": { + "StreamingDistributionList": { + "type": "structure", + "required": [ + "Marker", + "MaxItems", + "IsTruncated", + "Quantity" + ], + "members": { + "Marker": {}, + "NextMarker": {}, + "MaxItems": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "StreamingDistributionSummary", + "type": "structure", + "required": [ + "Id", + "ARN", + "Status", + "LastModifiedTime", + "DomainName", + "S3Origin", + "Aliases", + "TrustedSigners", + "Comment", + "PriceClass", + "Enabled" + ], + "members": { + "Id": {}, + "ARN": {}, + "Status": {}, + "LastModifiedTime": { + "type": "timestamp" + }, + "DomainName": {}, + "S3Origin": { + "shape": "S2b" + }, + "Aliases": { + "shape": "S8" + }, + "TrustedSigners": { + "shape": "Sy" + }, + "Comment": {}, + "PriceClass": {}, + "Enabled": { + "type": "boolean" + } + } + } + } + } + } + }, + "payload": "StreamingDistributionList" + } + }, + "ListTagsForResource": { + "http": { + "method": "GET", + "requestUri": "/2016-09-07/tagging" + }, + "input": { + "type": "structure", + "required": [ + "Resource" + ], + "members": { + "Resource": { + "location": "querystring", + "locationName": "Resource" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Tags" + ], + "members": { + "Tags": { + "shape": "S1x" + } + }, + "payload": "Tags" + } + }, + "TagResource": { + "http": { + "requestUri": "/2016-09-07/tagging?Operation=Tag", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "Resource", + "Tags" + ], + "members": { + "Resource": { + "location": "querystring", + "locationName": "Resource" + }, + "Tags": { + "shape": "S1x", + "locationName": "Tags", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + } + }, + "payload": "Tags" + } + }, + "UntagResource": { + "http": { + "requestUri": "/2016-09-07/tagging?Operation=Untag", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "Resource", + "TagKeys" + ], + "members": { + "Resource": { + "location": "querystring", + "locationName": "Resource" + }, + "TagKeys": { + "locationName": "TagKeys", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + }, + "type": "structure", + "members": { + "Items": { + "type": "list", + "member": { + "locationName": "Key" + } + } + } + } + }, + "payload": "TagKeys" + } + }, + "UpdateCloudFrontOriginAccessIdentity": { + "http": { + "method": "PUT", + "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}/config" + }, + "input": { + "type": "structure", + "required": [ + "CloudFrontOriginAccessIdentityConfig", + "Id" + ], + "members": { + "CloudFrontOriginAccessIdentityConfig": { + "shape": "S2", + "locationName": "CloudFrontOriginAccessIdentityConfig", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + }, + "Id": { + "location": "uri", + "locationName": "Id" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + } + }, + "payload": "CloudFrontOriginAccessIdentityConfig" + }, + "output": { + "type": "structure", + "members": { + "CloudFrontOriginAccessIdentity": { + "shape": "S5" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "CloudFrontOriginAccessIdentity" + } + }, + "UpdateDistribution": { + "http": { + "method": "PUT", + "requestUri": "/2016-09-07/distribution/{Id}/config" + }, + "input": { + "type": "structure", + "required": [ + "DistributionConfig", + "Id" + ], + "members": { + "DistributionConfig": { + "shape": "S7", + "locationName": "DistributionConfig", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + }, + "Id": { + "location": "uri", + "locationName": "Id" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + } + }, + "payload": "DistributionConfig" + }, + "output": { + "type": "structure", + "members": { + "Distribution": { + "shape": "S1o" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "Distribution" + } + }, + "UpdateStreamingDistribution": { + "http": { + "method": "PUT", + "requestUri": "/2016-09-07/streaming-distribution/{Id}/config" + }, + "input": { + "type": "structure", + "required": [ + "StreamingDistributionConfig", + "Id" + ], + "members": { + "StreamingDistributionConfig": { + "shape": "S2a", + "locationName": "StreamingDistributionConfig", + "xmlNamespace": { + "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" + } + }, + "Id": { + "location": "uri", + "locationName": "Id" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + } + }, + "payload": "StreamingDistributionConfig" + }, + "output": { + "type": "structure", + "members": { + "StreamingDistribution": { + "shape": "S2e" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + } + }, + "payload": "StreamingDistribution" + } + } + }, + "shapes": { + "S2": { + "type": "structure", + "required": [ + "CallerReference", + "Comment" + ], + "members": { + "CallerReference": {}, + "Comment": {} + } + }, + "S5": { + "type": "structure", + "required": [ + "Id", + "S3CanonicalUserId" + ], + "members": { + "Id": {}, + "S3CanonicalUserId": {}, + "CloudFrontOriginAccessIdentityConfig": { + "shape": "S2" + } + } + }, + "S7": { + "type": "structure", + "required": [ + "CallerReference", + "Origins", + "DefaultCacheBehavior", + "Comment", + "Enabled" + ], + "members": { + "CallerReference": {}, + "Aliases": { + "shape": "S8" + }, + "DefaultRootObject": {}, + "Origins": { + "shape": "Sb" + }, + "DefaultCacheBehavior": { + "shape": "Sn" + }, + "CacheBehaviors": { + "shape": "S16" + }, + "CustomErrorResponses": { + "shape": "S19" + }, + "Comment": {}, + "Logging": { + "type": "structure", + "required": [ + "Enabled", + "IncludeCookies", + "Bucket", + "Prefix" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "IncludeCookies": { + "type": "boolean" + }, + "Bucket": {}, + "Prefix": {} + } + }, + "PriceClass": {}, + "Enabled": { + "type": "boolean" + }, + "ViewerCertificate": { + "shape": "S1e" + }, + "Restrictions": { + "shape": "S1i" + }, + "WebACLId": {}, + "HttpVersion": {} + } + }, + "S8": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "CNAME" + } + } + } + }, + "Sb": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Origin", + "type": "structure", + "required": [ + "Id", + "DomainName" + ], + "members": { + "Id": {}, + "DomainName": {}, + "OriginPath": {}, + "CustomHeaders": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "OriginCustomHeader", + "type": "structure", + "required": [ + "HeaderName", + "HeaderValue" + ], + "members": { + "HeaderName": {}, + "HeaderValue": {} + } + } + } + } + }, + "S3OriginConfig": { + "type": "structure", + "required": [ + "OriginAccessIdentity" + ], + "members": { + "OriginAccessIdentity": {} + } + }, + "CustomOriginConfig": { + "type": "structure", + "required": [ + "HTTPPort", + "HTTPSPort", + "OriginProtocolPolicy" + ], + "members": { + "HTTPPort": { + "type": "integer" + }, + "HTTPSPort": { + "type": "integer" + }, + "OriginProtocolPolicy": {}, + "OriginSslProtocols": { + "type": "structure", + "required": [ + "Quantity", + "Items" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "SslProtocol" + } + } + } + } + } + } + } + } + } + } + }, + "Sn": { + "type": "structure", + "required": [ + "TargetOriginId", + "ForwardedValues", + "TrustedSigners", + "ViewerProtocolPolicy", + "MinTTL" + ], + "members": { + "TargetOriginId": {}, + "ForwardedValues": { + "shape": "So" + }, + "TrustedSigners": { + "shape": "Sy" + }, + "ViewerProtocolPolicy": {}, + "MinTTL": { + "type": "long" + }, + "AllowedMethods": { + "shape": "S12" + }, + "SmoothStreaming": { + "type": "boolean" + }, + "DefaultTTL": { + "type": "long" + }, + "MaxTTL": { + "type": "long" + }, + "Compress": { + "type": "boolean" + } + } + }, + "So": { + "type": "structure", + "required": [ + "QueryString", + "Cookies" + ], + "members": { + "QueryString": { + "type": "boolean" + }, + "Cookies": { + "type": "structure", + "required": [ + "Forward" + ], + "members": { + "Forward": {}, + "WhitelistedNames": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Name" + } + } + } + } + } + }, + "Headers": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Name" + } + } + } + }, + "QueryStringCacheKeys": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Name" + } + } + } + } + } + }, + "Sy": { + "type": "structure", + "required": [ + "Enabled", + "Quantity" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "AwsAccountNumber" + } + } + } + }, + "S12": { + "type": "structure", + "required": [ + "Quantity", + "Items" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "shape": "S13" + }, + "CachedMethods": { + "type": "structure", + "required": [ + "Quantity", + "Items" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "shape": "S13" + } + } + } + } + }, + "S13": { + "type": "list", + "member": { + "locationName": "Method" + } + }, + "S16": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "CacheBehavior", + "type": "structure", + "required": [ + "PathPattern", + "TargetOriginId", + "ForwardedValues", + "TrustedSigners", + "ViewerProtocolPolicy", + "MinTTL" + ], + "members": { + "PathPattern": {}, + "TargetOriginId": {}, + "ForwardedValues": { + "shape": "So" + }, + "TrustedSigners": { + "shape": "Sy" + }, + "ViewerProtocolPolicy": {}, + "MinTTL": { + "type": "long" + }, + "AllowedMethods": { + "shape": "S12" + }, + "SmoothStreaming": { + "type": "boolean" + }, + "DefaultTTL": { + "type": "long" + }, + "MaxTTL": { + "type": "long" + }, + "Compress": { + "type": "boolean" + } + } + } + } + } + }, + "S19": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "CustomErrorResponse", + "type": "structure", + "required": [ + "ErrorCode" + ], + "members": { + "ErrorCode": { + "type": "integer" + }, + "ResponsePagePath": {}, + "ResponseCode": {}, + "ErrorCachingMinTTL": { + "type": "long" + } + } + } + } + } + }, + "S1e": { + "type": "structure", + "members": { + "CloudFrontDefaultCertificate": { + "type": "boolean" + }, + "IAMCertificateId": {}, + "ACMCertificateArn": {}, + "SSLSupportMethod": {}, + "MinimumProtocolVersion": {}, + "Certificate": { + "deprecated": true + }, + "CertificateSource": { + "deprecated": true + } + } + }, + "S1i": { + "type": "structure", + "required": [ + "GeoRestriction" + ], + "members": { + "GeoRestriction": { + "type": "structure", + "required": [ + "RestrictionType", + "Quantity" + ], + "members": { + "RestrictionType": {}, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Location" + } + } + } + } + } + }, + "S1o": { + "type": "structure", + "required": [ + "Id", + "ARN", + "Status", + "LastModifiedTime", + "InProgressInvalidationBatches", + "DomainName", + "ActiveTrustedSigners", + "DistributionConfig" + ], + "members": { + "Id": {}, + "ARN": {}, + "Status": {}, + "LastModifiedTime": { + "type": "timestamp" + }, + "InProgressInvalidationBatches": { + "type": "integer" + }, + "DomainName": {}, + "ActiveTrustedSigners": { + "shape": "S1q" + }, + "DistributionConfig": { + "shape": "S7" + } + } + }, + "S1q": { + "type": "structure", + "required": [ + "Enabled", + "Quantity" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Signer", + "type": "structure", + "members": { + "AwsAccountNumber": {}, + "KeyPairIds": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "KeyPairId" + } + } + } + } + } + } + } + } + }, + "S1x": { + "type": "structure", + "members": { + "Items": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + } + } + }, + "S24": { + "type": "structure", + "required": [ + "Paths", + "CallerReference" + ], + "members": { + "Paths": { + "type": "structure", + "required": [ + "Quantity" + ], + "members": { + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "Path" + } + } + } + }, + "CallerReference": {} + } + }, + "S28": { + "type": "structure", + "required": [ + "Id", + "Status", + "CreateTime", + "InvalidationBatch" + ], + "members": { + "Id": {}, + "Status": {}, + "CreateTime": { + "type": "timestamp" + }, + "InvalidationBatch": { + "shape": "S24" + } + } + }, + "S2a": { + "type": "structure", + "required": [ + "CallerReference", + "S3Origin", + "Comment", + "TrustedSigners", + "Enabled" + ], + "members": { + "CallerReference": {}, + "S3Origin": { + "shape": "S2b" + }, + "Aliases": { + "shape": "S8" + }, + "Comment": {}, + "Logging": { + "type": "structure", + "required": [ + "Enabled", + "Bucket", + "Prefix" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "Bucket": {}, + "Prefix": {} + } + }, + "TrustedSigners": { + "shape": "Sy" + }, + "PriceClass": {}, + "Enabled": { + "type": "boolean" + } + } + }, + "S2b": { + "type": "structure", + "required": [ + "DomainName", + "OriginAccessIdentity" + ], + "members": { + "DomainName": {}, + "OriginAccessIdentity": {} + } + }, + "S2e": { + "type": "structure", + "required": [ + "Id", + "ARN", + "Status", + "DomainName", + "ActiveTrustedSigners", + "StreamingDistributionConfig" + ], + "members": { + "Id": {}, + "ARN": {}, + "Status": {}, + "LastModifiedTime": { + "type": "timestamp" + }, + "DomainName": {}, + "ActiveTrustedSigners": { + "shape": "S1q" + }, + "StreamingDistributionConfig": { + "shape": "S2a" + } + } + }, + "S36": { + "type": "structure", + "required": [ + "Marker", + "MaxItems", + "IsTruncated", + "Quantity" + ], + "members": { + "Marker": {}, + "NextMarker": {}, + "MaxItems": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Quantity": { + "type": "integer" + }, + "Items": { + "type": "list", + "member": { + "locationName": "DistributionSummary", + "type": "structure", + "required": [ + "Id", + "ARN", + "Status", + "LastModifiedTime", + "DomainName", + "Aliases", + "Origins", + "DefaultCacheBehavior", + "CacheBehaviors", + "CustomErrorResponses", + "Comment", + "PriceClass", + "Enabled", + "ViewerCertificate", + "Restrictions", + "WebACLId", + "HttpVersion" + ], + "members": { + "Id": {}, + "ARN": {}, + "Status": {}, + "LastModifiedTime": { + "type": "timestamp" + }, + "DomainName": {}, + "Aliases": { + "shape": "S8" + }, + "Origins": { + "shape": "Sb" + }, + "DefaultCacheBehavior": { + "shape": "Sn" + }, + "CacheBehaviors": { + "shape": "S16" + }, + "CustomErrorResponses": { + "shape": "S19" + }, + "Comment": {}, + "PriceClass": {}, + "Enabled": { + "type": "boolean" + }, + "ViewerCertificate": { + "shape": "S1e" + }, + "Restrictions": { + "shape": "S1i" + }, + "WebACLId": {}, + "HttpVersion": {} + } + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json new file mode 100644 index 0000000..51fbb90 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json @@ -0,0 +1,32 @@ +{ + "pagination": { + "ListCloudFrontOriginAccessIdentities": { + "input_token": "Marker", + "output_token": "CloudFrontOriginAccessIdentityList.NextMarker", + "limit_key": "MaxItems", + "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated", + "result_key": "CloudFrontOriginAccessIdentityList.Items" + }, + "ListDistributions": { + "input_token": "Marker", + "output_token": "DistributionList.NextMarker", + "limit_key": "MaxItems", + "more_results": "DistributionList.IsTruncated", + "result_key": "DistributionList.Items" + }, + "ListInvalidations": { + "input_token": "Marker", + "output_token": "InvalidationList.NextMarker", + "limit_key": "MaxItems", + "more_results": "InvalidationList.IsTruncated", + "result_key": "InvalidationList.Items" + }, + "ListStreamingDistributions": { + "input_token": "Marker", + "output_token": "StreamingDistributionList.NextMarker", + "limit_key": "MaxItems", + "more_results": "StreamingDistributionList.IsTruncated", + "result_key": "StreamingDistributionList.Items" + } + } +} diff --git a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json new file mode 100644 index 0000000..edd74b2 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json @@ -0,0 +1,47 @@ +{ + "version": 2, + "waiters": { + "DistributionDeployed": { + "delay": 60, + "operation": "GetDistribution", + "maxAttempts": 25, + "description": "Wait until a distribution is deployed.", + "acceptors": [ + { + "expected": "Deployed", + "matcher": "path", + "state": "success", + "argument": "Distribution.Status" + } + ] + }, + "InvalidationCompleted": { + "delay": 20, + "operation": "GetInvalidation", + "maxAttempts": 30, + "description": "Wait until an invalidation has completed.", + "acceptors": [ + { + "expected": "Completed", + "matcher": "path", + "state": "success", + "argument": "Invalidation.Status" + } + ] + }, + "StreamingDistributionDeployed": { + "delay": 60, + "operation": "GetStreamingDistribution", + "maxAttempts": 25, + "description": "Wait until a streaming distribution is deployed.", + "acceptors": [ + { + "expected": "Deployed", + "matcher": "path", + "state": "success", + "argument": "StreamingDistribution.Status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json b/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json new file mode 100644 index 0000000..99d911d --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json @@ -0,0 +1,519 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-05-30", + "endpointPrefix": "cloudhsm", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "CloudHSM", + "serviceFullName": "Amazon CloudHSM", + "signatureVersion": "v4", + "targetPrefix": "CloudHsmFrontendService" + }, + "operations": { + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceArn", + "TagList" + ], + "members": { + "ResourceArn": {}, + "TagList": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": {} + } + } + }, + "CreateHapg": { + "input": { + "type": "structure", + "required": [ + "Label" + ], + "members": { + "Label": {} + } + }, + "output": { + "type": "structure", + "members": { + "HapgArn": {} + } + } + }, + "CreateHsm": { + "input": { + "type": "structure", + "required": [ + "SubnetId", + "SshKey", + "IamRoleArn", + "SubscriptionType" + ], + "members": { + "SubnetId": { + "locationName": "SubnetId" + }, + "SshKey": { + "locationName": "SshKey" + }, + "EniIp": { + "locationName": "EniIp" + }, + "IamRoleArn": { + "locationName": "IamRoleArn" + }, + "ExternalId": { + "locationName": "ExternalId" + }, + "SubscriptionType": { + "locationName": "SubscriptionType" + }, + "ClientToken": { + "locationName": "ClientToken" + }, + "SyslogIp": { + "locationName": "SyslogIp" + } + }, + "locationName": "CreateHsmRequest" + }, + "output": { + "type": "structure", + "members": { + "HsmArn": {} + } + } + }, + "CreateLunaClient": { + "input": { + "type": "structure", + "required": [ + "Certificate" + ], + "members": { + "Label": {}, + "Certificate": {} + } + }, + "output": { + "type": "structure", + "members": { + "ClientArn": {} + } + } + }, + "DeleteHapg": { + "input": { + "type": "structure", + "required": [ + "HapgArn" + ], + "members": { + "HapgArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": {} + } + } + }, + "DeleteHsm": { + "input": { + "type": "structure", + "required": [ + "HsmArn" + ], + "members": { + "HsmArn": { + "locationName": "HsmArn" + } + }, + "locationName": "DeleteHsmRequest" + }, + "output": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": {} + } + } + }, + "DeleteLunaClient": { + "input": { + "type": "structure", + "required": [ + "ClientArn" + ], + "members": { + "ClientArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": {} + } + } + }, + "DescribeHapg": { + "input": { + "type": "structure", + "required": [ + "HapgArn" + ], + "members": { + "HapgArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "HapgArn": {}, + "HapgSerial": {}, + "HsmsLastActionFailed": { + "shape": "Sz" + }, + "HsmsPendingDeletion": { + "shape": "Sz" + }, + "HsmsPendingRegistration": { + "shape": "Sz" + }, + "Label": {}, + "LastModifiedTimestamp": {}, + "PartitionSerialList": { + "shape": "S11" + }, + "State": {} + } + } + }, + "DescribeHsm": { + "input": { + "type": "structure", + "members": { + "HsmArn": {}, + "HsmSerialNumber": {} + } + }, + "output": { + "type": "structure", + "members": { + "HsmArn": {}, + "Status": {}, + "StatusDetails": {}, + "AvailabilityZone": {}, + "EniId": {}, + "EniIp": {}, + "SubscriptionType": {}, + "SubscriptionStartDate": {}, + "SubscriptionEndDate": {}, + "VpcId": {}, + "SubnetId": {}, + "IamRoleArn": {}, + "SerialNumber": {}, + "VendorName": {}, + "HsmType": {}, + "SoftwareVersion": {}, + "SshPublicKey": {}, + "SshKeyLastUpdated": {}, + "ServerCertUri": {}, + "ServerCertLastUpdated": {}, + "Partitions": { + "type": "list", + "member": {} + } + } + } + }, + "DescribeLunaClient": { + "input": { + "type": "structure", + "members": { + "ClientArn": {}, + "CertificateFingerprint": {} + } + }, + "output": { + "type": "structure", + "members": { + "ClientArn": {}, + "Certificate": {}, + "CertificateFingerprint": {}, + "LastModifiedTimestamp": {}, + "Label": {} + } + } + }, + "GetConfig": { + "input": { + "type": "structure", + "required": [ + "ClientArn", + "ClientVersion", + "HapgList" + ], + "members": { + "ClientArn": {}, + "ClientVersion": {}, + "HapgList": { + "shape": "S1i" + } + } + }, + "output": { + "type": "structure", + "members": { + "ConfigType": {}, + "ConfigFile": {}, + "ConfigCred": {} + } + } + }, + "ListAvailableZones": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "AZList": { + "type": "list", + "member": {} + } + } + } + }, + "ListHapgs": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HapgList" + ], + "members": { + "HapgList": { + "shape": "S1i" + }, + "NextToken": {} + } + } + }, + "ListHsms": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "HsmList": { + "shape": "Sz" + }, + "NextToken": {} + } + } + }, + "ListLunaClients": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ClientList" + ], + "members": { + "ClientList": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceArn" + ], + "members": { + "ResourceArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TagList" + ], + "members": { + "TagList": { + "shape": "S3" + } + } + } + }, + "ModifyHapg": { + "input": { + "type": "structure", + "required": [ + "HapgArn" + ], + "members": { + "HapgArn": {}, + "Label": {}, + "PartitionSerialList": { + "shape": "S11" + } + } + }, + "output": { + "type": "structure", + "members": { + "HapgArn": {} + } + } + }, + "ModifyHsm": { + "input": { + "type": "structure", + "required": [ + "HsmArn" + ], + "members": { + "HsmArn": { + "locationName": "HsmArn" + }, + "SubnetId": { + "locationName": "SubnetId" + }, + "EniIp": { + "locationName": "EniIp" + }, + "IamRoleArn": { + "locationName": "IamRoleArn" + }, + "ExternalId": { + "locationName": "ExternalId" + }, + "SyslogIp": { + "locationName": "SyslogIp" + } + }, + "locationName": "ModifyHsmRequest" + }, + "output": { + "type": "structure", + "members": { + "HsmArn": {} + } + } + }, + "ModifyLunaClient": { + "input": { + "type": "structure", + "required": [ + "ClientArn", + "Certificate" + ], + "members": { + "ClientArn": {}, + "Certificate": {} + } + }, + "output": { + "type": "structure", + "members": { + "ClientArn": {} + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceArn", + "TagKeyList" + ], + "members": { + "ResourceArn": {}, + "TagKeyList": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": {} + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sz": { + "type": "list", + "member": {} + }, + "S11": { + "type": "list", + "member": {} + }, + "S1i": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json b/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json new file mode 100644 index 0000000..5db90f2 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json @@ -0,0 +1,837 @@ +{ + "metadata": { + "apiVersion": "2011-02-01", + "endpointPrefix": "cloudsearch", + "serviceFullName": "Amazon CloudSearch", + "signatureVersion": "v4", + "xmlNamespace": "http://cloudsearch.amazonaws.com/doc/2011-02-01/", + "protocol": "query" + }, + "operations": { + "CreateDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "CreateDomainResult", + "type": "structure", + "members": { + "DomainStatus": { + "shape": "S4" + } + } + } + }, + "DefineIndexField": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "IndexField" + ], + "members": { + "DomainName": {}, + "IndexField": { + "shape": "Sf" + } + } + }, + "output": { + "resultWrapper": "DefineIndexFieldResult", + "type": "structure", + "required": [ + "IndexField" + ], + "members": { + "IndexField": { + "shape": "Sx" + } + } + } + }, + "DefineRankExpression": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "RankExpression" + ], + "members": { + "DomainName": {}, + "RankExpression": { + "shape": "S12" + } + } + }, + "output": { + "resultWrapper": "DefineRankExpressionResult", + "type": "structure", + "required": [ + "RankExpression" + ], + "members": { + "RankExpression": { + "shape": "S15" + } + } + } + }, + "DeleteDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DeleteDomainResult", + "type": "structure", + "members": { + "DomainStatus": { + "shape": "S4" + } + } + } + }, + "DeleteIndexField": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "IndexFieldName" + ], + "members": { + "DomainName": {}, + "IndexFieldName": {} + } + }, + "output": { + "resultWrapper": "DeleteIndexFieldResult", + "type": "structure", + "required": [ + "IndexField" + ], + "members": { + "IndexField": { + "shape": "Sx" + } + } + } + }, + "DeleteRankExpression": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "RankName" + ], + "members": { + "DomainName": {}, + "RankName": {} + } + }, + "output": { + "resultWrapper": "DeleteRankExpressionResult", + "type": "structure", + "required": [ + "RankExpression" + ], + "members": { + "RankExpression": { + "shape": "S15" + } + } + } + }, + "DescribeAvailabilityOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeAvailabilityOptionsResult", + "type": "structure", + "members": { + "AvailabilityOptions": { + "shape": "S1e" + } + } + } + }, + "DescribeDefaultSearchField": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeDefaultSearchFieldResult", + "type": "structure", + "required": [ + "DefaultSearchField" + ], + "members": { + "DefaultSearchField": { + "shape": "S1i" + } + } + } + }, + "DescribeDomains": { + "input": { + "type": "structure", + "members": { + "DomainNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeDomainsResult", + "type": "structure", + "required": [ + "DomainStatusList" + ], + "members": { + "DomainStatusList": { + "type": "list", + "member": { + "shape": "S4" + } + } + } + } + }, + "DescribeIndexFields": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "FieldNames": { + "shape": "S1o" + } + } + }, + "output": { + "resultWrapper": "DescribeIndexFieldsResult", + "type": "structure", + "required": [ + "IndexFields" + ], + "members": { + "IndexFields": { + "type": "list", + "member": { + "shape": "Sx" + } + } + } + } + }, + "DescribeRankExpressions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "RankNames": { + "shape": "S1o" + } + } + }, + "output": { + "resultWrapper": "DescribeRankExpressionsResult", + "type": "structure", + "required": [ + "RankExpressions" + ], + "members": { + "RankExpressions": { + "type": "list", + "member": { + "shape": "S15" + } + } + } + } + }, + "DescribeServiceAccessPolicies": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeServiceAccessPoliciesResult", + "type": "structure", + "required": [ + "AccessPolicies" + ], + "members": { + "AccessPolicies": { + "shape": "S1w" + } + } + } + }, + "DescribeStemmingOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeStemmingOptionsResult", + "type": "structure", + "required": [ + "Stems" + ], + "members": { + "Stems": { + "shape": "S20" + } + } + } + }, + "DescribeStopwordOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeStopwordOptionsResult", + "type": "structure", + "required": [ + "Stopwords" + ], + "members": { + "Stopwords": { + "shape": "S24" + } + } + } + }, + "DescribeSynonymOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeSynonymOptionsResult", + "type": "structure", + "required": [ + "Synonyms" + ], + "members": { + "Synonyms": { + "shape": "S28" + } + } + } + }, + "IndexDocuments": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "IndexDocumentsResult", + "type": "structure", + "members": { + "FieldNames": { + "shape": "S1o" + } + } + } + }, + "UpdateAvailabilityOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "MultiAZ" + ], + "members": { + "DomainName": {}, + "MultiAZ": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "UpdateAvailabilityOptionsResult", + "type": "structure", + "members": { + "AvailabilityOptions": { + "shape": "S1e" + } + } + } + }, + "UpdateDefaultSearchField": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "DefaultSearchField" + ], + "members": { + "DomainName": {}, + "DefaultSearchField": {} + } + }, + "output": { + "resultWrapper": "UpdateDefaultSearchFieldResult", + "type": "structure", + "required": [ + "DefaultSearchField" + ], + "members": { + "DefaultSearchField": { + "shape": "S1i" + } + } + } + }, + "UpdateServiceAccessPolicies": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "AccessPolicies" + ], + "members": { + "DomainName": {}, + "AccessPolicies": {} + } + }, + "output": { + "resultWrapper": "UpdateServiceAccessPoliciesResult", + "type": "structure", + "required": [ + "AccessPolicies" + ], + "members": { + "AccessPolicies": { + "shape": "S1w" + } + } + } + }, + "UpdateStemmingOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Stems" + ], + "members": { + "DomainName": {}, + "Stems": {} + } + }, + "output": { + "resultWrapper": "UpdateStemmingOptionsResult", + "type": "structure", + "required": [ + "Stems" + ], + "members": { + "Stems": { + "shape": "S20" + } + } + } + }, + "UpdateStopwordOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Stopwords" + ], + "members": { + "DomainName": {}, + "Stopwords": {} + } + }, + "output": { + "resultWrapper": "UpdateStopwordOptionsResult", + "type": "structure", + "required": [ + "Stopwords" + ], + "members": { + "Stopwords": { + "shape": "S24" + } + } + } + }, + "UpdateSynonymOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Synonyms" + ], + "members": { + "DomainName": {}, + "Synonyms": {} + } + }, + "output": { + "resultWrapper": "UpdateSynonymOptionsResult", + "type": "structure", + "required": [ + "Synonyms" + ], + "members": { + "Synonyms": { + "shape": "S28" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "required": [ + "DomainId", + "DomainName", + "RequiresIndexDocuments" + ], + "members": { + "DomainId": {}, + "DomainName": {}, + "Created": { + "type": "boolean" + }, + "Deleted": { + "type": "boolean" + }, + "NumSearchableDocs": { + "type": "long" + }, + "DocService": { + "shape": "S8" + }, + "SearchService": { + "shape": "S8" + }, + "RequiresIndexDocuments": { + "type": "boolean" + }, + "Processing": { + "type": "boolean" + }, + "SearchInstanceType": {}, + "SearchPartitionCount": { + "type": "integer" + }, + "SearchInstanceCount": { + "type": "integer" + } + } + }, + "S8": { + "type": "structure", + "members": { + "Arn": {}, + "Endpoint": {} + } + }, + "Sf": { + "type": "structure", + "required": [ + "IndexFieldName", + "IndexFieldType" + ], + "members": { + "IndexFieldName": {}, + "IndexFieldType": {}, + "UIntOptions": { + "type": "structure", + "members": { + "DefaultValue": { + "type": "integer" + } + } + }, + "LiteralOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SearchEnabled": { + "type": "boolean" + }, + "FacetEnabled": { + "type": "boolean" + }, + "ResultEnabled": { + "type": "boolean" + } + } + }, + "TextOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "FacetEnabled": { + "type": "boolean" + }, + "ResultEnabled": { + "type": "boolean" + }, + "TextProcessor": {} + } + }, + "SourceAttributes": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SourceDataFunction" + ], + "members": { + "SourceDataFunction": {}, + "SourceDataCopy": { + "type": "structure", + "required": [ + "SourceName" + ], + "members": { + "SourceName": {}, + "DefaultValue": {} + } + }, + "SourceDataTrimTitle": { + "type": "structure", + "required": [ + "SourceName" + ], + "members": { + "SourceName": {}, + "DefaultValue": {}, + "Separator": {}, + "Language": {} + } + }, + "SourceDataMap": { + "type": "structure", + "required": [ + "SourceName" + ], + "members": { + "SourceName": {}, + "DefaultValue": {}, + "Cases": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + } + } + }, + "Sx": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Sf" + }, + "Status": { + "shape": "Sy" + } + } + }, + "Sy": { + "type": "structure", + "required": [ + "CreationDate", + "UpdateDate", + "State" + ], + "members": { + "CreationDate": { + "type": "timestamp" + }, + "UpdateDate": { + "type": "timestamp" + }, + "UpdateVersion": { + "type": "integer" + }, + "State": {}, + "PendingDeletion": { + "type": "boolean" + } + } + }, + "S12": { + "type": "structure", + "required": [ + "RankName", + "RankExpression" + ], + "members": { + "RankName": {}, + "RankExpression": {} + } + }, + "S15": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "S12" + }, + "Status": { + "shape": "Sy" + } + } + }, + "S1e": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "type": "boolean" + }, + "Status": { + "shape": "Sy" + } + } + }, + "S1i": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sy" + } + } + }, + "S1o": { + "type": "list", + "member": {} + }, + "S1w": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sy" + } + } + }, + "S20": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sy" + } + } + }, + "S24": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sy" + } + } + }, + "S28": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sy" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json b/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json new file mode 100644 index 0000000..5216445 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json @@ -0,0 +1,13 @@ +{ + "pagination": { + "DescribeDomains": { + "result_key": "DomainStatusList" + }, + "DescribeIndexFields": { + "result_key": "IndexFields" + }, + "DescribeRankExpressions": { + "result_key": "RankExpressions" + } + } +} diff --git a/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json b/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json new file mode 100644 index 0000000..7ab2a3e --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json @@ -0,0 +1,1086 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-01-01", + "endpointPrefix": "cloudsearch", + "serviceFullName": "Amazon CloudSearch", + "signatureVersion": "v4", + "xmlNamespace": "http://cloudsearch.amazonaws.com/doc/2013-01-01/", + "protocol": "query" + }, + "operations": { + "BuildSuggesters": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "BuildSuggestersResult", + "type": "structure", + "members": { + "FieldNames": { + "shape": "S4" + } + } + } + }, + "CreateDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "CreateDomainResult", + "type": "structure", + "members": { + "DomainStatus": { + "shape": "S8" + } + } + } + }, + "DefineAnalysisScheme": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "AnalysisScheme" + ], + "members": { + "DomainName": {}, + "AnalysisScheme": { + "shape": "Sl" + } + } + }, + "output": { + "resultWrapper": "DefineAnalysisSchemeResult", + "type": "structure", + "required": [ + "AnalysisScheme" + ], + "members": { + "AnalysisScheme": { + "shape": "Ss" + } + } + } + }, + "DefineExpression": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Expression" + ], + "members": { + "DomainName": {}, + "Expression": { + "shape": "Sy" + } + } + }, + "output": { + "resultWrapper": "DefineExpressionResult", + "type": "structure", + "required": [ + "Expression" + ], + "members": { + "Expression": { + "shape": "S11" + } + } + } + }, + "DefineIndexField": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "IndexField" + ], + "members": { + "DomainName": {}, + "IndexField": { + "shape": "S13" + } + } + }, + "output": { + "resultWrapper": "DefineIndexFieldResult", + "type": "structure", + "required": [ + "IndexField" + ], + "members": { + "IndexField": { + "shape": "S1n" + } + } + } + }, + "DefineSuggester": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Suggester" + ], + "members": { + "DomainName": {}, + "Suggester": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "DefineSuggesterResult", + "type": "structure", + "required": [ + "Suggester" + ], + "members": { + "Suggester": { + "shape": "S1t" + } + } + } + }, + "DeleteAnalysisScheme": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "AnalysisSchemeName" + ], + "members": { + "DomainName": {}, + "AnalysisSchemeName": {} + } + }, + "output": { + "resultWrapper": "DeleteAnalysisSchemeResult", + "type": "structure", + "required": [ + "AnalysisScheme" + ], + "members": { + "AnalysisScheme": { + "shape": "Ss" + } + } + } + }, + "DeleteDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DeleteDomainResult", + "type": "structure", + "members": { + "DomainStatus": { + "shape": "S8" + } + } + } + }, + "DeleteExpression": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "ExpressionName" + ], + "members": { + "DomainName": {}, + "ExpressionName": {} + } + }, + "output": { + "resultWrapper": "DeleteExpressionResult", + "type": "structure", + "required": [ + "Expression" + ], + "members": { + "Expression": { + "shape": "S11" + } + } + } + }, + "DeleteIndexField": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "IndexFieldName" + ], + "members": { + "DomainName": {}, + "IndexFieldName": {} + } + }, + "output": { + "resultWrapper": "DeleteIndexFieldResult", + "type": "structure", + "required": [ + "IndexField" + ], + "members": { + "IndexField": { + "shape": "S1n" + } + } + } + }, + "DeleteSuggester": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "SuggesterName" + ], + "members": { + "DomainName": {}, + "SuggesterName": {} + } + }, + "output": { + "resultWrapper": "DeleteSuggesterResult", + "type": "structure", + "required": [ + "Suggester" + ], + "members": { + "Suggester": { + "shape": "S1t" + } + } + } + }, + "DescribeAnalysisSchemes": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AnalysisSchemeNames": { + "shape": "S25" + }, + "Deployed": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeAnalysisSchemesResult", + "type": "structure", + "required": [ + "AnalysisSchemes" + ], + "members": { + "AnalysisSchemes": { + "type": "list", + "member": { + "shape": "Ss" + } + } + } + } + }, + "DescribeAvailabilityOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "Deployed": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeAvailabilityOptionsResult", + "type": "structure", + "members": { + "AvailabilityOptions": { + "shape": "S2a" + } + } + } + }, + "DescribeDomains": { + "input": { + "type": "structure", + "members": { + "DomainNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeDomainsResult", + "type": "structure", + "required": [ + "DomainStatusList" + ], + "members": { + "DomainStatusList": { + "type": "list", + "member": { + "shape": "S8" + } + } + } + } + }, + "DescribeExpressions": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "ExpressionNames": { + "shape": "S25" + }, + "Deployed": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeExpressionsResult", + "type": "structure", + "required": [ + "Expressions" + ], + "members": { + "Expressions": { + "type": "list", + "member": { + "shape": "S11" + } + } + } + } + }, + "DescribeIndexFields": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "FieldNames": { + "type": "list", + "member": {} + }, + "Deployed": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeIndexFieldsResult", + "type": "structure", + "required": [ + "IndexFields" + ], + "members": { + "IndexFields": { + "type": "list", + "member": { + "shape": "S1n" + } + } + } + } + }, + "DescribeScalingParameters": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DescribeScalingParametersResult", + "type": "structure", + "required": [ + "ScalingParameters" + ], + "members": { + "ScalingParameters": { + "shape": "S2p" + } + } + } + }, + "DescribeServiceAccessPolicies": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "Deployed": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeServiceAccessPoliciesResult", + "type": "structure", + "required": [ + "AccessPolicies" + ], + "members": { + "AccessPolicies": { + "shape": "S2u" + } + } + } + }, + "DescribeSuggesters": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "SuggesterNames": { + "shape": "S25" + }, + "Deployed": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeSuggestersResult", + "type": "structure", + "required": [ + "Suggesters" + ], + "members": { + "Suggesters": { + "type": "list", + "member": { + "shape": "S1t" + } + } + } + } + }, + "IndexDocuments": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "IndexDocumentsResult", + "type": "structure", + "members": { + "FieldNames": { + "shape": "S4" + } + } + } + }, + "ListDomainNames": { + "output": { + "resultWrapper": "ListDomainNamesResult", + "type": "structure", + "members": { + "DomainNames": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "UpdateAvailabilityOptions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "MultiAZ" + ], + "members": { + "DomainName": {}, + "MultiAZ": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "UpdateAvailabilityOptionsResult", + "type": "structure", + "members": { + "AvailabilityOptions": { + "shape": "S2a" + } + } + } + }, + "UpdateScalingParameters": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "ScalingParameters" + ], + "members": { + "DomainName": {}, + "ScalingParameters": { + "shape": "S2q" + } + } + }, + "output": { + "resultWrapper": "UpdateScalingParametersResult", + "type": "structure", + "required": [ + "ScalingParameters" + ], + "members": { + "ScalingParameters": { + "shape": "S2p" + } + } + } + }, + "UpdateServiceAccessPolicies": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "AccessPolicies" + ], + "members": { + "DomainName": {}, + "AccessPolicies": {} + } + }, + "output": { + "resultWrapper": "UpdateServiceAccessPoliciesResult", + "type": "structure", + "required": [ + "AccessPolicies" + ], + "members": { + "AccessPolicies": { + "shape": "S2u" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "list", + "member": {} + }, + "S8": { + "type": "structure", + "required": [ + "DomainId", + "DomainName", + "RequiresIndexDocuments" + ], + "members": { + "DomainId": {}, + "DomainName": {}, + "ARN": {}, + "Created": { + "type": "boolean" + }, + "Deleted": { + "type": "boolean" + }, + "DocService": { + "shape": "Sc" + }, + "SearchService": { + "shape": "Sc" + }, + "RequiresIndexDocuments": { + "type": "boolean" + }, + "Processing": { + "type": "boolean" + }, + "SearchInstanceType": {}, + "SearchPartitionCount": { + "type": "integer" + }, + "SearchInstanceCount": { + "type": "integer" + }, + "Limits": { + "type": "structure", + "required": [ + "MaximumReplicationCount", + "MaximumPartitionCount" + ], + "members": { + "MaximumReplicationCount": { + "type": "integer" + }, + "MaximumPartitionCount": { + "type": "integer" + } + } + } + } + }, + "Sc": { + "type": "structure", + "members": { + "Endpoint": {} + } + }, + "Sl": { + "type": "structure", + "required": [ + "AnalysisSchemeName", + "AnalysisSchemeLanguage" + ], + "members": { + "AnalysisSchemeName": {}, + "AnalysisSchemeLanguage": {}, + "AnalysisOptions": { + "type": "structure", + "members": { + "Synonyms": {}, + "Stopwords": {}, + "StemmingDictionary": {}, + "JapaneseTokenizationDictionary": {}, + "AlgorithmicStemming": {} + } + } + } + }, + "Ss": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Sl" + }, + "Status": { + "shape": "St" + } + } + }, + "St": { + "type": "structure", + "required": [ + "CreationDate", + "UpdateDate", + "State" + ], + "members": { + "CreationDate": { + "type": "timestamp" + }, + "UpdateDate": { + "type": "timestamp" + }, + "UpdateVersion": { + "type": "integer" + }, + "State": {}, + "PendingDeletion": { + "type": "boolean" + } + } + }, + "Sy": { + "type": "structure", + "required": [ + "ExpressionName", + "ExpressionValue" + ], + "members": { + "ExpressionName": {}, + "ExpressionValue": {} + } + }, + "S11": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Sy" + }, + "Status": { + "shape": "St" + } + } + }, + "S13": { + "type": "structure", + "required": [ + "IndexFieldName", + "IndexFieldType" + ], + "members": { + "IndexFieldName": {}, + "IndexFieldType": {}, + "IntOptions": { + "type": "structure", + "members": { + "DefaultValue": { + "type": "long" + }, + "SourceField": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + }, + "SortEnabled": { + "type": "boolean" + } + } + }, + "DoubleOptions": { + "type": "structure", + "members": { + "DefaultValue": { + "type": "double" + }, + "SourceField": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + }, + "SortEnabled": { + "type": "boolean" + } + } + }, + "LiteralOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceField": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + }, + "SortEnabled": { + "type": "boolean" + } + } + }, + "TextOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceField": {}, + "ReturnEnabled": { + "type": "boolean" + }, + "SortEnabled": { + "type": "boolean" + }, + "HighlightEnabled": { + "type": "boolean" + }, + "AnalysisScheme": {} + } + }, + "DateOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceField": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + }, + "SortEnabled": { + "type": "boolean" + } + } + }, + "LatLonOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceField": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + }, + "SortEnabled": { + "type": "boolean" + } + } + }, + "IntArrayOptions": { + "type": "structure", + "members": { + "DefaultValue": { + "type": "long" + }, + "SourceFields": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + } + } + }, + "DoubleArrayOptions": { + "type": "structure", + "members": { + "DefaultValue": { + "type": "double" + }, + "SourceFields": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + } + } + }, + "LiteralArrayOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceFields": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + } + } + }, + "TextArrayOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceFields": {}, + "ReturnEnabled": { + "type": "boolean" + }, + "HighlightEnabled": { + "type": "boolean" + }, + "AnalysisScheme": {} + } + }, + "DateArrayOptions": { + "type": "structure", + "members": { + "DefaultValue": {}, + "SourceFields": {}, + "FacetEnabled": { + "type": "boolean" + }, + "SearchEnabled": { + "type": "boolean" + }, + "ReturnEnabled": { + "type": "boolean" + } + } + } + } + }, + "S1n": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "S13" + }, + "Status": { + "shape": "St" + } + } + }, + "S1p": { + "type": "structure", + "required": [ + "SuggesterName", + "DocumentSuggesterOptions" + ], + "members": { + "SuggesterName": {}, + "DocumentSuggesterOptions": { + "type": "structure", + "required": [ + "SourceField" + ], + "members": { + "SourceField": {}, + "FuzzyMatching": {}, + "SortExpression": {} + } + } + } + }, + "S1t": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "S1p" + }, + "Status": { + "shape": "St" + } + } + }, + "S25": { + "type": "list", + "member": {} + }, + "S2a": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "type": "boolean" + }, + "Status": { + "shape": "St" + } + } + }, + "S2p": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "S2q" + }, + "Status": { + "shape": "St" + } + } + }, + "S2q": { + "type": "structure", + "members": { + "DesiredInstanceType": {}, + "DesiredReplicationCount": { + "type": "integer" + }, + "DesiredPartitionCount": { + "type": "integer" + } + } + }, + "S2u": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "St" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json b/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json new file mode 100644 index 0000000..82fa804 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json @@ -0,0 +1,20 @@ +{ + "pagination": { + "DescribeAnalysisSchemes": { + "result_key": "AnalysisSchemes" + }, + "DescribeDomains": { + "result_key": "DomainStatusList" + }, + "DescribeExpressions": { + "result_key": "Expressions" + }, + "DescribeIndexFields": { + "result_key": "IndexFields" + }, + "DescribeSuggesters": { + "result_key": "Suggesters" + } + } +} + diff --git a/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json b/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json new file mode 100644 index 0000000..cea348e --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json @@ -0,0 +1,297 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-01-01", + "endpointPrefix": "cloudsearchdomain", + "jsonVersion": "1.1", + "protocol": "rest-json", + "serviceFullName": "Amazon CloudSearch Domain", + "signatureVersion": "v4", + "signingName": "cloudsearch" + }, + "operations": { + "Search": { + "http": { + "method": "GET", + "requestUri": "/2013-01-01/search?format=sdk&pretty=true" + }, + "input": { + "type": "structure", + "required": [ + "query" + ], + "members": { + "cursor": { + "location": "querystring", + "locationName": "cursor" + }, + "expr": { + "location": "querystring", + "locationName": "expr" + }, + "facet": { + "location": "querystring", + "locationName": "facet" + }, + "filterQuery": { + "location": "querystring", + "locationName": "fq" + }, + "highlight": { + "location": "querystring", + "locationName": "highlight" + }, + "partial": { + "location": "querystring", + "locationName": "partial", + "type": "boolean" + }, + "query": { + "location": "querystring", + "locationName": "q" + }, + "queryOptions": { + "location": "querystring", + "locationName": "q.options" + }, + "queryParser": { + "location": "querystring", + "locationName": "q.parser" + }, + "return": { + "location": "querystring", + "locationName": "return" + }, + "size": { + "location": "querystring", + "locationName": "size", + "type": "long" + }, + "sort": { + "location": "querystring", + "locationName": "sort" + }, + "start": { + "location": "querystring", + "locationName": "start", + "type": "long" + }, + "stats": { + "location": "querystring", + "locationName": "stats" + } + } + }, + "output": { + "type": "structure", + "members": { + "status": { + "type": "structure", + "members": { + "timems": { + "type": "long" + }, + "rid": {} + } + }, + "hits": { + "type": "structure", + "members": { + "found": { + "type": "long" + }, + "start": { + "type": "long" + }, + "cursor": {}, + "hit": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "fields": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": {} + } + }, + "exprs": { + "type": "map", + "key": {}, + "value": {} + }, + "highlights": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + }, + "facets": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "buckets": { + "type": "list", + "member": { + "type": "structure", + "members": { + "value": {}, + "count": { + "type": "long" + } + } + } + } + } + } + }, + "stats": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "min": {}, + "max": {}, + "count": { + "type": "long" + }, + "missing": { + "type": "long" + }, + "sum": { + "type": "double" + }, + "sumOfSquares": { + "type": "double" + }, + "mean": {}, + "stddev": { + "type": "double" + } + } + } + } + } + } + }, + "Suggest": { + "http": { + "method": "GET", + "requestUri": "/2013-01-01/suggest?format=sdk&pretty=true" + }, + "input": { + "type": "structure", + "required": [ + "query", + "suggester" + ], + "members": { + "query": { + "location": "querystring", + "locationName": "q" + }, + "suggester": { + "location": "querystring", + "locationName": "suggester" + }, + "size": { + "location": "querystring", + "locationName": "size", + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": { + "status": { + "type": "structure", + "members": { + "timems": { + "type": "long" + }, + "rid": {} + } + }, + "suggest": { + "type": "structure", + "members": { + "query": {}, + "found": { + "type": "long" + }, + "suggestions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "suggestion": {}, + "score": { + "type": "long" + }, + "id": {} + } + } + } + } + } + } + } + }, + "UploadDocuments": { + "http": { + "requestUri": "/2013-01-01/documents/batch?format=sdk" + }, + "input": { + "type": "structure", + "required": [ + "documents", + "contentType" + ], + "members": { + "documents": { + "type": "blob", + "streaming": true + }, + "contentType": { + "location": "header", + "locationName": "Content-Type" + } + }, + "payload": "documents" + }, + "output": { + "type": "structure", + "members": { + "status": {}, + "adds": { + "type": "long" + }, + "deletes": { + "type": "long" + }, + "warnings": { + "type": "list", + "member": { + "type": "structure", + "members": { + "message": {} + } + } + } + } + } + } + }, + "shapes": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json b/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json new file mode 100644 index 0000000..5ef4648 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json @@ -0,0 +1,454 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-11-01", + "endpointPrefix": "cloudtrail", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "CloudTrail", + "serviceFullName": "AWS CloudTrail", + "signatureVersion": "v4", + "targetPrefix": "com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId" + ], + "members": { + "ResourceId": {}, + "TagsList": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "idempotent": true + }, + "CreateTrail": { + "input": { + "type": "structure", + "required": [ + "Name", + "S3BucketName" + ], + "members": { + "Name": {}, + "S3BucketName": {}, + "S3KeyPrefix": {}, + "SnsTopicName": {}, + "IncludeGlobalServiceEvents": { + "type": "boolean" + }, + "IsMultiRegionTrail": { + "type": "boolean" + }, + "EnableLogFileValidation": { + "type": "boolean" + }, + "CloudWatchLogsLogGroupArn": {}, + "CloudWatchLogsRoleArn": {}, + "KmsKeyId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "S3BucketName": {}, + "S3KeyPrefix": {}, + "SnsTopicName": { + "deprecated": true + }, + "SnsTopicARN": {}, + "IncludeGlobalServiceEvents": { + "type": "boolean" + }, + "IsMultiRegionTrail": { + "type": "boolean" + }, + "TrailARN": {}, + "LogFileValidationEnabled": { + "type": "boolean" + }, + "CloudWatchLogsLogGroupArn": {}, + "CloudWatchLogsRoleArn": {}, + "KmsKeyId": {} + } + }, + "idempotent": true + }, + "DeleteTrail": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + }, + "idempotent": true + }, + "DescribeTrails": { + "input": { + "type": "structure", + "members": { + "trailNameList": { + "type": "list", + "member": {} + }, + "includeShadowTrails": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "trailList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "S3BucketName": {}, + "S3KeyPrefix": {}, + "SnsTopicName": { + "deprecated": true + }, + "SnsTopicARN": {}, + "IncludeGlobalServiceEvents": { + "type": "boolean" + }, + "IsMultiRegionTrail": { + "type": "boolean" + }, + "HomeRegion": {}, + "TrailARN": {}, + "LogFileValidationEnabled": { + "type": "boolean" + }, + "CloudWatchLogsLogGroupArn": {}, + "CloudWatchLogsRoleArn": {}, + "KmsKeyId": {} + } + } + } + } + }, + "idempotent": true + }, + "GetTrailStatus": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "IsLogging": { + "type": "boolean" + }, + "LatestDeliveryError": {}, + "LatestNotificationError": {}, + "LatestDeliveryTime": { + "type": "timestamp" + }, + "LatestNotificationTime": { + "type": "timestamp" + }, + "StartLoggingTime": { + "type": "timestamp" + }, + "StopLoggingTime": { + "type": "timestamp" + }, + "LatestCloudWatchLogsDeliveryError": {}, + "LatestCloudWatchLogsDeliveryTime": { + "type": "timestamp" + }, + "LatestDigestDeliveryTime": { + "type": "timestamp" + }, + "LatestDigestDeliveryError": {}, + "LatestDeliveryAttemptTime": {}, + "LatestNotificationAttemptTime": {}, + "LatestNotificationAttemptSucceeded": {}, + "LatestDeliveryAttemptSucceeded": {}, + "TimeLoggingStarted": {}, + "TimeLoggingStopped": {} + } + }, + "idempotent": true + }, + "ListPublicKeys": { + "input": { + "type": "structure", + "members": { + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "PublicKeyList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Value": { + "type": "blob" + }, + "ValidityStartTime": { + "type": "timestamp" + }, + "ValidityEndTime": { + "type": "timestamp" + }, + "Fingerprint": {} + } + } + }, + "NextToken": {} + } + }, + "idempotent": true + }, + "ListTags": { + "input": { + "type": "structure", + "required": [ + "ResourceIdList" + ], + "members": { + "ResourceIdList": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceTagList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceId": {}, + "TagsList": { + "shape": "S3" + } + } + } + }, + "NextToken": {} + } + }, + "idempotent": true + }, + "LookupEvents": { + "input": { + "type": "structure", + "members": { + "LookupAttributes": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AttributeKey", + "AttributeValue" + ], + "members": { + "AttributeKey": {}, + "AttributeValue": {} + } + } + }, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventId": {}, + "EventName": {}, + "EventTime": { + "type": "timestamp" + }, + "Username": {}, + "Resources": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceType": {}, + "ResourceName": {} + } + } + }, + "CloudTrailEvent": {} + } + } + }, + "NextToken": {} + } + }, + "idempotent": true + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId" + ], + "members": { + "ResourceId": {}, + "TagsList": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "idempotent": true + }, + "StartLogging": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + }, + "idempotent": true + }, + "StopLogging": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + }, + "idempotent": true + }, + "UpdateTrail": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "S3BucketName": {}, + "S3KeyPrefix": {}, + "SnsTopicName": {}, + "IncludeGlobalServiceEvents": { + "type": "boolean" + }, + "IsMultiRegionTrail": { + "type": "boolean" + }, + "EnableLogFileValidation": { + "type": "boolean" + }, + "CloudWatchLogsLogGroupArn": {}, + "CloudWatchLogsRoleArn": {}, + "KmsKeyId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "S3BucketName": {}, + "S3KeyPrefix": {}, + "SnsTopicName": { + "deprecated": true + }, + "SnsTopicARN": {}, + "IncludeGlobalServiceEvents": { + "type": "boolean" + }, + "IsMultiRegionTrail": { + "type": "boolean" + }, + "TrailARN": {}, + "LogFileValidationEnabled": { + "type": "boolean" + }, + "CloudWatchLogsLogGroupArn": {}, + "CloudWatchLogsRoleArn": {}, + "KmsKeyId": {} + } + }, + "idempotent": true + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json b/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json new file mode 100644 index 0000000..a11f436 --- /dev/null +++ b/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json @@ -0,0 +1,7 @@ +{ + "pagination": { + "DescribeTrails": { + "result_key": "trailList" + } + } +} diff --git a/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json b/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json new file mode 100644 index 0000000..361d731 --- /dev/null +++ b/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json @@ -0,0 +1,375 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-04-13", + "endpointPrefix": "codecommit", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "CodeCommit", + "serviceFullName": "AWS CodeCommit", + "signatureVersion": "v4", + "targetPrefix": "CodeCommit_20150413" + }, + "operations": { + "BatchGetRepositories": { + "input": { + "type": "structure", + "required": [ + "repositoryNames" + ], + "members": { + "repositoryNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "repositories": { + "type": "list", + "member": { + "shape": "S6" + } + }, + "repositoriesNotFound": { + "type": "list", + "member": {} + } + } + } + }, + "CreateBranch": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "branchName", + "commitId" + ], + "members": { + "repositoryName": {}, + "branchName": {}, + "commitId": {} + } + } + }, + "CreateRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {}, + "repositoryDescription": {} + } + }, + "output": { + "type": "structure", + "members": { + "repositoryMetadata": { + "shape": "S6" + } + } + } + }, + "DeleteRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "repositoryId": {} + } + } + }, + "GetBranch": { + "input": { + "type": "structure", + "members": { + "repositoryName": {}, + "branchName": {} + } + }, + "output": { + "type": "structure", + "members": { + "branch": { + "type": "structure", + "members": { + "branchName": {}, + "commitId": {} + } + } + } + } + }, + "GetCommit": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "commitId" + ], + "members": { + "repositoryName": {}, + "commitId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "commit" + ], + "members": { + "commit": { + "type": "structure", + "members": { + "treeId": {}, + "parents": { + "type": "list", + "member": {} + }, + "message": {}, + "author": { + "shape": "Sw" + }, + "committer": { + "shape": "Sw" + }, + "additionalData": {} + } + } + } + } + }, + "GetRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "repositoryMetadata": { + "shape": "S6" + } + } + } + }, + "GetRepositoryTriggers": { + "input": { + "type": "structure", + "members": { + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "configurationId": {}, + "triggers": { + "shape": "S16" + } + } + } + }, + "ListBranches": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "branches": { + "shape": "S1a" + }, + "nextToken": {} + } + } + }, + "ListRepositories": { + "input": { + "type": "structure", + "members": { + "nextToken": {}, + "sortBy": {}, + "order": {} + } + }, + "output": { + "type": "structure", + "members": { + "repositories": { + "type": "list", + "member": { + "type": "structure", + "members": { + "repositoryName": {}, + "repositoryId": {} + } + } + }, + "nextToken": {} + } + } + }, + "PutRepositoryTriggers": { + "input": { + "type": "structure", + "members": { + "repositoryName": {}, + "triggers": { + "shape": "S16" + } + } + }, + "output": { + "type": "structure", + "members": { + "configurationId": {} + } + } + }, + "TestRepositoryTriggers": { + "input": { + "type": "structure", + "members": { + "repositoryName": {}, + "triggers": { + "shape": "S16" + } + } + }, + "output": { + "type": "structure", + "members": { + "successfulExecutions": { + "type": "list", + "member": {} + }, + "failedExecutions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "trigger": {}, + "failureMessage": {} + } + } + } + } + } + }, + "UpdateDefaultBranch": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "defaultBranchName" + ], + "members": { + "repositoryName": {}, + "defaultBranchName": {} + } + } + }, + "UpdateRepositoryDescription": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {}, + "repositoryDescription": {} + } + } + }, + "UpdateRepositoryName": { + "input": { + "type": "structure", + "required": [ + "oldName", + "newName" + ], + "members": { + "oldName": {}, + "newName": {} + } + } + } + }, + "shapes": { + "S6": { + "type": "structure", + "members": { + "accountId": {}, + "repositoryId": {}, + "repositoryName": {}, + "repositoryDescription": {}, + "defaultBranch": {}, + "lastModifiedDate": { + "type": "timestamp" + }, + "creationDate": { + "type": "timestamp" + }, + "cloneUrlHttp": {}, + "cloneUrlSsh": {}, + "Arn": {} + } + }, + "Sw": { + "type": "structure", + "members": { + "name": {}, + "email": {}, + "date": {} + } + }, + "S16": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "destinationArn": {}, + "customData": {}, + "branches": { + "shape": "S1a" + }, + "events": { + "type": "list", + "member": {} + } + } + } + }, + "S1a": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json b/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json new file mode 100644 index 0000000..e4c9a90 --- /dev/null +++ b/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json @@ -0,0 +1,14 @@ +{ + "pagination": { + "ListBranches": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "branches" + }, + "ListRepositories": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "repositories" + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json new file mode 100644 index 0000000..f11c90c --- /dev/null +++ b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json @@ -0,0 +1,1120 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-10-06", + "endpointPrefix": "codedeploy", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "CodeDeploy", + "serviceFullName": "AWS CodeDeploy", + "signatureVersion": "v4", + "targetPrefix": "CodeDeploy_20141006", + "timestampFormat": "unixTimestamp" + }, + "operations": { + "AddTagsToOnPremisesInstances": { + "input": { + "type": "structure", + "required": [ + "tags", + "instanceNames" + ], + "members": { + "tags": { + "shape": "S2" + }, + "instanceNames": { + "shape": "S6" + } + } + } + }, + "BatchGetApplicationRevisions": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "revisions" + ], + "members": { + "applicationName": {}, + "revisions": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "applicationName": {}, + "errorMessage": {}, + "revisions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "revisionLocation": { + "shape": "Sb" + }, + "genericRevisionInfo": { + "shape": "Sq" + } + } + } + } + } + } + }, + "BatchGetApplications": { + "input": { + "type": "structure", + "members": { + "applicationNames": { + "shape": "Sw" + } + } + }, + "output": { + "type": "structure", + "members": { + "applicationsInfo": { + "type": "list", + "member": { + "shape": "Sz" + } + } + } + } + }, + "BatchGetDeploymentGroups": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "deploymentGroupNames" + ], + "members": { + "applicationName": {}, + "deploymentGroupNames": { + "shape": "Ss" + } + } + }, + "output": { + "type": "structure", + "members": { + "deploymentGroupsInfo": { + "type": "list", + "member": { + "shape": "S15" + } + }, + "errorMessage": {} + } + } + }, + "BatchGetDeploymentInstances": { + "input": { + "type": "structure", + "required": [ + "deploymentId", + "instanceIds" + ], + "members": { + "deploymentId": {}, + "instanceIds": { + "shape": "S1y" + } + } + }, + "output": { + "type": "structure", + "members": { + "instancesSummary": { + "type": "list", + "member": { + "shape": "S22" + } + }, + "errorMessage": {} + } + } + }, + "BatchGetDeployments": { + "input": { + "type": "structure", + "members": { + "deploymentIds": { + "shape": "S2e" + } + } + }, + "output": { + "type": "structure", + "members": { + "deploymentsInfo": { + "type": "list", + "member": { + "shape": "S2h" + } + } + } + } + }, + "BatchGetOnPremisesInstances": { + "input": { + "type": "structure", + "members": { + "instanceNames": { + "shape": "S6" + } + } + }, + "output": { + "type": "structure", + "members": { + "instanceInfos": { + "type": "list", + "member": { + "shape": "S2s" + } + } + } + } + }, + "CreateApplication": { + "input": { + "type": "structure", + "required": [ + "applicationName" + ], + "members": { + "applicationName": {} + } + }, + "output": { + "type": "structure", + "members": { + "applicationId": {} + } + } + }, + "CreateDeployment": { + "input": { + "type": "structure", + "required": [ + "applicationName" + ], + "members": { + "applicationName": {}, + "deploymentGroupName": {}, + "revision": { + "shape": "Sb" + }, + "deploymentConfigName": {}, + "description": {}, + "ignoreApplicationStopFailures": { + "type": "boolean" + }, + "autoRollbackConfiguration": { + "shape": "S1t" + }, + "updateOutdatedInstancesOnly": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "deploymentId": {} + } + } + }, + "CreateDeploymentConfig": { + "input": { + "type": "structure", + "required": [ + "deploymentConfigName" + ], + "members": { + "deploymentConfigName": {}, + "minimumHealthyHosts": { + "shape": "S30" + } + } + }, + "output": { + "type": "structure", + "members": { + "deploymentConfigId": {} + } + } + }, + "CreateDeploymentGroup": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "deploymentGroupName", + "serviceRoleArn" + ], + "members": { + "applicationName": {}, + "deploymentGroupName": {}, + "deploymentConfigName": {}, + "ec2TagFilters": { + "shape": "S18" + }, + "onPremisesInstanceTagFilters": { + "shape": "S1b" + }, + "autoScalingGroups": { + "shape": "S36" + }, + "serviceRoleArn": {}, + "triggerConfigurations": { + "shape": "S1j" + }, + "alarmConfiguration": { + "shape": "S1p" + }, + "autoRollbackConfiguration": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "members": { + "deploymentGroupId": {} + } + } + }, + "DeleteApplication": { + "input": { + "type": "structure", + "required": [ + "applicationName" + ], + "members": { + "applicationName": {} + } + } + }, + "DeleteDeploymentConfig": { + "input": { + "type": "structure", + "required": [ + "deploymentConfigName" + ], + "members": { + "deploymentConfigName": {} + } + } + }, + "DeleteDeploymentGroup": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "deploymentGroupName" + ], + "members": { + "applicationName": {}, + "deploymentGroupName": {} + } + }, + "output": { + "type": "structure", + "members": { + "hooksNotCleanedUp": { + "shape": "S1e" + } + } + } + }, + "DeregisterOnPremisesInstance": { + "input": { + "type": "structure", + "required": [ + "instanceName" + ], + "members": { + "instanceName": {} + } + } + }, + "GetApplication": { + "input": { + "type": "structure", + "required": [ + "applicationName" + ], + "members": { + "applicationName": {} + } + }, + "output": { + "type": "structure", + "members": { + "application": { + "shape": "Sz" + } + } + } + }, + "GetApplicationRevision": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "revision" + ], + "members": { + "applicationName": {}, + "revision": { + "shape": "Sb" + } + } + }, + "output": { + "type": "structure", + "members": { + "applicationName": {}, + "revision": { + "shape": "Sb" + }, + "revisionInfo": { + "shape": "Sq" + } + } + } + }, + "GetDeployment": { + "input": { + "type": "structure", + "required": [ + "deploymentId" + ], + "members": { + "deploymentId": {} + } + }, + "output": { + "type": "structure", + "members": { + "deploymentInfo": { + "shape": "S2h" + } + } + } + }, + "GetDeploymentConfig": { + "input": { + "type": "structure", + "required": [ + "deploymentConfigName" + ], + "members": { + "deploymentConfigName": {} + } + }, + "output": { + "type": "structure", + "members": { + "deploymentConfigInfo": { + "type": "structure", + "members": { + "deploymentConfigId": {}, + "deploymentConfigName": {}, + "minimumHealthyHosts": { + "shape": "S30" + }, + "createTime": { + "type": "timestamp" + } + } + } + } + } + }, + "GetDeploymentGroup": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "deploymentGroupName" + ], + "members": { + "applicationName": {}, + "deploymentGroupName": {} + } + }, + "output": { + "type": "structure", + "members": { + "deploymentGroupInfo": { + "shape": "S15" + } + } + } + }, + "GetDeploymentInstance": { + "input": { + "type": "structure", + "required": [ + "deploymentId", + "instanceId" + ], + "members": { + "deploymentId": {}, + "instanceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "instanceSummary": { + "shape": "S22" + } + } + } + }, + "GetOnPremisesInstance": { + "input": { + "type": "structure", + "required": [ + "instanceName" + ], + "members": { + "instanceName": {} + } + }, + "output": { + "type": "structure", + "members": { + "instanceInfo": { + "shape": "S2s" + } + } + } + }, + "ListApplicationRevisions": { + "input": { + "type": "structure", + "required": [ + "applicationName" + ], + "members": { + "applicationName": {}, + "sortBy": {}, + "sortOrder": {}, + "s3Bucket": {}, + "s3KeyPrefix": {}, + "deployed": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "revisions": { + "shape": "Sa" + }, + "nextToken": {} + } + } + }, + "ListApplications": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "applications": { + "shape": "Sw" + }, + "nextToken": {} + } + } + }, + "ListDeploymentConfigs": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "deploymentConfigsList": { + "type": "list", + "member": {} + }, + "nextToken": {} + } + } + }, + "ListDeploymentGroups": { + "input": { + "type": "structure", + "required": [ + "applicationName" + ], + "members": { + "applicationName": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "applicationName": {}, + "deploymentGroups": { + "shape": "Ss" + }, + "nextToken": {} + } + } + }, + "ListDeploymentInstances": { + "input": { + "type": "structure", + "required": [ + "deploymentId" + ], + "members": { + "deploymentId": {}, + "nextToken": {}, + "instanceStatusFilter": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "instancesList": { + "shape": "S1y" + }, + "nextToken": {} + } + } + }, + "ListDeployments": { + "input": { + "type": "structure", + "members": { + "applicationName": {}, + "deploymentGroupName": {}, + "includeOnlyStatuses": { + "type": "list", + "member": {} + }, + "createTimeRange": { + "type": "structure", + "members": { + "start": { + "type": "timestamp" + }, + "end": { + "type": "timestamp" + } + } + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "deployments": { + "shape": "S2e" + }, + "nextToken": {} + } + } + }, + "ListOnPremisesInstances": { + "input": { + "type": "structure", + "members": { + "registrationStatus": {}, + "tagFilters": { + "shape": "S1b" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "instanceNames": { + "shape": "S6" + }, + "nextToken": {} + } + } + }, + "RegisterApplicationRevision": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "revision" + ], + "members": { + "applicationName": {}, + "description": {}, + "revision": { + "shape": "Sb" + } + } + } + }, + "RegisterOnPremisesInstance": { + "input": { + "type": "structure", + "required": [ + "instanceName", + "iamUserArn" + ], + "members": { + "instanceName": {}, + "iamUserArn": {} + } + } + }, + "RemoveTagsFromOnPremisesInstances": { + "input": { + "type": "structure", + "required": [ + "tags", + "instanceNames" + ], + "members": { + "tags": { + "shape": "S2" + }, + "instanceNames": { + "shape": "S6" + } + } + } + }, + "StopDeployment": { + "input": { + "type": "structure", + "required": [ + "deploymentId" + ], + "members": { + "deploymentId": {}, + "autoRollbackEnabled": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "status": {}, + "statusMessage": {} + } + } + }, + "UpdateApplication": { + "input": { + "type": "structure", + "members": { + "applicationName": {}, + "newApplicationName": {} + } + } + }, + "UpdateDeploymentGroup": { + "input": { + "type": "structure", + "required": [ + "applicationName", + "currentDeploymentGroupName" + ], + "members": { + "applicationName": {}, + "currentDeploymentGroupName": {}, + "newDeploymentGroupName": {}, + "deploymentConfigName": {}, + "ec2TagFilters": { + "shape": "S18" + }, + "onPremisesInstanceTagFilters": { + "shape": "S1b" + }, + "autoScalingGroups": { + "shape": "S36" + }, + "serviceRoleArn": {}, + "triggerConfigurations": { + "shape": "S1j" + }, + "alarmConfiguration": { + "shape": "S1p" + }, + "autoRollbackConfiguration": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "members": { + "hooksNotCleanedUp": { + "shape": "S1e" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S6": { + "type": "list", + "member": {} + }, + "Sa": { + "type": "list", + "member": { + "shape": "Sb" + } + }, + "Sb": { + "type": "structure", + "members": { + "revisionType": {}, + "s3Location": { + "type": "structure", + "members": { + "bucket": {}, + "key": {}, + "bundleType": {}, + "version": {}, + "eTag": {} + } + }, + "gitHubLocation": { + "type": "structure", + "members": { + "repository": {}, + "commitId": {} + } + } + } + }, + "Sq": { + "type": "structure", + "members": { + "description": {}, + "deploymentGroups": { + "shape": "Ss" + }, + "firstUsedTime": { + "type": "timestamp" + }, + "lastUsedTime": { + "type": "timestamp" + }, + "registerTime": { + "type": "timestamp" + } + } + }, + "Ss": { + "type": "list", + "member": {} + }, + "Sw": { + "type": "list", + "member": {} + }, + "Sz": { + "type": "structure", + "members": { + "applicationId": {}, + "applicationName": {}, + "createTime": { + "type": "timestamp" + }, + "linkedToGitHub": { + "type": "boolean" + } + } + }, + "S15": { + "type": "structure", + "members": { + "applicationName": {}, + "deploymentGroupId": {}, + "deploymentGroupName": {}, + "deploymentConfigName": {}, + "ec2TagFilters": { + "shape": "S18" + }, + "onPremisesInstanceTagFilters": { + "shape": "S1b" + }, + "autoScalingGroups": { + "shape": "S1e" + }, + "serviceRoleArn": {}, + "targetRevision": { + "shape": "Sb" + }, + "triggerConfigurations": { + "shape": "S1j" + }, + "alarmConfiguration": { + "shape": "S1p" + }, + "autoRollbackConfiguration": { + "shape": "S1t" + } + } + }, + "S18": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {}, + "Type": {} + } + } + }, + "S1b": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {}, + "Type": {} + } + } + }, + "S1e": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "hook": {} + } + } + }, + "S1j": { + "type": "list", + "member": { + "type": "structure", + "members": { + "triggerName": {}, + "triggerTargetArn": {}, + "triggerEvents": { + "type": "list", + "member": {} + } + } + } + }, + "S1p": { + "type": "structure", + "members": { + "enabled": { + "type": "boolean" + }, + "ignorePollAlarmFailure": { + "type": "boolean" + }, + "alarms": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {} + } + } + } + } + }, + "S1t": { + "type": "structure", + "members": { + "enabled": { + "type": "boolean" + }, + "events": { + "type": "list", + "member": {} + } + } + }, + "S1y": { + "type": "list", + "member": {} + }, + "S22": { + "type": "structure", + "members": { + "deploymentId": {}, + "instanceId": {}, + "status": {}, + "lastUpdatedAt": { + "type": "timestamp" + }, + "lifecycleEvents": { + "type": "list", + "member": { + "type": "structure", + "members": { + "lifecycleEventName": {}, + "diagnostics": { + "type": "structure", + "members": { + "errorCode": {}, + "scriptName": {}, + "message": {}, + "logTail": {} + } + }, + "startTime": { + "type": "timestamp" + }, + "endTime": { + "type": "timestamp" + }, + "status": {} + } + } + } + } + }, + "S2e": { + "type": "list", + "member": {} + }, + "S2h": { + "type": "structure", + "members": { + "applicationName": {}, + "deploymentGroupName": {}, + "deploymentConfigName": {}, + "deploymentId": {}, + "revision": { + "shape": "Sb" + }, + "status": {}, + "errorInformation": { + "type": "structure", + "members": { + "code": {}, + "message": {} + } + }, + "createTime": { + "type": "timestamp" + }, + "startTime": { + "type": "timestamp" + }, + "completeTime": { + "type": "timestamp" + }, + "deploymentOverview": { + "type": "structure", + "members": { + "Pending": { + "type": "long" + }, + "InProgress": { + "type": "long" + }, + "Succeeded": { + "type": "long" + }, + "Failed": { + "type": "long" + }, + "Skipped": { + "type": "long" + } + } + }, + "description": {}, + "creator": {}, + "ignoreApplicationStopFailures": { + "type": "boolean" + }, + "autoRollbackConfiguration": { + "shape": "S1t" + }, + "updateOutdatedInstancesOnly": { + "type": "boolean" + }, + "rollbackInfo": { + "type": "structure", + "members": { + "rollbackDeploymentId": {}, + "rollbackTriggeringDeploymentId": {}, + "rollbackMessage": {} + } + } + } + }, + "S2s": { + "type": "structure", + "members": { + "instanceName": {}, + "iamUserArn": {}, + "instanceArn": {}, + "registerTime": { + "type": "timestamp" + }, + "deregisterTime": { + "type": "timestamp" + }, + "tags": { + "shape": "S2" + } + } + }, + "S30": { + "type": "structure", + "members": { + "value": { + "type": "integer" + }, + "type": {} + } + }, + "S36": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json new file mode 100644 index 0000000..cea07e6 --- /dev/null +++ b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json @@ -0,0 +1,34 @@ +{ + "pagination": { + "ListApplicationRevisions": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "revisions" + }, + "ListApplications": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "applications" + }, + "ListDeploymentConfigs": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "deploymentConfigsList" + }, + "ListDeploymentGroups": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "deploymentGroups" + }, + "ListDeploymentInstances": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "instancesList" + }, + "ListDeployments": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "deployments" + } + } +} diff --git a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json new file mode 100644 index 0000000..0fea4fa --- /dev/null +++ b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json @@ -0,0 +1,30 @@ +{ + "version": 2, + "waiters": { + "DeploymentSuccessful": { + "delay": 15, + "operation": "GetDeployment", + "maxAttempts": 120, + "acceptors": [ + { + "expected": "Succeeded", + "matcher": "path", + "state": "success", + "argument": "deploymentInfo.status" + }, + { + "expected": "Failed", + "matcher": "path", + "state": "failure", + "argument": "deploymentInfo.status" + }, + { + "expected": "Stopped", + "matcher": "path", + "state": "failure", + "argument": "deploymentInfo.status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json b/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json new file mode 100644 index 0000000..5732bc8 --- /dev/null +++ b/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json @@ -0,0 +1,902 @@ +{ + "version": "1.0", + "examples": { + "AcknowledgeJob": [ + { + "input": { + "jobId": "11111111-abcd-1111-abcd-111111abcdef", + "nonce": "3" + }, + "output": { + "status": "InProgress" + }, + "comments": { + "input": { + "jobId": "Use the PollforJobs API to determine the ID of the job.", + "nonce": "Use the PollforJobs API to determine the nonce for the job." + }, + "output": { + "status": "Valid values include Created, Queued, Dispatched, InProgress, TimedOut, Suceeded, and Failed. Completed jobs are removed from the system after a short period of time." + } + }, + "description": "This example returns information about a specified job, including the status of that job if it exists. This is only used for job workers and custom actions in AWS CodePipeline. To determine the value of nonce and the job ID, use PollForJobs.", + "id": "acknowledge-a-job-for-a-custom-action-1449100979484", + "title": "Acknowledge a job for a custom action" + } + ], + "CreateCustomActionType": [ + { + "input": { + "version": "1", + "category": "Build", + "configurationProperties": [ + { + "name": "MyJenkinsExampleBuildProject", + "type": "String", + "required": true, + "key": true, + "description": "The name of the build project must be provided when this action is added to the pipeline.", + "queryable": false, + "secret": false + } + ], + "inputArtifactDetails": { + "maximumCount": 1, + "minimumCount": 0 + }, + "outputArtifactDetails": { + "maximumCount": 1, + "minimumCount": 0 + }, + "provider": "MyBuild-ProviderName", + "settings": { + "entityUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/", + "executionUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/", + "revisionUrlTemplate": "none" + } + }, + "output": { + "actionType": { + "actionConfigurationProperties": [ + { + "name": "MyJenkinsExampleBuildProject", + "required": true, + "key": true, + "description": "The name of the build project must be provided when this action is added to the pipeline.", + "queryable": false, + "secret": false + } + ], + "id": { + "version": "1", + "category": "Build", + "owner": "Custom", + "provider": "MyBuild-ProviderName" + }, + "inputArtifactDetails": { + "maximumCount": 1, + "minimumCount": 0 + }, + "outputArtifactDetails": { + "maximumCount": 1, + "minimumCount": 0 + }, + "settings": { + "entityUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/", + "executionUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/", + "revisionUrlTemplate": "none" + } + } + }, + "comments": { + "input": { + "version": "A new custom action always has a version of 1. This is required.", + "configurationProperties": "The text in description will be displayed to your users, and can contain a maximum of 2048 characters. The value for name in configurationProperties is the name of the project, if any. In this example, this is the name of the build project on the Jenkins server", + "inputArtifactDetails": "This is the minimum and maximum number of artifacts allowed as inputs for the action. For more information about input and output artifacts, see Pipeline Structure Reference in the AWS CodePipeline User Guide.", + "outputArtifactDetails": "This is the minimum and maximum number of artifacts allowed as outputs for the action. For more information about input and output artifacts, see Pipeline Structure Reference in the AWS CodePipeline User Guide.", + "provider": "In this example, this is the name given to the provider field when configuring the AWS CodePipeline Plugin for Jenkins. For more information, see the Four-Stage Pipeline Tutorial in the AWS CodePipeline User Guide.", + "settings": "entityUrlTemplate is the static link that provides information about the service provider for the action. In the example, the build system includes a static link to the Jenkins build project at the specific server address. Similarly, executionUrlTemplate is the dynamic link that will be updated with information about the current or most recent run of the action." + }, + "output": { + } + }, + "description": "This example creates a build custom action for AWS CodePipeline for a Jenkins build project. For more information about the requirements for creating a custom action, including the structure of the JSON file commonly used to help create custom actions, see Create a Custom Action in the AWS CodePipeline User Guide. For a walkthrough of creating a custom action in a pipeline, follow the Four-Stage Pipeline Tutorial.", + "id": "create-a-custom-action-1449103500903", + "title": "Create a custom action" + } + ], + "CreatePipeline": [ + { + "input": { + "pipeline": { + "version": 1, + "name": "MySecondPipeline", + "artifactStore": { + "type": "S3", + "location": "codepipeline-us-east-1-11EXAMPLE11" + }, + "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", + "stages": [ + { + "name": "Source", + "actions": [ + { + "name": "Source", + "actionTypeId": { + "version": "1", + "category": "Source", + "owner": "AWS", + "provider": "S3" + }, + "configuration": { + "S3Bucket": "awscodepipeline-demo-bucket", + "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" + }, + "inputArtifacts": [ + + ], + "outputArtifacts": [ + { + "name": "MyApp" + } + ], + "runOrder": 1 + } + ] + }, + { + "name": "Beta", + "actions": [ + { + "name": "CodePipelineDemoFleet", + "actionTypeId": { + "version": "1", + "category": "Deploy", + "owner": "AWS", + "provider": "CodeDeploy" + }, + "configuration": { + "ApplicationName": "CodePipelineDemoApplication", + "DeploymentGroupName": "CodePipelineDemoFleet" + }, + "inputArtifacts": [ + { + "name": "MyApp" + } + ], + "outputArtifacts": [ + + ], + "runOrder": 1 + } + ] + } + ] + } + }, + "output": { + "pipeline": { + "version": 1, + "name": "MySecondPipeline", + "artifactStore": { + "type": "S3", + "location": "codepipeline-us-east-1-11EXAMPLE11" + }, + "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", + "stages": [ + { + "name": "Source", + "actions": [ + { + "name": "Source", + "actionTypeId": { + "version": "1", + "category": "Source", + "owner": "AWS", + "provider": "S3" + }, + "configuration": { + "S3Bucket": "awscodepipeline-demo-bucket", + "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" + }, + "inputArtifacts": [ + + ], + "outputArtifacts": [ + { + "name": "MyApp" + } + ], + "runOrder": 1 + } + ] + }, + { + "name": "Beta", + "actions": [ + { + "name": "CodePipelineDemoFleet", + "actionTypeId": { + "version": "1", + "category": "Deploy", + "owner": "AWS", + "provider": "CodeDeploy" + }, + "configuration": { + "ApplicationName": "CodePipelineDemoApplication", + "DeploymentGroupName": "CodePipelineDemoFleet" + }, + "inputArtifacts": [ + { + "name": "MyApp" + } + ], + "outputArtifacts": [ + + ], + "runOrder": 1 + } + ] + } + ] + } + }, + "comments": { + "input": { + "version": "The version number of the pipeline. All new pipelines have a version number of 1. This number is incremented automatically every time a pipeline is updated.", + "name": "Pipeline names must be unique within a user's AWS account.", + "artifactStore": "This Amazon S3 bucket is where artifacts for the pipeline will be stored as the pipeline runs. For more information about the Amazon S3 bucket used as the artifact store, see Concepts in the AWS CodePipeline User Guide.", + "roleArn": "This is the ARN for the service role created for AWS CodePipeline.", + "stages": "Each stage block defines a different stage in the pipeline. Pipelines can have up to ten stages, with up to twenty actions per stage." + }, + "output": { + } + }, + "description": "This example creates a simple two-stage pipeline in AWS CodePipeline that uses an Amazon S3 bucket for its source stage and deploys code using AWS CodeDeploy. For more information about the requirements for creating a pipeline, including the structure of the JSON file commonly used to create a pipeline, see \"Create a Pipeline\" in the AWS CodePipeline User Guide.", + "id": "create-a-pipeline-1449162214392", + "title": "Create a pipeline" + } + ], + "DeleteCustomActionType": [ + { + "input": { + "version": "1", + "category": "Build", + "provider": "MyJenkinsProviderName" + }, + "comments": { + "input": { + "version": "This is the current version number of the custom action.", + "category": "This is the type of action that the custom action is, for example build or test.", + "provider": "This is the provider of the service used in the custom action. In this example, the custom action is for a Jenkins build, and the name of the provider is the one configured in the AWS CodePipeline Plugin for Jenkins" + }, + "output": { + } + }, + "description": "This example deletes a custom action in AWS CodePipeline by specifiying the action type, provider name, and version number of the action to be deleted. Only used for custom actions. Use the list-action-types command to view the correct values for category, version, and provider. After a custom action is deleted, PollForJobs for the custom action will fail. Warning: You cannot recreate a custom action after it has been deleted unless you increase the version number of the action.", + "id": "delete-a-custom-action-1449163239567", + "title": "Delete a custom action" + } + ], + "DeletePipeline": [ + { + "input": { + "name": "MySecondPipeline" + }, + "comments": { + "input": { + "name": "The name of the pipeline to delete." + }, + "output": { + } + }, + "description": "This example deletes a pipeline named MySecondPipeline from AWS CodePipeline. Use ListPipelines to view a list of pipelines associated with your AWS account.", + "id": "delete-a-pipeline-1449163893541", + "title": "Delete a pipeline" + } + ], + "DisableStageTransition": [ + { + "input": { + "pipelineName": "MyFirstPipeline", + "reason": "An example reason", + "stageName": "Beta", + "transitionType": "Inbound" + }, + "comments": { + "input": { + "transitionType": "Valid values are Inbound, which prevents artifacts from transitioning into the stage and being processed by the actions in that stage, or Outbound, which prevents artifacts from transitioning out of the stage after they have been processed by the actions in that stage." + }, + "output": { + } + }, + "description": "This example disables transitions into the Beta stage of the MyFirstPipeline pipeline in AWS CodePipeline.", + "id": "disable-transitions-into-or-out-of-a-stage-1449164517291", + "title": "Disable transitions into or out of a stage" + } + ], + "EnableStageTransition": [ + { + "input": { + "pipelineName": "MyFirstPipeline", + "stageName": "Beta", + "transitionType": "Inbound" + }, + "comments": { + "input": { + "transitionType": "Valid values are Inbound, which allows artifacts to transition into the stage and be processed by the actions in that stage, or Outbound, which allows artifacts to transition out of the stage after they have been processed by the actions in that stage." + }, + "output": { + } + }, + "description": "This example enables transitions into the Beta stage of the MyFirstPipeline pipeline in AWS CodePipeline.", + "id": "enable-transitions-into-or-out-of-a-stage-1449164924423", + "title": "Enable transitions into or out of a stage" + } + ], + "GetJobDetails": [ + { + "input": { + "jobId": "11111111-abcd-1111-abcd-111111abcdef" + }, + "output": { + "jobDetails": { + "accountId": "111111111111", + "data": { + "actionConfiguration": { + "configuration": { + "ProjectName": "MyJenkinsExampleTestProject" + } + }, + "actionTypeId": { + "version": "1", + "category": "Test", + "owner": "Custom", + "provider": "MyJenkinsProviderName" + }, + "artifactCredentials": { + "accessKeyId": "AKIAIOSFODNN7EXAMPLE", + "secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + "sessionToken": "fICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=" + }, + "inputArtifacts": [ + { + "name": "MyAppBuild", + "location": { + "type": "S3", + "s3Location": { + "bucketName": "codepipeline-us-east-1-11EXAMPLE11", + "objectKey": "MySecondPipeline/MyAppBuild/EXAMPLE" + } + } + } + ], + "outputArtifacts": [ + + ], + "pipelineContext": { + "action": { + "name": "MyJenkinsTest-Action" + }, + "pipelineName": "MySecondPipeline", + "stage": { + "name": "Testing" + } + } + }, + "id": "11111111-abcd-1111-abcd-111111abcdef" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example returns details about a job whose ID is represented by f4f4ff82-2d11-EXAMPLE. This command is only used for custom actions. When this command is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if required for the custom action. This command will also return any secret values defined for the action, if any are defined.", + "id": "get-the-details-of-a-job-1449183680273", + "title": "Get the details of a job" + } + ], + "GetPipeline": [ + { + "input": { + "version": 123, + "name": "MyFirstPipeline" + }, + "output": { + "pipeline": { + "version": 1, + "name": "MyFirstPipeline", + "artifactStore": { + "type": "S3", + "location": "codepipeline-us-east-1-11EXAMPLE11" + }, + "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", + "stages": [ + { + "name": "Source", + "actions": [ + { + "name": "Source", + "actionTypeId": { + "version": "1", + "category": "Source", + "owner": "AWS", + "provider": "S3" + }, + "configuration": { + "S3Bucket": "awscodepipeline-demo-bucket", + "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" + }, + "inputArtifacts": [ + + ], + "outputArtifacts": [ + { + "name": "MyApp" + } + ], + "runOrder": 1 + } + ] + }, + { + "name": "Beta", + "actions": [ + { + "name": "CodePipelineDemoFleet", + "actionTypeId": { + "version": "1", + "category": "Deploy", + "owner": "AWS", + "provider": "CodeDeploy" + }, + "configuration": { + "ApplicationName": "CodePipelineDemoApplication", + "DeploymentGroupName": "CodePipelineDemoFleet" + }, + "inputArtifacts": [ + { + "name": "MyApp" + } + ], + "outputArtifacts": [ + + ], + "runOrder": 1 + } + ] + } + ] + } + }, + "comments": { + "input": { + "version": "This is an optional parameter. If you do not specify a version, the most current version of the pipeline structure is returned." + }, + "output": { + } + }, + "description": "This example returns the structure of a pipeline named MyFirstPipeline.", + "id": "view-the-structure-of-a-pipeline-1449184156329", + "title": "View the structure of a pipeline" + } + ], + "GetPipelineState": [ + { + "input": { + "name": "MyFirstPipeline" + }, + "output": { + "created": "1446137312.204", + "pipelineName": "MyFirstPipeline", + "pipelineVersion": 1, + "stageStates": [ + { + "actionStates": [ + { + "actionName": "Source", + "entityUrl": "https://console.aws.amazon.com/s3/home?#", + "latestExecution": { + "lastStatusChange": "1446137358.328", + "status": "Succeeded" + } + } + ], + "stageName": "Source" + }, + { + "actionStates": [ + { + "actionName": "CodePipelineDemoFleet", + "entityUrl": "https://console.aws.amazon.com/codedeploy/home?#/applications/CodePipelineDemoApplication/deployment-groups/CodePipelineDemoFleet", + "latestExecution": { + "externalExecutionId": "d-EXAMPLE", + "externalExecutionUrl": "https://console.aws.amazon.com/codedeploy/home?#/deployments/d-EXAMPLE", + "lastStatusChange": "1446137493.131", + "status": "Succeeded", + "summary": "Deployment Succeeded" + } + } + ], + "inboundTransitionState": { + "enabled": true + }, + "stageName": "Beta" + } + ], + "updated": "1446137312.204" + }, + "comments": { + "input": { + }, + "output": { + "created": "The value for created and all other time- and date-related information such as lastStatusChange, is returned in timestamp format." + } + }, + "description": "This example returns the most recent state of a pipeline named MyFirstPipeline.", + "id": "view-information-about-the-state-of-a-pipeline-1449184486550", + "title": "View information about the state of a pipeline" + } + ], + "ListActionTypes": [ + { + "input": { + "actionOwnerFilter": "Custom", + "nextToken": "" + }, + "output": { + "actionTypes": [ + { + "actionConfigurationProperties": [ + { + "name": "MyJenkinsExampleBuildProject", + "required": true, + "key": true, + "queryable": true, + "secret": false + } + ], + "id": { + "version": "1", + "category": "Build", + "owner": "Custom", + "provider": "MyJenkinsProviderName" + }, + "inputArtifactDetails": { + "maximumCount": 5, + "minimumCount": 0 + }, + "outputArtifactDetails": { + "maximumCount": 5, + "minimumCount": 0 + }, + "settings": { + "entityUrlTemplate": "http://54.174.131.118/job/{Config:ProjectName}", + "executionUrlTemplate": "http://54.174.131.118/job/{Config:ProjectName}/{ExternalExecutionId}" + } + }, + { + "actionConfigurationProperties": [ + { + "name": "MyJenkinsExampleTestProject", + "required": true, + "key": true, + "queryable": true, + "secret": false + } + ], + "id": { + "version": "1", + "category": "Build", + "owner": "Custom", + "provider": "MyJenkinsProviderName" + }, + "inputArtifactDetails": { + "maximumCount": 5, + "minimumCount": 0 + }, + "outputArtifactDetails": { + "maximumCount": 5, + "minimumCount": 0 + }, + "settings": { + "entityUrlTemplate": "http://54.210.140.46/job/{Config:ProjectName}", + "executionUrlTemplate": "http://54.210.140.46/job/{Config:ProjectName}/{ExternalExecutionId}" + } + } + ], + "nextToken": "" + }, + "comments": { + "input": { + }, + "output": { + "actionOwnerFilter": "actionOwnerFilter is optional. It is used to filter the response to actions created by a specific entity. Valid values include AWS, ThirdParty, and Custom.", + "nextToken": "nextToken is optional. Its operation is reserved for future use." + } + }, + "description": "Used by itself, ListActionTypes returns the structure of all AWS CodePipeline actions available to your AWS account. This example uses the actionOwnerFilter option to limit the response to include only the structure of all custom actions defined for the account.", + "id": "view-a-summary-of-all-action-types-associated-with-your-account-1455218918202", + "title": "View a summary of all action types associated with your account" + } + ], + "ListPipelines": [ + { + "input": { + }, + "output": { + "nextToken": "", + "pipelines": [ + { + "version": 1, + "name": "MyFirstPipeline", + "created": "1444681408.094", + "updated": "1444681408.094" + }, + { + "version": 3, + "name": "MySecondPipeline", + "created": "1443046290.003", + "updated": "1443048299.639" + } + ] + }, + "comments": { + "input": { + "nextToken": "nextToken is optional. Its operation is reserved for future use." + }, + "output": { + "pipelines": "Date and time information returned in the pipeline blocks, such as the values for created or updated, are in timestamp format." + } + }, + "description": "This example lists all AWS CodePipeline pipelines associated with the user's AWS account.", + "id": "view-a-summary-of-all-pipelines-associated-with-your-account-1449185747807", + "title": "View a summary of all pipelines associated with your account" + } + ], + "PollForJobs": [ + { + "input": { + "actionTypeId": { + "version": "1", + "category": "Test", + "owner": "Custom", + "provider": "MyJenkinsProviderName" + }, + "maxBatchSize": 5, + "queryParam": { + "ProjectName": "MyJenkinsTestProj" + } + }, + "output": { + "jobs": [ + { + "accountId": "111111111111", + "data": { + "actionConfiguration": { + "configuration": { + "ProjectName": "MyJenkinsTestProj" + } + }, + "actionTypeId": { + "version": "1", + "category": "Test", + "owner": "Custom", + "provider": "MyJenkinsProviderName" + }, + "artifactCredentials": { + "accessKeyId": "AKIAIOSFODNN7EXAMPLE", + "secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", + "sessionToken": "fICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=" + }, + "inputArtifacts": [ + { + "name": "MyAppBuild", + "location": { + "type": "S3", + "s3Location": { + "bucketName": "codepipeline-us-east-1-11EXAMPLE11", + "objectKey": "MySecondPipeline/MyAppBuild/EXAMPLE" + } + } + } + ], + "outputArtifacts": [ + + ], + "pipelineContext": { + "action": { + "name": "MyJenkinsTest-Action" + }, + "pipelineName": "MySecondPipeline", + "stage": { + "name": "Testing" + } + } + }, + "id": "11111111-abcd-1111-abcd-111111abcdef", + "nonce": "3" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example returns information about any jobs for a job worker to act upon. This command is only used for custom actions. When this command is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline. This command will also return any secret values defined for the action, if any are defined.", + "id": "view-any-available-jobs-1449186054484", + "title": "View any available jobs" + } + ], + "StartPipelineExecution": [ + { + "input": { + "name": "MyFirstPipeline" + }, + "output": { + "pipelineExecutionId": "11111111-abcd-1111-abcd-111111abcdef" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example runs the latest revision present in the source stage of a pipeline through the pipeline named \"MyFirstPipeline\".", + "id": "run-the-latest-revision-through-a-pipeline-1449186732433", + "title": "Run the latest revision through a pipeline" + } + ], + "UpdatePipeline": [ + { + "input": { + "pipeline": { + "version": 2, + "name": "MyFirstPipeline", + "artifactStore": { + "type": "S3", + "location": "codepipeline-us-east-1-11EXAMPLE11" + }, + "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", + "stages": [ + { + "name": "Source", + "actions": [ + { + "name": "Source", + "actionTypeId": { + "version": "1", + "category": "Source", + "owner": "AWS", + "provider": "S3" + }, + "configuration": { + "S3Bucket": "awscodepipeline-demo-bucket2", + "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" + }, + "inputArtifacts": [ + + ], + "outputArtifacts": [ + { + "name": "MyApp" + } + ], + "runOrder": 1 + } + ] + }, + { + "name": "Beta", + "actions": [ + { + "name": "CodePipelineDemoFleet", + "actionTypeId": { + "version": "1", + "category": "Deploy", + "owner": "AWS", + "provider": "CodeDeploy" + }, + "configuration": { + "ApplicationName": "CodePipelineDemoApplication", + "DeploymentGroupName": "CodePipelineDemoFleet" + }, + "inputArtifacts": [ + { + "name": "MyApp" + } + ], + "outputArtifacts": [ + + ], + "runOrder": 1 + } + ] + } + ] + } + }, + "output": { + "pipeline": { + "version": 3, + "name": "MyFirstPipeline", + "artifactStore": { + "type": "S3", + "location": "codepipeline-us-east-1-11EXAMPLE11" + }, + "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", + "stages": [ + { + "name": "Source", + "actions": [ + { + "name": "Source", + "actionTypeId": { + "version": "1", + "category": "Source", + "owner": "AWS", + "provider": "S3" + }, + "configuration": { + "S3Bucket": "awscodepipeline-demo-bucket2", + "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" + }, + "inputArtifacts": [ + + ], + "outputArtifacts": [ + { + "name": "MyApp" + } + ], + "runOrder": 1 + } + ] + }, + { + "name": "Beta", + "actions": [ + { + "name": "CodePipelineDemoFleet", + "actionTypeId": { + "version": "1", + "category": "Deploy", + "owner": "AWS", + "provider": "CodeDeploy" + }, + "configuration": { + "ApplicationName": "CodePipelineDemoApplication", + "DeploymentGroupName": "CodePipelineDemoFleet" + }, + "inputArtifacts": [ + { + "name": "MyApp" + } + ], + "outputArtifacts": [ + + ], + "runOrder": 1 + } + ] + } + ] + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example updates the structure of a pipeline. The entire structure of the pipeline must be supplied, either by passing all of the parameters, or by using a pre-defined JSON file.", + "id": "update-the-structure-of-a-pipeline-1449186881322", + "title": "Update the structure of a pipeline" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json b/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json new file mode 100644 index 0000000..636a811 --- /dev/null +++ b/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json @@ -0,0 +1,1100 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-07-09", + "endpointPrefix": "codepipeline", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "CodePipeline", + "serviceFullName": "AWS CodePipeline", + "signatureVersion": "v4", + "targetPrefix": "CodePipeline_20150709" + }, + "operations": { + "AcknowledgeJob": { + "input": { + "type": "structure", + "required": [ + "jobId", + "nonce" + ], + "members": { + "jobId": {}, + "nonce": {} + } + }, + "output": { + "type": "structure", + "members": { + "status": {} + } + } + }, + "AcknowledgeThirdPartyJob": { + "input": { + "type": "structure", + "required": [ + "jobId", + "nonce", + "clientToken" + ], + "members": { + "jobId": {}, + "nonce": {}, + "clientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "status": {} + } + } + }, + "CreateCustomActionType": { + "input": { + "type": "structure", + "required": [ + "category", + "provider", + "version", + "inputArtifactDetails", + "outputArtifactDetails" + ], + "members": { + "category": {}, + "provider": {}, + "version": {}, + "settings": { + "shape": "Se" + }, + "configurationProperties": { + "shape": "Sh" + }, + "inputArtifactDetails": { + "shape": "Sn" + }, + "outputArtifactDetails": { + "shape": "Sn" + } + } + }, + "output": { + "type": "structure", + "required": [ + "actionType" + ], + "members": { + "actionType": { + "shape": "Sr" + } + } + } + }, + "CreatePipeline": { + "input": { + "type": "structure", + "required": [ + "pipeline" + ], + "members": { + "pipeline": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "pipeline": { + "shape": "Sv" + } + } + } + }, + "DeleteCustomActionType": { + "input": { + "type": "structure", + "required": [ + "category", + "provider", + "version" + ], + "members": { + "category": {}, + "provider": {}, + "version": {} + } + } + }, + "DeletePipeline": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + } + }, + "DisableStageTransition": { + "input": { + "type": "structure", + "required": [ + "pipelineName", + "stageName", + "transitionType", + "reason" + ], + "members": { + "pipelineName": {}, + "stageName": {}, + "transitionType": {}, + "reason": {} + } + } + }, + "EnableStageTransition": { + "input": { + "type": "structure", + "required": [ + "pipelineName", + "stageName", + "transitionType" + ], + "members": { + "pipelineName": {}, + "stageName": {}, + "transitionType": {} + } + } + }, + "GetJobDetails": { + "input": { + "type": "structure", + "required": [ + "jobId" + ], + "members": { + "jobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "jobDetails": { + "type": "structure", + "members": { + "id": {}, + "data": { + "shape": "S1x" + }, + "accountId": {} + } + } + } + } + }, + "GetPipeline": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {}, + "version": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "pipeline": { + "shape": "Sv" + } + } + } + }, + "GetPipelineExecution": { + "input": { + "type": "structure", + "required": [ + "pipelineName", + "pipelineExecutionId" + ], + "members": { + "pipelineName": {}, + "pipelineExecutionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "pipelineExecution": { + "type": "structure", + "members": { + "pipelineName": {}, + "pipelineVersion": { + "type": "integer" + }, + "pipelineExecutionId": {}, + "status": {}, + "artifactRevisions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "revisionId": {}, + "revisionChangeIdentifier": {}, + "revisionSummary": {}, + "created": { + "type": "timestamp" + }, + "revisionUrl": {} + } + } + } + } + } + } + } + }, + "GetPipelineState": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + }, + "output": { + "type": "structure", + "members": { + "pipelineName": {}, + "pipelineVersion": { + "type": "integer" + }, + "stageStates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "stageName": {}, + "inboundTransitionState": { + "type": "structure", + "members": { + "enabled": { + "type": "boolean" + }, + "lastChangedBy": {}, + "lastChangedAt": { + "type": "timestamp" + }, + "disabledReason": {} + } + }, + "actionStates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "actionName": {}, + "currentRevision": { + "shape": "S32" + }, + "latestExecution": { + "type": "structure", + "members": { + "status": {}, + "summary": {}, + "lastStatusChange": { + "type": "timestamp" + }, + "token": {}, + "lastUpdatedBy": {}, + "externalExecutionId": {}, + "externalExecutionUrl": {}, + "percentComplete": { + "type": "integer" + }, + "errorDetails": { + "type": "structure", + "members": { + "code": {}, + "message": {} + } + } + } + }, + "entityUrl": {}, + "revisionUrl": {} + } + } + }, + "latestExecution": { + "type": "structure", + "required": [ + "pipelineExecutionId", + "status" + ], + "members": { + "pipelineExecutionId": {}, + "status": {} + } + } + } + } + }, + "created": { + "type": "timestamp" + }, + "updated": { + "type": "timestamp" + } + } + } + }, + "GetThirdPartyJobDetails": { + "input": { + "type": "structure", + "required": [ + "jobId", + "clientToken" + ], + "members": { + "jobId": {}, + "clientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "jobDetails": { + "type": "structure", + "members": { + "id": {}, + "data": { + "type": "structure", + "members": { + "actionTypeId": { + "shape": "Ss" + }, + "actionConfiguration": { + "shape": "S1y" + }, + "pipelineContext": { + "shape": "S1z" + }, + "inputArtifacts": { + "shape": "S22" + }, + "outputArtifacts": { + "shape": "S22" + }, + "artifactCredentials": { + "shape": "S2a" + }, + "continuationToken": {}, + "encryptionKey": { + "shape": "S11" + } + } + }, + "nonce": {} + } + } + } + } + }, + "ListActionTypes": { + "input": { + "type": "structure", + "members": { + "actionOwnerFilter": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "required": [ + "actionTypes" + ], + "members": { + "actionTypes": { + "type": "list", + "member": { + "shape": "Sr" + } + }, + "nextToken": {} + } + } + }, + "ListPipelines": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "pipelines": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "version": { + "type": "integer" + }, + "created": { + "type": "timestamp" + }, + "updated": { + "type": "timestamp" + } + } + } + }, + "nextToken": {} + } + } + }, + "PollForJobs": { + "input": { + "type": "structure", + "required": [ + "actionTypeId" + ], + "members": { + "actionTypeId": { + "shape": "Ss" + }, + "maxBatchSize": { + "type": "integer" + }, + "queryParam": { + "type": "map", + "key": {}, + "value": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "jobs": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "data": { + "shape": "S1x" + }, + "nonce": {}, + "accountId": {} + } + } + } + } + } + }, + "PollForThirdPartyJobs": { + "input": { + "type": "structure", + "required": [ + "actionTypeId" + ], + "members": { + "actionTypeId": { + "shape": "Ss" + }, + "maxBatchSize": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "jobs": { + "type": "list", + "member": { + "type": "structure", + "members": { + "clientId": {}, + "jobId": {} + } + } + } + } + } + }, + "PutActionRevision": { + "input": { + "type": "structure", + "required": [ + "pipelineName", + "stageName", + "actionName", + "actionRevision" + ], + "members": { + "pipelineName": {}, + "stageName": {}, + "actionName": {}, + "actionRevision": { + "shape": "S32" + } + } + }, + "output": { + "type": "structure", + "members": { + "newRevision": { + "type": "boolean" + }, + "pipelineExecutionId": {} + } + } + }, + "PutApprovalResult": { + "input": { + "type": "structure", + "required": [ + "pipelineName", + "stageName", + "actionName", + "result", + "token" + ], + "members": { + "pipelineName": {}, + "stageName": {}, + "actionName": {}, + "result": { + "type": "structure", + "required": [ + "summary", + "status" + ], + "members": { + "summary": {}, + "status": {} + } + }, + "token": {} + } + }, + "output": { + "type": "structure", + "members": { + "approvedAt": { + "type": "timestamp" + } + } + } + }, + "PutJobFailureResult": { + "input": { + "type": "structure", + "required": [ + "jobId", + "failureDetails" + ], + "members": { + "jobId": {}, + "failureDetails": { + "shape": "S4c" + } + } + } + }, + "PutJobSuccessResult": { + "input": { + "type": "structure", + "required": [ + "jobId" + ], + "members": { + "jobId": {}, + "currentRevision": { + "shape": "S4f" + }, + "continuationToken": {}, + "executionDetails": { + "shape": "S4h" + } + } + } + }, + "PutThirdPartyJobFailureResult": { + "input": { + "type": "structure", + "required": [ + "jobId", + "clientToken", + "failureDetails" + ], + "members": { + "jobId": {}, + "clientToken": {}, + "failureDetails": { + "shape": "S4c" + } + } + } + }, + "PutThirdPartyJobSuccessResult": { + "input": { + "type": "structure", + "required": [ + "jobId", + "clientToken" + ], + "members": { + "jobId": {}, + "clientToken": {}, + "currentRevision": { + "shape": "S4f" + }, + "continuationToken": {}, + "executionDetails": { + "shape": "S4h" + } + } + } + }, + "RetryStageExecution": { + "input": { + "type": "structure", + "required": [ + "pipelineName", + "stageName", + "pipelineExecutionId", + "retryMode" + ], + "members": { + "pipelineName": {}, + "stageName": {}, + "pipelineExecutionId": {}, + "retryMode": {} + } + }, + "output": { + "type": "structure", + "members": { + "pipelineExecutionId": {} + } + } + }, + "StartPipelineExecution": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + }, + "output": { + "type": "structure", + "members": { + "pipelineExecutionId": {} + } + } + }, + "UpdatePipeline": { + "input": { + "type": "structure", + "required": [ + "pipeline" + ], + "members": { + "pipeline": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "pipeline": { + "shape": "Sv" + } + } + } + } + }, + "shapes": { + "Se": { + "type": "structure", + "members": { + "thirdPartyConfigurationUrl": {}, + "entityUrlTemplate": {}, + "executionUrlTemplate": {}, + "revisionUrlTemplate": {} + } + }, + "Sh": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "required", + "key", + "secret" + ], + "members": { + "name": {}, + "required": { + "type": "boolean" + }, + "key": { + "type": "boolean" + }, + "secret": { + "type": "boolean" + }, + "queryable": { + "type": "boolean" + }, + "description": {}, + "type": {} + } + } + }, + "Sn": { + "type": "structure", + "required": [ + "minimumCount", + "maximumCount" + ], + "members": { + "minimumCount": { + "type": "integer" + }, + "maximumCount": { + "type": "integer" + } + } + }, + "Sr": { + "type": "structure", + "required": [ + "id", + "inputArtifactDetails", + "outputArtifactDetails" + ], + "members": { + "id": { + "shape": "Ss" + }, + "settings": { + "shape": "Se" + }, + "actionConfigurationProperties": { + "shape": "Sh" + }, + "inputArtifactDetails": { + "shape": "Sn" + }, + "outputArtifactDetails": { + "shape": "Sn" + } + } + }, + "Ss": { + "type": "structure", + "required": [ + "category", + "owner", + "provider", + "version" + ], + "members": { + "category": {}, + "owner": {}, + "provider": {}, + "version": {} + } + }, + "Sv": { + "type": "structure", + "required": [ + "name", + "roleArn", + "artifactStore", + "stages" + ], + "members": { + "name": {}, + "roleArn": {}, + "artifactStore": { + "type": "structure", + "required": [ + "type", + "location" + ], + "members": { + "type": {}, + "location": {}, + "encryptionKey": { + "shape": "S11" + } + } + }, + "stages": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "actions" + ], + "members": { + "name": {}, + "blockers": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "type" + ], + "members": { + "name": {}, + "type": {} + } + } + }, + "actions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "actionTypeId" + ], + "members": { + "name": {}, + "actionTypeId": { + "shape": "Ss" + }, + "runOrder": { + "type": "integer" + }, + "configuration": { + "shape": "S1f" + }, + "outputArtifacts": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + } + }, + "inputArtifacts": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + } + }, + "roleArn": {} + } + } + } + } + } + }, + "version": { + "type": "integer" + } + } + }, + "S11": { + "type": "structure", + "required": [ + "id", + "type" + ], + "members": { + "id": {}, + "type": {} + } + }, + "S1f": { + "type": "map", + "key": {}, + "value": {} + }, + "S1x": { + "type": "structure", + "members": { + "actionTypeId": { + "shape": "Ss" + }, + "actionConfiguration": { + "shape": "S1y" + }, + "pipelineContext": { + "shape": "S1z" + }, + "inputArtifacts": { + "shape": "S22" + }, + "outputArtifacts": { + "shape": "S22" + }, + "artifactCredentials": { + "shape": "S2a" + }, + "continuationToken": {}, + "encryptionKey": { + "shape": "S11" + } + } + }, + "S1y": { + "type": "structure", + "members": { + "configuration": { + "shape": "S1f" + } + } + }, + "S1z": { + "type": "structure", + "members": { + "pipelineName": {}, + "stage": { + "type": "structure", + "members": { + "name": {} + } + }, + "action": { + "type": "structure", + "members": { + "name": {} + } + } + } + }, + "S22": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "revision": {}, + "location": { + "type": "structure", + "members": { + "type": {}, + "s3Location": { + "type": "structure", + "required": [ + "bucketName", + "objectKey" + ], + "members": { + "bucketName": {}, + "objectKey": {} + } + } + } + } + } + } + }, + "S2a": { + "type": "structure", + "required": [ + "accessKeyId", + "secretAccessKey", + "sessionToken" + ], + "members": { + "accessKeyId": {}, + "secretAccessKey": {}, + "sessionToken": {} + }, + "sensitive": true + }, + "S32": { + "type": "structure", + "required": [ + "revisionId", + "revisionChangeId", + "created" + ], + "members": { + "revisionId": {}, + "revisionChangeId": {}, + "created": { + "type": "timestamp" + } + } + }, + "S4c": { + "type": "structure", + "required": [ + "type", + "message" + ], + "members": { + "type": {}, + "message": {}, + "externalExecutionId": {} + } + }, + "S4f": { + "type": "structure", + "required": [ + "revision", + "changeIdentifier" + ], + "members": { + "revision": {}, + "changeIdentifier": {}, + "created": { + "type": "timestamp" + }, + "revisionSummary": {} + } + }, + "S4h": { + "type": "structure", + "members": { + "summary": {}, + "externalExecutionId": {}, + "percentComplete": { + "type": "integer" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json b/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json new file mode 100644 index 0000000..c8923d3 --- /dev/null +++ b/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json @@ -0,0 +1,487 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-06-30", + "endpointPrefix": "cognito-identity", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon Cognito Identity", + "signatureVersion": "v4", + "targetPrefix": "AWSCognitoIdentityService" + }, + "operations": { + "CreateIdentityPool": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolName", + "AllowUnauthenticatedIdentities" + ], + "members": { + "IdentityPoolName": {}, + "AllowUnauthenticatedIdentities": { + "type": "boolean" + }, + "SupportedLoginProviders": { + "shape": "S4" + }, + "DeveloperProviderName": {}, + "OpenIdConnectProviderARNs": { + "shape": "S8" + }, + "CognitoIdentityProviders": { + "shape": "Sa" + }, + "SamlProviderARNs": { + "shape": "Se" + } + } + }, + "output": { + "shape": "Sf" + } + }, + "DeleteIdentities": { + "input": { + "type": "structure", + "required": [ + "IdentityIdsToDelete" + ], + "members": { + "IdentityIdsToDelete": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "UnprocessedIdentityIds": { + "type": "list", + "member": { + "type": "structure", + "members": { + "IdentityId": {}, + "ErrorCode": {} + } + } + } + } + } + }, + "DeleteIdentityPool": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": {} + } + } + }, + "DescribeIdentity": { + "input": { + "type": "structure", + "required": [ + "IdentityId" + ], + "members": { + "IdentityId": {} + } + }, + "output": { + "shape": "Sq" + } + }, + "DescribeIdentityPool": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": {} + } + }, + "output": { + "shape": "Sf" + } + }, + "GetCredentialsForIdentity": { + "input": { + "type": "structure", + "required": [ + "IdentityId" + ], + "members": { + "IdentityId": {}, + "Logins": { + "shape": "Sv" + }, + "CustomRoleArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "IdentityId": {}, + "Credentials": { + "type": "structure", + "members": { + "AccessKeyId": {}, + "SecretKey": {}, + "SessionToken": {}, + "Expiration": { + "type": "timestamp" + } + } + } + } + } + }, + "GetId": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "AccountId": {}, + "IdentityPoolId": {}, + "Logins": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityId": {} + } + } + }, + "GetIdentityPoolRoles": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": {} + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "Roles": { + "shape": "S17" + } + } + } + }, + "GetOpenIdToken": { + "input": { + "type": "structure", + "required": [ + "IdentityId" + ], + "members": { + "IdentityId": {}, + "Logins": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityId": {}, + "Token": {} + } + } + }, + "GetOpenIdTokenForDeveloperIdentity": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "Logins" + ], + "members": { + "IdentityPoolId": {}, + "IdentityId": {}, + "Logins": { + "shape": "Sv" + }, + "TokenDuration": { + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityId": {}, + "Token": {} + } + } + }, + "ListIdentities": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "MaxResults" + ], + "members": { + "IdentityPoolId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {}, + "HideDisabled": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "Identities": { + "type": "list", + "member": { + "shape": "Sq" + } + }, + "NextToken": {} + } + } + }, + "ListIdentityPools": { + "input": { + "type": "structure", + "required": [ + "MaxResults" + ], + "members": { + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPools": { + "type": "list", + "member": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "IdentityPoolName": {} + } + } + }, + "NextToken": {} + } + } + }, + "LookupDeveloperIdentity": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": {}, + "IdentityId": {}, + "DeveloperUserIdentifier": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "IdentityId": {}, + "DeveloperUserIdentifierList": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + } + }, + "MergeDeveloperIdentities": { + "input": { + "type": "structure", + "required": [ + "SourceUserIdentifier", + "DestinationUserIdentifier", + "DeveloperProviderName", + "IdentityPoolId" + ], + "members": { + "SourceUserIdentifier": {}, + "DestinationUserIdentifier": {}, + "DeveloperProviderName": {}, + "IdentityPoolId": {} + } + }, + "output": { + "type": "structure", + "members": { + "IdentityId": {} + } + } + }, + "SetIdentityPoolRoles": { + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "Roles" + ], + "members": { + "IdentityPoolId": {}, + "Roles": { + "shape": "S17" + } + } + } + }, + "UnlinkDeveloperIdentity": { + "input": { + "type": "structure", + "required": [ + "IdentityId", + "IdentityPoolId", + "DeveloperProviderName", + "DeveloperUserIdentifier" + ], + "members": { + "IdentityId": {}, + "IdentityPoolId": {}, + "DeveloperProviderName": {}, + "DeveloperUserIdentifier": {} + } + } + }, + "UnlinkIdentity": { + "input": { + "type": "structure", + "required": [ + "IdentityId", + "Logins", + "LoginsToRemove" + ], + "members": { + "IdentityId": {}, + "Logins": { + "shape": "Sv" + }, + "LoginsToRemove": { + "shape": "Sr" + } + } + } + }, + "UpdateIdentityPool": { + "input": { + "shape": "Sf" + }, + "output": { + "shape": "Sf" + } + } + }, + "shapes": { + "S4": { + "type": "map", + "key": {}, + "value": {} + }, + "S8": { + "type": "list", + "member": {} + }, + "Sa": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ProviderName": {}, + "ClientId": {} + } + } + }, + "Se": { + "type": "list", + "member": {} + }, + "Sf": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityPoolName", + "AllowUnauthenticatedIdentities" + ], + "members": { + "IdentityPoolId": {}, + "IdentityPoolName": {}, + "AllowUnauthenticatedIdentities": { + "type": "boolean" + }, + "SupportedLoginProviders": { + "shape": "S4" + }, + "DeveloperProviderName": {}, + "OpenIdConnectProviderARNs": { + "shape": "S8" + }, + "CognitoIdentityProviders": { + "shape": "Sa" + }, + "SamlProviderARNs": { + "shape": "Se" + } + } + }, + "Sq": { + "type": "structure", + "members": { + "IdentityId": {}, + "Logins": { + "shape": "Sr" + }, + "CreationDate": { + "type": "timestamp" + }, + "LastModifiedDate": { + "type": "timestamp" + } + } + }, + "Sr": { + "type": "list", + "member": {} + }, + "Sv": { + "type": "map", + "key": {}, + "value": {} + }, + "S17": { + "type": "map", + "key": {}, + "value": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json b/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json new file mode 100644 index 0000000..6ec5a3e --- /dev/null +++ b/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json @@ -0,0 +1,1866 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-04-18", + "endpointPrefix": "cognito-idp", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon Cognito Identity Provider", + "signatureVersion": "v4", + "targetPrefix": "AWSCognitoIdentityProviderService" + }, + "operations": { + "AddCustomAttributes": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "CustomAttributes" + ], + "members": { + "UserPoolId": {}, + "CustomAttributes": { + "type": "list", + "member": { + "shape": "S4" + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminConfirmSignUp": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminCreateUser": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "UserAttributes": { + "shape": "Sg" + }, + "ValidationData": { + "shape": "Sg" + }, + "TemporaryPassword": { + "shape": "Sk" + }, + "ForceAliasCreation": { + "type": "boolean" + }, + "MessageAction": {}, + "DesiredDeliveryMediums": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "User": { + "shape": "Sq" + } + } + } + }, + "AdminDeleteUser": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + } + }, + "AdminDeleteUserAttributes": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username", + "UserAttributeNames" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "UserAttributeNames": { + "shape": "Sx" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminDisableUser": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminEnableUser": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminForgetDevice": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username", + "DeviceKey" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "DeviceKey": {} + } + } + }, + "AdminGetDevice": { + "input": { + "type": "structure", + "required": [ + "DeviceKey", + "UserPoolId", + "Username" + ], + "members": { + "DeviceKey": {}, + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Device" + ], + "members": { + "Device": { + "shape": "S17" + } + } + } + }, + "AdminGetUser": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Username" + ], + "members": { + "Username": { + "shape": "Sd" + }, + "UserAttributes": { + "shape": "Sg" + }, + "UserCreateDate": { + "type": "timestamp" + }, + "UserLastModifiedDate": { + "type": "timestamp" + }, + "Enabled": { + "type": "boolean" + }, + "UserStatus": {}, + "MFAOptions": { + "shape": "St" + } + } + } + }, + "AdminInitiateAuth": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "ClientId", + "AuthFlow" + ], + "members": { + "UserPoolId": {}, + "ClientId": { + "shape": "S1b" + }, + "AuthFlow": {}, + "AuthParameters": { + "shape": "S1d" + }, + "ClientMetadata": { + "shape": "S1e" + } + } + }, + "output": { + "type": "structure", + "members": { + "ChallengeName": {}, + "Session": {}, + "ChallengeParameters": { + "shape": "S1i" + }, + "AuthenticationResult": { + "shape": "S1j" + } + } + } + }, + "AdminListDevices": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "Limit": { + "type": "integer" + }, + "PaginationToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Devices": { + "shape": "S1r" + }, + "PaginationToken": {} + } + } + }, + "AdminResetUserPassword": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminRespondToAuthChallenge": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "ClientId", + "ChallengeName" + ], + "members": { + "UserPoolId": {}, + "ClientId": { + "shape": "S1b" + }, + "ChallengeName": {}, + "ChallengeResponses": { + "shape": "S1v" + }, + "Session": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChallengeName": {}, + "Session": {}, + "ChallengeParameters": { + "shape": "S1i" + }, + "AuthenticationResult": { + "shape": "S1j" + } + } + } + }, + "AdminSetUserSettings": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username", + "MFAOptions" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "MFAOptions": { + "shape": "St" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminUpdateDeviceStatus": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username", + "DeviceKey" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "DeviceKey": {}, + "DeviceRememberedStatus": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminUpdateUserAttributes": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username", + "UserAttributes" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + }, + "UserAttributes": { + "shape": "Sg" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AdminUserGlobalSignOut": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "Username" + ], + "members": { + "UserPoolId": {}, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ChangePassword": { + "input": { + "type": "structure", + "required": [ + "PreviousPassword", + "ProposedPassword" + ], + "members": { + "PreviousPassword": { + "shape": "Sk" + }, + "ProposedPassword": { + "shape": "Sk" + }, + "AccessToken": { + "shape": "S1k" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "authtype": "none" + }, + "ConfirmDevice": { + "input": { + "type": "structure", + "required": [ + "AccessToken", + "DeviceKey" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "DeviceKey": {}, + "DeviceSecretVerifierConfig": { + "type": "structure", + "members": { + "PasswordVerifier": {}, + "Salt": {} + } + }, + "DeviceName": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserConfirmationNecessary": { + "type": "boolean" + } + } + } + }, + "ConfirmForgotPassword": { + "input": { + "type": "structure", + "required": [ + "ClientId", + "Username", + "ConfirmationCode", + "Password" + ], + "members": { + "ClientId": { + "shape": "S1b" + }, + "SecretHash": { + "shape": "S2d" + }, + "Username": { + "shape": "Sd" + }, + "ConfirmationCode": {}, + "Password": { + "shape": "Sk" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "authtype": "none" + }, + "ConfirmSignUp": { + "input": { + "type": "structure", + "required": [ + "ClientId", + "Username", + "ConfirmationCode" + ], + "members": { + "ClientId": { + "shape": "S1b" + }, + "SecretHash": { + "shape": "S2d" + }, + "Username": { + "shape": "Sd" + }, + "ConfirmationCode": {}, + "ForceAliasCreation": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "authtype": "none" + }, + "CreateUserImportJob": { + "input": { + "type": "structure", + "required": [ + "JobName", + "UserPoolId", + "CloudWatchLogsRoleArn" + ], + "members": { + "JobName": {}, + "UserPoolId": {}, + "CloudWatchLogsRoleArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserImportJob": { + "shape": "S2m" + } + } + } + }, + "CreateUserPool": { + "input": { + "type": "structure", + "required": [ + "PoolName" + ], + "members": { + "PoolName": {}, + "Policies": { + "shape": "S2u" + }, + "LambdaConfig": { + "shape": "S2x" + }, + "AutoVerifiedAttributes": { + "shape": "S2y" + }, + "AliasAttributes": { + "shape": "S30" + }, + "SmsVerificationMessage": {}, + "EmailVerificationMessage": {}, + "EmailVerificationSubject": {}, + "SmsAuthenticationMessage": {}, + "MfaConfiguration": {}, + "DeviceConfiguration": { + "shape": "S36" + }, + "EmailConfiguration": { + "shape": "S37" + }, + "SmsConfiguration": { + "shape": "S39" + }, + "AdminCreateUserConfig": { + "shape": "S3a" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserPool": { + "shape": "S3e" + } + } + } + }, + "CreateUserPoolClient": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "ClientName" + ], + "members": { + "UserPoolId": {}, + "ClientName": {}, + "GenerateSecret": { + "type": "boolean" + }, + "RefreshTokenValidity": { + "type": "integer" + }, + "ReadAttributes": { + "shape": "S3l" + }, + "WriteAttributes": { + "shape": "S3l" + }, + "ExplicitAuthFlows": { + "shape": "S3n" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserPoolClient": { + "shape": "S3q" + } + } + } + }, + "DeleteUser": { + "input": { + "type": "structure", + "members": { + "AccessToken": { + "shape": "S1k" + } + } + }, + "authtype": "none" + }, + "DeleteUserAttributes": { + "input": { + "type": "structure", + "required": [ + "UserAttributeNames" + ], + "members": { + "UserAttributeNames": { + "shape": "Sx" + }, + "AccessToken": { + "shape": "S1k" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "authtype": "none" + }, + "DeleteUserPool": { + "input": { + "type": "structure", + "required": [ + "UserPoolId" + ], + "members": { + "UserPoolId": {} + } + } + }, + "DeleteUserPoolClient": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "ClientId" + ], + "members": { + "UserPoolId": {}, + "ClientId": { + "shape": "S1b" + } + } + } + }, + "DescribeUserImportJob": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "JobId" + ], + "members": { + "UserPoolId": {}, + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserImportJob": { + "shape": "S2m" + } + } + } + }, + "DescribeUserPool": { + "input": { + "type": "structure", + "required": [ + "UserPoolId" + ], + "members": { + "UserPoolId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserPool": { + "shape": "S3e" + } + } + } + }, + "DescribeUserPoolClient": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "ClientId" + ], + "members": { + "UserPoolId": {}, + "ClientId": { + "shape": "S1b" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserPoolClient": { + "shape": "S3q" + } + } + } + }, + "ForgetDevice": { + "input": { + "type": "structure", + "required": [ + "DeviceKey" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "DeviceKey": {} + } + } + }, + "ForgotPassword": { + "input": { + "type": "structure", + "required": [ + "ClientId", + "Username" + ], + "members": { + "ClientId": { + "shape": "S1b" + }, + "SecretHash": { + "shape": "S2d" + }, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": { + "CodeDeliveryDetails": { + "shape": "S46" + } + } + }, + "authtype": "none" + }, + "GetCSVHeader": { + "input": { + "type": "structure", + "required": [ + "UserPoolId" + ], + "members": { + "UserPoolId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserPoolId": {}, + "CSVHeader": { + "type": "list", + "member": {} + } + } + } + }, + "GetDevice": { + "input": { + "type": "structure", + "required": [ + "DeviceKey" + ], + "members": { + "DeviceKey": {}, + "AccessToken": { + "shape": "S1k" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Device" + ], + "members": { + "Device": { + "shape": "S17" + } + } + } + }, + "GetUser": { + "input": { + "type": "structure", + "members": { + "AccessToken": { + "shape": "S1k" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Username", + "UserAttributes" + ], + "members": { + "Username": { + "shape": "Sd" + }, + "UserAttributes": { + "shape": "Sg" + }, + "MFAOptions": { + "shape": "St" + } + } + }, + "authtype": "none" + }, + "GetUserAttributeVerificationCode": { + "input": { + "type": "structure", + "required": [ + "AttributeName" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "AttributeName": {} + } + }, + "output": { + "type": "structure", + "members": { + "CodeDeliveryDetails": { + "shape": "S46" + } + } + }, + "authtype": "none" + }, + "GlobalSignOut": { + "input": { + "type": "structure", + "members": { + "AccessToken": { + "shape": "S1k" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "InitiateAuth": { + "input": { + "type": "structure", + "required": [ + "AuthFlow", + "ClientId" + ], + "members": { + "AuthFlow": {}, + "AuthParameters": { + "shape": "S1d" + }, + "ClientMetadata": { + "shape": "S1e" + }, + "ClientId": { + "shape": "S1b" + } + } + }, + "output": { + "type": "structure", + "members": { + "ChallengeName": {}, + "Session": {}, + "ChallengeParameters": { + "shape": "S1i" + }, + "AuthenticationResult": { + "shape": "S1j" + } + } + } + }, + "ListDevices": { + "input": { + "type": "structure", + "required": [ + "AccessToken" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "Limit": { + "type": "integer" + }, + "PaginationToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Devices": { + "shape": "S1r" + }, + "PaginationToken": {} + } + } + }, + "ListUserImportJobs": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "MaxResults" + ], + "members": { + "UserPoolId": {}, + "MaxResults": { + "type": "integer" + }, + "PaginationToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserImportJobs": { + "type": "list", + "member": { + "shape": "S2m" + } + }, + "PaginationToken": {} + } + } + }, + "ListUserPoolClients": { + "input": { + "type": "structure", + "required": [ + "UserPoolId" + ], + "members": { + "UserPoolId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserPoolClients": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ClientId": { + "shape": "S1b" + }, + "UserPoolId": {}, + "ClientName": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListUserPools": { + "input": { + "type": "structure", + "required": [ + "MaxResults" + ], + "members": { + "NextToken": {}, + "MaxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserPools": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "LambdaConfig": { + "shape": "S2x" + }, + "Status": {}, + "LastModifiedDate": { + "type": "timestamp" + }, + "CreationDate": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListUsers": { + "input": { + "type": "structure", + "required": [ + "UserPoolId" + ], + "members": { + "UserPoolId": {}, + "AttributesToGet": { + "type": "list", + "member": {} + }, + "Limit": { + "type": "integer" + }, + "PaginationToken": {}, + "Filter": {} + } + }, + "output": { + "type": "structure", + "members": { + "Users": { + "type": "list", + "member": { + "shape": "Sq" + } + }, + "PaginationToken": {} + } + } + }, + "ResendConfirmationCode": { + "input": { + "type": "structure", + "required": [ + "ClientId", + "Username" + ], + "members": { + "ClientId": { + "shape": "S1b" + }, + "SecretHash": { + "shape": "S2d" + }, + "Username": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": { + "CodeDeliveryDetails": { + "shape": "S46" + } + } + }, + "authtype": "none" + }, + "RespondToAuthChallenge": { + "input": { + "type": "structure", + "required": [ + "ClientId", + "ChallengeName" + ], + "members": { + "ClientId": { + "shape": "S1b" + }, + "ChallengeName": {}, + "Session": {}, + "ChallengeResponses": { + "shape": "S1v" + } + } + }, + "output": { + "type": "structure", + "members": { + "ChallengeName": {}, + "Session": {}, + "ChallengeParameters": { + "shape": "S1i" + }, + "AuthenticationResult": { + "shape": "S1j" + } + } + } + }, + "SetUserSettings": { + "input": { + "type": "structure", + "required": [ + "AccessToken", + "MFAOptions" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "MFAOptions": { + "shape": "St" + } + } + }, + "output": { + "type": "structure", + "members": {} + }, + "authtype": "none" + }, + "SignUp": { + "input": { + "type": "structure", + "required": [ + "ClientId", + "Username", + "Password" + ], + "members": { + "ClientId": { + "shape": "S1b" + }, + "SecretHash": { + "shape": "S2d" + }, + "Username": { + "shape": "Sd" + }, + "Password": { + "shape": "Sk" + }, + "UserAttributes": { + "shape": "Sg" + }, + "ValidationData": { + "shape": "Sg" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserConfirmed": { + "type": "boolean" + }, + "CodeDeliveryDetails": { + "shape": "S46" + } + } + }, + "authtype": "none" + }, + "StartUserImportJob": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "JobId" + ], + "members": { + "UserPoolId": {}, + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserImportJob": { + "shape": "S2m" + } + } + } + }, + "StopUserImportJob": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "JobId" + ], + "members": { + "UserPoolId": {}, + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UserImportJob": { + "shape": "S2m" + } + } + } + }, + "UpdateDeviceStatus": { + "input": { + "type": "structure", + "required": [ + "AccessToken", + "DeviceKey" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "DeviceKey": {}, + "DeviceRememberedStatus": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UpdateUserAttributes": { + "input": { + "type": "structure", + "required": [ + "UserAttributes" + ], + "members": { + "UserAttributes": { + "shape": "Sg" + }, + "AccessToken": { + "shape": "S1k" + } + } + }, + "output": { + "type": "structure", + "members": { + "CodeDeliveryDetailsList": { + "type": "list", + "member": { + "shape": "S46" + } + } + } + }, + "authtype": "none" + }, + "UpdateUserPool": { + "input": { + "type": "structure", + "required": [ + "UserPoolId" + ], + "members": { + "UserPoolId": {}, + "Policies": { + "shape": "S2u" + }, + "LambdaConfig": { + "shape": "S2x" + }, + "AutoVerifiedAttributes": { + "shape": "S2y" + }, + "SmsVerificationMessage": {}, + "EmailVerificationMessage": {}, + "EmailVerificationSubject": {}, + "SmsAuthenticationMessage": {}, + "MfaConfiguration": {}, + "DeviceConfiguration": { + "shape": "S36" + }, + "EmailConfiguration": { + "shape": "S37" + }, + "SmsConfiguration": { + "shape": "S39" + }, + "AdminCreateUserConfig": { + "shape": "S3a" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UpdateUserPoolClient": { + "input": { + "type": "structure", + "required": [ + "UserPoolId", + "ClientId" + ], + "members": { + "UserPoolId": {}, + "ClientId": { + "shape": "S1b" + }, + "ClientName": {}, + "RefreshTokenValidity": { + "type": "integer" + }, + "ReadAttributes": { + "shape": "S3l" + }, + "WriteAttributes": { + "shape": "S3l" + }, + "ExplicitAuthFlows": { + "shape": "S3n" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserPoolClient": { + "shape": "S3q" + } + } + } + }, + "VerifyUserAttribute": { + "input": { + "type": "structure", + "required": [ + "AttributeName", + "Code" + ], + "members": { + "AccessToken": { + "shape": "S1k" + }, + "AttributeName": {}, + "Code": {} + } + }, + "output": { + "type": "structure", + "members": {} + }, + "authtype": "none" + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "Name": {}, + "AttributeDataType": {}, + "DeveloperOnlyAttribute": { + "type": "boolean" + }, + "Mutable": { + "type": "boolean" + }, + "Required": { + "type": "boolean" + }, + "NumberAttributeConstraints": { + "type": "structure", + "members": { + "MinValue": {}, + "MaxValue": {} + } + }, + "StringAttributeConstraints": { + "type": "structure", + "members": { + "MinLength": {}, + "MaxLength": {} + } + } + } + }, + "Sd": { + "type": "string", + "sensitive": true + }, + "Sg": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Value": { + "type": "string", + "sensitive": true + } + } + } + }, + "Sk": { + "type": "string", + "sensitive": true + }, + "Sq": { + "type": "structure", + "members": { + "Username": { + "shape": "Sd" + }, + "Attributes": { + "shape": "Sg" + }, + "UserCreateDate": { + "type": "timestamp" + }, + "UserLastModifiedDate": { + "type": "timestamp" + }, + "Enabled": { + "type": "boolean" + }, + "UserStatus": {}, + "MFAOptions": { + "shape": "St" + } + } + }, + "St": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DeliveryMedium": {}, + "AttributeName": {} + } + } + }, + "Sx": { + "type": "list", + "member": {} + }, + "S17": { + "type": "structure", + "members": { + "DeviceKey": {}, + "DeviceAttributes": { + "shape": "Sg" + }, + "DeviceCreateDate": { + "type": "timestamp" + }, + "DeviceLastModifiedDate": { + "type": "timestamp" + }, + "DeviceLastAuthenticatedDate": { + "type": "timestamp" + } + } + }, + "S1b": { + "type": "string", + "sensitive": true + }, + "S1d": { + "type": "map", + "key": {}, + "value": {} + }, + "S1e": { + "type": "map", + "key": {}, + "value": {} + }, + "S1i": { + "type": "map", + "key": {}, + "value": {} + }, + "S1j": { + "type": "structure", + "members": { + "AccessToken": { + "shape": "S1k" + }, + "ExpiresIn": { + "type": "integer" + }, + "TokenType": {}, + "RefreshToken": { + "shape": "S1k" + }, + "IdToken": { + "shape": "S1k" + }, + "NewDeviceMetadata": { + "type": "structure", + "members": { + "DeviceKey": {}, + "DeviceGroupKey": {} + } + } + } + }, + "S1k": { + "type": "string", + "sensitive": true + }, + "S1r": { + "type": "list", + "member": { + "shape": "S17" + } + }, + "S1v": { + "type": "map", + "key": {}, + "value": {} + }, + "S2d": { + "type": "string", + "sensitive": true + }, + "S2m": { + "type": "structure", + "members": { + "JobName": {}, + "JobId": {}, + "UserPoolId": {}, + "PreSignedUrl": {}, + "CreationDate": { + "type": "timestamp" + }, + "StartDate": { + "type": "timestamp" + }, + "CompletionDate": { + "type": "timestamp" + }, + "Status": {}, + "CloudWatchLogsRoleArn": {}, + "ImportedUsers": { + "type": "long" + }, + "SkippedUsers": { + "type": "long" + }, + "FailedUsers": { + "type": "long" + }, + "CompletionMessage": {} + } + }, + "S2u": { + "type": "structure", + "members": { + "PasswordPolicy": { + "type": "structure", + "members": { + "MinimumLength": { + "type": "integer" + }, + "RequireUppercase": { + "type": "boolean" + }, + "RequireLowercase": { + "type": "boolean" + }, + "RequireNumbers": { + "type": "boolean" + }, + "RequireSymbols": { + "type": "boolean" + } + } + } + } + }, + "S2x": { + "type": "structure", + "members": { + "PreSignUp": {}, + "CustomMessage": {}, + "PostConfirmation": {}, + "PreAuthentication": {}, + "PostAuthentication": {}, + "DefineAuthChallenge": {}, + "CreateAuthChallenge": {}, + "VerifyAuthChallengeResponse": {} + } + }, + "S2y": { + "type": "list", + "member": {} + }, + "S30": { + "type": "list", + "member": {} + }, + "S36": { + "type": "structure", + "members": { + "ChallengeRequiredOnNewDevice": { + "type": "boolean" + }, + "DeviceOnlyRememberedOnUserPrompt": { + "type": "boolean" + } + } + }, + "S37": { + "type": "structure", + "members": { + "SourceArn": {}, + "ReplyToEmailAddress": {} + } + }, + "S39": { + "type": "structure", + "members": { + "SnsCallerArn": {}, + "ExternalId": {} + } + }, + "S3a": { + "type": "structure", + "members": { + "AllowAdminCreateUserOnly": { + "type": "boolean" + }, + "UnusedAccountValidityDays": { + "type": "integer" + }, + "InviteMessageTemplate": { + "type": "structure", + "members": { + "SMSMessage": {}, + "EmailMessage": {}, + "EmailSubject": {} + } + } + } + }, + "S3e": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Policies": { + "shape": "S2u" + }, + "LambdaConfig": { + "shape": "S2x" + }, + "Status": {}, + "LastModifiedDate": { + "type": "timestamp" + }, + "CreationDate": { + "type": "timestamp" + }, + "SchemaAttributes": { + "type": "list", + "member": { + "shape": "S4" + } + }, + "AutoVerifiedAttributes": { + "shape": "S2y" + }, + "AliasAttributes": { + "shape": "S30" + }, + "SmsVerificationMessage": {}, + "EmailVerificationMessage": {}, + "EmailVerificationSubject": {}, + "SmsAuthenticationMessage": {}, + "MfaConfiguration": {}, + "DeviceConfiguration": { + "shape": "S36" + }, + "EstimatedNumberOfUsers": { + "type": "integer" + }, + "EmailConfiguration": { + "shape": "S37" + }, + "SmsConfiguration": { + "shape": "S39" + }, + "SmsConfigurationFailure": {}, + "EmailConfigurationFailure": {}, + "AdminCreateUserConfig": { + "shape": "S3a" + } + } + }, + "S3l": { + "type": "list", + "member": {} + }, + "S3n": { + "type": "list", + "member": {} + }, + "S3q": { + "type": "structure", + "members": { + "UserPoolId": {}, + "ClientName": {}, + "ClientId": { + "shape": "S1b" + }, + "ClientSecret": { + "type": "string", + "sensitive": true + }, + "LastModifiedDate": { + "type": "timestamp" + }, + "CreationDate": { + "type": "timestamp" + }, + "RefreshTokenValidity": { + "type": "integer" + }, + "ReadAttributes": { + "shape": "S3l" + }, + "WriteAttributes": { + "shape": "S3l" + }, + "ExplicitAuthFlows": { + "shape": "S3n" + } + } + }, + "S46": { + "type": "structure", + "members": { + "Destination": {}, + "DeliveryMedium": {}, + "AttributeName": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json b/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json new file mode 100644 index 0000000..3f969ea --- /dev/null +++ b/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json @@ -0,0 +1,746 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-06-30", + "endpointPrefix": "cognito-sync", + "jsonVersion": "1.1", + "serviceFullName": "Amazon Cognito Sync", + "signatureVersion": "v4", + "protocol": "rest-json" + }, + "operations": { + "BulkPublish": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/bulkpublish", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolId": {} + } + } + }, + "DeleteDataset": { + "http": { + "method": "DELETE", + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "DatasetName" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "DatasetName": { + "location": "uri", + "locationName": "DatasetName" + } + } + }, + "output": { + "type": "structure", + "members": { + "Dataset": { + "shape": "S8" + } + } + } + }, + "DescribeDataset": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "DatasetName" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "DatasetName": { + "location": "uri", + "locationName": "DatasetName" + } + } + }, + "output": { + "type": "structure", + "members": { + "Dataset": { + "shape": "S8" + } + } + } + }, + "DescribeIdentityPoolUsage": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolUsage": { + "shape": "Sg" + } + } + } + }, + "DescribeIdentityUsage": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityUsage": { + "type": "structure", + "members": { + "IdentityId": {}, + "IdentityPoolId": {}, + "LastModifiedDate": { + "type": "timestamp" + }, + "DatasetCount": { + "type": "integer" + }, + "DataStorage": { + "type": "long" + } + } + } + } + } + }, + "GetBulkPublishDetails": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/getBulkPublishDetails", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "BulkPublishStartTime": { + "type": "timestamp" + }, + "BulkPublishCompleteTime": { + "type": "timestamp" + }, + "BulkPublishStatus": {}, + "FailureMessage": {} + } + } + }, + "GetCognitoEvents": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}/events", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Events": { + "shape": "Sq" + } + } + } + }, + "GetIdentityPoolConfiguration": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "PushSync": { + "shape": "Sv" + }, + "CognitoStreams": { + "shape": "Sz" + } + } + } + }, + "ListDatasets": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityId", + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "NextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "MaxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Datasets": { + "type": "list", + "member": { + "shape": "S8" + } + }, + "Count": { + "type": "integer" + }, + "NextToken": {} + } + } + }, + "ListIdentityPoolUsage": { + "http": { + "method": "GET", + "requestUri": "/identitypools", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "NextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "MaxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolUsages": { + "type": "list", + "member": { + "shape": "Sg" + } + }, + "MaxResults": { + "type": "integer" + }, + "Count": { + "type": "integer" + }, + "NextToken": {} + } + } + }, + "ListRecords": { + "http": { + "method": "GET", + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/records", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "DatasetName" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "DatasetName": { + "location": "uri", + "locationName": "DatasetName" + }, + "LastSyncCount": { + "location": "querystring", + "locationName": "lastSyncCount", + "type": "long" + }, + "NextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "MaxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "SyncSessionToken": { + "location": "querystring", + "locationName": "syncSessionToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Records": { + "shape": "S1c" + }, + "NextToken": {}, + "Count": { + "type": "integer" + }, + "DatasetSyncCount": { + "type": "long" + }, + "LastModifiedBy": {}, + "MergedDatasetNames": { + "type": "list", + "member": {} + }, + "DatasetExists": { + "type": "boolean" + }, + "DatasetDeletedAfterRequestedSyncCount": { + "type": "boolean" + }, + "SyncSessionToken": {} + } + } + }, + "RegisterDevice": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/identity/{IdentityId}/device", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "Platform", + "Token" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "Platform": {}, + "Token": {} + } + }, + "output": { + "type": "structure", + "members": { + "DeviceId": {} + } + } + }, + "SetCognitoEvents": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/events", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "Events" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "Events": { + "shape": "Sq" + } + } + } + }, + "SetIdentityPoolConfiguration": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "PushSync": { + "shape": "Sv" + }, + "CognitoStreams": { + "shape": "Sz" + } + } + }, + "output": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "PushSync": { + "shape": "Sv" + }, + "CognitoStreams": { + "shape": "Sz" + } + } + } + }, + "SubscribeToDataset": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "DatasetName", + "DeviceId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "DatasetName": { + "location": "uri", + "locationName": "DatasetName" + }, + "DeviceId": { + "location": "uri", + "locationName": "DeviceId" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UnsubscribeFromDataset": { + "http": { + "method": "DELETE", + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "DatasetName", + "DeviceId" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "DatasetName": { + "location": "uri", + "locationName": "DatasetName" + }, + "DeviceId": { + "location": "uri", + "locationName": "DeviceId" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UpdateRecords": { + "http": { + "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "IdentityPoolId", + "IdentityId", + "DatasetName", + "SyncSessionToken" + ], + "members": { + "IdentityPoolId": { + "location": "uri", + "locationName": "IdentityPoolId" + }, + "IdentityId": { + "location": "uri", + "locationName": "IdentityId" + }, + "DatasetName": { + "location": "uri", + "locationName": "DatasetName" + }, + "DeviceId": {}, + "RecordPatches": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Op", + "Key", + "SyncCount" + ], + "members": { + "Op": {}, + "Key": {}, + "Value": {}, + "SyncCount": { + "type": "long" + }, + "DeviceLastModifiedDate": { + "type": "timestamp" + } + } + } + }, + "SyncSessionToken": {}, + "ClientContext": { + "location": "header", + "locationName": "x-amz-Client-Context" + } + } + }, + "output": { + "type": "structure", + "members": { + "Records": { + "shape": "S1c" + } + } + } + } + }, + "shapes": { + "S8": { + "type": "structure", + "members": { + "IdentityId": {}, + "DatasetName": {}, + "CreationDate": { + "type": "timestamp" + }, + "LastModifiedDate": { + "type": "timestamp" + }, + "LastModifiedBy": {}, + "DataStorage": { + "type": "long" + }, + "NumRecords": { + "type": "long" + } + } + }, + "Sg": { + "type": "structure", + "members": { + "IdentityPoolId": {}, + "SyncSessionsCount": { + "type": "long" + }, + "DataStorage": { + "type": "long" + }, + "LastModifiedDate": { + "type": "timestamp" + } + } + }, + "Sq": { + "type": "map", + "key": {}, + "value": {} + }, + "Sv": { + "type": "structure", + "members": { + "ApplicationArns": { + "type": "list", + "member": {} + }, + "RoleArn": {} + } + }, + "Sz": { + "type": "structure", + "members": { + "StreamName": {}, + "RoleArn": {}, + "StreamingStatus": {} + } + }, + "S1c": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {}, + "SyncCount": { + "type": "long" + }, + "LastModifiedDate": { + "type": "timestamp" + }, + "LastModifiedBy": {}, + "DeviceLastModifiedDate": { + "type": "timestamp" + } + } + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/config-2014-11-12.min.json b/node_modules/aws-sdk/apis/config-2014-11-12.min.json new file mode 100644 index 0000000..6e8b40e --- /dev/null +++ b/node_modules/aws-sdk/apis/config-2014-11-12.min.json @@ -0,0 +1,857 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-12", + "endpointPrefix": "config", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Config Service", + "serviceFullName": "AWS Config", + "signatureVersion": "v4", + "targetPrefix": "StarlingDoveService" + }, + "operations": { + "DeleteConfigRule": { + "input": { + "type": "structure", + "required": [ + "ConfigRuleName" + ], + "members": { + "ConfigRuleName": {} + } + } + }, + "DeleteConfigurationRecorder": { + "input": { + "type": "structure", + "required": [ + "ConfigurationRecorderName" + ], + "members": { + "ConfigurationRecorderName": {} + } + } + }, + "DeleteDeliveryChannel": { + "input": { + "type": "structure", + "required": [ + "DeliveryChannelName" + ], + "members": { + "DeliveryChannelName": {} + } + } + }, + "DeleteEvaluationResults": { + "input": { + "type": "structure", + "required": [ + "ConfigRuleName" + ], + "members": { + "ConfigRuleName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeliverConfigSnapshot": { + "input": { + "type": "structure", + "required": [ + "deliveryChannelName" + ], + "members": { + "deliveryChannelName": {} + } + }, + "output": { + "type": "structure", + "members": { + "configSnapshotId": {} + } + } + }, + "DescribeComplianceByConfigRule": { + "input": { + "type": "structure", + "members": { + "ConfigRuleNames": { + "shape": "Sd" + }, + "ComplianceTypes": { + "shape": "Se" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ComplianceByConfigRules": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ConfigRuleName": {}, + "Compliance": { + "shape": "Sj" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeComplianceByResource": { + "input": { + "type": "structure", + "members": { + "ResourceType": {}, + "ResourceId": {}, + "ComplianceTypes": { + "shape": "Se" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ComplianceByResources": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceType": {}, + "ResourceId": {}, + "Compliance": { + "shape": "Sj" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeConfigRuleEvaluationStatus": { + "input": { + "type": "structure", + "members": { + "ConfigRuleNames": { + "shape": "Sd" + } + } + }, + "output": { + "type": "structure", + "members": { + "ConfigRulesEvaluationStatus": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ConfigRuleName": {}, + "ConfigRuleArn": {}, + "ConfigRuleId": {}, + "LastSuccessfulInvocationTime": { + "type": "timestamp" + }, + "LastFailedInvocationTime": { + "type": "timestamp" + }, + "LastSuccessfulEvaluationTime": { + "type": "timestamp" + }, + "LastFailedEvaluationTime": { + "type": "timestamp" + }, + "FirstActivatedTime": { + "type": "timestamp" + }, + "LastErrorCode": {}, + "LastErrorMessage": {}, + "FirstEvaluationStarted": { + "type": "boolean" + } + } + } + } + } + } + }, + "DescribeConfigRules": { + "input": { + "type": "structure", + "members": { + "ConfigRuleNames": { + "shape": "Sd" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ConfigRules": { + "type": "list", + "member": { + "shape": "S12" + } + }, + "NextToken": {} + } + } + }, + "DescribeConfigurationRecorderStatus": { + "input": { + "type": "structure", + "members": { + "ConfigurationRecorderNames": { + "shape": "S1g" + } + } + }, + "output": { + "type": "structure", + "members": { + "ConfigurationRecordersStatus": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "lastStartTime": { + "type": "timestamp" + }, + "lastStopTime": { + "type": "timestamp" + }, + "recording": { + "type": "boolean" + }, + "lastStatus": {}, + "lastErrorCode": {}, + "lastErrorMessage": {}, + "lastStatusChangeTime": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeConfigurationRecorders": { + "input": { + "type": "structure", + "members": { + "ConfigurationRecorderNames": { + "shape": "S1g" + } + } + }, + "output": { + "type": "structure", + "members": { + "ConfigurationRecorders": { + "type": "list", + "member": { + "shape": "S1o" + } + } + } + } + }, + "DescribeDeliveryChannelStatus": { + "input": { + "type": "structure", + "members": { + "DeliveryChannelNames": { + "shape": "S1v" + } + } + }, + "output": { + "type": "structure", + "members": { + "DeliveryChannelsStatus": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "configSnapshotDeliveryInfo": { + "shape": "S1z" + }, + "configHistoryDeliveryInfo": { + "shape": "S1z" + }, + "configStreamDeliveryInfo": { + "type": "structure", + "members": { + "lastStatus": {}, + "lastErrorCode": {}, + "lastErrorMessage": {}, + "lastStatusChangeTime": { + "type": "timestamp" + } + } + } + } + } + } + } + } + }, + "DescribeDeliveryChannels": { + "input": { + "type": "structure", + "members": { + "DeliveryChannelNames": { + "shape": "S1v" + } + } + }, + "output": { + "type": "structure", + "members": { + "DeliveryChannels": { + "type": "list", + "member": { + "shape": "S25" + } + } + } + } + }, + "GetComplianceDetailsByConfigRule": { + "input": { + "type": "structure", + "required": [ + "ConfigRuleName" + ], + "members": { + "ConfigRuleName": {}, + "ComplianceTypes": { + "shape": "Se" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationResults": { + "shape": "S29" + }, + "NextToken": {} + } + } + }, + "GetComplianceDetailsByResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": {}, + "ResourceId": {}, + "ComplianceTypes": { + "shape": "Se" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationResults": { + "shape": "S29" + }, + "NextToken": {} + } + } + }, + "GetComplianceSummaryByConfigRule": { + "output": { + "type": "structure", + "members": { + "ComplianceSummary": { + "shape": "S2g" + } + } + } + }, + "GetComplianceSummaryByResourceType": { + "input": { + "type": "structure", + "members": { + "ResourceTypes": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "ComplianceSummariesByResourceType": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceType": {}, + "ComplianceSummary": { + "shape": "S2g" + } + } + } + } + } + } + }, + "GetResourceConfigHistory": { + "input": { + "type": "structure", + "required": [ + "resourceType", + "resourceId" + ], + "members": { + "resourceType": {}, + "resourceId": {}, + "laterTime": { + "type": "timestamp" + }, + "earlierTime": { + "type": "timestamp" + }, + "chronologicalOrder": {}, + "limit": { + "type": "integer" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "configurationItems": { + "type": "list", + "member": { + "type": "structure", + "members": { + "version": {}, + "accountId": {}, + "configurationItemCaptureTime": { + "type": "timestamp" + }, + "configurationItemStatus": {}, + "configurationStateId": {}, + "configurationItemMD5Hash": {}, + "arn": {}, + "resourceType": {}, + "resourceId": {}, + "resourceName": {}, + "awsRegion": {}, + "availabilityZone": {}, + "resourceCreationTime": { + "type": "timestamp" + }, + "tags": { + "type": "map", + "key": {}, + "value": {} + }, + "relatedEvents": { + "type": "list", + "member": {} + }, + "relationships": { + "type": "list", + "member": { + "type": "structure", + "members": { + "resourceType": {}, + "resourceId": {}, + "resourceName": {}, + "relationshipName": {} + } + } + }, + "configuration": {}, + "supplementaryConfiguration": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "nextToken": {} + } + } + }, + "ListDiscoveredResources": { + "input": { + "type": "structure", + "required": [ + "resourceType" + ], + "members": { + "resourceType": {}, + "resourceIds": { + "type": "list", + "member": {} + }, + "resourceName": {}, + "limit": { + "type": "integer" + }, + "includeDeletedResources": { + "type": "boolean" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "resourceIdentifiers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "resourceType": {}, + "resourceId": {}, + "resourceName": {}, + "resourceDeletionTime": { + "type": "timestamp" + } + } + } + }, + "nextToken": {} + } + } + }, + "PutConfigRule": { + "input": { + "type": "structure", + "required": [ + "ConfigRule" + ], + "members": { + "ConfigRule": { + "shape": "S12" + } + } + } + }, + "PutConfigurationRecorder": { + "input": { + "type": "structure", + "required": [ + "ConfigurationRecorder" + ], + "members": { + "ConfigurationRecorder": { + "shape": "S1o" + } + } + } + }, + "PutDeliveryChannel": { + "input": { + "type": "structure", + "required": [ + "DeliveryChannel" + ], + "members": { + "DeliveryChannel": { + "shape": "S25" + } + } + } + }, + "PutEvaluations": { + "input": { + "type": "structure", + "required": [ + "ResultToken" + ], + "members": { + "Evaluations": { + "shape": "S3r" + }, + "ResultToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FailedEvaluations": { + "shape": "S3r" + } + } + } + }, + "StartConfigRulesEvaluation": { + "input": { + "type": "structure", + "members": { + "ConfigRuleNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "StartConfigurationRecorder": { + "input": { + "type": "structure", + "required": [ + "ConfigurationRecorderName" + ], + "members": { + "ConfigurationRecorderName": {} + } + } + }, + "StopConfigurationRecorder": { + "input": { + "type": "structure", + "required": [ + "ConfigurationRecorderName" + ], + "members": { + "ConfigurationRecorderName": {} + } + } + } + }, + "shapes": { + "Sd": { + "type": "list", + "member": {} + }, + "Se": { + "type": "list", + "member": {} + }, + "Sj": { + "type": "structure", + "members": { + "ComplianceType": {}, + "ComplianceContributorCount": { + "shape": "Sk" + } + } + }, + "Sk": { + "type": "structure", + "members": { + "CappedCount": { + "type": "integer" + }, + "CapExceeded": { + "type": "boolean" + } + } + }, + "S12": { + "type": "structure", + "required": [ + "Source" + ], + "members": { + "ConfigRuleName": {}, + "ConfigRuleArn": {}, + "ConfigRuleId": {}, + "Description": {}, + "Scope": { + "type": "structure", + "members": { + "ComplianceResourceTypes": { + "type": "list", + "member": {} + }, + "TagKey": {}, + "TagValue": {}, + "ComplianceResourceId": {} + } + }, + "Source": { + "type": "structure", + "members": { + "Owner": {}, + "SourceIdentifier": {}, + "SourceDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventSource": {}, + "MessageType": {}, + "MaximumExecutionFrequency": {} + } + } + } + } + }, + "InputParameters": {}, + "MaximumExecutionFrequency": {}, + "ConfigRuleState": {} + } + }, + "S1g": { + "type": "list", + "member": {} + }, + "S1o": { + "type": "structure", + "members": { + "name": {}, + "roleARN": {}, + "recordingGroup": { + "type": "structure", + "members": { + "allSupported": { + "type": "boolean" + }, + "includeGlobalResourceTypes": { + "type": "boolean" + }, + "resourceTypes": { + "type": "list", + "member": {} + } + } + } + } + }, + "S1v": { + "type": "list", + "member": {} + }, + "S1z": { + "type": "structure", + "members": { + "lastStatus": {}, + "lastErrorCode": {}, + "lastErrorMessage": {}, + "lastAttemptTime": { + "type": "timestamp" + }, + "lastSuccessfulTime": { + "type": "timestamp" + }, + "nextDeliveryTime": { + "type": "timestamp" + } + } + }, + "S25": { + "type": "structure", + "members": { + "name": {}, + "s3BucketName": {}, + "s3KeyPrefix": {}, + "snsTopicARN": {}, + "configSnapshotDeliveryProperties": { + "type": "structure", + "members": { + "deliveryFrequency": {} + } + } + } + }, + "S29": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EvaluationResultIdentifier": { + "type": "structure", + "members": { + "EvaluationResultQualifier": { + "type": "structure", + "members": { + "ConfigRuleName": {}, + "ResourceType": {}, + "ResourceId": {} + } + }, + "OrderingTimestamp": { + "type": "timestamp" + } + } + }, + "ComplianceType": {}, + "ResultRecordedTime": { + "type": "timestamp" + }, + "ConfigRuleInvokedTime": { + "type": "timestamp" + }, + "Annotation": {}, + "ResultToken": {} + } + } + }, + "S2g": { + "type": "structure", + "members": { + "CompliantResourceCount": { + "shape": "Sk" + }, + "NonCompliantResourceCount": { + "shape": "Sk" + }, + "ComplianceSummaryTimestamp": { + "type": "timestamp" + } + } + }, + "S3r": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ComplianceResourceType", + "ComplianceResourceId", + "ComplianceType", + "OrderingTimestamp" + ], + "members": { + "ComplianceResourceType": {}, + "ComplianceResourceId": {}, + "ComplianceType": {}, + "Annotation": {}, + "OrderingTimestamp": { + "type": "timestamp" + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json b/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json new file mode 100644 index 0000000..45c365e --- /dev/null +++ b/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json @@ -0,0 +1,10 @@ +{ + "pagination": { + "GetResourceConfigHistory": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "configurationItems" + } + } +} diff --git a/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json b/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json new file mode 100644 index 0000000..88f505f --- /dev/null +++ b/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json @@ -0,0 +1,666 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-10-29", + "endpointPrefix": "datapipeline", + "jsonVersion": "1.1", + "serviceFullName": "AWS Data Pipeline", + "signatureVersion": "v4", + "targetPrefix": "DataPipeline", + "protocol": "json" + }, + "operations": { + "ActivatePipeline": { + "input": { + "type": "structure", + "required": [ + "pipelineId" + ], + "members": { + "pipelineId": {}, + "parameterValues": { + "shape": "S3" + }, + "startTimestamp": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AddTags": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "tags" + ], + "members": { + "pipelineId": {}, + "tags": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreatePipeline": { + "input": { + "type": "structure", + "required": [ + "name", + "uniqueId" + ], + "members": { + "name": {}, + "uniqueId": {}, + "description": {}, + "tags": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "required": [ + "pipelineId" + ], + "members": { + "pipelineId": {} + } + } + }, + "DeactivatePipeline": { + "input": { + "type": "structure", + "required": [ + "pipelineId" + ], + "members": { + "pipelineId": {}, + "cancelActive": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeletePipeline": { + "input": { + "type": "structure", + "required": [ + "pipelineId" + ], + "members": { + "pipelineId": {} + } + } + }, + "DescribeObjects": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "objectIds" + ], + "members": { + "pipelineId": {}, + "objectIds": { + "shape": "Sn" + }, + "evaluateExpressions": { + "type": "boolean" + }, + "marker": {} + } + }, + "output": { + "type": "structure", + "required": [ + "pipelineObjects" + ], + "members": { + "pipelineObjects": { + "shape": "Sq" + }, + "marker": {}, + "hasMoreResults": { + "type": "boolean" + } + } + } + }, + "DescribePipelines": { + "input": { + "type": "structure", + "required": [ + "pipelineIds" + ], + "members": { + "pipelineIds": { + "shape": "Sn" + } + } + }, + "output": { + "type": "structure", + "required": [ + "pipelineDescriptionList" + ], + "members": { + "pipelineDescriptionList": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "pipelineId", + "name", + "fields" + ], + "members": { + "pipelineId": {}, + "name": {}, + "fields": { + "shape": "Ss" + }, + "description": {}, + "tags": { + "shape": "Sa" + } + } + } + } + } + } + }, + "EvaluateExpression": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "objectId", + "expression" + ], + "members": { + "pipelineId": {}, + "objectId": {}, + "expression": {} + } + }, + "output": { + "type": "structure", + "required": [ + "evaluatedExpression" + ], + "members": { + "evaluatedExpression": {} + } + } + }, + "GetPipelineDefinition": { + "input": { + "type": "structure", + "required": [ + "pipelineId" + ], + "members": { + "pipelineId": {}, + "version": {} + } + }, + "output": { + "type": "structure", + "members": { + "pipelineObjects": { + "shape": "Sq" + }, + "parameterObjects": { + "shape": "S13" + }, + "parameterValues": { + "shape": "S3" + } + } + } + }, + "ListPipelines": { + "input": { + "type": "structure", + "members": { + "marker": {} + } + }, + "output": { + "type": "structure", + "required": [ + "pipelineIdList" + ], + "members": { + "pipelineIdList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "name": {} + } + } + }, + "marker": {}, + "hasMoreResults": { + "type": "boolean" + } + } + } + }, + "PollForTask": { + "input": { + "type": "structure", + "required": [ + "workerGroup" + ], + "members": { + "workerGroup": {}, + "hostname": {}, + "instanceIdentity": { + "type": "structure", + "members": { + "document": {}, + "signature": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "taskObject": { + "type": "structure", + "members": { + "taskId": {}, + "pipelineId": {}, + "attemptId": {}, + "objects": { + "type": "map", + "key": {}, + "value": { + "shape": "Sr" + } + } + } + } + } + } + }, + "PutPipelineDefinition": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "pipelineObjects" + ], + "members": { + "pipelineId": {}, + "pipelineObjects": { + "shape": "Sq" + }, + "parameterObjects": { + "shape": "S13" + }, + "parameterValues": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "required": [ + "errored" + ], + "members": { + "validationErrors": { + "shape": "S1l" + }, + "validationWarnings": { + "shape": "S1p" + }, + "errored": { + "type": "boolean" + } + } + } + }, + "QueryObjects": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "sphere" + ], + "members": { + "pipelineId": {}, + "query": { + "type": "structure", + "members": { + "selectors": { + "type": "list", + "member": { + "type": "structure", + "members": { + "fieldName": {}, + "operator": { + "type": "structure", + "members": { + "type": {}, + "values": { + "shape": "S1x" + } + } + } + } + } + } + } + }, + "sphere": {}, + "marker": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "ids": { + "shape": "Sn" + }, + "marker": {}, + "hasMoreResults": { + "type": "boolean" + } + } + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "tagKeys" + ], + "members": { + "pipelineId": {}, + "tagKeys": { + "shape": "S1x" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ReportTaskProgress": { + "input": { + "type": "structure", + "required": [ + "taskId" + ], + "members": { + "taskId": {}, + "fields": { + "shape": "Ss" + } + } + }, + "output": { + "type": "structure", + "required": [ + "canceled" + ], + "members": { + "canceled": { + "type": "boolean" + } + } + } + }, + "ReportTaskRunnerHeartbeat": { + "input": { + "type": "structure", + "required": [ + "taskrunnerId" + ], + "members": { + "taskrunnerId": {}, + "workerGroup": {}, + "hostname": {} + } + }, + "output": { + "type": "structure", + "required": [ + "terminate" + ], + "members": { + "terminate": { + "type": "boolean" + } + } + } + }, + "SetStatus": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "objectIds", + "status" + ], + "members": { + "pipelineId": {}, + "objectIds": { + "shape": "Sn" + }, + "status": {} + } + } + }, + "SetTaskStatus": { + "input": { + "type": "structure", + "required": [ + "taskId", + "taskStatus" + ], + "members": { + "taskId": {}, + "taskStatus": {}, + "errorId": {}, + "errorMessage": {}, + "errorStackTrace": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ValidatePipelineDefinition": { + "input": { + "type": "structure", + "required": [ + "pipelineId", + "pipelineObjects" + ], + "members": { + "pipelineId": {}, + "pipelineObjects": { + "shape": "Sq" + }, + "parameterObjects": { + "shape": "S13" + }, + "parameterValues": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "required": [ + "errored" + ], + "members": { + "validationErrors": { + "shape": "S1l" + }, + "validationWarnings": { + "shape": "S1p" + }, + "errored": { + "type": "boolean" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "id", + "stringValue" + ], + "members": { + "id": {}, + "stringValue": {} + } + } + }, + "Sa": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "Sn": { + "type": "list", + "member": {} + }, + "Sq": { + "type": "list", + "member": { + "shape": "Sr" + } + }, + "Sr": { + "type": "structure", + "required": [ + "id", + "name", + "fields" + ], + "members": { + "id": {}, + "name": {}, + "fields": { + "shape": "Ss" + } + } + }, + "Ss": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "stringValue": {}, + "refValue": {} + } + } + }, + "S13": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "id", + "attributes" + ], + "members": { + "id": {}, + "attributes": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key", + "stringValue" + ], + "members": { + "key": {}, + "stringValue": {} + } + } + } + } + } + }, + "S1l": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "errors": { + "shape": "S1n" + } + } + } + }, + "S1n": { + "type": "list", + "member": {} + }, + "S1p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "warnings": { + "shape": "S1n" + } + } + } + }, + "S1x": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json b/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json new file mode 100644 index 0000000..db94193 --- /dev/null +++ b/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json @@ -0,0 +1,26 @@ +{ + "pagination": { + "ListPipelines": { + "input_token": "marker", + "output_token": "marker", + "more_results": "hasMoreResults", + "result_key": "pipelineIdList" + }, + "DescribeObjects": { + "input_token": "marker", + "output_token": "marker", + "more_results": "hasMoreResults", + "result_key": "pipelineObjects" + }, + "DescribePipelines": { + "result_key": "pipelineDescriptionList" + }, + "QueryObjects": { + "input_token": "marker", + "output_token": "marker", + "more_results": "hasMoreResults", + "limit_key": "limit", + "result_key": "ids" + } + } +} diff --git a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json new file mode 100644 index 0000000..3b9063f --- /dev/null +++ b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json @@ -0,0 +1,1242 @@ +{ + "version": "1.0", + "examples": { + "CreateDevicePool": [ + { + "input": { + "name": "MyDevicePool", + "description": "My Android devices", + "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "rules": [ + + ] + }, + "output": { + "devicePool": { + } + }, + "comments": { + "input": { + "name": "A device pool contains related devices, such as devices that run only on Android or that run only on iOS.", + "projectArn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example creates a new device pool named MyDevicePool inside an existing project.", + "id": "createdevicepool-example-1470862210860", + "title": "To create a new device pool" + } + ], + "CreateProject": [ + { + "input": { + "name": "MyProject" + }, + "output": { + "project": { + "name": "MyProject", + "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", + "created": "1472660939.152" + } + }, + "comments": { + "input": { + "name": "A project in Device Farm is a workspace that contains test runs. A run is a test of a single app against one or more devices." + }, + "output": { + } + }, + "description": "The following example creates a new project named MyProject.", + "id": "createproject-example-1470862210860", + "title": "To create a new project" + } + ], + "CreateRemoteAccessSession": [ + { + "input": { + "name": "MySession", + "configuration": { + "billingMethod": "METERED" + }, + "deviceArn": "arn:aws:devicefarm:us-west-2::device:123EXAMPLE", + "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "output": { + "remoteAccessSession": { + } + }, + "comments": { + "input": { + "deviceArn": "You can get the device ARN by using the list-devices CLI command.", + "projectArn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example creates a remote access session named MySession.", + "id": "to-create-a-remote-access-session-1470970668274", + "title": "To create a remote access session" + } + ], + "CreateUpload": [ + { + "input": { + "name": "MyAppiumPythonUpload", + "type": "APPIUM_PYTHON_TEST_PACKAGE", + "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "output": { + "upload": { + "name": "MyAppiumPythonUpload", + "type": "APPIUM_PYTHON_TEST_PACKAGE", + "arn": "arn:aws:devicefarm:us-west-2:183774035805:upload:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/b5340a65-3da7-4da6-a26e-12345EXAMPLE", + "created": "1472661404.186", + "status": "INITIALIZED", + "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A183774035805%3Aproject%3A5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE/uploads/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A183774035805%3Aupload%3A5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/b5340a65-3da7-4da6-a26e-12345EXAMPLE/MyAppiumPythonUpload?AWSAccessKeyId=1234567891011EXAMPLE&Expires=1472747804&Signature=1234567891011EXAMPLE" + } + }, + "comments": { + "input": { + "projectArn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example creates a new Appium Python test package upload inside an existing project.", + "id": "createupload-example-1470864711775", + "title": "To create a new test package upload" + } + ], + "DeleteDevicePool": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2::devicepool:123-456-EXAMPLE-GUID" + }, + "output": { + }, + "comments": { + "input": { + "arn": "You can get the device pool ARN by using the list-device-pools CLI command." + }, + "output": { + } + }, + "description": "The following example deletes a specific device pool.", + "id": "deletedevicepool-example-1470866975494", + "title": "To delete a device pool" + } + ], + "DeleteProject": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "output": { + }, + "comments": { + "input": { + "arn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example deletes a specific project.", + "id": "deleteproject-example-1470867374212", + "title": "To delete a project" + } + ], + "DeleteRemoteAccessSession": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" + }, + "output": { + }, + "comments": { + "input": { + "arn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." + }, + "output": { + } + }, + "description": "The following example deletes a specific remote access session.", + "id": "to-delete-a-specific-remote-access-session-1470971431677", + "title": "To delete a specific remote access session" + } + ], + "DeleteRun": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" + }, + "output": { + }, + "comments": { + "input": { + "arn": "You can get the run ARN by using the list-runs CLI command." + }, + "output": { + } + }, + "description": "The following example deletes a specific test run.", + "id": "deleterun-example-1470867905129", + "title": "To delete a run" + } + ], + "DeleteUpload": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:EXAMPLE-GUID-123-456" + }, + "output": { + }, + "comments": { + "input": { + "arn": "You can get the upload ARN by using the list-uploads CLI command." + }, + "output": { + } + }, + "description": "The following example deletes a specific upload.", + "id": "deleteupload-example-1470868363942", + "title": "To delete a specific upload" + } + ], + "GetAccountSettings": [ + { + "input": { + }, + "output": { + "accountSettings": { + "awsAccountNumber": "123456789101", + "unmeteredDevices": { + "ANDROID": 1, + "IOS": 2 + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns information about your Device Farm account settings.", + "id": "to-get-information-about-account-settings-1472567568189", + "title": "To get information about account settings" + } + ], + "GetDevice": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2::device:123EXAMPLE" + }, + "output": { + "device": { + "name": "LG G2 (Sprint)", + "arn": "arn:aws:devicefarm:us-west-2::device:A0E6E6E1059E45918208DF75B2B7EF6C", + "cpu": { + "architecture": "armeabi-v7a", + "clock": 2265.6, + "frequency": "MHz" + }, + "formFactor": "PHONE", + "heapSize": 256000000, + "image": "75B2B7EF6C12345EXAMPLE", + "manufacturer": "LG", + "memory": 16000000000, + "model": "G2 (Sprint)", + "os": "4.2.2", + "platform": "ANDROID", + "resolution": { + "height": 1920, + "width": 1080 + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns information about a specific device.", + "id": "getdevice-example-1470870602173", + "title": "To get information about a device" + } + ], + "GetDevicePool": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "output": { + "devicePool": { + } + }, + "comments": { + "input": { + "arn": "You can obtain the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example returns information about a specific device pool, given a project ARN.", + "id": "getdevicepool-example-1470870873136", + "title": "To get information about a device pool" + } + ], + "GetDevicePoolCompatibility": [ + { + "input": { + "appArn": "arn:aws:devicefarm:us-west-2::app:123-456-EXAMPLE-GUID", + "devicePoolArn": "arn:aws:devicefarm:us-west-2::devicepool:123-456-EXAMPLE-GUID", + "testType": "APPIUM_PYTHON" + }, + "output": { + "compatibleDevices": [ + + ], + "incompatibleDevices": [ + + ] + }, + "comments": { + "input": { + "devicePoolArn": "You can get the device pool ARN by using the list-device-pools CLI command." + }, + "output": { + } + }, + "description": "The following example returns information about the compatibility of a specific device pool, given its ARN.", + "id": "getdevicepoolcompatibility-example-1470925003466", + "title": "To get information about the compatibility of a device pool" + } + ], + "GetJob": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2::job:123-456-EXAMPLE-GUID" + }, + "output": { + "job": { + } + }, + "comments": { + "input": { + "arn": "You can get the job ARN by using the list-jobs CLI command." + }, + "output": { + } + }, + "description": "The following example returns information about a specific job.", + "id": "getjob-example-1470928294268", + "title": "To get information about a job" + } + ], + "GetOfferingStatus": [ + { + "input": { + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" + }, + "output": { + "current": { + "D68B3C05-1BA6-4360-BC69-12345EXAMPLE": { + "offering": { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 1 + } + }, + "nextPeriod": { + "D68B3C05-1BA6-4360-BC69-12345EXAMPLE": { + "effectiveOn": "1472688000", + "offering": { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 1 + } + } + }, + "comments": { + "input": { + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about Device Farm offerings available to your account.", + "id": "to-get-status-information-about-device-offerings-1472568124402", + "title": "To get status information about device offerings" + } + ], + "GetProject": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" + }, + "output": { + "project": { + "name": "My Project", + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", + "created": "1472660939.152" + } + }, + "comments": { + "input": { + "arn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example gets information about a specific project.", + "id": "to-get-a-project-1470975038449", + "title": "To get information about a project" + } + ], + "GetRemoteAccessSession": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" + }, + "output": { + "remoteAccessSession": { + } + }, + "comments": { + "input": { + "arn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." + }, + "output": { + } + }, + "description": "The following example gets a specific remote access session.", + "id": "to-get-a-remote-access-session-1471014119414", + "title": "To get a remote access session" + } + ], + "GetRun": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE" + }, + "output": { + "run": { + "name": "My Test Run", + "type": "BUILTIN_EXPLORER", + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", + "billingMethod": "METERED", + "completedJobs": 0, + "counters": { + "errored": 0, + "failed": 0, + "passed": 0, + "skipped": 0, + "stopped": 0, + "total": 0, + "warned": 0 + }, + "created": "1472667509.852", + "deviceMinutes": { + "metered": 0.0, + "total": 0.0, + "unmetered": 0.0 + }, + "platform": "ANDROID", + "result": "PENDING", + "status": "RUNNING", + "totalJobs": 3 + } + }, + "comments": { + "input": { + "arn": "You can get the run ARN by using the list-runs CLI command." + }, + "output": { + } + }, + "description": "The following example gets information about a specific test run.", + "id": "to-get-a-test-run-1471015895657", + "title": "To get information about a test run" + } + ], + "GetSuite": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:suite:EXAMPLE-GUID-123-456" + }, + "output": { + "suite": { + } + }, + "comments": { + "input": { + "arn": "You can get the suite ARN by using the list-suites CLI command." + }, + "output": { + } + }, + "description": "The following example gets information about a specific test suite.", + "id": "to-get-information-about-a-test-suite-1471016525008", + "title": "To get information about a test suite" + } + ], + "GetTest": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:test:EXAMPLE-GUID-123-456" + }, + "output": { + "test": { + } + }, + "comments": { + "input": { + "arn": "You can get the test ARN by using the list-tests CLI command." + }, + "output": { + } + }, + "description": "The following example gets information about a specific test.", + "id": "to-get-information-about-a-specific-test-1471025744238", + "title": "To get information about a specific test" + } + ], + "GetUpload": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:EXAMPLE-GUID-123-456" + }, + "output": { + "upload": { + } + }, + "comments": { + "input": { + "arn": "You can get the test ARN by using the list-uploads CLI command." + }, + "output": { + } + }, + "description": "The following example gets information about a specific upload.", + "id": "to-get-information-about-a-specific-upload-1471025996221", + "title": "To get information about a specific upload" + } + ], + "InstallToRemoteAccessSession": [ + { + "input": { + "appArn": "arn:aws:devicefarm:us-west-2:123456789101:app:EXAMPLE-GUID-123-456", + "remoteAccessSessionArn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" + }, + "output": { + "appUpload": { + } + }, + "comments": { + "input": { + "remoteAccessSessionArn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." + }, + "output": { + } + }, + "description": "The following example installs a specific app to a device in a specific remote access session.", + "id": "to-install-to-a-remote-access-session-1471634453818", + "title": "To install to a remote access session" + } + ], + "ListArtifacts": [ + { + "input": { + "type": "SCREENSHOT", + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" + }, + "comments": { + "input": { + "arn": "Can also be used to list artifacts for a Job, Suite, or Test ARN." + }, + "output": { + } + }, + "description": "The following example lists screenshot artifacts for a specific run.", + "id": "to-list-artifacts-for-a-resource-1471635409527", + "title": "To list artifacts for a resource" + } + ], + "ListDevicePools": [ + { + "input": { + "type": "PRIVATE", + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "output": { + "devicePools": [ + { + "name": "Top Devices", + "arn": "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-12345EXAMPLE", + "description": "Top devices", + "rules": [ + { + "value": "[\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\"]", + "attribute": "ARN", + "operator": "IN" + } + ] + }, + { + "name": "My Android Device Pool", + "arn": "arn:aws:devicefarm:us-west-2:123456789101:devicepool:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/bf96e75a-28f6-4e61-b6a7-12345EXAMPLE", + "description": "Samsung Galaxy Android devices", + "rules": [ + { + "value": "[\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\"]", + "attribute": "ARN", + "operator": "IN" + } + ] + } + ] + }, + "comments": { + "input": { + "arn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example returns information about the private device pools in a specific project.", + "id": "to-get-information-about-device-pools-1471635745170", + "title": "To get information about device pools" + } + ], + "ListDevices": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "output": { + }, + "comments": { + "input": { + "arn": "You can get the project ARN by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example returns information about the available devices in a specific project.", + "id": "to-get-information-about-devices-1471641699344", + "title": "To get information about devices" + } + ], + "ListJobs": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" + }, + "comments": { + "input": { + "arn": "You can get the project ARN by using the list-jobs CLI command." + }, + "output": { + } + }, + "description": "The following example returns information about jobs in a specific project.", + "id": "to-get-information-about-jobs-1471642228071", + "title": "To get information about jobs" + } + ], + "ListOfferingTransactions": [ + { + "input": { + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" + }, + "output": { + "offeringTransactions": [ + { + "cost": { + "amount": 0, + "currencyCode": "USD" + }, + "createdOn": "1470021420", + "offeringStatus": { + "type": "RENEW", + "effectiveOn": "1472688000", + "offering": { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 0 + }, + "transactionId": "03728003-d1ea-4851-abd6-12345EXAMPLE" + }, + { + "cost": { + "amount": 250, + "currencyCode": "USD" + }, + "createdOn": "1470021420", + "offeringStatus": { + "type": "PURCHASE", + "effectiveOn": "1470021420", + "offering": { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 1 + }, + "transactionId": "56820b6e-06bd-473a-8ff8-12345EXAMPLE" + }, + { + "cost": { + "amount": 175, + "currencyCode": "USD" + }, + "createdOn": "1465538520", + "offeringStatus": { + "type": "PURCHASE", + "effectiveOn": "1465538520", + "offering": { + "type": "RECURRING", + "description": "Android Unmetered Device Slot", + "id": "8980F81C-00D7-469D-8EC6-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 1 + }, + "transactionId": "953ae2c6-d760-4a04-9597-12345EXAMPLE" + }, + { + "cost": { + "amount": 8.07, + "currencyCode": "USD" + }, + "createdOn": "1459344300", + "offeringStatus": { + "type": "PURCHASE", + "effectiveOn": "1459344300", + "offering": { + "type": "RECURRING", + "description": "iOS Unmetered Device Slot", + "id": "A53D4D73-A6F6-4B82-A0B0-12345EXAMPLE", + "platform": "IOS" + }, + "quantity": 1 + }, + "transactionId": "2baf9021-ae3e-47f5-ab52-12345EXAMPLE" + } + ] + }, + "comments": { + "input": { + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about Device Farm offering transactions.", + "id": "to-get-information-about-device-offering-transactions-1472561712315", + "title": "To get information about device offering transactions" + } + ], + "ListOfferings": [ + { + "input": { + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" + }, + "output": { + "offerings": [ + { + "type": "RECURRING", + "description": "iOS Unmetered Device Slot", + "id": "A53D4D73-A6F6-4B82-A0B0-12345EXAMPLE", + "platform": "IOS", + "recurringCharges": [ + { + "cost": { + "amount": 250, + "currencyCode": "USD" + }, + "frequency": "MONTHLY" + } + ] + }, + { + "type": "RECURRING", + "description": "Android Unmetered Device Slot", + "id": "8980F81C-00D7-469D-8EC6-12345EXAMPLE", + "platform": "ANDROID", + "recurringCharges": [ + { + "cost": { + "amount": 250, + "currencyCode": "USD" + }, + "frequency": "MONTHLY" + } + ] + }, + { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID", + "recurringCharges": [ + { + "cost": { + "amount": 250, + "currencyCode": "USD" + }, + "frequency": "MONTHLY" + } + ] + }, + { + "type": "RECURRING", + "description": "iOS Remote Access Unmetered Device Slot", + "id": "552B4DAD-A6C9-45C4-94FB-12345EXAMPLE", + "platform": "IOS", + "recurringCharges": [ + { + "cost": { + "amount": 250, + "currencyCode": "USD" + }, + "frequency": "MONTHLY" + } + ] + } + ] + }, + "comments": { + "input": { + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about available device offerings.", + "id": "to-get-information-about-device-offerings-1472562810999", + "title": "To get information about device offerings" + } + ], + "ListProjects": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:7ad300ed-8183-41a7-bf94-12345EXAMPLE", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "projects": [ + { + "name": "My Test Project", + "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:7ad300ed-8183-41a7-bf94-12345EXAMPLE", + "created": "1453163262.105" + }, + { + "name": "Hello World", + "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:d6b087d9-56db-4e44-b9ec-12345EXAMPLE", + "created": "1470350112.439" + } + ] + }, + "comments": { + "input": { + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about the specified project in Device Farm.", + "id": "to-get-information-about-a-device-farm-project-1472564014388", + "title": "To get information about a Device Farm project" + } + ], + "ListRemoteAccessSessions": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" + }, + "output": { + "remoteAccessSessions": [ + + ] + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the session by using the list-sessions CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about a specific Device Farm remote access session.", + "id": "to-get-information-about-a-remote-access-session-1472581144803", + "title": "To get information about a remote access session" + } + ], + "ListRuns": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "runs": [ + { + "name": "My Test Run", + "type": "BUILTIN_EXPLORER", + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", + "billingMethod": "METERED", + "completedJobs": 0, + "counters": { + "errored": 0, + "failed": 0, + "passed": 0, + "skipped": 0, + "stopped": 0, + "total": 0, + "warned": 0 + }, + "created": "1472667509.852", + "deviceMinutes": { + "metered": 0.0, + "total": 0.0, + "unmetered": 0.0 + }, + "platform": "ANDROID", + "result": "PENDING", + "status": "RUNNING", + "totalJobs": 3 + } + ] + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the run by using the list-runs CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about a specific test run.", + "id": "to-get-information-about-test-runs-1472582711069", + "title": "To get information about a test run" + } + ], + "ListSamples": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "samples": [ + + ] + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about samples, given a specific Device Farm project.", + "id": "to-get-information-about-samples-1472582847534", + "title": "To get information about samples" + } + ], + "ListSuites": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "suites": [ + + ] + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about suites, given a specific Device Farm project.", + "id": "to-get-information-about-suites-1472583038218", + "title": "To get information about suites" + } + ], + "ListTests": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "tests": [ + + ] + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about tests, given a specific Device Farm project.", + "id": "to-get-information-about-tests-1472617372212", + "title": "To get information about tests" + } + ], + "ListUniqueProblems": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "uniqueProblems": { + } + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about unique problems, given a specific Device Farm project.", + "id": "to-get-information-about-unique-problems-1472617781008", + "title": "To get information about unique problems" + } + ], + "ListUploads": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" + }, + "output": { + "uploads": [ + + ] + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", + "nextToken": "A dynamically generated value, used for paginating results." + }, + "output": { + } + }, + "description": "The following example returns information about uploads, given a specific Device Farm project.", + "id": "to-get-information-about-uploads-1472617943090", + "title": "To get information about uploads" + } + ], + "PurchaseOffering": [ + { + "input": { + "offeringId": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "quantity": 1 + }, + "output": { + "offeringTransaction": { + "cost": { + "amount": 8.07, + "currencyCode": "USD" + }, + "createdOn": "1472648340", + "offeringStatus": { + "type": "PURCHASE", + "effectiveOn": "1472648340", + "offering": { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 1 + }, + "transactionId": "d30614ed-1b03-404c-9893-12345EXAMPLE" + } + }, + "comments": { + "input": { + "offeringId": "You can get the offering ID by using the list-offerings CLI command." + }, + "output": { + } + }, + "description": "The following example purchases a specific device slot offering.", + "id": "to-purchase-a-device-slot-offering-1472648146343", + "title": "To purchase a device slot offering" + } + ], + "RenewOffering": [ + { + "input": { + "offeringId": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "quantity": 1 + }, + "output": { + "offeringTransaction": { + "cost": { + "amount": 250, + "currencyCode": "USD" + }, + "createdOn": "1472648880", + "offeringStatus": { + "type": "RENEW", + "effectiveOn": "1472688000", + "offering": { + "type": "RECURRING", + "description": "Android Remote Access Unmetered Device Slot", + "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", + "platform": "ANDROID" + }, + "quantity": 1 + }, + "transactionId": "e90f1405-8c35-4561-be43-12345EXAMPLE" + } + }, + "comments": { + "input": { + "offeringId": "You can get the offering ID by using the list-offerings CLI command." + }, + "output": { + } + }, + "description": "The following example renews a specific device slot offering.", + "id": "to-renew-a-device-slot-offering-1472648899785", + "title": "To renew a device slot offering" + } + ], + "ScheduleRun": [ + { + "input": { + "name": "MyRun", + "devicePoolArn": "arn:aws:devicefarm:us-west-2:123456789101:pool:EXAMPLE-GUID-123-456", + "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", + "test": { + "type": "APPIUM_JAVA_JUNIT", + "testPackageArn": "arn:aws:devicefarm:us-west-2:123456789101:test:EXAMPLE-GUID-123-456" + } + }, + "output": { + "run": { + } + }, + "comments": { + "input": { + "devicePoolArn": "You can get the Amazon Resource Name (ARN) of the device pool by using the list-pools CLI command.", + "projectArn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", + "testPackageArn": "You can get the Amazon Resource Name (ARN) of the test package by using the list-tests CLI command." + }, + "output": { + } + }, + "description": "The following example schedules a test run named MyRun.", + "id": "to-schedule-a-test-run-1472652429636", + "title": "To schedule a test run" + } + ], + "StopRun": [ + { + "input": { + "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" + }, + "output": { + "run": { + } + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the test run by using the list-runs CLI command." + }, + "output": { + } + }, + "description": "The following example stops a specific test run.", + "id": "to-stop-a-test-run-1472653770340", + "title": "To stop a test run" + } + ], + "UpdateDevicePool": [ + { + "input": { + "name": "NewName", + "arn": "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-12345EXAMPLE", + "description": "NewDescription", + "rules": [ + { + "value": "True", + "attribute": "REMOTE_ACCESS_ENABLED", + "operator": "EQUALS" + } + ] + }, + "output": { + "devicePool": { + } + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the device pool by using the list-pools CLI command." + }, + "output": { + "devicePool": "Note: you cannot update curated device pools." + } + }, + "description": "The following example updates the specified device pool with a new name and description. It also enables remote access of devices in the device pool.", + "id": "to-update-a-device-pool-1472653887677", + "title": "To update a device pool" + } + ], + "UpdateProject": [ + { + "input": { + "name": "NewName", + "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:8f75187d-101e-4625-accc-12345EXAMPLE" + }, + "output": { + "project": { + "name": "NewName", + "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:8f75187d-101e-4625-accc-12345EXAMPLE", + "created": "1448400709.927" + } + }, + "comments": { + "input": { + "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command." + }, + "output": { + } + }, + "description": "The following example updates the specified project with a new name.", + "id": "to-update-a-device-pool-1472653887677", + "title": "To update a device pool" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json new file mode 100644 index 0000000..516c178 --- /dev/null +++ b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json @@ -0,0 +1,1404 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-06-23", + "endpointPrefix": "devicefarm", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Device Farm", + "signatureVersion": "v4", + "targetPrefix": "DeviceFarm_20150623" + }, + "operations": { + "CreateDevicePool": { + "input": { + "type": "structure", + "required": [ + "projectArn", + "name", + "rules" + ], + "members": { + "projectArn": {}, + "name": {}, + "description": {}, + "rules": { + "shape": "S5" + } + } + }, + "output": { + "type": "structure", + "members": { + "devicePool": { + "shape": "Sb" + } + } + } + }, + "CreateProject": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + }, + "output": { + "type": "structure", + "members": { + "project": { + "shape": "Sf" + } + } + } + }, + "CreateRemoteAccessSession": { + "input": { + "type": "structure", + "required": [ + "projectArn", + "deviceArn" + ], + "members": { + "projectArn": {}, + "deviceArn": {}, + "name": {}, + "configuration": { + "type": "structure", + "members": { + "billingMethod": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "remoteAccessSession": { + "shape": "Sl" + } + } + } + }, + "CreateUpload": { + "input": { + "type": "structure", + "required": [ + "projectArn", + "name", + "type" + ], + "members": { + "projectArn": {}, + "name": {}, + "type": {}, + "contentType": {} + } + }, + "output": { + "type": "structure", + "members": { + "upload": { + "shape": "S12" + } + } + } + }, + "DeleteDevicePool": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteProject": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteRemoteAccessSession": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteRun": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteUpload": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "GetAccountSettings": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "accountSettings": { + "type": "structure", + "members": { + "awsAccountNumber": {}, + "unmeteredDevices": { + "shape": "S1k" + }, + "unmeteredRemoteAccessDevices": { + "shape": "S1k" + } + } + } + } + } + }, + "GetDevice": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "device": { + "shape": "So" + } + } + } + }, + "GetDevicePool": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "devicePool": { + "shape": "Sb" + } + } + } + }, + "GetDevicePoolCompatibility": { + "input": { + "type": "structure", + "required": [ + "devicePoolArn" + ], + "members": { + "devicePoolArn": {}, + "appArn": {}, + "testType": {} + } + }, + "output": { + "type": "structure", + "members": { + "compatibleDevices": { + "shape": "S1s" + }, + "incompatibleDevices": { + "shape": "S1s" + } + } + } + }, + "GetJob": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "job": { + "shape": "S1y" + } + } + } + }, + "GetOfferingStatus": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "current": { + "shape": "S23" + }, + "nextPeriod": { + "shape": "S23" + }, + "nextToken": {} + } + } + }, + "GetProject": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "project": { + "shape": "Sf" + } + } + } + }, + "GetRemoteAccessSession": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "remoteAccessSession": { + "shape": "Sl" + } + } + } + }, + "GetRun": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "run": { + "shape": "S2k" + } + } + } + }, + "GetSuite": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "suite": { + "shape": "S2n" + } + } + } + }, + "GetTest": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "test": { + "shape": "S2q" + } + } + } + }, + "GetUpload": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "upload": { + "shape": "S12" + } + } + } + }, + "InstallToRemoteAccessSession": { + "input": { + "type": "structure", + "required": [ + "remoteAccessSessionArn", + "appArn" + ], + "members": { + "remoteAccessSessionArn": {}, + "appArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "appUpload": { + "shape": "S12" + } + } + } + }, + "ListArtifacts": { + "input": { + "type": "structure", + "required": [ + "arn", + "type" + ], + "members": { + "arn": {}, + "type": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "artifacts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "type": {}, + "extension": {}, + "url": {} + } + } + }, + "nextToken": {} + } + } + }, + "ListDevicePools": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "type": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "devicePools": { + "type": "list", + "member": { + "shape": "Sb" + } + }, + "nextToken": {} + } + } + }, + "ListDevices": { + "input": { + "type": "structure", + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "devices": { + "type": "list", + "member": { + "shape": "So" + } + }, + "nextToken": {} + } + } + }, + "ListJobs": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "jobs": { + "type": "list", + "member": { + "shape": "S1y" + } + }, + "nextToken": {} + } + } + }, + "ListOfferingTransactions": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "offeringTransactions": { + "type": "list", + "member": { + "shape": "S3d" + } + }, + "nextToken": {} + } + } + }, + "ListOfferings": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "offerings": { + "type": "list", + "member": { + "shape": "S27" + } + }, + "nextToken": {} + } + } + }, + "ListProjects": { + "input": { + "type": "structure", + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "projects": { + "type": "list", + "member": { + "shape": "Sf" + } + }, + "nextToken": {} + } + } + }, + "ListRemoteAccessSessions": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "remoteAccessSessions": { + "type": "list", + "member": { + "shape": "Sl" + } + }, + "nextToken": {} + } + } + }, + "ListRuns": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "runs": { + "type": "list", + "member": { + "shape": "S2k" + } + }, + "nextToken": {} + } + } + }, + "ListSamples": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "samples": { + "type": "list", + "member": { + "type": "structure", + "members": { + "arn": {}, + "type": {}, + "url": {} + } + } + }, + "nextToken": {} + } + } + }, + "ListSuites": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "suites": { + "type": "list", + "member": { + "shape": "S2n" + } + }, + "nextToken": {} + } + } + }, + "ListTests": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "tests": { + "type": "list", + "member": { + "shape": "S2q" + } + }, + "nextToken": {} + } + } + }, + "ListUniqueProblems": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "uniqueProblems": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "type": "structure", + "members": { + "message": {}, + "problems": { + "type": "list", + "member": { + "type": "structure", + "members": { + "run": { + "shape": "S49" + }, + "job": { + "shape": "S49" + }, + "suite": { + "shape": "S49" + }, + "test": { + "shape": "S49" + }, + "device": { + "shape": "So" + }, + "result": {}, + "message": {} + } + } + } + } + } + } + }, + "nextToken": {} + } + } + }, + "ListUploads": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "uploads": { + "type": "list", + "member": { + "shape": "S12" + } + }, + "nextToken": {} + } + } + }, + "PurchaseOffering": { + "input": { + "type": "structure", + "members": { + "offeringId": {}, + "quantity": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "offeringTransaction": { + "shape": "S3d" + } + } + } + }, + "RenewOffering": { + "input": { + "type": "structure", + "members": { + "offeringId": {}, + "quantity": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "offeringTransaction": { + "shape": "S3d" + } + } + } + }, + "ScheduleRun": { + "input": { + "type": "structure", + "required": [ + "projectArn", + "devicePoolArn", + "test" + ], + "members": { + "projectArn": {}, + "appArn": {}, + "devicePoolArn": {}, + "name": {}, + "test": { + "type": "structure", + "required": [ + "type" + ], + "members": { + "type": {}, + "testPackageArn": {}, + "filter": {}, + "parameters": { + "type": "map", + "key": {}, + "value": {} + } + } + }, + "configuration": { + "type": "structure", + "members": { + "extraDataPackageArn": {}, + "networkProfileArn": {}, + "locale": {}, + "location": { + "type": "structure", + "required": [ + "latitude", + "longitude" + ], + "members": { + "latitude": { + "type": "double" + }, + "longitude": { + "type": "double" + } + } + }, + "radios": { + "type": "structure", + "members": { + "wifi": { + "type": "boolean" + }, + "bluetooth": { + "type": "boolean" + }, + "nfc": { + "type": "boolean" + }, + "gps": { + "type": "boolean" + } + } + }, + "auxiliaryApps": { + "type": "list", + "member": {} + }, + "billingMethod": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "run": { + "shape": "S2k" + } + } + } + }, + "StopRemoteAccessSession": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "remoteAccessSession": { + "shape": "Sl" + } + } + } + }, + "StopRun": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {} + } + }, + "output": { + "type": "structure", + "members": { + "run": { + "shape": "S2k" + } + } + } + }, + "UpdateDevicePool": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "name": {}, + "description": {}, + "rules": { + "shape": "S5" + } + } + }, + "output": { + "type": "structure", + "members": { + "devicePool": { + "shape": "Sb" + } + } + } + }, + "UpdateProject": { + "input": { + "type": "structure", + "required": [ + "arn" + ], + "members": { + "arn": {}, + "name": {} + } + }, + "output": { + "type": "structure", + "members": { + "project": { + "shape": "Sf" + } + } + } + } + }, + "shapes": { + "S5": { + "type": "list", + "member": { + "type": "structure", + "members": { + "attribute": {}, + "operator": {}, + "value": {} + } + } + }, + "Sb": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "description": {}, + "type": {}, + "rules": { + "shape": "S5" + } + } + }, + "Sf": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "created": { + "type": "timestamp" + } + } + }, + "Sl": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "created": { + "type": "timestamp" + }, + "status": {}, + "result": {}, + "message": {}, + "started": { + "type": "timestamp" + }, + "stopped": { + "type": "timestamp" + }, + "device": { + "shape": "So" + }, + "billingMethod": {}, + "deviceMinutes": { + "shape": "Sx" + }, + "endpoint": {} + } + }, + "So": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "manufacturer": {}, + "model": {}, + "formFactor": {}, + "platform": {}, + "os": {}, + "cpu": { + "type": "structure", + "members": { + "frequency": {}, + "architecture": {}, + "clock": { + "type": "double" + } + } + }, + "resolution": { + "type": "structure", + "members": { + "width": { + "type": "integer" + }, + "height": { + "type": "integer" + } + } + }, + "heapSize": { + "type": "long" + }, + "memory": { + "type": "long" + }, + "image": {}, + "carrier": {}, + "radio": {}, + "remoteAccessEnabled": { + "type": "boolean" + }, + "fleetType": {}, + "fleetName": {} + } + }, + "Sx": { + "type": "structure", + "members": { + "total": { + "type": "double" + }, + "metered": { + "type": "double" + }, + "unmetered": { + "type": "double" + } + } + }, + "S12": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "created": { + "type": "timestamp" + }, + "type": {}, + "status": {}, + "url": {}, + "metadata": {}, + "contentType": {}, + "message": {} + } + }, + "S1k": { + "type": "map", + "key": {}, + "value": { + "type": "integer" + } + }, + "S1s": { + "type": "list", + "member": { + "type": "structure", + "members": { + "device": { + "shape": "So" + }, + "compatible": { + "type": "boolean" + }, + "incompatibilityMessages": { + "type": "list", + "member": { + "type": "structure", + "members": { + "message": {}, + "type": {} + } + } + } + } + } + }, + "S1y": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "type": {}, + "created": { + "type": "timestamp" + }, + "status": {}, + "result": {}, + "started": { + "type": "timestamp" + }, + "stopped": { + "type": "timestamp" + }, + "counters": { + "shape": "S1z" + }, + "message": {}, + "device": { + "shape": "So" + }, + "deviceMinutes": { + "shape": "Sx" + } + } + }, + "S1z": { + "type": "structure", + "members": { + "total": { + "type": "integer" + }, + "passed": { + "type": "integer" + }, + "failed": { + "type": "integer" + }, + "warned": { + "type": "integer" + }, + "errored": { + "type": "integer" + }, + "stopped": { + "type": "integer" + }, + "skipped": { + "type": "integer" + } + } + }, + "S23": { + "type": "map", + "key": {}, + "value": { + "shape": "S25" + } + }, + "S25": { + "type": "structure", + "members": { + "type": {}, + "offering": { + "shape": "S27" + }, + "quantity": { + "type": "integer" + }, + "effectiveOn": { + "type": "timestamp" + } + } + }, + "S27": { + "type": "structure", + "members": { + "id": {}, + "description": {}, + "type": {}, + "platform": {}, + "recurringCharges": { + "type": "list", + "member": { + "type": "structure", + "members": { + "cost": { + "shape": "S2b" + }, + "frequency": {} + } + } + } + } + }, + "S2b": { + "type": "structure", + "members": { + "amount": { + "type": "double" + }, + "currencyCode": {} + } + }, + "S2k": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "type": {}, + "platform": {}, + "created": { + "type": "timestamp" + }, + "status": {}, + "result": {}, + "started": { + "type": "timestamp" + }, + "stopped": { + "type": "timestamp" + }, + "counters": { + "shape": "S1z" + }, + "message": {}, + "totalJobs": { + "type": "integer" + }, + "completedJobs": { + "type": "integer" + }, + "billingMethod": {}, + "deviceMinutes": { + "shape": "Sx" + } + } + }, + "S2n": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "type": {}, + "created": { + "type": "timestamp" + }, + "status": {}, + "result": {}, + "started": { + "type": "timestamp" + }, + "stopped": { + "type": "timestamp" + }, + "counters": { + "shape": "S1z" + }, + "message": {}, + "deviceMinutes": { + "shape": "Sx" + } + } + }, + "S2q": { + "type": "structure", + "members": { + "arn": {}, + "name": {}, + "type": {}, + "created": { + "type": "timestamp" + }, + "status": {}, + "result": {}, + "started": { + "type": "timestamp" + }, + "stopped": { + "type": "timestamp" + }, + "counters": { + "shape": "S1z" + }, + "message": {}, + "deviceMinutes": { + "shape": "Sx" + } + } + }, + "S3d": { + "type": "structure", + "members": { + "offeringStatus": { + "shape": "S25" + }, + "transactionId": {}, + "createdOn": { + "type": "timestamp" + }, + "cost": { + "shape": "S2b" + } + } + }, + "S49": { + "type": "structure", + "members": { + "arn": {}, + "name": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json new file mode 100644 index 0000000..ce5f8d7 --- /dev/null +++ b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json @@ -0,0 +1,74 @@ +{ + "pagination": { + "GetOfferingStatus": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": ["current","nextPeriod"] + }, + "ListArtifacts": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "artifacts" + }, + "ListDevicePools": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "devicePools" + }, + "ListDevices": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "devices" + }, + "ListJobs": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "jobs" + }, + "ListOfferingTransactions": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "offeringTransactions" + }, + "ListOfferings": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "offerings" + }, + "ListProjects": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "projects" + }, + "ListRuns": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "runs" + }, + "ListSamples": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "samples" + }, + "ListSuites": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "suites" + }, + "ListTests": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "tests" + }, + "ListUniqueProblems": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "uniqueProblems" + }, + "ListUploads": { + "input_token": "nextToken", + "output_token": "nextToken", + "result_key": "uploads" + } + } +} diff --git a/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json b/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json new file mode 100644 index 0000000..0cdffec --- /dev/null +++ b/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json @@ -0,0 +1,563 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-10-25", + "endpointPrefix": "directconnect", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Direct Connect", + "signatureVersion": "v4", + "targetPrefix": "OvertureService" + }, + "operations": { + "AllocateConnectionOnInterconnect": { + "input": { + "type": "structure", + "required": [ + "bandwidth", + "connectionName", + "ownerAccount", + "interconnectId", + "vlan" + ], + "members": { + "bandwidth": {}, + "connectionName": {}, + "ownerAccount": {}, + "interconnectId": {}, + "vlan": { + "type": "integer" + } + } + }, + "output": { + "shape": "S7" + } + }, + "AllocatePrivateVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "connectionId", + "ownerAccount", + "newPrivateVirtualInterfaceAllocation" + ], + "members": { + "connectionId": {}, + "ownerAccount": {}, + "newPrivateVirtualInterfaceAllocation": { + "type": "structure", + "required": [ + "virtualInterfaceName", + "vlan", + "asn" + ], + "members": { + "virtualInterfaceName": {}, + "vlan": { + "type": "integer" + }, + "asn": { + "type": "integer" + }, + "authKey": {}, + "amazonAddress": {}, + "customerAddress": {} + } + } + } + }, + "output": { + "shape": "Sl" + } + }, + "AllocatePublicVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "connectionId", + "ownerAccount", + "newPublicVirtualInterfaceAllocation" + ], + "members": { + "connectionId": {}, + "ownerAccount": {}, + "newPublicVirtualInterfaceAllocation": { + "type": "structure", + "required": [ + "virtualInterfaceName", + "vlan", + "asn", + "amazonAddress", + "customerAddress", + "routeFilterPrefixes" + ], + "members": { + "virtualInterfaceName": {}, + "vlan": { + "type": "integer" + }, + "asn": { + "type": "integer" + }, + "authKey": {}, + "amazonAddress": {}, + "customerAddress": {}, + "routeFilterPrefixes": { + "shape": "Sr" + } + } + } + } + }, + "output": { + "shape": "Sl" + } + }, + "ConfirmConnection": { + "input": { + "type": "structure", + "required": [ + "connectionId" + ], + "members": { + "connectionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "connectionState": {} + } + } + }, + "ConfirmPrivateVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "virtualInterfaceId", + "virtualGatewayId" + ], + "members": { + "virtualInterfaceId": {}, + "virtualGatewayId": {} + } + }, + "output": { + "type": "structure", + "members": { + "virtualInterfaceState": {} + } + } + }, + "ConfirmPublicVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "virtualInterfaceId" + ], + "members": { + "virtualInterfaceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "virtualInterfaceState": {} + } + } + }, + "CreateConnection": { + "input": { + "type": "structure", + "required": [ + "location", + "bandwidth", + "connectionName" + ], + "members": { + "location": {}, + "bandwidth": {}, + "connectionName": {} + } + }, + "output": { + "shape": "S7" + } + }, + "CreateInterconnect": { + "input": { + "type": "structure", + "required": [ + "interconnectName", + "bandwidth", + "location" + ], + "members": { + "interconnectName": {}, + "bandwidth": {}, + "location": {} + } + }, + "output": { + "shape": "S15" + } + }, + "CreatePrivateVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "connectionId", + "newPrivateVirtualInterface" + ], + "members": { + "connectionId": {}, + "newPrivateVirtualInterface": { + "type": "structure", + "required": [ + "virtualInterfaceName", + "vlan", + "asn", + "virtualGatewayId" + ], + "members": { + "virtualInterfaceName": {}, + "vlan": { + "type": "integer" + }, + "asn": { + "type": "integer" + }, + "authKey": {}, + "amazonAddress": {}, + "customerAddress": {}, + "virtualGatewayId": {} + } + } + } + }, + "output": { + "shape": "Sl" + } + }, + "CreatePublicVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "connectionId", + "newPublicVirtualInterface" + ], + "members": { + "connectionId": {}, + "newPublicVirtualInterface": { + "type": "structure", + "required": [ + "virtualInterfaceName", + "vlan", + "asn", + "amazonAddress", + "customerAddress", + "routeFilterPrefixes" + ], + "members": { + "virtualInterfaceName": {}, + "vlan": { + "type": "integer" + }, + "asn": { + "type": "integer" + }, + "authKey": {}, + "amazonAddress": {}, + "customerAddress": {}, + "routeFilterPrefixes": { + "shape": "Sr" + } + } + } + } + }, + "output": { + "shape": "Sl" + } + }, + "DeleteConnection": { + "input": { + "type": "structure", + "required": [ + "connectionId" + ], + "members": { + "connectionId": {} + } + }, + "output": { + "shape": "S7" + } + }, + "DeleteInterconnect": { + "input": { + "type": "structure", + "required": [ + "interconnectId" + ], + "members": { + "interconnectId": {} + } + }, + "output": { + "type": "structure", + "members": { + "interconnectState": {} + } + } + }, + "DeleteVirtualInterface": { + "input": { + "type": "structure", + "required": [ + "virtualInterfaceId" + ], + "members": { + "virtualInterfaceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "virtualInterfaceState": {} + } + } + }, + "DescribeConnectionLoa": { + "input": { + "type": "structure", + "required": [ + "connectionId" + ], + "members": { + "connectionId": {}, + "providerName": {}, + "loaContentType": {} + } + }, + "output": { + "type": "structure", + "members": { + "loa": { + "shape": "S1k" + } + } + } + }, + "DescribeConnections": { + "input": { + "type": "structure", + "members": { + "connectionId": {} + } + }, + "output": { + "shape": "S1n" + } + }, + "DescribeConnectionsOnInterconnect": { + "input": { + "type": "structure", + "required": [ + "interconnectId" + ], + "members": { + "interconnectId": {} + } + }, + "output": { + "shape": "S1n" + } + }, + "DescribeInterconnectLoa": { + "input": { + "type": "structure", + "required": [ + "interconnectId" + ], + "members": { + "interconnectId": {}, + "providerName": {}, + "loaContentType": {} + } + }, + "output": { + "type": "structure", + "members": { + "loa": { + "shape": "S1k" + } + } + } + }, + "DescribeInterconnects": { + "input": { + "type": "structure", + "members": { + "interconnectId": {} + } + }, + "output": { + "type": "structure", + "members": { + "interconnects": { + "type": "list", + "member": { + "shape": "S15" + } + } + } + } + }, + "DescribeLocations": { + "output": { + "type": "structure", + "members": { + "locations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "locationCode": {}, + "locationName": {} + } + } + } + } + } + }, + "DescribeVirtualGateways": { + "output": { + "type": "structure", + "members": { + "virtualGateways": { + "type": "list", + "member": { + "type": "structure", + "members": { + "virtualGatewayId": {}, + "virtualGatewayState": {} + } + } + } + } + } + }, + "DescribeVirtualInterfaces": { + "input": { + "type": "structure", + "members": { + "connectionId": {}, + "virtualInterfaceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "virtualInterfaces": { + "type": "list", + "member": { + "shape": "Sl" + } + } + } + } + } + }, + "shapes": { + "S7": { + "type": "structure", + "members": { + "ownerAccount": {}, + "connectionId": {}, + "connectionName": {}, + "connectionState": {}, + "region": {}, + "location": {}, + "bandwidth": {}, + "vlan": { + "type": "integer" + }, + "partnerName": {}, + "loaIssueTime": { + "type": "timestamp" + } + } + }, + "Sl": { + "type": "structure", + "members": { + "ownerAccount": {}, + "virtualInterfaceId": {}, + "location": {}, + "connectionId": {}, + "virtualInterfaceType": {}, + "virtualInterfaceName": {}, + "vlan": { + "type": "integer" + }, + "asn": { + "type": "integer" + }, + "authKey": {}, + "amazonAddress": {}, + "customerAddress": {}, + "virtualInterfaceState": {}, + "customerRouterConfig": {}, + "virtualGatewayId": {}, + "routeFilterPrefixes": { + "shape": "Sr" + } + } + }, + "Sr": { + "type": "list", + "member": { + "type": "structure", + "members": { + "cidr": {} + } + } + }, + "S15": { + "type": "structure", + "members": { + "interconnectId": {}, + "interconnectName": {}, + "interconnectState": {}, + "region": {}, + "location": {}, + "bandwidth": {}, + "loaIssueTime": { + "type": "timestamp" + } + } + }, + "S1k": { + "type": "structure", + "members": { + "loaContent": { + "type": "blob" + }, + "loaContentType": {} + } + }, + "S1n": { + "type": "structure", + "members": { + "connections": { + "type": "list", + "member": { + "shape": "S7" + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json b/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json new file mode 100644 index 0000000..cc93bed --- /dev/null +++ b/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json @@ -0,0 +1,22 @@ +{ + "pagination": { + "DescribeConnections": { + "result_key": "connections" + }, + "DescribeConnectionsOnInterconnect": { + "result_key": "connections" + }, + "DescribeInterconnects": { + "result_key": "interconnects" + }, + "DescribeLocations": { + "result_key": "locations" + }, + "DescribeVirtualGateways": { + "result_key": "virtualGateways" + }, + "DescribeVirtualInterfaces": { + "result_key": "virtualInterfaces" + } + } +} diff --git a/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json b/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json new file mode 100644 index 0000000..6b05842 --- /dev/null +++ b/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json @@ -0,0 +1,356 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-11-01", + "endpointPrefix": "discovery", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Application Discovery Service", + "signatureVersion": "v4", + "targetPrefix": "AWSPoseidonService_V2015_11_01" + }, + "operations": { + "CreateTags": { + "input": { + "type": "structure", + "required": [ + "configurationIds", + "tags" + ], + "members": { + "configurationIds": { + "shape": "S2" + }, + "tags": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "configurationIds" + ], + "members": { + "configurationIds": { + "shape": "S2" + }, + "tags": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeAgents": { + "input": { + "type": "structure", + "members": { + "agentIds": { + "shape": "Sc" + }, + "maxResults": { + "type": "integer" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "agentsInfo": { + "type": "list", + "member": { + "type": "structure", + "members": { + "agentId": {}, + "hostName": {}, + "agentNetworkInfoList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ipAddress": {}, + "macAddress": {} + } + } + }, + "connectorId": {}, + "version": {}, + "health": {} + } + } + }, + "nextToken": {} + } + } + }, + "DescribeConfigurations": { + "input": { + "type": "structure", + "required": [ + "configurationIds" + ], + "members": { + "configurationIds": { + "shape": "S2" + } + } + }, + "output": { + "type": "structure", + "members": { + "configurations": { + "type": "list", + "member": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + }, + "DescribeExportConfigurations": { + "input": { + "type": "structure", + "members": { + "exportIds": { + "type": "list", + "member": {} + }, + "maxResults": { + "type": "integer" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "exportsInfo": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "exportId", + "exportStatus", + "statusMessage", + "exportRequestTime" + ], + "members": { + "exportId": {}, + "exportStatus": {}, + "statusMessage": {}, + "configurationsDownloadUrl": {}, + "exportRequestTime": { + "type": "timestamp" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "members": { + "filters": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "values" + ], + "members": { + "name": {}, + "values": { + "shape": "S15" + } + } + } + }, + "maxResults": { + "type": "integer" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "tags": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "configurationType": {}, + "configurationId": {}, + "key": {}, + "value": {}, + "timeOfCreation": { + "type": "timestamp" + } + } + } + }, + "nextToken": {} + } + } + }, + "ExportConfigurations": { + "output": { + "type": "structure", + "members": { + "exportId": {} + } + } + }, + "ListConfigurations": { + "input": { + "type": "structure", + "required": [ + "configurationType" + ], + "members": { + "configurationType": {}, + "filters": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "values", + "condition" + ], + "members": { + "name": {}, + "values": { + "shape": "S15" + }, + "condition": {} + } + } + }, + "maxResults": { + "type": "integer" + }, + "nextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "configurations": { + "type": "list", + "member": { + "type": "map", + "key": {}, + "value": {} + } + }, + "nextToken": {} + } + } + }, + "StartDataCollectionByAgentIds": { + "input": { + "type": "structure", + "required": [ + "agentIds" + ], + "members": { + "agentIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "agentsConfigurationStatus": { + "shape": "S1m" + } + } + } + }, + "StopDataCollectionByAgentIds": { + "input": { + "type": "structure", + "required": [ + "agentIds" + ], + "members": { + "agentIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "agentsConfigurationStatus": { + "shape": "S1m" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "Sc": { + "type": "list", + "member": {} + }, + "S15": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "S1m": { + "type": "list", + "member": { + "type": "structure", + "members": { + "agentId": {}, + "operationSucceeded": { + "type": "boolean" + }, + "description": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dms-2016-01-01.min.json b/node_modules/aws-sdk/apis/dms-2016-01-01.min.json new file mode 100644 index 0000000..d762664 --- /dev/null +++ b/node_modules/aws-sdk/apis/dms-2016-01-01.min.json @@ -0,0 +1,1130 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-01-01", + "endpointPrefix": "dms", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Database Migration Service", + "signatureVersion": "v4", + "targetPrefix": "AmazonDMSv20160101" + }, + "operations": { + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceArn", + "Tags" + ], + "members": { + "ResourceArn": {}, + "Tags": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateEndpoint": { + "input": { + "type": "structure", + "required": [ + "EndpointIdentifier", + "EndpointType", + "EngineName", + "Username", + "Password", + "ServerName", + "Port" + ], + "members": { + "EndpointIdentifier": {}, + "EndpointType": {}, + "EngineName": {}, + "Username": {}, + "Password": { + "shape": "S8" + }, + "ServerName": {}, + "Port": { + "type": "integer" + }, + "DatabaseName": {}, + "ExtraConnectionAttributes": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S3" + }, + "CertificateArn": {}, + "SslMode": {} + } + }, + "output": { + "type": "structure", + "members": { + "Endpoint": { + "shape": "Sc" + } + } + } + }, + "CreateReplicationInstance": { + "input": { + "type": "structure", + "required": [ + "ReplicationInstanceIdentifier", + "ReplicationInstanceClass" + ], + "members": { + "ReplicationInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "ReplicationInstanceClass": {}, + "VpcSecurityGroupIds": { + "shape": "Se" + }, + "AvailabilityZone": {}, + "ReplicationSubnetGroupIdentifier": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Tags": { + "shape": "S3" + }, + "KmsKeyId": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationInstance": { + "shape": "Sh" + } + } + } + }, + "CreateReplicationSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationSubnetGroupIdentifier", + "ReplicationSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "ReplicationSubnetGroupIdentifier": {}, + "ReplicationSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "Sv" + }, + "Tags": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationSubnetGroup": { + "shape": "Sm" + } + } + } + }, + "CreateReplicationTask": { + "input": { + "type": "structure", + "required": [ + "ReplicationTaskIdentifier", + "SourceEndpointArn", + "TargetEndpointArn", + "ReplicationInstanceArn", + "MigrationType", + "TableMappings" + ], + "members": { + "ReplicationTaskIdentifier": {}, + "SourceEndpointArn": {}, + "TargetEndpointArn": {}, + "ReplicationInstanceArn": {}, + "MigrationType": {}, + "TableMappings": {}, + "ReplicationTaskSettings": {}, + "CdcStartTime": { + "type": "timestamp" + }, + "Tags": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationTask": { + "shape": "S10" + } + } + } + }, + "DeleteCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateArn" + ], + "members": { + "CertificateArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Certificate": { + "shape": "S15" + } + } + } + }, + "DeleteEndpoint": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Endpoint": { + "shape": "Sc" + } + } + } + }, + "DeleteReplicationInstance": { + "input": { + "type": "structure", + "required": [ + "ReplicationInstanceArn" + ], + "members": { + "ReplicationInstanceArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationInstance": { + "shape": "Sh" + } + } + } + }, + "DeleteReplicationSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationSubnetGroupIdentifier" + ], + "members": { + "ReplicationSubnetGroupIdentifier": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteReplicationTask": { + "input": { + "type": "structure", + "required": [ + "ReplicationTaskArn" + ], + "members": { + "ReplicationTaskArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationTask": { + "shape": "S10" + } + } + } + }, + "DescribeAccountAttributes": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "AccountQuotas": { + "type": "list", + "member": { + "locationName": "AccountQuota", + "type": "structure", + "members": { + "AccountQuotaName": {}, + "Used": { + "type": "long" + }, + "Max": { + "type": "long" + } + } + } + } + } + } + }, + "DescribeCertificates": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "Certificates": { + "type": "list", + "member": { + "shape": "S15", + "locationName": "Certificate" + } + } + } + } + }, + "DescribeConnections": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "Connections": { + "type": "list", + "member": { + "shape": "S1r", + "locationName": "Connection" + } + } + } + } + }, + "DescribeEndpointTypes": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "SupportedEndpointTypes": { + "type": "list", + "member": { + "locationName": "SupportedEndpointType", + "type": "structure", + "members": { + "EngineName": {}, + "SupportsCDC": { + "type": "boolean" + }, + "EndpointType": {} + } + } + } + } + } + }, + "DescribeEndpoints": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "Endpoints": { + "type": "list", + "member": { + "shape": "Sc", + "locationName": "Endpoint" + } + } + } + } + }, + "DescribeOrderableReplicationInstances": { + "input": { + "type": "structure", + "members": { + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "OrderableReplicationInstances": { + "type": "list", + "member": { + "locationName": "OrderableReplicationInstance", + "type": "structure", + "members": { + "EngineVersion": {}, + "ReplicationInstanceClass": {}, + "StorageType": {}, + "MinAllocatedStorage": { + "type": "integer" + }, + "MaxAllocatedStorage": { + "type": "integer" + }, + "DefaultAllocatedStorage": { + "type": "integer" + }, + "IncludedAllocatedStorage": { + "type": "integer" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeRefreshSchemasStatus": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "RefreshSchemasStatus": { + "shape": "S25" + } + } + } + }, + "DescribeReplicationInstances": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "ReplicationInstances": { + "type": "list", + "member": { + "shape": "Sh", + "locationName": "ReplicationInstance" + } + } + } + } + }, + "DescribeReplicationSubnetGroups": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "ReplicationSubnetGroups": { + "type": "list", + "member": { + "shape": "Sm", + "locationName": "ReplicationSubnetGroup" + } + } + } + } + }, + "DescribeReplicationTasks": { + "input": { + "type": "structure", + "members": { + "Filters": { + "shape": "S1j" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "ReplicationTasks": { + "type": "list", + "member": { + "shape": "S10", + "locationName": "ReplicationTask" + } + } + } + } + }, + "DescribeSchemas": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "Schemas": { + "type": "list", + "member": {} + } + } + } + }, + "DescribeTableStatistics": { + "input": { + "type": "structure", + "required": [ + "ReplicationTaskArn" + ], + "members": { + "ReplicationTaskArn": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationTaskArn": {}, + "TableStatistics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SchemaName": {}, + "TableName": {}, + "Inserts": { + "type": "long" + }, + "Deletes": { + "type": "long" + }, + "Updates": { + "type": "long" + }, + "Ddls": { + "type": "long" + }, + "FullLoadRows": { + "type": "long" + }, + "LastUpdateTime": { + "type": "timestamp" + }, + "TableState": {} + } + } + }, + "Marker": {} + } + } + }, + "ImportCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateIdentifier" + ], + "members": { + "CertificateIdentifier": {}, + "CertificatePem": {} + } + }, + "output": { + "type": "structure", + "members": { + "Certificate": { + "shape": "S15" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceArn" + ], + "members": { + "ResourceArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "TagList": { + "shape": "S3" + } + } + } + }, + "ModifyEndpoint": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {}, + "EndpointIdentifier": {}, + "EndpointType": {}, + "EngineName": {}, + "Username": {}, + "Password": { + "shape": "S8" + }, + "ServerName": {}, + "Port": { + "type": "integer" + }, + "DatabaseName": {}, + "ExtraConnectionAttributes": {}, + "CertificateArn": {}, + "SslMode": {} + } + }, + "output": { + "type": "structure", + "members": { + "Endpoint": { + "shape": "Sc" + } + } + } + }, + "ModifyReplicationInstance": { + "input": { + "type": "structure", + "required": [ + "ReplicationInstanceArn" + ], + "members": { + "ReplicationInstanceArn": {}, + "AllocatedStorage": { + "type": "integer" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "ReplicationInstanceClass": {}, + "VpcSecurityGroupIds": { + "shape": "Se" + }, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReplicationInstanceIdentifier": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationInstance": { + "shape": "Sh" + } + } + } + }, + "ModifyReplicationSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationSubnetGroupIdentifier", + "SubnetIds" + ], + "members": { + "ReplicationSubnetGroupIdentifier": {}, + "ReplicationSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationSubnetGroup": { + "shape": "Sm" + } + } + } + }, + "RefreshSchemas": { + "input": { + "type": "structure", + "required": [ + "EndpointArn", + "ReplicationInstanceArn" + ], + "members": { + "EndpointArn": {}, + "ReplicationInstanceArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "RefreshSchemasStatus": { + "shape": "S25" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceArn", + "TagKeys" + ], + "members": { + "ResourceArn": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "StartReplicationTask": { + "input": { + "type": "structure", + "required": [ + "ReplicationTaskArn", + "StartReplicationTaskType" + ], + "members": { + "ReplicationTaskArn": {}, + "StartReplicationTaskType": {}, + "CdcStartTime": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationTask": { + "shape": "S10" + } + } + } + }, + "StopReplicationTask": { + "input": { + "type": "structure", + "required": [ + "ReplicationTaskArn" + ], + "members": { + "ReplicationTaskArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationTask": { + "shape": "S10" + } + } + } + }, + "TestConnection": { + "input": { + "type": "structure", + "required": [ + "ReplicationInstanceArn", + "EndpointArn" + ], + "members": { + "ReplicationInstanceArn": {}, + "EndpointArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Connection": { + "shape": "S1r" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S8": { + "type": "string", + "sensitive": true + }, + "Sc": { + "type": "structure", + "members": { + "EndpointIdentifier": {}, + "EndpointType": {}, + "EngineName": {}, + "Username": {}, + "ServerName": {}, + "Port": { + "type": "integer" + }, + "DatabaseName": {}, + "ExtraConnectionAttributes": {}, + "Status": {}, + "KmsKeyId": {}, + "EndpointArn": {}, + "CertificateArn": {}, + "SslMode": {} + } + }, + "Se": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "Sh": { + "type": "structure", + "members": { + "ReplicationInstanceIdentifier": {}, + "ReplicationInstanceClass": {}, + "ReplicationInstanceStatus": {}, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "VpcSecurityGroups": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "AvailabilityZone": {}, + "ReplicationSubnetGroup": { + "shape": "Sm" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "ReplicationInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {} + } + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "KmsKeyId": {}, + "ReplicationInstanceArn": {}, + "ReplicationInstancePublicIpAddress": { + "deprecated": true + }, + "ReplicationInstancePrivateIpAddress": { + "deprecated": true + }, + "ReplicationInstancePublicIpAddresses": { + "type": "list", + "member": {} + }, + "ReplicationInstancePrivateIpAddresses": { + "type": "list", + "member": {} + }, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "Sm": { + "type": "structure", + "members": { + "ReplicationSubnetGroupIdentifier": {}, + "ReplicationSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "type": "structure", + "members": { + "Name": {} + } + }, + "SubnetStatus": {} + } + } + } + } + }, + "Sv": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S10": { + "type": "structure", + "members": { + "ReplicationTaskIdentifier": {}, + "SourceEndpointArn": {}, + "TargetEndpointArn": {}, + "ReplicationInstanceArn": {}, + "MigrationType": {}, + "TableMappings": {}, + "ReplicationTaskSettings": {}, + "Status": {}, + "LastFailureMessage": {}, + "ReplicationTaskCreationDate": { + "type": "timestamp" + }, + "ReplicationTaskStartDate": { + "type": "timestamp" + }, + "ReplicationTaskArn": {}, + "ReplicationTaskStats": { + "type": "structure", + "members": { + "FullLoadProgressPercent": { + "type": "integer" + }, + "ElapsedTimeMillis": { + "type": "long" + }, + "TablesLoaded": { + "type": "integer" + }, + "TablesLoading": { + "type": "integer" + }, + "TablesQueued": { + "type": "integer" + }, + "TablesErrored": { + "type": "integer" + } + } + } + } + }, + "S15": { + "type": "structure", + "members": { + "CertificateIdentifier": {}, + "CertificateCreationDate": { + "type": "timestamp" + }, + "CertificatePem": {}, + "CertificateArn": {}, + "CertificateOwner": {}, + "ValidFromDate": { + "type": "timestamp" + }, + "ValidToDate": { + "type": "timestamp" + }, + "SigningAlgorithm": {}, + "KeyLength": { + "type": "integer" + } + } + }, + "S1j": { + "type": "list", + "member": { + "locationName": "Filter", + "type": "structure", + "required": [ + "Name", + "Values" + ], + "members": { + "Name": {}, + "Values": { + "type": "list", + "member": { + "locationName": "Value" + } + } + } + } + }, + "S1r": { + "type": "structure", + "members": { + "ReplicationInstanceArn": {}, + "EndpointArn": {}, + "Status": {}, + "LastFailureMessage": {}, + "EndpointIdentifier": {}, + "ReplicationInstanceIdentifier": {} + } + }, + "S25": { + "type": "structure", + "members": { + "EndpointArn": {}, + "ReplicationInstanceArn": {}, + "Status": {}, + "LastRefreshDate": { + "type": "timestamp" + }, + "LastFailureMessage": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ds-2015-04-16.min.json b/node_modules/aws-sdk/apis/ds-2015-04-16.min.json new file mode 100644 index 0000000..b4e71b2 --- /dev/null +++ b/node_modules/aws-sdk/apis/ds-2015-04-16.min.json @@ -0,0 +1,1033 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-04-16", + "endpointPrefix": "ds", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Directory Service", + "serviceFullName": "AWS Directory Service", + "signatureVersion": "v4", + "targetPrefix": "DirectoryService_20150416" + }, + "operations": { + "AddIpRoutes": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "IpRoutes" + ], + "members": { + "DirectoryId": {}, + "IpRoutes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CidrIp": {}, + "Description": {} + } + } + }, + "UpdateSecurityGroupForDirectoryControllers": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "Tags" + ], + "members": { + "ResourceId": {}, + "Tags": { + "shape": "Sb" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ConnectDirectory": { + "input": { + "type": "structure", + "required": [ + "Name", + "Password", + "Size", + "ConnectSettings" + ], + "members": { + "Name": {}, + "ShortName": {}, + "Password": { + "shape": "Sj" + }, + "Description": {}, + "Size": {}, + "ConnectSettings": { + "type": "structure", + "required": [ + "VpcId", + "SubnetIds", + "CustomerDnsIps", + "CustomerUserName" + ], + "members": { + "VpcId": {}, + "SubnetIds": { + "shape": "Sn" + }, + "CustomerDnsIps": { + "shape": "Sp" + }, + "CustomerUserName": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "DirectoryId": {} + } + } + }, + "CreateAlias": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "Alias" + ], + "members": { + "DirectoryId": {}, + "Alias": {} + } + }, + "output": { + "type": "structure", + "members": { + "DirectoryId": {}, + "Alias": {} + } + } + }, + "CreateComputer": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "ComputerName", + "Password" + ], + "members": { + "DirectoryId": {}, + "ComputerName": {}, + "Password": { + "type": "string", + "sensitive": true + }, + "OrganizationalUnitDistinguishedName": {}, + "ComputerAttributes": { + "shape": "S10" + } + } + }, + "output": { + "type": "structure", + "members": { + "Computer": { + "type": "structure", + "members": { + "ComputerId": {}, + "ComputerName": {}, + "ComputerAttributes": { + "shape": "S10" + } + } + } + } + } + }, + "CreateConditionalForwarder": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "RemoteDomainName", + "DnsIpAddrs" + ], + "members": { + "DirectoryId": {}, + "RemoteDomainName": {}, + "DnsIpAddrs": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateDirectory": { + "input": { + "type": "structure", + "required": [ + "Name", + "Password", + "Size" + ], + "members": { + "Name": {}, + "ShortName": {}, + "Password": { + "shape": "S1b" + }, + "Description": {}, + "Size": {}, + "VpcSettings": { + "shape": "S1c" + } + } + }, + "output": { + "type": "structure", + "members": { + "DirectoryId": {} + } + } + }, + "CreateMicrosoftAD": { + "input": { + "type": "structure", + "required": [ + "Name", + "Password", + "VpcSettings" + ], + "members": { + "Name": {}, + "ShortName": {}, + "Password": { + "shape": "S1b" + }, + "Description": {}, + "VpcSettings": { + "shape": "S1c" + } + } + }, + "output": { + "type": "structure", + "members": { + "DirectoryId": {} + } + } + }, + "CreateSnapshot": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {}, + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotId": {} + } + } + }, + "CreateTrust": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "RemoteDomainName", + "TrustPassword", + "TrustDirection" + ], + "members": { + "DirectoryId": {}, + "RemoteDomainName": {}, + "TrustPassword": { + "type": "string", + "sensitive": true + }, + "TrustDirection": {}, + "TrustType": {}, + "ConditionalForwarderIpAddrs": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": { + "TrustId": {} + } + } + }, + "DeleteConditionalForwarder": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "RemoteDomainName" + ], + "members": { + "DirectoryId": {}, + "RemoteDomainName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteDirectory": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {} + } + }, + "output": { + "type": "structure", + "members": { + "DirectoryId": {} + } + } + }, + "DeleteSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotId" + ], + "members": { + "SnapshotId": {} + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotId": {} + } + } + }, + "DeleteTrust": { + "input": { + "type": "structure", + "required": [ + "TrustId" + ], + "members": { + "TrustId": {}, + "DeleteAssociatedConditionalForwarder": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "TrustId": {} + } + } + }, + "DeregisterEventTopic": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "TopicName" + ], + "members": { + "DirectoryId": {}, + "TopicName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeConditionalForwarders": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {}, + "RemoteDomainNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "ConditionalForwarders": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RemoteDomainName": {}, + "DnsIpAddrs": { + "shape": "Sp" + }, + "ReplicationScope": {} + } + } + } + } + } + }, + "DescribeDirectories": { + "input": { + "type": "structure", + "members": { + "DirectoryIds": { + "type": "list", + "member": {} + }, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "DirectoryDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DirectoryId": {}, + "Name": {}, + "ShortName": {}, + "Size": {}, + "Alias": {}, + "AccessUrl": {}, + "Description": {}, + "DnsIpAddrs": { + "shape": "Sp" + }, + "Stage": {}, + "LaunchTime": { + "type": "timestamp" + }, + "StageLastUpdatedDateTime": { + "type": "timestamp" + }, + "Type": {}, + "VpcSettings": { + "type": "structure", + "members": { + "VpcId": {}, + "SubnetIds": { + "shape": "Sn" + }, + "SecurityGroupId": {}, + "AvailabilityZones": { + "shape": "S2m" + } + } + }, + "ConnectSettings": { + "type": "structure", + "members": { + "VpcId": {}, + "SubnetIds": { + "shape": "Sn" + }, + "CustomerUserName": {}, + "SecurityGroupId": {}, + "AvailabilityZones": { + "shape": "S2m" + }, + "ConnectIps": { + "type": "list", + "member": {} + } + } + }, + "RadiusSettings": { + "shape": "S2q" + }, + "RadiusStatus": {}, + "StageReason": {}, + "SsoEnabled": { + "type": "boolean" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeEventTopics": { + "input": { + "type": "structure", + "members": { + "DirectoryId": {}, + "TopicNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "EventTopics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DirectoryId": {}, + "TopicName": {}, + "TopicArn": {}, + "CreatedDateTime": { + "type": "timestamp" + }, + "Status": {} + } + } + } + } + } + }, + "DescribeSnapshots": { + "input": { + "type": "structure", + "members": { + "DirectoryId": {}, + "SnapshotIds": { + "type": "list", + "member": {} + }, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Snapshots": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DirectoryId": {}, + "SnapshotId": {}, + "Type": {}, + "Name": {}, + "Status": {}, + "StartTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeTrusts": { + "input": { + "type": "structure", + "members": { + "DirectoryId": {}, + "TrustIds": { + "type": "list", + "member": {} + }, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Trusts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DirectoryId": {}, + "TrustId": {}, + "RemoteDomainName": {}, + "TrustType": {}, + "TrustDirection": {}, + "TrustState": {}, + "CreatedDateTime": { + "type": "timestamp" + }, + "LastUpdatedDateTime": { + "type": "timestamp" + }, + "StateLastUpdatedDateTime": { + "type": "timestamp" + }, + "TrustStateReason": {} + } + } + }, + "NextToken": {} + } + } + }, + "DisableRadius": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableSso": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {}, + "UserName": {}, + "Password": { + "shape": "Sj" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "EnableRadius": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "RadiusSettings" + ], + "members": { + "DirectoryId": {}, + "RadiusSettings": { + "shape": "S2q" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "EnableSso": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {}, + "UserName": {}, + "Password": { + "shape": "Sj" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "GetDirectoryLimits": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "DirectoryLimits": { + "type": "structure", + "members": { + "CloudOnlyDirectoriesLimit": { + "type": "integer" + }, + "CloudOnlyDirectoriesCurrentCount": { + "type": "integer" + }, + "CloudOnlyDirectoriesLimitReached": { + "type": "boolean" + }, + "CloudOnlyMicrosoftADLimit": { + "type": "integer" + }, + "CloudOnlyMicrosoftADCurrentCount": { + "type": "integer" + }, + "CloudOnlyMicrosoftADLimitReached": { + "type": "boolean" + }, + "ConnectedDirectoriesLimit": { + "type": "integer" + }, + "ConnectedDirectoriesCurrentCount": { + "type": "integer" + }, + "ConnectedDirectoriesLimitReached": { + "type": "boolean" + } + } + } + } + } + }, + "GetSnapshotLimits": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {} + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotLimits": { + "type": "structure", + "members": { + "ManualSnapshotsLimit": { + "type": "integer" + }, + "ManualSnapshotsCurrentCount": { + "type": "integer" + }, + "ManualSnapshotsLimitReached": { + "type": "boolean" + } + } + } + } + } + }, + "ListIpRoutes": { + "input": { + "type": "structure", + "required": [ + "DirectoryId" + ], + "members": { + "DirectoryId": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "IpRoutesInfo": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DirectoryId": {}, + "CidrIp": {}, + "IpRouteStatusMsg": {}, + "AddedDateTime": { + "type": "timestamp" + }, + "IpRouteStatusReason": {}, + "Description": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceId" + ], + "members": { + "ResourceId": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Tags": { + "shape": "Sb" + }, + "NextToken": {} + } + } + }, + "RegisterEventTopic": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "TopicName" + ], + "members": { + "DirectoryId": {}, + "TopicName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RemoveIpRoutes": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "CidrIps" + ], + "members": { + "DirectoryId": {}, + "CidrIps": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "TagKeys" + ], + "members": { + "ResourceId": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RestoreFromSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotId" + ], + "members": { + "SnapshotId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UpdateConditionalForwarder": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "RemoteDomainName", + "DnsIpAddrs" + ], + "members": { + "DirectoryId": {}, + "RemoteDomainName": {}, + "DnsIpAddrs": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UpdateRadius": { + "input": { + "type": "structure", + "required": [ + "DirectoryId", + "RadiusSettings" + ], + "members": { + "DirectoryId": {}, + "RadiusSettings": { + "shape": "S2q" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "VerifyTrust": { + "input": { + "type": "structure", + "required": [ + "TrustId" + ], + "members": { + "TrustId": {} + } + }, + "output": { + "type": "structure", + "members": { + "TrustId": {} + } + } + } + }, + "shapes": { + "Sb": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sj": { + "type": "string", + "sensitive": true + }, + "Sn": { + "type": "list", + "member": {} + }, + "Sp": { + "type": "list", + "member": {} + }, + "S10": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Value": {} + } + } + }, + "S1b": { + "type": "string", + "sensitive": true + }, + "S1c": { + "type": "structure", + "required": [ + "VpcId", + "SubnetIds" + ], + "members": { + "VpcId": {}, + "SubnetIds": { + "shape": "Sn" + } + } + }, + "S2m": { + "type": "list", + "member": {} + }, + "S2q": { + "type": "structure", + "members": { + "RadiusServers": { + "type": "list", + "member": {} + }, + "RadiusPort": { + "type": "integer" + }, + "RadiusTimeout": { + "type": "integer" + }, + "RadiusRetries": { + "type": "integer" + }, + "SharedSecret": { + "type": "string", + "sensitive": true + }, + "AuthenticationProtocol": {}, + "DisplayLabel": {}, + "UseSameUsername": { + "type": "boolean" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json new file mode 100644 index 0000000..022146d --- /dev/null +++ b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json @@ -0,0 +1,663 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2011-12-05", + "endpointPrefix": "dynamodb", + "jsonVersion": "1.0", + "protocol": "json", + "serviceAbbreviation": "DynamoDB", + "serviceFullName": "Amazon DynamoDB", + "signatureVersion": "v4", + "targetPrefix": "DynamoDB_20111205" + }, + "operations": { + "BatchGetItem": { + "input": { + "type": "structure", + "required": [ + "RequestItems" + ], + "members": { + "RequestItems": { + "shape": "S2" + } + } + }, + "output": { + "type": "structure", + "members": { + "Responses": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "Items": { + "shape": "Sk" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "UnprocessedKeys": { + "shape": "S2" + } + } + } + }, + "BatchWriteItem": { + "input": { + "type": "structure", + "required": [ + "RequestItems" + ], + "members": { + "RequestItems": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "members": { + "Responses": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "UnprocessedItems": { + "shape": "So" + } + } + } + }, + "CreateTable": { + "input": { + "type": "structure", + "required": [ + "TableName", + "KeySchema", + "ProvisionedThroughput" + ], + "members": { + "TableName": {}, + "KeySchema": { + "shape": "Sy" + }, + "ProvisionedThroughput": { + "shape": "S12" + } + } + }, + "output": { + "type": "structure", + "members": { + "TableDescription": { + "shape": "S15" + } + } + } + }, + "DeleteItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Key" + ], + "members": { + "TableName": {}, + "Key": { + "shape": "S6" + }, + "Expected": { + "shape": "S1b" + }, + "ReturnValues": {} + } + }, + "output": { + "type": "structure", + "members": { + "Attributes": { + "shape": "Sl" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "DeleteTable": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {} + } + }, + "output": { + "type": "structure", + "members": { + "TableDescription": { + "shape": "S15" + } + } + } + }, + "DescribeTable": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {} + } + }, + "output": { + "type": "structure", + "members": { + "Table": { + "shape": "S15" + } + } + } + }, + "GetItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Key" + ], + "members": { + "TableName": {}, + "Key": { + "shape": "S6" + }, + "AttributesToGet": { + "shape": "Se" + }, + "ConsistentRead": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "Item": { + "shape": "Sl" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "ListTables": { + "input": { + "type": "structure", + "members": { + "ExclusiveStartTableName": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TableNames": { + "type": "list", + "member": {} + }, + "LastEvaluatedTableName": {} + } + } + }, + "PutItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Item" + ], + "members": { + "TableName": {}, + "Item": { + "shape": "Ss" + }, + "Expected": { + "shape": "S1b" + }, + "ReturnValues": {} + } + }, + "output": { + "type": "structure", + "members": { + "Attributes": { + "shape": "Sl" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "Query": { + "input": { + "type": "structure", + "required": [ + "TableName", + "HashKeyValue" + ], + "members": { + "TableName": {}, + "AttributesToGet": { + "shape": "Se" + }, + "Limit": { + "type": "integer" + }, + "ConsistentRead": { + "type": "boolean" + }, + "Count": { + "type": "boolean" + }, + "HashKeyValue": { + "shape": "S7" + }, + "RangeKeyCondition": { + "shape": "S1u" + }, + "ScanIndexForward": { + "type": "boolean" + }, + "ExclusiveStartKey": { + "shape": "S6" + } + } + }, + "output": { + "type": "structure", + "members": { + "Items": { + "shape": "Sk" + }, + "Count": { + "type": "integer" + }, + "LastEvaluatedKey": { + "shape": "S6" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "Scan": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {}, + "AttributesToGet": { + "shape": "Se" + }, + "Limit": { + "type": "integer" + }, + "Count": { + "type": "boolean" + }, + "ScanFilter": { + "type": "map", + "key": {}, + "value": { + "shape": "S1u" + } + }, + "ExclusiveStartKey": { + "shape": "S6" + } + } + }, + "output": { + "type": "structure", + "members": { + "Items": { + "shape": "Sk" + }, + "Count": { + "type": "integer" + }, + "ScannedCount": { + "type": "integer" + }, + "LastEvaluatedKey": { + "shape": "S6" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "UpdateItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Key", + "AttributeUpdates" + ], + "members": { + "TableName": {}, + "Key": { + "shape": "S6" + }, + "AttributeUpdates": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "Value": { + "shape": "S7" + }, + "Action": {} + } + } + }, + "Expected": { + "shape": "S1b" + }, + "ReturnValues": {} + } + }, + "output": { + "type": "structure", + "members": { + "Attributes": { + "shape": "Sl" + }, + "ConsumedCapacityUnits": { + "type": "double" + } + } + } + }, + "UpdateTable": { + "input": { + "type": "structure", + "required": [ + "TableName", + "ProvisionedThroughput" + ], + "members": { + "TableName": {}, + "ProvisionedThroughput": { + "shape": "S12" + } + } + }, + "output": { + "type": "structure", + "members": { + "TableDescription": { + "shape": "S15" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "Keys" + ], + "members": { + "Keys": { + "type": "list", + "member": { + "shape": "S6" + } + }, + "AttributesToGet": { + "shape": "Se" + }, + "ConsistentRead": { + "type": "boolean" + } + } + } + }, + "S6": { + "type": "structure", + "required": [ + "HashKeyElement" + ], + "members": { + "HashKeyElement": { + "shape": "S7" + }, + "RangeKeyElement": { + "shape": "S7" + } + } + }, + "S7": { + "type": "structure", + "members": { + "S": {}, + "N": {}, + "B": { + "type": "blob" + }, + "SS": { + "type": "list", + "member": {} + }, + "NS": { + "type": "list", + "member": {} + }, + "BS": { + "type": "list", + "member": { + "type": "blob" + } + } + } + }, + "Se": { + "type": "list", + "member": {} + }, + "Sk": { + "type": "list", + "member": { + "shape": "Sl" + } + }, + "Sl": { + "type": "map", + "key": {}, + "value": { + "shape": "S7" + } + }, + "So": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PutRequest": { + "type": "structure", + "required": [ + "Item" + ], + "members": { + "Item": { + "shape": "Ss" + } + } + }, + "DeleteRequest": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": { + "shape": "S6" + } + } + } + } + } + } + }, + "Ss": { + "type": "map", + "key": {}, + "value": { + "shape": "S7" + } + }, + "Sy": { + "type": "structure", + "required": [ + "HashKeyElement" + ], + "members": { + "HashKeyElement": { + "shape": "Sz" + }, + "RangeKeyElement": { + "shape": "Sz" + } + } + }, + "Sz": { + "type": "structure", + "required": [ + "AttributeName", + "AttributeType" + ], + "members": { + "AttributeName": {}, + "AttributeType": {} + } + }, + "S12": { + "type": "structure", + "required": [ + "ReadCapacityUnits", + "WriteCapacityUnits" + ], + "members": { + "ReadCapacityUnits": { + "type": "long" + }, + "WriteCapacityUnits": { + "type": "long" + } + } + }, + "S15": { + "type": "structure", + "members": { + "TableName": {}, + "KeySchema": { + "shape": "Sy" + }, + "TableStatus": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "ProvisionedThroughput": { + "type": "structure", + "members": { + "LastIncreaseDateTime": { + "type": "timestamp" + }, + "LastDecreaseDateTime": { + "type": "timestamp" + }, + "NumberOfDecreasesToday": { + "type": "long" + }, + "ReadCapacityUnits": { + "type": "long" + }, + "WriteCapacityUnits": { + "type": "long" + } + } + }, + "TableSizeBytes": { + "type": "long" + }, + "ItemCount": { + "type": "long" + } + } + }, + "S1b": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "Value": { + "shape": "S7" + }, + "Exists": { + "type": "boolean" + } + } + } + }, + "S1u": { + "type": "structure", + "required": [ + "ComparisonOperator" + ], + "members": { + "AttributeValueList": { + "type": "list", + "member": { + "shape": "S7" + } + }, + "ComparisonOperator": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json new file mode 100644 index 0000000..d4075e1 --- /dev/null +++ b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json @@ -0,0 +1,26 @@ +{ + "pagination": { + "BatchGetItem": { + "input_token": "RequestItems", + "output_token": "UnprocessedKeys" + }, + "ListTables": { + "input_token": "ExclusiveStartTableName", + "output_token": "LastEvaluatedTableName", + "limit_key": "Limit", + "result_key": "TableNames" + }, + "Query": { + "input_token": "ExclusiveStartKey", + "output_token": "LastEvaluatedKey", + "limit_key": "Limit", + "result_key": "Items" + }, + "Scan": { + "input_token": "ExclusiveStartKey", + "output_token": "LastEvaluatedKey", + "limit_key": "Limit", + "result_key": "Items" + } + } +} diff --git a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json new file mode 100644 index 0000000..43a55ca --- /dev/null +++ b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json @@ -0,0 +1,35 @@ +{ + "version": 2, + "waiters": { + "TableExists": { + "delay": 20, + "operation": "DescribeTable", + "maxAttempts": 25, + "acceptors": [ + { + "expected": "ACTIVE", + "matcher": "path", + "state": "success", + "argument": "Table.TableStatus" + }, + { + "expected": "ResourceNotFoundException", + "matcher": "error", + "state": "retry" + } + ] + }, + "TableNotExists": { + "delay": 20, + "operation": "DescribeTable", + "maxAttempts": 25, + "acceptors": [ + { + "expected": "ResourceNotFoundException", + "matcher": "error", + "state": "success" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json new file mode 100644 index 0000000..f12b3d8 --- /dev/null +++ b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json @@ -0,0 +1,1050 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-08-10", + "endpointPrefix": "dynamodb", + "jsonVersion": "1.0", + "protocol": "json", + "serviceAbbreviation": "DynamoDB", + "serviceFullName": "Amazon DynamoDB", + "signatureVersion": "v4", + "targetPrefix": "DynamoDB_20120810" + }, + "operations": { + "BatchGetItem": { + "input": { + "type": "structure", + "required": [ + "RequestItems" + ], + "members": { + "RequestItems": { + "shape": "S2" + }, + "ReturnConsumedCapacity": {} + } + }, + "output": { + "type": "structure", + "members": { + "Responses": { + "type": "map", + "key": {}, + "value": { + "shape": "Sr" + } + }, + "UnprocessedKeys": { + "shape": "S2" + }, + "ConsumedCapacity": { + "shape": "St" + } + } + } + }, + "BatchWriteItem": { + "input": { + "type": "structure", + "required": [ + "RequestItems" + ], + "members": { + "RequestItems": { + "shape": "S10" + }, + "ReturnConsumedCapacity": {}, + "ReturnItemCollectionMetrics": {} + } + }, + "output": { + "type": "structure", + "members": { + "UnprocessedItems": { + "shape": "S10" + }, + "ItemCollectionMetrics": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "shape": "S1a" + } + } + }, + "ConsumedCapacity": { + "shape": "St" + } + } + } + }, + "CreateTable": { + "input": { + "type": "structure", + "required": [ + "AttributeDefinitions", + "TableName", + "KeySchema", + "ProvisionedThroughput" + ], + "members": { + "AttributeDefinitions": { + "shape": "S1f" + }, + "TableName": {}, + "KeySchema": { + "shape": "S1j" + }, + "LocalSecondaryIndexes": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "IndexName", + "KeySchema", + "Projection" + ], + "members": { + "IndexName": {}, + "KeySchema": { + "shape": "S1j" + }, + "Projection": { + "shape": "S1o" + } + } + } + }, + "GlobalSecondaryIndexes": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "IndexName", + "KeySchema", + "Projection", + "ProvisionedThroughput" + ], + "members": { + "IndexName": {}, + "KeySchema": { + "shape": "S1j" + }, + "Projection": { + "shape": "S1o" + }, + "ProvisionedThroughput": { + "shape": "S1u" + } + } + } + }, + "ProvisionedThroughput": { + "shape": "S1u" + }, + "StreamSpecification": { + "shape": "S1w" + } + } + }, + "output": { + "type": "structure", + "members": { + "TableDescription": { + "shape": "S20" + } + } + } + }, + "DeleteItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Key" + ], + "members": { + "TableName": {}, + "Key": { + "shape": "S6" + }, + "Expected": { + "shape": "S2e" + }, + "ConditionalOperator": {}, + "ReturnValues": {}, + "ReturnConsumedCapacity": {}, + "ReturnItemCollectionMetrics": {}, + "ConditionExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + }, + "ExpressionAttributeValues": { + "shape": "S2m" + } + } + }, + "output": { + "type": "structure", + "members": { + "Attributes": { + "shape": "Ss" + }, + "ConsumedCapacity": { + "shape": "Su" + }, + "ItemCollectionMetrics": { + "shape": "S1a" + } + } + } + }, + "DeleteTable": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {} + } + }, + "output": { + "type": "structure", + "members": { + "TableDescription": { + "shape": "S20" + } + } + } + }, + "DescribeLimits": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "AccountMaxReadCapacityUnits": { + "type": "long" + }, + "AccountMaxWriteCapacityUnits": { + "type": "long" + }, + "TableMaxReadCapacityUnits": { + "type": "long" + }, + "TableMaxWriteCapacityUnits": { + "type": "long" + } + } + } + }, + "DescribeTable": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {} + } + }, + "output": { + "type": "structure", + "members": { + "Table": { + "shape": "S20" + } + } + } + }, + "GetItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Key" + ], + "members": { + "TableName": {}, + "Key": { + "shape": "S6" + }, + "AttributesToGet": { + "shape": "Sj" + }, + "ConsistentRead": { + "type": "boolean" + }, + "ReturnConsumedCapacity": {}, + "ProjectionExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + } + } + }, + "output": { + "type": "structure", + "members": { + "Item": { + "shape": "Ss" + }, + "ConsumedCapacity": { + "shape": "Su" + } + } + } + }, + "ListTables": { + "input": { + "type": "structure", + "members": { + "ExclusiveStartTableName": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TableNames": { + "type": "list", + "member": {} + }, + "LastEvaluatedTableName": {} + } + } + }, + "PutItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Item" + ], + "members": { + "TableName": {}, + "Item": { + "shape": "S14" + }, + "Expected": { + "shape": "S2e" + }, + "ReturnValues": {}, + "ReturnConsumedCapacity": {}, + "ReturnItemCollectionMetrics": {}, + "ConditionalOperator": {}, + "ConditionExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + }, + "ExpressionAttributeValues": { + "shape": "S2m" + } + } + }, + "output": { + "type": "structure", + "members": { + "Attributes": { + "shape": "Ss" + }, + "ConsumedCapacity": { + "shape": "Su" + }, + "ItemCollectionMetrics": { + "shape": "S1a" + } + } + } + }, + "Query": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {}, + "IndexName": {}, + "Select": {}, + "AttributesToGet": { + "shape": "Sj" + }, + "Limit": { + "type": "integer" + }, + "ConsistentRead": { + "type": "boolean" + }, + "KeyConditions": { + "type": "map", + "key": {}, + "value": { + "shape": "S37" + } + }, + "QueryFilter": { + "shape": "S38" + }, + "ConditionalOperator": {}, + "ScanIndexForward": { + "type": "boolean" + }, + "ExclusiveStartKey": { + "shape": "S6" + }, + "ReturnConsumedCapacity": {}, + "ProjectionExpression": {}, + "FilterExpression": {}, + "KeyConditionExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + }, + "ExpressionAttributeValues": { + "shape": "S2m" + } + } + }, + "output": { + "type": "structure", + "members": { + "Items": { + "shape": "Sr" + }, + "Count": { + "type": "integer" + }, + "ScannedCount": { + "type": "integer" + }, + "LastEvaluatedKey": { + "shape": "S6" + }, + "ConsumedCapacity": { + "shape": "Su" + } + } + } + }, + "Scan": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "TableName": {}, + "IndexName": {}, + "AttributesToGet": { + "shape": "Sj" + }, + "Limit": { + "type": "integer" + }, + "Select": {}, + "ScanFilter": { + "shape": "S38" + }, + "ConditionalOperator": {}, + "ExclusiveStartKey": { + "shape": "S6" + }, + "ReturnConsumedCapacity": {}, + "TotalSegments": { + "type": "integer" + }, + "Segment": { + "type": "integer" + }, + "ProjectionExpression": {}, + "FilterExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + }, + "ExpressionAttributeValues": { + "shape": "S2m" + }, + "ConsistentRead": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "Items": { + "shape": "Sr" + }, + "Count": { + "type": "integer" + }, + "ScannedCount": { + "type": "integer" + }, + "LastEvaluatedKey": { + "shape": "S6" + }, + "ConsumedCapacity": { + "shape": "Su" + } + } + } + }, + "UpdateItem": { + "input": { + "type": "structure", + "required": [ + "TableName", + "Key" + ], + "members": { + "TableName": {}, + "Key": { + "shape": "S6" + }, + "AttributeUpdates": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "Value": { + "shape": "S8" + }, + "Action": {} + } + } + }, + "Expected": { + "shape": "S2e" + }, + "ConditionalOperator": {}, + "ReturnValues": {}, + "ReturnConsumedCapacity": {}, + "ReturnItemCollectionMetrics": {}, + "UpdateExpression": {}, + "ConditionExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + }, + "ExpressionAttributeValues": { + "shape": "S2m" + } + } + }, + "output": { + "type": "structure", + "members": { + "Attributes": { + "shape": "Ss" + }, + "ConsumedCapacity": { + "shape": "Su" + }, + "ItemCollectionMetrics": { + "shape": "S1a" + } + } + } + }, + "UpdateTable": { + "input": { + "type": "structure", + "required": [ + "TableName" + ], + "members": { + "AttributeDefinitions": { + "shape": "S1f" + }, + "TableName": {}, + "ProvisionedThroughput": { + "shape": "S1u" + }, + "GlobalSecondaryIndexUpdates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Update": { + "type": "structure", + "required": [ + "IndexName", + "ProvisionedThroughput" + ], + "members": { + "IndexName": {}, + "ProvisionedThroughput": { + "shape": "S1u" + } + } + }, + "Create": { + "type": "structure", + "required": [ + "IndexName", + "KeySchema", + "Projection", + "ProvisionedThroughput" + ], + "members": { + "IndexName": {}, + "KeySchema": { + "shape": "S1j" + }, + "Projection": { + "shape": "S1o" + }, + "ProvisionedThroughput": { + "shape": "S1u" + } + } + }, + "Delete": { + "type": "structure", + "required": [ + "IndexName" + ], + "members": { + "IndexName": {} + } + } + } + } + }, + "StreamSpecification": { + "shape": "S1w" + } + } + }, + "output": { + "type": "structure", + "members": { + "TableDescription": { + "shape": "S20" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "Keys" + ], + "members": { + "Keys": { + "type": "list", + "member": { + "shape": "S6" + } + }, + "AttributesToGet": { + "shape": "Sj" + }, + "ConsistentRead": { + "type": "boolean" + }, + "ProjectionExpression": {}, + "ExpressionAttributeNames": { + "shape": "Sm" + } + } + } + }, + "S6": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "S8": { + "type": "structure", + "members": { + "S": {}, + "N": {}, + "B": { + "type": "blob" + }, + "SS": { + "type": "list", + "member": {} + }, + "NS": { + "type": "list", + "member": {} + }, + "BS": { + "type": "list", + "member": { + "type": "blob" + } + }, + "M": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "L": { + "type": "list", + "member": { + "shape": "S8" + } + }, + "NULL": { + "type": "boolean" + }, + "BOOL": { + "type": "boolean" + } + } + }, + "Sj": { + "type": "list", + "member": {} + }, + "Sm": { + "type": "map", + "key": {}, + "value": {} + }, + "Sr": { + "type": "list", + "member": { + "shape": "Ss" + } + }, + "Ss": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "St": { + "type": "list", + "member": { + "shape": "Su" + } + }, + "Su": { + "type": "structure", + "members": { + "TableName": {}, + "CapacityUnits": { + "type": "double" + }, + "Table": { + "shape": "Sw" + }, + "LocalSecondaryIndexes": { + "shape": "Sx" + }, + "GlobalSecondaryIndexes": { + "shape": "Sx" + } + } + }, + "Sw": { + "type": "structure", + "members": { + "CapacityUnits": { + "type": "double" + } + } + }, + "Sx": { + "type": "map", + "key": {}, + "value": { + "shape": "Sw" + } + }, + "S10": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PutRequest": { + "type": "structure", + "required": [ + "Item" + ], + "members": { + "Item": { + "shape": "S14" + } + } + }, + "DeleteRequest": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": { + "shape": "S6" + } + } + } + } + } + } + }, + "S14": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "S1a": { + "type": "structure", + "members": { + "ItemCollectionKey": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "SizeEstimateRangeGB": { + "type": "list", + "member": { + "type": "double" + } + } + } + }, + "S1f": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AttributeName", + "AttributeType" + ], + "members": { + "AttributeName": {}, + "AttributeType": {} + } + } + }, + "S1j": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AttributeName", + "KeyType" + ], + "members": { + "AttributeName": {}, + "KeyType": {} + } + } + }, + "S1o": { + "type": "structure", + "members": { + "ProjectionType": {}, + "NonKeyAttributes": { + "type": "list", + "member": {} + } + } + }, + "S1u": { + "type": "structure", + "required": [ + "ReadCapacityUnits", + "WriteCapacityUnits" + ], + "members": { + "ReadCapacityUnits": { + "type": "long" + }, + "WriteCapacityUnits": { + "type": "long" + } + } + }, + "S1w": { + "type": "structure", + "members": { + "StreamEnabled": { + "type": "boolean" + }, + "StreamViewType": {} + } + }, + "S20": { + "type": "structure", + "members": { + "AttributeDefinitions": { + "shape": "S1f" + }, + "TableName": {}, + "KeySchema": { + "shape": "S1j" + }, + "TableStatus": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "ProvisionedThroughput": { + "shape": "S23" + }, + "TableSizeBytes": { + "type": "long" + }, + "ItemCount": { + "type": "long" + }, + "TableArn": {}, + "LocalSecondaryIndexes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "IndexName": {}, + "KeySchema": { + "shape": "S1j" + }, + "Projection": { + "shape": "S1o" + }, + "IndexSizeBytes": { + "type": "long" + }, + "ItemCount": { + "type": "long" + }, + "IndexArn": {} + } + } + }, + "GlobalSecondaryIndexes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "IndexName": {}, + "KeySchema": { + "shape": "S1j" + }, + "Projection": { + "shape": "S1o" + }, + "IndexStatus": {}, + "Backfilling": { + "type": "boolean" + }, + "ProvisionedThroughput": { + "shape": "S23" + }, + "IndexSizeBytes": { + "type": "long" + }, + "ItemCount": { + "type": "long" + }, + "IndexArn": {} + } + } + }, + "StreamSpecification": { + "shape": "S1w" + }, + "LatestStreamLabel": {}, + "LatestStreamArn": {} + } + }, + "S23": { + "type": "structure", + "members": { + "LastIncreaseDateTime": { + "type": "timestamp" + }, + "LastDecreaseDateTime": { + "type": "timestamp" + }, + "NumberOfDecreasesToday": { + "type": "long" + }, + "ReadCapacityUnits": { + "type": "long" + }, + "WriteCapacityUnits": { + "type": "long" + } + } + }, + "S2e": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "members": { + "Value": { + "shape": "S8" + }, + "Exists": { + "type": "boolean" + }, + "ComparisonOperator": {}, + "AttributeValueList": { + "shape": "S2i" + } + } + } + }, + "S2i": { + "type": "list", + "member": { + "shape": "S8" + } + }, + "S2m": { + "type": "map", + "key": {}, + "value": { + "shape": "S8" + } + }, + "S37": { + "type": "structure", + "required": [ + "ComparisonOperator" + ], + "members": { + "AttributeValueList": { + "shape": "S2i" + }, + "ComparisonOperator": {} + } + }, + "S38": { + "type": "map", + "key": {}, + "value": { + "shape": "S37" + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json new file mode 100644 index 0000000..d4075e1 --- /dev/null +++ b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json @@ -0,0 +1,26 @@ +{ + "pagination": { + "BatchGetItem": { + "input_token": "RequestItems", + "output_token": "UnprocessedKeys" + }, + "ListTables": { + "input_token": "ExclusiveStartTableName", + "output_token": "LastEvaluatedTableName", + "limit_key": "Limit", + "result_key": "TableNames" + }, + "Query": { + "input_token": "ExclusiveStartKey", + "output_token": "LastEvaluatedKey", + "limit_key": "Limit", + "result_key": "Items" + }, + "Scan": { + "input_token": "ExclusiveStartKey", + "output_token": "LastEvaluatedKey", + "limit_key": "Limit", + "result_key": "Items" + } + } +} diff --git a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json new file mode 100644 index 0000000..43a55ca --- /dev/null +++ b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json @@ -0,0 +1,35 @@ +{ + "version": 2, + "waiters": { + "TableExists": { + "delay": 20, + "operation": "DescribeTable", + "maxAttempts": 25, + "acceptors": [ + { + "expected": "ACTIVE", + "matcher": "path", + "state": "success", + "argument": "Table.TableStatus" + }, + { + "expected": "ResourceNotFoundException", + "matcher": "error", + "state": "retry" + } + ] + }, + "TableNotExists": { + "delay": 20, + "operation": "DescribeTable", + "maxAttempts": 25, + "acceptors": [ + { + "expected": "ResourceNotFoundException", + "matcher": "error", + "state": "success" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json new file mode 100644 index 0000000..f6a8719 --- /dev/null +++ b/node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json @@ -0,0 +1,3740 @@ +{ + "version": "1.0", + "examples": { + "AllocateAddress": [ + { + "input": { + "Domain": "vpc" + }, + "output": { + "AllocationId": "eipalloc-64d5890a", + "Domain": "vpc", + "PublicIp": "203.0.113.0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example allocates an Elastic IP address to use with an instance in a VPC.", + "id": "ec2-allocate-address-1", + "title": "To allocate an Elastic IP address for EC2-VPC" + }, + { + "output": { + "Domain": "standard", + "PublicIp": "198.51.100.0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example allocates an Elastic IP address to use with an instance in EC2-Classic.", + "id": "ec2-allocate-address-2", + "title": "To allocate an Elastic IP address for EC2-Classic" + } + ], + "AssignPrivateIpAddresses": [ + { + "input": { + "NetworkInterfaceId": "eni-e5aa89a3", + "PrivateIpAddresses": [ + "10.0.0.82" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example assigns the specified secondary private IP address to the specified network interface.", + "id": "ec2-assign-private-ip-addresses-1", + "title": "To assign a specific secondary private IP address to an interface" + }, + { + "input": { + "NetworkInterfaceId": "eni-e5aa89a3", + "SecondaryPrivateIpAddressCount": 2 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example assigns two secondary private IP addresses to the specified network interface. Amazon EC2 automatically assigns these IP addresses from the available IP addresses in the CIDR block range of the subnet the network interface is associated with.", + "id": "ec2-assign-private-ip-addresses-2", + "title": "To assign secondary private IP addresses that Amazon EC2 selects to an interface" + } + ], + "AssociateAddress": [ + { + "input": { + "AllocationId": "eipalloc-64d5890a", + "InstanceId": "i-0b263919b6498b123" + }, + "output": { + "AssociationId": "eipassoc-2bebb745" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified Elastic IP address with the specified instance in a VPC.", + "id": "ec2-associate-address-1", + "title": "To associate an Elastic IP address in EC2-VPC" + }, + { + "input": { + "AllocationId": "eipalloc-64d5890a", + "NetworkInterfaceId": "eni-1a2b3c4d" + }, + "output": { + "AssociationId": "eipassoc-2bebb745" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified Elastic IP address with the specified network interface.", + "id": "ec2-associate-address-2", + "title": "To associate an Elastic IP address with a network interface" + }, + { + "input": { + "InstanceId": "i-07ffe74c7330ebf53", + "PublicIp": "198.51.100.0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates an Elastic IP address with an instance in EC2-Classic.", + "id": "ec2-associate-address-3", + "title": "To associate an Elastic IP address in EC2-Classic" + } + ], + "AssociateDhcpOptions": [ + { + "input": { + "DhcpOptionsId": "dopt-d9070ebb", + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified DHCP options set with the specified VPC.", + "id": "ec2-associate-dhcp-options-1", + "title": "To associate a DHCP options set with a VPC" + }, + { + "input": { + "DhcpOptionsId": "default", + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the default DHCP options set with the specified VPC.", + "id": "ec2-associate-dhcp-options-2", + "title": "To associate the default DHCP options set with a VPC" + } + ], + "AssociateRouteTable": [ + { + "input": { + "RouteTableId": "rtb-22574640", + "SubnetId": "subnet-9d4a7b6" + }, + "output": { + "AssociationId": "rtbassoc-781d0d1a" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified route table with the specified subnet.", + "id": "ec2-associate-route-table-1", + "title": "To associate a route table with a subnet" + } + ], + "AttachInternetGateway": [ + { + "input": { + "InternetGatewayId": "igw-c0a643a9", + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example attaches the specified Internet gateway to the specified VPC.", + "id": "ec2-attach-internet-gateway-1", + "title": "To attach an Internet gateway to a VPC" + } + ], + "AttachNetworkInterface": [ + { + "input": { + "DeviceIndex": 1, + "InstanceId": "i-1234567890abcdef0", + "NetworkInterfaceId": "eni-e5aa89a3" + }, + "output": { + "AttachmentId": "eni-attach-66c4350a" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example attaches the specified network interface to the specified instance.", + "id": "ec2-attach-network-interface-1", + "title": "To attach a network interface to an instance" + } + ], + "AttachVolume": [ + { + "input": { + "Device": "/dev/sdf", + "InstanceId": "i-01474ef662b89480", + "VolumeId": "vol-1234567890abcdef0" + }, + "output": { + "AttachTime": "2016-08-29T18:52:32.724Z", + "Device": "/dev/sdf", + "InstanceId": "i-01474ef662b89480", + "State": "attaching", + "VolumeId": "vol-1234567890abcdef0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example attaches a volume (``vol-1234567890abcdef0``) to an instance (``i-01474ef662b89480``) as ``/dev/sdf``.", + "id": "to-attach-a-volume-to-an-instance-1472499213109", + "title": "To attach a volume to an instance" + } + ], + "CancelSpotFleetRequests": [ + { + "input": { + "SpotFleetRequestIds": [ + "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + ], + "TerminateInstances": true + }, + "output": { + "SuccessfulFleetRequests": [ + { + "CurrentSpotFleetRequestState": "cancelled_running", + "PreviousSpotFleetRequestState": "active", + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example cancels the specified Spot fleet request and terminates its associated Spot Instances.", + "id": "ec2-cancel-spot-fleet-requests-1", + "title": "To cancel a Spot fleet request" + }, + { + "input": { + "SpotFleetRequestIds": [ + "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + ], + "TerminateInstances": false + }, + "output": { + "SuccessfulFleetRequests": [ + { + "CurrentSpotFleetRequestState": "cancelled_terminating", + "PreviousSpotFleetRequestState": "active", + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example cancels the specified Spot fleet request without terminating its associated Spot Instances.", + "id": "ec2-cancel-spot-fleet-requests-2", + "title": "To cancel a Spot fleet request without terminating its Spot Instances" + } + ], + "CancelSpotInstanceRequests": [ + { + "input": { + "SpotInstanceRequestIds": [ + "sir-08b93456" + ] + }, + "output": { + "CancelledSpotInstanceRequests": [ + { + "SpotInstanceRequestId": "sir-08b93456", + "State": "cancelled" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example cancels a Spot Instance request.", + "id": "ec2-cancel-spot-instance-requests-1", + "title": "To cancel Spot Instance requests" + } + ], + "ConfirmProductInstance": [ + { + "input": { + "InstanceId": "i-1234567890abcdef0", + "ProductCode": "774F4FF8" + }, + "output": { + "OwnerId": "123456789012" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example determines whether the specified product code is associated with the specified instance.", + "id": "to-confirm-the-product-instance-1472712108494", + "title": "To confirm the product instance" + } + ], + "CopySnapshot": [ + { + "input": { + "Description": "This is my copied snapshot.", + "DestinationRegion": "us-east-1", + "SourceRegion": "us-west-2", + "SourceSnapshotId": "snap-066877671789bd71b" + }, + "output": { + "SnapshotId": "snap-066877671789bd71b" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example copies a snapshot with the snapshot ID of ``snap-066877671789bd71b`` from the ``us-west-2`` region to the ``us-east-1`` region and adds a short description to identify the snapshot.", + "id": "to-copy-a-snapshot-1472502259774", + "title": "To copy a snapshot" + } + ], + "CreateCustomerGateway": [ + { + "input": { + "BgpAsn": 65534, + "PublicIp": "12.1.2.3", + "Type": "ipsec.1" + }, + "output": { + "CustomerGateway": { + "BgpAsn": "65534", + "CustomerGatewayId": "cgw-0e11f167", + "IpAddress": "12.1.2.3", + "State": "available", + "Type": "ipsec.1" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a customer gateway with the specified IP address for its outside interface.", + "id": "ec2-create-customer-gateway-1", + "title": "To create a customer gateway" + } + ], + "CreateDhcpOptions": [ + { + "input": { + "DhcpConfigurations": [ + { + "Key": "domain-name-servers", + "Values": [ + "10.2.5.1", + "10.2.5.2" + ] + } + ] + }, + "output": { + "DhcpOptions": { + "DhcpConfigurations": [ + { + "Key": "domain-name-servers", + "Values": [ + { + "Value": "10.2.5.2" + }, + { + "Value": "10.2.5.1" + } + ] + } + ], + "DhcpOptionsId": "dopt-d9070ebb" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a DHCP options set.", + "id": "ec2-create-dhcp-options-1", + "title": "To create a DHCP options set" + } + ], + "CreateInternetGateway": [ + { + "output": { + "InternetGateway": { + "Attachments": [ + + ], + "InternetGatewayId": "igw-c0a643a9", + "Tags": [ + + ] + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an Internet gateway.", + "id": "ec2-create-internet-gateway-1", + "title": "To create an Internet gateway" + } + ], + "CreateKeyPair": [ + { + "input": { + "KeyName": "my-key-pair" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a key pair named my-key-pair.", + "id": "ec2-create-key-pair-1", + "title": "To create a key pair" + } + ], + "CreateNatGateway": [ + { + "input": { + "AllocationId": "eipalloc-37fc1a52", + "SubnetId": "subnet-1a2b3c4d" + }, + "output": { + "NatGateway": { + "CreateTime": "2015-12-17T12:45:26.732Z", + "NatGatewayAddresses": [ + { + "AllocationId": "eipalloc-37fc1a52" + } + ], + "NatGatewayId": "nat-08d48af2a8e83edfd", + "State": "pending", + "SubnetId": "subnet-1a2b3c4d", + "VpcId": "vpc-1122aabb" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a NAT gateway in subnet subnet-1a2b3c4d and associates an Elastic IP address with the allocation ID eipalloc-37fc1a52 with the NAT gateway.", + "id": "ec2-create-nat-gateway-1", + "title": "To create a NAT gateway" + } + ], + "CreateNetworkAcl": [ + { + "input": { + "VpcId": "vpc-a01106c2" + }, + "output": { + "NetworkAcl": { + "Associations": [ + + ], + "Entries": [ + { + "CidrBlock": "0.0.0.0/0", + "Egress": true, + "Protocol": "-1", + "RuleAction": "deny", + "RuleNumber": 32767 + }, + { + "CidrBlock": "0.0.0.0/0", + "Egress": false, + "Protocol": "-1", + "RuleAction": "deny", + "RuleNumber": 32767 + } + ], + "IsDefault": false, + "NetworkAclId": "acl-5fb85d36", + "Tags": [ + + ], + "VpcId": "vpc-a01106c2" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a network ACL for the specified VPC.", + "id": "ec2-create-network-acl-1", + "title": "To create a network ACL" + } + ], + "CreateNetworkAclEntry": [ + { + "input": { + "CidrBlock": "0.0.0.0/0", + "Egress": false, + "NetworkAclId": "acl-5fb85d36", + "PortRange": { + "From": 53, + "To": 53 + }, + "Protocol": "udp", + "RuleAction": "allow", + "RuleNumber": 100 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an entry for the specified network ACL. The rule allows ingress traffic from anywhere (0.0.0.0/0) on UDP port 53 (DNS) into any associated subnet.", + "id": "ec2-create-network-acl-entry-1", + "title": "To create a network ACL entry" + } + ], + "CreateNetworkInterface": [ + { + "input": { + "Description": "my network interface", + "Groups": [ + "sg-903004f8" + ], + "PrivateIpAddress": "10.0.2.17", + "SubnetId": "subnet-9d4a7b6c" + }, + "output": { + "NetworkInterface": { + "AvailabilityZone": "us-east-1d", + "Description": "my network interface", + "Groups": [ + { + "GroupId": "sg-903004f8", + "GroupName": "default" + } + ], + "MacAddress": "02:1a:80:41:52:9c", + "NetworkInterfaceId": "eni-e5aa89a3", + "OwnerId": "123456789012", + "PrivateIpAddress": "10.0.2.17", + "PrivateIpAddresses": [ + { + "Primary": true, + "PrivateIpAddress": "10.0.2.17" + } + ], + "RequesterManaged": false, + "SourceDestCheck": true, + "Status": "pending", + "SubnetId": "subnet-9d4a7b6c", + "TagSet": [ + + ], + "VpcId": "vpc-a01106c2" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a network interface for the specified subnet.", + "id": "ec2-create-network-interface-1", + "title": "To create a network interface" + } + ], + "CreatePlacementGroup": [ + { + "input": { + "GroupName": "my-cluster", + "Strategy": "cluster" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a placement group with the specified name.", + "id": "to-create-a-placement-group-1472712245768", + "title": "To create a placement group" + } + ], + "CreateRoute": [ + { + "input": { + "DestinationCidrBlock": "0.0.0.0/0", + "GatewayId": "igw-c0a643a9", + "RouteTableId": "rtb-22574640" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a route for the specified route table. The route matches all traffic (0.0.0.0/0) and routes it to the specified Internet gateway.", + "id": "ec2-create-route-1", + "title": "To create a route" + } + ], + "CreateRouteTable": [ + { + "input": { + "VpcId": "vpc-a01106c2" + }, + "output": { + "RouteTable": { + "Associations": [ + + ], + "PropagatingVgws": [ + + ], + "RouteTableId": "rtb-22574640", + "Routes": [ + { + "DestinationCidrBlock": "10.0.0.0/16", + "GatewayId": "local", + "State": "active" + } + ], + "Tags": [ + + ], + "VpcId": "vpc-a01106c2" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a route table for the specified VPC.", + "id": "ec2-create-route-table-1", + "title": "To create a route table" + } + ], + "CreateSnapshot": [ + { + "input": { + "Description": "This is my root volume snapshot.", + "VolumeId": "vol-1234567890abcdef0" + }, + "output": { + "Description": "This is my root volume snapshot.", + "OwnerId": "012345678910", + "SnapshotId": "snap-066877671789bd71b", + "StartTime": "2014-02-28T21:06:01.000Z", + "State": "pending", + "Tags": [ + + ], + "VolumeId": "vol-1234567890abcdef0", + "VolumeSize": 8 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a snapshot of the volume with a volume ID of ``vol-1234567890abcdef0`` and a short description to identify the snapshot.", + "id": "to-create-a-snapshot-1472502529790", + "title": "To create a snapshot" + } + ], + "CreateSpotDatafeedSubscription": [ + { + "input": { + "Bucket": "my-s3-bucket", + "Prefix": "spotdata" + }, + "output": { + "SpotDatafeedSubscription": { + "Bucket": "my-s3-bucket", + "OwnerId": "123456789012", + "Prefix": "spotdata", + "State": "Active" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a Spot Instance data feed for your AWS account.", + "id": "ec2-create-spot-datafeed-subscription-1", + "title": "To create a Spot Instance datafeed" + } + ], + "CreateSubnet": [ + { + "input": { + "CidrBlock": "10.0.1.0/24", + "VpcId": "vpc-a01106c2" + }, + "output": { + "Subnet": { + "AvailabilityZone": "us-west-2c", + "AvailableIpAddressCount": 251, + "CidrBlock": "10.0.1.0/24", + "State": "pending", + "SubnetId": "subnet-9d4a7b6c", + "VpcId": "vpc-a01106c2" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a subnet in the specified VPC with the specified CIDR block. We recommend that you let us select an Availability Zone for you.", + "id": "ec2-create-subnet-1", + "title": "To create a subnet" + } + ], + "CreateTags": [ + { + "input": { + "Resources": [ + "ami-78a54011" + ], + "Tags": [ + { + "Key": "Stack", + "Value": "production" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the tag Stack=production to the specified image, or overwrites an existing tag for the AMI where the tag key is Stack.", + "id": "ec2-create-tags-1", + "title": "To add a tag to a resource" + } + ], + "CreateVolume": [ + { + "input": { + "AvailabilityZone": "us-east-1a", + "Size": 80, + "VolumeType": "gp2" + }, + "output": { + "AvailabilityZone": "us-east-1a", + "CreateTime": "2016-08-29T18:52:32.724Z", + "Encrypted": false, + "Iops": 240, + "Size": 80, + "SnapshotId": "", + "State": "creating", + "VolumeId": "vol-6b60b7c7", + "VolumeType": "gp2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an 80 GiB General Purpose (SSD) volume in the Availability Zone ``us-east-1a``.", + "id": "to-create-a-new-volume-1472496724296", + "title": "To create a new volume" + }, + { + "input": { + "AvailabilityZone": "us-east-1a", + "Iops": 1000, + "SnapshotId": "snap-066877671789bd71b", + "VolumeType": "io1" + }, + "output": { + "Attachments": [ + + ], + "AvailabilityZone": "us-east-1a", + "CreateTime": "2016-08-29T18:52:32.724Z", + "Iops": 1000, + "Size": 500, + "SnapshotId": "snap-066877671789bd71b", + "State": "creating", + "Tags": [ + + ], + "VolumeId": "vol-1234567890abcdef0", + "VolumeType": "io1" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a new Provisioned IOPS (SSD) volume with 1000 provisioned IOPS from a snapshot in the Availability Zone ``us-east-1a``.", + "id": "to-create-a-new-provisioned-iops-ssd-volume-from-a-snapshot-1472498975176", + "title": "To create a new Provisioned IOPS (SSD) volume from a snapshot" + } + ], + "CreateVpc": [ + { + "input": { + "CidrBlock": "10.0.0.0/16" + }, + "output": { + "Vpc": { + "CidrBlock": "10.0.0.0/16", + "DhcpOptionsId": "dopt-7a8b9c2d", + "InstanceTenancy": "default", + "State": "pending", + "VpcId": "vpc-a01106c2" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a VPC with the specified CIDR block.", + "id": "ec2-create-vpc-1", + "title": "To create a VPC" + } + ], + "DeleteCustomerGateway": [ + { + "input": { + "CustomerGatewayId": "cgw-0e11f167" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified customer gateway.", + "id": "ec2-delete-customer-gateway-1", + "title": "To delete a customer gateway" + } + ], + "DeleteDhcpOptions": [ + { + "input": { + "DhcpOptionsId": "dopt-d9070ebb" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified DHCP options set.", + "id": "ec2-delete-dhcp-options-1", + "title": "To delete a DHCP options set" + } + ], + "DeleteInternetGateway": [ + { + "input": { + "InternetGatewayId": "igw-c0a643a9" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified Internet gateway.", + "id": "ec2-delete-internet-gateway-1", + "title": "To delete an Internet gateway" + } + ], + "DeleteKeyPair": [ + { + "input": { + "KeyName": "my-key-pair" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified key pair.", + "id": "ec2-delete-key-pair-1", + "title": "To delete a key pair" + } + ], + "DeleteNatGateway": [ + { + "input": { + "NatGatewayId": "nat-04ae55e711cec5680" + }, + "output": { + "NatGatewayId": "nat-04ae55e711cec5680" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified NAT gateway.", + "id": "ec2-delete-nat-gateway-1", + "title": "To delete a NAT gateway" + } + ], + "DeleteNetworkAcl": [ + { + "input": { + "NetworkAclId": "acl-5fb85d36" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified network ACL.", + "id": "ec2-delete-network-acl-1", + "title": "To delete a network ACL" + } + ], + "DeleteNetworkAclEntry": [ + { + "input": { + "Egress": true, + "NetworkAclId": "acl-5fb85d36", + "RuleNumber": 100 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes ingress rule number 100 from the specified network ACL.", + "id": "ec2-delete-network-acl-entry-1", + "title": "To delete a network ACL entry" + } + ], + "DeleteNetworkInterface": [ + { + "input": { + "NetworkInterfaceId": "eni-e5aa89a3" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified network interface.", + "id": "ec2-delete-network-interface-1", + "title": "To delete a network interface" + } + ], + "DeletePlacementGroup": [ + { + "input": { + "GroupName": "my-cluster" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified placement group.\n", + "id": "to-delete-a-placement-group-1472712349959", + "title": "To delete a placement group" + } + ], + "DeleteRoute": [ + { + "input": { + "DestinationCidrBlock": "0.0.0.0/0", + "RouteTableId": "rtb-22574640" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified route from the specified route table.", + "id": "ec2-delete-route-1", + "title": "To delete a route" + } + ], + "DeleteRouteTable": [ + { + "input": { + "RouteTableId": "rtb-22574640" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified route table.", + "id": "ec2-delete-route-table-1", + "title": "To delete a route table" + } + ], + "DeleteSnapshot": [ + { + "input": { + "SnapshotId": "snap-1234567890abcdef0" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes a snapshot with the snapshot ID of ``snap-1234567890abcdef0``. If the command succeeds, no output is returned.", + "id": "to-delete-a-snapshot-1472503042567", + "title": "To delete a snapshot" + } + ], + "DeleteSpotDatafeedSubscription": [ + { + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes a Spot data feed subscription for the account.", + "id": "ec2-delete-spot-datafeed-subscription-1", + "title": "To cancel a Spot Instance data feed subscription" + } + ], + "DeleteSubnet": [ + { + "input": { + "SubnetId": "subnet-9d4a7b6c" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified subnet.", + "id": "ec2-delete-subnet-1", + "title": "To delete a subnet" + } + ], + "DeleteTags": [ + { + "input": { + "Resources": [ + "ami-78a54011" + ], + "Tags": [ + { + "Key": "Stack", + "Value": "test" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the tag Stack=test from the specified image.", + "id": "ec2-delete-tags-1", + "title": "To delete a tag from a resource" + } + ], + "DeleteVolume": [ + { + "input": { + "VolumeId": "vol-049df61146c4d7901" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes an available volume with the volume ID of ``vol-049df61146c4d7901``. If the command succeeds, no output is returned.", + "id": "to-delete-a-volume-1472503111160", + "title": "To delete a volume" + } + ], + "DeleteVpc": [ + { + "input": { + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified VPC.", + "id": "ec2-delete-vpc-1", + "title": "To delete a VPC" + } + ], + "DescribeAccountAttributes": [ + { + "input": { + "AttributeNames": [ + "supported-platforms" + ] + }, + "output": { + "AccountAttributes": [ + { + "AttributeName": "supported-platforms", + "AttributeValues": [ + { + "AttributeValue": "EC2" + }, + { + "AttributeValue": "VPC" + } + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the supported-platforms attribute for your AWS account.", + "id": "ec2-describe-account-attributes-1", + "title": "To describe a single attribute for your AWS account" + }, + { + "output": { + "AccountAttributes": [ + { + "AttributeName": "supported-platforms", + "AttributeValues": [ + { + "AttributeValue": "EC2" + }, + { + "AttributeValue": "VPC" + } + ] + }, + { + "AttributeName": "vpc-max-security-groups-per-interface", + "AttributeValues": [ + { + "AttributeValue": "5" + } + ] + }, + { + "AttributeName": "max-elastic-ips", + "AttributeValues": [ + { + "AttributeValue": "5" + } + ] + }, + { + "AttributeName": "max-instances", + "AttributeValues": [ + { + "AttributeValue": "20" + } + ] + }, + { + "AttributeName": "vpc-max-elastic-ips", + "AttributeValues": [ + { + "AttributeValue": "5" + } + ] + }, + { + "AttributeName": "default-vpc", + "AttributeValues": [ + { + "AttributeValue": "none" + } + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the attributes for your AWS account.", + "id": "ec2-describe-account-attributes-2", + "title": "To describe all attributes for your AWS account" + } + ], + "DescribeAddresses": [ + { + "output": { + "Addresses": [ + { + "Domain": "standard", + "InstanceId": "i-1234567890abcdef0", + "PublicIp": "198.51.100.0" + }, + { + "AllocationId": "eipalloc-12345678", + "AssociationId": "eipassoc-12345678", + "Domain": "vpc", + "InstanceId": "i-1234567890abcdef0", + "NetworkInterfaceId": "eni-12345678", + "NetworkInterfaceOwnerId": "123456789012", + "PrivateIpAddress": "10.0.1.241", + "PublicIp": "203.0.113.0" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes your Elastic IP addresses.", + "id": "ec2-describe-addresses-1", + "title": "To describe your Elastic IP addresses" + }, + { + "input": { + "Filters": [ + { + "Name": "domain", + "Values": [ + "vpc" + ] + } + ] + }, + "output": { + "Addresses": [ + { + "AllocationId": "eipalloc-12345678", + "AssociationId": "eipassoc-12345678", + "Domain": "vpc", + "InstanceId": "i-1234567890abcdef0", + "NetworkInterfaceId": "eni-12345678", + "NetworkInterfaceOwnerId": "123456789012", + "PrivateIpAddress": "10.0.1.241", + "PublicIp": "203.0.113.0" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes your Elastic IP addresses for use with instances in a VPC.", + "id": "ec2-describe-addresses-2", + "title": "To describe your Elastic IP addresses for EC2-VPC" + }, + { + "input": { + "Filters": [ + { + "Name": "domain", + "Values": [ + "standard" + ] + } + ] + }, + "output": { + "Addresses": [ + { + "Domain": "standard", + "InstanceId": "i-1234567890abcdef0", + "PublicIp": "198.51.100.0" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes your Elastic IP addresses for use with instances in EC2-Classic.", + "id": "ec2-describe-addresses-3", + "title": "To describe your Elastic IP addresses for EC2-Classic" + } + ], + "DescribeAvailabilityZones": [ + { + "output": { + "AvailabilityZones": [ + { + "Messages": [ + + ], + "RegionName": "us-east-1", + "State": "available", + "ZoneName": "us-east-1b" + }, + { + "Messages": [ + + ], + "RegionName": "us-east-1", + "State": "available", + "ZoneName": "us-east-1c" + }, + { + "Messages": [ + + ], + "RegionName": "us-east-1", + "State": "available", + "ZoneName": "us-east-1d" + }, + { + "Messages": [ + + ], + "RegionName": "us-east-1", + "State": "available", + "ZoneName": "us-east-1e" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the Availability Zones that are available to you. The response includes Availability Zones only for the current region.", + "id": "ec2-describe-availability-zones-1", + "title": "To describe your Availability Zones" + } + ], + "DescribeCustomerGateways": [ + { + "input": { + "CustomerGatewayIds": [ + "cgw-0e11f167" + ] + }, + "output": { + "CustomerGateways": [ + { + "BgpAsn": "65534", + "CustomerGatewayId": "cgw-0e11f167", + "IpAddress": "12.1.2.3", + "State": "available", + "Type": "ipsec.1" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified customer gateway.", + "id": "ec2-describe-customer-gateways-1", + "title": "To describe a customer gateway" + } + ], + "DescribeDhcpOptions": [ + { + "input": { + "DhcpOptionsIds": [ + "dopt-d9070ebb" + ] + }, + "output": { + "DhcpOptions": [ + { + "DhcpConfigurations": [ + { + "Key": "domain-name-servers", + "Values": [ + { + "Value": "10.2.5.2" + }, + { + "Value": "10.2.5.1" + } + ] + } + ], + "DhcpOptionsId": "dopt-d9070ebb" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified DHCP options set.", + "id": "ec2-describe-dhcp-options-1", + "title": "To describe a DHCP options set" + } + ], + "DescribeInstanceAttribute": [ + { + "input": { + "Attribute": "instanceType", + "InstanceId": "i-1234567890abcdef0" + }, + "output": { + "InstanceId": "i-1234567890abcdef0", + "InstanceType": { + "Value": "t1.micro" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the instance type of the specified instance.\n", + "id": "to-describe-the-instance-type-1472712432132", + "title": "To describe the instance type" + }, + { + "input": { + "Attribute": "disableApiTermination", + "InstanceId": "i-1234567890abcdef0" + }, + "output": { + "DisableApiTermination": { + "Value": "false" + }, + "InstanceId": "i-1234567890abcdef0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the ``disableApiTermination`` attribute of the specified instance.\n", + "id": "to-describe-the-disableapitermination-attribute-1472712533466", + "title": "To describe the disableApiTermination attribute" + }, + { + "input": { + "Attribute": "blockDeviceMapping", + "InstanceId": "i-1234567890abcdef0" + }, + "output": { + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "AttachTime": "2013-05-17T22:42:34.000Z", + "DeleteOnTermination": true, + "Status": "attached", + "VolumeId": "vol-049df61146c4d7901" + } + }, + { + "DeviceName": "/dev/sdf", + "Ebs": { + "AttachTime": "2013-09-10T23:07:00.000Z", + "DeleteOnTermination": false, + "Status": "attached", + "VolumeId": "vol-049df61146c4d7901" + } + } + ], + "InstanceId": "i-1234567890abcdef0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the ``blockDeviceMapping`` attribute of the specified instance.\n", + "id": "to-describe-the-block-device-mapping-for-an-instance-1472712645423", + "title": "To describe the block device mapping for an instance" + } + ], + "DescribeInternetGateways": [ + { + "input": { + "Filters": [ + { + "Name": "attachment.vpc-id", + "Values": [ + "vpc-a01106c2" + ] + } + ] + }, + "output": { + "InternetGateways": [ + { + "Attachments": [ + { + "State": "available", + "VpcId": "vpc-a01106c2" + } + ], + "InternetGatewayId": "igw-c0a643a9", + "Tags": [ + + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the Internet gateway for the specified VPC.", + "id": "ec2-describe-internet-gateways-1", + "title": "To describe the Internet gateway for a VPC" + } + ], + "DescribeKeyPairs": [ + { + "input": { + "KeyNames": [ + "my-key-pair" + ] + }, + "output": { + "KeyPairs": [ + { + "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", + "KeyName": "my-key-pair" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example displays the fingerprint for the specified key.", + "id": "ec2-describe-key-pairs-1", + "title": "To display a key pair" + } + ], + "DescribeMovingAddresses": [ + { + "output": { + "MovingAddressStatuses": [ + { + "MoveStatus": "MovingToVpc", + "PublicIp": "198.51.100.0" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes all of your moving Elastic IP addresses.", + "id": "ec2-describe-moving-addresses-1", + "title": "To describe your moving addresses" + } + ], + "DescribeNatGateways": [ + { + "input": { + "Filter": [ + { + "Name": "vpc-id", + "Values": [ + "vpc-1a2b3c4d" + ] + } + ] + }, + "output": { + "NatGateways": [ + { + "CreateTime": "2015-12-01T12:26:55.983Z", + "NatGatewayAddresses": [ + { + "AllocationId": "eipalloc-89c620ec", + "NetworkInterfaceId": "eni-9dec76cd", + "PrivateIp": "10.0.0.149", + "PublicIp": "198.11.222.333" + } + ], + "NatGatewayId": "nat-05dba92075d71c408", + "State": "available", + "SubnetId": "subnet-847e4dc2", + "VpcId": "vpc-1a2b3c4d" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the NAT gateway for the specified VPC.", + "id": "ec2-describe-nat-gateways-1", + "title": "To describe a NAT gateway" + } + ], + "DescribeNetworkAcls": [ + { + "input": { + "NetworkAclIds": [ + "acl-5fb85d36" + ] + }, + "output": { + "NetworkAcls": [ + { + "Associations": [ + { + "NetworkAclAssociationId": "aclassoc-66ea5f0b", + "NetworkAclId": "acl-9aeb5ef7", + "SubnetId": "subnet-65ea5f08" + } + ], + "Entries": [ + { + "CidrBlock": "0.0.0.0/0", + "Egress": true, + "Protocol": "-1", + "RuleAction": "deny", + "RuleNumber": 32767 + }, + { + "CidrBlock": "0.0.0.0/0", + "Egress": false, + "Protocol": "-1", + "RuleAction": "deny", + "RuleNumber": 32767 + } + ], + "IsDefault": false, + "NetworkAclId": "acl-5fb85d36", + "Tags": [ + + ], + "VpcId": "vpc-a01106c2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified network ACL.", + "id": "ec2-", + "title": "To describe a network ACL" + } + ], + "DescribeNetworkInterfaceAttribute": [ + { + "input": { + "Attribute": "attachment", + "NetworkInterfaceId": "eni-686ea200" + }, + "output": { + "Attachment": { + "AttachTime": "2015-05-21T20:02:20.000Z", + "AttachmentId": "eni-attach-43348162", + "DeleteOnTermination": true, + "DeviceIndex": 0, + "InstanceId": "i-1234567890abcdef0", + "InstanceOwnerId": "123456789012", + "Status": "attached" + }, + "NetworkInterfaceId": "eni-686ea200" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the attachment attribute of the specified network interface.", + "id": "ec2-describe-network-interface-attribute-1", + "title": "To describe the attachment attribute of a network interface" + }, + { + "input": { + "Attribute": "description", + "NetworkInterfaceId": "eni-686ea200" + }, + "output": { + "Description": { + "Value": "My description" + }, + "NetworkInterfaceId": "eni-686ea200" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the description attribute of the specified network interface.", + "id": "ec2-describe-network-interface-attribute-2", + "title": "To describe the description attribute of a network interface" + }, + { + "input": { + "Attribute": "groupSet", + "NetworkInterfaceId": "eni-686ea200" + }, + "output": { + "Groups": [ + { + "GroupId": "sg-903004f8", + "GroupName": "my-security-group" + } + ], + "NetworkInterfaceId": "eni-686ea200" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the groupSet attribute of the specified network interface.", + "id": "ec2-describe-network-interface-attribute-3", + "title": "To describe the groupSet attribute of a network interface" + }, + { + "input": { + "Attribute": "sourceDestCheck", + "NetworkInterfaceId": "eni-686ea200" + }, + "output": { + "NetworkInterfaceId": "eni-686ea200", + "SourceDestCheck": { + "Value": true + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the sourceDestCheck attribute of the specified network interface.", + "id": "ec2-describe-network-interface-attribute-4", + "title": "To describe the sourceDestCheck attribute of a network interface" + } + ], + "DescribeNetworkInterfaces": [ + { + "input": { + "NetworkInterfaceIds": [ + "eni-e5aa89a3" + ] + }, + "output": { + "NetworkInterfaces": [ + { + "Association": { + "AssociationId": "eipassoc-0fbb766a", + "IpOwnerId": "123456789012", + "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", + "PublicIp": "203.0.113.12" + }, + "Attachment": { + "AttachTime": "2013-11-30T23:36:42.000Z", + "AttachmentId": "eni-attach-66c4350a", + "DeleteOnTermination": false, + "DeviceIndex": 1, + "InstanceId": "i-1234567890abcdef0", + "InstanceOwnerId": "123456789012", + "Status": "attached" + }, + "AvailabilityZone": "us-east-1d", + "Description": "my network interface", + "Groups": [ + { + "GroupId": "sg-8637d3e3", + "GroupName": "default" + } + ], + "MacAddress": "02:2f:8f:b0:cf:75", + "NetworkInterfaceId": "eni-e5aa89a3", + "OwnerId": "123456789012", + "PrivateDnsName": "ip-10-0-1-17.ec2.internal", + "PrivateIpAddress": "10.0.1.17", + "PrivateIpAddresses": [ + { + "Association": { + "AssociationId": "eipassoc-0fbb766a", + "IpOwnerId": "123456789012", + "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", + "PublicIp": "203.0.113.12" + }, + "Primary": true, + "PrivateDnsName": "ip-10-0-1-17.ec2.internal", + "PrivateIpAddress": "10.0.1.17" + } + ], + "RequesterManaged": false, + "SourceDestCheck": true, + "Status": "in-use", + "SubnetId": "subnet-b61f49f0", + "TagSet": [ + + ], + "VpcId": "vpc-a01106c2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "", + "id": "ec2-describe-network-interfaces-1", + "title": "To describe a network interface" + } + ], + "DescribeRegions": [ + { + "output": { + "Regions": [ + { + "Endpoint": "ec2.ap-south-1.amazonaws.com", + "RegionName": "ap-south-1" + }, + { + "Endpoint": "ec2.eu-west-1.amazonaws.com", + "RegionName": "eu-west-1" + }, + { + "Endpoint": "ec2.ap-southeast-1.amazonaws.com", + "RegionName": "ap-southeast-1" + }, + { + "Endpoint": "ec2.ap-southeast-2.amazonaws.com", + "RegionName": "ap-southeast-2" + }, + { + "Endpoint": "ec2.eu-central-1.amazonaws.com", + "RegionName": "eu-central-1" + }, + { + "Endpoint": "ec2.ap-northeast-2.amazonaws.com", + "RegionName": "ap-northeast-2" + }, + { + "Endpoint": "ec2.ap-northeast-1.amazonaws.com", + "RegionName": "ap-northeast-1" + }, + { + "Endpoint": "ec2.us-east-1.amazonaws.com", + "RegionName": "us-east-1" + }, + { + "Endpoint": "ec2.sa-east-1.amazonaws.com", + "RegionName": "sa-east-1" + }, + { + "Endpoint": "ec2.us-west-1.amazonaws.com", + "RegionName": "us-west-1" + }, + { + "Endpoint": "ec2.us-west-2.amazonaws.com", + "RegionName": "us-west-2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes all the regions that are available to you.", + "id": "ec2-describe-regions-1", + "title": "To describe your regions" + } + ], + "DescribeRouteTables": [ + { + "input": { + "RouteTableIds": [ + "rtb-1f382e7d" + ] + }, + "output": { + "RouteTables": [ + { + "Associations": [ + { + "Main": true, + "RouteTableAssociationId": "rtbassoc-d8ccddba", + "RouteTableId": "rtb-1f382e7d" + } + ], + "PropagatingVgws": [ + + ], + "RouteTableId": "rtb-1f382e7d", + "Routes": [ + { + "DestinationCidrBlock": "10.0.0.0/16", + "GatewayId": "local", + "State": "active" + } + ], + "Tags": [ + + ], + "VpcId": "vpc-a01106c2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified route table.", + "id": "ec2-describe-route-tables-1", + "title": "To describe a route table" + } + ], + "DescribeScheduledInstanceAvailability": [ + { + "input": { + "FirstSlotStartTimeRange": { + "EarliestTime": "2016-01-31T00:00:00Z", + "LatestTime": "2016-01-31T04:00:00Z" + }, + "Recurrence": { + "Frequency": "Weekly", + "Interval": 1, + "OccurrenceDays": [ + 1 + ] + } + }, + "output": { + "ScheduledInstanceAvailabilitySet": [ + { + "AvailabilityZone": "us-west-2b", + "AvailableInstanceCount": 20, + "FirstSlotStartTime": "2016-01-31T00:00:00Z", + "HourlyPrice": "0.095", + "InstanceType": "c4.large", + "MaxTermDurationInDays": 366, + "MinTermDurationInDays": 366, + "NetworkPlatform": "EC2-VPC", + "Platform": "Linux/UNIX", + "PurchaseToken": "eyJ2IjoiMSIsInMiOjEsImMiOi...", + "Recurrence": { + "Frequency": "Weekly", + "Interval": 1, + "OccurrenceDaySet": [ + 1 + ], + "OccurrenceRelativeToEnd": false + }, + "SlotDurationInHours": 23, + "TotalScheduledInstanceHours": 1219 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes a schedule that occurs every week on Sunday, starting on the specified date. Note that the output contains a single schedule as an example.", + "id": "ec2-describe-scheduled-instance-availability-1", + "title": "To describe an available schedule" + } + ], + "DescribeScheduledInstances": [ + { + "input": { + "ScheduledInstanceIds": [ + "sci-1234-1234-1234-1234-123456789012" + ] + }, + "output": { + "ScheduledInstanceSet": [ + { + "AvailabilityZone": "us-west-2b", + "CreateDate": "2016-01-25T21:43:38.612Z", + "HourlyPrice": "0.095", + "InstanceCount": 1, + "InstanceType": "c4.large", + "NetworkPlatform": "EC2-VPC", + "NextSlotStartTime": "2016-01-31T09:00:00Z", + "Platform": "Linux/UNIX", + "Recurrence": { + "Frequency": "Weekly", + "Interval": 1, + "OccurrenceDaySet": [ + 1 + ], + "OccurrenceRelativeToEnd": false, + "OccurrenceUnit": "" + }, + "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012", + "SlotDurationInHours": 32, + "TermEndDate": "2017-01-31T09:00:00Z", + "TermStartDate": "2016-01-31T09:00:00Z", + "TotalScheduledInstanceHours": 1696 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified Scheduled Instance.", + "id": "ec2-describe-scheduled-instances-1", + "title": "To describe your Scheduled Instances" + } + ], + "DescribeSnapshotAttribute": [ + { + "input": { + "Attribute": "createVolumePermission", + "SnapshotId": "snap-066877671789bd71b" + }, + "output": { + "CreateVolumePermissions": [ + + ], + "SnapshotId": "snap-066877671789bd71b" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the ``createVolumePermission`` attribute on a snapshot with the snapshot ID of ``snap-066877671789bd71b``.", + "id": "to-describe-snapshot-attributes-1472503199736", + "title": "To describe snapshot attributes" + } + ], + "DescribeSnapshots": [ + { + "input": { + "SnapshotIds": [ + "snap-1234567890abcdef0" + ] + }, + "output": { + "NextToken": "", + "Snapshots": [ + { + "Description": "This is my snapshot.", + "OwnerId": "012345678910", + "Progress": "100%", + "SnapshotId": "snap-1234567890abcdef0", + "StartTime": "2014-02-28T21:28:32.000Z", + "State": "completed", + "VolumeId": "vol-049df61146c4d7901", + "VolumeSize": 8 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes a snapshot with the snapshot ID of ``snap-1234567890abcdef0``.", + "id": "to-describe-a-snapshot-1472503807850", + "title": "To describe a snapshot" + }, + { + "input": { + "Filters": [ + { + "Name": "status", + "Values": [ + "pending" + ] + } + ], + "OwnerIds": [ + "012345678910" + ] + }, + "output": { + "NextToken": "", + "Snapshots": [ + { + "Description": "This is my copied snapshot.", + "OwnerId": "012345678910", + "Progress": "87%", + "SnapshotId": "snap-066877671789bd71b", + "StartTime": "2014-02-28T21:37:27.000Z", + "State": "pending", + "VolumeId": "vol-1234567890abcdef0", + "VolumeSize": 8 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes all snapshots owned by the ID 012345678910 that are in the ``pending`` status.", + "id": "to-describe-snapshots-using-filters-1472503929793", + "title": "To describe snapshots using filters" + } + ], + "DescribeSpotDatafeedSubscription": [ + { + "output": { + "SpotDatafeedSubscription": { + "Bucket": "my-s3-bucket", + "OwnerId": "123456789012", + "Prefix": "spotdata", + "State": "Active" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the Spot Instance datafeed subscription for your AWS account.", + "id": "ec2-describe-spot-datafeed-subscription-1", + "title": "To describe the datafeed for your AWS account" + } + ], + "DescribeSpotFleetInstances": [ + { + "input": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + }, + "output": { + "ActiveInstances": [ + { + "InstanceId": "i-1234567890abcdef0", + "InstanceType": "m3.medium", + "SpotInstanceRequestId": "sir-08b93456" + } + ], + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists the Spot Instances associated with the specified Spot fleet.", + "id": "ec2-describe-spot-fleet-instances-1", + "title": "To describe the Spot Instances associated with a Spot fleet" + } + ], + "DescribeSpotFleetRequestHistory": [ + { + "input": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", + "StartTime": "2015-05-26T00:00:00Z" + }, + "output": { + "HistoryRecords": [ + { + "EventInformation": { + "EventSubType": "submitted" + }, + "EventType": "fleetRequestChange", + "Timestamp": "2015-05-26T23:17:20.697Z" + }, + { + "EventInformation": { + "EventSubType": "active" + }, + "EventType": "fleetRequestChange", + "Timestamp": "2015-05-26T23:17:20.873Z" + }, + { + "EventInformation": { + "EventSubType": "launched", + "InstanceId": "i-1234567890abcdef0" + }, + "EventType": "instanceChange", + "Timestamp": "2015-05-26T23:21:21.712Z" + }, + { + "EventInformation": { + "EventSubType": "launched", + "InstanceId": "i-1234567890abcdef1" + }, + "EventType": "instanceChange", + "Timestamp": "2015-05-26T23:21:21.816Z" + } + ], + "NextToken": "CpHNsscimcV5oH7bSbub03CI2Qms5+ypNpNm+53MNlR0YcXAkp0xFlfKf91yVxSExmbtma3awYxMFzNA663ZskT0AHtJ6TCb2Z8bQC2EnZgyELbymtWPfpZ1ZbauVg+P+TfGlWxWWB/Vr5dk5d4LfdgA/DRAHUrYgxzrEXAMPLE=", + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", + "StartTime": "2015-05-26T00:00:00Z" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example returns the history for the specified Spot fleet starting at the specified time.", + "id": "ec2-describe-spot-fleet-request-history-1", + "title": "To describe Spot fleet history" + } + ], + "DescribeSpotFleetRequests": [ + { + "input": { + "SpotFleetRequestIds": [ + "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + ] + }, + "output": { + "SpotFleetRequestConfigs": [ + { + "SpotFleetRequestConfig": { + "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", + "LaunchSpecifications": [ + { + "EbsOptimized": false, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "cc2.8xlarge", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": true, + "DeleteOnTermination": false, + "DeviceIndex": 0, + "SecondaryPrivateIpAddressCount": 0, + "SubnetId": "subnet-a61dafcf" + } + ] + }, + { + "EbsOptimized": false, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "r3.8xlarge", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": true, + "DeleteOnTermination": false, + "DeviceIndex": 0, + "SecondaryPrivateIpAddressCount": 0, + "SubnetId": "subnet-a61dafcf" + } + ] + } + ], + "SpotPrice": "0.05", + "TargetCapacity": 20 + }, + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", + "SpotFleetRequestState": "active" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified Spot fleet request.", + "id": "ec2-describe-spot-fleet-requests-1", + "title": "To describe a Spot fleet request" + } + ], + "DescribeSpotInstanceRequests": [ + { + "input": { + "SpotInstanceRequestIds": [ + "sir-08b93456" + ] + }, + "output": { + "SpotInstanceRequests": [ + { + "CreateTime": "2014-04-30T18:14:55.000Z", + "InstanceId": "i-1234567890abcdef0", + "LaunchSpecification": { + "BlockDeviceMappings": [ + { + "DeviceName": "/dev/sda1", + "Ebs": { + "DeleteOnTermination": true, + "VolumeSize": 8, + "VolumeType": "standard" + } + } + ], + "EbsOptimized": false, + "ImageId": "ami-7aba833f", + "InstanceType": "m1.small", + "KeyName": "my-key-pair", + "SecurityGroups": [ + { + "GroupId": "sg-e38f24a7", + "GroupName": "my-security-group" + } + ] + }, + "LaunchedAvailabilityZone": "us-west-1b", + "ProductDescription": "Linux/UNIX", + "SpotInstanceRequestId": "sir-08b93456", + "SpotPrice": "0.010000", + "State": "active", + "Status": { + "Code": "fulfilled", + "Message": "Your Spot request is fulfilled.", + "UpdateTime": "2014-04-30T18:16:21.000Z" + }, + "Type": "one-time" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified Spot Instance request.", + "id": "ec2-describe-spot-instance-requests-1", + "title": "To describe a Spot Instance request" + } + ], + "DescribeSpotPriceHistory": [ + { + "input": { + "EndTime": "2014-01-06T08:09:10", + "InstanceTypes": [ + "m1.xlarge" + ], + "ProductDescriptions": [ + "Linux/UNIX (Amazon VPC)" + ], + "StartTime": "2014-01-06T07:08:09" + }, + "output": { + "SpotPriceHistory": [ + { + "AvailabilityZone": "us-west-1a", + "InstanceType": "m1.xlarge", + "ProductDescription": "Linux/UNIX (Amazon VPC)", + "SpotPrice": "0.080000", + "Timestamp": "2014-01-06T04:32:53.000Z" + }, + { + "AvailabilityZone": "us-west-1c", + "InstanceType": "m1.xlarge", + "ProductDescription": "Linux/UNIX (Amazon VPC)", + "SpotPrice": "0.080000", + "Timestamp": "2014-01-05T11:28:26.000Z" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example returns the Spot Price history for m1.xlarge, Linux/UNIX (Amazon VPC) instances for a particular day in January.", + "id": "ec2-describe-spot-price-history-1", + "title": "To describe Spot price history for Linux/UNIX (Amazon VPC)" + } + ], + "DescribeSubnets": [ + { + "input": { + "Filters": [ + { + "Name": "vpc-id", + "Values": [ + "vpc-a01106c2" + ] + } + ] + }, + "output": { + "Subnets": [ + { + "AvailabilityZone": "us-east-1c", + "AvailableIpAddressCount": 251, + "CidrBlock": "10.0.1.0/24", + "DefaultForAz": false, + "MapPublicIpOnLaunch": false, + "State": "available", + "SubnetId": "subnet-9d4a7b6c", + "VpcId": "vpc-a01106c2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the subnets for the specified VPC.", + "id": "ec2-describe-subnets-1", + "title": "To describe the subnets for a VPC" + } + ], + "DescribeTags": [ + { + "input": { + "Filters": [ + { + "Name": "resource-id", + "Values": [ + "i-1234567890abcdef8" + ] + } + ] + }, + "output": { + "Tags": [ + { + "Key": "Stack", + "ResourceId": "i-1234567890abcdef8", + "ResourceType": "instance", + "Value": "test" + }, + { + "Key": "Name", + "ResourceId": "i-1234567890abcdef8", + "ResourceType": "instance", + "Value": "Beta Server" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the tags for the specified instance.", + "id": "ec2-describe-tags-1", + "title": "To describe the tags for a single resource" + } + ], + "DescribeVolumeAttribute": [ + { + "input": { + "Attribute": "autoEnableIO", + "VolumeId": "vol-049df61146c4d7901" + }, + "output": { + "AutoEnableIO": { + "Value": false + }, + "VolumeId": "vol-049df61146c4d7901" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the ``autoEnableIo`` attribute of the volume with the ID ``vol-049df61146c4d7901``.", + "id": "to-describe-a-volume-attribute-1472505773492", + "title": "To describe a volume attribute" + } + ], + "DescribeVolumeStatus": [ + { + "input": { + "VolumeIds": [ + "vol-1234567890abcdef0" + ] + }, + "output": { + "VolumeStatuses": [ + { + "Actions": [ + + ], + "AvailabilityZone": "us-east-1a", + "Events": [ + + ], + "VolumeId": "vol-1234567890abcdef0", + "VolumeStatus": { + "Details": [ + { + "Name": "io-enabled", + "Status": "passed" + }, + { + "Name": "io-performance", + "Status": "not-applicable" + } + ], + "Status": "ok" + } + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the status for the volume ``vol-1234567890abcdef0``.", + "id": "to-describe-the-status-of-a-single-volume-1472507016193", + "title": "To describe the status of a single volume" + }, + { + "input": { + "Filters": [ + { + "Name": "volume-status.status", + "Values": [ + "impaired" + ] + } + ] + }, + "output": { + "VolumeStatuses": [ + + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the status for all volumes that are impaired. In this example output, there are no impaired volumes.", + "id": "to-describe-the-status-of-impaired-volumes-1472507239821", + "title": "To describe the status of impaired volumes" + } + ], + "DescribeVolumes": [ + { + "input": { + }, + "output": { + "NextToken": "", + "Volumes": [ + { + "Attachments": [ + { + "AttachTime": "2013-12-18T22:35:00.000Z", + "DeleteOnTermination": true, + "Device": "/dev/sda1", + "InstanceId": "i-1234567890abcdef0", + "State": "attached", + "VolumeId": "vol-049df61146c4d7901" + } + ], + "AvailabilityZone": "us-east-1a", + "CreateTime": "2013-12-18T22:35:00.084Z", + "Size": 8, + "SnapshotId": "snap-1234567890abcdef0", + "State": "in-use", + "VolumeId": "vol-049df61146c4d7901", + "VolumeType": "standard" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes all of your volumes in the default region.", + "id": "to-describe-all-volumes-1472506358883", + "title": "To describe all volumes" + }, + { + "input": { + "Filters": [ + { + "Name": "attachment.instance-id", + "Values": [ + "i-1234567890abcdef0" + ] + }, + { + "Name": "attachment.delete-on-termination", + "Values": [ + "true" + ] + } + ] + }, + "output": { + "Volumes": [ + { + "Attachments": [ + { + "AttachTime": "2013-12-18T22:35:00.000Z", + "DeleteOnTermination": true, + "Device": "/dev/sda1", + "InstanceId": "i-1234567890abcdef0", + "State": "attached", + "VolumeId": "vol-049df61146c4d7901" + } + ], + "AvailabilityZone": "us-east-1a", + "CreateTime": "2013-12-18T22:35:00.084Z", + "Size": 8, + "SnapshotId": "snap-1234567890abcdef0", + "State": "in-use", + "VolumeId": "vol-049df61146c4d7901", + "VolumeType": "standard" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes all volumes that are both attached to the instance with the ID i-1234567890abcdef0 and set to delete when the instance terminates.", + "id": "to-describe-volumes-that-are-attached-to-a-specific-instance-1472506613578", + "title": "To describe volumes that are attached to a specific instance" + } + ], + "DescribeVpcAttribute": [ + { + "input": { + "Attribute": "enableDnsSupport", + "VpcId": "vpc-a01106c2" + }, + "output": { + "EnableDnsSupport": { + "Value": true + }, + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the enableDnsSupport attribute. This attribute indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not.", + "id": "ec2-describe-vpc-attribute-1", + "title": "To describe the enableDnsSupport attribute" + }, + { + "input": { + "Attribute": "enableDnsHostnames", + "VpcId": "vpc-a01106c2" + }, + "output": { + "EnableDnsHostnames": { + "Value": true + }, + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the enableDnsHostnames attribute. This attribute indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.", + "id": "ec2-describe-vpc-attribute-2", + "title": "To describe the enableDnsHostnames attribute" + } + ], + "DescribeVpcs": [ + { + "input": { + "VpcIds": [ + "vpc-a01106c2" + ] + }, + "output": { + "Vpcs": [ + { + "CidrBlock": "10.0.0.0/16", + "DhcpOptionsId": "dopt-7a8b9c2d", + "InstanceTenancy": "default", + "IsDefault": false, + "State": "available", + "Tags": [ + { + "Key": "Name", + "Value": "MyVPC" + } + ], + "VpcId": "vpc-a01106c2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified VPC.", + "id": "ec2-describe-vpcs-1", + "title": "To describe a VPC" + } + ], + "DetachInternetGateway": [ + { + "input": { + "InternetGatewayId": "igw-c0a643a9", + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the specified Internet gateway from the specified VPC.", + "id": "ec2-detach-internet-gateway-1", + "title": "To detach an Internet gateway from a VPC" + } + ], + "DetachNetworkInterface": [ + { + "input": { + "AttachmentId": "eni-attach-66c4350a" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the specified network interface from its attached instance.", + "id": "ec2-detach-network-interface-1", + "title": "To detach a network interface from an instance" + } + ], + "DetachVolume": [ + { + "input": { + "VolumeId": "vol-1234567890abcdef0" + }, + "output": { + "AttachTime": "2014-02-27T19:23:06.000Z", + "Device": "/dev/sdb", + "InstanceId": "i-1234567890abcdef0", + "State": "detaching", + "VolumeId": "vol-049df61146c4d7901" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the volume (``vol-049df61146c4d7901``) from the instance it is attached to.", + "id": "to-detach-a-volume-from-an-instance-1472507977694", + "title": "To detach a volume from an instance" + } + ], + "DisableVgwRoutePropagation": [ + { + "input": { + "GatewayId": "vgw-9a4cacf3", + "RouteTableId": "rtb-22574640" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example disables the specified virtual private gateway from propagating static routes to the specified route table.", + "id": "ec2-disable-vgw-route-propagation-1", + "title": "To disable route propagation" + } + ], + "DisassociateAddress": [ + { + "input": { + "AssociationId": "eipassoc-2bebb745" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example disassociates an Elastic IP address from an instance in a VPC.", + "id": "ec2-disassociate-address-1", + "title": "To disassociate an Elastic IP address in EC2-VPC" + }, + { + "input": { + "PublicIp": "198.51.100.0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example disassociates an Elastic IP address from an instance in EC2-Classic.", + "id": "ec2-disassociate-address-2", + "title": "To disassociate an Elastic IP addresses in EC2-Classic" + } + ], + "DisassociateRouteTable": [ + { + "input": { + "AssociationId": "rtbassoc-781d0d1a" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example disassociates the specified route table from its associated subnet.", + "id": "ec2-disassociate-route-table-1", + "title": "To disassociate a route table" + } + ], + "EnableVgwRoutePropagation": [ + { + "input": { + "GatewayId": "vgw-9a4cacf3", + "RouteTableId": "rtb-22574640" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables the specified virtual private gateway to propagate static routes to the specified route table.", + "id": "ec2-enable-vgw-route-propagation-1", + "title": "To enable route propagation" + } + ], + "EnableVolumeIO": [ + { + "input": { + "VolumeId": "vol-1234567890abcdef0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables I/O on volume ``vol-1234567890abcdef0``.", + "id": "to-enable-io-for-a-volume-1472508114867", + "title": "To enable I/O for a volume" + } + ], + "ModifyNetworkInterfaceAttribute": [ + { + "input": { + "Attachment": { + "AttachmentId": "eni-attach-43348162", + "DeleteOnTermination": false + }, + "NetworkInterfaceId": "eni-686ea200" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies the attachment attribute of the specified network interface.", + "id": "ec2-modify-network-interface-attribute-1", + "title": "To modify the attachment attribute of a network interface" + }, + { + "input": { + "Description": { + "Value": "My description" + }, + "NetworkInterfaceId": "eni-686ea200" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies the description attribute of the specified network interface.", + "id": "ec2-modify-network-interface-attribute-2", + "title": "To modify the description attribute of a network interface" + }, + { + "input": { + "Groups": [ + "sg-903004f8", + "sg-1a2b3c4d" + ], + "NetworkInterfaceId": "eni-686ea200" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example command modifies the groupSet attribute of the specified network interface.", + "id": "ec2-modify-network-interface-attribute-3", + "title": "To modify the groupSet attribute of a network interface" + }, + { + "input": { + "NetworkInterfaceId": "eni-686ea200", + "SourceDestCheck": { + "Value": false + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example command modifies the sourceDestCheck attribute of the specified network interface.", + "id": "ec2-modify-network-interface-attribute-4", + "title": "To modify the sourceDestCheck attribute of a network interface" + } + ], + "ModifySnapshotAttribute": [ + { + "input": { + "Attribute": "createVolumePermission", + "OperationType": "remove", + "SnapshotId": "snap-1234567890abcdef0", + "UserIds": [ + "123456789012" + ] + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies snapshot ``snap-1234567890abcdef0`` to remove the create volume permission for a user with the account ID ``123456789012``. If the command succeeds, no output is returned.", + "id": "to-modify-a-snapshot-attribute-1472508385907", + "title": "To modify a snapshot attribute" + }, + { + "input": { + "Attribute": "createVolumePermission", + "GroupNames": [ + "all" + ], + "OperationType": "add", + "SnapshotId": "snap-1234567890abcdef0" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example makes the snapshot ``snap-1234567890abcdef0`` public.", + "id": "to-make-a-snapshot-public-1472508470529", + "title": "To make a snapshot public" + } + ], + "ModifySpotFleetRequest": [ + { + "input": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", + "TargetCapacity": 20 + }, + "output": { + "Return": true + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example increases the target capacity of the specified Spot fleet request.", + "id": "ec2-modify-spot-fleet-request-1", + "title": "To increase the target capacity of a Spot fleet request" + }, + { + "input": { + "ExcessCapacityTerminationPolicy": "NoTermination ", + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", + "TargetCapacity": 10 + }, + "output": { + "Return": true + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example decreases the target capacity of the specified Spot fleet request without terminating any Spot Instances as a result.", + "id": "ec2-modify-spot-fleet-request-2", + "title": "To decrease the target capacity of a Spot fleet request" + } + ], + "ModifySubnetAttribute": [ + { + "input": { + "MapPublicIpOnLaunch": { + "Value": true + }, + "SubnetId": "subnet-1a2b3c4d" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies the specified subnet so that all instances launched into this subnet are assigned a public IP address.", + "id": "ec2-modify-subnet-attribute-1", + "title": "To change a subnet's public IP addressing behavior" + } + ], + "ModifyVolumeAttribute": [ + { + "input": { + "AutoEnableIO": { + "Value": true + }, + "DryRun": true, + "VolumeId": "vol-1234567890abcdef0" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sets the ``autoEnableIo`` attribute of the volume with the ID ``vol-1234567890abcdef0`` to ``true``. If the command succeeds, no output is returned.", + "id": "to-modify-a-volume-attribute-1472508596749", + "title": "To modify a volume attribute" + } + ], + "ModifyVpcAttribute": [ + { + "input": { + "EnableDnsSupport": { + "Value": false + }, + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies the enableDnsSupport attribute. This attribute indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for instances in the VPC to their corresponding IP addresses; otherwise, it does not.", + "id": "ec2-modify-vpc-attribute-1", + "title": "To modify the enableDnsSupport attribute" + }, + { + "input": { + "EnableDnsHostnames": { + "Value": false + }, + "VpcId": "vpc-a01106c2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies the enableDnsHostnames attribute. This attribute indicates whether instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.", + "id": "ec2-modify-vpc-attribute-2", + "title": "To modify the enableDnsHostnames attribute" + } + ], + "MoveAddressToVpc": [ + { + "input": { + "PublicIp": "54.123.4.56" + }, + "output": { + "Status": "MoveInProgress" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example moves the specified Elastic IP address to the EC2-VPC platform.", + "id": "ec2-move-address-to-vpc-1", + "title": "To move an address to EC2-VPC" + } + ], + "PurchaseScheduledInstances": [ + { + "input": { + "PurchaseRequests": [ + { + "InstanceCount": 1, + "PurchaseToken": "eyJ2IjoiMSIsInMiOjEsImMiOi..." + } + ] + }, + "output": { + "ScheduledInstanceSet": [ + { + "AvailabilityZone": "us-west-2b", + "CreateDate": "2016-01-25T21:43:38.612Z", + "HourlyPrice": "0.095", + "InstanceCount": 1, + "InstanceType": "c4.large", + "NetworkPlatform": "EC2-VPC", + "NextSlotStartTime": "2016-01-31T09:00:00Z", + "Platform": "Linux/UNIX", + "Recurrence": { + "Frequency": "Weekly", + "Interval": 1, + "OccurrenceDaySet": [ + 1 + ], + "OccurrenceRelativeToEnd": false, + "OccurrenceUnit": "" + }, + "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012", + "SlotDurationInHours": 32, + "TermEndDate": "2017-01-31T09:00:00Z", + "TermStartDate": "2016-01-31T09:00:00Z", + "TotalScheduledInstanceHours": 1696 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example purchases a Scheduled Instance.", + "id": "ec2-purchase-scheduled-instances-1", + "title": "To purchase a Scheduled Instance" + } + ], + "ReleaseAddress": [ + { + "input": { + "AllocationId": "eipalloc-64d5890a" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example releases an Elastic IP address for use with instances in a VPC.", + "id": "ec2-release-address-1", + "title": "To release an Elastic IP address for EC2-VPC" + }, + { + "input": { + "PublicIp": "198.51.100.0" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example releases an Elastic IP address for use with instances in EC2-Classic.", + "id": "ec2-release-address-2", + "title": "To release an Elastic IP addresses for EC2-Classic" + } + ], + "ReplaceNetworkAclAssociation": [ + { + "input": { + "AssociationId": "aclassoc-e5b95c8c", + "NetworkAclId": "acl-5fb85d36" + }, + "output": { + "NewAssociationId": "aclassoc-3999875b" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified network ACL with the subnet for the specified network ACL association.", + "id": "ec2-replace-network-acl-association-1", + "title": "To replace the network ACL associated with a subnet" + } + ], + "ReplaceNetworkAclEntry": [ + { + "input": { + "CidrBlock": "203.0.113.12/24", + "Egress": false, + "NetworkAclId": "acl-5fb85d36", + "PortRange": { + "From": 53, + "To": 53 + }, + "Protocol": "udp", + "RuleAction": "allow", + "RuleNumber": 100 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example replaces an entry for the specified network ACL. The new rule 100 allows ingress traffic from 203.0.113.12/24 on UDP port 53 (DNS) into any associated subnet.", + "id": "ec2-replace-network-acl-entry-1", + "title": "To replace a network ACL entry" + } + ], + "ReplaceRoute": [ + { + "input": { + "DestinationCidrBlock": "10.0.0.0/16", + "GatewayId": "vgw-9a4cacf3", + "RouteTableId": "rtb-22574640" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example replaces the specified route in the specified table table. The new route matches the specified CIDR and sends the traffic to the specified virtual private gateway.", + "id": "ec2-replace-route-1", + "title": "To replace a route" + } + ], + "ReplaceRouteTableAssociation": [ + { + "input": { + "AssociationId": "rtbassoc-781d0d1a", + "RouteTableId": "rtb-22574640" + }, + "output": { + "NewAssociationId": "rtbassoc-3a1f0f58" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified route table with the subnet for the specified route table association.", + "id": "ec2-replace-route-table-association-1", + "title": "To replace the route table associated with a subnet" + } + ], + "RequestSpotFleet": [ + { + "input": { + "SpotFleetRequestConfig": { + "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", + "LaunchSpecifications": [ + { + "IamInstanceProfile": { + "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" + }, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "m3.medium", + "KeyName": "my-key-pair", + "SecurityGroups": [ + { + "GroupId": "sg-1a2b3c4d" + } + ], + "SubnetId": "subnet-1a2b3c4d, subnet-3c4d5e6f" + } + ], + "SpotPrice": "0.04", + "TargetCapacity": 2 + } + }, + "output": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a Spot fleet request with two launch specifications that differ only by subnet. The Spot fleet launches the instances in the specified subnet with the lowest price. If the instances are launched in a default VPC, they receive a public IP address by default. If the instances are launched in a nondefault VPC, they do not receive a public IP address by default. Note that you can't specify different subnets from the same Availability Zone in a Spot fleet request.", + "id": "ec2-request-spot-fleet-1", + "title": "To request a Spot fleet in the subnet with the lowest price" + }, + { + "input": { + "SpotFleetRequestConfig": { + "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", + "LaunchSpecifications": [ + { + "IamInstanceProfile": { + "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" + }, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "m3.medium", + "KeyName": "my-key-pair", + "Placement": { + "AvailabilityZone": "us-west-2a, us-west-2b" + }, + "SecurityGroups": [ + { + "GroupId": "sg-1a2b3c4d" + } + ] + } + ], + "SpotPrice": "0.04", + "TargetCapacity": 2 + } + }, + "output": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a Spot fleet request with two launch specifications that differ only by Availability Zone. The Spot fleet launches the instances in the specified Availability Zone with the lowest price. If your account supports EC2-VPC only, Amazon EC2 launches the Spot instances in the default subnet of the Availability Zone. If your account supports EC2-Classic, Amazon EC2 launches the instances in EC2-Classic in the Availability Zone.", + "id": "ec2-request-spot-fleet-2", + "title": "To request a Spot fleet in the Availability Zone with the lowest price" + }, + { + "input": { + "SpotFleetRequestConfig": { + "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", + "LaunchSpecifications": [ + { + "IamInstanceProfile": { + "Arn": "arn:aws:iam::880185128111:instance-profile/my-iam-role" + }, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "m3.medium", + "KeyName": "my-key-pair", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": true, + "DeviceIndex": 0, + "Groups": [ + "sg-1a2b3c4d" + ], + "SubnetId": "subnet-1a2b3c4d" + } + ] + } + ], + "SpotPrice": "0.04", + "TargetCapacity": 2 + } + }, + "output": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example assigns public addresses to instances launched in a nondefault VPC. Note that when you specify a network interface, you must include the subnet ID and security group ID using the network interface.", + "id": "ec2-request-spot-fleet-3", + "title": "To launch Spot instances in a subnet and assign them public IP addresses" + }, + { + "input": { + "SpotFleetRequestConfig": { + "AllocationStrategy": "diversified", + "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", + "LaunchSpecifications": [ + { + "ImageId": "ami-1a2b3c4d", + "InstanceType": "c4.2xlarge", + "SubnetId": "subnet-1a2b3c4d" + }, + { + "ImageId": "ami-1a2b3c4d", + "InstanceType": "m3.2xlarge", + "SubnetId": "subnet-1a2b3c4d" + }, + { + "ImageId": "ami-1a2b3c4d", + "InstanceType": "r3.2xlarge", + "SubnetId": "subnet-1a2b3c4d" + } + ], + "SpotPrice": "0.70", + "TargetCapacity": 30 + } + }, + "output": { + "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a Spot fleet request that launches 30 instances using the diversified allocation strategy. The launch specifications differ by instance type. The Spot fleet distributes the instances across the launch specifications such that there are 10 instances of each type.", + "id": "ec2-request-spot-fleet-4", + "title": "To request a Spot fleet using the diversified allocation strategy" + } + ], + "RequestSpotInstances": [ + { + "input": { + "InstanceCount": 5, + "LaunchSpecification": { + "IamInstanceProfile": { + "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" + }, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "m3.medium", + "KeyName": "my-key-pair", + "Placement": { + "AvailabilityZone": "us-west-2a" + }, + "SecurityGroupIds": [ + "sg-1a2b3c4d" + ] + }, + "SpotPrice": "0.03", + "Type": "one-time" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a one-time Spot Instance request for five instances in the specified Availability Zone. If your account supports EC2-VPC only, Amazon EC2 launches the instances in the default subnet of the specified Availability Zone. If your account supports EC2-Classic, Amazon EC2 launches the instances in EC2-Classic in the specified Availability Zone.", + "id": "ec2-request-spot-instances-1", + "title": "To create a one-time Spot Instance request" + }, + { + "input": { + "InstanceCount": 5, + "LaunchSpecification": { + "IamInstanceProfile": { + "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" + }, + "ImageId": "ami-1a2b3c4d", + "InstanceType": "m3.medium", + "SecurityGroupIds": [ + "sg-1a2b3c4d" + ], + "SubnetId": "subnet-1a2b3c4d" + }, + "SpotPrice": "0.050", + "Type": "one-time" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example command creates a one-time Spot Instance request for five instances in the specified subnet. Amazon EC2 launches the instances in the specified subnet. If the VPC is a nondefault VPC, the instances do not receive a public IP address by default.", + "id": "ec2-request-spot-instances-2", + "title": "To create a one-time Spot Instance request" + } + ], + "ResetSnapshotAttribute": [ + { + "input": { + "Attribute": "createVolumePermission", + "SnapshotId": "snap-1234567890abcdef0" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example resets the create volume permissions for snapshot ``snap-1234567890abcdef0``. If the command succeeds, no output is returned.", + "id": "to-reset-a-snapshot-attribute-1472508825735", + "title": "To reset a snapshot attribute" + } + ], + "RestoreAddressToClassic": [ + { + "input": { + "PublicIp": "198.51.100.0" + }, + "output": { + "PublicIp": "198.51.100.0", + "Status": "MoveInProgress" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example restores the specified Elastic IP address to the EC2-Classic platform.", + "id": "ec2-restore-address-to-classic-1", + "title": "To restore an address to EC2-Classic" + } + ], + "RunScheduledInstances": [ + { + "input": { + "InstanceCount": 1, + "LaunchSpecification": { + "IamInstanceProfile": { + "Name": "my-iam-role" + }, + "ImageId": "ami-12345678", + "InstanceType": "c4.large", + "KeyName": "my-key-pair", + "NetworkInterfaces": [ + { + "AssociatePublicIpAddress": true, + "DeviceIndex": 0, + "Groups": [ + "sg-12345678" + ], + "SubnetId": "subnet-12345678" + } + ] + }, + "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012" + }, + "output": { + "InstanceIdSet": [ + "i-1234567890abcdef0" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example launches the specified Scheduled Instance in a VPC.", + "id": "ec2-run-scheduled-instances-1", + "title": "To launch a Scheduled Instance in a VPC" + }, + { + "input": { + "InstanceCount": 1, + "LaunchSpecification": { + "IamInstanceProfile": { + "Name": "my-iam-role" + }, + "ImageId": "ami-12345678", + "InstanceType": "c4.large", + "KeyName": "my-key-pair", + "Placement": { + "AvailabilityZone": "us-west-2b" + }, + "SecurityGroupIds": [ + "sg-12345678" + ] + }, + "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012" + }, + "output": { + "InstanceIdSet": [ + "i-1234567890abcdef0" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example launches the specified Scheduled Instance in EC2-Classic.", + "id": "ec2-run-scheduled-instances-2", + "title": "To launch a Scheduled Instance in EC2-Classic" + } + ], + "UnassignPrivateIpAddresses": [ + { + "input": { + "NetworkInterfaceId": "eni-e5aa89a3", + "PrivateIpAddresses": [ + "10.0.0.82" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example unassigns the specified private IP address from the specified network interface.", + "id": "ec2-unassign-private-ip-addresses-1", + "title": "To unassign a secondary private IP address from a network interface" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.min.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.min.json new file mode 100644 index 0000000..2a065d8 --- /dev/null +++ b/node_modules/aws-sdk/apis/ec2-2016-09-15.min.json @@ -0,0 +1,10892 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-09-15", + "endpointPrefix": "ec2", + "protocol": "ec2", + "serviceAbbreviation": "Amazon EC2", + "serviceFullName": "Amazon Elastic Compute Cloud", + "signatureVersion": "v4", + "xmlNamespace": "http://ec2.amazonaws.com/doc/2016-09-15" + }, + "operations": { + "AcceptReservedInstancesExchangeQuote": { + "input": { + "type": "structure", + "required": [ + "ReservedInstanceIds" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "ReservedInstanceIds": { + "shape": "S3", + "locationName": "ReservedInstanceId" + }, + "TargetConfigurations": { + "shape": "S5", + "locationName": "TargetConfiguration" + } + } + }, + "output": { + "type": "structure", + "members": { + "ExchangeId": { + "locationName": "exchangeId" + } + } + } + }, + "AcceptVpcPeeringConnection": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + } + } + }, + "output": { + "type": "structure", + "members": { + "VpcPeeringConnection": { + "shape": "Sb", + "locationName": "vpcPeeringConnection" + } + } + } + }, + "AllocateAddress": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Domain": {} + } + }, + "output": { + "type": "structure", + "members": { + "PublicIp": { + "locationName": "publicIp" + }, + "Domain": { + "locationName": "domain" + }, + "AllocationId": { + "locationName": "allocationId" + } + } + } + }, + "AllocateHosts": { + "input": { + "type": "structure", + "required": [ + "InstanceType", + "Quantity", + "AvailabilityZone" + ], + "members": { + "AutoPlacement": { + "locationName": "autoPlacement" + }, + "ClientToken": { + "locationName": "clientToken" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Quantity": { + "locationName": "quantity", + "type": "integer" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + } + } + }, + "output": { + "type": "structure", + "members": { + "HostIds": { + "shape": "Sp", + "locationName": "hostIdSet" + } + } + } + }, + "AssignPrivateIpAddresses": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId" + ], + "members": { + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "PrivateIpAddresses": { + "shape": "Sr", + "locationName": "privateIpAddress" + }, + "SecondaryPrivateIpAddressCount": { + "locationName": "secondaryPrivateIpAddressCount", + "type": "integer" + }, + "AllowReassignment": { + "locationName": "allowReassignment", + "type": "boolean" + } + } + } + }, + "AssociateAddress": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": {}, + "PublicIp": {}, + "AllocationId": {}, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "AllowReassociation": { + "locationName": "allowReassociation", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "AssociationId": { + "locationName": "associationId" + } + } + } + }, + "AssociateDhcpOptions": { + "input": { + "type": "structure", + "required": [ + "DhcpOptionsId", + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "DhcpOptionsId": {}, + "VpcId": {} + } + } + }, + "AssociateRouteTable": { + "input": { + "type": "structure", + "required": [ + "SubnetId", + "RouteTableId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "RouteTableId": { + "locationName": "routeTableId" + } + } + }, + "output": { + "type": "structure", + "members": { + "AssociationId": { + "locationName": "associationId" + } + } + } + }, + "AttachClassicLinkVpc": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "VpcId", + "Groups" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "Groups": { + "shape": "Sy", + "locationName": "SecurityGroupId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "AttachInternetGateway": { + "input": { + "type": "structure", + "required": [ + "InternetGatewayId", + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InternetGatewayId": { + "locationName": "internetGatewayId" + }, + "VpcId": { + "locationName": "vpcId" + } + } + } + }, + "AttachNetworkInterface": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId", + "InstanceId", + "DeviceIndex" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "DeviceIndex": { + "locationName": "deviceIndex", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "AttachmentId": { + "locationName": "attachmentId" + } + } + } + }, + "AttachVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId", + "InstanceId", + "Device" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": {}, + "InstanceId": {}, + "Device": {} + } + }, + "output": { + "shape": "S14" + } + }, + "AttachVpnGateway": { + "input": { + "type": "structure", + "required": [ + "VpnGatewayId", + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpnGatewayId": {}, + "VpcId": {} + } + }, + "output": { + "type": "structure", + "members": { + "VpcAttachment": { + "shape": "S18", + "locationName": "attachment" + } + } + } + }, + "AuthorizeSecurityGroupEgress": { + "input": { + "type": "structure", + "required": [ + "GroupId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupId": { + "locationName": "groupId" + }, + "SourceSecurityGroupName": { + "locationName": "sourceSecurityGroupName" + }, + "SourceSecurityGroupOwnerId": { + "locationName": "sourceSecurityGroupOwnerId" + }, + "IpProtocol": { + "locationName": "ipProtocol" + }, + "FromPort": { + "locationName": "fromPort", + "type": "integer" + }, + "ToPort": { + "locationName": "toPort", + "type": "integer" + }, + "CidrIp": { + "locationName": "cidrIp" + }, + "IpPermissions": { + "shape": "S1b", + "locationName": "ipPermissions" + } + } + } + }, + "AuthorizeSecurityGroupIngress": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupName": {}, + "GroupId": {}, + "SourceSecurityGroupName": {}, + "SourceSecurityGroupOwnerId": {}, + "IpProtocol": {}, + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + }, + "CidrIp": {}, + "IpPermissions": { + "shape": "S1b" + } + } + } + }, + "BundleInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "Storage" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": {}, + "Storage": { + "shape": "S1l" + } + } + }, + "output": { + "type": "structure", + "members": { + "BundleTask": { + "shape": "S1p", + "locationName": "bundleInstanceTask" + } + } + } + }, + "CancelBundleTask": { + "input": { + "type": "structure", + "required": [ + "BundleId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "BundleId": {} + } + }, + "output": { + "type": "structure", + "members": { + "BundleTask": { + "shape": "S1p", + "locationName": "bundleInstanceTask" + } + } + } + }, + "CancelConversionTask": { + "input": { + "type": "structure", + "required": [ + "ConversionTaskId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ConversionTaskId": { + "locationName": "conversionTaskId" + }, + "ReasonMessage": { + "locationName": "reasonMessage" + } + } + } + }, + "CancelExportTask": { + "input": { + "type": "structure", + "required": [ + "ExportTaskId" + ], + "members": { + "ExportTaskId": { + "locationName": "exportTaskId" + } + } + } + }, + "CancelImportTask": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "ImportTaskId": {}, + "CancelReason": {} + } + }, + "output": { + "type": "structure", + "members": { + "ImportTaskId": { + "locationName": "importTaskId" + }, + "State": { + "locationName": "state" + }, + "PreviousState": { + "locationName": "previousState" + } + } + } + }, + "CancelReservedInstancesListing": { + "input": { + "type": "structure", + "required": [ + "ReservedInstancesListingId" + ], + "members": { + "ReservedInstancesListingId": { + "locationName": "reservedInstancesListingId" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesListings": { + "shape": "S20", + "locationName": "reservedInstancesListingsSet" + } + } + } + }, + "CancelSpotFleetRequests": { + "input": { + "type": "structure", + "required": [ + "SpotFleetRequestIds", + "TerminateInstances" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotFleetRequestIds": { + "shape": "S2c", + "locationName": "spotFleetRequestId" + }, + "TerminateInstances": { + "locationName": "terminateInstances", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "UnsuccessfulFleetRequests": { + "locationName": "unsuccessfulFleetRequestSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "SpotFleetRequestId", + "Error" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "Error": { + "locationName": "error", + "type": "structure", + "required": [ + "Code", + "Message" + ], + "members": { + "Code": { + "locationName": "code" + }, + "Message": { + "locationName": "message" + } + } + } + } + } + }, + "SuccessfulFleetRequests": { + "locationName": "successfulFleetRequestSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "SpotFleetRequestId", + "CurrentSpotFleetRequestState", + "PreviousSpotFleetRequestState" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "CurrentSpotFleetRequestState": { + "locationName": "currentSpotFleetRequestState" + }, + "PreviousSpotFleetRequestState": { + "locationName": "previousSpotFleetRequestState" + } + } + } + } + } + } + }, + "CancelSpotInstanceRequests": { + "input": { + "type": "structure", + "required": [ + "SpotInstanceRequestIds" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotInstanceRequestIds": { + "shape": "S2m", + "locationName": "SpotInstanceRequestId" + } + } + }, + "output": { + "type": "structure", + "members": { + "CancelledSpotInstanceRequests": { + "locationName": "spotInstanceRequestSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "SpotInstanceRequestId": { + "locationName": "spotInstanceRequestId" + }, + "State": { + "locationName": "state" + } + } + } + } + } + } + }, + "ConfirmProductInstance": { + "input": { + "type": "structure", + "required": [ + "ProductCode", + "InstanceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ProductCode": {}, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "OwnerId": { + "locationName": "ownerId" + }, + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "CopyImage": { + "input": { + "type": "structure", + "required": [ + "SourceRegion", + "SourceImageId", + "Name" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SourceRegion": {}, + "SourceImageId": {}, + "Name": {}, + "Description": {}, + "ClientToken": {}, + "Encrypted": { + "locationName": "encrypted", + "type": "boolean" + }, + "KmsKeyId": { + "locationName": "kmsKeyId" + } + } + }, + "output": { + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + } + } + } + }, + "CopySnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceRegion", + "SourceSnapshotId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SourceRegion": {}, + "SourceSnapshotId": {}, + "Description": {}, + "DestinationRegion": { + "locationName": "destinationRegion" + }, + "PresignedUrl": { + "locationName": "presignedUrl" + }, + "Encrypted": { + "locationName": "encrypted", + "type": "boolean" + }, + "KmsKeyId": { + "locationName": "kmsKeyId" + } + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotId": { + "locationName": "snapshotId" + } + } + } + }, + "CreateCustomerGateway": { + "input": { + "type": "structure", + "required": [ + "Type", + "PublicIp", + "BgpAsn" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Type": {}, + "PublicIp": { + "locationName": "IpAddress" + }, + "BgpAsn": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "CustomerGateway": { + "shape": "S30", + "locationName": "customerGateway" + } + } + } + }, + "CreateDhcpOptions": { + "input": { + "type": "structure", + "required": [ + "DhcpConfigurations" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "DhcpConfigurations": { + "locationName": "dhcpConfiguration", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Key": { + "locationName": "key" + }, + "Values": { + "shape": "S2c", + "locationName": "Value" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "DhcpOptions": { + "shape": "S35", + "locationName": "dhcpOptions" + } + } + } + }, + "CreateFlowLogs": { + "input": { + "type": "structure", + "required": [ + "ResourceIds", + "ResourceType", + "TrafficType", + "LogGroupName", + "DeliverLogsPermissionArn" + ], + "members": { + "ResourceIds": { + "shape": "S2c", + "locationName": "ResourceId" + }, + "ResourceType": {}, + "TrafficType": {}, + "LogGroupName": {}, + "DeliverLogsPermissionArn": {}, + "ClientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FlowLogIds": { + "shape": "S2c", + "locationName": "flowLogIdSet" + }, + "ClientToken": { + "locationName": "clientToken" + }, + "Unsuccessful": { + "shape": "S3e", + "locationName": "unsuccessful" + } + } + } + }, + "CreateImage": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "Name" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "Name": { + "locationName": "name" + }, + "Description": { + "locationName": "description" + }, + "NoReboot": { + "locationName": "noReboot", + "type": "boolean" + }, + "BlockDeviceMappings": { + "shape": "S3i", + "locationName": "blockDeviceMapping" + } + } + }, + "output": { + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + } + } + } + }, + "CreateInstanceExportTask": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "Description": { + "locationName": "description" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "TargetEnvironment": { + "locationName": "targetEnvironment" + }, + "ExportToS3Task": { + "locationName": "exportToS3", + "type": "structure", + "members": { + "DiskImageFormat": { + "locationName": "diskImageFormat" + }, + "ContainerFormat": { + "locationName": "containerFormat" + }, + "S3Bucket": { + "locationName": "s3Bucket" + }, + "S3Prefix": { + "locationName": "s3Prefix" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ExportTask": { + "shape": "S3t", + "locationName": "exportTask" + } + } + } + }, + "CreateInternetGateway": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "InternetGateway": { + "shape": "S3z", + "locationName": "internetGateway" + } + } + } + }, + "CreateKeyPair": { + "input": { + "type": "structure", + "required": [ + "KeyName" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "KeyName": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyName": { + "locationName": "keyName" + }, + "KeyFingerprint": { + "locationName": "keyFingerprint" + }, + "KeyMaterial": { + "locationName": "keyMaterial" + } + } + } + }, + "CreateNatGateway": { + "input": { + "type": "structure", + "required": [ + "SubnetId", + "AllocationId" + ], + "members": { + "SubnetId": {}, + "AllocationId": {}, + "ClientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "NatGateway": { + "shape": "S46", + "locationName": "natGateway" + }, + "ClientToken": { + "locationName": "clientToken" + } + } + } + }, + "CreateNetworkAcl": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": { + "locationName": "vpcId" + } + } + }, + "output": { + "type": "structure", + "members": { + "NetworkAcl": { + "shape": "S4d", + "locationName": "networkAcl" + } + } + } + }, + "CreateNetworkAclEntry": { + "input": { + "type": "structure", + "required": [ + "NetworkAclId", + "RuleNumber", + "Protocol", + "RuleAction", + "Egress", + "CidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkAclId": { + "locationName": "networkAclId" + }, + "RuleNumber": { + "locationName": "ruleNumber", + "type": "integer" + }, + "Protocol": { + "locationName": "protocol" + }, + "RuleAction": { + "locationName": "ruleAction" + }, + "Egress": { + "locationName": "egress", + "type": "boolean" + }, + "CidrBlock": { + "locationName": "cidrBlock" + }, + "IcmpTypeCode": { + "shape": "S4h", + "locationName": "Icmp" + }, + "PortRange": { + "shape": "S4i", + "locationName": "portRange" + } + } + } + }, + "CreateNetworkInterface": { + "input": { + "type": "structure", + "required": [ + "SubnetId" + ], + "members": { + "SubnetId": { + "locationName": "subnetId" + }, + "Description": { + "locationName": "description" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "Groups": { + "shape": "S4n", + "locationName": "SecurityGroupId" + }, + "PrivateIpAddresses": { + "shape": "S4o", + "locationName": "privateIpAddresses" + }, + "SecondaryPrivateIpAddressCount": { + "locationName": "secondaryPrivateIpAddressCount", + "type": "integer" + }, + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "NetworkInterface": { + "shape": "S4r", + "locationName": "networkInterface" + } + } + } + }, + "CreatePlacementGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "Strategy" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupName": { + "locationName": "groupName" + }, + "Strategy": { + "locationName": "strategy" + } + } + } + }, + "CreateReservedInstancesListing": { + "input": { + "type": "structure", + "required": [ + "ReservedInstancesId", + "InstanceCount", + "PriceSchedules", + "ClientToken" + ], + "members": { + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + }, + "PriceSchedules": { + "locationName": "priceSchedules", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Term": { + "locationName": "term", + "type": "long" + }, + "Price": { + "locationName": "price", + "type": "double" + }, + "CurrencyCode": { + "locationName": "currencyCode" + } + } + } + }, + "ClientToken": { + "locationName": "clientToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesListings": { + "shape": "S20", + "locationName": "reservedInstancesListingsSet" + } + } + } + }, + "CreateRoute": { + "input": { + "type": "structure", + "required": [ + "RouteTableId", + "DestinationCidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "RouteTableId": { + "locationName": "routeTableId" + }, + "DestinationCidrBlock": { + "locationName": "destinationCidrBlock" + }, + "GatewayId": { + "locationName": "gatewayId" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + }, + "NatGatewayId": { + "locationName": "natGatewayId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "CreateRouteTable": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": { + "locationName": "vpcId" + } + } + }, + "output": { + "type": "structure", + "members": { + "RouteTable": { + "shape": "S5a", + "locationName": "routeTable" + } + } + } + }, + "CreateSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "Description" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupName": {}, + "Description": { + "locationName": "GroupDescription" + }, + "VpcId": {} + } + }, + "output": { + "type": "structure", + "members": { + "GroupId": { + "locationName": "groupId" + } + } + } + }, + "CreateSnapshot": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": {}, + "Description": {} + } + }, + "output": { + "shape": "S5m" + } + }, + "CreateSpotDatafeedSubscription": { + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Bucket": { + "locationName": "bucket" + }, + "Prefix": { + "locationName": "prefix" + } + } + }, + "output": { + "type": "structure", + "members": { + "SpotDatafeedSubscription": { + "shape": "S5q", + "locationName": "spotDatafeedSubscription" + } + } + } + }, + "CreateSubnet": { + "input": { + "type": "structure", + "required": [ + "VpcId", + "CidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": {}, + "CidrBlock": {}, + "AvailabilityZone": {} + } + }, + "output": { + "type": "structure", + "members": { + "Subnet": { + "shape": "S5v", + "locationName": "subnet" + } + } + } + }, + "CreateTags": { + "input": { + "type": "structure", + "required": [ + "Resources", + "Tags" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Resources": { + "shape": "S5y", + "locationName": "ResourceId" + }, + "Tags": { + "shape": "Sh", + "locationName": "Tag" + } + } + } + }, + "CreateVolume": { + "input": { + "type": "structure", + "required": [ + "AvailabilityZone" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Size": { + "type": "integer" + }, + "SnapshotId": {}, + "AvailabilityZone": {}, + "VolumeType": {}, + "Iops": { + "type": "integer" + }, + "Encrypted": { + "locationName": "encrypted", + "type": "boolean" + }, + "KmsKeyId": {} + } + }, + "output": { + "shape": "S60" + } + }, + "CreateVpc": { + "input": { + "type": "structure", + "required": [ + "CidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "CidrBlock": {}, + "InstanceTenancy": { + "locationName": "instanceTenancy" + } + } + }, + "output": { + "type": "structure", + "members": { + "Vpc": { + "shape": "S66", + "locationName": "vpc" + } + } + } + }, + "CreateVpcEndpoint": { + "input": { + "type": "structure", + "required": [ + "VpcId", + "ServiceName" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "VpcId": {}, + "ServiceName": {}, + "PolicyDocument": {}, + "RouteTableIds": { + "shape": "S2c", + "locationName": "RouteTableId" + }, + "ClientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "VpcEndpoint": { + "shape": "S6a", + "locationName": "vpcEndpoint" + }, + "ClientToken": { + "locationName": "clientToken" + } + } + } + }, + "CreateVpcPeeringConnection": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": { + "locationName": "vpcId" + }, + "PeerVpcId": { + "locationName": "peerVpcId" + }, + "PeerOwnerId": { + "locationName": "peerOwnerId" + } + } + }, + "output": { + "type": "structure", + "members": { + "VpcPeeringConnection": { + "shape": "Sb", + "locationName": "vpcPeeringConnection" + } + } + } + }, + "CreateVpnConnection": { + "input": { + "type": "structure", + "required": [ + "Type", + "CustomerGatewayId", + "VpnGatewayId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Type": {}, + "CustomerGatewayId": {}, + "VpnGatewayId": {}, + "Options": { + "locationName": "options", + "type": "structure", + "members": { + "StaticRoutesOnly": { + "locationName": "staticRoutesOnly", + "type": "boolean" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "VpnConnection": { + "shape": "S6h", + "locationName": "vpnConnection" + } + } + } + }, + "CreateVpnConnectionRoute": { + "input": { + "type": "structure", + "required": [ + "VpnConnectionId", + "DestinationCidrBlock" + ], + "members": { + "VpnConnectionId": {}, + "DestinationCidrBlock": {} + } + } + }, + "CreateVpnGateway": { + "input": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Type": {}, + "AvailabilityZone": {} + } + }, + "output": { + "type": "structure", + "members": { + "VpnGateway": { + "shape": "S6t", + "locationName": "vpnGateway" + } + } + } + }, + "DeleteCustomerGateway": { + "input": { + "type": "structure", + "required": [ + "CustomerGatewayId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "CustomerGatewayId": {} + } + } + }, + "DeleteDhcpOptions": { + "input": { + "type": "structure", + "required": [ + "DhcpOptionsId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "DhcpOptionsId": {} + } + } + }, + "DeleteFlowLogs": { + "input": { + "type": "structure", + "required": [ + "FlowLogIds" + ], + "members": { + "FlowLogIds": { + "shape": "S2c", + "locationName": "FlowLogId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Unsuccessful": { + "shape": "S3e", + "locationName": "unsuccessful" + } + } + } + }, + "DeleteInternetGateway": { + "input": { + "type": "structure", + "required": [ + "InternetGatewayId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InternetGatewayId": { + "locationName": "internetGatewayId" + } + } + } + }, + "DeleteKeyPair": { + "input": { + "type": "structure", + "required": [ + "KeyName" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "KeyName": {} + } + } + }, + "DeleteNatGateway": { + "input": { + "type": "structure", + "required": [ + "NatGatewayId" + ], + "members": { + "NatGatewayId": {} + } + }, + "output": { + "type": "structure", + "members": { + "NatGatewayId": { + "locationName": "natGatewayId" + } + } + } + }, + "DeleteNetworkAcl": { + "input": { + "type": "structure", + "required": [ + "NetworkAclId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkAclId": { + "locationName": "networkAclId" + } + } + } + }, + "DeleteNetworkAclEntry": { + "input": { + "type": "structure", + "required": [ + "NetworkAclId", + "RuleNumber", + "Egress" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkAclId": { + "locationName": "networkAclId" + }, + "RuleNumber": { + "locationName": "ruleNumber", + "type": "integer" + }, + "Egress": { + "locationName": "egress", + "type": "boolean" + } + } + } + }, + "DeleteNetworkInterface": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + } + } + } + }, + "DeletePlacementGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupName": { + "locationName": "groupName" + } + } + } + }, + "DeleteRoute": { + "input": { + "type": "structure", + "required": [ + "RouteTableId", + "DestinationCidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "RouteTableId": { + "locationName": "routeTableId" + }, + "DestinationCidrBlock": { + "locationName": "destinationCidrBlock" + } + } + } + }, + "DeleteRouteTable": { + "input": { + "type": "structure", + "required": [ + "RouteTableId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "RouteTableId": { + "locationName": "routeTableId" + } + } + } + }, + "DeleteSecurityGroup": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupName": {}, + "GroupId": {} + } + } + }, + "DeleteSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SnapshotId": {} + } + } + }, + "DeleteSpotDatafeedSubscription": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + } + } + } + }, + "DeleteSubnet": { + "input": { + "type": "structure", + "required": [ + "SubnetId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SubnetId": {} + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "Resources" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Resources": { + "shape": "S5y", + "locationName": "resourceId" + }, + "Tags": { + "shape": "Sh", + "locationName": "tag" + } + } + } + }, + "DeleteVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": {} + } + } + }, + "DeleteVpc": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": {} + } + } + }, + "DeleteVpcEndpoints": { + "input": { + "type": "structure", + "required": [ + "VpcEndpointIds" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "VpcEndpointIds": { + "shape": "S2c", + "locationName": "VpcEndpointId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Unsuccessful": { + "shape": "S3e", + "locationName": "unsuccessful" + } + } + } + }, + "DeleteVpcPeeringConnection": { + "input": { + "type": "structure", + "required": [ + "VpcPeeringConnectionId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "DeleteVpnConnection": { + "input": { + "type": "structure", + "required": [ + "VpnConnectionId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpnConnectionId": {} + } + } + }, + "DeleteVpnConnectionRoute": { + "input": { + "type": "structure", + "required": [ + "VpnConnectionId", + "DestinationCidrBlock" + ], + "members": { + "VpnConnectionId": {}, + "DestinationCidrBlock": {} + } + } + }, + "DeleteVpnGateway": { + "input": { + "type": "structure", + "required": [ + "VpnGatewayId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpnGatewayId": {} + } + } + }, + "DeregisterImage": { + "input": { + "type": "structure", + "required": [ + "ImageId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageId": {} + } + } + }, + "DescribeAccountAttributes": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "AttributeNames": { + "locationName": "attributeName", + "type": "list", + "member": { + "locationName": "attributeName" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "AccountAttributes": { + "locationName": "accountAttributeSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "AttributeName": { + "locationName": "attributeName" + }, + "AttributeValues": { + "locationName": "attributeValueSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "AttributeValue": { + "locationName": "attributeValue" + } + } + } + } + } + } + } + } + } + }, + "DescribeAddresses": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "PublicIps": { + "locationName": "PublicIp", + "type": "list", + "member": { + "locationName": "PublicIp" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "AllocationIds": { + "locationName": "AllocationId", + "type": "list", + "member": { + "locationName": "AllocationId" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "Addresses": { + "locationName": "addressesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "PublicIp": { + "locationName": "publicIp" + }, + "AllocationId": { + "locationName": "allocationId" + }, + "AssociationId": { + "locationName": "associationId" + }, + "Domain": { + "locationName": "domain" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "NetworkInterfaceOwnerId": { + "locationName": "networkInterfaceOwnerId" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + } + } + } + } + } + } + }, + "DescribeAvailabilityZones": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ZoneNames": { + "locationName": "ZoneName", + "type": "list", + "member": { + "locationName": "ZoneName" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "AvailabilityZones": { + "locationName": "availabilityZoneInfo", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ZoneName": { + "locationName": "zoneName" + }, + "State": { + "locationName": "zoneState" + }, + "RegionName": { + "locationName": "regionName" + }, + "Messages": { + "locationName": "messageSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Message": { + "locationName": "message" + } + } + } + } + } + } + } + } + } + }, + "DescribeBundleTasks": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "BundleIds": { + "locationName": "BundleId", + "type": "list", + "member": { + "locationName": "BundleId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "BundleTasks": { + "locationName": "bundleInstanceTasksSet", + "type": "list", + "member": { + "shape": "S1p", + "locationName": "item" + } + } + } + } + }, + "DescribeClassicLinkInstances": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Instances": { + "locationName": "instancesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "Groups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeConversionTasks": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ConversionTaskIds": { + "locationName": "conversionTaskId", + "type": "list", + "member": { + "locationName": "item" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ConversionTasks": { + "locationName": "conversionTasks", + "type": "list", + "member": { + "shape": "S8p", + "locationName": "item" + } + } + } + } + }, + "DescribeCustomerGateways": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "CustomerGatewayIds": { + "locationName": "CustomerGatewayId", + "type": "list", + "member": { + "locationName": "CustomerGatewayId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "CustomerGateways": { + "locationName": "customerGatewaySet", + "type": "list", + "member": { + "shape": "S30", + "locationName": "item" + } + } + } + } + }, + "DescribeDhcpOptions": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "DhcpOptionsIds": { + "locationName": "DhcpOptionsId", + "type": "list", + "member": { + "locationName": "DhcpOptionsId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "DhcpOptions": { + "locationName": "dhcpOptionsSet", + "type": "list", + "member": { + "shape": "S35", + "locationName": "item" + } + } + } + } + }, + "DescribeExportTasks": { + "input": { + "type": "structure", + "members": { + "ExportTaskIds": { + "locationName": "exportTaskId", + "type": "list", + "member": { + "locationName": "ExportTaskId" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ExportTasks": { + "locationName": "exportTaskSet", + "type": "list", + "member": { + "shape": "S3t", + "locationName": "item" + } + } + } + } + }, + "DescribeFlowLogs": { + "input": { + "type": "structure", + "members": { + "FlowLogIds": { + "shape": "S2c", + "locationName": "FlowLogId" + }, + "Filter": { + "shape": "S7y" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "FlowLogs": { + "locationName": "flowLogSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "CreationTime": { + "locationName": "creationTime", + "type": "timestamp" + }, + "FlowLogId": { + "locationName": "flowLogId" + }, + "FlowLogStatus": { + "locationName": "flowLogStatus" + }, + "ResourceId": { + "locationName": "resourceId" + }, + "TrafficType": { + "locationName": "trafficType" + }, + "LogGroupName": { + "locationName": "logGroupName" + }, + "DeliverLogsStatus": { + "locationName": "deliverLogsStatus" + }, + "DeliverLogsErrorMessage": { + "locationName": "deliverLogsErrorMessage" + }, + "DeliverLogsPermissionArn": { + "locationName": "deliverLogsPermissionArn" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeHostReservationOfferings": { + "input": { + "type": "structure", + "members": { + "OfferingId": {}, + "MinDuration": { + "type": "integer" + }, + "MaxDuration": { + "type": "integer" + }, + "Filter": { + "shape": "S7y" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "OfferingSet": { + "locationName": "offeringSet", + "type": "list", + "member": { + "type": "structure", + "members": { + "OfferingId": { + "locationName": "offeringId" + }, + "InstanceFamily": { + "locationName": "instanceFamily" + }, + "PaymentOption": { + "locationName": "paymentOption" + }, + "UpfrontPrice": { + "locationName": "upfrontPrice" + }, + "HourlyPrice": { + "locationName": "hourlyPrice" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "Duration": { + "locationName": "duration", + "type": "integer" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeHostReservations": { + "input": { + "type": "structure", + "members": { + "HostReservationIdSet": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "Filter": { + "shape": "S7y" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "HostReservationSet": { + "locationName": "hostReservationSet", + "type": "list", + "member": { + "type": "structure", + "members": { + "HostReservationId": { + "locationName": "hostReservationId" + }, + "HostIdSet": { + "shape": "S9o", + "locationName": "hostIdSet" + }, + "OfferingId": { + "locationName": "offeringId" + }, + "InstanceFamily": { + "locationName": "instanceFamily" + }, + "PaymentOption": { + "locationName": "paymentOption" + }, + "HourlyPrice": { + "locationName": "hourlyPrice" + }, + "UpfrontPrice": { + "locationName": "upfrontPrice" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "Count": { + "locationName": "count", + "type": "integer" + }, + "Duration": { + "locationName": "duration", + "type": "integer" + }, + "End": { + "locationName": "end", + "type": "timestamp" + }, + "Start": { + "locationName": "start", + "type": "timestamp" + }, + "State": { + "locationName": "state" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeHosts": { + "input": { + "type": "structure", + "members": { + "HostIds": { + "shape": "S9r", + "locationName": "hostId" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + }, + "Filter": { + "shape": "S7y", + "locationName": "filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "Hosts": { + "locationName": "hostSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "HostId": { + "locationName": "hostId" + }, + "AutoPlacement": { + "locationName": "autoPlacement" + }, + "HostReservationId": { + "locationName": "hostReservationId" + }, + "ClientToken": { + "locationName": "clientToken" + }, + "HostProperties": { + "locationName": "hostProperties", + "type": "structure", + "members": { + "Sockets": { + "locationName": "sockets", + "type": "integer" + }, + "Cores": { + "locationName": "cores", + "type": "integer" + }, + "TotalVCpus": { + "locationName": "totalVCpus", + "type": "integer" + }, + "InstanceType": { + "locationName": "instanceType" + } + } + }, + "State": { + "locationName": "state" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Instances": { + "locationName": "instances", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "InstanceType": { + "locationName": "instanceType" + } + } + } + }, + "AvailableCapacity": { + "locationName": "availableCapacity", + "type": "structure", + "members": { + "AvailableInstanceCapacity": { + "locationName": "availableInstanceCapacity", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceType": { + "locationName": "instanceType" + }, + "AvailableCapacity": { + "locationName": "availableCapacity", + "type": "integer" + }, + "TotalCapacity": { + "locationName": "totalCapacity", + "type": "integer" + } + } + } + }, + "AvailableVCpus": { + "locationName": "availableVCpus", + "type": "integer" + } + } + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeIdFormat": { + "input": { + "type": "structure", + "members": { + "Resource": {} + } + }, + "output": { + "type": "structure", + "members": { + "Statuses": { + "shape": "Sa4", + "locationName": "statusSet" + } + } + } + }, + "DescribeIdentityIdFormat": { + "input": { + "type": "structure", + "required": [ + "PrincipalArn" + ], + "members": { + "Resource": { + "locationName": "resource" + }, + "PrincipalArn": { + "locationName": "principalArn" + } + } + }, + "output": { + "type": "structure", + "members": { + "Statuses": { + "shape": "Sa4", + "locationName": "statusSet" + } + } + } + }, + "DescribeImageAttribute": { + "input": { + "type": "structure", + "required": [ + "ImageId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageId": {}, + "Attribute": {} + } + }, + "output": { + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + }, + "LaunchPermissions": { + "shape": "Sab", + "locationName": "launchPermission" + }, + "ProductCodes": { + "shape": "Sae", + "locationName": "productCodes" + }, + "KernelId": { + "shape": "S39", + "locationName": "kernel" + }, + "RamdiskId": { + "shape": "S39", + "locationName": "ramdisk" + }, + "Description": { + "shape": "S39", + "locationName": "description" + }, + "SriovNetSupport": { + "shape": "S39", + "locationName": "sriovNetSupport" + }, + "BlockDeviceMappings": { + "shape": "Sah", + "locationName": "blockDeviceMapping" + } + } + } + }, + "DescribeImages": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageIds": { + "locationName": "ImageId", + "type": "list", + "member": { + "locationName": "ImageId" + } + }, + "Owners": { + "shape": "Sak", + "locationName": "Owner" + }, + "ExecutableUsers": { + "locationName": "ExecutableBy", + "type": "list", + "member": { + "locationName": "ExecutableBy" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "Images": { + "locationName": "imagesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + }, + "ImageLocation": { + "locationName": "imageLocation" + }, + "State": { + "locationName": "imageState" + }, + "OwnerId": { + "locationName": "imageOwnerId" + }, + "CreationDate": { + "locationName": "creationDate" + }, + "Public": { + "locationName": "isPublic", + "type": "boolean" + }, + "ProductCodes": { + "shape": "Sae", + "locationName": "productCodes" + }, + "Architecture": { + "locationName": "architecture" + }, + "ImageType": { + "locationName": "imageType" + }, + "KernelId": { + "locationName": "kernelId" + }, + "RamdiskId": { + "locationName": "ramdiskId" + }, + "Platform": { + "locationName": "platform" + }, + "SriovNetSupport": { + "locationName": "sriovNetSupport" + }, + "EnaSupport": { + "locationName": "enaSupport", + "type": "boolean" + }, + "StateReason": { + "shape": "Sas", + "locationName": "stateReason" + }, + "ImageOwnerAlias": { + "locationName": "imageOwnerAlias" + }, + "Name": { + "locationName": "name" + }, + "Description": { + "locationName": "description" + }, + "RootDeviceType": { + "locationName": "rootDeviceType" + }, + "RootDeviceName": { + "locationName": "rootDeviceName" + }, + "BlockDeviceMappings": { + "shape": "Sah", + "locationName": "blockDeviceMapping" + }, + "VirtualizationType": { + "locationName": "virtualizationType" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "Hypervisor": { + "locationName": "hypervisor" + } + } + } + } + } + } + }, + "DescribeImportImageTasks": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "ImportTaskIds": { + "shape": "Sax", + "locationName": "ImportTaskId" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + }, + "Filters": { + "shape": "S7y" + } + } + }, + "output": { + "type": "structure", + "members": { + "ImportImageTasks": { + "locationName": "importImageTaskSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ImportTaskId": { + "locationName": "importTaskId" + }, + "Architecture": { + "locationName": "architecture" + }, + "LicenseType": { + "locationName": "licenseType" + }, + "Platform": { + "locationName": "platform" + }, + "Hypervisor": { + "locationName": "hypervisor" + }, + "Description": { + "locationName": "description" + }, + "SnapshotDetails": { + "shape": "Sb1", + "locationName": "snapshotDetailSet" + }, + "ImageId": { + "locationName": "imageId" + }, + "Progress": { + "locationName": "progress" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "Status": { + "locationName": "status" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeImportSnapshotTasks": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "ImportTaskIds": { + "shape": "Sax", + "locationName": "ImportTaskId" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + }, + "Filters": { + "shape": "S7y" + } + } + }, + "output": { + "type": "structure", + "members": { + "ImportSnapshotTasks": { + "locationName": "importSnapshotTaskSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ImportTaskId": { + "locationName": "importTaskId" + }, + "SnapshotTaskDetail": { + "shape": "Sb8", + "locationName": "snapshotTaskDetail" + }, + "Description": { + "locationName": "description" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeInstanceAttribute": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "Attribute": { + "locationName": "attribute" + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "InstanceType": { + "shape": "S39", + "locationName": "instanceType" + }, + "KernelId": { + "shape": "S39", + "locationName": "kernel" + }, + "RamdiskId": { + "shape": "S39", + "locationName": "ramdisk" + }, + "UserData": { + "shape": "S39", + "locationName": "userData" + }, + "DisableApiTermination": { + "shape": "Sbc", + "locationName": "disableApiTermination" + }, + "InstanceInitiatedShutdownBehavior": { + "shape": "S39", + "locationName": "instanceInitiatedShutdownBehavior" + }, + "RootDeviceName": { + "shape": "S39", + "locationName": "rootDeviceName" + }, + "BlockDeviceMappings": { + "shape": "Sbd", + "locationName": "blockDeviceMapping" + }, + "ProductCodes": { + "shape": "Sae", + "locationName": "productCodes" + }, + "EbsOptimized": { + "shape": "Sbc", + "locationName": "ebsOptimized" + }, + "SriovNetSupport": { + "shape": "S39", + "locationName": "sriovNetSupport" + }, + "EnaSupport": { + "shape": "Sbc", + "locationName": "enaSupport" + }, + "SourceDestCheck": { + "shape": "Sbc", + "locationName": "sourceDestCheck" + }, + "Groups": { + "shape": "S4t", + "locationName": "groupSet" + } + } + } + }, + "DescribeInstanceStatus": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + }, + "IncludeAllInstances": { + "locationName": "includeAllInstances", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceStatuses": { + "locationName": "instanceStatusSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Events": { + "locationName": "eventsSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "Description": { + "locationName": "description" + }, + "NotBefore": { + "locationName": "notBefore", + "type": "timestamp" + }, + "NotAfter": { + "locationName": "notAfter", + "type": "timestamp" + } + } + } + }, + "InstanceState": { + "shape": "Sbn", + "locationName": "instanceState" + }, + "SystemStatus": { + "shape": "Sbp", + "locationName": "systemStatus" + }, + "InstanceStatus": { + "shape": "Sbp", + "locationName": "instanceStatus" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeInstances": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Reservations": { + "locationName": "reservationSet", + "type": "list", + "member": { + "shape": "Sby", + "locationName": "item" + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeInternetGateways": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InternetGatewayIds": { + "shape": "S2c", + "locationName": "internetGatewayId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "InternetGateways": { + "locationName": "internetGatewaySet", + "type": "list", + "member": { + "shape": "S3z", + "locationName": "item" + } + } + } + } + }, + "DescribeKeyPairs": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "KeyNames": { + "locationName": "KeyName", + "type": "list", + "member": { + "locationName": "KeyName" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyPairs": { + "locationName": "keySet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "KeyName": { + "locationName": "keyName" + }, + "KeyFingerprint": { + "locationName": "keyFingerprint" + } + } + } + } + } + } + }, + "DescribeMovingAddresses": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "PublicIps": { + "shape": "S2c", + "locationName": "publicIp" + }, + "NextToken": { + "locationName": "nextToken" + }, + "Filters": { + "shape": "S7y", + "locationName": "filter" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "MovingAddressStatuses": { + "locationName": "movingAddressStatusSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "PublicIp": { + "locationName": "publicIp" + }, + "MoveStatus": { + "locationName": "moveStatus" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeNatGateways": { + "input": { + "type": "structure", + "members": { + "NatGatewayIds": { + "shape": "S2c", + "locationName": "NatGatewayId" + }, + "Filter": { + "shape": "S7y" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "NatGateways": { + "locationName": "natGatewaySet", + "type": "list", + "member": { + "shape": "S46", + "locationName": "item" + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeNetworkAcls": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkAclIds": { + "shape": "S2c", + "locationName": "NetworkAclId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "NetworkAcls": { + "locationName": "networkAclSet", + "type": "list", + "member": { + "shape": "S4d", + "locationName": "item" + } + } + } + } + }, + "DescribeNetworkInterfaceAttribute": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "Attribute": { + "locationName": "attribute" + } + } + }, + "output": { + "type": "structure", + "members": { + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "Description": { + "shape": "S39", + "locationName": "description" + }, + "SourceDestCheck": { + "shape": "Sbc", + "locationName": "sourceDestCheck" + }, + "Groups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "Attachment": { + "shape": "S4v", + "locationName": "attachment" + } + } + } + }, + "DescribeNetworkInterfaces": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkInterfaceIds": { + "locationName": "NetworkInterfaceId", + "type": "list", + "member": { + "locationName": "item" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "NetworkInterfaces": { + "locationName": "networkInterfaceSet", + "type": "list", + "member": { + "shape": "S4r", + "locationName": "item" + } + } + } + } + }, + "DescribePlacementGroups": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupNames": { + "locationName": "groupName", + "type": "list", + "member": {} + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "PlacementGroups": { + "locationName": "placementGroupSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "GroupName": { + "locationName": "groupName" + }, + "Strategy": { + "locationName": "strategy" + }, + "State": { + "locationName": "state" + } + } + } + } + } + } + }, + "DescribePrefixLists": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "PrefixListIds": { + "shape": "S2c", + "locationName": "PrefixListId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "PrefixLists": { + "locationName": "prefixListSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "PrefixListId": { + "locationName": "prefixListId" + }, + "PrefixListName": { + "locationName": "prefixListName" + }, + "Cidrs": { + "shape": "S2c", + "locationName": "cidrSet" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeRegions": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "RegionNames": { + "locationName": "RegionName", + "type": "list", + "member": { + "locationName": "RegionName" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "Regions": { + "locationName": "regionInfo", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "RegionName": { + "locationName": "regionName" + }, + "Endpoint": { + "locationName": "regionEndpoint" + } + } + } + } + } + } + }, + "DescribeReservedInstances": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ReservedInstancesIds": { + "shape": "Sdj", + "locationName": "ReservedInstancesId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "OfferingType": { + "locationName": "offeringType" + }, + "OfferingClass": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstances": { + "locationName": "reservedInstancesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Start": { + "locationName": "start", + "type": "timestamp" + }, + "End": { + "locationName": "end", + "type": "timestamp" + }, + "Duration": { + "locationName": "duration", + "type": "long" + }, + "UsagePrice": { + "locationName": "usagePrice", + "type": "float" + }, + "FixedPrice": { + "locationName": "fixedPrice", + "type": "float" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + }, + "ProductDescription": { + "locationName": "productDescription" + }, + "State": { + "locationName": "state" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "InstanceTenancy": { + "locationName": "instanceTenancy" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "OfferingType": { + "locationName": "offeringType" + }, + "RecurringCharges": { + "shape": "Sds", + "locationName": "recurringCharges" + }, + "OfferingClass": { + "locationName": "offeringClass" + }, + "Scope": { + "locationName": "scope" + } + } + } + } + } + } + }, + "DescribeReservedInstancesListings": { + "input": { + "type": "structure", + "members": { + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + }, + "ReservedInstancesListingId": { + "locationName": "reservedInstancesListingId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesListings": { + "shape": "S20", + "locationName": "reservedInstancesListingsSet" + } + } + } + }, + "DescribeReservedInstancesModifications": { + "input": { + "type": "structure", + "members": { + "ReservedInstancesModificationIds": { + "locationName": "ReservedInstancesModificationId", + "type": "list", + "member": { + "locationName": "ReservedInstancesModificationId" + } + }, + "NextToken": { + "locationName": "nextToken" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesModifications": { + "locationName": "reservedInstancesModificationsSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstancesModificationId": { + "locationName": "reservedInstancesModificationId" + }, + "ReservedInstancesIds": { + "locationName": "reservedInstancesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + } + } + } + }, + "ModificationResults": { + "locationName": "modificationResultSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + }, + "TargetConfiguration": { + "shape": "Se7", + "locationName": "targetConfiguration" + } + } + } + }, + "CreateDate": { + "locationName": "createDate", + "type": "timestamp" + }, + "UpdateDate": { + "locationName": "updateDate", + "type": "timestamp" + }, + "EffectiveDate": { + "locationName": "effectiveDate", + "type": "timestamp" + }, + "Status": { + "locationName": "status" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "ClientToken": { + "locationName": "clientToken" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeReservedInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ReservedInstancesOfferingIds": { + "locationName": "ReservedInstancesOfferingId", + "type": "list", + "member": {} + }, + "InstanceType": {}, + "AvailabilityZone": {}, + "ProductDescription": {}, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "InstanceTenancy": { + "locationName": "instanceTenancy" + }, + "OfferingType": { + "locationName": "offeringType" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + }, + "IncludeMarketplace": { + "type": "boolean" + }, + "MinDuration": { + "type": "long" + }, + "MaxDuration": { + "type": "long" + }, + "MaxInstanceCount": { + "type": "integer" + }, + "OfferingClass": {} + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesOfferings": { + "locationName": "reservedInstancesOfferingsSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstancesOfferingId": { + "locationName": "reservedInstancesOfferingId" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Duration": { + "locationName": "duration", + "type": "long" + }, + "UsagePrice": { + "locationName": "usagePrice", + "type": "float" + }, + "FixedPrice": { + "locationName": "fixedPrice", + "type": "float" + }, + "ProductDescription": { + "locationName": "productDescription" + }, + "InstanceTenancy": { + "locationName": "instanceTenancy" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "OfferingType": { + "locationName": "offeringType" + }, + "RecurringCharges": { + "shape": "Sds", + "locationName": "recurringCharges" + }, + "Marketplace": { + "locationName": "marketplace", + "type": "boolean" + }, + "PricingDetails": { + "locationName": "pricingDetailsSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Price": { + "locationName": "price", + "type": "double" + }, + "Count": { + "locationName": "count", + "type": "integer" + } + } + } + }, + "OfferingClass": { + "locationName": "offeringClass" + }, + "Scope": { + "locationName": "scope" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeRouteTables": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "RouteTableIds": { + "shape": "S2c", + "locationName": "RouteTableId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "RouteTables": { + "locationName": "routeTableSet", + "type": "list", + "member": { + "shape": "S5a", + "locationName": "item" + } + } + } + } + }, + "DescribeScheduledInstanceAvailability": { + "input": { + "type": "structure", + "required": [ + "Recurrence", + "FirstSlotStartTimeRange" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "Recurrence": { + "type": "structure", + "members": { + "Frequency": {}, + "Interval": { + "type": "integer" + }, + "OccurrenceDays": { + "locationName": "OccurrenceDay", + "type": "list", + "member": { + "locationName": "OccurenceDay", + "type": "integer" + } + }, + "OccurrenceRelativeToEnd": { + "type": "boolean" + }, + "OccurrenceUnit": {} + } + }, + "FirstSlotStartTimeRange": { + "type": "structure", + "required": [ + "EarliestTime", + "LatestTime" + ], + "members": { + "EarliestTime": { + "type": "timestamp" + }, + "LatestTime": { + "type": "timestamp" + } + } + }, + "MinSlotDurationInHours": { + "type": "integer" + }, + "MaxSlotDurationInHours": { + "type": "integer" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextToken": { + "locationName": "nextToken" + }, + "ScheduledInstanceAvailabilitySet": { + "locationName": "scheduledInstanceAvailabilitySet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceType": { + "locationName": "instanceType" + }, + "Platform": { + "locationName": "platform" + }, + "NetworkPlatform": { + "locationName": "networkPlatform" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "PurchaseToken": { + "locationName": "purchaseToken" + }, + "SlotDurationInHours": { + "locationName": "slotDurationInHours", + "type": "integer" + }, + "Recurrence": { + "shape": "Sep", + "locationName": "recurrence" + }, + "FirstSlotStartTime": { + "locationName": "firstSlotStartTime", + "type": "timestamp" + }, + "HourlyPrice": { + "locationName": "hourlyPrice" + }, + "TotalScheduledInstanceHours": { + "locationName": "totalScheduledInstanceHours", + "type": "integer" + }, + "AvailableInstanceCount": { + "locationName": "availableInstanceCount", + "type": "integer" + }, + "MinTermDurationInDays": { + "locationName": "minTermDurationInDays", + "type": "integer" + }, + "MaxTermDurationInDays": { + "locationName": "maxTermDurationInDays", + "type": "integer" + } + } + } + } + } + } + }, + "DescribeScheduledInstances": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "ScheduledInstanceIds": { + "locationName": "ScheduledInstanceId", + "type": "list", + "member": { + "locationName": "ScheduledInstanceId" + } + }, + "SlotStartTimeRange": { + "type": "structure", + "members": { + "EarliestTime": { + "type": "timestamp" + }, + "LatestTime": { + "type": "timestamp" + } + } + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextToken": { + "locationName": "nextToken" + }, + "ScheduledInstanceSet": { + "locationName": "scheduledInstanceSet", + "type": "list", + "member": { + "shape": "Sew", + "locationName": "item" + } + } + } + } + }, + "DescribeSecurityGroupReferences": { + "input": { + "type": "structure", + "required": [ + "GroupId" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "GroupId": { + "type": "list", + "member": { + "locationName": "item" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "SecurityGroupReferenceSet": { + "locationName": "securityGroupReferenceSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "GroupId", + "ReferencingVpcId" + ], + "members": { + "GroupId": { + "locationName": "groupId" + }, + "ReferencingVpcId": { + "locationName": "referencingVpcId" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + } + } + } + } + } + } + }, + "DescribeSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupNames": { + "shape": "Sf3", + "locationName": "GroupName" + }, + "GroupIds": { + "shape": "Sy", + "locationName": "GroupId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "SecurityGroups": { + "locationName": "securityGroupInfo", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "OwnerId": { + "locationName": "ownerId" + }, + "GroupName": { + "locationName": "groupName" + }, + "GroupId": { + "locationName": "groupId" + }, + "Description": { + "locationName": "groupDescription" + }, + "IpPermissions": { + "shape": "S1b", + "locationName": "ipPermissions" + }, + "IpPermissionsEgress": { + "shape": "S1b", + "locationName": "ipPermissionsEgress" + }, + "VpcId": { + "locationName": "vpcId" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + } + } + } + } + }, + "DescribeSnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "SnapshotId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SnapshotId": {}, + "Attribute": {} + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotId": { + "locationName": "snapshotId" + }, + "CreateVolumePermissions": { + "shape": "Sfa", + "locationName": "createVolumePermission" + }, + "ProductCodes": { + "shape": "Sae", + "locationName": "productCodes" + } + } + } + }, + "DescribeSnapshots": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SnapshotIds": { + "locationName": "SnapshotId", + "type": "list", + "member": { + "locationName": "SnapshotId" + } + }, + "OwnerIds": { + "shape": "Sak", + "locationName": "Owner" + }, + "RestorableByUserIds": { + "locationName": "RestorableBy", + "type": "list", + "member": {} + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Snapshots": { + "locationName": "snapshotSet", + "type": "list", + "member": { + "shape": "S5m", + "locationName": "item" + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeSpotDatafeedSubscription": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "SpotDatafeedSubscription": { + "shape": "S5q", + "locationName": "spotDatafeedSubscription" + } + } + } + }, + "DescribeSpotFleetInstances": { + "input": { + "type": "structure", + "required": [ + "SpotFleetRequestId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "SpotFleetRequestId", + "ActiveInstances" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "ActiveInstances": { + "locationName": "activeInstanceSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceType": { + "locationName": "instanceType" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "SpotInstanceRequestId": { + "locationName": "spotInstanceRequestId" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeSpotFleetRequestHistory": { + "input": { + "type": "structure", + "required": [ + "SpotFleetRequestId", + "StartTime" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "EventType": { + "locationName": "eventType" + }, + "StartTime": { + "locationName": "startTime", + "type": "timestamp" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "SpotFleetRequestId", + "StartTime", + "LastEvaluatedTime", + "HistoryRecords" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "StartTime": { + "locationName": "startTime", + "type": "timestamp" + }, + "LastEvaluatedTime": { + "locationName": "lastEvaluatedTime", + "type": "timestamp" + }, + "HistoryRecords": { + "locationName": "historyRecordSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "Timestamp", + "EventType", + "EventInformation" + ], + "members": { + "Timestamp": { + "locationName": "timestamp", + "type": "timestamp" + }, + "EventType": { + "locationName": "eventType" + }, + "EventInformation": { + "locationName": "eventInformation", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "EventSubType": { + "locationName": "eventSubType" + }, + "EventDescription": { + "locationName": "eventDescription" + } + } + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeSpotFleetRequests": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotFleetRequestIds": { + "shape": "S2c", + "locationName": "spotFleetRequestId" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "SpotFleetRequestConfigs" + ], + "members": { + "SpotFleetRequestConfigs": { + "locationName": "spotFleetRequestConfigSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "SpotFleetRequestId", + "SpotFleetRequestState", + "SpotFleetRequestConfig", + "CreateTime" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "SpotFleetRequestState": { + "locationName": "spotFleetRequestState" + }, + "SpotFleetRequestConfig": { + "shape": "Sfx", + "locationName": "spotFleetRequestConfig" + }, + "CreateTime": { + "locationName": "createTime", + "type": "timestamp" + }, + "ActivityStatus": { + "locationName": "activityStatus" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeSpotInstanceRequests": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotInstanceRequestIds": { + "shape": "S2m", + "locationName": "SpotInstanceRequestId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "SpotInstanceRequests": { + "shape": "Sgb", + "locationName": "spotInstanceRequestSet" + } + } + } + }, + "DescribeSpotPriceHistory": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "StartTime": { + "locationName": "startTime", + "type": "timestamp" + }, + "EndTime": { + "locationName": "endTime", + "type": "timestamp" + }, + "InstanceTypes": { + "locationName": "InstanceType", + "type": "list", + "member": {} + }, + "ProductDescriptions": { + "locationName": "ProductDescription", + "type": "list", + "member": {} + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + }, + "NextToken": { + "locationName": "nextToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "SpotPriceHistory": { + "locationName": "spotPriceHistorySet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceType": { + "locationName": "instanceType" + }, + "ProductDescription": { + "locationName": "productDescription" + }, + "SpotPrice": { + "locationName": "spotPrice" + }, + "Timestamp": { + "locationName": "timestamp", + "type": "timestamp" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeStaleSecurityGroups": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "VpcId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "StaleSecurityGroupSet": { + "locationName": "staleSecurityGroupSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "GroupId" + ], + "members": { + "GroupId": { + "locationName": "groupId" + }, + "GroupName": { + "locationName": "groupName" + }, + "Description": { + "locationName": "description" + }, + "VpcId": { + "locationName": "vpcId" + }, + "StaleIpPermissions": { + "shape": "Sgu", + "locationName": "staleIpPermissions" + }, + "StaleIpPermissionsEgress": { + "shape": "Sgu", + "locationName": "staleIpPermissionsEgress" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeSubnets": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SubnetIds": { + "locationName": "SubnetId", + "type": "list", + "member": { + "locationName": "SubnetId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "Subnets": { + "locationName": "subnetSet", + "type": "list", + "member": { + "shape": "S5v", + "locationName": "item" + } + } + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + }, + "NextToken": { + "locationName": "nextToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Tags": { + "locationName": "tagSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ResourceId": { + "locationName": "resourceId" + }, + "ResourceType": { + "locationName": "resourceType" + }, + "Key": { + "locationName": "key" + }, + "Value": { + "locationName": "value" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeVolumeAttribute": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": {}, + "Attribute": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeId": { + "locationName": "volumeId" + }, + "AutoEnableIO": { + "shape": "Sbc", + "locationName": "autoEnableIO" + }, + "ProductCodes": { + "shape": "Sae", + "locationName": "productCodes" + } + } + } + }, + "DescribeVolumeStatus": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeIds": { + "shape": "Shc", + "locationName": "VolumeId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "NextToken": {}, + "MaxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "VolumeStatuses": { + "locationName": "volumeStatusSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "VolumeId": { + "locationName": "volumeId" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "VolumeStatus": { + "locationName": "volumeStatus", + "type": "structure", + "members": { + "Status": { + "locationName": "status" + }, + "Details": { + "locationName": "details", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Name": { + "locationName": "name" + }, + "Status": { + "locationName": "status" + } + } + } + } + } + }, + "Events": { + "locationName": "eventsSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "EventType": { + "locationName": "eventType" + }, + "Description": { + "locationName": "description" + }, + "NotBefore": { + "locationName": "notBefore", + "type": "timestamp" + }, + "NotAfter": { + "locationName": "notAfter", + "type": "timestamp" + }, + "EventId": { + "locationName": "eventId" + } + } + } + }, + "Actions": { + "locationName": "actionsSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "Description": { + "locationName": "description" + }, + "EventType": { + "locationName": "eventType" + }, + "EventId": { + "locationName": "eventId" + } + } + } + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeVolumes": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeIds": { + "shape": "Shc", + "locationName": "VolumeId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "NextToken": { + "locationName": "nextToken" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Volumes": { + "locationName": "volumeSet", + "type": "list", + "member": { + "shape": "S60", + "locationName": "item" + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeVpcAttribute": { + "input": { + "type": "structure", + "required": [ + "VpcId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": {}, + "Attribute": {} + } + }, + "output": { + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "EnableDnsSupport": { + "shape": "Sbc", + "locationName": "enableDnsSupport" + }, + "EnableDnsHostnames": { + "shape": "Sbc", + "locationName": "enableDnsHostnames" + } + } + } + }, + "DescribeVpcClassicLink": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcIds": { + "shape": "Shw", + "locationName": "VpcId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "Vpcs": { + "locationName": "vpcSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "ClassicLinkEnabled": { + "locationName": "classicLinkEnabled", + "type": "boolean" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + } + } + } + } + }, + "DescribeVpcClassicLinkDnsSupport": { + "input": { + "type": "structure", + "members": { + "VpcIds": { + "shape": "Shw" + }, + "MaxResults": { + "locationName": "maxResults", + "type": "integer" + }, + "NextToken": { + "locationName": "nextToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Vpcs": { + "locationName": "vpcs", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "ClassicLinkDnsSupported": { + "locationName": "classicLinkDnsSupported", + "type": "boolean" + } + } + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeVpcEndpointServices": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ServiceNames": { + "shape": "S2c", + "locationName": "serviceNameSet" + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeVpcEndpoints": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "VpcEndpointIds": { + "shape": "S2c", + "locationName": "VpcEndpointId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "VpcEndpoints": { + "locationName": "vpcEndpointSet", + "type": "list", + "member": { + "shape": "S6a", + "locationName": "item" + } + }, + "NextToken": { + "locationName": "nextToken" + } + } + } + }, + "DescribeVpcPeeringConnections": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcPeeringConnectionIds": { + "shape": "S2c", + "locationName": "VpcPeeringConnectionId" + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "VpcPeeringConnections": { + "locationName": "vpcPeeringConnectionSet", + "type": "list", + "member": { + "shape": "Sb", + "locationName": "item" + } + } + } + } + }, + "DescribeVpcs": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcIds": { + "locationName": "VpcId", + "type": "list", + "member": { + "locationName": "VpcId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "Vpcs": { + "locationName": "vpcSet", + "type": "list", + "member": { + "shape": "S66", + "locationName": "item" + } + } + } + } + }, + "DescribeVpnConnections": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpnConnectionIds": { + "locationName": "VpnConnectionId", + "type": "list", + "member": { + "locationName": "VpnConnectionId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "VpnConnections": { + "locationName": "vpnConnectionSet", + "type": "list", + "member": { + "shape": "S6h", + "locationName": "item" + } + } + } + } + }, + "DescribeVpnGateways": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpnGatewayIds": { + "locationName": "VpnGatewayId", + "type": "list", + "member": { + "locationName": "VpnGatewayId" + } + }, + "Filters": { + "shape": "S7y", + "locationName": "Filter" + } + } + }, + "output": { + "type": "structure", + "members": { + "VpnGateways": { + "locationName": "vpnGatewaySet", + "type": "list", + "member": { + "shape": "S6t", + "locationName": "item" + } + } + } + } + }, + "DetachClassicLinkVpc": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "VpcId": { + "locationName": "vpcId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "DetachInternetGateway": { + "input": { + "type": "structure", + "required": [ + "InternetGatewayId", + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InternetGatewayId": { + "locationName": "internetGatewayId" + }, + "VpcId": { + "locationName": "vpcId" + } + } + } + }, + "DetachNetworkInterface": { + "input": { + "type": "structure", + "required": [ + "AttachmentId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "AttachmentId": { + "locationName": "attachmentId" + }, + "Force": { + "locationName": "force", + "type": "boolean" + } + } + } + }, + "DetachVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": {}, + "InstanceId": {}, + "Device": {}, + "Force": { + "type": "boolean" + } + } + }, + "output": { + "shape": "S14" + } + }, + "DetachVpnGateway": { + "input": { + "type": "structure", + "required": [ + "VpnGatewayId", + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpnGatewayId": {}, + "VpcId": {} + } + } + }, + "DisableVgwRoutePropagation": { + "input": { + "type": "structure", + "required": [ + "RouteTableId", + "GatewayId" + ], + "members": { + "RouteTableId": {}, + "GatewayId": {} + } + } + }, + "DisableVpcClassicLink": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": { + "locationName": "vpcId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "DisableVpcClassicLinkDnsSupport": { + "input": { + "type": "structure", + "members": { + "VpcId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "DisassociateAddress": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "PublicIp": {}, + "AssociationId": {} + } + } + }, + "DisassociateRouteTable": { + "input": { + "type": "structure", + "required": [ + "AssociationId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "AssociationId": { + "locationName": "associationId" + } + } + } + }, + "EnableVgwRoutePropagation": { + "input": { + "type": "structure", + "required": [ + "RouteTableId", + "GatewayId" + ], + "members": { + "RouteTableId": {}, + "GatewayId": {} + } + } + }, + "EnableVolumeIO": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": { + "locationName": "volumeId" + } + } + } + }, + "EnableVpcClassicLink": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcId": { + "locationName": "vpcId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "EnableVpcClassicLinkDnsSupport": { + "input": { + "type": "structure", + "members": { + "VpcId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "GetConsoleOutput": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "Timestamp": { + "locationName": "timestamp", + "type": "timestamp" + }, + "Output": { + "locationName": "output" + } + } + } + }, + "GetConsoleScreenshot": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "InstanceId": {}, + "WakeUp": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "ImageData": { + "locationName": "imageData" + } + } + } + }, + "GetHostReservationPurchasePreview": { + "input": { + "type": "structure", + "required": [ + "OfferingId", + "HostIdSet" + ], + "members": { + "OfferingId": {}, + "HostIdSet": { + "shape": "Sjc" + } + } + }, + "output": { + "type": "structure", + "members": { + "Purchase": { + "shape": "Sje", + "locationName": "purchase" + }, + "TotalUpfrontPrice": { + "locationName": "totalUpfrontPrice" + }, + "TotalHourlyPrice": { + "locationName": "totalHourlyPrice" + }, + "CurrencyCode": { + "locationName": "currencyCode" + } + } + } + }, + "GetPasswordData": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "Timestamp": { + "locationName": "timestamp", + "type": "timestamp" + }, + "PasswordData": { + "locationName": "passwordData" + } + } + } + }, + "GetReservedInstancesExchangeQuote": { + "input": { + "type": "structure", + "required": [ + "ReservedInstanceIds" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "ReservedInstanceIds": { + "shape": "S3", + "locationName": "ReservedInstanceId" + }, + "TargetConfigurations": { + "shape": "S5", + "locationName": "TargetConfiguration" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstanceValueSet": { + "locationName": "reservedInstanceValueSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstanceId": { + "locationName": "reservedInstanceId" + }, + "ReservationValue": { + "shape": "Sjm", + "locationName": "reservationValue" + } + } + } + }, + "ReservedInstanceValueRollup": { + "shape": "Sjm", + "locationName": "reservedInstanceValueRollup" + }, + "TargetConfigurationValueSet": { + "locationName": "targetConfigurationValueSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "TargetConfiguration": { + "locationName": "targetConfiguration", + "type": "structure", + "members": { + "OfferingId": { + "locationName": "offeringId" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + } + } + }, + "ReservationValue": { + "shape": "Sjm", + "locationName": "reservationValue" + } + } + } + }, + "TargetConfigurationValueRollup": { + "shape": "Sjm", + "locationName": "targetConfigurationValueRollup" + }, + "PaymentDue": { + "locationName": "paymentDue" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "OutputReservedInstancesWillExpireAt": { + "locationName": "outputReservedInstancesWillExpireAt", + "type": "timestamp" + }, + "IsValidExchange": { + "locationName": "isValidExchange", + "type": "boolean" + }, + "ValidationFailureReason": { + "locationName": "validationFailureReason" + } + } + } + }, + "ImportImage": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "Description": {}, + "DiskContainers": { + "locationName": "DiskContainer", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Description": {}, + "Format": {}, + "Url": {}, + "UserBucket": { + "shape": "Sjt" + }, + "DeviceName": {}, + "SnapshotId": {} + } + } + }, + "LicenseType": {}, + "Hypervisor": {}, + "Architecture": {}, + "Platform": {}, + "ClientData": { + "shape": "Sju" + }, + "ClientToken": {}, + "RoleName": {} + } + }, + "output": { + "type": "structure", + "members": { + "ImportTaskId": { + "locationName": "importTaskId" + }, + "Architecture": { + "locationName": "architecture" + }, + "LicenseType": { + "locationName": "licenseType" + }, + "Platform": { + "locationName": "platform" + }, + "Hypervisor": { + "locationName": "hypervisor" + }, + "Description": { + "locationName": "description" + }, + "SnapshotDetails": { + "shape": "Sb1", + "locationName": "snapshotDetailSet" + }, + "ImageId": { + "locationName": "imageId" + }, + "Progress": { + "locationName": "progress" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "Status": { + "locationName": "status" + } + } + } + }, + "ImportInstance": { + "input": { + "type": "structure", + "required": [ + "Platform" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Description": { + "locationName": "description" + }, + "LaunchSpecification": { + "locationName": "launchSpecification", + "type": "structure", + "members": { + "Architecture": { + "locationName": "architecture" + }, + "GroupNames": { + "shape": "Sjy", + "locationName": "GroupName" + }, + "GroupIds": { + "shape": "S4n", + "locationName": "GroupId" + }, + "AdditionalInfo": { + "locationName": "additionalInfo" + }, + "UserData": { + "locationName": "userData", + "type": "structure", + "members": { + "Data": { + "locationName": "data" + } + } + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Placement": { + "shape": "Sc2", + "locationName": "placement" + }, + "Monitoring": { + "locationName": "monitoring", + "type": "boolean" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "InstanceInitiatedShutdownBehavior": { + "locationName": "instanceInitiatedShutdownBehavior" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + } + } + }, + "DiskImages": { + "locationName": "diskImage", + "type": "list", + "member": { + "type": "structure", + "members": { + "Image": { + "shape": "Sk3" + }, + "Description": {}, + "Volume": { + "shape": "Sk4" + } + } + } + }, + "Platform": { + "locationName": "platform" + } + } + }, + "output": { + "type": "structure", + "members": { + "ConversionTask": { + "shape": "S8p", + "locationName": "conversionTask" + } + } + } + }, + "ImportKeyPair": { + "input": { + "type": "structure", + "required": [ + "KeyName", + "PublicKeyMaterial" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "KeyName": { + "locationName": "keyName" + }, + "PublicKeyMaterial": { + "locationName": "publicKeyMaterial", + "type": "blob" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyName": { + "locationName": "keyName" + }, + "KeyFingerprint": { + "locationName": "keyFingerprint" + } + } + } + }, + "ImportSnapshot": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "type": "boolean" + }, + "Description": {}, + "DiskContainer": { + "type": "structure", + "members": { + "Description": {}, + "Format": {}, + "Url": {}, + "UserBucket": { + "shape": "Sjt" + } + } + }, + "ClientData": { + "shape": "Sju" + }, + "ClientToken": {}, + "RoleName": {} + } + }, + "output": { + "type": "structure", + "members": { + "ImportTaskId": { + "locationName": "importTaskId" + }, + "SnapshotTaskDetail": { + "shape": "Sb8", + "locationName": "snapshotTaskDetail" + }, + "Description": { + "locationName": "description" + } + } + } + }, + "ImportVolume": { + "input": { + "type": "structure", + "required": [ + "AvailabilityZone", + "Image", + "Volume" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Image": { + "shape": "Sk3", + "locationName": "image" + }, + "Description": { + "locationName": "description" + }, + "Volume": { + "shape": "Sk4", + "locationName": "volume" + } + } + }, + "output": { + "type": "structure", + "members": { + "ConversionTask": { + "shape": "S8p", + "locationName": "conversionTask" + } + } + } + }, + "ModifyHosts": { + "input": { + "type": "structure", + "required": [ + "HostIds", + "AutoPlacement" + ], + "members": { + "HostIds": { + "shape": "S9r", + "locationName": "hostId" + }, + "AutoPlacement": { + "locationName": "autoPlacement" + } + } + }, + "output": { + "type": "structure", + "members": { + "Successful": { + "shape": "Sp", + "locationName": "successful" + }, + "Unsuccessful": { + "shape": "Skf", + "locationName": "unsuccessful" + } + } + } + }, + "ModifyIdFormat": { + "input": { + "type": "structure", + "required": [ + "Resource", + "UseLongIds" + ], + "members": { + "Resource": {}, + "UseLongIds": { + "type": "boolean" + } + } + } + }, + "ModifyIdentityIdFormat": { + "input": { + "type": "structure", + "required": [ + "Resource", + "UseLongIds", + "PrincipalArn" + ], + "members": { + "Resource": { + "locationName": "resource" + }, + "UseLongIds": { + "locationName": "useLongIds", + "type": "boolean" + }, + "PrincipalArn": { + "locationName": "principalArn" + } + } + } + }, + "ModifyImageAttribute": { + "input": { + "type": "structure", + "required": [ + "ImageId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageId": {}, + "Attribute": {}, + "OperationType": {}, + "UserIds": { + "shape": "Skk", + "locationName": "UserId" + }, + "UserGroups": { + "locationName": "UserGroup", + "type": "list", + "member": { + "locationName": "UserGroup" + } + }, + "ProductCodes": { + "locationName": "ProductCode", + "type": "list", + "member": { + "locationName": "ProductCode" + } + }, + "Value": {}, + "LaunchPermission": { + "type": "structure", + "members": { + "Add": { + "shape": "Sab" + }, + "Remove": { + "shape": "Sab" + } + } + }, + "Description": { + "shape": "S39" + } + } + } + }, + "ModifyInstanceAttribute": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "Attribute": { + "locationName": "attribute" + }, + "Value": { + "locationName": "value" + }, + "BlockDeviceMappings": { + "locationName": "blockDeviceMapping", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "DeviceName": { + "locationName": "deviceName" + }, + "Ebs": { + "locationName": "ebs", + "type": "structure", + "members": { + "VolumeId": { + "locationName": "volumeId" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + } + } + }, + "VirtualName": { + "locationName": "virtualName" + }, + "NoDevice": { + "locationName": "noDevice" + } + } + } + }, + "SourceDestCheck": { + "shape": "Sbc" + }, + "DisableApiTermination": { + "shape": "Sbc", + "locationName": "disableApiTermination" + }, + "InstanceType": { + "shape": "S39", + "locationName": "instanceType" + }, + "Kernel": { + "shape": "S39", + "locationName": "kernel" + }, + "Ramdisk": { + "shape": "S39", + "locationName": "ramdisk" + }, + "UserData": { + "locationName": "userData", + "type": "structure", + "members": { + "Value": { + "locationName": "value", + "type": "blob" + } + } + }, + "InstanceInitiatedShutdownBehavior": { + "shape": "S39", + "locationName": "instanceInitiatedShutdownBehavior" + }, + "Groups": { + "shape": "Sy", + "locationName": "GroupId" + }, + "EbsOptimized": { + "shape": "Sbc", + "locationName": "ebsOptimized" + }, + "SriovNetSupport": { + "shape": "S39", + "locationName": "sriovNetSupport" + }, + "EnaSupport": { + "shape": "Sbc", + "locationName": "enaSupport" + } + } + } + }, + "ModifyInstancePlacement": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "Tenancy": { + "locationName": "tenancy" + }, + "Affinity": { + "locationName": "affinity" + }, + "HostId": { + "locationName": "hostId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "ModifyNetworkInterfaceAttribute": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "Description": { + "shape": "S39", + "locationName": "description" + }, + "SourceDestCheck": { + "shape": "Sbc", + "locationName": "sourceDestCheck" + }, + "Groups": { + "shape": "S4n", + "locationName": "SecurityGroupId" + }, + "Attachment": { + "locationName": "attachment", + "type": "structure", + "members": { + "AttachmentId": { + "locationName": "attachmentId" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + } + } + } + } + } + }, + "ModifyReservedInstances": { + "input": { + "type": "structure", + "required": [ + "ReservedInstancesIds", + "TargetConfigurations" + ], + "members": { + "ClientToken": { + "locationName": "clientToken" + }, + "ReservedInstancesIds": { + "shape": "Sdj", + "locationName": "ReservedInstancesId" + }, + "TargetConfigurations": { + "locationName": "ReservedInstancesConfigurationSetItemType", + "type": "list", + "member": { + "shape": "Se7", + "locationName": "item" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesModificationId": { + "locationName": "reservedInstancesModificationId" + } + } + } + }, + "ModifySnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "SnapshotId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SnapshotId": {}, + "Attribute": {}, + "OperationType": {}, + "UserIds": { + "shape": "Skk", + "locationName": "UserId" + }, + "GroupNames": { + "shape": "Sf3", + "locationName": "UserGroup" + }, + "CreateVolumePermission": { + "type": "structure", + "members": { + "Add": { + "shape": "Sfa" + }, + "Remove": { + "shape": "Sfa" + } + } + } + } + } + }, + "ModifySpotFleetRequest": { + "input": { + "type": "structure", + "required": [ + "SpotFleetRequestId" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + }, + "TargetCapacity": { + "locationName": "targetCapacity", + "type": "integer" + }, + "ExcessCapacityTerminationPolicy": { + "locationName": "excessCapacityTerminationPolicy" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "ModifySubnetAttribute": { + "input": { + "type": "structure", + "required": [ + "SubnetId" + ], + "members": { + "SubnetId": { + "locationName": "subnetId" + }, + "MapPublicIpOnLaunch": { + "shape": "Sbc" + } + } + } + }, + "ModifyVolumeAttribute": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VolumeId": {}, + "AutoEnableIO": { + "shape": "Sbc" + } + } + } + }, + "ModifyVpcAttribute": { + "input": { + "type": "structure", + "required": [ + "VpcId" + ], + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "EnableDnsSupport": { + "shape": "Sbc" + }, + "EnableDnsHostnames": { + "shape": "Sbc" + } + } + } + }, + "ModifyVpcEndpoint": { + "input": { + "type": "structure", + "required": [ + "VpcEndpointId" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "VpcEndpointId": {}, + "ResetPolicy": { + "type": "boolean" + }, + "PolicyDocument": {}, + "AddRouteTableIds": { + "shape": "S2c", + "locationName": "AddRouteTableId" + }, + "RemoveRouteTableIds": { + "shape": "S2c", + "locationName": "RemoveRouteTableId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "ModifyVpcPeeringConnectionOptions": { + "input": { + "type": "structure", + "required": [ + "VpcPeeringConnectionId" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "VpcPeeringConnectionId": {}, + "RequesterPeeringConnectionOptions": { + "shape": "Slc" + }, + "AccepterPeeringConnectionOptions": { + "shape": "Slc" + } + } + }, + "output": { + "type": "structure", + "members": { + "RequesterPeeringConnectionOptions": { + "shape": "Sle", + "locationName": "requesterPeeringConnectionOptions" + }, + "AccepterPeeringConnectionOptions": { + "shape": "Sle", + "locationName": "accepterPeeringConnectionOptions" + } + } + } + }, + "MonitorInstances": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceMonitorings": { + "shape": "Slh", + "locationName": "instancesSet" + } + } + } + }, + "MoveAddressToVpc": { + "input": { + "type": "structure", + "required": [ + "PublicIp" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "PublicIp": { + "locationName": "publicIp" + } + } + }, + "output": { + "type": "structure", + "members": { + "AllocationId": { + "locationName": "allocationId" + }, + "Status": { + "locationName": "status" + } + } + } + }, + "PurchaseHostReservation": { + "input": { + "type": "structure", + "required": [ + "OfferingId", + "HostIdSet" + ], + "members": { + "OfferingId": {}, + "HostIdSet": { + "shape": "Sjc" + }, + "LimitPrice": {}, + "CurrencyCode": {}, + "ClientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Purchase": { + "shape": "Sje", + "locationName": "purchase" + }, + "TotalUpfrontPrice": { + "locationName": "totalUpfrontPrice" + }, + "TotalHourlyPrice": { + "locationName": "totalHourlyPrice" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "ClientToken": { + "locationName": "clientToken" + } + } + } + }, + "PurchaseReservedInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedInstancesOfferingId", + "InstanceCount" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ReservedInstancesOfferingId": {}, + "InstanceCount": { + "type": "integer" + }, + "LimitPrice": { + "locationName": "limitPrice", + "type": "structure", + "members": { + "Amount": { + "locationName": "amount", + "type": "double" + }, + "CurrencyCode": { + "locationName": "currencyCode" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + } + } + } + }, + "PurchaseScheduledInstances": { + "input": { + "type": "structure", + "required": [ + "PurchaseRequests" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "ClientToken": { + "idempotencyToken": true + }, + "PurchaseRequests": { + "locationName": "PurchaseRequest", + "type": "list", + "member": { + "locationName": "PurchaseRequest", + "type": "structure", + "required": [ + "PurchaseToken", + "InstanceCount" + ], + "members": { + "PurchaseToken": {}, + "InstanceCount": { + "type": "integer" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ScheduledInstanceSet": { + "locationName": "scheduledInstanceSet", + "type": "list", + "member": { + "shape": "Sew", + "locationName": "item" + } + } + } + } + }, + "RebootInstances": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + } + } + } + }, + "RegisterImage": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageLocation": {}, + "Name": { + "locationName": "name" + }, + "Description": { + "locationName": "description" + }, + "Architecture": { + "locationName": "architecture" + }, + "KernelId": { + "locationName": "kernelId" + }, + "RamdiskId": { + "locationName": "ramdiskId" + }, + "RootDeviceName": { + "locationName": "rootDeviceName" + }, + "BlockDeviceMappings": { + "shape": "S3i", + "locationName": "BlockDeviceMapping" + }, + "VirtualizationType": { + "locationName": "virtualizationType" + }, + "SriovNetSupport": { + "locationName": "sriovNetSupport" + }, + "EnaSupport": { + "locationName": "enaSupport", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + } + } + } + }, + "RejectVpcPeeringConnection": { + "input": { + "type": "structure", + "required": [ + "VpcPeeringConnectionId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Return": { + "locationName": "return", + "type": "boolean" + } + } + } + }, + "ReleaseAddress": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "PublicIp": {}, + "AllocationId": {} + } + } + }, + "ReleaseHosts": { + "input": { + "type": "structure", + "required": [ + "HostIds" + ], + "members": { + "HostIds": { + "shape": "S9r", + "locationName": "hostId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Successful": { + "shape": "Sp", + "locationName": "successful" + }, + "Unsuccessful": { + "shape": "Skf", + "locationName": "unsuccessful" + } + } + } + }, + "ReplaceNetworkAclAssociation": { + "input": { + "type": "structure", + "required": [ + "AssociationId", + "NetworkAclId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "AssociationId": { + "locationName": "associationId" + }, + "NetworkAclId": { + "locationName": "networkAclId" + } + } + }, + "output": { + "type": "structure", + "members": { + "NewAssociationId": { + "locationName": "newAssociationId" + } + } + } + }, + "ReplaceNetworkAclEntry": { + "input": { + "type": "structure", + "required": [ + "NetworkAclId", + "RuleNumber", + "Protocol", + "RuleAction", + "Egress", + "CidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkAclId": { + "locationName": "networkAclId" + }, + "RuleNumber": { + "locationName": "ruleNumber", + "type": "integer" + }, + "Protocol": { + "locationName": "protocol" + }, + "RuleAction": { + "locationName": "ruleAction" + }, + "Egress": { + "locationName": "egress", + "type": "boolean" + }, + "CidrBlock": { + "locationName": "cidrBlock" + }, + "IcmpTypeCode": { + "shape": "S4h", + "locationName": "Icmp" + }, + "PortRange": { + "shape": "S4i", + "locationName": "portRange" + } + } + } + }, + "ReplaceRoute": { + "input": { + "type": "structure", + "required": [ + "RouteTableId", + "DestinationCidrBlock" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "RouteTableId": { + "locationName": "routeTableId" + }, + "DestinationCidrBlock": { + "locationName": "destinationCidrBlock" + }, + "GatewayId": { + "locationName": "gatewayId" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + }, + "NatGatewayId": { + "locationName": "natGatewayId" + } + } + } + }, + "ReplaceRouteTableAssociation": { + "input": { + "type": "structure", + "required": [ + "AssociationId", + "RouteTableId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "AssociationId": { + "locationName": "associationId" + }, + "RouteTableId": { + "locationName": "routeTableId" + } + } + }, + "output": { + "type": "structure", + "members": { + "NewAssociationId": { + "locationName": "newAssociationId" + } + } + } + }, + "ReportInstanceStatus": { + "input": { + "type": "structure", + "required": [ + "Instances", + "Status", + "ReasonCodes" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "Instances": { + "shape": "S8h", + "locationName": "instanceId" + }, + "Status": { + "locationName": "status" + }, + "StartTime": { + "locationName": "startTime", + "type": "timestamp" + }, + "EndTime": { + "locationName": "endTime", + "type": "timestamp" + }, + "ReasonCodes": { + "locationName": "reasonCode", + "type": "list", + "member": { + "locationName": "item" + } + }, + "Description": { + "locationName": "description" + } + } + } + }, + "RequestSpotFleet": { + "input": { + "type": "structure", + "required": [ + "SpotFleetRequestConfig" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotFleetRequestConfig": { + "shape": "Sfx", + "locationName": "spotFleetRequestConfig" + } + } + }, + "output": { + "type": "structure", + "required": [ + "SpotFleetRequestId" + ], + "members": { + "SpotFleetRequestId": { + "locationName": "spotFleetRequestId" + } + } + } + }, + "RequestSpotInstances": { + "input": { + "type": "structure", + "required": [ + "SpotPrice" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SpotPrice": { + "locationName": "spotPrice" + }, + "ClientToken": { + "locationName": "clientToken" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + }, + "Type": { + "locationName": "type" + }, + "ValidFrom": { + "locationName": "validFrom", + "type": "timestamp" + }, + "ValidUntil": { + "locationName": "validUntil", + "type": "timestamp" + }, + "LaunchGroup": { + "locationName": "launchGroup" + }, + "AvailabilityZoneGroup": { + "locationName": "availabilityZoneGroup" + }, + "BlockDurationMinutes": { + "locationName": "blockDurationMinutes", + "type": "integer" + }, + "LaunchSpecification": { + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + }, + "KeyName": { + "locationName": "keyName" + }, + "SecurityGroups": { + "shape": "S2c", + "locationName": "SecurityGroup" + }, + "UserData": { + "locationName": "userData" + }, + "AddressingType": { + "locationName": "addressingType" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Placement": { + "shape": "Sg0", + "locationName": "placement" + }, + "KernelId": { + "locationName": "kernelId" + }, + "RamdiskId": { + "locationName": "ramdiskId" + }, + "BlockDeviceMappings": { + "shape": "Sah", + "locationName": "blockDeviceMapping" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "NetworkInterfaces": { + "shape": "Sg2", + "locationName": "NetworkInterface" + }, + "IamInstanceProfile": { + "shape": "Sg4", + "locationName": "iamInstanceProfile" + }, + "EbsOptimized": { + "locationName": "ebsOptimized", + "type": "boolean" + }, + "Monitoring": { + "shape": "Sgh", + "locationName": "monitoring" + }, + "SecurityGroupIds": { + "shape": "S2c", + "locationName": "SecurityGroupId" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "SpotInstanceRequests": { + "shape": "Sgb", + "locationName": "spotInstanceRequestSet" + } + } + } + }, + "ResetImageAttribute": { + "input": { + "type": "structure", + "required": [ + "ImageId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageId": {}, + "Attribute": {} + } + } + }, + "ResetInstanceAttribute": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "Attribute": { + "locationName": "attribute" + } + } + } + }, + "ResetNetworkInterfaceAttribute": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "SourceDestCheck": { + "locationName": "sourceDestCheck" + } + } + } + }, + "ResetSnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "SnapshotId", + "Attribute" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "SnapshotId": {}, + "Attribute": {} + } + } + }, + "RestoreAddressToClassic": { + "input": { + "type": "structure", + "required": [ + "PublicIp" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "PublicIp": { + "locationName": "publicIp" + } + } + }, + "output": { + "type": "structure", + "members": { + "Status": { + "locationName": "status" + }, + "PublicIp": { + "locationName": "publicIp" + } + } + } + }, + "RevokeSecurityGroupEgress": { + "input": { + "type": "structure", + "required": [ + "GroupId" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupId": { + "locationName": "groupId" + }, + "SourceSecurityGroupName": { + "locationName": "sourceSecurityGroupName" + }, + "SourceSecurityGroupOwnerId": { + "locationName": "sourceSecurityGroupOwnerId" + }, + "IpProtocol": { + "locationName": "ipProtocol" + }, + "FromPort": { + "locationName": "fromPort", + "type": "integer" + }, + "ToPort": { + "locationName": "toPort", + "type": "integer" + }, + "CidrIp": { + "locationName": "cidrIp" + }, + "IpPermissions": { + "shape": "S1b", + "locationName": "ipPermissions" + } + } + } + }, + "RevokeSecurityGroupIngress": { + "input": { + "type": "structure", + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "GroupName": {}, + "GroupId": {}, + "SourceSecurityGroupName": {}, + "SourceSecurityGroupOwnerId": {}, + "IpProtocol": {}, + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + }, + "CidrIp": {}, + "IpPermissions": { + "shape": "S1b" + } + } + } + }, + "RunInstances": { + "input": { + "type": "structure", + "required": [ + "ImageId", + "MinCount", + "MaxCount" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "ImageId": {}, + "MinCount": { + "type": "integer" + }, + "MaxCount": { + "type": "integer" + }, + "KeyName": {}, + "SecurityGroups": { + "shape": "Sjy", + "locationName": "SecurityGroup" + }, + "SecurityGroupIds": { + "shape": "S4n", + "locationName": "SecurityGroupId" + }, + "UserData": {}, + "InstanceType": {}, + "Placement": { + "shape": "Sc2" + }, + "KernelId": {}, + "RamdiskId": {}, + "BlockDeviceMappings": { + "shape": "S3i", + "locationName": "BlockDeviceMapping" + }, + "Monitoring": { + "shape": "Sgh" + }, + "SubnetId": {}, + "DisableApiTermination": { + "locationName": "disableApiTermination", + "type": "boolean" + }, + "InstanceInitiatedShutdownBehavior": { + "locationName": "instanceInitiatedShutdownBehavior" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "ClientToken": { + "locationName": "clientToken" + }, + "AdditionalInfo": { + "locationName": "additionalInfo" + }, + "NetworkInterfaces": { + "shape": "Sg2", + "locationName": "networkInterface" + }, + "IamInstanceProfile": { + "shape": "Sg4", + "locationName": "iamInstanceProfile" + }, + "EbsOptimized": { + "locationName": "ebsOptimized", + "type": "boolean" + } + } + }, + "output": { + "shape": "Sby" + } + }, + "RunScheduledInstances": { + "input": { + "type": "structure", + "required": [ + "ScheduledInstanceId", + "LaunchSpecification" + ], + "members": { + "DryRun": { + "type": "boolean" + }, + "ClientToken": { + "idempotencyToken": true + }, + "InstanceCount": { + "type": "integer" + }, + "ScheduledInstanceId": {}, + "LaunchSpecification": { + "type": "structure", + "required": [ + "ImageId" + ], + "members": { + "ImageId": {}, + "KeyName": {}, + "SecurityGroupIds": { + "shape": "Smv", + "locationName": "SecurityGroupId" + }, + "UserData": {}, + "Placement": { + "type": "structure", + "members": { + "AvailabilityZone": {}, + "GroupName": {} + } + }, + "KernelId": {}, + "InstanceType": {}, + "RamdiskId": {}, + "BlockDeviceMappings": { + "locationName": "BlockDeviceMapping", + "type": "list", + "member": { + "locationName": "BlockDeviceMapping", + "type": "structure", + "members": { + "DeviceName": {}, + "NoDevice": {}, + "VirtualName": {}, + "Ebs": { + "type": "structure", + "members": { + "SnapshotId": {}, + "VolumeSize": { + "type": "integer" + }, + "DeleteOnTermination": { + "type": "boolean" + }, + "VolumeType": {}, + "Iops": { + "type": "integer" + }, + "Encrypted": { + "type": "boolean" + } + } + } + } + } + }, + "Monitoring": { + "type": "structure", + "members": { + "Enabled": { + "type": "boolean" + } + } + }, + "SubnetId": {}, + "NetworkInterfaces": { + "locationName": "NetworkInterface", + "type": "list", + "member": { + "locationName": "NetworkInterface", + "type": "structure", + "members": { + "NetworkInterfaceId": {}, + "DeviceIndex": { + "type": "integer" + }, + "SubnetId": {}, + "Description": {}, + "PrivateIpAddress": {}, + "PrivateIpAddressConfigs": { + "locationName": "PrivateIpAddressConfig", + "type": "list", + "member": { + "locationName": "PrivateIpAddressConfigSet", + "type": "structure", + "members": { + "PrivateIpAddress": {}, + "Primary": { + "type": "boolean" + } + } + } + }, + "SecondaryPrivateIpAddressCount": { + "type": "integer" + }, + "AssociatePublicIpAddress": { + "type": "boolean" + }, + "Groups": { + "shape": "Smv", + "locationName": "Group" + }, + "DeleteOnTermination": { + "type": "boolean" + } + } + } + }, + "IamInstanceProfile": { + "type": "structure", + "members": { + "Arn": {}, + "Name": {} + } + }, + "EbsOptimized": { + "type": "boolean" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceIdSet": { + "locationName": "instanceIdSet", + "type": "list", + "member": { + "locationName": "item" + } + } + } + } + }, + "StartInstances": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + }, + "AdditionalInfo": { + "locationName": "additionalInfo" + }, + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "StartingInstances": { + "shape": "Sna", + "locationName": "instancesSet" + } + } + } + }, + "StopInstances": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + }, + "Force": { + "locationName": "force", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "StoppingInstances": { + "shape": "Sna", + "locationName": "instancesSet" + } + } + } + }, + "TerminateInstances": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + } + } + }, + "output": { + "type": "structure", + "members": { + "TerminatingInstances": { + "shape": "Sna", + "locationName": "instancesSet" + } + } + } + }, + "UnassignPrivateIpAddresses": { + "input": { + "type": "structure", + "required": [ + "NetworkInterfaceId", + "PrivateIpAddresses" + ], + "members": { + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "PrivateIpAddresses": { + "shape": "Sr", + "locationName": "privateIpAddress" + } + } + } + }, + "UnmonitorInstances": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "DryRun": { + "locationName": "dryRun", + "type": "boolean" + }, + "InstanceIds": { + "shape": "S8h", + "locationName": "InstanceId" + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceMonitorings": { + "shape": "Slh", + "locationName": "instancesSet" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "locationName": "ReservedInstanceId" + } + }, + "S5": { + "type": "list", + "member": { + "locationName": "TargetConfigurationRequest", + "type": "structure", + "required": [ + "OfferingId" + ], + "members": { + "OfferingId": {}, + "InstanceCount": { + "type": "integer" + } + } + } + }, + "Sb": { + "type": "structure", + "members": { + "AccepterVpcInfo": { + "shape": "Sc", + "locationName": "accepterVpcInfo" + }, + "ExpirationTime": { + "locationName": "expirationTime", + "type": "timestamp" + }, + "RequesterVpcInfo": { + "shape": "Sc", + "locationName": "requesterVpcInfo" + }, + "Status": { + "locationName": "status", + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "Message": { + "locationName": "message" + } + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + } + } + }, + "Sc": { + "type": "structure", + "members": { + "CidrBlock": { + "locationName": "cidrBlock" + }, + "OwnerId": { + "locationName": "ownerId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "PeeringOptions": { + "locationName": "peeringOptions", + "type": "structure", + "members": { + "AllowEgressFromLocalClassicLinkToRemoteVpc": { + "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc", + "type": "boolean" + }, + "AllowEgressFromLocalVpcToRemoteClassicLink": { + "locationName": "allowEgressFromLocalVpcToRemoteClassicLink", + "type": "boolean" + }, + "AllowDnsResolutionFromRemoteVpc": { + "locationName": "allowDnsResolutionFromRemoteVpc", + "type": "boolean" + } + } + } + } + }, + "Sh": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Key": { + "locationName": "key" + }, + "Value": { + "locationName": "value" + } + } + } + }, + "Sp": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "Sr": { + "type": "list", + "member": { + "locationName": "PrivateIpAddress" + } + }, + "Sy": { + "type": "list", + "member": { + "locationName": "groupId" + } + }, + "S14": { + "type": "structure", + "members": { + "VolumeId": { + "locationName": "volumeId" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "Device": { + "locationName": "device" + }, + "State": { + "locationName": "status" + }, + "AttachTime": { + "locationName": "attachTime", + "type": "timestamp" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + } + } + }, + "S18": { + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "State": { + "locationName": "state" + } + } + }, + "S1b": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "IpProtocol": { + "locationName": "ipProtocol" + }, + "FromPort": { + "locationName": "fromPort", + "type": "integer" + }, + "ToPort": { + "locationName": "toPort", + "type": "integer" + }, + "UserIdGroupPairs": { + "locationName": "groups", + "type": "list", + "member": { + "shape": "S1e", + "locationName": "item" + } + }, + "IpRanges": { + "locationName": "ipRanges", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "CidrIp": { + "locationName": "cidrIp" + } + } + } + }, + "PrefixListIds": { + "locationName": "prefixListIds", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "PrefixListId": { + "locationName": "prefixListId" + } + } + } + } + } + } + }, + "S1e": { + "type": "structure", + "members": { + "UserId": { + "locationName": "userId" + }, + "GroupName": { + "locationName": "groupName" + }, + "GroupId": { + "locationName": "groupId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + }, + "PeeringStatus": { + "locationName": "peeringStatus" + } + } + }, + "S1l": { + "type": "structure", + "members": { + "S3": { + "type": "structure", + "members": { + "Bucket": { + "locationName": "bucket" + }, + "Prefix": { + "locationName": "prefix" + }, + "AWSAccessKeyId": {}, + "UploadPolicy": { + "locationName": "uploadPolicy", + "type": "blob" + }, + "UploadPolicySignature": { + "locationName": "uploadPolicySignature" + } + } + } + } + }, + "S1p": { + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "BundleId": { + "locationName": "bundleId" + }, + "State": { + "locationName": "state" + }, + "StartTime": { + "locationName": "startTime", + "type": "timestamp" + }, + "UpdateTime": { + "locationName": "updateTime", + "type": "timestamp" + }, + "Storage": { + "shape": "S1l", + "locationName": "storage" + }, + "Progress": { + "locationName": "progress" + }, + "BundleTaskError": { + "locationName": "error", + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "Message": { + "locationName": "message" + } + } + } + } + }, + "S20": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ReservedInstancesListingId": { + "locationName": "reservedInstancesListingId" + }, + "ReservedInstancesId": { + "locationName": "reservedInstancesId" + }, + "CreateDate": { + "locationName": "createDate", + "type": "timestamp" + }, + "UpdateDate": { + "locationName": "updateDate", + "type": "timestamp" + }, + "Status": { + "locationName": "status" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "InstanceCounts": { + "locationName": "instanceCounts", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "State": { + "locationName": "state" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + } + } + } + }, + "PriceSchedules": { + "locationName": "priceSchedules", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Term": { + "locationName": "term", + "type": "long" + }, + "Price": { + "locationName": "price", + "type": "double" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "Active": { + "locationName": "active", + "type": "boolean" + } + } + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "ClientToken": { + "locationName": "clientToken" + } + } + } + }, + "S2c": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "S2m": { + "type": "list", + "member": { + "locationName": "SpotInstanceRequestId" + } + }, + "S30": { + "type": "structure", + "members": { + "CustomerGatewayId": { + "locationName": "customerGatewayId" + }, + "State": { + "locationName": "state" + }, + "Type": { + "locationName": "type" + }, + "IpAddress": { + "locationName": "ipAddress" + }, + "BgpAsn": { + "locationName": "bgpAsn" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S35": { + "type": "structure", + "members": { + "DhcpOptionsId": { + "locationName": "dhcpOptionsId" + }, + "DhcpConfigurations": { + "locationName": "dhcpConfigurationSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Key": { + "locationName": "key" + }, + "Values": { + "locationName": "valueSet", + "type": "list", + "member": { + "shape": "S39", + "locationName": "item" + } + } + } + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S39": { + "type": "structure", + "members": { + "Value": { + "locationName": "value" + } + } + }, + "S3e": { + "type": "list", + "member": { + "shape": "S3f", + "locationName": "item" + } + }, + "S3f": { + "type": "structure", + "required": [ + "Error" + ], + "members": { + "Error": { + "locationName": "error", + "type": "structure", + "required": [ + "Code", + "Message" + ], + "members": { + "Code": { + "locationName": "code" + }, + "Message": { + "locationName": "message" + } + } + }, + "ResourceId": { + "locationName": "resourceId" + } + } + }, + "S3i": { + "type": "list", + "member": { + "shape": "S3j", + "locationName": "BlockDeviceMapping" + } + }, + "S3j": { + "type": "structure", + "members": { + "VirtualName": { + "locationName": "virtualName" + }, + "DeviceName": { + "locationName": "deviceName" + }, + "Ebs": { + "locationName": "ebs", + "type": "structure", + "members": { + "SnapshotId": { + "locationName": "snapshotId" + }, + "VolumeSize": { + "locationName": "volumeSize", + "type": "integer" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + }, + "VolumeType": { + "locationName": "volumeType" + }, + "Iops": { + "locationName": "iops", + "type": "integer" + }, + "Encrypted": { + "locationName": "encrypted", + "type": "boolean" + } + } + }, + "NoDevice": { + "locationName": "noDevice" + } + } + }, + "S3t": { + "type": "structure", + "members": { + "ExportTaskId": { + "locationName": "exportTaskId" + }, + "Description": { + "locationName": "description" + }, + "State": { + "locationName": "state" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "InstanceExportDetails": { + "locationName": "instanceExport", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "TargetEnvironment": { + "locationName": "targetEnvironment" + } + } + }, + "ExportToS3Task": { + "locationName": "exportToS3", + "type": "structure", + "members": { + "DiskImageFormat": { + "locationName": "diskImageFormat" + }, + "ContainerFormat": { + "locationName": "containerFormat" + }, + "S3Bucket": { + "locationName": "s3Bucket" + }, + "S3Key": { + "locationName": "s3Key" + } + } + } + } + }, + "S3z": { + "type": "structure", + "members": { + "InternetGatewayId": { + "locationName": "internetGatewayId" + }, + "Attachments": { + "locationName": "attachmentSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "State": { + "locationName": "state" + } + } + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S46": { + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "NatGatewayId": { + "locationName": "natGatewayId" + }, + "CreateTime": { + "locationName": "createTime", + "type": "timestamp" + }, + "DeleteTime": { + "locationName": "deleteTime", + "type": "timestamp" + }, + "NatGatewayAddresses": { + "locationName": "natGatewayAddressSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "PublicIp": { + "locationName": "publicIp" + }, + "AllocationId": { + "locationName": "allocationId" + }, + "PrivateIp": { + "locationName": "privateIp" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + } + } + } + }, + "State": { + "locationName": "state" + }, + "FailureCode": { + "locationName": "failureCode" + }, + "FailureMessage": { + "locationName": "failureMessage" + }, + "ProvisionedBandwidth": { + "locationName": "provisionedBandwidth", + "type": "structure", + "members": { + "Provisioned": { + "locationName": "provisioned" + }, + "Requested": { + "locationName": "requested" + }, + "RequestTime": { + "locationName": "requestTime", + "type": "timestamp" + }, + "ProvisionTime": { + "locationName": "provisionTime", + "type": "timestamp" + }, + "Status": { + "locationName": "status" + } + } + } + } + }, + "S4d": { + "type": "structure", + "members": { + "NetworkAclId": { + "locationName": "networkAclId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "IsDefault": { + "locationName": "default", + "type": "boolean" + }, + "Entries": { + "locationName": "entrySet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "RuleNumber": { + "locationName": "ruleNumber", + "type": "integer" + }, + "Protocol": { + "locationName": "protocol" + }, + "RuleAction": { + "locationName": "ruleAction" + }, + "Egress": { + "locationName": "egress", + "type": "boolean" + }, + "CidrBlock": { + "locationName": "cidrBlock" + }, + "IcmpTypeCode": { + "shape": "S4h", + "locationName": "icmpTypeCode" + }, + "PortRange": { + "shape": "S4i", + "locationName": "portRange" + } + } + } + }, + "Associations": { + "locationName": "associationSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "NetworkAclAssociationId": { + "locationName": "networkAclAssociationId" + }, + "NetworkAclId": { + "locationName": "networkAclId" + }, + "SubnetId": { + "locationName": "subnetId" + } + } + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S4h": { + "type": "structure", + "members": { + "Type": { + "locationName": "type", + "type": "integer" + }, + "Code": { + "locationName": "code", + "type": "integer" + } + } + }, + "S4i": { + "type": "structure", + "members": { + "From": { + "locationName": "from", + "type": "integer" + }, + "To": { + "locationName": "to", + "type": "integer" + } + } + }, + "S4n": { + "type": "list", + "member": { + "locationName": "SecurityGroupId" + } + }, + "S4o": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "PrivateIpAddress" + ], + "members": { + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "Primary": { + "locationName": "primary", + "type": "boolean" + } + } + } + }, + "S4r": { + "type": "structure", + "members": { + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Description": { + "locationName": "description" + }, + "OwnerId": { + "locationName": "ownerId" + }, + "RequesterId": { + "locationName": "requesterId" + }, + "RequesterManaged": { + "locationName": "requesterManaged", + "type": "boolean" + }, + "Status": { + "locationName": "status" + }, + "MacAddress": { + "locationName": "macAddress" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "PrivateDnsName": { + "locationName": "privateDnsName" + }, + "SourceDestCheck": { + "locationName": "sourceDestCheck", + "type": "boolean" + }, + "Groups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "Attachment": { + "shape": "S4v", + "locationName": "attachment" + }, + "Association": { + "shape": "S4w", + "locationName": "association" + }, + "TagSet": { + "shape": "Sh", + "locationName": "tagSet" + }, + "PrivateIpAddresses": { + "locationName": "privateIpAddressesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "PrivateDnsName": { + "locationName": "privateDnsName" + }, + "Primary": { + "locationName": "primary", + "type": "boolean" + }, + "Association": { + "shape": "S4w", + "locationName": "association" + } + } + } + }, + "InterfaceType": { + "locationName": "interfaceType" + } + } + }, + "S4t": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "GroupName": { + "locationName": "groupName" + }, + "GroupId": { + "locationName": "groupId" + } + } + } + }, + "S4v": { + "type": "structure", + "members": { + "AttachmentId": { + "locationName": "attachmentId" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "InstanceOwnerId": { + "locationName": "instanceOwnerId" + }, + "DeviceIndex": { + "locationName": "deviceIndex", + "type": "integer" + }, + "Status": { + "locationName": "status" + }, + "AttachTime": { + "locationName": "attachTime", + "type": "timestamp" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + } + } + }, + "S4w": { + "type": "structure", + "members": { + "PublicIp": { + "locationName": "publicIp" + }, + "PublicDnsName": { + "locationName": "publicDnsName" + }, + "IpOwnerId": { + "locationName": "ipOwnerId" + }, + "AllocationId": { + "locationName": "allocationId" + }, + "AssociationId": { + "locationName": "associationId" + } + } + }, + "S5a": { + "type": "structure", + "members": { + "RouteTableId": { + "locationName": "routeTableId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "Routes": { + "locationName": "routeSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "DestinationCidrBlock": { + "locationName": "destinationCidrBlock" + }, + "DestinationPrefixListId": { + "locationName": "destinationPrefixListId" + }, + "GatewayId": { + "locationName": "gatewayId" + }, + "InstanceId": { + "locationName": "instanceId" + }, + "InstanceOwnerId": { + "locationName": "instanceOwnerId" + }, + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "VpcPeeringConnectionId": { + "locationName": "vpcPeeringConnectionId" + }, + "NatGatewayId": { + "locationName": "natGatewayId" + }, + "State": { + "locationName": "state" + }, + "Origin": { + "locationName": "origin" + } + } + } + }, + "Associations": { + "locationName": "associationSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "RouteTableAssociationId": { + "locationName": "routeTableAssociationId" + }, + "RouteTableId": { + "locationName": "routeTableId" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "Main": { + "locationName": "main", + "type": "boolean" + } + } + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "PropagatingVgws": { + "locationName": "propagatingVgwSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "GatewayId": { + "locationName": "gatewayId" + } + } + } + } + } + }, + "S5m": { + "type": "structure", + "members": { + "SnapshotId": { + "locationName": "snapshotId" + }, + "VolumeId": { + "locationName": "volumeId" + }, + "State": { + "locationName": "status" + }, + "StateMessage": { + "locationName": "statusMessage" + }, + "StartTime": { + "locationName": "startTime", + "type": "timestamp" + }, + "Progress": { + "locationName": "progress" + }, + "OwnerId": { + "locationName": "ownerId" + }, + "Description": { + "locationName": "description" + }, + "VolumeSize": { + "locationName": "volumeSize", + "type": "integer" + }, + "OwnerAlias": { + "locationName": "ownerAlias" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "Encrypted": { + "locationName": "encrypted", + "type": "boolean" + }, + "KmsKeyId": { + "locationName": "kmsKeyId" + }, + "DataEncryptionKeyId": { + "locationName": "dataEncryptionKeyId" + } + } + }, + "S5q": { + "type": "structure", + "members": { + "OwnerId": { + "locationName": "ownerId" + }, + "Bucket": { + "locationName": "bucket" + }, + "Prefix": { + "locationName": "prefix" + }, + "State": { + "locationName": "state" + }, + "Fault": { + "shape": "S5s", + "locationName": "fault" + } + } + }, + "S5s": { + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "Message": { + "locationName": "message" + } + } + }, + "S5v": { + "type": "structure", + "members": { + "SubnetId": { + "locationName": "subnetId" + }, + "State": { + "locationName": "state" + }, + "VpcId": { + "locationName": "vpcId" + }, + "CidrBlock": { + "locationName": "cidrBlock" + }, + "AvailableIpAddressCount": { + "locationName": "availableIpAddressCount", + "type": "integer" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "DefaultForAz": { + "locationName": "defaultForAz", + "type": "boolean" + }, + "MapPublicIpOnLaunch": { + "locationName": "mapPublicIpOnLaunch", + "type": "boolean" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S5y": { + "type": "list", + "member": {} + }, + "S60": { + "type": "structure", + "members": { + "VolumeId": { + "locationName": "volumeId" + }, + "Size": { + "locationName": "size", + "type": "integer" + }, + "SnapshotId": { + "locationName": "snapshotId" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "State": { + "locationName": "status" + }, + "CreateTime": { + "locationName": "createTime", + "type": "timestamp" + }, + "Attachments": { + "locationName": "attachmentSet", + "type": "list", + "member": { + "shape": "S14", + "locationName": "item" + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "VolumeType": { + "locationName": "volumeType" + }, + "Iops": { + "locationName": "iops", + "type": "integer" + }, + "Encrypted": { + "locationName": "encrypted", + "type": "boolean" + }, + "KmsKeyId": { + "locationName": "kmsKeyId" + } + } + }, + "S66": { + "type": "structure", + "members": { + "VpcId": { + "locationName": "vpcId" + }, + "State": { + "locationName": "state" + }, + "CidrBlock": { + "locationName": "cidrBlock" + }, + "DhcpOptionsId": { + "locationName": "dhcpOptionsId" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "InstanceTenancy": { + "locationName": "instanceTenancy" + }, + "IsDefault": { + "locationName": "isDefault", + "type": "boolean" + } + } + }, + "S6a": { + "type": "structure", + "members": { + "VpcEndpointId": { + "locationName": "vpcEndpointId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "ServiceName": { + "locationName": "serviceName" + }, + "State": { + "locationName": "state" + }, + "PolicyDocument": { + "locationName": "policyDocument" + }, + "RouteTableIds": { + "shape": "S2c", + "locationName": "routeTableIdSet" + }, + "CreationTimestamp": { + "locationName": "creationTimestamp", + "type": "timestamp" + } + } + }, + "S6h": { + "type": "structure", + "members": { + "VpnConnectionId": { + "locationName": "vpnConnectionId" + }, + "State": { + "locationName": "state" + }, + "CustomerGatewayConfiguration": { + "locationName": "customerGatewayConfiguration" + }, + "Type": { + "locationName": "type" + }, + "CustomerGatewayId": { + "locationName": "customerGatewayId" + }, + "VpnGatewayId": { + "locationName": "vpnGatewayId" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "VgwTelemetry": { + "locationName": "vgwTelemetry", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "OutsideIpAddress": { + "locationName": "outsideIpAddress" + }, + "Status": { + "locationName": "status" + }, + "LastStatusChange": { + "locationName": "lastStatusChange", + "type": "timestamp" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "AcceptedRouteCount": { + "locationName": "acceptedRouteCount", + "type": "integer" + } + } + } + }, + "Options": { + "locationName": "options", + "type": "structure", + "members": { + "StaticRoutesOnly": { + "locationName": "staticRoutesOnly", + "type": "boolean" + } + } + }, + "Routes": { + "locationName": "routes", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "DestinationCidrBlock": { + "locationName": "destinationCidrBlock" + }, + "Source": { + "locationName": "source" + }, + "State": { + "locationName": "state" + } + } + } + } + } + }, + "S6t": { + "type": "structure", + "members": { + "VpnGatewayId": { + "locationName": "vpnGatewayId" + }, + "State": { + "locationName": "state" + }, + "Type": { + "locationName": "type" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "VpcAttachments": { + "locationName": "attachments", + "type": "list", + "member": { + "shape": "S18", + "locationName": "item" + } + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S7y": { + "type": "list", + "member": { + "locationName": "Filter", + "type": "structure", + "members": { + "Name": {}, + "Values": { + "shape": "S2c", + "locationName": "Value" + } + } + } + }, + "S8h": { + "type": "list", + "member": { + "locationName": "InstanceId" + } + }, + "S8p": { + "type": "structure", + "required": [ + "ConversionTaskId", + "State" + ], + "members": { + "ConversionTaskId": { + "locationName": "conversionTaskId" + }, + "ExpirationTime": { + "locationName": "expirationTime" + }, + "ImportInstance": { + "locationName": "importInstance", + "type": "structure", + "required": [ + "Volumes" + ], + "members": { + "Volumes": { + "locationName": "volumes", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "required": [ + "BytesConverted", + "AvailabilityZone", + "Image", + "Volume", + "Status" + ], + "members": { + "BytesConverted": { + "locationName": "bytesConverted", + "type": "long" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Image": { + "shape": "S8t", + "locationName": "image" + }, + "Volume": { + "shape": "S8u", + "locationName": "volume" + }, + "Status": { + "locationName": "status" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "Description": { + "locationName": "description" + } + } + } + }, + "InstanceId": { + "locationName": "instanceId" + }, + "Platform": { + "locationName": "platform" + }, + "Description": { + "locationName": "description" + } + } + }, + "ImportVolume": { + "locationName": "importVolume", + "type": "structure", + "required": [ + "BytesConverted", + "AvailabilityZone", + "Image", + "Volume" + ], + "members": { + "BytesConverted": { + "locationName": "bytesConverted", + "type": "long" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Description": { + "locationName": "description" + }, + "Image": { + "shape": "S8t", + "locationName": "image" + }, + "Volume": { + "shape": "S8u", + "locationName": "volume" + } + } + }, + "State": { + "locationName": "state" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + } + } + }, + "S8t": { + "type": "structure", + "required": [ + "Format", + "Size", + "ImportManifestUrl" + ], + "members": { + "Format": { + "locationName": "format" + }, + "Size": { + "locationName": "size", + "type": "long" + }, + "ImportManifestUrl": { + "locationName": "importManifestUrl" + }, + "Checksum": { + "locationName": "checksum" + } + } + }, + "S8u": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Size": { + "locationName": "size", + "type": "long" + }, + "Id": { + "locationName": "id" + } + } + }, + "S9o": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "S9r": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "Sa4": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Resource": { + "locationName": "resource" + }, + "UseLongIds": { + "locationName": "useLongIds", + "type": "boolean" + }, + "Deadline": { + "locationName": "deadline", + "type": "timestamp" + } + } + } + }, + "Sab": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "UserId": { + "locationName": "userId" + }, + "Group": { + "locationName": "group" + } + } + } + }, + "Sae": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ProductCodeId": { + "locationName": "productCode" + }, + "ProductCodeType": { + "locationName": "type" + } + } + } + }, + "Sah": { + "type": "list", + "member": { + "shape": "S3j", + "locationName": "item" + } + }, + "Sak": { + "type": "list", + "member": { + "locationName": "Owner" + } + }, + "Sas": { + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "Message": { + "locationName": "message" + } + } + }, + "Sax": { + "type": "list", + "member": { + "locationName": "ImportTaskId" + } + }, + "Sb1": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "DiskImageSize": { + "locationName": "diskImageSize", + "type": "double" + }, + "Description": { + "locationName": "description" + }, + "Format": { + "locationName": "format" + }, + "Url": { + "locationName": "url" + }, + "UserBucket": { + "shape": "Sb3", + "locationName": "userBucket" + }, + "DeviceName": { + "locationName": "deviceName" + }, + "SnapshotId": { + "locationName": "snapshotId" + }, + "Progress": { + "locationName": "progress" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "Status": { + "locationName": "status" + } + } + } + }, + "Sb3": { + "type": "structure", + "members": { + "S3Bucket": { + "locationName": "s3Bucket" + }, + "S3Key": { + "locationName": "s3Key" + } + } + }, + "Sb8": { + "type": "structure", + "members": { + "DiskImageSize": { + "locationName": "diskImageSize", + "type": "double" + }, + "Description": { + "locationName": "description" + }, + "Format": { + "locationName": "format" + }, + "Url": { + "locationName": "url" + }, + "UserBucket": { + "shape": "Sb3", + "locationName": "userBucket" + }, + "SnapshotId": { + "locationName": "snapshotId" + }, + "Progress": { + "locationName": "progress" + }, + "StatusMessage": { + "locationName": "statusMessage" + }, + "Status": { + "locationName": "status" + } + } + }, + "Sbc": { + "type": "structure", + "members": { + "Value": { + "locationName": "value", + "type": "boolean" + } + } + }, + "Sbd": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "DeviceName": { + "locationName": "deviceName" + }, + "Ebs": { + "locationName": "ebs", + "type": "structure", + "members": { + "VolumeId": { + "locationName": "volumeId" + }, + "Status": { + "locationName": "status" + }, + "AttachTime": { + "locationName": "attachTime", + "type": "timestamp" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + } + } + } + } + } + }, + "Sbn": { + "type": "structure", + "members": { + "Code": { + "locationName": "code", + "type": "integer" + }, + "Name": { + "locationName": "name" + } + } + }, + "Sbp": { + "type": "structure", + "members": { + "Status": { + "locationName": "status" + }, + "Details": { + "locationName": "details", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Name": { + "locationName": "name" + }, + "Status": { + "locationName": "status" + }, + "ImpairedSince": { + "locationName": "impairedSince", + "type": "timestamp" + } + } + } + } + } + }, + "Sby": { + "type": "structure", + "members": { + "ReservationId": { + "locationName": "reservationId" + }, + "OwnerId": { + "locationName": "ownerId" + }, + "RequesterId": { + "locationName": "requesterId" + }, + "Groups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "Instances": { + "locationName": "instancesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "ImageId": { + "locationName": "imageId" + }, + "State": { + "shape": "Sbn", + "locationName": "instanceState" + }, + "PrivateDnsName": { + "locationName": "privateDnsName" + }, + "PublicDnsName": { + "locationName": "dnsName" + }, + "StateTransitionReason": { + "locationName": "reason" + }, + "KeyName": { + "locationName": "keyName" + }, + "AmiLaunchIndex": { + "locationName": "amiLaunchIndex", + "type": "integer" + }, + "ProductCodes": { + "shape": "Sae", + "locationName": "productCodes" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "LaunchTime": { + "locationName": "launchTime", + "type": "timestamp" + }, + "Placement": { + "shape": "Sc2", + "locationName": "placement" + }, + "KernelId": { + "locationName": "kernelId" + }, + "RamdiskId": { + "locationName": "ramdiskId" + }, + "Platform": { + "locationName": "platform" + }, + "Monitoring": { + "shape": "Sc3", + "locationName": "monitoring" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "PublicIpAddress": { + "locationName": "ipAddress" + }, + "StateReason": { + "shape": "Sas", + "locationName": "stateReason" + }, + "Architecture": { + "locationName": "architecture" + }, + "RootDeviceType": { + "locationName": "rootDeviceType" + }, + "RootDeviceName": { + "locationName": "rootDeviceName" + }, + "BlockDeviceMappings": { + "shape": "Sbd", + "locationName": "blockDeviceMapping" + }, + "VirtualizationType": { + "locationName": "virtualizationType" + }, + "InstanceLifecycle": { + "locationName": "instanceLifecycle" + }, + "SpotInstanceRequestId": { + "locationName": "spotInstanceRequestId" + }, + "ClientToken": { + "locationName": "clientToken" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "SecurityGroups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "SourceDestCheck": { + "locationName": "sourceDestCheck", + "type": "boolean" + }, + "Hypervisor": { + "locationName": "hypervisor" + }, + "NetworkInterfaces": { + "locationName": "networkInterfaceSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "VpcId": { + "locationName": "vpcId" + }, + "Description": { + "locationName": "description" + }, + "OwnerId": { + "locationName": "ownerId" + }, + "Status": { + "locationName": "status" + }, + "MacAddress": { + "locationName": "macAddress" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "PrivateDnsName": { + "locationName": "privateDnsName" + }, + "SourceDestCheck": { + "locationName": "sourceDestCheck", + "type": "boolean" + }, + "Groups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "Attachment": { + "locationName": "attachment", + "type": "structure", + "members": { + "AttachmentId": { + "locationName": "attachmentId" + }, + "DeviceIndex": { + "locationName": "deviceIndex", + "type": "integer" + }, + "Status": { + "locationName": "status" + }, + "AttachTime": { + "locationName": "attachTime", + "type": "timestamp" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + } + } + }, + "Association": { + "shape": "Sc9", + "locationName": "association" + }, + "PrivateIpAddresses": { + "locationName": "privateIpAddressesSet", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "PrivateDnsName": { + "locationName": "privateDnsName" + }, + "Primary": { + "locationName": "primary", + "type": "boolean" + }, + "Association": { + "shape": "Sc9", + "locationName": "association" + } + } + } + } + } + } + }, + "IamInstanceProfile": { + "locationName": "iamInstanceProfile", + "type": "structure", + "members": { + "Arn": { + "locationName": "arn" + }, + "Id": { + "locationName": "id" + } + } + }, + "EbsOptimized": { + "locationName": "ebsOptimized", + "type": "boolean" + }, + "SriovNetSupport": { + "locationName": "sriovNetSupport" + }, + "EnaSupport": { + "locationName": "enaSupport", + "type": "boolean" + } + } + } + } + } + }, + "Sc2": { + "type": "structure", + "members": { + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "GroupName": { + "locationName": "groupName" + }, + "Tenancy": { + "locationName": "tenancy" + }, + "HostId": { + "locationName": "hostId" + }, + "Affinity": { + "locationName": "affinity" + } + } + }, + "Sc3": { + "type": "structure", + "members": { + "State": { + "locationName": "state" + } + } + }, + "Sc9": { + "type": "structure", + "members": { + "PublicIp": { + "locationName": "publicIp" + }, + "PublicDnsName": { + "locationName": "publicDnsName" + }, + "IpOwnerId": { + "locationName": "ipOwnerId" + } + } + }, + "Sdj": { + "type": "list", + "member": { + "locationName": "ReservedInstancesId" + } + }, + "Sds": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "Frequency": { + "locationName": "frequency" + }, + "Amount": { + "locationName": "amount", + "type": "double" + } + } + } + }, + "Se7": { + "type": "structure", + "members": { + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "Platform": { + "locationName": "platform" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Scope": { + "locationName": "scope" + } + } + }, + "Sep": { + "type": "structure", + "members": { + "Frequency": { + "locationName": "frequency" + }, + "Interval": { + "locationName": "interval", + "type": "integer" + }, + "OccurrenceDaySet": { + "locationName": "occurrenceDaySet", + "type": "list", + "member": { + "locationName": "item", + "type": "integer" + } + }, + "OccurrenceRelativeToEnd": { + "locationName": "occurrenceRelativeToEnd", + "type": "boolean" + }, + "OccurrenceUnit": { + "locationName": "occurrenceUnit" + } + } + }, + "Sew": { + "type": "structure", + "members": { + "ScheduledInstanceId": { + "locationName": "scheduledInstanceId" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Platform": { + "locationName": "platform" + }, + "NetworkPlatform": { + "locationName": "networkPlatform" + }, + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "SlotDurationInHours": { + "locationName": "slotDurationInHours", + "type": "integer" + }, + "Recurrence": { + "shape": "Sep", + "locationName": "recurrence" + }, + "PreviousSlotEndTime": { + "locationName": "previousSlotEndTime", + "type": "timestamp" + }, + "NextSlotStartTime": { + "locationName": "nextSlotStartTime", + "type": "timestamp" + }, + "HourlyPrice": { + "locationName": "hourlyPrice" + }, + "TotalScheduledInstanceHours": { + "locationName": "totalScheduledInstanceHours", + "type": "integer" + }, + "InstanceCount": { + "locationName": "instanceCount", + "type": "integer" + }, + "TermStartDate": { + "locationName": "termStartDate", + "type": "timestamp" + }, + "TermEndDate": { + "locationName": "termEndDate", + "type": "timestamp" + }, + "CreateDate": { + "locationName": "createDate", + "type": "timestamp" + } + } + }, + "Sf3": { + "type": "list", + "member": { + "locationName": "GroupName" + } + }, + "Sfa": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "UserId": { + "locationName": "userId" + }, + "Group": { + "locationName": "group" + } + } + } + }, + "Sfx": { + "type": "structure", + "required": [ + "SpotPrice", + "TargetCapacity", + "IamFleetRole", + "LaunchSpecifications" + ], + "members": { + "ClientToken": { + "locationName": "clientToken" + }, + "SpotPrice": { + "locationName": "spotPrice" + }, + "TargetCapacity": { + "locationName": "targetCapacity", + "type": "integer" + }, + "ValidFrom": { + "locationName": "validFrom", + "type": "timestamp" + }, + "ValidUntil": { + "locationName": "validUntil", + "type": "timestamp" + }, + "TerminateInstancesWithExpiration": { + "locationName": "terminateInstancesWithExpiration", + "type": "boolean" + }, + "IamFleetRole": { + "locationName": "iamFleetRole" + }, + "LaunchSpecifications": { + "locationName": "launchSpecifications", + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + }, + "KeyName": { + "locationName": "keyName" + }, + "SecurityGroups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "UserData": { + "locationName": "userData" + }, + "AddressingType": { + "locationName": "addressingType" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Placement": { + "shape": "Sg0", + "locationName": "placement" + }, + "KernelId": { + "locationName": "kernelId" + }, + "RamdiskId": { + "locationName": "ramdiskId" + }, + "BlockDeviceMappings": { + "shape": "Sah", + "locationName": "blockDeviceMapping" + }, + "Monitoring": { + "locationName": "monitoring", + "type": "structure", + "members": { + "Enabled": { + "locationName": "enabled", + "type": "boolean" + } + } + }, + "SubnetId": { + "locationName": "subnetId" + }, + "NetworkInterfaces": { + "shape": "Sg2", + "locationName": "networkInterfaceSet" + }, + "IamInstanceProfile": { + "shape": "Sg4", + "locationName": "iamInstanceProfile" + }, + "EbsOptimized": { + "locationName": "ebsOptimized", + "type": "boolean" + }, + "WeightedCapacity": { + "locationName": "weightedCapacity", + "type": "double" + }, + "SpotPrice": { + "locationName": "spotPrice" + } + } + } + }, + "ExcessCapacityTerminationPolicy": { + "locationName": "excessCapacityTerminationPolicy" + }, + "AllocationStrategy": { + "locationName": "allocationStrategy" + }, + "FulfilledCapacity": { + "locationName": "fulfilledCapacity", + "type": "double" + }, + "Type": { + "locationName": "type" + } + } + }, + "Sg0": { + "type": "structure", + "members": { + "AvailabilityZone": { + "locationName": "availabilityZone" + }, + "GroupName": { + "locationName": "groupName" + } + } + }, + "Sg2": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "NetworkInterfaceId": { + "locationName": "networkInterfaceId" + }, + "DeviceIndex": { + "locationName": "deviceIndex", + "type": "integer" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "Description": { + "locationName": "description" + }, + "PrivateIpAddress": { + "locationName": "privateIpAddress" + }, + "Groups": { + "shape": "S4n", + "locationName": "SecurityGroupId" + }, + "DeleteOnTermination": { + "locationName": "deleteOnTermination", + "type": "boolean" + }, + "PrivateIpAddresses": { + "shape": "S4o", + "locationName": "privateIpAddressesSet", + "queryName": "PrivateIpAddresses" + }, + "SecondaryPrivateIpAddressCount": { + "locationName": "secondaryPrivateIpAddressCount", + "type": "integer" + }, + "AssociatePublicIpAddress": { + "locationName": "associatePublicIpAddress", + "type": "boolean" + } + } + } + }, + "Sg4": { + "type": "structure", + "members": { + "Arn": { + "locationName": "arn" + }, + "Name": { + "locationName": "name" + } + } + }, + "Sgb": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "SpotInstanceRequestId": { + "locationName": "spotInstanceRequestId" + }, + "SpotPrice": { + "locationName": "spotPrice" + }, + "Type": { + "locationName": "type" + }, + "State": { + "locationName": "state" + }, + "Fault": { + "shape": "S5s", + "locationName": "fault" + }, + "Status": { + "locationName": "status", + "type": "structure", + "members": { + "Code": { + "locationName": "code" + }, + "UpdateTime": { + "locationName": "updateTime", + "type": "timestamp" + }, + "Message": { + "locationName": "message" + } + } + }, + "ValidFrom": { + "locationName": "validFrom", + "type": "timestamp" + }, + "ValidUntil": { + "locationName": "validUntil", + "type": "timestamp" + }, + "LaunchGroup": { + "locationName": "launchGroup" + }, + "AvailabilityZoneGroup": { + "locationName": "availabilityZoneGroup" + }, + "LaunchSpecification": { + "locationName": "launchSpecification", + "type": "structure", + "members": { + "ImageId": { + "locationName": "imageId" + }, + "KeyName": { + "locationName": "keyName" + }, + "SecurityGroups": { + "shape": "S4t", + "locationName": "groupSet" + }, + "UserData": { + "locationName": "userData" + }, + "AddressingType": { + "locationName": "addressingType" + }, + "InstanceType": { + "locationName": "instanceType" + }, + "Placement": { + "shape": "Sg0", + "locationName": "placement" + }, + "KernelId": { + "locationName": "kernelId" + }, + "RamdiskId": { + "locationName": "ramdiskId" + }, + "BlockDeviceMappings": { + "shape": "Sah", + "locationName": "blockDeviceMapping" + }, + "SubnetId": { + "locationName": "subnetId" + }, + "NetworkInterfaces": { + "shape": "Sg2", + "locationName": "networkInterfaceSet" + }, + "IamInstanceProfile": { + "shape": "Sg4", + "locationName": "iamInstanceProfile" + }, + "EbsOptimized": { + "locationName": "ebsOptimized", + "type": "boolean" + }, + "Monitoring": { + "shape": "Sgh", + "locationName": "monitoring" + } + } + }, + "InstanceId": { + "locationName": "instanceId" + }, + "CreateTime": { + "locationName": "createTime", + "type": "timestamp" + }, + "ProductDescription": { + "locationName": "productDescription" + }, + "BlockDurationMinutes": { + "locationName": "blockDurationMinutes", + "type": "integer" + }, + "ActualBlockHourlyPrice": { + "locationName": "actualBlockHourlyPrice" + }, + "Tags": { + "shape": "Sh", + "locationName": "tagSet" + }, + "LaunchedAvailabilityZone": { + "locationName": "launchedAvailabilityZone" + } + } + } + }, + "Sgh": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "locationName": "enabled", + "type": "boolean" + } + } + }, + "Sgu": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "FromPort": { + "locationName": "fromPort", + "type": "integer" + }, + "IpProtocol": { + "locationName": "ipProtocol" + }, + "IpRanges": { + "locationName": "ipRanges", + "type": "list", + "member": { + "locationName": "item" + } + }, + "PrefixListIds": { + "locationName": "prefixListIds", + "type": "list", + "member": { + "locationName": "item" + } + }, + "ToPort": { + "locationName": "toPort", + "type": "integer" + }, + "UserIdGroupPairs": { + "locationName": "groups", + "type": "list", + "member": { + "shape": "S1e", + "locationName": "item" + } + } + } + } + }, + "Shc": { + "type": "list", + "member": { + "locationName": "VolumeId" + } + }, + "Shw": { + "type": "list", + "member": { + "locationName": "VpcId" + } + }, + "Sjc": { + "type": "list", + "member": { + "locationName": "item" + } + }, + "Sje": { + "type": "list", + "member": { + "type": "structure", + "members": { + "HostReservationId": { + "locationName": "hostReservationId" + }, + "HostIdSet": { + "shape": "S9o", + "locationName": "hostIdSet" + }, + "InstanceFamily": { + "locationName": "instanceFamily" + }, + "PaymentOption": { + "locationName": "paymentOption" + }, + "UpfrontPrice": { + "locationName": "upfrontPrice" + }, + "HourlyPrice": { + "locationName": "hourlyPrice" + }, + "CurrencyCode": { + "locationName": "currencyCode" + }, + "Duration": { + "locationName": "duration", + "type": "integer" + } + } + } + }, + "Sjm": { + "type": "structure", + "members": { + "RemainingTotalValue": { + "locationName": "remainingTotalValue" + }, + "RemainingUpfrontValue": { + "locationName": "remainingUpfrontValue" + }, + "HourlyPrice": { + "locationName": "hourlyPrice" + } + } + }, + "Sjt": { + "type": "structure", + "members": { + "S3Bucket": {}, + "S3Key": {} + } + }, + "Sju": { + "type": "structure", + "members": { + "UploadStart": { + "type": "timestamp" + }, + "UploadEnd": { + "type": "timestamp" + }, + "UploadSize": { + "type": "double" + }, + "Comment": {} + } + }, + "Sjy": { + "type": "list", + "member": { + "locationName": "SecurityGroup" + } + }, + "Sk3": { + "type": "structure", + "required": [ + "Format", + "Bytes", + "ImportManifestUrl" + ], + "members": { + "Format": { + "locationName": "format" + }, + "Bytes": { + "locationName": "bytes", + "type": "long" + }, + "ImportManifestUrl": { + "locationName": "importManifestUrl" + } + } + }, + "Sk4": { + "type": "structure", + "required": [ + "Size" + ], + "members": { + "Size": { + "locationName": "size", + "type": "long" + } + } + }, + "Skf": { + "type": "list", + "member": { + "shape": "S3f", + "locationName": "item" + } + }, + "Skk": { + "type": "list", + "member": { + "locationName": "UserId" + } + }, + "Slc": { + "type": "structure", + "members": { + "AllowEgressFromLocalClassicLinkToRemoteVpc": { + "type": "boolean" + }, + "AllowEgressFromLocalVpcToRemoteClassicLink": { + "type": "boolean" + }, + "AllowDnsResolutionFromRemoteVpc": { + "type": "boolean" + } + } + }, + "Sle": { + "type": "structure", + "members": { + "AllowEgressFromLocalClassicLinkToRemoteVpc": { + "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc", + "type": "boolean" + }, + "AllowEgressFromLocalVpcToRemoteClassicLink": { + "locationName": "allowEgressFromLocalVpcToRemoteClassicLink", + "type": "boolean" + }, + "AllowDnsResolutionFromRemoteVpc": { + "locationName": "allowDnsResolutionFromRemoteVpc", + "type": "boolean" + } + } + }, + "Slh": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "Monitoring": { + "shape": "Sc3", + "locationName": "monitoring" + } + } + } + }, + "Smv": { + "type": "list", + "member": { + "locationName": "SecurityGroupId" + } + }, + "Sna": { + "type": "list", + "member": { + "locationName": "item", + "type": "structure", + "members": { + "InstanceId": { + "locationName": "instanceId" + }, + "CurrentState": { + "shape": "Sbn", + "locationName": "currentState" + }, + "PreviousState": { + "shape": "Sbn", + "locationName": "previousState" + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json new file mode 100644 index 0000000..9d04d89 --- /dev/null +++ b/node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json @@ -0,0 +1,138 @@ +{ + "pagination": { + "DescribeAccountAttributes": { + "result_key": "AccountAttributes" + }, + "DescribeAddresses": { + "result_key": "Addresses" + }, + "DescribeAvailabilityZones": { + "result_key": "AvailabilityZones" + }, + "DescribeBundleTasks": { + "result_key": "BundleTasks" + }, + "DescribeConversionTasks": { + "result_key": "ConversionTasks" + }, + "DescribeCustomerGateways": { + "result_key": "CustomerGateways" + }, + "DescribeDhcpOptions": { + "result_key": "DhcpOptions" + }, + "DescribeExportTasks": { + "result_key": "ExportTasks" + }, + "DescribeImages": { + "result_key": "Images" + }, + "DescribeInstanceStatus": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "InstanceStatuses" + }, + "DescribeInstances": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Reservations" + }, + "DescribeInternetGateways": { + "result_key": "InternetGateways" + }, + "DescribeKeyPairs": { + "result_key": "KeyPairs" + }, + "DescribeNetworkAcls": { + "result_key": "NetworkAcls" + }, + "DescribeNetworkInterfaces": { + "result_key": "NetworkInterfaces" + }, + "DescribePlacementGroups": { + "result_key": "PlacementGroups" + }, + "DescribeRegions": { + "result_key": "Regions" + }, + "DescribeReservedInstances": { + "result_key": "ReservedInstances" + }, + "DescribeReservedInstancesListings": { + "result_key": "ReservedInstancesListings" + }, + "DescribeReservedInstancesOfferings": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ReservedInstancesOfferings" + }, + "DescribeReservedInstancesModifications": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "ReservedInstancesModifications" + }, + "DescribeRouteTables": { + "result_key": "RouteTables" + }, + "DescribeSecurityGroups": { + "result_key": "SecurityGroups" + }, + "DescribeSnapshots": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Snapshots" + }, + "DescribeSpotInstanceRequests": { + "result_key": "SpotInstanceRequests" + }, + "DescribeSpotFleetRequests": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "SpotFleetRequestConfigs" + }, + "DescribeSpotPriceHistory": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "SpotPriceHistory" + }, + "DescribeSubnets": { + "result_key": "Subnets" + }, + "DescribeTags": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Tags" + }, + "DescribeVolumeStatus": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "VolumeStatuses" + }, + "DescribeVolumes": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Volumes" + }, + "DescribeVpcs": { + "result_key": "Vpcs" + }, + "DescribeVpcPeeringConnections": { + "result_key": "VpcPeeringConnections" + }, + "DescribeVpnConnections": { + "result_key": "VpnConnections" + }, + "DescribeVpnGateways": { + "result_key": "VpnGateways" + } + } +} diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json new file mode 100644 index 0000000..ecc9f1b --- /dev/null +++ b/node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json @@ -0,0 +1,593 @@ +{ + "version": 2, + "waiters": { + "InstanceExists": { + "delay": 5, + "maxAttempts": 40, + "operation": "DescribeInstances", + "acceptors": [ + { + "matcher": "path", + "expected": true, + "argument": "length(Reservations[]) > `0`", + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidInstanceID.NotFound", + "state": "retry" + } + ] + }, + "BundleTaskComplete": { + "delay": 15, + "operation": "DescribeBundleTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "complete", + "matcher": "pathAll", + "state": "success", + "argument": "BundleTasks[].State" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "BundleTasks[].State" + } + ] + }, + "ConversionTaskCancelled": { + "delay": 15, + "operation": "DescribeConversionTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "cancelled", + "matcher": "pathAll", + "state": "success", + "argument": "ConversionTasks[].State" + } + ] + }, + "ConversionTaskCompleted": { + "delay": 15, + "operation": "DescribeConversionTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "completed", + "matcher": "pathAll", + "state": "success", + "argument": "ConversionTasks[].State" + }, + { + "expected": "cancelled", + "matcher": "pathAny", + "state": "failure", + "argument": "ConversionTasks[].State" + }, + { + "expected": "cancelling", + "matcher": "pathAny", + "state": "failure", + "argument": "ConversionTasks[].State" + } + ] + }, + "ConversionTaskDeleted": { + "delay": 15, + "operation": "DescribeConversionTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "ConversionTasks[].State" + } + ] + }, + "CustomerGatewayAvailable": { + "delay": 15, + "operation": "DescribeCustomerGateways", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "CustomerGateways[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "CustomerGateways[].State" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "CustomerGateways[].State" + } + ] + }, + "ExportTaskCancelled": { + "delay": 15, + "operation": "DescribeExportTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "cancelled", + "matcher": "pathAll", + "state": "success", + "argument": "ExportTasks[].State" + } + ] + }, + "ExportTaskCompleted": { + "delay": 15, + "operation": "DescribeExportTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "completed", + "matcher": "pathAll", + "state": "success", + "argument": "ExportTasks[].State" + } + ] + }, + "ImageExists": { + "operation": "DescribeImages", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "matcher": "path", + "expected": true, + "argument": "length(Images[]) > `0`", + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidAMIID.NotFound", + "state": "retry" + } + ] + }, + "ImageAvailable": { + "operation": "DescribeImages", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "Images[].State", + "expected": "available" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "Images[].State", + "expected": "failed" + } + ] + }, + "InstanceRunning": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "running", + "matcher": "pathAll", + "state": "success", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "shutting-down", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "matcher": "error", + "expected": "InvalidInstanceID.NotFound", + "state": "retry" + } + ] + }, + "InstanceStatusOk": { + "operation": "DescribeInstanceStatus", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "InstanceStatuses[].InstanceStatus.Status", + "expected": "ok" + }, + { + "matcher": "error", + "expected": "InvalidInstanceID.NotFound", + "state": "retry" + } + ] + }, + "InstanceStopped": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "stopped", + "matcher": "pathAll", + "state": "success", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + } + ] + }, + "InstanceTerminated": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "terminated", + "matcher": "pathAll", + "state": "success", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + } + ] + }, + "KeyPairExists": { + "operation": "DescribeKeyPairs", + "delay": 5, + "maxAttempts": 6, + "acceptors": [ + { + "expected": true, + "matcher": "pathAll", + "state": "success", + "argument": "length(KeyPairs[].KeyName) > `0`" + }, + { + "expected": "InvalidKeyPair.NotFound", + "matcher": "error", + "state": "retry" + } + ] + }, + "NatGatewayAvailable": { + "operation": "DescribeNatGateways", + "delay": 15, + "maxAttempts": 40, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "NatGateways[].State", + "expected": "available" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "NatGateways[].State", + "expected": "failed" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "NatGateways[].State", + "expected": "deleting" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "NatGateways[].State", + "expected": "deleted" + }, + { + "state": "retry", + "matcher": "error", + "expected": "NatGatewayNotFound" + } + ] + }, + "NetworkInterfaceAvailable": { + "operation": "DescribeNetworkInterfaces", + "delay": 20, + "maxAttempts": 10, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "NetworkInterfaces[].Status" + }, + { + "expected": "InvalidNetworkInterfaceID.NotFound", + "matcher": "error", + "state": "failure" + } + ] + }, + "PasswordDataAvailable": { + "operation": "GetPasswordData", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "path", + "argument": "length(PasswordData) > `0`", + "expected": true + } + ] + }, + "SnapshotCompleted": { + "delay": 15, + "operation": "DescribeSnapshots", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "completed", + "matcher": "pathAll", + "state": "success", + "argument": "Snapshots[].State" + } + ] + }, + "SpotInstanceRequestFulfilled": { + "operation": "DescribeSpotInstanceRequests", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "fulfilled" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "schedule-expired" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "canceled-before-fulfillment" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "bad-parameters" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "system-error" + } + ] + }, + "SubnetAvailable": { + "delay": 15, + "operation": "DescribeSubnets", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Subnets[].State" + } + ] + }, + "SystemStatusOk": { + "operation": "DescribeInstanceStatus", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "InstanceStatuses[].SystemStatus.Status", + "expected": "ok" + } + ] + }, + "VolumeAvailable": { + "delay": 15, + "operation": "DescribeVolumes", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Volumes[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "Volumes[].State" + } + ] + }, + "VolumeDeleted": { + "delay": 15, + "operation": "DescribeVolumes", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "Volumes[].State" + }, + { + "matcher": "error", + "expected": "InvalidVolume.NotFound", + "state": "success" + } + ] + }, + "VolumeInUse": { + "delay": 15, + "operation": "DescribeVolumes", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "in-use", + "matcher": "pathAll", + "state": "success", + "argument": "Volumes[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "Volumes[].State" + } + ] + }, + "VpcAvailable": { + "delay": 15, + "operation": "DescribeVpcs", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Vpcs[].State" + } + ] + }, + "VpcExists": { + "operation": "DescribeVpcs", + "delay": 1, + "maxAttempts": 5, + "acceptors": [ + { + "matcher": "status", + "expected": 200, + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidVpcID.NotFound", + "state": "retry" + } + ] + }, + "VpnConnectionAvailable": { + "delay": 15, + "operation": "DescribeVpnConnections", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "VpnConnections[].State" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "VpnConnections[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "VpnConnections[].State" + } + ] + }, + "VpnConnectionDeleted": { + "delay": 15, + "operation": "DescribeVpnConnections", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "VpnConnections[].State" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "VpnConnections[].State" + } + ] + }, + "VpcPeeringConnectionExists": { + "delay": 15, + "operation": "DescribeVpcPeeringConnections", + "maxAttempts": 40, + "acceptors": [ + { + "matcher": "status", + "expected": 200, + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidVpcPeeringConnectionID.NotFound", + "state": "retry" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json b/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json new file mode 100644 index 0000000..d11aa8d --- /dev/null +++ b/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json @@ -0,0 +1,215 @@ +{ + "version": "1.0", + "examples": { + "BatchDeleteImage": [ + { + "input": { + "imageIds": [ + { + "imageTag": "precise" + } + ], + "repositoryName": "ubuntu" + }, + "output": { + "failures": [ + + ], + "imageIds": [ + { + "imageDigest": "sha256:examplee6d1e504117a17000003d3753086354a38375961f2e665416ef4b1b2f", + "imageTag": "precise" + } + ] + }, + "comments": { + }, + "description": "This example deletes images with the tags precise and trusty in a repository called ubuntu in the default registry for an account.", + "id": "batchdeleteimages-example-1470860541707", + "title": "To delete multiple images" + } + ], + "BatchGetImage": [ + { + "input": { + "imageIds": [ + { + "imageTag": "precise" + } + ], + "repositoryName": "ubuntu" + }, + "output": { + "failures": [ + + ], + "images": [ + { + "imageId": { + "imageDigest": "sha256:example76bdff6d83a09ba2a818f0d00000063724a9ac3ba5019c56f74ebf42a", + "imageTag": "precise" + }, + "imageManifest": "{\n \"schemaVersion\": 1,\n \"name\": \"ubuntu\",\n \"tag\": \"precise\",\n...", + "registryId": "244698725403", + "repositoryName": "ubuntu" + } + ] + }, + "comments": { + "output": { + "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." + } + }, + "description": "This example obtains information for an image with a specified image digest ID from the repository named ubuntu in the current account.", + "id": "batchgetimage-example-1470862771437", + "title": "To obtain multiple images in a single request" + } + ], + "CreateRepository": [ + { + "input": { + "repositoryName": "project-a/nginx-web-app" + }, + "output": { + "repository": { + "registryId": "012345678901", + "repositoryArn": "arn:aws:ecr:us-west-2:012345678901:repository/project-a/nginx-web-app", + "repositoryName": "project-a/nginx-web-app" + } + }, + "comments": { + "output": { + "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." + } + }, + "description": "This example creates a repository called nginx-web-app inside the project-a namespace in the default registry for an account.", + "id": "createrepository-example-1470863688724", + "title": "To create a new repository" + } + ], + "DeleteRepository": [ + { + "input": { + "force": true, + "repositoryName": "ubuntu" + }, + "output": { + "repository": { + "registryId": "012345678901", + "repositoryArn": "arn:aws:ecr:us-west-2:012345678901:repository/ubuntu", + "repositoryName": "ubuntu" + } + }, + "comments": { + "output": { + "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." + } + }, + "description": "This example force deletes a repository named ubuntu in the default registry for an account. The force parameter is required if the repository contains images.", + "id": "deleterepository-example-1470863805703", + "title": "To force delete a repository" + } + ], + "DeleteRepositoryPolicy": [ + { + "input": { + "repositoryName": "ubuntu" + }, + "output": { + "policyText": "{ ... }", + "registryId": "012345678901", + "repositoryName": "ubuntu" + }, + "comments": { + }, + "description": "This example deletes the policy associated with the repository named ubuntu in the current account.", + "id": "deleterepositorypolicy-example-1470866943748", + "title": "To delete the policy associated with a repository" + } + ], + "DescribeRepositories": [ + { + "input": { + }, + "output": { + "repositories": [ + { + "registryId": "012345678910", + "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/ubuntu", + "repositoryName": "ubuntu" + }, + { + "registryId": "012345678910", + "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/test", + "repositoryName": "test" + } + ] + }, + "comments": { + "output": { + } + }, + "description": "The following example obtains a list and description of all repositories in the default registry to which the current user has access.", + "id": "describe-repositories-1470856017467", + "title": "To describe all repositories in the current account" + } + ], + "GetAuthorizationToken": [ + { + "input": { + }, + "output": { + "authorizationData": [ + { + "authorizationToken": "QVdTOkN...", + "expiresAt": "1470951892432", + "proxyEndpoint": "https://012345678901.dkr.ecr.us-west-2.amazonaws.com" + } + ] + }, + "comments": { + }, + "description": "This example gets an authorization token for your default registry.", + "id": "getauthorizationtoken-example-1470867047084", + "title": "To obtain an authorization token" + } + ], + "GetRepositoryPolicy": [ + { + "input": { + "repositoryName": "ubuntu" + }, + "output": { + "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"new statement\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"arn:aws:iam::012345678901:role/CodeDeployDemo\"\n },\n\"Action\" : [ \"ecr:GetDownloadUrlForLayer\", \"ecr:BatchGetImage\", \"ecr:BatchCheckLayerAvailability\" ]\n } ]\n}", + "registryId": "012345678901", + "repositoryName": "ubuntu" + }, + "comments": { + }, + "description": "This example obtains the repository policy for the repository named ubuntu.", + "id": "getrepositorypolicy-example-1470867669211", + "title": "To get the current policy for a repository" + } + ], + "ListImages": [ + { + "input": { + "repositoryName": "ubuntu" + }, + "output": { + "imageIds": [ + { + "imageDigest": "sha256:764f63476bdff6d83a09ba2a818f0d35757063724a9ac3ba5019c56f74ebf42a", + "imageTag": "precise" + } + ] + }, + "comments": { + }, + "description": "This example lists all of the images in the repository named ubuntu in the default registry in the current account. ", + "id": "listimages-example-1470868161594", + "title": "To list all images in a repository" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json b/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json new file mode 100644 index 0000000..0f56b32 --- /dev/null +++ b/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json @@ -0,0 +1,545 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-09-21", + "endpointPrefix": "ecr", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon ECR", + "serviceFullName": "Amazon EC2 Container Registry", + "signatureVersion": "v4", + "targetPrefix": "AmazonEC2ContainerRegistry_V20150921" + }, + "operations": { + "BatchCheckLayerAvailability": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "layerDigests" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "layerDigests": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "layers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "layerDigest": {}, + "layerAvailability": {}, + "layerSize": { + "type": "long" + } + } + } + }, + "failures": { + "type": "list", + "member": { + "type": "structure", + "members": { + "layerDigest": {}, + "failureCode": {}, + "failureReason": {} + } + } + } + } + } + }, + "BatchDeleteImage": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "imageIds" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageIds": { + "shape": "Sh" + } + } + }, + "output": { + "type": "structure", + "members": { + "imageIds": { + "shape": "Sh" + }, + "failures": { + "shape": "Sm" + } + } + } + }, + "BatchGetImage": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "imageIds" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageIds": { + "shape": "Sh" + } + } + }, + "output": { + "type": "structure", + "members": { + "images": { + "type": "list", + "member": { + "shape": "St" + } + }, + "failures": { + "shape": "Sm" + } + } + } + }, + "CompleteLayerUpload": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "uploadId", + "layerDigests" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "layerDigests": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "layerDigest": {} + } + } + }, + "CreateRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "repository": { + "shape": "S11" + } + } + } + }, + "DeleteRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "force": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "repository": { + "shape": "S11" + } + } + } + }, + "DeleteRepositoryPolicy": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {} + } + } + }, + "DescribeImages": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageIds": { + "shape": "Sh" + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "filter": { + "type": "structure", + "members": { + "tagStatus": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "imageDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "imageDigest": {}, + "imageTags": { + "type": "list", + "member": {} + }, + "imageSizeInBytes": { + "type": "long" + }, + "imagePushedAt": { + "type": "timestamp" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeRepositories": { + "input": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryNames": { + "type": "list", + "member": {} + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "repositories": { + "type": "list", + "member": { + "shape": "S11" + } + }, + "nextToken": {} + } + } + }, + "GetAuthorizationToken": { + "input": { + "type": "structure", + "members": { + "registryIds": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "authorizationData": { + "type": "list", + "member": { + "type": "structure", + "members": { + "authorizationToken": {}, + "expiresAt": { + "type": "timestamp" + }, + "proxyEndpoint": {} + } + } + } + } + } + }, + "GetDownloadUrlForLayer": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "layerDigest" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "layerDigest": {} + } + }, + "output": { + "type": "structure", + "members": { + "downloadUrl": {}, + "layerDigest": {} + } + } + }, + "GetRepositoryPolicy": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {} + } + } + }, + "InitiateLayerUpload": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "uploadId": {}, + "partSize": { + "type": "long" + } + } + } + }, + "ListImages": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "filter": { + "type": "structure", + "members": { + "tagStatus": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "imageIds": { + "shape": "Sh" + }, + "nextToken": {} + } + } + }, + "PutImage": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "imageManifest" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageManifest": {} + } + }, + "output": { + "type": "structure", + "members": { + "image": { + "shape": "St" + } + } + } + }, + "SetRepositoryPolicy": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "policyText" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {}, + "force": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {} + } + } + }, + "UploadLayerPart": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "uploadId", + "partFirstByte", + "partLastByte", + "layerPartBlob" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "partFirstByte": { + "type": "long" + }, + "partLastByte": { + "type": "long" + }, + "layerPartBlob": { + "type": "blob" + } + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "lastByteReceived": { + "type": "long" + } + } + } + } + }, + "shapes": { + "Sh": { + "type": "list", + "member": { + "shape": "Si" + } + }, + "Si": { + "type": "structure", + "members": { + "imageDigest": {}, + "imageTag": {} + } + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "members": { + "imageId": { + "shape": "Si" + }, + "failureCode": {}, + "failureReason": {} + } + } + }, + "St": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "imageId": { + "shape": "Si" + }, + "imageManifest": {} + } + }, + "S11": { + "type": "structure", + "members": { + "repositoryArn": {}, + "registryId": {}, + "repositoryName": {}, + "repositoryUri": {}, + "createdAt": { + "type": "timestamp" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json new file mode 100644 index 0000000..c14ba44 --- /dev/null +++ b/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json @@ -0,0 +1,883 @@ +{ + "version": "1.0", + "examples": { + "CreateCluster": [ + { + "input": { + "clusterName": "my_cluster" + }, + "output": { + "cluster": { + "activeServicesCount": 0, + "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/my_cluster", + "clusterName": "my_cluster", + "pendingTasksCount": 0, + "registeredContainerInstancesCount": 0, + "runningTasksCount": 0, + "status": "ACTIVE" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a cluster in your default region.", + "id": "to-create-a-new-cluster-1472514079365", + "title": "To create a new cluster" + } + ], + "CreateService": [ + { + "input": { + "desiredCount": 10, + "serviceName": "ecs-simple-service", + "taskDefinition": "hello_world" + }, + "output": { + "service": { + "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", + "createdAt": "2016-08-29T16:13:47.298Z", + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "deployments": [ + { + "createdAt": "2016-08-29T16:13:47.298Z", + "desiredCount": 10, + "id": "ecs-svc/9223370564342348388", + "pendingCount": 0, + "runningCount": 0, + "status": "PRIMARY", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", + "updatedAt": "2016-08-29T16:13:47.298Z" + }, + { + "createdAt": "2016-08-29T15:52:44.481Z", + "desiredCount": 0, + "id": "ecs-svc/9223370564343611322", + "pendingCount": 0, + "runningCount": 0, + "status": "ACTIVE", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", + "updatedAt": "2016-08-29T16:11:38.941Z" + } + ], + "desiredCount": 10, + "events": [ + + ], + "loadBalancers": [ + + ], + "pendingCount": 0, + "runningCount": 0, + "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service", + "serviceName": "ecs-simple-service", + "status": "ACTIVE", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a service in your default region called ``ecs-simple-service``. The service uses the ``hello_world`` task definition and it maintains 10 copies of that task.", + "id": "to-create-a-new-service-1472512584282", + "title": "To create a new service" + }, + { + "input": { + "desiredCount": 10, + "loadBalancers": [ + { + "containerName": "simple-app", + "containerPort": 80, + "loadBalancerName": "EC2Contai-EcsElast-15DCDAURT3ZO2" + } + ], + "role": "ecsServiceRole", + "serviceName": "ecs-simple-service-elb", + "taskDefinition": "console-sample-app-static" + }, + "output": { + "service": { + "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", + "createdAt": "2016-08-29T16:02:54.884Z", + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "deployments": [ + { + "createdAt": "2016-08-29T16:02:54.884Z", + "desiredCount": 10, + "id": "ecs-svc/9223370564343000923", + "pendingCount": 0, + "runningCount": 0, + "status": "PRIMARY", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/console-sample-app-static:6", + "updatedAt": "2016-08-29T16:02:54.884Z" + } + ], + "desiredCount": 10, + "events": [ + + ], + "loadBalancers": [ + { + "containerName": "simple-app", + "containerPort": 80, + "loadBalancerName": "EC2Contai-EcsElast-15DCDAURT3ZO2" + } + ], + "pendingCount": 0, + "roleArn": "arn:aws:iam::012345678910:role/ecsServiceRole", + "runningCount": 0, + "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service-elb", + "serviceName": "ecs-simple-service-elb", + "status": "ACTIVE", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/console-sample-app-static:6" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a service in your default region called ``ecs-simple-service-elb``. The service uses the ``ecs-demo`` task definition and it maintains 10 copies of that task. You must reference an existing load balancer in the same region by its name.", + "id": "to-create-a-new-service-behind-a-load-balancer-1472512484823", + "title": "To create a new service behind a load balancer" + } + ], + "DeleteCluster": [ + { + "input": { + "cluster": "my_cluster" + }, + "output": { + "cluster": { + "activeServicesCount": 0, + "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/my_cluster", + "clusterName": "my_cluster", + "pendingTasksCount": 0, + "registeredContainerInstancesCount": 0, + "runningTasksCount": 0, + "status": "INACTIVE" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes an empty cluster in your default region.", + "id": "to-delete-an-empty-cluster-1472512705352", + "title": "To delete an empty cluster" + } + ], + "DeleteService": [ + { + "input": { + "service": "my-http-service" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the my-http-service service. The service must have a desired count and running count of 0 before you can delete it.", + "id": "e8183e38-f86e-4390-b811-f74f30a6007d", + "title": "To delete a service" + } + ], + "DeregisterContainerInstance": [ + { + "input": { + "cluster": "default", + "containerInstance": "container_instance_UUID", + "force": true + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deregisters a container instance from the specified cluster in your default region. If there are still tasks running on the container instance, you must either stop those tasks before deregistering, or use the force option.", + "id": "bf624927-cf64-4f4b-8b7e-c024a4e682f6", + "title": "To deregister a container instance from a cluster" + } + ], + "DescribeClusters": [ + { + "input": { + "clusters": [ + "default" + ] + }, + "output": { + "clusters": [ + { + "clusterArn": "arn:aws:ecs:us-east-1:aws_account_id:cluster/default", + "clusterName": "default", + "status": "ACTIVE" + } + ], + "failures": [ + + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example provides a description of the specified cluster in your default region.", + "id": "ba88d100-9672-4231-80da-a4bd210bf728", + "title": "To describe a cluster" + } + ], + "DescribeContainerInstances": [ + { + "input": { + "cluster": "default", + "containerInstances": [ + "f2756532-8f13-4d53-87c9-aed50dc94cd7" + ] + }, + "output": { + "containerInstances": [ + { + "agentConnected": true, + "containerInstanceArn": "arn:aws:ecs:us-east-1:012345678910:container-instance/f2756532-8f13-4d53-87c9-aed50dc94cd7", + "ec2InstanceId": "i-807f3249", + "pendingTasksCount": 0, + "registeredResources": [ + { + "name": "CPU", + "type": "INTEGER", + "doubleValue": 0.0, + "integerValue": 2048, + "longValue": 0 + }, + { + "name": "MEMORY", + "type": "INTEGER", + "doubleValue": 0.0, + "integerValue": 3768, + "longValue": 0 + }, + { + "name": "PORTS", + "type": "STRINGSET", + "doubleValue": 0.0, + "integerValue": 0, + "longValue": 0, + "stringSetValue": [ + "2376", + "22", + "51678", + "2375" + ] + } + ], + "remainingResources": [ + { + "name": "CPU", + "type": "INTEGER", + "doubleValue": 0.0, + "integerValue": 1948, + "longValue": 0 + }, + { + "name": "MEMORY", + "type": "INTEGER", + "doubleValue": 0.0, + "integerValue": 3668, + "longValue": 0 + }, + { + "name": "PORTS", + "type": "STRINGSET", + "doubleValue": 0.0, + "integerValue": 0, + "longValue": 0, + "stringSetValue": [ + "2376", + "22", + "80", + "51678", + "2375" + ] + } + ], + "runningTasksCount": 1, + "status": "ACTIVE" + } + ], + "failures": [ + + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example provides a description of the specified container instance in your default region, using the container instance UUID as an identifier.", + "id": "c8f439de-eb27-4269-8ca7-2c0a7ba75ab0", + "title": "To describe container instance" + } + ], + "DescribeServices": [ + { + "input": { + "services": [ + "ecs-simple-service" + ] + }, + "output": { + "failures": [ + + ], + "services": [ + { + "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", + "createdAt": "2016-08-29T16:25:52.130Z", + "deploymentConfiguration": { + "maximumPercent": 200, + "minimumHealthyPercent": 100 + }, + "deployments": [ + { + "createdAt": "2016-08-29T16:25:52.130Z", + "desiredCount": 1, + "id": "ecs-svc/9223370564341623665", + "pendingCount": 0, + "runningCount": 0, + "status": "PRIMARY", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", + "updatedAt": "2016-08-29T16:25:52.130Z" + } + ], + "desiredCount": 1, + "events": [ + { + "createdAt": "2016-08-29T16:25:58.520Z", + "id": "38c285e5-d335-4b68-8b15-e46dedc8e88d", + "message": "(service ecs-simple-service) was unable to place a task because no container instance met all of its requirements. The closest matching (container-instance 3f4de1c5-ffdd-4954-af7e-75b4be0c8841) is already using a port required by your task. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide." + } + ], + "loadBalancers": [ + + ], + "pendingCount": 0, + "runningCount": 0, + "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service", + "serviceName": "ecs-simple-service", + "status": "ACTIVE", + "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6" + } + ] + }, + "comments": { + "input": { + }, + "output": { + "services[0].events[0].message": "In this example, there is a service event that shows unavailable cluster resources." + } + }, + "description": "This example provides descriptive information about the service named ``ecs-simple-service``.", + "id": "to-describe-a-service-1472513256350", + "title": "To describe a service" + } + ], + "DescribeTaskDefinition": [ + { + "input": { + "taskDefinition": "hello_world:8" + }, + "output": { + "taskDefinition": { + "containerDefinitions": [ + { + "name": "wordpress", + "cpu": 10, + "environment": [ + + ], + "essential": true, + "image": "wordpress", + "links": [ + "mysql" + ], + "memory": 500, + "mountPoints": [ + + ], + "portMappings": [ + { + "containerPort": 80, + "hostPort": 80 + } + ], + "volumesFrom": [ + + ] + }, + { + "name": "mysql", + "cpu": 10, + "environment": [ + { + "name": "MYSQL_ROOT_PASSWORD", + "value": "password" + } + ], + "essential": true, + "image": "mysql", + "memory": 500, + "mountPoints": [ + + ], + "portMappings": [ + + ], + "volumesFrom": [ + + ] + } + ], + "family": "hello_world", + "revision": 8, + "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/hello_world:8", + "volumes": [ + + ] + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example provides a description of the specified task definition.", + "id": "4c21eeb1-f1da-4a08-8c44-297fc8d0ea88", + "title": "To describe a task definition" + } + ], + "DescribeTasks": [ + { + "input": { + "tasks": [ + "c5cba4eb-5dad-405e-96db-71ef8eefe6a8" + ] + }, + "output": { + "failures": [ + + ], + "tasks": [ + { + "clusterArn": "arn:aws:ecs:::cluster/default", + "containerInstanceArn": "arn:aws:ecs:::container-instance/18f9eda5-27d7-4c19-b133-45adc516e8fb", + "containers": [ + { + "name": "ecs-demo", + "containerArn": "arn:aws:ecs:::container/7c01765b-c588-45b3-8290-4ba38bd6c5a6", + "lastStatus": "RUNNING", + "networkBindings": [ + { + "bindIP": "0.0.0.0", + "containerPort": 80, + "hostPort": 80 + } + ], + "taskArn": "arn:aws:ecs:::task/c5cba4eb-5dad-405e-96db-71ef8eefe6a8" + } + ], + "desiredStatus": "RUNNING", + "lastStatus": "RUNNING", + "overrides": { + "containerOverrides": [ + { + "name": "ecs-demo" + } + ] + }, + "startedBy": "ecs-svc/9223370608528463088", + "taskArn": "arn:aws:ecs:::task/c5cba4eb-5dad-405e-96db-71ef8eefe6a8", + "taskDefinitionArn": "arn:aws:ecs:::task-definition/amazon-ecs-sample:1" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example provides a description of the specified task, using the task UUID as an identifier.", + "id": "a90b0cde-f965-4946-b55e-cfd8cc54e827", + "title": "To describe a task" + } + ], + "ListClusters": [ + { + "input": { + }, + "output": { + "clusterArns": [ + "arn:aws:ecs:us-east-1::cluster/test", + "arn:aws:ecs:us-east-1::cluster/default" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists all of your available clusters in your default region.", + "id": "e337d059-134f-4125-ba8e-4f499139facf", + "title": "To list your available clusters" + } + ], + "ListContainerInstances": [ + { + "input": { + "cluster": "default" + }, + "output": { + "containerInstanceArns": [ + "arn:aws:ecs:us-east-1::container-instance/f6bbb147-5370-4ace-8c73-c7181ded911f", + "arn:aws:ecs:us-east-1::container-instance/ffe3d344-77e2-476c-a4d0-bf560ad50acb" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists all of your available container instances in the specified cluster in your default region.", + "id": "62a82a94-713c-4e18-8420-1d2b2ba9d484", + "title": "To list your available container instances in a cluster" + } + ], + "ListServices": [ + { + "input": { + }, + "output": { + "serviceArns": [ + "arn:aws:ecs:us-east-1:012345678910:service/my-http-service" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists the services running in the default cluster for an account.", + "id": "1d9a8037-4e0e-4234-a528-609656809a3a", + "title": "To list the services in a cluster" + } + ], + "ListTaskDefinitionFamilies": [ + { + "input": { + }, + "output": { + "families": [ + "node-js-app", + "web-timer", + "hpcc", + "hpcc-c4-8xlarge" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists all of your registered task definition families.", + "id": "b5c89769-1d94-4ca2-a79e-8069103c7f75", + "title": "To list your registered task definition families" + }, + { + "input": { + "familyPrefix": "hpcc" + }, + "output": { + "families": [ + "hpcc", + "hpcc-c4-8xlarge" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists the task definition revisions that start with \"hpcc\".", + "id": "8a4cf9a6-42c1-4fe3-852d-99ac8968e11b", + "title": "To filter your registered task definition families" + } + ], + "ListTaskDefinitions": [ + { + "input": { + }, + "output": { + "taskDefinitionArns": [ + "arn:aws:ecs:us-east-1::task-definition/sleep300:2", + "arn:aws:ecs:us-east-1::task-definition/sleep360:1", + "arn:aws:ecs:us-east-1::task-definition/wordpress:3", + "arn:aws:ecs:us-east-1::task-definition/wordpress:4", + "arn:aws:ecs:us-east-1::task-definition/wordpress:5", + "arn:aws:ecs:us-east-1::task-definition/wordpress:6" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists all of your registered task definitions.", + "id": "b381ebaf-7eba-4d60-b99b-7f6ae49d3d60", + "title": "To list your registered task definitions" + }, + { + "input": { + "familyPrefix": "wordpress" + }, + "output": { + "taskDefinitionArns": [ + "arn:aws:ecs:us-east-1::task-definition/wordpress:3", + "arn:aws:ecs:us-east-1::task-definition/wordpress:4", + "arn:aws:ecs:us-east-1::task-definition/wordpress:5", + "arn:aws:ecs:us-east-1::task-definition/wordpress:6" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists the task definition revisions of a specified family.", + "id": "734e7afd-753a-4bc2-85d0-badddce10910", + "title": "To list the registered task definitions in a family" + } + ], + "ListTasks": [ + { + "input": { + "cluster": "default" + }, + "output": { + "taskArns": [ + "arn:aws:ecs:us-east-1:012345678910:task/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84", + "arn:aws:ecs:us-east-1:012345678910:task/6b809ef6-c67e-4467-921f-ee261c15a0a1" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists all of the tasks in a cluster.", + "id": "9a6ec707-1a77-45d0-b2eb-516b5dd9e924", + "title": "To list the tasks in a cluster" + }, + { + "input": { + "cluster": "default", + "containerInstance": "f6bbb147-5370-4ace-8c73-c7181ded911f" + }, + "output": { + "taskArns": [ + "arn:aws:ecs:us-east-1:012345678910:task/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists the tasks of a specified container instance. Specifying a ``containerInstance`` value limits the results to tasks that belong to that container instance.", + "id": "024bf3b7-9cbb-44e3-848f-9d074e1fecce", + "title": "To list the tasks on a particular container instance" + } + ], + "RegisterTaskDefinition": [ + { + "input": { + "containerDefinitions": [ + { + "name": "sleep", + "command": [ + "sleep", + "360" + ], + "cpu": 10, + "essential": true, + "image": "busybox", + "memory": 10 + } + ], + "family": "sleep360", + "taskRoleArn": "", + "volumes": [ + + ] + }, + "output": { + "taskDefinition": { + "containerDefinitions": [ + { + "name": "sleep", + "command": [ + "sleep", + "360" + ], + "cpu": 10, + "environment": [ + + ], + "essential": true, + "image": "busybox", + "memory": 10, + "mountPoints": [ + + ], + "portMappings": [ + + ], + "volumesFrom": [ + + ] + } + ], + "family": "sleep360", + "revision": 1, + "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/sleep360:19", + "volumes": [ + + ] + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example registers a task definition to the specified family.", + "id": "to-register-a-task-definition-1470764550877", + "title": "To register a task definition" + } + ], + "RunTask": [ + { + "input": { + "cluster": "default", + "taskDefinition": "sleep360:1" + }, + "output": { + "tasks": [ + { + "containerInstanceArn": "arn:aws:ecs:us-east-1::container-instance/ffe3d344-77e2-476c-a4d0-bf560ad50acb", + "containers": [ + { + "name": "sleep", + "containerArn": "arn:aws:ecs:us-east-1::container/58591c8e-be29-4ddf-95aa-ee459d4c59fd", + "lastStatus": "PENDING", + "taskArn": "arn:aws:ecs:us-east-1::task/a9f21ea7-c9f5-44b1-b8e6-b31f50ed33c0" + } + ], + "desiredStatus": "RUNNING", + "lastStatus": "PENDING", + "overrides": { + "containerOverrides": [ + { + "name": "sleep" + } + ] + }, + "taskArn": "arn:aws:ecs:us-east-1::task/a9f21ea7-c9f5-44b1-b8e6-b31f50ed33c0", + "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/sleep360:1" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example runs the specified task definition on your default cluster.", + "id": "6f238c83-a133-42cd-ab3d-abeca0560445", + "title": "To run a task on your default cluster" + } + ], + "UpdateService": [ + { + "input": { + "service": "my-http-service", + "taskDefinition": "amazon-ecs-sample" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example updates the my-http-service service to use the amazon-ecs-sample task definition.", + "id": "cc9e8900-0cc2-44d2-8491-64d1d3d37887", + "title": "To change the task definition used in a service" + }, + { + "input": { + "desiredCount": 10, + "service": "my-http-service" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example updates the desired count of the my-http-service service to 10.", + "id": "9581d6c5-02e3-4140-8cc1-5a4301586633", + "title": "To change the number of tasks in a service" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json new file mode 100644 index 0000000..2cc784e --- /dev/null +++ b/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json @@ -0,0 +1,1135 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-13", + "endpointPrefix": "ecs", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon ECS", + "serviceFullName": "Amazon EC2 Container Service", + "signatureVersion": "v4", + "targetPrefix": "AmazonEC2ContainerServiceV20141113" + }, + "operations": { + "CreateCluster": { + "input": { + "type": "structure", + "members": { + "clusterName": {} + } + }, + "output": { + "type": "structure", + "members": { + "cluster": { + "shape": "S4" + } + } + } + }, + "CreateService": { + "input": { + "type": "structure", + "required": [ + "serviceName", + "taskDefinition", + "desiredCount" + ], + "members": { + "cluster": {}, + "serviceName": {}, + "taskDefinition": {}, + "loadBalancers": { + "shape": "S7" + }, + "desiredCount": { + "type": "integer" + }, + "clientToken": {}, + "role": {}, + "deploymentConfiguration": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "service": { + "shape": "Sc" + } + } + } + }, + "DeleteCluster": { + "input": { + "type": "structure", + "required": [ + "cluster" + ], + "members": { + "cluster": {} + } + }, + "output": { + "type": "structure", + "members": { + "cluster": { + "shape": "S4" + } + } + } + }, + "DeleteService": { + "input": { + "type": "structure", + "required": [ + "service" + ], + "members": { + "cluster": {}, + "service": {} + } + }, + "output": { + "type": "structure", + "members": { + "service": { + "shape": "Sc" + } + } + } + }, + "DeregisterContainerInstance": { + "input": { + "type": "structure", + "required": [ + "containerInstance" + ], + "members": { + "cluster": {}, + "containerInstance": {}, + "force": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstance": { + "shape": "Sp" + } + } + } + }, + "DeregisterTaskDefinition": { + "input": { + "type": "structure", + "required": [ + "taskDefinition" + ], + "members": { + "taskDefinition": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinition": { + "shape": "S12" + } + } + } + }, + "DescribeClusters": { + "input": { + "type": "structure", + "members": { + "clusters": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "clusters": { + "type": "list", + "member": { + "shape": "S4" + } + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DescribeContainerInstances": { + "input": { + "type": "structure", + "required": [ + "containerInstances" + ], + "members": { + "cluster": {}, + "containerInstances": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstances": { + "type": "list", + "member": { + "shape": "Sp" + } + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DescribeServices": { + "input": { + "type": "structure", + "required": [ + "services" + ], + "members": { + "cluster": {}, + "services": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "services": { + "type": "list", + "member": { + "shape": "Sc" + } + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DescribeTaskDefinition": { + "input": { + "type": "structure", + "required": [ + "taskDefinition" + ], + "members": { + "taskDefinition": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinition": { + "shape": "S12" + } + } + } + }, + "DescribeTasks": { + "input": { + "type": "structure", + "required": [ + "tasks" + ], + "members": { + "cluster": {}, + "tasks": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "tasks": { + "shape": "S28" + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DiscoverPollEndpoint": { + "input": { + "type": "structure", + "members": { + "containerInstance": {}, + "cluster": {} + } + }, + "output": { + "type": "structure", + "members": { + "endpoint": {}, + "telemetryEndpoint": {} + } + } + }, + "ListClusters": { + "input": { + "type": "structure", + "members": { + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "clusterArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListContainerInstances": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstanceArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListServices": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "serviceArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListTaskDefinitionFamilies": { + "input": { + "type": "structure", + "members": { + "familyPrefix": {}, + "status": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "families": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListTaskDefinitions": { + "input": { + "type": "structure", + "members": { + "familyPrefix": {}, + "status": {}, + "sort": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinitionArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListTasks": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "containerInstance": {}, + "family": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "startedBy": {}, + "serviceName": {}, + "desiredStatus": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "RegisterContainerInstance": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "instanceIdentityDocument": {}, + "instanceIdentityDocumentSignature": {}, + "totalResources": { + "shape": "Sr" + }, + "versionInfo": { + "shape": "Sq" + }, + "containerInstanceArn": {}, + "attributes": { + "shape": "Sy" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstance": { + "shape": "Sp" + } + } + } + }, + "RegisterTaskDefinition": { + "input": { + "type": "structure", + "required": [ + "family", + "containerDefinitions" + ], + "members": { + "family": {}, + "taskRoleArn": {}, + "networkMode": {}, + "containerDefinitions": { + "shape": "S13" + }, + "volumes": { + "shape": "S1o" + } + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinition": { + "shape": "S12" + } + } + } + }, + "RunTask": { + "input": { + "type": "structure", + "required": [ + "taskDefinition" + ], + "members": { + "cluster": {}, + "taskDefinition": {}, + "overrides": { + "shape": "S2a" + }, + "count": { + "type": "integer" + }, + "startedBy": {} + } + }, + "output": { + "type": "structure", + "members": { + "tasks": { + "shape": "S28" + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "StartTask": { + "input": { + "type": "structure", + "required": [ + "taskDefinition", + "containerInstances" + ], + "members": { + "cluster": {}, + "taskDefinition": {}, + "overrides": { + "shape": "S2a" + }, + "containerInstances": { + "shape": "Sv" + }, + "startedBy": {} + } + }, + "output": { + "type": "structure", + "members": { + "tasks": { + "shape": "S28" + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "StopTask": { + "input": { + "type": "structure", + "required": [ + "task" + ], + "members": { + "cluster": {}, + "task": {}, + "reason": {} + } + }, + "output": { + "type": "structure", + "members": { + "task": { + "shape": "S29" + } + } + } + }, + "SubmitContainerStateChange": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "task": {}, + "containerName": {}, + "status": {}, + "exitCode": { + "type": "integer" + }, + "reason": {}, + "networkBindings": { + "shape": "S2f" + } + } + }, + "output": { + "type": "structure", + "members": { + "acknowledgment": {} + } + } + }, + "SubmitTaskStateChange": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "task": {}, + "status": {}, + "reason": {} + } + }, + "output": { + "type": "structure", + "members": { + "acknowledgment": {} + } + } + }, + "UpdateContainerAgent": { + "input": { + "type": "structure", + "required": [ + "containerInstance" + ], + "members": { + "cluster": {}, + "containerInstance": {} + } + }, + "output": { + "type": "structure", + "members": { + "containerInstance": { + "shape": "Sp" + } + } + } + }, + "UpdateService": { + "input": { + "type": "structure", + "required": [ + "service" + ], + "members": { + "cluster": {}, + "service": {}, + "desiredCount": { + "type": "integer" + }, + "taskDefinition": {}, + "deploymentConfiguration": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "service": { + "shape": "Sc" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "clusterArn": {}, + "clusterName": {}, + "status": {}, + "registeredContainerInstancesCount": { + "type": "integer" + }, + "runningTasksCount": { + "type": "integer" + }, + "pendingTasksCount": { + "type": "integer" + }, + "activeServicesCount": { + "type": "integer" + } + } + }, + "S7": { + "type": "list", + "member": { + "type": "structure", + "members": { + "targetGroupArn": {}, + "loadBalancerName": {}, + "containerName": {}, + "containerPort": { + "type": "integer" + } + } + } + }, + "Sa": { + "type": "structure", + "members": { + "maximumPercent": { + "type": "integer" + }, + "minimumHealthyPercent": { + "type": "integer" + } + } + }, + "Sc": { + "type": "structure", + "members": { + "serviceArn": {}, + "serviceName": {}, + "clusterArn": {}, + "loadBalancers": { + "shape": "S7" + }, + "status": {}, + "desiredCount": { + "type": "integer" + }, + "runningCount": { + "type": "integer" + }, + "pendingCount": { + "type": "integer" + }, + "taskDefinition": {}, + "deploymentConfiguration": { + "shape": "Sa" + }, + "deployments": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "status": {}, + "taskDefinition": {}, + "desiredCount": { + "type": "integer" + }, + "pendingCount": { + "type": "integer" + }, + "runningCount": { + "type": "integer" + }, + "createdAt": { + "type": "timestamp" + }, + "updatedAt": { + "type": "timestamp" + } + } + } + }, + "roleArn": {}, + "events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "createdAt": { + "type": "timestamp" + }, + "message": {} + } + } + }, + "createdAt": { + "type": "timestamp" + } + } + }, + "Sp": { + "type": "structure", + "members": { + "containerInstanceArn": {}, + "ec2InstanceId": {}, + "versionInfo": { + "shape": "Sq" + }, + "remainingResources": { + "shape": "Sr" + }, + "registeredResources": { + "shape": "Sr" + }, + "status": {}, + "agentConnected": { + "type": "boolean" + }, + "runningTasksCount": { + "type": "integer" + }, + "pendingTasksCount": { + "type": "integer" + }, + "agentUpdateStatus": {}, + "attributes": { + "shape": "Sy" + } + } + }, + "Sq": { + "type": "structure", + "members": { + "agentVersion": {}, + "agentHash": {}, + "dockerVersion": {} + } + }, + "Sr": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "type": {}, + "doubleValue": { + "type": "double" + }, + "longValue": { + "type": "long" + }, + "integerValue": { + "type": "integer" + }, + "stringSetValue": { + "shape": "Sv" + } + } + } + }, + "Sv": { + "type": "list", + "member": {} + }, + "Sy": { + "type": "list", + "member": { + "shape": "Sz" + } + }, + "Sz": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {}, + "value": {} + } + }, + "S12": { + "type": "structure", + "members": { + "taskDefinitionArn": {}, + "containerDefinitions": { + "shape": "S13" + }, + "family": {}, + "taskRoleArn": {}, + "networkMode": {}, + "revision": { + "type": "integer" + }, + "volumes": { + "shape": "S1o" + }, + "status": {}, + "requiresAttributes": { + "type": "list", + "member": { + "shape": "Sz" + } + } + } + }, + "S13": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "image": {}, + "cpu": { + "type": "integer" + }, + "memory": { + "type": "integer" + }, + "memoryReservation": { + "type": "integer" + }, + "links": { + "shape": "Sv" + }, + "portMappings": { + "type": "list", + "member": { + "type": "structure", + "members": { + "containerPort": { + "type": "integer" + }, + "hostPort": { + "type": "integer" + }, + "protocol": {} + } + } + }, + "essential": { + "type": "boolean" + }, + "entryPoint": { + "shape": "Sv" + }, + "command": { + "shape": "Sv" + }, + "environment": { + "shape": "S18" + }, + "mountPoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "sourceVolume": {}, + "containerPath": {}, + "readOnly": { + "type": "boolean" + } + } + } + }, + "volumesFrom": { + "type": "list", + "member": { + "type": "structure", + "members": { + "sourceContainer": {}, + "readOnly": { + "type": "boolean" + } + } + } + }, + "hostname": {}, + "user": {}, + "workingDirectory": {}, + "disableNetworking": { + "type": "boolean" + }, + "privileged": { + "type": "boolean" + }, + "readonlyRootFilesystem": { + "type": "boolean" + }, + "dnsServers": { + "shape": "Sv" + }, + "dnsSearchDomains": { + "shape": "Sv" + }, + "extraHosts": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "hostname", + "ipAddress" + ], + "members": { + "hostname": {}, + "ipAddress": {} + } + } + }, + "dockerSecurityOptions": { + "shape": "Sv" + }, + "dockerLabels": { + "type": "map", + "key": {}, + "value": {} + }, + "ulimits": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "softLimit", + "hardLimit" + ], + "members": { + "name": {}, + "softLimit": { + "type": "integer" + }, + "hardLimit": { + "type": "integer" + } + } + } + }, + "logConfiguration": { + "type": "structure", + "required": [ + "logDriver" + ], + "members": { + "logDriver": {}, + "options": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + }, + "S18": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "value": {} + } + } + }, + "S1o": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "host": { + "type": "structure", + "members": { + "sourcePath": {} + } + } + } + } + }, + "S1w": { + "type": "list", + "member": { + "type": "structure", + "members": { + "arn": {}, + "reason": {} + } + } + }, + "S28": { + "type": "list", + "member": { + "shape": "S29" + } + }, + "S29": { + "type": "structure", + "members": { + "taskArn": {}, + "clusterArn": {}, + "taskDefinitionArn": {}, + "containerInstanceArn": {}, + "overrides": { + "shape": "S2a" + }, + "lastStatus": {}, + "desiredStatus": {}, + "containers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "containerArn": {}, + "taskArn": {}, + "name": {}, + "lastStatus": {}, + "exitCode": { + "type": "integer" + }, + "reason": {}, + "networkBindings": { + "shape": "S2f" + } + } + } + }, + "startedBy": {}, + "stoppedReason": {}, + "createdAt": { + "type": "timestamp" + }, + "startedAt": { + "type": "timestamp" + }, + "stoppedAt": { + "type": "timestamp" + } + } + }, + "S2a": { + "type": "structure", + "members": { + "containerOverrides": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "command": { + "shape": "Sv" + }, + "environment": { + "shape": "S18" + } + } + } + }, + "taskRoleArn": {} + } + }, + "S2f": { + "type": "list", + "member": { + "type": "structure", + "members": { + "bindIP": {}, + "containerPort": { + "type": "integer" + }, + "hostPort": { + "type": "integer" + }, + "protocol": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json new file mode 100644 index 0000000..081a2df --- /dev/null +++ b/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json @@ -0,0 +1,40 @@ +{ + "pagination": { + "ListClusters": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "clusterArns" + }, + "ListContainerInstances": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "containerInstanceArns" + }, + "ListTaskDefinitions": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "taskDefinitionArns" + }, + "ListTaskDefinitionFamilies": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "families" + }, + "ListTasks": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "taskArns" + }, + "ListServices": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "serviceArns" + } + } +} diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json new file mode 100644 index 0000000..8a0b19d --- /dev/null +++ b/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json @@ -0,0 +1,93 @@ +{ + "version": 2, + "waiters": { + "TasksRunning": { + "delay": 6, + "operation": "DescribeTasks", + "maxAttempts": 100, + "acceptors": [ + { + "expected": "STOPPED", + "matcher": "pathAny", + "state": "failure", + "argument": "tasks[].lastStatus" + }, + { + "expected": "MISSING", + "matcher": "pathAny", + "state": "failure", + "argument": "failures[].reason" + }, + { + "expected": "RUNNING", + "matcher": "pathAll", + "state": "success", + "argument": "tasks[].lastStatus" + } + ] + }, + "TasksStopped": { + "delay": 6, + "operation": "DescribeTasks", + "maxAttempts": 100, + "acceptors": [ + { + "expected": "STOPPED", + "matcher": "pathAll", + "state": "success", + "argument": "tasks[].lastStatus" + } + ] + }, + "ServicesStable": { + "delay": 15, + "operation": "DescribeServices", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "MISSING", + "matcher": "pathAny", + "state": "failure", + "argument": "failures[].reason" + }, + { + "expected": "DRAINING", + "matcher": "pathAny", + "state": "failure", + "argument": "services[].status" + }, + { + "expected": "INACTIVE", + "matcher": "pathAny", + "state": "failure", + "argument": "services[].status" + }, + { + "expected": true, + "matcher": "path", + "state": "success", + "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" + } + ] + }, + "ServicesInactive": { + "delay": 15, + "operation": "DescribeServices", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "MISSING", + "matcher": "pathAny", + "state": "failure", + "argument": "failures[].reason" + }, + { + "expected": "INACTIVE", + "matcher": "pathAny", + "state": "success", + "argument": "services[].status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json b/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json new file mode 100644 index 0000000..d973bb8 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json @@ -0,0 +1,1567 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-02-02", + "endpointPrefix": "elasticache", + "protocol": "query", + "serviceFullName": "Amazon ElastiCache", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/" + }, + "operations": { + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S3" + } + } + }, + "output": { + "shape": "S5", + "resultWrapper": "AddTagsToResourceResult" + } + }, + "AuthorizeCacheSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName", + "EC2SecurityGroupName", + "EC2SecurityGroupOwnerId" + ], + "members": { + "CacheSecurityGroupName": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult", + "type": "structure", + "members": { + "CacheSecurityGroup": { + "shape": "S8" + } + } + } + }, + "CopySnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceSnapshotName", + "TargetSnapshotName" + ], + "members": { + "SourceSnapshotName": {}, + "TargetSnapshotName": {}, + "TargetBucket": {} + } + }, + "output": { + "resultWrapper": "CopySnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CreateCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId" + ], + "members": { + "CacheClusterId": {}, + "ReplicationGroupId": {}, + "AZMode": {}, + "PreferredAvailabilityZone": {}, + "PreferredAvailabilityZones": { + "shape": "So" + }, + "NumCacheNodes": { + "type": "integer" + }, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupName": {}, + "CacheSubnetGroupName": {}, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "Tags": { + "shape": "S3" + }, + "SnapshotArns": { + "shape": "Sr" + }, + "SnapshotName": {}, + "PreferredMaintenanceWindow": {}, + "Port": { + "type": "integer" + }, + "NotificationTopicArn": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + } + }, + "output": { + "resultWrapper": "CreateCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "CreateCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName", + "CacheParameterGroupFamily", + "Description" + ], + "members": { + "CacheParameterGroupName": {}, + "CacheParameterGroupFamily": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateCacheParameterGroupResult", + "type": "structure", + "members": { + "CacheParameterGroup": { + "shape": "S19" + } + } + } + }, + "CreateCacheSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName", + "Description" + ], + "members": { + "CacheSecurityGroupName": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateCacheSecurityGroupResult", + "type": "structure", + "members": { + "CacheSecurityGroup": { + "shape": "S8" + } + } + } + }, + "CreateCacheSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSubnetGroupName", + "CacheSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "CacheSubnetGroupName": {}, + "CacheSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1d" + } + } + }, + "output": { + "resultWrapper": "CreateCacheSubnetGroupResult", + "type": "structure", + "members": { + "CacheSubnetGroup": { + "shape": "S1f" + } + } + } + }, + "CreateReplicationGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationGroupId", + "ReplicationGroupDescription" + ], + "members": { + "ReplicationGroupId": {}, + "ReplicationGroupDescription": {}, + "PrimaryClusterId": {}, + "AutomaticFailoverEnabled": { + "type": "boolean" + }, + "NumCacheClusters": { + "type": "integer" + }, + "PreferredCacheClusterAZs": { + "shape": "Sl" + }, + "NumNodeGroups": { + "type": "integer" + }, + "ReplicasPerNodeGroup": { + "type": "integer" + }, + "NodeGroupConfiguration": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "NodeGroupConfiguration" + } + }, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupName": {}, + "CacheSubnetGroupName": {}, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "Tags": { + "shape": "S3" + }, + "SnapshotArns": { + "shape": "Sr" + }, + "SnapshotName": {}, + "PreferredMaintenanceWindow": {}, + "Port": { + "type": "integer" + }, + "NotificationTopicArn": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + } + }, + "output": { + "resultWrapper": "CreateReplicationGroupResult", + "type": "structure", + "members": { + "ReplicationGroup": { + "shape": "S1m" + } + } + } + }, + "CreateSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotName" + ], + "members": { + "ReplicationGroupId": {}, + "CacheClusterId": {}, + "SnapshotName": {} + } + }, + "output": { + "resultWrapper": "CreateSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "DeleteCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId" + ], + "members": { + "CacheClusterId": {}, + "FinalSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "DeleteCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName" + ], + "members": { + "CacheParameterGroupName": {} + } + } + }, + "DeleteCacheSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName" + ], + "members": { + "CacheSecurityGroupName": {} + } + } + }, + "DeleteCacheSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSubnetGroupName" + ], + "members": { + "CacheSubnetGroupName": {} + } + } + }, + "DeleteReplicationGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationGroupId" + ], + "members": { + "ReplicationGroupId": {}, + "RetainPrimaryCluster": { + "type": "boolean" + }, + "FinalSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteReplicationGroupResult", + "type": "structure", + "members": { + "ReplicationGroup": { + "shape": "S1m" + } + } + } + }, + "DeleteSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotName" + ], + "members": { + "SnapshotName": {} + } + }, + "output": { + "resultWrapper": "DeleteSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "DescribeCacheClusters": { + "input": { + "type": "structure", + "members": { + "CacheClusterId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "ShowCacheNodeInfo": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeCacheClustersResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheClusters": { + "type": "list", + "member": { + "shape": "Su", + "locationName": "CacheCluster" + } + } + } + } + }, + "DescribeCacheEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeCacheEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheEngineVersions": { + "type": "list", + "member": { + "locationName": "CacheEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupFamily": {}, + "CacheEngineDescription": {}, + "CacheEngineVersionDescription": {} + } + } + } + } + } + }, + "DescribeCacheParameterGroups": { + "input": { + "type": "structure", + "members": { + "CacheParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheParameterGroups": { + "type": "list", + "member": { + "shape": "S19", + "locationName": "CacheParameterGroup" + } + } + } + } + }, + "DescribeCacheParameters": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName" + ], + "members": { + "CacheParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheParametersResult", + "type": "structure", + "members": { + "Marker": {}, + "Parameters": { + "shape": "S2h" + }, + "CacheNodeTypeSpecificParameters": { + "shape": "S2k" + } + } + } + }, + "DescribeCacheSecurityGroups": { + "input": { + "type": "structure", + "members": { + "CacheSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheSecurityGroups": { + "type": "list", + "member": { + "shape": "S8", + "locationName": "CacheSecurityGroup" + } + } + } + } + }, + "DescribeCacheSubnetGroups": { + "input": { + "type": "structure", + "members": { + "CacheSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheSubnetGroups": { + "type": "list", + "member": { + "shape": "S1f", + "locationName": "CacheSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupFamily" + ], + "members": { + "CacheParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "CacheParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2h" + }, + "CacheNodeTypeSpecificParameters": { + "shape": "S2k" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeReplicationGroups": { + "input": { + "type": "structure", + "members": { + "ReplicationGroupId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReplicationGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReplicationGroups": { + "type": "list", + "member": { + "shape": "S1m", + "locationName": "ReplicationGroup" + } + } + } + } + }, + "DescribeReservedCacheNodes": { + "input": { + "type": "structure", + "members": { + "ReservedCacheNodeId": {}, + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedCacheNodesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedCacheNodes": { + "type": "list", + "member": { + "shape": "S38", + "locationName": "ReservedCacheNode" + } + } + } + } + }, + "DescribeReservedCacheNodesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedCacheNodesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedCacheNodesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedCacheNodesOffering", + "type": "structure", + "members": { + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "ProductDescription": {}, + "OfferingType": {}, + "RecurringCharges": { + "shape": "S3a" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeSnapshots": { + "input": { + "type": "structure", + "members": { + "ReplicationGroupId": {}, + "CacheClusterId": {}, + "SnapshotName": {}, + "SnapshotSource": {}, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "ShowNodeGroupConfig": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "Snapshots": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "Snapshot" + } + } + } + } + }, + "ListAllowedNodeTypeModifications": { + "input": { + "type": "structure", + "members": { + "CacheClusterId": {}, + "ReplicationGroupId": {} + } + }, + "output": { + "resultWrapper": "ListAllowedNodeTypeModificationsResult", + "type": "structure", + "members": { + "ScaleUpModifications": { + "type": "list", + "member": {} + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {} + } + }, + "output": { + "shape": "S5", + "resultWrapper": "ListTagsForResourceResult" + } + }, + "ModifyCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId" + ], + "members": { + "CacheClusterId": {}, + "NumCacheNodes": { + "type": "integer" + }, + "CacheNodeIdsToRemove": { + "shape": "Sy" + }, + "AZMode": {}, + "NewAvailabilityZones": { + "shape": "So" + }, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "PreferredMaintenanceWindow": {}, + "NotificationTopicArn": {}, + "CacheParameterGroupName": {}, + "NotificationTopicStatus": {}, + "ApplyImmediately": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {}, + "CacheNodeType": {} + } + }, + "output": { + "resultWrapper": "ModifyCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "ModifyCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName", + "ParameterNameValues" + ], + "members": { + "CacheParameterGroupName": {}, + "ParameterNameValues": { + "shape": "S3q" + } + } + }, + "output": { + "shape": "S3s", + "resultWrapper": "ModifyCacheParameterGroupResult" + } + }, + "ModifyCacheSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSubnetGroupName" + ], + "members": { + "CacheSubnetGroupName": {}, + "CacheSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1d" + } + } + }, + "output": { + "resultWrapper": "ModifyCacheSubnetGroupResult", + "type": "structure", + "members": { + "CacheSubnetGroup": { + "shape": "S1f" + } + } + } + }, + "ModifyReplicationGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationGroupId" + ], + "members": { + "ReplicationGroupId": {}, + "ReplicationGroupDescription": {}, + "PrimaryClusterId": {}, + "SnapshottingClusterId": {}, + "AutomaticFailoverEnabled": { + "type": "boolean" + }, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "PreferredMaintenanceWindow": {}, + "NotificationTopicArn": {}, + "CacheParameterGroupName": {}, + "NotificationTopicStatus": {}, + "ApplyImmediately": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {}, + "CacheNodeType": {} + } + }, + "output": { + "resultWrapper": "ModifyReplicationGroupResult", + "type": "structure", + "members": { + "ReplicationGroup": { + "shape": "S1m" + } + } + } + }, + "PurchaseReservedCacheNodesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedCacheNodesOfferingId" + ], + "members": { + "ReservedCacheNodesOfferingId": {}, + "ReservedCacheNodeId": {}, + "CacheNodeCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedCacheNodesOfferingResult", + "type": "structure", + "members": { + "ReservedCacheNode": { + "shape": "S38" + } + } + } + }, + "RebootCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId", + "CacheNodeIdsToReboot" + ], + "members": { + "CacheClusterId": {}, + "CacheNodeIdsToReboot": { + "shape": "Sy" + } + } + }, + "output": { + "resultWrapper": "RebootCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "shape": "S5", + "resultWrapper": "RemoveTagsFromResourceResult" + } + }, + "ResetCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName" + ], + "members": { + "CacheParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "ParameterNameValues": { + "shape": "S3q" + } + } + }, + "output": { + "shape": "S3s", + "resultWrapper": "ResetCacheParameterGroupResult" + } + }, + "RevokeCacheSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName", + "EC2SecurityGroupName", + "EC2SecurityGroupOwnerId" + ], + "members": { + "CacheSecurityGroupName": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeCacheSecurityGroupIngressResult", + "type": "structure", + "members": { + "CacheSecurityGroup": { + "shape": "S8" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S5": { + "type": "structure", + "members": { + "TagList": { + "shape": "S3" + } + } + }, + "S8": { + "type": "structure", + "members": { + "OwnerId": {}, + "CacheSecurityGroupName": {}, + "Description": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + } + } + }, + "wrapper": true + }, + "Sd": { + "type": "structure", + "members": { + "SnapshotName": {}, + "ReplicationGroupId": {}, + "ReplicationGroupDescription": {}, + "CacheClusterId": {}, + "SnapshotStatus": {}, + "SnapshotSource": {}, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "NumCacheNodes": { + "type": "integer" + }, + "PreferredAvailabilityZone": {}, + "CacheClusterCreateTime": { + "type": "timestamp" + }, + "PreferredMaintenanceWindow": {}, + "TopicArn": {}, + "Port": { + "type": "integer" + }, + "CacheParameterGroupName": {}, + "CacheSubnetGroupName": {}, + "VpcId": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {}, + "NumNodeGroups": { + "type": "integer" + }, + "AutomaticFailover": {}, + "NodeSnapshots": { + "type": "list", + "member": { + "locationName": "NodeSnapshot", + "type": "structure", + "members": { + "CacheClusterId": {}, + "NodeGroupId": {}, + "CacheNodeId": {}, + "NodeGroupConfiguration": { + "shape": "Sk" + }, + "CacheSize": {}, + "CacheNodeCreateTime": { + "type": "timestamp" + }, + "SnapshotCreateTime": { + "type": "timestamp" + } + }, + "wrapper": true + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "Slots": {}, + "ReplicaCount": { + "type": "integer" + }, + "PrimaryAvailabilityZone": {}, + "ReplicaAvailabilityZones": { + "shape": "Sl" + } + } + }, + "Sl": { + "type": "list", + "member": { + "locationName": "AvailabilityZone" + } + }, + "So": { + "type": "list", + "member": { + "locationName": "PreferredAvailabilityZone" + } + }, + "Sp": { + "type": "list", + "member": { + "locationName": "CacheSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "SecurityGroupId" + } + }, + "Sr": { + "type": "list", + "member": { + "locationName": "SnapshotArn" + } + }, + "Su": { + "type": "structure", + "members": { + "CacheClusterId": {}, + "ConfigurationEndpoint": { + "shape": "Sv" + }, + "ClientDownloadLandingPage": {}, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "CacheClusterStatus": {}, + "NumCacheNodes": { + "type": "integer" + }, + "PreferredAvailabilityZone": {}, + "CacheClusterCreateTime": { + "type": "timestamp" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "NumCacheNodes": { + "type": "integer" + }, + "CacheNodeIdsToRemove": { + "shape": "Sy" + }, + "EngineVersion": {}, + "CacheNodeType": {} + } + }, + "NotificationConfiguration": { + "type": "structure", + "members": { + "TopicArn": {}, + "TopicStatus": {} + } + }, + "CacheSecurityGroups": { + "type": "list", + "member": { + "locationName": "CacheSecurityGroup", + "type": "structure", + "members": { + "CacheSecurityGroupName": {}, + "Status": {} + } + } + }, + "CacheParameterGroup": { + "type": "structure", + "members": { + "CacheParameterGroupName": {}, + "ParameterApplyStatus": {}, + "CacheNodeIdsToReboot": { + "shape": "Sy" + } + } + }, + "CacheSubnetGroupName": {}, + "CacheNodes": { + "type": "list", + "member": { + "locationName": "CacheNode", + "type": "structure", + "members": { + "CacheNodeId": {}, + "CacheNodeStatus": {}, + "CacheNodeCreateTime": { + "type": "timestamp" + }, + "Endpoint": { + "shape": "Sv" + }, + "ParameterGroupStatus": {}, + "SourceCacheNodeId": {}, + "CustomerAvailabilityZone": {} + } + } + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SecurityGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SecurityGroupId": {}, + "Status": {} + } + } + }, + "ReplicationGroupId": {}, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + }, + "wrapper": true + }, + "Sv": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "Sy": { + "type": "list", + "member": { + "locationName": "CacheNodeId" + } + }, + "S19": { + "type": "structure", + "members": { + "CacheParameterGroupName": {}, + "CacheParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1d": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1f": { + "type": "structure", + "members": { + "CacheSubnetGroupName": {}, + "CacheSubnetGroupDescription": {}, + "VpcId": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "type": "structure", + "members": { + "Name": {} + }, + "wrapper": true + } + } + } + } + }, + "wrapper": true + }, + "S1m": { + "type": "structure", + "members": { + "ReplicationGroupId": {}, + "Description": {}, + "Status": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "PrimaryClusterId": {}, + "AutomaticFailoverStatus": {} + } + }, + "MemberClusters": { + "type": "list", + "member": { + "locationName": "ClusterId" + } + }, + "NodeGroups": { + "type": "list", + "member": { + "locationName": "NodeGroup", + "type": "structure", + "members": { + "NodeGroupId": {}, + "Status": {}, + "PrimaryEndpoint": { + "shape": "Sv" + }, + "Slots": {}, + "NodeGroupMembers": { + "type": "list", + "member": { + "locationName": "NodeGroupMember", + "type": "structure", + "members": { + "CacheClusterId": {}, + "CacheNodeId": {}, + "ReadEndpoint": { + "shape": "Sv" + }, + "PreferredAvailabilityZone": {}, + "CurrentRole": {} + } + } + } + } + } + }, + "SnapshottingClusterId": {}, + "AutomaticFailover": {}, + "ConfigurationEndpoint": { + "shape": "Sv" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + }, + "wrapper": true + }, + "S2h": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ChangeType": {} + } + } + }, + "S2k": { + "type": "list", + "member": { + "locationName": "CacheNodeTypeSpecificParameter", + "type": "structure", + "members": { + "ParameterName": {}, + "Description": {}, + "Source": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "CacheNodeTypeSpecificValues": { + "type": "list", + "member": { + "locationName": "CacheNodeTypeSpecificValue", + "type": "structure", + "members": { + "CacheNodeType": {}, + "Value": {} + } + } + }, + "ChangeType": {} + } + } + }, + "S38": { + "type": "structure", + "members": { + "ReservedCacheNodeId": {}, + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CacheNodeCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "State": {}, + "RecurringCharges": { + "shape": "S3a" + } + }, + "wrapper": true + }, + "S3a": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S3q": { + "type": "list", + "member": { + "locationName": "ParameterNameValue", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {} + } + } + }, + "S3s": { + "type": "structure", + "members": { + "CacheParameterGroupName": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json b/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json new file mode 100644 index 0000000..8724740 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json @@ -0,0 +1,76 @@ +{ + "pagination": { + "DescribeCacheClusters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheClusters" + }, + "DescribeCacheEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheEngineVersions" + }, + "DescribeCacheParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheParameterGroups" + }, + "DescribeCacheParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeCacheSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheSecurityGroups" + }, + "DescribeCacheSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeReservedCacheNodes": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedCacheNodes" + }, + "DescribeReservedCacheNodesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedCacheNodesOfferings" + }, + "DescribeReplicationGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReplicationGroups" + }, + "DescribeSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Snapshots" + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json b/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json new file mode 100644 index 0000000..c177d7b --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json @@ -0,0 +1,143 @@ +{ + "version":2, + "waiters":{ + "CacheClusterAvailable":{ + "acceptors":[ + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"available", + "matcher":"pathAll", + "state":"success" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"deleted", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"deleting", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"incompatible-network", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"restore-failed", + "matcher":"pathAny", + "state":"failure" + } + ], + "delay":15, + "description":"Wait until ElastiCache cluster is available.", + "maxAttempts":40, + "operation":"DescribeCacheClusters" + }, + "CacheClusterDeleted":{ + "acceptors":[ + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"deleted", + "matcher":"pathAll", + "state":"success" + }, + { + "expected":"CacheClusterNotFound", + "matcher":"error", + "state":"success" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"available", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"creating", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"incompatible-network", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"modifying", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"restore-failed", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"snapshotting", + "matcher":"pathAny", + "state":"failure" + } + ], + "delay":15, + "description":"Wait until ElastiCache cluster is deleted.", + "maxAttempts":40, + "operation":"DescribeCacheClusters" + }, + "ReplicationGroupAvailable":{ + "acceptors":[ + { + "argument":"ReplicationGroups[].Status", + "expected":"available", + "matcher":"pathAll", + "state":"success" + }, + { + "argument":"ReplicationGroups[].Status", + "expected":"deleted", + "matcher":"pathAny", + "state":"failure" + } + ], + "delay":15, + "description":"Wait until ElastiCache replication group is available.", + "maxAttempts":40, + "operation":"DescribeReplicationGroups" + }, + "ReplicationGroupDeleted":{ + "acceptors":[ + { + "argument":"ReplicationGroups[].Status", + "expected":"deleted", + "matcher":"pathAll", + "state":"success" + }, + { + "argument":"ReplicationGroups[].Status", + "expected":"available", + "matcher":"pathAny", + "state":"failure" + }, + { + "expected":"ReplicationGroupNotFoundFault", + "matcher":"error", + "state":"success" + } + ], + "delay":15, + "description":"Wait until ElastiCache replication group is deleted.", + "maxAttempts":40, + "operation":"DescribeReplicationGroups" + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json new file mode 100644 index 0000000..0fded62 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json @@ -0,0 +1,1109 @@ +{ + "version": "1.0", + "examples": { + "AbortEnvironmentUpdate": [ + { + "input": { + "EnvironmentName": "my-env" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following code aborts a running application version deployment for an environment named my-env:", + "id": "to-abort-a-deployment-1456267848227", + "title": "To abort a deployment" + } + ], + "CheckDNSAvailability": [ + { + "input": { + "CNAMEPrefix": "my-cname" + }, + "output": { + "Available": true, + "FullyQualifiedCNAME": "my-cname.us-west-2.elasticbeanstalk.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation checks the availability of the subdomain my-cname:", + "id": "to-check-the-availability-of-a-cname-1456268589537", + "title": "To check the availability of a CNAME" + } + ], + "CreateApplication": [ + { + "input": { + "ApplicationName": "my-app", + "Description": "my application" + }, + "output": { + "Application": { + "ApplicationName": "my-app", + "ConfigurationTemplates": [ + + ], + "DateCreated": "2015-02-12T18:32:21.181Z", + "DateUpdated": "2015-02-12T18:32:21.181Z", + "Description": "my application" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation creates a new application named my-app:", + "id": "to-create-a-new-application-1456268895683", + "title": "To create a new application" + } + ], + "CreateApplicationVersion": [ + { + "input": { + "ApplicationName": "my-app", + "AutoCreateApplication": true, + "Description": "my-app-v1", + "Process": true, + "SourceBundle": { + "S3Bucket": "my-bucket", + "S3Key": "sample.war" + }, + "VersionLabel": "v1" + }, + "output": { + "ApplicationVersion": { + "ApplicationName": "my-app", + "DateCreated": "2015-02-03T23:01:25.412Z", + "DateUpdated": "2015-02-03T23:01:25.412Z", + "Description": "my-app-v1", + "SourceBundle": { + "S3Bucket": "my-bucket", + "S3Key": "sample.war" + }, + "VersionLabel": "v1" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation creates a new version (v1) of an application named my-app:", + "id": "to-create-a-new-application-1456268895683", + "title": "To create a new application" + } + ], + "CreateConfigurationTemplate": [ + { + "input": { + "ApplicationName": "my-app", + "EnvironmentId": "e-rpqsewtp2j", + "TemplateName": "my-app-v1" + }, + "output": { + "ApplicationName": "my-app", + "DateCreated": "2015-08-12T18:40:39Z", + "DateUpdated": "2015-08-12T18:40:39Z", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "TemplateName": "my-app-v1" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation creates a configuration template named my-app-v1 from the settings applied to an environment with the id e-rpqsewtp2j:", + "id": "to-create-a-configuration-template-1456269283586", + "title": "To create a configuration template" + } + ], + "CreateEnvironment": [ + { + "input": { + "ApplicationName": "my-app", + "CNAMEPrefix": "my-app", + "EnvironmentName": "my-env", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "VersionLabel": "v1" + }, + "output": { + "ApplicationName": "my-app", + "CNAME": "my-app.elasticbeanstalk.com", + "DateCreated": "2015-02-03T23:04:54.479Z", + "DateUpdated": "2015-02-03T23:04:54.479Z", + "EnvironmentId": "e-izqpassy4h", + "EnvironmentName": "my-env", + "Health": "Grey", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "Status": "Launching", + "Tier": { + "Name": "WebServer", + "Type": "Standard", + "Version": " " + }, + "VersionLabel": "v1" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation creates a new environment for version v1 of a java application named my-app:", + "id": "to-create-a-new-environment-for-an-application-1456269380396", + "title": "To create a new environment for an application" + } + ], + "CreateStorageLocation": [ + { + "output": { + "S3Bucket": "elasticbeanstalk-us-west-2-0123456789012" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation creates a new environment for version v1 of a java application named my-app:", + "id": "to-create-a-new-environment-for-an-application-1456269380396", + "title": "To create a new environment for an application" + } + ], + "DeleteApplication": [ + { + "input": { + "ApplicationName": "my-app" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation deletes an application named my-app:", + "id": "to-delete-an-application-1456269699366", + "title": "To delete an application" + } + ], + "DeleteApplicationVersion": [ + { + "input": { + "ApplicationName": "my-app", + "DeleteSourceBundle": true, + "VersionLabel": "22a0-stage-150819_182129" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation deletes an application version named 22a0-stage-150819_182129 for an application named my-app:", + "id": "to-delete-an-application-version-1456269792956", + "title": "To delete an application version" + } + ], + "DeleteConfigurationTemplate": [ + { + "input": { + "ApplicationName": "my-app", + "TemplateName": "my-template" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation deletes a configuration template named my-template for an application named my-app:", + "id": "to-delete-a-configuration-template-1456269836701", + "title": "To delete a configuration template" + } + ], + "DeleteEnvironmentConfiguration": [ + { + "input": { + "ApplicationName": "my-app", + "EnvironmentName": "my-env" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation deletes a draft configuration for an environment named my-env:", + "id": "to-delete-a-draft-configuration-1456269886654", + "title": "To delete a draft configuration" + } + ], + "DescribeApplicationVersions": [ + { + "input": { + "ApplicationName": "my-app", + "VersionLabels": [ + "v2" + ] + }, + "output": { + "ApplicationVersions": [ + { + "ApplicationName": "my-app", + "DateCreated": "2015-07-23T01:32:26.079Z", + "DateUpdated": "2015-07-23T01:32:26.079Z", + "Description": "update cover page", + "SourceBundle": { + "S3Bucket": "elasticbeanstalk-us-west-2-015321684451", + "S3Key": "my-app/5026-stage-150723_224258.war" + }, + "VersionLabel": "v2" + }, + { + "ApplicationName": "my-app", + "DateCreated": "2015-07-23T22:26:10.816Z", + "DateUpdated": "2015-07-23T22:26:10.816Z", + "Description": "initial version", + "SourceBundle": { + "S3Bucket": "elasticbeanstalk-us-west-2-015321684451", + "S3Key": "my-app/5026-stage-150723_222618.war" + }, + "VersionLabel": "v1" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves information about an application version labeled v2:", + "id": "to-view-information-about-an-application-version-1456269947428", + "title": "To view information about an application version" + } + ], + "DescribeApplications": [ + { + "input": { + }, + "output": { + "Applications": [ + { + "ApplicationName": "ruby", + "ConfigurationTemplates": [ + + ], + "DateCreated": "2015-08-13T21:05:44.376Z", + "DateUpdated": "2015-08-13T21:05:44.376Z", + "Versions": [ + "Sample Application" + ] + }, + { + "ApplicationName": "pythonsample", + "ConfigurationTemplates": [ + + ], + "DateCreated": "2015-08-13T19:05:43.637Z", + "DateUpdated": "2015-08-13T19:05:43.637Z", + "Description": "Application created from the EB CLI using \"eb init\"", + "Versions": [ + "Sample Application" + ] + }, + { + "ApplicationName": "nodejs-example", + "ConfigurationTemplates": [ + + ], + "DateCreated": "2015-08-06T17:50:02.486Z", + "DateUpdated": "2015-08-06T17:50:02.486Z", + "Versions": [ + "add elasticache", + "First Release" + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves information about applications in the current region:", + "id": "to-view-a-list-of-applications-1456270027373", + "title": "To view a list of applications" + } + ], + "DescribeConfigurationOptions": [ + { + "input": { + "ApplicationName": "my-app", + "EnvironmentName": "my-env" + }, + "output": { + "Options": [ + { + "ChangeSeverity": "NoInterruption", + "DefaultValue": "30", + "MaxValue": 300, + "MinValue": 5, + "Name": "Interval", + "Namespace": "aws:elb:healthcheck", + "UserDefined": false, + "ValueType": "Scalar" + }, + { + "ChangeSeverity": "NoInterruption", + "DefaultValue": "2000000", + "MinValue": 0, + "Name": "LowerThreshold", + "Namespace": "aws:autoscaling:trigger", + "UserDefined": false, + "ValueType": "Scalar" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves descriptions of all available configuration options for an environment named my-env:", + "id": "to-view-configuration-options-for-an-environment-1456276763917", + "title": "To view configuration options for an environment" + } + ], + "DescribeConfigurationSettings": [ + { + "input": { + "ApplicationName": "my-app", + "EnvironmentName": "my-env" + }, + "output": { + "ConfigurationSettings": [ + { + "ApplicationName": "my-app", + "DateCreated": "2015-08-13T19:16:25Z", + "DateUpdated": "2015-08-13T23:30:07Z", + "DeploymentStatus": "deployed", + "Description": "Environment created from the EB CLI using \"eb create\"", + "EnvironmentName": "my-env", + "OptionSettings": [ + { + "Namespace": "aws:autoscaling:asg", + "OptionName": "Availability Zones", + "ResourceName": "AWSEBAutoScalingGroup", + "Value": "Any" + }, + { + "Namespace": "aws:autoscaling:asg", + "OptionName": "Cooldown", + "ResourceName": "AWSEBAutoScalingGroup", + "Value": "360" + }, + { + "Namespace": "aws:elb:policies", + "OptionName": "ConnectionDrainingTimeout", + "ResourceName": "AWSEBLoadBalancer", + "Value": "20" + }, + { + "Namespace": "aws:elb:policies", + "OptionName": "ConnectionSettingIdleTimeout", + "ResourceName": "AWSEBLoadBalancer", + "Value": "60" + } + ], + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8" + } + ] + }, + "comments": { + "input": { + }, + "output": { + "abbreviated": "Output is abbreviated" + } + }, + "description": "The following operation retrieves configuration settings for an environment named my-env:", + "id": "to-view-configurations-settings-for-an-environment-1456276924537", + "title": "To view configurations settings for an environment" + } + ], + "DescribeEnvironmentHealth": [ + { + "input": { + "AttributeNames": [ + "All" + ], + "EnvironmentName": "my-env" + }, + "output": { + "ApplicationMetrics": { + "Duration": 10, + "Latency": { + "P10": 0.001, + "P50": 0.001, + "P75": 0.002, + "P85": 0.003, + "P90": 0.003, + "P95": 0.004, + "P99": 0.004, + "P999": 0.004 + }, + "RequestCount": 45, + "StatusCodes": { + "Status2xx": 45, + "Status3xx": 0, + "Status4xx": 0, + "Status5xx": 0 + } + }, + "Causes": [ + + ], + "Color": "Green", + "EnvironmentName": "my-env", + "HealthStatus": "Ok", + "InstancesHealth": { + "Degraded": 0, + "Info": 0, + "NoData": 0, + "Ok": 1, + "Pending": 0, + "Severe": 0, + "Unknown": 0, + "Warning": 0 + }, + "RefreshedAt": "2015-08-20T21:09:18Z" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves overall health information for an environment named my-env:", + "id": "to-view-environment-health-1456277109510", + "title": "To view environment health" + } + ], + "DescribeEnvironmentResources": [ + { + "input": { + "EnvironmentName": "my-env" + }, + "output": { + "EnvironmentResources": { + "AutoScalingGroups": [ + { + "Name": "awseb-e-qu3fyyjyjs-stack-AWSEBAutoScalingGroup-QSB2ZO88SXZT" + } + ], + "EnvironmentName": "my-env", + "Instances": [ + { + "Id": "i-0c91c786" + } + ], + "LaunchConfigurations": [ + { + "Name": "awseb-e-qu3fyyjyjs-stack-AWSEBAutoScalingLaunchConfiguration-1UUVQIBC96TQ2" + } + ], + "LoadBalancers": [ + { + "Name": "awseb-e-q-AWSEBLoa-1EEPZ0K98BIF0" + } + ], + "Queues": [ + + ], + "Triggers": [ + + ] + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves information about resources in an environment named my-env:", + "id": "to-view-information-about-the-aws-resources-in-your-environment-1456277206232", + "title": "To view information about the AWS resources in your environment" + } + ], + "DescribeEnvironments": [ + { + "input": { + "EnvironmentNames": [ + "my-env" + ] + }, + "output": { + "Environments": [ + { + "AbortableOperationInProgress": false, + "ApplicationName": "my-app", + "CNAME": "my-env.elasticbeanstalk.com", + "DateCreated": "2015-08-07T20:48:49.599Z", + "DateUpdated": "2015-08-12T18:16:55.019Z", + "EndpointURL": "awseb-e-w-AWSEBLoa-1483140XB0Q4L-109QXY8121.us-west-2.elb.amazonaws.com", + "EnvironmentId": "e-rpqsewtp2j", + "EnvironmentName": "my-env", + "Health": "Green", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "Status": "Ready", + "Tier": { + "Name": "WebServer", + "Type": "Standard", + "Version": " " + }, + "VersionLabel": "7f58-stage-150812_025409" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves information about an environment named my-env:", + "id": "to-view-information-about-an-environment-1456277288662", + "title": "To view information about an environment" + } + ], + "DescribeEvents": [ + { + "input": { + "EnvironmentName": "my-env" + }, + "output": { + "Events": [ + { + "ApplicationName": "my-app", + "EnvironmentName": "my-env", + "EventDate": "2015-08-20T07:06:53.535Z", + "Message": "Environment health has transitioned from Info to Ok.", + "Severity": "INFO" + }, + { + "ApplicationName": "my-app", + "EnvironmentName": "my-env", + "EventDate": "2015-08-20T07:06:02.049Z", + "Message": "Environment update completed successfully.", + "RequestId": "b7f3960b-4709-11e5-ba1e-07e16200da41", + "Severity": "INFO" + }, + { + "ApplicationName": "my-app", + "EnvironmentName": "my-env", + "EventDate": "2015-08-13T19:16:27.561Z", + "Message": "Using elasticbeanstalk-us-west-2-012445113685 as Amazon S3 storage bucket for environment data.", + "RequestId": "ca8dfbf6-41ef-11e5-988b-651aa638f46b", + "Severity": "INFO" + }, + { + "ApplicationName": "my-app", + "EnvironmentName": "my-env", + "EventDate": "2015-08-13T19:16:26.581Z", + "Message": "createEnvironment is starting.", + "RequestId": "cdfba8f6-41ef-11e5-988b-65638f41aa6b", + "Severity": "INFO" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves events for an environment named my-env:", + "id": "to-view-events-for-an-environment-1456277367589", + "title": "To view events for an environment" + } + ], + "DescribeInstancesHealth": [ + { + "input": { + "AttributeNames": [ + "All" + ], + "EnvironmentName": "my-env" + }, + "output": { + "InstanceHealthList": [ + { + "ApplicationMetrics": { + "Duration": 10, + "Latency": { + "P10": 0, + "P50": 0.001, + "P75": 0.002, + "P85": 0.003, + "P90": 0.004, + "P95": 0.005, + "P99": 0.006, + "P999": 0.006 + }, + "RequestCount": 48, + "StatusCodes": { + "Status2xx": 47, + "Status3xx": 0, + "Status4xx": 1, + "Status5xx": 0 + } + }, + "Causes": [ + + ], + "Color": "Green", + "HealthStatus": "Ok", + "InstanceId": "i-08691cc7", + "LaunchedAt": "2015-08-13T19:17:09Z", + "System": { + "CPUUtilization": { + "IOWait": 0.2, + "IRQ": 0, + "Idle": 97.8, + "Nice": 0.1, + "SoftIRQ": 0.1, + "System": 0.3, + "User": 1.5 + }, + "LoadAverage": [ + 0, + 0.02, + 0.05 + ] + } + } + ], + "RefreshedAt": "2015-08-20T21:09:08Z" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves health information for instances in an environment named my-env:", + "id": "to-view-environment-health-1456277424757", + "title": "To view environment health" + } + ], + "ListAvailableSolutionStacks": [ + { + "output": { + "SolutionStackDetails": [ + { + "PermittedFileTypes": [ + "zip" + ], + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Node.js" + } + ], + "SolutionStacks": [ + "64bit Amazon Linux 2015.03 v2.0.0 running Node.js", + "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.6", + "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.5", + "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.4", + "64bit Amazon Linux 2015.03 v2.0.0 running Python 3.4", + "64bit Amazon Linux 2015.03 v2.0.0 running Python 2.7", + "64bit Amazon Linux 2015.03 v2.0.0 running Python", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Puma)", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Passenger Standalone)", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.1 (Puma)", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.1 (Passenger Standalone)", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.0 (Puma)", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.0 (Passenger Standalone)", + "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 1.9.3", + "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 7 Java 7", + "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 7 Java 6", + "64bit Windows Server Core 2012 R2 running IIS 8.5", + "64bit Windows Server 2012 R2 running IIS 8.5", + "64bit Windows Server 2012 running IIS 8", + "64bit Windows Server 2008 R2 running IIS 7.5", + "64bit Amazon Linux 2015.03 v2.0.0 running Docker 1.6.2", + "64bit Amazon Linux 2015.03 v2.0.0 running Multi-container Docker 1.6.2 (Generic)", + "64bit Debian jessie v2.0.0 running GlassFish 4.1 Java 8 (Preconfigured - Docker)", + "64bit Debian jessie v2.0.0 running GlassFish 4.0 Java 7 (Preconfigured - Docker)", + "64bit Debian jessie v2.0.0 running Go 1.4 (Preconfigured - Docker)", + "64bit Debian jessie v2.0.0 running Go 1.3 (Preconfigured - Docker)", + "64bit Debian jessie v2.0.0 running Python 3.4 (Preconfigured - Docker)" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation lists solution stacks for all currently available platform configurations and any that you have used in the past:", + "id": "to-view-solution-stacks-1456277504811", + "title": "To view solution stacks" + } + ], + "RebuildEnvironment": [ + { + "input": { + "EnvironmentName": "my-env" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation terminates and recreates the resources in an environment named my-env:", + "id": "to-rebuild-an-environment-1456277600918", + "title": "To rebuild an environment" + } + ], + "RequestEnvironmentInfo": [ + { + "input": { + "EnvironmentName": "my-env", + "InfoType": "tail" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation requests logs from an environment named my-env:", + "id": "to-request-tailed-logs-1456277657045", + "title": "To request tailed logs" + } + ], + "RestartAppServer": [ + { + "input": { + "EnvironmentName": "my-env" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation restarts application servers on all instances in an environment named my-env:", + "id": "to-restart-application-servers-1456277739302", + "title": "To restart application servers" + } + ], + "RetrieveEnvironmentInfo": [ + { + "input": { + "EnvironmentName": "my-env", + "InfoType": "tail" + }, + "output": { + "EnvironmentInfo": [ + { + "Ec2InstanceId": "i-09c1c867", + "InfoType": "tail", + "Message": "https://elasticbeanstalk-us-west-2-0123456789012.s3.amazonaws.com/resources/environments/logs/tail/e-fyqyju3yjs/i-09c1c867/TailLogs-1440109397703.out?AWSAccessKeyId=AKGPT4J56IAJ2EUBL5CQ&Expires=1440195891&Signature=n%2BEalOV6A2HIOx4Rcfb7LT16bBM%3D", + "SampleTimestamp": "2015-08-20T22:23:17.703Z" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation retrieves a link to logs from an environment named my-env:", + "id": "to-retrieve-tailed-logs-1456277792734", + "title": "To retrieve tailed logs" + } + ], + "SwapEnvironmentCNAMEs": [ + { + "input": { + "DestinationEnvironmentName": "my-env-green", + "SourceEnvironmentName": "my-env-blue" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation swaps the assigned subdomains of two environments:", + "id": "to-swap-environment-cnames-1456277839438", + "title": "To swap environment CNAMES" + } + ], + "TerminateEnvironment": [ + { + "input": { + "EnvironmentName": "my-env" + }, + "output": { + "AbortableOperationInProgress": false, + "ApplicationName": "my-app", + "CNAME": "my-env.elasticbeanstalk.com", + "DateCreated": "2015-08-12T18:52:53.622Z", + "DateUpdated": "2015-08-12T19:05:54.744Z", + "EndpointURL": "awseb-e-f-AWSEBLoa-1I9XUMP4-8492WNUP202574.us-west-2.elb.amazonaws.com", + "EnvironmentId": "e-fh2eravpns", + "EnvironmentName": "my-env", + "Health": "Grey", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "Status": "Terminating", + "Tier": { + "Name": "WebServer", + "Type": "Standard", + "Version": " " + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation terminates an Elastic Beanstalk environment named my-env:", + "id": "to-terminate-an-environment-1456277888556", + "title": "To terminate an environment" + } + ], + "UpdateApplication": [ + { + "input": { + "ApplicationName": "my-app", + "Description": "my Elastic Beanstalk application" + }, + "output": { + "Application": { + "ApplicationName": "my-app", + "ConfigurationTemplates": [ + + ], + "DateCreated": "2015-08-13T19:15:50.449Z", + "DateUpdated": "2015-08-20T22:34:56.195Z", + "Description": "my Elastic Beanstalk application", + "Versions": [ + "2fba-stage-150819_234450", + "bf07-stage-150820_214945", + "93f8", + "fd7c-stage-150820_000431", + "22a0-stage-150819_185942" + ] + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation updates the description of an application named my-app:", + "id": "to-change-an-applications-description-1456277957075", + "title": "To change an application's description" + } + ], + "UpdateApplicationVersion": [ + { + "input": { + "ApplicationName": "my-app", + "Description": "new description", + "VersionLabel": "22a0-stage-150819_185942" + }, + "output": { + "ApplicationVersion": { + "ApplicationName": "my-app", + "DateCreated": "2015-08-19T18:59:17.646Z", + "DateUpdated": "2015-08-20T22:53:28.871Z", + "Description": "new description", + "SourceBundle": { + "S3Bucket": "elasticbeanstalk-us-west-2-0123456789012", + "S3Key": "my-app/22a0-stage-150819_185942.war" + }, + "VersionLabel": "22a0-stage-150819_185942" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation updates the description of an application version named 22a0-stage-150819_185942:", + "id": "to-change-an-application-versions-description-1456278019237", + "title": "To change an application version's description" + } + ], + "UpdateConfigurationTemplate": [ + { + "input": { + "ApplicationName": "my-app", + "OptionsToRemove": [ + { + "Namespace": "aws:elasticbeanstalk:healthreporting:system", + "OptionName": "ConfigDocument" + } + ], + "TemplateName": "my-template" + }, + "output": { + "ApplicationName": "my-app", + "DateCreated": "2015-08-20T22:39:31Z", + "DateUpdated": "2015-08-20T22:43:11Z", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "TemplateName": "my-template" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation removes the configured CloudWatch custom health metrics configuration ConfigDocument from a saved configuration template named my-template:", + "id": "to-update-a-configuration-template-1456278075300", + "title": "To update a configuration template" + } + ], + "UpdateEnvironment": [ + { + "input": { + "EnvironmentName": "my-env", + "VersionLabel": "v2" + }, + "output": { + "ApplicationName": "my-app", + "CNAME": "my-env.elasticbeanstalk.com", + "DateCreated": "2015-02-03T23:04:54.453Z", + "DateUpdated": "2015-02-03T23:12:29.119Z", + "EndpointURL": "awseb-e-i-AWSEBLoa-1RDLX6TC9VUAO-0123456789.us-west-2.elb.amazonaws.com", + "EnvironmentId": "e-szqipays4h", + "EnvironmentName": "my-env", + "Health": "Grey", + "SolutionStackName": "64bit Amazon Linux running Tomcat 7", + "Status": "Updating", + "Tier": { + "Name": "WebServer", + "Type": "Standard", + "Version": " " + }, + "VersionLabel": "v2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation updates an environment named \"my-env\" to version \"v2\" of the application to which it belongs:", + "id": "to-update-an-environment-to-a-new-version-1456278210718", + "title": "To update an environment to a new version" + }, + { + "input": { + "EnvironmentName": "my-env", + "OptionSettings": [ + { + "Namespace": "aws:elb:healthcheck", + "OptionName": "Interval", + "Value": "15" + }, + { + "Namespace": "aws:elb:healthcheck", + "OptionName": "Timeout", + "Value": "8" + }, + { + "Namespace": "aws:elb:healthcheck", + "OptionName": "HealthyThreshold", + "Value": "2" + }, + { + "Namespace": "aws:elb:healthcheck", + "OptionName": "UnhealthyThreshold", + "Value": "3" + } + ] + }, + "output": { + "AbortableOperationInProgress": true, + "ApplicationName": "my-app", + "CNAME": "my-env.elasticbeanstalk.com", + "DateCreated": "2015-08-07T20:48:49.599Z", + "DateUpdated": "2015-08-12T18:15:23.804Z", + "EndpointURL": "awseb-e-w-AWSEBLoa-14XB83101Q4L-104QXY80921.sa-east-1.elb.amazonaws.com", + "EnvironmentId": "e-wtp2rpqsej", + "EnvironmentName": "my-env", + "Health": "Grey", + "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", + "Status": "Updating", + "Tier": { + "Name": "WebServer", + "Type": "Standard", + "Version": " " + }, + "VersionLabel": "7f58-stage-150812_025409" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation configures several options in the aws:elb:loadbalancer namespace:", + "id": "to-configure-option-settings-1456278286349", + "title": "To configure option settings" + } + ], + "ValidateConfigurationSettings": [ + { + "input": { + "ApplicationName": "my-app", + "EnvironmentName": "my-env", + "OptionSettings": [ + { + "Namespace": "aws:elasticbeanstalk:healthreporting:system", + "OptionName": "ConfigDocument", + "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": null,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": null,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": null,\"ApplicationRequests2xx\": null,\"InstancesDegraded\": null,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": null,\"InstancesNoData\": null,\"InstancesPending\": 60,\"ApplicationLatencyP10\": null,\"ApplicationRequests5xx\": null,\"ApplicationLatencyP75\": null,\"InstancesOk\": 60,\"ApplicationRequests3xx\": null,\"ApplicationRequests4xx\": null},\"Instance\": {\"ApplicationLatencyP99.9\": null,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": null,\"ApplicationLatencyP95\": null,\"ApplicationLatencyP85\": null,\"CPUUser\": 60,\"ApplicationRequests2xx\": null,\"CPUIdle\": null,\"ApplicationLatencyP50\": null,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": null,\"LoadAverage1min\": null,\"CPUIrq\": null,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": null,\"LoadAverage5min\": null,\"ApplicationRequests5xx\": null,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": null,\"InstanceHealth\": null,\"CPUSoftirq\": 60}},\"Version\": 1}" + } + ] + }, + "output": { + "Messages": [ + + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation validates a CloudWatch custom metrics config document:", + "id": "to-validate-configuration-settings-1456278393654", + "title": "To validate configuration settings" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json new file mode 100644 index 0000000..4c0bf0b --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json @@ -0,0 +1,1264 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-12-01", + "endpointPrefix": "elasticbeanstalk", + "protocol": "query", + "serviceAbbreviation": "Elastic Beanstalk", + "serviceFullName": "AWS Elastic Beanstalk", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/" + }, + "operations": { + "AbortEnvironmentUpdate": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + } + }, + "ApplyEnvironmentManagedAction": { + "input": { + "type": "structure", + "required": [ + "ActionId" + ], + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "ActionId": {} + } + }, + "output": { + "resultWrapper": "ApplyEnvironmentManagedActionResult", + "type": "structure", + "members": { + "ActionId": {}, + "ActionDescription": {}, + "ActionType": {}, + "Status": {} + } + } + }, + "CheckDNSAvailability": { + "input": { + "type": "structure", + "required": [ + "CNAMEPrefix" + ], + "members": { + "CNAMEPrefix": {} + } + }, + "output": { + "resultWrapper": "CheckDNSAvailabilityResult", + "type": "structure", + "members": { + "Available": { + "type": "boolean" + }, + "FullyQualifiedCNAME": {} + } + } + }, + "ComposeEnvironments": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "GroupName": {}, + "VersionLabels": { + "type": "list", + "member": {} + } + } + }, + "output": { + "shape": "Si", + "resultWrapper": "ComposeEnvironmentsResult" + } + }, + "CreateApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "Description": {} + } + }, + "output": { + "shape": "S14", + "resultWrapper": "CreateApplicationResult" + } + }, + "CreateApplicationVersion": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "VersionLabel" + ], + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "Description": {}, + "SourceBundle": { + "shape": "S19" + }, + "AutoCreateApplication": { + "type": "boolean" + }, + "Process": { + "type": "boolean" + } + } + }, + "output": { + "shape": "S1e", + "resultWrapper": "CreateApplicationVersionResult" + } + }, + "CreateConfigurationTemplate": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "TemplateName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "SolutionStackName": {}, + "SourceConfiguration": { + "type": "structure", + "members": { + "ApplicationName": {}, + "TemplateName": {} + } + }, + "EnvironmentId": {}, + "Description": {}, + "OptionSettings": { + "shape": "S1j" + } + } + }, + "output": { + "shape": "S1p", + "resultWrapper": "CreateConfigurationTemplateResult" + } + }, + "CreateEnvironment": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "EnvironmentName": {}, + "GroupName": {}, + "Description": {}, + "CNAMEPrefix": {}, + "Tier": { + "shape": "S10" + }, + "Tags": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "VersionLabel": {}, + "TemplateName": {}, + "SolutionStackName": {}, + "OptionSettings": { + "shape": "S1j" + }, + "OptionsToRemove": { + "shape": "S1w" + } + } + }, + "output": { + "shape": "Sk", + "resultWrapper": "CreateEnvironmentResult" + } + }, + "CreateStorageLocation": { + "output": { + "resultWrapper": "CreateStorageLocationResult", + "type": "structure", + "members": { + "S3Bucket": {} + } + } + }, + "DeleteApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "TerminateEnvByForce": { + "type": "boolean" + } + } + } + }, + "DeleteApplicationVersion": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "VersionLabel" + ], + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "DeleteSourceBundle": { + "type": "boolean" + } + } + } + }, + "DeleteConfigurationTemplate": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "TemplateName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {} + } + } + }, + "DeleteEnvironmentConfiguration": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "EnvironmentName" + ], + "members": { + "ApplicationName": {}, + "EnvironmentName": {} + } + } + }, + "DescribeApplicationVersions": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "VersionLabels": { + "shape": "S16" + } + } + }, + "output": { + "resultWrapper": "DescribeApplicationVersionsResult", + "type": "structure", + "members": { + "ApplicationVersions": { + "type": "list", + "member": { + "shape": "S1f" + } + } + } + } + }, + "DescribeApplications": { + "input": { + "type": "structure", + "members": { + "ApplicationNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeApplicationsResult", + "type": "structure", + "members": { + "Applications": { + "type": "list", + "member": { + "shape": "S15" + } + } + } + } + }, + "DescribeConfigurationOptions": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "EnvironmentName": {}, + "SolutionStackName": {}, + "Options": { + "shape": "S1w" + } + } + }, + "output": { + "resultWrapper": "DescribeConfigurationOptionsResult", + "type": "structure", + "members": { + "SolutionStackName": {}, + "Options": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Namespace": {}, + "Name": {}, + "DefaultValue": {}, + "ChangeSeverity": {}, + "UserDefined": { + "type": "boolean" + }, + "ValueType": {}, + "ValueOptions": { + "type": "list", + "member": {} + }, + "MinValue": { + "type": "integer" + }, + "MaxValue": { + "type": "integer" + }, + "MaxLength": { + "type": "integer" + }, + "Regex": { + "type": "structure", + "members": { + "Pattern": {}, + "Label": {} + } + } + } + } + } + } + } + }, + "DescribeConfigurationSettings": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "EnvironmentName": {} + } + }, + "output": { + "resultWrapper": "DescribeConfigurationSettingsResult", + "type": "structure", + "members": { + "ConfigurationSettings": { + "type": "list", + "member": { + "shape": "S1p" + } + } + } + } + }, + "DescribeEnvironmentHealth": { + "input": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "AttributeNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentHealthResult", + "type": "structure", + "members": { + "EnvironmentName": {}, + "HealthStatus": {}, + "Status": {}, + "Color": {}, + "Causes": { + "shape": "S2z" + }, + "ApplicationMetrics": { + "shape": "S31" + }, + "InstancesHealth": { + "type": "structure", + "members": { + "NoData": { + "type": "integer" + }, + "Unknown": { + "type": "integer" + }, + "Pending": { + "type": "integer" + }, + "Ok": { + "type": "integer" + }, + "Info": { + "type": "integer" + }, + "Warning": { + "type": "integer" + }, + "Degraded": { + "type": "integer" + }, + "Severe": { + "type": "integer" + } + } + }, + "RefreshedAt": { + "type": "timestamp" + } + } + } + }, + "DescribeEnvironmentManagedActionHistory": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "NextToken": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult", + "type": "structure", + "members": { + "ManagedActionHistoryItems": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ActionId": {}, + "ActionType": {}, + "ActionDescription": {}, + "FailureType": {}, + "Status": {}, + "FailureDescription": {}, + "ExecutedTime": { + "type": "timestamp" + }, + "FinishedTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeEnvironmentManagedActions": { + "input": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "Status": {} + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentManagedActionsResult", + "type": "structure", + "members": { + "ManagedActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ActionId": {}, + "ActionDescription": {}, + "ActionType": {}, + "Status": {}, + "WindowStartTime": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeEnvironmentResources": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentResourcesResult", + "type": "structure", + "members": { + "EnvironmentResources": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "AutoScalingGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "Instances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {} + } + } + }, + "LaunchConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "LoadBalancers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "Triggers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "Queues": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "URL": {} + } + } + } + } + } + } + } + }, + "DescribeEnvironments": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "EnvironmentIds": { + "type": "list", + "member": {} + }, + "EnvironmentNames": { + "type": "list", + "member": {} + }, + "IncludeDeleted": { + "type": "boolean" + }, + "IncludedDeletedBackTo": { + "type": "timestamp" + } + } + }, + "output": { + "shape": "Si", + "resultWrapper": "DescribeEnvironmentsResult" + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "TemplateName": {}, + "EnvironmentId": {}, + "EnvironmentName": {}, + "RequestId": {}, + "Severity": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventDate": { + "type": "timestamp" + }, + "Message": {}, + "ApplicationName": {}, + "VersionLabel": {}, + "TemplateName": {}, + "EnvironmentName": {}, + "RequestId": {}, + "Severity": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeInstancesHealth": { + "input": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "AttributeNames": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeInstancesHealthResult", + "type": "structure", + "members": { + "InstanceHealthList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {}, + "HealthStatus": {}, + "Color": {}, + "Causes": { + "shape": "S2z" + }, + "LaunchedAt": { + "type": "timestamp" + }, + "ApplicationMetrics": { + "shape": "S31" + }, + "System": { + "type": "structure", + "members": { + "CPUUtilization": { + "type": "structure", + "members": { + "User": { + "type": "double" + }, + "Nice": { + "type": "double" + }, + "System": { + "type": "double" + }, + "Idle": { + "type": "double" + }, + "IOWait": { + "type": "double" + }, + "IRQ": { + "type": "double" + }, + "SoftIRQ": { + "type": "double" + } + } + }, + "LoadAverage": { + "type": "list", + "member": { + "type": "double" + } + } + } + }, + "Deployment": { + "type": "structure", + "members": { + "VersionLabel": {}, + "DeploymentId": { + "type": "long" + }, + "Status": {}, + "DeploymentTime": { + "type": "timestamp" + } + } + }, + "AvailabilityZone": {}, + "InstanceType": {} + } + } + }, + "RefreshedAt": { + "type": "timestamp" + }, + "NextToken": {} + } + } + }, + "ListAvailableSolutionStacks": { + "output": { + "resultWrapper": "ListAvailableSolutionStacksResult", + "type": "structure", + "members": { + "SolutionStacks": { + "type": "list", + "member": {} + }, + "SolutionStackDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SolutionStackName": {}, + "PermittedFileTypes": { + "type": "list", + "member": {} + } + } + } + } + } + } + }, + "RebuildEnvironment": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + } + }, + "RequestEnvironmentInfo": { + "input": { + "type": "structure", + "required": [ + "InfoType" + ], + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "InfoType": {} + } + } + }, + "RestartAppServer": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + } + }, + "RetrieveEnvironmentInfo": { + "input": { + "type": "structure", + "required": [ + "InfoType" + ], + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "InfoType": {} + } + }, + "output": { + "resultWrapper": "RetrieveEnvironmentInfoResult", + "type": "structure", + "members": { + "EnvironmentInfo": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InfoType": {}, + "Ec2InstanceId": {}, + "SampleTimestamp": { + "type": "timestamp" + }, + "Message": {} + } + } + } + } + } + }, + "SwapEnvironmentCNAMEs": { + "input": { + "type": "structure", + "members": { + "SourceEnvironmentId": {}, + "SourceEnvironmentName": {}, + "DestinationEnvironmentId": {}, + "DestinationEnvironmentName": {} + } + } + }, + "TerminateEnvironment": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "TerminateResources": { + "type": "boolean" + }, + "ForceTerminate": { + "type": "boolean" + } + } + }, + "output": { + "shape": "Sk", + "resultWrapper": "TerminateEnvironmentResult" + } + }, + "UpdateApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "Description": {} + } + }, + "output": { + "shape": "S14", + "resultWrapper": "UpdateApplicationResult" + } + }, + "UpdateApplicationVersion": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "VersionLabel" + ], + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "Description": {} + } + }, + "output": { + "shape": "S1e", + "resultWrapper": "UpdateApplicationVersionResult" + } + }, + "UpdateConfigurationTemplate": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "TemplateName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "Description": {}, + "OptionSettings": { + "shape": "S1j" + }, + "OptionsToRemove": { + "shape": "S1w" + } + } + }, + "output": { + "shape": "S1p", + "resultWrapper": "UpdateConfigurationTemplateResult" + } + }, + "UpdateEnvironment": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "EnvironmentId": {}, + "EnvironmentName": {}, + "GroupName": {}, + "Description": {}, + "Tier": { + "shape": "S10" + }, + "VersionLabel": {}, + "TemplateName": {}, + "SolutionStackName": {}, + "OptionSettings": { + "shape": "S1j" + }, + "OptionsToRemove": { + "shape": "S1w" + } + } + }, + "output": { + "shape": "Sk", + "resultWrapper": "UpdateEnvironmentResult" + } + }, + "ValidateConfigurationSettings": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "OptionSettings" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "EnvironmentName": {}, + "OptionSettings": { + "shape": "S1j" + } + } + }, + "output": { + "resultWrapper": "ValidateConfigurationSettingsResult", + "type": "structure", + "members": { + "Messages": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Message": {}, + "Severity": {}, + "Namespace": {}, + "OptionName": {} + } + } + } + } + } + } + }, + "shapes": { + "Si": { + "type": "structure", + "members": { + "Environments": { + "type": "list", + "member": { + "shape": "Sk" + } + } + } + }, + "Sk": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "ApplicationName": {}, + "VersionLabel": {}, + "SolutionStackName": {}, + "TemplateName": {}, + "Description": {}, + "EndpointURL": {}, + "CNAME": {}, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "Status": {}, + "AbortableOperationInProgress": { + "type": "boolean" + }, + "Health": {}, + "HealthStatus": {}, + "Resources": { + "type": "structure", + "members": { + "LoadBalancer": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "Domain": {}, + "Listeners": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Protocol": {}, + "Port": { + "type": "integer" + } + } + } + } + } + } + } + }, + "Tier": { + "shape": "S10" + }, + "EnvironmentLinks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LinkName": {}, + "EnvironmentName": {} + } + } + } + } + }, + "S10": { + "type": "structure", + "members": { + "Name": {}, + "Type": {}, + "Version": {} + } + }, + "S14": { + "type": "structure", + "members": { + "Application": { + "shape": "S15" + } + } + }, + "S15": { + "type": "structure", + "members": { + "ApplicationName": {}, + "Description": {}, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "Versions": { + "shape": "S16" + }, + "ConfigurationTemplates": { + "type": "list", + "member": {} + } + } + }, + "S16": { + "type": "list", + "member": {} + }, + "S19": { + "type": "structure", + "members": { + "S3Bucket": {}, + "S3Key": {} + } + }, + "S1e": { + "type": "structure", + "members": { + "ApplicationVersion": { + "shape": "S1f" + } + } + }, + "S1f": { + "type": "structure", + "members": { + "ApplicationName": {}, + "Description": {}, + "VersionLabel": {}, + "SourceBundle": { + "shape": "S19" + }, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "Status": {} + } + }, + "S1j": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceName": {}, + "Namespace": {}, + "OptionName": {}, + "Value": {} + } + } + }, + "S1p": { + "type": "structure", + "members": { + "SolutionStackName": {}, + "ApplicationName": {}, + "TemplateName": {}, + "Description": {}, + "EnvironmentName": {}, + "DeploymentStatus": {}, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "OptionSettings": { + "shape": "S1j" + } + } + }, + "S1w": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceName": {}, + "Namespace": {}, + "OptionName": {} + } + } + }, + "S2z": { + "type": "list", + "member": {} + }, + "S31": { + "type": "structure", + "members": { + "Duration": { + "type": "integer" + }, + "RequestCount": { + "type": "integer" + }, + "StatusCodes": { + "type": "structure", + "members": { + "Status2xx": { + "type": "integer" + }, + "Status3xx": { + "type": "integer" + }, + "Status4xx": { + "type": "integer" + }, + "Status5xx": { + "type": "integer" + } + } + }, + "Latency": { + "type": "structure", + "members": { + "P999": { + "type": "double" + }, + "P99": { + "type": "double" + }, + "P95": { + "type": "double" + }, + "P90": { + "type": "double" + }, + "P85": { + "type": "double" + }, + "P75": { + "type": "double" + }, + "P50": { + "type": "double" + }, + "P10": { + "type": "double" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json new file mode 100644 index 0000000..383ce8d --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json @@ -0,0 +1,25 @@ +{ + "pagination": { + "DescribeApplicationVersions": { + "result_key": "ApplicationVersions" + }, + "DescribeApplications": { + "result_key": "Applications" + }, + "DescribeConfigurationOptions": { + "result_key": "Options" + }, + "DescribeEnvironments": { + "result_key": "Environments" + }, + "DescribeEvents": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "ListAvailableSolutionStacks": { + "result_key": "SolutionStacks" + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json b/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json new file mode 100644 index 0000000..5e35d8f --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json @@ -0,0 +1,395 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-02-01", + "endpointPrefix": "elasticfilesystem", + "protocol": "rest-json", + "serviceAbbreviation": "EFS", + "serviceFullName": "Amazon Elastic File System", + "signatureVersion": "v4" + }, + "operations": { + "CreateFileSystem": { + "http": { + "requestUri": "/2015-02-01/file-systems", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "CreationToken" + ], + "members": { + "CreationToken": {}, + "PerformanceMode": {} + } + }, + "output": { + "shape": "S4" + } + }, + "CreateMountTarget": { + "http": { + "requestUri": "/2015-02-01/mount-targets", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FileSystemId", + "SubnetId" + ], + "members": { + "FileSystemId": {}, + "SubnetId": {}, + "IpAddress": {}, + "SecurityGroups": { + "shape": "Sg" + } + } + }, + "output": { + "shape": "Si" + } + }, + "CreateTags": { + "http": { + "requestUri": "/2015-02-01/create-tags/{FileSystemId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FileSystemId", + "Tags" + ], + "members": { + "FileSystemId": { + "location": "uri", + "locationName": "FileSystemId" + }, + "Tags": { + "shape": "Sm" + } + } + } + }, + "DeleteFileSystem": { + "http": { + "method": "DELETE", + "requestUri": "/2015-02-01/file-systems/{FileSystemId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FileSystemId" + ], + "members": { + "FileSystemId": { + "location": "uri", + "locationName": "FileSystemId" + } + } + } + }, + "DeleteMountTarget": { + "http": { + "method": "DELETE", + "requestUri": "/2015-02-01/mount-targets/{MountTargetId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "MountTargetId" + ], + "members": { + "MountTargetId": { + "location": "uri", + "locationName": "MountTargetId" + } + } + } + }, + "DeleteTags": { + "http": { + "requestUri": "/2015-02-01/delete-tags/{FileSystemId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FileSystemId", + "TagKeys" + ], + "members": { + "FileSystemId": { + "location": "uri", + "locationName": "FileSystemId" + }, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "DescribeFileSystems": { + "http": { + "method": "GET", + "requestUri": "/2015-02-01/file-systems", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "CreationToken": { + "location": "querystring", + "locationName": "CreationToken" + }, + "FileSystemId": { + "location": "querystring", + "locationName": "FileSystemId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "FileSystems": { + "type": "list", + "member": { + "shape": "S4" + } + }, + "NextMarker": {} + } + } + }, + "DescribeMountTargetSecurityGroups": { + "http": { + "method": "GET", + "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "MountTargetId" + ], + "members": { + "MountTargetId": { + "location": "uri", + "locationName": "MountTargetId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "SecurityGroups" + ], + "members": { + "SecurityGroups": { + "shape": "Sg" + } + } + } + }, + "DescribeMountTargets": { + "http": { + "method": "GET", + "requestUri": "/2015-02-01/mount-targets", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "FileSystemId": { + "location": "querystring", + "locationName": "FileSystemId" + }, + "MountTargetId": { + "location": "querystring", + "locationName": "MountTargetId" + } + } + }, + "output": { + "type": "structure", + "members": { + "Marker": {}, + "MountTargets": { + "type": "list", + "member": { + "shape": "Si" + } + }, + "NextMarker": {} + } + } + }, + "DescribeTags": { + "http": { + "method": "GET", + "requestUri": "/2015-02-01/tags/{FileSystemId}/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FileSystemId" + ], + "members": { + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "FileSystemId": { + "location": "uri", + "locationName": "FileSystemId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Tags" + ], + "members": { + "Marker": {}, + "Tags": { + "shape": "Sm" + }, + "NextMarker": {} + } + } + }, + "ModifyMountTargetSecurityGroups": { + "http": { + "method": "PUT", + "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "MountTargetId" + ], + "members": { + "MountTargetId": { + "location": "uri", + "locationName": "MountTargetId" + }, + "SecurityGroups": { + "shape": "Sg" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "required": [ + "OwnerId", + "CreationToken", + "FileSystemId", + "CreationTime", + "LifeCycleState", + "NumberOfMountTargets", + "SizeInBytes", + "PerformanceMode" + ], + "members": { + "OwnerId": {}, + "CreationToken": {}, + "FileSystemId": {}, + "CreationTime": { + "type": "timestamp" + }, + "LifeCycleState": {}, + "Name": {}, + "NumberOfMountTargets": { + "type": "integer" + }, + "SizeInBytes": { + "type": "structure", + "required": [ + "Value" + ], + "members": { + "Value": { + "type": "long" + }, + "Timestamp": { + "type": "timestamp" + } + } + }, + "PerformanceMode": {} + } + }, + "Sg": { + "type": "list", + "member": {} + }, + "Si": { + "type": "structure", + "required": [ + "MountTargetId", + "FileSystemId", + "SubnetId", + "LifeCycleState" + ], + "members": { + "OwnerId": {}, + "MountTargetId": {}, + "FileSystemId": {}, + "SubnetId": {}, + "LifeCycleState": {}, + "IpAddress": {}, + "NetworkInterfaceId": {} + } + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json new file mode 100644 index 0000000..ce50fdd --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json @@ -0,0 +1,1036 @@ +{ + "version": "1.0", + "examples": { + "AddTags": [ + { + "input": { + "LoadBalancerNames": [ + "my-load-balancer" + ], + "Tags": [ + { + "Key": "project", + "Value": "lima" + }, + { + "Key": "department", + "Value": "digital-media" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds two tags to the specified load balancer.", + "id": "elb-add-tags-1", + "title": "To add tags to a load balancer" + } + ], + "ApplySecurityGroupsToLoadBalancer": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "SecurityGroups": [ + "sg-fc448899" + ] + }, + "output": { + "SecurityGroups": [ + "sg-fc448899" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates a security group with the specified load balancer in a VPC.", + "id": "elb-apply-security-groups-to-load-balancer-1", + "title": "To associate a security group with a load balancer in a VPC" + } + ], + "AttachLoadBalancerToSubnets": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "Subnets": [ + "subnet-0ecac448" + ] + }, + "output": { + "Subnets": [ + "subnet-15aaab61", + "subnet-0ecac448" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the specified subnet to the set of configured subnets for the specified load balancer.", + "id": "elb-attach-load-balancer-to-subnets-1", + "title": "To attach subnets to a load balancer" + } + ], + "ConfigureHealthCheck": [ + { + "input": { + "HealthCheck": { + "HealthyThreshold": 2, + "Interval": 30, + "Target": "HTTP:80/png", + "Timeout": 3, + "UnhealthyThreshold": 2 + }, + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "HealthCheck": { + "HealthyThreshold": 2, + "Interval": 30, + "Target": "HTTP:80/png", + "Timeout": 3, + "UnhealthyThreshold": 2 + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example specifies the health check settings used to evaluate the health of your backend EC2 instances.", + "id": "elb-configure-health-check-1", + "title": "To specify the health check settings for your backend EC2 instances" + } + ], + "CreateAppCookieStickinessPolicy": [ + { + "input": { + "CookieName": "my-app-cookie", + "LoadBalancerName": "my-load-balancer", + "PolicyName": "my-app-cookie-policy" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example generates a stickiness policy that follows the sticky session lifetimes of the application-generated cookie.", + "id": "elb-create-app-cookie-stickiness-policy-1", + "title": "To generate a stickiness policy for your load balancer" + } + ], + "CreateLBCookieStickinessPolicy": [ + { + "input": { + "CookieExpirationPeriod": 60, + "LoadBalancerName": "my-load-balancer", + "PolicyName": "my-duration-cookie-policy" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example generates a stickiness policy with sticky session lifetimes controlled by the specified expiration period.", + "id": "elb-create-lb-cookie-stickiness-policy-1", + "title": "To generate a duration-based stickiness policy for your load balancer" + } + ], + "CreateLoadBalancer": [ + { + "input": { + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + } + ], + "LoadBalancerName": "my-load-balancer", + "SecurityGroups": [ + "sg-a61988c3" + ], + "Subnets": [ + "subnet-15aaab61" + ] + }, + "output": { + "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a load balancer with an HTTP listener in a VPC.", + "id": "elb-create-load-balancer-1", + "title": "To create an HTTP load balancer in a VPC" + }, + { + "input": { + "AvailabilityZones": [ + "us-west-2a" + ], + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + } + ], + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "DNSName": "my-load-balancer-123456789.us-west-2.elb.amazonaws.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a load balancer with an HTTP listener in EC2-Classic.", + "id": "elb-create-load-balancer-2", + "title": "To create an HTTP load balancer in EC2-Classic" + }, + { + "input": { + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + }, + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 443, + "Protocol": "HTTPS", + "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" + } + ], + "LoadBalancerName": "my-load-balancer", + "SecurityGroups": [ + "sg-a61988c3" + ], + "Subnets": [ + "subnet-15aaab61" + ] + }, + "output": { + "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a load balancer with an HTTPS listener in a VPC.", + "id": "elb-create-load-balancer-3", + "title": "To create an HTTPS load balancer in a VPC" + }, + { + "input": { + "AvailabilityZones": [ + "us-west-2a" + ], + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + }, + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 443, + "Protocol": "HTTPS", + "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" + } + ], + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "DNSName": "my-load-balancer-123456789.us-west-2.elb.amazonaws.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a load balancer with an HTTPS listener in EC2-Classic.", + "id": "elb-create-load-balancer-4", + "title": "To create an HTTPS load balancer in EC2-Classic" + }, + { + "input": { + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + } + ], + "LoadBalancerName": "my-load-balancer", + "Scheme": "internal", + "SecurityGroups": [ + "sg-a61988c3" + ], + "Subnets": [ + "subnet-15aaab61" + ] + }, + "output": { + "DNSName": "internal-my-load-balancer-123456789.us-west-2.elb.amazonaws.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an internal load balancer with an HTTP listener in a VPC.", + "id": "elb-create-load-balancer-5", + "title": "To create an internal load balancer" + } + ], + "CreateLoadBalancerListeners": [ + { + "input": { + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + } + ], + "LoadBalancerName": "my-load-balancer" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a listener for your load balancer at port 80 using the HTTP protocol.", + "id": "elb-create-load-balancer-listeners-1", + "title": "To create an HTTP listener for a load balancer" + }, + { + "input": { + "Listeners": [ + { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 443, + "Protocol": "HTTPS", + "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" + } + ], + "LoadBalancerName": "my-load-balancer" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a listener for your load balancer at port 443 using the HTTPS protocol.", + "id": "elb-create-load-balancer-listeners-2", + "title": "To create an HTTPS listener for a load balancer" + } + ], + "CreateLoadBalancerPolicy": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "PolicyAttributes": [ + { + "AttributeName": "ProxyProtocol", + "AttributeValue": "true" + } + ], + "PolicyName": "my-ProxyProtocol-policy", + "PolicyTypeName": "ProxyProtocolPolicyType" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a policy that enables Proxy Protocol on the specified load balancer.", + "id": "elb-create-load-balancer-policy-1", + "title": "To create a policy that enables Proxy Protocol on a load balancer" + }, + { + "input": { + "LoadBalancerName": "my-load-balancer", + "PolicyAttributes": [ + { + "AttributeName": "PublicKey", + "AttributeValue": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwAYUjnfyEyXr1pxjhFWBpMlggUcqoi3kl+dS74kj//c6x7ROtusUaeQCTgIUkayttRDWchuqo1pHC1u+n5xxXnBBe2ejbb2WRsKIQ5rXEeixsjFpFsojpSQKkzhVGI6mJVZBJDVKSHmswnwLBdofLhzvllpovBPTHe+o4haAWvDBALJU0pkSI1FecPHcs2hwxf14zHoXy1e2k36A64nXW43wtfx5qcVSIxtCEOjnYRg7RPvybaGfQ+v6Iaxb/+7J5kEvZhTFQId+bSiJImF1FSUT1W1xwzBZPUbcUkkXDj45vC2s3Z8E+Lk7a3uZhvsQHLZnrfuWjBWGWvZ/MhZYgEXAMPLE" + } + ], + "PolicyName": "my-PublicKey-policy", + "PolicyTypeName": "PublicKeyPolicyType" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a public key policy.", + "id": "elb-create-load-balancer-policy-2", + "title": "To create a public key policy" + }, + { + "input": { + "LoadBalancerName": "my-load-balancer", + "PolicyAttributes": [ + { + "AttributeName": "PublicKeyPolicyName", + "AttributeValue": "my-PublicKey-policy" + } + ], + "PolicyName": "my-authentication-policy", + "PolicyTypeName": "BackendServerAuthenticationPolicyType" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a backend server authentication policy that enables authentication on your backend instance using a public key policy.", + "id": "elb-create-load-balancer-policy-3", + "title": "To create a backend server authentication policy" + } + ], + "DeleteLoadBalancer": [ + { + "input": { + "LoadBalancerName": "my-load-balancer" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified load balancer.", + "id": "elb-delete-load-balancer-1", + "title": "To delete a load balancer" + } + ], + "DeleteLoadBalancerListeners": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "LoadBalancerPorts": [ + 80 + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the listener for the specified port from the specified load balancer.", + "id": "elb-delete-load-balancer-listeners-1", + "title": "To delete a listener from your load balancer" + } + ], + "DeleteLoadBalancerPolicy": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "PolicyName": "my-duration-cookie-policy" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified policy from the specified load balancer. The policy must not be enabled on any listener.", + "id": "elb-delete-load-balancer-policy-1", + "title": "To delete a policy from your load balancer" + } + ], + "DeregisterInstancesFromLoadBalancer": [ + { + "input": { + "Instances": [ + { + "InstanceId": "i-d6f6fae3" + } + ], + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "Instances": [ + { + "InstanceId": "i-207d9717" + }, + { + "InstanceId": "i-afefb49b" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deregisters the specified instance from the specified load balancer.", + "id": "elb-deregister-instances-from-load-balancer-1", + "title": "To deregister instances from a load balancer" + } + ], + "DescribeInstanceHealth": [ + { + "input": { + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "InstanceStates": [ + { + "Description": "N/A", + "InstanceId": "i-207d9717", + "ReasonCode": "N/A", + "State": "InService" + }, + { + "Description": "N/A", + "InstanceId": "i-afefb49b", + "ReasonCode": "N/A", + "State": "InService" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the health of the instances for the specified load balancer.", + "id": "elb-describe-instance-health-1", + "title": "To describe the health of the instances for a load balancer" + } + ], + "DescribeLoadBalancerAttributes": [ + { + "input": { + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "LoadBalancerAttributes": { + "AccessLog": { + "Enabled": false + }, + "ConnectionDraining": { + "Enabled": false, + "Timeout": 300 + }, + "ConnectionSettings": { + "IdleTimeout": 60 + }, + "CrossZoneLoadBalancing": { + "Enabled": false + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the attributes of the specified load balancer.", + "id": "elb-describe-load-balancer-attributes-1", + "title": "To describe the attributes of a load balancer" + } + ], + "DescribeLoadBalancerPolicies": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "PolicyNames": [ + "my-authentication-policy" + ] + }, + "output": { + "PolicyDescriptions": [ + { + "PolicyAttributeDescriptions": [ + { + "AttributeName": "PublicKeyPolicyName", + "AttributeValue": "my-PublicKey-policy" + } + ], + "PolicyName": "my-authentication-policy", + "PolicyTypeName": "BackendServerAuthenticationPolicyType" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified policy associated with the specified load balancer.", + "id": "elb-describe-load-balancer-policies-1", + "title": "To describe a policy associated with a load balancer" + } + ], + "DescribeLoadBalancerPolicyTypes": [ + { + "input": { + "PolicyTypeNames": [ + "ProxyProtocolPolicyType" + ] + }, + "output": { + "PolicyTypeDescriptions": [ + { + "Description": "Policy that controls whether to include the IP address and port of the originating request for TCP messages. This policy operates on TCP listeners only.", + "PolicyAttributeTypeDescriptions": [ + { + "AttributeName": "ProxyProtocol", + "AttributeType": "Boolean", + "Cardinality": "ONE" + } + ], + "PolicyTypeName": "ProxyProtocolPolicyType" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified load balancer policy type.", + "id": "elb-describe-load-balancer-policy-types-1", + "title": "To describe a load balancer policy type defined by Elastic Load Balancing" + } + ], + "DescribeLoadBalancers": [ + { + "input": { + "LoadBalancerNames": [ + "my-load-balancer" + ] + }, + "output": { + "LoadBalancerDescriptions": [ + { + "AvailabilityZones": [ + "us-west-2a" + ], + "BackendServerDescriptions": [ + { + "InstancePort": 80, + "PolicyNames": [ + "my-ProxyProtocol-policy" + ] + } + ], + "CanonicalHostedZoneName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com", + "CanonicalHostedZoneNameID": "Z3DZXE0EXAMPLE", + "CreatedTime": "2015-03-19T03:24:02.650Z", + "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com", + "HealthCheck": { + "HealthyThreshold": 2, + "Interval": 30, + "Target": "HTTP:80/png", + "Timeout": 3, + "UnhealthyThreshold": 2 + }, + "Instances": [ + { + "InstanceId": "i-207d9717" + }, + { + "InstanceId": "i-afefb49b" + } + ], + "ListenerDescriptions": [ + { + "Listener": { + "InstancePort": 80, + "InstanceProtocol": "HTTP", + "LoadBalancerPort": 80, + "Protocol": "HTTP" + }, + "PolicyNames": [ + + ] + }, + { + "Listener": { + "InstancePort": 443, + "InstanceProtocol": "HTTPS", + "LoadBalancerPort": 443, + "Protocol": "HTTPS", + "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" + }, + "PolicyNames": [ + "ELBSecurityPolicy-2015-03" + ] + } + ], + "LoadBalancerName": "my-load-balancer", + "Policies": { + "AppCookieStickinessPolicies": [ + + ], + "LBCookieStickinessPolicies": [ + { + "CookieExpirationPeriod": 60, + "PolicyName": "my-duration-cookie-policy" + } + ], + "OtherPolicies": [ + "my-PublicKey-policy", + "my-authentication-policy", + "my-SSLNegotiation-policy", + "my-ProxyProtocol-policy", + "ELBSecurityPolicy-2015-03" + ] + }, + "Scheme": "internet-facing", + "SecurityGroups": [ + "sg-a61988c3" + ], + "SourceSecurityGroup": { + "GroupName": "my-elb-sg", + "OwnerAlias": "123456789012" + }, + "Subnets": [ + "subnet-15aaab61" + ], + "VPCId": "vpc-a01106c2" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified load balancer.", + "id": "elb-describe-load-balancers-1", + "title": "To describe one of your load balancers" + } + ], + "DescribeTags": [ + { + "input": { + "LoadBalancerNames": [ + "my-load-balancer" + ] + }, + "output": { + "TagDescriptions": [ + { + "LoadBalancerName": "my-load-balancer", + "Tags": [ + { + "Key": "project", + "Value": "lima" + }, + { + "Key": "department", + "Value": "digital-media" + } + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the tags for the specified load balancer.", + "id": "elb-describe-tags-1", + "title": "To describe the tags for a load balancer" + } + ], + "DetachLoadBalancerFromSubnets": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "Subnets": [ + "subnet-0ecac448" + ] + }, + "output": { + "Subnets": [ + "subnet-15aaab61" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example detaches the specified load balancer from the specified subnet.", + "id": "elb-detach-load-balancer-from-subnets-1", + "title": "To detach a load balancer from a subnet" + } + ], + "DisableAvailabilityZonesForLoadBalancer": [ + { + "input": { + "AvailabilityZones": [ + "us-west-2a" + ], + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "AvailabilityZones": [ + "us-west-2b" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example removes the specified Availability Zone from the set of Availability Zones for the specified load balancer.", + "id": "elb-disable-availability-zones-for-load-balancer-1", + "title": "To disable an Availability Zone for a load balancer" + } + ], + "EnableAvailabilityZonesForLoadBalancer": [ + { + "input": { + "AvailabilityZones": [ + "us-west-2b" + ], + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "AvailabilityZones": [ + "us-west-2a", + "us-west-2b" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the specified Availability Zone to the specified load balancer.", + "id": "elb-enable-availability-zones-for-load-balancer-1", + "title": "To enable an Availability Zone for a load balancer" + } + ], + "ModifyLoadBalancerAttributes": [ + { + "input": { + "LoadBalancerAttributes": { + "CrossZoneLoadBalancing": { + "Enabled": true + } + }, + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "LoadBalancerAttributes": { + "CrossZoneLoadBalancing": { + "Enabled": true + } + }, + "LoadBalancerName": "my-load-balancer" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables cross-zone load balancing for the specified load balancer.", + "id": "elb-modify-load-balancer-attributes-1", + "title": "To enable cross-zone load balancing" + }, + { + "input": { + "LoadBalancerAttributes": { + "ConnectionDraining": { + "Enabled": true, + "Timeout": 300 + } + }, + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "LoadBalancerAttributes": { + "ConnectionDraining": { + "Enabled": true, + "Timeout": 300 + } + }, + "LoadBalancerName": "my-load-balancer" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables connection draining for the specified load balancer.", + "id": "elb-modify-load-balancer-attributes-2", + "title": "To enable connection draining" + } + ], + "RegisterInstancesWithLoadBalancer": [ + { + "input": { + "Instances": [ + { + "InstanceId": "i-d6f6fae3" + } + ], + "LoadBalancerName": "my-load-balancer" + }, + "output": { + "Instances": [ + { + "InstanceId": "i-d6f6fae3" + }, + { + "InstanceId": "i-207d9717" + }, + { + "InstanceId": "i-afefb49b" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example registers the specified instance with the specified load balancer.", + "id": "elb-register-instances-with-load-balancer-1", + "title": "To register instances with a load balancer" + } + ], + "RemoveTags": [ + { + "input": { + "LoadBalancerNames": [ + "my-load-balancer" + ], + "Tags": [ + { + "Key": "project" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example removes the specified tag from the specified load balancer.", + "id": "elb-remove-tags-1", + "title": "To remove tags from a load balancer" + } + ], + "SetLoadBalancerListenerSSLCertificate": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "LoadBalancerPort": 443, + "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/new-server-cert" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example replaces the existing SSL certificate for the specified HTTPS listener.", + "id": "elb-set-load-balancer-listener-ssl-certificate-1", + "title": "To update the SSL certificate for an HTTPS listener" + } + ], + "SetLoadBalancerPoliciesForBackendServer": [ + { + "input": { + "InstancePort": 80, + "LoadBalancerName": "my-load-balancer", + "PolicyNames": [ + "my-ProxyProtocol-policy" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example replaces the policies that are currently associated with the specified port.", + "id": "elb-set-load-balancer-policies-for-backend-server-1", + "title": "To replace the policies associated with a port for a backend instance" + } + ], + "SetLoadBalancerPoliciesOfListener": [ + { + "input": { + "LoadBalancerName": "my-load-balancer", + "LoadBalancerPort": 80, + "PolicyNames": [ + "my-SSLNegotiation-policy" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example replaces the policies that are currently associated with the specified listener.", + "id": "elb-set-load-balancer-policies-of-listener-1", + "title": "To replace the policies associated with a listener" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json new file mode 100644 index 0000000..f2a39d3 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json @@ -0,0 +1,973 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-06-01", + "endpointPrefix": "elasticloadbalancing", + "protocol": "query", + "serviceFullName": "Elastic Load Balancing", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerNames", + "Tags" + ], + "members": { + "LoadBalancerNames": { + "shape": "S2" + }, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "AddTagsResult", + "type": "structure", + "members": {} + } + }, + "ApplySecurityGroupsToLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "SecurityGroups" + ], + "members": { + "LoadBalancerName": {}, + "SecurityGroups": { + "shape": "Sa" + } + } + }, + "output": { + "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult", + "type": "structure", + "members": { + "SecurityGroups": { + "shape": "Sa" + } + } + } + }, + "AttachLoadBalancerToSubnets": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Subnets" + ], + "members": { + "LoadBalancerName": {}, + "Subnets": { + "shape": "Se" + } + } + }, + "output": { + "resultWrapper": "AttachLoadBalancerToSubnetsResult", + "type": "structure", + "members": { + "Subnets": { + "shape": "Se" + } + } + } + }, + "ConfigureHealthCheck": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "HealthCheck" + ], + "members": { + "LoadBalancerName": {}, + "HealthCheck": { + "shape": "Si" + } + } + }, + "output": { + "resultWrapper": "ConfigureHealthCheckResult", + "type": "structure", + "members": { + "HealthCheck": { + "shape": "Si" + } + } + } + }, + "CreateAppCookieStickinessPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName", + "CookieName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {}, + "CookieName": {} + } + }, + "output": { + "resultWrapper": "CreateAppCookieStickinessPolicyResult", + "type": "structure", + "members": {} + } + }, + "CreateLBCookieStickinessPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {}, + "CookieExpirationPeriod": { + "type": "long" + } + } + }, + "output": { + "resultWrapper": "CreateLBCookieStickinessPolicyResult", + "type": "structure", + "members": {} + } + }, + "CreateLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Listeners" + ], + "members": { + "LoadBalancerName": {}, + "Listeners": { + "shape": "Sx" + }, + "AvailabilityZones": { + "shape": "S13" + }, + "Subnets": { + "shape": "Se" + }, + "SecurityGroups": { + "shape": "Sa" + }, + "Scheme": {}, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerResult", + "type": "structure", + "members": { + "DNSName": {} + } + } + }, + "CreateLoadBalancerListeners": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Listeners" + ], + "members": { + "LoadBalancerName": {}, + "Listeners": { + "shape": "Sx" + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerListenersResult", + "type": "structure", + "members": {} + } + }, + "CreateLoadBalancerPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName", + "PolicyTypeName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {}, + "PolicyTypeName": {}, + "PolicyAttributes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValue": {} + } + } + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerPolicyResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName" + ], + "members": { + "LoadBalancerName": {} + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancerListeners": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerPorts" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerPorts": { + "type": "list", + "member": { + "type": "integer" + } + } + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerListenersResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancerPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerPolicyResult", + "type": "structure", + "members": {} + } + }, + "DeregisterInstancesFromLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Instances" + ], + "members": { + "LoadBalancerName": {}, + "Instances": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "DeregisterInstancesFromLoadBalancerResult", + "type": "structure", + "members": { + "Instances": { + "shape": "S1p" + } + } + } + }, + "DescribeInstanceHealth": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName" + ], + "members": { + "LoadBalancerName": {}, + "Instances": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "DescribeInstanceHealthResult", + "type": "structure", + "members": { + "InstanceStates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {}, + "State": {}, + "ReasonCode": {}, + "Description": {} + } + } + } + } + } + }, + "DescribeLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName" + ], + "members": { + "LoadBalancerName": {} + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerAttributesResult", + "type": "structure", + "members": { + "LoadBalancerAttributes": { + "shape": "S22" + } + } + } + }, + "DescribeLoadBalancerPolicies": { + "input": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "PolicyNames": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerPoliciesResult", + "type": "structure", + "members": { + "PolicyDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "PolicyTypeName": {}, + "PolicyAttributeDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValue": {} + } + } + } + } + } + } + } + } + }, + "DescribeLoadBalancerPolicyTypes": { + "input": { + "type": "structure", + "members": { + "PolicyTypeNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerPolicyTypesResult", + "type": "structure", + "members": { + "PolicyTypeDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyTypeName": {}, + "Description": {}, + "PolicyAttributeTypeDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeType": {}, + "Description": {}, + "DefaultValue": {}, + "Cardinality": {} + } + } + } + } + } + } + } + } + }, + "DescribeLoadBalancers": { + "input": { + "type": "structure", + "members": { + "LoadBalancerNames": { + "shape": "S2" + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancersResult", + "type": "structure", + "members": { + "LoadBalancerDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "DNSName": {}, + "CanonicalHostedZoneName": {}, + "CanonicalHostedZoneNameID": {}, + "ListenerDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Listener": { + "shape": "Sy" + }, + "PolicyNames": { + "shape": "S2k" + } + } + } + }, + "Policies": { + "type": "structure", + "members": { + "AppCookieStickinessPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "CookieName": {} + } + } + }, + "LBCookieStickinessPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "CookieExpirationPeriod": { + "type": "long" + } + } + } + }, + "OtherPolicies": { + "shape": "S2k" + } + } + }, + "BackendServerDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstancePort": { + "type": "integer" + }, + "PolicyNames": { + "shape": "S2k" + } + } + } + }, + "AvailabilityZones": { + "shape": "S13" + }, + "Subnets": { + "shape": "Se" + }, + "VPCId": {}, + "Instances": { + "shape": "S1p" + }, + "HealthCheck": { + "shape": "Si" + }, + "SourceSecurityGroup": { + "type": "structure", + "members": { + "OwnerAlias": {}, + "GroupName": {} + } + }, + "SecurityGroups": { + "shape": "Sa" + }, + "CreatedTime": { + "type": "timestamp" + }, + "Scheme": {} + } + } + }, + "NextMarker": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerNames" + ], + "members": { + "LoadBalancerNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "TagDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "Tags": { + "shape": "S4" + } + } + } + } + } + } + }, + "DetachLoadBalancerFromSubnets": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Subnets" + ], + "members": { + "LoadBalancerName": {}, + "Subnets": { + "shape": "Se" + } + } + }, + "output": { + "resultWrapper": "DetachLoadBalancerFromSubnetsResult", + "type": "structure", + "members": { + "Subnets": { + "shape": "Se" + } + } + } + }, + "DisableAvailabilityZonesForLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "AvailabilityZones" + ], + "members": { + "LoadBalancerName": {}, + "AvailabilityZones": { + "shape": "S13" + } + } + }, + "output": { + "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult", + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "S13" + } + } + } + }, + "EnableAvailabilityZonesForLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "AvailabilityZones" + ], + "members": { + "LoadBalancerName": {}, + "AvailabilityZones": { + "shape": "S13" + } + } + }, + "output": { + "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult", + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "S13" + } + } + } + }, + "ModifyLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerAttributes" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerAttributes": { + "shape": "S22" + } + } + }, + "output": { + "resultWrapper": "ModifyLoadBalancerAttributesResult", + "type": "structure", + "members": { + "LoadBalancerName": {}, + "LoadBalancerAttributes": { + "shape": "S22" + } + } + } + }, + "RegisterInstancesWithLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Instances" + ], + "members": { + "LoadBalancerName": {}, + "Instances": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "RegisterInstancesWithLoadBalancerResult", + "type": "structure", + "members": { + "Instances": { + "shape": "S1p" + } + } + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerNames", + "Tags" + ], + "members": { + "LoadBalancerNames": { + "shape": "S2" + }, + "Tags": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {} + } + } + } + } + }, + "output": { + "resultWrapper": "RemoveTagsResult", + "type": "structure", + "members": {} + } + }, + "SetLoadBalancerListenerSSLCertificate": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerPort", + "SSLCertificateId" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerPort": { + "type": "integer" + }, + "SSLCertificateId": {} + } + }, + "output": { + "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult", + "type": "structure", + "members": {} + } + }, + "SetLoadBalancerPoliciesForBackendServer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "InstancePort", + "PolicyNames" + ], + "members": { + "LoadBalancerName": {}, + "InstancePort": { + "type": "integer" + }, + "PolicyNames": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult", + "type": "structure", + "members": {} + } + }, + "SetLoadBalancerPoliciesOfListener": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerPort", + "PolicyNames" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerPort": { + "type": "integer" + }, + "PolicyNames": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult", + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sa": { + "type": "list", + "member": {} + }, + "Se": { + "type": "list", + "member": {} + }, + "Si": { + "type": "structure", + "required": [ + "Target", + "Interval", + "Timeout", + "UnhealthyThreshold", + "HealthyThreshold" + ], + "members": { + "Target": {}, + "Interval": { + "type": "integer" + }, + "Timeout": { + "type": "integer" + }, + "UnhealthyThreshold": { + "type": "integer" + }, + "HealthyThreshold": { + "type": "integer" + } + } + }, + "Sx": { + "type": "list", + "member": { + "shape": "Sy" + } + }, + "Sy": { + "type": "structure", + "required": [ + "Protocol", + "LoadBalancerPort", + "InstancePort" + ], + "members": { + "Protocol": {}, + "LoadBalancerPort": { + "type": "integer" + }, + "InstanceProtocol": {}, + "InstancePort": { + "type": "integer" + }, + "SSLCertificateId": {} + } + }, + "S13": { + "type": "list", + "member": {} + }, + "S1p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {} + } + } + }, + "S22": { + "type": "structure", + "members": { + "CrossZoneLoadBalancing": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "type": "boolean" + } + } + }, + "AccessLog": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "S3BucketName": {}, + "EmitInterval": { + "type": "integer" + }, + "S3BucketPrefix": {} + } + }, + "ConnectionDraining": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "Timeout": { + "type": "integer" + } + } + }, + "ConnectionSettings": { + "type": "structure", + "required": [ + "IdleTimeout" + ], + "members": { + "IdleTimeout": { + "type": "integer" + } + } + }, + "AdditionalAttributes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } + }, + "S2k": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json new file mode 100644 index 0000000..82113a7 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json @@ -0,0 +1,18 @@ +{ + "pagination": { + "DescribeInstanceHealth": { + "result_key": "InstanceStates" + }, + "DescribeLoadBalancerPolicies": { + "result_key": "PolicyDescriptions" + }, + "DescribeLoadBalancerPolicyTypes": { + "result_key": "PolicyTypeDescriptions" + }, + "DescribeLoadBalancers": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "LoadBalancerDescriptions" + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json new file mode 100644 index 0000000..f02573e --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json @@ -0,0 +1,49 @@ +{ + "version":2, + "waiters":{ + "InstanceDeregistered": { + "delay": 15, + "operation": "DescribeInstanceHealth", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "OutOfService", + "matcher": "pathAll", + "state": "success", + "argument": "InstanceStates[].State" + }, + { + "matcher": "error", + "expected": "InvalidInstance", + "state": "success" + } + ] + }, + "AnyInstanceInService":{ + "acceptors":[ + { + "argument":"InstanceStates[].State", + "expected":"InService", + "matcher":"pathAny", + "state":"success" + } + ], + "delay":15, + "maxAttempts":40, + "operation":"DescribeInstanceHealth" + }, + "InstanceInService":{ + "acceptors":[ + { + "argument":"InstanceStates[].State", + "expected":"InService", + "matcher":"pathAll", + "state":"success" + } + ], + "delay":15, + "maxAttempts":40, + "operation":"DescribeInstanceHealth" + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json new file mode 100644 index 0000000..508b099 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json @@ -0,0 +1,1384 @@ +{ + "version": "1.0", + "examples": { + "AddTags": [ + { + "input": { + "ResourceArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + ], + "Tags": [ + { + "Key": "project", + "Value": "lima" + }, + { + "Key": "department", + "Value": "digital-media" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example adds the specified tags to the specified load balancer.", + "id": "elbv2-add-tags-1", + "title": "To add tags to a load balancer" + } + ], + "CreateListener": [ + { + "input": { + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 80, + "Protocol": "HTTP" + }, + "output": { + "Listeners": [ + { + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 80, + "Protocol": "HTTP" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an HTTP listener for the specified load balancer that forwards requests to the specified target group.", + "id": "elbv2-create-listener-1", + "title": "To create an HTTP listener" + }, + { + "input": { + "Certificates": [ + { + "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-server-cert" + } + ], + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 443, + "Protocol": "HTTPS", + "SslPolicy": "ELBSecurityPolicy-2015-05" + }, + "output": { + "Listeners": [ + { + "Certificates": [ + { + "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-server-cert" + } + ], + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 443, + "Protocol": "HTTPS", + "SslPolicy": "ELBSecurityPolicy-2015-05" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an HTTPS listener for the specified load balancer that forwards requests to the specified target group. Note that you must specify an SSL certificate for an HTTPS listener. You can create and manage certificates using AWS Certificate Manager (ACM). Alternatively, you can create a certificate using SSL/TLS tools, get the certificate signed by a certificate authority (CA), and upload the certificate to AWS Identity and Access Management (IAM).", + "id": "elbv2-create-listener-2", + "title": "To create an HTTPS listener" + } + ], + "CreateLoadBalancer": [ + { + "input": { + "Name": "my-load-balancer", + "Subnets": [ + "subnet-b7d581c0", + "subnet-8360a9e7" + ] + }, + "output": { + "LoadBalancers": [ + { + "AvailabilityZones": [ + { + "SubnetId": "subnet-8360a9e7", + "ZoneName": "us-west-2a" + }, + { + "SubnetId": "subnet-b7d581c0", + "ZoneName": "us-west-2b" + } + ], + "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", + "CreatedTime": "2016-03-25T21:26:12.920Z", + "DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "LoadBalancerName": "my-load-balancer", + "Scheme": "internet-facing", + "SecurityGroups": [ + "sg-5943793c" + ], + "State": { + "Code": "provisioning" + }, + "Type": "application", + "VpcId": "vpc-3ac0fb5f" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an Internet-facing load balancer and enables the Availability Zones for the specified subnets.", + "id": "elbv2-create-load-balancer-1", + "title": "To create an Internet-facing load balancer" + }, + { + "input": { + "Name": "my-internal-load-balancer", + "Scheme": "internal", + "SecurityGroups": [ + + ], + "Subnets": [ + "subnet-b7d581c0", + "subnet-8360a9e7" + ] + }, + "output": { + "LoadBalancers": [ + { + "AvailabilityZones": [ + { + "SubnetId": "subnet-8360a9e7", + "ZoneName": "us-west-2a" + }, + { + "SubnetId": "subnet-b7d581c0", + "ZoneName": "us-west-2b" + } + ], + "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", + "CreatedTime": "2016-03-25T21:29:48.850Z", + "DNSName": "internal-my-internal-load-balancer-1529930873.us-west-2.elb.amazonaws.com", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-internal-load-balancer/5b49b8d4303115c2", + "LoadBalancerName": "my-internal-load-balancer", + "Scheme": "internal", + "SecurityGroups": [ + "sg-5943793c" + ], + "State": { + "Code": "provisioning" + }, + "Type": "application", + "VpcId": "vpc-3ac0fb5f" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates an internal load balancer and enables the Availability Zones for the specified subnets.", + "id": "elbv2-create-load-balancer-2", + "title": "To create an internal load balancer" + } + ], + "CreateRule": [ + { + "input": { + "Actions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/img/*" + ] + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", + "Priority": 10 + }, + "output": { + "Rules": [ + { + "Actions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/img/*" + ] + } + ], + "IsDefault": false, + "Priority": "10", + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a rule that forwards requests to the specified target group if the URL contains the specified pattern (for example, /img/*).", + "id": "elbv2-create-rule-1", + "title": "To create a rule" + } + ], + "CreateTargetGroup": [ + { + "input": { + "Name": "my-targets", + "Port": 80, + "Protocol": "HTTP", + "VpcId": "vpc-3ac0fb5f" + }, + "output": { + "TargetGroups": [ + { + "HealthCheckIntervalSeconds": 30, + "HealthCheckPath": "/", + "HealthCheckPort": "traffic-port", + "HealthCheckProtocol": "HTTP", + "HealthCheckTimeoutSeconds": 5, + "HealthyThresholdCount": 5, + "Matcher": { + "HttpCode": "200" + }, + "Port": 80, + "Protocol": "HTTP", + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "TargetGroupName": "my-targets", + "UnhealthyThresholdCount": 2, + "VpcId": "vpc-3ac0fb5f" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example creates a target group that you can use to route traffic to targets using HTTP on port 80. This target group uses the default health check configuration.", + "id": "elbv2-create-target-group-1", + "title": "To create a target group" + } + ], + "DeleteListener": [ + { + "input": { + "ListenerArn": "arn:aws:elasticloadbalancing:ua-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified listener.", + "id": "elbv2-delete-listener-1", + "title": "To delete a listener" + } + ], + "DeleteLoadBalancer": [ + { + "input": { + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified load balancer.", + "id": "elbv2-delete-load-balancer-1", + "title": "To delete a load balancer" + } + ], + "DeleteRule": [ + { + "input": { + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified rule.", + "id": "elbv2-delete-rule-1", + "title": "To delete a rule" + } + ], + "DeleteTargetGroup": [ + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified target group.", + "id": "elbv2-delete-target-group-1", + "title": "To delete a target group" + } + ], + "DeregisterTargets": [ + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Targets": [ + { + "Id": "i-0f76fade" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deregisters the specified instance from the specified target group.", + "id": "elbv2-deregister-targets-1", + "title": "To deregister a target from a target group" + } + ], + "DescribeListeners": [ + { + "input": { + "ListenerArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" + ] + }, + "output": { + "Listeners": [ + { + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 80, + "Protocol": "HTTP" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified listener.", + "id": "elbv2-describe-listeners-1", + "title": "To describe a listener" + } + ], + "DescribeLoadBalancerAttributes": [ + { + "input": { + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + }, + "output": { + "Attributes": [ + { + "Key": "access_logs.s3.enabled", + "Value": "false" + }, + { + "Key": "idle_timeout.timeout_seconds", + "Value": "60" + }, + { + "Key": "access_logs.s3.prefix", + "Value": "" + }, + { + "Key": "deletion_protection.enabled", + "Value": "false" + }, + { + "Key": "access_logs.s3.bucket", + "Value": "" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the attributes of the specified load balancer.", + "id": "elbv2-describe-load-balancer-attributes-1", + "title": "To describe load balancer attributes" + } + ], + "DescribeLoadBalancers": [ + { + "input": { + "LoadBalancerArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + ] + }, + "output": { + "LoadBalancers": [ + { + "AvailabilityZones": [ + { + "SubnetId": "subnet-8360a9e7", + "ZoneName": "us-west-2a" + }, + { + "SubnetId": "subnet-b7d581c0", + "ZoneName": "us-west-2b" + } + ], + "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", + "CreatedTime": "2016-03-25T21:26:12.920Z", + "DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "LoadBalancerName": "my-load-balancer", + "Scheme": "internet-facing", + "SecurityGroups": [ + "sg-5943793c" + ], + "State": { + "Code": "active" + }, + "Type": "application", + "VpcId": "vpc-3ac0fb5f" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified load balancer.", + "id": "elbv2-describe-load-balancers-1", + "title": "To describe a load balancer" + } + ], + "DescribeRules": [ + { + "input": { + "RuleArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" + ] + }, + "output": { + "Rules": [ + { + "Actions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/img/*" + ] + } + ], + "IsDefault": false, + "Priority": "10", + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified rule.", + "id": "elbv2-describe-rules-1", + "title": "To describe a rule" + } + ], + "DescribeSSLPolicies": [ + { + "input": { + "Names": [ + "ELBSecurityPolicy-2015-05" + ] + }, + "output": { + "SslPolicies": [ + { + "Ciphers": [ + { + "Name": "ECDHE-ECDSA-AES128-GCM-SHA256", + "Priority": 1 + }, + { + "Name": "ECDHE-RSA-AES128-GCM-SHA256", + "Priority": 2 + }, + { + "Name": "ECDHE-ECDSA-AES128-SHA256", + "Priority": 3 + }, + { + "Name": "ECDHE-RSA-AES128-SHA256", + "Priority": 4 + }, + { + "Name": "ECDHE-ECDSA-AES128-SHA", + "Priority": 5 + }, + { + "Name": "ECDHE-RSA-AES128-SHA", + "Priority": 6 + }, + { + "Name": "DHE-RSA-AES128-SHA", + "Priority": 7 + }, + { + "Name": "ECDHE-ECDSA-AES256-GCM-SHA384", + "Priority": 8 + }, + { + "Name": "ECDHE-RSA-AES256-GCM-SHA384", + "Priority": 9 + }, + { + "Name": "ECDHE-ECDSA-AES256-SHA384", + "Priority": 10 + }, + { + "Name": "ECDHE-RSA-AES256-SHA384", + "Priority": 11 + }, + { + "Name": "ECDHE-RSA-AES256-SHA", + "Priority": 12 + }, + { + "Name": "ECDHE-ECDSA-AES256-SHA", + "Priority": 13 + }, + { + "Name": "AES128-GCM-SHA256", + "Priority": 14 + }, + { + "Name": "AES128-SHA256", + "Priority": 15 + }, + { + "Name": "AES128-SHA", + "Priority": 16 + }, + { + "Name": "AES256-GCM-SHA384", + "Priority": 17 + }, + { + "Name": "AES256-SHA256", + "Priority": 18 + }, + { + "Name": "AES256-SHA", + "Priority": 19 + } + ], + "Name": "ELBSecurityPolicy-2015-05", + "SslProtocols": [ + "TLSv1", + "TLSv1.1", + "TLSv1.2" + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified policy used for SSL negotiation.", + "id": "elbv2-describe-ssl-policies-1", + "title": "To describe a policy used for SSL negotiation" + } + ], + "DescribeTags": [ + { + "input": { + "ResourceArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + ] + }, + "output": { + "TagDescriptions": [ + { + "ResourceArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Tags": [ + { + "Key": "project", + "Value": "lima" + }, + { + "Key": "department", + "Value": "digital-media" + } + ] + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the tags assigned to the specified load balancer.", + "id": "elbv2-describe-tags-1", + "title": "To describe the tags assigned to a load balancer" + } + ], + "DescribeTargetGroupAttributes": [ + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + }, + "output": { + "Attributes": [ + { + "Key": "stickiness.enabled", + "Value": "false" + }, + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "300" + }, + { + "Key": "stickiness.type", + "Value": "lb_cookie" + }, + { + "Key": "stickiness.lb_cookie.duration_seconds", + "Value": "86400" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the attributes of the specified target group.", + "id": "elbv2-describe-target-group-attributes-1", + "title": "To describe target group attributes" + } + ], + "DescribeTargetGroups": [ + { + "input": { + "TargetGroupArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + ] + }, + "output": { + "TargetGroups": [ + { + "HealthCheckIntervalSeconds": 30, + "HealthCheckPath": "/", + "HealthCheckPort": "traffic-port", + "HealthCheckProtocol": "HTTP", + "HealthCheckTimeoutSeconds": 5, + "HealthyThresholdCount": 5, + "LoadBalancerArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + ], + "Matcher": { + "HttpCode": "200" + }, + "Port": 80, + "Protocol": "HTTP", + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "TargetGroupName": "my-targets", + "UnhealthyThresholdCount": 2, + "VpcId": "vpc-3ac0fb5f" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the specified target group.", + "id": "elbv2-describe-target-groups-1", + "title": "To describe a target group" + } + ], + "DescribeTargetHealth": [ + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + }, + "output": { + "TargetHealthDescriptions": [ + { + "Target": { + "Id": "i-0f76fade", + "Port": 80 + }, + "TargetHealth": { + "Description": "Given target group is not configured to receive traffic from ELB", + "Reason": "Target.NotInUse", + "State": "unused" + } + }, + { + "HealthCheckPort": "80", + "Target": { + "Id": "i-0f76fade", + "Port": 80 + }, + "TargetHealth": { + "State": "healthy" + } + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the health of the targets for the specified target group. One target is healthy but the other is not specified in an action, so it can't receive traffic from the load balancer.", + "id": "elbv2-describe-target-health-1", + "title": "To describe the health of the targets for a target group" + }, + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Targets": [ + { + "Id": "i-0f76fade", + "Port": 80 + } + ] + }, + "output": { + "TargetHealthDescriptions": [ + { + "HealthCheckPort": "80", + "Target": { + "Id": "i-0f76fade", + "Port": 80 + }, + "TargetHealth": { + "State": "healthy" + } + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example describes the health of the specified target. This target is healthy.", + "id": "elbv2-describe-target-health-2", + "title": "To describe the health of a target" + } + ], + "ModifyListener": [ + { + "input": { + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/2453ed029918f21f", + "Type": "forward" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" + }, + "output": { + "Listeners": [ + { + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/2453ed029918f21f", + "Type": "forward" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 80, + "Protocol": "HTTP" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example changes the default action for the specified listener.", + "id": "elbv2-modify-listener-1", + "title": "To change the default action for a listener" + }, + { + "input": { + "Certificates": [ + { + "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-new-server-cert" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65" + }, + "output": { + "Listeners": [ + { + "Certificates": [ + { + "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-new-server-cert" + } + ], + "DefaultActions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65", + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Port": 443, + "Protocol": "HTTPS", + "SslPolicy": "ELBSecurityPolicy-2015-05" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example changes the server certificate for the specified HTTPS listener.", + "id": "elbv2-modify-listener-2", + "title": "To change the server certificate" + } + ], + "ModifyLoadBalancerAttributes": [ + { + "input": { + "Attributes": [ + { + "Key": "deletion_protection.enabled", + "Value": "true" + } + ], + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + }, + "output": { + "Attributes": [ + { + "Key": "deletion_protection.enabled", + "Value": "true" + }, + { + "Key": "access_logs.s3.enabled", + "Value": "false" + }, + { + "Key": "idle_timeout.timeout_seconds", + "Value": "60" + }, + { + "Key": "access_logs.s3.prefix", + "Value": "" + }, + { + "Key": "access_logs.s3.bucket", + "Value": "" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables deletion protection for the specified load balancer.", + "id": "elbv2-modify-load-balancer-attributes-1", + "title": "To enable deletion protection" + }, + { + "input": { + "Attributes": [ + { + "Key": "idle_timeout.timeout_seconds", + "Value": "30" + } + ], + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + }, + "output": { + "Attributes": [ + { + "Key": "idle_timeout.timeout_seconds", + "Value": "30" + }, + { + "Key": "access_logs.s3.enabled", + "Value": "false" + }, + { + "Key": "access_logs.s3.prefix", + "Value": "" + }, + { + "Key": "deletion_protection.enabled", + "Value": "true" + }, + { + "Key": "access_logs.s3.bucket", + "Value": "" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example changes the idle timeout value for the specified load balancer.", + "id": "elbv2-modify-load-balancer-attributes-2", + "title": "To change the idle timeout" + }, + { + "input": { + "Attributes": [ + { + "Key": "access_logs.s3.enabled", + "Value": "true" + }, + { + "Key": "access_logs.s3.bucket", + "Value": "my-loadbalancer-logs" + }, + { + "Key": "access_logs.s3.prefix", + "Value": "myapp" + } + ], + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + }, + "output": { + "Attributes": [ + { + "Key": "access_logs.s3.enabled", + "Value": "true" + }, + { + "Key": "access_logs.s3.bucket", + "Value": "my-load-balancer-logs" + }, + { + "Key": "access_logs.s3.prefix", + "Value": "myapp" + }, + { + "Key": "idle_timeout.timeout_seconds", + "Value": "60" + }, + { + "Key": "deletion_protection.enabled", + "Value": "false" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables access logs for the specified load balancer. Note that the S3 bucket must exist in the same region as the load balancer and must have a policy attached that grants access to the Elastic Load Balancing service.", + "id": "elbv2-modify-load-balancer-attributes-3", + "title": "To enable access logs" + } + ], + "ModifyRule": [ + { + "input": { + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/images/*" + ] + } + ], + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" + }, + "output": { + "Rules": [ + { + "Actions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/images/*" + ] + } + ], + "IsDefault": false, + "Priority": "10", + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example modifies the condition for the specified rule.", + "id": "elbv2-modify-rule-1", + "title": "To modify a rule" + } + ], + "ModifyTargetGroup": [ + { + "input": { + "HealthCheckPort": "443", + "HealthCheckProtocol": "HTTPS", + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-https-targets/2453ed029918f21f" + }, + "output": { + "TargetGroups": [ + { + "HealthCheckIntervalSeconds": 30, + "HealthCheckPort": "443", + "HealthCheckProtocol": "HTTPS", + "HealthCheckTimeoutSeconds": 5, + "HealthyThresholdCount": 5, + "LoadBalancerArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + ], + "Matcher": { + "HttpCode": "200" + }, + "Port": 443, + "Protocol": "HTTPS", + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-https-targets/2453ed029918f21f", + "TargetGroupName": "my-https-targets", + "UnhealthyThresholdCount": 2, + "VpcId": "vpc-3ac0fb5f" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example changes the configuration of the health checks used to evaluate the health of the targets for the specified target group.", + "id": "elbv2-modify-target-group-1", + "title": "To modify the health check configuration for a target group" + } + ], + "ModifyTargetGroupAttributes": [ + { + "input": { + "Attributes": [ + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "600" + } + ], + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" + }, + "output": { + "Attributes": [ + { + "Key": "stickiness.enabled", + "Value": "false" + }, + { + "Key": "deregistration_delay.timeout_seconds", + "Value": "600" + }, + { + "Key": "stickiness.type", + "Value": "lb_cookie" + }, + { + "Key": "stickiness.lb_cookie.duration_seconds", + "Value": "86400" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sets the deregistration delay timeout to the specified value for the specified target group.", + "id": "elbv2-modify-target-group-attributes-1", + "title": "To modify the deregistration delay timeout" + } + ], + "RegisterTargets": [ + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Targets": [ + { + "Id": "i-80c8dd94" + }, + { + "Id": "i-ceddcd4d" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example registers the specified instances with the specified target group.", + "id": "elbv2-register-targets-1", + "title": "To register targets with a target group" + }, + { + "input": { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/3bb63f11dfb0faf9", + "Targets": [ + { + "Id": "i-80c8dd94", + "Port": 80 + }, + { + "Id": "i-80c8dd94", + "Port": 766 + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example registers the specified instance with the specified target group using multiple ports. This enables you to register ECS containers on the same instance as targets in the target group.", + "id": "elbv2-register-targets-2", + "title": "To register targets with a target group using port overrides" + } + ], + "RemoveTags": [ + { + "input": { + "ResourceArns": [ + "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" + ], + "TagKeys": [ + "project", + "department" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example removes the specified tags from the specified load balancer.", + "id": "elbv2-remove-tags-1", + "title": "To remove tags from a load balancer" + } + ], + "SetRulePriorities": [ + { + "input": { + "RulePriorities": [ + { + "Priority": 5, + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" + } + ] + }, + "output": { + "Rules": [ + { + "Actions": [ + { + "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", + "Type": "forward" + } + ], + "Conditions": [ + { + "Field": "path-pattern", + "Values": [ + "/img/*" + ] + } + ], + "IsDefault": false, + "Priority": "5", + "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sets the priority of the specified rule.", + "id": "elbv2-set-rule-priorities-1", + "title": "To set the rule priority" + } + ], + "SetSecurityGroups": [ + { + "input": { + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "SecurityGroups": [ + "sg-5943793c" + ] + }, + "output": { + "SecurityGroupIds": [ + "sg-5943793c" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example associates the specified security group with the specified load balancer.", + "id": "elbv2-set-security-groups-1", + "title": "To associate a security group with a load balancer" + } + ], + "SetSubnets": [ + { + "input": { + "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", + "Subnets": [ + "subnet-8360a9e7", + "subnet-b7d581c0" + ] + }, + "output": { + "AvailabilityZones": [ + { + "SubnetId": "subnet-8360a9e7", + "ZoneName": "us-west-2a" + }, + { + "SubnetId": "subnet-b7d581c0", + "ZoneName": "us-west-2b" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example enables the Availability Zones for the specified subnets for the specified load balancer.", + "id": "elbv2-set-subnets-1", + "title": "To enable Availability Zones for a load balancer" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json new file mode 100644 index 0000000..a44cdfa --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json @@ -0,0 +1,1022 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-12-01", + "endpointPrefix": "elasticloadbalancing", + "protocol": "query", + "serviceAbbreviation": "Elastic Load Balancing v2", + "serviceFullName": "Elastic Load Balancing", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "ResourceArns", + "Tags" + ], + "members": { + "ResourceArns": { + "shape": "S2" + }, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "AddTagsResult", + "type": "structure", + "members": {} + } + }, + "CreateListener": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "Protocol", + "Port", + "DefaultActions" + ], + "members": { + "LoadBalancerArn": {}, + "Protocol": {}, + "Port": { + "type": "integer" + }, + "SslPolicy": {}, + "Certificates": { + "shape": "Se" + }, + "DefaultActions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "CreateListenerResult", + "type": "structure", + "members": { + "Listeners": { + "shape": "Sm" + } + } + } + }, + "CreateLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "Name", + "Subnets" + ], + "members": { + "Name": {}, + "Subnets": { + "shape": "Sr" + }, + "SecurityGroups": { + "shape": "St" + }, + "Scheme": {}, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerResult", + "type": "structure", + "members": { + "LoadBalancers": { + "shape": "Sx" + } + } + } + }, + "CreateRule": { + "input": { + "type": "structure", + "required": [ + "ListenerArn", + "Conditions", + "Priority", + "Actions" + ], + "members": { + "ListenerArn": {}, + "Conditions": { + "shape": "S1b" + }, + "Priority": { + "type": "integer" + }, + "Actions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "CreateRuleResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "CreateTargetGroup": { + "input": { + "type": "structure", + "required": [ + "Name", + "Protocol", + "Port", + "VpcId" + ], + "members": { + "Name": {}, + "Protocol": {}, + "Port": { + "type": "integer" + }, + "VpcId": {}, + "HealthCheckProtocol": {}, + "HealthCheckPort": {}, + "HealthCheckPath": {}, + "HealthCheckIntervalSeconds": { + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "type": "integer" + }, + "HealthyThresholdCount": { + "type": "integer" + }, + "UnhealthyThresholdCount": { + "type": "integer" + }, + "Matcher": { + "shape": "S1u" + } + } + }, + "output": { + "resultWrapper": "CreateTargetGroupResult", + "type": "structure", + "members": { + "TargetGroups": { + "shape": "S1x" + } + } + } + }, + "DeleteListener": { + "input": { + "type": "structure", + "required": [ + "ListenerArn" + ], + "members": { + "ListenerArn": {} + } + }, + "output": { + "resultWrapper": "DeleteListenerResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn" + ], + "members": { + "LoadBalancerArn": {} + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerResult", + "type": "structure", + "members": {} + } + }, + "DeleteRule": { + "input": { + "type": "structure", + "required": [ + "RuleArn" + ], + "members": { + "RuleArn": {} + } + }, + "output": { + "resultWrapper": "DeleteRuleResult", + "type": "structure", + "members": {} + } + }, + "DeleteTargetGroup": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {} + } + }, + "output": { + "resultWrapper": "DeleteTargetGroupResult", + "type": "structure", + "members": {} + } + }, + "DeregisterTargets": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn", + "Targets" + ], + "members": { + "TargetGroupArn": {}, + "Targets": { + "shape": "S29" + } + } + }, + "output": { + "resultWrapper": "DeregisterTargetsResult", + "type": "structure", + "members": {} + } + }, + "DescribeListeners": { + "input": { + "type": "structure", + "members": { + "LoadBalancerArn": {}, + "ListenerArns": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeListenersResult", + "type": "structure", + "members": { + "Listeners": { + "shape": "Sm" + }, + "NextMarker": {} + } + } + }, + "DescribeLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn" + ], + "members": { + "LoadBalancerArn": {} + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S2k" + } + } + } + }, + "DescribeLoadBalancers": { + "input": { + "type": "structure", + "members": { + "LoadBalancerArns": { + "shape": "S1z" + }, + "Names": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancersResult", + "type": "structure", + "members": { + "LoadBalancers": { + "shape": "Sx" + }, + "NextMarker": {} + } + } + }, + "DescribeRules": { + "input": { + "type": "structure", + "members": { + "ListenerArn": {}, + "RuleArns": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeRulesResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "DescribeSSLPolicies": { + "input": { + "type": "structure", + "members": { + "Names": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeSSLPoliciesResult", + "type": "structure", + "members": { + "SslPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SslProtocols": { + "type": "list", + "member": {} + }, + "Ciphers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Priority": { + "type": "integer" + } + } + } + }, + "Name": {} + } + } + }, + "NextMarker": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "ResourceArns" + ], + "members": { + "ResourceArns": { + "shape": "S2" + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "TagDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceArn": {}, + "Tags": { + "shape": "S4" + } + } + } + } + } + } + }, + "DescribeTargetGroupAttributes": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {} + } + }, + "output": { + "resultWrapper": "DescribeTargetGroupAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S3b" + } + } + } + }, + "DescribeTargetGroups": { + "input": { + "type": "structure", + "members": { + "LoadBalancerArn": {}, + "TargetGroupArns": { + "type": "list", + "member": {} + }, + "Names": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeTargetGroupsResult", + "type": "structure", + "members": { + "TargetGroups": { + "shape": "S1x" + }, + "NextMarker": {} + } + } + }, + "DescribeTargetHealth": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {}, + "Targets": { + "shape": "S29" + } + } + }, + "output": { + "resultWrapper": "DescribeTargetHealthResult", + "type": "structure", + "members": { + "TargetHealthDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Target": { + "shape": "S2a" + }, + "HealthCheckPort": {}, + "TargetHealth": { + "type": "structure", + "members": { + "State": {}, + "Reason": {}, + "Description": {} + } + } + } + } + } + } + } + }, + "ModifyListener": { + "input": { + "type": "structure", + "required": [ + "ListenerArn" + ], + "members": { + "ListenerArn": {}, + "Port": { + "type": "integer" + }, + "Protocol": {}, + "SslPolicy": {}, + "Certificates": { + "shape": "Se" + }, + "DefaultActions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "ModifyListenerResult", + "type": "structure", + "members": { + "Listeners": { + "shape": "Sm" + } + } + } + }, + "ModifyLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "Attributes" + ], + "members": { + "LoadBalancerArn": {}, + "Attributes": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "ModifyLoadBalancerAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S2k" + } + } + } + }, + "ModifyRule": { + "input": { + "type": "structure", + "required": [ + "RuleArn" + ], + "members": { + "RuleArn": {}, + "Conditions": { + "shape": "S1b" + }, + "Actions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "ModifyRuleResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "ModifyTargetGroup": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {}, + "HealthCheckProtocol": {}, + "HealthCheckPort": {}, + "HealthCheckPath": {}, + "HealthCheckIntervalSeconds": { + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "type": "integer" + }, + "HealthyThresholdCount": { + "type": "integer" + }, + "UnhealthyThresholdCount": { + "type": "integer" + }, + "Matcher": { + "shape": "S1u" + } + } + }, + "output": { + "resultWrapper": "ModifyTargetGroupResult", + "type": "structure", + "members": { + "TargetGroups": { + "shape": "S1x" + } + } + } + }, + "ModifyTargetGroupAttributes": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn", + "Attributes" + ], + "members": { + "TargetGroupArn": {}, + "Attributes": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "ModifyTargetGroupAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S3b" + } + } + } + }, + "RegisterTargets": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn", + "Targets" + ], + "members": { + "TargetGroupArn": {}, + "Targets": { + "shape": "S29" + } + } + }, + "output": { + "resultWrapper": "RegisterTargetsResult", + "type": "structure", + "members": {} + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "ResourceArns", + "TagKeys" + ], + "members": { + "ResourceArns": { + "shape": "S2" + }, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "RemoveTagsResult", + "type": "structure", + "members": {} + } + }, + "SetRulePriorities": { + "input": { + "type": "structure", + "required": [ + "RulePriorities" + ], + "members": { + "RulePriorities": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RuleArn": {}, + "Priority": { + "type": "integer" + } + } + } + } + } + }, + "output": { + "resultWrapper": "SetRulePrioritiesResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "SetSecurityGroups": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "SecurityGroups" + ], + "members": { + "LoadBalancerArn": {}, + "SecurityGroups": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "SetSecurityGroupsResult", + "type": "structure", + "members": { + "SecurityGroupIds": { + "shape": "St" + } + } + } + }, + "SetSubnets": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "Subnets" + ], + "members": { + "LoadBalancerArn": {}, + "Subnets": { + "shape": "Sr" + } + } + }, + "output": { + "resultWrapper": "SetSubnetsResult", + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "S17" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Se": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CertificateArn": {} + } + } + }, + "Sh": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Type", + "TargetGroupArn" + ], + "members": { + "Type": {}, + "TargetGroupArn": {} + } + } + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ListenerArn": {}, + "LoadBalancerArn": {}, + "Port": { + "type": "integer" + }, + "Protocol": {}, + "Certificates": { + "shape": "Se" + }, + "SslPolicy": {}, + "DefaultActions": { + "shape": "Sh" + } + } + } + }, + "Sr": { + "type": "list", + "member": {} + }, + "St": { + "type": "list", + "member": {} + }, + "Sx": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerArn": {}, + "DNSName": {}, + "CanonicalHostedZoneId": {}, + "CreatedTime": { + "type": "timestamp" + }, + "LoadBalancerName": {}, + "Scheme": {}, + "VpcId": {}, + "State": { + "type": "structure", + "members": { + "Code": {}, + "Reason": {} + } + }, + "Type": {}, + "AvailabilityZones": { + "shape": "S17" + }, + "SecurityGroups": { + "shape": "St" + } + } + } + }, + "S17": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ZoneName": {}, + "SubnetId": {} + } + } + }, + "S1b": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Field": {}, + "Values": { + "type": "list", + "member": {} + } + } + } + }, + "S1i": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RuleArn": {}, + "Priority": {}, + "Conditions": { + "shape": "S1b" + }, + "Actions": { + "shape": "Sh" + }, + "IsDefault": { + "type": "boolean" + } + } + } + }, + "S1u": { + "type": "structure", + "required": [ + "HttpCode" + ], + "members": { + "HttpCode": {} + } + }, + "S1x": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetGroupArn": {}, + "TargetGroupName": {}, + "Protocol": {}, + "Port": { + "type": "integer" + }, + "VpcId": {}, + "HealthCheckProtocol": {}, + "HealthCheckPort": {}, + "HealthCheckIntervalSeconds": { + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "type": "integer" + }, + "HealthyThresholdCount": { + "type": "integer" + }, + "UnhealthyThresholdCount": { + "type": "integer" + }, + "HealthCheckPath": {}, + "Matcher": { + "shape": "S1u" + }, + "LoadBalancerArns": { + "shape": "S1z" + } + } + } + }, + "S1z": { + "type": "list", + "member": {} + }, + "S29": { + "type": "list", + "member": { + "shape": "S2a" + } + }, + "S2a": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": {}, + "Port": { + "type": "integer" + } + } + }, + "S2k": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S3b": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json new file mode 100644 index 0000000..5afd708 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json @@ -0,0 +1,20 @@ +{ + "pagination": { + "DescribeTargetGroups": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "TargetGroups" + }, + "DescribeListeners": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "Listeners" + }, + "DescribeLoadBalancers": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "LoadBalancers" + } + } +} + diff --git a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json new file mode 100644 index 0000000..94cab4e --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json @@ -0,0 +1,1241 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2009-03-31", + "endpointPrefix": "elasticmapreduce", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon EMR", + "serviceFullName": "Amazon Elastic MapReduce", + "signatureVersion": "v4", + "targetPrefix": "ElasticMapReduce", + "timestampFormat": "unixTimestamp" + }, + "operations": { + "AddInstanceGroups": { + "input": { + "type": "structure", + "required": [ + "InstanceGroups", + "JobFlowId" + ], + "members": { + "InstanceGroups": { + "shape": "S2" + }, + "JobFlowId": {} + } + }, + "output": { + "type": "structure", + "members": { + "JobFlowId": {}, + "InstanceGroupIds": { + "type": "list", + "member": {} + } + } + } + }, + "AddJobFlowSteps": { + "input": { + "type": "structure", + "required": [ + "JobFlowId", + "Steps" + ], + "members": { + "JobFlowId": {}, + "Steps": { + "shape": "Sl" + } + } + }, + "output": { + "type": "structure", + "members": { + "StepIds": { + "type": "list", + "member": {} + } + } + } + }, + "AddTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "Tags" + ], + "members": { + "ResourceId": {}, + "Tags": { + "shape": "Sx" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateSecurityConfiguration": { + "input": { + "type": "structure", + "required": [ + "Name", + "SecurityConfiguration" + ], + "members": { + "Name": {}, + "SecurityConfiguration": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Name", + "CreationDateTime" + ], + "members": { + "Name": {}, + "CreationDateTime": { + "type": "timestamp" + } + } + } + }, + "DeleteSecurityConfiguration": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Cluster": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Status": { + "shape": "S19" + }, + "Ec2InstanceAttributes": { + "type": "structure", + "members": { + "Ec2KeyName": {}, + "Ec2SubnetId": {}, + "Ec2AvailabilityZone": {}, + "IamInstanceProfile": {}, + "EmrManagedMasterSecurityGroup": {}, + "EmrManagedSlaveSecurityGroup": {}, + "ServiceAccessSecurityGroup": {}, + "AdditionalMasterSecurityGroups": { + "shape": "S1f" + }, + "AdditionalSlaveSecurityGroups": { + "shape": "S1f" + } + } + }, + "LogUri": {}, + "RequestedAmiVersion": {}, + "RunningAmiVersion": {}, + "ReleaseLabel": {}, + "AutoTerminate": { + "type": "boolean" + }, + "TerminationProtected": { + "type": "boolean" + }, + "VisibleToAllUsers": { + "type": "boolean" + }, + "Applications": { + "shape": "S1h" + }, + "Tags": { + "shape": "Sx" + }, + "ServiceRole": {}, + "NormalizedInstanceHours": { + "type": "integer" + }, + "MasterPublicDnsName": {}, + "Configurations": { + "shape": "S9" + }, + "SecurityConfiguration": {} + } + } + } + } + }, + "DescribeJobFlows": { + "input": { + "type": "structure", + "members": { + "CreatedAfter": { + "type": "timestamp" + }, + "CreatedBefore": { + "type": "timestamp" + }, + "JobFlowIds": { + "shape": "Ss" + }, + "JobFlowStates": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "JobFlows": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "JobFlowId", + "Name", + "ExecutionStatusDetail", + "Instances" + ], + "members": { + "JobFlowId": {}, + "Name": {}, + "LogUri": {}, + "AmiVersion": {}, + "ExecutionStatusDetail": { + "type": "structure", + "required": [ + "State", + "CreationDateTime" + ], + "members": { + "State": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + }, + "LastStateChangeReason": {} + } + }, + "Instances": { + "type": "structure", + "required": [ + "MasterInstanceType", + "SlaveInstanceType", + "InstanceCount" + ], + "members": { + "MasterInstanceType": {}, + "MasterPublicDnsName": {}, + "MasterInstanceId": {}, + "SlaveInstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "InstanceGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Market", + "InstanceRole", + "InstanceType", + "InstanceRequestCount", + "InstanceRunningCount", + "State", + "CreationDateTime" + ], + "members": { + "InstanceGroupId": {}, + "Name": {}, + "Market": {}, + "InstanceRole": {}, + "BidPrice": {}, + "InstanceType": {}, + "InstanceRequestCount": { + "type": "integer" + }, + "InstanceRunningCount": { + "type": "integer" + }, + "State": {}, + "LastStateChangeReason": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + }, + "NormalizedInstanceHours": { + "type": "integer" + }, + "Ec2KeyName": {}, + "Ec2SubnetId": {}, + "Placement": { + "shape": "S1u" + }, + "KeepJobFlowAliveWhenNoSteps": { + "type": "boolean" + }, + "TerminationProtected": { + "type": "boolean" + }, + "HadoopVersion": {} + } + }, + "Steps": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "StepConfig", + "ExecutionStatusDetail" + ], + "members": { + "StepConfig": { + "shape": "Sm" + }, + "ExecutionStatusDetail": { + "type": "structure", + "required": [ + "State", + "CreationDateTime" + ], + "members": { + "State": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + }, + "LastStateChangeReason": {} + } + } + } + } + }, + "BootstrapActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "BootstrapActionConfig": { + "shape": "S21" + } + } + } + }, + "SupportedProducts": { + "shape": "S23" + }, + "VisibleToAllUsers": { + "type": "boolean" + }, + "JobFlowRole": {}, + "ServiceRole": {} + } + } + } + } + }, + "deprecated": true + }, + "DescribeSecurityConfiguration": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "SecurityConfiguration": {}, + "CreationDateTime": { + "type": "timestamp" + } + } + } + }, + "DescribeStep": { + "input": { + "type": "structure", + "required": [ + "ClusterId", + "StepId" + ], + "members": { + "ClusterId": {}, + "StepId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Step": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Config": { + "shape": "S2a" + }, + "ActionOnFailure": {}, + "Status": { + "shape": "S2b" + } + } + } + } + } + }, + "ListBootstrapActions": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "BootstrapActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "ScriptPath": {}, + "Args": { + "shape": "S1f" + } + } + } + }, + "Marker": {} + } + } + }, + "ListClusters": { + "input": { + "type": "structure", + "members": { + "CreatedAfter": { + "type": "timestamp" + }, + "CreatedBefore": { + "type": "timestamp" + }, + "ClusterStates": { + "type": "list", + "member": {} + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Clusters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Status": { + "shape": "S19" + }, + "NormalizedInstanceHours": { + "type": "integer" + } + } + } + }, + "Marker": {} + } + } + }, + "ListInstanceGroups": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Market": {}, + "InstanceGroupType": {}, + "BidPrice": {}, + "InstanceType": {}, + "RequestedInstanceCount": { + "type": "integer" + }, + "RunningInstanceCount": { + "type": "integer" + }, + "Status": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "Configurations": { + "shape": "S9" + }, + "EbsBlockDevices": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeSpecification": { + "shape": "Sg" + }, + "Device": {} + } + } + }, + "EbsOptimized": { + "type": "boolean" + }, + "ShrinkPolicy": { + "shape": "S33" + } + } + } + }, + "Marker": {} + } + } + }, + "ListInstances": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "InstanceGroupId": {}, + "InstanceGroupTypes": { + "type": "list", + "member": {} + }, + "InstanceStates": { + "type": "list", + "member": {} + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Instances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Ec2InstanceId": {}, + "PublicDnsName": {}, + "PublicIpAddress": {}, + "PrivateDnsName": {}, + "PrivateIpAddress": {}, + "Status": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "InstanceGroupId": {}, + "EbsVolumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Device": {}, + "VolumeId": {} + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "ListSecurityConfigurations": { + "input": { + "type": "structure", + "members": { + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "SecurityConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "CreationDateTime": { + "type": "timestamp" + } + } + } + }, + "Marker": {} + } + } + }, + "ListSteps": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "StepStates": { + "type": "list", + "member": {} + }, + "StepIds": { + "shape": "Ss" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Steps": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Config": { + "shape": "S2a" + }, + "ActionOnFailure": {}, + "Status": { + "shape": "S2b" + } + } + } + }, + "Marker": {} + } + } + }, + "ModifyInstanceGroups": { + "input": { + "type": "structure", + "members": { + "InstanceGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InstanceGroupId" + ], + "members": { + "InstanceGroupId": {}, + "InstanceCount": { + "type": "integer" + }, + "EC2InstanceIdsToTerminate": { + "type": "list", + "member": {} + }, + "ShrinkPolicy": { + "shape": "S33" + } + } + } + } + } + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "TagKeys" + ], + "members": { + "ResourceId": {}, + "TagKeys": { + "shape": "S1f" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RunJobFlow": { + "input": { + "type": "structure", + "required": [ + "Name", + "Instances" + ], + "members": { + "Name": {}, + "LogUri": {}, + "AdditionalInfo": {}, + "AmiVersion": {}, + "ReleaseLabel": {}, + "Instances": { + "type": "structure", + "members": { + "MasterInstanceType": {}, + "SlaveInstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "InstanceGroups": { + "shape": "S2" + }, + "Ec2KeyName": {}, + "Placement": { + "shape": "S1u" + }, + "KeepJobFlowAliveWhenNoSteps": { + "type": "boolean" + }, + "TerminationProtected": { + "type": "boolean" + }, + "HadoopVersion": {}, + "Ec2SubnetId": {}, + "EmrManagedMasterSecurityGroup": {}, + "EmrManagedSlaveSecurityGroup": {}, + "ServiceAccessSecurityGroup": {}, + "AdditionalMasterSecurityGroups": { + "shape": "S41" + }, + "AdditionalSlaveSecurityGroups": { + "shape": "S41" + } + } + }, + "Steps": { + "shape": "Sl" + }, + "BootstrapActions": { + "type": "list", + "member": { + "shape": "S21" + } + }, + "SupportedProducts": { + "shape": "S23" + }, + "NewSupportedProducts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Args": { + "shape": "Ss" + } + } + } + }, + "Applications": { + "shape": "S1h" + }, + "Configurations": { + "shape": "S9" + }, + "VisibleToAllUsers": { + "type": "boolean" + }, + "JobFlowRole": {}, + "ServiceRole": {}, + "Tags": { + "shape": "Sx" + }, + "SecurityConfiguration": {} + } + }, + "output": { + "type": "structure", + "members": { + "JobFlowId": {} + } + } + }, + "SetTerminationProtection": { + "input": { + "type": "structure", + "required": [ + "JobFlowIds", + "TerminationProtected" + ], + "members": { + "JobFlowIds": { + "shape": "Ss" + }, + "TerminationProtected": { + "type": "boolean" + } + } + } + }, + "SetVisibleToAllUsers": { + "input": { + "type": "structure", + "required": [ + "JobFlowIds", + "VisibleToAllUsers" + ], + "members": { + "JobFlowIds": { + "shape": "Ss" + }, + "VisibleToAllUsers": { + "type": "boolean" + } + } + } + }, + "TerminateJobFlows": { + "input": { + "type": "structure", + "required": [ + "JobFlowIds" + ], + "members": { + "JobFlowIds": { + "shape": "Ss" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InstanceRole", + "InstanceType", + "InstanceCount" + ], + "members": { + "Name": {}, + "Market": {}, + "InstanceRole": {}, + "BidPrice": {}, + "InstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "Configurations": { + "shape": "S9" + }, + "EbsConfiguration": { + "type": "structure", + "members": { + "EbsBlockDeviceConfigs": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "VolumeSpecification" + ], + "members": { + "VolumeSpecification": { + "shape": "Sg" + }, + "VolumesPerInstance": { + "type": "integer" + } + } + } + }, + "EbsOptimized": { + "type": "boolean" + } + } + } + } + } + }, + "S9": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Classification": {}, + "Configurations": { + "shape": "S9" + }, + "Properties": { + "shape": "Sc" + } + } + } + }, + "Sc": { + "type": "map", + "key": {}, + "value": {} + }, + "Sg": { + "type": "structure", + "required": [ + "VolumeType", + "SizeInGB" + ], + "members": { + "VolumeType": {}, + "Iops": { + "type": "integer" + }, + "SizeInGB": { + "type": "integer" + } + } + }, + "Sl": { + "type": "list", + "member": { + "shape": "Sm" + } + }, + "Sm": { + "type": "structure", + "required": [ + "Name", + "HadoopJarStep" + ], + "members": { + "Name": {}, + "ActionOnFailure": {}, + "HadoopJarStep": { + "type": "structure", + "required": [ + "Jar" + ], + "members": { + "Properties": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Jar": {}, + "MainClass": {}, + "Args": { + "shape": "Ss" + } + } + } + } + }, + "Ss": { + "type": "list", + "member": {} + }, + "Sx": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S19": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "S1f": { + "type": "list", + "member": {} + }, + "S1h": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Version": {}, + "Args": { + "shape": "S1f" + }, + "AdditionalInfo": { + "shape": "Sc" + } + } + } + }, + "S1u": { + "type": "structure", + "required": [ + "AvailabilityZone" + ], + "members": { + "AvailabilityZone": {} + } + }, + "S21": { + "type": "structure", + "required": [ + "Name", + "ScriptBootstrapAction" + ], + "members": { + "Name": {}, + "ScriptBootstrapAction": { + "type": "structure", + "required": [ + "Path" + ], + "members": { + "Path": {}, + "Args": { + "shape": "Ss" + } + } + } + } + }, + "S23": { + "type": "list", + "member": {} + }, + "S2a": { + "type": "structure", + "members": { + "Jar": {}, + "Properties": { + "shape": "Sc" + }, + "MainClass": {}, + "Args": { + "shape": "S1f" + } + } + }, + "S2b": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "FailureDetails": { + "type": "structure", + "members": { + "Reason": {}, + "Message": {}, + "LogFile": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "S33": { + "type": "structure", + "members": { + "DecommissionTimeout": { + "type": "integer" + }, + "InstanceResizePolicy": { + "type": "structure", + "members": { + "InstancesToTerminate": { + "shape": "S35" + }, + "InstancesToProtect": { + "shape": "S35" + }, + "InstanceTerminationTimeout": { + "type": "integer" + } + } + } + } + }, + "S35": { + "type": "list", + "member": {} + }, + "S41": { + "type": "list", + "member": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json new file mode 100644 index 0000000..87f282d --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json @@ -0,0 +1,32 @@ +{ + "pagination": { + "DescribeJobFlows": { + "result_key": "JobFlows" + }, + "ListBootstrapActions": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "BootstrapActions" + }, + "ListClusters": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "Clusters" + }, + "ListInstanceGroups": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "InstanceGroups" + }, + "ListInstances": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "Instances" + }, + "ListSteps": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "Steps" + } + } +} diff --git a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json new file mode 100644 index 0000000..829f1b1 --- /dev/null +++ b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json @@ -0,0 +1,67 @@ +{ + "version": 2, + "waiters": { + "ClusterRunning": { + "delay": 30, + "operation": "DescribeCluster", + "maxAttempts": 60, + "acceptors": [ + { + "state": "success", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "RUNNING" + }, + { + "state": "success", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "WAITING" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "TERMINATING" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "TERMINATED" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "TERMINATED_WITH_ERRORS" + } + ] + }, + "StepComplete": { + "delay": 30, + "operation": "DescribeStep", + "maxAttempts": 60, + "acceptors": [ + { + "state": "success", + "matcher": "path", + "argument": "Step.Status.State", + "expected": "COMPLETED" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Step.Status.State", + "expected": "FAILED" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Step.Status.State", + "expected": "CANCELLED" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json new file mode 100644 index 0000000..4f5454a --- /dev/null +++ b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json @@ -0,0 +1,1019 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-09-25", + "endpointPrefix": "elastictranscoder", + "protocol": "rest-json", + "serviceFullName": "Amazon Elastic Transcoder", + "signatureVersion": "v4" + }, + "operations": { + "CancelJob": { + "http": { + "method": "DELETE", + "requestUri": "/2012-09-25/jobs/{Id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateJob": { + "http": { + "requestUri": "/2012-09-25/jobs", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "PipelineId", + "Input" + ], + "members": { + "PipelineId": {}, + "Input": { + "shape": "S5" + }, + "Output": { + "shape": "Sk" + }, + "Outputs": { + "type": "list", + "member": { + "shape": "Sk" + } + }, + "OutputKeyPrefix": {}, + "Playlists": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Format": {}, + "OutputKeys": { + "shape": "S1j" + }, + "HlsContentProtection": { + "shape": "S1k" + }, + "PlayReadyDrm": { + "shape": "S1o" + } + } + } + }, + "UserMetadata": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "members": { + "Job": { + "shape": "S1w" + } + } + } + }, + "CreatePipeline": { + "http": { + "requestUri": "/2012-09-25/pipelines", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "Name", + "InputBucket", + "Role" + ], + "members": { + "Name": {}, + "InputBucket": {}, + "OutputBucket": {}, + "Role": {}, + "AwsKmsKeyArn": {}, + "Notifications": { + "shape": "S28" + }, + "ContentConfig": { + "shape": "S2a" + }, + "ThumbnailConfig": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + }, + "Warnings": { + "shape": "S2l" + } + } + } + }, + "CreatePreset": { + "http": { + "requestUri": "/2012-09-25/presets", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "Name", + "Container" + ], + "members": { + "Name": {}, + "Description": {}, + "Container": {}, + "Video": { + "shape": "S2p" + }, + "Audio": { + "shape": "S35" + }, + "Thumbnails": { + "shape": "S3g" + } + } + }, + "output": { + "type": "structure", + "members": { + "Preset": { + "shape": "S3k" + }, + "Warning": {} + } + } + }, + "DeletePipeline": { + "http": { + "method": "DELETE", + "requestUri": "/2012-09-25/pipelines/{Id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeletePreset": { + "http": { + "method": "DELETE", + "requestUri": "/2012-09-25/presets/{Id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ListJobsByPipeline": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}" + }, + "input": { + "type": "structure", + "required": [ + "PipelineId" + ], + "members": { + "PipelineId": { + "location": "uri", + "locationName": "PipelineId" + }, + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Jobs": { + "shape": "S3t" + }, + "NextPageToken": {} + } + } + }, + "ListJobsByStatus": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/jobsByStatus/{Status}" + }, + "input": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": { + "location": "uri", + "locationName": "Status" + }, + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Jobs": { + "shape": "S3t" + }, + "NextPageToken": {} + } + } + }, + "ListPipelines": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/pipelines" + }, + "input": { + "type": "structure", + "members": { + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipelines": { + "type": "list", + "member": { + "shape": "S2j" + } + }, + "NextPageToken": {} + } + } + }, + "ListPresets": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/presets" + }, + "input": { + "type": "structure", + "members": { + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Presets": { + "type": "list", + "member": { + "shape": "S3k" + } + }, + "NextPageToken": {} + } + } + }, + "ReadJob": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/jobs/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Job": { + "shape": "S1w" + } + } + } + }, + "ReadPipeline": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/pipelines/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + }, + "Warnings": { + "shape": "S2l" + } + } + } + }, + "ReadPreset": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/presets/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Preset": { + "shape": "S3k" + } + } + } + }, + "TestRole": { + "http": { + "requestUri": "/2012-09-25/roleTests", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "Role", + "InputBucket", + "OutputBucket", + "Topics" + ], + "members": { + "Role": {}, + "InputBucket": {}, + "OutputBucket": {}, + "Topics": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "Success": {}, + "Messages": { + "type": "list", + "member": {} + } + } + } + }, + "UpdatePipeline": { + "http": { + "method": "PUT", + "requestUri": "/2012-09-25/pipelines/{Id}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Name": {}, + "InputBucket": {}, + "Role": {}, + "AwsKmsKeyArn": {}, + "Notifications": { + "shape": "S28" + }, + "ContentConfig": { + "shape": "S2a" + }, + "ThumbnailConfig": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + }, + "Warnings": { + "shape": "S2l" + } + } + } + }, + "UpdatePipelineNotifications": { + "http": { + "requestUri": "/2012-09-25/pipelines/{Id}/notifications" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Notifications" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Notifications": { + "shape": "S28" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + } + } + } + }, + "UpdatePipelineStatus": { + "http": { + "requestUri": "/2012-09-25/pipelines/{Id}/status" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Status" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Status": {} + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + } + } + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "members": { + "Key": {}, + "FrameRate": {}, + "Resolution": {}, + "AspectRatio": {}, + "Interlaced": {}, + "Container": {}, + "Encryption": { + "shape": "Sc" + }, + "DetectedProperties": { + "type": "structure", + "members": { + "Width": { + "type": "integer" + }, + "Height": { + "type": "integer" + }, + "FrameRate": {}, + "FileSize": { + "type": "long" + }, + "DurationMillis": { + "type": "long" + } + } + } + } + }, + "Sc": { + "type": "structure", + "members": { + "Mode": {}, + "Key": {}, + "KeyMd5": {}, + "InitializationVector": {} + } + }, + "Sk": { + "type": "structure", + "members": { + "Key": {}, + "ThumbnailPattern": {}, + "ThumbnailEncryption": { + "shape": "Sc" + }, + "Rotate": {}, + "PresetId": {}, + "SegmentDuration": {}, + "Watermarks": { + "shape": "So" + }, + "AlbumArt": { + "shape": "Ss" + }, + "Composition": { + "shape": "S10" + }, + "Captions": { + "shape": "S14" + }, + "Encryption": { + "shape": "Sc" + } + } + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PresetWatermarkId": {}, + "InputKey": {}, + "Encryption": { + "shape": "Sc" + } + } + } + }, + "Ss": { + "type": "structure", + "members": { + "MergePolicy": {}, + "Artwork": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InputKey": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "SizingPolicy": {}, + "PaddingPolicy": {}, + "AlbumArtFormat": {}, + "Encryption": { + "shape": "Sc" + } + } + } + } + } + }, + "S10": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TimeSpan": { + "type": "structure", + "members": { + "StartTime": {}, + "Duration": {} + } + } + } + } + }, + "S14": { + "type": "structure", + "members": { + "MergePolicy": {}, + "CaptionSources": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Language": {}, + "TimeOffset": {}, + "Label": {}, + "Encryption": { + "shape": "Sc" + } + } + } + }, + "CaptionFormats": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Format": {}, + "Pattern": {}, + "Encryption": { + "shape": "Sc" + } + } + } + } + } + }, + "S1j": { + "type": "list", + "member": {} + }, + "S1k": { + "type": "structure", + "members": { + "Method": {}, + "Key": {}, + "KeyMd5": {}, + "InitializationVector": {}, + "LicenseAcquisitionUrl": {}, + "KeyStoragePolicy": {} + } + }, + "S1o": { + "type": "structure", + "members": { + "Format": {}, + "Key": {}, + "KeyMd5": {}, + "KeyId": {}, + "InitializationVector": {}, + "LicenseAcquisitionUrl": {} + } + }, + "S1t": { + "type": "map", + "key": {}, + "value": {} + }, + "S1w": { + "type": "structure", + "members": { + "Id": {}, + "Arn": {}, + "PipelineId": {}, + "Input": { + "shape": "S5" + }, + "Output": { + "shape": "S1x" + }, + "Outputs": { + "type": "list", + "member": { + "shape": "S1x" + } + }, + "OutputKeyPrefix": {}, + "Playlists": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Format": {}, + "OutputKeys": { + "shape": "S1j" + }, + "HlsContentProtection": { + "shape": "S1k" + }, + "PlayReadyDrm": { + "shape": "S1o" + }, + "Status": {}, + "StatusDetail": {} + } + } + }, + "Status": {}, + "UserMetadata": { + "shape": "S1t" + }, + "Timing": { + "type": "structure", + "members": { + "SubmitTimeMillis": { + "type": "long" + }, + "StartTimeMillis": { + "type": "long" + }, + "FinishTimeMillis": { + "type": "long" + } + } + } + } + }, + "S1x": { + "type": "structure", + "members": { + "Id": {}, + "Key": {}, + "ThumbnailPattern": {}, + "ThumbnailEncryption": { + "shape": "Sc" + }, + "Rotate": {}, + "PresetId": {}, + "SegmentDuration": {}, + "Status": {}, + "StatusDetail": {}, + "Duration": { + "type": "long" + }, + "Width": { + "type": "integer" + }, + "Height": { + "type": "integer" + }, + "FrameRate": {}, + "FileSize": { + "type": "long" + }, + "DurationMillis": { + "type": "long" + }, + "Watermarks": { + "shape": "So" + }, + "AlbumArt": { + "shape": "Ss" + }, + "Composition": { + "shape": "S10" + }, + "Captions": { + "shape": "S14" + }, + "Encryption": { + "shape": "Sc" + }, + "AppliedColorSpaceConversion": {} + } + }, + "S28": { + "type": "structure", + "members": { + "Progressing": {}, + "Completed": {}, + "Warning": {}, + "Error": {} + } + }, + "S2a": { + "type": "structure", + "members": { + "Bucket": {}, + "StorageClass": {}, + "Permissions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GranteeType": {}, + "Grantee": {}, + "Access": { + "type": "list", + "member": {} + } + } + } + } + } + }, + "S2j": { + "type": "structure", + "members": { + "Id": {}, + "Arn": {}, + "Name": {}, + "Status": {}, + "InputBucket": {}, + "OutputBucket": {}, + "Role": {}, + "AwsKmsKeyArn": {}, + "Notifications": { + "shape": "S28" + }, + "ContentConfig": { + "shape": "S2a" + }, + "ThumbnailConfig": { + "shape": "S2a" + } + } + }, + "S2l": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + } + }, + "S2p": { + "type": "structure", + "members": { + "Codec": {}, + "CodecOptions": { + "type": "map", + "key": {}, + "value": {} + }, + "KeyframesMaxDist": {}, + "FixedGOP": {}, + "BitRate": {}, + "FrameRate": {}, + "MaxFrameRate": {}, + "Resolution": {}, + "AspectRatio": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "DisplayAspectRatio": {}, + "SizingPolicy": {}, + "PaddingPolicy": {}, + "Watermarks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "SizingPolicy": {}, + "HorizontalAlign": {}, + "HorizontalOffset": {}, + "VerticalAlign": {}, + "VerticalOffset": {}, + "Opacity": {}, + "Target": {} + } + } + } + } + }, + "S35": { + "type": "structure", + "members": { + "Codec": {}, + "SampleRate": {}, + "BitRate": {}, + "Channels": {}, + "AudioPackingMode": {}, + "CodecOptions": { + "type": "structure", + "members": { + "Profile": {}, + "BitDepth": {}, + "BitOrder": {}, + "Signed": {} + } + } + } + }, + "S3g": { + "type": "structure", + "members": { + "Format": {}, + "Interval": {}, + "Resolution": {}, + "AspectRatio": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "SizingPolicy": {}, + "PaddingPolicy": {} + } + }, + "S3k": { + "type": "structure", + "members": { + "Id": {}, + "Arn": {}, + "Name": {}, + "Description": {}, + "Container": {}, + "Audio": { + "shape": "S35" + }, + "Video": { + "shape": "S2p" + }, + "Thumbnails": { + "shape": "S3g" + }, + "Type": {} + } + }, + "S3t": { + "type": "list", + "member": { + "shape": "S1w" + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json new file mode 100644 index 0000000..5a145d3 --- /dev/null +++ b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json @@ -0,0 +1,24 @@ +{ + "pagination": { + "ListJobsByPipeline": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Jobs" + }, + "ListJobsByStatus": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Jobs" + }, + "ListPipelines": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Pipelines" + }, + "ListPresets": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Presets" + } + } +} diff --git a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json new file mode 100644 index 0000000..55c3628 --- /dev/null +++ b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json @@ -0,0 +1,30 @@ +{ + "version": 2, + "waiters": { + "JobComplete": { + "delay": 30, + "operation": "ReadJob", + "maxAttempts": 120, + "acceptors": [ + { + "expected": "Complete", + "matcher": "path", + "state": "success", + "argument": "Job.Status" + }, + { + "expected": "Canceled", + "matcher": "path", + "state": "failure", + "argument": "Job.Status" + }, + { + "expected": "Error", + "matcher": "path", + "state": "failure", + "argument": "Job.Status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.examples.json b/node_modules/aws-sdk/apis/email-2010-12-01.examples.json new file mode 100644 index 0000000..8855529 --- /dev/null +++ b/node_modules/aws-sdk/apis/email-2010-12-01.examples.json @@ -0,0 +1,953 @@ +{ + "version": "1.0", + "examples": { + "CloneReceiptRuleSet": [ + { + "input": { + "OriginalRuleSetName": "RuleSetToClone", + "RuleSetName": "RuleSetToCreate" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example creates a receipt rule set by cloning an existing one:", + "id": "clonereceiptruleset-1469055039770", + "title": "CloneReceiptRuleSet" + } + ], + "CreateReceiptFilter": [ + { + "input": { + "Filter": { + "IpFilter": { + "Cidr": "1.2.3.4/24", + "Policy": "Allow" + }, + "Name": "MyFilter" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example creates a new IP address filter:", + "id": "createreceiptfilter-1469122681253", + "title": "CreateReceiptFilter" + } + ], + "CreateReceiptRule": [ + { + "input": { + "After": "", + "Rule": { + "Actions": [ + { + "S3Action": { + "BucketName": "MyBucket", + "ObjectKeyPrefix": "email" + } + } + ], + "Enabled": true, + "Name": "MyRule", + "ScanEnabled": true, + "TlsPolicy": "Optional" + }, + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example creates a new receipt rule:", + "id": "createreceiptrule-1469122946515", + "title": "CreateReceiptRule" + } + ], + "CreateReceiptRuleSet": [ + { + "input": { + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example creates an empty receipt rule set:", + "id": "createreceiptruleset-1469058761646", + "title": "CreateReceiptRuleSet" + } + ], + "DeleteIdentity": [ + { + "input": { + "Identity": "user@example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example deletes an identity from the list of identities that have been submitted for verification with Amazon SES:", + "id": "deleteidentity-1469047858906", + "title": "DeleteIdentity" + } + ], + "DeleteIdentityPolicy": [ + { + "input": { + "Identity": "user@example.com", + "PolicyName": "MyPolicy" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example deletes a sending authorization policy for an identity:", + "id": "deleteidentitypolicy-1469055282499", + "title": "DeleteIdentityPolicy" + } + ], + "DeleteReceiptFilter": [ + { + "input": { + "FilterName": "MyFilter" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example deletes an IP address filter:", + "id": "deletereceiptfilter-1469055456835", + "title": "DeleteReceiptFilter" + } + ], + "DeleteReceiptRule": [ + { + "input": { + "RuleName": "MyRule", + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example deletes a receipt rule:", + "id": "deletereceiptrule-1469055563599", + "title": "DeleteReceiptRule" + } + ], + "DeleteReceiptRuleSet": [ + { + "input": { + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example deletes a receipt rule set:", + "id": "deletereceiptruleset-1469055713690", + "title": "DeleteReceiptRuleSet" + } + ], + "DeleteVerifiedEmailAddress": [ + { + "input": { + "EmailAddress": "user@example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example deletes an email address from the list of identities that have been submitted for verification with Amazon SES:", + "id": "deleteverifiedemailaddress-1469051086444", + "title": "DeleteVerifiedEmailAddress" + } + ], + "DescribeActiveReceiptRuleSet": [ + { + "input": { + }, + "output": { + "Metadata": { + "CreatedTimestamp": "2016-07-15T16:25:59.607Z", + "Name": "default-rule-set" + }, + "Rules": [ + { + "Actions": [ + { + "S3Action": { + "BucketName": "MyBucket", + "ObjectKeyPrefix": "email" + } + } + ], + "Enabled": true, + "Name": "MyRule", + "ScanEnabled": true, + "TlsPolicy": "Optional" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the metadata and receipt rules for the receipt rule set that is currently active:", + "id": "describeactivereceiptruleset-1469121611502", + "title": "DescribeActiveReceiptRuleSet" + } + ], + "DescribeReceiptRule": [ + { + "input": { + "RuleName": "MyRule", + "RuleSetName": "MyRuleSet" + }, + "output": { + "Rule": { + "Actions": [ + { + "S3Action": { + "BucketName": "MyBucket", + "ObjectKeyPrefix": "email" + } + } + ], + "Enabled": true, + "Name": "MyRule", + "ScanEnabled": true, + "TlsPolicy": "Optional" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the details of a receipt rule:", + "id": "describereceiptrule-1469055813118", + "title": "DescribeReceiptRule" + } + ], + "DescribeReceiptRuleSet": [ + { + "input": { + "RuleSetName": "MyRuleSet" + }, + "output": { + "Metadata": { + "CreatedTimestamp": "2016-07-15T16:25:59.607Z", + "Name": "MyRuleSet" + }, + "Rules": [ + { + "Actions": [ + { + "S3Action": { + "BucketName": "MyBucket", + "ObjectKeyPrefix": "email" + } + } + ], + "Enabled": true, + "Name": "MyRule", + "ScanEnabled": true, + "TlsPolicy": "Optional" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the metadata and receipt rules of a receipt rule set:", + "id": "describereceiptruleset-1469121240385", + "title": "DescribeReceiptRuleSet" + } + ], + "GetIdentityDkimAttributes": [ + { + "input": { + "Identities": [ + "example.com", + "user@example.com" + ] + }, + "output": { + "DkimAttributes": { + "example.com": { + "DkimEnabled": true, + "DkimTokens": [ + "EXAMPLEjcs5xoyqytjsotsijas7236gr", + "EXAMPLEjr76cvoc6mysspnioorxsn6ep", + "EXAMPLEkbmkqkhlm2lyz77ppkulerm4k" + ], + "DkimVerificationStatus": "Success" + }, + "user@example.com": { + "DkimEnabled": false, + "DkimVerificationStatus": "NotStarted" + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example retrieves the Amazon SES Easy DKIM attributes for a list of identities:", + "id": "getidentitydkimattributes-1469050695628", + "title": "GetIdentityDkimAttributes" + } + ], + "GetIdentityMailFromDomainAttributes": [ + { + "input": { + "Identities": [ + "example.com" + ] + }, + "output": { + "MailFromDomainAttributes": { + "example.com": { + "BehaviorOnMXFailure": "UseDefaultValue", + "MailFromDomain": "bounces.example.com", + "MailFromDomainStatus": "Success" + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the custom MAIL FROM attributes for an identity:", + "id": "getidentitymailfromdomainattributes-1469123114860", + "title": "GetIdentityMailFromDomainAttributes" + } + ], + "GetIdentityNotificationAttributes": [ + { + "input": { + "Identities": [ + "example.com" + ] + }, + "output": { + "NotificationAttributes": { + "example.com": { + "BounceTopic": "arn:aws:sns:us-east-1:EXAMPLE65304:ExampleTopic", + "ForwardingEnabled": true, + "HeadersInBounceNotificationsEnabled": false, + "HeadersInComplaintNotificationsEnabled": false, + "HeadersInDeliveryNotificationsEnabled": false + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the notification attributes for an identity:", + "id": "getidentitynotificationattributes-1469123466947", + "title": "GetIdentityNotificationAttributes" + } + ], + "GetIdentityPolicies": [ + { + "input": { + "Identity": "example.com", + "PolicyNames": [ + "MyPolicy" + ] + }, + "output": { + "Policies": { + "MyPolicy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"stmt1469123904194\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":[\"ses:SendEmail\",\"ses:SendRawEmail\"],\"Resource\":\"arn:aws:ses:us-east-1:EXAMPLE65304:identity/example.com\"}]}" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns a sending authorization policy for an identity:", + "id": "getidentitypolicies-1469123949351", + "title": "GetIdentityPolicies" + } + ], + "GetIdentityVerificationAttributes": [ + { + "input": { + "Identities": [ + "example.com" + ] + }, + "output": { + "VerificationAttributes": { + "example.com": { + "VerificationStatus": "Success", + "VerificationToken": "EXAMPLE3VYb9EDI2nTOQRi/Tf6MI/6bD6THIGiP1MVY=" + } + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the verification status and the verification token for a domain identity:", + "id": "getidentityverificationattributes-1469124205897", + "title": "GetIdentityVerificationAttributes" + } + ], + "GetSendQuota": [ + { + "output": { + "Max24HourSend": 200, + "MaxSendRate": 1, + "SentLast24Hours": 1 + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns the Amazon SES sending limits for an AWS account:", + "id": "getsendquota-1469047324508", + "title": "GetSendQuota" + } + ], + "GetSendStatistics": [ + { + "output": { + "SendDataPoints": [ + { + "Bounces": 0, + "Complaints": 0, + "DeliveryAttempts": 5, + "Rejects": 0, + "Timestamp": "2016-07-13T22:43:00Z" + }, + { + "Bounces": 0, + "Complaints": 0, + "DeliveryAttempts": 3, + "Rejects": 0, + "Timestamp": "2016-07-13T23:13:00Z" + }, + { + "Bounces": 0, + "Complaints": 0, + "DeliveryAttempts": 1, + "Rejects": 0, + "Timestamp": "2016-07-13T21:13:00Z" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns Amazon SES sending statistics:", + "id": "getsendstatistics-1469047741329", + "title": "GetSendStatistics" + } + ], + "ListIdentities": [ + { + "input": { + "IdentityType": "EmailAddress", + "MaxItems": 123, + "NextToken": "" + }, + "output": { + "Identities": [ + "user@example.com" + ], + "NextToken": "" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example lists the email address identities that have been submitted for verification with Amazon SES:", + "id": "listidentities-1469048638493", + "title": "ListIdentities" + } + ], + "ListIdentityPolicies": [ + { + "input": { + "Identity": "example.com" + }, + "output": { + "PolicyNames": [ + "MyPolicy" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example returns a list of sending authorization policies that are attached to an identity:", + "id": "listidentitypolicies-1469124417674", + "title": "ListIdentityPolicies" + } + ], + "ListReceiptFilters": [ + { + "output": { + "Filters": [ + { + "IpFilter": { + "Cidr": "1.2.3.4/24", + "Policy": "Block" + }, + "Name": "MyFilter" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example lists the IP address filters that are associated with an AWS account:", + "id": "listreceiptfilters-1469120786789", + "title": "ListReceiptFilters" + } + ], + "ListReceiptRuleSets": [ + { + "input": { + "NextToken": "" + }, + "output": { + "NextToken": "", + "RuleSets": [ + { + "CreatedTimestamp": "2016-07-15T16:25:59.607Z", + "Name": "MyRuleSet" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example lists the receipt rule sets that exist under an AWS account:", + "id": "listreceiptrulesets-1469121037235", + "title": "ListReceiptRuleSets" + } + ], + "ListVerifiedEmailAddresses": [ + { + "output": { + "VerifiedEmailAddresses": [ + "user1@example.com", + "user2@example.com" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example lists all email addresses that have been submitted for verification with Amazon SES:", + "id": "listverifiedemailaddresses-1469051402570", + "title": "ListVerifiedEmailAddresses" + } + ], + "PutIdentityPolicy": [ + { + "input": { + "Identity": "example.com", + "Policy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"stmt1469123904194\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":[\"ses:SendEmail\",\"ses:SendRawEmail\"],\"Resource\":\"arn:aws:ses:us-east-1:EXAMPLE65304:identity/example.com\"}]}", + "PolicyName": "MyPolicy" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example adds a sending authorization policy to an identity:", + "id": "putidentitypolicy-1469124560016", + "title": "PutIdentityPolicy" + } + ], + "ReorderReceiptRuleSet": [ + { + "input": { + "RuleNames": [ + "MyRule", + "MyOtherRule" + ], + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example reorders the receipt rules within a receipt rule set:", + "id": "reorderreceiptruleset-1469058156806", + "title": "ReorderReceiptRuleSet" + } + ], + "SendEmail": [ + { + "input": { + "Destination": { + "BccAddresses": [ + + ], + "CcAddresses": [ + "recipient3@example.com" + ], + "ToAddresses": [ + "recipient1@example.com", + "recipient2@example.com" + ] + }, + "Message": { + "Body": { + "Html": { + "Charset": "UTF-8", + "Data": "This message body contains HTML formatting. It can, for example, contain links like this one: Amazon SES Developer Guide." + }, + "Text": { + "Charset": "UTF-8", + "Data": "This is the message body in text format." + } + }, + "Subject": { + "Charset": "UTF-8", + "Data": "Test email" + } + }, + "ReplyToAddresses": [ + + ], + "ReturnPath": "", + "ReturnPathArn": "", + "Source": "sender@example.com", + "SourceArn": "" + }, + "output": { + "MessageId": "EXAMPLE78603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example sends a formatted email:", + "id": "sendemail-1469049656296", + "title": "SendEmail" + } + ], + "SendRawEmail": [ + { + "input": { + "Destinations": [ + + ], + "FromArn": "", + "RawMessage": { + "Data": "From: sender@example.com\\nTo: recipient@example.com\\nSubject: Test email (contains an attachment)\\nMIME-Version: 1.0\\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\\n\\n--NextPart\\nContent-Type: text/plain\\n\\nThis is the message body.\\n\\n--NextPart\\nContent-Type: text/plain;\\nContent-Disposition: attachment; filename=\"attachment.txt\"\\n\\nThis is the text in the attachment.\\n\\n--NextPart--" + }, + "ReturnPathArn": "", + "Source": "", + "SourceArn": "" + }, + "output": { + "MessageId": "EXAMPLEf3f73d99b-c63fb06f-d263-41f8-a0fb-d0dc67d56c07-000000" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example sends an email with an attachment:", + "id": "sendrawemail-1469118548649", + "title": "SendRawEmail" + } + ], + "SetActiveReceiptRuleSet": [ + { + "input": { + "RuleSetName": "RuleSetToActivate" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example sets the active receipt rule set:", + "id": "setactivereceiptruleset-1469058391329", + "title": "SetActiveReceiptRuleSet" + } + ], + "SetIdentityDkimEnabled": [ + { + "input": { + "DkimEnabled": true, + "Identity": "user@example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example configures Amazon SES to Easy DKIM-sign the email sent from an identity:", + "id": "setidentitydkimenabled-1469057485202", + "title": "SetIdentityDkimEnabled" + } + ], + "SetIdentityFeedbackForwardingEnabled": [ + { + "input": { + "ForwardingEnabled": true, + "Identity": "user@example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example configures Amazon SES to forward an identity's bounces and complaints via email:", + "id": "setidentityfeedbackforwardingenabled-1469056811329", + "title": "SetIdentityFeedbackForwardingEnabled" + } + ], + "SetIdentityHeadersInNotificationsEnabled": [ + { + "input": { + "Enabled": true, + "Identity": "user@example.com", + "NotificationType": "Bounce" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example configures Amazon SES to include the original email headers in the Amazon SNS bounce notifications for an identity:", + "id": "setidentityheadersinnotificationsenabled-1469057295001", + "title": "SetIdentityHeadersInNotificationsEnabled" + } + ], + "SetIdentityMailFromDomain": [ + { + "input": { + "BehaviorOnMXFailure": "UseDefaultValue", + "Identity": "user@example.com", + "MailFromDomain": "bounces.example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example configures Amazon SES to use a custom MAIL FROM domain for an identity:", + "id": "setidentitymailfromdomain-1469057693908", + "title": "SetIdentityMailFromDomain" + } + ], + "SetIdentityNotificationTopic": [ + { + "input": { + "Identity": "user@example.com", + "NotificationType": "Bounce", + "SnsTopic": "arn:aws:sns:us-west-2:111122223333:MyTopic" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example sets the Amazon SNS topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with the specified identity as the Source:", + "id": "setidentitynotificationtopic-1469057854966", + "title": "SetIdentityNotificationTopic" + } + ], + "SetReceiptRulePosition": [ + { + "input": { + "After": "PutRuleAfterThisRule", + "RuleName": "RuleToReposition", + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example sets the position of a receipt rule in a receipt rule set:", + "id": "setreceiptruleposition-1469058530550", + "title": "SetReceiptRulePosition" + } + ], + "UpdateReceiptRule": [ + { + "input": { + "Rule": { + "Actions": [ + { + "S3Action": { + "BucketName": "MyBucket", + "ObjectKeyPrefix": "email" + } + } + ], + "Enabled": true, + "Name": "MyRule", + "ScanEnabled": true, + "TlsPolicy": "Optional" + }, + "RuleSetName": "MyRuleSet" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example updates a receipt rule to use an Amazon S3 action:", + "id": "updatereceiptrule-1469051756940", + "title": "UpdateReceiptRule" + } + ], + "VerifyDomainDkim": [ + { + "input": { + "Domain": "example.com" + }, + "output": { + "DkimTokens": [ + "EXAMPLEq76owjnks3lnluwg65scbemvw", + "EXAMPLEi3dnsj67hstzaj673klariwx2", + "EXAMPLEwfbtcukvimehexktmdtaz6naj" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example generates DKIM tokens for a domain that has been verified with Amazon SES:", + "id": "verifydomaindkim-1469049503083", + "title": "VerifyDomainDkim" + } + ], + "VerifyDomainIdentity": [ + { + "input": { + "Domain": "example.com" + }, + "output": { + "VerificationToken": "eoEmxw+YaYhb3h3iVJHuXMJXqeu1q1/wwmvjuEXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example starts the domain verification process with Amazon SES:", + "id": "verifydomainidentity-1469049165936", + "title": "VerifyDomainIdentity" + } + ], + "VerifyEmailAddress": [ + { + "input": { + "EmailAddress": "user@example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example starts the email address verification process with Amazon SES:", + "id": "verifyemailaddress-1469048849187", + "title": "VerifyEmailAddress" + } + ], + "VerifyEmailIdentity": [ + { + "input": { + "EmailAddress": "user@example.com" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following example starts the email address verification process with Amazon SES:", + "id": "verifyemailidentity-1469049068623", + "title": "VerifyEmailIdentity" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.min.json b/node_modules/aws-sdk/apis/email-2010-12-01.min.json new file mode 100644 index 0000000..75a79ec --- /dev/null +++ b/node_modules/aws-sdk/apis/email-2010-12-01.min.json @@ -0,0 +1,1214 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-12-01", + "endpointPrefix": "email", + "protocol": "query", + "serviceAbbreviation": "Amazon SES", + "serviceFullName": "Amazon Simple Email Service", + "signatureVersion": "v4", + "signingName": "ses", + "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/" + }, + "operations": { + "CloneReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "OriginalRuleSetName" + ], + "members": { + "RuleSetName": {}, + "OriginalRuleSetName": {} + } + }, + "output": { + "resultWrapper": "CloneReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "CreateReceiptFilter": { + "input": { + "type": "structure", + "required": [ + "Filter" + ], + "members": { + "Filter": { + "shape": "S5" + } + } + }, + "output": { + "resultWrapper": "CreateReceiptFilterResult", + "type": "structure", + "members": {} + } + }, + "CreateReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "Rule" + ], + "members": { + "RuleSetName": {}, + "After": {}, + "Rule": { + "shape": "Sd" + } + } + }, + "output": { + "resultWrapper": "CreateReceiptRuleResult", + "type": "structure", + "members": {} + } + }, + "CreateReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName" + ], + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "CreateReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "DeleteIdentity": { + "input": { + "type": "structure", + "required": [ + "Identity" + ], + "members": { + "Identity": {} + } + }, + "output": { + "resultWrapper": "DeleteIdentityResult", + "type": "structure", + "members": {} + } + }, + "DeleteIdentityPolicy": { + "input": { + "type": "structure", + "required": [ + "Identity", + "PolicyName" + ], + "members": { + "Identity": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "DeleteIdentityPolicyResult", + "type": "structure", + "members": {} + } + }, + "DeleteReceiptFilter": { + "input": { + "type": "structure", + "required": [ + "FilterName" + ], + "members": { + "FilterName": {} + } + }, + "output": { + "resultWrapper": "DeleteReceiptFilterResult", + "type": "structure", + "members": {} + } + }, + "DeleteReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleName" + ], + "members": { + "RuleSetName": {}, + "RuleName": {} + } + }, + "output": { + "resultWrapper": "DeleteReceiptRuleResult", + "type": "structure", + "members": {} + } + }, + "DeleteReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName" + ], + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "DeleteReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "DeleteVerifiedEmailAddress": { + "input": { + "type": "structure", + "required": [ + "EmailAddress" + ], + "members": { + "EmailAddress": {} + } + } + }, + "DescribeActiveReceiptRuleSet": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "DescribeActiveReceiptRuleSetResult", + "type": "structure", + "members": { + "Metadata": { + "shape": "S1l" + }, + "Rules": { + "shape": "S1n" + } + } + } + }, + "DescribeReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleName" + ], + "members": { + "RuleSetName": {}, + "RuleName": {} + } + }, + "output": { + "resultWrapper": "DescribeReceiptRuleResult", + "type": "structure", + "members": { + "Rule": { + "shape": "Sd" + } + } + } + }, + "DescribeReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName" + ], + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "DescribeReceiptRuleSetResult", + "type": "structure", + "members": { + "Metadata": { + "shape": "S1l" + }, + "Rules": { + "shape": "S1n" + } + } + } + }, + "GetIdentityDkimAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityDkimAttributesResult", + "type": "structure", + "required": [ + "DkimAttributes" + ], + "members": { + "DkimAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "DkimEnabled", + "DkimVerificationStatus" + ], + "members": { + "DkimEnabled": { + "type": "boolean" + }, + "DkimVerificationStatus": {}, + "DkimTokens": { + "shape": "S1y" + } + } + } + } + } + } + }, + "GetIdentityMailFromDomainAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityMailFromDomainAttributesResult", + "type": "structure", + "required": [ + "MailFromDomainAttributes" + ], + "members": { + "MailFromDomainAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "MailFromDomain", + "MailFromDomainStatus", + "BehaviorOnMXFailure" + ], + "members": { + "MailFromDomain": {}, + "MailFromDomainStatus": {}, + "BehaviorOnMXFailure": {} + } + } + } + } + } + }, + "GetIdentityNotificationAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityNotificationAttributesResult", + "type": "structure", + "required": [ + "NotificationAttributes" + ], + "members": { + "NotificationAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "BounceTopic", + "ComplaintTopic", + "DeliveryTopic", + "ForwardingEnabled" + ], + "members": { + "BounceTopic": {}, + "ComplaintTopic": {}, + "DeliveryTopic": {}, + "ForwardingEnabled": { + "type": "boolean" + }, + "HeadersInBounceNotificationsEnabled": { + "type": "boolean" + }, + "HeadersInComplaintNotificationsEnabled": { + "type": "boolean" + }, + "HeadersInDeliveryNotificationsEnabled": { + "type": "boolean" + } + } + } + } + } + } + }, + "GetIdentityPolicies": { + "input": { + "type": "structure", + "required": [ + "Identity", + "PolicyNames" + ], + "members": { + "Identity": {}, + "PolicyNames": { + "shape": "S2d" + } + } + }, + "output": { + "resultWrapper": "GetIdentityPoliciesResult", + "type": "structure", + "required": [ + "Policies" + ], + "members": { + "Policies": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "GetIdentityVerificationAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityVerificationAttributesResult", + "type": "structure", + "required": [ + "VerificationAttributes" + ], + "members": { + "VerificationAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "VerificationStatus" + ], + "members": { + "VerificationStatus": {}, + "VerificationToken": {} + } + } + } + } + } + }, + "GetSendQuota": { + "output": { + "resultWrapper": "GetSendQuotaResult", + "type": "structure", + "members": { + "Max24HourSend": { + "type": "double" + }, + "MaxSendRate": { + "type": "double" + }, + "SentLast24Hours": { + "type": "double" + } + } + } + }, + "GetSendStatistics": { + "output": { + "resultWrapper": "GetSendStatisticsResult", + "type": "structure", + "members": { + "SendDataPoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Timestamp": { + "type": "timestamp" + }, + "DeliveryAttempts": { + "type": "long" + }, + "Bounces": { + "type": "long" + }, + "Complaints": { + "type": "long" + }, + "Rejects": { + "type": "long" + } + } + } + } + } + } + }, + "ListIdentities": { + "input": { + "type": "structure", + "members": { + "IdentityType": {}, + "NextToken": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListIdentitiesResult", + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + }, + "NextToken": {} + } + } + }, + "ListIdentityPolicies": { + "input": { + "type": "structure", + "required": [ + "Identity" + ], + "members": { + "Identity": {} + } + }, + "output": { + "resultWrapper": "ListIdentityPoliciesResult", + "type": "structure", + "required": [ + "PolicyNames" + ], + "members": { + "PolicyNames": { + "shape": "S2d" + } + } + } + }, + "ListReceiptFilters": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "ListReceiptFiltersResult", + "type": "structure", + "members": { + "Filters": { + "type": "list", + "member": { + "shape": "S5" + } + } + } + } + }, + "ListReceiptRuleSets": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListReceiptRuleSetsResult", + "type": "structure", + "members": { + "RuleSets": { + "type": "list", + "member": { + "shape": "S1l" + } + }, + "NextToken": {} + } + } + }, + "ListVerifiedEmailAddresses": { + "output": { + "resultWrapper": "ListVerifiedEmailAddressesResult", + "type": "structure", + "members": { + "VerifiedEmailAddresses": { + "shape": "S37" + } + } + } + }, + "PutIdentityPolicy": { + "input": { + "type": "structure", + "required": [ + "Identity", + "PolicyName", + "Policy" + ], + "members": { + "Identity": {}, + "PolicyName": {}, + "Policy": {} + } + }, + "output": { + "resultWrapper": "PutIdentityPolicyResult", + "type": "structure", + "members": {} + } + }, + "ReorderReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleNames" + ], + "members": { + "RuleSetName": {}, + "RuleNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "ReorderReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "SendBounce": { + "input": { + "type": "structure", + "required": [ + "OriginalMessageId", + "BounceSender", + "BouncedRecipientInfoList" + ], + "members": { + "OriginalMessageId": {}, + "BounceSender": {}, + "Explanation": {}, + "MessageDsn": { + "type": "structure", + "required": [ + "ReportingMta" + ], + "members": { + "ReportingMta": {}, + "ArrivalDate": { + "type": "timestamp" + }, + "ExtensionFields": { + "shape": "S3j" + } + } + }, + "BouncedRecipientInfoList": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Recipient" + ], + "members": { + "Recipient": {}, + "RecipientArn": {}, + "BounceType": {}, + "RecipientDsnFields": { + "type": "structure", + "required": [ + "Action", + "Status" + ], + "members": { + "FinalRecipient": {}, + "Action": {}, + "RemoteMta": {}, + "Status": {}, + "DiagnosticCode": {}, + "LastAttemptDate": { + "type": "timestamp" + }, + "ExtensionFields": { + "shape": "S3j" + } + } + } + } + } + }, + "BounceSenderArn": {} + } + }, + "output": { + "resultWrapper": "SendBounceResult", + "type": "structure", + "members": { + "MessageId": {} + } + } + }, + "SendEmail": { + "input": { + "type": "structure", + "required": [ + "Source", + "Destination", + "Message" + ], + "members": { + "Source": {}, + "Destination": { + "type": "structure", + "members": { + "ToAddresses": { + "shape": "S37" + }, + "CcAddresses": { + "shape": "S37" + }, + "BccAddresses": { + "shape": "S37" + } + } + }, + "Message": { + "type": "structure", + "required": [ + "Subject", + "Body" + ], + "members": { + "Subject": { + "shape": "S40" + }, + "Body": { + "type": "structure", + "members": { + "Text": { + "shape": "S40" + }, + "Html": { + "shape": "S40" + } + } + } + } + }, + "ReplyToAddresses": { + "shape": "S37" + }, + "ReturnPath": {}, + "SourceArn": {}, + "ReturnPathArn": {} + } + }, + "output": { + "resultWrapper": "SendEmailResult", + "type": "structure", + "required": [ + "MessageId" + ], + "members": { + "MessageId": {} + } + } + }, + "SendRawEmail": { + "input": { + "type": "structure", + "required": [ + "RawMessage" + ], + "members": { + "Source": {}, + "Destinations": { + "shape": "S37" + }, + "RawMessage": { + "type": "structure", + "required": [ + "Data" + ], + "members": { + "Data": { + "type": "blob" + } + } + }, + "FromArn": {}, + "SourceArn": {}, + "ReturnPathArn": {} + } + }, + "output": { + "resultWrapper": "SendRawEmailResult", + "type": "structure", + "required": [ + "MessageId" + ], + "members": { + "MessageId": {} + } + } + }, + "SetActiveReceiptRuleSet": { + "input": { + "type": "structure", + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "SetActiveReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityDkimEnabled": { + "input": { + "type": "structure", + "required": [ + "Identity", + "DkimEnabled" + ], + "members": { + "Identity": {}, + "DkimEnabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetIdentityDkimEnabledResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityFeedbackForwardingEnabled": { + "input": { + "type": "structure", + "required": [ + "Identity", + "ForwardingEnabled" + ], + "members": { + "Identity": {}, + "ForwardingEnabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityHeadersInNotificationsEnabled": { + "input": { + "type": "structure", + "required": [ + "Identity", + "NotificationType", + "Enabled" + ], + "members": { + "Identity": {}, + "NotificationType": {}, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityMailFromDomain": { + "input": { + "type": "structure", + "required": [ + "Identity" + ], + "members": { + "Identity": {}, + "MailFromDomain": {}, + "BehaviorOnMXFailure": {} + } + }, + "output": { + "resultWrapper": "SetIdentityMailFromDomainResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityNotificationTopic": { + "input": { + "type": "structure", + "required": [ + "Identity", + "NotificationType" + ], + "members": { + "Identity": {}, + "NotificationType": {}, + "SnsTopic": {} + } + }, + "output": { + "resultWrapper": "SetIdentityNotificationTopicResult", + "type": "structure", + "members": {} + } + }, + "SetReceiptRulePosition": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleName" + ], + "members": { + "RuleSetName": {}, + "RuleName": {}, + "After": {} + } + }, + "output": { + "resultWrapper": "SetReceiptRulePositionResult", + "type": "structure", + "members": {} + } + }, + "UpdateReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "Rule" + ], + "members": { + "RuleSetName": {}, + "Rule": { + "shape": "Sd" + } + } + }, + "output": { + "resultWrapper": "UpdateReceiptRuleResult", + "type": "structure", + "members": {} + } + }, + "VerifyDomainDkim": { + "input": { + "type": "structure", + "required": [ + "Domain" + ], + "members": { + "Domain": {} + } + }, + "output": { + "resultWrapper": "VerifyDomainDkimResult", + "type": "structure", + "required": [ + "DkimTokens" + ], + "members": { + "DkimTokens": { + "shape": "S1y" + } + } + } + }, + "VerifyDomainIdentity": { + "input": { + "type": "structure", + "required": [ + "Domain" + ], + "members": { + "Domain": {} + } + }, + "output": { + "resultWrapper": "VerifyDomainIdentityResult", + "type": "structure", + "required": [ + "VerificationToken" + ], + "members": { + "VerificationToken": {} + } + } + }, + "VerifyEmailAddress": { + "input": { + "type": "structure", + "required": [ + "EmailAddress" + ], + "members": { + "EmailAddress": {} + } + } + }, + "VerifyEmailIdentity": { + "input": { + "type": "structure", + "required": [ + "EmailAddress" + ], + "members": { + "EmailAddress": {} + } + }, + "output": { + "resultWrapper": "VerifyEmailIdentityResult", + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "required": [ + "Name", + "IpFilter" + ], + "members": { + "Name": {}, + "IpFilter": { + "type": "structure", + "required": [ + "Policy", + "Cidr" + ], + "members": { + "Policy": {}, + "Cidr": {} + } + } + } + }, + "Sd": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Enabled": { + "type": "boolean" + }, + "TlsPolicy": {}, + "Recipients": { + "type": "list", + "member": {} + }, + "Actions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "S3Action": { + "type": "structure", + "required": [ + "BucketName" + ], + "members": { + "TopicArn": {}, + "BucketName": {}, + "ObjectKeyPrefix": {}, + "KmsKeyArn": {} + } + }, + "BounceAction": { + "type": "structure", + "required": [ + "SmtpReplyCode", + "Message", + "Sender" + ], + "members": { + "TopicArn": {}, + "SmtpReplyCode": {}, + "StatusCode": {}, + "Message": {}, + "Sender": {} + } + }, + "WorkmailAction": { + "type": "structure", + "required": [ + "OrganizationArn" + ], + "members": { + "TopicArn": {}, + "OrganizationArn": {} + } + }, + "LambdaAction": { + "type": "structure", + "required": [ + "FunctionArn" + ], + "members": { + "TopicArn": {}, + "FunctionArn": {}, + "InvocationType": {} + } + }, + "StopAction": { + "type": "structure", + "required": [ + "Scope" + ], + "members": { + "Scope": {}, + "TopicArn": {} + } + }, + "AddHeaderAction": { + "type": "structure", + "required": [ + "HeaderName", + "HeaderValue" + ], + "members": { + "HeaderName": {}, + "HeaderValue": {} + } + }, + "SNSAction": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {}, + "Encoding": {} + } + } + } + } + }, + "ScanEnabled": { + "type": "boolean" + } + } + }, + "S1l": { + "type": "structure", + "members": { + "Name": {}, + "CreatedTimestamp": { + "type": "timestamp" + } + } + }, + "S1n": { + "type": "list", + "member": { + "shape": "Sd" + } + }, + "S1t": { + "type": "list", + "member": {} + }, + "S1y": { + "type": "list", + "member": {} + }, + "S2d": { + "type": "list", + "member": {} + }, + "S37": { + "type": "list", + "member": {} + }, + "S3j": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + } + } + }, + "S40": { + "type": "structure", + "required": [ + "Data" + ], + "members": { + "Data": {}, + "Charset": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json b/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json new file mode 100644 index 0000000..e12811f --- /dev/null +++ b/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json @@ -0,0 +1,13 @@ +{ + "pagination": { + "ListIdentities": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxItems", + "result_key": "Identities" + }, + "ListVerifiedEmailAddresses": { + "result_key": "VerifiedEmailAddresses" + } + } +} diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json b/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json new file mode 100644 index 0000000..b585d30 --- /dev/null +++ b/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "waiters": { + "IdentityExists": { + "delay": 3, + "operation": "GetIdentityVerificationAttributes", + "maxAttempts": 20, + "acceptors": [ + { + "expected": "Success", + "matcher": "pathAll", + "state": "success", + "argument": "VerificationAttributes.*.VerificationStatus" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/es-2015-01-01.min.json b/node_modules/aws-sdk/apis/es-2015-01-01.min.json new file mode 100644 index 0000000..2877b2c --- /dev/null +++ b/node_modules/aws-sdk/apis/es-2015-01-01.min.json @@ -0,0 +1,502 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-01-01", + "endpointPrefix": "es", + "protocol": "rest-json", + "serviceFullName": "Amazon Elasticsearch Service", + "signatureVersion": "v4" + }, + "operations": { + "AddTags": { + "http": { + "requestUri": "/2015-01-01/tags" + }, + "input": { + "type": "structure", + "required": [ + "ARN", + "TagList" + ], + "members": { + "ARN": {}, + "TagList": { + "shape": "S3" + } + } + } + }, + "CreateElasticsearchDomain": { + "http": { + "requestUri": "/2015-01-01/es/domain" + }, + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "ElasticsearchVersion": {}, + "ElasticsearchClusterConfig": { + "shape": "Sa" + }, + "EBSOptions": { + "shape": "Se" + }, + "AccessPolicies": {}, + "SnapshotOptions": { + "shape": "Sh" + }, + "AdvancedOptions": { + "shape": "Si" + } + } + }, + "output": { + "type": "structure", + "members": { + "DomainStatus": { + "shape": "Sl" + } + } + } + }, + "DeleteElasticsearchDomain": { + "http": { + "method": "DELETE", + "requestUri": "/2015-01-01/es/domain/{DomainName}" + }, + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": { + "location": "uri", + "locationName": "DomainName" + } + } + }, + "output": { + "type": "structure", + "members": { + "DomainStatus": { + "shape": "Sl" + } + } + } + }, + "DescribeElasticsearchDomain": { + "http": { + "method": "GET", + "requestUri": "/2015-01-01/es/domain/{DomainName}" + }, + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": { + "location": "uri", + "locationName": "DomainName" + } + } + }, + "output": { + "type": "structure", + "required": [ + "DomainStatus" + ], + "members": { + "DomainStatus": { + "shape": "Sl" + } + } + } + }, + "DescribeElasticsearchDomainConfig": { + "http": { + "method": "GET", + "requestUri": "/2015-01-01/es/domain/{DomainName}/config" + }, + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": { + "location": "uri", + "locationName": "DomainName" + } + } + }, + "output": { + "type": "structure", + "required": [ + "DomainConfig" + ], + "members": { + "DomainConfig": { + "shape": "Su" + } + } + } + }, + "DescribeElasticsearchDomains": { + "http": { + "requestUri": "/2015-01-01/es/domain-info" + }, + "input": { + "type": "structure", + "required": [ + "DomainNames" + ], + "members": { + "DomainNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "required": [ + "DomainStatusList" + ], + "members": { + "DomainStatusList": { + "type": "list", + "member": { + "shape": "Sl" + } + } + } + } + }, + "ListDomainNames": { + "http": { + "method": "GET", + "requestUri": "/2015-01-01/domain" + }, + "output": { + "type": "structure", + "members": { + "DomainNames": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DomainName": {} + } + } + } + } + } + }, + "ListTags": { + "http": { + "method": "GET", + "requestUri": "/2015-01-01/tags/" + }, + "input": { + "type": "structure", + "required": [ + "ARN" + ], + "members": { + "ARN": { + "location": "querystring", + "locationName": "arn" + } + } + }, + "output": { + "type": "structure", + "members": { + "TagList": { + "shape": "S3" + } + } + } + }, + "RemoveTags": { + "http": { + "requestUri": "/2015-01-01/tags-removal" + }, + "input": { + "type": "structure", + "required": [ + "ARN", + "TagKeys" + ], + "members": { + "ARN": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "UpdateElasticsearchDomainConfig": { + "http": { + "requestUri": "/2015-01-01/es/domain/{DomainName}/config" + }, + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": { + "location": "uri", + "locationName": "DomainName" + }, + "ElasticsearchClusterConfig": { + "shape": "Sa" + }, + "EBSOptions": { + "shape": "Se" + }, + "SnapshotOptions": { + "shape": "Sh" + }, + "AdvancedOptions": { + "shape": "Si" + }, + "AccessPolicies": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DomainConfig" + ], + "members": { + "DomainConfig": { + "shape": "Su" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sa": { + "type": "structure", + "members": { + "InstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "DedicatedMasterEnabled": { + "type": "boolean" + }, + "ZoneAwarenessEnabled": { + "type": "boolean" + }, + "DedicatedMasterType": {}, + "DedicatedMasterCount": { + "type": "integer" + } + } + }, + "Se": { + "type": "structure", + "members": { + "EBSEnabled": { + "type": "boolean" + }, + "VolumeType": {}, + "VolumeSize": { + "type": "integer" + }, + "Iops": { + "type": "integer" + } + } + }, + "Sh": { + "type": "structure", + "members": { + "AutomatedSnapshotStartHour": { + "type": "integer" + } + } + }, + "Si": { + "type": "map", + "key": {}, + "value": {} + }, + "Sl": { + "type": "structure", + "required": [ + "DomainId", + "DomainName", + "ARN", + "ElasticsearchClusterConfig" + ], + "members": { + "DomainId": {}, + "DomainName": {}, + "ARN": {}, + "Created": { + "type": "boolean" + }, + "Deleted": { + "type": "boolean" + }, + "Endpoint": {}, + "Processing": { + "type": "boolean" + }, + "ElasticsearchVersion": {}, + "ElasticsearchClusterConfig": { + "shape": "Sa" + }, + "EBSOptions": { + "shape": "Se" + }, + "AccessPolicies": {}, + "SnapshotOptions": { + "shape": "Sh" + }, + "AdvancedOptions": { + "shape": "Si" + } + } + }, + "Su": { + "type": "structure", + "members": { + "ElasticsearchVersion": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sw" + } + } + }, + "ElasticsearchClusterConfig": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Sa" + }, + "Status": { + "shape": "Sw" + } + } + }, + "EBSOptions": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Se" + }, + "Status": { + "shape": "Sw" + } + } + }, + "AccessPolicies": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": {}, + "Status": { + "shape": "Sw" + } + } + }, + "SnapshotOptions": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Sh" + }, + "Status": { + "shape": "Sw" + } + } + }, + "AdvancedOptions": { + "type": "structure", + "required": [ + "Options", + "Status" + ], + "members": { + "Options": { + "shape": "Si" + }, + "Status": { + "shape": "Sw" + } + } + } + } + }, + "Sw": { + "type": "structure", + "required": [ + "CreationDate", + "UpdateDate", + "State" + ], + "members": { + "CreationDate": { + "type": "timestamp" + }, + "UpdateDate": { + "type": "timestamp" + }, + "UpdateVersion": { + "type": "integer" + }, + "State": {}, + "PendingDeletion": { + "type": "boolean" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/events-2015-10-07.min.json b/node_modules/aws-sdk/apis/events-2015-10-07.min.json new file mode 100644 index 0000000..bb4d59a --- /dev/null +++ b/node_modules/aws-sdk/apis/events-2015-10-07.min.json @@ -0,0 +1,330 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-10-07", + "endpointPrefix": "events", + "jsonVersion": "1.1", + "serviceFullName": "Amazon CloudWatch Events", + "signatureVersion": "v4", + "targetPrefix": "AWSEvents", + "protocol": "json" + }, + "operations": { + "DeleteRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + } + }, + "DescribeRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "Arn": {}, + "EventPattern": {}, + "ScheduleExpression": {}, + "State": {}, + "Description": {}, + "RoleArn": {} + } + } + }, + "DisableRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + } + }, + "EnableRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + } + }, + "ListRuleNamesByTarget": { + "input": { + "type": "structure", + "required": [ + "TargetArn" + ], + "members": { + "TargetArn": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "RuleNames": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + } + }, + "ListRules": { + "input": { + "type": "structure", + "members": { + "NamePrefix": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Rules": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Arn": {}, + "EventPattern": {}, + "State": {}, + "Description": {}, + "ScheduleExpression": {}, + "RoleArn": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListTargetsByRule": { + "input": { + "type": "structure", + "required": [ + "Rule" + ], + "members": { + "Rule": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Targets": { + "shape": "Sp" + }, + "NextToken": {} + } + } + }, + "PutEvents": { + "input": { + "type": "structure", + "required": [ + "Entries" + ], + "members": { + "Entries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Time": { + "type": "timestamp" + }, + "Source": {}, + "Resources": { + "type": "list", + "member": {} + }, + "DetailType": {}, + "Detail": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedEntryCount": { + "type": "integer" + }, + "Entries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "PutRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "ScheduleExpression": {}, + "EventPattern": {}, + "State": {}, + "Description": {}, + "RoleArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "RuleArn": {} + } + } + }, + "PutTargets": { + "input": { + "type": "structure", + "required": [ + "Rule", + "Targets" + ], + "members": { + "Rule": {}, + "Targets": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedEntryCount": { + "type": "integer" + }, + "FailedEntries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "RemoveTargets": { + "input": { + "type": "structure", + "required": [ + "Rule", + "Ids" + ], + "members": { + "Rule": {}, + "Ids": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedEntryCount": { + "type": "integer" + }, + "FailedEntries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "TestEventPattern": { + "input": { + "type": "structure", + "required": [ + "EventPattern", + "Event" + ], + "members": { + "EventPattern": {}, + "Event": {} + } + }, + "output": { + "type": "structure", + "members": { + "Result": { + "type": "boolean" + } + } + } + } + }, + "shapes": { + "Sp": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Id", + "Arn" + ], + "members": { + "Id": {}, + "Arn": {}, + "Input": {}, + "InputPath": {} + } + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json b/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json new file mode 100644 index 0000000..d7d6bd5 --- /dev/null +++ b/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json @@ -0,0 +1,550 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-08-04", + "endpointPrefix": "firehose", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Firehose", + "serviceFullName": "Amazon Kinesis Firehose", + "signatureVersion": "v4", + "targetPrefix": "Firehose_20150804" + }, + "operations": { + "CreateDeliveryStream": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName" + ], + "members": { + "DeliveryStreamName": {}, + "S3DestinationConfiguration": { + "shape": "S3" + }, + "RedshiftDestinationConfiguration": { + "type": "structure", + "required": [ + "RoleARN", + "ClusterJDBCURL", + "CopyCommand", + "Username", + "Password", + "S3Configuration" + ], + "members": { + "RoleARN": {}, + "ClusterJDBCURL": {}, + "CopyCommand": { + "shape": "Sl" + }, + "Username": { + "shape": "Sp" + }, + "Password": { + "shape": "Sq" + }, + "RetryOptions": { + "shape": "Sr" + }, + "S3Configuration": { + "shape": "S3" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "ElasticsearchDestinationConfiguration": { + "type": "structure", + "required": [ + "RoleARN", + "DomainARN", + "IndexName", + "TypeName", + "S3Configuration" + ], + "members": { + "RoleARN": {}, + "DomainARN": {}, + "IndexName": {}, + "TypeName": {}, + "IndexRotationPeriod": {}, + "BufferingHints": { + "shape": "Sy" + }, + "RetryOptions": { + "shape": "S11" + }, + "S3BackupMode": {}, + "S3Configuration": { + "shape": "S3" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "DeliveryStreamARN": {} + } + } + }, + "DeleteDeliveryStream": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName" + ], + "members": { + "DeliveryStreamName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeDeliveryStream": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName" + ], + "members": { + "DeliveryStreamName": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartDestinationId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DeliveryStreamDescription" + ], + "members": { + "DeliveryStreamDescription": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "DeliveryStreamARN", + "DeliveryStreamStatus", + "VersionId", + "Destinations", + "HasMoreDestinations" + ], + "members": { + "DeliveryStreamName": {}, + "DeliveryStreamARN": {}, + "DeliveryStreamStatus": {}, + "VersionId": {}, + "CreateTimestamp": { + "type": "timestamp" + }, + "LastUpdateTimestamp": { + "type": "timestamp" + }, + "Destinations": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DestinationId" + ], + "members": { + "DestinationId": {}, + "S3DestinationDescription": { + "shape": "S1i" + }, + "RedshiftDestinationDescription": { + "type": "structure", + "required": [ + "RoleARN", + "ClusterJDBCURL", + "CopyCommand", + "Username", + "S3DestinationDescription" + ], + "members": { + "RoleARN": {}, + "ClusterJDBCURL": {}, + "CopyCommand": { + "shape": "Sl" + }, + "Username": { + "shape": "Sp" + }, + "RetryOptions": { + "shape": "Sr" + }, + "S3DestinationDescription": { + "shape": "S1i" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "ElasticsearchDestinationDescription": { + "type": "structure", + "members": { + "RoleARN": {}, + "DomainARN": {}, + "IndexName": {}, + "TypeName": {}, + "IndexRotationPeriod": {}, + "BufferingHints": { + "shape": "Sy" + }, + "RetryOptions": { + "shape": "S11" + }, + "S3BackupMode": {}, + "S3DestinationDescription": { + "shape": "S1i" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } + } + }, + "HasMoreDestinations": { + "type": "boolean" + } + } + } + } + } + }, + "ListDeliveryStreams": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "ExclusiveStartDeliveryStreamName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DeliveryStreamNames", + "HasMoreDeliveryStreams" + ], + "members": { + "DeliveryStreamNames": { + "type": "list", + "member": {} + }, + "HasMoreDeliveryStreams": { + "type": "boolean" + } + } + } + }, + "PutRecord": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "Record" + ], + "members": { + "DeliveryStreamName": {}, + "Record": { + "shape": "S1q" + } + } + }, + "output": { + "type": "structure", + "required": [ + "RecordId" + ], + "members": { + "RecordId": {} + } + } + }, + "PutRecordBatch": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "Records" + ], + "members": { + "DeliveryStreamName": {}, + "Records": { + "type": "list", + "member": { + "shape": "S1q" + } + } + } + }, + "output": { + "type": "structure", + "required": [ + "FailedPutCount", + "RequestResponses" + ], + "members": { + "FailedPutCount": { + "type": "integer" + }, + "RequestResponses": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RecordId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "UpdateDestination": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "CurrentDeliveryStreamVersionId", + "DestinationId" + ], + "members": { + "DeliveryStreamName": {}, + "CurrentDeliveryStreamVersionId": {}, + "DestinationId": {}, + "S3DestinationUpdate": { + "shape": "S23" + }, + "RedshiftDestinationUpdate": { + "type": "structure", + "members": { + "RoleARN": {}, + "ClusterJDBCURL": {}, + "CopyCommand": { + "shape": "Sl" + }, + "Username": { + "shape": "Sp" + }, + "Password": { + "shape": "Sq" + }, + "RetryOptions": { + "shape": "Sr" + }, + "S3Update": { + "shape": "S23" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "ElasticsearchDestinationUpdate": { + "type": "structure", + "members": { + "RoleARN": {}, + "DomainARN": {}, + "IndexName": {}, + "TypeName": {}, + "IndexRotationPeriod": {}, + "BufferingHints": { + "shape": "Sy" + }, + "RetryOptions": { + "shape": "S11" + }, + "S3Update": { + "shape": "S23" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "required": [ + "RoleARN", + "BucketARN" + ], + "members": { + "RoleARN": {}, + "BucketARN": {}, + "Prefix": {}, + "BufferingHints": { + "shape": "S7" + }, + "CompressionFormat": {}, + "EncryptionConfiguration": { + "shape": "Sb" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "S7": { + "type": "structure", + "members": { + "SizeInMBs": { + "type": "integer" + }, + "IntervalInSeconds": { + "type": "integer" + } + } + }, + "Sb": { + "type": "structure", + "members": { + "NoEncryptionConfig": {}, + "KMSEncryptionConfig": { + "type": "structure", + "required": [ + "AWSKMSKeyARN" + ], + "members": { + "AWSKMSKeyARN": {} + } + } + } + }, + "Sf": { + "type": "structure", + "members": { + "Enabled": { + "type": "boolean" + }, + "LogGroupName": {}, + "LogStreamName": {} + } + }, + "Sl": { + "type": "structure", + "required": [ + "DataTableName" + ], + "members": { + "DataTableName": {}, + "DataTableColumns": {}, + "CopyOptions": {} + } + }, + "Sp": { + "type": "string", + "sensitive": true + }, + "Sq": { + "type": "string", + "sensitive": true + }, + "Sr": { + "type": "structure", + "members": { + "DurationInSeconds": { + "type": "integer" + } + } + }, + "Sy": { + "type": "structure", + "members": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + } + }, + "S11": { + "type": "structure", + "members": { + "DurationInSeconds": { + "type": "integer" + } + } + }, + "S1i": { + "type": "structure", + "required": [ + "RoleARN", + "BucketARN", + "BufferingHints", + "CompressionFormat", + "EncryptionConfiguration" + ], + "members": { + "RoleARN": {}, + "BucketARN": {}, + "Prefix": {}, + "BufferingHints": { + "shape": "S7" + }, + "CompressionFormat": {}, + "EncryptionConfiguration": { + "shape": "Sb" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "S1q": { + "type": "structure", + "required": [ + "Data" + ], + "members": { + "Data": { + "type": "blob" + } + } + }, + "S23": { + "type": "structure", + "members": { + "RoleARN": {}, + "BucketARN": {}, + "Prefix": {}, + "BufferingHints": { + "shape": "S7" + }, + "CompressionFormat": {}, + "EncryptionConfiguration": { + "shape": "Sb" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json b/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json new file mode 100644 index 0000000..21832f9 --- /dev/null +++ b/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json @@ -0,0 +1,1174 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-10-01", + "endpointPrefix": "gamelift", + "jsonVersion": "1.1", + "serviceFullName": "Amazon GameLift", + "signatureVersion": "v4", + "targetPrefix": "GameLift", + "protocol": "json" + }, + "operations": { + "CreateAlias": { + "input": { + "type": "structure", + "required": [ + "Name", + "RoutingStrategy" + ], + "members": { + "Name": {}, + "Description": {}, + "RoutingStrategy": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Alias": { + "shape": "S8" + } + } + } + }, + "CreateBuild": { + "input": { + "type": "structure", + "members": { + "Name": {}, + "Version": {}, + "StorageLocation": { + "shape": "Sc" + }, + "OperatingSystem": {} + } + }, + "output": { + "type": "structure", + "members": { + "Build": { + "shape": "Sg" + }, + "UploadCredentials": { + "shape": "Sk" + }, + "StorageLocation": { + "shape": "Sc" + } + } + } + }, + "CreateFleet": { + "input": { + "type": "structure", + "required": [ + "Name", + "BuildId", + "EC2InstanceType" + ], + "members": { + "Name": {}, + "Description": {}, + "BuildId": {}, + "ServerLaunchPath": {}, + "ServerLaunchParameters": {}, + "LogPaths": { + "shape": "Sm" + }, + "EC2InstanceType": {}, + "EC2InboundPermissions": { + "shape": "So" + }, + "NewGameSessionProtectionPolicy": {}, + "RuntimeConfiguration": { + "shape": "Su" + } + } + }, + "output": { + "type": "structure", + "members": { + "FleetAttributes": { + "shape": "Sz" + } + } + } + }, + "CreateGameSession": { + "input": { + "type": "structure", + "required": [ + "MaximumPlayerSessionCount" + ], + "members": { + "FleetId": {}, + "AliasId": {}, + "MaximumPlayerSessionCount": { + "type": "integer" + }, + "Name": {}, + "GameProperties": { + "shape": "S13" + } + } + }, + "output": { + "type": "structure", + "members": { + "GameSession": { + "shape": "S18" + } + } + } + }, + "CreatePlayerSession": { + "input": { + "type": "structure", + "required": [ + "GameSessionId", + "PlayerId" + ], + "members": { + "GameSessionId": {}, + "PlayerId": {} + } + }, + "output": { + "type": "structure", + "members": { + "PlayerSession": { + "shape": "S1f" + } + } + } + }, + "CreatePlayerSessions": { + "input": { + "type": "structure", + "required": [ + "GameSessionId", + "PlayerIds" + ], + "members": { + "GameSessionId": {}, + "PlayerIds": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "PlayerSessions": { + "shape": "S1l" + } + } + } + }, + "DeleteAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {} + } + } + }, + "DeleteBuild": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {} + } + } + }, + "DeleteFleet": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {} + } + } + }, + "DeleteScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "Name", + "FleetId" + ], + "members": { + "Name": {}, + "FleetId": {} + } + } + }, + "DescribeAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Alias": { + "shape": "S8" + } + } + } + }, + "DescribeBuild": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Build": { + "shape": "Sg" + } + } + } + }, + "DescribeEC2InstanceLimits": { + "input": { + "type": "structure", + "members": { + "EC2InstanceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "EC2InstanceLimits": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EC2InstanceType": {}, + "CurrentInstances": { + "type": "integer" + }, + "InstanceLimit": { + "type": "integer" + } + } + } + } + } + } + }, + "DescribeFleetAttributes": { + "input": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetAttributes": { + "type": "list", + "member": { + "shape": "Sz" + } + }, + "NextToken": {} + } + } + }, + "DescribeFleetCapacity": { + "input": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetCapacity": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FleetId": {}, + "InstanceType": {}, + "InstanceCounts": { + "type": "structure", + "members": { + "DESIRED": { + "type": "integer" + }, + "MINIMUM": { + "type": "integer" + }, + "MAXIMUM": { + "type": "integer" + }, + "PENDING": { + "type": "integer" + }, + "ACTIVE": { + "type": "integer" + }, + "IDLE": { + "type": "integer" + }, + "TERMINATING": { + "type": "integer" + } + } + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeFleetEvents": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventId": {}, + "ResourceId": {}, + "EventCode": {}, + "Message": {}, + "EventTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeFleetPortSettings": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "InboundPermissions": { + "shape": "So" + } + } + } + }, + "DescribeFleetUtilization": { + "input": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetUtilization": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FleetId": {}, + "ActiveServerProcessCount": { + "type": "integer" + }, + "ActiveGameSessionCount": { + "type": "integer" + }, + "CurrentPlayerSessionCount": { + "type": "integer" + }, + "MaximumPlayerSessionCount": { + "type": "integer" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeGameSessionDetails": { + "input": { + "type": "structure", + "members": { + "FleetId": {}, + "GameSessionId": {}, + "AliasId": {}, + "StatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSessionDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GameSession": { + "shape": "S18" + }, + "ProtectionPolicy": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeGameSessions": { + "input": { + "type": "structure", + "members": { + "FleetId": {}, + "GameSessionId": {}, + "AliasId": {}, + "StatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSessions": { + "shape": "S2o" + }, + "NextToken": {} + } + } + }, + "DescribePlayerSessions": { + "input": { + "type": "structure", + "members": { + "GameSessionId": {}, + "PlayerId": {}, + "PlayerSessionId": {}, + "PlayerSessionStatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "PlayerSessions": { + "shape": "S1l" + }, + "NextToken": {} + } + } + }, + "DescribeRuntimeConfiguration": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "RuntimeConfiguration": { + "shape": "Su" + } + } + } + }, + "DescribeScalingPolicies": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "StatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ScalingPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FleetId": {}, + "Name": {}, + "Status": {}, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": {}, + "ComparisonOperator": {}, + "Threshold": { + "type": "double" + }, + "EvaluationPeriods": { + "type": "integer" + }, + "MetricName": {} + } + } + }, + "NextToken": {} + } + } + }, + "GetGameSessionLogUrl": { + "input": { + "type": "structure", + "required": [ + "GameSessionId" + ], + "members": { + "GameSessionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "PreSignedUrl": {} + } + } + }, + "ListAliases": { + "input": { + "type": "structure", + "members": { + "RoutingStrategyType": {}, + "Name": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Aliases": { + "type": "list", + "member": { + "shape": "S8" + } + }, + "NextToken": {} + } + } + }, + "ListBuilds": { + "input": { + "type": "structure", + "members": { + "Status": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Builds": { + "type": "list", + "member": { + "shape": "Sg" + } + }, + "NextToken": {} + } + } + }, + "ListFleets": { + "input": { + "type": "structure", + "members": { + "BuildId": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "NextToken": {} + } + } + }, + "PutScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "Name", + "FleetId", + "ScalingAdjustment", + "ScalingAdjustmentType", + "Threshold", + "ComparisonOperator", + "EvaluationPeriods", + "MetricName" + ], + "members": { + "Name": {}, + "FleetId": {}, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": {}, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {}, + "EvaluationPeriods": { + "type": "integer" + }, + "MetricName": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "RequestUploadCredentials": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UploadCredentials": { + "shape": "Sk" + }, + "StorageLocation": { + "shape": "Sc" + } + } + } + }, + "ResolveAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "SearchGameSessions": { + "input": { + "type": "structure", + "members": { + "FleetId": {}, + "AliasId": {}, + "FilterExpression": {}, + "SortExpression": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSessions": { + "shape": "S2o" + }, + "NextToken": {} + } + } + }, + "UpdateAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {}, + "Name": {}, + "Description": {}, + "RoutingStrategy": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Alias": { + "shape": "S8" + } + } + } + }, + "UpdateBuild": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {}, + "Name": {}, + "Version": {} + } + }, + "output": { + "type": "structure", + "members": { + "Build": { + "shape": "Sg" + } + } + } + }, + "UpdateFleetAttributes": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "Name": {}, + "Description": {}, + "NewGameSessionProtectionPolicy": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "UpdateFleetCapacity": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "DesiredInstances": { + "type": "integer" + }, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "UpdateFleetPortSettings": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "InboundPermissionAuthorizations": { + "shape": "So" + }, + "InboundPermissionRevocations": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "UpdateGameSession": { + "input": { + "type": "structure", + "required": [ + "GameSessionId" + ], + "members": { + "GameSessionId": {}, + "MaximumPlayerSessionCount": { + "type": "integer" + }, + "Name": {}, + "PlayerSessionCreationPolicy": {}, + "ProtectionPolicy": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSession": { + "shape": "S18" + } + } + } + }, + "UpdateRuntimeConfiguration": { + "input": { + "type": "structure", + "required": [ + "FleetId", + "RuntimeConfiguration" + ], + "members": { + "FleetId": {}, + "RuntimeConfiguration": { + "shape": "Su" + } + } + }, + "output": { + "type": "structure", + "members": { + "RuntimeConfiguration": { + "shape": "Su" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "members": { + "Type": {}, + "FleetId": {}, + "Message": {} + } + }, + "S8": { + "type": "structure", + "members": { + "AliasId": {}, + "Name": {}, + "Description": {}, + "RoutingStrategy": { + "shape": "S3" + }, + "CreationTime": { + "type": "timestamp" + }, + "LastUpdatedTime": { + "type": "timestamp" + } + } + }, + "Sc": { + "type": "structure", + "members": { + "Bucket": {}, + "Key": {}, + "RoleArn": {} + } + }, + "Sg": { + "type": "structure", + "members": { + "BuildId": {}, + "Name": {}, + "Version": {}, + "Status": {}, + "SizeOnDisk": { + "type": "long" + }, + "OperatingSystem": {}, + "CreationTime": { + "type": "timestamp" + } + } + }, + "Sk": { + "type": "structure", + "members": { + "AccessKeyId": {}, + "SecretAccessKey": {}, + "SessionToken": {} + }, + "sensitive": true + }, + "Sm": { + "type": "list", + "member": {} + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "FromPort", + "ToPort", + "IpRange", + "Protocol" + ], + "members": { + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + }, + "IpRange": {}, + "Protocol": {} + } + } + }, + "Su": { + "type": "structure", + "members": { + "ServerProcesses": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "LaunchPath", + "ConcurrentExecutions" + ], + "members": { + "LaunchPath": {}, + "Parameters": {}, + "ConcurrentExecutions": { + "type": "integer" + } + } + } + } + } + }, + "Sz": { + "type": "structure", + "members": { + "FleetId": {}, + "Description": {}, + "Name": {}, + "CreationTime": { + "type": "timestamp" + }, + "TerminationTime": { + "type": "timestamp" + }, + "Status": {}, + "BuildId": {}, + "ServerLaunchPath": {}, + "ServerLaunchParameters": {}, + "LogPaths": { + "shape": "Sm" + }, + "NewGameSessionProtectionPolicy": {}, + "OperatingSystem": {} + } + }, + "S13": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S18": { + "type": "structure", + "members": { + "GameSessionId": {}, + "Name": {}, + "FleetId": {}, + "CreationTime": { + "type": "timestamp" + }, + "TerminationTime": { + "type": "timestamp" + }, + "CurrentPlayerSessionCount": { + "type": "integer" + }, + "MaximumPlayerSessionCount": { + "type": "integer" + }, + "Status": {}, + "GameProperties": { + "shape": "S13" + }, + "IpAddress": {}, + "Port": { + "type": "integer" + }, + "PlayerSessionCreationPolicy": {} + } + }, + "S1f": { + "type": "structure", + "members": { + "PlayerSessionId": {}, + "PlayerId": {}, + "GameSessionId": {}, + "FleetId": {}, + "CreationTime": { + "type": "timestamp" + }, + "TerminationTime": { + "type": "timestamp" + }, + "Status": {}, + "IpAddress": {}, + "Port": { + "type": "integer" + } + } + }, + "S1l": { + "type": "list", + "member": { + "shape": "S1f" + } + }, + "S1z": { + "type": "list", + "member": {} + }, + "S2o": { + "type": "list", + "member": { + "shape": "S18" + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json b/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json new file mode 100644 index 0000000..6db1a30 --- /dev/null +++ b/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json @@ -0,0 +1,1215 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-06-01", + "checksumFormat": "sha256", + "endpointPrefix": "glacier", + "serviceFullName": "Amazon Glacier", + "signatureVersion": "v4", + "protocol": "rest-json" + }, + "operations": { + "AbortMultipartUpload": { + "http": { + "method": "DELETE", + "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "uploadId": { + "location": "uri", + "locationName": "uploadId" + } + }, + "required": [ + "accountId", + "vaultName", + "uploadId" + ] + } + }, + "AbortVaultLock": { + "http": { + "method": "DELETE", + "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + } + }, + "AddTagsToVault": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/tags?operation=add", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "Tags": { + "shape": "S5" + } + }, + "required": [ + "accountId", + "vaultName" + ] + } + }, + "CompleteMultipartUpload": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "uploadId": { + "location": "uri", + "locationName": "uploadId" + }, + "archiveSize": { + "location": "header", + "locationName": "x-amz-archive-size" + }, + "checksum": { + "location": "header", + "locationName": "x-amz-sha256-tree-hash" + } + }, + "required": [ + "accountId", + "vaultName", + "uploadId" + ] + }, + "output": { + "shape": "S9" + } + }, + "CompleteVaultLock": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy/{lockId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "lockId": { + "location": "uri", + "locationName": "lockId" + } + }, + "required": [ + "accountId", + "vaultName", + "lockId" + ] + } + }, + "CreateVault": { + "http": { + "method": "PUT", + "requestUri": "/{accountId}/vaults/{vaultName}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "DeleteArchive": { + "http": { + "method": "DELETE", + "requestUri": "/{accountId}/vaults/{vaultName}/archives/{archiveId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "archiveId": { + "location": "uri", + "locationName": "archiveId" + } + }, + "required": [ + "accountId", + "vaultName", + "archiveId" + ] + } + }, + "DeleteVault": { + "http": { + "method": "DELETE", + "requestUri": "/{accountId}/vaults/{vaultName}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + } + }, + "DeleteVaultAccessPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/{accountId}/vaults/{vaultName}/access-policy", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + } + }, + "DeleteVaultNotifications": { + "http": { + "method": "DELETE", + "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + } + }, + "DescribeJob": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/jobs/{jobId}" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "jobId": { + "location": "uri", + "locationName": "jobId" + } + }, + "required": [ + "accountId", + "vaultName", + "jobId" + ] + }, + "output": { + "shape": "Si" + } + }, + "DescribeVault": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "shape": "Sq" + } + }, + "GetDataRetrievalPolicy": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/policies/data-retrieval" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + } + }, + "required": [ + "accountId" + ] + }, + "output": { + "type": "structure", + "members": { + "Policy": { + "shape": "Su" + } + } + } + }, + "GetJobOutput": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/jobs/{jobId}/output" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "jobId": { + "location": "uri", + "locationName": "jobId" + }, + "range": { + "location": "header", + "locationName": "Range" + } + }, + "required": [ + "accountId", + "vaultName", + "jobId" + ] + }, + "output": { + "type": "structure", + "members": { + "body": { + "shape": "S10" + }, + "checksum": { + "location": "header", + "locationName": "x-amz-sha256-tree-hash" + }, + "status": { + "location": "statusCode", + "type": "integer" + }, + "contentRange": { + "location": "header", + "locationName": "Content-Range" + }, + "acceptRanges": { + "location": "header", + "locationName": "Accept-Ranges" + }, + "contentType": { + "location": "header", + "locationName": "Content-Type" + }, + "archiveDescription": { + "location": "header", + "locationName": "x-amz-archive-description" + } + }, + "payload": "body" + } + }, + "GetVaultAccessPolicy": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/access-policy" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "policy": { + "shape": "S14" + } + }, + "payload": "policy" + } + }, + "GetVaultLock": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "Policy": {}, + "State": {}, + "ExpirationDate": {}, + "CreationDate": {} + } + } + }, + "GetVaultNotifications": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "vaultNotificationConfig": { + "shape": "S19" + } + }, + "payload": "vaultNotificationConfig" + } + }, + "InitiateJob": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/jobs", + "responseCode": 202 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "jobParameters": { + "type": "structure", + "members": { + "Format": {}, + "Type": {}, + "ArchiveId": {}, + "Description": {}, + "SNSTopic": {}, + "RetrievalByteRange": {}, + "InventoryRetrievalParameters": { + "type": "structure", + "members": { + "StartDate": {}, + "EndDate": {}, + "Limit": {}, + "Marker": {} + } + } + } + } + }, + "required": [ + "accountId", + "vaultName" + ], + "payload": "jobParameters" + }, + "output": { + "type": "structure", + "members": { + "location": { + "location": "header", + "locationName": "Location" + }, + "jobId": { + "location": "header", + "locationName": "x-amz-job-id" + } + } + } + }, + "InitiateMultipartUpload": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "archiveDescription": { + "location": "header", + "locationName": "x-amz-archive-description" + }, + "partSize": { + "location": "header", + "locationName": "x-amz-part-size" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "location": { + "location": "header", + "locationName": "Location" + }, + "uploadId": { + "location": "header", + "locationName": "x-amz-multipart-upload-id" + } + } + } + }, + "InitiateVaultLock": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "policy": { + "type": "structure", + "members": { + "Policy": {} + } + } + }, + "required": [ + "accountId", + "vaultName" + ], + "payload": "policy" + }, + "output": { + "type": "structure", + "members": { + "lockId": { + "location": "header", + "locationName": "x-amz-lock-id" + } + } + } + }, + "ListJobs": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/jobs" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "limit": { + "location": "querystring", + "locationName": "limit" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "statuscode": { + "location": "querystring", + "locationName": "statuscode" + }, + "completed": { + "location": "querystring", + "locationName": "completed" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "JobList": { + "type": "list", + "member": { + "shape": "Si" + } + }, + "Marker": {} + } + } + }, + "ListMultipartUploads": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "limit": { + "location": "querystring", + "locationName": "limit" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "UploadsList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "MultipartUploadId": {}, + "VaultARN": {}, + "ArchiveDescription": {}, + "PartSizeInBytes": { + "type": "long" + }, + "CreationDate": {} + } + } + }, + "Marker": {} + } + } + }, + "ListParts": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "uploadId": { + "location": "uri", + "locationName": "uploadId" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "limit": { + "location": "querystring", + "locationName": "limit" + } + }, + "required": [ + "accountId", + "vaultName", + "uploadId" + ] + }, + "output": { + "type": "structure", + "members": { + "MultipartUploadId": {}, + "VaultARN": {}, + "ArchiveDescription": {}, + "PartSizeInBytes": { + "type": "long" + }, + "CreationDate": {}, + "Parts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RangeInBytes": {}, + "SHA256TreeHash": {} + } + } + }, + "Marker": {} + } + } + }, + "ListTagsForVault": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults/{vaultName}/tags" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + } + }, + "required": [ + "accountId", + "vaultName" + ] + }, + "output": { + "type": "structure", + "members": { + "Tags": { + "shape": "S5" + } + } + } + }, + "ListVaults": { + "http": { + "method": "GET", + "requestUri": "/{accountId}/vaults" + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "limit": { + "location": "querystring", + "locationName": "limit" + } + }, + "required": [ + "accountId" + ] + }, + "output": { + "type": "structure", + "members": { + "VaultList": { + "type": "list", + "member": { + "shape": "Sq" + } + }, + "Marker": {} + } + } + }, + "RemoveTagsFromVault": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/tags?operation=remove", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "TagKeys": { + "type": "list", + "member": {} + } + }, + "required": [ + "accountId", + "vaultName" + ] + } + }, + "SetDataRetrievalPolicy": { + "http": { + "method": "PUT", + "requestUri": "/{accountId}/policies/data-retrieval", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "Policy": { + "shape": "Su" + } + }, + "required": [ + "accountId" + ] + } + }, + "SetVaultAccessPolicy": { + "http": { + "method": "PUT", + "requestUri": "/{accountId}/vaults/{vaultName}/access-policy", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "policy": { + "shape": "S14" + } + }, + "required": [ + "accountId", + "vaultName" + ], + "payload": "policy" + } + }, + "SetVaultNotifications": { + "http": { + "method": "PUT", + "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "vaultNotificationConfig": { + "shape": "S19" + } + }, + "required": [ + "accountId", + "vaultName" + ], + "payload": "vaultNotificationConfig" + } + }, + "UploadArchive": { + "http": { + "requestUri": "/{accountId}/vaults/{vaultName}/archives", + "responseCode": 201 + }, + "input": { + "type": "structure", + "members": { + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "archiveDescription": { + "location": "header", + "locationName": "x-amz-archive-description" + }, + "checksum": { + "location": "header", + "locationName": "x-amz-sha256-tree-hash" + }, + "body": { + "shape": "S10" + } + }, + "required": [ + "vaultName", + "accountId" + ], + "payload": "body" + }, + "output": { + "shape": "S9" + } + }, + "UploadMultipartPart": { + "http": { + "method": "PUT", + "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "members": { + "accountId": { + "location": "uri", + "locationName": "accountId" + }, + "vaultName": { + "location": "uri", + "locationName": "vaultName" + }, + "uploadId": { + "location": "uri", + "locationName": "uploadId" + }, + "checksum": { + "location": "header", + "locationName": "x-amz-sha256-tree-hash" + }, + "range": { + "location": "header", + "locationName": "Content-Range" + }, + "body": { + "shape": "S10" + } + }, + "required": [ + "accountId", + "vaultName", + "uploadId" + ], + "payload": "body" + }, + "output": { + "type": "structure", + "members": { + "checksum": { + "location": "header", + "locationName": "x-amz-sha256-tree-hash" + } + } + } + } + }, + "shapes": { + "S5": { + "type": "map", + "key": {}, + "value": {} + }, + "S9": { + "type": "structure", + "members": { + "location": { + "location": "header", + "locationName": "Location" + }, + "checksum": { + "location": "header", + "locationName": "x-amz-sha256-tree-hash" + }, + "archiveId": { + "location": "header", + "locationName": "x-amz-archive-id" + } + } + }, + "Si": { + "type": "structure", + "members": { + "JobId": {}, + "JobDescription": {}, + "Action": {}, + "ArchiveId": {}, + "VaultARN": {}, + "CreationDate": {}, + "Completed": { + "type": "boolean" + }, + "StatusCode": {}, + "StatusMessage": {}, + "ArchiveSizeInBytes": { + "type": "long" + }, + "InventorySizeInBytes": { + "type": "long" + }, + "SNSTopic": {}, + "CompletionDate": {}, + "SHA256TreeHash": {}, + "ArchiveSHA256TreeHash": {}, + "RetrievalByteRange": {}, + "InventoryRetrievalParameters": { + "type": "structure", + "members": { + "Format": {}, + "StartDate": {}, + "EndDate": {}, + "Limit": {}, + "Marker": {} + } + } + } + }, + "Sq": { + "type": "structure", + "members": { + "VaultARN": {}, + "VaultName": {}, + "CreationDate": {}, + "LastInventoryDate": {}, + "NumberOfArchives": { + "type": "long" + }, + "SizeInBytes": { + "type": "long" + } + } + }, + "Su": { + "type": "structure", + "members": { + "Rules": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Strategy": {}, + "BytesPerHour": { + "type": "long" + } + } + } + } + } + }, + "S10": { + "type": "blob", + "streaming": true + }, + "S14": { + "type": "structure", + "members": { + "Policy": {} + } + }, + "S19": { + "type": "structure", + "members": { + "SNSTopic": {}, + "Events": { + "type": "list", + "member": {} + } + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json b/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json new file mode 100644 index 0000000..6969143 --- /dev/null +++ b/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json @@ -0,0 +1,28 @@ +{ + "pagination": { + "ListJobs": { + "input_token": "marker", + "output_token": "Marker", + "limit_key": "limit", + "result_key": "JobList" + }, + "ListMultipartUploads": { + "input_token": "marker", + "output_token": "Marker", + "limit_key": "limit", + "result_key": "UploadsList" + }, + "ListParts": { + "input_token": "marker", + "output_token": "Marker", + "limit_key": "limit", + "result_key": "Parts" + }, + "ListVaults": { + "input_token": "marker", + "output_token": "Marker", + "limit_key": "limit", + "result_key": "VaultList" + } + } +} diff --git a/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json b/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json new file mode 100644 index 0000000..07a64a0 --- /dev/null +++ b/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json @@ -0,0 +1,39 @@ +{ + "version": 2, + "waiters": { + "VaultExists": { + "operation": "DescribeVault", + "delay": 3, + "maxAttempts": 15, + "acceptors": [ + { + "state": "success", + "matcher": "status", + "expected": 200 + }, + { + "state": "retry", + "matcher": "error", + "expected": "ResourceNotFoundException" + } + ] + }, + "VaultNotExists": { + "operation": "DescribeVault", + "delay": 3, + "maxAttempts": 15, + "acceptors": [ + { + "state": "retry", + "matcher": "status", + "expected": 200 + }, + { + "state": "success", + "matcher": "error", + "expected": "ResourceNotFoundException" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/iam-2010-05-08.min.json b/node_modules/aws-sdk/apis/iam-2010-05-08.min.json new file mode 100644 index 0000000..36e74c3 --- /dev/null +++ b/node_modules/aws-sdk/apis/iam-2010-05-08.min.json @@ -0,0 +1,2936 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-05-08", + "endpointPrefix": "iam", + "globalEndpoint": "iam.amazonaws.com", + "protocol": "query", + "serviceAbbreviation": "IAM", + "serviceFullName": "AWS Identity and Access Management", + "signatureVersion": "v4", + "xmlNamespace": "https://iam.amazonaws.com/doc/2010-05-08/" + }, + "operations": { + "AddClientIDToOpenIDConnectProvider": { + "input": { + "type": "structure", + "required": [ + "OpenIDConnectProviderArn", + "ClientID" + ], + "members": { + "OpenIDConnectProviderArn": {}, + "ClientID": {} + } + } + }, + "AddRoleToInstanceProfile": { + "input": { + "type": "structure", + "required": [ + "InstanceProfileName", + "RoleName" + ], + "members": { + "InstanceProfileName": {}, + "RoleName": {} + } + } + }, + "AddUserToGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "UserName" + ], + "members": { + "GroupName": {}, + "UserName": {} + } + } + }, + "AttachGroupPolicy": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "PolicyArn" + ], + "members": { + "GroupName": {}, + "PolicyArn": {} + } + } + }, + "AttachRolePolicy": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "PolicyArn" + ], + "members": { + "RoleName": {}, + "PolicyArn": {} + } + } + }, + "AttachUserPolicy": { + "input": { + "type": "structure", + "required": [ + "UserName", + "PolicyArn" + ], + "members": { + "UserName": {}, + "PolicyArn": {} + } + } + }, + "ChangePassword": { + "input": { + "type": "structure", + "required": [ + "OldPassword", + "NewPassword" + ], + "members": { + "OldPassword": { + "shape": "Sf" + }, + "NewPassword": { + "shape": "Sf" + } + } + } + }, + "CreateAccessKey": { + "input": { + "type": "structure", + "members": { + "UserName": {} + } + }, + "output": { + "resultWrapper": "CreateAccessKeyResult", + "type": "structure", + "required": [ + "AccessKey" + ], + "members": { + "AccessKey": { + "type": "structure", + "required": [ + "UserName", + "AccessKeyId", + "Status", + "SecretAccessKey" + ], + "members": { + "UserName": {}, + "AccessKeyId": {}, + "Status": {}, + "SecretAccessKey": { + "type": "string", + "sensitive": true + }, + "CreateDate": { + "type": "timestamp" + } + } + } + } + } + }, + "CreateAccountAlias": { + "input": { + "type": "structure", + "required": [ + "AccountAlias" + ], + "members": { + "AccountAlias": {} + } + } + }, + "CreateGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "Path": {}, + "GroupName": {} + } + }, + "output": { + "resultWrapper": "CreateGroupResult", + "type": "structure", + "required": [ + "Group" + ], + "members": { + "Group": { + "shape": "Ss" + } + } + } + }, + "CreateInstanceProfile": { + "input": { + "type": "structure", + "required": [ + "InstanceProfileName" + ], + "members": { + "InstanceProfileName": {}, + "Path": {} + } + }, + "output": { + "resultWrapper": "CreateInstanceProfileResult", + "type": "structure", + "required": [ + "InstanceProfile" + ], + "members": { + "InstanceProfile": { + "shape": "Sw" + } + } + } + }, + "CreateLoginProfile": { + "input": { + "type": "structure", + "required": [ + "UserName", + "Password" + ], + "members": { + "UserName": {}, + "Password": { + "shape": "Sf" + }, + "PasswordResetRequired": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateLoginProfileResult", + "type": "structure", + "required": [ + "LoginProfile" + ], + "members": { + "LoginProfile": { + "shape": "S13" + } + } + } + }, + "CreateOpenIDConnectProvider": { + "input": { + "type": "structure", + "required": [ + "Url", + "ThumbprintList" + ], + "members": { + "Url": {}, + "ClientIDList": { + "shape": "S16" + }, + "ThumbprintList": { + "shape": "S17" + } + } + }, + "output": { + "resultWrapper": "CreateOpenIDConnectProviderResult", + "type": "structure", + "members": { + "OpenIDConnectProviderArn": {} + } + } + }, + "CreatePolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyName", + "PolicyDocument" + ], + "members": { + "PolicyName": {}, + "Path": {}, + "PolicyDocument": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreatePolicyResult", + "type": "structure", + "members": { + "Policy": { + "shape": "S1f" + } + } + } + }, + "CreatePolicyVersion": { + "input": { + "type": "structure", + "required": [ + "PolicyArn", + "PolicyDocument" + ], + "members": { + "PolicyArn": {}, + "PolicyDocument": {}, + "SetAsDefault": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreatePolicyVersionResult", + "type": "structure", + "members": { + "PolicyVersion": { + "shape": "S1k" + } + } + } + }, + "CreateRole": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "AssumeRolePolicyDocument" + ], + "members": { + "Path": {}, + "RoleName": {}, + "AssumeRolePolicyDocument": {} + } + }, + "output": { + "resultWrapper": "CreateRoleResult", + "type": "structure", + "required": [ + "Role" + ], + "members": { + "Role": { + "shape": "Sy" + } + } + } + }, + "CreateSAMLProvider": { + "input": { + "type": "structure", + "required": [ + "SAMLMetadataDocument", + "Name" + ], + "members": { + "SAMLMetadataDocument": {}, + "Name": {} + } + }, + "output": { + "resultWrapper": "CreateSAMLProviderResult", + "type": "structure", + "members": { + "SAMLProviderArn": {} + } + } + }, + "CreateUser": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "Path": {}, + "UserName": {} + } + }, + "output": { + "resultWrapper": "CreateUserResult", + "type": "structure", + "members": { + "User": { + "shape": "S1t" + } + } + } + }, + "CreateVirtualMFADevice": { + "input": { + "type": "structure", + "required": [ + "VirtualMFADeviceName" + ], + "members": { + "Path": {}, + "VirtualMFADeviceName": {} + } + }, + "output": { + "resultWrapper": "CreateVirtualMFADeviceResult", + "type": "structure", + "required": [ + "VirtualMFADevice" + ], + "members": { + "VirtualMFADevice": { + "shape": "S1x" + } + } + } + }, + "DeactivateMFADevice": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SerialNumber" + ], + "members": { + "UserName": {}, + "SerialNumber": {} + } + } + }, + "DeleteAccessKey": { + "input": { + "type": "structure", + "required": [ + "AccessKeyId" + ], + "members": { + "UserName": {}, + "AccessKeyId": {} + } + } + }, + "DeleteAccountAlias": { + "input": { + "type": "structure", + "required": [ + "AccountAlias" + ], + "members": { + "AccountAlias": {} + } + } + }, + "DeleteAccountPasswordPolicy": {}, + "DeleteGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "GroupName": {} + } + } + }, + "DeleteGroupPolicy": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "PolicyName" + ], + "members": { + "GroupName": {}, + "PolicyName": {} + } + } + }, + "DeleteInstanceProfile": { + "input": { + "type": "structure", + "required": [ + "InstanceProfileName" + ], + "members": { + "InstanceProfileName": {} + } + } + }, + "DeleteLoginProfile": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {} + } + } + }, + "DeleteOpenIDConnectProvider": { + "input": { + "type": "structure", + "required": [ + "OpenIDConnectProviderArn" + ], + "members": { + "OpenIDConnectProviderArn": {} + } + } + }, + "DeletePolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyArn" + ], + "members": { + "PolicyArn": {} + } + } + }, + "DeletePolicyVersion": { + "input": { + "type": "structure", + "required": [ + "PolicyArn", + "VersionId" + ], + "members": { + "PolicyArn": {}, + "VersionId": {} + } + } + }, + "DeleteRole": { + "input": { + "type": "structure", + "required": [ + "RoleName" + ], + "members": { + "RoleName": {} + } + } + }, + "DeleteRolePolicy": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "PolicyName" + ], + "members": { + "RoleName": {}, + "PolicyName": {} + } + } + }, + "DeleteSAMLProvider": { + "input": { + "type": "structure", + "required": [ + "SAMLProviderArn" + ], + "members": { + "SAMLProviderArn": {} + } + } + }, + "DeleteSSHPublicKey": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SSHPublicKeyId" + ], + "members": { + "UserName": {}, + "SSHPublicKeyId": {} + } + } + }, + "DeleteServerCertificate": { + "input": { + "type": "structure", + "required": [ + "ServerCertificateName" + ], + "members": { + "ServerCertificateName": {} + } + } + }, + "DeleteSigningCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateId" + ], + "members": { + "UserName": {}, + "CertificateId": {} + } + } + }, + "DeleteUser": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {} + } + } + }, + "DeleteUserPolicy": { + "input": { + "type": "structure", + "required": [ + "UserName", + "PolicyName" + ], + "members": { + "UserName": {}, + "PolicyName": {} + } + } + }, + "DeleteVirtualMFADevice": { + "input": { + "type": "structure", + "required": [ + "SerialNumber" + ], + "members": { + "SerialNumber": {} + } + } + }, + "DetachGroupPolicy": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "PolicyArn" + ], + "members": { + "GroupName": {}, + "PolicyArn": {} + } + } + }, + "DetachRolePolicy": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "PolicyArn" + ], + "members": { + "RoleName": {}, + "PolicyArn": {} + } + } + }, + "DetachUserPolicy": { + "input": { + "type": "structure", + "required": [ + "UserName", + "PolicyArn" + ], + "members": { + "UserName": {}, + "PolicyArn": {} + } + } + }, + "EnableMFADevice": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SerialNumber", + "AuthenticationCode1", + "AuthenticationCode2" + ], + "members": { + "UserName": {}, + "SerialNumber": {}, + "AuthenticationCode1": {}, + "AuthenticationCode2": {} + } + } + }, + "GenerateCredentialReport": { + "output": { + "resultWrapper": "GenerateCredentialReportResult", + "type": "structure", + "members": { + "State": {}, + "Description": {} + } + } + }, + "GetAccessKeyLastUsed": { + "input": { + "type": "structure", + "required": [ + "AccessKeyId" + ], + "members": { + "AccessKeyId": {} + } + }, + "output": { + "resultWrapper": "GetAccessKeyLastUsedResult", + "type": "structure", + "members": { + "UserName": {}, + "AccessKeyLastUsed": { + "type": "structure", + "required": [ + "LastUsedDate", + "ServiceName", + "Region" + ], + "members": { + "LastUsedDate": { + "type": "timestamp" + }, + "ServiceName": {}, + "Region": {} + } + } + } + } + }, + "GetAccountAuthorizationDetails": { + "input": { + "type": "structure", + "members": { + "Filter": { + "type": "list", + "member": {} + }, + "MaxItems": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "GetAccountAuthorizationDetailsResult", + "type": "structure", + "members": { + "UserDetailList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Path": {}, + "UserName": {}, + "UserId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + }, + "UserPolicyList": { + "shape": "S36" + }, + "GroupList": { + "type": "list", + "member": {} + }, + "AttachedManagedPolicies": { + "shape": "S39" + } + } + } + }, + "GroupDetailList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Path": {}, + "GroupName": {}, + "GroupId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + }, + "GroupPolicyList": { + "shape": "S36" + }, + "AttachedManagedPolicies": { + "shape": "S39" + } + } + } + }, + "RoleDetailList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Path": {}, + "RoleName": {}, + "RoleId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + }, + "AssumeRolePolicyDocument": {}, + "InstanceProfileList": { + "shape": "S3f" + }, + "RolePolicyList": { + "shape": "S36" + }, + "AttachedManagedPolicies": { + "shape": "S39" + } + } + } + }, + "Policies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "PolicyId": {}, + "Arn": {}, + "Path": {}, + "DefaultVersionId": {}, + "AttachmentCount": { + "type": "integer" + }, + "IsAttachable": { + "type": "boolean" + }, + "Description": {}, + "CreateDate": { + "type": "timestamp" + }, + "UpdateDate": { + "type": "timestamp" + }, + "PolicyVersionList": { + "shape": "S3i" + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "GetAccountPasswordPolicy": { + "output": { + "resultWrapper": "GetAccountPasswordPolicyResult", + "type": "structure", + "required": [ + "PasswordPolicy" + ], + "members": { + "PasswordPolicy": { + "type": "structure", + "members": { + "MinimumPasswordLength": { + "type": "integer" + }, + "RequireSymbols": { + "type": "boolean" + }, + "RequireNumbers": { + "type": "boolean" + }, + "RequireUppercaseCharacters": { + "type": "boolean" + }, + "RequireLowercaseCharacters": { + "type": "boolean" + }, + "AllowUsersToChangePassword": { + "type": "boolean" + }, + "ExpirePasswords": { + "type": "boolean" + }, + "MaxPasswordAge": { + "type": "integer" + }, + "PasswordReusePrevention": { + "type": "integer" + }, + "HardExpiry": { + "type": "boolean" + } + } + } + } + } + }, + "GetAccountSummary": { + "output": { + "resultWrapper": "GetAccountSummaryResult", + "type": "structure", + "members": { + "SummaryMap": { + "type": "map", + "key": {}, + "value": { + "type": "integer" + } + } + } + } + }, + "GetContextKeysForCustomPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyInputList" + ], + "members": { + "PolicyInputList": { + "shape": "S3u" + } + } + }, + "output": { + "shape": "S3v", + "resultWrapper": "GetContextKeysForCustomPolicyResult" + } + }, + "GetContextKeysForPrincipalPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicySourceArn" + ], + "members": { + "PolicySourceArn": {}, + "PolicyInputList": { + "shape": "S3u" + } + } + }, + "output": { + "shape": "S3v", + "resultWrapper": "GetContextKeysForPrincipalPolicyResult" + } + }, + "GetCredentialReport": { + "output": { + "resultWrapper": "GetCredentialReportResult", + "type": "structure", + "members": { + "Content": { + "type": "blob" + }, + "ReportFormat": {}, + "GeneratedTime": { + "type": "timestamp" + } + } + } + }, + "GetGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "GroupName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "GetGroupResult", + "type": "structure", + "required": [ + "Group", + "Users" + ], + "members": { + "Group": { + "shape": "Ss" + }, + "Users": { + "shape": "S44" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "GetGroupPolicy": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "PolicyName" + ], + "members": { + "GroupName": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "GetGroupPolicyResult", + "type": "structure", + "required": [ + "GroupName", + "PolicyName", + "PolicyDocument" + ], + "members": { + "GroupName": {}, + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "GetInstanceProfile": { + "input": { + "type": "structure", + "required": [ + "InstanceProfileName" + ], + "members": { + "InstanceProfileName": {} + } + }, + "output": { + "resultWrapper": "GetInstanceProfileResult", + "type": "structure", + "required": [ + "InstanceProfile" + ], + "members": { + "InstanceProfile": { + "shape": "Sw" + } + } + } + }, + "GetLoginProfile": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {} + } + }, + "output": { + "resultWrapper": "GetLoginProfileResult", + "type": "structure", + "required": [ + "LoginProfile" + ], + "members": { + "LoginProfile": { + "shape": "S13" + } + } + } + }, + "GetOpenIDConnectProvider": { + "input": { + "type": "structure", + "required": [ + "OpenIDConnectProviderArn" + ], + "members": { + "OpenIDConnectProviderArn": {} + } + }, + "output": { + "resultWrapper": "GetOpenIDConnectProviderResult", + "type": "structure", + "members": { + "Url": {}, + "ClientIDList": { + "shape": "S16" + }, + "ThumbprintList": { + "shape": "S17" + }, + "CreateDate": { + "type": "timestamp" + } + } + } + }, + "GetPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyArn" + ], + "members": { + "PolicyArn": {} + } + }, + "output": { + "resultWrapper": "GetPolicyResult", + "type": "structure", + "members": { + "Policy": { + "shape": "S1f" + } + } + } + }, + "GetPolicyVersion": { + "input": { + "type": "structure", + "required": [ + "PolicyArn", + "VersionId" + ], + "members": { + "PolicyArn": {}, + "VersionId": {} + } + }, + "output": { + "resultWrapper": "GetPolicyVersionResult", + "type": "structure", + "members": { + "PolicyVersion": { + "shape": "S1k" + } + } + } + }, + "GetRole": { + "input": { + "type": "structure", + "required": [ + "RoleName" + ], + "members": { + "RoleName": {} + } + }, + "output": { + "resultWrapper": "GetRoleResult", + "type": "structure", + "required": [ + "Role" + ], + "members": { + "Role": { + "shape": "Sy" + } + } + } + }, + "GetRolePolicy": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "PolicyName" + ], + "members": { + "RoleName": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "GetRolePolicyResult", + "type": "structure", + "required": [ + "RoleName", + "PolicyName", + "PolicyDocument" + ], + "members": { + "RoleName": {}, + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "GetSAMLProvider": { + "input": { + "type": "structure", + "required": [ + "SAMLProviderArn" + ], + "members": { + "SAMLProviderArn": {} + } + }, + "output": { + "resultWrapper": "GetSAMLProviderResult", + "type": "structure", + "members": { + "SAMLMetadataDocument": {}, + "CreateDate": { + "type": "timestamp" + }, + "ValidUntil": { + "type": "timestamp" + } + } + } + }, + "GetSSHPublicKey": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SSHPublicKeyId", + "Encoding" + ], + "members": { + "UserName": {}, + "SSHPublicKeyId": {}, + "Encoding": {} + } + }, + "output": { + "resultWrapper": "GetSSHPublicKeyResult", + "type": "structure", + "members": { + "SSHPublicKey": { + "shape": "S4q" + } + } + } + }, + "GetServerCertificate": { + "input": { + "type": "structure", + "required": [ + "ServerCertificateName" + ], + "members": { + "ServerCertificateName": {} + } + }, + "output": { + "resultWrapper": "GetServerCertificateResult", + "type": "structure", + "required": [ + "ServerCertificate" + ], + "members": { + "ServerCertificate": { + "type": "structure", + "required": [ + "ServerCertificateMetadata", + "CertificateBody" + ], + "members": { + "ServerCertificateMetadata": { + "shape": "S4w" + }, + "CertificateBody": {}, + "CertificateChain": {} + } + } + } + } + }, + "GetUser": { + "input": { + "type": "structure", + "members": { + "UserName": {} + } + }, + "output": { + "resultWrapper": "GetUserResult", + "type": "structure", + "required": [ + "User" + ], + "members": { + "User": { + "shape": "S1t" + } + } + } + }, + "GetUserPolicy": { + "input": { + "type": "structure", + "required": [ + "UserName", + "PolicyName" + ], + "members": { + "UserName": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "GetUserPolicyResult", + "type": "structure", + "required": [ + "UserName", + "PolicyName", + "PolicyDocument" + ], + "members": { + "UserName": {}, + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "ListAccessKeys": { + "input": { + "type": "structure", + "members": { + "UserName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListAccessKeysResult", + "type": "structure", + "required": [ + "AccessKeyMetadata" + ], + "members": { + "AccessKeyMetadata": { + "type": "list", + "member": { + "type": "structure", + "members": { + "UserName": {}, + "AccessKeyId": {}, + "Status": {}, + "CreateDate": { + "type": "timestamp" + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListAccountAliases": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListAccountAliasesResult", + "type": "structure", + "required": [ + "AccountAliases" + ], + "members": { + "AccountAliases": { + "type": "list", + "member": {} + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListAttachedGroupPolicies": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "GroupName": {}, + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListAttachedGroupPoliciesResult", + "type": "structure", + "members": { + "AttachedPolicies": { + "shape": "S39" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListAttachedRolePolicies": { + "input": { + "type": "structure", + "required": [ + "RoleName" + ], + "members": { + "RoleName": {}, + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListAttachedRolePoliciesResult", + "type": "structure", + "members": { + "AttachedPolicies": { + "shape": "S39" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListAttachedUserPolicies": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {}, + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListAttachedUserPoliciesResult", + "type": "structure", + "members": { + "AttachedPolicies": { + "shape": "S39" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListEntitiesForPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyArn" + ], + "members": { + "PolicyArn": {}, + "EntityFilter": {}, + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListEntitiesForPolicyResult", + "type": "structure", + "members": { + "PolicyGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GroupName": {}, + "GroupId": {} + } + } + }, + "PolicyUsers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "UserName": {}, + "UserId": {} + } + } + }, + "PolicyRoles": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RoleName": {}, + "RoleId": {} + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListGroupPolicies": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "GroupName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListGroupPoliciesResult", + "type": "structure", + "required": [ + "PolicyNames" + ], + "members": { + "PolicyNames": { + "shape": "S5q" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListGroups": { + "input": { + "type": "structure", + "members": { + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListGroupsResult", + "type": "structure", + "required": [ + "Groups" + ], + "members": { + "Groups": { + "shape": "S5u" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListGroupsForUser": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListGroupsForUserResult", + "type": "structure", + "required": [ + "Groups" + ], + "members": { + "Groups": { + "shape": "S5u" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListInstanceProfiles": { + "input": { + "type": "structure", + "members": { + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListInstanceProfilesResult", + "type": "structure", + "required": [ + "InstanceProfiles" + ], + "members": { + "InstanceProfiles": { + "shape": "S3f" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListInstanceProfilesForRole": { + "input": { + "type": "structure", + "required": [ + "RoleName" + ], + "members": { + "RoleName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListInstanceProfilesForRoleResult", + "type": "structure", + "required": [ + "InstanceProfiles" + ], + "members": { + "InstanceProfiles": { + "shape": "S3f" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListMFADevices": { + "input": { + "type": "structure", + "members": { + "UserName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListMFADevicesResult", + "type": "structure", + "required": [ + "MFADevices" + ], + "members": { + "MFADevices": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "UserName", + "SerialNumber", + "EnableDate" + ], + "members": { + "UserName": {}, + "SerialNumber": {}, + "EnableDate": { + "type": "timestamp" + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListOpenIDConnectProviders": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "ListOpenIDConnectProvidersResult", + "type": "structure", + "members": { + "OpenIDConnectProviderList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Arn": {} + } + } + } + } + } + }, + "ListPolicies": { + "input": { + "type": "structure", + "members": { + "Scope": {}, + "OnlyAttached": { + "type": "boolean" + }, + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListPoliciesResult", + "type": "structure", + "members": { + "Policies": { + "type": "list", + "member": { + "shape": "S1f" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListPolicyVersions": { + "input": { + "type": "structure", + "required": [ + "PolicyArn" + ], + "members": { + "PolicyArn": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListPolicyVersionsResult", + "type": "structure", + "members": { + "Versions": { + "shape": "S3i" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListRolePolicies": { + "input": { + "type": "structure", + "required": [ + "RoleName" + ], + "members": { + "RoleName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListRolePoliciesResult", + "type": "structure", + "required": [ + "PolicyNames" + ], + "members": { + "PolicyNames": { + "shape": "S5q" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListRoles": { + "input": { + "type": "structure", + "members": { + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListRolesResult", + "type": "structure", + "required": [ + "Roles" + ], + "members": { + "Roles": { + "shape": "Sx" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListSAMLProviders": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "ListSAMLProvidersResult", + "type": "structure", + "members": { + "SAMLProviderList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Arn": {}, + "ValidUntil": { + "type": "timestamp" + }, + "CreateDate": { + "type": "timestamp" + } + } + } + } + } + } + }, + "ListSSHPublicKeys": { + "input": { + "type": "structure", + "members": { + "UserName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListSSHPublicKeysResult", + "type": "structure", + "members": { + "SSHPublicKeys": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "UserName", + "SSHPublicKeyId", + "Status", + "UploadDate" + ], + "members": { + "UserName": {}, + "SSHPublicKeyId": {}, + "Status": {}, + "UploadDate": { + "type": "timestamp" + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListServerCertificates": { + "input": { + "type": "structure", + "members": { + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListServerCertificatesResult", + "type": "structure", + "required": [ + "ServerCertificateMetadataList" + ], + "members": { + "ServerCertificateMetadataList": { + "type": "list", + "member": { + "shape": "S4w" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListSigningCertificates": { + "input": { + "type": "structure", + "members": { + "UserName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListSigningCertificatesResult", + "type": "structure", + "required": [ + "Certificates" + ], + "members": { + "Certificates": { + "type": "list", + "member": { + "shape": "S6x" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListUserPolicies": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListUserPoliciesResult", + "type": "structure", + "required": [ + "PolicyNames" + ], + "members": { + "PolicyNames": { + "shape": "S5q" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListUsers": { + "input": { + "type": "structure", + "members": { + "PathPrefix": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListUsersResult", + "type": "structure", + "required": [ + "Users" + ], + "members": { + "Users": { + "shape": "S44" + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "ListVirtualMFADevices": { + "input": { + "type": "structure", + "members": { + "AssignmentStatus": {}, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListVirtualMFADevicesResult", + "type": "structure", + "required": [ + "VirtualMFADevices" + ], + "members": { + "VirtualMFADevices": { + "type": "list", + "member": { + "shape": "S1x" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + } + }, + "PutGroupPolicy": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "PolicyName", + "PolicyDocument" + ], + "members": { + "GroupName": {}, + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "PutRolePolicy": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "PolicyName", + "PolicyDocument" + ], + "members": { + "RoleName": {}, + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "PutUserPolicy": { + "input": { + "type": "structure", + "required": [ + "UserName", + "PolicyName", + "PolicyDocument" + ], + "members": { + "UserName": {}, + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "RemoveClientIDFromOpenIDConnectProvider": { + "input": { + "type": "structure", + "required": [ + "OpenIDConnectProviderArn", + "ClientID" + ], + "members": { + "OpenIDConnectProviderArn": {}, + "ClientID": {} + } + } + }, + "RemoveRoleFromInstanceProfile": { + "input": { + "type": "structure", + "required": [ + "InstanceProfileName", + "RoleName" + ], + "members": { + "InstanceProfileName": {}, + "RoleName": {} + } + } + }, + "RemoveUserFromGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName", + "UserName" + ], + "members": { + "GroupName": {}, + "UserName": {} + } + } + }, + "ResyncMFADevice": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SerialNumber", + "AuthenticationCode1", + "AuthenticationCode2" + ], + "members": { + "UserName": {}, + "SerialNumber": {}, + "AuthenticationCode1": {}, + "AuthenticationCode2": {} + } + } + }, + "SetDefaultPolicyVersion": { + "input": { + "type": "structure", + "required": [ + "PolicyArn", + "VersionId" + ], + "members": { + "PolicyArn": {}, + "VersionId": {} + } + } + }, + "SimulateCustomPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicyInputList", + "ActionNames" + ], + "members": { + "PolicyInputList": { + "shape": "S3u" + }, + "ActionNames": { + "shape": "S7f" + }, + "ResourceArns": { + "shape": "S7h" + }, + "ResourcePolicy": {}, + "ResourceOwner": {}, + "CallerArn": {}, + "ContextEntries": { + "shape": "S7j" + }, + "ResourceHandlingOption": {}, + "MaxItems": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "shape": "S7p", + "resultWrapper": "SimulateCustomPolicyResult" + } + }, + "SimulatePrincipalPolicy": { + "input": { + "type": "structure", + "required": [ + "PolicySourceArn", + "ActionNames" + ], + "members": { + "PolicySourceArn": {}, + "PolicyInputList": { + "shape": "S3u" + }, + "ActionNames": { + "shape": "S7f" + }, + "ResourceArns": { + "shape": "S7h" + }, + "ResourcePolicy": {}, + "ResourceOwner": {}, + "CallerArn": {}, + "ContextEntries": { + "shape": "S7j" + }, + "ResourceHandlingOption": {}, + "MaxItems": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "shape": "S7p", + "resultWrapper": "SimulatePrincipalPolicyResult" + } + }, + "UpdateAccessKey": { + "input": { + "type": "structure", + "required": [ + "AccessKeyId", + "Status" + ], + "members": { + "UserName": {}, + "AccessKeyId": {}, + "Status": {} + } + } + }, + "UpdateAccountPasswordPolicy": { + "input": { + "type": "structure", + "members": { + "MinimumPasswordLength": { + "type": "integer" + }, + "RequireSymbols": { + "type": "boolean" + }, + "RequireNumbers": { + "type": "boolean" + }, + "RequireUppercaseCharacters": { + "type": "boolean" + }, + "RequireLowercaseCharacters": { + "type": "boolean" + }, + "AllowUsersToChangePassword": { + "type": "boolean" + }, + "MaxPasswordAge": { + "type": "integer" + }, + "PasswordReusePrevention": { + "type": "integer" + }, + "HardExpiry": { + "type": "boolean" + } + } + } + }, + "UpdateAssumeRolePolicy": { + "input": { + "type": "structure", + "required": [ + "RoleName", + "PolicyDocument" + ], + "members": { + "RoleName": {}, + "PolicyDocument": {} + } + } + }, + "UpdateGroup": { + "input": { + "type": "structure", + "required": [ + "GroupName" + ], + "members": { + "GroupName": {}, + "NewPath": {}, + "NewGroupName": {} + } + } + }, + "UpdateLoginProfile": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {}, + "Password": { + "shape": "Sf" + }, + "PasswordResetRequired": { + "type": "boolean" + } + } + } + }, + "UpdateOpenIDConnectProviderThumbprint": { + "input": { + "type": "structure", + "required": [ + "OpenIDConnectProviderArn", + "ThumbprintList" + ], + "members": { + "OpenIDConnectProviderArn": {}, + "ThumbprintList": { + "shape": "S17" + } + } + } + }, + "UpdateSAMLProvider": { + "input": { + "type": "structure", + "required": [ + "SAMLMetadataDocument", + "SAMLProviderArn" + ], + "members": { + "SAMLMetadataDocument": {}, + "SAMLProviderArn": {} + } + }, + "output": { + "resultWrapper": "UpdateSAMLProviderResult", + "type": "structure", + "members": { + "SAMLProviderArn": {} + } + } + }, + "UpdateSSHPublicKey": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SSHPublicKeyId", + "Status" + ], + "members": { + "UserName": {}, + "SSHPublicKeyId": {}, + "Status": {} + } + } + }, + "UpdateServerCertificate": { + "input": { + "type": "structure", + "required": [ + "ServerCertificateName" + ], + "members": { + "ServerCertificateName": {}, + "NewPath": {}, + "NewServerCertificateName": {} + } + } + }, + "UpdateSigningCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateId", + "Status" + ], + "members": { + "UserName": {}, + "CertificateId": {}, + "Status": {} + } + } + }, + "UpdateUser": { + "input": { + "type": "structure", + "required": [ + "UserName" + ], + "members": { + "UserName": {}, + "NewPath": {}, + "NewUserName": {} + } + } + }, + "UploadSSHPublicKey": { + "input": { + "type": "structure", + "required": [ + "UserName", + "SSHPublicKeyBody" + ], + "members": { + "UserName": {}, + "SSHPublicKeyBody": {} + } + }, + "output": { + "resultWrapper": "UploadSSHPublicKeyResult", + "type": "structure", + "members": { + "SSHPublicKey": { + "shape": "S4q" + } + } + } + }, + "UploadServerCertificate": { + "input": { + "type": "structure", + "required": [ + "ServerCertificateName", + "CertificateBody", + "PrivateKey" + ], + "members": { + "Path": {}, + "ServerCertificateName": {}, + "CertificateBody": {}, + "PrivateKey": { + "type": "string", + "sensitive": true + }, + "CertificateChain": {} + } + }, + "output": { + "resultWrapper": "UploadServerCertificateResult", + "type": "structure", + "members": { + "ServerCertificateMetadata": { + "shape": "S4w" + } + } + } + }, + "UploadSigningCertificate": { + "input": { + "type": "structure", + "required": [ + "CertificateBody" + ], + "members": { + "UserName": {}, + "CertificateBody": {} + } + }, + "output": { + "resultWrapper": "UploadSigningCertificateResult", + "type": "structure", + "required": [ + "Certificate" + ], + "members": { + "Certificate": { + "shape": "S6x" + } + } + } + } + }, + "shapes": { + "Sf": { + "type": "string", + "sensitive": true + }, + "Ss": { + "type": "structure", + "required": [ + "Path", + "GroupName", + "GroupId", + "Arn", + "CreateDate" + ], + "members": { + "Path": {}, + "GroupName": {}, + "GroupId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + } + } + }, + "Sw": { + "type": "structure", + "required": [ + "Path", + "InstanceProfileName", + "InstanceProfileId", + "Arn", + "CreateDate", + "Roles" + ], + "members": { + "Path": {}, + "InstanceProfileName": {}, + "InstanceProfileId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + }, + "Roles": { + "shape": "Sx" + } + } + }, + "Sx": { + "type": "list", + "member": { + "shape": "Sy" + } + }, + "Sy": { + "type": "structure", + "required": [ + "Path", + "RoleName", + "RoleId", + "Arn", + "CreateDate" + ], + "members": { + "Path": {}, + "RoleName": {}, + "RoleId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + }, + "AssumeRolePolicyDocument": {} + } + }, + "S13": { + "type": "structure", + "required": [ + "UserName", + "CreateDate" + ], + "members": { + "UserName": {}, + "CreateDate": { + "type": "timestamp" + }, + "PasswordResetRequired": { + "type": "boolean" + } + } + }, + "S16": { + "type": "list", + "member": {} + }, + "S17": { + "type": "list", + "member": {} + }, + "S1f": { + "type": "structure", + "members": { + "PolicyName": {}, + "PolicyId": {}, + "Arn": {}, + "Path": {}, + "DefaultVersionId": {}, + "AttachmentCount": { + "type": "integer" + }, + "IsAttachable": { + "type": "boolean" + }, + "Description": {}, + "CreateDate": { + "type": "timestamp" + }, + "UpdateDate": { + "type": "timestamp" + } + } + }, + "S1k": { + "type": "structure", + "members": { + "Document": {}, + "VersionId": {}, + "IsDefaultVersion": { + "type": "boolean" + }, + "CreateDate": { + "type": "timestamp" + } + } + }, + "S1t": { + "type": "structure", + "required": [ + "Path", + "UserName", + "UserId", + "Arn", + "CreateDate" + ], + "members": { + "Path": {}, + "UserName": {}, + "UserId": {}, + "Arn": {}, + "CreateDate": { + "type": "timestamp" + }, + "PasswordLastUsed": { + "type": "timestamp" + } + } + }, + "S1x": { + "type": "structure", + "required": [ + "SerialNumber" + ], + "members": { + "SerialNumber": {}, + "Base32StringSeed": { + "shape": "S1z" + }, + "QRCodePNG": { + "shape": "S1z" + }, + "User": { + "shape": "S1t" + }, + "EnableDate": { + "type": "timestamp" + } + } + }, + "S1z": { + "type": "blob", + "sensitive": true + }, + "S36": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "PolicyDocument": {} + } + } + }, + "S39": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "PolicyArn": {} + } + } + }, + "S3f": { + "type": "list", + "member": { + "shape": "Sw" + } + }, + "S3i": { + "type": "list", + "member": { + "shape": "S1k" + } + }, + "S3u": { + "type": "list", + "member": {} + }, + "S3v": { + "type": "structure", + "members": { + "ContextKeyNames": { + "shape": "S3w" + } + } + }, + "S3w": { + "type": "list", + "member": {} + }, + "S44": { + "type": "list", + "member": { + "shape": "S1t" + } + }, + "S4q": { + "type": "structure", + "required": [ + "UserName", + "SSHPublicKeyId", + "Fingerprint", + "SSHPublicKeyBody", + "Status" + ], + "members": { + "UserName": {}, + "SSHPublicKeyId": {}, + "Fingerprint": {}, + "SSHPublicKeyBody": {}, + "Status": {}, + "UploadDate": { + "type": "timestamp" + } + } + }, + "S4w": { + "type": "structure", + "required": [ + "Path", + "ServerCertificateName", + "ServerCertificateId", + "Arn" + ], + "members": { + "Path": {}, + "ServerCertificateName": {}, + "ServerCertificateId": {}, + "Arn": {}, + "UploadDate": { + "type": "timestamp" + }, + "Expiration": { + "type": "timestamp" + } + } + }, + "S5q": { + "type": "list", + "member": {} + }, + "S5u": { + "type": "list", + "member": { + "shape": "Ss" + } + }, + "S6x": { + "type": "structure", + "required": [ + "UserName", + "CertificateId", + "CertificateBody", + "Status" + ], + "members": { + "UserName": {}, + "CertificateId": {}, + "CertificateBody": {}, + "Status": {}, + "UploadDate": { + "type": "timestamp" + } + } + }, + "S7f": { + "type": "list", + "member": {} + }, + "S7h": { + "type": "list", + "member": {} + }, + "S7j": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ContextKeyName": {}, + "ContextKeyValues": { + "type": "list", + "member": {} + }, + "ContextKeyType": {} + } + } + }, + "S7p": { + "type": "structure", + "members": { + "EvaluationResults": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "EvalActionName", + "EvalDecision" + ], + "members": { + "EvalActionName": {}, + "EvalResourceName": {}, + "EvalDecision": {}, + "MatchedStatements": { + "shape": "S7t" + }, + "MissingContextValues": { + "shape": "S3w" + }, + "EvalDecisionDetails": { + "shape": "S80" + }, + "ResourceSpecificResults": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "EvalResourceName", + "EvalResourceDecision" + ], + "members": { + "EvalResourceName": {}, + "EvalResourceDecision": {}, + "MatchedStatements": { + "shape": "S7t" + }, + "MissingContextValues": { + "shape": "S3w" + }, + "EvalDecisionDetails": { + "shape": "S80" + } + } + } + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "Marker": {} + } + }, + "S7t": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SourcePolicyId": {}, + "SourcePolicyType": {}, + "StartPosition": { + "shape": "S7x" + }, + "EndPosition": { + "shape": "S7x" + } + } + } + }, + "S7x": { + "type": "structure", + "members": { + "Line": { + "type": "integer" + }, + "Column": { + "type": "integer" + } + } + }, + "S80": { + "type": "map", + "key": {}, + "value": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json b/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json new file mode 100644 index 0000000..c476fe1 --- /dev/null +++ b/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json @@ -0,0 +1,198 @@ +{ + "pagination": { + "GetAccountAuthorizationDetails": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": [ + "UserDetailList", + "GroupDetailList", + "RoleDetailList", + "Policies" + ] + }, + "GetGroup": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Users" + }, + "ListAccessKeys": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "AccessKeyMetadata" + }, + "ListAccountAliases": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "AccountAliases" + }, + "ListAttachedGroupPolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "AttachedPolicies" + }, + "ListAttachedRolePolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "AttachedPolicies" + }, + "ListAttachedUserPolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "AttachedPolicies" + }, + "ListEntitiesForPolicy": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": [ + "PolicyGroups", + "PolicyUsers", + "PolicyRoles" + ] + }, + "ListGroupPolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "PolicyNames" + }, + "ListGroups": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Groups" + }, + "ListGroupsForUser": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Groups" + }, + "ListInstanceProfiles": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "InstanceProfiles" + }, + "ListInstanceProfilesForRole": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "InstanceProfiles" + }, + "ListMFADevices": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "MFADevices" + }, + "ListPolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Policies" + }, + "ListPolicyVersions": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Versions" + }, + "ListRolePolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "PolicyNames" + }, + "ListRoles": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Roles" + }, + "ListSAMLProviders": { + "result_key": "SAMLProviderList" + }, + "ListServerCertificates": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "ServerCertificateMetadataList" + }, + "ListSigningCertificates": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Certificates" + }, + "ListSSHPublicKeys": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "SSHPublicKeys" + }, + "ListUserPolicies": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "PolicyNames" + }, + "ListUsers": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "Users" + }, + "ListVirtualMFADevices": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "VirtualMFADevices" + }, + "SimulateCustomPolicy": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "EvaluationResults" + }, + "SimulatePrincipalPolicy": { + "input_token": "Marker", + "limit_key": "MaxItems", + "more_results": "IsTruncated", + "output_token": "Marker", + "result_key": "EvaluationResults" + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json b/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json new file mode 100644 index 0000000..ba45382 --- /dev/null +++ b/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json @@ -0,0 +1,39 @@ +{ + "version": 2, + "waiters": { + "InstanceProfileExists": { + "delay": 1, + "operation": "GetInstanceProfile", + "maxAttempts": 40, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "state": "retry", + "matcher": "status", + "expected": 404 + } + ] + }, + "UserExists": { + "delay": 1, + "operation": "GetUser", + "maxAttempts": 20, + "acceptors": [ + { + "state": "success", + "matcher": "status", + "expected": 200 + }, + { + "state": "retry", + "matcher": "error", + "expected": "NoSuchEntity" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json b/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json new file mode 100644 index 0000000..429d4e6 --- /dev/null +++ b/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json @@ -0,0 +1,242 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-06-01", + "endpointPrefix": "importexport", + "globalEndpoint": "importexport.amazonaws.com", + "serviceFullName": "AWS Import/Export", + "signatureVersion": "v2", + "xmlNamespace": "http://importexport.amazonaws.com/doc/2010-06-01/", + "protocol": "query" + }, + "operations": { + "CancelJob": { + "http": { + "requestUri": "/?Operation=CancelJob" + }, + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {}, + "APIVersion": {} + } + }, + "output": { + "resultWrapper": "CancelJobResult", + "type": "structure", + "members": { + "Success": { + "type": "boolean" + } + } + } + }, + "CreateJob": { + "http": { + "requestUri": "/?Operation=CreateJob" + }, + "input": { + "type": "structure", + "required": [ + "JobType", + "Manifest", + "ValidateOnly" + ], + "members": { + "JobType": {}, + "Manifest": {}, + "ManifestAddendum": {}, + "ValidateOnly": { + "type": "boolean" + }, + "APIVersion": {} + } + }, + "output": { + "resultWrapper": "CreateJobResult", + "type": "structure", + "members": { + "JobId": {}, + "JobType": {}, + "Signature": {}, + "SignatureFileContents": {}, + "WarningMessage": {}, + "ArtifactList": { + "shape": "Sf" + } + } + } + }, + "GetShippingLabel": { + "http": { + "requestUri": "/?Operation=GetShippingLabel" + }, + "input": { + "type": "structure", + "required": [ + "jobIds" + ], + "members": { + "jobIds": { + "type": "list", + "member": {} + }, + "name": {}, + "company": {}, + "phoneNumber": {}, + "country": {}, + "stateOrProvince": {}, + "city": {}, + "postalCode": {}, + "street1": {}, + "street2": {}, + "street3": {}, + "APIVersion": {} + } + }, + "output": { + "resultWrapper": "GetShippingLabelResult", + "type": "structure", + "members": { + "ShippingLabelURL": {}, + "Warning": {} + } + } + }, + "GetStatus": { + "http": { + "requestUri": "/?Operation=GetStatus" + }, + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {}, + "APIVersion": {} + } + }, + "output": { + "resultWrapper": "GetStatusResult", + "type": "structure", + "members": { + "JobId": {}, + "JobType": {}, + "LocationCode": {}, + "LocationMessage": {}, + "ProgressCode": {}, + "ProgressMessage": {}, + "Carrier": {}, + "TrackingNumber": {}, + "LogBucket": {}, + "LogKey": {}, + "ErrorCount": { + "type": "integer" + }, + "Signature": {}, + "SignatureFileContents": {}, + "CurrentManifest": {}, + "CreationDate": { + "type": "timestamp" + }, + "ArtifactList": { + "shape": "Sf" + } + } + } + }, + "ListJobs": { + "http": { + "requestUri": "/?Operation=ListJobs" + }, + "input": { + "type": "structure", + "members": { + "MaxJobs": { + "type": "integer" + }, + "Marker": {}, + "APIVersion": {} + } + }, + "output": { + "resultWrapper": "ListJobsResult", + "type": "structure", + "members": { + "Jobs": { + "type": "list", + "member": { + "type": "structure", + "members": { + "JobId": {}, + "CreationDate": { + "type": "timestamp" + }, + "IsCanceled": { + "type": "boolean" + }, + "JobType": {} + } + } + }, + "IsTruncated": { + "type": "boolean" + } + } + } + }, + "UpdateJob": { + "http": { + "requestUri": "/?Operation=UpdateJob" + }, + "input": { + "type": "structure", + "required": [ + "JobId", + "Manifest", + "JobType", + "ValidateOnly" + ], + "members": { + "JobId": {}, + "Manifest": {}, + "JobType": {}, + "ValidateOnly": { + "type": "boolean" + }, + "APIVersion": {} + } + }, + "output": { + "resultWrapper": "UpdateJobResult", + "type": "structure", + "members": { + "Success": { + "type": "boolean" + }, + "WarningMessage": {}, + "ArtifactList": { + "shape": "Sf" + } + } + } + } + }, + "shapes": { + "Sf": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Description": {}, + "URL": {} + } + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json b/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json new file mode 100644 index 0000000..702385e --- /dev/null +++ b/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json @@ -0,0 +1,11 @@ +{ + "pagination": { + "ListJobs": { + "input_token": "Marker", + "output_token": "Jobs[-1].JobId", + "more_results": "IsTruncated", + "limit_key": "MaxJobs", + "result_key": "Jobs" + } + } +} diff --git a/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json b/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json new file mode 100644 index 0000000..f7ca893 --- /dev/null +++ b/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json @@ -0,0 +1,1248 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-02-16", + "endpointPrefix": "inspector", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon Inspector", + "signatureVersion": "v4", + "targetPrefix": "InspectorService" + }, + "operations": { + "AddAttributesToFindings": { + "input": { + "type": "structure", + "required": [ + "findingArns", + "attributes" + ], + "members": { + "findingArns": { + "shape": "S2" + }, + "attributes": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "required": [ + "failedItems" + ], + "members": { + "failedItems": { + "shape": "S9" + } + } + } + }, + "CreateAssessmentTarget": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetName", + "resourceGroupArn" + ], + "members": { + "assessmentTargetName": {}, + "resourceGroupArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTargetArn" + ], + "members": { + "assessmentTargetArn": {} + } + } + }, + "CreateAssessmentTemplate": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArn", + "assessmentTemplateName", + "durationInSeconds", + "rulesPackageArns" + ], + "members": { + "assessmentTargetArn": {}, + "assessmentTemplateName": {}, + "durationInSeconds": { + "type": "integer" + }, + "rulesPackageArns": { + "shape": "Sj" + }, + "userAttributesForFindings": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTemplateArn" + ], + "members": { + "assessmentTemplateArn": {} + } + } + }, + "CreateResourceGroup": { + "input": { + "type": "structure", + "required": [ + "resourceGroupTags" + ], + "members": { + "resourceGroupTags": { + "shape": "Sm" + } + } + }, + "output": { + "type": "structure", + "required": [ + "resourceGroupArn" + ], + "members": { + "resourceGroupArn": {} + } + } + }, + "DeleteAssessmentRun": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + } + }, + "DeleteAssessmentTarget": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArn" + ], + "members": { + "assessmentTargetArn": {} + } + } + }, + "DeleteAssessmentTemplate": { + "input": { + "type": "structure", + "required": [ + "assessmentTemplateArn" + ], + "members": { + "assessmentTemplateArn": {} + } + } + }, + "DescribeAssessmentRuns": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArns" + ], + "members": { + "assessmentRunArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRuns", + "failedItems" + ], + "members": { + "assessmentRuns": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "assessmentTemplateArn", + "state", + "durationInSeconds", + "rulesPackageArns", + "userAttributesForFindings", + "createdAt", + "stateChangedAt", + "dataCollected", + "stateChanges", + "notifications" + ], + "members": { + "arn": {}, + "name": {}, + "assessmentTemplateArn": {}, + "state": {}, + "durationInSeconds": { + "type": "integer" + }, + "rulesPackageArns": { + "type": "list", + "member": {} + }, + "userAttributesForFindings": { + "shape": "S4" + }, + "createdAt": { + "type": "timestamp" + }, + "startedAt": { + "type": "timestamp" + }, + "completedAt": { + "type": "timestamp" + }, + "stateChangedAt": { + "type": "timestamp" + }, + "dataCollected": { + "type": "boolean" + }, + "stateChanges": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "stateChangedAt", + "state" + ], + "members": { + "stateChangedAt": { + "type": "timestamp" + }, + "state": {} + } + } + }, + "notifications": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "date", + "event", + "error" + ], + "members": { + "date": { + "type": "timestamp" + }, + "event": {}, + "message": {}, + "error": { + "type": "boolean" + }, + "snsTopicArn": {}, + "snsPublishStatusCode": {} + } + } + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeAssessmentTargets": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArns" + ], + "members": { + "assessmentTargetArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTargets", + "failedItems" + ], + "members": { + "assessmentTargets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "resourceGroupArn", + "createdAt", + "updatedAt" + ], + "members": { + "arn": {}, + "name": {}, + "resourceGroupArn": {}, + "createdAt": { + "type": "timestamp" + }, + "updatedAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeAssessmentTemplates": { + "input": { + "type": "structure", + "required": [ + "assessmentTemplateArns" + ], + "members": { + "assessmentTemplateArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTemplates", + "failedItems" + ], + "members": { + "assessmentTemplates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "assessmentTargetArn", + "durationInSeconds", + "rulesPackageArns", + "userAttributesForFindings", + "createdAt" + ], + "members": { + "arn": {}, + "name": {}, + "assessmentTargetArn": {}, + "durationInSeconds": { + "type": "integer" + }, + "rulesPackageArns": { + "shape": "Sj" + }, + "userAttributesForFindings": { + "shape": "S4" + }, + "createdAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeCrossAccountAccessRole": { + "output": { + "type": "structure", + "required": [ + "roleArn", + "valid", + "registeredAt" + ], + "members": { + "roleArn": {}, + "valid": { + "type": "boolean" + }, + "registeredAt": { + "type": "timestamp" + } + } + } + }, + "DescribeFindings": { + "input": { + "type": "structure", + "required": [ + "findingArns" + ], + "members": { + "findingArns": { + "shape": "Sv" + }, + "locale": {} + } + }, + "output": { + "type": "structure", + "required": [ + "findings", + "failedItems" + ], + "members": { + "findings": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "attributes", + "userAttributes", + "createdAt", + "updatedAt" + ], + "members": { + "arn": {}, + "schemaVersion": { + "type": "integer" + }, + "service": {}, + "serviceAttributes": { + "type": "structure", + "required": [ + "schemaVersion" + ], + "members": { + "schemaVersion": { + "type": "integer" + }, + "assessmentRunArn": {}, + "rulesPackageArn": {} + } + }, + "assetType": {}, + "assetAttributes": { + "type": "structure", + "required": [ + "schemaVersion" + ], + "members": { + "schemaVersion": { + "type": "integer" + }, + "agentId": {}, + "autoScalingGroup": {}, + "amiId": {}, + "hostname": {}, + "ipv4Addresses": { + "type": "list", + "member": {} + } + } + }, + "id": {}, + "title": {}, + "description": {}, + "recommendation": {}, + "severity": {}, + "numericSeverity": { + "type": "double" + }, + "confidence": { + "type": "integer" + }, + "indicatorOfCompromise": { + "type": "boolean" + }, + "attributes": { + "shape": "S24" + }, + "userAttributes": { + "shape": "S4" + }, + "createdAt": { + "type": "timestamp" + }, + "updatedAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeResourceGroups": { + "input": { + "type": "structure", + "required": [ + "resourceGroupArns" + ], + "members": { + "resourceGroupArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "resourceGroups", + "failedItems" + ], + "members": { + "resourceGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "tags", + "createdAt" + ], + "members": { + "arn": {}, + "tags": { + "shape": "Sm" + }, + "createdAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeRulesPackages": { + "input": { + "type": "structure", + "required": [ + "rulesPackageArns" + ], + "members": { + "rulesPackageArns": { + "shape": "Sv" + }, + "locale": {} + } + }, + "output": { + "type": "structure", + "required": [ + "rulesPackages", + "failedItems" + ], + "members": { + "rulesPackages": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "version", + "provider" + ], + "members": { + "arn": {}, + "name": {}, + "version": {}, + "provider": {}, + "description": {} + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "GetTelemetryMetadata": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "telemetryMetadata" + ], + "members": { + "telemetryMetadata": { + "shape": "S2i" + } + } + } + }, + "ListAssessmentRunAgents": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {}, + "filter": { + "type": "structure", + "required": [ + "agentHealths", + "agentHealthCodes" + ], + "members": { + "agentHealths": { + "type": "list", + "member": {} + }, + "agentHealthCodes": { + "type": "list", + "member": {} + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRunAgents" + ], + "members": { + "assessmentRunAgents": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "agentId", + "assessmentRunArn", + "agentHealth", + "agentHealthCode", + "telemetryMetadata" + ], + "members": { + "agentId": {}, + "assessmentRunArn": {}, + "agentHealth": {}, + "agentHealthCode": {}, + "agentHealthDetails": {}, + "autoScalingGroup": {}, + "telemetryMetadata": { + "shape": "S2i" + } + } + } + }, + "nextToken": {} + } + } + }, + "ListAssessmentRuns": { + "input": { + "type": "structure", + "members": { + "assessmentTemplateArns": { + "shape": "S2y" + }, + "filter": { + "type": "structure", + "members": { + "namePattern": {}, + "states": { + "type": "list", + "member": {} + }, + "durationRange": { + "shape": "S32" + }, + "rulesPackageArns": { + "shape": "S33" + }, + "startTimeRange": { + "shape": "S34" + }, + "completionTimeRange": { + "shape": "S34" + }, + "stateChangeTimeRange": { + "shape": "S34" + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRunArns" + ], + "members": { + "assessmentRunArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListAssessmentTargets": { + "input": { + "type": "structure", + "members": { + "filter": { + "type": "structure", + "members": { + "assessmentTargetNamePattern": {} + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTargetArns" + ], + "members": { + "assessmentTargetArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListAssessmentTemplates": { + "input": { + "type": "structure", + "members": { + "assessmentTargetArns": { + "shape": "S2y" + }, + "filter": { + "type": "structure", + "members": { + "namePattern": {}, + "durationRange": { + "shape": "S32" + }, + "rulesPackageArns": { + "shape": "S33" + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTemplateArns" + ], + "members": { + "assessmentTemplateArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "resourceArn": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "subscriptions" + ], + "members": { + "subscriptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "resourceArn", + "topicArn", + "eventSubscriptions" + ], + "members": { + "resourceArn": {}, + "topicArn": {}, + "eventSubscriptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "event", + "subscribedAt" + ], + "members": { + "event": {}, + "subscribedAt": { + "type": "timestamp" + } + } + } + } + } + } + }, + "nextToken": {} + } + } + }, + "ListFindings": { + "input": { + "type": "structure", + "members": { + "assessmentRunArns": { + "shape": "S2y" + }, + "filter": { + "type": "structure", + "members": { + "agentIds": { + "type": "list", + "member": {} + }, + "autoScalingGroups": { + "type": "list", + "member": {} + }, + "ruleNames": { + "type": "list", + "member": {} + }, + "severities": { + "type": "list", + "member": {} + }, + "rulesPackageArns": { + "shape": "S33" + }, + "attributes": { + "shape": "S24" + }, + "userAttributes": { + "shape": "S24" + }, + "creationTimeRange": { + "shape": "S34" + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "findingArns" + ], + "members": { + "findingArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListRulesPackages": { + "input": { + "type": "structure", + "members": { + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "rulesPackageArns" + ], + "members": { + "rulesPackageArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "resourceArn" + ], + "members": { + "resourceArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "tags" + ], + "members": { + "tags": { + "shape": "S3w" + } + } + } + }, + "PreviewAgents": { + "input": { + "type": "structure", + "required": [ + "previewAgentsArn" + ], + "members": { + "previewAgentsArn": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "agentPreviews" + ], + "members": { + "agentPreviews": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "agentId" + ], + "members": { + "agentId": {}, + "autoScalingGroup": {} + } + } + }, + "nextToken": {} + } + } + }, + "RegisterCrossAccountAccessRole": { + "input": { + "type": "structure", + "required": [ + "roleArn" + ], + "members": { + "roleArn": {} + } + } + }, + "RemoveAttributesFromFindings": { + "input": { + "type": "structure", + "required": [ + "findingArns", + "attributeKeys" + ], + "members": { + "findingArns": { + "shape": "S2" + }, + "attributeKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "required": [ + "failedItems" + ], + "members": { + "failedItems": { + "shape": "S9" + } + } + } + }, + "SetTagsForResource": { + "input": { + "type": "structure", + "required": [ + "resourceArn" + ], + "members": { + "resourceArn": {}, + "tags": { + "shape": "S3w" + } + } + } + }, + "StartAssessmentRun": { + "input": { + "type": "structure", + "required": [ + "assessmentTemplateArn" + ], + "members": { + "assessmentTemplateArn": {}, + "assessmentRunName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + } + }, + "StopAssessmentRun": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + } + }, + "SubscribeToEvent": { + "input": { + "type": "structure", + "required": [ + "resourceArn", + "event", + "topicArn" + ], + "members": { + "resourceArn": {}, + "event": {}, + "topicArn": {} + } + } + }, + "UnsubscribeFromEvent": { + "input": { + "type": "structure", + "required": [ + "resourceArn", + "event", + "topicArn" + ], + "members": { + "resourceArn": {}, + "event": {}, + "topicArn": {} + } + } + }, + "UpdateAssessmentTarget": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArn", + "assessmentTargetName", + "resourceGroupArn" + ], + "members": { + "assessmentTargetArn": {}, + "assessmentTargetName": {}, + "resourceGroupArn": {} + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "S5": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "value": {} + } + }, + "S9": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "failureCode", + "retryable" + ], + "members": { + "failureCode": {}, + "retryable": { + "type": "boolean" + } + } + } + }, + "Sj": { + "type": "list", + "member": {} + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "Sv": { + "type": "list", + "member": {} + }, + "S24": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "S2i": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "messageType", + "count" + ], + "members": { + "messageType": {}, + "count": { + "type": "long" + }, + "dataSize": { + "type": "long" + } + } + } + }, + "S2y": { + "type": "list", + "member": {} + }, + "S32": { + "type": "structure", + "members": { + "minSeconds": { + "type": "integer" + }, + "maxSeconds": { + "type": "integer" + } + } + }, + "S33": { + "type": "list", + "member": {} + }, + "S34": { + "type": "structure", + "members": { + "beginDate": { + "type": "timestamp" + }, + "endDate": { + "type": "timestamp" + } + } + }, + "S36": { + "type": "list", + "member": {} + }, + "S3w": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "value": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iot-2015-05-28.min.json b/node_modules/aws-sdk/apis/iot-2015-05-28.min.json new file mode 100644 index 0000000..56d4979 --- /dev/null +++ b/node_modules/aws-sdk/apis/iot-2015-05-28.min.json @@ -0,0 +1,1934 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-05-28", + "endpointPrefix": "iot", + "serviceFullName": "AWS IoT", + "signatureVersion": "v4", + "signingName": "execute-api", + "protocol": "rest-json" + }, + "operations": { + "AcceptCertificateTransfer": { + "http": { + "method": "PATCH", + "requestUri": "/accept-certificate-transfer/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + } + } + } + }, + "AttachPrincipalPolicy": { + "http": { + "method": "PUT", + "requestUri": "/principal-policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "principal" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-iot-principal" + } + } + } + }, + "AttachThingPrincipal": { + "http": { + "method": "PUT", + "requestUri": "/things/{thingName}/principals" + }, + "input": { + "type": "structure", + "required": [ + "thingName", + "principal" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-principal" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CancelCertificateTransfer": { + "http": { + "method": "PATCH", + "requestUri": "/cancel-certificate-transfer/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + } + } + } + }, + "CreateCertificateFromCsr": { + "http": { + "requestUri": "/certificates" + }, + "input": { + "type": "structure", + "required": [ + "certificateSigningRequest" + ], + "members": { + "certificateSigningRequest": {}, + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "certificatePem": {} + } + } + }, + "CreateKeysAndCertificate": { + "http": { + "requestUri": "/keys-and-certificate" + }, + "input": { + "type": "structure", + "members": { + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "certificatePem": {}, + "keyPair": { + "type": "structure", + "members": { + "PublicKey": {}, + "PrivateKey": { + "type": "string", + "sensitive": true + } + } + } + } + } + }, + "CreatePolicy": { + "http": { + "requestUri": "/policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyDocument" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyDocument": {} + } + }, + "output": { + "type": "structure", + "members": { + "policyName": {}, + "policyArn": {}, + "policyDocument": {}, + "policyVersionId": {} + } + } + }, + "CreatePolicyVersion": { + "http": { + "requestUri": "/policies/{policyName}/version" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyDocument" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyDocument": {}, + "setAsDefault": { + "location": "querystring", + "locationName": "setAsDefault", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyArn": {}, + "policyDocument": {}, + "policyVersionId": {}, + "isDefaultVersion": { + "type": "boolean" + } + } + } + }, + "CreateThing": { + "http": { + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "thingTypeName": {}, + "attributePayload": { + "shape": "Sw" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingName": {}, + "thingArn": {} + } + } + }, + "CreateThingType": { + "http": { + "requestUri": "/thing-types/{thingTypeName}" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + }, + "thingTypeProperties": { + "shape": "S14" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingTypeName": {}, + "thingTypeArn": {} + } + } + }, + "CreateTopicRule": { + "http": { + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "required": [ + "ruleName", + "topicRulePayload" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + }, + "topicRulePayload": { + "shape": "S1b" + } + }, + "payload": "topicRulePayload" + } + }, + "DeleteCACertificate": { + "http": { + "method": "DELETE", + "requestUri": "/cacertificate/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "caCertificateId" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteCertificate": { + "http": { + "method": "DELETE", + "requestUri": "/certificates/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + } + } + } + }, + "DeletePolicy": { + "http": { + "method": "DELETE", + "requestUri": "/policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + } + } + } + }, + "DeletePolicyVersion": { + "http": { + "method": "DELETE", + "requestUri": "/policies/{policyName}/version/{policyVersionId}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyVersionId" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyVersionId": { + "location": "uri", + "locationName": "policyVersionId" + } + } + } + }, + "DeleteRegistrationCode": { + "http": { + "method": "DELETE", + "requestUri": "/registrationcode" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteThing": { + "http": { + "method": "DELETE", + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "expectedVersion": { + "location": "querystring", + "locationName": "expectedVersion", + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteThingType": { + "http": { + "method": "DELETE", + "requestUri": "/thing-types/{thingTypeName}" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTopicRule": { + "http": { + "method": "DELETE", + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + }, + "required": [ + "ruleName" + ] + } + }, + "DeprecateThingType": { + "http": { + "requestUri": "/thing-types/{thingTypeName}/deprecate" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + }, + "undoDeprecate": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeCACertificate": { + "http": { + "method": "GET", + "requestUri": "/cacertificate/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "caCertificateId" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateDescription": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "status": {}, + "certificatePem": {}, + "ownedBy": {}, + "creationDate": { + "type": "timestamp" + }, + "autoRegistrationStatus": {} + } + } + } + } + }, + "DescribeCertificate": { + "http": { + "method": "GET", + "requestUri": "/certificates/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateDescription": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "caCertificateId": {}, + "status": {}, + "certificatePem": {}, + "ownedBy": {}, + "previousOwnedBy": {}, + "creationDate": { + "type": "timestamp" + }, + "lastModifiedDate": { + "type": "timestamp" + }, + "transferData": { + "type": "structure", + "members": { + "transferMessage": {}, + "rejectReason": {}, + "transferDate": { + "type": "timestamp" + }, + "acceptDate": { + "type": "timestamp" + }, + "rejectDate": { + "type": "timestamp" + } + } + } + } + } + } + } + }, + "DescribeEndpoint": { + "http": { + "method": "GET", + "requestUri": "/endpoint" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "endpointAddress": {} + } + } + }, + "DescribeThing": { + "http": { + "method": "GET", + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "members": { + "defaultClientId": {}, + "thingName": {}, + "thingTypeName": {}, + "attributes": { + "shape": "Sx" + }, + "version": { + "type": "long" + } + } + } + }, + "DescribeThingType": { + "http": { + "method": "GET", + "requestUri": "/thing-types/{thingTypeName}" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingTypeName": {}, + "thingTypeProperties": { + "shape": "S14" + }, + "thingTypeMetadata": { + "shape": "S3s" + } + } + } + }, + "DetachPrincipalPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/principal-policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "principal" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-iot-principal" + } + } + } + }, + "DetachThingPrincipal": { + "http": { + "method": "DELETE", + "requestUri": "/things/{thingName}/principals" + }, + "input": { + "type": "structure", + "required": [ + "thingName", + "principal" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-principal" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableTopicRule": { + "http": { + "requestUri": "/rules/{ruleName}/disable" + }, + "input": { + "type": "structure", + "required": [ + "ruleName" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + } + } + }, + "EnableTopicRule": { + "http": { + "requestUri": "/rules/{ruleName}/enable" + }, + "input": { + "type": "structure", + "required": [ + "ruleName" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + } + } + }, + "GetLoggingOptions": { + "http": { + "method": "GET", + "requestUri": "/loggingOptions" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "roleArn": {}, + "logLevel": {} + } + } + }, + "GetPolicy": { + "http": { + "method": "GET", + "requestUri": "/policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyName": {}, + "policyArn": {}, + "policyDocument": {}, + "defaultVersionId": {} + } + } + }, + "GetPolicyVersion": { + "http": { + "method": "GET", + "requestUri": "/policies/{policyName}/version/{policyVersionId}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyVersionId" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyVersionId": { + "location": "uri", + "locationName": "policyVersionId" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyArn": {}, + "policyName": {}, + "policyDocument": {}, + "policyVersionId": {}, + "isDefaultVersion": { + "type": "boolean" + } + } + } + }, + "GetRegistrationCode": { + "http": { + "method": "GET", + "requestUri": "/registrationcode" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "registrationCode": {} + } + } + }, + "GetTopicRule": { + "http": { + "method": "GET", + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "required": [ + "ruleName" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + } + }, + "output": { + "type": "structure", + "members": { + "ruleArn": {}, + "rule": { + "type": "structure", + "members": { + "ruleName": {}, + "sql": {}, + "description": {}, + "createdAt": { + "type": "timestamp" + }, + "actions": { + "shape": "S1e" + }, + "ruleDisabled": { + "type": "boolean" + }, + "awsIotSqlVersion": {} + } + } + } + } + }, + "ListCACertificates": { + "http": { + "method": "GET", + "requestUri": "/cacertificates" + }, + "input": { + "type": "structure", + "members": { + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "status": {}, + "creationDate": { + "type": "timestamp" + } + } + } + }, + "nextMarker": {} + } + } + }, + "ListCertificates": { + "http": { + "method": "GET", + "requestUri": "/certificates" + }, + "input": { + "type": "structure", + "members": { + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificates": { + "shape": "S4p" + }, + "nextMarker": {} + } + } + }, + "ListCertificatesByCA": { + "http": { + "method": "GET", + "requestUri": "/certificates-by-ca/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "caCertificateId" + ], + "members": { + "caCertificateId": { + "location": "uri", + "locationName": "caCertificateId" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificates": { + "shape": "S4p" + }, + "nextMarker": {} + } + } + }, + "ListOutgoingCertificates": { + "http": { + "method": "GET", + "requestUri": "/certificates-out-going" + }, + "input": { + "type": "structure", + "members": { + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "outgoingCertificates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "transferredTo": {}, + "transferDate": { + "type": "timestamp" + }, + "transferMessage": {}, + "creationDate": { + "type": "timestamp" + } + } + } + }, + "nextMarker": {} + } + } + }, + "ListPolicies": { + "http": { + "method": "GET", + "requestUri": "/policies" + }, + "input": { + "type": "structure", + "members": { + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "policies": { + "shape": "S4z" + }, + "nextMarker": {} + } + } + }, + "ListPolicyPrincipals": { + "http": { + "method": "GET", + "requestUri": "/policy-principals" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "header", + "locationName": "x-amzn-iot-policy" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "principals": { + "shape": "S53" + }, + "nextMarker": {} + } + } + }, + "ListPolicyVersions": { + "http": { + "method": "GET", + "requestUri": "/policies/{policyName}/version" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyVersions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "versionId": {}, + "isDefaultVersion": { + "type": "boolean" + }, + "createDate": { + "type": "timestamp" + } + } + } + } + } + } + }, + "ListPrincipalPolicies": { + "http": { + "method": "GET", + "requestUri": "/principal-policies" + }, + "input": { + "type": "structure", + "required": [ + "principal" + ], + "members": { + "principal": { + "location": "header", + "locationName": "x-amzn-iot-principal" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "policies": { + "shape": "S4z" + }, + "nextMarker": {} + } + } + }, + "ListPrincipalThings": { + "http": { + "method": "GET", + "requestUri": "/principals/things" + }, + "input": { + "type": "structure", + "required": [ + "principal" + ], + "members": { + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-principal" + } + } + }, + "output": { + "type": "structure", + "members": { + "things": { + "type": "list", + "member": {} + }, + "nextToken": {} + } + } + }, + "ListThingPrincipals": { + "http": { + "method": "GET", + "requestUri": "/things/{thingName}/principals" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "members": { + "principals": { + "shape": "S53" + } + } + } + }, + "ListThingTypes": { + "http": { + "method": "GET", + "requestUri": "/thing-types" + }, + "input": { + "type": "structure", + "members": { + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "thingTypeName": { + "location": "querystring", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingTypes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "thingTypeName": {}, + "thingTypeProperties": { + "shape": "S14" + }, + "thingTypeMetadata": { + "shape": "S3s" + } + } + } + }, + "nextToken": {} + } + } + }, + "ListThings": { + "http": { + "method": "GET", + "requestUri": "/things" + }, + "input": { + "type": "structure", + "members": { + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "attributeName": { + "location": "querystring", + "locationName": "attributeName" + }, + "attributeValue": { + "location": "querystring", + "locationName": "attributeValue" + }, + "thingTypeName": { + "location": "querystring", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": { + "things": { + "type": "list", + "member": { + "type": "structure", + "members": { + "thingName": {}, + "thingTypeName": {}, + "attributes": { + "shape": "Sx" + }, + "version": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "ListTopicRules": { + "http": { + "method": "GET", + "requestUri": "/rules" + }, + "input": { + "type": "structure", + "members": { + "topic": { + "location": "querystring", + "locationName": "topic" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "ruleDisabled": { + "location": "querystring", + "locationName": "ruleDisabled", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "rules": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ruleArn": {}, + "ruleName": {}, + "topicPattern": {}, + "createdAt": { + "type": "timestamp" + }, + "ruleDisabled": { + "type": "boolean" + } + } + } + }, + "nextToken": {} + } + } + }, + "RegisterCACertificate": { + "http": { + "requestUri": "/cacertificate" + }, + "input": { + "type": "structure", + "required": [ + "caCertificate", + "verificationCertificate" + ], + "members": { + "caCertificate": {}, + "verificationCertificate": {}, + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + }, + "allowAutoRegistration": { + "location": "querystring", + "locationName": "allowAutoRegistration", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {} + } + } + }, + "RegisterCertificate": { + "http": { + "requestUri": "/certificate/register" + }, + "input": { + "type": "structure", + "required": [ + "certificatePem" + ], + "members": { + "certificatePem": {}, + "caCertificatePem": {}, + "setAsActive": { + "deprecated": true, + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + }, + "status": {} + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {} + } + } + }, + "RejectCertificateTransfer": { + "http": { + "method": "PATCH", + "requestUri": "/reject-certificate-transfer/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "rejectReason": {} + } + } + }, + "ReplaceTopicRule": { + "http": { + "method": "PATCH", + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "required": [ + "ruleName", + "topicRulePayload" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + }, + "topicRulePayload": { + "shape": "S1b" + } + }, + "payload": "topicRulePayload" + } + }, + "SetDefaultPolicyVersion": { + "http": { + "method": "PATCH", + "requestUri": "/policies/{policyName}/version/{policyVersionId}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyVersionId" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyVersionId": { + "location": "uri", + "locationName": "policyVersionId" + } + } + } + }, + "SetLoggingOptions": { + "http": { + "requestUri": "/loggingOptions" + }, + "input": { + "type": "structure", + "required": [ + "loggingOptionsPayload" + ], + "members": { + "loggingOptionsPayload": { + "type": "structure", + "required": [ + "roleArn" + ], + "members": { + "roleArn": {}, + "logLevel": {} + } + } + }, + "payload": "loggingOptionsPayload" + } + }, + "TransferCertificate": { + "http": { + "method": "PATCH", + "requestUri": "/transfer-certificate/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId", + "targetAwsAccount" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "targetAwsAccount": { + "location": "querystring", + "locationName": "targetAwsAccount" + }, + "transferMessage": {} + } + }, + "output": { + "type": "structure", + "members": { + "transferredCertificateArn": {} + } + } + }, + "UpdateCACertificate": { + "http": { + "method": "PUT", + "requestUri": "/cacertificate/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "caCertificateId" + }, + "newStatus": { + "location": "querystring", + "locationName": "newStatus" + }, + "newAutoRegistrationStatus": { + "location": "querystring", + "locationName": "newAutoRegistrationStatus" + } + } + } + }, + "UpdateCertificate": { + "http": { + "method": "PUT", + "requestUri": "/certificates/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId", + "newStatus" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "newStatus": { + "location": "querystring", + "locationName": "newStatus" + } + } + } + }, + "UpdateThing": { + "http": { + "method": "PATCH", + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "thingTypeName": {}, + "attributePayload": { + "shape": "Sw" + }, + "expectedVersion": { + "type": "long" + }, + "removeThingType": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "Sw": { + "type": "structure", + "members": { + "attributes": { + "shape": "Sx" + }, + "merge": { + "type": "boolean" + } + } + }, + "Sx": { + "type": "map", + "key": {}, + "value": {} + }, + "S14": { + "type": "structure", + "members": { + "thingTypeDescription": {}, + "searchableAttributes": { + "type": "list", + "member": {} + } + } + }, + "S1b": { + "type": "structure", + "required": [ + "sql", + "actions" + ], + "members": { + "sql": {}, + "description": {}, + "actions": { + "shape": "S1e" + }, + "ruleDisabled": { + "type": "boolean" + }, + "awsIotSqlVersion": {} + } + }, + "S1e": { + "type": "list", + "member": { + "type": "structure", + "members": { + "dynamoDB": { + "type": "structure", + "required": [ + "tableName", + "roleArn", + "hashKeyField", + "hashKeyValue" + ], + "members": { + "tableName": {}, + "roleArn": {}, + "operation": {}, + "hashKeyField": {}, + "hashKeyValue": {}, + "hashKeyType": {}, + "rangeKeyField": {}, + "rangeKeyValue": {}, + "rangeKeyType": {}, + "payloadField": {} + } + }, + "lambda": { + "type": "structure", + "required": [ + "functionArn" + ], + "members": { + "functionArn": {} + } + }, + "sns": { + "type": "structure", + "required": [ + "targetArn", + "roleArn" + ], + "members": { + "targetArn": {}, + "roleArn": {}, + "messageFormat": {} + } + }, + "sqs": { + "type": "structure", + "required": [ + "roleArn", + "queueUrl" + ], + "members": { + "roleArn": {}, + "queueUrl": {}, + "useBase64": { + "type": "boolean" + } + } + }, + "kinesis": { + "type": "structure", + "required": [ + "roleArn", + "streamName" + ], + "members": { + "roleArn": {}, + "streamName": {}, + "partitionKey": {} + } + }, + "republish": { + "type": "structure", + "required": [ + "roleArn", + "topic" + ], + "members": { + "roleArn": {}, + "topic": {} + } + }, + "s3": { + "type": "structure", + "required": [ + "roleArn", + "bucketName", + "key" + ], + "members": { + "roleArn": {}, + "bucketName": {}, + "key": {}, + "cannedAcl": {} + } + }, + "firehose": { + "type": "structure", + "required": [ + "roleArn", + "deliveryStreamName" + ], + "members": { + "roleArn": {}, + "deliveryStreamName": {}, + "separator": {} + } + }, + "cloudwatchMetric": { + "type": "structure", + "required": [ + "roleArn", + "metricNamespace", + "metricName", + "metricValue", + "metricUnit" + ], + "members": { + "roleArn": {}, + "metricNamespace": {}, + "metricName": {}, + "metricValue": {}, + "metricUnit": {}, + "metricTimestamp": {} + } + }, + "cloudwatchAlarm": { + "type": "structure", + "required": [ + "roleArn", + "alarmName", + "stateReason", + "stateValue" + ], + "members": { + "roleArn": {}, + "alarmName": {}, + "stateReason": {}, + "stateValue": {} + } + }, + "elasticsearch": { + "type": "structure", + "required": [ + "roleArn", + "endpoint", + "index", + "type", + "id" + ], + "members": { + "roleArn": {}, + "endpoint": {}, + "index": {}, + "type": {}, + "id": {} + } + } + } + } + }, + "S3s": { + "type": "structure", + "members": { + "deprecated": { + "type": "boolean" + }, + "deprecationDate": { + "type": "timestamp" + }, + "creationDate": { + "type": "timestamp" + } + } + }, + "S4p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "status": {}, + "creationDate": { + "type": "timestamp" + } + } + } + }, + "S4z": { + "type": "list", + "member": { + "type": "structure", + "members": { + "policyName": {}, + "policyArn": {} + } + } + }, + "S53": { + "type": "list", + "member": {} + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json b/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json new file mode 100644 index 0000000..da22373 --- /dev/null +++ b/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json @@ -0,0 +1,128 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-05-28", + "endpointPrefix": "data.iot", + "protocol": "rest-json", + "serviceFullName": "AWS IoT Data Plane", + "signatureVersion": "v4", + "signingName": "iotdata" + }, + "operations": { + "DeleteThingShadow": { + "http": { + "method": "DELETE", + "requestUri": "/things/{thingName}/shadow" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "required": [ + "payload" + ], + "members": { + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + }, + "GetThingShadow": { + "http": { + "method": "GET", + "requestUri": "/things/{thingName}/shadow" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "members": { + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + }, + "Publish": { + "http": { + "requestUri": "/topics/{topic}" + }, + "input": { + "type": "structure", + "required": [ + "topic" + ], + "members": { + "topic": { + "location": "uri", + "locationName": "topic" + }, + "qos": { + "location": "querystring", + "locationName": "qos", + "type": "integer" + }, + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + }, + "UpdateThingShadow": { + "http": { + "requestUri": "/things/{thingName}/shadow" + }, + "input": { + "type": "structure", + "required": [ + "thingName", + "payload" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "payload": { + "type": "blob" + } + }, + "payload": "payload" + }, + "output": { + "type": "structure", + "members": { + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + } + }, + "shapes": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json b/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json new file mode 100644 index 0000000..2b1f22e --- /dev/null +++ b/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json @@ -0,0 +1,503 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-12-02", + "endpointPrefix": "kinesis", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Kinesis", + "serviceFullName": "Amazon Kinesis", + "signatureVersion": "v4", + "targetPrefix": "Kinesis_20131202" + }, + "operations": { + "AddTagsToStream": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "Tags" + ], + "members": { + "StreamName": {}, + "Tags": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "CreateStream": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardCount" + ], + "members": { + "StreamName": {}, + "ShardCount": { + "type": "integer" + } + } + } + }, + "DecreaseStreamRetentionPeriod": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "RetentionPeriodHours" + ], + "members": { + "StreamName": {}, + "RetentionPeriodHours": { + "type": "integer" + } + } + } + }, + "DeleteStream": { + "input": { + "type": "structure", + "required": [ + "StreamName" + ], + "members": { + "StreamName": {} + } + } + }, + "DescribeStream": { + "input": { + "type": "structure", + "required": [ + "StreamName" + ], + "members": { + "StreamName": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartShardId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "StreamDescription" + ], + "members": { + "StreamDescription": { + "type": "structure", + "required": [ + "StreamName", + "StreamARN", + "StreamStatus", + "Shards", + "HasMoreShards", + "RetentionPeriodHours", + "EnhancedMonitoring" + ], + "members": { + "StreamName": {}, + "StreamARN": {}, + "StreamStatus": {}, + "Shards": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ShardId", + "HashKeyRange", + "SequenceNumberRange" + ], + "members": { + "ShardId": {}, + "ParentShardId": {}, + "AdjacentParentShardId": {}, + "HashKeyRange": { + "type": "structure", + "required": [ + "StartingHashKey", + "EndingHashKey" + ], + "members": { + "StartingHashKey": {}, + "EndingHashKey": {} + } + }, + "SequenceNumberRange": { + "type": "structure", + "required": [ + "StartingSequenceNumber" + ], + "members": { + "StartingSequenceNumber": {}, + "EndingSequenceNumber": {} + } + } + } + } + }, + "HasMoreShards": { + "type": "boolean" + }, + "RetentionPeriodHours": { + "type": "integer" + }, + "EnhancedMonitoring": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ShardLevelMetrics": { + "shape": "Sr" + } + } + } + } + } + } + } + } + }, + "DisableEnhancedMonitoring": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardLevelMetrics" + ], + "members": { + "StreamName": {}, + "ShardLevelMetrics": { + "shape": "Sr" + } + } + }, + "output": { + "shape": "Su" + } + }, + "EnableEnhancedMonitoring": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardLevelMetrics" + ], + "members": { + "StreamName": {}, + "ShardLevelMetrics": { + "shape": "Sr" + } + } + }, + "output": { + "shape": "Su" + } + }, + "GetRecords": { + "input": { + "type": "structure", + "required": [ + "ShardIterator" + ], + "members": { + "ShardIterator": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Records" + ], + "members": { + "Records": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SequenceNumber", + "Data", + "PartitionKey" + ], + "members": { + "SequenceNumber": {}, + "ApproximateArrivalTimestamp": { + "type": "timestamp" + }, + "Data": { + "type": "blob" + }, + "PartitionKey": {} + } + } + }, + "NextShardIterator": {}, + "MillisBehindLatest": { + "type": "long" + } + } + } + }, + "GetShardIterator": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardId", + "ShardIteratorType" + ], + "members": { + "StreamName": {}, + "ShardId": {}, + "ShardIteratorType": {}, + "StartingSequenceNumber": {}, + "Timestamp": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": { + "ShardIterator": {} + } + } + }, + "IncreaseStreamRetentionPeriod": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "RetentionPeriodHours" + ], + "members": { + "StreamName": {}, + "RetentionPeriodHours": { + "type": "integer" + } + } + } + }, + "ListStreams": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "ExclusiveStartStreamName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "StreamNames", + "HasMoreStreams" + ], + "members": { + "StreamNames": { + "type": "list", + "member": {} + }, + "HasMoreStreams": { + "type": "boolean" + } + } + } + }, + "ListTagsForStream": { + "input": { + "type": "structure", + "required": [ + "StreamName" + ], + "members": { + "StreamName": {}, + "ExclusiveStartTagKey": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Tags", + "HasMoreTags" + ], + "members": { + "Tags": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "HasMoreTags": { + "type": "boolean" + } + } + } + }, + "MergeShards": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardToMerge", + "AdjacentShardToMerge" + ], + "members": { + "StreamName": {}, + "ShardToMerge": {}, + "AdjacentShardToMerge": {} + } + } + }, + "PutRecord": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "Data", + "PartitionKey" + ], + "members": { + "StreamName": {}, + "Data": { + "type": "blob" + }, + "PartitionKey": {}, + "ExplicitHashKey": {}, + "SequenceNumberForOrdering": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ShardId", + "SequenceNumber" + ], + "members": { + "ShardId": {}, + "SequenceNumber": {} + } + } + }, + "PutRecords": { + "input": { + "type": "structure", + "required": [ + "Records", + "StreamName" + ], + "members": { + "Records": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Data", + "PartitionKey" + ], + "members": { + "Data": { + "type": "blob" + }, + "ExplicitHashKey": {}, + "PartitionKey": {} + } + } + }, + "StreamName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Records" + ], + "members": { + "FailedRecordCount": { + "type": "integer" + }, + "Records": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SequenceNumber": {}, + "ShardId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "RemoveTagsFromStream": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "TagKeys" + ], + "members": { + "StreamName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "SplitShard": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardToSplit", + "NewStartingHashKey" + ], + "members": { + "StreamName": {}, + "ShardToSplit": {}, + "NewStartingHashKey": {} + } + } + } + }, + "shapes": { + "Sr": { + "type": "list", + "member": {} + }, + "Su": { + "type": "structure", + "members": { + "StreamName": {}, + "CurrentShardLevelMetrics": { + "shape": "Sr" + }, + "DesiredShardLevelMetrics": { + "shape": "Sr" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json b/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json new file mode 100644 index 0000000..007f563 --- /dev/null +++ b/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json @@ -0,0 +1,18 @@ +{ + "pagination": { + "DescribeStream": { + "input_token": "ExclusiveStartShardId", + "limit_key": "Limit", + "more_results": "StreamDescription.HasMoreShards", + "output_token": "StreamDescription.Shards[-1].ShardId", + "result_key": "StreamDescription.Shards" + }, + "ListStreams": { + "input_token": "ExclusiveStartStreamName", + "limit_key": "Limit", + "more_results": "HasMoreStreams", + "output_token": "StreamNames[-1]", + "result_key": "StreamNames" + } + } +} diff --git a/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json b/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json new file mode 100644 index 0000000..8e3162f --- /dev/null +++ b/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "waiters": { + "StreamExists": { + "delay": 10, + "operation": "DescribeStream", + "maxAttempts": 18, + "acceptors": [ + { + "expected": "ACTIVE", + "matcher": "path", + "state": "success", + "argument": "StreamDescription.StreamStatus" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json b/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json new file mode 100644 index 0000000..4af38ed --- /dev/null +++ b/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json @@ -0,0 +1,755 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-08-14", + "endpointPrefix": "kinesisanalytics", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Kinesis Analytics", + "serviceFullName": "Amazon Kinesis Analytics", + "signatureVersion": "v4", + "targetPrefix": "KinesisAnalytics_20150814", + "timestampFormat": "unixTimestamp" + }, + "operations": { + "AddApplicationInput": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CurrentApplicationVersionId", + "Input" + ], + "members": { + "ApplicationName": {}, + "CurrentApplicationVersionId": { + "type": "long" + }, + "Input": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AddApplicationOutput": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CurrentApplicationVersionId", + "Output" + ], + "members": { + "ApplicationName": {}, + "CurrentApplicationVersionId": { + "type": "long" + }, + "Output": { + "shape": "St" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "AddApplicationReferenceDataSource": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CurrentApplicationVersionId", + "ReferenceDataSource" + ], + "members": { + "ApplicationName": {}, + "CurrentApplicationVersionId": { + "type": "long" + }, + "ReferenceDataSource": { + "type": "structure", + "required": [ + "TableName", + "ReferenceSchema" + ], + "members": { + "TableName": {}, + "S3ReferenceDataSource": { + "type": "structure", + "required": [ + "BucketARN", + "FileKey", + "ReferenceRoleARN" + ], + "members": { + "BucketARN": {}, + "FileKey": {}, + "ReferenceRoleARN": {} + } + }, + "ReferenceSchema": { + "shape": "Sc" + } + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "ApplicationDescription": {}, + "Inputs": { + "type": "list", + "member": { + "shape": "S4" + } + }, + "Outputs": { + "type": "list", + "member": { + "shape": "St" + } + }, + "ApplicationCode": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ApplicationSummary" + ], + "members": { + "ApplicationSummary": { + "shape": "S1b" + } + } + } + }, + "DeleteApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CreateTimestamp" + ], + "members": { + "ApplicationName": {}, + "CreateTimestamp": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteApplicationOutput": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CurrentApplicationVersionId", + "OutputId" + ], + "members": { + "ApplicationName": {}, + "CurrentApplicationVersionId": { + "type": "long" + }, + "OutputId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteApplicationReferenceDataSource": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CurrentApplicationVersionId", + "ReferenceId" + ], + "members": { + "ApplicationName": {}, + "CurrentApplicationVersionId": { + "type": "long" + }, + "ReferenceId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ApplicationDetail" + ], + "members": { + "ApplicationDetail": { + "type": "structure", + "required": [ + "ApplicationName", + "ApplicationARN", + "ApplicationStatus", + "ApplicationVersionId" + ], + "members": { + "ApplicationName": {}, + "ApplicationDescription": {}, + "ApplicationARN": {}, + "ApplicationStatus": {}, + "CreateTimestamp": { + "type": "timestamp" + }, + "LastUpdateTimestamp": { + "type": "timestamp" + }, + "InputDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InputId": {}, + "NamePrefix": {}, + "InAppStreamNames": { + "type": "list", + "member": {} + }, + "KinesisStreamsInputDescription": { + "type": "structure", + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "KinesisFirehoseInputDescription": { + "type": "structure", + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "InputSchema": { + "shape": "Sc" + }, + "InputParallelism": { + "shape": "Sa" + }, + "InputStartingPositionConfiguration": { + "shape": "S1t" + } + } + } + }, + "OutputDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "OutputId": {}, + "Name": {}, + "KinesisStreamsOutputDescription": { + "type": "structure", + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "KinesisFirehoseOutputDescription": { + "type": "structure", + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "DestinationSchema": { + "shape": "Sw" + } + } + } + }, + "ReferenceDataSourceDescriptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ReferenceId", + "TableName", + "S3ReferenceDataSourceDescription" + ], + "members": { + "ReferenceId": {}, + "TableName": {}, + "S3ReferenceDataSourceDescription": { + "type": "structure", + "required": [ + "BucketARN", + "FileKey", + "ReferenceRoleARN" + ], + "members": { + "BucketARN": {}, + "FileKey": {}, + "ReferenceRoleARN": {} + } + }, + "ReferenceSchema": { + "shape": "Sc" + } + } + } + }, + "ApplicationCode": {}, + "ApplicationVersionId": { + "type": "long" + } + } + } + } + } + }, + "DiscoverInputSchema": { + "input": { + "type": "structure", + "required": [ + "ResourceARN", + "RoleARN", + "InputStartingPositionConfiguration" + ], + "members": { + "ResourceARN": {}, + "RoleARN": {}, + "InputStartingPositionConfiguration": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "members": { + "InputSchema": { + "shape": "Sc" + }, + "ParsedInputRecords": { + "type": "list", + "member": { + "type": "list", + "member": {} + } + }, + "RawInputRecords": { + "type": "list", + "member": {} + } + } + } + }, + "ListApplications": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "ExclusiveStartApplicationName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ApplicationSummaries", + "HasMoreApplications" + ], + "members": { + "ApplicationSummaries": { + "type": "list", + "member": { + "shape": "S1b" + } + }, + "HasMoreApplications": { + "type": "boolean" + } + } + } + }, + "StartApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "InputConfigurations" + ], + "members": { + "ApplicationName": {}, + "InputConfigurations": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Id", + "InputStartingPositionConfiguration" + ], + "members": { + "Id": {}, + "InputStartingPositionConfiguration": { + "shape": "S1t" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "StopApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "UpdateApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "CurrentApplicationVersionId", + "ApplicationUpdate" + ], + "members": { + "ApplicationName": {}, + "CurrentApplicationVersionId": { + "type": "long" + }, + "ApplicationUpdate": { + "type": "structure", + "members": { + "InputUpdates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InputId" + ], + "members": { + "InputId": {}, + "NamePrefixUpdate": {}, + "KinesisStreamsInputUpdate": { + "type": "structure", + "members": { + "ResourceARNUpdate": {}, + "RoleARNUpdate": {} + } + }, + "KinesisFirehoseInputUpdate": { + "type": "structure", + "members": { + "ResourceARNUpdate": {}, + "RoleARNUpdate": {} + } + }, + "InputSchemaUpdate": { + "type": "structure", + "members": { + "RecordFormatUpdate": { + "shape": "Sd" + }, + "RecordEncodingUpdate": {}, + "RecordColumnUpdates": { + "shape": "Sm" + } + } + }, + "InputParallelismUpdate": { + "type": "structure", + "members": { + "CountUpdate": { + "type": "integer" + } + } + } + } + } + }, + "ApplicationCodeUpdate": {}, + "OutputUpdates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "OutputId" + ], + "members": { + "OutputId": {}, + "NameUpdate": {}, + "KinesisStreamsOutputUpdate": { + "type": "structure", + "members": { + "ResourceARNUpdate": {}, + "RoleARNUpdate": {} + } + }, + "KinesisFirehoseOutputUpdate": { + "type": "structure", + "members": { + "ResourceARNUpdate": {}, + "RoleARNUpdate": {} + } + }, + "DestinationSchemaUpdate": { + "shape": "Sw" + } + } + } + }, + "ReferenceDataSourceUpdates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ReferenceId" + ], + "members": { + "ReferenceId": {}, + "TableNameUpdate": {}, + "S3ReferenceDataSourceUpdate": { + "type": "structure", + "members": { + "BucketARNUpdate": {}, + "FileKeyUpdate": {}, + "ReferenceRoleARNUpdate": {} + } + }, + "ReferenceSchemaUpdate": { + "shape": "Sc" + } + } + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "required": [ + "NamePrefix" + ], + "members": { + "NamePrefix": {}, + "KinesisStreamsInput": { + "type": "structure", + "required": [ + "ResourceARN", + "RoleARN" + ], + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "KinesisFirehoseInput": { + "type": "structure", + "required": [ + "ResourceARN", + "RoleARN" + ], + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "InputParallelism": { + "shape": "Sa" + }, + "InputSchema": { + "shape": "Sc" + } + } + }, + "Sa": { + "type": "structure", + "members": { + "Count": { + "type": "integer" + } + } + }, + "Sc": { + "type": "structure", + "required": [ + "RecordFormat", + "RecordColumns" + ], + "members": { + "RecordFormat": { + "shape": "Sd" + }, + "RecordEncoding": {}, + "RecordColumns": { + "shape": "Sm" + } + } + }, + "Sd": { + "type": "structure", + "required": [ + "RecordFormatType" + ], + "members": { + "RecordFormatType": {}, + "MappingParameters": { + "type": "structure", + "members": { + "JSONMappingParameters": { + "type": "structure", + "required": [ + "RecordRowPath" + ], + "members": { + "RecordRowPath": {} + } + }, + "CSVMappingParameters": { + "type": "structure", + "required": [ + "RecordRowDelimiter", + "RecordColumnDelimiter" + ], + "members": { + "RecordRowDelimiter": {}, + "RecordColumnDelimiter": {} + } + } + } + } + } + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "SqlType" + ], + "members": { + "Name": {}, + "Mapping": {}, + "SqlType": {} + } + } + }, + "St": { + "type": "structure", + "required": [ + "Name", + "DestinationSchema" + ], + "members": { + "Name": {}, + "KinesisStreamsOutput": { + "type": "structure", + "required": [ + "ResourceARN", + "RoleARN" + ], + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "KinesisFirehoseOutput": { + "type": "structure", + "required": [ + "ResourceARN", + "RoleARN" + ], + "members": { + "ResourceARN": {}, + "RoleARN": {} + } + }, + "DestinationSchema": { + "shape": "Sw" + } + } + }, + "Sw": { + "type": "structure", + "members": { + "RecordFormatType": {} + } + }, + "S1b": { + "type": "structure", + "required": [ + "ApplicationName", + "ApplicationARN", + "ApplicationStatus" + ], + "members": { + "ApplicationName": {}, + "ApplicationARN": {}, + "ApplicationStatus": {} + } + }, + "S1t": { + "type": "structure", + "members": { + "InputStartingPosition": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kms-2014-11-01.min.json b/node_modules/aws-sdk/apis/kms-2014-11-01.min.json new file mode 100644 index 0000000..99de686 --- /dev/null +++ b/node_modules/aws-sdk/apis/kms-2014-11-01.min.json @@ -0,0 +1,759 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-01", + "endpointPrefix": "kms", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "KMS", + "serviceFullName": "AWS Key Management Service", + "signatureVersion": "v4", + "targetPrefix": "TrentService" + }, + "operations": { + "CancelKeyDeletion": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {} + } + } + }, + "CreateAlias": { + "input": { + "type": "structure", + "required": [ + "AliasName", + "TargetKeyId" + ], + "members": { + "AliasName": {}, + "TargetKeyId": {} + } + } + }, + "CreateGrant": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "GranteePrincipal" + ], + "members": { + "KeyId": {}, + "GranteePrincipal": {}, + "RetiringPrincipal": {}, + "Operations": { + "shape": "S8" + }, + "Constraints": { + "shape": "Sa" + }, + "GrantTokens": { + "shape": "Se" + }, + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "GrantToken": {}, + "GrantId": {} + } + } + }, + "CreateKey": { + "input": { + "type": "structure", + "members": { + "Policy": {}, + "Description": {}, + "KeyUsage": {}, + "Origin": {}, + "BypassPolicyLockoutSafetyCheck": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyMetadata": { + "shape": "Sq" + } + } + } + }, + "Decrypt": { + "input": { + "type": "structure", + "required": [ + "CiphertextBlob" + ], + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "EncryptionContext": { + "shape": "Sb" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {}, + "Plaintext": { + "shape": "Sz" + } + } + } + }, + "DeleteAlias": { + "input": { + "type": "structure", + "required": [ + "AliasName" + ], + "members": { + "AliasName": {} + } + } + }, + "DeleteImportedKeyMaterial": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "DescribeKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyMetadata": { + "shape": "Sq" + } + } + } + }, + "DisableKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "DisableKeyRotation": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "EnableKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "EnableKeyRotation": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "Encrypt": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "Plaintext" + ], + "members": { + "KeyId": {}, + "Plaintext": { + "shape": "Sz" + }, + "EncryptionContext": { + "shape": "Sb" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "KeyId": {} + } + } + }, + "GenerateDataKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "EncryptionContext": { + "shape": "Sb" + }, + "NumberOfBytes": { + "type": "integer" + }, + "KeySpec": {}, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "Plaintext": { + "shape": "Sz" + }, + "KeyId": {} + } + } + }, + "GenerateDataKeyWithoutPlaintext": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "EncryptionContext": { + "shape": "Sb" + }, + "KeySpec": {}, + "NumberOfBytes": { + "type": "integer" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "KeyId": {} + } + } + }, + "GenerateRandom": { + "input": { + "type": "structure", + "members": { + "NumberOfBytes": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Plaintext": { + "shape": "Sz" + } + } + } + }, + "GetKeyPolicy": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "PolicyName" + ], + "members": { + "KeyId": {}, + "PolicyName": {} + } + }, + "output": { + "type": "structure", + "members": { + "Policy": {} + } + } + }, + "GetKeyRotationStatus": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyRotationEnabled": { + "type": "boolean" + } + } + } + }, + "GetParametersForImport": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "WrappingAlgorithm", + "WrappingKeySpec" + ], + "members": { + "KeyId": {}, + "WrappingAlgorithm": {}, + "WrappingKeySpec": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {}, + "ImportToken": { + "type": "blob" + }, + "PublicKey": { + "shape": "Sz" + }, + "ParametersValidTo": { + "type": "timestamp" + } + } + } + }, + "ImportKeyMaterial": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "ImportToken", + "EncryptedKeyMaterial" + ], + "members": { + "KeyId": {}, + "ImportToken": { + "type": "blob" + }, + "EncryptedKeyMaterial": { + "type": "blob" + }, + "ValidTo": { + "type": "timestamp" + }, + "ExpirationModel": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ListAliases": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Aliases": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AliasName": {}, + "AliasArn": {}, + "TargetKeyId": {} + } + } + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + }, + "ListGrants": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {}, + "KeyId": {} + } + }, + "output": { + "shape": "S20" + } + }, + "ListKeyPolicies": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "Limit": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "PolicyNames": { + "type": "list", + "member": {} + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + }, + "ListKeys": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Keys": { + "type": "list", + "member": { + "type": "structure", + "members": { + "KeyId": {}, + "KeyArn": {} + } + } + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + }, + "ListRetirableGrants": { + "input": { + "type": "structure", + "required": [ + "RetiringPrincipal" + ], + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {}, + "RetiringPrincipal": {} + } + }, + "output": { + "shape": "S20" + } + }, + "PutKeyPolicy": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "PolicyName", + "Policy" + ], + "members": { + "KeyId": {}, + "PolicyName": {}, + "Policy": {}, + "BypassPolicyLockoutSafetyCheck": { + "type": "boolean" + } + } + } + }, + "ReEncrypt": { + "input": { + "type": "structure", + "required": [ + "CiphertextBlob", + "DestinationKeyId" + ], + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "SourceEncryptionContext": { + "shape": "Sb" + }, + "DestinationKeyId": {}, + "DestinationEncryptionContext": { + "shape": "Sb" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "SourceKeyId": {}, + "KeyId": {} + } + } + }, + "RetireGrant": { + "input": { + "type": "structure", + "members": { + "GrantToken": {}, + "KeyId": {}, + "GrantId": {} + } + } + }, + "RevokeGrant": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "GrantId" + ], + "members": { + "KeyId": {}, + "GrantId": {} + } + } + }, + "ScheduleKeyDeletion": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "PendingWindowInDays": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {}, + "DeletionDate": { + "type": "timestamp" + } + } + } + }, + "UpdateAlias": { + "input": { + "type": "structure", + "required": [ + "AliasName", + "TargetKeyId" + ], + "members": { + "AliasName": {}, + "TargetKeyId": {} + } + } + }, + "UpdateKeyDescription": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "Description" + ], + "members": { + "KeyId": {}, + "Description": {} + } + } + } + }, + "shapes": { + "S8": { + "type": "list", + "member": {} + }, + "Sa": { + "type": "structure", + "members": { + "EncryptionContextSubset": { + "shape": "Sb" + }, + "EncryptionContextEquals": { + "shape": "Sb" + } + } + }, + "Sb": { + "type": "map", + "key": {}, + "value": {} + }, + "Se": { + "type": "list", + "member": {} + }, + "Sq": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "AWSAccountId": {}, + "KeyId": {}, + "Arn": {}, + "CreationDate": { + "type": "timestamp" + }, + "Enabled": { + "type": "boolean" + }, + "Description": {}, + "KeyUsage": {}, + "KeyState": {}, + "DeletionDate": { + "type": "timestamp" + }, + "ValidTo": { + "type": "timestamp" + }, + "Origin": {}, + "ExpirationModel": {} + } + }, + "Sz": { + "type": "blob", + "sensitive": true + }, + "S20": { + "type": "structure", + "members": { + "Grants": { + "type": "list", + "member": { + "type": "structure", + "members": { + "KeyId": {}, + "GrantId": {}, + "Name": {}, + "CreationDate": { + "type": "timestamp" + }, + "GranteePrincipal": {}, + "RetiringPrincipal": {}, + "IssuingAccount": {}, + "Operations": { + "shape": "S8" + }, + "Constraints": { + "shape": "Sa" + } + } + } + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json b/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json new file mode 100644 index 0000000..522d171 --- /dev/null +++ b/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json @@ -0,0 +1,32 @@ +{ + "pagination": { + "ListAliases": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "Aliases" + }, + "ListGrants": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "Grants" + }, + "ListKeyPolicies": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "PolicyNames" + }, + "ListKeys": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "Keys" + } + } +} diff --git a/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json b/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json new file mode 100644 index 0000000..fc006a8 --- /dev/null +++ b/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json @@ -0,0 +1,423 @@ +{ + "metadata": { + "apiVersion": "2014-11-11", + "endpointPrefix": "lambda", + "serviceFullName": "AWS Lambda", + "signatureVersion": "v4", + "protocol": "rest-json" + }, + "operations": { + "AddEventSource": { + "http": { + "requestUri": "/2014-11-13/event-source-mappings/" + }, + "input": { + "type": "structure", + "required": [ + "EventSource", + "FunctionName", + "Role" + ], + "members": { + "EventSource": {}, + "FunctionName": {}, + "Role": {}, + "BatchSize": { + "type": "integer" + }, + "Parameters": { + "shape": "S6" + } + } + }, + "output": { + "shape": "S7" + } + }, + "DeleteFunction": { + "http": { + "method": "DELETE", + "requestUri": "/2014-11-13/functions/{FunctionName}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + } + } + } + }, + "GetEventSource": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/event-source-mappings/{UUID}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + }, + "output": { + "shape": "S7" + } + }, + "GetFunction": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/functions/{FunctionName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + } + } + }, + "output": { + "type": "structure", + "members": { + "Configuration": { + "shape": "Se" + }, + "Code": { + "type": "structure", + "members": { + "RepositoryType": {}, + "Location": {} + } + } + } + } + }, + "GetFunctionConfiguration": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + } + } + }, + "output": { + "shape": "Se" + } + }, + "InvokeAsync": { + "http": { + "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "InvokeArgs" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "InvokeArgs": { + "shape": "Sq" + } + }, + "payload": "InvokeArgs" + }, + "output": { + "type": "structure", + "members": { + "Status": { + "location": "statusCode", + "type": "integer" + } + } + } + }, + "ListEventSources": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/event-source-mappings/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "EventSourceArn": { + "location": "querystring", + "locationName": "EventSource" + }, + "FunctionName": { + "location": "querystring", + "locationName": "FunctionName" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "EventSources": { + "type": "list", + "member": { + "shape": "S7" + } + } + } + } + }, + "ListFunctions": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/functions/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Functions": { + "type": "list", + "member": { + "shape": "Se" + } + } + } + } + }, + "RemoveEventSource": { + "http": { + "method": "DELETE", + "requestUri": "/2014-11-13/event-source-mappings/{UUID}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + } + }, + "UpdateFunctionConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Role": { + "location": "querystring", + "locationName": "Role" + }, + "Handler": { + "location": "querystring", + "locationName": "Handler" + }, + "Description": { + "location": "querystring", + "locationName": "Description" + }, + "Timeout": { + "location": "querystring", + "locationName": "Timeout", + "type": "integer" + }, + "MemorySize": { + "location": "querystring", + "locationName": "MemorySize", + "type": "integer" + } + } + }, + "output": { + "shape": "Se" + } + }, + "UploadFunction": { + "http": { + "method": "PUT", + "requestUri": "/2014-11-13/functions/{FunctionName}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "FunctionZip", + "Runtime", + "Role", + "Handler", + "Mode" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "FunctionZip": { + "shape": "Sq" + }, + "Runtime": { + "location": "querystring", + "locationName": "Runtime" + }, + "Role": { + "location": "querystring", + "locationName": "Role" + }, + "Handler": { + "location": "querystring", + "locationName": "Handler" + }, + "Mode": { + "location": "querystring", + "locationName": "Mode" + }, + "Description": { + "location": "querystring", + "locationName": "Description" + }, + "Timeout": { + "location": "querystring", + "locationName": "Timeout", + "type": "integer" + }, + "MemorySize": { + "location": "querystring", + "locationName": "MemorySize", + "type": "integer" + } + }, + "payload": "FunctionZip" + }, + "output": { + "shape": "Se" + } + } + }, + "shapes": { + "S6": { + "type": "map", + "key": {}, + "value": {} + }, + "S7": { + "type": "structure", + "members": { + "UUID": {}, + "BatchSize": { + "type": "integer" + }, + "EventSource": {}, + "FunctionName": {}, + "Parameters": { + "shape": "S6" + }, + "Role": {}, + "LastModified": { + "type": "timestamp" + }, + "IsActive": { + "type": "boolean" + }, + "Status": {} + } + }, + "Se": { + "type": "structure", + "members": { + "FunctionName": {}, + "FunctionARN": {}, + "ConfigurationId": {}, + "Runtime": {}, + "Role": {}, + "Handler": {}, + "Mode": {}, + "CodeSize": { + "type": "long" + }, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "LastModified": { + "type": "timestamp" + } + } + }, + "Sq": { + "type": "blob", + "streaming": true + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json b/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json new file mode 100644 index 0000000..deaf07d --- /dev/null +++ b/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json @@ -0,0 +1,16 @@ +{ + "pagination": { + "ListEventSources": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "EventSources" + }, + "ListFunctions": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "Functions" + } + } +} diff --git a/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json b/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json new file mode 100644 index 0000000..acc8b76 --- /dev/null +++ b/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json @@ -0,0 +1,872 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-03-31", + "endpointPrefix": "lambda", + "protocol": "rest-json", + "serviceFullName": "AWS Lambda", + "signatureVersion": "v4" + }, + "operations": { + "AddPermission": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/policy", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "StatementId", + "Action", + "Principal" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "StatementId": {}, + "Action": {}, + "Principal": {}, + "SourceArn": {}, + "SourceAccount": {}, + "EventSourceToken": {}, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "type": "structure", + "members": { + "Statement": {} + } + } + }, + "CreateAlias": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name", + "FunctionVersion" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": {}, + "FunctionVersion": {}, + "Description": {} + } + }, + "output": { + "shape": "Sg" + } + }, + "CreateEventSourceMapping": { + "http": { + "requestUri": "/2015-03-31/event-source-mappings/", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "EventSourceArn", + "FunctionName", + "StartingPosition" + ], + "members": { + "EventSourceArn": {}, + "FunctionName": {}, + "Enabled": { + "type": "boolean" + }, + "BatchSize": { + "type": "integer" + }, + "StartingPosition": {} + } + }, + "output": { + "shape": "Sm" + } + }, + "CreateFunction": { + "http": { + "requestUri": "/2015-03-31/functions", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Runtime", + "Role", + "Handler", + "Code" + ], + "members": { + "FunctionName": {}, + "Runtime": {}, + "Role": {}, + "Handler": {}, + "Code": { + "type": "structure", + "members": { + "ZipFile": { + "type": "blob" + }, + "S3Bucket": {}, + "S3Key": {}, + "S3ObjectVersion": {} + } + }, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "Publish": { + "type": "boolean" + }, + "VpcConfig": { + "shape": "S10" + } + } + }, + "output": { + "shape": "S15" + } + }, + "DeleteAlias": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": { + "location": "uri", + "locationName": "Name" + } + } + } + }, + "DeleteEventSourceMapping": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/event-source-mappings/{UUID}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + }, + "output": { + "shape": "Sm" + } + }, + "DeleteFunction": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/functions/{FunctionName}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + } + }, + "GetAlias": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": { + "location": "uri", + "locationName": "Name" + } + } + }, + "output": { + "shape": "Sg" + } + }, + "GetEventSourceMapping": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/event-source-mappings/{UUID}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + }, + "output": { + "shape": "Sm" + } + }, + "GetFunction": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "type": "structure", + "members": { + "Configuration": { + "shape": "S15" + }, + "Code": { + "type": "structure", + "members": { + "RepositoryType": {}, + "Location": {} + } + } + } + } + }, + "GetFunctionConfiguration": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "shape": "S15" + } + }, + "GetPolicy": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/policy", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "type": "structure", + "members": { + "Policy": {} + } + } + }, + "Invoke": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/invocations" + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "InvocationType": { + "location": "header", + "locationName": "X-Amz-Invocation-Type" + }, + "LogType": { + "location": "header", + "locationName": "X-Amz-Log-Type" + }, + "ClientContext": { + "location": "header", + "locationName": "X-Amz-Client-Context" + }, + "Payload": { + "type": "blob" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + }, + "payload": "Payload" + }, + "output": { + "type": "structure", + "members": { + "StatusCode": { + "location": "statusCode", + "type": "integer" + }, + "FunctionError": { + "location": "header", + "locationName": "X-Amz-Function-Error" + }, + "LogResult": { + "location": "header", + "locationName": "X-Amz-Log-Result" + }, + "Payload": { + "type": "blob" + } + }, + "payload": "Payload" + } + }, + "InvokeAsync": { + "http": { + "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "InvokeArgs" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "InvokeArgs": { + "type": "blob", + "streaming": true + } + }, + "deprecated": true, + "payload": "InvokeArgs" + }, + "output": { + "type": "structure", + "members": { + "Status": { + "location": "statusCode", + "type": "integer" + } + }, + "deprecated": true + }, + "deprecated": true + }, + "ListAliases": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "FunctionVersion": { + "location": "querystring", + "locationName": "FunctionVersion" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Aliases": { + "type": "list", + "member": { + "shape": "Sg" + } + } + } + } + }, + "ListEventSourceMappings": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/event-source-mappings/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "EventSourceArn": { + "location": "querystring", + "locationName": "EventSourceArn" + }, + "FunctionName": { + "location": "querystring", + "locationName": "FunctionName" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "EventSourceMappings": { + "type": "list", + "member": { + "shape": "Sm" + } + } + } + } + }, + "ListFunctions": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Functions": { + "shape": "S23" + } + } + } + }, + "ListVersionsByFunction": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/versions", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Versions": { + "shape": "S23" + } + } + } + }, + "PublishVersion": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/versions", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "CodeSha256": {}, + "Description": {} + } + }, + "output": { + "shape": "S15" + } + }, + "RemovePermission": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "StatementId" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "StatementId": { + "location": "uri", + "locationName": "StatementId" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + } + }, + "UpdateAlias": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": { + "location": "uri", + "locationName": "Name" + }, + "FunctionVersion": {}, + "Description": {} + } + }, + "output": { + "shape": "Sg" + } + }, + "UpdateEventSourceMapping": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/event-source-mappings/{UUID}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + }, + "FunctionName": {}, + "Enabled": { + "type": "boolean" + }, + "BatchSize": { + "type": "integer" + } + } + }, + "output": { + "shape": "Sm" + } + }, + "UpdateFunctionCode": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/functions/{FunctionName}/code", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "ZipFile": { + "type": "blob" + }, + "S3Bucket": {}, + "S3Key": {}, + "S3ObjectVersion": {}, + "Publish": { + "type": "boolean" + } + } + }, + "output": { + "shape": "S15" + } + }, + "UpdateFunctionConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Role": {}, + "Handler": {}, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "VpcConfig": { + "shape": "S10" + }, + "Runtime": {} + } + }, + "output": { + "shape": "S15" + } + } + }, + "shapes": { + "Sg": { + "type": "structure", + "members": { + "AliasArn": {}, + "Name": {}, + "FunctionVersion": {}, + "Description": {} + } + }, + "Sm": { + "type": "structure", + "members": { + "UUID": {}, + "BatchSize": { + "type": "integer" + }, + "EventSourceArn": {}, + "FunctionArn": {}, + "LastModified": { + "type": "timestamp" + }, + "LastProcessingResult": {}, + "State": {}, + "StateTransitionReason": {} + } + }, + "S10": { + "type": "structure", + "members": { + "SubnetIds": { + "shape": "S11" + }, + "SecurityGroupIds": { + "shape": "S13" + } + } + }, + "S11": { + "type": "list", + "member": {} + }, + "S13": { + "type": "list", + "member": {} + }, + "S15": { + "type": "structure", + "members": { + "FunctionName": {}, + "FunctionArn": {}, + "Runtime": {}, + "Role": {}, + "Handler": {}, + "CodeSize": { + "type": "long" + }, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "LastModified": {}, + "CodeSha256": {}, + "Version": {}, + "VpcConfig": { + "type": "structure", + "members": { + "SubnetIds": { + "shape": "S11" + }, + "SecurityGroupIds": { + "shape": "S13" + }, + "VpcId": {} + } + } + } + }, + "S23": { + "type": "list", + "member": { + "shape": "S15" + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json b/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json new file mode 100644 index 0000000..da00fb7 --- /dev/null +++ b/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json @@ -0,0 +1,16 @@ +{ + "pagination": { + "ListEventSourceMappings": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "EventSourceMappings" + }, + "ListFunctions": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "Functions" + } + } +} diff --git a/node_modules/aws-sdk/apis/logs-2014-03-28.min.json b/node_modules/aws-sdk/apis/logs-2014-03-28.min.json new file mode 100644 index 0000000..31b2690 --- /dev/null +++ b/node_modules/aws-sdk/apis/logs-2014-03-28.min.json @@ -0,0 +1,722 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-03-28", + "endpointPrefix": "logs", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon CloudWatch Logs", + "signatureVersion": "v4", + "targetPrefix": "Logs_20140328" + }, + "operations": { + "CancelExportTask": { + "input": { + "type": "structure", + "required": [ + "taskId" + ], + "members": { + "taskId": {} + } + } + }, + "CreateExportTask": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "from", + "to", + "destination" + ], + "members": { + "taskName": {}, + "logGroupName": {}, + "logStreamNamePrefix": {}, + "from": { + "type": "long" + }, + "to": { + "type": "long" + }, + "destination": {}, + "destinationPrefix": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskId": {} + } + } + }, + "CreateLogGroup": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {} + } + } + }, + "CreateLogStream": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName" + ], + "members": { + "logGroupName": {}, + "logStreamName": {} + } + } + }, + "DeleteDestination": { + "input": { + "type": "structure", + "required": [ + "destinationName" + ], + "members": { + "destinationName": {} + } + } + }, + "DeleteLogGroup": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {} + } + } + }, + "DeleteLogStream": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName" + ], + "members": { + "logGroupName": {}, + "logStreamName": {} + } + } + }, + "DeleteMetricFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName" + ], + "members": { + "logGroupName": {}, + "filterName": {} + } + } + }, + "DeleteRetentionPolicy": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {} + } + } + }, + "DeleteSubscriptionFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName" + ], + "members": { + "logGroupName": {}, + "filterName": {} + } + } + }, + "DescribeDestinations": { + "input": { + "type": "structure", + "members": { + "DestinationNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "destinations": { + "type": "list", + "member": { + "shape": "Sq" + } + }, + "nextToken": {} + } + } + }, + "DescribeExportTasks": { + "input": { + "type": "structure", + "members": { + "taskId": {}, + "statusCode": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "exportTasks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "taskId": {}, + "taskName": {}, + "logGroupName": {}, + "from": { + "type": "long" + }, + "to": { + "type": "long" + }, + "destination": {}, + "destinationPrefix": {}, + "status": { + "type": "structure", + "members": { + "code": {}, + "message": {} + } + }, + "executionInfo": { + "type": "structure", + "members": { + "creationTime": { + "type": "long" + }, + "completionTime": { + "type": "long" + } + } + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeLogGroups": { + "input": { + "type": "structure", + "members": { + "logGroupNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "logGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logGroupName": {}, + "creationTime": { + "type": "long" + }, + "retentionInDays": { + "type": "integer" + }, + "metricFilterCount": { + "type": "integer" + }, + "arn": {}, + "storedBytes": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeLogStreams": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "logStreamNamePrefix": {}, + "orderBy": {}, + "descending": { + "type": "boolean" + }, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "logStreams": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logStreamName": {}, + "creationTime": { + "type": "long" + }, + "firstEventTimestamp": { + "type": "long" + }, + "lastEventTimestamp": { + "type": "long" + }, + "lastIngestionTime": { + "type": "long" + }, + "uploadSequenceToken": {}, + "arn": {}, + "storedBytes": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeMetricFilters": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "filterNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "metricFilters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "filterName": {}, + "filterPattern": {}, + "metricTransformations": { + "shape": "S1m" + }, + "creationTime": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeSubscriptionFilters": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "filterNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "subscriptionFilters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "filterName": {}, + "logGroupName": {}, + "filterPattern": {}, + "destinationArn": {}, + "roleArn": {}, + "creationTime": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "FilterLogEvents": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "logStreamNames": { + "type": "list", + "member": {} + }, + "startTime": { + "type": "long" + }, + "endTime": { + "type": "long" + }, + "filterPattern": {}, + "nextToken": {}, + "limit": { + "type": "integer" + }, + "interleaved": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logStreamName": {}, + "timestamp": { + "type": "long" + }, + "message": {}, + "ingestionTime": { + "type": "long" + }, + "eventId": {} + } + } + }, + "searchedLogStreams": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logStreamName": {}, + "searchedCompletely": { + "type": "boolean" + } + } + } + }, + "nextToken": {} + } + } + }, + "GetLogEvents": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName" + ], + "members": { + "logGroupName": {}, + "logStreamName": {}, + "startTime": { + "type": "long" + }, + "endTime": { + "type": "long" + }, + "nextToken": {}, + "limit": { + "type": "integer" + }, + "startFromHead": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "timestamp": { + "type": "long" + }, + "message": {}, + "ingestionTime": { + "type": "long" + } + } + } + }, + "nextForwardToken": {}, + "nextBackwardToken": {} + } + } + }, + "PutDestination": { + "input": { + "type": "structure", + "required": [ + "destinationName", + "targetArn", + "roleArn" + ], + "members": { + "destinationName": {}, + "targetArn": {}, + "roleArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "destination": { + "shape": "Sq" + } + } + } + }, + "PutDestinationPolicy": { + "input": { + "type": "structure", + "required": [ + "destinationName", + "accessPolicy" + ], + "members": { + "destinationName": {}, + "accessPolicy": {} + } + } + }, + "PutLogEvents": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName", + "logEvents" + ], + "members": { + "logGroupName": {}, + "logStreamName": {}, + "logEvents": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "timestamp", + "message" + ], + "members": { + "timestamp": { + "type": "long" + }, + "message": {} + } + } + }, + "sequenceToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "nextSequenceToken": {}, + "rejectedLogEventsInfo": { + "type": "structure", + "members": { + "tooNewLogEventStartIndex": { + "type": "integer" + }, + "tooOldLogEventEndIndex": { + "type": "integer" + }, + "expiredLogEventEndIndex": { + "type": "integer" + } + } + } + } + } + }, + "PutMetricFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName", + "filterPattern", + "metricTransformations" + ], + "members": { + "logGroupName": {}, + "filterName": {}, + "filterPattern": {}, + "metricTransformations": { + "shape": "S1m" + } + } + } + }, + "PutRetentionPolicy": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "retentionInDays" + ], + "members": { + "logGroupName": {}, + "retentionInDays": { + "type": "integer" + } + } + } + }, + "PutSubscriptionFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName", + "filterPattern", + "destinationArn" + ], + "members": { + "logGroupName": {}, + "filterName": {}, + "filterPattern": {}, + "destinationArn": {}, + "roleArn": {} + } + } + }, + "TestMetricFilter": { + "input": { + "type": "structure", + "required": [ + "filterPattern", + "logEventMessages" + ], + "members": { + "filterPattern": {}, + "logEventMessages": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "matches": { + "type": "list", + "member": { + "type": "structure", + "members": { + "eventNumber": { + "type": "long" + }, + "eventMessage": {}, + "extractedValues": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + } + } + }, + "shapes": { + "Sq": { + "type": "structure", + "members": { + "destinationName": {}, + "targetArn": {}, + "roleArn": {}, + "accessPolicy": {}, + "arn": {}, + "creationTime": { + "type": "long" + } + } + }, + "S1m": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "metricName", + "metricNamespace", + "metricValue" + ], + "members": { + "metricName": {}, + "metricNamespace": {}, + "metricValue": {}, + "defaultValue": { + "type": "double" + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json b/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json new file mode 100644 index 0000000..f689324 --- /dev/null +++ b/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json @@ -0,0 +1,49 @@ +{ + "pagination": { + "DescribeDestinations": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "destinations" + }, + "DescribeLogGroups": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "logGroups" + }, + "DescribeLogStreams": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "logStreams" + }, + "DescribeMetricFilters": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "metricFilters" + }, + "DescribeSubscriptionFilters": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "subscriptionFilters" + }, + "FilterLogEvents": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": [ + "events", + "searchedLogStreams" + ] + }, + "GetLogEvents": { + "input_token": "nextToken", + "output_token": "nextForwardToken", + "limit_key": "limit", + "result_key": "events" + } + } +} diff --git a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json new file mode 100644 index 0000000..232fafc --- /dev/null +++ b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json @@ -0,0 +1,1107 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-12-12", + "endpointPrefix": "machinelearning", + "jsonVersion": "1.1", + "serviceFullName": "Amazon Machine Learning", + "signatureVersion": "v4", + "targetPrefix": "AmazonML_20141212", + "protocol": "json" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "Tags", + "ResourceId", + "ResourceType" + ], + "members": { + "Tags": { + "shape": "S2" + }, + "ResourceId": {}, + "ResourceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {} + } + } + }, + "CreateBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId", + "MLModelId", + "BatchPredictionDataSourceId", + "OutputUri" + ], + "members": { + "BatchPredictionId": {}, + "BatchPredictionName": {}, + "MLModelId": {}, + "BatchPredictionDataSourceId": {}, + "OutputUri": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {} + } + } + }, + "CreateDataSourceFromRDS": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "RDSData", + "RoleARN" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {}, + "RDSData": { + "type": "structure", + "required": [ + "DatabaseInformation", + "SelectSqlQuery", + "DatabaseCredentials", + "S3StagingLocation", + "ResourceRole", + "ServiceRole", + "SubnetId", + "SecurityGroupIds" + ], + "members": { + "DatabaseInformation": { + "shape": "Sf" + }, + "SelectSqlQuery": {}, + "DatabaseCredentials": { + "type": "structure", + "required": [ + "Username", + "Password" + ], + "members": { + "Username": {}, + "Password": {} + } + }, + "S3StagingLocation": {}, + "DataRearrangement": {}, + "DataSchema": {}, + "DataSchemaUri": {}, + "ResourceRole": {}, + "ServiceRole": {}, + "SubnetId": {}, + "SecurityGroupIds": { + "type": "list", + "member": {} + } + } + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "CreateDataSourceFromRedshift": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "DataSpec", + "RoleARN" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {}, + "DataSpec": { + "type": "structure", + "required": [ + "DatabaseInformation", + "SelectSqlQuery", + "DatabaseCredentials", + "S3StagingLocation" + ], + "members": { + "DatabaseInformation": { + "shape": "Sy" + }, + "SelectSqlQuery": {}, + "DatabaseCredentials": { + "type": "structure", + "required": [ + "Username", + "Password" + ], + "members": { + "Username": {}, + "Password": {} + } + }, + "S3StagingLocation": {}, + "DataRearrangement": {}, + "DataSchema": {}, + "DataSchemaUri": {} + } + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "CreateDataSourceFromS3": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "DataSpec" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {}, + "DataSpec": { + "type": "structure", + "required": [ + "DataLocationS3" + ], + "members": { + "DataLocationS3": {}, + "DataRearrangement": {}, + "DataSchema": {}, + "DataSchemaLocationS3": {} + } + }, + "ComputeStatistics": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "CreateEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId", + "MLModelId", + "EvaluationDataSourceId" + ], + "members": { + "EvaluationId": {}, + "EvaluationName": {}, + "MLModelId": {}, + "EvaluationDataSourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {} + } + } + }, + "CreateMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId", + "MLModelType", + "TrainingDataSourceId" + ], + "members": { + "MLModelId": {}, + "MLModelName": {}, + "MLModelType": {}, + "Parameters": { + "shape": "S1d" + }, + "TrainingDataSourceId": {}, + "Recipe": {}, + "RecipeUri": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {} + } + } + }, + "CreateRealtimeEndpoint": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {}, + "RealtimeEndpointInfo": { + "shape": "S1j" + } + } + } + }, + "DeleteBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId" + ], + "members": { + "BatchPredictionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {} + } + } + }, + "DeleteDataSource": { + "input": { + "type": "structure", + "required": [ + "DataSourceId" + ], + "members": { + "DataSourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "DeleteEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId" + ], + "members": { + "EvaluationId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {} + } + } + }, + "DeleteMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {} + } + } + }, + "DeleteRealtimeEndpoint": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {}, + "RealtimeEndpointInfo": { + "shape": "S1j" + } + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "TagKeys", + "ResourceId", + "ResourceType" + ], + "members": { + "TagKeys": { + "type": "list", + "member": {} + }, + "ResourceId": {}, + "ResourceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {} + } + } + }, + "DescribeBatchPredictions": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "BatchPredictionId": {}, + "MLModelId": {}, + "BatchPredictionDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "OutputUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "TotalRecordCount": { + "type": "long" + }, + "InvalidRecordCount": { + "type": "long" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeDataSources": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DataSourceId": {}, + "DataLocationS3": {}, + "DataRearrangement": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "DataSizeInBytes": { + "type": "long" + }, + "NumberOfFiles": { + "type": "long" + }, + "Name": {}, + "Status": {}, + "Message": {}, + "RedshiftMetadata": { + "shape": "S2i" + }, + "RDSMetadata": { + "shape": "S2j" + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + }, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeEvaluations": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EvaluationId": {}, + "MLModelId": {}, + "EvaluationDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "PerformanceMetrics": { + "shape": "S2q" + }, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeMLModels": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "MLModelId": {}, + "TrainingDataSourceId": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "SizeInBytes": { + "type": "long" + }, + "EndpointInfo": { + "shape": "S1j" + }, + "TrainingParameters": { + "shape": "S1d" + }, + "InputDataLocationS3": {}, + "Algorithm": {}, + "MLModelType": {}, + "ScoreThreshold": { + "type": "float" + }, + "ScoreThresholdLastUpdatedAt": { + "type": "timestamp" + }, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "ResourceType" + ], + "members": { + "ResourceId": {}, + "ResourceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {}, + "Tags": { + "shape": "S2" + } + } + } + }, + "GetBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId" + ], + "members": { + "BatchPredictionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {}, + "MLModelId": {}, + "BatchPredictionDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "OutputUri": {}, + "LogUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "TotalRecordCount": { + "type": "long" + }, + "InvalidRecordCount": { + "type": "long" + } + } + } + }, + "GetDataSource": { + "input": { + "type": "structure", + "required": [ + "DataSourceId" + ], + "members": { + "DataSourceId": {}, + "Verbose": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {}, + "DataLocationS3": {}, + "DataRearrangement": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "DataSizeInBytes": { + "type": "long" + }, + "NumberOfFiles": { + "type": "long" + }, + "Name": {}, + "Status": {}, + "LogUri": {}, + "Message": {}, + "RedshiftMetadata": { + "shape": "S2i" + }, + "RDSMetadata": { + "shape": "S2j" + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + }, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "DataSourceSchema": {} + } + } + }, + "GetEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId" + ], + "members": { + "EvaluationId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {}, + "MLModelId": {}, + "EvaluationDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "PerformanceMetrics": { + "shape": "S2q" + }, + "LogUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "GetMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {}, + "Verbose": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {}, + "TrainingDataSourceId": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "SizeInBytes": { + "type": "long" + }, + "EndpointInfo": { + "shape": "S1j" + }, + "TrainingParameters": { + "shape": "S1d" + }, + "InputDataLocationS3": {}, + "MLModelType": {}, + "ScoreThreshold": { + "type": "float" + }, + "ScoreThresholdLastUpdatedAt": { + "type": "timestamp" + }, + "LogUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "Recipe": {}, + "Schema": {} + } + } + }, + "Predict": { + "input": { + "type": "structure", + "required": [ + "MLModelId", + "Record", + "PredictEndpoint" + ], + "members": { + "MLModelId": {}, + "Record": { + "type": "map", + "key": {}, + "value": {} + }, + "PredictEndpoint": {} + } + }, + "output": { + "type": "structure", + "members": { + "Prediction": { + "type": "structure", + "members": { + "predictedLabel": {}, + "predictedValue": { + "type": "float" + }, + "predictedScores": { + "type": "map", + "key": {}, + "value": { + "type": "float" + } + }, + "details": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + }, + "UpdateBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId", + "BatchPredictionName" + ], + "members": { + "BatchPredictionId": {}, + "BatchPredictionName": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {} + } + } + }, + "UpdateDataSource": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "DataSourceName" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {} + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "UpdateEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId", + "EvaluationName" + ], + "members": { + "EvaluationId": {}, + "EvaluationName": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {} + } + } + }, + "UpdateMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {}, + "MLModelName": {}, + "ScoreThreshold": { + "type": "float" + } + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {} + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sf": { + "type": "structure", + "required": [ + "InstanceIdentifier", + "DatabaseName" + ], + "members": { + "InstanceIdentifier": {}, + "DatabaseName": {} + } + }, + "Sy": { + "type": "structure", + "required": [ + "DatabaseName", + "ClusterIdentifier" + ], + "members": { + "DatabaseName": {}, + "ClusterIdentifier": {} + } + }, + "S1d": { + "type": "map", + "key": {}, + "value": {} + }, + "S1j": { + "type": "structure", + "members": { + "PeakRequestsPerSecond": { + "type": "integer" + }, + "CreatedAt": { + "type": "timestamp" + }, + "EndpointUrl": {}, + "EndpointStatus": {} + } + }, + "S2i": { + "type": "structure", + "members": { + "RedshiftDatabase": { + "shape": "Sy" + }, + "DatabaseUserName": {}, + "SelectSqlQuery": {} + } + }, + "S2j": { + "type": "structure", + "members": { + "Database": { + "shape": "Sf" + }, + "DatabaseUserName": {}, + "SelectSqlQuery": {}, + "ResourceRole": {}, + "ServiceRole": {}, + "DataPipelineId": {} + } + }, + "S2q": { + "type": "structure", + "members": { + "Properties": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json new file mode 100644 index 0000000..c13ce65 --- /dev/null +++ b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json @@ -0,0 +1,28 @@ +{ + "pagination": { + "DescribeBatchPredictions": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + }, + "DescribeDataSources": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + }, + "DescribeEvaluations": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + }, + "DescribeMLModels": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + } + } +} diff --git a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json new file mode 100644 index 0000000..da6b1c9 --- /dev/null +++ b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json @@ -0,0 +1,81 @@ +{ + "version": 2, + "waiters": { + "DataSourceAvailable": { + "delay": 30, + "operation": "DescribeDataSources", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + }, + "MLModelAvailable": { + "delay": 30, + "operation": "DescribeMLModels", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + }, + "EvaluationAvailable": { + "delay": 30, + "operation": "DescribeEvaluations", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + }, + "BatchPredictionAvailable": { + "delay": 30, + "operation": "DescribeBatchPredictions", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json b/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json new file mode 100644 index 0000000..352a4d5 --- /dev/null +++ b/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json @@ -0,0 +1,84 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-07-01", + "endpointPrefix": "marketplacecommerceanalytics", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Marketplace Commerce Analytics", + "signatureVersion": "v4", + "signingName": "marketplacecommerceanalytics", + "targetPrefix": "MarketplaceCommerceAnalytics20150701" + }, + "operations": { + "GenerateDataSet": { + "input": { + "type": "structure", + "required": [ + "dataSetType", + "dataSetPublicationDate", + "roleNameArn", + "destinationS3BucketName", + "snsTopicArn" + ], + "members": { + "dataSetType": {}, + "dataSetPublicationDate": { + "type": "timestamp" + }, + "roleNameArn": {}, + "destinationS3BucketName": {}, + "destinationS3Prefix": {}, + "snsTopicArn": {}, + "customerDefinedValues": { + "shape": "S8" + } + } + }, + "output": { + "type": "structure", + "members": { + "dataSetRequestId": {} + } + } + }, + "StartSupportDataExport": { + "input": { + "type": "structure", + "required": [ + "dataSetType", + "fromDate", + "roleNameArn", + "destinationS3BucketName", + "snsTopicArn" + ], + "members": { + "dataSetType": {}, + "fromDate": { + "type": "timestamp" + }, + "roleNameArn": {}, + "destinationS3BucketName": {}, + "destinationS3Prefix": {}, + "snsTopicArn": {}, + "customerDefinedValues": { + "shape": "S8" + } + } + }, + "output": { + "type": "structure", + "members": { + "dataSetRequestId": {} + } + } + } + }, + "shapes": { + "S8": { + "type": "map", + "key": {}, + "value": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/metadata.json b/node_modules/aws-sdk/apis/metadata.json new file mode 100644 index 0000000..f625e66 --- /dev/null +++ b/node_modules/aws-sdk/apis/metadata.json @@ -0,0 +1,305 @@ +{ + "acm": { + "name": "ACM", + "cors": true + }, + "apigateway": { + "name": "APIGateway", + "cors": true + }, + "applicationautoscaling": { + "prefix": "application-autoscaling", + "name": "ApplicationAutoScaling", + "cors": true + }, + "autoscaling": { + "name": "AutoScaling", + "cors": true + }, + "cloudformation": { + "name": "CloudFormation", + "cors": true + }, + "cloudfront": { + "name": "CloudFront", + "versions": ["2013-05-12*", "2013-11-11*", "2014-05-31*", "2014-10-21*", "2014-11-06*", "2015-04-17*", "2015-07-27*", "2015-09-17*", "2016-01-13*", "2016-01-28*", "2016-08-01*", "2016-08-20*"], + "cors": true + }, + "cloudhsm": { + "name": "CloudHSM", + "cors": true + }, + "cloudsearch": { + "name": "CloudSearch" + }, + "cloudsearchdomain": { + "name": "CloudSearchDomain" + }, + "cloudtrail": { + "name": "CloudTrail", + "cors": true + }, + "cloudwatch": { + "prefix": "monitoring", + "name": "CloudWatch", + "cors": true + }, + "cloudwatchevents": { + "prefix": "events", + "name": "CloudWatchEvents", + "versions": ["2014-02-03*"], + "cors": true + }, + "cloudwatchlogs": { + "prefix": "logs", + "name": "CloudWatchLogs", + "cors": true + }, + "codecommit": { + "name": "CodeCommit", + "cors": true + }, + "codedeploy": { + "name": "CodeDeploy", + "cors": true + }, + "codepipeline": { + "name": "CodePipeline", + "cors": true + }, + "cognitoidentity": { + "prefix": "cognito-identity", + "name": "CognitoIdentity", + "cors": true + }, + "cognitoidentityserviceprovider": { + "prefix": "cognito-idp", + "name": "CognitoIdentityServiceProvider", + "cors": true + }, + "cognitosync": { + "prefix": "cognito-sync", + "name": "CognitoSync", + "cors": true + }, + "configservice": { + "prefix": "config", + "name": "ConfigService", + "cors": true + }, + "datapipeline": { + "name": "DataPipeline" + }, + "devicefarm": { + "name": "DeviceFarm", + "cors": true + }, + "directconnect": { + "name": "DirectConnect", + "cors": true + }, + "directoryservice": { + "prefix": "ds", + "name": "DirectoryService" + }, + "discovery": { + "name": "Discovery" + }, + "dms": { + "name": "DMS" + }, + "dynamodb": { + "name": "DynamoDB", + "cors": true + }, + "dynamodbstreams": { + "prefix": "streams.dynamodb", + "name": "DynamoDBStreams", + "cors": true + }, + "ec2": { + "name": "EC2", + "versions": ["2013-06-15*", "2013-10-15*", "2014-02-01*", "2014-05-01*", "2014-06-15*", "2014-09-01*", "2014-10-01*", "2015-03-01*", "2015-04-15*", "2015-10-01*", "2016-04-01*"], + "cors": true + }, + "ecr": { + "name": "ECR", + "cors": true + }, + "ecs": { + "name": "ECS", + "cors": true + }, + "efs": { + "prefix": "elasticfilesystem", + "name": "EFS" + }, + "elasticache": { + "name": "ElastiCache", + "versions": ["2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*"], + "cors": true + }, + "elasticbeanstalk": { + "name": "ElasticBeanstalk", + "cors": true + }, + "elb": { + "prefix": "elasticloadbalancing", + "name": "ELB", + "cors": true + }, + "elbv2": { + "prefix": "elasticloadbalancingv2", + "name": "ELBv2", + "cors": true + }, + "emr": { + "prefix": "elasticmapreduce", + "name": "EMR", + "cors": true + }, + "es": { + "name": "ES" + }, + "elastictranscoder": { + "name": "ElasticTranscoder", + "cors": true + }, + "firehose": { + "name": "Firehose", + "cors": true + }, + "gamelift": { + "name": "GameLift", + "cors": true + }, + "glacier": { + "name": "Glacier" + }, + "iam": { + "name": "IAM" + }, + "importexport": { + "name": "ImportExport" + }, + "inspector": { + "name": "Inspector", + "versions": ["2015-08-18*"], + "cors": true + }, + "iot": { + "name": "Iot", + "cors": true + }, + "iotdata": { + "prefix": "iot-data", + "name": "IotData", + "cors": true + }, + "kinesis": { + "name": "Kinesis", + "cors": true + }, + "kinesisanalytics": { + "name": "KinesisAnalytics" + }, + "kms": { + "name": "KMS", + "cors": true + }, + "lambda": { + "name": "Lambda", + "cors": true + }, + "machinelearning": { + "name": "MachineLearning", + "cors": true + }, + "marketplacecommerceanalytics": { + "name": "MarketplaceCommerceAnalytics", + "cors": true + }, + "marketplacemetering": { + "prefix": "meteringmarketplace", + "name": "MarketplaceMetering" + }, + "mobileanalytics": { + "name": "MobileAnalytics", + "cors": true + }, + "opsworks": { + "name": "OpsWorks", + "cors": true + }, + "rds": { + "name": "RDS", + "versions": ["2014-09-01*"], + "cors": true + }, + "redshift": { + "name": "Redshift", + "cors": true + }, + "route53": { + "name": "Route53", + "cors": true + }, + "route53domains": { + "name": "Route53Domains", + "cors": true + }, + "s3": { + "name": "S3", + "dualstackAvailable": true, + "cors": true + }, + "servicecatalog": { + "name": "ServiceCatalog", + "cors": true + }, + "ses": { + "prefix": "email", + "name": "SES", + "cors": true + }, + "simpledb": { + "prefix": "sdb", + "name": "SimpleDB" + }, + "snowball": { + "name": "Snowball" + }, + "sns": { + "name": "SNS", + "cors": true + }, + "sqs": { + "name": "SQS", + "cors": true + }, + "ssm": { + "name": "SSM", + "cors": true + }, + "storagegateway": { + "name": "StorageGateway", + "cors": true + }, + "sts": { + "name": "STS", + "cors": true + }, + "support": { + "name": "Support" + }, + "swf": { + "name": "SWF" + }, + "waf": { + "name": "WAF", + "cors": true + }, + "workspaces": { + "name": "WorkSpaces" + } +} diff --git a/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json b/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json new file mode 100644 index 0000000..ed7d5bd --- /dev/null +++ b/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json @@ -0,0 +1,47 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-01-14", + "endpointPrefix": "metering.marketplace", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWSMarketplace Metering", + "signatureVersion": "v4", + "signingName": "aws-marketplace", + "targetPrefix": "AWSMPMeteringService" + }, + "operations": { + "MeterUsage": { + "input": { + "type": "structure", + "required": [ + "ProductCode", + "Timestamp", + "UsageDimension", + "UsageQuantity", + "DryRun" + ], + "members": { + "ProductCode": {}, + "Timestamp": { + "type": "timestamp" + }, + "UsageDimension": {}, + "UsageQuantity": { + "type": "integer" + }, + "DryRun": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "MeteringRecordId": {} + } + } + } + }, + "shapes": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json b/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json new file mode 100644 index 0000000..a327cb1 --- /dev/null +++ b/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json @@ -0,0 +1,74 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-06-05", + "endpointPrefix": "mobileanalytics", + "serviceFullName": "Amazon Mobile Analytics", + "signatureVersion": "v4", + "protocol": "rest-json" + }, + "operations": { + "PutEvents": { + "http": { + "requestUri": "/2014-06-05/events", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "events", + "clientContext" + ], + "members": { + "events": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "eventType", + "timestamp" + ], + "members": { + "eventType": {}, + "timestamp": {}, + "session": { + "type": "structure", + "members": { + "id": {}, + "duration": { + "type": "long" + }, + "startTimestamp": {}, + "stopTimestamp": {} + } + }, + "version": {}, + "attributes": { + "type": "map", + "key": {}, + "value": {} + }, + "metrics": { + "type": "map", + "key": {}, + "value": { + "type": "double" + } + } + } + } + }, + "clientContext": { + "location": "header", + "locationName": "x-amz-Client-Context" + }, + "clientContextEncoding": { + "location": "header", + "locationName": "x-amz-Client-Context-Encoding" + } + } + } + } + }, + "shapes": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json b/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json new file mode 100644 index 0000000..d4696fa --- /dev/null +++ b/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json @@ -0,0 +1,501 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-08-01", + "endpointPrefix": "monitoring", + "protocol": "query", + "serviceAbbreviation": "CloudWatch", + "serviceFullName": "Amazon CloudWatch", + "signatureVersion": "v4", + "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/" + }, + "operations": { + "DeleteAlarms": { + "input": { + "type": "structure", + "required": [ + "AlarmNames" + ], + "members": { + "AlarmNames": { + "shape": "S2" + } + } + } + }, + "DescribeAlarmHistory": { + "input": { + "type": "structure", + "members": { + "AlarmName": {}, + "HistoryItemType": {}, + "StartDate": { + "type": "timestamp" + }, + "EndDate": { + "type": "timestamp" + }, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeAlarmHistoryResult", + "type": "structure", + "members": { + "AlarmHistoryItems": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AlarmName": {}, + "Timestamp": { + "type": "timestamp" + }, + "HistoryItemType": {}, + "HistorySummary": {}, + "HistoryData": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeAlarms": { + "input": { + "type": "structure", + "members": { + "AlarmNames": { + "shape": "S2" + }, + "AlarmNamePrefix": {}, + "StateValue": {}, + "ActionPrefix": {}, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeAlarmsResult", + "type": "structure", + "members": { + "MetricAlarms": { + "shape": "Sj" + }, + "NextToken": {} + } + } + }, + "DescribeAlarmsForMetric": { + "input": { + "type": "structure", + "required": [ + "MetricName", + "Namespace" + ], + "members": { + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "shape": "Sv" + }, + "Period": { + "type": "integer" + }, + "Unit": {} + } + }, + "output": { + "resultWrapper": "DescribeAlarmsForMetricResult", + "type": "structure", + "members": { + "MetricAlarms": { + "shape": "Sj" + } + } + } + }, + "DisableAlarmActions": { + "input": { + "type": "structure", + "required": [ + "AlarmNames" + ], + "members": { + "AlarmNames": { + "shape": "S2" + } + } + } + }, + "EnableAlarmActions": { + "input": { + "type": "structure", + "required": [ + "AlarmNames" + ], + "members": { + "AlarmNames": { + "shape": "S2" + } + } + } + }, + "GetMetricStatistics": { + "input": { + "type": "structure", + "required": [ + "Namespace", + "MetricName", + "StartTime", + "EndTime", + "Period", + "Statistics" + ], + "members": { + "Namespace": {}, + "MetricName": {}, + "Dimensions": { + "shape": "Sv" + }, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Period": { + "type": "integer" + }, + "Statistics": { + "type": "list", + "member": {} + }, + "Unit": {} + } + }, + "output": { + "resultWrapper": "GetMetricStatisticsResult", + "type": "structure", + "members": { + "Label": {}, + "Datapoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Timestamp": { + "type": "timestamp" + }, + "SampleCount": { + "type": "double" + }, + "Average": { + "type": "double" + }, + "Sum": { + "type": "double" + }, + "Minimum": { + "type": "double" + }, + "Maximum": { + "type": "double" + }, + "Unit": {} + }, + "xmlOrder": [ + "Timestamp", + "SampleCount", + "Average", + "Sum", + "Minimum", + "Maximum", + "Unit" + ] + } + } + } + } + }, + "ListMetrics": { + "input": { + "type": "structure", + "members": { + "Namespace": {}, + "MetricName": {}, + "Dimensions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Value": {} + } + } + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListMetricsResult", + "type": "structure", + "members": { + "Metrics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Namespace": {}, + "MetricName": {}, + "Dimensions": { + "shape": "Sv" + } + }, + "xmlOrder": [ + "Namespace", + "MetricName", + "Dimensions" + ] + } + }, + "NextToken": {} + }, + "xmlOrder": [ + "Metrics", + "NextToken" + ] + } + }, + "PutMetricAlarm": { + "input": { + "type": "structure", + "required": [ + "AlarmName", + "MetricName", + "Namespace", + "Statistic", + "Period", + "EvaluationPeriods", + "Threshold", + "ComparisonOperator" + ], + "members": { + "AlarmName": {}, + "AlarmDescription": {}, + "ActionsEnabled": { + "type": "boolean" + }, + "OKActions": { + "shape": "So" + }, + "AlarmActions": { + "shape": "So" + }, + "InsufficientDataActions": { + "shape": "So" + }, + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "shape": "Sv" + }, + "Period": { + "type": "integer" + }, + "Unit": {}, + "EvaluationPeriods": { + "type": "integer" + }, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {} + } + } + }, + "PutMetricData": { + "input": { + "type": "structure", + "required": [ + "Namespace", + "MetricData" + ], + "members": { + "Namespace": {}, + "MetricData": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "MetricName" + ], + "members": { + "MetricName": {}, + "Dimensions": { + "shape": "Sv" + }, + "Timestamp": { + "type": "timestamp" + }, + "Value": { + "type": "double" + }, + "StatisticValues": { + "type": "structure", + "required": [ + "SampleCount", + "Sum", + "Minimum", + "Maximum" + ], + "members": { + "SampleCount": { + "type": "double" + }, + "Sum": { + "type": "double" + }, + "Minimum": { + "type": "double" + }, + "Maximum": { + "type": "double" + } + } + }, + "Unit": {} + } + } + } + } + } + }, + "SetAlarmState": { + "input": { + "type": "structure", + "required": [ + "AlarmName", + "StateValue", + "StateReason" + ], + "members": { + "AlarmName": {}, + "StateValue": {}, + "StateReason": {}, + "StateReasonData": {} + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "Sj": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AlarmName": {}, + "AlarmArn": {}, + "AlarmDescription": {}, + "AlarmConfigurationUpdatedTimestamp": { + "type": "timestamp" + }, + "ActionsEnabled": { + "type": "boolean" + }, + "OKActions": { + "shape": "So" + }, + "AlarmActions": { + "shape": "So" + }, + "InsufficientDataActions": { + "shape": "So" + }, + "StateValue": {}, + "StateReason": {}, + "StateReasonData": {}, + "StateUpdatedTimestamp": { + "type": "timestamp" + }, + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "shape": "Sv" + }, + "Period": { + "type": "integer" + }, + "Unit": {}, + "EvaluationPeriods": { + "type": "integer" + }, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {} + }, + "xmlOrder": [ + "AlarmName", + "AlarmArn", + "AlarmDescription", + "AlarmConfigurationUpdatedTimestamp", + "ActionsEnabled", + "OKActions", + "AlarmActions", + "InsufficientDataActions", + "StateValue", + "StateReason", + "StateReasonData", + "StateUpdatedTimestamp", + "MetricName", + "Namespace", + "Statistic", + "Dimensions", + "Period", + "Unit", + "EvaluationPeriods", + "Threshold", + "ComparisonOperator" + ] + } + }, + "So": { + "type": "list", + "member": {} + }, + "Sv": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + }, + "xmlOrder": [ + "Name", + "Value" + ] + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json b/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json new file mode 100644 index 0000000..7bee28c --- /dev/null +++ b/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json @@ -0,0 +1,24 @@ +{ + "pagination": { + "DescribeAlarmHistory": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "AlarmHistoryItems" + }, + "DescribeAlarms": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "MetricAlarms" + }, + "DescribeAlarmsForMetric": { + "result_key": "MetricAlarms" + }, + "ListMetrics": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Metrics" + } + } +} diff --git a/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json b/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json new file mode 100644 index 0000000..cb0cf0b --- /dev/null +++ b/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "waiters": { + "AlarmExists": { + "delay": 5, + "maxAttempts": 40, + "operation": "DescribeAlarms", + "acceptors": [ + { + "matcher": "path", + "expected": true, + "argument": "length(MetricAlarms[]) > `0`", + "state": "success" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json b/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json new file mode 100644 index 0000000..fb2c0f8 --- /dev/null +++ b/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json @@ -0,0 +1,2141 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-02-18", + "endpointPrefix": "opsworks", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS OpsWorks", + "signatureVersion": "v4", + "targetPrefix": "OpsWorks_20130218" + }, + "operations": { + "AssignInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "LayerIds" + ], + "members": { + "InstanceId": {}, + "LayerIds": { + "shape": "S3" + } + } + } + }, + "AssignVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {}, + "InstanceId": {} + } + } + }, + "AssociateElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {}, + "InstanceId": {} + } + } + }, + "AttachElasticLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "ElasticLoadBalancerName", + "LayerId" + ], + "members": { + "ElasticLoadBalancerName": {}, + "LayerId": {} + } + } + }, + "CloneStack": { + "input": { + "type": "structure", + "required": [ + "SourceStackId", + "ServiceRoleArn" + ], + "members": { + "SourceStackId": {}, + "Name": {}, + "Region": {}, + "VpcId": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "ClonePermissions": { + "type": "boolean" + }, + "CloneAppIds": { + "shape": "S3" + }, + "DefaultRootDeviceType": {}, + "AgentVersion": {} + } + }, + "output": { + "type": "structure", + "members": { + "StackId": {} + } + } + }, + "CreateApp": { + "input": { + "type": "structure", + "required": [ + "StackId", + "Name", + "Type" + ], + "members": { + "StackId": {}, + "Shortname": {}, + "Name": {}, + "Description": {}, + "DataSources": { + "shape": "Si" + }, + "Type": {}, + "AppSource": { + "shape": "Sd" + }, + "Domains": { + "shape": "S3" + }, + "EnableSsl": { + "type": "boolean" + }, + "SslConfiguration": { + "shape": "Sl" + }, + "Attributes": { + "shape": "Sm" + }, + "Environment": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "members": { + "AppId": {} + } + } + }, + "CreateDeployment": { + "input": { + "type": "structure", + "required": [ + "StackId", + "Command" + ], + "members": { + "StackId": {}, + "AppId": {}, + "InstanceIds": { + "shape": "S3" + }, + "LayerIds": { + "shape": "S3" + }, + "Command": { + "shape": "Ss" + }, + "Comment": {}, + "CustomJson": {} + } + }, + "output": { + "type": "structure", + "members": { + "DeploymentId": {} + } + } + }, + "CreateInstance": { + "input": { + "type": "structure", + "required": [ + "StackId", + "LayerIds", + "InstanceType" + ], + "members": { + "StackId": {}, + "LayerIds": { + "shape": "S3" + }, + "InstanceType": {}, + "AutoScalingType": {}, + "Hostname": {}, + "Os": {}, + "AmiId": {}, + "SshKeyName": {}, + "AvailabilityZone": {}, + "VirtualizationType": {}, + "SubnetId": {}, + "Architecture": {}, + "RootDeviceType": {}, + "BlockDeviceMappings": { + "shape": "Sz" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "EbsOptimized": { + "type": "boolean" + }, + "AgentVersion": {}, + "Tenancy": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": {} + } + } + }, + "CreateLayer": { + "input": { + "type": "structure", + "required": [ + "StackId", + "Type", + "Name", + "Shortname" + ], + "members": { + "StackId": {}, + "Type": {}, + "Name": {}, + "Shortname": {}, + "Attributes": { + "shape": "S17" + }, + "CustomInstanceProfileArn": {}, + "CustomJson": {}, + "CustomSecurityGroupIds": { + "shape": "S3" + }, + "Packages": { + "shape": "S3" + }, + "VolumeConfigurations": { + "shape": "S19" + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "CustomRecipes": { + "shape": "S1b" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "shape": "S1c" + } + } + }, + "output": { + "type": "structure", + "members": { + "LayerId": {} + } + } + }, + "CreateStack": { + "input": { + "type": "structure", + "required": [ + "Name", + "Region", + "ServiceRoleArn", + "DefaultInstanceProfileArn" + ], + "members": { + "Name": {}, + "Region": {}, + "VpcId": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "DefaultRootDeviceType": {}, + "AgentVersion": {} + } + }, + "output": { + "type": "structure", + "members": { + "StackId": {} + } + } + }, + "CreateUserProfile": { + "input": { + "type": "structure", + "required": [ + "IamUserArn" + ], + "members": { + "IamUserArn": {}, + "SshUsername": {}, + "SshPublicKey": {}, + "AllowSelfManagement": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "IamUserArn": {} + } + } + }, + "DeleteApp": { + "input": { + "type": "structure", + "required": [ + "AppId" + ], + "members": { + "AppId": {} + } + } + }, + "DeleteInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "DeleteElasticIp": { + "type": "boolean" + }, + "DeleteVolumes": { + "type": "boolean" + } + } + } + }, + "DeleteLayer": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {} + } + } + }, + "DeleteStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + } + }, + "DeleteUserProfile": { + "input": { + "type": "structure", + "required": [ + "IamUserArn" + ], + "members": { + "IamUserArn": {} + } + } + }, + "DeregisterEcsCluster": { + "input": { + "type": "structure", + "required": [ + "EcsClusterArn" + ], + "members": { + "EcsClusterArn": {} + } + } + }, + "DeregisterElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {} + } + } + }, + "DeregisterInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "DeregisterRdsDbInstance": { + "input": { + "type": "structure", + "required": [ + "RdsDbInstanceArn" + ], + "members": { + "RdsDbInstanceArn": {} + } + } + }, + "DeregisterVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {} + } + } + }, + "DescribeAgentVersions": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "ConfigurationManager": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "AgentVersions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Version": {}, + "ConfigurationManager": { + "shape": "Sa" + } + } + } + } + } + } + }, + "DescribeApps": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "AppIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Apps": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AppId": {}, + "StackId": {}, + "Shortname": {}, + "Name": {}, + "Description": {}, + "DataSources": { + "shape": "Si" + }, + "Type": {}, + "AppSource": { + "shape": "Sd" + }, + "Domains": { + "shape": "S3" + }, + "EnableSsl": { + "type": "boolean" + }, + "SslConfiguration": { + "shape": "Sl" + }, + "Attributes": { + "shape": "Sm" + }, + "CreatedAt": {}, + "Environment": { + "shape": "So" + } + } + } + } + } + } + }, + "DescribeCommands": { + "input": { + "type": "structure", + "members": { + "DeploymentId": {}, + "InstanceId": {}, + "CommandIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Commands": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "DeploymentId": {}, + "CreatedAt": {}, + "AcknowledgedAt": {}, + "CompletedAt": {}, + "Status": {}, + "ExitCode": { + "type": "integer" + }, + "LogUrl": {}, + "Type": {} + } + } + } + } + } + }, + "DescribeDeployments": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "AppId": {}, + "DeploymentIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Deployments": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DeploymentId": {}, + "StackId": {}, + "AppId": {}, + "CreatedAt": {}, + "CompletedAt": {}, + "Duration": { + "type": "integer" + }, + "IamUserArn": {}, + "Comment": {}, + "Command": { + "shape": "Ss" + }, + "Status": {}, + "CustomJson": {}, + "InstanceIds": { + "shape": "S3" + } + } + } + } + } + } + }, + "DescribeEcsClusters": { + "input": { + "type": "structure", + "members": { + "EcsClusterArns": { + "shape": "S3" + }, + "StackId": {}, + "NextToken": {}, + "MaxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "EcsClusters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EcsClusterArn": {}, + "EcsClusterName": {}, + "StackId": {}, + "RegisteredAt": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeElasticIps": { + "input": { + "type": "structure", + "members": { + "InstanceId": {}, + "StackId": {}, + "Ips": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ElasticIps": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Ip": {}, + "Name": {}, + "Domain": {}, + "Region": {}, + "InstanceId": {} + } + } + } + } + } + }, + "DescribeElasticLoadBalancers": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "LayerIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ElasticLoadBalancers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ElasticLoadBalancerName": {}, + "Region": {}, + "DnsName": {}, + "StackId": {}, + "LayerId": {}, + "VpcId": {}, + "AvailabilityZones": { + "shape": "S3" + }, + "SubnetIds": { + "shape": "S3" + }, + "Ec2InstanceIds": { + "shape": "S3" + } + } + } + } + } + } + }, + "DescribeInstances": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "LayerId": {}, + "InstanceIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Instances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AgentVersion": {}, + "AmiId": {}, + "Architecture": {}, + "AutoScalingType": {}, + "AvailabilityZone": {}, + "BlockDeviceMappings": { + "shape": "Sz" + }, + "CreatedAt": {}, + "EbsOptimized": { + "type": "boolean" + }, + "Ec2InstanceId": {}, + "EcsClusterArn": {}, + "EcsContainerInstanceArn": {}, + "ElasticIp": {}, + "Hostname": {}, + "InfrastructureClass": {}, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "InstanceId": {}, + "InstanceProfileArn": {}, + "InstanceType": {}, + "LastServiceErrorId": {}, + "LayerIds": { + "shape": "S3" + }, + "Os": {}, + "Platform": {}, + "PrivateDns": {}, + "PrivateIp": {}, + "PublicDns": {}, + "PublicIp": {}, + "RegisteredBy": {}, + "ReportedAgentVersion": {}, + "ReportedOs": { + "type": "structure", + "members": { + "Family": {}, + "Name": {}, + "Version": {} + } + }, + "RootDeviceType": {}, + "RootDeviceVolumeId": {}, + "SecurityGroupIds": { + "shape": "S3" + }, + "SshHostDsaKeyFingerprint": {}, + "SshHostRsaKeyFingerprint": {}, + "SshKeyName": {}, + "StackId": {}, + "Status": {}, + "SubnetId": {}, + "Tenancy": {}, + "VirtualizationType": {} + } + } + } + } + } + }, + "DescribeLayers": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "LayerIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Layers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "LayerId": {}, + "Type": {}, + "Name": {}, + "Shortname": {}, + "Attributes": { + "shape": "S17" + }, + "CustomInstanceProfileArn": {}, + "CustomJson": {}, + "CustomSecurityGroupIds": { + "shape": "S3" + }, + "DefaultSecurityGroupNames": { + "shape": "S3" + }, + "Packages": { + "shape": "S3" + }, + "VolumeConfigurations": { + "shape": "S19" + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "DefaultRecipes": { + "shape": "S1b" + }, + "CustomRecipes": { + "shape": "S1b" + }, + "CreatedAt": {}, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "shape": "S1c" + } + } + } + } + } + } + }, + "DescribeLoadBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "LayerIds" + ], + "members": { + "LayerIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "LoadBasedAutoScalingConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LayerId": {}, + "Enable": { + "type": "boolean" + }, + "UpScaling": { + "shape": "S30" + }, + "DownScaling": { + "shape": "S30" + } + } + } + } + } + } + }, + "DescribeMyUserProfile": { + "output": { + "type": "structure", + "members": { + "UserProfile": { + "type": "structure", + "members": { + "IamUserArn": {}, + "Name": {}, + "SshUsername": {}, + "SshPublicKey": {} + } + } + } + } + }, + "DescribePermissions": { + "input": { + "type": "structure", + "members": { + "IamUserArn": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Permissions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "IamUserArn": {}, + "AllowSsh": { + "type": "boolean" + }, + "AllowSudo": { + "type": "boolean" + }, + "Level": {} + } + } + } + } + } + }, + "DescribeRaidArrays": { + "input": { + "type": "structure", + "members": { + "InstanceId": {}, + "StackId": {}, + "RaidArrayIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "RaidArrays": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RaidArrayId": {}, + "InstanceId": {}, + "Name": {}, + "RaidLevel": { + "type": "integer" + }, + "NumberOfDisks": { + "type": "integer" + }, + "Size": { + "type": "integer" + }, + "Device": {}, + "MountPoint": {}, + "AvailabilityZone": {}, + "CreatedAt": {}, + "StackId": {}, + "VolumeType": {}, + "Iops": { + "type": "integer" + } + } + } + } + } + } + }, + "DescribeRdsDbInstances": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {}, + "RdsDbInstanceArns": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "RdsDbInstances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RdsDbInstanceArn": {}, + "DbInstanceIdentifier": {}, + "DbUser": {}, + "DbPassword": {}, + "Region": {}, + "Address": {}, + "Engine": {}, + "StackId": {}, + "MissingOnRds": { + "type": "boolean" + } + } + } + } + } + } + }, + "DescribeServiceErrors": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "InstanceId": {}, + "ServiceErrorIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ServiceErrors": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ServiceErrorId": {}, + "StackId": {}, + "InstanceId": {}, + "Type": {}, + "Message": {}, + "CreatedAt": {} + } + } + } + } + } + }, + "DescribeStackProvisioningParameters": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "AgentInstallerUrl": {}, + "Parameters": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "DescribeStackSummary": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "StackSummary": { + "type": "structure", + "members": { + "StackId": {}, + "Name": {}, + "Arn": {}, + "LayersCount": { + "type": "integer" + }, + "AppsCount": { + "type": "integer" + }, + "InstancesCount": { + "type": "structure", + "members": { + "Assigning": { + "type": "integer" + }, + "Booting": { + "type": "integer" + }, + "ConnectionLost": { + "type": "integer" + }, + "Deregistering": { + "type": "integer" + }, + "Online": { + "type": "integer" + }, + "Pending": { + "type": "integer" + }, + "Rebooting": { + "type": "integer" + }, + "Registered": { + "type": "integer" + }, + "Registering": { + "type": "integer" + }, + "Requested": { + "type": "integer" + }, + "RunningSetup": { + "type": "integer" + }, + "SetupFailed": { + "type": "integer" + }, + "ShuttingDown": { + "type": "integer" + }, + "StartFailed": { + "type": "integer" + }, + "Stopped": { + "type": "integer" + }, + "Stopping": { + "type": "integer" + }, + "Terminated": { + "type": "integer" + }, + "Terminating": { + "type": "integer" + }, + "Unassigning": { + "type": "integer" + } + } + } + } + } + } + } + }, + "DescribeStacks": { + "input": { + "type": "structure", + "members": { + "StackIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Stacks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "Name": {}, + "Arn": {}, + "Region": {}, + "VpcId": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "CreatedAt": {}, + "DefaultRootDeviceType": {}, + "AgentVersion": {} + } + } + } + } + } + }, + "DescribeTimeBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "InstanceIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "TimeBasedAutoScalingConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {}, + "AutoScalingSchedule": { + "shape": "S40" + } + } + } + } + } + } + }, + "DescribeUserProfiles": { + "input": { + "type": "structure", + "members": { + "IamUserArns": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserProfiles": { + "type": "list", + "member": { + "type": "structure", + "members": { + "IamUserArn": {}, + "Name": {}, + "SshUsername": {}, + "SshPublicKey": {}, + "AllowSelfManagement": { + "type": "boolean" + } + } + } + } + } + } + }, + "DescribeVolumes": { + "input": { + "type": "structure", + "members": { + "InstanceId": {}, + "StackId": {}, + "RaidArrayId": {}, + "VolumeIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Volumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeId": {}, + "Ec2VolumeId": {}, + "Name": {}, + "RaidArrayId": {}, + "InstanceId": {}, + "Status": {}, + "Size": { + "type": "integer" + }, + "Device": {}, + "MountPoint": {}, + "Region": {}, + "AvailabilityZone": {}, + "VolumeType": {}, + "Iops": { + "type": "integer" + } + } + } + } + } + } + }, + "DetachElasticLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "ElasticLoadBalancerName", + "LayerId" + ], + "members": { + "ElasticLoadBalancerName": {}, + "LayerId": {} + } + } + }, + "DisassociateElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {} + } + } + }, + "GetHostnameSuggestion": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {} + } + }, + "output": { + "type": "structure", + "members": { + "LayerId": {}, + "Hostname": {} + } + } + }, + "GrantAccess": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "ValidForInMinutes": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TemporaryCredential": { + "type": "structure", + "members": { + "Username": {}, + "Password": {}, + "ValidForInMinutes": { + "type": "integer" + }, + "InstanceId": {} + } + } + } + } + }, + "RebootInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "RegisterEcsCluster": { + "input": { + "type": "structure", + "required": [ + "EcsClusterArn", + "StackId" + ], + "members": { + "EcsClusterArn": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EcsClusterArn": {} + } + } + }, + "RegisterElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp", + "StackId" + ], + "members": { + "ElasticIp": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ElasticIp": {} + } + } + }, + "RegisterInstance": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {}, + "Hostname": {}, + "PublicIp": {}, + "PrivateIp": {}, + "RsaPublicKey": {}, + "RsaPublicKeyFingerprint": {}, + "InstanceIdentity": { + "type": "structure", + "members": { + "Document": {}, + "Signature": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": {} + } + } + }, + "RegisterRdsDbInstance": { + "input": { + "type": "structure", + "required": [ + "StackId", + "RdsDbInstanceArn", + "DbUser", + "DbPassword" + ], + "members": { + "StackId": {}, + "RdsDbInstanceArn": {}, + "DbUser": {}, + "DbPassword": {} + } + } + }, + "RegisterVolume": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "Ec2VolumeId": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeId": {} + } + } + }, + "SetLoadBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {}, + "Enable": { + "type": "boolean" + }, + "UpScaling": { + "shape": "S30" + }, + "DownScaling": { + "shape": "S30" + } + } + } + }, + "SetPermission": { + "input": { + "type": "structure", + "required": [ + "StackId", + "IamUserArn" + ], + "members": { + "StackId": {}, + "IamUserArn": {}, + "AllowSsh": { + "type": "boolean" + }, + "AllowSudo": { + "type": "boolean" + }, + "Level": {} + } + } + }, + "SetTimeBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "AutoScalingSchedule": { + "shape": "S40" + } + } + } + }, + "StartInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "StartStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + } + }, + "StopInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "StopStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + } + }, + "UnassignInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "UnassignVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {} + } + } + }, + "UpdateApp": { + "input": { + "type": "structure", + "required": [ + "AppId" + ], + "members": { + "AppId": {}, + "Name": {}, + "Description": {}, + "DataSources": { + "shape": "Si" + }, + "Type": {}, + "AppSource": { + "shape": "Sd" + }, + "Domains": { + "shape": "S3" + }, + "EnableSsl": { + "type": "boolean" + }, + "SslConfiguration": { + "shape": "Sl" + }, + "Attributes": { + "shape": "Sm" + }, + "Environment": { + "shape": "So" + } + } + } + }, + "UpdateElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {}, + "Name": {} + } + } + }, + "UpdateInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "LayerIds": { + "shape": "S3" + }, + "InstanceType": {}, + "AutoScalingType": {}, + "Hostname": {}, + "Os": {}, + "AmiId": {}, + "SshKeyName": {}, + "Architecture": {}, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "EbsOptimized": { + "type": "boolean" + }, + "AgentVersion": {} + } + } + }, + "UpdateLayer": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {}, + "Name": {}, + "Shortname": {}, + "Attributes": { + "shape": "S17" + }, + "CustomInstanceProfileArn": {}, + "CustomJson": {}, + "CustomSecurityGroupIds": { + "shape": "S3" + }, + "Packages": { + "shape": "S3" + }, + "VolumeConfigurations": { + "shape": "S19" + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "CustomRecipes": { + "shape": "S1b" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "shape": "S1c" + } + } + } + }, + "UpdateMyUserProfile": { + "input": { + "type": "structure", + "members": { + "SshPublicKey": {} + } + } + }, + "UpdateRdsDbInstance": { + "input": { + "type": "structure", + "required": [ + "RdsDbInstanceArn" + ], + "members": { + "RdsDbInstanceArn": {}, + "DbUser": {}, + "DbPassword": {} + } + } + }, + "UpdateStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {}, + "Name": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "DefaultRootDeviceType": {}, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "AgentVersion": {} + } + } + }, + "UpdateUserProfile": { + "input": { + "type": "structure", + "required": [ + "IamUserArn" + ], + "members": { + "IamUserArn": {}, + "SshUsername": {}, + "SshPublicKey": {}, + "AllowSelfManagement": { + "type": "boolean" + } + } + } + }, + "UpdateVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {}, + "Name": {}, + "MountPoint": {} + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": {} + }, + "S8": { + "type": "map", + "key": {}, + "value": {} + }, + "Sa": { + "type": "structure", + "members": { + "Name": {}, + "Version": {} + } + }, + "Sb": { + "type": "structure", + "members": { + "ManageBerkshelf": { + "type": "boolean" + }, + "BerkshelfVersion": {} + } + }, + "Sd": { + "type": "structure", + "members": { + "Type": {}, + "Url": {}, + "Username": {}, + "Password": {}, + "SshKey": {}, + "Revision": {} + } + }, + "Si": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "Arn": {}, + "DatabaseName": {} + } + } + }, + "Sl": { + "type": "structure", + "required": [ + "Certificate", + "PrivateKey" + ], + "members": { + "Certificate": {}, + "PrivateKey": {}, + "Chain": {} + } + }, + "Sm": { + "type": "map", + "key": {}, + "value": {} + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {}, + "Secure": { + "type": "boolean" + } + } + } + }, + "Ss": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Args": { + "type": "map", + "key": {}, + "value": { + "shape": "S3" + } + } + } + }, + "Sz": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DeviceName": {}, + "NoDevice": {}, + "VirtualName": {}, + "Ebs": { + "type": "structure", + "members": { + "SnapshotId": {}, + "Iops": { + "type": "integer" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": {}, + "DeleteOnTermination": { + "type": "boolean" + } + } + } + } + } + }, + "S17": { + "type": "map", + "key": {}, + "value": {} + }, + "S19": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "MountPoint", + "NumberOfDisks", + "Size" + ], + "members": { + "MountPoint": {}, + "RaidLevel": { + "type": "integer" + }, + "NumberOfDisks": { + "type": "integer" + }, + "Size": { + "type": "integer" + }, + "VolumeType": {}, + "Iops": { + "type": "integer" + } + } + } + }, + "S1b": { + "type": "structure", + "members": { + "Setup": { + "shape": "S3" + }, + "Configure": { + "shape": "S3" + }, + "Deploy": { + "shape": "S3" + }, + "Undeploy": { + "shape": "S3" + }, + "Shutdown": { + "shape": "S3" + } + } + }, + "S1c": { + "type": "structure", + "members": { + "Shutdown": { + "type": "structure", + "members": { + "ExecutionTimeout": { + "type": "integer" + }, + "DelayUntilElbConnectionsDrained": { + "type": "boolean" + } + } + } + } + }, + "S30": { + "type": "structure", + "members": { + "InstanceCount": { + "type": "integer" + }, + "ThresholdsWaitTime": { + "type": "integer" + }, + "IgnoreMetricsTime": { + "type": "integer" + }, + "CpuThreshold": { + "type": "double" + }, + "MemoryThreshold": { + "type": "double" + }, + "LoadThreshold": { + "type": "double" + }, + "Alarms": { + "shape": "S3" + } + } + }, + "S40": { + "type": "structure", + "members": { + "Monday": { + "shape": "S41" + }, + "Tuesday": { + "shape": "S41" + }, + "Wednesday": { + "shape": "S41" + }, + "Thursday": { + "shape": "S41" + }, + "Friday": { + "shape": "S41" + }, + "Saturday": { + "shape": "S41" + }, + "Sunday": { + "shape": "S41" + } + } + }, + "S41": { + "type": "map", + "key": {}, + "value": {} + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json b/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json new file mode 100644 index 0000000..3825e7d --- /dev/null +++ b/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json @@ -0,0 +1,55 @@ +{ + "pagination": { + "DescribeApps": { + "result_key": "Apps" + }, + "DescribeCommands": { + "result_key": "Commands" + }, + "DescribeDeployments": { + "result_key": "Deployments" + }, + "DescribeEcsClusters": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "EcsClusters" + }, + "DescribeElasticIps": { + "result_key": "ElasticIps" + }, + "DescribeElasticLoadBalancers": { + "result_key": "ElasticLoadBalancers" + }, + "DescribeInstances": { + "result_key": "Instances" + }, + "DescribeLayers": { + "result_key": "Layers" + }, + "DescribeLoadBasedAutoScaling": { + "result_key": "LoadBasedAutoScalingConfigurations" + }, + "DescribePermissions": { + "result_key": "Permissions" + }, + "DescribeRaidArrays": { + "result_key": "RaidArrays" + }, + "DescribeServiceErrors": { + "result_key": "ServiceErrors" + }, + "DescribeStacks": { + "result_key": "Stacks" + }, + "DescribeTimeBasedAutoScaling": { + "result_key": "TimeBasedAutoScalingConfigurations" + }, + "DescribeUserProfiles": { + "result_key": "UserProfiles" + }, + "DescribeVolumes": { + "result_key": "Volumes" + } + } +} diff --git a/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json b/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json new file mode 100644 index 0000000..8daa084 --- /dev/null +++ b/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json @@ -0,0 +1,295 @@ +{ + "version": 2, + "waiters": { + "AppExists": { + "delay": 1, + "operation": "DescribeApps", + "maxAttempts": 40, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "matcher": "status", + "expected": 400, + "state": "failure" + } + ] + }, + "DeploymentSuccessful": { + "delay": 15, + "operation": "DescribeDeployments", + "maxAttempts": 40, + "description": "Wait until a deployment has completed successfully", + "acceptors": [ + { + "expected": "successful", + "matcher": "pathAll", + "state": "success", + "argument": "Deployments[].Status" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Deployments[].Status" + } + ] + }, + "InstanceOnline": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is online.", + "acceptors": [ + { + "expected": "online", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "shutting_down", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "start_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopped", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminating", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stop_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + }, + "InstanceRegistered": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is registered.", + "acceptors": [ + { + "expected": "registered", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "shutting_down", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopped", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminating", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stop_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + }, + "InstanceStopped": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is stopped.", + "acceptors": [ + { + "expected": "stopped", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "booting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "online", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "requested", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "running_setup", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "start_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stop_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + }, + "InstanceTerminated": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is terminated.", + "acceptors": [ + { + "expected": "terminated", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "ResourceNotFoundException", + "matcher": "error", + "state": "success" + }, + { + "expected": "booting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "online", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "requested", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "running_setup", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "start_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/rds-2013-01-10.min.json b/node_modules/aws-sdk/apis/rds-2013-01-10.min.json new file mode 100644 index 0000000..7de129f --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-01-10.min.json @@ -0,0 +1,1895 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-01-10", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "AllocatedStorage", + "DBInstanceClass", + "Engine", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "S1c" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1i" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1o" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S25" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S25", + "locationName": "CharacterSet" + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "S1c", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2f" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S11", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2f" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {} + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S1o", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S14", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S3m", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S3o" + } + }, + "wrapper": true + } + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {} + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S2f" + } + } + }, + "output": { + "shape": "S3z", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1i" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sp" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sq" + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1o" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S3m" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2f" + } + } + }, + "output": { + "shape": "S3z", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "Id": {}, + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + } + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "Sv" + }, + "VpcSecurityGroups": { + "shape": "Sx" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S11" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMembership": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + } + }, + "wrapper": true + }, + "Sv": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "Sx": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S11": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S14" + }, + "SubnetStatus": {} + } + } + } + }, + "wrapper": true + }, + "S14": { + "type": "structure", + "members": { + "Name": {}, + "ProvisionedIopsCapable": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S1c": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1i": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1o": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sv" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sx" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {} + }, + "wrapper": true + }, + "S25": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S2f": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S3m": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S3o" + } + }, + "wrapper": true + }, + "S3o": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S3z": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json b/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json new file mode 100644 index 0000000..e70d762 --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json @@ -0,0 +1,97 @@ +{ + "pagination": { + "DescribeDBEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBEngineVersions" + }, + "DescribeDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBInstances" + }, + "DescribeDBParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBParameterGroups" + }, + "DescribeDBParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeDBSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSecurityGroups" + }, + "DescribeDBSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSnapshots" + }, + "DescribeDBSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeOptionGroupOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupOptions" + }, + "DescribeOptionGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupsList" + }, + "DescribeOrderableDBInstanceOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableDBInstanceOptions" + }, + "DescribeReservedDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstances" + }, + "DescribeReservedDBInstancesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstancesOfferings" + }, + "ListTagsForResource": { + "result_key": "TagList" + } + } +} diff --git a/node_modules/aws-sdk/apis/rds-2013-02-12.min.json b/node_modules/aws-sdk/apis/rds-2013-02-12.min.json new file mode 100644 index 0000000..c4d5920 --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-02-12.min.json @@ -0,0 +1,2027 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-02-12", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "AllocatedStorage", + "DBInstanceClass", + "Engine", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "S1d" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1j" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1p" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S28" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S28", + "locationName": "CharacterSet" + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBLogFiles": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "FilenameContains": {}, + "FileLastWritten": { + "type": "long" + }, + "FileSize": { + "type": "long" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBLogFilesResult", + "type": "structure", + "members": { + "DescribeDBLogFiles": { + "type": "list", + "member": { + "locationName": "DescribeDBLogFilesDetails", + "type": "structure", + "members": { + "LogFileName": {}, + "LastWritten": { + "type": "long" + }, + "Size": { + "type": "long" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "S1d", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2n" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S11", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2n" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {} + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + }, + "Persistent": { + "type": "boolean" + }, + "OptionGroupOptionSettings": { + "type": "list", + "member": { + "locationName": "OptionGroupOptionSetting", + "type": "structure", + "members": { + "SettingName": {}, + "SettingDescription": {}, + "DefaultValue": {}, + "ApplyType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + } + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S1p", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S14", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S3w", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S3y" + } + }, + "wrapper": true + } + } + } + } + }, + "DownloadDBLogFilePortion": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "LogFileName" + ], + "members": { + "DBInstanceIdentifier": {}, + "LogFileName": {}, + "Marker": {}, + "NumberOfLines": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DownloadDBLogFilePortionResult", + "type": "structure", + "members": { + "LogFileData": {}, + "Marker": {}, + "AdditionalDataPending": { + "type": "boolean" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {} + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S2n" + } + } + }, + "output": { + "shape": "S4b", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1j" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sp" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sq" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1t", + "locationName": "OptionSetting" + } + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1p" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S3w" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2n" + } + } + }, + "output": { + "shape": "S4b", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "Sv" + }, + "VpcSecurityGroups": { + "shape": "Sx" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S11" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "OptionGroupMembership", + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + } + }, + "wrapper": true + }, + "Sv": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "Sx": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S11": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S14" + }, + "SubnetStatus": {} + } + } + } + }, + "wrapper": true + }, + "S14": { + "type": "structure", + "members": { + "Name": {}, + "ProvisionedIopsCapable": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S1d": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1j": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1p": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Persistent": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1t", + "locationName": "OptionSetting" + } + }, + "DBSecurityGroupMemberships": { + "shape": "Sv" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sx" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {} + }, + "wrapper": true + }, + "S1t": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "DefaultValue": {}, + "Description": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "IsCollection": { + "type": "boolean" + } + } + }, + "S28": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S2n": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S3w": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S3y" + } + }, + "wrapper": true + }, + "S3y": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S4b": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json b/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json new file mode 100644 index 0000000..662845c --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json @@ -0,0 +1,110 @@ +{ + "pagination": { + "DescribeDBEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBEngineVersions" + }, + "DescribeDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBInstances" + }, + "DescribeDBLogFiles": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DescribeDBLogFiles" + }, + "DescribeDBParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBParameterGroups" + }, + "DescribeDBParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeDBSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSecurityGroups" + }, + "DescribeDBSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSnapshots" + }, + "DescribeDBSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeOptionGroupOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupOptions" + }, + "DescribeOptionGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupsList" + }, + "DescribeOrderableDBInstanceOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableDBInstanceOptions" + }, + "DescribeReservedDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstances" + }, + "DescribeReservedDBInstancesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstancesOfferings" + }, + "DownloadDBLogFilePortion": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "NumberOfLines", + "more_results": "AdditionalDataPending", + "result_key": "LogFileData" + }, + "ListTagsForResource": { + "result_key": "TagList" + } + } +} diff --git a/node_modules/aws-sdk/apis/rds-2013-09-09.min.json b/node_modules/aws-sdk/apis/rds-2013-09-09.min.json new file mode 100644 index 0000000..69fec9a --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-09-09.min.json @@ -0,0 +1,2163 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-09-09", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "AllocatedStorage", + "DBInstanceClass", + "Engine", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "DBSubnetGroupName": {} + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "S1f" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1l" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1r" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S2d" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S2d", + "locationName": "CharacterSet" + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBLogFiles": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "FilenameContains": {}, + "FileLastWritten": { + "type": "long" + }, + "FileSize": { + "type": "long" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBLogFilesResult", + "type": "structure", + "members": { + "DescribeDBLogFiles": { + "type": "list", + "member": { + "locationName": "DescribeDBLogFilesDetails", + "type": "structure", + "members": { + "LogFileName": {}, + "LastWritten": { + "type": "long" + }, + "Size": { + "type": "long" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "S1f", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2s" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S11", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2s" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {}, + "Filters": { + "shape": "S27" + } + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + }, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "OptionGroupOptionSettings": { + "type": "list", + "member": { + "locationName": "OptionGroupOptionSetting", + "type": "structure", + "members": { + "SettingName": {}, + "SettingDescription": {}, + "DefaultValue": {}, + "ApplyType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + } + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Filters": { + "shape": "S27" + }, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S1r", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S14", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S41", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S43" + } + }, + "wrapper": true + } + } + } + } + }, + "DownloadDBLogFilePortion": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "LogFileName" + ], + "members": { + "DBInstanceIdentifier": {}, + "LogFileName": {}, + "Marker": {}, + "NumberOfLines": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DownloadDBLogFilePortionResult", + "type": "structure", + "members": { + "LogFileData": {}, + "Marker": {}, + "AdditionalDataPending": { + "type": "boolean" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {}, + "Filters": { + "shape": "S27" + } + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S2s" + } + } + }, + "output": { + "shape": "S4g", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1l" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sp" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sq" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1v", + "locationName": "OptionSetting" + } + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1r" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S41" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2s" + } + } + }, + "output": { + "shape": "S4g", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PercentProgress": { + "type": "integer" + }, + "SourceRegion": {} + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "Sv" + }, + "VpcSecurityGroups": { + "shape": "Sx" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S11" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "OptionGroupMembership", + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "StatusInfos": { + "type": "list", + "member": { + "locationName": "DBInstanceStatusInfo", + "type": "structure", + "members": { + "StatusType": {}, + "Normal": { + "type": "boolean" + }, + "Status": {}, + "Message": {} + } + } + } + }, + "wrapper": true + }, + "Sv": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "Sx": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S11": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S14" + }, + "SubnetStatus": {} + } + } + } + }, + "wrapper": true + }, + "S14": { + "type": "structure", + "members": { + "Name": {}, + "ProvisionedIopsCapable": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S1f": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1l": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1r": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1v", + "locationName": "OptionSetting" + } + }, + "DBSecurityGroupMemberships": { + "shape": "Sv" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sx" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {} + }, + "wrapper": true + }, + "S1v": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "DefaultValue": {}, + "Description": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "IsCollection": { + "type": "boolean" + } + } + }, + "S27": { + "type": "list", + "member": { + "locationName": "Filter", + "type": "structure", + "required": [ + "Name", + "Values" + ], + "members": { + "Name": {}, + "Values": { + "type": "list", + "member": { + "locationName": "Value" + } + } + } + } + }, + "S2d": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S2s": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S41": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S43" + } + }, + "wrapper": true + }, + "S43": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S4g": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json b/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json new file mode 100644 index 0000000..662845c --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json @@ -0,0 +1,110 @@ +{ + "pagination": { + "DescribeDBEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBEngineVersions" + }, + "DescribeDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBInstances" + }, + "DescribeDBLogFiles": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DescribeDBLogFiles" + }, + "DescribeDBParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBParameterGroups" + }, + "DescribeDBParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeDBSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSecurityGroups" + }, + "DescribeDBSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSnapshots" + }, + "DescribeDBSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeOptionGroupOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupOptions" + }, + "DescribeOptionGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupsList" + }, + "DescribeOrderableDBInstanceOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableDBInstanceOptions" + }, + "DescribeReservedDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstances" + }, + "DescribeReservedDBInstancesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstancesOfferings" + }, + "DownloadDBLogFilePortion": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "NumberOfLines", + "more_results": "AdditionalDataPending", + "result_key": "LogFileData" + }, + "ListTagsForResource": { + "result_key": "TagList" + } + } +} diff --git a/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json b/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json new file mode 100644 index 0000000..b015007 --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json @@ -0,0 +1,97 @@ +{ + "version": 2, + "waiters": { + "DBInstanceAvailable": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-restore", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-parameters", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-parameters", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-restore", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + }, + "DBInstanceDeleted": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "creating", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "modifying", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "resetting-master-credentials", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/rds-2014-10-31.min.json b/node_modules/aws-sdk/apis/rds-2014-10-31.min.json new file mode 100644 index 0000000..da91c93 --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2014-10-31.min.json @@ -0,0 +1,3508 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-10-31", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "ApplyPendingMaintenanceAction": { + "input": { + "type": "structure", + "required": [ + "ResourceIdentifier", + "ApplyAction", + "OptInType" + ], + "members": { + "ResourceIdentifier": {}, + "ApplyAction": {}, + "OptInType": {} + } + }, + "output": { + "resultWrapper": "ApplyPendingMaintenanceActionResult", + "type": "structure", + "members": { + "ResourcePendingMaintenanceActions": { + "shape": "Sd" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sj" + } + } + } + }, + "CopyDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "SourceDBClusterParameterGroupIdentifier", + "TargetDBClusterParameterGroupIdentifier", + "TargetDBClusterParameterGroupDescription" + ], + "members": { + "SourceDBClusterParameterGroupIdentifier": {}, + "TargetDBClusterParameterGroupIdentifier": {}, + "TargetDBClusterParameterGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBClusterParameterGroupResult", + "type": "structure", + "members": { + "DBClusterParameterGroup": { + "shape": "Sq" + } + } + } + }, + "CopyDBClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBClusterSnapshotIdentifier", + "TargetDBClusterSnapshotIdentifier" + ], + "members": { + "SourceDBClusterSnapshotIdentifier": {}, + "TargetDBClusterSnapshotIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBClusterSnapshotResult", + "type": "structure", + "members": { + "DBClusterSnapshot": { + "shape": "St" + } + } + } + }, + "CopyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "SourceDBParameterGroupIdentifier", + "TargetDBParameterGroupIdentifier", + "TargetDBParameterGroupDescription" + ], + "members": { + "SourceDBParameterGroupIdentifier": {}, + "TargetDBParameterGroupIdentifier": {}, + "TargetDBParameterGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "Sy" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S9" + }, + "CopyTags": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "S12" + } + } + } + }, + "CopyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "SourceOptionGroupIdentifier", + "TargetOptionGroupIdentifier", + "TargetOptionGroupDescription" + ], + "members": { + "SourceOptionGroupIdentifier": {}, + "TargetOptionGroupIdentifier": {}, + "TargetOptionGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S16" + } + } + } + }, + "CreateDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "Engine" + ], + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "CharacterSetName": {}, + "DatabaseName": {}, + "DBClusterIdentifier": {}, + "DBClusterParameterGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "DBSubnetGroupName": {}, + "Engine": {}, + "EngineVersion": {}, + "Port": { + "type": "integer" + }, + "MasterUsername": {}, + "MasterUserPassword": {}, + "OptionGroupName": {}, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "ReplicationSourceIdentifier": {}, + "Tags": { + "shape": "S9" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {} + } + }, + "output": { + "resultWrapper": "CreateDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "CreateDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBClusterParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBClusterParameterGroupResult", + "type": "structure", + "members": { + "DBClusterParameterGroup": { + "shape": "Sq" + } + } + } + }, + "CreateDBClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier", + "DBClusterIdentifier" + ], + "members": { + "DBClusterSnapshotIdentifier": {}, + "DBClusterIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBClusterSnapshotResult", + "type": "structure", + "members": { + "DBClusterSnapshot": { + "shape": "St" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBInstanceClass", + "Engine" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "S1t" + }, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "DBClusterIdentifier": {}, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "Domain": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "MonitoringRoleArn": {}, + "DomainIAMRoleName": {}, + "PromotionTier": { + "type": "integer" + }, + "Timezone": {} + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "DBSubnetGroupName": {}, + "StorageType": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "MonitoringRoleArn": {} + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "Sy" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sj" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "S12" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S2k" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S1z" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S16" + } + } + } + }, + "DeleteDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "DeleteDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName" + ], + "members": { + "DBClusterParameterGroupName": {} + } + } + }, + "DeleteDBClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier" + ], + "members": { + "DBClusterSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBClusterSnapshotResult", + "type": "structure", + "members": { + "DBClusterSnapshot": { + "shape": "St" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "S12" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeAccountAttributes": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "DescribeAccountAttributesResult", + "type": "structure", + "members": { + "AccountQuotas": { + "type": "list", + "member": { + "locationName": "AccountQuota", + "type": "structure", + "members": { + "AccountQuotaName": {}, + "Used": { + "type": "long" + }, + "Max": { + "type": "long" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeCertificates": { + "input": { + "type": "structure", + "members": { + "CertificateIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCertificatesResult", + "type": "structure", + "members": { + "Certificates": { + "type": "list", + "member": { + "locationName": "Certificate", + "type": "structure", + "members": { + "CertificateIdentifier": {}, + "CertificateType": {}, + "Thumbprint": {}, + "ValidFrom": { + "type": "timestamp" + }, + "ValidTill": { + "type": "timestamp" + }, + "CertificateArn": {} + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeDBClusterParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBClusterParameterGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClusterParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBClusterParameterGroups": { + "type": "list", + "member": { + "shape": "Sq", + "locationName": "DBClusterParameterGroup" + } + } + } + } + }, + "DescribeDBClusterParameters": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName" + ], + "members": { + "DBClusterParameterGroupName": {}, + "Source": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClusterParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S3m" + }, + "Marker": {} + } + } + }, + "DescribeDBClusterSnapshotAttributes": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier" + ], + "members": { + "DBClusterSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClusterSnapshotAttributesResult", + "type": "structure", + "members": { + "DBClusterSnapshotAttributesResult": { + "shape": "S3r" + } + } + } + }, + "DescribeDBClusterSnapshots": { + "input": { + "type": "structure", + "members": { + "DBClusterIdentifier": {}, + "DBClusterSnapshotIdentifier": {}, + "SnapshotType": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "IncludeShared": { + "type": "boolean" + }, + "IncludePublic": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBClusterSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBClusterSnapshots": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBClusterSnapshot" + } + } + } + } + }, + "DescribeDBClusters": { + "input": { + "type": "structure", + "members": { + "DBClusterIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClustersResult", + "type": "structure", + "members": { + "Marker": {}, + "DBClusters": { + "type": "list", + "member": { + "shape": "S1i", + "locationName": "DBCluster" + } + } + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + }, + "ListSupportedTimezones": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S45" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S45", + "locationName": "CharacterSet" + } + }, + "ValidUpgradeTarget": { + "type": "list", + "member": { + "locationName": "UpgradeTarget", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "Description": {}, + "AutoUpgrade": { + "type": "boolean" + }, + "IsMajorVersionUpgrade": { + "type": "boolean" + } + } + } + }, + "SupportedTimezones": { + "type": "list", + "member": { + "locationName": "Timezone", + "type": "structure", + "members": { + "TimezoneName": {} + } + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "S1v", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBLogFiles": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "FilenameContains": {}, + "FileLastWritten": { + "type": "long" + }, + "FileSize": { + "type": "long" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBLogFilesResult", + "type": "structure", + "members": { + "DescribeDBLogFiles": { + "type": "list", + "member": { + "locationName": "DescribeDBLogFilesDetails", + "type": "structure", + "members": { + "LogFileName": {}, + "LastWritten": { + "type": "long" + }, + "Size": { + "type": "long" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "Sy", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S3m" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sj", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshotAttributes": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotAttributesResult", + "type": "structure", + "members": { + "DBSnapshotAttributesResult": { + "shape": "S4s" + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "IncludeShared": { + "type": "boolean" + }, + "IncludePublic": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "S12", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S1z", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultClusterParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultClusterParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "shape": "S53" + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "shape": "S53" + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {}, + "Filters": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + }, + "SourceArn": {} + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + }, + "OptionsConflictsWith": { + "type": "list", + "member": { + "locationName": "OptionConflictName" + } + }, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "OptionGroupOptionSettings": { + "type": "list", + "member": { + "locationName": "OptionGroupOptionSetting", + "type": "structure", + "members": { + "SettingName": {}, + "SettingDescription": {}, + "DefaultValue": {}, + "ApplyType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + } + } + } + }, + "OptionGroupOptionVersions": { + "type": "list", + "member": { + "locationName": "OptionVersion", + "type": "structure", + "members": { + "Version": {}, + "IsDefault": { + "type": "boolean" + } + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S16", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S22", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + }, + "SupportsStorageEncryption": { + "type": "boolean" + }, + "StorageType": {}, + "SupportsIops": { + "type": "boolean" + }, + "SupportsEnhancedMonitoring": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribePendingMaintenanceActions": { + "input": { + "type": "structure", + "members": { + "ResourceIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "Marker": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribePendingMaintenanceActionsResult", + "type": "structure", + "members": { + "PendingMaintenanceActions": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "ResourcePendingMaintenanceActions" + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S66", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S68" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeSourceRegions": { + "input": { + "type": "structure", + "members": { + "RegionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "Filters": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "DescribeSourceRegionsResult", + "type": "structure", + "members": { + "Marker": {}, + "SourceRegions": { + "type": "list", + "member": { + "locationName": "SourceRegion", + "type": "structure", + "members": { + "RegionName": {}, + "Endpoint": {}, + "Status": {} + } + } + } + } + } + }, + "DownloadDBLogFilePortion": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "LogFileName" + ], + "members": { + "DBInstanceIdentifier": {}, + "LogFileName": {}, + "Marker": {}, + "NumberOfLines": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DownloadDBLogFilePortionResult", + "type": "structure", + "members": { + "LogFileData": {}, + "Marker": {}, + "AdditionalDataPending": { + "type": "boolean" + } + } + } + }, + "FailoverDBCluster": { + "input": { + "type": "structure", + "members": { + "DBClusterIdentifier": {}, + "TargetDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "FailoverDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {}, + "Filters": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {}, + "NewDBClusterIdentifier": {}, + "ApplyImmediately": { + "type": "boolean" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBClusterParameterGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "Port": { + "type": "integer" + }, + "MasterUserPassword": {}, + "OptionGroupName": {}, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {} + } + }, + "output": { + "resultWrapper": "ModifyDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "ModifyDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName", + "Parameters" + ], + "members": { + "DBClusterParameterGroupName": {}, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6r", + "resultWrapper": "ModifyDBClusterParameterGroupResult" + } + }, + "ModifyDBClusterSnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier", + "AttributeName" + ], + "members": { + "DBClusterSnapshotIdentifier": {}, + "AttributeName": {}, + "ValuesToAdd": { + "shape": "S3u" + }, + "ValuesToRemove": { + "shape": "S3u" + } + } + }, + "output": { + "resultWrapper": "ModifyDBClusterSnapshotAttributeResult", + "type": "structure", + "members": { + "DBClusterSnapshotAttributesResult": { + "shape": "S3r" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSubnetGroupName": {}, + "DBSecurityGroups": { + "shape": "S1t" + }, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {}, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "CACertificateIdentifier": {}, + "Domain": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "DBPortNumber": { + "type": "integer" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "MonitoringRoleArn": {}, + "DomainIAMRoleName": {}, + "PromotionTier": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6x", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "AttributeName" + ], + "members": { + "DBSnapshotIdentifier": {}, + "AttributeName": {}, + "ValuesToAdd": { + "shape": "S3u" + }, + "ValuesToRemove": { + "shape": "S3u" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSnapshotAttributeResult", + "type": "structure", + "members": { + "DBSnapshotAttributesResult": { + "shape": "S4s" + } + } + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S1z" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "OptionVersion": {}, + "DBSecurityGroupMemberships": { + "shape": "S1t" + }, + "VpcSecurityGroupMemberships": { + "shape": "S1g" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1a", + "locationName": "OptionSetting" + } + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S16" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "PromoteReadReplicaDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S66" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName" + ], + "members": { + "DBClusterParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6r", + "resultWrapper": "ResetDBClusterParameterGroupResult" + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6x", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBClusterFromS3": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "Engine", + "MasterUsername", + "MasterUserPassword", + "SourceEngine", + "SourceEngineVersion", + "S3BucketName", + "S3IngestionRoleArn" + ], + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "CharacterSetName": {}, + "DatabaseName": {}, + "DBClusterIdentifier": {}, + "DBClusterParameterGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "DBSubnetGroupName": {}, + "Engine": {}, + "EngineVersion": {}, + "Port": { + "type": "integer" + }, + "MasterUsername": {}, + "MasterUserPassword": {}, + "OptionGroupName": {}, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "Tags": { + "shape": "S9" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "SourceEngine": {}, + "SourceEngineVersion": {}, + "S3BucketName": {}, + "S3Prefix": {}, + "S3IngestionRoleArn": {} + } + }, + "output": { + "resultWrapper": "RestoreDBClusterFromS3Result", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "RestoreDBClusterFromSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "SnapshotIdentifier", + "Engine" + ], + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "DBClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "Engine": {}, + "EngineVersion": {}, + "Port": { + "type": "integer" + }, + "DBSubnetGroupName": {}, + "DatabaseName": {}, + "OptionGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "Tags": { + "shape": "S9" + }, + "KmsKeyId": {} + } + }, + "output": { + "resultWrapper": "RestoreDBClusterFromSnapshotResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "RestoreDBClusterToPointInTime": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "SourceDBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {}, + "SourceDBClusterIdentifier": {}, + "RestoreToTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "DBSubnetGroupName": {}, + "OptionGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "Tags": { + "shape": "S9" + }, + "KmsKeyId": {} + } + }, + "output": { + "resultWrapper": "RestoreDBClusterToPointInTimeResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "Tags": { + "shape": "S9" + }, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "Domain": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "DomainIAMRoleName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "Domain": {}, + "DomainIAMRoleName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sj" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + }, + "EventSubscriptionArn": {} + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "ResourceIdentifier": {}, + "PendingMaintenanceActionDetails": { + "type": "list", + "member": { + "locationName": "PendingMaintenanceAction", + "type": "structure", + "members": { + "Action": {}, + "AutoAppliedAfterDate": { + "type": "timestamp" + }, + "ForcedApplyDate": { + "type": "timestamp" + }, + "OptInStatus": {}, + "CurrentApplyDate": { + "type": "timestamp" + }, + "Description": {} + } + } + } + }, + "wrapper": true + }, + "Sj": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + }, + "DBSecurityGroupArn": {} + }, + "wrapper": true + }, + "Sq": { + "type": "structure", + "members": { + "DBClusterParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "DBClusterParameterGroupArn": {} + }, + "wrapper": true + }, + "St": { + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "DBClusterSnapshotIdentifier": {}, + "DBClusterIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "VpcId": {}, + "ClusterCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "PercentProgress": { + "type": "integer" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DBClusterSnapshotArn": {} + }, + "wrapper": true + }, + "Su": { + "type": "list", + "member": { + "locationName": "AvailabilityZone" + } + }, + "Sy": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "DBParameterGroupArn": {} + }, + "wrapper": true + }, + "S12": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PercentProgress": { + "type": "integer" + }, + "SourceRegion": {}, + "SourceDBSnapshotIdentifier": {}, + "StorageType": {}, + "TdeCredentialArn": {}, + "Encrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DBSnapshotArn": {}, + "Timezone": {} + }, + "wrapper": true + }, + "S16": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "OptionVersion": {}, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1a", + "locationName": "OptionSetting" + } + }, + "DBSecurityGroupMemberships": { + "shape": "S1b" + }, + "VpcSecurityGroupMemberships": { + "shape": "S1d" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {}, + "OptionGroupArn": {} + }, + "wrapper": true + }, + "S1a": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "DefaultValue": {}, + "Description": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "IsCollection": { + "type": "boolean" + } + } + }, + "S1b": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "S1d": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S1g": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "S1i": { + "type": "structure", + "members": { + "AllocatedStorage": { + "type": "integer" + }, + "AvailabilityZones": { + "shape": "Su" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "CharacterSetName": {}, + "DatabaseName": {}, + "DBClusterIdentifier": {}, + "DBClusterParameterGroup": {}, + "DBSubnetGroup": {}, + "Status": {}, + "PercentProgress": {}, + "EarliestRestorableTime": { + "type": "timestamp" + }, + "Endpoint": {}, + "ReaderEndpoint": {}, + "Engine": {}, + "EngineVersion": {}, + "LatestRestorableTime": { + "type": "timestamp" + }, + "Port": { + "type": "integer" + }, + "MasterUsername": {}, + "DBClusterOptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "DBClusterOptionGroup", + "type": "structure", + "members": { + "DBClusterOptionGroupName": {}, + "Status": {} + } + } + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "ReplicationSourceIdentifier": {}, + "ReadReplicaIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaIdentifier" + } + }, + "DBClusterMembers": { + "type": "list", + "member": { + "locationName": "DBClusterMember", + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "IsClusterWriter": { + "type": "boolean" + }, + "DBClusterParameterGroupStatus": {}, + "PromotionTier": { + "type": "integer" + } + }, + "wrapper": true + } + }, + "VpcSecurityGroups": { + "shape": "S1d" + }, + "HostedZoneId": {}, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DbClusterResourceId": {}, + "DBClusterArn": {} + }, + "wrapper": true + }, + "S1t": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "S1v": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + }, + "HostedZoneId": {} + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "S1b" + }, + "VpcSecurityGroups": { + "shape": "S1d" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S1z" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {}, + "StorageType": {}, + "CACertificateIdentifier": {}, + "DBSubnetGroupName": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "OptionGroupMembership", + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "StatusInfos": { + "type": "list", + "member": { + "locationName": "DBInstanceStatusInfo", + "type": "structure", + "members": { + "StatusType": {}, + "Normal": { + "type": "boolean" + }, + "Status": {}, + "Message": {} + } + } + }, + "StorageType": {}, + "TdeCredentialArn": {}, + "DbInstancePort": { + "type": "integer" + }, + "DBClusterIdentifier": {}, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DbiResourceId": {}, + "CACertificateIdentifier": {}, + "DomainMemberships": { + "type": "list", + "member": { + "locationName": "DomainMembership", + "type": "structure", + "members": { + "Domain": {}, + "Status": {}, + "FQDN": {}, + "IAMRoleName": {} + } + } + }, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "EnhancedMonitoringResourceArn": {}, + "MonitoringRoleArn": {}, + "PromotionTier": { + "type": "integer" + }, + "DBInstanceArn": {}, + "Timezone": {} + }, + "wrapper": true + }, + "S1z": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S22" + }, + "SubnetStatus": {} + } + } + }, + "DBSubnetGroupArn": {} + }, + "wrapper": true + }, + "S22": { + "type": "structure", + "members": { + "Name": {} + }, + "wrapper": true + }, + "S2k": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S3b": { + "type": "list", + "member": { + "locationName": "Filter", + "type": "structure", + "required": [ + "Name", + "Values" + ], + "members": { + "Name": {}, + "Values": { + "type": "list", + "member": { + "locationName": "Value" + } + } + } + } + }, + "S3m": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S3r": { + "type": "structure", + "members": { + "DBClusterSnapshotIdentifier": {}, + "DBClusterSnapshotAttributes": { + "type": "list", + "member": { + "locationName": "DBClusterSnapshotAttribute", + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValues": { + "shape": "S3u" + } + } + } + } + }, + "wrapper": true + }, + "S3u": { + "type": "list", + "member": { + "locationName": "AttributeValue" + } + }, + "S45": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S4s": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBSnapshotAttributes": { + "type": "list", + "member": { + "locationName": "DBSnapshotAttribute", + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValues": { + "shape": "S3u" + } + }, + "wrapper": true + } + } + }, + "wrapper": true + }, + "S53": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S3m" + } + }, + "wrapper": true + }, + "S66": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S68" + }, + "ReservedDBInstanceArn": {} + }, + "wrapper": true + }, + "S68": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S6r": { + "type": "structure", + "members": { + "DBClusterParameterGroupName": {} + } + }, + "S6x": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json b/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json new file mode 100644 index 0000000..662845c --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json @@ -0,0 +1,110 @@ +{ + "pagination": { + "DescribeDBEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBEngineVersions" + }, + "DescribeDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBInstances" + }, + "DescribeDBLogFiles": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DescribeDBLogFiles" + }, + "DescribeDBParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBParameterGroups" + }, + "DescribeDBParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeDBSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSecurityGroups" + }, + "DescribeDBSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSnapshots" + }, + "DescribeDBSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeOptionGroupOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupOptions" + }, + "DescribeOptionGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupsList" + }, + "DescribeOrderableDBInstanceOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableDBInstanceOptions" + }, + "DescribeReservedDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstances" + }, + "DescribeReservedDBInstancesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstancesOfferings" + }, + "DownloadDBLogFilePortion": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "NumberOfLines", + "more_results": "AdditionalDataPending", + "result_key": "LogFileData" + }, + "ListTagsForResource": { + "result_key": "TagList" + } + } +} diff --git a/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json b/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json new file mode 100644 index 0000000..e75f03b --- /dev/null +++ b/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json @@ -0,0 +1,90 @@ +{ + "version": 2, + "waiters": { + "DBInstanceAvailable": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-restore", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-parameters", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + }, + "DBInstanceDeleted": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "DBInstanceNotFound", + "matcher": "error", + "state": "success" + }, + { + "expected": "creating", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "modifying", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "resetting-master-credentials", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json b/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json new file mode 100644 index 0000000..c4b5123 --- /dev/null +++ b/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json @@ -0,0 +1,2306 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-12-01", + "endpointPrefix": "redshift", + "protocol": "query", + "serviceFullName": "Amazon Redshift", + "signatureVersion": "v4", + "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/" + }, + "operations": { + "AuthorizeClusterSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName" + ], + "members": { + "ClusterSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult", + "type": "structure", + "members": { + "ClusterSecurityGroup": { + "shape": "S4" + } + } + } + }, + "AuthorizeSnapshotAccess": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier", + "AccountWithRestoreAccess" + ], + "members": { + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {}, + "AccountWithRestoreAccess": {} + } + }, + "output": { + "resultWrapper": "AuthorizeSnapshotAccessResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CopyClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceSnapshotIdentifier", + "TargetSnapshotIdentifier" + ], + "members": { + "SourceSnapshotIdentifier": {}, + "SourceSnapshotClusterIdentifier": {}, + "TargetSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "CopyClusterSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CreateCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "NodeType", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "ClusterIdentifier": {}, + "ClusterType": {}, + "NodeType": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "ClusterSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ClusterSubnetGroupName": {}, + "AvailabilityZone": {}, + "PreferredMaintenanceWindow": {}, + "ClusterParameterGroupName": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "Port": { + "type": "integer" + }, + "ClusterVersion": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "NumberOfNodes": { + "type": "integer" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "ElasticIp": {}, + "Tags": { + "shape": "S7" + }, + "KmsKeyId": {}, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "AdditionalInfo": {}, + "IamRoles": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "CreateClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "CreateClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName", + "ParameterGroupFamily", + "Description" + ], + "members": { + "ParameterGroupName": {}, + "ParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterParameterGroupResult", + "type": "structure", + "members": { + "ClusterParameterGroup": { + "shape": "S1g" + } + } + } + }, + "CreateClusterSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName", + "Description" + ], + "members": { + "ClusterSecurityGroupName": {}, + "Description": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterSecurityGroupResult", + "type": "structure", + "members": { + "ClusterSecurityGroup": { + "shape": "S4" + } + } + } + }, + "CreateClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier", + "ClusterIdentifier" + ], + "members": { + "SnapshotIdentifier": {}, + "ClusterIdentifier": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CreateClusterSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSubnetGroupName", + "Description", + "SubnetIds" + ], + "members": { + "ClusterSubnetGroupName": {}, + "Description": {}, + "SubnetIds": { + "shape": "S1m" + }, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterSubnetGroupResult", + "type": "structure", + "members": { + "ClusterSubnetGroup": { + "shape": "S1o" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "SourceIds": { + "shape": "S1t" + }, + "EventCategories": { + "shape": "S1u" + }, + "Severity": {}, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S1w" + } + } + } + }, + "CreateHsmClientCertificate": { + "input": { + "type": "structure", + "required": [ + "HsmClientCertificateIdentifier" + ], + "members": { + "HsmClientCertificateIdentifier": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateHsmClientCertificateResult", + "type": "structure", + "members": { + "HsmClientCertificate": { + "shape": "S1z" + } + } + } + }, + "CreateHsmConfiguration": { + "input": { + "type": "structure", + "required": [ + "HsmConfigurationIdentifier", + "Description", + "HsmIpAddress", + "HsmPartitionName", + "HsmPartitionPassword", + "HsmServerPublicCertificate" + ], + "members": { + "HsmConfigurationIdentifier": {}, + "Description": {}, + "HsmIpAddress": {}, + "HsmPartitionName": {}, + "HsmPartitionPassword": {}, + "HsmServerPublicCertificate": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateHsmConfigurationResult", + "type": "structure", + "members": { + "HsmConfiguration": { + "shape": "S22" + } + } + } + }, + "CreateSnapshotCopyGrant": { + "input": { + "type": "structure", + "required": [ + "SnapshotCopyGrantName" + ], + "members": { + "SnapshotCopyGrantName": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateSnapshotCopyGrantResult", + "type": "structure", + "members": { + "SnapshotCopyGrant": { + "shape": "S25" + } + } + } + }, + "CreateTags": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S7" + } + } + } + }, + "DeleteCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "SkipFinalClusterSnapshot": { + "type": "boolean" + }, + "FinalClusterSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "DeleteClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName" + ], + "members": { + "ParameterGroupName": {} + } + } + }, + "DeleteClusterSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName" + ], + "members": { + "ClusterSecurityGroupName": {} + } + } + }, + "DeleteClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier" + ], + "members": { + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteClusterSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "DeleteClusterSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSubnetGroupName" + ], + "members": { + "ClusterSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + } + }, + "DeleteHsmClientCertificate": { + "input": { + "type": "structure", + "required": [ + "HsmClientCertificateIdentifier" + ], + "members": { + "HsmClientCertificateIdentifier": {} + } + } + }, + "DeleteHsmConfiguration": { + "input": { + "type": "structure", + "required": [ + "HsmConfigurationIdentifier" + ], + "members": { + "HsmConfigurationIdentifier": {} + } + } + }, + "DeleteSnapshotCopyGrant": { + "input": { + "type": "structure", + "required": [ + "SnapshotCopyGrantName" + ], + "members": { + "SnapshotCopyGrantName": {} + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "shape": "S2j" + } + } + } + }, + "DescribeClusterParameterGroups": { + "input": { + "type": "structure", + "members": { + "ParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ParameterGroups": { + "type": "list", + "member": { + "shape": "S1g", + "locationName": "ClusterParameterGroup" + } + } + } + } + }, + "DescribeClusterParameters": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName" + ], + "members": { + "ParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeClusterParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2q" + }, + "Marker": {} + } + } + }, + "DescribeClusterSecurityGroups": { + "input": { + "type": "structure", + "members": { + "ClusterSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ClusterSecurityGroups": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "ClusterSecurityGroup" + } + } + } + } + }, + "DescribeClusterSnapshots": { + "input": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SnapshotType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "OwnerAccount": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "Snapshots": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "Snapshot" + } + } + } + } + }, + "DescribeClusterSubnetGroups": { + "input": { + "type": "structure", + "members": { + "ClusterSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ClusterSubnetGroups": { + "type": "list", + "member": { + "shape": "S1o", + "locationName": "ClusterSubnetGroup" + } + } + } + } + }, + "DescribeClusterVersions": { + "input": { + "type": "structure", + "members": { + "ClusterVersion": {}, + "ClusterParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeClusterVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "ClusterVersions": { + "type": "list", + "member": { + "locationName": "ClusterVersion", + "type": "structure", + "members": { + "ClusterVersion": {}, + "ClusterParameterGroupFamily": {}, + "Description": {} + } + } + } + } + } + }, + "DescribeClusters": { + "input": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClustersResult", + "type": "structure", + "members": { + "Marker": {}, + "Clusters": { + "type": "list", + "member": { + "shape": "Sv", + "locationName": "Cluster" + } + } + } + } + }, + "DescribeDefaultClusterParameters": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupFamily" + ], + "members": { + "ParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDefaultClusterParametersResult", + "type": "structure", + "members": { + "DefaultClusterParameters": { + "type": "structure", + "members": { + "ParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2q" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {} + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "Events": { + "type": "list", + "member": { + "locationName": "EventInfoMap", + "type": "structure", + "members": { + "EventId": {}, + "EventCategories": { + "shape": "S1u" + }, + "EventDescription": {}, + "Severity": {} + }, + "wrapper": true + } + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S1w", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S1u" + }, + "Severity": {}, + "Date": { + "type": "timestamp" + }, + "EventId": {} + } + } + } + } + } + }, + "DescribeHsmClientCertificates": { + "input": { + "type": "structure", + "members": { + "HsmClientCertificateIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeHsmClientCertificatesResult", + "type": "structure", + "members": { + "Marker": {}, + "HsmClientCertificates": { + "type": "list", + "member": { + "shape": "S1z", + "locationName": "HsmClientCertificate" + } + } + } + } + }, + "DescribeHsmConfigurations": { + "input": { + "type": "structure", + "members": { + "HsmConfigurationIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeHsmConfigurationsResult", + "type": "structure", + "members": { + "Marker": {}, + "HsmConfigurations": { + "type": "list", + "member": { + "shape": "S22", + "locationName": "HsmConfiguration" + } + } + } + } + }, + "DescribeLoggingStatus": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "shape": "S3x", + "resultWrapper": "DescribeLoggingStatusResult" + } + }, + "DescribeOrderableClusterOptions": { + "input": { + "type": "structure", + "members": { + "ClusterVersion": {}, + "NodeType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableClusterOptionsResult", + "type": "structure", + "members": { + "OrderableClusterOptions": { + "type": "list", + "member": { + "locationName": "OrderableClusterOption", + "type": "structure", + "members": { + "ClusterVersion": {}, + "ClusterType": {}, + "NodeType": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S1r", + "locationName": "AvailabilityZone" + } + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedNodeOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedNodeOfferingId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedNodeOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedNodeOfferings": { + "type": "list", + "member": { + "locationName": "ReservedNodeOffering", + "type": "structure", + "members": { + "ReservedNodeOfferingId": {}, + "NodeType": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "OfferingType": {}, + "RecurringCharges": { + "shape": "S47" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeReservedNodes": { + "input": { + "type": "structure", + "members": { + "ReservedNodeId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedNodesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedNodes": { + "type": "list", + "member": { + "shape": "S4c", + "locationName": "ReservedNode" + } + } + } + } + }, + "DescribeResize": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "DescribeResizeResult", + "type": "structure", + "members": { + "TargetNodeType": {}, + "TargetNumberOfNodes": { + "type": "integer" + }, + "TargetClusterType": {}, + "Status": {}, + "ImportTablesCompleted": { + "type": "list", + "member": {} + }, + "ImportTablesInProgress": { + "type": "list", + "member": {} + }, + "ImportTablesNotStarted": { + "type": "list", + "member": {} + }, + "AvgResizeRateInMegaBytesPerSecond": { + "type": "double" + }, + "TotalResizeDataInMegaBytes": { + "type": "long" + }, + "ProgressInMegaBytes": { + "type": "long" + }, + "ElapsedTimeInSeconds": { + "type": "long" + }, + "EstimatedTimeToCompletionInSeconds": { + "type": "long" + } + } + } + }, + "DescribeSnapshotCopyGrants": { + "input": { + "type": "structure", + "members": { + "SnapshotCopyGrantName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeSnapshotCopyGrantsResult", + "type": "structure", + "members": { + "Marker": {}, + "SnapshotCopyGrants": { + "type": "list", + "member": { + "shape": "S25", + "locationName": "SnapshotCopyGrant" + } + } + } + } + }, + "DescribeTableRestoreStatus": { + "input": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "TableRestoreRequestId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeTableRestoreStatusResult", + "type": "structure", + "members": { + "TableRestoreStatusDetails": { + "type": "list", + "member": { + "shape": "S4q", + "locationName": "TableRestoreStatus" + } + }, + "Marker": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "members": { + "ResourceName": {}, + "ResourceType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "TaggedResources": { + "type": "list", + "member": { + "locationName": "TaggedResource", + "type": "structure", + "members": { + "Tag": { + "shape": "S8" + }, + "ResourceName": {}, + "ResourceType": {} + } + } + }, + "Marker": {} + } + } + }, + "DisableLogging": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "shape": "S3x", + "resultWrapper": "DisableLoggingResult" + } + }, + "DisableSnapshotCopy": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "DisableSnapshotCopyResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "EnableLogging": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "BucketName" + ], + "members": { + "ClusterIdentifier": {}, + "BucketName": {}, + "S3KeyPrefix": {} + } + }, + "output": { + "shape": "S3x", + "resultWrapper": "EnableLoggingResult" + } + }, + "EnableSnapshotCopy": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "DestinationRegion" + ], + "members": { + "ClusterIdentifier": {}, + "DestinationRegion": {}, + "RetentionPeriod": { + "type": "integer" + }, + "SnapshotCopyGrantName": {} + } + }, + "output": { + "resultWrapper": "EnableSnapshotCopyResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ModifyCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "ClusterType": {}, + "NodeType": {}, + "NumberOfNodes": { + "type": "integer" + }, + "ClusterSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "MasterUserPassword": {}, + "ClusterParameterGroupName": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "PreferredMaintenanceWindow": {}, + "ClusterVersion": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "NewClusterIdentifier": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "ElasticIp": {}, + "EnhancedVpcRouting": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ModifyClusterIamRoles": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "AddIamRoles": { + "shape": "St" + }, + "RemoveIamRoles": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "ModifyClusterIamRolesResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ModifyClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName", + "Parameters" + ], + "members": { + "ParameterGroupName": {}, + "Parameters": { + "shape": "S2q" + } + } + }, + "output": { + "shape": "S57", + "resultWrapper": "ModifyClusterParameterGroupResult" + } + }, + "ModifyClusterSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSubnetGroupName", + "SubnetIds" + ], + "members": { + "ClusterSubnetGroupName": {}, + "Description": {}, + "SubnetIds": { + "shape": "S1m" + } + } + }, + "output": { + "resultWrapper": "ModifyClusterSubnetGroupResult", + "type": "structure", + "members": { + "ClusterSubnetGroup": { + "shape": "S1o" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "SourceIds": { + "shape": "S1t" + }, + "EventCategories": { + "shape": "S1u" + }, + "Severity": {}, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S1w" + } + } + } + }, + "ModifySnapshotCopyRetentionPeriod": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "RetentionPeriod" + ], + "members": { + "ClusterIdentifier": {}, + "RetentionPeriod": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "PurchaseReservedNodeOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedNodeOfferingId" + ], + "members": { + "ReservedNodeOfferingId": {}, + "NodeCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedNodeOfferingResult", + "type": "structure", + "members": { + "ReservedNode": { + "shape": "S4c" + } + } + } + }, + "RebootCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "RebootClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ResetClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName" + ], + "members": { + "ParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2q" + } + } + }, + "output": { + "shape": "S57", + "resultWrapper": "ResetClusterParameterGroupResult" + } + }, + "RestoreFromClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "SnapshotIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "ClusterSubnetGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "OwnerAccount": {}, + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "ElasticIp": {}, + "ClusterParameterGroupName": {}, + "ClusterSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "PreferredMaintenanceWindow": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "KmsKeyId": {}, + "NodeType": {}, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "AdditionalInfo": {}, + "IamRoles": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "RestoreFromClusterSnapshotResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "RestoreTableFromClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "SnapshotIdentifier", + "SourceDatabaseName", + "SourceTableName", + "NewTableName" + ], + "members": { + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SourceDatabaseName": {}, + "SourceSchemaName": {}, + "SourceTableName": {}, + "TargetDatabaseName": {}, + "TargetSchemaName": {}, + "NewTableName": {} + } + }, + "output": { + "resultWrapper": "RestoreTableFromClusterSnapshotResult", + "type": "structure", + "members": { + "TableRestoreStatus": { + "shape": "S4q" + } + } + } + }, + "RevokeClusterSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName" + ], + "members": { + "ClusterSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeClusterSecurityGroupIngressResult", + "type": "structure", + "members": { + "ClusterSecurityGroup": { + "shape": "S4" + } + } + } + }, + "RevokeSnapshotAccess": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier", + "AccountWithRestoreAccess" + ], + "members": { + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {}, + "AccountWithRestoreAccess": {} + } + }, + "output": { + "resultWrapper": "RevokeSnapshotAccessResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "RotateEncryptionKey": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "RotateEncryptionKeyResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "ClusterSecurityGroupName": {}, + "Description": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {}, + "Tags": { + "shape": "S7" + } + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {}, + "Tags": { + "shape": "S7" + } + } + } + }, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S7": { + "type": "list", + "member": { + "shape": "S8", + "locationName": "Tag" + } + }, + "S8": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + }, + "Sd": { + "type": "structure", + "members": { + "SnapshotIdentifier": {}, + "ClusterIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "ClusterCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "ClusterVersion": {}, + "SnapshotType": {}, + "NodeType": {}, + "NumberOfNodes": { + "type": "integer" + }, + "DBName": {}, + "VpcId": {}, + "Encrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "EncryptedWithHSM": { + "type": "boolean" + }, + "AccountsWithRestoreAccess": { + "type": "list", + "member": { + "locationName": "AccountWithRestoreAccess", + "type": "structure", + "members": { + "AccountId": {} + } + } + }, + "OwnerAccount": {}, + "TotalBackupSizeInMegaBytes": { + "type": "double" + }, + "ActualIncrementalBackupSizeInMegaBytes": { + "type": "double" + }, + "BackupProgressInMegaBytes": { + "type": "double" + }, + "CurrentBackupRateInMegaBytesPerSecond": { + "type": "double" + }, + "EstimatedSecondsToCompletion": { + "type": "long" + }, + "ElapsedTimeInSeconds": { + "type": "long" + }, + "SourceRegion": {}, + "Tags": { + "shape": "S7" + }, + "RestorableNodeTypes": { + "type": "list", + "member": { + "locationName": "NodeType" + } + }, + "EnhancedVpcRouting": { + "type": "boolean" + } + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "ClusterSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "list", + "member": { + "locationName": "IamRoleArn" + } + }, + "Sv": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "NodeType": {}, + "ClusterStatus": {}, + "ModifyStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "ClusterCreateTime": { + "type": "timestamp" + }, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "ClusterSecurityGroups": { + "type": "list", + "member": { + "locationName": "ClusterSecurityGroup", + "type": "structure", + "members": { + "ClusterSecurityGroupName": {}, + "Status": {} + } + } + }, + "VpcSecurityGroups": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroup", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "ClusterParameterGroups": { + "type": "list", + "member": { + "locationName": "ClusterParameterGroup", + "type": "structure", + "members": { + "ParameterGroupName": {}, + "ParameterApplyStatus": {}, + "ClusterParameterStatusList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterApplyStatus": {}, + "ParameterApplyErrorDescription": {} + } + } + } + } + } + }, + "ClusterSubnetGroupName": {}, + "VpcId": {}, + "AvailabilityZone": {}, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "MasterUserPassword": {}, + "NodeType": {}, + "NumberOfNodes": { + "type": "integer" + }, + "ClusterType": {}, + "ClusterVersion": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "ClusterIdentifier": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "EnhancedVpcRouting": { + "type": "boolean" + } + } + }, + "ClusterVersion": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "NumberOfNodes": { + "type": "integer" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "RestoreStatus": { + "type": "structure", + "members": { + "Status": {}, + "CurrentRestoreRateInMegaBytesPerSecond": { + "type": "double" + }, + "SnapshotSizeInMegaBytes": { + "type": "long" + }, + "ProgressInMegaBytes": { + "type": "long" + }, + "ElapsedTimeInSeconds": { + "type": "long" + }, + "EstimatedTimeToCompletionInSeconds": { + "type": "long" + } + } + }, + "HsmStatus": { + "type": "structure", + "members": { + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "Status": {} + } + }, + "ClusterSnapshotCopyStatus": { + "type": "structure", + "members": { + "DestinationRegion": {}, + "RetentionPeriod": { + "type": "long" + }, + "SnapshotCopyGrantName": {} + } + }, + "ClusterPublicKey": {}, + "ClusterNodes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "NodeRole": {}, + "PrivateIPAddress": {}, + "PublicIPAddress": {} + } + } + }, + "ElasticIpStatus": { + "type": "structure", + "members": { + "ElasticIp": {}, + "Status": {} + } + }, + "ClusterRevisionNumber": {}, + "Tags": { + "shape": "S7" + }, + "KmsKeyId": {}, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "IamRoles": { + "type": "list", + "member": { + "locationName": "ClusterIamRole", + "type": "structure", + "members": { + "IamRoleArn": {}, + "ApplyStatus": {} + } + } + } + }, + "wrapper": true + }, + "S1g": { + "type": "structure", + "members": { + "ParameterGroupName": {}, + "ParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S1m": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1o": { + "type": "structure", + "members": { + "ClusterSubnetGroupName": {}, + "Description": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S1r" + }, + "SubnetStatus": {} + } + } + }, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S1r": { + "type": "structure", + "members": { + "Name": {} + }, + "wrapper": true + }, + "S1t": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S1u": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S1w": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": { + "type": "timestamp" + }, + "SourceType": {}, + "SourceIdsList": { + "shape": "S1t" + }, + "EventCategoriesList": { + "shape": "S1u" + }, + "Severity": {}, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S1z": { + "type": "structure", + "members": { + "HsmClientCertificateIdentifier": {}, + "HsmClientCertificatePublicKey": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S22": { + "type": "structure", + "members": { + "HsmConfigurationIdentifier": {}, + "Description": {}, + "HsmIpAddress": {}, + "HsmPartitionName": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S25": { + "type": "structure", + "members": { + "SnapshotCopyGrantName": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S2j": { + "type": "list", + "member": { + "locationName": "TagKey" + } + }, + "S2l": { + "type": "list", + "member": { + "locationName": "TagValue" + } + }, + "S2q": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "DataType": {}, + "AllowedValues": {}, + "ApplyType": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {} + } + } + }, + "S3x": { + "type": "structure", + "members": { + "LoggingEnabled": { + "type": "boolean" + }, + "BucketName": {}, + "S3KeyPrefix": {}, + "LastSuccessfulDeliveryTime": { + "type": "timestamp" + }, + "LastFailureTime": { + "type": "timestamp" + }, + "LastFailureMessage": {} + } + }, + "S47": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S4c": { + "type": "structure", + "members": { + "ReservedNodeId": {}, + "ReservedNodeOfferingId": {}, + "NodeType": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "NodeCount": { + "type": "integer" + }, + "State": {}, + "OfferingType": {}, + "RecurringCharges": { + "shape": "S47" + } + }, + "wrapper": true + }, + "S4q": { + "type": "structure", + "members": { + "TableRestoreRequestId": {}, + "Status": {}, + "Message": {}, + "RequestTime": { + "type": "timestamp" + }, + "ProgressInMegaBytes": { + "type": "long" + }, + "TotalDataInMegaBytes": { + "type": "long" + }, + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SourceDatabaseName": {}, + "SourceSchemaName": {}, + "SourceTableName": {}, + "TargetDatabaseName": {}, + "TargetSchemaName": {}, + "NewTableName": {} + }, + "wrapper": true + }, + "S57": { + "type": "structure", + "members": { + "ParameterGroupName": {}, + "ParameterGroupStatus": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json b/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json new file mode 100644 index 0000000..03027de --- /dev/null +++ b/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json @@ -0,0 +1,94 @@ +{ + "pagination": { + "DescribeClusterParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ParameterGroups" + }, + "DescribeClusterParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeClusterSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ClusterSecurityGroups" + }, + "DescribeClusterSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Snapshots" + }, + "DescribeClusterSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ClusterSubnetGroups" + }, + "DescribeClusterVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ClusterVersions" + }, + "DescribeClusters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Clusters" + }, + "DescribeDefaultClusterParameters": { + "input_token": "Marker", + "output_token": "DefaultClusterParameters.Marker", + "limit_key": "MaxRecords", + "result_key": "DefaultClusterParameters.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeHsmClientCertificates": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "HsmClientCertificates" + }, + "DescribeHsmConfigurations": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "HsmConfigurations" + }, + "DescribeOrderableClusterOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableClusterOptions" + }, + "DescribeReservedNodeOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedNodeOfferings" + }, + "DescribeReservedNodes": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedNodes" + } + } +} diff --git a/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json b/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json new file mode 100644 index 0000000..164e9b0 --- /dev/null +++ b/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json @@ -0,0 +1,97 @@ +{ + "version": 2, + "waiters": { + "ClusterAvailable": { + "delay": 60, + "operation": "DescribeClusters", + "maxAttempts": 30, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Clusters[].ClusterStatus" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "Clusters[].ClusterStatus" + }, + { + "expected": "ClusterNotFound", + "matcher": "error", + "state": "retry" + } + ] + }, + "ClusterDeleted": { + "delay": 60, + "operation": "DescribeClusters", + "maxAttempts": 30, + "acceptors": [ + { + "expected": "ClusterNotFound", + "matcher": "error", + "state": "success" + }, + { + "expected": "creating", + "matcher": "pathAny", + "state": "failure", + "argument": "Clusters[].ClusterStatus" + }, + { + "expected": "modifying", + "matcher": "pathAny", + "state": "failure", + "argument": "Clusters[].ClusterStatus" + } + ] + }, + "ClusterRestored": { + "operation": "DescribeClusters", + "maxAttempts": 30, + "delay": 60, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "Clusters[].RestoreStatus.Status", + "expected": "completed" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "Clusters[].ClusterStatus", + "expected": "deleting" + } + ] + }, + "SnapshotAvailable": { + "delay": 15, + "operation": "DescribeClusterSnapshots", + "maxAttempts": 20, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Snapshots[].Status" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Snapshots[].Status" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "Snapshots[].Status" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/route53-2013-04-01.min.json b/node_modules/aws-sdk/apis/route53-2013-04-01.min.json new file mode 100644 index 0000000..790c031 --- /dev/null +++ b/node_modules/aws-sdk/apis/route53-2013-04-01.min.json @@ -0,0 +1,2370 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-04-01", + "endpointPrefix": "route53", + "globalEndpoint": "route53.amazonaws.com", + "protocol": "rest-xml", + "serviceAbbreviation": "Route 53", + "serviceFullName": "Amazon Route 53", + "signatureVersion": "v4" + }, + "operations": { + "AssociateVPCWithHostedZone": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc" + }, + "input": { + "locationName": "AssociateVPCWithHostedZoneRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "VPC" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "VPC": { + "shape": "S3" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "ChangeResourceRecordSets": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/" + }, + "input": { + "locationName": "ChangeResourceRecordSetsRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "ChangeBatch" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "ChangeBatch": { + "type": "structure", + "required": [ + "Changes" + ], + "members": { + "Comment": {}, + "Changes": { + "shape": "Se" + } + } + } + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "ChangeTagsForResource": { + "http": { + "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" + }, + "input": { + "locationName": "ChangeTagsForResourceRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": { + "location": "uri", + "locationName": "ResourceType" + }, + "ResourceId": { + "location": "uri", + "locationName": "ResourceId" + }, + "AddTags": { + "shape": "S14" + }, + "RemoveTagKeys": { + "type": "list", + "member": { + "locationName": "Key" + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateHealthCheck": { + "http": { + "requestUri": "/2013-04-01/healthcheck", + "responseCode": 201 + }, + "input": { + "locationName": "CreateHealthCheckRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "CallerReference", + "HealthCheckConfig" + ], + "members": { + "CallerReference": {}, + "HealthCheckConfig": { + "shape": "S1c" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheck", + "Location" + ], + "members": { + "HealthCheck": { + "shape": "S1x" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateHostedZone": { + "http": { + "requestUri": "/2013-04-01/hostedzone", + "responseCode": 201 + }, + "input": { + "locationName": "CreateHostedZoneRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Name", + "CallerReference" + ], + "members": { + "Name": {}, + "VPC": { + "shape": "S3" + }, + "CallerReference": {}, + "HostedZoneConfig": { + "shape": "S2d" + }, + "DelegationSetId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZone", + "ChangeInfo", + "DelegationSet", + "Location" + ], + "members": { + "HostedZone": { + "shape": "S2g" + }, + "ChangeInfo": { + "shape": "S8" + }, + "DelegationSet": { + "shape": "S2i" + }, + "VPC": { + "shape": "S3" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateReusableDelegationSet": { + "http": { + "requestUri": "/2013-04-01/delegationset", + "responseCode": 201 + }, + "input": { + "locationName": "CreateReusableDelegationSetRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "CallerReference" + ], + "members": { + "CallerReference": {}, + "HostedZoneId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DelegationSet", + "Location" + ], + "members": { + "DelegationSet": { + "shape": "S2i" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateTrafficPolicy": { + "http": { + "requestUri": "/2013-04-01/trafficpolicy", + "responseCode": 201 + }, + "input": { + "locationName": "CreateTrafficPolicyRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Name", + "Document" + ], + "members": { + "Name": {}, + "Document": {}, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy", + "Location" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateTrafficPolicyInstance": { + "http": { + "requestUri": "/2013-04-01/trafficpolicyinstance", + "responseCode": 201 + }, + "input": { + "locationName": "CreateTrafficPolicyInstanceRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "Name", + "TTL", + "TrafficPolicyId", + "TrafficPolicyVersion" + ], + "members": { + "HostedZoneId": {}, + "Name": {}, + "TTL": { + "type": "long" + }, + "TrafficPolicyId": {}, + "TrafficPolicyVersion": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstance", + "Location" + ], + "members": { + "TrafficPolicyInstance": { + "shape": "S2w" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateTrafficPolicyVersion": { + "http": { + "requestUri": "/2013-04-01/trafficpolicy/{Id}", + "responseCode": 201 + }, + "input": { + "locationName": "CreateTrafficPolicyVersionRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id", + "Document" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Document": {}, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy", + "Location" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "DeleteHealthCheck": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteHostedZone": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/hostedzone/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "DeleteReusableDelegationSet": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/delegationset/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTrafficPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Version" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Version": { + "location": "uri", + "locationName": "Version", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTrafficPolicyInstance": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisassociateVPCFromHostedZone": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc" + }, + "input": { + "locationName": "DisassociateVPCFromHostedZoneRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "VPC" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "VPC": { + "shape": "S3" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "GetChange": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/change/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "GetChangeDetails": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/changedetails/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + }, + "deprecated": true + }, + "output": { + "type": "structure", + "required": [ + "ChangeBatchRecord" + ], + "members": { + "ChangeBatchRecord": { + "shape": "S3i" + } + }, + "deprecated": true + }, + "deprecated": true + }, + "GetCheckerIpRanges": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/checkeripranges" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "CheckerIpRanges" + ], + "members": { + "CheckerIpRanges": { + "type": "list", + "member": {} + } + } + } + }, + "GetGeoLocation": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/geolocation" + }, + "input": { + "type": "structure", + "members": { + "ContinentCode": { + "location": "querystring", + "locationName": "continentcode" + }, + "CountryCode": { + "location": "querystring", + "locationName": "countrycode" + }, + "SubdivisionCode": { + "location": "querystring", + "locationName": "subdivisioncode" + } + } + }, + "output": { + "type": "structure", + "required": [ + "GeoLocationDetails" + ], + "members": { + "GeoLocationDetails": { + "shape": "S3q" + } + } + } + }, + "GetHealthCheck": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheck" + ], + "members": { + "HealthCheck": { + "shape": "S1x" + } + } + } + }, + "GetHealthCheckCount": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheckcount" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "HealthCheckCount" + ], + "members": { + "HealthCheckCount": { + "type": "long" + } + } + } + }, + "GetHealthCheckLastFailureReason": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheckObservations" + ], + "members": { + "HealthCheckObservations": { + "shape": "S41" + } + } + } + }, + "GetHealthCheckStatus": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheckObservations" + ], + "members": { + "HealthCheckObservations": { + "shape": "S41" + } + } + } + }, + "GetHostedZone": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZone" + ], + "members": { + "HostedZone": { + "shape": "S2g" + }, + "DelegationSet": { + "shape": "S2i" + }, + "VPCs": { + "type": "list", + "member": { + "shape": "S3", + "locationName": "VPC" + } + } + } + } + }, + "GetHostedZoneCount": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzonecount" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "HostedZoneCount" + ], + "members": { + "HostedZoneCount": { + "type": "long" + } + } + } + }, + "GetReusableDelegationSet": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/delegationset/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "DelegationSet" + ], + "members": { + "DelegationSet": { + "shape": "S2i" + } + } + } + }, + "GetTrafficPolicy": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Version" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Version": { + "location": "uri", + "locationName": "Version", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + } + } + } + }, + "GetTrafficPolicyInstance": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstance" + ], + "members": { + "TrafficPolicyInstance": { + "shape": "S2w" + } + } + } + }, + "GetTrafficPolicyInstanceCount": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstancecount" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstanceCount" + ], + "members": { + "TrafficPolicyInstanceCount": { + "type": "integer" + } + } + } + }, + "ListChangeBatchesByHostedZone": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}/changes" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId", + "StartDate", + "EndDate" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "StartDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "startDate" + }, + "EndDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "endDate" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxItems" + }, + "Marker": { + "location": "querystring", + "locationName": "marker" + } + }, + "deprecated": true + }, + "output": { + "type": "structure", + "required": [ + "MaxItems", + "Marker", + "ChangeBatchRecords" + ], + "members": { + "MaxItems": {}, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "ChangeBatchRecords": { + "shape": "S4s" + }, + "NextMarker": {} + }, + "deprecated": true + }, + "deprecated": true + }, + "ListChangeBatchesByRRSet": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}/rrsChanges" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId", + "Name", + "Type", + "StartDate", + "EndDate" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "Name": { + "location": "querystring", + "locationName": "rrSet_name" + }, + "Type": { + "location": "querystring", + "locationName": "type" + }, + "SetIdentifier": { + "location": "querystring", + "locationName": "identifier" + }, + "StartDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "startDate" + }, + "EndDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "endDate" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxItems" + }, + "Marker": { + "location": "querystring", + "locationName": "marker" + } + }, + "deprecated": true + }, + "output": { + "type": "structure", + "required": [ + "MaxItems", + "Marker", + "ChangeBatchRecords" + ], + "members": { + "MaxItems": {}, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "ChangeBatchRecords": { + "shape": "S4s" + }, + "NextMarker": {} + }, + "deprecated": true + }, + "deprecated": true + }, + "ListGeoLocations": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/geolocations" + }, + "input": { + "type": "structure", + "members": { + "StartContinentCode": { + "location": "querystring", + "locationName": "startcontinentcode" + }, + "StartCountryCode": { + "location": "querystring", + "locationName": "startcountrycode" + }, + "StartSubdivisionCode": { + "location": "querystring", + "locationName": "startsubdivisioncode" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "GeoLocationDetailsList", + "IsTruncated", + "MaxItems" + ], + "members": { + "GeoLocationDetailsList": { + "type": "list", + "member": { + "shape": "S3q", + "locationName": "GeoLocationDetails" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "NextContinentCode": {}, + "NextCountryCode": {}, + "NextSubdivisionCode": {}, + "MaxItems": {} + } + } + }, + "ListHealthChecks": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthChecks", + "Marker", + "IsTruncated", + "MaxItems" + ], + "members": { + "HealthChecks": { + "type": "list", + "member": { + "shape": "S1x", + "locationName": "HealthCheck" + } + }, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextMarker": {}, + "MaxItems": {} + } + } + }, + "ListHostedZones": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + }, + "DelegationSetId": { + "location": "querystring", + "locationName": "delegationsetid" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZones", + "Marker", + "IsTruncated", + "MaxItems" + ], + "members": { + "HostedZones": { + "shape": "S53" + }, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextMarker": {}, + "MaxItems": {} + } + } + }, + "ListHostedZonesByName": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzonesbyname" + }, + "input": { + "type": "structure", + "members": { + "DNSName": { + "location": "querystring", + "locationName": "dnsname" + }, + "HostedZoneId": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZones", + "IsTruncated", + "MaxItems" + ], + "members": { + "HostedZones": { + "shape": "S53" + }, + "DNSName": {}, + "HostedZoneId": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextDNSName": {}, + "NextHostedZoneId": {}, + "MaxItems": {} + } + } + }, + "ListResourceRecordSets": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}/rrset" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "StartRecordName": { + "location": "querystring", + "locationName": "name" + }, + "StartRecordType": { + "location": "querystring", + "locationName": "type" + }, + "StartRecordIdentifier": { + "location": "querystring", + "locationName": "identifier" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ResourceRecordSets", + "IsTruncated", + "MaxItems" + ], + "members": { + "ResourceRecordSets": { + "type": "list", + "member": { + "shape": "Sh", + "locationName": "ResourceRecordSet" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "NextRecordName": {}, + "NextRecordType": {}, + "NextRecordIdentifier": {}, + "MaxItems": {} + } + } + }, + "ListReusableDelegationSets": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/delegationset" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "DelegationSets", + "Marker", + "IsTruncated", + "MaxItems" + ], + "members": { + "DelegationSets": { + "type": "list", + "member": { + "shape": "S2i", + "locationName": "DelegationSet" + } + }, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextMarker": {}, + "MaxItems": {} + } + } + }, + "ListTagsForResource": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" + }, + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": { + "location": "uri", + "locationName": "ResourceType" + }, + "ResourceId": { + "location": "uri", + "locationName": "ResourceId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ResourceTagSet" + ], + "members": { + "ResourceTagSet": { + "shape": "S5e" + } + } + } + }, + "ListTagsForResources": { + "http": { + "requestUri": "/2013-04-01/tags/{ResourceType}" + }, + "input": { + "locationName": "ListTagsForResourcesRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "ResourceType", + "ResourceIds" + ], + "members": { + "ResourceType": { + "location": "uri", + "locationName": "ResourceType" + }, + "ResourceIds": { + "type": "list", + "member": { + "locationName": "ResourceId" + } + } + } + }, + "output": { + "type": "structure", + "required": [ + "ResourceTagSets" + ], + "members": { + "ResourceTagSets": { + "type": "list", + "member": { + "shape": "S5e", + "locationName": "ResourceTagSet" + } + } + } + } + }, + "ListTrafficPolicies": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicies" + }, + "input": { + "type": "structure", + "members": { + "TrafficPolicyIdMarker": { + "location": "querystring", + "locationName": "trafficpolicyid" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicySummaries", + "IsTruncated", + "TrafficPolicyIdMarker", + "MaxItems" + ], + "members": { + "TrafficPolicySummaries": { + "type": "list", + "member": { + "locationName": "TrafficPolicySummary", + "type": "structure", + "required": [ + "Id", + "Name", + "Type", + "LatestVersion", + "TrafficPolicyCount" + ], + "members": { + "Id": {}, + "Name": {}, + "Type": {}, + "LatestVersion": { + "type": "integer" + }, + "TrafficPolicyCount": { + "type": "integer" + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "TrafficPolicyIdMarker": {}, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyInstances": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstances" + }, + "input": { + "type": "structure", + "members": { + "HostedZoneIdMarker": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "TrafficPolicyInstanceNameMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancename" + }, + "TrafficPolicyInstanceTypeMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancetype" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstances", + "IsTruncated", + "MaxItems" + ], + "members": { + "TrafficPolicyInstances": { + "shape": "S5p" + }, + "HostedZoneIdMarker": {}, + "TrafficPolicyInstanceNameMarker": {}, + "TrafficPolicyInstanceTypeMarker": {}, + "IsTruncated": { + "type": "boolean" + }, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyInstancesByHostedZone": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId" + ], + "members": { + "HostedZoneId": { + "location": "querystring", + "locationName": "id" + }, + "TrafficPolicyInstanceNameMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancename" + }, + "TrafficPolicyInstanceTypeMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancetype" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstances", + "IsTruncated", + "MaxItems" + ], + "members": { + "TrafficPolicyInstances": { + "shape": "S5p" + }, + "TrafficPolicyInstanceNameMarker": {}, + "TrafficPolicyInstanceTypeMarker": {}, + "IsTruncated": { + "type": "boolean" + }, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyInstancesByPolicy": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy" + }, + "input": { + "type": "structure", + "required": [ + "TrafficPolicyId", + "TrafficPolicyVersion" + ], + "members": { + "TrafficPolicyId": { + "location": "querystring", + "locationName": "id" + }, + "TrafficPolicyVersion": { + "location": "querystring", + "locationName": "version", + "type": "integer" + }, + "HostedZoneIdMarker": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "TrafficPolicyInstanceNameMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancename" + }, + "TrafficPolicyInstanceTypeMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancetype" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstances", + "IsTruncated", + "MaxItems" + ], + "members": { + "TrafficPolicyInstances": { + "shape": "S5p" + }, + "HostedZoneIdMarker": {}, + "TrafficPolicyInstanceNameMarker": {}, + "TrafficPolicyInstanceTypeMarker": {}, + "IsTruncated": { + "type": "boolean" + }, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyVersions": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "TrafficPolicyVersionMarker": { + "location": "querystring", + "locationName": "trafficpolicyversion" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicies", + "IsTruncated", + "TrafficPolicyVersionMarker", + "MaxItems" + ], + "members": { + "TrafficPolicies": { + "type": "list", + "member": { + "shape": "S2r", + "locationName": "TrafficPolicy" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "TrafficPolicyVersionMarker": {}, + "MaxItems": {} + } + } + }, + "TestDNSAnswer": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/testdnsanswer" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId", + "RecordName", + "RecordType" + ], + "members": { + "HostedZoneId": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "RecordName": { + "location": "querystring", + "locationName": "recordname" + }, + "RecordType": { + "location": "querystring", + "locationName": "recordtype" + }, + "ResolverIP": { + "location": "querystring", + "locationName": "resolverip" + }, + "EDNS0ClientSubnetIP": { + "location": "querystring", + "locationName": "edns0clientsubnetip" + }, + "EDNS0ClientSubnetMask": { + "location": "querystring", + "locationName": "edns0clientsubnetmask" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Nameserver", + "RecordName", + "RecordType", + "RecordData", + "ResponseCode", + "Protocol" + ], + "members": { + "Nameserver": {}, + "RecordName": {}, + "RecordType": {}, + "RecordData": { + "type": "list", + "member": { + "locationName": "RecordDataEntry" + } + }, + "ResponseCode": {}, + "Protocol": {} + } + } + }, + "UpdateHealthCheck": { + "http": { + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" + }, + "input": { + "locationName": "UpdateHealthCheckRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + }, + "HealthCheckVersion": { + "type": "long" + }, + "IPAddress": {}, + "Port": { + "type": "integer" + }, + "ResourcePath": {}, + "FullyQualifiedDomainName": {}, + "SearchString": {}, + "FailureThreshold": { + "type": "integer" + }, + "Inverted": { + "type": "boolean" + }, + "HealthThreshold": { + "type": "integer" + }, + "ChildHealthChecks": { + "shape": "S1o" + }, + "EnableSNI": { + "type": "boolean" + }, + "Regions": { + "shape": "S1q" + }, + "AlarmIdentifier": { + "shape": "S1s" + }, + "InsufficientDataHealthStatus": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheck" + ], + "members": { + "HealthCheck": { + "shape": "S1x" + } + } + } + }, + "UpdateHostedZoneComment": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}" + }, + "input": { + "locationName": "UpdateHostedZoneCommentRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZone" + ], + "members": { + "HostedZone": { + "shape": "S2g" + } + } + } + }, + "UpdateTrafficPolicyComment": { + "http": { + "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" + }, + "input": { + "locationName": "UpdateTrafficPolicyCommentRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id", + "Version", + "Comment" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Version": { + "location": "uri", + "locationName": "Version", + "type": "integer" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + } + } + } + }, + "UpdateTrafficPolicyInstance": { + "http": { + "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" + }, + "input": { + "locationName": "UpdateTrafficPolicyInstanceRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id", + "TTL", + "TrafficPolicyId", + "TrafficPolicyVersion" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "TTL": { + "type": "long" + }, + "TrafficPolicyId": {}, + "TrafficPolicyVersion": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstance" + ], + "members": { + "TrafficPolicyInstance": { + "shape": "S2w" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "members": { + "VPCRegion": {}, + "VPCId": {} + } + }, + "S8": { + "type": "structure", + "required": [ + "Id", + "Status", + "SubmittedAt" + ], + "members": { + "Id": {}, + "Status": {}, + "SubmittedAt": { + "type": "timestamp" + }, + "Comment": {} + } + }, + "Se": { + "type": "list", + "member": { + "locationName": "Change", + "type": "structure", + "required": [ + "Action", + "ResourceRecordSet" + ], + "members": { + "Action": {}, + "ResourceRecordSet": { + "shape": "Sh" + } + } + } + }, + "Sh": { + "type": "structure", + "required": [ + "Name", + "Type" + ], + "members": { + "Name": {}, + "Type": {}, + "SetIdentifier": {}, + "Weight": { + "type": "long" + }, + "Region": {}, + "GeoLocation": { + "type": "structure", + "members": { + "ContinentCode": {}, + "CountryCode": {}, + "SubdivisionCode": {} + } + }, + "Failover": {}, + "TTL": { + "type": "long" + }, + "ResourceRecords": { + "type": "list", + "member": { + "locationName": "ResourceRecord", + "type": "structure", + "required": [ + "Value" + ], + "members": { + "Value": {} + } + } + }, + "AliasTarget": { + "type": "structure", + "required": [ + "HostedZoneId", + "DNSName", + "EvaluateTargetHealth" + ], + "members": { + "HostedZoneId": {}, + "DNSName": {}, + "EvaluateTargetHealth": { + "type": "boolean" + } + } + }, + "HealthCheckId": {}, + "TrafficPolicyInstanceId": {} + } + }, + "S14": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S1c": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "IPAddress": {}, + "Port": { + "type": "integer" + }, + "Type": {}, + "ResourcePath": {}, + "FullyQualifiedDomainName": {}, + "SearchString": {}, + "RequestInterval": { + "type": "integer" + }, + "FailureThreshold": { + "type": "integer" + }, + "MeasureLatency": { + "type": "boolean" + }, + "Inverted": { + "type": "boolean" + }, + "HealthThreshold": { + "type": "integer" + }, + "ChildHealthChecks": { + "shape": "S1o" + }, + "EnableSNI": { + "type": "boolean" + }, + "Regions": { + "shape": "S1q" + }, + "AlarmIdentifier": { + "shape": "S1s" + }, + "InsufficientDataHealthStatus": {} + } + }, + "S1o": { + "type": "list", + "member": { + "locationName": "ChildHealthCheck" + } + }, + "S1q": { + "type": "list", + "member": { + "locationName": "Region" + } + }, + "S1s": { + "type": "structure", + "required": [ + "Region", + "Name" + ], + "members": { + "Region": {}, + "Name": {} + } + }, + "S1x": { + "type": "structure", + "required": [ + "Id", + "CallerReference", + "HealthCheckConfig", + "HealthCheckVersion" + ], + "members": { + "Id": {}, + "CallerReference": {}, + "HealthCheckConfig": { + "shape": "S1c" + }, + "HealthCheckVersion": { + "type": "long" + }, + "CloudWatchAlarmConfiguration": { + "type": "structure", + "required": [ + "EvaluationPeriods", + "Threshold", + "ComparisonOperator", + "Period", + "MetricName", + "Namespace", + "Statistic" + ], + "members": { + "EvaluationPeriods": { + "type": "integer" + }, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {}, + "Period": { + "type": "integer" + }, + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "type": "list", + "member": { + "locationName": "Dimension", + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + } + } + } + } + } + } + }, + "S2d": { + "type": "structure", + "members": { + "Comment": {}, + "PrivateZone": { + "type": "boolean" + } + } + }, + "S2g": { + "type": "structure", + "required": [ + "Id", + "Name", + "CallerReference" + ], + "members": { + "Id": {}, + "Name": {}, + "CallerReference": {}, + "Config": { + "shape": "S2d" + }, + "ResourceRecordSetCount": { + "type": "long" + } + } + }, + "S2i": { + "type": "structure", + "required": [ + "NameServers" + ], + "members": { + "Id": {}, + "CallerReference": {}, + "NameServers": { + "type": "list", + "member": { + "locationName": "NameServer" + } + } + } + }, + "S2r": { + "type": "structure", + "required": [ + "Id", + "Version", + "Name", + "Type", + "Document" + ], + "members": { + "Id": {}, + "Version": { + "type": "integer" + }, + "Name": {}, + "Type": {}, + "Document": {}, + "Comment": {} + } + }, + "S2w": { + "type": "structure", + "required": [ + "Id", + "HostedZoneId", + "Name", + "TTL", + "State", + "Message", + "TrafficPolicyId", + "TrafficPolicyVersion", + "TrafficPolicyType" + ], + "members": { + "Id": {}, + "HostedZoneId": {}, + "Name": {}, + "TTL": { + "type": "long" + }, + "State": {}, + "Message": {}, + "TrafficPolicyId": {}, + "TrafficPolicyVersion": { + "type": "integer" + }, + "TrafficPolicyType": {} + } + }, + "S3i": { + "type": "structure", + "required": [ + "Id", + "Status" + ], + "members": { + "Id": {}, + "SubmittedAt": { + "type": "timestamp" + }, + "Status": {}, + "Comment": {}, + "Submitter": {}, + "Changes": { + "shape": "Se" + } + }, + "deprecated": true + }, + "S3q": { + "type": "structure", + "members": { + "ContinentCode": {}, + "ContinentName": {}, + "CountryCode": {}, + "CountryName": {}, + "SubdivisionCode": {}, + "SubdivisionName": {} + } + }, + "S41": { + "type": "list", + "member": { + "locationName": "HealthCheckObservation", + "type": "structure", + "members": { + "Region": {}, + "IPAddress": {}, + "StatusReport": { + "type": "structure", + "members": { + "Status": {}, + "CheckedTime": { + "type": "timestamp" + } + } + } + } + } + }, + "S4n": { + "type": "string", + "deprecated": true + }, + "S4s": { + "type": "list", + "member": { + "shape": "S3i", + "locationName": "ChangeBatchRecord" + }, + "deprecated": true + }, + "S53": { + "type": "list", + "member": { + "shape": "S2g", + "locationName": "HostedZone" + } + }, + "S5e": { + "type": "structure", + "members": { + "ResourceType": {}, + "ResourceId": {}, + "Tags": { + "shape": "S14" + } + } + }, + "S5p": { + "type": "list", + "member": { + "shape": "S2w", + "locationName": "TrafficPolicyInstance" + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json b/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json new file mode 100644 index 0000000..d472f47 --- /dev/null +++ b/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json @@ -0,0 +1,33 @@ +{ + "pagination": { + "ListHealthChecks": { + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "IsTruncated", + "limit_key": "MaxItems", + "result_key": "HealthChecks" + }, + "ListHostedZones": { + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "IsTruncated", + "limit_key": "MaxItems", + "result_key": "HostedZones" + }, + "ListResourceRecordSets": { + "more_results": "IsTruncated", + "limit_key": "MaxItems", + "result_key": "ResourceRecordSets", + "input_token": [ + "StartRecordName", + "StartRecordType", + "StartRecordIdentifier" + ], + "output_token": [ + "NextRecordName", + "NextRecordType", + "NextRecordIdentifier" + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json b/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json new file mode 100644 index 0000000..94aad39 --- /dev/null +++ b/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json @@ -0,0 +1,18 @@ +{ + "version": 2, + "waiters": { + "ResourceRecordSetsChanged": { + "delay": 30, + "maxAttempts": 60, + "operation": "GetChange", + "acceptors": [ + { + "matcher": "path", + "expected": "INSYNC", + "argument": "ChangeInfo.Status", + "state": "success" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json b/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json new file mode 100644 index 0000000..65e3a5f --- /dev/null +++ b/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json @@ -0,0 +1,747 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-05-15", + "endpointPrefix": "route53domains", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon Route 53 Domains", + "signatureVersion": "v4", + "targetPrefix": "Route53Domains_v20140515" + }, + "operations": { + "CheckDomainAvailability": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "IdnLangCode": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Availability" + ], + "members": { + "Availability": {} + } + } + }, + "DeleteTagsForDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "TagsToDelete" + ], + "members": { + "DomainName": {}, + "TagsToDelete": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableDomainAutoRenew": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableDomainTransferLock": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "EnableDomainAutoRenew": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "EnableDomainTransferLock": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "GetContactReachabilityStatus": { + "input": { + "type": "structure", + "members": { + "domainName": {} + } + }, + "output": { + "type": "structure", + "members": { + "domainName": {}, + "status": {} + } + } + }, + "GetDomainDetail": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DomainName", + "Nameservers", + "AdminContact", + "RegistrantContact", + "TechContact" + ], + "members": { + "DomainName": {}, + "Nameservers": { + "shape": "So" + }, + "AutoRenew": { + "type": "boolean" + }, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + }, + "AdminPrivacy": { + "type": "boolean" + }, + "RegistrantPrivacy": { + "type": "boolean" + }, + "TechPrivacy": { + "type": "boolean" + }, + "RegistrarName": {}, + "WhoIsServer": {}, + "RegistrarUrl": {}, + "AbuseContactEmail": {}, + "AbuseContactPhone": {}, + "RegistryDomainId": {}, + "CreationDate": { + "type": "timestamp" + }, + "UpdatedDate": { + "type": "timestamp" + }, + "ExpirationDate": { + "type": "timestamp" + }, + "Reseller": {}, + "DnsSec": {}, + "StatusList": { + "type": "list", + "member": {} + } + } + } + }, + "GetDomainSuggestions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "SuggestionCount", + "OnlyAvailable" + ], + "members": { + "DomainName": {}, + "SuggestionCount": { + "type": "integer" + }, + "OnlyAvailable": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "SuggestionsList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DomainName": {}, + "Availability": {} + } + } + } + } + } + }, + "GetOperationDetail": { + "input": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + }, + "output": { + "type": "structure", + "members": { + "OperationId": {}, + "Status": {}, + "Message": {}, + "DomainName": {}, + "Type": {}, + "SubmittedDate": { + "type": "timestamp" + } + } + } + }, + "ListDomains": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Domains" + ], + "members": { + "Domains": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AutoRenew": { + "type": "boolean" + }, + "TransferLock": { + "type": "boolean" + }, + "Expiry": { + "type": "timestamp" + } + } + } + }, + "NextPageMarker": {} + } + } + }, + "ListOperations": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Operations" + ], + "members": { + "Operations": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "OperationId", + "Status", + "Type", + "SubmittedDate" + ], + "members": { + "OperationId": {}, + "Status": {}, + "Type": {}, + "SubmittedDate": { + "type": "timestamp" + } + } + } + }, + "NextPageMarker": {} + } + } + }, + "ListTagsForDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TagList" + ], + "members": { + "TagList": { + "shape": "S24" + } + } + } + }, + "RegisterDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "DurationInYears", + "AdminContact", + "RegistrantContact", + "TechContact" + ], + "members": { + "DomainName": {}, + "IdnLangCode": {}, + "DurationInYears": { + "type": "integer" + }, + "AutoRenew": { + "type": "boolean" + }, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + }, + "PrivacyProtectAdminContact": { + "type": "boolean" + }, + "PrivacyProtectRegistrantContact": { + "type": "boolean" + }, + "PrivacyProtectTechContact": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "RenewDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "CurrentExpiryYear" + ], + "members": { + "DomainName": {}, + "DurationInYears": { + "type": "integer" + }, + "CurrentExpiryYear": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "ResendContactReachabilityEmail": { + "input": { + "type": "structure", + "members": { + "domainName": {} + } + }, + "output": { + "type": "structure", + "members": { + "domainName": {}, + "emailAddress": {}, + "isAlreadyVerified": { + "type": "boolean" + } + } + } + }, + "RetrieveDomainAuthCode": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "AuthCode" + ], + "members": { + "AuthCode": { + "shape": "S2h" + } + } + } + }, + "TransferDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "DurationInYears", + "AdminContact", + "RegistrantContact", + "TechContact" + ], + "members": { + "DomainName": {}, + "IdnLangCode": {}, + "DurationInYears": { + "type": "integer" + }, + "Nameservers": { + "shape": "So" + }, + "AuthCode": { + "shape": "S2h" + }, + "AutoRenew": { + "type": "boolean" + }, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + }, + "PrivacyProtectAdminContact": { + "type": "boolean" + }, + "PrivacyProtectRegistrantContact": { + "type": "boolean" + }, + "PrivacyProtectTechContact": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateDomainContact": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateDomainContactPrivacy": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AdminPrivacy": { + "type": "boolean" + }, + "RegistrantPrivacy": { + "type": "boolean" + }, + "TechPrivacy": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateDomainNameservers": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Nameservers" + ], + "members": { + "DomainName": {}, + "FIAuthKey": {}, + "Nameservers": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateTagsForDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "TagsToUpdate": { + "shape": "S24" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ViewBilling": { + "input": { + "type": "structure", + "members": { + "Start": { + "type": "timestamp" + }, + "End": { + "type": "timestamp" + }, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextPageMarker": {}, + "BillingRecords": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DomainName": {}, + "Operation": {}, + "InvoiceId": {}, + "BillDate": { + "type": "timestamp" + }, + "Price": { + "type": "double" + } + } + } + } + } + } + } + }, + "shapes": { + "So": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "GlueIps": { + "type": "list", + "member": {} + } + } + } + }, + "Su": { + "type": "structure", + "members": { + "FirstName": {}, + "LastName": {}, + "ContactType": {}, + "OrganizationName": {}, + "AddressLine1": {}, + "AddressLine2": {}, + "City": {}, + "State": {}, + "CountryCode": {}, + "ZipCode": {}, + "PhoneNumber": {}, + "Email": {}, + "Fax": {}, + "ExtraParams": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + } + } + } + }, + "sensitive": true + }, + "S24": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S2h": { + "type": "string", + "sensitive": true + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json b/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json new file mode 100644 index 0000000..8d1a73a --- /dev/null +++ b/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json @@ -0,0 +1,17 @@ +{ + "version": "1.0", + "pagination": { + "ListDomains": { + "limit_key": "MaxItems", + "input_token": "Marker", + "output_token": "NextPageMarker", + "result_key": "Domains" + }, + "ListOperations": { + "limit_key": "MaxItems", + "input_token": "Marker", + "output_token": "NextPageMarker", + "result_key": "Operations" + } + } +} diff --git a/node_modules/aws-sdk/apis/s3-2006-03-01.min.json b/node_modules/aws-sdk/apis/s3-2006-03-01.min.json new file mode 100644 index 0000000..ede334d --- /dev/null +++ b/node_modules/aws-sdk/apis/s3-2006-03-01.min.json @@ -0,0 +1,3787 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2006-03-01", + "checksumFormat": "md5", + "endpointPrefix": "s3", + "globalEndpoint": "s3.amazonaws.com", + "protocol": "rest-xml", + "serviceAbbreviation": "Amazon S3", + "serviceFullName": "Amazon Simple Storage Service", + "signatureVersion": "s3", + "timestampFormat": "rfc822" + }, + "operations": { + "AbortMultipartUpload": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "CompleteMultipartUpload": { + "http": { + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "MultipartUpload": { + "locationName": "CompleteMultipartUpload", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "Parts": { + "locationName": "Part", + "type": "list", + "member": { + "type": "structure", + "members": { + "ETag": {}, + "PartNumber": { + "type": "integer" + } + } + }, + "flattened": true + } + } + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "MultipartUpload" + }, + "output": { + "type": "structure", + "members": { + "Location": {}, + "Bucket": {}, + "Key": {}, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "ETag": {}, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "CopyObject": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "CopySource", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "CopySource": { + "location": "header", + "locationName": "x-amz-copy-source" + }, + "CopySourceIfMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-match" + }, + "CopySourceIfModifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-modified-since", + "type": "timestamp" + }, + "CopySourceIfNoneMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-none-match" + }, + "CopySourceIfUnmodifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-unmodified-since", + "type": "timestamp" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "MetadataDirective": { + "location": "header", + "locationName": "x-amz-metadata-directive" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "CopySourceSSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" + }, + "CopySourceSSECustomerKey": { + "shape": "S1b", + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key" + }, + "CopySourceSSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "CopyObjectResult": { + "type": "structure", + "members": { + "ETag": {}, + "LastModified": { + "type": "timestamp" + } + } + }, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "CopySourceVersionId": { + "location": "header", + "locationName": "x-amz-copy-source-version-id" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + }, + "payload": "CopyObjectResult" + }, + "alias": "PutObjectCopy" + }, + "CreateBucket": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CreateBucketConfiguration": { + "locationName": "CreateBucketConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "LocationConstraint": {} + } + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWrite": { + "location": "header", + "locationName": "x-amz-grant-write" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + } + }, + "payload": "CreateBucketConfiguration" + }, + "output": { + "type": "structure", + "members": { + "Location": { + "location": "header", + "locationName": "Location" + } + } + }, + "alias": "PutBucket" + }, + "CreateMultipartUpload": { + "http": { + "requestUri": "/{Bucket}/{Key+}?uploads" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "AbortDate": { + "location": "header", + "locationName": "x-amz-abort-date", + "type": "timestamp" + }, + "AbortRuleId": { + "location": "header", + "locationName": "x-amz-abort-rule-id" + }, + "Bucket": { + "locationName": "Bucket" + }, + "Key": {}, + "UploadId": {}, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + }, + "alias": "InitiateMultipartUpload" + }, + "DeleteBucket": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketCors": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?cors" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketLifecycle": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?policy" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketReplication": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?replication" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketTagging": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?tagging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketWebsite": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?website" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteObject": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "MFA": { + "location": "header", + "locationName": "x-amz-mfa" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "DeleteMarker": { + "location": "header", + "locationName": "x-amz-delete-marker", + "type": "boolean" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "DeleteObjects": { + "http": { + "requestUri": "/{Bucket}?delete" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Delete" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delete": { + "locationName": "Delete", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Objects" + ], + "members": { + "Objects": { + "locationName": "Object", + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "VersionId": {} + } + }, + "flattened": true + }, + "Quiet": { + "type": "boolean" + } + } + }, + "MFA": { + "location": "header", + "locationName": "x-amz-mfa" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "Delete" + }, + "output": { + "type": "structure", + "members": { + "Deleted": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "VersionId": {}, + "DeleteMarker": { + "type": "boolean" + }, + "DeleteMarkerVersionId": {} + } + }, + "flattened": true + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + }, + "Errors": { + "locationName": "Error", + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "VersionId": {}, + "Code": {}, + "Message": {} + } + }, + "flattened": true + } + } + }, + "alias": "DeleteMultipleObjects" + }, + "GetBucketAccelerateConfiguration": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?accelerate" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Status": {} + } + } + }, + "GetBucketAcl": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Owner": { + "shape": "S2k" + }, + "Grants": { + "shape": "S2n", + "locationName": "AccessControlList" + } + } + } + }, + "GetBucketCors": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?cors" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "CORSRules": { + "shape": "S2w", + "locationName": "CORSRule" + } + } + } + }, + "GetBucketLifecycle": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Rules": { + "shape": "S39", + "locationName": "Rule" + } + } + }, + "deprecated": true + }, + "GetBucketLifecycleConfiguration": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Rules": { + "shape": "S3p", + "locationName": "Rule" + } + } + } + }, + "GetBucketLocation": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?location" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "LocationConstraint": {} + } + } + }, + "GetBucketLogging": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?logging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "LoggingEnabled": { + "shape": "S3x" + } + } + } + }, + "GetBucketNotification": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "shape": "S43" + }, + "output": { + "shape": "S44" + }, + "deprecated": true + }, + "GetBucketNotificationConfiguration": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "shape": "S43" + }, + "output": { + "shape": "S4f" + } + }, + "GetBucketPolicy": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?policy" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Policy": {} + }, + "payload": "Policy" + } + }, + "GetBucketReplication": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?replication" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationConfiguration": { + "shape": "S4y" + } + }, + "payload": "ReplicationConfiguration" + } + }, + "GetBucketRequestPayment": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?requestPayment" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Payer": {} + } + } + }, + "GetBucketTagging": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?tagging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TagSet" + ], + "members": { + "TagSet": { + "shape": "S59" + } + } + } + }, + "GetBucketVersioning": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?versioning" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Status": {}, + "MFADelete": { + "locationName": "MfaDelete" + } + } + } + }, + "GetBucketWebsite": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?website" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "RedirectAllRequestsTo": { + "shape": "S5i" + }, + "IndexDocument": { + "shape": "S5l" + }, + "ErrorDocument": { + "shape": "S5n" + }, + "RoutingRules": { + "shape": "S5o" + } + } + } + }, + "GetObject": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + }, + "IfModifiedSince": { + "location": "header", + "locationName": "If-Modified-Since", + "type": "timestamp" + }, + "IfNoneMatch": { + "location": "header", + "locationName": "If-None-Match" + }, + "IfUnmodifiedSince": { + "location": "header", + "locationName": "If-Unmodified-Since", + "type": "timestamp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Range": { + "location": "header", + "locationName": "Range" + }, + "ResponseCacheControl": { + "location": "querystring", + "locationName": "response-cache-control" + }, + "ResponseContentDisposition": { + "location": "querystring", + "locationName": "response-content-disposition" + }, + "ResponseContentEncoding": { + "location": "querystring", + "locationName": "response-content-encoding" + }, + "ResponseContentLanguage": { + "location": "querystring", + "locationName": "response-content-language" + }, + "ResponseContentType": { + "location": "querystring", + "locationName": "response-content-type" + }, + "ResponseExpires": { + "location": "querystring", + "locationName": "response-expires", + "type": "timestamp" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Body": { + "streaming": true, + "type": "blob" + }, + "DeleteMarker": { + "location": "header", + "locationName": "x-amz-delete-marker", + "type": "boolean" + }, + "AcceptRanges": { + "location": "header", + "locationName": "accept-ranges" + }, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "Restore": { + "location": "header", + "locationName": "x-amz-restore" + }, + "LastModified": { + "location": "header", + "locationName": "Last-Modified", + "type": "timestamp" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "MissingMeta": { + "location": "header", + "locationName": "x-amz-missing-meta", + "type": "integer" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentRange": { + "location": "header", + "locationName": "Content-Range" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + }, + "ReplicationStatus": { + "location": "header", + "locationName": "x-amz-replication-status" + }, + "PartsCount": { + "location": "header", + "locationName": "x-amz-mp-parts-count", + "type": "integer" + } + }, + "payload": "Body" + } + }, + "GetObjectAcl": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Owner": { + "shape": "S2k" + }, + "Grants": { + "shape": "S2n", + "locationName": "AccessControlList" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "GetObjectTorrent": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}?torrent" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Body": { + "streaming": true, + "type": "blob" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + }, + "payload": "Body" + } + }, + "HeadBucket": { + "http": { + "method": "HEAD", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "HeadObject": { + "http": { + "method": "HEAD", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + }, + "IfModifiedSince": { + "location": "header", + "locationName": "If-Modified-Since", + "type": "timestamp" + }, + "IfNoneMatch": { + "location": "header", + "locationName": "If-None-Match" + }, + "IfUnmodifiedSince": { + "location": "header", + "locationName": "If-Unmodified-Since", + "type": "timestamp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Range": { + "location": "header", + "locationName": "Range" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "DeleteMarker": { + "location": "header", + "locationName": "x-amz-delete-marker", + "type": "boolean" + }, + "AcceptRanges": { + "location": "header", + "locationName": "accept-ranges" + }, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "Restore": { + "location": "header", + "locationName": "x-amz-restore" + }, + "LastModified": { + "location": "header", + "locationName": "Last-Modified", + "type": "timestamp" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "MissingMeta": { + "location": "header", + "locationName": "x-amz-missing-meta", + "type": "integer" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + }, + "ReplicationStatus": { + "location": "header", + "locationName": "x-amz-replication-status" + }, + "PartsCount": { + "location": "header", + "locationName": "x-amz-mp-parts-count", + "type": "integer" + } + } + } + }, + "ListBuckets": { + "http": { + "method": "GET" + }, + "output": { + "type": "structure", + "members": { + "Buckets": { + "type": "list", + "member": { + "locationName": "Bucket", + "type": "structure", + "members": { + "Name": {}, + "CreationDate": { + "type": "timestamp" + } + } + } + }, + "Owner": { + "shape": "S2k" + } + } + }, + "alias": "GetService" + }, + "ListMultipartUploads": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?uploads" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "KeyMarker": { + "location": "querystring", + "locationName": "key-marker" + }, + "MaxUploads": { + "location": "querystring", + "locationName": "max-uploads", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "UploadIdMarker": { + "location": "querystring", + "locationName": "upload-id-marker" + } + } + }, + "output": { + "type": "structure", + "members": { + "Bucket": {}, + "KeyMarker": {}, + "UploadIdMarker": {}, + "NextKeyMarker": {}, + "Prefix": {}, + "Delimiter": {}, + "NextUploadIdMarker": {}, + "MaxUploads": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Uploads": { + "locationName": "Upload", + "type": "list", + "member": { + "type": "structure", + "members": { + "UploadId": {}, + "Key": {}, + "Initiated": { + "type": "timestamp" + }, + "StorageClass": {}, + "Owner": { + "shape": "S2k" + }, + "Initiator": { + "shape": "S76" + } + } + }, + "flattened": true + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {} + } + } + }, + "ListObjectVersions": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?versions" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "KeyMarker": { + "location": "querystring", + "locationName": "key-marker" + }, + "MaxKeys": { + "location": "querystring", + "locationName": "max-keys", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "VersionIdMarker": { + "location": "querystring", + "locationName": "version-id-marker" + } + } + }, + "output": { + "type": "structure", + "members": { + "IsTruncated": { + "type": "boolean" + }, + "KeyMarker": {}, + "VersionIdMarker": {}, + "NextKeyMarker": {}, + "NextVersionIdMarker": {}, + "Versions": { + "locationName": "Version", + "type": "list", + "member": { + "type": "structure", + "members": { + "ETag": {}, + "Size": { + "type": "integer" + }, + "StorageClass": {}, + "Key": {}, + "VersionId": {}, + "IsLatest": { + "type": "boolean" + }, + "LastModified": { + "type": "timestamp" + }, + "Owner": { + "shape": "S2k" + } + } + }, + "flattened": true + }, + "DeleteMarkers": { + "locationName": "DeleteMarker", + "type": "list", + "member": { + "type": "structure", + "members": { + "Owner": { + "shape": "S2k" + }, + "Key": {}, + "VersionId": {}, + "IsLatest": { + "type": "boolean" + }, + "LastModified": { + "type": "timestamp" + } + } + }, + "flattened": true + }, + "Name": {}, + "Prefix": {}, + "Delimiter": {}, + "MaxKeys": { + "type": "integer" + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {} + } + }, + "alias": "GetBucketObjectVersions" + }, + "ListObjects": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxKeys": { + "location": "querystring", + "locationName": "max-keys", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "IsTruncated": { + "type": "boolean" + }, + "Marker": {}, + "NextMarker": {}, + "Contents": { + "shape": "S7p" + }, + "Name": {}, + "Prefix": {}, + "Delimiter": {}, + "MaxKeys": { + "type": "integer" + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {} + } + }, + "alias": "GetBucket" + }, + "ListObjectsV2": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?list-type=2" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "MaxKeys": { + "location": "querystring", + "locationName": "max-keys", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "ContinuationToken": { + "location": "querystring", + "locationName": "continuation-token" + }, + "FetchOwner": { + "location": "querystring", + "locationName": "fetch-owner", + "type": "boolean" + }, + "StartAfter": { + "location": "querystring", + "locationName": "start-after" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "IsTruncated": { + "type": "boolean" + }, + "Contents": { + "shape": "S7p" + }, + "Name": {}, + "Prefix": {}, + "Delimiter": {}, + "MaxKeys": { + "type": "integer" + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {}, + "KeyCount": { + "type": "integer" + }, + "ContinuationToken": {}, + "NextContinuationToken": {}, + "StartAfter": {} + } + } + }, + "ListParts": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "MaxParts": { + "location": "querystring", + "locationName": "max-parts", + "type": "integer" + }, + "PartNumberMarker": { + "location": "querystring", + "locationName": "part-number-marker", + "type": "integer" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "AbortDate": { + "location": "header", + "locationName": "x-amz-abort-date", + "type": "timestamp" + }, + "AbortRuleId": { + "location": "header", + "locationName": "x-amz-abort-rule-id" + }, + "Bucket": {}, + "Key": {}, + "UploadId": {}, + "PartNumberMarker": { + "type": "integer" + }, + "NextPartNumberMarker": { + "type": "integer" + }, + "MaxParts": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Parts": { + "locationName": "Part", + "type": "list", + "member": { + "type": "structure", + "members": { + "PartNumber": { + "type": "integer" + }, + "LastModified": { + "type": "timestamp" + }, + "ETag": {}, + "Size": { + "type": "integer" + } + } + }, + "flattened": true + }, + "Initiator": { + "shape": "S76" + }, + "Owner": { + "shape": "S2k" + }, + "StorageClass": {}, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "PutBucketAccelerateConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?accelerate" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "AccelerateConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "AccelerateConfiguration": { + "locationName": "AccelerateConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "Status": {} + } + } + }, + "payload": "AccelerateConfiguration" + } + }, + "PutBucketAcl": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "AccessControlPolicy": { + "shape": "S89", + "locationName": "AccessControlPolicy", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWrite": { + "location": "header", + "locationName": "x-amz-grant-write" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + } + }, + "payload": "AccessControlPolicy" + } + }, + "PutBucketCors": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?cors" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "CORSConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CORSConfiguration": { + "locationName": "CORSConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "CORSRules" + ], + "members": { + "CORSRules": { + "shape": "S2w", + "locationName": "CORSRule" + } + } + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + } + }, + "payload": "CORSConfiguration" + } + }, + "PutBucketLifecycle": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "LifecycleConfiguration": { + "locationName": "LifecycleConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Rules" + ], + "members": { + "Rules": { + "shape": "S39", + "locationName": "Rule" + } + } + } + }, + "payload": "LifecycleConfiguration" + }, + "deprecated": true + }, + "PutBucketLifecycleConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "LifecycleConfiguration": { + "locationName": "LifecycleConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Rules" + ], + "members": { + "Rules": { + "shape": "S3p", + "locationName": "Rule" + } + } + } + }, + "payload": "LifecycleConfiguration" + } + }, + "PutBucketLogging": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?logging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "BucketLoggingStatus" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "BucketLoggingStatus": { + "locationName": "BucketLoggingStatus", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "LoggingEnabled": { + "shape": "S3x" + } + } + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + } + }, + "payload": "BucketLoggingStatus" + } + }, + "PutBucketNotification": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "NotificationConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "NotificationConfiguration": { + "shape": "S44", + "locationName": "NotificationConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + } + }, + "payload": "NotificationConfiguration" + }, + "deprecated": true + }, + "PutBucketNotificationConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "NotificationConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "NotificationConfiguration": { + "shape": "S4f", + "locationName": "NotificationConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + } + }, + "payload": "NotificationConfiguration" + } + }, + "PutBucketPolicy": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?policy" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Policy" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "Policy": {} + }, + "payload": "Policy" + } + }, + "PutBucketReplication": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?replication" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "ReplicationConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "ReplicationConfiguration": { + "shape": "S4y", + "locationName": "ReplicationConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + } + }, + "payload": "ReplicationConfiguration" + } + }, + "PutBucketRequestPayment": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?requestPayment" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "RequestPaymentConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "RequestPaymentConfiguration": { + "locationName": "RequestPaymentConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Payer" + ], + "members": { + "Payer": {} + } + } + }, + "payload": "RequestPaymentConfiguration" + } + }, + "PutBucketTagging": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?tagging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Tagging" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "Tagging": { + "locationName": "Tagging", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "TagSet" + ], + "members": { + "TagSet": { + "shape": "S59" + } + } + } + }, + "payload": "Tagging" + } + }, + "PutBucketVersioning": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?versioning" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "VersioningConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "MFA": { + "location": "header", + "locationName": "x-amz-mfa" + }, + "VersioningConfiguration": { + "locationName": "VersioningConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "MFADelete": { + "locationName": "MfaDelete" + }, + "Status": {} + } + } + }, + "payload": "VersioningConfiguration" + } + }, + "PutBucketWebsite": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?website" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "WebsiteConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "WebsiteConfiguration": { + "locationName": "WebsiteConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "ErrorDocument": { + "shape": "S5n" + }, + "IndexDocument": { + "shape": "S5l" + }, + "RedirectAllRequestsTo": { + "shape": "S5i" + }, + "RoutingRules": { + "shape": "S5o" + } + } + } + }, + "payload": "WebsiteConfiguration" + } + }, + "PutObject": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Body": { + "streaming": true, + "type": "blob" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "Body" + }, + "output": { + "type": "structure", + "members": { + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "PutObjectAcl": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "AccessControlPolicy": { + "shape": "S89", + "locationName": "AccessControlPolicy", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWrite": { + "location": "header", + "locationName": "x-amz-grant-write" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + } + }, + "payload": "AccessControlPolicy" + }, + "output": { + "type": "structure", + "members": { + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "RestoreObject": { + "http": { + "requestUri": "/{Bucket}/{Key+}?restore" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "RestoreRequest": { + "locationName": "RestoreRequest", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Days" + ], + "members": { + "Days": { + "type": "integer" + } + } + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "RestoreRequest" + }, + "output": { + "type": "structure", + "members": { + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + }, + "alias": "PostObjectRestore" + }, + "UploadPart": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "PartNumber", + "UploadId" + ], + "members": { + "Body": { + "streaming": true, + "type": "blob" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "Body" + }, + "output": { + "type": "structure", + "members": { + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "UploadPartCopy": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "CopySource", + "Key", + "PartNumber", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CopySource": { + "location": "header", + "locationName": "x-amz-copy-source" + }, + "CopySourceIfMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-match" + }, + "CopySourceIfModifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-modified-since", + "type": "timestamp" + }, + "CopySourceIfNoneMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-none-match" + }, + "CopySourceIfUnmodifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-unmodified-since", + "type": "timestamp" + }, + "CopySourceRange": { + "location": "header", + "locationName": "x-amz-copy-source-range" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "CopySourceSSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" + }, + "CopySourceSSECustomerKey": { + "shape": "S1b", + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key" + }, + "CopySourceSSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "CopySourceVersionId": { + "location": "header", + "locationName": "x-amz-copy-source-version-id" + }, + "CopyPartResult": { + "type": "structure", + "members": { + "ETag": {}, + "LastModified": { + "type": "timestamp" + } + } + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + }, + "payload": "CopyPartResult" + } + } + }, + "shapes": { + "Sj": { + "type": "string", + "sensitive": true + }, + "S11": { + "type": "map", + "key": {}, + "value": {} + }, + "S18": { + "type": "blob", + "sensitive": true + }, + "S1b": { + "type": "blob", + "sensitive": true + }, + "S2k": { + "type": "structure", + "members": { + "DisplayName": {}, + "ID": {} + } + }, + "S2n": { + "type": "list", + "member": { + "locationName": "Grant", + "type": "structure", + "members": { + "Grantee": { + "shape": "S2p" + }, + "Permission": {} + } + } + }, + "S2p": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "DisplayName": {}, + "EmailAddress": {}, + "ID": {}, + "Type": { + "locationName": "xsi:type", + "xmlAttribute": true + }, + "URI": {} + }, + "xmlNamespace": { + "prefix": "xsi", + "uri": "http://www.w3.org/2001/XMLSchema-instance" + } + }, + "S2w": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AllowedMethods", + "AllowedOrigins" + ], + "members": { + "AllowedHeaders": { + "locationName": "AllowedHeader", + "type": "list", + "member": {}, + "flattened": true + }, + "AllowedMethods": { + "locationName": "AllowedMethod", + "type": "list", + "member": {}, + "flattened": true + }, + "AllowedOrigins": { + "locationName": "AllowedOrigin", + "type": "list", + "member": {}, + "flattened": true + }, + "ExposeHeaders": { + "locationName": "ExposeHeader", + "type": "list", + "member": {}, + "flattened": true + }, + "MaxAgeSeconds": { + "type": "integer" + } + } + }, + "flattened": true + }, + "S39": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Prefix", + "Status" + ], + "members": { + "Expiration": { + "shape": "S3b" + }, + "ID": {}, + "Prefix": {}, + "Status": {}, + "Transition": { + "shape": "S3h" + }, + "NoncurrentVersionTransition": { + "shape": "S3j" + }, + "NoncurrentVersionExpiration": { + "shape": "S3k" + }, + "AbortIncompleteMultipartUpload": { + "shape": "S3l" + } + } + }, + "flattened": true + }, + "S3b": { + "type": "structure", + "members": { + "Date": { + "shape": "S3c" + }, + "Days": { + "type": "integer" + }, + "ExpiredObjectDeleteMarker": { + "type": "boolean" + } + } + }, + "S3c": { + "type": "timestamp", + "timestampFormat": "iso8601" + }, + "S3h": { + "type": "structure", + "members": { + "Date": { + "shape": "S3c" + }, + "Days": { + "type": "integer" + }, + "StorageClass": {} + } + }, + "S3j": { + "type": "structure", + "members": { + "NoncurrentDays": { + "type": "integer" + }, + "StorageClass": {} + } + }, + "S3k": { + "type": "structure", + "members": { + "NoncurrentDays": { + "type": "integer" + } + } + }, + "S3l": { + "type": "structure", + "members": { + "DaysAfterInitiation": { + "type": "integer" + } + } + }, + "S3p": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Prefix", + "Status" + ], + "members": { + "Expiration": { + "shape": "S3b" + }, + "ID": {}, + "Prefix": {}, + "Status": {}, + "Transitions": { + "locationName": "Transition", + "type": "list", + "member": { + "shape": "S3h" + }, + "flattened": true + }, + "NoncurrentVersionTransitions": { + "locationName": "NoncurrentVersionTransition", + "type": "list", + "member": { + "shape": "S3j" + }, + "flattened": true + }, + "NoncurrentVersionExpiration": { + "shape": "S3k" + }, + "AbortIncompleteMultipartUpload": { + "shape": "S3l" + } + } + }, + "flattened": true + }, + "S3x": { + "type": "structure", + "members": { + "TargetBucket": {}, + "TargetGrants": { + "type": "list", + "member": { + "locationName": "Grant", + "type": "structure", + "members": { + "Grantee": { + "shape": "S2p" + }, + "Permission": {} + } + } + }, + "TargetPrefix": {} + } + }, + "S43": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "S44": { + "type": "structure", + "members": { + "TopicConfiguration": { + "type": "structure", + "members": { + "Id": {}, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Event": { + "deprecated": true + }, + "Topic": {} + } + }, + "QueueConfiguration": { + "type": "structure", + "members": { + "Id": {}, + "Event": { + "deprecated": true + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Queue": {} + } + }, + "CloudFunctionConfiguration": { + "type": "structure", + "members": { + "Id": {}, + "Event": { + "deprecated": true + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "CloudFunction": {}, + "InvocationRole": {} + } + } + } + }, + "S47": { + "type": "list", + "member": {}, + "flattened": true + }, + "S4f": { + "type": "structure", + "members": { + "TopicConfigurations": { + "locationName": "TopicConfiguration", + "type": "list", + "member": { + "type": "structure", + "required": [ + "TopicArn", + "Events" + ], + "members": { + "Id": {}, + "TopicArn": { + "locationName": "Topic" + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Filter": { + "shape": "S4i" + } + } + }, + "flattened": true + }, + "QueueConfigurations": { + "locationName": "QueueConfiguration", + "type": "list", + "member": { + "type": "structure", + "required": [ + "QueueArn", + "Events" + ], + "members": { + "Id": {}, + "QueueArn": { + "locationName": "Queue" + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Filter": { + "shape": "S4i" + } + } + }, + "flattened": true + }, + "LambdaFunctionConfigurations": { + "locationName": "CloudFunctionConfiguration", + "type": "list", + "member": { + "type": "structure", + "required": [ + "LambdaFunctionArn", + "Events" + ], + "members": { + "Id": {}, + "LambdaFunctionArn": { + "locationName": "CloudFunction" + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Filter": { + "shape": "S4i" + } + } + }, + "flattened": true + } + } + }, + "S4i": { + "type": "structure", + "members": { + "Key": { + "locationName": "S3Key", + "type": "structure", + "members": { + "FilterRules": { + "locationName": "FilterRule", + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Value": {} + } + }, + "flattened": true + } + } + } + } + }, + "S4y": { + "type": "structure", + "required": [ + "Role", + "Rules" + ], + "members": { + "Role": {}, + "Rules": { + "locationName": "Rule", + "type": "list", + "member": { + "type": "structure", + "required": [ + "Prefix", + "Status", + "Destination" + ], + "members": { + "ID": {}, + "Prefix": {}, + "Status": {}, + "Destination": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": {}, + "StorageClass": {} + } + } + } + }, + "flattened": true + } + } + }, + "S59": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S5i": { + "type": "structure", + "required": [ + "HostName" + ], + "members": { + "HostName": {}, + "Protocol": {} + } + }, + "S5l": { + "type": "structure", + "required": [ + "Suffix" + ], + "members": { + "Suffix": {} + } + }, + "S5n": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {} + } + }, + "S5o": { + "type": "list", + "member": { + "locationName": "RoutingRule", + "type": "structure", + "required": [ + "Redirect" + ], + "members": { + "Condition": { + "type": "structure", + "members": { + "HttpErrorCodeReturnedEquals": {}, + "KeyPrefixEquals": {} + } + }, + "Redirect": { + "type": "structure", + "members": { + "HostName": {}, + "HttpRedirectCode": {}, + "Protocol": {}, + "ReplaceKeyPrefixWith": {}, + "ReplaceKeyWith": {} + } + } + } + } + }, + "S76": { + "type": "structure", + "members": { + "ID": {}, + "DisplayName": {} + } + }, + "S77": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Prefix": {} + } + }, + "flattened": true + }, + "S7p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "LastModified": { + "type": "timestamp" + }, + "ETag": {}, + "Size": { + "type": "integer" + }, + "StorageClass": {}, + "Owner": { + "shape": "S2k" + } + } + }, + "flattened": true + }, + "S89": { + "type": "structure", + "members": { + "Grants": { + "shape": "S2n", + "locationName": "AccessControlList" + }, + "Owner": { + "shape": "S2k" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json b/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json new file mode 100644 index 0000000..3498920 --- /dev/null +++ b/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json @@ -0,0 +1,66 @@ +{ + "pagination": { + "ListBuckets": { + "result_key": "Buckets" + }, + "ListMultipartUploads": { + "limit_key": "MaxUploads", + "more_results": "IsTruncated", + "output_token": [ + "NextKeyMarker", + "NextUploadIdMarker" + ], + "input_token": [ + "KeyMarker", + "UploadIdMarker" + ], + "result_key": [ + "Uploads", + "CommonPrefixes" + ] + }, + "ListObjectVersions": { + "more_results": "IsTruncated", + "limit_key": "MaxKeys", + "output_token": [ + "NextKeyMarker", + "NextVersionIdMarker" + ], + "input_token": [ + "KeyMarker", + "VersionIdMarker" + ], + "result_key": [ + "Versions", + "DeleteMarkers", + "CommonPrefixes" + ] + }, + "ListObjects": { + "more_results": "IsTruncated", + "limit_key": "MaxKeys", + "output_token": "NextMarker || Contents[-1].Key", + "input_token": "Marker", + "result_key": [ + "Contents", + "CommonPrefixes" + ] + }, + "ListObjectsV2": { + "limit_key": "MaxKeys", + "output_token": "NextContinuationToken", + "input_token": "ContinuationToken", + "result_key": [ + "Contents", + "CommonPrefixes" + ] + }, + "ListParts": { + "more_results": "IsTruncated", + "limit_key": "MaxParts", + "output_token": "NextPartNumberMarker", + "input_token": "PartNumberMarker", + "result_key": "Parts" + } + } +} diff --git a/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json b/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json new file mode 100644 index 0000000..b508a8f --- /dev/null +++ b/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json @@ -0,0 +1,73 @@ +{ + "version": 2, + "waiters": { + "BucketExists": { + "delay": 5, + "operation": "HeadBucket", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "expected": 301, + "matcher": "status", + "state": "success" + }, + { + "expected": 403, + "matcher": "status", + "state": "success" + }, + { + "expected": 404, + "matcher": "status", + "state": "retry" + } + ] + }, + "BucketNotExists": { + "delay": 5, + "operation": "HeadBucket", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 404, + "matcher": "status", + "state": "success" + } + ] + }, + "ObjectExists": { + "delay": 5, + "operation": "HeadObject", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "expected": 404, + "matcher": "status", + "state": "retry" + } + ] + }, + "ObjectNotExists": { + "delay": 5, + "operation": "HeadObject", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 404, + "matcher": "status", + "state": "success" + } + ] + } + } +} diff --git a/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json b/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json new file mode 100644 index 0000000..e931b3c --- /dev/null +++ b/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json @@ -0,0 +1,336 @@ +{ + "metadata": { + "apiVersion": "2009-04-15", + "endpointPrefix": "sdb", + "serviceFullName": "Amazon SimpleDB", + "signatureVersion": "v2", + "xmlNamespace": "http://sdb.amazonaws.com/doc/2009-04-15/", + "protocol": "query" + }, + "operations": { + "BatchDeleteAttributes": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Items" + ], + "members": { + "DomainName": {}, + "Items": { + "type": "list", + "member": { + "locationName": "Item", + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": { + "locationName": "ItemName" + }, + "Attributes": { + "shape": "S5" + } + } + }, + "flattened": true + } + } + } + }, + "BatchPutAttributes": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Items" + ], + "members": { + "DomainName": {}, + "Items": { + "type": "list", + "member": { + "locationName": "Item", + "type": "structure", + "required": [ + "Name", + "Attributes" + ], + "members": { + "Name": { + "locationName": "ItemName" + }, + "Attributes": { + "shape": "Sa" + } + } + }, + "flattened": true + } + } + } + }, + "CreateDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + } + }, + "DeleteAttributes": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "ItemName" + ], + "members": { + "DomainName": {}, + "ItemName": {}, + "Attributes": { + "shape": "S5" + }, + "Expected": { + "shape": "Sf" + } + } + } + }, + "DeleteDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + } + }, + "DomainMetadata": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "resultWrapper": "DomainMetadataResult", + "type": "structure", + "members": { + "ItemCount": { + "type": "integer" + }, + "ItemNamesSizeBytes": { + "type": "long" + }, + "AttributeNameCount": { + "type": "integer" + }, + "AttributeNamesSizeBytes": { + "type": "long" + }, + "AttributeValueCount": { + "type": "integer" + }, + "AttributeValuesSizeBytes": { + "type": "long" + }, + "Timestamp": { + "type": "integer" + } + } + } + }, + "GetAttributes": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "ItemName" + ], + "members": { + "DomainName": {}, + "ItemName": {}, + "AttributeNames": { + "type": "list", + "member": { + "locationName": "AttributeName" + }, + "flattened": true + }, + "ConsistentRead": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "GetAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "So" + } + } + } + }, + "ListDomains": { + "input": { + "type": "structure", + "members": { + "MaxNumberOfDomains": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListDomainsResult", + "type": "structure", + "members": { + "DomainNames": { + "type": "list", + "member": { + "locationName": "DomainName" + }, + "flattened": true + }, + "NextToken": {} + } + } + }, + "PutAttributes": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "ItemName", + "Attributes" + ], + "members": { + "DomainName": {}, + "ItemName": {}, + "Attributes": { + "shape": "Sa" + }, + "Expected": { + "shape": "Sf" + } + } + } + }, + "Select": { + "input": { + "type": "structure", + "required": [ + "SelectExpression" + ], + "members": { + "SelectExpression": {}, + "NextToken": {}, + "ConsistentRead": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SelectResult", + "type": "structure", + "members": { + "Items": { + "type": "list", + "member": { + "locationName": "Item", + "type": "structure", + "required": [ + "Name", + "Attributes" + ], + "members": { + "Name": {}, + "AlternateNameEncoding": {}, + "Attributes": { + "shape": "So" + } + } + }, + "flattened": true + }, + "NextToken": {} + } + } + } + }, + "shapes": { + "S5": { + "type": "list", + "member": { + "locationName": "Attribute", + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Value": {} + } + }, + "flattened": true + }, + "Sa": { + "type": "list", + "member": { + "locationName": "Attribute", + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {}, + "Replace": { + "type": "boolean" + } + } + }, + "flattened": true + }, + "Sf": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "Exists": { + "type": "boolean" + } + } + }, + "So": { + "type": "list", + "member": { + "locationName": "Attribute", + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "AlternateNameEncoding": {}, + "Value": {}, + "AlternateValueEncoding": {} + } + }, + "flattened": true + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json b/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json new file mode 100644 index 0000000..2362098 --- /dev/null +++ b/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json @@ -0,0 +1,15 @@ +{ + "pagination": { + "ListDomains": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxNumberOfDomains", + "result_key": "DomainNames" + }, + "Select": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Items" + } + } +} diff --git a/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json b/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json new file mode 100644 index 0000000..62e6e73 --- /dev/null +++ b/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json @@ -0,0 +1,529 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-12-10", + "endpointPrefix": "servicecatalog", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Service Catalog", + "signatureVersion": "v4", + "targetPrefix": "AWS242ServiceCatalogService" + }, + "operations": { + "DescribeProduct": { + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "AcceptLanguage": {}, + "Id": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProductViewSummary": { + "shape": "S5" + }, + "ProvisioningArtifacts": { + "shape": "Sf" + } + } + } + }, + "DescribeProductView": { + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "AcceptLanguage": {}, + "Id": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProductViewSummary": { + "shape": "S5" + }, + "ProvisioningArtifacts": { + "shape": "Sf" + } + } + } + }, + "DescribeProvisioningParameters": { + "input": { + "type": "structure", + "required": [ + "ProductId", + "ProvisioningArtifactId" + ], + "members": { + "AcceptLanguage": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProvisioningArtifactParameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterKey": {}, + "DefaultValue": {}, + "ParameterType": {}, + "IsNoEcho": { + "type": "boolean" + }, + "Description": {}, + "ParameterConstraints": { + "type": "structure", + "members": { + "AllowedValues": { + "type": "list", + "member": {} + } + } + } + } + } + }, + "ConstraintSummaries": { + "shape": "Sy" + }, + "UsageInstructions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "Value": {} + } + } + } + } + } + }, + "DescribeRecord": { + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "AcceptLanguage": {}, + "Id": {}, + "PageToken": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + }, + "RecordOutputs": { + "type": "list", + "member": { + "type": "structure", + "members": { + "OutputKey": {}, + "OutputValue": {}, + "Description": {} + } + } + }, + "NextPageToken": {} + } + } + }, + "ListLaunchPaths": { + "input": { + "type": "structure", + "required": [ + "ProductId" + ], + "members": { + "AcceptLanguage": {}, + "ProductId": {}, + "PageSize": { + "type": "integer" + }, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "LaunchPathSummaries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "ConstraintSummaries": { + "shape": "Sy" + }, + "Tags": { + "shape": "S1x" + }, + "Name": {} + } + } + }, + "NextPageToken": {} + } + } + }, + "ListRecordHistory": { + "input": { + "type": "structure", + "members": { + "AcceptLanguage": {}, + "AccessLevelFilter": { + "shape": "S23" + }, + "SearchFilter": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + }, + "PageSize": { + "type": "integer" + }, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetails": { + "type": "list", + "member": { + "shape": "S1a" + } + }, + "NextPageToken": {} + } + } + }, + "ProvisionProduct": { + "input": { + "type": "structure", + "required": [ + "ProductId", + "ProvisioningArtifactId", + "ProvisionedProductName", + "ProvisionToken" + ], + "members": { + "AcceptLanguage": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {}, + "ProvisionedProductName": {}, + "ProvisioningParameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Tags": { + "shape": "S1x" + }, + "NotificationArns": { + "type": "list", + "member": {} + }, + "ProvisionToken": { + "idempotencyToken": true + } + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + } + } + } + }, + "ScanProvisionedProducts": { + "input": { + "type": "structure", + "members": { + "AcceptLanguage": {}, + "AccessLevelFilter": { + "shape": "S23" + }, + "PageSize": { + "type": "integer" + }, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProvisionedProducts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Arn": {}, + "Type": {}, + "Id": {}, + "Status": {}, + "StatusMessage": {}, + "CreatedTime": { + "type": "timestamp" + }, + "IdempotencyToken": {}, + "LastRecordId": {} + } + } + }, + "NextPageToken": {} + } + } + }, + "SearchProducts": { + "input": { + "type": "structure", + "members": { + "AcceptLanguage": {}, + "Filters": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": {} + } + }, + "PageSize": { + "type": "integer" + }, + "SortBy": {}, + "SortOrder": {}, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProductViewSummaries": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "ProductViewAggregations": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Value": {}, + "ApproximateCount": { + "type": "integer" + } + } + } + } + }, + "NextPageToken": {} + } + } + }, + "TerminateProvisionedProduct": { + "input": { + "type": "structure", + "required": [ + "TerminateToken" + ], + "members": { + "ProvisionedProductName": {}, + "ProvisionedProductId": {}, + "TerminateToken": { + "idempotencyToken": true + }, + "IgnoreErrors": { + "type": "boolean" + }, + "AcceptLanguage": {} + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + } + } + } + }, + "UpdateProvisionedProduct": { + "input": { + "type": "structure", + "required": [ + "UpdateToken" + ], + "members": { + "AcceptLanguage": {}, + "ProvisionedProductName": {}, + "ProvisionedProductId": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {}, + "ProvisioningParameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {}, + "UsePreviousValue": { + "type": "boolean" + } + } + } + }, + "UpdateToken": { + "idempotencyToken": true + } + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + } + } + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "members": { + "Id": {}, + "ProductId": {}, + "Name": {}, + "Owner": {}, + "ShortDescription": {}, + "Type": {}, + "Distributor": {}, + "HasDefaultPath": { + "type": "boolean" + }, + "SupportEmail": {}, + "SupportDescription": {}, + "SupportUrl": {} + } + }, + "Sf": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Description": {}, + "CreatedTime": { + "type": "timestamp" + } + } + } + }, + "Sy": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "Description": {} + } + } + }, + "S1a": { + "type": "structure", + "members": { + "RecordId": {}, + "ProvisionedProductName": {}, + "Status": {}, + "CreatedTime": { + "type": "timestamp" + }, + "UpdatedTime": { + "type": "timestamp" + }, + "ProvisionedProductType": {}, + "RecordType": {}, + "ProvisionedProductId": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {}, + "RecordErrors": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Code": {}, + "Description": {} + } + } + }, + "RecordTags": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } + }, + "S1x": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S23": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json b/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json new file mode 100644 index 0000000..72f70f1 --- /dev/null +++ b/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json @@ -0,0 +1,376 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2016-06-30", + "endpointPrefix": "snowball", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon Snowball", + "serviceFullName": "Amazon Import/Export Snowball", + "signatureVersion": "v4", + "targetPrefix": "AWSIESnowballJobManagementService" + }, + "operations": { + "CancelJob": { + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateAddress": { + "input": { + "type": "structure", + "required": [ + "Address" + ], + "members": { + "Address": { + "shape": "S5" + } + } + }, + "output": { + "type": "structure", + "members": { + "AddressId": {} + } + } + }, + "CreateJob": { + "input": { + "type": "structure", + "required": [ + "JobType", + "Resources", + "AddressId", + "RoleARN", + "ShippingOption" + ], + "members": { + "JobType": {}, + "Resources": { + "shape": "Sb" + }, + "Description": {}, + "AddressId": {}, + "KmsKeyARN": {}, + "RoleARN": {}, + "SnowballCapacityPreference": {}, + "ShippingOption": {}, + "Notification": { + "shape": "Sk" + } + } + }, + "output": { + "type": "structure", + "members": { + "JobId": {} + } + } + }, + "DescribeAddress": { + "input": { + "type": "structure", + "required": [ + "AddressId" + ], + "members": { + "AddressId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Address": { + "shape": "S5" + } + } + } + }, + "DescribeAddresses": { + "input": { + "type": "structure", + "members": { + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Addresses": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "NextToken": {} + } + } + }, + "DescribeJob": { + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "JobMetadata": { + "shape": "Sy" + }, + "SubJobMetadata": { + "type": "list", + "member": { + "shape": "Sy" + } + } + } + } + }, + "GetJobManifest": { + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ManifestURI": {} + } + } + }, + "GetJobUnlockCode": { + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UnlockCode": {} + } + } + }, + "GetSnowballUsage": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "SnowballLimit": { + "type": "integer" + }, + "SnowballsInUse": { + "type": "integer" + } + } + } + }, + "ListJobs": { + "input": { + "type": "structure", + "members": { + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "JobListEntries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "JobId": {}, + "JobState": {}, + "IsMaster": { + "type": "boolean" + } + } + } + }, + "NextToken": {} + } + } + }, + "UpdateJob": { + "input": { + "type": "structure", + "required": [ + "JobId" + ], + "members": { + "JobId": {}, + "RoleARN": {}, + "Notification": { + "shape": "Sk" + }, + "Resources": { + "shape": "Sb" + }, + "AddressId": {}, + "ShippingOption": {}, + "Description": {}, + "SnowballCapacityPreference": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "members": { + "AddressId": {}, + "Name": {}, + "Company": {}, + "Street1": {}, + "Street2": {}, + "Street3": {}, + "City": {}, + "StateOrProvince": {}, + "PrefectureOrDistrict": {}, + "Landmark": {}, + "Country": {}, + "PostalCode": {}, + "PhoneNumber": {} + } + }, + "Sb": { + "type": "structure", + "members": { + "S3Resources": { + "type": "list", + "member": { + "type": "structure", + "members": { + "BucketArn": {}, + "KeyRange": { + "type": "structure", + "members": { + "BeginMarker": {}, + "EndMarker": {} + } + } + } + } + } + } + }, + "Sk": { + "type": "structure", + "members": { + "SnsTopicARN": {}, + "JobStatesToNotify": { + "type": "list", + "member": {} + }, + "NotifyAll": { + "type": "boolean" + } + } + }, + "Sy": { + "type": "structure", + "members": { + "JobId": {}, + "JobState": {}, + "JobType": {}, + "CreationDate": { + "type": "timestamp" + }, + "Resources": { + "shape": "Sb" + }, + "Description": {}, + "KmsKeyARN": {}, + "RoleARN": {}, + "AddressId": {}, + "ShippingDetails": { + "type": "structure", + "members": { + "ShippingOption": {}, + "InboundShipment": { + "shape": "S11" + }, + "OutboundShipment": { + "shape": "S11" + } + } + }, + "SnowballCapacityPreference": {}, + "Notification": { + "shape": "Sk" + }, + "DataTransferProgress": { + "type": "structure", + "members": { + "BytesTransferred": { + "type": "long" + }, + "ObjectsTransferred": { + "type": "long" + }, + "TotalBytes": { + "type": "long" + }, + "TotalObjects": { + "type": "long" + } + } + }, + "JobLogInfo": { + "type": "structure", + "members": { + "JobCompletionReportURI": {}, + "JobSuccessLogURI": {}, + "JobFailureLogURI": {} + } + } + } + }, + "S11": { + "type": "structure", + "members": { + "Status": {}, + "TrackingNumber": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json b/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json new file mode 100644 index 0000000..d03aba7 --- /dev/null +++ b/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json @@ -0,0 +1,16 @@ +{ + "pagination": { + "ListJobs": { + "limit_key": "MaxResults", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "JobListEntries" + }, + "DescribeAddresses": { + "limit_key": "MaxResults", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Addresses" + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sns-2010-03-31.min.json b/node_modules/aws-sdk/apis/sns-2010-03-31.min.json new file mode 100644 index 0000000..bb433c4 --- /dev/null +++ b/node_modules/aws-sdk/apis/sns-2010-03-31.min.json @@ -0,0 +1,622 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2010-03-31", + "endpointPrefix": "sns", + "protocol": "query", + "serviceAbbreviation": "Amazon SNS", + "serviceFullName": "Amazon Simple Notification Service", + "signatureVersion": "v4", + "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/" + }, + "operations": { + "AddPermission": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Label", + "AWSAccountId", + "ActionName" + ], + "members": { + "TopicArn": {}, + "Label": {}, + "AWSAccountId": { + "type": "list", + "member": {} + }, + "ActionName": { + "type": "list", + "member": {} + } + } + } + }, + "CheckIfPhoneNumberIsOptedOut": { + "input": { + "type": "structure", + "required": [ + "phoneNumber" + ], + "members": { + "phoneNumber": {} + } + }, + "output": { + "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult", + "type": "structure", + "members": { + "isOptedOut": { + "type": "boolean" + } + } + } + }, + "ConfirmSubscription": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Token" + ], + "members": { + "TopicArn": {}, + "Token": {}, + "AuthenticateOnUnsubscribe": {} + } + }, + "output": { + "resultWrapper": "ConfirmSubscriptionResult", + "type": "structure", + "members": { + "SubscriptionArn": {} + } + } + }, + "CreatePlatformApplication": { + "input": { + "type": "structure", + "required": [ + "Name", + "Platform", + "Attributes" + ], + "members": { + "Name": {}, + "Platform": {}, + "Attributes": { + "shape": "Sj" + } + } + }, + "output": { + "resultWrapper": "CreatePlatformApplicationResult", + "type": "structure", + "members": { + "PlatformApplicationArn": {} + } + } + }, + "CreatePlatformEndpoint": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn", + "Token" + ], + "members": { + "PlatformApplicationArn": {}, + "Token": {}, + "CustomUserData": {}, + "Attributes": { + "shape": "Sj" + } + } + }, + "output": { + "resultWrapper": "CreatePlatformEndpointResult", + "type": "structure", + "members": { + "EndpointArn": {} + } + } + }, + "CreateTopic": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "resultWrapper": "CreateTopicResult", + "type": "structure", + "members": { + "TopicArn": {} + } + } + }, + "DeleteEndpoint": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {} + } + } + }, + "DeletePlatformApplication": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn" + ], + "members": { + "PlatformApplicationArn": {} + } + } + }, + "DeleteTopic": { + "input": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {} + } + } + }, + "GetEndpointAttributes": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {} + } + }, + "output": { + "resultWrapper": "GetEndpointAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "Sj" + } + } + } + }, + "GetPlatformApplicationAttributes": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn" + ], + "members": { + "PlatformApplicationArn": {} + } + }, + "output": { + "resultWrapper": "GetPlatformApplicationAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "Sj" + } + } + } + }, + "GetSMSAttributes": { + "input": { + "type": "structure", + "members": { + "attributes": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "GetSMSAttributesResult", + "type": "structure", + "members": { + "attributes": { + "shape": "Sj" + } + } + } + }, + "GetSubscriptionAttributes": { + "input": { + "type": "structure", + "required": [ + "SubscriptionArn" + ], + "members": { + "SubscriptionArn": {} + } + }, + "output": { + "resultWrapper": "GetSubscriptionAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "GetTopicAttributes": { + "input": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {} + } + }, + "output": { + "resultWrapper": "GetTopicAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "ListEndpointsByPlatformApplication": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn" + ], + "members": { + "PlatformApplicationArn": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListEndpointsByPlatformApplicationResult", + "type": "structure", + "members": { + "Endpoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EndpointArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListPhoneNumbersOptedOut": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "resultWrapper": "ListPhoneNumbersOptedOutResult", + "type": "structure", + "members": { + "phoneNumbers": { + "type": "list", + "member": {} + }, + "nextToken": {} + } + } + }, + "ListPlatformApplications": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListPlatformApplicationsResult", + "type": "structure", + "members": { + "PlatformApplications": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PlatformApplicationArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListSubscriptions": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListSubscriptionsResult", + "type": "structure", + "members": { + "Subscriptions": { + "shape": "S1n" + }, + "NextToken": {} + } + } + }, + "ListSubscriptionsByTopic": { + "input": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListSubscriptionsByTopicResult", + "type": "structure", + "members": { + "Subscriptions": { + "shape": "S1n" + }, + "NextToken": {} + } + } + }, + "ListTopics": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListTopicsResult", + "type": "structure", + "members": { + "Topics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TopicArn": {} + } + } + }, + "NextToken": {} + } + } + }, + "OptInPhoneNumber": { + "input": { + "type": "structure", + "required": [ + "phoneNumber" + ], + "members": { + "phoneNumber": {} + } + }, + "output": { + "resultWrapper": "OptInPhoneNumberResult", + "type": "structure", + "members": {} + } + }, + "Publish": { + "input": { + "type": "structure", + "required": [ + "Message" + ], + "members": { + "TopicArn": {}, + "TargetArn": {}, + "PhoneNumber": {}, + "Message": {}, + "Subject": {}, + "MessageStructure": {}, + "MessageAttributes": { + "type": "map", + "key": { + "locationName": "Name" + }, + "value": { + "locationName": "Value", + "type": "structure", + "required": [ + "DataType" + ], + "members": { + "DataType": {}, + "StringValue": {}, + "BinaryValue": { + "type": "blob" + } + } + } + } + } + }, + "output": { + "resultWrapper": "PublishResult", + "type": "structure", + "members": { + "MessageId": {} + } + } + }, + "RemovePermission": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Label" + ], + "members": { + "TopicArn": {}, + "Label": {} + } + } + }, + "SetEndpointAttributes": { + "input": { + "type": "structure", + "required": [ + "EndpointArn", + "Attributes" + ], + "members": { + "EndpointArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "SetPlatformApplicationAttributes": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn", + "Attributes" + ], + "members": { + "PlatformApplicationArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "SetSMSAttributes": { + "input": { + "type": "structure", + "required": [ + "attributes" + ], + "members": { + "attributes": { + "shape": "Sj" + } + } + }, + "output": { + "resultWrapper": "SetSMSAttributesResult", + "type": "structure", + "members": {} + } + }, + "SetSubscriptionAttributes": { + "input": { + "type": "structure", + "required": [ + "SubscriptionArn", + "AttributeName" + ], + "members": { + "SubscriptionArn": {}, + "AttributeName": {}, + "AttributeValue": {} + } + } + }, + "SetTopicAttributes": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "AttributeName" + ], + "members": { + "TopicArn": {}, + "AttributeName": {}, + "AttributeValue": {} + } + } + }, + "Subscribe": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Protocol" + ], + "members": { + "TopicArn": {}, + "Protocol": {}, + "Endpoint": {} + } + }, + "output": { + "resultWrapper": "SubscribeResult", + "type": "structure", + "members": { + "SubscriptionArn": {} + } + } + }, + "Unsubscribe": { + "input": { + "type": "structure", + "required": [ + "SubscriptionArn" + ], + "members": { + "SubscriptionArn": {} + } + } + } + }, + "shapes": { + "Sj": { + "type": "map", + "key": {}, + "value": {} + }, + "S1n": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SubscriptionArn": {}, + "Owner": {}, + "Protocol": {}, + "Endpoint": {}, + "TopicArn": {} + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json b/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json new file mode 100644 index 0000000..455e470 --- /dev/null +++ b/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json @@ -0,0 +1,29 @@ +{ + "pagination": { + "ListEndpointsByPlatformApplication": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Endpoints" + }, + "ListPlatformApplications": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "PlatformApplications" + }, + "ListSubscriptions": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Subscriptions" + }, + "ListSubscriptionsByTopic": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Subscriptions" + }, + "ListTopics": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Topics" + } + } +} diff --git a/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json b/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json new file mode 100644 index 0000000..21b72de --- /dev/null +++ b/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json @@ -0,0 +1,618 @@ +{ + "version": "1.0", + "examples": { + "AddPermission": [ + { + "input": { + "AWSAccountIds": [ + "12345EXAMPLE" + ], + "Actions": [ + "SendMessage" + ], + "Label": "SendMessagesFromMyQueue", + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example allows the specified AWS account to send messages to the specified queue.", + "id": "to-add-a-permission-to-a-queue-1472079068305", + "title": "To add a permission to a queue" + } + ], + "ChangeMessageVisibility": [ + { + "input": { + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", + "ReceiptHandle": "AQEBTpyI...t6HyQg==", + "VisibilityTimeout": 36000 + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example changes the visibility timeout of the specified message to 10 hours (10 hours * 60 minutes * 60 seconds).", + "id": "to-change-the-visibility-timeout-of-a-single-message-1472079046292", + "title": "To change the visibility timeout of a single message" + } + ], + "ChangeMessageVisibilityBatch": [ + { + "input": { + "Entries": [ + { + "Id": "FirstMessage", + "ReceiptHandle": "AQEBhz2q...Jf3kaw==", + "VisibilityTimeout": 36000 + }, + { + "Id": "SecondMessage", + "ReceiptHandle": "AQEBkTUH...HifSnw==", + "VisibilityTimeout": 36000 + } + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + "Failed": [ + + ], + "Successful": [ + + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example changes the visibility timeout of the two specified messages to 10 hours (10 hours * 60 minutes * 60 seconds).", + "id": "to-change-the-visibility-timeout-of-multiple-messages-1472079027081", + "title": "To change the visibility timeout of multiple messages" + } + ], + "CreateQueue": [ + { + "input": { + "Attributes": { + "MessageRetentionPeriod": "259200", + "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}" + }, + "QueueName": "MyQueue" + }, + "output": { + "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "The following operation creates an Amazon SQS queue named MyQueue.", + "id": "to-create-an-sqs-queue-1472078982579", + "title": "To create an Amazon SQS queue" + } + ], + "DeleteMessage": [ + { + "input": { + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", + "ReceiptHandle": "AQEBRXTo...q2doVA==" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified message.", + "id": "to-delete-a-single-message-1472078961585", + "title": "To delete a single message" + } + ], + "DeleteMessageBatch": [ + { + "input": { + "Entries": [ + { + "Id": "FirstMessage", + "ReceiptHandle": "AQEB1mgl...Z4GuLw==" + }, + { + "Id": "SecondMessage", + "ReceiptHandle": "AQEBLsYM...VQubAA==" + } + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + "Failed": [ + + ], + "Successful": [ + { + "Id": "FirstMessage" + }, + { + "Id": "SecondMessage" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the two specified messages.", + "id": "to-delete-multiple-messages-1472078930327", + "title": "To delete multiple messages" + } + ], + "DeleteQueue": [ + { + "input": { + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewerQueue" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes the specified queue.", + "id": "to-delete-a-queue-1472151853558", + "title": "To delete a queue" + } + ], + "GetQueueAttributes": [ + { + "input": { + "AttributeNames": [ + "All" + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + "Attributes": { + "ApproximateNumberOfMessages": "0", + "ApproximateNumberOfMessagesDelayed": "0", + "ApproximateNumberOfMessagesNotVisible": "0", + "CreatedTimestamp": "1442426968", + "DelaySeconds": "0", + "LastModifiedTimestamp": "1442426968", + "MaximumMessageSize": "262144", + "MessageRetentionPeriod": "345600", + "QueueArn": "arn:aws:sqs:us-east-1:80398EXAMPLE:MyNewQueue", + "ReceiveMessageWaitTimeSeconds": "0", + "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":1000}", + "VisibilityTimeout": "30" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example gets all attributes of the specified queue.", + "id": "to-get-the-attributes-of-a-queue-1472149421128", + "title": "To get the attributes of a queue" + }, + { + "input": { + "AttributeNames": [ + "MaximumMessageSize VisibilityTimeout" + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue" + }, + "output": { + "Attributes": { + "MaximumMessageSize": "262144", + "VisibilityTimeout": "30" + } + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example gets only the specified queue's maximum message size and visibility timeout attributes.", + "id": "to-get-the-attributes-of-a-queue-1472517012839", + "title": "To get the attributes of a queue" + } + ], + "GetQueueUrl": [ + { + "input": { + "QueueName": "MyQueue", + "QueueOwnerAWSAccountId": "123456789101" + }, + "output": { + "QueueUrl": "https://queue.amazonaws.com/123456789101/MyQueue" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example gets the URL of the specified queue.", + "id": "to-get-the-url-of-a-queue-1472078901091", + "title": "To get the URL of a queue" + } + ], + "ListDeadLetterSourceQueues": [ + { + "input": { + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue" + }, + "output": { + "queueUrls": [ + "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", + "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists the source queues associated with the specified dead letter queue.", + "id": "to-list-the-source-queues-of-a-dead-letter-queue-1472150435081", + "title": "To list the source queues of a dead letter queue" + } + ], + "ListQueues": [ + { + "input": { + "QueueNamePrefix": "" + }, + "output": { + "QueueUrls": [ + "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", + "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", + "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue", + "https://queue.amazonaws.com/80398EXAMPLE/TestQueue1", + "https://queue.amazonaws.com/80398EXAMPLE/TestQueue2" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists all queues.", + "id": "to-list-queues-1472150595914", + "title": "To list queues" + }, + { + "input": { + "QueueNamePrefix": "My" + }, + "output": { + "QueueUrls": [ + "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", + "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", + "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example lists only queues that start with "Ty".", + "id": "to-list-queues-1472517240103", + "title": "To list queues" + } + ], + "PurgeQueue": [ + { + "input": { + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example deletes all messages in the specified queue.", + "id": "to-purge-a-queue-1472150819702", + "title": "To purge a queue" + } + ], + "ReceiveMessage": [ + { + "input": { + "AttributeNames": [ + "All" + ], + "MaxNumberOfMessages": 10, + "MessageAttributeNames": [ + "All" + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", + "VisibilityTimeout": 123, + "WaitTimeSeconds": 123 + }, + "output": { + "Messages": [ + { + "Attributes": { + "ApproximateFirstReceiveTimestamp": "1442428276921", + "ApproximateReceiveCount": "5", + "SenderId": "AIDAIAZKMSNQ7TEXAMPLE", + "SentTimestamp": "1442428276921" + }, + "Body": "My first message.", + "MD5OfBody": "1000f835...a35411fa", + "MD5OfMessageAttributes": "9424c491...26bc3ae7", + "MessageAttributes": { + "City": { + "DataType": "String", + "StringValue": "Any City" + }, + "PostalCode": { + "DataType": "String", + "StringValue": "ABC123" + } + }, + "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE", + "ReceiptHandle": "AQEBzbVv...fqNzFw==" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example receives up to 10 available messages, returning all available attributes.", + "id": "to-receive-a-message-1472151462717", + "title": "To receive a message" + }, + { + "input": { + "AttributeNames": [ + "SenderId SentTimestamp" + ], + "MaxNumberOfMessages": 123, + "MessageAttributeNames": [ + "PostalCode" + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", + "VisibilityTimeout": 123, + "WaitTimeSeconds": 123 + }, + "output": { + "Messages": [ + { + "Attributes": { + "SenderId": "AIDAIAZKMSNQ7TEXAMPLE", + "SentTimestamp": "1442428276921" + }, + "Body": "My first message.", + "MD5OfBody": "1000f835...a35411fa", + "MD5OfMessageAttributes": "b8e89563...e088e74f", + "MessageAttributes": { + "PostalCode": { + "DataType": "String", + "StringValue": "ABC123" + } + }, + "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE", + "ReceiptHandle": "AQEB6nR4...HzlvZQ==" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example receives the next available message, returning only the SenderId and SentTimestamp attributes and the PostalCode message attribute.", + "id": "to-receive-a-message-1472517398871", + "title": "To receive a message" + } + ], + "RemovePermission": [ + { + "input": { + "Label": "SendMessagesFromMyQueue", + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example removes the permission with the specified label from the specified queue.", + "id": "to-remove-a-permission-from-a-queue-1472151967252", + "title": "To remove a permission from a queue" + } + ], + "SendMessage": [ + { + "input": { + "DelaySeconds": 10, + "MessageAttributes": { + "City": { + "DataType": "String", + "StringValue": "Any City" + }, + "Greeting": { + "BinaryValue": "Hello, World!", + "DataType": "Binary" + }, + "Population": { + "DataType": "Number", + "StringValue": "1250800" + } + }, + "MessageBody": "Information about the largest city in Any Region.", + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + "MD5OfMessageAttributes": "00484c68...59e48f06", + "MD5OfMessageBody": "51b0a325...39163aa0", + "MessageId": "da68f62c-0c07-4bee-bf5f-7e856EXAMPLE" + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sends a message with the specified message body, delay period, and message attributes to the specified queue.", + "id": "to-send-a-message-to-a-queue-1472152022619", + "title": "To send a message to a queue" + } + ], + "SendMessageBatch": [ + { + "input": { + "Entries": [ + { + "DelaySeconds": 10, + "Id": "FuelReport-0001-2015-09-16T140731Z", + "MessageAttributes": { + "City": { + "DataType": "String", + "StringValue": "Any City" + }, + "PostalCode": { + "DataType": "String", + "StringValue": "99065" + }, + "PricePerGallon": { + "DataType": "Number", + "StringValue": "1.99" + }, + "Region": { + "DataType": "String", + "StringValue": "WA" + }, + "SellerName": { + "DataType": "String", + "StringValue": "Example Store" + } + }, + "MessageBody": "Fuel report for account 0001 on 2015-09-16 at 02:07:31 PM." + }, + { + "DelaySeconds": 10, + "Id": "FuelReport-0002-2015-09-16T140930Z", + "MessageAttributes": { + "City": { + "DataType": "String", + "StringValue": "North Town" + }, + "PostalCode": { + "DataType": "String", + "StringValue": "99123" + }, + "PricePerGallon": { + "DataType": "Number", + "StringValue": "1.87" + }, + "Region": { + "DataType": "String", + "StringValue": "WA" + }, + "SellerName": { + "DataType": "String", + "StringValue": "Example Fuels" + } + }, + "MessageBody": "Fuel report for account 0002 on 2015-09-16 at 02:09:30 PM." + } + ], + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" + }, + "output": { + "Failed": [ + + ], + "Successful": [ + { + "Id": "FuelReport-0001-2015-09-16T140731Z", + "MD5OfMessageAttributes": "10809b55...baf283ef", + "MD5OfMessageBody": "203c4a38...7943237e", + "MessageId": "d175070c-d6b8-4101-861d-adeb3EXAMPLE" + }, + { + "Id": "FuelReport-0002-2015-09-16T140930Z", + "MD5OfMessageAttributes": "55623928...ae354a25", + "MD5OfMessageBody": "2cf0159a...c1980595", + "MessageId": "f9b7d55d-0570-413e-b9c5-a9264EXAMPLE" + } + ] + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sends two messages with the specified message bodies, delay periods, and message attributes to the specified queue.", + "id": "to-send-multiple-messages-1472152282144", + "title": "To send multiple messages" + } + ], + "SetQueueAttributes": [ + { + "input": { + "Attributes": { + "DelaySeconds": "10", + "MaximumMessageSize": "131072", + "MessageRetentionPeriod": "259200", + "ReceiveMessageWaitTimeSeconds": "20", + "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}", + "VisibilityTimeout": "60" + }, + "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue" + }, + "output": { + }, + "comments": { + "input": { + }, + "output": { + } + }, + "description": "This example sets the specified queue to a delivery delay of 10 seconds, a maximum message size of 128 KB (128 KB * 1,024 bytes), a message retention period of 3 days (3 days * 24 hours * 60 minutes * 60 seconds), a receive message wait time of 20 seconds, and a default visibility timeout of 60 seconds. This example also associates the specified dead letter queue with a maximum receive count of 1,000 messages.", + "id": "to-set-the-attributes-of-a-queue-1472152379646", + "title": "To set the attributes of a queue" + } + ] + } +} diff --git a/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json b/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json new file mode 100644 index 0000000..492845e --- /dev/null +++ b/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json @@ -0,0 +1,583 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-11-05", + "endpointPrefix": "sqs", + "protocol": "query", + "serviceAbbreviation": "Amazon SQS", + "serviceFullName": "Amazon Simple Queue Service", + "signatureVersion": "v4", + "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/" + }, + "operations": { + "AddPermission": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Label", + "AWSAccountIds", + "Actions" + ], + "members": { + "QueueUrl": {}, + "Label": {}, + "AWSAccountIds": { + "type": "list", + "member": { + "locationName": "AWSAccountId" + }, + "flattened": true + }, + "Actions": { + "type": "list", + "member": { + "locationName": "ActionName" + }, + "flattened": true + } + } + } + }, + "ChangeMessageVisibility": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "ReceiptHandle", + "VisibilityTimeout" + ], + "members": { + "QueueUrl": {}, + "ReceiptHandle": {}, + "VisibilityTimeout": { + "type": "integer" + } + } + } + }, + "ChangeMessageVisibilityBatch": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Entries" + ], + "members": { + "QueueUrl": {}, + "Entries": { + "type": "list", + "member": { + "locationName": "ChangeMessageVisibilityBatchRequestEntry", + "type": "structure", + "required": [ + "Id", + "ReceiptHandle" + ], + "members": { + "Id": {}, + "ReceiptHandle": {}, + "VisibilityTimeout": { + "type": "integer" + } + } + }, + "flattened": true + } + } + }, + "output": { + "resultWrapper": "ChangeMessageVisibilityBatchResult", + "type": "structure", + "required": [ + "Successful", + "Failed" + ], + "members": { + "Successful": { + "type": "list", + "member": { + "locationName": "ChangeMessageVisibilityBatchResultEntry", + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": {} + } + }, + "flattened": true + }, + "Failed": { + "shape": "Sd" + } + } + } + }, + "CreateQueue": { + "input": { + "type": "structure", + "required": [ + "QueueName" + ], + "members": { + "QueueName": {}, + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + } + } + }, + "output": { + "resultWrapper": "CreateQueueResult", + "type": "structure", + "members": { + "QueueUrl": {} + } + } + }, + "DeleteMessage": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "ReceiptHandle" + ], + "members": { + "QueueUrl": {}, + "ReceiptHandle": {} + } + } + }, + "DeleteMessageBatch": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Entries" + ], + "members": { + "QueueUrl": {}, + "Entries": { + "type": "list", + "member": { + "locationName": "DeleteMessageBatchRequestEntry", + "type": "structure", + "required": [ + "Id", + "ReceiptHandle" + ], + "members": { + "Id": {}, + "ReceiptHandle": {} + } + }, + "flattened": true + } + } + }, + "output": { + "resultWrapper": "DeleteMessageBatchResult", + "type": "structure", + "required": [ + "Successful", + "Failed" + ], + "members": { + "Successful": { + "type": "list", + "member": { + "locationName": "DeleteMessageBatchResultEntry", + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": {} + } + }, + "flattened": true + }, + "Failed": { + "shape": "Sd" + } + } + } + }, + "DeleteQueue": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {} + } + } + }, + "GetQueueAttributes": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {}, + "AttributeNames": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "GetQueueAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + } + } + } + }, + "GetQueueUrl": { + "input": { + "type": "structure", + "required": [ + "QueueName" + ], + "members": { + "QueueName": {}, + "QueueOwnerAWSAccountId": {} + } + }, + "output": { + "resultWrapper": "GetQueueUrlResult", + "type": "structure", + "members": { + "QueueUrl": {} + } + } + }, + "ListDeadLetterSourceQueues": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {} + } + }, + "output": { + "resultWrapper": "ListDeadLetterSourceQueuesResult", + "type": "structure", + "required": [ + "queueUrls" + ], + "members": { + "queueUrls": { + "shape": "Sz" + } + } + } + }, + "ListQueues": { + "input": { + "type": "structure", + "members": { + "QueueNamePrefix": {} + } + }, + "output": { + "resultWrapper": "ListQueuesResult", + "type": "structure", + "members": { + "QueueUrls": { + "shape": "Sz" + } + } + } + }, + "PurgeQueue": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {} + } + } + }, + "ReceiveMessage": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {}, + "AttributeNames": { + "shape": "St" + }, + "MessageAttributeNames": { + "type": "list", + "member": { + "locationName": "MessageAttributeName" + }, + "flattened": true + }, + "MaxNumberOfMessages": { + "type": "integer" + }, + "VisibilityTimeout": { + "type": "integer" + }, + "WaitTimeSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ReceiveMessageResult", + "type": "structure", + "members": { + "Messages": { + "type": "list", + "member": { + "locationName": "Message", + "type": "structure", + "members": { + "MessageId": {}, + "ReceiptHandle": {}, + "MD5OfBody": {}, + "Body": {}, + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + }, + "MD5OfMessageAttributes": {}, + "MessageAttributes": { + "shape": "S19", + "locationName": "MessageAttribute" + } + } + }, + "flattened": true + } + } + } + }, + "RemovePermission": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Label" + ], + "members": { + "QueueUrl": {}, + "Label": {} + } + } + }, + "SendMessage": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "MessageBody" + ], + "members": { + "QueueUrl": {}, + "MessageBody": {}, + "DelaySeconds": { + "type": "integer" + }, + "MessageAttributes": { + "shape": "S19", + "locationName": "MessageAttribute" + } + } + }, + "output": { + "resultWrapper": "SendMessageResult", + "type": "structure", + "members": { + "MD5OfMessageBody": {}, + "MD5OfMessageAttributes": {}, + "MessageId": {} + } + } + }, + "SendMessageBatch": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Entries" + ], + "members": { + "QueueUrl": {}, + "Entries": { + "type": "list", + "member": { + "locationName": "SendMessageBatchRequestEntry", + "type": "structure", + "required": [ + "Id", + "MessageBody" + ], + "members": { + "Id": {}, + "MessageBody": {}, + "DelaySeconds": { + "type": "integer" + }, + "MessageAttributes": { + "shape": "S19", + "locationName": "MessageAttribute" + } + } + }, + "flattened": true + } + } + }, + "output": { + "resultWrapper": "SendMessageBatchResult", + "type": "structure", + "required": [ + "Successful", + "Failed" + ], + "members": { + "Successful": { + "type": "list", + "member": { + "locationName": "SendMessageBatchResultEntry", + "type": "structure", + "required": [ + "Id", + "MessageId", + "MD5OfMessageBody" + ], + "members": { + "Id": {}, + "MessageId": {}, + "MD5OfMessageBody": {}, + "MD5OfMessageAttributes": {} + } + }, + "flattened": true + }, + "Failed": { + "shape": "Sd" + } + } + } + }, + "SetQueueAttributes": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Attributes" + ], + "members": { + "QueueUrl": {}, + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + } + } + } + } + }, + "shapes": { + "Sd": { + "type": "list", + "member": { + "locationName": "BatchResultErrorEntry", + "type": "structure", + "required": [ + "Id", + "SenderFault", + "Code" + ], + "members": { + "Id": {}, + "SenderFault": { + "type": "boolean" + }, + "Code": {}, + "Message": {} + } + }, + "flattened": true + }, + "Sh": { + "type": "map", + "key": { + "locationName": "Name" + }, + "value": { + "locationName": "Value" + }, + "flattened": true, + "locationName": "Attribute" + }, + "St": { + "type": "list", + "member": { + "locationName": "AttributeName" + }, + "flattened": true + }, + "Sz": { + "type": "list", + "member": { + "locationName": "QueueUrl" + }, + "flattened": true + }, + "S19": { + "type": "map", + "key": { + "locationName": "Name" + }, + "value": { + "locationName": "Value", + "type": "structure", + "required": [ + "DataType" + ], + "members": { + "StringValue": {}, + "BinaryValue": { + "type": "blob" + }, + "StringListValues": { + "flattened": true, + "locationName": "StringListValue", + "type": "list", + "member": { + "locationName": "StringListValue" + } + }, + "BinaryListValues": { + "flattened": true, + "locationName": "BinaryListValue", + "type": "list", + "member": { + "locationName": "BinaryListValue", + "type": "blob" + } + }, + "DataType": {} + } + }, + "flattened": true + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json b/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json new file mode 100644 index 0000000..e7ac48a --- /dev/null +++ b/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json @@ -0,0 +1,7 @@ +{ + "pagination": { + "ListQueues": { + "result_key": "QueueUrls" + } + } +} diff --git a/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json b/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json new file mode 100644 index 0000000..9320562 --- /dev/null +++ b/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json @@ -0,0 +1,932 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-06", + "endpointPrefix": "ssm", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon SSM", + "serviceFullName": "Amazon Simple Systems Management Service", + "signatureVersion": "v4", + "targetPrefix": "AmazonSSM" + }, + "operations": { + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId", + "Tags" + ], + "members": { + "ResourceType": {}, + "ResourceId": {}, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CancelCommand": { + "input": { + "type": "structure", + "required": [ + "CommandId" + ], + "members": { + "CommandId": {}, + "InstanceIds": { + "shape": "Sb" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateActivation": { + "input": { + "type": "structure", + "required": [ + "IamRole" + ], + "members": { + "Description": {}, + "DefaultInstanceName": {}, + "IamRole": {}, + "RegistrationLimit": { + "type": "integer" + }, + "ExpirationDate": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": { + "ActivationId": {}, + "ActivationCode": {} + } + } + }, + "CreateAssociation": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId" + ], + "members": { + "Name": {}, + "InstanceId": {}, + "Parameters": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": { + "AssociationDescription": { + "shape": "Su" + } + } + } + }, + "CreateAssociationBatch": { + "input": { + "type": "structure", + "required": [ + "Entries" + ], + "members": { + "Entries": { + "type": "list", + "member": { + "shape": "S12", + "locationName": "entries" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "Successful": { + "type": "list", + "member": { + "shape": "Su", + "locationName": "AssociationDescription" + } + }, + "Failed": { + "type": "list", + "member": { + "locationName": "FailedCreateAssociationEntry", + "type": "structure", + "members": { + "Entry": { + "shape": "S12" + }, + "Message": {}, + "Fault": {} + } + } + } + } + } + }, + "CreateDocument": { + "input": { + "type": "structure", + "required": [ + "Content", + "Name" + ], + "members": { + "Content": {}, + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "DocumentDescription": { + "shape": "S1c" + } + } + } + }, + "DeleteActivation": { + "input": { + "type": "structure", + "required": [ + "ActivationId" + ], + "members": { + "ActivationId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteAssociation": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId" + ], + "members": { + "Name": {}, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteDocument": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeregisterManagedInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeActivations": { + "input": { + "type": "structure", + "members": { + "Filters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FilterKey": {}, + "FilterValues": { + "type": "list", + "member": {} + } + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ActivationList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ActivationId": {}, + "Description": {}, + "DefaultInstanceName": {}, + "IamRole": {}, + "RegistrationLimit": { + "type": "integer" + }, + "RegistrationsCount": { + "type": "integer" + }, + "ExpirationDate": { + "type": "timestamp" + }, + "Expired": { + "type": "boolean" + }, + "CreatedDate": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeAssociation": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId" + ], + "members": { + "Name": {}, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "AssociationDescription": { + "shape": "Su" + } + } + } + }, + "DescribeDocument": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Document": { + "shape": "S1c" + } + } + } + }, + "DescribeDocumentPermission": { + "input": { + "type": "structure", + "required": [ + "Name", + "PermissionType" + ], + "members": { + "Name": {}, + "PermissionType": {} + } + }, + "output": { + "type": "structure", + "members": { + "AccountIds": { + "shape": "S2m" + } + } + } + }, + "DescribeInstanceInformation": { + "input": { + "type": "structure", + "members": { + "InstanceInformationFilterList": { + "type": "list", + "member": { + "locationName": "InstanceInformationFilter", + "type": "structure", + "required": [ + "key", + "valueSet" + ], + "members": { + "key": {}, + "valueSet": { + "type": "list", + "member": { + "locationName": "InstanceInformationFilterValue" + } + } + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceInformationList": { + "type": "list", + "member": { + "locationName": "InstanceInformation", + "type": "structure", + "members": { + "InstanceId": {}, + "PingStatus": {}, + "LastPingDateTime": { + "type": "timestamp" + }, + "AgentVersion": {}, + "IsLatestVersion": { + "type": "boolean" + }, + "PlatformType": {}, + "PlatformName": {}, + "PlatformVersion": {}, + "ActivationId": {}, + "IamRole": {}, + "RegistrationDate": { + "type": "timestamp" + }, + "ResourceType": {}, + "Name": {}, + "IPAddress": {}, + "ComputerName": {} + } + } + }, + "NextToken": {} + } + } + }, + "GetDocument": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "Content": {} + } + } + }, + "ListAssociations": { + "input": { + "type": "structure", + "required": [ + "AssociationFilterList" + ], + "members": { + "AssociationFilterList": { + "type": "list", + "member": { + "locationName": "AssociationFilter", + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Associations": { + "type": "list", + "member": { + "locationName": "Association", + "type": "structure", + "members": { + "Name": {}, + "InstanceId": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListCommandInvocations": { + "input": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {}, + "Filters": { + "shape": "S3f" + }, + "Details": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "CommandInvocations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "Comment": {}, + "DocumentName": {}, + "RequestedDateTime": { + "type": "timestamp" + }, + "Status": {}, + "TraceOutput": {}, + "CommandPlugins": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Status": {}, + "ResponseCode": { + "type": "integer" + }, + "ResponseStartDateTime": { + "type": "timestamp" + }, + "ResponseFinishDateTime": { + "type": "timestamp" + }, + "Output": {}, + "OutputS3BucketName": {}, + "OutputS3KeyPrefix": {} + } + } + }, + "ServiceRole": {}, + "NotificationConfig": { + "shape": "S3y" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListCommands": { + "input": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {}, + "Filters": { + "shape": "S3f" + } + } + }, + "output": { + "type": "structure", + "members": { + "Commands": { + "type": "list", + "member": { + "shape": "S46" + } + }, + "NextToken": {} + } + } + }, + "ListDocuments": { + "input": { + "type": "structure", + "members": { + "DocumentFilterList": { + "type": "list", + "member": { + "locationName": "DocumentFilter", + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "DocumentIdentifiers": { + "type": "list", + "member": { + "locationName": "DocumentIdentifier", + "type": "structure", + "members": { + "Name": {}, + "Owner": {}, + "PlatformTypes": { + "shape": "S1q" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": {}, + "ResourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "TagList": { + "shape": "S4" + } + } + } + }, + "ModifyDocumentPermission": { + "input": { + "type": "structure", + "required": [ + "Name", + "PermissionType" + ], + "members": { + "Name": {}, + "PermissionType": {}, + "AccountIdsToAdd": { + "shape": "S2m" + }, + "AccountIdsToRemove": { + "shape": "S2m" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId", + "TagKeys" + ], + "members": { + "ResourceType": {}, + "ResourceId": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "SendCommand": { + "input": { + "type": "structure", + "required": [ + "InstanceIds", + "DocumentName" + ], + "members": { + "InstanceIds": { + "shape": "Sb" + }, + "DocumentName": {}, + "DocumentHash": {}, + "DocumentHashType": {}, + "TimeoutSeconds": { + "type": "integer" + }, + "Comment": {}, + "Parameters": { + "shape": "Sp" + }, + "OutputS3BucketName": {}, + "OutputS3KeyPrefix": {}, + "ServiceRoleArn": {}, + "NotificationConfig": { + "shape": "S3y" + } + } + }, + "output": { + "type": "structure", + "members": { + "Command": { + "shape": "S46" + } + } + } + }, + "UpdateAssociationStatus": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId", + "AssociationStatus" + ], + "members": { + "Name": {}, + "InstanceId": {}, + "AssociationStatus": { + "shape": "Sw" + } + } + }, + "output": { + "type": "structure", + "members": { + "AssociationDescription": { + "shape": "Su" + } + } + } + }, + "UpdateManagedInstanceRole": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "IamRole" + ], + "members": { + "InstanceId": {}, + "IamRole": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S4": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sb": { + "type": "list", + "member": {} + }, + "Sp": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": {} + } + }, + "Su": { + "type": "structure", + "members": { + "Name": {}, + "InstanceId": {}, + "Date": { + "type": "timestamp" + }, + "Status": { + "shape": "Sw" + }, + "Parameters": { + "shape": "Sp" + } + } + }, + "Sw": { + "type": "structure", + "required": [ + "Date", + "Name", + "Message" + ], + "members": { + "Date": { + "type": "timestamp" + }, + "Name": {}, + "Message": {}, + "AdditionalInfo": {} + } + }, + "S12": { + "type": "structure", + "members": { + "Name": {}, + "InstanceId": {}, + "Parameters": { + "shape": "Sp" + } + } + }, + "S1c": { + "type": "structure", + "members": { + "Sha1": {}, + "Hash": {}, + "HashType": {}, + "Name": {}, + "Owner": {}, + "CreatedDate": { + "type": "timestamp" + }, + "Status": {}, + "Description": {}, + "Parameters": { + "type": "list", + "member": { + "locationName": "DocumentParameter", + "type": "structure", + "members": { + "Name": {}, + "Type": {}, + "Description": {}, + "DefaultValue": {} + } + } + }, + "PlatformTypes": { + "shape": "S1q" + } + } + }, + "S1q": { + "type": "list", + "member": { + "locationName": "PlatformType" + } + }, + "S2m": { + "type": "list", + "member": { + "locationName": "AccountId" + } + }, + "S3f": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "S3y": { + "type": "structure", + "members": { + "NotificationArn": {}, + "NotificationEvents": { + "type": "list", + "member": {} + }, + "NotificationType": {} + } + }, + "S46": { + "type": "structure", + "members": { + "CommandId": {}, + "DocumentName": {}, + "Comment": {}, + "ExpiresAfter": { + "type": "timestamp" + }, + "Parameters": { + "shape": "Sp" + }, + "InstanceIds": { + "shape": "Sb" + }, + "RequestedDateTime": { + "type": "timestamp" + }, + "Status": {}, + "OutputS3BucketName": {}, + "OutputS3KeyPrefix": {}, + "ServiceRole": {}, + "NotificationConfig": { + "shape": "S3y" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json b/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json new file mode 100644 index 0000000..37977ca --- /dev/null +++ b/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json @@ -0,0 +1,40 @@ +{ + "pagination": { + "DescribeInstanceInformation": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "InstanceInformationList" + }, + "ListAssociations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Associations" + }, + "ListCommandInvocations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "CommandInvocations" + }, + "ListCommands": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Commands" + }, + "ListDocuments": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "DocumentIdentifiers" + }, + "DescribeActivations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ActivationList" + } + } +} diff --git a/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json b/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json new file mode 100644 index 0000000..ca114c8 --- /dev/null +++ b/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json @@ -0,0 +1,1485 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-06-30", + "endpointPrefix": "storagegateway", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Storage Gateway", + "signatureVersion": "v4", + "targetPrefix": "StorageGateway_20130630" + }, + "operations": { + "ActivateGateway": { + "input": { + "type": "structure", + "required": [ + "ActivationKey", + "GatewayName", + "GatewayTimezone", + "GatewayRegion" + ], + "members": { + "ActivationKey": {}, + "GatewayName": {}, + "GatewayTimezone": {}, + "GatewayRegion": {}, + "GatewayType": {}, + "TapeDriveType": {}, + "MediumChangerType": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "AddCache": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskIds" + ], + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceARN", + "Tags" + ], + "members": { + "ResourceARN": {}, + "Tags": { + "shape": "Sh" + } + } + }, + "output": { + "type": "structure", + "members": { + "ResourceARN": {} + } + } + }, + "AddUploadBuffer": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskIds" + ], + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "AddWorkingStorage": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskIds" + ], + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "CancelArchival": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeARN" + ], + "members": { + "GatewayARN": {}, + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "CancelRetrieval": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeARN" + ], + "members": { + "GatewayARN": {}, + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "CreateCachediSCSIVolume": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "VolumeSizeInBytes", + "TargetName", + "NetworkInterfaceId", + "ClientToken" + ], + "members": { + "GatewayARN": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "SnapshotId": {}, + "TargetName": {}, + "NetworkInterfaceId": {}, + "ClientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "TargetARN": {} + } + } + }, + "CreateSnapshot": { + "input": { + "type": "structure", + "required": [ + "VolumeARN", + "SnapshotDescription" + ], + "members": { + "VolumeARN": {}, + "SnapshotDescription": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "SnapshotId": {} + } + } + }, + "CreateSnapshotFromVolumeRecoveryPoint": { + "input": { + "type": "structure", + "required": [ + "VolumeARN", + "SnapshotDescription" + ], + "members": { + "VolumeARN": {}, + "SnapshotDescription": {} + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotId": {}, + "VolumeARN": {}, + "VolumeRecoveryPointTime": {} + } + } + }, + "CreateStorediSCSIVolume": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskId", + "PreserveExistingData", + "TargetName", + "NetworkInterfaceId" + ], + "members": { + "GatewayARN": {}, + "DiskId": {}, + "SnapshotId": {}, + "PreserveExistingData": { + "type": "boolean" + }, + "TargetName": {}, + "NetworkInterfaceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "TargetARN": {} + } + } + }, + "CreateTapeWithBarcode": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeSizeInBytes", + "TapeBarcode" + ], + "members": { + "GatewayARN": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeBarcode": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "CreateTapes": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeSizeInBytes", + "ClientToken", + "NumTapesToCreate", + "TapeBarcodePrefix" + ], + "members": { + "GatewayARN": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "ClientToken": {}, + "NumTapesToCreate": { + "type": "integer" + }, + "TapeBarcodePrefix": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARNs": { + "shape": "S1l" + } + } + } + }, + "DeleteBandwidthRateLimit": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "BandwidthType" + ], + "members": { + "GatewayARN": {}, + "BandwidthType": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "DeleteChapCredentials": { + "input": { + "type": "structure", + "required": [ + "TargetARN", + "InitiatorName" + ], + "members": { + "TargetARN": {}, + "InitiatorName": {} + } + }, + "output": { + "type": "structure", + "members": { + "TargetARN": {}, + "InitiatorName": {} + } + } + }, + "DeleteGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "DeleteSnapshotSchedule": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {} + } + } + }, + "DeleteTape": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeARN" + ], + "members": { + "GatewayARN": {}, + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "DeleteTapeArchive": { + "input": { + "type": "structure", + "required": [ + "TapeARN" + ], + "members": { + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "DeleteVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {} + } + } + }, + "DescribeBandwidthRateLimit": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "AverageUploadRateLimitInBitsPerSec": { + "type": "long" + }, + "AverageDownloadRateLimitInBitsPerSec": { + "type": "long" + } + } + } + }, + "DescribeCache": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + }, + "CacheAllocatedInBytes": { + "type": "long" + }, + "CacheUsedPercentage": { + "type": "double" + }, + "CacheDirtyPercentage": { + "type": "double" + }, + "CacheHitPercentage": { + "type": "double" + }, + "CacheMissPercentage": { + "type": "double" + } + } + } + }, + "DescribeCachediSCSIVolumes": { + "input": { + "type": "structure", + "required": [ + "VolumeARNs" + ], + "members": { + "VolumeARNs": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "CachediSCSIVolumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeId": {}, + "VolumeType": {}, + "VolumeStatus": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "VolumeProgress": { + "type": "double" + }, + "SourceSnapshotId": {}, + "VolumeiSCSIAttributes": { + "shape": "S2i" + } + } + } + } + } + } + }, + "DescribeChapCredentials": { + "input": { + "type": "structure", + "required": [ + "TargetARN" + ], + "members": { + "TargetARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChapCredentials": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetARN": {}, + "SecretToAuthenticateInitiator": {}, + "InitiatorName": {}, + "SecretToAuthenticateTarget": {} + } + } + } + } + } + }, + "DescribeGatewayInformation": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "GatewayId": {}, + "GatewayName": {}, + "GatewayTimezone": {}, + "GatewayState": {}, + "GatewayNetworkInterfaces": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Ipv4Address": {}, + "MacAddress": {}, + "Ipv6Address": {} + } + } + }, + "GatewayType": {}, + "NextUpdateAvailabilityDate": {}, + "LastSoftwareUpdate": {} + } + } + }, + "DescribeMaintenanceStartTime": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "HourOfDay": { + "type": "integer" + }, + "MinuteOfHour": { + "type": "integer" + }, + "DayOfWeek": { + "type": "integer" + }, + "Timezone": {} + } + } + }, + "DescribeSnapshotSchedule": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "StartAt": { + "type": "integer" + }, + "RecurrenceInHours": { + "type": "integer" + }, + "Description": {}, + "Timezone": {} + } + } + }, + "DescribeStorediSCSIVolumes": { + "input": { + "type": "structure", + "required": [ + "VolumeARNs" + ], + "members": { + "VolumeARNs": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "StorediSCSIVolumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeId": {}, + "VolumeType": {}, + "VolumeStatus": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "VolumeProgress": { + "type": "double" + }, + "VolumeDiskId": {}, + "SourceSnapshotId": {}, + "PreservedExistingData": { + "type": "boolean" + }, + "VolumeiSCSIAttributes": { + "shape": "S2i" + } + } + } + } + } + } + }, + "DescribeTapeArchives": { + "input": { + "type": "structure", + "members": { + "TapeARNs": { + "shape": "S1l" + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TapeArchives": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeBarcode": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "CompletionTime": { + "type": "timestamp" + }, + "RetrievedTo": {}, + "TapeStatus": {} + } + } + }, + "Marker": {} + } + } + }, + "DescribeTapeRecoveryPoints": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "TapeRecoveryPointInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeRecoveryPointTime": { + "type": "timestamp" + }, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeStatus": {} + } + } + }, + "Marker": {} + } + } + }, + "DescribeTapes": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "TapeARNs": { + "shape": "S1l" + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Tapes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeBarcode": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeStatus": {}, + "VTLDevice": {}, + "Progress": { + "type": "double" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeUploadBuffer": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + }, + "UploadBufferUsedInBytes": { + "type": "long" + }, + "UploadBufferAllocatedInBytes": { + "type": "long" + } + } + } + }, + "DescribeVTLDevices": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "VTLDeviceARNs": { + "type": "list", + "member": {} + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "VTLDevices": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VTLDeviceARN": {}, + "VTLDeviceType": {}, + "VTLDeviceVendor": {}, + "VTLDeviceProductIdentifier": {}, + "DeviceiSCSIAttributes": { + "type": "structure", + "members": { + "TargetARN": {}, + "NetworkInterfaceId": {}, + "NetworkInterfacePort": { + "type": "integer" + }, + "ChapEnabled": { + "type": "boolean" + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeWorkingStorage": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + }, + "WorkingStorageUsedInBytes": { + "type": "long" + }, + "WorkingStorageAllocatedInBytes": { + "type": "long" + } + } + } + }, + "DisableGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "ListGateways": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Gateways": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GatewayId": {}, + "GatewayARN": {}, + "GatewayType": {}, + "GatewayOperationalState": {}, + "GatewayName": {} + } + } + }, + "Marker": {} + } + } + }, + "ListLocalDisks": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "Disks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DiskId": {}, + "DiskPath": {}, + "DiskNode": {}, + "DiskStatus": {}, + "DiskSizeInBytes": { + "type": "long" + }, + "DiskAllocationType": {}, + "DiskAllocationResource": {} + } + } + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceARN" + ], + "members": { + "ResourceARN": {}, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "ResourceARN": {}, + "Marker": {}, + "Tags": { + "shape": "Sh" + } + } + } + }, + "ListTapes": { + "input": { + "type": "structure", + "members": { + "TapeARNs": { + "shape": "S1l" + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TapeInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeBarcode": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeStatus": {}, + "GatewayARN": {} + } + } + }, + "Marker": {} + } + } + }, + "ListVolumeInitiators": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "Initiators": { + "type": "list", + "member": {} + } + } + } + }, + "ListVolumeRecoveryPoints": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "VolumeRecoveryPointInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "VolumeUsageInBytes": { + "type": "long" + }, + "VolumeRecoveryPointTime": {} + } + } + } + } + } + }, + "ListVolumes": { + "input": { + "type": "structure", + "members": { + "GatewayARN": {}, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "Marker": {}, + "VolumeInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeId": {}, + "GatewayARN": {}, + "GatewayId": {}, + "VolumeType": {}, + "VolumeSizeInBytes": { + "type": "long" + } + } + } + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceARN", + "TagKeys" + ], + "members": { + "ResourceARN": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "ResourceARN": {} + } + } + }, + "ResetCache": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "RetrieveTapeArchive": { + "input": { + "type": "structure", + "required": [ + "TapeARN", + "GatewayARN" + ], + "members": { + "TapeARN": {}, + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "RetrieveTapeRecoveryPoint": { + "input": { + "type": "structure", + "required": [ + "TapeARN", + "GatewayARN" + ], + "members": { + "TapeARN": {}, + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "SetLocalConsolePassword": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "LocalConsolePassword" + ], + "members": { + "GatewayARN": {}, + "LocalConsolePassword": { + "type": "string", + "sensitive": true + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "ShutdownGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "StartGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateBandwidthRateLimit": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "AverageUploadRateLimitInBitsPerSec": { + "type": "long" + }, + "AverageDownloadRateLimitInBitsPerSec": { + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateChapCredentials": { + "input": { + "type": "structure", + "required": [ + "TargetARN", + "SecretToAuthenticateInitiator", + "InitiatorName" + ], + "members": { + "TargetARN": {}, + "SecretToAuthenticateInitiator": {}, + "InitiatorName": {}, + "SecretToAuthenticateTarget": {} + } + }, + "output": { + "type": "structure", + "members": { + "TargetARN": {}, + "InitiatorName": {} + } + } + }, + "UpdateGatewayInformation": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "GatewayName": {}, + "GatewayTimezone": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "GatewayName": {} + } + } + }, + "UpdateGatewaySoftwareNow": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateMaintenanceStartTime": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "HourOfDay", + "MinuteOfHour", + "DayOfWeek" + ], + "members": { + "GatewayARN": {}, + "HourOfDay": { + "type": "integer" + }, + "MinuteOfHour": { + "type": "integer" + }, + "DayOfWeek": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateSnapshotSchedule": { + "input": { + "type": "structure", + "required": [ + "VolumeARN", + "StartAt", + "RecurrenceInHours" + ], + "members": { + "VolumeARN": {}, + "StartAt": { + "type": "integer" + }, + "RecurrenceInHours": { + "type": "integer" + }, + "Description": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {} + } + } + }, + "UpdateVTLDeviceType": { + "input": { + "type": "structure", + "required": [ + "VTLDeviceARN", + "DeviceType" + ], + "members": { + "VTLDeviceARN": {}, + "DeviceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "VTLDeviceARN": {} + } + } + } + }, + "shapes": { + "Sc": { + "type": "list", + "member": {} + }, + "Sh": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S1l": { + "type": "list", + "member": {} + }, + "S2a": { + "type": "list", + "member": {} + }, + "S2i": { + "type": "structure", + "members": { + "TargetARN": {}, + "NetworkInterfaceId": {}, + "NetworkInterfacePort": { + "type": "integer" + }, + "LunNumber": { + "type": "integer" + }, + "ChapEnabled": { + "type": "boolean" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json b/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json new file mode 100644 index 0000000..286915c --- /dev/null +++ b/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json @@ -0,0 +1,52 @@ +{ + "pagination": { + "DescribeCachediSCSIVolumes": { + "result_key": "CachediSCSIVolumes" + }, + "DescribeStorediSCSIVolumes": { + "result_key": "StorediSCSIVolumes" + }, + "DescribeTapeArchives": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "TapeArchives" + }, + "DescribeTapeRecoveryPoints": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "TapeRecoveryPointInfos" + }, + "DescribeTapes": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "Tapes" + }, + "DescribeVTLDevices": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "VTLDevices" + }, + "ListGateways": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "Gateways" + }, + "ListLocalDisks": { + "result_key": "Disks" + }, + "ListVolumeRecoveryPoints": { + "result_key": "VolumeRecoveryPointInfos" + }, + "ListVolumes": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "VolumeInfos" + } + } +} diff --git a/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json b/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json new file mode 100644 index 0000000..0e173f6 --- /dev/null +++ b/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json @@ -0,0 +1,238 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-08-10", + "endpointPrefix": "streams.dynamodb", + "jsonVersion": "1.0", + "protocol": "json", + "serviceFullName": "Amazon DynamoDB Streams", + "signatureVersion": "v4", + "signingName": "dynamodb", + "targetPrefix": "DynamoDBStreams_20120810" + }, + "operations": { + "DescribeStream": { + "input": { + "type": "structure", + "required": [ + "StreamArn" + ], + "members": { + "StreamArn": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartShardId": {} + } + }, + "output": { + "type": "structure", + "members": { + "StreamDescription": { + "type": "structure", + "members": { + "StreamArn": {}, + "StreamLabel": {}, + "StreamStatus": {}, + "StreamViewType": {}, + "CreationRequestDateTime": { + "type": "timestamp" + }, + "TableName": {}, + "KeySchema": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AttributeName", + "KeyType" + ], + "members": { + "AttributeName": {}, + "KeyType": {} + } + } + }, + "Shards": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ShardId": {}, + "SequenceNumberRange": { + "type": "structure", + "members": { + "StartingSequenceNumber": {}, + "EndingSequenceNumber": {} + } + }, + "ParentShardId": {} + } + } + }, + "LastEvaluatedShardId": {} + } + } + } + } + }, + "GetRecords": { + "input": { + "type": "structure", + "required": [ + "ShardIterator" + ], + "members": { + "ShardIterator": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Records": { + "type": "list", + "member": { + "type": "structure", + "members": { + "eventID": {}, + "eventName": {}, + "eventVersion": {}, + "eventSource": {}, + "awsRegion": {}, + "dynamodb": { + "type": "structure", + "members": { + "ApproximateCreationDateTime": { + "type": "timestamp" + }, + "Keys": { + "shape": "Sr" + }, + "NewImage": { + "shape": "Sr" + }, + "OldImage": { + "shape": "Sr" + }, + "SequenceNumber": {}, + "SizeBytes": { + "type": "long" + }, + "StreamViewType": {} + } + } + } + } + }, + "NextShardIterator": {} + } + } + }, + "GetShardIterator": { + "input": { + "type": "structure", + "required": [ + "StreamArn", + "ShardId", + "ShardIteratorType" + ], + "members": { + "StreamArn": {}, + "ShardId": {}, + "ShardIteratorType": {}, + "SequenceNumber": {} + } + }, + "output": { + "type": "structure", + "members": { + "ShardIterator": {} + } + } + }, + "ListStreams": { + "input": { + "type": "structure", + "members": { + "TableName": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartStreamArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Streams": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StreamArn": {}, + "TableName": {}, + "StreamLabel": {} + } + } + }, + "LastEvaluatedStreamArn": {} + } + } + } + }, + "shapes": { + "Sr": { + "type": "map", + "key": {}, + "value": { + "shape": "St" + } + }, + "St": { + "type": "structure", + "members": { + "S": {}, + "N": {}, + "B": { + "type": "blob" + }, + "SS": { + "type": "list", + "member": {} + }, + "NS": { + "type": "list", + "member": {} + }, + "BS": { + "type": "list", + "member": { + "type": "blob" + } + }, + "M": { + "type": "map", + "key": {}, + "value": { + "shape": "St" + } + }, + "L": { + "type": "list", + "member": { + "shape": "St" + } + }, + "NULL": { + "type": "boolean" + }, + "BOOL": { + "type": "boolean" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sts-2011-06-15.min.json b/node_modules/aws-sdk/apis/sts-2011-06-15.min.json new file mode 100644 index 0000000..219221d --- /dev/null +++ b/node_modules/aws-sdk/apis/sts-2011-06-15.min.json @@ -0,0 +1,249 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2011-06-15", + "endpointPrefix": "sts", + "globalEndpoint": "sts.amazonaws.com", + "protocol": "query", + "serviceAbbreviation": "AWS STS", + "serviceFullName": "AWS Security Token Service", + "signatureVersion": "v4", + "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/" + }, + "operations": { + "AssumeRole": { + "input": { + "type": "structure", + "required": [ + "RoleArn", + "RoleSessionName" + ], + "members": { + "RoleArn": {}, + "RoleSessionName": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + }, + "ExternalId": {}, + "SerialNumber": {}, + "TokenCode": {} + } + }, + "output": { + "resultWrapper": "AssumeRoleResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "AssumedRoleUser": { + "shape": "Sf" + }, + "PackedPolicySize": { + "type": "integer" + } + } + } + }, + "AssumeRoleWithSAML": { + "input": { + "type": "structure", + "required": [ + "RoleArn", + "PrincipalArn", + "SAMLAssertion" + ], + "members": { + "RoleArn": {}, + "PrincipalArn": {}, + "SAMLAssertion": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "AssumeRoleWithSAMLResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "AssumedRoleUser": { + "shape": "Sf" + }, + "PackedPolicySize": { + "type": "integer" + }, + "Subject": {}, + "SubjectType": {}, + "Issuer": {}, + "Audience": {}, + "NameQualifier": {} + } + } + }, + "AssumeRoleWithWebIdentity": { + "input": { + "type": "structure", + "required": [ + "RoleArn", + "RoleSessionName", + "WebIdentityToken" + ], + "members": { + "RoleArn": {}, + "RoleSessionName": {}, + "WebIdentityToken": {}, + "ProviderId": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "AssumeRoleWithWebIdentityResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "SubjectFromWebIdentityToken": {}, + "AssumedRoleUser": { + "shape": "Sf" + }, + "PackedPolicySize": { + "type": "integer" + }, + "Provider": {}, + "Audience": {} + } + } + }, + "DecodeAuthorizationMessage": { + "input": { + "type": "structure", + "required": [ + "EncodedMessage" + ], + "members": { + "EncodedMessage": {} + } + }, + "output": { + "resultWrapper": "DecodeAuthorizationMessageResult", + "type": "structure", + "members": { + "DecodedMessage": {} + } + } + }, + "GetCallerIdentity": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "GetCallerIdentityResult", + "type": "structure", + "members": { + "UserId": {}, + "Account": {}, + "Arn": {} + } + } + }, + "GetFederationToken": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "GetFederationTokenResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "FederatedUser": { + "type": "structure", + "required": [ + "FederatedUserId", + "Arn" + ], + "members": { + "FederatedUserId": {}, + "Arn": {} + } + }, + "PackedPolicySize": { + "type": "integer" + } + } + } + }, + "GetSessionToken": { + "input": { + "type": "structure", + "members": { + "DurationSeconds": { + "type": "integer" + }, + "SerialNumber": {}, + "TokenCode": {} + } + }, + "output": { + "resultWrapper": "GetSessionTokenResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + } + } + } + } + }, + "shapes": { + "Sa": { + "type": "structure", + "required": [ + "AccessKeyId", + "SecretAccessKey", + "SessionToken", + "Expiration" + ], + "members": { + "AccessKeyId": {}, + "SecretAccessKey": {}, + "SessionToken": {}, + "Expiration": { + "type": "timestamp" + } + } + }, + "Sf": { + "type": "structure", + "required": [ + "AssumedRoleId", + "Arn" + ], + "members": { + "AssumedRoleId": {}, + "Arn": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/support-2013-04-15.min.json b/node_modules/aws-sdk/apis/support-2013-04-15.min.json new file mode 100644 index 0000000..dc10080 --- /dev/null +++ b/node_modules/aws-sdk/apis/support-2013-04-15.min.json @@ -0,0 +1,569 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2013-04-15", + "endpointPrefix": "support", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Support", + "signatureVersion": "v4", + "targetPrefix": "AWSSupport_20130415" + }, + "operations": { + "AddAttachmentsToSet": { + "input": { + "type": "structure", + "required": [ + "attachments" + ], + "members": { + "attachmentSetId": {}, + "attachments": { + "type": "list", + "member": { + "shape": "S4" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "attachmentSetId": {}, + "expiryTime": {} + } + } + }, + "AddCommunicationToCase": { + "input": { + "type": "structure", + "required": [ + "communicationBody" + ], + "members": { + "caseId": {}, + "communicationBody": {}, + "ccEmailAddresses": { + "shape": "Sc" + }, + "attachmentSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "result": { + "type": "boolean" + } + } + } + }, + "CreateCase": { + "input": { + "type": "structure", + "required": [ + "subject", + "communicationBody" + ], + "members": { + "subject": {}, + "serviceCode": {}, + "severityCode": {}, + "categoryCode": {}, + "communicationBody": {}, + "ccEmailAddresses": { + "shape": "Sc" + }, + "language": {}, + "issueType": {}, + "attachmentSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "caseId": {} + } + } + }, + "DescribeAttachment": { + "input": { + "type": "structure", + "required": [ + "attachmentId" + ], + "members": { + "attachmentId": {} + } + }, + "output": { + "type": "structure", + "members": { + "attachment": { + "shape": "S4" + } + } + } + }, + "DescribeCases": { + "input": { + "type": "structure", + "members": { + "caseIdList": { + "type": "list", + "member": {} + }, + "displayId": {}, + "afterTime": {}, + "beforeTime": {}, + "includeResolvedCases": { + "type": "boolean" + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "language": {}, + "includeCommunications": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "cases": { + "type": "list", + "member": { + "type": "structure", + "members": { + "caseId": {}, + "displayId": {}, + "subject": {}, + "status": {}, + "serviceCode": {}, + "categoryCode": {}, + "severityCode": {}, + "submittedBy": {}, + "timeCreated": {}, + "recentCommunications": { + "type": "structure", + "members": { + "communications": { + "shape": "S17" + }, + "nextToken": {} + } + }, + "ccEmailAddresses": { + "shape": "Sc" + }, + "language": {} + } + } + }, + "nextToken": {} + } + } + }, + "DescribeCommunications": { + "input": { + "type": "structure", + "required": [ + "caseId" + ], + "members": { + "caseId": {}, + "beforeTime": {}, + "afterTime": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "communications": { + "shape": "S17" + }, + "nextToken": {} + } + } + }, + "DescribeServices": { + "input": { + "type": "structure", + "members": { + "serviceCodeList": { + "type": "list", + "member": {} + }, + "language": {} + } + }, + "output": { + "type": "structure", + "members": { + "services": { + "type": "list", + "member": { + "type": "structure", + "members": { + "code": {}, + "name": {}, + "categories": { + "type": "list", + "member": { + "type": "structure", + "members": { + "code": {}, + "name": {} + } + } + } + } + } + } + } + } + }, + "DescribeSeverityLevels": { + "input": { + "type": "structure", + "members": { + "language": {} + } + }, + "output": { + "type": "structure", + "members": { + "severityLevels": { + "type": "list", + "member": { + "type": "structure", + "members": { + "code": {}, + "name": {} + } + } + } + } + } + }, + "DescribeTrustedAdvisorCheckRefreshStatuses": { + "input": { + "type": "structure", + "required": [ + "checkIds" + ], + "members": { + "checkIds": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "required": [ + "statuses" + ], + "members": { + "statuses": { + "type": "list", + "member": { + "shape": "S1x" + } + } + } + } + }, + "DescribeTrustedAdvisorCheckResult": { + "input": { + "type": "structure", + "required": [ + "checkId" + ], + "members": { + "checkId": {}, + "language": {} + } + }, + "output": { + "type": "structure", + "members": { + "result": { + "type": "structure", + "required": [ + "checkId", + "timestamp", + "status", + "resourcesSummary", + "categorySpecificSummary", + "flaggedResources" + ], + "members": { + "checkId": {}, + "timestamp": {}, + "status": {}, + "resourcesSummary": { + "shape": "S22" + }, + "categorySpecificSummary": { + "shape": "S23" + }, + "flaggedResources": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "status", + "resourceId", + "metadata" + ], + "members": { + "status": {}, + "region": {}, + "resourceId": {}, + "isSuppressed": { + "type": "boolean" + }, + "metadata": { + "shape": "S1t" + } + } + } + } + } + } + } + } + }, + "DescribeTrustedAdvisorCheckSummaries": { + "input": { + "type": "structure", + "required": [ + "checkIds" + ], + "members": { + "checkIds": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "required": [ + "summaries" + ], + "members": { + "summaries": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "checkId", + "timestamp", + "status", + "resourcesSummary", + "categorySpecificSummary" + ], + "members": { + "checkId": {}, + "timestamp": {}, + "status": {}, + "hasFlaggedResources": { + "type": "boolean" + }, + "resourcesSummary": { + "shape": "S22" + }, + "categorySpecificSummary": { + "shape": "S23" + } + } + } + } + } + } + }, + "DescribeTrustedAdvisorChecks": { + "input": { + "type": "structure", + "required": [ + "language" + ], + "members": { + "language": {} + } + }, + "output": { + "type": "structure", + "required": [ + "checks" + ], + "members": { + "checks": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "id", + "name", + "description", + "category", + "metadata" + ], + "members": { + "id": {}, + "name": {}, + "description": {}, + "category": {}, + "metadata": { + "shape": "S1t" + } + } + } + } + } + } + }, + "RefreshTrustedAdvisorCheck": { + "input": { + "type": "structure", + "required": [ + "checkId" + ], + "members": { + "checkId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "status" + ], + "members": { + "status": { + "shape": "S1x" + } + } + } + }, + "ResolveCase": { + "input": { + "type": "structure", + "members": { + "caseId": {} + } + }, + "output": { + "type": "structure", + "members": { + "initialCaseStatus": {}, + "finalCaseStatus": {} + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "fileName": {}, + "data": { + "type": "blob" + } + } + }, + "Sc": { + "type": "list", + "member": {} + }, + "S17": { + "type": "list", + "member": { + "type": "structure", + "members": { + "caseId": {}, + "body": {}, + "submittedBy": {}, + "timeCreated": {}, + "attachmentSet": { + "type": "list", + "member": { + "type": "structure", + "members": { + "attachmentId": {}, + "fileName": {} + } + } + } + } + } + }, + "S1t": { + "type": "list", + "member": {} + }, + "S1x": { + "type": "structure", + "required": [ + "checkId", + "status", + "millisUntilNextRefreshable" + ], + "members": { + "checkId": {}, + "status": {}, + "millisUntilNextRefreshable": { + "type": "long" + } + } + }, + "S22": { + "type": "structure", + "required": [ + "resourcesProcessed", + "resourcesFlagged", + "resourcesIgnored", + "resourcesSuppressed" + ], + "members": { + "resourcesProcessed": { + "type": "long" + }, + "resourcesFlagged": { + "type": "long" + }, + "resourcesIgnored": { + "type": "long" + }, + "resourcesSuppressed": { + "type": "long" + } + } + }, + "S23": { + "type": "structure", + "members": { + "costOptimizing": { + "type": "structure", + "required": [ + "estimatedMonthlySavings", + "estimatedPercentMonthlySavings" + ], + "members": { + "estimatedMonthlySavings": { + "type": "double" + }, + "estimatedPercentMonthlySavings": { + "type": "double" + } + } + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json b/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json new file mode 100644 index 0000000..1368630 --- /dev/null +++ b/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json @@ -0,0 +1,25 @@ +{ + "pagination": { + "DescribeCases": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "cases" + }, + "DescribeCommunications": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "communications" + }, + "DescribeServices": { + "result_key": "services" + }, + "DescribeTrustedAdvisorCheckRefreshStatuses": { + "result_key": "statuses" + }, + "DescribeTrustedAdvisorCheckSummaries": { + "result_key": "summaries" + } + } +} diff --git a/node_modules/aws-sdk/apis/swf-2012-01-25.min.json b/node_modules/aws-sdk/apis/swf-2012-01-25.min.json new file mode 100644 index 0000000..ebd4a22 --- /dev/null +++ b/node_modules/aws-sdk/apis/swf-2012-01-25.min.json @@ -0,0 +1,2217 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2012-01-25", + "endpointPrefix": "swf", + "jsonVersion": "1.0", + "serviceAbbreviation": "Amazon SWF", + "serviceFullName": "Amazon Simple Workflow Service", + "signatureVersion": "v4", + "targetPrefix": "SimpleWorkflowService", + "timestampFormat": "unixTimestamp", + "protocol": "json" + }, + "operations": { + "CountClosedWorkflowExecutions": { + "input": { + "type": "structure", + "required": [ + "domain" + ], + "members": { + "domain": {}, + "startTimeFilter": { + "shape": "S3" + }, + "closeTimeFilter": { + "shape": "S3" + }, + "executionFilter": { + "shape": "S5" + }, + "typeFilter": { + "shape": "S7" + }, + "tagFilter": { + "shape": "Sa" + }, + "closeStatusFilter": { + "shape": "Sc" + } + } + }, + "output": { + "shape": "Se" + } + }, + "CountOpenWorkflowExecutions": { + "input": { + "type": "structure", + "required": [ + "domain", + "startTimeFilter" + ], + "members": { + "domain": {}, + "startTimeFilter": { + "shape": "S3" + }, + "typeFilter": { + "shape": "S7" + }, + "tagFilter": { + "shape": "Sa" + }, + "executionFilter": { + "shape": "S5" + } + } + }, + "output": { + "shape": "Se" + } + }, + "CountPendingActivityTasks": { + "input": { + "type": "structure", + "required": [ + "domain", + "taskList" + ], + "members": { + "domain": {}, + "taskList": { + "shape": "Sj" + } + } + }, + "output": { + "shape": "Sk" + } + }, + "CountPendingDecisionTasks": { + "input": { + "type": "structure", + "required": [ + "domain", + "taskList" + ], + "members": { + "domain": {}, + "taskList": { + "shape": "Sj" + } + } + }, + "output": { + "shape": "Sk" + } + }, + "DeprecateActivityType": { + "input": { + "type": "structure", + "required": [ + "domain", + "activityType" + ], + "members": { + "domain": {}, + "activityType": { + "shape": "Sn" + } + } + } + }, + "DeprecateDomain": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + } + }, + "DeprecateWorkflowType": { + "input": { + "type": "structure", + "required": [ + "domain", + "workflowType" + ], + "members": { + "domain": {}, + "workflowType": { + "shape": "Sr" + } + } + } + }, + "DescribeActivityType": { + "input": { + "type": "structure", + "required": [ + "domain", + "activityType" + ], + "members": { + "domain": {}, + "activityType": { + "shape": "Sn" + } + } + }, + "output": { + "type": "structure", + "required": [ + "typeInfo", + "configuration" + ], + "members": { + "typeInfo": { + "shape": "Su" + }, + "configuration": { + "type": "structure", + "members": { + "defaultTaskStartToCloseTimeout": {}, + "defaultTaskHeartbeatTimeout": {}, + "defaultTaskList": { + "shape": "Sj" + }, + "defaultTaskPriority": {}, + "defaultTaskScheduleToStartTimeout": {}, + "defaultTaskScheduleToCloseTimeout": {} + } + } + } + } + }, + "DescribeDomain": { + "input": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + }, + "output": { + "type": "structure", + "required": [ + "domainInfo", + "configuration" + ], + "members": { + "domainInfo": { + "shape": "S12" + }, + "configuration": { + "type": "structure", + "required": [ + "workflowExecutionRetentionPeriodInDays" + ], + "members": { + "workflowExecutionRetentionPeriodInDays": {} + } + } + } + } + }, + "DescribeWorkflowExecution": { + "input": { + "type": "structure", + "required": [ + "domain", + "execution" + ], + "members": { + "domain": {}, + "execution": { + "shape": "S16" + } + } + }, + "output": { + "type": "structure", + "required": [ + "executionInfo", + "executionConfiguration", + "openCounts" + ], + "members": { + "executionInfo": { + "shape": "S19" + }, + "executionConfiguration": { + "type": "structure", + "required": [ + "taskStartToCloseTimeout", + "executionStartToCloseTimeout", + "taskList", + "childPolicy" + ], + "members": { + "taskStartToCloseTimeout": {}, + "executionStartToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "childPolicy": {}, + "lambdaRole": {} + } + }, + "openCounts": { + "type": "structure", + "required": [ + "openActivityTasks", + "openDecisionTasks", + "openTimers", + "openChildWorkflowExecutions" + ], + "members": { + "openActivityTasks": { + "type": "integer" + }, + "openDecisionTasks": { + "type": "integer" + }, + "openTimers": { + "type": "integer" + }, + "openChildWorkflowExecutions": { + "type": "integer" + }, + "openLambdaFunctions": { + "type": "integer" + } + } + }, + "latestActivityTaskTimestamp": { + "type": "timestamp" + }, + "latestExecutionContext": {} + } + } + }, + "DescribeWorkflowType": { + "input": { + "type": "structure", + "required": [ + "domain", + "workflowType" + ], + "members": { + "domain": {}, + "workflowType": { + "shape": "Sr" + } + } + }, + "output": { + "type": "structure", + "required": [ + "typeInfo", + "configuration" + ], + "members": { + "typeInfo": { + "shape": "S1m" + }, + "configuration": { + "type": "structure", + "members": { + "defaultTaskStartToCloseTimeout": {}, + "defaultExecutionStartToCloseTimeout": {}, + "defaultTaskList": { + "shape": "Sj" + }, + "defaultTaskPriority": {}, + "defaultChildPolicy": {}, + "defaultLambdaRole": {} + } + } + } + } + }, + "GetWorkflowExecutionHistory": { + "input": { + "type": "structure", + "required": [ + "domain", + "execution" + ], + "members": { + "domain": {}, + "execution": { + "shape": "S16" + }, + "nextPageToken": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "events" + ], + "members": { + "events": { + "shape": "S1t" + }, + "nextPageToken": {} + } + } + }, + "ListActivityTypes": { + "input": { + "type": "structure", + "required": [ + "domain", + "registrationStatus" + ], + "members": { + "domain": {}, + "name": {}, + "registrationStatus": {}, + "nextPageToken": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "typeInfos" + ], + "members": { + "typeInfos": { + "type": "list", + "member": { + "shape": "Su" + } + }, + "nextPageToken": {} + } + } + }, + "ListClosedWorkflowExecutions": { + "input": { + "type": "structure", + "required": [ + "domain" + ], + "members": { + "domain": {}, + "startTimeFilter": { + "shape": "S3" + }, + "closeTimeFilter": { + "shape": "S3" + }, + "executionFilter": { + "shape": "S5" + }, + "closeStatusFilter": { + "shape": "Sc" + }, + "typeFilter": { + "shape": "S7" + }, + "tagFilter": { + "shape": "Sa" + }, + "nextPageToken": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + } + } + }, + "output": { + "shape": "S4g" + } + }, + "ListDomains": { + "input": { + "type": "structure", + "required": [ + "registrationStatus" + ], + "members": { + "nextPageToken": {}, + "registrationStatus": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "domainInfos" + ], + "members": { + "domainInfos": { + "type": "list", + "member": { + "shape": "S12" + } + }, + "nextPageToken": {} + } + } + }, + "ListOpenWorkflowExecutions": { + "input": { + "type": "structure", + "required": [ + "domain", + "startTimeFilter" + ], + "members": { + "domain": {}, + "startTimeFilter": { + "shape": "S3" + }, + "typeFilter": { + "shape": "S7" + }, + "tagFilter": { + "shape": "Sa" + }, + "nextPageToken": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + }, + "executionFilter": { + "shape": "S5" + } + } + }, + "output": { + "shape": "S4g" + } + }, + "ListWorkflowTypes": { + "input": { + "type": "structure", + "required": [ + "domain", + "registrationStatus" + ], + "members": { + "domain": {}, + "name": {}, + "registrationStatus": {}, + "nextPageToken": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "typeInfos" + ], + "members": { + "typeInfos": { + "type": "list", + "member": { + "shape": "S1m" + } + }, + "nextPageToken": {} + } + } + }, + "PollForActivityTask": { + "input": { + "type": "structure", + "required": [ + "domain", + "taskList" + ], + "members": { + "domain": {}, + "taskList": { + "shape": "Sj" + }, + "identity": {} + } + }, + "output": { + "type": "structure", + "required": [ + "taskToken", + "activityId", + "startedEventId", + "workflowExecution", + "activityType" + ], + "members": { + "taskToken": {}, + "activityId": {}, + "startedEventId": { + "type": "long" + }, + "workflowExecution": { + "shape": "S16" + }, + "activityType": { + "shape": "Sn" + }, + "input": {} + } + } + }, + "PollForDecisionTask": { + "input": { + "type": "structure", + "required": [ + "domain", + "taskList" + ], + "members": { + "domain": {}, + "taskList": { + "shape": "Sj" + }, + "identity": {}, + "nextPageToken": {}, + "maximumPageSize": { + "type": "integer" + }, + "reverseOrder": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "taskToken", + "startedEventId", + "workflowExecution", + "workflowType", + "events" + ], + "members": { + "taskToken": {}, + "startedEventId": { + "type": "long" + }, + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "events": { + "shape": "S1t" + }, + "nextPageToken": {}, + "previousStartedEventId": { + "type": "long" + } + } + } + }, + "RecordActivityTaskHeartbeat": { + "input": { + "type": "structure", + "required": [ + "taskToken" + ], + "members": { + "taskToken": {}, + "details": {} + } + }, + "output": { + "type": "structure", + "required": [ + "cancelRequested" + ], + "members": { + "cancelRequested": { + "type": "boolean" + } + } + } + }, + "RegisterActivityType": { + "input": { + "type": "structure", + "required": [ + "domain", + "name", + "version" + ], + "members": { + "domain": {}, + "name": {}, + "version": {}, + "description": {}, + "defaultTaskStartToCloseTimeout": {}, + "defaultTaskHeartbeatTimeout": {}, + "defaultTaskList": { + "shape": "Sj" + }, + "defaultTaskPriority": {}, + "defaultTaskScheduleToStartTimeout": {}, + "defaultTaskScheduleToCloseTimeout": {} + } + } + }, + "RegisterDomain": { + "input": { + "type": "structure", + "required": [ + "name", + "workflowExecutionRetentionPeriodInDays" + ], + "members": { + "name": {}, + "description": {}, + "workflowExecutionRetentionPeriodInDays": {} + } + } + }, + "RegisterWorkflowType": { + "input": { + "type": "structure", + "required": [ + "domain", + "name", + "version" + ], + "members": { + "domain": {}, + "name": {}, + "version": {}, + "description": {}, + "defaultTaskStartToCloseTimeout": {}, + "defaultExecutionStartToCloseTimeout": {}, + "defaultTaskList": { + "shape": "Sj" + }, + "defaultTaskPriority": {}, + "defaultChildPolicy": {}, + "defaultLambdaRole": {} + } + } + }, + "RequestCancelWorkflowExecution": { + "input": { + "type": "structure", + "required": [ + "domain", + "workflowId" + ], + "members": { + "domain": {}, + "workflowId": {}, + "runId": {} + } + } + }, + "RespondActivityTaskCanceled": { + "input": { + "type": "structure", + "required": [ + "taskToken" + ], + "members": { + "taskToken": {}, + "details": {} + } + } + }, + "RespondActivityTaskCompleted": { + "input": { + "type": "structure", + "required": [ + "taskToken" + ], + "members": { + "taskToken": {}, + "result": {} + } + } + }, + "RespondActivityTaskFailed": { + "input": { + "type": "structure", + "required": [ + "taskToken" + ], + "members": { + "taskToken": {}, + "reason": {}, + "details": {} + } + } + }, + "RespondDecisionTaskCompleted": { + "input": { + "type": "structure", + "required": [ + "taskToken" + ], + "members": { + "taskToken": {}, + "decisions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "decisionType" + ], + "members": { + "decisionType": {}, + "scheduleActivityTaskDecisionAttributes": { + "type": "structure", + "required": [ + "activityType", + "activityId" + ], + "members": { + "activityType": { + "shape": "Sn" + }, + "activityId": {}, + "control": {}, + "input": {}, + "scheduleToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "scheduleToStartTimeout": {}, + "startToCloseTimeout": {}, + "heartbeatTimeout": {} + } + }, + "requestCancelActivityTaskDecisionAttributes": { + "type": "structure", + "required": [ + "activityId" + ], + "members": { + "activityId": {} + } + }, + "completeWorkflowExecutionDecisionAttributes": { + "type": "structure", + "members": { + "result": {} + } + }, + "failWorkflowExecutionDecisionAttributes": { + "type": "structure", + "members": { + "reason": {}, + "details": {} + } + }, + "cancelWorkflowExecutionDecisionAttributes": { + "type": "structure", + "members": { + "details": {} + } + }, + "continueAsNewWorkflowExecutionDecisionAttributes": { + "type": "structure", + "members": { + "input": {}, + "executionStartToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "taskStartToCloseTimeout": {}, + "childPolicy": {}, + "tagList": { + "shape": "S1b" + }, + "workflowTypeVersion": {}, + "lambdaRole": {} + } + }, + "recordMarkerDecisionAttributes": { + "type": "structure", + "required": [ + "markerName" + ], + "members": { + "markerName": {}, + "details": {} + } + }, + "startTimerDecisionAttributes": { + "type": "structure", + "required": [ + "timerId", + "startToFireTimeout" + ], + "members": { + "timerId": {}, + "control": {}, + "startToFireTimeout": {} + } + }, + "cancelTimerDecisionAttributes": { + "type": "structure", + "required": [ + "timerId" + ], + "members": { + "timerId": {} + } + }, + "signalExternalWorkflowExecutionDecisionAttributes": { + "type": "structure", + "required": [ + "workflowId", + "signalName" + ], + "members": { + "workflowId": {}, + "runId": {}, + "signalName": {}, + "input": {}, + "control": {} + } + }, + "requestCancelExternalWorkflowExecutionDecisionAttributes": { + "type": "structure", + "required": [ + "workflowId" + ], + "members": { + "workflowId": {}, + "runId": {}, + "control": {} + } + }, + "startChildWorkflowExecutionDecisionAttributes": { + "type": "structure", + "required": [ + "workflowType", + "workflowId" + ], + "members": { + "workflowType": { + "shape": "Sr" + }, + "workflowId": {}, + "control": {}, + "input": {}, + "executionStartToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "taskStartToCloseTimeout": {}, + "childPolicy": {}, + "tagList": { + "shape": "S1b" + }, + "lambdaRole": {} + } + }, + "scheduleLambdaFunctionDecisionAttributes": { + "type": "structure", + "required": [ + "id", + "name" + ], + "members": { + "id": {}, + "name": {}, + "input": {}, + "startToCloseTimeout": {} + } + } + } + } + }, + "executionContext": {} + } + } + }, + "SignalWorkflowExecution": { + "input": { + "type": "structure", + "required": [ + "domain", + "workflowId", + "signalName" + ], + "members": { + "domain": {}, + "workflowId": {}, + "runId": {}, + "signalName": {}, + "input": {} + } + } + }, + "StartWorkflowExecution": { + "input": { + "type": "structure", + "required": [ + "domain", + "workflowId", + "workflowType" + ], + "members": { + "domain": {}, + "workflowId": {}, + "workflowType": { + "shape": "Sr" + }, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "input": {}, + "executionStartToCloseTimeout": {}, + "tagList": { + "shape": "S1b" + }, + "taskStartToCloseTimeout": {}, + "childPolicy": {}, + "lambdaRole": {} + } + }, + "output": { + "type": "structure", + "members": { + "runId": {} + } + } + }, + "TerminateWorkflowExecution": { + "input": { + "type": "structure", + "required": [ + "domain", + "workflowId" + ], + "members": { + "domain": {}, + "workflowId": {}, + "runId": {}, + "reason": {}, + "details": {}, + "childPolicy": {} + } + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "required": [ + "oldestDate" + ], + "members": { + "oldestDate": { + "type": "timestamp" + }, + "latestDate": { + "type": "timestamp" + } + } + }, + "S5": { + "type": "structure", + "required": [ + "workflowId" + ], + "members": { + "workflowId": {} + } + }, + "S7": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {}, + "version": {} + } + }, + "Sa": { + "type": "structure", + "required": [ + "tag" + ], + "members": { + "tag": {} + } + }, + "Sc": { + "type": "structure", + "required": [ + "status" + ], + "members": { + "status": {} + } + }, + "Se": { + "type": "structure", + "required": [ + "count" + ], + "members": { + "count": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + } + }, + "Sj": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {} + } + }, + "Sk": { + "type": "structure", + "required": [ + "count" + ], + "members": { + "count": { + "type": "integer" + }, + "truncated": { + "type": "boolean" + } + } + }, + "Sn": { + "type": "structure", + "required": [ + "name", + "version" + ], + "members": { + "name": {}, + "version": {} + } + }, + "Sr": { + "type": "structure", + "required": [ + "name", + "version" + ], + "members": { + "name": {}, + "version": {} + } + }, + "Su": { + "type": "structure", + "required": [ + "activityType", + "status", + "creationDate" + ], + "members": { + "activityType": { + "shape": "Sn" + }, + "status": {}, + "description": {}, + "creationDate": { + "type": "timestamp" + }, + "deprecationDate": { + "type": "timestamp" + } + } + }, + "S12": { + "type": "structure", + "required": [ + "name", + "status" + ], + "members": { + "name": {}, + "status": {}, + "description": {} + } + }, + "S16": { + "type": "structure", + "required": [ + "workflowId", + "runId" + ], + "members": { + "workflowId": {}, + "runId": {} + } + }, + "S19": { + "type": "structure", + "required": [ + "execution", + "workflowType", + "startTimestamp", + "executionStatus" + ], + "members": { + "execution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "startTimestamp": { + "type": "timestamp" + }, + "closeTimestamp": { + "type": "timestamp" + }, + "executionStatus": {}, + "closeStatus": {}, + "parent": { + "shape": "S16" + }, + "tagList": { + "shape": "S1b" + }, + "cancelRequested": { + "type": "boolean" + } + } + }, + "S1b": { + "type": "list", + "member": {} + }, + "S1m": { + "type": "structure", + "required": [ + "workflowType", + "status", + "creationDate" + ], + "members": { + "workflowType": { + "shape": "Sr" + }, + "status": {}, + "description": {}, + "creationDate": { + "type": "timestamp" + }, + "deprecationDate": { + "type": "timestamp" + } + } + }, + "S1t": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "eventTimestamp", + "eventType", + "eventId" + ], + "members": { + "eventTimestamp": { + "type": "timestamp" + }, + "eventType": {}, + "eventId": { + "type": "long" + }, + "workflowExecutionStartedEventAttributes": { + "type": "structure", + "required": [ + "childPolicy", + "taskList", + "workflowType" + ], + "members": { + "input": {}, + "executionStartToCloseTimeout": {}, + "taskStartToCloseTimeout": {}, + "childPolicy": {}, + "taskList": { + "shape": "Sj" + }, + "workflowType": { + "shape": "Sr" + }, + "tagList": { + "shape": "S1b" + }, + "taskPriority": {}, + "continuedExecutionRunId": {}, + "parentWorkflowExecution": { + "shape": "S16" + }, + "parentInitiatedEventId": { + "type": "long" + }, + "lambdaRole": {} + } + }, + "workflowExecutionCompletedEventAttributes": { + "type": "structure", + "required": [ + "decisionTaskCompletedEventId" + ], + "members": { + "result": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "completeWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "workflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "decisionTaskCompletedEventId" + ], + "members": { + "reason": {}, + "details": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "failWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "workflowExecutionTimedOutEventAttributes": { + "type": "structure", + "required": [ + "timeoutType", + "childPolicy" + ], + "members": { + "timeoutType": {}, + "childPolicy": {} + } + }, + "workflowExecutionCanceledEventAttributes": { + "type": "structure", + "required": [ + "decisionTaskCompletedEventId" + ], + "members": { + "details": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "cancelWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "workflowExecutionContinuedAsNewEventAttributes": { + "type": "structure", + "required": [ + "decisionTaskCompletedEventId", + "newExecutionRunId", + "taskList", + "childPolicy", + "workflowType" + ], + "members": { + "input": {}, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "newExecutionRunId": {}, + "executionStartToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "taskStartToCloseTimeout": {}, + "childPolicy": {}, + "tagList": { + "shape": "S1b" + }, + "workflowType": { + "shape": "Sr" + }, + "lambdaRole": {} + } + }, + "continueAsNewWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "workflowExecutionTerminatedEventAttributes": { + "type": "structure", + "required": [ + "childPolicy" + ], + "members": { + "reason": {}, + "details": {}, + "childPolicy": {}, + "cause": {} + } + }, + "workflowExecutionCancelRequestedEventAttributes": { + "type": "structure", + "members": { + "externalWorkflowExecution": { + "shape": "S16" + }, + "externalInitiatedEventId": { + "type": "long" + }, + "cause": {} + } + }, + "decisionTaskScheduledEventAttributes": { + "type": "structure", + "required": [ + "taskList" + ], + "members": { + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "startToCloseTimeout": {} + } + }, + "decisionTaskStartedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId" + ], + "members": { + "identity": {}, + "scheduledEventId": { + "type": "long" + } + } + }, + "decisionTaskCompletedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "executionContext": {}, + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "decisionTaskTimedOutEventAttributes": { + "type": "structure", + "required": [ + "timeoutType", + "scheduledEventId", + "startedEventId" + ], + "members": { + "timeoutType": {}, + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "activityTaskScheduledEventAttributes": { + "type": "structure", + "required": [ + "activityType", + "activityId", + "taskList", + "decisionTaskCompletedEventId" + ], + "members": { + "activityType": { + "shape": "Sn" + }, + "activityId": {}, + "input": {}, + "control": {}, + "scheduleToStartTimeout": {}, + "scheduleToCloseTimeout": {}, + "startToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "heartbeatTimeout": {} + } + }, + "activityTaskStartedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId" + ], + "members": { + "identity": {}, + "scheduledEventId": { + "type": "long" + } + } + }, + "activityTaskCompletedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "result": {}, + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "activityTaskFailedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "reason": {}, + "details": {}, + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "activityTaskTimedOutEventAttributes": { + "type": "structure", + "required": [ + "timeoutType", + "scheduledEventId", + "startedEventId" + ], + "members": { + "timeoutType": {}, + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + }, + "details": {} + } + }, + "activityTaskCanceledEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "details": {}, + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + }, + "latestCancelRequestedEventId": { + "type": "long" + } + } + }, + "activityTaskCancelRequestedEventAttributes": { + "type": "structure", + "required": [ + "decisionTaskCompletedEventId", + "activityId" + ], + "members": { + "decisionTaskCompletedEventId": { + "type": "long" + }, + "activityId": {} + } + }, + "workflowExecutionSignaledEventAttributes": { + "type": "structure", + "required": [ + "signalName" + ], + "members": { + "signalName": {}, + "input": {}, + "externalWorkflowExecution": { + "shape": "S16" + }, + "externalInitiatedEventId": { + "type": "long" + } + } + }, + "markerRecordedEventAttributes": { + "type": "structure", + "required": [ + "markerName", + "decisionTaskCompletedEventId" + ], + "members": { + "markerName": {}, + "details": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "recordMarkerFailedEventAttributes": { + "type": "structure", + "required": [ + "markerName", + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "markerName": {}, + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "timerStartedEventAttributes": { + "type": "structure", + "required": [ + "timerId", + "startToFireTimeout", + "decisionTaskCompletedEventId" + ], + "members": { + "timerId": {}, + "control": {}, + "startToFireTimeout": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "timerFiredEventAttributes": { + "type": "structure", + "required": [ + "timerId", + "startedEventId" + ], + "members": { + "timerId": {}, + "startedEventId": { + "type": "long" + } + } + }, + "timerCanceledEventAttributes": { + "type": "structure", + "required": [ + "timerId", + "startedEventId", + "decisionTaskCompletedEventId" + ], + "members": { + "timerId": {}, + "startedEventId": { + "type": "long" + }, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "startChildWorkflowExecutionInitiatedEventAttributes": { + "type": "structure", + "required": [ + "workflowId", + "workflowType", + "taskList", + "decisionTaskCompletedEventId", + "childPolicy" + ], + "members": { + "workflowId": {}, + "workflowType": { + "shape": "Sr" + }, + "control": {}, + "input": {}, + "executionStartToCloseTimeout": {}, + "taskList": { + "shape": "Sj" + }, + "taskPriority": {}, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "childPolicy": {}, + "taskStartToCloseTimeout": {}, + "tagList": { + "shape": "S1b" + }, + "lambdaRole": {} + } + }, + "childWorkflowExecutionStartedEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "workflowType", + "initiatedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "initiatedEventId": { + "type": "long" + } + } + }, + "childWorkflowExecutionCompletedEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "workflowType", + "initiatedEventId", + "startedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "result": {}, + "initiatedEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "childWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "workflowType", + "initiatedEventId", + "startedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "reason": {}, + "details": {}, + "initiatedEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "childWorkflowExecutionTimedOutEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "workflowType", + "timeoutType", + "initiatedEventId", + "startedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "timeoutType": {}, + "initiatedEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "childWorkflowExecutionCanceledEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "workflowType", + "initiatedEventId", + "startedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "details": {}, + "initiatedEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "childWorkflowExecutionTerminatedEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "workflowType", + "initiatedEventId", + "startedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "workflowType": { + "shape": "Sr" + }, + "initiatedEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + } + } + }, + "signalExternalWorkflowExecutionInitiatedEventAttributes": { + "type": "structure", + "required": [ + "workflowId", + "signalName", + "decisionTaskCompletedEventId" + ], + "members": { + "workflowId": {}, + "runId": {}, + "signalName": {}, + "input": {}, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "control": {} + } + }, + "externalWorkflowExecutionSignaledEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "initiatedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "initiatedEventId": { + "type": "long" + } + } + }, + "signalExternalWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "workflowId", + "cause", + "initiatedEventId", + "decisionTaskCompletedEventId" + ], + "members": { + "workflowId": {}, + "runId": {}, + "cause": {}, + "initiatedEventId": { + "type": "long" + }, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "control": {} + } + }, + "externalWorkflowExecutionCancelRequestedEventAttributes": { + "type": "structure", + "required": [ + "workflowExecution", + "initiatedEventId" + ], + "members": { + "workflowExecution": { + "shape": "S16" + }, + "initiatedEventId": { + "type": "long" + } + } + }, + "requestCancelExternalWorkflowExecutionInitiatedEventAttributes": { + "type": "structure", + "required": [ + "workflowId", + "decisionTaskCompletedEventId" + ], + "members": { + "workflowId": {}, + "runId": {}, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "control": {} + } + }, + "requestCancelExternalWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "workflowId", + "cause", + "initiatedEventId", + "decisionTaskCompletedEventId" + ], + "members": { + "workflowId": {}, + "runId": {}, + "cause": {}, + "initiatedEventId": { + "type": "long" + }, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "control": {} + } + }, + "scheduleActivityTaskFailedEventAttributes": { + "type": "structure", + "required": [ + "activityType", + "activityId", + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "activityType": { + "shape": "Sn" + }, + "activityId": {}, + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "requestCancelActivityTaskFailedEventAttributes": { + "type": "structure", + "required": [ + "activityId", + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "activityId": {}, + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "startTimerFailedEventAttributes": { + "type": "structure", + "required": [ + "timerId", + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "timerId": {}, + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "cancelTimerFailedEventAttributes": { + "type": "structure", + "required": [ + "timerId", + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "timerId": {}, + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "startChildWorkflowExecutionFailedEventAttributes": { + "type": "structure", + "required": [ + "workflowType", + "cause", + "workflowId", + "initiatedEventId", + "decisionTaskCompletedEventId" + ], + "members": { + "workflowType": { + "shape": "Sr" + }, + "cause": {}, + "workflowId": {}, + "initiatedEventId": { + "type": "long" + }, + "decisionTaskCompletedEventId": { + "type": "long" + }, + "control": {} + } + }, + "lambdaFunctionScheduledEventAttributes": { + "type": "structure", + "required": [ + "id", + "name", + "decisionTaskCompletedEventId" + ], + "members": { + "id": {}, + "name": {}, + "input": {}, + "startToCloseTimeout": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "lambdaFunctionStartedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId" + ], + "members": { + "scheduledEventId": { + "type": "long" + } + } + }, + "lambdaFunctionCompletedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + }, + "result": {} + } + }, + "lambdaFunctionFailedEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + }, + "reason": {}, + "details": {} + } + }, + "lambdaFunctionTimedOutEventAttributes": { + "type": "structure", + "required": [ + "scheduledEventId", + "startedEventId" + ], + "members": { + "scheduledEventId": { + "type": "long" + }, + "startedEventId": { + "type": "long" + }, + "timeoutType": {} + } + }, + "scheduleLambdaFunctionFailedEventAttributes": { + "type": "structure", + "required": [ + "id", + "name", + "cause", + "decisionTaskCompletedEventId" + ], + "members": { + "id": {}, + "name": {}, + "cause": {}, + "decisionTaskCompletedEventId": { + "type": "long" + } + } + }, + "startLambdaFunctionFailedEventAttributes": { + "type": "structure", + "members": { + "scheduledEventId": { + "type": "long" + }, + "cause": {}, + "message": {} + } + } + } + } + }, + "S4g": { + "type": "structure", + "required": [ + "executionInfos" + ], + "members": { + "executionInfos": { + "type": "list", + "member": { + "shape": "S19" + } + }, + "nextPageToken": {} + } + } + }, + "examples": {} +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json b/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json new file mode 100644 index 0000000..892ee38 --- /dev/null +++ b/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json @@ -0,0 +1,46 @@ +{ + "pagination": { + "GetWorkflowExecutionHistory": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "events" + }, + "ListActivityTypes": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "typeInfos" + }, + "ListClosedWorkflowExecutions": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "executionInfos" + }, + "ListDomains": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "domainInfos" + }, + "ListOpenWorkflowExecutions": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "executionInfos" + }, + "ListWorkflowTypes": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "typeInfos" + }, + "PollForDecisionTask": { + "limit_key": "maximumPageSize", + "input_token": "nextPageToken", + "output_token": "nextPageToken", + "result_key": "events" + } + } +} diff --git a/node_modules/aws-sdk/apis/waf-2015-08-24.min.json b/node_modules/aws-sdk/apis/waf-2015-08-24.min.json new file mode 100644 index 0000000..224b7d7 --- /dev/null +++ b/node_modules/aws-sdk/apis/waf-2015-08-24.min.json @@ -0,0 +1,1282 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-08-24", + "endpointPrefix": "waf", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "WAF", + "serviceFullName": "AWS WAF", + "signatureVersion": "v4", + "targetPrefix": "AWSWAF_20150824" + }, + "operations": { + "CreateByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ByteMatchSet": { + "shape": "S5" + }, + "ChangeToken": {} + } + } + }, + "CreateIPSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "IPSet": { + "shape": "Sh" + }, + "ChangeToken": {} + } + } + }, + "CreateRule": { + "input": { + "type": "structure", + "required": [ + "Name", + "MetricName", + "ChangeToken" + ], + "members": { + "Name": {}, + "MetricName": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Rule": { + "shape": "Sp" + }, + "ChangeToken": {} + } + } + }, + "CreateSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "SizeConstraintSet": { + "shape": "Sw" + }, + "ChangeToken": {} + } + } + }, + "CreateSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "SqlInjectionMatchSet": { + "shape": "S13" + }, + "ChangeToken": {} + } + } + }, + "CreateWebACL": { + "input": { + "type": "structure", + "required": [ + "Name", + "MetricName", + "DefaultAction", + "ChangeToken" + ], + "members": { + "Name": {}, + "MetricName": {}, + "DefaultAction": { + "shape": "S17" + }, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "WebACL": { + "shape": "S1a" + }, + "ChangeToken": {} + } + } + }, + "CreateXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "XssMatchSet": { + "shape": "S1g" + }, + "ChangeToken": {} + } + } + }, + "DeleteByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "ChangeToken" + ], + "members": { + "ByteMatchSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteIPSet": { + "input": { + "type": "structure", + "required": [ + "IPSetId", + "ChangeToken" + ], + "members": { + "IPSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteRule": { + "input": { + "type": "structure", + "required": [ + "RuleId", + "ChangeToken" + ], + "members": { + "RuleId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "ChangeToken" + ], + "members": { + "SizeConstraintSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "ChangeToken" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteWebACL": { + "input": { + "type": "structure", + "required": [ + "WebACLId", + "ChangeToken" + ], + "members": { + "WebACLId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "XssMatchSetId", + "ChangeToken" + ], + "members": { + "XssMatchSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "GetByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "ByteMatchSetId" + ], + "members": { + "ByteMatchSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ByteMatchSet": { + "shape": "S5" + } + } + } + }, + "GetChangeToken": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "GetChangeTokenStatus": { + "input": { + "type": "structure", + "required": [ + "ChangeToken" + ], + "members": { + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeTokenStatus": {} + } + } + }, + "GetIPSet": { + "input": { + "type": "structure", + "required": [ + "IPSetId" + ], + "members": { + "IPSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "IPSet": { + "shape": "Sh" + } + } + } + }, + "GetRule": { + "input": { + "type": "structure", + "required": [ + "RuleId" + ], + "members": { + "RuleId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Rule": { + "shape": "Sp" + } + } + } + }, + "GetSampledRequests": { + "input": { + "type": "structure", + "required": [ + "WebAclId", + "RuleId", + "TimeWindow", + "MaxItems" + ], + "members": { + "WebAclId": {}, + "RuleId": {}, + "TimeWindow": { + "shape": "S29" + }, + "MaxItems": { + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": { + "SampledRequests": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Request", + "Weight" + ], + "members": { + "Request": { + "type": "structure", + "members": { + "ClientIP": {}, + "Country": {}, + "URI": {}, + "Method": {}, + "HTTPVersion": {}, + "Headers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Value": {} + } + } + } + } + }, + "Weight": { + "type": "long" + }, + "Timestamp": { + "type": "timestamp" + }, + "Action": {} + } + } + }, + "PopulationSize": { + "type": "long" + }, + "TimeWindow": { + "shape": "S29" + } + } + } + }, + "GetSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "SizeConstraintSetId" + ], + "members": { + "SizeConstraintSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "SizeConstraintSet": { + "shape": "Sw" + } + } + } + }, + "GetSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId" + ], + "members": { + "SqlInjectionMatchSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "SqlInjectionMatchSet": { + "shape": "S13" + } + } + } + }, + "GetWebACL": { + "input": { + "type": "structure", + "required": [ + "WebACLId" + ], + "members": { + "WebACLId": {} + } + }, + "output": { + "type": "structure", + "members": { + "WebACL": { + "shape": "S1a" + } + } + } + }, + "GetXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "XssMatchSetId" + ], + "members": { + "XssMatchSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "XssMatchSet": { + "shape": "S1g" + } + } + } + }, + "ListByteMatchSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "ByteMatchSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "Name" + ], + "members": { + "ByteMatchSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListIPSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "IPSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "IPSetId", + "Name" + ], + "members": { + "IPSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListRules": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Rules": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "RuleId", + "Name" + ], + "members": { + "RuleId": {}, + "Name": {} + } + } + } + } + } + }, + "ListSizeConstraintSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "SizeConstraintSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "Name" + ], + "members": { + "SizeConstraintSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListSqlInjectionMatchSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "SqlInjectionMatchSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "Name" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListWebACLs": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "WebACLs": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "WebACLId", + "Name" + ], + "members": { + "WebACLId": {}, + "Name": {} + } + } + } + } + } + }, + "ListXssMatchSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "XssMatchSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "XssMatchSetId", + "Name" + ], + "members": { + "XssMatchSetId": {}, + "Name": {} + } + } + } + } + } + }, + "UpdateByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "ChangeToken", + "Updates" + ], + "members": { + "ByteMatchSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "ByteMatchTuple" + ], + "members": { + "Action": {}, + "ByteMatchTuple": { + "shape": "S8" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateIPSet": { + "input": { + "type": "structure", + "required": [ + "IPSetId", + "ChangeToken", + "Updates" + ], + "members": { + "IPSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "IPSetDescriptor" + ], + "members": { + "Action": {}, + "IPSetDescriptor": { + "shape": "Sj" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateRule": { + "input": { + "type": "structure", + "required": [ + "RuleId", + "ChangeToken", + "Updates" + ], + "members": { + "RuleId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "Predicate" + ], + "members": { + "Action": {}, + "Predicate": { + "shape": "Sr" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "ChangeToken", + "Updates" + ], + "members": { + "SizeConstraintSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "SizeConstraint" + ], + "members": { + "Action": {}, + "SizeConstraint": { + "shape": "Sy" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "ChangeToken", + "Updates" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "SqlInjectionMatchTuple" + ], + "members": { + "Action": {}, + "SqlInjectionMatchTuple": { + "shape": "S15" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateWebACL": { + "input": { + "type": "structure", + "required": [ + "WebACLId", + "ChangeToken" + ], + "members": { + "WebACLId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "ActivatedRule" + ], + "members": { + "Action": {}, + "ActivatedRule": { + "shape": "S1c" + } + } + } + }, + "DefaultAction": { + "shape": "S17" + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "XssMatchSetId", + "ChangeToken", + "Updates" + ], + "members": { + "XssMatchSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "XssMatchTuple" + ], + "members": { + "Action": {}, + "XssMatchTuple": { + "shape": "S1i" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "ByteMatchTuples" + ], + "members": { + "ByteMatchSetId": {}, + "Name": {}, + "ByteMatchTuples": { + "type": "list", + "member": { + "shape": "S8" + } + } + } + }, + "S8": { + "type": "structure", + "required": [ + "FieldToMatch", + "TargetString", + "TextTransformation", + "PositionalConstraint" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TargetString": { + "type": "blob" + }, + "TextTransformation": {}, + "PositionalConstraint": {} + } + }, + "S9": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "Type": {}, + "Data": {} + } + }, + "Sh": { + "type": "structure", + "required": [ + "IPSetId", + "IPSetDescriptors" + ], + "members": { + "IPSetId": {}, + "Name": {}, + "IPSetDescriptors": { + "type": "list", + "member": { + "shape": "Sj" + } + } + } + }, + "Sj": { + "type": "structure", + "required": [ + "Type", + "Value" + ], + "members": { + "Type": {}, + "Value": {} + } + }, + "Sp": { + "type": "structure", + "required": [ + "RuleId", + "Predicates" + ], + "members": { + "RuleId": {}, + "Name": {}, + "MetricName": {}, + "Predicates": { + "type": "list", + "member": { + "shape": "Sr" + } + } + } + }, + "Sr": { + "type": "structure", + "required": [ + "Negated", + "Type", + "DataId" + ], + "members": { + "Negated": { + "type": "boolean" + }, + "Type": {}, + "DataId": {} + } + }, + "Sw": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "SizeConstraints" + ], + "members": { + "SizeConstraintSetId": {}, + "Name": {}, + "SizeConstraints": { + "type": "list", + "member": { + "shape": "Sy" + } + } + } + }, + "Sy": { + "type": "structure", + "required": [ + "FieldToMatch", + "TextTransformation", + "ComparisonOperator", + "Size" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TextTransformation": {}, + "ComparisonOperator": {}, + "Size": { + "type": "long" + } + } + }, + "S13": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "SqlInjectionMatchTuples" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "Name": {}, + "SqlInjectionMatchTuples": { + "type": "list", + "member": { + "shape": "S15" + } + } + } + }, + "S15": { + "type": "structure", + "required": [ + "FieldToMatch", + "TextTransformation" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TextTransformation": {} + } + }, + "S17": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "Type": {} + } + }, + "S1a": { + "type": "structure", + "required": [ + "WebACLId", + "DefaultAction", + "Rules" + ], + "members": { + "WebACLId": {}, + "Name": {}, + "MetricName": {}, + "DefaultAction": { + "shape": "S17" + }, + "Rules": { + "type": "list", + "member": { + "shape": "S1c" + } + } + } + }, + "S1c": { + "type": "structure", + "required": [ + "Priority", + "RuleId", + "Action" + ], + "members": { + "Priority": { + "type": "integer" + }, + "RuleId": {}, + "Action": { + "shape": "S17" + } + } + }, + "S1g": { + "type": "structure", + "required": [ + "XssMatchSetId", + "XssMatchTuples" + ], + "members": { + "XssMatchSetId": {}, + "Name": {}, + "XssMatchTuples": { + "type": "list", + "member": { + "shape": "S1i" + } + } + } + }, + "S1i": { + "type": "structure", + "required": [ + "FieldToMatch", + "TextTransformation" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TextTransformation": {} + } + }, + "S29": { + "type": "structure", + "required": [ + "StartTime", + "EndTime" + ], + "members": { + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + } + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json b/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json new file mode 100644 index 0000000..4086c8b --- /dev/null +++ b/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json @@ -0,0 +1,538 @@ +{ + "version": "2.0", + "metadata": { + "apiVersion": "2015-04-08", + "endpointPrefix": "workspaces", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon WorkSpaces", + "signatureVersion": "v4", + "targetPrefix": "WorkspacesService" + }, + "operations": { + "CreateTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "Tags" + ], + "members": { + "ResourceId": {}, + "Tags": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateWorkspaces": { + "input": { + "type": "structure", + "required": [ + "Workspaces" + ], + "members": { + "Workspaces": { + "type": "list", + "member": { + "shape": "Sa" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedRequests": { + "type": "list", + "member": { + "type": "structure", + "members": { + "WorkspaceRequest": { + "shape": "Sa" + }, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + }, + "PendingRequests": { + "shape": "So" + } + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "TagKeys" + ], + "members": { + "ResourceId": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId" + ], + "members": { + "ResourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "TagList": { + "shape": "S3" + } + } + } + }, + "DescribeWorkspaceBundles": { + "input": { + "type": "structure", + "members": { + "BundleIds": { + "type": "list", + "member": {} + }, + "Owner": {}, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Bundles": { + "type": "list", + "member": { + "type": "structure", + "members": { + "BundleId": {}, + "Name": {}, + "Owner": {}, + "Description": {}, + "UserStorage": { + "type": "structure", + "members": { + "Capacity": {} + } + }, + "ComputeType": { + "type": "structure", + "members": { + "Name": {} + } + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeWorkspaceDirectories": { + "input": { + "type": "structure", + "members": { + "DirectoryIds": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Directories": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DirectoryId": {}, + "Alias": {}, + "DirectoryName": {}, + "RegistrationCode": {}, + "SubnetIds": { + "type": "list", + "member": {} + }, + "DnsIpAddresses": { + "type": "list", + "member": {} + }, + "CustomerUserName": {}, + "IamRoleId": {}, + "DirectoryType": {}, + "WorkspaceSecurityGroupId": {}, + "State": {}, + "WorkspaceCreationProperties": { + "type": "structure", + "members": { + "EnableWorkDocs": { + "type": "boolean" + }, + "EnableInternetAccess": { + "type": "boolean" + }, + "DefaultOu": {}, + "CustomSecurityGroupId": {}, + "UserEnabledAsLocalAdministrator": { + "type": "boolean" + } + } + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeWorkspaces": { + "input": { + "type": "structure", + "members": { + "WorkspaceIds": { + "shape": "S1s" + }, + "DirectoryId": {}, + "UserName": {}, + "BundleId": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Workspaces": { + "shape": "So" + }, + "NextToken": {} + } + } + }, + "DescribeWorkspacesConnectionStatus": { + "input": { + "type": "structure", + "members": { + "WorkspaceIds": { + "shape": "S1s" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "WorkspacesConnectionStatus": { + "type": "list", + "member": { + "type": "structure", + "members": { + "WorkspaceId": {}, + "ConnectionState": {}, + "ConnectionStateCheckTimestamp": { + "type": "timestamp" + }, + "LastKnownUserConnectionTimestamp": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "ModifyWorkspaceProperties": { + "input": { + "type": "structure", + "required": [ + "WorkspaceId", + "WorkspaceProperties" + ], + "members": { + "WorkspaceId": {}, + "WorkspaceProperties": { + "shape": "Sg" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RebootWorkspaces": { + "input": { + "type": "structure", + "required": [ + "RebootWorkspaceRequests" + ], + "members": { + "RebootWorkspaceRequests": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "WorkspaceId" + ], + "members": { + "WorkspaceId": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedRequests": { + "type": "list", + "member": { + "shape": "S28" + } + } + } + } + }, + "RebuildWorkspaces": { + "input": { + "type": "structure", + "required": [ + "RebuildWorkspaceRequests" + ], + "members": { + "RebuildWorkspaceRequests": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "WorkspaceId" + ], + "members": { + "WorkspaceId": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedRequests": { + "type": "list", + "member": { + "shape": "S28" + } + } + } + } + }, + "StartWorkspaces": { + "input": { + "type": "structure", + "required": [ + "StartWorkspaceRequests" + ], + "members": { + "StartWorkspaceRequests": { + "type": "list", + "member": { + "type": "structure", + "members": { + "WorkspaceId": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedRequests": { + "type": "list", + "member": { + "shape": "S28" + } + } + } + } + }, + "StopWorkspaces": { + "input": { + "type": "structure", + "required": [ + "StopWorkspaceRequests" + ], + "members": { + "StopWorkspaceRequests": { + "type": "list", + "member": { + "type": "structure", + "members": { + "WorkspaceId": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedRequests": { + "type": "list", + "member": { + "shape": "S28" + } + } + } + } + }, + "TerminateWorkspaces": { + "input": { + "type": "structure", + "required": [ + "TerminateWorkspaceRequests" + ], + "members": { + "TerminateWorkspaceRequests": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "WorkspaceId" + ], + "members": { + "WorkspaceId": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedRequests": { + "type": "list", + "member": { + "shape": "S28" + } + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sa": { + "type": "structure", + "required": [ + "DirectoryId", + "UserName", + "BundleId" + ], + "members": { + "DirectoryId": {}, + "UserName": {}, + "BundleId": {}, + "VolumeEncryptionKey": {}, + "UserVolumeEncryptionEnabled": { + "type": "boolean" + }, + "RootVolumeEncryptionEnabled": { + "type": "boolean" + }, + "WorkspaceProperties": { + "shape": "Sg" + }, + "Tags": { + "shape": "S3" + } + } + }, + "Sg": { + "type": "structure", + "members": { + "RunningMode": {}, + "RunningModeAutoStopTimeoutInMinutes": { + "type": "integer" + } + } + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "members": { + "WorkspaceId": {}, + "DirectoryId": {}, + "UserName": {}, + "IpAddress": {}, + "State": {}, + "BundleId": {}, + "SubnetId": {}, + "ErrorMessage": {}, + "ErrorCode": {}, + "ComputerName": {}, + "VolumeEncryptionKey": {}, + "UserVolumeEncryptionEnabled": { + "type": "boolean" + }, + "RootVolumeEncryptionEnabled": { + "type": "boolean" + }, + "WorkspaceProperties": { + "shape": "Sg" + } + } + } + }, + "S1s": { + "type": "list", + "member": {} + }, + "S28": { + "type": "structure", + "members": { + "WorkspaceId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } +} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json b/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json new file mode 100644 index 0000000..efa8cba --- /dev/null +++ b/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json @@ -0,0 +1,20 @@ +{ + "pagination": { + "DescribeWorkspaceBundles": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Bundles" + }, + "DescribeWorkspaceDirectories": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Directories" + }, + "DescribeWorkspaces": { + "limit_key": "Limit", + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Workspaces" + } + } +} diff --git a/node_modules/aws-sdk/bower.json b/node_modules/aws-sdk/bower.json new file mode 100644 index 0000000..bda489f --- /dev/null +++ b/node_modules/aws-sdk/bower.json @@ -0,0 +1,9 @@ +{ + "name": "aws-sdk", + "ignore": [ + "apis", "doc-src", "dist-tools", "eslint-rules", "features", "lib", + "scripts", "tasks", "test", "Gemfile*", "configuration*", + "Rakefile", "package.json", "testem.json", ".*", "index.js" + ], + "main": "dist/aws-sdk.js" +} diff --git a/node_modules/aws-sdk/browser.js b/node_modules/aws-sdk/browser.js new file mode 100644 index 0000000..7867151 --- /dev/null +++ b/node_modules/aws-sdk/browser.js @@ -0,0 +1,6 @@ +require('./lib/browser_loader'); + +var AWS = require('./lib/core'); +if (typeof window !== 'undefined') window.AWS = AWS; +if (typeof module !== 'undefined') module.exports = AWS; +if (typeof self !== 'undefined') self.AWS = AWS; \ No newline at end of file diff --git a/node_modules/aws-sdk/clients/acm.js b/node_modules/aws-sdk/clients/acm.js new file mode 100644 index 0000000..9edd68e --- /dev/null +++ b/node_modules/aws-sdk/clients/acm.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['acm'] = {}; +AWS.ACM = Service.defineService('acm', ['2015-12-08']); +Object.defineProperty(apiLoader.services['acm'], '2015-12-08', { + get: function get() { + var model = require('../apis/acm-2015-12-08.min.json'); + model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ACM; diff --git a/node_modules/aws-sdk/clients/all.js b/node_modules/aws-sdk/clients/all.js new file mode 100644 index 0000000..bf51a20 --- /dev/null +++ b/node_modules/aws-sdk/clients/all.js @@ -0,0 +1,79 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); + +module.exports = { + ACM: require('./acm'), + APIGateway: require('./apigateway'), + ApplicationAutoScaling: require('./applicationautoscaling'), + AutoScaling: require('./autoscaling'), + CloudFormation: require('./cloudformation'), + CloudFront: require('./cloudfront'), + CloudHSM: require('./cloudhsm'), + CloudSearch: require('./cloudsearch'), + CloudSearchDomain: require('./cloudsearchdomain'), + CloudTrail: require('./cloudtrail'), + CloudWatch: require('./cloudwatch'), + CloudWatchEvents: require('./cloudwatchevents'), + CloudWatchLogs: require('./cloudwatchlogs'), + CodeCommit: require('./codecommit'), + CodeDeploy: require('./codedeploy'), + CodePipeline: require('./codepipeline'), + CognitoIdentity: require('./cognitoidentity'), + CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), + CognitoSync: require('./cognitosync'), + ConfigService: require('./configservice'), + DataPipeline: require('./datapipeline'), + DeviceFarm: require('./devicefarm'), + DirectConnect: require('./directconnect'), + DirectoryService: require('./directoryservice'), + Discovery: require('./discovery'), + DMS: require('./dms'), + DynamoDB: require('./dynamodb'), + DynamoDBStreams: require('./dynamodbstreams'), + EC2: require('./ec2'), + ECR: require('./ecr'), + ECS: require('./ecs'), + EFS: require('./efs'), + ElastiCache: require('./elasticache'), + ElasticBeanstalk: require('./elasticbeanstalk'), + ELB: require('./elb'), + ELBv2: require('./elbv2'), + EMR: require('./emr'), + ES: require('./es'), + ElasticTranscoder: require('./elastictranscoder'), + Firehose: require('./firehose'), + GameLift: require('./gamelift'), + Glacier: require('./glacier'), + IAM: require('./iam'), + ImportExport: require('./importexport'), + Inspector: require('./inspector'), + Iot: require('./iot'), + IotData: require('./iotdata'), + Kinesis: require('./kinesis'), + KinesisAnalytics: require('./kinesisanalytics'), + KMS: require('./kms'), + Lambda: require('./lambda'), + MachineLearning: require('./machinelearning'), + MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), + MarketplaceMetering: require('./marketplacemetering'), + MobileAnalytics: require('./mobileanalytics'), + OpsWorks: require('./opsworks'), + RDS: require('./rds'), + Redshift: require('./redshift'), + Route53: require('./route53'), + Route53Domains: require('./route53domains'), + S3: require('./s3'), + ServiceCatalog: require('./servicecatalog'), + SES: require('./ses'), + SimpleDB: require('./simpledb'), + Snowball: require('./snowball'), + SNS: require('./sns'), + SQS: require('./sqs'), + SSM: require('./ssm'), + StorageGateway: require('./storagegateway'), + STS: require('./sts'), + Support: require('./support'), + SWF: require('./swf'), + WAF: require('./waf'), + WorkSpaces: require('./workspaces') +}; \ No newline at end of file diff --git a/node_modules/aws-sdk/clients/apigateway.js b/node_modules/aws-sdk/clients/apigateway.js new file mode 100644 index 0000000..bd01d66 --- /dev/null +++ b/node_modules/aws-sdk/clients/apigateway.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['apigateway'] = {}; +AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); +require('../lib/services/apigateway'); +Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', { + get: function get() { + var model = require('../apis/apigateway-2015-07-09.min.json'); + model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.APIGateway; diff --git a/node_modules/aws-sdk/clients/applicationautoscaling.js b/node_modules/aws-sdk/clients/applicationautoscaling.js new file mode 100644 index 0000000..d1410ed --- /dev/null +++ b/node_modules/aws-sdk/clients/applicationautoscaling.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['applicationautoscaling'] = {}; +AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); +Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', { + get: function get() { + var model = require('../apis/application-autoscaling-2016-02-06.min.json'); + model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ApplicationAutoScaling; diff --git a/node_modules/aws-sdk/clients/autoscaling.js b/node_modules/aws-sdk/clients/autoscaling.js new file mode 100644 index 0000000..c28afcc --- /dev/null +++ b/node_modules/aws-sdk/clients/autoscaling.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['autoscaling'] = {}; +AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); +Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', { + get: function get() { + var model = require('../apis/autoscaling-2011-01-01.min.json'); + model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.AutoScaling; diff --git a/node_modules/aws-sdk/clients/browser_default.js b/node_modules/aws-sdk/clients/browser_default.js new file mode 100644 index 0000000..b7e6363 --- /dev/null +++ b/node_modules/aws-sdk/clients/browser_default.js @@ -0,0 +1,61 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); + +module.exports = { + ACM: require('./acm'), + APIGateway: require('./apigateway'), + ApplicationAutoScaling: require('./applicationautoscaling'), + AutoScaling: require('./autoscaling'), + CloudFormation: require('./cloudformation'), + CloudFront: require('./cloudfront'), + CloudHSM: require('./cloudhsm'), + CloudTrail: require('./cloudtrail'), + CloudWatch: require('./cloudwatch'), + CloudWatchEvents: require('./cloudwatchevents'), + CloudWatchLogs: require('./cloudwatchlogs'), + CodeCommit: require('./codecommit'), + CodeDeploy: require('./codedeploy'), + CodePipeline: require('./codepipeline'), + CognitoIdentity: require('./cognitoidentity'), + CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), + CognitoSync: require('./cognitosync'), + ConfigService: require('./configservice'), + DeviceFarm: require('./devicefarm'), + DirectConnect: require('./directconnect'), + DynamoDB: require('./dynamodb'), + DynamoDBStreams: require('./dynamodbstreams'), + EC2: require('./ec2'), + ECR: require('./ecr'), + ECS: require('./ecs'), + ElastiCache: require('./elasticache'), + ElasticBeanstalk: require('./elasticbeanstalk'), + ELB: require('./elb'), + ELBv2: require('./elbv2'), + EMR: require('./emr'), + ElasticTranscoder: require('./elastictranscoder'), + Firehose: require('./firehose'), + GameLift: require('./gamelift'), + Inspector: require('./inspector'), + Iot: require('./iot'), + IotData: require('./iotdata'), + Kinesis: require('./kinesis'), + KMS: require('./kms'), + Lambda: require('./lambda'), + MachineLearning: require('./machinelearning'), + MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), + MobileAnalytics: require('./mobileanalytics'), + OpsWorks: require('./opsworks'), + RDS: require('./rds'), + Redshift: require('./redshift'), + Route53: require('./route53'), + Route53Domains: require('./route53domains'), + S3: require('./s3'), + ServiceCatalog: require('./servicecatalog'), + SES: require('./ses'), + SNS: require('./sns'), + SQS: require('./sqs'), + SSM: require('./ssm'), + StorageGateway: require('./storagegateway'), + STS: require('./sts'), + WAF: require('./waf') +}; \ No newline at end of file diff --git a/node_modules/aws-sdk/clients/cloudformation.js b/node_modules/aws-sdk/clients/cloudformation.js new file mode 100644 index 0000000..25167d7 --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudformation.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudformation'] = {}; +AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); +Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', { + get: function get() { + var model = require('../apis/cloudformation-2010-05-15.min.json'); + model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; + model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudFormation; diff --git a/node_modules/aws-sdk/clients/cloudfront.js b/node_modules/aws-sdk/clients/cloudfront.js new file mode 100644 index 0000000..d6efc89 --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudfront.js @@ -0,0 +1,20 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudfront'] = {}; +AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07']); +require('../lib/services/cloudfront'); +Object.defineProperty(apiLoader.services['cloudfront'], '2016-09-07', { + get: function get() { + var model = require('../apis/cloudfront-2016-09-07.min.json'); + model.paginators = require('../apis/cloudfront-2016-09-07.paginators.json').pagination; + model.waiters = require('../apis/cloudfront-2016-09-07.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudFront; diff --git a/node_modules/aws-sdk/clients/cloudhsm.js b/node_modules/aws-sdk/clients/cloudhsm.js new file mode 100644 index 0000000..fa4ff36 --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudhsm.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudhsm'] = {}; +AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); +Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', { + get: function get() { + var model = require('../apis/cloudhsm-2014-05-30.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudHSM; diff --git a/node_modules/aws-sdk/clients/cloudsearch.js b/node_modules/aws-sdk/clients/cloudsearch.js new file mode 100644 index 0000000..3f1578a --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudsearch.js @@ -0,0 +1,27 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudsearch'] = {}; +AWS.CloudSearch = Service.defineService('cloudsearch', ['2011-02-01', '2013-01-01']); +Object.defineProperty(apiLoader.services['cloudsearch'], '2011-02-01', { + get: function get() { + var model = require('../apis/cloudsearch-2011-02-01.min.json'); + model.paginators = require('../apis/cloudsearch-2011-02-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['cloudsearch'], '2013-01-01', { + get: function get() { + var model = require('../apis/cloudsearch-2013-01-01.min.json'); + model.paginators = require('../apis/cloudsearch-2013-01-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudSearch; diff --git a/node_modules/aws-sdk/clients/cloudsearchdomain.js b/node_modules/aws-sdk/clients/cloudsearchdomain.js new file mode 100644 index 0000000..616df6f --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudsearchdomain.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudsearchdomain'] = {}; +AWS.CloudSearchDomain = Service.defineService('cloudsearchdomain', ['2013-01-01']); +require('../lib/services/cloudsearchdomain'); +Object.defineProperty(apiLoader.services['cloudsearchdomain'], '2013-01-01', { + get: function get() { + var model = require('../apis/cloudsearchdomain-2013-01-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudSearchDomain; diff --git a/node_modules/aws-sdk/clients/cloudtrail.js b/node_modules/aws-sdk/clients/cloudtrail.js new file mode 100644 index 0000000..8e52986 --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudtrail.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudtrail'] = {}; +AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); +Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', { + get: function get() { + var model = require('../apis/cloudtrail-2013-11-01.min.json'); + model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudTrail; diff --git a/node_modules/aws-sdk/clients/cloudwatch.js b/node_modules/aws-sdk/clients/cloudwatch.js new file mode 100644 index 0000000..df624aa --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudwatch.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudwatch'] = {}; +AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); +Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', { + get: function get() { + var model = require('../apis/monitoring-2010-08-01.min.json'); + model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; + model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudWatch; diff --git a/node_modules/aws-sdk/clients/cloudwatchevents.js b/node_modules/aws-sdk/clients/cloudwatchevents.js new file mode 100644 index 0000000..a9e4419 --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudwatchevents.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudwatchevents'] = {}; +AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']); +Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', { + get: function get() { + var model = require('../apis/events-2015-10-07.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudWatchEvents; diff --git a/node_modules/aws-sdk/clients/cloudwatchlogs.js b/node_modules/aws-sdk/clients/cloudwatchlogs.js new file mode 100644 index 0000000..c02a7f2 --- /dev/null +++ b/node_modules/aws-sdk/clients/cloudwatchlogs.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudwatchlogs'] = {}; +AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); +Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', { + get: function get() { + var model = require('../apis/logs-2014-03-28.min.json'); + model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudWatchLogs; diff --git a/node_modules/aws-sdk/clients/codecommit.js b/node_modules/aws-sdk/clients/codecommit.js new file mode 100644 index 0000000..a2e69b3 --- /dev/null +++ b/node_modules/aws-sdk/clients/codecommit.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['codecommit'] = {}; +AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); +Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', { + get: function get() { + var model = require('../apis/codecommit-2015-04-13.min.json'); + model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CodeCommit; diff --git a/node_modules/aws-sdk/clients/codedeploy.js b/node_modules/aws-sdk/clients/codedeploy.js new file mode 100644 index 0000000..6adae60 --- /dev/null +++ b/node_modules/aws-sdk/clients/codedeploy.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['codedeploy'] = {}; +AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); +Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', { + get: function get() { + var model = require('../apis/codedeploy-2014-10-06.min.json'); + model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; + model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CodeDeploy; diff --git a/node_modules/aws-sdk/clients/codepipeline.js b/node_modules/aws-sdk/clients/codepipeline.js new file mode 100644 index 0000000..ca0d5d6 --- /dev/null +++ b/node_modules/aws-sdk/clients/codepipeline.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['codepipeline'] = {}; +AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); +Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', { + get: function get() { + var model = require('../apis/codepipeline-2015-07-09.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CodePipeline; diff --git a/node_modules/aws-sdk/clients/cognitoidentity.js b/node_modules/aws-sdk/clients/cognitoidentity.js new file mode 100644 index 0000000..9333abe --- /dev/null +++ b/node_modules/aws-sdk/clients/cognitoidentity.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cognitoidentity'] = {}; +AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); +require('../lib/services/cognitoidentity'); +Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', { + get: function get() { + var model = require('../apis/cognito-identity-2014-06-30.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CognitoIdentity; diff --git a/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js b/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js new file mode 100644 index 0000000..d5c0d87 --- /dev/null +++ b/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cognitoidentityserviceprovider'] = {}; +AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); +Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', { + get: function get() { + var model = require('../apis/cognito-idp-2016-04-18.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CognitoIdentityServiceProvider; diff --git a/node_modules/aws-sdk/clients/cognitosync.js b/node_modules/aws-sdk/clients/cognitosync.js new file mode 100644 index 0000000..8e8e24d --- /dev/null +++ b/node_modules/aws-sdk/clients/cognitosync.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cognitosync'] = {}; +AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); +Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', { + get: function get() { + var model = require('../apis/cognito-sync-2014-06-30.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CognitoSync; diff --git a/node_modules/aws-sdk/clients/configservice.js b/node_modules/aws-sdk/clients/configservice.js new file mode 100644 index 0000000..049fec4 --- /dev/null +++ b/node_modules/aws-sdk/clients/configservice.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['configservice'] = {}; +AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); +Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', { + get: function get() { + var model = require('../apis/config-2014-11-12.min.json'); + model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ConfigService; diff --git a/node_modules/aws-sdk/clients/datapipeline.js b/node_modules/aws-sdk/clients/datapipeline.js new file mode 100644 index 0000000..aa0a375 --- /dev/null +++ b/node_modules/aws-sdk/clients/datapipeline.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['datapipeline'] = {}; +AWS.DataPipeline = Service.defineService('datapipeline', ['2012-10-29']); +Object.defineProperty(apiLoader.services['datapipeline'], '2012-10-29', { + get: function get() { + var model = require('../apis/datapipeline-2012-10-29.min.json'); + model.paginators = require('../apis/datapipeline-2012-10-29.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DataPipeline; diff --git a/node_modules/aws-sdk/clients/devicefarm.js b/node_modules/aws-sdk/clients/devicefarm.js new file mode 100644 index 0000000..4b4bc1a --- /dev/null +++ b/node_modules/aws-sdk/clients/devicefarm.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['devicefarm'] = {}; +AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); +Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', { + get: function get() { + var model = require('../apis/devicefarm-2015-06-23.min.json'); + model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DeviceFarm; diff --git a/node_modules/aws-sdk/clients/directconnect.js b/node_modules/aws-sdk/clients/directconnect.js new file mode 100644 index 0000000..f8e013f --- /dev/null +++ b/node_modules/aws-sdk/clients/directconnect.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['directconnect'] = {}; +AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); +Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', { + get: function get() { + var model = require('../apis/directconnect-2012-10-25.min.json'); + model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DirectConnect; diff --git a/node_modules/aws-sdk/clients/directoryservice.js b/node_modules/aws-sdk/clients/directoryservice.js new file mode 100644 index 0000000..c1cb16c --- /dev/null +++ b/node_modules/aws-sdk/clients/directoryservice.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['directoryservice'] = {}; +AWS.DirectoryService = Service.defineService('directoryservice', ['2015-04-16']); +Object.defineProperty(apiLoader.services['directoryservice'], '2015-04-16', { + get: function get() { + var model = require('../apis/ds-2015-04-16.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DirectoryService; diff --git a/node_modules/aws-sdk/clients/discovery.js b/node_modules/aws-sdk/clients/discovery.js new file mode 100644 index 0000000..c1e0a2d --- /dev/null +++ b/node_modules/aws-sdk/clients/discovery.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['discovery'] = {}; +AWS.Discovery = Service.defineService('discovery', ['2015-11-01']); +Object.defineProperty(apiLoader.services['discovery'], '2015-11-01', { + get: function get() { + var model = require('../apis/discovery-2015-11-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Discovery; diff --git a/node_modules/aws-sdk/clients/dms.js b/node_modules/aws-sdk/clients/dms.js new file mode 100644 index 0000000..68afc4b --- /dev/null +++ b/node_modules/aws-sdk/clients/dms.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['dms'] = {}; +AWS.DMS = Service.defineService('dms', ['2016-01-01']); +Object.defineProperty(apiLoader.services['dms'], '2016-01-01', { + get: function get() { + var model = require('../apis/dms-2016-01-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DMS; diff --git a/node_modules/aws-sdk/clients/dynamodb.js b/node_modules/aws-sdk/clients/dynamodb.js new file mode 100644 index 0000000..26c6fc5 --- /dev/null +++ b/node_modules/aws-sdk/clients/dynamodb.js @@ -0,0 +1,30 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['dynamodb'] = {}; +AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); +require('../lib/services/dynamodb'); +Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', { + get: function get() { + var model = require('../apis/dynamodb-2011-12-05.min.json'); + model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; + model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', { + get: function get() { + var model = require('../apis/dynamodb-2012-08-10.min.json'); + model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; + model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DynamoDB; diff --git a/node_modules/aws-sdk/clients/dynamodbstreams.js b/node_modules/aws-sdk/clients/dynamodbstreams.js new file mode 100644 index 0000000..a3ea363 --- /dev/null +++ b/node_modules/aws-sdk/clients/dynamodbstreams.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['dynamodbstreams'] = {}; +AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); +Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', { + get: function get() { + var model = require('../apis/streams.dynamodb-2012-08-10.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DynamoDBStreams; diff --git a/node_modules/aws-sdk/clients/ec2.js b/node_modules/aws-sdk/clients/ec2.js new file mode 100644 index 0000000..b40d89f --- /dev/null +++ b/node_modules/aws-sdk/clients/ec2.js @@ -0,0 +1,20 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ec2'] = {}; +AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15']); +require('../lib/services/ec2'); +Object.defineProperty(apiLoader.services['ec2'], '2016-09-15', { + get: function get() { + var model = require('../apis/ec2-2016-09-15.min.json'); + model.paginators = require('../apis/ec2-2016-09-15.paginators.json').pagination; + model.waiters = require('../apis/ec2-2016-09-15.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.EC2; diff --git a/node_modules/aws-sdk/clients/ecr.js b/node_modules/aws-sdk/clients/ecr.js new file mode 100644 index 0000000..6d1a307 --- /dev/null +++ b/node_modules/aws-sdk/clients/ecr.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ecr'] = {}; +AWS.ECR = Service.defineService('ecr', ['2015-09-21']); +Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', { + get: function get() { + var model = require('../apis/ecr-2015-09-21.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ECR; diff --git a/node_modules/aws-sdk/clients/ecs.js b/node_modules/aws-sdk/clients/ecs.js new file mode 100644 index 0000000..da1be08 --- /dev/null +++ b/node_modules/aws-sdk/clients/ecs.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ecs'] = {}; +AWS.ECS = Service.defineService('ecs', ['2014-11-13']); +Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', { + get: function get() { + var model = require('../apis/ecs-2014-11-13.min.json'); + model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; + model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ECS; diff --git a/node_modules/aws-sdk/clients/efs.js b/node_modules/aws-sdk/clients/efs.js new file mode 100644 index 0000000..b094ac6 --- /dev/null +++ b/node_modules/aws-sdk/clients/efs.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['efs'] = {}; +AWS.EFS = Service.defineService('efs', ['2015-02-01']); +Object.defineProperty(apiLoader.services['efs'], '2015-02-01', { + get: function get() { + var model = require('../apis/elasticfilesystem-2015-02-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.EFS; diff --git a/node_modules/aws-sdk/clients/elasticache.js b/node_modules/aws-sdk/clients/elasticache.js new file mode 100644 index 0000000..4420db7 --- /dev/null +++ b/node_modules/aws-sdk/clients/elasticache.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elasticache'] = {}; +AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']); +Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', { + get: function get() { + var model = require('../apis/elasticache-2015-02-02.min.json'); + model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; + model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ElastiCache; diff --git a/node_modules/aws-sdk/clients/elasticbeanstalk.js b/node_modules/aws-sdk/clients/elasticbeanstalk.js new file mode 100644 index 0000000..ea1938d --- /dev/null +++ b/node_modules/aws-sdk/clients/elasticbeanstalk.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elasticbeanstalk'] = {}; +AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); +Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', { + get: function get() { + var model = require('../apis/elasticbeanstalk-2010-12-01.min.json'); + model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ElasticBeanstalk; diff --git a/node_modules/aws-sdk/clients/elastictranscoder.js b/node_modules/aws-sdk/clients/elastictranscoder.js new file mode 100644 index 0000000..c67fc75 --- /dev/null +++ b/node_modules/aws-sdk/clients/elastictranscoder.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elastictranscoder'] = {}; +AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); +Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', { + get: function get() { + var model = require('../apis/elastictranscoder-2012-09-25.min.json'); + model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; + model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ElasticTranscoder; diff --git a/node_modules/aws-sdk/clients/elb.js b/node_modules/aws-sdk/clients/elb.js new file mode 100644 index 0000000..059ec9f --- /dev/null +++ b/node_modules/aws-sdk/clients/elb.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elb'] = {}; +AWS.ELB = Service.defineService('elb', ['2012-06-01']); +Object.defineProperty(apiLoader.services['elb'], '2012-06-01', { + get: function get() { + var model = require('../apis/elasticloadbalancing-2012-06-01.min.json'); + model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; + model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ELB; diff --git a/node_modules/aws-sdk/clients/elbv2.js b/node_modules/aws-sdk/clients/elbv2.js new file mode 100644 index 0000000..2519598 --- /dev/null +++ b/node_modules/aws-sdk/clients/elbv2.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elbv2'] = {}; +AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); +Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', { + get: function get() { + var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); + model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ELBv2; diff --git a/node_modules/aws-sdk/clients/emr.js b/node_modules/aws-sdk/clients/emr.js new file mode 100644 index 0000000..82d69f1 --- /dev/null +++ b/node_modules/aws-sdk/clients/emr.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['emr'] = {}; +AWS.EMR = Service.defineService('emr', ['2009-03-31']); +Object.defineProperty(apiLoader.services['emr'], '2009-03-31', { + get: function get() { + var model = require('../apis/elasticmapreduce-2009-03-31.min.json'); + model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; + model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.EMR; diff --git a/node_modules/aws-sdk/clients/es.js b/node_modules/aws-sdk/clients/es.js new file mode 100644 index 0000000..1adebda --- /dev/null +++ b/node_modules/aws-sdk/clients/es.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['es'] = {}; +AWS.ES = Service.defineService('es', ['2015-01-01']); +Object.defineProperty(apiLoader.services['es'], '2015-01-01', { + get: function get() { + var model = require('../apis/es-2015-01-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ES; diff --git a/node_modules/aws-sdk/clients/firehose.js b/node_modules/aws-sdk/clients/firehose.js new file mode 100644 index 0000000..2327a61 --- /dev/null +++ b/node_modules/aws-sdk/clients/firehose.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['firehose'] = {}; +AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); +Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', { + get: function get() { + var model = require('../apis/firehose-2015-08-04.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Firehose; diff --git a/node_modules/aws-sdk/clients/gamelift.js b/node_modules/aws-sdk/clients/gamelift.js new file mode 100644 index 0000000..15e8cf9 --- /dev/null +++ b/node_modules/aws-sdk/clients/gamelift.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['gamelift'] = {}; +AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); +Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', { + get: function get() { + var model = require('../apis/gamelift-2015-10-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.GameLift; diff --git a/node_modules/aws-sdk/clients/glacier.js b/node_modules/aws-sdk/clients/glacier.js new file mode 100644 index 0000000..6255b69 --- /dev/null +++ b/node_modules/aws-sdk/clients/glacier.js @@ -0,0 +1,20 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['glacier'] = {}; +AWS.Glacier = Service.defineService('glacier', ['2012-06-01']); +require('../lib/services/glacier'); +Object.defineProperty(apiLoader.services['glacier'], '2012-06-01', { + get: function get() { + var model = require('../apis/glacier-2012-06-01.min.json'); + model.paginators = require('../apis/glacier-2012-06-01.paginators.json').pagination; + model.waiters = require('../apis/glacier-2012-06-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Glacier; diff --git a/node_modules/aws-sdk/clients/iam.js b/node_modules/aws-sdk/clients/iam.js new file mode 100644 index 0000000..d5614ca --- /dev/null +++ b/node_modules/aws-sdk/clients/iam.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['iam'] = {}; +AWS.IAM = Service.defineService('iam', ['2010-05-08']); +Object.defineProperty(apiLoader.services['iam'], '2010-05-08', { + get: function get() { + var model = require('../apis/iam-2010-05-08.min.json'); + model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination; + model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.IAM; diff --git a/node_modules/aws-sdk/clients/importexport.js b/node_modules/aws-sdk/clients/importexport.js new file mode 100644 index 0000000..0a77d55 --- /dev/null +++ b/node_modules/aws-sdk/clients/importexport.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['importexport'] = {}; +AWS.ImportExport = Service.defineService('importexport', ['2010-06-01']); +Object.defineProperty(apiLoader.services['importexport'], '2010-06-01', { + get: function get() { + var model = require('../apis/importexport-2010-06-01.min.json'); + model.paginators = require('../apis/importexport-2010-06-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ImportExport; diff --git a/node_modules/aws-sdk/clients/inspector.js b/node_modules/aws-sdk/clients/inspector.js new file mode 100644 index 0000000..365ff90 --- /dev/null +++ b/node_modules/aws-sdk/clients/inspector.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['inspector'] = {}; +AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']); +Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', { + get: function get() { + var model = require('../apis/inspector-2016-02-16.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Inspector; diff --git a/node_modules/aws-sdk/clients/iot.js b/node_modules/aws-sdk/clients/iot.js new file mode 100644 index 0000000..1d9a12b --- /dev/null +++ b/node_modules/aws-sdk/clients/iot.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['iot'] = {}; +AWS.Iot = Service.defineService('iot', ['2015-05-28']); +Object.defineProperty(apiLoader.services['iot'], '2015-05-28', { + get: function get() { + var model = require('../apis/iot-2015-05-28.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Iot; diff --git a/node_modules/aws-sdk/clients/iotdata.js b/node_modules/aws-sdk/clients/iotdata.js new file mode 100644 index 0000000..fca5f56 --- /dev/null +++ b/node_modules/aws-sdk/clients/iotdata.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['iotdata'] = {}; +AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); +require('../lib/services/iotdata'); +Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', { + get: function get() { + var model = require('../apis/iot-data-2015-05-28.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.IotData; diff --git a/node_modules/aws-sdk/clients/kinesis.js b/node_modules/aws-sdk/clients/kinesis.js new file mode 100644 index 0000000..8cb6bc6 --- /dev/null +++ b/node_modules/aws-sdk/clients/kinesis.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['kinesis'] = {}; +AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); +Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', { + get: function get() { + var model = require('../apis/kinesis-2013-12-02.min.json'); + model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; + model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Kinesis; diff --git a/node_modules/aws-sdk/clients/kinesisanalytics.js b/node_modules/aws-sdk/clients/kinesisanalytics.js new file mode 100644 index 0000000..fe2fbe3 --- /dev/null +++ b/node_modules/aws-sdk/clients/kinesisanalytics.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['kinesisanalytics'] = {}; +AWS.KinesisAnalytics = Service.defineService('kinesisanalytics', ['2015-08-14']); +Object.defineProperty(apiLoader.services['kinesisanalytics'], '2015-08-14', { + get: function get() { + var model = require('../apis/kinesisanalytics-2015-08-14.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.KinesisAnalytics; diff --git a/node_modules/aws-sdk/clients/kms.js b/node_modules/aws-sdk/clients/kms.js new file mode 100644 index 0000000..d2c192b --- /dev/null +++ b/node_modules/aws-sdk/clients/kms.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['kms'] = {}; +AWS.KMS = Service.defineService('kms', ['2014-11-01']); +Object.defineProperty(apiLoader.services['kms'], '2014-11-01', { + get: function get() { + var model = require('../apis/kms-2014-11-01.min.json'); + model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.KMS; diff --git a/node_modules/aws-sdk/clients/lambda.js b/node_modules/aws-sdk/clients/lambda.js new file mode 100644 index 0000000..ba88cc5 --- /dev/null +++ b/node_modules/aws-sdk/clients/lambda.js @@ -0,0 +1,27 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['lambda'] = {}; +AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); +Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', { + get: function get() { + var model = require('../apis/lambda-2014-11-11.min.json'); + model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', { + get: function get() { + var model = require('../apis/lambda-2015-03-31.min.json'); + model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Lambda; diff --git a/node_modules/aws-sdk/clients/machinelearning.js b/node_modules/aws-sdk/clients/machinelearning.js new file mode 100644 index 0000000..01a4924 --- /dev/null +++ b/node_modules/aws-sdk/clients/machinelearning.js @@ -0,0 +1,20 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['machinelearning'] = {}; +AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); +require('../lib/services/machinelearning'); +Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', { + get: function get() { + var model = require('../apis/machinelearning-2014-12-12.min.json'); + model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; + model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MachineLearning; diff --git a/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js b/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js new file mode 100644 index 0000000..591c8ff --- /dev/null +++ b/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['marketplacecommerceanalytics'] = {}; +AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); +Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', { + get: function get() { + var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MarketplaceCommerceAnalytics; diff --git a/node_modules/aws-sdk/clients/marketplacemetering.js b/node_modules/aws-sdk/clients/marketplacemetering.js new file mode 100644 index 0000000..b3630ab --- /dev/null +++ b/node_modules/aws-sdk/clients/marketplacemetering.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['marketplacemetering'] = {}; +AWS.MarketplaceMetering = Service.defineService('marketplacemetering', ['2016-01-14']); +Object.defineProperty(apiLoader.services['marketplacemetering'], '2016-01-14', { + get: function get() { + var model = require('../apis/meteringmarketplace-2016-01-14.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MarketplaceMetering; diff --git a/node_modules/aws-sdk/clients/mobileanalytics.js b/node_modules/aws-sdk/clients/mobileanalytics.js new file mode 100644 index 0000000..d1d066c --- /dev/null +++ b/node_modules/aws-sdk/clients/mobileanalytics.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['mobileanalytics'] = {}; +AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); +Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', { + get: function get() { + var model = require('../apis/mobileanalytics-2014-06-05.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MobileAnalytics; diff --git a/node_modules/aws-sdk/clients/opsworks.js b/node_modules/aws-sdk/clients/opsworks.js new file mode 100644 index 0000000..d3e235a --- /dev/null +++ b/node_modules/aws-sdk/clients/opsworks.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['opsworks'] = {}; +AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); +Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', { + get: function get() { + var model = require('../apis/opsworks-2013-02-18.min.json'); + model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; + model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.OpsWorks; diff --git a/node_modules/aws-sdk/clients/rds.js b/node_modules/aws-sdk/clients/rds.js new file mode 100644 index 0000000..134f089 --- /dev/null +++ b/node_modules/aws-sdk/clients/rds.js @@ -0,0 +1,47 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['rds'] = {}; +AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01*', '2014-10-31']); +Object.defineProperty(apiLoader.services['rds'], '2013-01-10', { + get: function get() { + var model = require('../apis/rds-2013-01-10.min.json'); + model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['rds'], '2013-02-12', { + get: function get() { + var model = require('../apis/rds-2013-02-12.min.json'); + model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['rds'], '2013-09-09', { + get: function get() { + var model = require('../apis/rds-2013-09-09.min.json'); + model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; + model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['rds'], '2014-10-31', { + get: function get() { + var model = require('../apis/rds-2014-10-31.min.json'); + model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; + model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.RDS; diff --git a/node_modules/aws-sdk/clients/redshift.js b/node_modules/aws-sdk/clients/redshift.js new file mode 100644 index 0000000..d1a64c1 --- /dev/null +++ b/node_modules/aws-sdk/clients/redshift.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['redshift'] = {}; +AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); +Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', { + get: function get() { + var model = require('../apis/redshift-2012-12-01.min.json'); + model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; + model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Redshift; diff --git a/node_modules/aws-sdk/clients/route53.js b/node_modules/aws-sdk/clients/route53.js new file mode 100644 index 0000000..87a3144 --- /dev/null +++ b/node_modules/aws-sdk/clients/route53.js @@ -0,0 +1,20 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['route53'] = {}; +AWS.Route53 = Service.defineService('route53', ['2013-04-01']); +require('../lib/services/route53'); +Object.defineProperty(apiLoader.services['route53'], '2013-04-01', { + get: function get() { + var model = require('../apis/route53-2013-04-01.min.json'); + model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; + model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Route53; diff --git a/node_modules/aws-sdk/clients/route53domains.js b/node_modules/aws-sdk/clients/route53domains.js new file mode 100644 index 0000000..f7d4a00 --- /dev/null +++ b/node_modules/aws-sdk/clients/route53domains.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['route53domains'] = {}; +AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); +Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', { + get: function get() { + var model = require('../apis/route53domains-2014-05-15.min.json'); + model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Route53Domains; diff --git a/node_modules/aws-sdk/clients/s3.js b/node_modules/aws-sdk/clients/s3.js new file mode 100644 index 0000000..e04ebf4 --- /dev/null +++ b/node_modules/aws-sdk/clients/s3.js @@ -0,0 +1,20 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['s3'] = {}; +AWS.S3 = Service.defineService('s3', ['2006-03-01']); +require('../lib/services/s3'); +Object.defineProperty(apiLoader.services['s3'], '2006-03-01', { + get: function get() { + var model = require('../apis/s3-2006-03-01.min.json'); + model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; + model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.S3; diff --git a/node_modules/aws-sdk/clients/servicecatalog.js b/node_modules/aws-sdk/clients/servicecatalog.js new file mode 100644 index 0000000..9b0efad --- /dev/null +++ b/node_modules/aws-sdk/clients/servicecatalog.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['servicecatalog'] = {}; +AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); +Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', { + get: function get() { + var model = require('../apis/servicecatalog-2015-12-10.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ServiceCatalog; diff --git a/node_modules/aws-sdk/clients/ses.js b/node_modules/aws-sdk/clients/ses.js new file mode 100644 index 0000000..e0a0f78 --- /dev/null +++ b/node_modules/aws-sdk/clients/ses.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ses'] = {}; +AWS.SES = Service.defineService('ses', ['2010-12-01']); +Object.defineProperty(apiLoader.services['ses'], '2010-12-01', { + get: function get() { + var model = require('../apis/email-2010-12-01.min.json'); + model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination; + model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SES; diff --git a/node_modules/aws-sdk/clients/simpledb.js b/node_modules/aws-sdk/clients/simpledb.js new file mode 100644 index 0000000..04393b8 --- /dev/null +++ b/node_modules/aws-sdk/clients/simpledb.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['simpledb'] = {}; +AWS.SimpleDB = Service.defineService('simpledb', ['2009-04-15']); +Object.defineProperty(apiLoader.services['simpledb'], '2009-04-15', { + get: function get() { + var model = require('../apis/sdb-2009-04-15.min.json'); + model.paginators = require('../apis/sdb-2009-04-15.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SimpleDB; diff --git a/node_modules/aws-sdk/clients/snowball.js b/node_modules/aws-sdk/clients/snowball.js new file mode 100644 index 0000000..41f963d --- /dev/null +++ b/node_modules/aws-sdk/clients/snowball.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['snowball'] = {}; +AWS.Snowball = Service.defineService('snowball', ['2016-06-30']); +Object.defineProperty(apiLoader.services['snowball'], '2016-06-30', { + get: function get() { + var model = require('../apis/snowball-2016-06-30.min.json'); + model.paginators = require('../apis/snowball-2016-06-30.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Snowball; diff --git a/node_modules/aws-sdk/clients/sns.js b/node_modules/aws-sdk/clients/sns.js new file mode 100644 index 0000000..47573a9 --- /dev/null +++ b/node_modules/aws-sdk/clients/sns.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['sns'] = {}; +AWS.SNS = Service.defineService('sns', ['2010-03-31']); +Object.defineProperty(apiLoader.services['sns'], '2010-03-31', { + get: function get() { + var model = require('../apis/sns-2010-03-31.min.json'); + model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SNS; diff --git a/node_modules/aws-sdk/clients/sqs.js b/node_modules/aws-sdk/clients/sqs.js new file mode 100644 index 0000000..ec547c7 --- /dev/null +++ b/node_modules/aws-sdk/clients/sqs.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['sqs'] = {}; +AWS.SQS = Service.defineService('sqs', ['2012-11-05']); +require('../lib/services/sqs'); +Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', { + get: function get() { + var model = require('../apis/sqs-2012-11-05.min.json'); + model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SQS; diff --git a/node_modules/aws-sdk/clients/ssm.js b/node_modules/aws-sdk/clients/ssm.js new file mode 100644 index 0000000..612be66 --- /dev/null +++ b/node_modules/aws-sdk/clients/ssm.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ssm'] = {}; +AWS.SSM = Service.defineService('ssm', ['2014-11-06']); +Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', { + get: function get() { + var model = require('../apis/ssm-2014-11-06.min.json'); + model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SSM; diff --git a/node_modules/aws-sdk/clients/storagegateway.js b/node_modules/aws-sdk/clients/storagegateway.js new file mode 100644 index 0000000..31d67f5 --- /dev/null +++ b/node_modules/aws-sdk/clients/storagegateway.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['storagegateway'] = {}; +AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); +Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', { + get: function get() { + var model = require('../apis/storagegateway-2013-06-30.min.json'); + model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.StorageGateway; diff --git a/node_modules/aws-sdk/clients/sts.js b/node_modules/aws-sdk/clients/sts.js new file mode 100644 index 0000000..c9e106a --- /dev/null +++ b/node_modules/aws-sdk/clients/sts.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['sts'] = {}; +AWS.STS = Service.defineService('sts', ['2011-06-15']); +require('../lib/services/sts'); +Object.defineProperty(apiLoader.services['sts'], '2011-06-15', { + get: function get() { + var model = require('../apis/sts-2011-06-15.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.STS; diff --git a/node_modules/aws-sdk/clients/support.js b/node_modules/aws-sdk/clients/support.js new file mode 100644 index 0000000..f16ac1d --- /dev/null +++ b/node_modules/aws-sdk/clients/support.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['support'] = {}; +AWS.Support = Service.defineService('support', ['2013-04-15']); +Object.defineProperty(apiLoader.services['support'], '2013-04-15', { + get: function get() { + var model = require('../apis/support-2013-04-15.min.json'); + model.paginators = require('../apis/support-2013-04-15.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Support; diff --git a/node_modules/aws-sdk/clients/swf.js b/node_modules/aws-sdk/clients/swf.js new file mode 100644 index 0000000..0b2d94f --- /dev/null +++ b/node_modules/aws-sdk/clients/swf.js @@ -0,0 +1,19 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['swf'] = {}; +AWS.SWF = Service.defineService('swf', ['2012-01-25']); +require('../lib/services/swf'); +Object.defineProperty(apiLoader.services['swf'], '2012-01-25', { + get: function get() { + var model = require('../apis/swf-2012-01-25.min.json'); + model.paginators = require('../apis/swf-2012-01-25.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SWF; diff --git a/node_modules/aws-sdk/clients/waf.js b/node_modules/aws-sdk/clients/waf.js new file mode 100644 index 0000000..33974d6 --- /dev/null +++ b/node_modules/aws-sdk/clients/waf.js @@ -0,0 +1,17 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['waf'] = {}; +AWS.WAF = Service.defineService('waf', ['2015-08-24']); +Object.defineProperty(apiLoader.services['waf'], '2015-08-24', { + get: function get() { + var model = require('../apis/waf-2015-08-24.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.WAF; diff --git a/node_modules/aws-sdk/clients/workspaces.js b/node_modules/aws-sdk/clients/workspaces.js new file mode 100644 index 0000000..111e389 --- /dev/null +++ b/node_modules/aws-sdk/clients/workspaces.js @@ -0,0 +1,18 @@ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['workspaces'] = {}; +AWS.WorkSpaces = Service.defineService('workspaces', ['2015-04-08']); +Object.defineProperty(apiLoader.services['workspaces'], '2015-04-08', { + get: function get() { + var model = require('../apis/workspaces-2015-04-08.min.json'); + model.paginators = require('../apis/workspaces-2015-04-08.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.WorkSpaces; diff --git a/node_modules/aws-sdk/dist-tools/browser-builder.js b/node_modules/aws-sdk/dist-tools/browser-builder.js new file mode 100755 index 0000000..5dfb692 --- /dev/null +++ b/node_modules/aws-sdk/dist-tools/browser-builder.js @@ -0,0 +1,87 @@ +#!/usr/bin/env node + +var path = require('path'); + +var AWS = require('../'); + +var license = [ + '// AWS SDK for JavaScript v' + AWS.VERSION, + '// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.', + '// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt' +].join('\n') + '\n'; + +function minify(code) { + var uglify = require('uglify-js'); + var minified = uglify.minify(code, {fromString: true}); + return minified.code; +} + +function stripComments(code) { + var lines = code.split(/\r?\n/); + var multiLine = false; + lines = lines.map(function (line) { + var rLine = line; + if (line.match(/^\s*\/\//)) { + rLine = null; + } else if (line.match(/^\s*\/\*/)) { + multiLine = true; + rLine = null; + } + + if (multiLine) { + var multiLineEnd = line.match(/\*\/(.*)/); + if (multiLineEnd) { + multiLine = false; + rLine = multiLineEnd[1]; + } else { + rLine = null; + } + } + + return rLine; + }).filter(function(l) { return l !== null; }); + + var newCode = lines.join('\n'); + newCode = newCode.replace(/\/\*\*[\s\S]+?Copyright\s+.+?Amazon[\s\S]+?\*\//g, ''); + return newCode; +} + +function build(options, callback) { + if (arguments.length === 1) { + callback = options; + options = {}; + } + + var img = require('insert-module-globals'); + img.vars.process = function() { return '{browser:true}'; }; + + if (options.services) process.env.AWS_SERVICES = options.services; + + var browserify = require('browserify'); + var brOpts = { basedir: path.resolve(__dirname, '..') }; + browserify(brOpts).add('./').ignore('domain').bundle(function(err, data) { + if (err) return callback(err); + + var code = (data || '').toString(); + if (options.minify) code = minify(code); + else code = stripComments(code); + + code = license + code; + callback(null, code); + }); +} + +// run if we called this tool directly +if (require.main === module) { + var opts = { + services: process.argv[2] || process.env.SERVICES, + minify: process.env.MINIFY ? true : false + }; + build(opts, function(err, code) { + if (err) console.error(err.message); + else console.log(code); + }); +} + +build.license = license; +module.exports = build; diff --git a/node_modules/aws-sdk/dist-tools/client-creator.js b/node_modules/aws-sdk/dist-tools/client-creator.js new file mode 100644 index 0000000..52d7769 --- /dev/null +++ b/node_modules/aws-sdk/dist-tools/client-creator.js @@ -0,0 +1,216 @@ +var fs = require('fs'); +var path = require('path'); + +// Generate service clients +function ClientCreator() { + this._metadata = require('../apis/metadata'); + this._apisFolderPath = path.join(__dirname, '..', 'apis'); + this._clientFolderPath = path.join(__dirname, '..', 'clients'); + this._serviceCustomizationsFolderPath = path.join(__dirname, '..', 'lib', 'services'); + this._packageJsonPath = path.join(__dirname, '..', 'package.json'); + this._apiFileNames = null; +} + +ClientCreator.prototype.getAllApiFilenames = function getAllApiFilenames() { + if (this._apiFileNames) { + return this._apiFileNames; + } + var apiFileNames = fs.readdirSync(this._apisFolderPath); + // filter out metadata + this._apiFileNames = apiFileNames.filter(function(name) { + return name !== 'metadata.json'; + }); + return this._apiFileNames; +}; + +ClientCreator.prototype.getAllApiFilenamesForService = function getAllApiFilenamesForService(modelName) { + var serviceRegex = new RegExp('(^' + modelName + '-([\\d]{4}-[\\d]{2}-[\\d]{2})\\.([\\w]+))\\.json$'); + var modelRegex = /(([\d]{4}-[\d]{2}-[\d]{2})\.([\w]+))\.json$/; + + var models = {}; + var versions = {}; + this.getAllApiFilenames().filter(function(name) { + return name.search(serviceRegex) === 0; + }).forEach(function(name) { + var matches = name.match(serviceRegex); + if (!matches) { + return; + } + var model = matches[1]; + var version = matches[2]; + var modelType = matches[3]; + if (!versions.hasOwnProperty(version)) { + versions[version] = {}; + } + var versionInfo = versions[version]; + switch (modelType) { + case 'min': + versionInfo.api = model; + break; + case 'paginators': + versionInfo.paginators = model; + break; + case 'waiters2': + versionInfo.waiters = model; + break; + default: + return; + } + }); + models.versions = versions; + return models; +}; + +ClientCreator.prototype.customizationsExist = function customizationsExist(serviceName) { + var customizationsFolder = this._serviceCustomizationsFolderPath; + return fs.existsSync(path.join(customizationsFolder, serviceName + '.js')); +}; + +ClientCreator.prototype.generateClientFileSource = function generateClientFileSource(serviceMetadata, specifiedVersion) { + var clientFolderPath = this._clientFolderPath; + var className = serviceMetadata.name; + var serviceName = className.toLowerCase(); + var modelName = serviceMetadata.prefix || serviceName; + specifiedVersion = specifiedVersion || '*'; + + // get models for the service + var models = this.getAllApiFilenamesForService(modelName); + + var modelVersions = models && models.versions; + if (!modelVersions) { + throw new Error('Unable to get models for ' + modelName); + } + var obsoleteVersions = serviceMetadata.versions || []; + var versionNumbers = Object.keys(modelVersions); + var tab = ' '; + var code = ''; + code += 'require(\'../lib/node_loader\');\n'; + code += 'var AWS = require(\'../lib/core\');\n'; + code += 'var Service = require(\'../lib/service\');\n'; + code += 'var apiLoader = require(\'../lib/api_loader\');\n\n'; + code += 'apiLoader.services[\'' + serviceName +'\'] = {};\n'; + code += 'AWS.' + className + ' = Service.defineService(\'' + serviceName + '\', [\'' + [].concat(obsoleteVersions, versionNumbers).sort().join('\', \'') + '\']);\n'; + // pull in service customizations + if (this.customizationsExist(serviceName)) { + code += 'require(\'../lib/services/' + serviceName + '\');\n'; + } + versionNumbers.forEach(function(version) { + // check version + if (specifiedVersion !== '*' && specifiedVersion !== version) { + return; + } + var versionInfo = modelVersions[version]; + if (!versionInfo.hasOwnProperty('api')) { + throw new Error('No API model for ' + serviceName + '-' + version); + } + code += 'Object.defineProperty(apiLoader.services[\'' + serviceName +'\'], \'' + version + '\', {\n'; + code += tab + 'get: function get() {\n'; + code += tab + tab + 'var model = require(\'../apis/' + versionInfo.api + '.json\');\n' + if (versionInfo.hasOwnProperty('paginators')) { + code += tab + tab + 'model.paginators = require(\'../apis/' + versionInfo.paginators + '.json\').pagination;\n'; + } + if (versionInfo.hasOwnProperty('waiters')) { + code += tab + tab + 'model.waiters = require(\'../apis/' + versionInfo.waiters + '.json\').waiters;\n'; + } + code += tab + tab + 'return model;\n'; + code += tab + '},\n'; + code += tab + 'enumerable: true,\n'; + code += tab + 'configurable: true\n'; + code += '});\n'; + }); + + code += '\n'; + code += 'module.exports = AWS.' + className + ';\n'; + return { + code: code, + path: path.join(clientFolderPath, serviceName + '.js'), + service: serviceName, + } +}; + +ClientCreator.prototype.tabs = function tabs(count) { + var tab = ''; + for (var i = 0; i < count; i++) { + tab += ' '; + } + return tab; +} + +ClientCreator.prototype.generateDefinePropertySource = function generateDefinePropertySource(objName, serviceName, className) { + var tabs = this.tabs; + var code = ''; + code += 'var ' + serviceName + ' = null;\n'; + code += 'Object.defineProperty(' + objName + ', \'' + className + '\', {\n'; + code += tabs(1) + 'get: function get() {\n'; + code += tabs(2) + 'return ' + serviceName + ' || require(\'./' + serviceName + '\');\n'; + code += tabs(1) + '},\n'; + code += tabs(1) + 'set: function set(svc) {\n'; + code += tabs(2) + serviceName + ' = svc;\n'; + code += tabs(1) + '},\n'; + code += tabs(1) + 'enumerable: true,\n'; + code += tabs(1) + 'configurable: true\n'; + code += '});\n'; + + return code; +}; + +ClientCreator.prototype.generateAllServicesSource = function generateAllServicesSource(services, fileName) { + var metadata = this._metadata; + var self = this; + var code = ''; + code += 'require(\'../lib/node_loader\');\n'; + code += 'var AWS = require(\'../lib/core\');\n\n'; + code += 'module.exports = {\n'; + + services.forEach(function(service, idx) { + var className = metadata[service].name; + var tab = ' '; + var isLast = idx === services.length - 1; + //code += self.generateDefinePropertySource('AWS', service, className); + code += self.tabs(1) + className + ': require(\'./' + service + '\')' + (isLast ? '' : ',') + '\n'; + }); + code += '};'; + return { + code: code, + path: path.join(this._clientFolderPath, fileName + '.js'), + service: fileName + }; +}; + +ClientCreator.prototype.getDefaultServices = function getDefaultServices() { + var metadata = this._metadata; + var services = []; + for (var key in metadata) { + if (!metadata.hasOwnProperty(key)) { + continue; + } + var className = metadata[key].name; + var serviceName = className.toLowerCase(); + services.push(serviceName); + } + return services; +}; + +ClientCreator.prototype.writeClientServices = function writeClientServices() { + var metadata = this._metadata; + var services = []; + var corsServices = []; + for (var key in metadata) { + if (!metadata.hasOwnProperty(key)) { + continue; + } + var clientInfo = this.generateClientFileSource(metadata[key]); + fs.writeFileSync(clientInfo.path, clientInfo.code); + services.push(clientInfo.service); + // check if service supports CORS + if (metadata[key].cors === true) { + corsServices.push(clientInfo.service); + } + } + var allClientInfo = this.generateAllServicesSource(services, 'all'); + fs.writeFileSync(allClientInfo.path, allClientInfo.code); + var browserClientInfo = this.generateAllServicesSource(corsServices, 'browser_default'); + fs.writeFileSync(browserClientInfo.path, browserClientInfo.code); +}; + +module.exports = ClientCreator; \ No newline at end of file diff --git a/node_modules/aws-sdk/dist-tools/create-all-services.js b/node_modules/aws-sdk/dist-tools/create-all-services.js new file mode 100644 index 0000000..8549b4c --- /dev/null +++ b/node_modules/aws-sdk/dist-tools/create-all-services.js @@ -0,0 +1,6 @@ +var ClientCreator = require('./client-creator'); + +var cc = new ClientCreator(); + +cc.writeClientServices(); +console.log('Finished updating services.'); \ No newline at end of file diff --git a/node_modules/aws-sdk/dist-tools/service-collector.js b/node_modules/aws-sdk/dist-tools/service-collector.js new file mode 100644 index 0000000..b0a4b61 --- /dev/null +++ b/node_modules/aws-sdk/dist-tools/service-collector.js @@ -0,0 +1,168 @@ +var fs = require('fs'); +var util = require('util'); +var path = require('path'); + +var AWS = require('../'); +var apis = require('../lib/api_loader'); +var metadata = require('../apis/metadata'); +var ClientCreator = require('./client-creator'); + +var clientCreator = new ClientCreator(); +var defaultServices = clientCreator.getDefaultServices().join(','); +var sanitizeRegex = /[^a-zA-Z0-9,-]/; + +var serviceClasses = {}; +Object.keys(AWS).forEach(function(name) { + if (AWS[name].serviceIdentifier) { + serviceClasses[AWS[name].serviceIdentifier] = AWS[name]; + } +}); + +function getServiceHeader(service) { + if (service === 'all') { + return Object.keys(serviceClasses).map(function(name) { + return getServiceHeader(name); + }).join('\n'); + } + + if (!serviceClasses[service]) return null; + var versions = serviceClasses[service].apiVersions.map(function(version) { + return version.indexOf('*') >= 0 ? null : version; + }).filter(function(c) { return c !== null; }); + + var file = util.format( + 'if (!Object.prototype.hasOwnProperty.call(AWS, \'' + metadata[service].name + '\')) {\n' + + ' AWS.apiLoader.services[\'%s\'] = {};\n' + + ' AWS.%s = AWS.Service.defineService(\'%s\', %s);\n', + service, metadata[service].name, service, util.inspect(versions)); + var svcPath = path.join(__dirname, '..', 'lib', 'services', service + '.js'); + if (fs.existsSync(svcPath)) { + file += ' require(\'./services/' + service + '\');\n'; + } + file += '}\n'; + + return file; +} + +function getService(service, version) { + if (service === 'all') { + return Object.keys(serviceClasses).map(function(name) { + var out = serviceClasses[name].apiVersions.map(function(svcVersion) { + if (svcVersion.indexOf('*') >= 0) return null; + return getService(name, svcVersion); + }).filter(function(c) { return c !== null; }).join('\n'); + + return out; + }).join('\n'); + } + + var svc, api; + if (!serviceClasses[service]) { + return null; + } + + try { + var ClassName = serviceClasses[service]; + svc = new ClassName({apiVersion: version, endpoint: 'localhost'}); + api = svc.api; + } catch (e) { + return null; + } + + var serviceFileName = metadata[service].prefix || service; + var lines = []; + var line = util.format( + 'AWS.apiLoader.services[\'%s\'][\'%s\'] = %s;\n', + service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.min\')'); + lines.push(line); + if (Object.prototype.hasOwnProperty.call(api, 'paginators') && Object.keys(api.paginators).length) { + line = util.format( + 'AWS.apiLoader.services[\'%s\'][\'%s\'].paginators = %s;\n', + service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.paginators\').pagination'); + lines.push(line); + } + if (Object.prototype.hasOwnProperty.call(api, 'waiters') && Object.keys(api.waiters).length) { + line = util.format( + 'AWS.apiLoader.services[\'%s\'][\'%s\'].waiters = %s;\n', + service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.waiters2\').waiters'); + lines.push(line); + } + return lines.join(''); +} + +function ServiceCollector(services) { + var builtServices = {}; + + function buildService(name, usingDefaultServices) { + var match = name.match(/^(.+?)(?:-(.+?))?$/); + var service = match[1], version = match[2] || 'latest'; + var contents = []; + var lines, err; + + if (!builtServices[service]) { + builtServices[service] = {}; + + lines = getServiceHeader(service); + if (lines === null) { + if (!usingDefaultServices) { + err = new Error('Invalid module: ' + service); + err.name = 'InvalidModuleError'; + throw err; + } + } else { + contents.push(lines); + } + } + + if (!builtServices[service][version]) { + builtServices[service][version] = true; + + lines = getService(service, version); + if (lines === null) { + if (!usingDefaultServices) { + err = new Error('Invalid module: ' + service + '-' + version); + err.name = 'InvalidModuleError'; + throw err; + } + } else { + contents.push(lines); + } + } + + return contents.join(''); + } + + var serviceCode = ''; + var usingDefaultServicesToggle = false; + if (!services) { + usingDefaultServicesToggle = true; + services = defaultServices; + } + if (services.match(sanitizeRegex)) { + throw new Error('Incorrectly formatted service names'); + } + + var invalidModules = []; + var stsIncluded = false; + services.split(',').sort().forEach(function(name) { + if (name.match(/^sts\b/) || name === 'all') stsIncluded = true; + try { + serviceCode += buildService(name, usingDefaultServicesToggle) + '\n'; + } catch (e) { + if (e.name === 'InvalidModuleError') invalidModules.push(name); + else throw e; + } + }); + + if (!stsIncluded) { + serviceCode += buildService('sts') + '\n'; + } + + if (invalidModules.length > 0) { + throw new Error('Missing modules: ' + invalidModules.join(', ')); + } + + return serviceCode; +} + +module.exports = ServiceCollector; \ No newline at end of file diff --git a/node_modules/aws-sdk/dist-tools/transform.js b/node_modules/aws-sdk/dist-tools/transform.js new file mode 100644 index 0000000..ff7d2fc --- /dev/null +++ b/node_modules/aws-sdk/dist-tools/transform.js @@ -0,0 +1,43 @@ +var Transform = require('stream').Transform; +var collector = require('./service-collector'); +var license = require('./browser-builder').license; + +module.exports = function(file) { + var stream = new Transform(); + + var didDefineServices = !!process.env.AWS_SERVICES; + + var isEntryPoint = !!file.match(/[\/\\]lib[\/\\]browser\.js$/); + + stream._transform = function(data, encoding, callback) { + callback(null, data); + }; + + if (isEntryPoint) { + if (didDefineServices) { + // We need to strip out the default requires statement + stream._transform = function(data, encoding, callback) { + var code = data.toString(); + code = code.trim(); + var lines = code.split('\n'); + lines = lines.filter(function(line) { + return !line.match(/^require\(.+browser_default['"]\);$/); + }); + + code = lines.join('\n'); + data = new Buffer(code); + callback(null, data); + }; + + var src = collector(process.env.AWS_SERVICES); + stream._flush = function(callback) { + stream.push(src); + callback(); + }; + } + + stream.push(license); + } + + return stream; +}; diff --git a/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt b/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt new file mode 100644 index 0000000..14e4658 --- /dev/null +++ b/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt @@ -0,0 +1,96 @@ +The bundled package of the AWS SDK for JavaScript is available under the +Apache License, Version 2.0: + + Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. + + Licensed under the Apache License, Version 2.0 (the "License"). You + may not use this file except in compliance with the License. A copy of + the License is located at + + http://aws.amazon.com/apache2.0/ + + or in the "license" file accompanying this file. This file is + distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + ANY KIND, either express or implied. See the License for the specific + language governing permissions and limitations under the License. + +This product bundles browserify, which is available under a +"3-clause BSD" license: + + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to permit + persons to whom the Software is furnished to do so, subject to the + following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN + NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR + OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE + USE OR OTHER DEALINGS IN THE SOFTWARE. + +This product bundles crypto-browserify, which is available under +the MIT license: + + Copyright (c) 2013 Dominic Tarr + + Permission is hereby granted, free of charge, + to any person obtaining a copy of this software and + associated documentation files (the "Software"), to + deal in the Software without restriction, including + without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom + the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice + shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR + ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +This product bundles MD5, SHA-1, and SHA-256 hashing algorithm components, +which are available under a BSD license: + + Copyright (c) 1998 - 2009, Paul Johnston & Contributors + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + Redistributions of source code must retain the above copyrightnotice, + this list of conditions and the following disclaimer. Redistributions + in binary form must reproduce the above copyright notice, this list of + conditions and the following disclaimer in the documentation and/or + other materials provided with the distribution. + + Neither the name of the author nor the names of its contributors may + be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/aws-sdk/dist/aws-sdk.js b/node_modules/aws-sdk/dist/aws-sdk.js new file mode 100644 index 0000000..5e12d2b --- /dev/null +++ b/node_modules/aws-sdk/dist/aws-sdk.js @@ -0,0 +1,99711 @@ +// AWS SDK for JavaScript v2.6.8 +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt +(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o `0`", + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidInstanceID.NotFound", + "state": "retry" + } + ] + }, + "BundleTaskComplete": { + "delay": 15, + "operation": "DescribeBundleTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "complete", + "matcher": "pathAll", + "state": "success", + "argument": "BundleTasks[].State" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "BundleTasks[].State" + } + ] + }, + "ConversionTaskCancelled": { + "delay": 15, + "operation": "DescribeConversionTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "cancelled", + "matcher": "pathAll", + "state": "success", + "argument": "ConversionTasks[].State" + } + ] + }, + "ConversionTaskCompleted": { + "delay": 15, + "operation": "DescribeConversionTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "completed", + "matcher": "pathAll", + "state": "success", + "argument": "ConversionTasks[].State" + }, + { + "expected": "cancelled", + "matcher": "pathAny", + "state": "failure", + "argument": "ConversionTasks[].State" + }, + { + "expected": "cancelling", + "matcher": "pathAny", + "state": "failure", + "argument": "ConversionTasks[].State" + } + ] + }, + "ConversionTaskDeleted": { + "delay": 15, + "operation": "DescribeConversionTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "ConversionTasks[].State" + } + ] + }, + "CustomerGatewayAvailable": { + "delay": 15, + "operation": "DescribeCustomerGateways", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "CustomerGateways[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "CustomerGateways[].State" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "CustomerGateways[].State" + } + ] + }, + "ExportTaskCancelled": { + "delay": 15, + "operation": "DescribeExportTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "cancelled", + "matcher": "pathAll", + "state": "success", + "argument": "ExportTasks[].State" + } + ] + }, + "ExportTaskCompleted": { + "delay": 15, + "operation": "DescribeExportTasks", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "completed", + "matcher": "pathAll", + "state": "success", + "argument": "ExportTasks[].State" + } + ] + }, + "ImageExists": { + "operation": "DescribeImages", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "matcher": "path", + "expected": true, + "argument": "length(Images[]) > `0`", + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidAMIID.NotFound", + "state": "retry" + } + ] + }, + "ImageAvailable": { + "operation": "DescribeImages", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "Images[].State", + "expected": "available" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "Images[].State", + "expected": "failed" + } + ] + }, + "InstanceRunning": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "running", + "matcher": "pathAll", + "state": "success", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "shutting-down", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "matcher": "error", + "expected": "InvalidInstanceID.NotFound", + "state": "retry" + } + ] + }, + "InstanceStatusOk": { + "operation": "DescribeInstanceStatus", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "InstanceStatuses[].InstanceStatus.Status", + "expected": "ok" + }, + { + "matcher": "error", + "expected": "InvalidInstanceID.NotFound", + "state": "retry" + } + ] + }, + "InstanceStopped": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "stopped", + "matcher": "pathAll", + "state": "success", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + } + ] + }, + "InstanceTerminated": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "terminated", + "matcher": "pathAll", + "state": "success", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Reservations[].Instances[].State.Name" + } + ] + }, + "KeyPairExists": { + "operation": "DescribeKeyPairs", + "delay": 5, + "maxAttempts": 6, + "acceptors": [ + { + "expected": true, + "matcher": "pathAll", + "state": "success", + "argument": "length(KeyPairs[].KeyName) > `0`" + }, + { + "expected": "InvalidKeyPair.NotFound", + "matcher": "error", + "state": "retry" + } + ] + }, + "NatGatewayAvailable": { + "operation": "DescribeNatGateways", + "delay": 15, + "maxAttempts": 40, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "NatGateways[].State", + "expected": "available" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "NatGateways[].State", + "expected": "failed" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "NatGateways[].State", + "expected": "deleting" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "NatGateways[].State", + "expected": "deleted" + }, + { + "state": "retry", + "matcher": "error", + "expected": "NatGatewayNotFound" + } + ] + }, + "NetworkInterfaceAvailable": { + "operation": "DescribeNetworkInterfaces", + "delay": 20, + "maxAttempts": 10, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "NetworkInterfaces[].Status" + }, + { + "expected": "InvalidNetworkInterfaceID.NotFound", + "matcher": "error", + "state": "failure" + } + ] + }, + "PasswordDataAvailable": { + "operation": "GetPasswordData", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "path", + "argument": "length(PasswordData) > `0`", + "expected": true + } + ] + }, + "SnapshotCompleted": { + "delay": 15, + "operation": "DescribeSnapshots", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "completed", + "matcher": "pathAll", + "state": "success", + "argument": "Snapshots[].State" + } + ] + }, + "SpotInstanceRequestFulfilled": { + "operation": "DescribeSpotInstanceRequests", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "fulfilled" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "schedule-expired" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "canceled-before-fulfillment" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "bad-parameters" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "SpotInstanceRequests[].Status.Code", + "expected": "system-error" + } + ] + }, + "SubnetAvailable": { + "delay": 15, + "operation": "DescribeSubnets", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Subnets[].State" + } + ] + }, + "SystemStatusOk": { + "operation": "DescribeInstanceStatus", + "maxAttempts": 40, + "delay": 15, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "InstanceStatuses[].SystemStatus.Status", + "expected": "ok" + } + ] + }, + "VolumeAvailable": { + "delay": 15, + "operation": "DescribeVolumes", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Volumes[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "Volumes[].State" + } + ] + }, + "VolumeDeleted": { + "delay": 15, + "operation": "DescribeVolumes", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "Volumes[].State" + }, + { + "matcher": "error", + "expected": "InvalidVolume.NotFound", + "state": "success" + } + ] + }, + "VolumeInUse": { + "delay": 15, + "operation": "DescribeVolumes", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "in-use", + "matcher": "pathAll", + "state": "success", + "argument": "Volumes[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "Volumes[].State" + } + ] + }, + "VpcAvailable": { + "delay": 15, + "operation": "DescribeVpcs", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Vpcs[].State" + } + ] + }, + "VpcExists": { + "operation": "DescribeVpcs", + "delay": 1, + "maxAttempts": 5, + "acceptors": [ + { + "matcher": "status", + "expected": 200, + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidVpcID.NotFound", + "state": "retry" + } + ] + }, + "VpnConnectionAvailable": { + "delay": 15, + "operation": "DescribeVpnConnections", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "VpnConnections[].State" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "VpnConnections[].State" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "VpnConnections[].State" + } + ] + }, + "VpnConnectionDeleted": { + "delay": 15, + "operation": "DescribeVpnConnections", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "VpnConnections[].State" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "VpnConnections[].State" + } + ] + }, + "VpcPeeringConnectionExists": { + "delay": 15, + "operation": "DescribeVpcPeeringConnections", + "maxAttempts": 40, + "acceptors": [ + { + "matcher": "status", + "expected": 200, + "state": "success" + }, + { + "matcher": "error", + "expected": "InvalidVpcPeeringConnectionID.NotFound", + "state": "retry" + } + ] + } + } +} + +},{}],42:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-09-21", + "endpointPrefix": "ecr", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon ECR", + "serviceFullName": "Amazon EC2 Container Registry", + "signatureVersion": "v4", + "targetPrefix": "AmazonEC2ContainerRegistry_V20150921" + }, + "operations": { + "BatchCheckLayerAvailability": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "layerDigests" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "layerDigests": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "layers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "layerDigest": {}, + "layerAvailability": {}, + "layerSize": { + "type": "long" + } + } + } + }, + "failures": { + "type": "list", + "member": { + "type": "structure", + "members": { + "layerDigest": {}, + "failureCode": {}, + "failureReason": {} + } + } + } + } + } + }, + "BatchDeleteImage": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "imageIds" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageIds": { + "shape": "Sh" + } + } + }, + "output": { + "type": "structure", + "members": { + "imageIds": { + "shape": "Sh" + }, + "failures": { + "shape": "Sm" + } + } + } + }, + "BatchGetImage": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "imageIds" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageIds": { + "shape": "Sh" + } + } + }, + "output": { + "type": "structure", + "members": { + "images": { + "type": "list", + "member": { + "shape": "St" + } + }, + "failures": { + "shape": "Sm" + } + } + } + }, + "CompleteLayerUpload": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "uploadId", + "layerDigests" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "layerDigests": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "layerDigest": {} + } + } + }, + "CreateRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "repository": { + "shape": "S11" + } + } + } + }, + "DeleteRepository": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "force": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "repository": { + "shape": "S11" + } + } + } + }, + "DeleteRepositoryPolicy": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {} + } + } + }, + "DescribeImages": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageIds": { + "shape": "Sh" + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "filter": { + "type": "structure", + "members": { + "tagStatus": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "imageDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "imageDigest": {}, + "imageTags": { + "type": "list", + "member": {} + }, + "imageSizeInBytes": { + "type": "long" + }, + "imagePushedAt": { + "type": "timestamp" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeRepositories": { + "input": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryNames": { + "type": "list", + "member": {} + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "repositories": { + "type": "list", + "member": { + "shape": "S11" + } + }, + "nextToken": {} + } + } + }, + "GetAuthorizationToken": { + "input": { + "type": "structure", + "members": { + "registryIds": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "authorizationData": { + "type": "list", + "member": { + "type": "structure", + "members": { + "authorizationToken": {}, + "expiresAt": { + "type": "timestamp" + }, + "proxyEndpoint": {} + } + } + } + } + } + }, + "GetDownloadUrlForLayer": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "layerDigest" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "layerDigest": {} + } + }, + "output": { + "type": "structure", + "members": { + "downloadUrl": {}, + "layerDigest": {} + } + } + }, + "GetRepositoryPolicy": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {} + } + } + }, + "InitiateLayerUpload": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {} + } + }, + "output": { + "type": "structure", + "members": { + "uploadId": {}, + "partSize": { + "type": "long" + } + } + } + }, + "ListImages": { + "input": { + "type": "structure", + "required": [ + "repositoryName" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "filter": { + "type": "structure", + "members": { + "tagStatus": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "imageIds": { + "shape": "Sh" + }, + "nextToken": {} + } + } + }, + "PutImage": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "imageManifest" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "imageManifest": {} + } + }, + "output": { + "type": "structure", + "members": { + "image": { + "shape": "St" + } + } + } + }, + "SetRepositoryPolicy": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "policyText" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {}, + "force": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "policyText": {} + } + } + }, + "UploadLayerPart": { + "input": { + "type": "structure", + "required": [ + "repositoryName", + "uploadId", + "partFirstByte", + "partLastByte", + "layerPartBlob" + ], + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "partFirstByte": { + "type": "long" + }, + "partLastByte": { + "type": "long" + }, + "layerPartBlob": { + "type": "blob" + } + } + }, + "output": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "uploadId": {}, + "lastByteReceived": { + "type": "long" + } + } + } + } + }, + "shapes": { + "Sh": { + "type": "list", + "member": { + "shape": "Si" + } + }, + "Si": { + "type": "structure", + "members": { + "imageDigest": {}, + "imageTag": {} + } + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "members": { + "imageId": { + "shape": "Si" + }, + "failureCode": {}, + "failureReason": {} + } + } + }, + "St": { + "type": "structure", + "members": { + "registryId": {}, + "repositoryName": {}, + "imageId": { + "shape": "Si" + }, + "imageManifest": {} + } + }, + "S11": { + "type": "structure", + "members": { + "repositoryArn": {}, + "registryId": {}, + "repositoryName": {}, + "repositoryUri": {}, + "createdAt": { + "type": "timestamp" + } + } + } + } +} +},{}],43:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-13", + "endpointPrefix": "ecs", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon ECS", + "serviceFullName": "Amazon EC2 Container Service", + "signatureVersion": "v4", + "targetPrefix": "AmazonEC2ContainerServiceV20141113" + }, + "operations": { + "CreateCluster": { + "input": { + "type": "structure", + "members": { + "clusterName": {} + } + }, + "output": { + "type": "structure", + "members": { + "cluster": { + "shape": "S4" + } + } + } + }, + "CreateService": { + "input": { + "type": "structure", + "required": [ + "serviceName", + "taskDefinition", + "desiredCount" + ], + "members": { + "cluster": {}, + "serviceName": {}, + "taskDefinition": {}, + "loadBalancers": { + "shape": "S7" + }, + "desiredCount": { + "type": "integer" + }, + "clientToken": {}, + "role": {}, + "deploymentConfiguration": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "service": { + "shape": "Sc" + } + } + } + }, + "DeleteCluster": { + "input": { + "type": "structure", + "required": [ + "cluster" + ], + "members": { + "cluster": {} + } + }, + "output": { + "type": "structure", + "members": { + "cluster": { + "shape": "S4" + } + } + } + }, + "DeleteService": { + "input": { + "type": "structure", + "required": [ + "service" + ], + "members": { + "cluster": {}, + "service": {} + } + }, + "output": { + "type": "structure", + "members": { + "service": { + "shape": "Sc" + } + } + } + }, + "DeregisterContainerInstance": { + "input": { + "type": "structure", + "required": [ + "containerInstance" + ], + "members": { + "cluster": {}, + "containerInstance": {}, + "force": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstance": { + "shape": "Sp" + } + } + } + }, + "DeregisterTaskDefinition": { + "input": { + "type": "structure", + "required": [ + "taskDefinition" + ], + "members": { + "taskDefinition": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinition": { + "shape": "S12" + } + } + } + }, + "DescribeClusters": { + "input": { + "type": "structure", + "members": { + "clusters": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "clusters": { + "type": "list", + "member": { + "shape": "S4" + } + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DescribeContainerInstances": { + "input": { + "type": "structure", + "required": [ + "containerInstances" + ], + "members": { + "cluster": {}, + "containerInstances": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstances": { + "type": "list", + "member": { + "shape": "Sp" + } + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DescribeServices": { + "input": { + "type": "structure", + "required": [ + "services" + ], + "members": { + "cluster": {}, + "services": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "services": { + "type": "list", + "member": { + "shape": "Sc" + } + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DescribeTaskDefinition": { + "input": { + "type": "structure", + "required": [ + "taskDefinition" + ], + "members": { + "taskDefinition": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinition": { + "shape": "S12" + } + } + } + }, + "DescribeTasks": { + "input": { + "type": "structure", + "required": [ + "tasks" + ], + "members": { + "cluster": {}, + "tasks": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "members": { + "tasks": { + "shape": "S28" + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "DiscoverPollEndpoint": { + "input": { + "type": "structure", + "members": { + "containerInstance": {}, + "cluster": {} + } + }, + "output": { + "type": "structure", + "members": { + "endpoint": {}, + "telemetryEndpoint": {} + } + } + }, + "ListClusters": { + "input": { + "type": "structure", + "members": { + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "clusterArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListContainerInstances": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstanceArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListServices": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "serviceArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListTaskDefinitionFamilies": { + "input": { + "type": "structure", + "members": { + "familyPrefix": {}, + "status": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "families": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListTaskDefinitions": { + "input": { + "type": "structure", + "members": { + "familyPrefix": {}, + "status": {}, + "sort": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinitionArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "ListTasks": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "containerInstance": {}, + "family": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + }, + "startedBy": {}, + "serviceName": {}, + "desiredStatus": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskArns": { + "shape": "Sv" + }, + "nextToken": {} + } + } + }, + "RegisterContainerInstance": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "instanceIdentityDocument": {}, + "instanceIdentityDocumentSignature": {}, + "totalResources": { + "shape": "Sr" + }, + "versionInfo": { + "shape": "Sq" + }, + "containerInstanceArn": {}, + "attributes": { + "shape": "Sy" + } + } + }, + "output": { + "type": "structure", + "members": { + "containerInstance": { + "shape": "Sp" + } + } + } + }, + "RegisterTaskDefinition": { + "input": { + "type": "structure", + "required": [ + "family", + "containerDefinitions" + ], + "members": { + "family": {}, + "taskRoleArn": {}, + "networkMode": {}, + "containerDefinitions": { + "shape": "S13" + }, + "volumes": { + "shape": "S1o" + } + } + }, + "output": { + "type": "structure", + "members": { + "taskDefinition": { + "shape": "S12" + } + } + } + }, + "RunTask": { + "input": { + "type": "structure", + "required": [ + "taskDefinition" + ], + "members": { + "cluster": {}, + "taskDefinition": {}, + "overrides": { + "shape": "S2a" + }, + "count": { + "type": "integer" + }, + "startedBy": {} + } + }, + "output": { + "type": "structure", + "members": { + "tasks": { + "shape": "S28" + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "StartTask": { + "input": { + "type": "structure", + "required": [ + "taskDefinition", + "containerInstances" + ], + "members": { + "cluster": {}, + "taskDefinition": {}, + "overrides": { + "shape": "S2a" + }, + "containerInstances": { + "shape": "Sv" + }, + "startedBy": {} + } + }, + "output": { + "type": "structure", + "members": { + "tasks": { + "shape": "S28" + }, + "failures": { + "shape": "S1w" + } + } + } + }, + "StopTask": { + "input": { + "type": "structure", + "required": [ + "task" + ], + "members": { + "cluster": {}, + "task": {}, + "reason": {} + } + }, + "output": { + "type": "structure", + "members": { + "task": { + "shape": "S29" + } + } + } + }, + "SubmitContainerStateChange": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "task": {}, + "containerName": {}, + "status": {}, + "exitCode": { + "type": "integer" + }, + "reason": {}, + "networkBindings": { + "shape": "S2f" + } + } + }, + "output": { + "type": "structure", + "members": { + "acknowledgment": {} + } + } + }, + "SubmitTaskStateChange": { + "input": { + "type": "structure", + "members": { + "cluster": {}, + "task": {}, + "status": {}, + "reason": {} + } + }, + "output": { + "type": "structure", + "members": { + "acknowledgment": {} + } + } + }, + "UpdateContainerAgent": { + "input": { + "type": "structure", + "required": [ + "containerInstance" + ], + "members": { + "cluster": {}, + "containerInstance": {} + } + }, + "output": { + "type": "structure", + "members": { + "containerInstance": { + "shape": "Sp" + } + } + } + }, + "UpdateService": { + "input": { + "type": "structure", + "required": [ + "service" + ], + "members": { + "cluster": {}, + "service": {}, + "desiredCount": { + "type": "integer" + }, + "taskDefinition": {}, + "deploymentConfiguration": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "service": { + "shape": "Sc" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "clusterArn": {}, + "clusterName": {}, + "status": {}, + "registeredContainerInstancesCount": { + "type": "integer" + }, + "runningTasksCount": { + "type": "integer" + }, + "pendingTasksCount": { + "type": "integer" + }, + "activeServicesCount": { + "type": "integer" + } + } + }, + "S7": { + "type": "list", + "member": { + "type": "structure", + "members": { + "targetGroupArn": {}, + "loadBalancerName": {}, + "containerName": {}, + "containerPort": { + "type": "integer" + } + } + } + }, + "Sa": { + "type": "structure", + "members": { + "maximumPercent": { + "type": "integer" + }, + "minimumHealthyPercent": { + "type": "integer" + } + } + }, + "Sc": { + "type": "structure", + "members": { + "serviceArn": {}, + "serviceName": {}, + "clusterArn": {}, + "loadBalancers": { + "shape": "S7" + }, + "status": {}, + "desiredCount": { + "type": "integer" + }, + "runningCount": { + "type": "integer" + }, + "pendingCount": { + "type": "integer" + }, + "taskDefinition": {}, + "deploymentConfiguration": { + "shape": "Sa" + }, + "deployments": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "status": {}, + "taskDefinition": {}, + "desiredCount": { + "type": "integer" + }, + "pendingCount": { + "type": "integer" + }, + "runningCount": { + "type": "integer" + }, + "createdAt": { + "type": "timestamp" + }, + "updatedAt": { + "type": "timestamp" + } + } + } + }, + "roleArn": {}, + "events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "id": {}, + "createdAt": { + "type": "timestamp" + }, + "message": {} + } + } + }, + "createdAt": { + "type": "timestamp" + } + } + }, + "Sp": { + "type": "structure", + "members": { + "containerInstanceArn": {}, + "ec2InstanceId": {}, + "versionInfo": { + "shape": "Sq" + }, + "remainingResources": { + "shape": "Sr" + }, + "registeredResources": { + "shape": "Sr" + }, + "status": {}, + "agentConnected": { + "type": "boolean" + }, + "runningTasksCount": { + "type": "integer" + }, + "pendingTasksCount": { + "type": "integer" + }, + "agentUpdateStatus": {}, + "attributes": { + "shape": "Sy" + } + } + }, + "Sq": { + "type": "structure", + "members": { + "agentVersion": {}, + "agentHash": {}, + "dockerVersion": {} + } + }, + "Sr": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "type": {}, + "doubleValue": { + "type": "double" + }, + "longValue": { + "type": "long" + }, + "integerValue": { + "type": "integer" + }, + "stringSetValue": { + "shape": "Sv" + } + } + } + }, + "Sv": { + "type": "list", + "member": {} + }, + "Sy": { + "type": "list", + "member": { + "shape": "Sz" + } + }, + "Sz": { + "type": "structure", + "required": [ + "name" + ], + "members": { + "name": {}, + "value": {} + } + }, + "S12": { + "type": "structure", + "members": { + "taskDefinitionArn": {}, + "containerDefinitions": { + "shape": "S13" + }, + "family": {}, + "taskRoleArn": {}, + "networkMode": {}, + "revision": { + "type": "integer" + }, + "volumes": { + "shape": "S1o" + }, + "status": {}, + "requiresAttributes": { + "type": "list", + "member": { + "shape": "Sz" + } + } + } + }, + "S13": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "image": {}, + "cpu": { + "type": "integer" + }, + "memory": { + "type": "integer" + }, + "memoryReservation": { + "type": "integer" + }, + "links": { + "shape": "Sv" + }, + "portMappings": { + "type": "list", + "member": { + "type": "structure", + "members": { + "containerPort": { + "type": "integer" + }, + "hostPort": { + "type": "integer" + }, + "protocol": {} + } + } + }, + "essential": { + "type": "boolean" + }, + "entryPoint": { + "shape": "Sv" + }, + "command": { + "shape": "Sv" + }, + "environment": { + "shape": "S18" + }, + "mountPoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "sourceVolume": {}, + "containerPath": {}, + "readOnly": { + "type": "boolean" + } + } + } + }, + "volumesFrom": { + "type": "list", + "member": { + "type": "structure", + "members": { + "sourceContainer": {}, + "readOnly": { + "type": "boolean" + } + } + } + }, + "hostname": {}, + "user": {}, + "workingDirectory": {}, + "disableNetworking": { + "type": "boolean" + }, + "privileged": { + "type": "boolean" + }, + "readonlyRootFilesystem": { + "type": "boolean" + }, + "dnsServers": { + "shape": "Sv" + }, + "dnsSearchDomains": { + "shape": "Sv" + }, + "extraHosts": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "hostname", + "ipAddress" + ], + "members": { + "hostname": {}, + "ipAddress": {} + } + } + }, + "dockerSecurityOptions": { + "shape": "Sv" + }, + "dockerLabels": { + "type": "map", + "key": {}, + "value": {} + }, + "ulimits": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "name", + "softLimit", + "hardLimit" + ], + "members": { + "name": {}, + "softLimit": { + "type": "integer" + }, + "hardLimit": { + "type": "integer" + } + } + } + }, + "logConfiguration": { + "type": "structure", + "required": [ + "logDriver" + ], + "members": { + "logDriver": {}, + "options": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + }, + "S18": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "value": {} + } + } + }, + "S1o": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "host": { + "type": "structure", + "members": { + "sourcePath": {} + } + } + } + } + }, + "S1w": { + "type": "list", + "member": { + "type": "structure", + "members": { + "arn": {}, + "reason": {} + } + } + }, + "S28": { + "type": "list", + "member": { + "shape": "S29" + } + }, + "S29": { + "type": "structure", + "members": { + "taskArn": {}, + "clusterArn": {}, + "taskDefinitionArn": {}, + "containerInstanceArn": {}, + "overrides": { + "shape": "S2a" + }, + "lastStatus": {}, + "desiredStatus": {}, + "containers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "containerArn": {}, + "taskArn": {}, + "name": {}, + "lastStatus": {}, + "exitCode": { + "type": "integer" + }, + "reason": {}, + "networkBindings": { + "shape": "S2f" + } + } + } + }, + "startedBy": {}, + "stoppedReason": {}, + "createdAt": { + "type": "timestamp" + }, + "startedAt": { + "type": "timestamp" + }, + "stoppedAt": { + "type": "timestamp" + } + } + }, + "S2a": { + "type": "structure", + "members": { + "containerOverrides": { + "type": "list", + "member": { + "type": "structure", + "members": { + "name": {}, + "command": { + "shape": "Sv" + }, + "environment": { + "shape": "S18" + } + } + } + }, + "taskRoleArn": {} + } + }, + "S2f": { + "type": "list", + "member": { + "type": "structure", + "members": { + "bindIP": {}, + "containerPort": { + "type": "integer" + }, + "hostPort": { + "type": "integer" + }, + "protocol": {} + } + } + } + } +} +},{}],44:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListClusters": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "clusterArns" + }, + "ListContainerInstances": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "containerInstanceArns" + }, + "ListTaskDefinitions": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "taskDefinitionArns" + }, + "ListTaskDefinitionFamilies": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "families" + }, + "ListTasks": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "taskArns" + }, + "ListServices": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "maxResults", + "result_key": "serviceArns" + } + } +} + +},{}],45:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "TasksRunning": { + "delay": 6, + "operation": "DescribeTasks", + "maxAttempts": 100, + "acceptors": [ + { + "expected": "STOPPED", + "matcher": "pathAny", + "state": "failure", + "argument": "tasks[].lastStatus" + }, + { + "expected": "MISSING", + "matcher": "pathAny", + "state": "failure", + "argument": "failures[].reason" + }, + { + "expected": "RUNNING", + "matcher": "pathAll", + "state": "success", + "argument": "tasks[].lastStatus" + } + ] + }, + "TasksStopped": { + "delay": 6, + "operation": "DescribeTasks", + "maxAttempts": 100, + "acceptors": [ + { + "expected": "STOPPED", + "matcher": "pathAll", + "state": "success", + "argument": "tasks[].lastStatus" + } + ] + }, + "ServicesStable": { + "delay": 15, + "operation": "DescribeServices", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "MISSING", + "matcher": "pathAny", + "state": "failure", + "argument": "failures[].reason" + }, + { + "expected": "DRAINING", + "matcher": "pathAny", + "state": "failure", + "argument": "services[].status" + }, + { + "expected": "INACTIVE", + "matcher": "pathAny", + "state": "failure", + "argument": "services[].status" + }, + { + "expected": true, + "matcher": "path", + "state": "success", + "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" + } + ] + }, + "ServicesInactive": { + "delay": 15, + "operation": "DescribeServices", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "MISSING", + "matcher": "pathAny", + "state": "failure", + "argument": "failures[].reason" + }, + { + "expected": "INACTIVE", + "matcher": "pathAny", + "state": "success", + "argument": "services[].status" + } + ] + } + } +} + +},{}],46:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-02-02", + "endpointPrefix": "elasticache", + "protocol": "query", + "serviceFullName": "Amazon ElastiCache", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/" + }, + "operations": { + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S3" + } + } + }, + "output": { + "shape": "S5", + "resultWrapper": "AddTagsToResourceResult" + } + }, + "AuthorizeCacheSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName", + "EC2SecurityGroupName", + "EC2SecurityGroupOwnerId" + ], + "members": { + "CacheSecurityGroupName": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult", + "type": "structure", + "members": { + "CacheSecurityGroup": { + "shape": "S8" + } + } + } + }, + "CopySnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceSnapshotName", + "TargetSnapshotName" + ], + "members": { + "SourceSnapshotName": {}, + "TargetSnapshotName": {}, + "TargetBucket": {} + } + }, + "output": { + "resultWrapper": "CopySnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CreateCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId" + ], + "members": { + "CacheClusterId": {}, + "ReplicationGroupId": {}, + "AZMode": {}, + "PreferredAvailabilityZone": {}, + "PreferredAvailabilityZones": { + "shape": "So" + }, + "NumCacheNodes": { + "type": "integer" + }, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupName": {}, + "CacheSubnetGroupName": {}, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "Tags": { + "shape": "S3" + }, + "SnapshotArns": { + "shape": "Sr" + }, + "SnapshotName": {}, + "PreferredMaintenanceWindow": {}, + "Port": { + "type": "integer" + }, + "NotificationTopicArn": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + } + }, + "output": { + "resultWrapper": "CreateCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "CreateCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName", + "CacheParameterGroupFamily", + "Description" + ], + "members": { + "CacheParameterGroupName": {}, + "CacheParameterGroupFamily": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateCacheParameterGroupResult", + "type": "structure", + "members": { + "CacheParameterGroup": { + "shape": "S19" + } + } + } + }, + "CreateCacheSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName", + "Description" + ], + "members": { + "CacheSecurityGroupName": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateCacheSecurityGroupResult", + "type": "structure", + "members": { + "CacheSecurityGroup": { + "shape": "S8" + } + } + } + }, + "CreateCacheSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSubnetGroupName", + "CacheSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "CacheSubnetGroupName": {}, + "CacheSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1d" + } + } + }, + "output": { + "resultWrapper": "CreateCacheSubnetGroupResult", + "type": "structure", + "members": { + "CacheSubnetGroup": { + "shape": "S1f" + } + } + } + }, + "CreateReplicationGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationGroupId", + "ReplicationGroupDescription" + ], + "members": { + "ReplicationGroupId": {}, + "ReplicationGroupDescription": {}, + "PrimaryClusterId": {}, + "AutomaticFailoverEnabled": { + "type": "boolean" + }, + "NumCacheClusters": { + "type": "integer" + }, + "PreferredCacheClusterAZs": { + "shape": "Sl" + }, + "NumNodeGroups": { + "type": "integer" + }, + "ReplicasPerNodeGroup": { + "type": "integer" + }, + "NodeGroupConfiguration": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "NodeGroupConfiguration" + } + }, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupName": {}, + "CacheSubnetGroupName": {}, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "Tags": { + "shape": "S3" + }, + "SnapshotArns": { + "shape": "Sr" + }, + "SnapshotName": {}, + "PreferredMaintenanceWindow": {}, + "Port": { + "type": "integer" + }, + "NotificationTopicArn": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + } + }, + "output": { + "resultWrapper": "CreateReplicationGroupResult", + "type": "structure", + "members": { + "ReplicationGroup": { + "shape": "S1m" + } + } + } + }, + "CreateSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotName" + ], + "members": { + "ReplicationGroupId": {}, + "CacheClusterId": {}, + "SnapshotName": {} + } + }, + "output": { + "resultWrapper": "CreateSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "DeleteCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId" + ], + "members": { + "CacheClusterId": {}, + "FinalSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "DeleteCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName" + ], + "members": { + "CacheParameterGroupName": {} + } + } + }, + "DeleteCacheSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName" + ], + "members": { + "CacheSecurityGroupName": {} + } + } + }, + "DeleteCacheSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSubnetGroupName" + ], + "members": { + "CacheSubnetGroupName": {} + } + } + }, + "DeleteReplicationGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationGroupId" + ], + "members": { + "ReplicationGroupId": {}, + "RetainPrimaryCluster": { + "type": "boolean" + }, + "FinalSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteReplicationGroupResult", + "type": "structure", + "members": { + "ReplicationGroup": { + "shape": "S1m" + } + } + } + }, + "DeleteSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotName" + ], + "members": { + "SnapshotName": {} + } + }, + "output": { + "resultWrapper": "DeleteSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "DescribeCacheClusters": { + "input": { + "type": "structure", + "members": { + "CacheClusterId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "ShowCacheNodeInfo": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeCacheClustersResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheClusters": { + "type": "list", + "member": { + "shape": "Su", + "locationName": "CacheCluster" + } + } + } + } + }, + "DescribeCacheEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeCacheEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheEngineVersions": { + "type": "list", + "member": { + "locationName": "CacheEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "CacheParameterGroupFamily": {}, + "CacheEngineDescription": {}, + "CacheEngineVersionDescription": {} + } + } + } + } + } + }, + "DescribeCacheParameterGroups": { + "input": { + "type": "structure", + "members": { + "CacheParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheParameterGroups": { + "type": "list", + "member": { + "shape": "S19", + "locationName": "CacheParameterGroup" + } + } + } + } + }, + "DescribeCacheParameters": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName" + ], + "members": { + "CacheParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheParametersResult", + "type": "structure", + "members": { + "Marker": {}, + "Parameters": { + "shape": "S2h" + }, + "CacheNodeTypeSpecificParameters": { + "shape": "S2k" + } + } + } + }, + "DescribeCacheSecurityGroups": { + "input": { + "type": "structure", + "members": { + "CacheSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheSecurityGroups": { + "type": "list", + "member": { + "shape": "S8", + "locationName": "CacheSecurityGroup" + } + } + } + } + }, + "DescribeCacheSubnetGroups": { + "input": { + "type": "structure", + "members": { + "CacheSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCacheSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "CacheSubnetGroups": { + "type": "list", + "member": { + "shape": "S1f", + "locationName": "CacheSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupFamily" + ], + "members": { + "CacheParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "CacheParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2h" + }, + "CacheNodeTypeSpecificParameters": { + "shape": "S2k" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeReplicationGroups": { + "input": { + "type": "structure", + "members": { + "ReplicationGroupId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReplicationGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReplicationGroups": { + "type": "list", + "member": { + "shape": "S1m", + "locationName": "ReplicationGroup" + } + } + } + } + }, + "DescribeReservedCacheNodes": { + "input": { + "type": "structure", + "members": { + "ReservedCacheNodeId": {}, + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedCacheNodesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedCacheNodes": { + "type": "list", + "member": { + "shape": "S38", + "locationName": "ReservedCacheNode" + } + } + } + } + }, + "DescribeReservedCacheNodesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedCacheNodesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedCacheNodesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedCacheNodesOffering", + "type": "structure", + "members": { + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "ProductDescription": {}, + "OfferingType": {}, + "RecurringCharges": { + "shape": "S3a" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeSnapshots": { + "input": { + "type": "structure", + "members": { + "ReplicationGroupId": {}, + "CacheClusterId": {}, + "SnapshotName": {}, + "SnapshotSource": {}, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "ShowNodeGroupConfig": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "Snapshots": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "Snapshot" + } + } + } + } + }, + "ListAllowedNodeTypeModifications": { + "input": { + "type": "structure", + "members": { + "CacheClusterId": {}, + "ReplicationGroupId": {} + } + }, + "output": { + "resultWrapper": "ListAllowedNodeTypeModificationsResult", + "type": "structure", + "members": { + "ScaleUpModifications": { + "type": "list", + "member": {} + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {} + } + }, + "output": { + "shape": "S5", + "resultWrapper": "ListTagsForResourceResult" + } + }, + "ModifyCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId" + ], + "members": { + "CacheClusterId": {}, + "NumCacheNodes": { + "type": "integer" + }, + "CacheNodeIdsToRemove": { + "shape": "Sy" + }, + "AZMode": {}, + "NewAvailabilityZones": { + "shape": "So" + }, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "PreferredMaintenanceWindow": {}, + "NotificationTopicArn": {}, + "CacheParameterGroupName": {}, + "NotificationTopicStatus": {}, + "ApplyImmediately": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {}, + "CacheNodeType": {} + } + }, + "output": { + "resultWrapper": "ModifyCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "ModifyCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName", + "ParameterNameValues" + ], + "members": { + "CacheParameterGroupName": {}, + "ParameterNameValues": { + "shape": "S3q" + } + } + }, + "output": { + "shape": "S3s", + "resultWrapper": "ModifyCacheParameterGroupResult" + } + }, + "ModifyCacheSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "CacheSubnetGroupName" + ], + "members": { + "CacheSubnetGroupName": {}, + "CacheSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1d" + } + } + }, + "output": { + "resultWrapper": "ModifyCacheSubnetGroupResult", + "type": "structure", + "members": { + "CacheSubnetGroup": { + "shape": "S1f" + } + } + } + }, + "ModifyReplicationGroup": { + "input": { + "type": "structure", + "required": [ + "ReplicationGroupId" + ], + "members": { + "ReplicationGroupId": {}, + "ReplicationGroupDescription": {}, + "PrimaryClusterId": {}, + "SnapshottingClusterId": {}, + "AutomaticFailoverEnabled": { + "type": "boolean" + }, + "CacheSecurityGroupNames": { + "shape": "Sp" + }, + "SecurityGroupIds": { + "shape": "Sq" + }, + "PreferredMaintenanceWindow": {}, + "NotificationTopicArn": {}, + "CacheParameterGroupName": {}, + "NotificationTopicStatus": {}, + "ApplyImmediately": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {}, + "CacheNodeType": {} + } + }, + "output": { + "resultWrapper": "ModifyReplicationGroupResult", + "type": "structure", + "members": { + "ReplicationGroup": { + "shape": "S1m" + } + } + } + }, + "PurchaseReservedCacheNodesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedCacheNodesOfferingId" + ], + "members": { + "ReservedCacheNodesOfferingId": {}, + "ReservedCacheNodeId": {}, + "CacheNodeCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedCacheNodesOfferingResult", + "type": "structure", + "members": { + "ReservedCacheNode": { + "shape": "S38" + } + } + } + }, + "RebootCacheCluster": { + "input": { + "type": "structure", + "required": [ + "CacheClusterId", + "CacheNodeIdsToReboot" + ], + "members": { + "CacheClusterId": {}, + "CacheNodeIdsToReboot": { + "shape": "Sy" + } + } + }, + "output": { + "resultWrapper": "RebootCacheClusterResult", + "type": "structure", + "members": { + "CacheCluster": { + "shape": "Su" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "shape": "S5", + "resultWrapper": "RemoveTagsFromResourceResult" + } + }, + "ResetCacheParameterGroup": { + "input": { + "type": "structure", + "required": [ + "CacheParameterGroupName" + ], + "members": { + "CacheParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "ParameterNameValues": { + "shape": "S3q" + } + } + }, + "output": { + "shape": "S3s", + "resultWrapper": "ResetCacheParameterGroupResult" + } + }, + "RevokeCacheSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "CacheSecurityGroupName", + "EC2SecurityGroupName", + "EC2SecurityGroupOwnerId" + ], + "members": { + "CacheSecurityGroupName": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeCacheSecurityGroupIngressResult", + "type": "structure", + "members": { + "CacheSecurityGroup": { + "shape": "S8" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S5": { + "type": "structure", + "members": { + "TagList": { + "shape": "S3" + } + } + }, + "S8": { + "type": "structure", + "members": { + "OwnerId": {}, + "CacheSecurityGroupName": {}, + "Description": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + } + } + }, + "wrapper": true + }, + "Sd": { + "type": "structure", + "members": { + "SnapshotName": {}, + "ReplicationGroupId": {}, + "ReplicationGroupDescription": {}, + "CacheClusterId": {}, + "SnapshotStatus": {}, + "SnapshotSource": {}, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "NumCacheNodes": { + "type": "integer" + }, + "PreferredAvailabilityZone": {}, + "CacheClusterCreateTime": { + "type": "timestamp" + }, + "PreferredMaintenanceWindow": {}, + "TopicArn": {}, + "Port": { + "type": "integer" + }, + "CacheParameterGroupName": {}, + "CacheSubnetGroupName": {}, + "VpcId": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {}, + "NumNodeGroups": { + "type": "integer" + }, + "AutomaticFailover": {}, + "NodeSnapshots": { + "type": "list", + "member": { + "locationName": "NodeSnapshot", + "type": "structure", + "members": { + "CacheClusterId": {}, + "NodeGroupId": {}, + "CacheNodeId": {}, + "NodeGroupConfiguration": { + "shape": "Sk" + }, + "CacheSize": {}, + "CacheNodeCreateTime": { + "type": "timestamp" + }, + "SnapshotCreateTime": { + "type": "timestamp" + } + }, + "wrapper": true + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "Slots": {}, + "ReplicaCount": { + "type": "integer" + }, + "PrimaryAvailabilityZone": {}, + "ReplicaAvailabilityZones": { + "shape": "Sl" + } + } + }, + "Sl": { + "type": "list", + "member": { + "locationName": "AvailabilityZone" + } + }, + "So": { + "type": "list", + "member": { + "locationName": "PreferredAvailabilityZone" + } + }, + "Sp": { + "type": "list", + "member": { + "locationName": "CacheSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "SecurityGroupId" + } + }, + "Sr": { + "type": "list", + "member": { + "locationName": "SnapshotArn" + } + }, + "Su": { + "type": "structure", + "members": { + "CacheClusterId": {}, + "ConfigurationEndpoint": { + "shape": "Sv" + }, + "ClientDownloadLandingPage": {}, + "CacheNodeType": {}, + "Engine": {}, + "EngineVersion": {}, + "CacheClusterStatus": {}, + "NumCacheNodes": { + "type": "integer" + }, + "PreferredAvailabilityZone": {}, + "CacheClusterCreateTime": { + "type": "timestamp" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "NumCacheNodes": { + "type": "integer" + }, + "CacheNodeIdsToRemove": { + "shape": "Sy" + }, + "EngineVersion": {}, + "CacheNodeType": {} + } + }, + "NotificationConfiguration": { + "type": "structure", + "members": { + "TopicArn": {}, + "TopicStatus": {} + } + }, + "CacheSecurityGroups": { + "type": "list", + "member": { + "locationName": "CacheSecurityGroup", + "type": "structure", + "members": { + "CacheSecurityGroupName": {}, + "Status": {} + } + } + }, + "CacheParameterGroup": { + "type": "structure", + "members": { + "CacheParameterGroupName": {}, + "ParameterApplyStatus": {}, + "CacheNodeIdsToReboot": { + "shape": "Sy" + } + } + }, + "CacheSubnetGroupName": {}, + "CacheNodes": { + "type": "list", + "member": { + "locationName": "CacheNode", + "type": "structure", + "members": { + "CacheNodeId": {}, + "CacheNodeStatus": {}, + "CacheNodeCreateTime": { + "type": "timestamp" + }, + "Endpoint": { + "shape": "Sv" + }, + "ParameterGroupStatus": {}, + "SourceCacheNodeId": {}, + "CustomerAvailabilityZone": {} + } + } + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "SecurityGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SecurityGroupId": {}, + "Status": {} + } + } + }, + "ReplicationGroupId": {}, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + }, + "wrapper": true + }, + "Sv": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "Sy": { + "type": "list", + "member": { + "locationName": "CacheNodeId" + } + }, + "S19": { + "type": "structure", + "members": { + "CacheParameterGroupName": {}, + "CacheParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1d": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1f": { + "type": "structure", + "members": { + "CacheSubnetGroupName": {}, + "CacheSubnetGroupDescription": {}, + "VpcId": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "type": "structure", + "members": { + "Name": {} + }, + "wrapper": true + } + } + } + } + }, + "wrapper": true + }, + "S1m": { + "type": "structure", + "members": { + "ReplicationGroupId": {}, + "Description": {}, + "Status": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "PrimaryClusterId": {}, + "AutomaticFailoverStatus": {} + } + }, + "MemberClusters": { + "type": "list", + "member": { + "locationName": "ClusterId" + } + }, + "NodeGroups": { + "type": "list", + "member": { + "locationName": "NodeGroup", + "type": "structure", + "members": { + "NodeGroupId": {}, + "Status": {}, + "PrimaryEndpoint": { + "shape": "Sv" + }, + "Slots": {}, + "NodeGroupMembers": { + "type": "list", + "member": { + "locationName": "NodeGroupMember", + "type": "structure", + "members": { + "CacheClusterId": {}, + "CacheNodeId": {}, + "ReadEndpoint": { + "shape": "Sv" + }, + "PreferredAvailabilityZone": {}, + "CurrentRole": {} + } + } + } + } + } + }, + "SnapshottingClusterId": {}, + "AutomaticFailover": {}, + "ConfigurationEndpoint": { + "shape": "Sv" + }, + "SnapshotRetentionLimit": { + "type": "integer" + }, + "SnapshotWindow": {} + }, + "wrapper": true + }, + "S2h": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ChangeType": {} + } + } + }, + "S2k": { + "type": "list", + "member": { + "locationName": "CacheNodeTypeSpecificParameter", + "type": "structure", + "members": { + "ParameterName": {}, + "Description": {}, + "Source": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "CacheNodeTypeSpecificValues": { + "type": "list", + "member": { + "locationName": "CacheNodeTypeSpecificValue", + "type": "structure", + "members": { + "CacheNodeType": {}, + "Value": {} + } + } + }, + "ChangeType": {} + } + } + }, + "S38": { + "type": "structure", + "members": { + "ReservedCacheNodeId": {}, + "ReservedCacheNodesOfferingId": {}, + "CacheNodeType": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CacheNodeCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "State": {}, + "RecurringCharges": { + "shape": "S3a" + } + }, + "wrapper": true + }, + "S3a": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S3q": { + "type": "list", + "member": { + "locationName": "ParameterNameValue", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {} + } + } + }, + "S3s": { + "type": "structure", + "members": { + "CacheParameterGroupName": {} + } + } + } +} +},{}],47:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeCacheClusters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheClusters" + }, + "DescribeCacheEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheEngineVersions" + }, + "DescribeCacheParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheParameterGroups" + }, + "DescribeCacheParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeCacheSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheSecurityGroups" + }, + "DescribeCacheSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "CacheSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeReservedCacheNodes": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedCacheNodes" + }, + "DescribeReservedCacheNodesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedCacheNodesOfferings" + }, + "DescribeReplicationGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReplicationGroups" + }, + "DescribeSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Snapshots" + } + } +} + +},{}],48:[function(require,module,exports){ +module.exports={ + "version":2, + "waiters":{ + "CacheClusterAvailable":{ + "acceptors":[ + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"available", + "matcher":"pathAll", + "state":"success" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"deleted", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"deleting", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"incompatible-network", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"restore-failed", + "matcher":"pathAny", + "state":"failure" + } + ], + "delay":15, + "description":"Wait until ElastiCache cluster is available.", + "maxAttempts":40, + "operation":"DescribeCacheClusters" + }, + "CacheClusterDeleted":{ + "acceptors":[ + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"deleted", + "matcher":"pathAll", + "state":"success" + }, + { + "expected":"CacheClusterNotFound", + "matcher":"error", + "state":"success" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"available", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"creating", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"incompatible-network", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"modifying", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"restore-failed", + "matcher":"pathAny", + "state":"failure" + }, + { + "argument":"CacheClusters[].CacheClusterStatus", + "expected":"snapshotting", + "matcher":"pathAny", + "state":"failure" + } + ], + "delay":15, + "description":"Wait until ElastiCache cluster is deleted.", + "maxAttempts":40, + "operation":"DescribeCacheClusters" + }, + "ReplicationGroupAvailable":{ + "acceptors":[ + { + "argument":"ReplicationGroups[].Status", + "expected":"available", + "matcher":"pathAll", + "state":"success" + }, + { + "argument":"ReplicationGroups[].Status", + "expected":"deleted", + "matcher":"pathAny", + "state":"failure" + } + ], + "delay":15, + "description":"Wait until ElastiCache replication group is available.", + "maxAttempts":40, + "operation":"DescribeReplicationGroups" + }, + "ReplicationGroupDeleted":{ + "acceptors":[ + { + "argument":"ReplicationGroups[].Status", + "expected":"deleted", + "matcher":"pathAll", + "state":"success" + }, + { + "argument":"ReplicationGroups[].Status", + "expected":"available", + "matcher":"pathAny", + "state":"failure" + }, + { + "expected":"ReplicationGroupNotFoundFault", + "matcher":"error", + "state":"success" + } + ], + "delay":15, + "description":"Wait until ElastiCache replication group is deleted.", + "maxAttempts":40, + "operation":"DescribeReplicationGroups" + } + } +} + +},{}],49:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2010-12-01", + "endpointPrefix": "elasticbeanstalk", + "protocol": "query", + "serviceAbbreviation": "Elastic Beanstalk", + "serviceFullName": "AWS Elastic Beanstalk", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/" + }, + "operations": { + "AbortEnvironmentUpdate": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + } + }, + "ApplyEnvironmentManagedAction": { + "input": { + "type": "structure", + "required": [ + "ActionId" + ], + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "ActionId": {} + } + }, + "output": { + "resultWrapper": "ApplyEnvironmentManagedActionResult", + "type": "structure", + "members": { + "ActionId": {}, + "ActionDescription": {}, + "ActionType": {}, + "Status": {} + } + } + }, + "CheckDNSAvailability": { + "input": { + "type": "structure", + "required": [ + "CNAMEPrefix" + ], + "members": { + "CNAMEPrefix": {} + } + }, + "output": { + "resultWrapper": "CheckDNSAvailabilityResult", + "type": "structure", + "members": { + "Available": { + "type": "boolean" + }, + "FullyQualifiedCNAME": {} + } + } + }, + "ComposeEnvironments": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "GroupName": {}, + "VersionLabels": { + "type": "list", + "member": {} + } + } + }, + "output": { + "shape": "Si", + "resultWrapper": "ComposeEnvironmentsResult" + } + }, + "CreateApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "Description": {} + } + }, + "output": { + "shape": "S14", + "resultWrapper": "CreateApplicationResult" + } + }, + "CreateApplicationVersion": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "VersionLabel" + ], + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "Description": {}, + "SourceBundle": { + "shape": "S19" + }, + "AutoCreateApplication": { + "type": "boolean" + }, + "Process": { + "type": "boolean" + } + } + }, + "output": { + "shape": "S1e", + "resultWrapper": "CreateApplicationVersionResult" + } + }, + "CreateConfigurationTemplate": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "TemplateName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "SolutionStackName": {}, + "SourceConfiguration": { + "type": "structure", + "members": { + "ApplicationName": {}, + "TemplateName": {} + } + }, + "EnvironmentId": {}, + "Description": {}, + "OptionSettings": { + "shape": "S1j" + } + } + }, + "output": { + "shape": "S1p", + "resultWrapper": "CreateConfigurationTemplateResult" + } + }, + "CreateEnvironment": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "EnvironmentName": {}, + "GroupName": {}, + "Description": {}, + "CNAMEPrefix": {}, + "Tier": { + "shape": "S10" + }, + "Tags": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "VersionLabel": {}, + "TemplateName": {}, + "SolutionStackName": {}, + "OptionSettings": { + "shape": "S1j" + }, + "OptionsToRemove": { + "shape": "S1w" + } + } + }, + "output": { + "shape": "Sk", + "resultWrapper": "CreateEnvironmentResult" + } + }, + "CreateStorageLocation": { + "output": { + "resultWrapper": "CreateStorageLocationResult", + "type": "structure", + "members": { + "S3Bucket": {} + } + } + }, + "DeleteApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "TerminateEnvByForce": { + "type": "boolean" + } + } + } + }, + "DeleteApplicationVersion": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "VersionLabel" + ], + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "DeleteSourceBundle": { + "type": "boolean" + } + } + } + }, + "DeleteConfigurationTemplate": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "TemplateName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {} + } + } + }, + "DeleteEnvironmentConfiguration": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "EnvironmentName" + ], + "members": { + "ApplicationName": {}, + "EnvironmentName": {} + } + } + }, + "DescribeApplicationVersions": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "VersionLabels": { + "shape": "S16" + } + } + }, + "output": { + "resultWrapper": "DescribeApplicationVersionsResult", + "type": "structure", + "members": { + "ApplicationVersions": { + "type": "list", + "member": { + "shape": "S1f" + } + } + } + } + }, + "DescribeApplications": { + "input": { + "type": "structure", + "members": { + "ApplicationNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeApplicationsResult", + "type": "structure", + "members": { + "Applications": { + "type": "list", + "member": { + "shape": "S15" + } + } + } + } + }, + "DescribeConfigurationOptions": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "EnvironmentName": {}, + "SolutionStackName": {}, + "Options": { + "shape": "S1w" + } + } + }, + "output": { + "resultWrapper": "DescribeConfigurationOptionsResult", + "type": "structure", + "members": { + "SolutionStackName": {}, + "Options": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Namespace": {}, + "Name": {}, + "DefaultValue": {}, + "ChangeSeverity": {}, + "UserDefined": { + "type": "boolean" + }, + "ValueType": {}, + "ValueOptions": { + "type": "list", + "member": {} + }, + "MinValue": { + "type": "integer" + }, + "MaxValue": { + "type": "integer" + }, + "MaxLength": { + "type": "integer" + }, + "Regex": { + "type": "structure", + "members": { + "Pattern": {}, + "Label": {} + } + } + } + } + } + } + } + }, + "DescribeConfigurationSettings": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "EnvironmentName": {} + } + }, + "output": { + "resultWrapper": "DescribeConfigurationSettingsResult", + "type": "structure", + "members": { + "ConfigurationSettings": { + "type": "list", + "member": { + "shape": "S1p" + } + } + } + } + }, + "DescribeEnvironmentHealth": { + "input": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "AttributeNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentHealthResult", + "type": "structure", + "members": { + "EnvironmentName": {}, + "HealthStatus": {}, + "Status": {}, + "Color": {}, + "Causes": { + "shape": "S2z" + }, + "ApplicationMetrics": { + "shape": "S31" + }, + "InstancesHealth": { + "type": "structure", + "members": { + "NoData": { + "type": "integer" + }, + "Unknown": { + "type": "integer" + }, + "Pending": { + "type": "integer" + }, + "Ok": { + "type": "integer" + }, + "Info": { + "type": "integer" + }, + "Warning": { + "type": "integer" + }, + "Degraded": { + "type": "integer" + }, + "Severe": { + "type": "integer" + } + } + }, + "RefreshedAt": { + "type": "timestamp" + } + } + } + }, + "DescribeEnvironmentManagedActionHistory": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "NextToken": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult", + "type": "structure", + "members": { + "ManagedActionHistoryItems": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ActionId": {}, + "ActionType": {}, + "ActionDescription": {}, + "FailureType": {}, + "Status": {}, + "FailureDescription": {}, + "ExecutedTime": { + "type": "timestamp" + }, + "FinishedTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeEnvironmentManagedActions": { + "input": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "Status": {} + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentManagedActionsResult", + "type": "structure", + "members": { + "ManagedActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ActionId": {}, + "ActionDescription": {}, + "ActionType": {}, + "Status": {}, + "WindowStartTime": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeEnvironmentResources": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + }, + "output": { + "resultWrapper": "DescribeEnvironmentResourcesResult", + "type": "structure", + "members": { + "EnvironmentResources": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "AutoScalingGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "Instances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {} + } + } + }, + "LaunchConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "LoadBalancers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "Triggers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "Queues": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "URL": {} + } + } + } + } + } + } + } + }, + "DescribeEnvironments": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "EnvironmentIds": { + "type": "list", + "member": {} + }, + "EnvironmentNames": { + "type": "list", + "member": {} + }, + "IncludeDeleted": { + "type": "boolean" + }, + "IncludedDeletedBackTo": { + "type": "timestamp" + } + } + }, + "output": { + "shape": "Si", + "resultWrapper": "DescribeEnvironmentsResult" + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "TemplateName": {}, + "EnvironmentId": {}, + "EnvironmentName": {}, + "RequestId": {}, + "Severity": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventDate": { + "type": "timestamp" + }, + "Message": {}, + "ApplicationName": {}, + "VersionLabel": {}, + "TemplateName": {}, + "EnvironmentName": {}, + "RequestId": {}, + "Severity": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeInstancesHealth": { + "input": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "AttributeNames": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeInstancesHealthResult", + "type": "structure", + "members": { + "InstanceHealthList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {}, + "HealthStatus": {}, + "Color": {}, + "Causes": { + "shape": "S2z" + }, + "LaunchedAt": { + "type": "timestamp" + }, + "ApplicationMetrics": { + "shape": "S31" + }, + "System": { + "type": "structure", + "members": { + "CPUUtilization": { + "type": "structure", + "members": { + "User": { + "type": "double" + }, + "Nice": { + "type": "double" + }, + "System": { + "type": "double" + }, + "Idle": { + "type": "double" + }, + "IOWait": { + "type": "double" + }, + "IRQ": { + "type": "double" + }, + "SoftIRQ": { + "type": "double" + } + } + }, + "LoadAverage": { + "type": "list", + "member": { + "type": "double" + } + } + } + }, + "Deployment": { + "type": "structure", + "members": { + "VersionLabel": {}, + "DeploymentId": { + "type": "long" + }, + "Status": {}, + "DeploymentTime": { + "type": "timestamp" + } + } + }, + "AvailabilityZone": {}, + "InstanceType": {} + } + } + }, + "RefreshedAt": { + "type": "timestamp" + }, + "NextToken": {} + } + } + }, + "ListAvailableSolutionStacks": { + "output": { + "resultWrapper": "ListAvailableSolutionStacksResult", + "type": "structure", + "members": { + "SolutionStacks": { + "type": "list", + "member": {} + }, + "SolutionStackDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SolutionStackName": {}, + "PermittedFileTypes": { + "type": "list", + "member": {} + } + } + } + } + } + } + }, + "RebuildEnvironment": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + } + }, + "RequestEnvironmentInfo": { + "input": { + "type": "structure", + "required": [ + "InfoType" + ], + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "InfoType": {} + } + } + }, + "RestartAppServer": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {} + } + } + }, + "RetrieveEnvironmentInfo": { + "input": { + "type": "structure", + "required": [ + "InfoType" + ], + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "InfoType": {} + } + }, + "output": { + "resultWrapper": "RetrieveEnvironmentInfoResult", + "type": "structure", + "members": { + "EnvironmentInfo": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InfoType": {}, + "Ec2InstanceId": {}, + "SampleTimestamp": { + "type": "timestamp" + }, + "Message": {} + } + } + } + } + } + }, + "SwapEnvironmentCNAMEs": { + "input": { + "type": "structure", + "members": { + "SourceEnvironmentId": {}, + "SourceEnvironmentName": {}, + "DestinationEnvironmentId": {}, + "DestinationEnvironmentName": {} + } + } + }, + "TerminateEnvironment": { + "input": { + "type": "structure", + "members": { + "EnvironmentId": {}, + "EnvironmentName": {}, + "TerminateResources": { + "type": "boolean" + }, + "ForceTerminate": { + "type": "boolean" + } + } + }, + "output": { + "shape": "Sk", + "resultWrapper": "TerminateEnvironmentResult" + } + }, + "UpdateApplication": { + "input": { + "type": "structure", + "required": [ + "ApplicationName" + ], + "members": { + "ApplicationName": {}, + "Description": {} + } + }, + "output": { + "shape": "S14", + "resultWrapper": "UpdateApplicationResult" + } + }, + "UpdateApplicationVersion": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "VersionLabel" + ], + "members": { + "ApplicationName": {}, + "VersionLabel": {}, + "Description": {} + } + }, + "output": { + "shape": "S1e", + "resultWrapper": "UpdateApplicationVersionResult" + } + }, + "UpdateConfigurationTemplate": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "TemplateName" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "Description": {}, + "OptionSettings": { + "shape": "S1j" + }, + "OptionsToRemove": { + "shape": "S1w" + } + } + }, + "output": { + "shape": "S1p", + "resultWrapper": "UpdateConfigurationTemplateResult" + } + }, + "UpdateEnvironment": { + "input": { + "type": "structure", + "members": { + "ApplicationName": {}, + "EnvironmentId": {}, + "EnvironmentName": {}, + "GroupName": {}, + "Description": {}, + "Tier": { + "shape": "S10" + }, + "VersionLabel": {}, + "TemplateName": {}, + "SolutionStackName": {}, + "OptionSettings": { + "shape": "S1j" + }, + "OptionsToRemove": { + "shape": "S1w" + } + } + }, + "output": { + "shape": "Sk", + "resultWrapper": "UpdateEnvironmentResult" + } + }, + "ValidateConfigurationSettings": { + "input": { + "type": "structure", + "required": [ + "ApplicationName", + "OptionSettings" + ], + "members": { + "ApplicationName": {}, + "TemplateName": {}, + "EnvironmentName": {}, + "OptionSettings": { + "shape": "S1j" + } + } + }, + "output": { + "resultWrapper": "ValidateConfigurationSettingsResult", + "type": "structure", + "members": { + "Messages": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Message": {}, + "Severity": {}, + "Namespace": {}, + "OptionName": {} + } + } + } + } + } + } + }, + "shapes": { + "Si": { + "type": "structure", + "members": { + "Environments": { + "type": "list", + "member": { + "shape": "Sk" + } + } + } + }, + "Sk": { + "type": "structure", + "members": { + "EnvironmentName": {}, + "EnvironmentId": {}, + "ApplicationName": {}, + "VersionLabel": {}, + "SolutionStackName": {}, + "TemplateName": {}, + "Description": {}, + "EndpointURL": {}, + "CNAME": {}, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "Status": {}, + "AbortableOperationInProgress": { + "type": "boolean" + }, + "Health": {}, + "HealthStatus": {}, + "Resources": { + "type": "structure", + "members": { + "LoadBalancer": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "Domain": {}, + "Listeners": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Protocol": {}, + "Port": { + "type": "integer" + } + } + } + } + } + } + } + }, + "Tier": { + "shape": "S10" + }, + "EnvironmentLinks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LinkName": {}, + "EnvironmentName": {} + } + } + } + } + }, + "S10": { + "type": "structure", + "members": { + "Name": {}, + "Type": {}, + "Version": {} + } + }, + "S14": { + "type": "structure", + "members": { + "Application": { + "shape": "S15" + } + } + }, + "S15": { + "type": "structure", + "members": { + "ApplicationName": {}, + "Description": {}, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "Versions": { + "shape": "S16" + }, + "ConfigurationTemplates": { + "type": "list", + "member": {} + } + } + }, + "S16": { + "type": "list", + "member": {} + }, + "S19": { + "type": "structure", + "members": { + "S3Bucket": {}, + "S3Key": {} + } + }, + "S1e": { + "type": "structure", + "members": { + "ApplicationVersion": { + "shape": "S1f" + } + } + }, + "S1f": { + "type": "structure", + "members": { + "ApplicationName": {}, + "Description": {}, + "VersionLabel": {}, + "SourceBundle": { + "shape": "S19" + }, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "Status": {} + } + }, + "S1j": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceName": {}, + "Namespace": {}, + "OptionName": {}, + "Value": {} + } + } + }, + "S1p": { + "type": "structure", + "members": { + "SolutionStackName": {}, + "ApplicationName": {}, + "TemplateName": {}, + "Description": {}, + "EnvironmentName": {}, + "DeploymentStatus": {}, + "DateCreated": { + "type": "timestamp" + }, + "DateUpdated": { + "type": "timestamp" + }, + "OptionSettings": { + "shape": "S1j" + } + } + }, + "S1w": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceName": {}, + "Namespace": {}, + "OptionName": {} + } + } + }, + "S2z": { + "type": "list", + "member": {} + }, + "S31": { + "type": "structure", + "members": { + "Duration": { + "type": "integer" + }, + "RequestCount": { + "type": "integer" + }, + "StatusCodes": { + "type": "structure", + "members": { + "Status2xx": { + "type": "integer" + }, + "Status3xx": { + "type": "integer" + }, + "Status4xx": { + "type": "integer" + }, + "Status5xx": { + "type": "integer" + } + } + }, + "Latency": { + "type": "structure", + "members": { + "P999": { + "type": "double" + }, + "P99": { + "type": "double" + }, + "P95": { + "type": "double" + }, + "P90": { + "type": "double" + }, + "P85": { + "type": "double" + }, + "P75": { + "type": "double" + }, + "P50": { + "type": "double" + }, + "P10": { + "type": "double" + } + } + } + } + } + } +} +},{}],50:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeApplicationVersions": { + "result_key": "ApplicationVersions" + }, + "DescribeApplications": { + "result_key": "Applications" + }, + "DescribeConfigurationOptions": { + "result_key": "Options" + }, + "DescribeEnvironments": { + "result_key": "Environments" + }, + "DescribeEvents": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "ListAvailableSolutionStacks": { + "result_key": "SolutionStacks" + } + } +} + +},{}],51:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2012-06-01", + "endpointPrefix": "elasticloadbalancing", + "protocol": "query", + "serviceFullName": "Elastic Load Balancing", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerNames", + "Tags" + ], + "members": { + "LoadBalancerNames": { + "shape": "S2" + }, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "AddTagsResult", + "type": "structure", + "members": {} + } + }, + "ApplySecurityGroupsToLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "SecurityGroups" + ], + "members": { + "LoadBalancerName": {}, + "SecurityGroups": { + "shape": "Sa" + } + } + }, + "output": { + "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult", + "type": "structure", + "members": { + "SecurityGroups": { + "shape": "Sa" + } + } + } + }, + "AttachLoadBalancerToSubnets": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Subnets" + ], + "members": { + "LoadBalancerName": {}, + "Subnets": { + "shape": "Se" + } + } + }, + "output": { + "resultWrapper": "AttachLoadBalancerToSubnetsResult", + "type": "structure", + "members": { + "Subnets": { + "shape": "Se" + } + } + } + }, + "ConfigureHealthCheck": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "HealthCheck" + ], + "members": { + "LoadBalancerName": {}, + "HealthCheck": { + "shape": "Si" + } + } + }, + "output": { + "resultWrapper": "ConfigureHealthCheckResult", + "type": "structure", + "members": { + "HealthCheck": { + "shape": "Si" + } + } + } + }, + "CreateAppCookieStickinessPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName", + "CookieName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {}, + "CookieName": {} + } + }, + "output": { + "resultWrapper": "CreateAppCookieStickinessPolicyResult", + "type": "structure", + "members": {} + } + }, + "CreateLBCookieStickinessPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {}, + "CookieExpirationPeriod": { + "type": "long" + } + } + }, + "output": { + "resultWrapper": "CreateLBCookieStickinessPolicyResult", + "type": "structure", + "members": {} + } + }, + "CreateLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Listeners" + ], + "members": { + "LoadBalancerName": {}, + "Listeners": { + "shape": "Sx" + }, + "AvailabilityZones": { + "shape": "S13" + }, + "Subnets": { + "shape": "Se" + }, + "SecurityGroups": { + "shape": "Sa" + }, + "Scheme": {}, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerResult", + "type": "structure", + "members": { + "DNSName": {} + } + } + }, + "CreateLoadBalancerListeners": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Listeners" + ], + "members": { + "LoadBalancerName": {}, + "Listeners": { + "shape": "Sx" + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerListenersResult", + "type": "structure", + "members": {} + } + }, + "CreateLoadBalancerPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName", + "PolicyTypeName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {}, + "PolicyTypeName": {}, + "PolicyAttributes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValue": {} + } + } + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerPolicyResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName" + ], + "members": { + "LoadBalancerName": {} + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancerListeners": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerPorts" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerPorts": { + "type": "list", + "member": { + "type": "integer" + } + } + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerListenersResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancerPolicy": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "PolicyName" + ], + "members": { + "LoadBalancerName": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerPolicyResult", + "type": "structure", + "members": {} + } + }, + "DeregisterInstancesFromLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Instances" + ], + "members": { + "LoadBalancerName": {}, + "Instances": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "DeregisterInstancesFromLoadBalancerResult", + "type": "structure", + "members": { + "Instances": { + "shape": "S1p" + } + } + } + }, + "DescribeInstanceHealth": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName" + ], + "members": { + "LoadBalancerName": {}, + "Instances": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "DescribeInstanceHealthResult", + "type": "structure", + "members": { + "InstanceStates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {}, + "State": {}, + "ReasonCode": {}, + "Description": {} + } + } + } + } + } + }, + "DescribeLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName" + ], + "members": { + "LoadBalancerName": {} + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerAttributesResult", + "type": "structure", + "members": { + "LoadBalancerAttributes": { + "shape": "S22" + } + } + } + }, + "DescribeLoadBalancerPolicies": { + "input": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "PolicyNames": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerPoliciesResult", + "type": "structure", + "members": { + "PolicyDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "PolicyTypeName": {}, + "PolicyAttributeDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValue": {} + } + } + } + } + } + } + } + } + }, + "DescribeLoadBalancerPolicyTypes": { + "input": { + "type": "structure", + "members": { + "PolicyTypeNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerPolicyTypesResult", + "type": "structure", + "members": { + "PolicyTypeDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyTypeName": {}, + "Description": {}, + "PolicyAttributeTypeDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeType": {}, + "Description": {}, + "DefaultValue": {}, + "Cardinality": {} + } + } + } + } + } + } + } + } + }, + "DescribeLoadBalancers": { + "input": { + "type": "structure", + "members": { + "LoadBalancerNames": { + "shape": "S2" + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancersResult", + "type": "structure", + "members": { + "LoadBalancerDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "DNSName": {}, + "CanonicalHostedZoneName": {}, + "CanonicalHostedZoneNameID": {}, + "ListenerDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Listener": { + "shape": "Sy" + }, + "PolicyNames": { + "shape": "S2k" + } + } + } + }, + "Policies": { + "type": "structure", + "members": { + "AppCookieStickinessPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "CookieName": {} + } + } + }, + "LBCookieStickinessPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PolicyName": {}, + "CookieExpirationPeriod": { + "type": "long" + } + } + } + }, + "OtherPolicies": { + "shape": "S2k" + } + } + }, + "BackendServerDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstancePort": { + "type": "integer" + }, + "PolicyNames": { + "shape": "S2k" + } + } + } + }, + "AvailabilityZones": { + "shape": "S13" + }, + "Subnets": { + "shape": "Se" + }, + "VPCId": {}, + "Instances": { + "shape": "S1p" + }, + "HealthCheck": { + "shape": "Si" + }, + "SourceSecurityGroup": { + "type": "structure", + "members": { + "OwnerAlias": {}, + "GroupName": {} + } + }, + "SecurityGroups": { + "shape": "Sa" + }, + "CreatedTime": { + "type": "timestamp" + }, + "Scheme": {} + } + } + }, + "NextMarker": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerNames" + ], + "members": { + "LoadBalancerNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "TagDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerName": {}, + "Tags": { + "shape": "S4" + } + } + } + } + } + } + }, + "DetachLoadBalancerFromSubnets": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Subnets" + ], + "members": { + "LoadBalancerName": {}, + "Subnets": { + "shape": "Se" + } + } + }, + "output": { + "resultWrapper": "DetachLoadBalancerFromSubnetsResult", + "type": "structure", + "members": { + "Subnets": { + "shape": "Se" + } + } + } + }, + "DisableAvailabilityZonesForLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "AvailabilityZones" + ], + "members": { + "LoadBalancerName": {}, + "AvailabilityZones": { + "shape": "S13" + } + } + }, + "output": { + "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult", + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "S13" + } + } + } + }, + "EnableAvailabilityZonesForLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "AvailabilityZones" + ], + "members": { + "LoadBalancerName": {}, + "AvailabilityZones": { + "shape": "S13" + } + } + }, + "output": { + "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult", + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "S13" + } + } + } + }, + "ModifyLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerAttributes" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerAttributes": { + "shape": "S22" + } + } + }, + "output": { + "resultWrapper": "ModifyLoadBalancerAttributesResult", + "type": "structure", + "members": { + "LoadBalancerName": {}, + "LoadBalancerAttributes": { + "shape": "S22" + } + } + } + }, + "RegisterInstancesWithLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "Instances" + ], + "members": { + "LoadBalancerName": {}, + "Instances": { + "shape": "S1p" + } + } + }, + "output": { + "resultWrapper": "RegisterInstancesWithLoadBalancerResult", + "type": "structure", + "members": { + "Instances": { + "shape": "S1p" + } + } + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerNames", + "Tags" + ], + "members": { + "LoadBalancerNames": { + "shape": "S2" + }, + "Tags": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {} + } + } + } + } + }, + "output": { + "resultWrapper": "RemoveTagsResult", + "type": "structure", + "members": {} + } + }, + "SetLoadBalancerListenerSSLCertificate": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerPort", + "SSLCertificateId" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerPort": { + "type": "integer" + }, + "SSLCertificateId": {} + } + }, + "output": { + "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult", + "type": "structure", + "members": {} + } + }, + "SetLoadBalancerPoliciesForBackendServer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "InstancePort", + "PolicyNames" + ], + "members": { + "LoadBalancerName": {}, + "InstancePort": { + "type": "integer" + }, + "PolicyNames": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult", + "type": "structure", + "members": {} + } + }, + "SetLoadBalancerPoliciesOfListener": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerName", + "LoadBalancerPort", + "PolicyNames" + ], + "members": { + "LoadBalancerName": {}, + "LoadBalancerPort": { + "type": "integer" + }, + "PolicyNames": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult", + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sa": { + "type": "list", + "member": {} + }, + "Se": { + "type": "list", + "member": {} + }, + "Si": { + "type": "structure", + "required": [ + "Target", + "Interval", + "Timeout", + "UnhealthyThreshold", + "HealthyThreshold" + ], + "members": { + "Target": {}, + "Interval": { + "type": "integer" + }, + "Timeout": { + "type": "integer" + }, + "UnhealthyThreshold": { + "type": "integer" + }, + "HealthyThreshold": { + "type": "integer" + } + } + }, + "Sx": { + "type": "list", + "member": { + "shape": "Sy" + } + }, + "Sy": { + "type": "structure", + "required": [ + "Protocol", + "LoadBalancerPort", + "InstancePort" + ], + "members": { + "Protocol": {}, + "LoadBalancerPort": { + "type": "integer" + }, + "InstanceProtocol": {}, + "InstancePort": { + "type": "integer" + }, + "SSLCertificateId": {} + } + }, + "S13": { + "type": "list", + "member": {} + }, + "S1p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {} + } + } + }, + "S22": { + "type": "structure", + "members": { + "CrossZoneLoadBalancing": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "type": "boolean" + } + } + }, + "AccessLog": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "S3BucketName": {}, + "EmitInterval": { + "type": "integer" + }, + "S3BucketPrefix": {} + } + }, + "ConnectionDraining": { + "type": "structure", + "required": [ + "Enabled" + ], + "members": { + "Enabled": { + "type": "boolean" + }, + "Timeout": { + "type": "integer" + } + } + }, + "ConnectionSettings": { + "type": "structure", + "required": [ + "IdleTimeout" + ], + "members": { + "IdleTimeout": { + "type": "integer" + } + } + }, + "AdditionalAttributes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } + }, + "S2k": { + "type": "list", + "member": {} + } + } +} +},{}],52:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeInstanceHealth": { + "result_key": "InstanceStates" + }, + "DescribeLoadBalancerPolicies": { + "result_key": "PolicyDescriptions" + }, + "DescribeLoadBalancerPolicyTypes": { + "result_key": "PolicyTypeDescriptions" + }, + "DescribeLoadBalancers": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "LoadBalancerDescriptions" + } + } +} + +},{}],53:[function(require,module,exports){ +module.exports={ + "version":2, + "waiters":{ + "InstanceDeregistered": { + "delay": 15, + "operation": "DescribeInstanceHealth", + "maxAttempts": 40, + "acceptors": [ + { + "expected": "OutOfService", + "matcher": "pathAll", + "state": "success", + "argument": "InstanceStates[].State" + }, + { + "matcher": "error", + "expected": "InvalidInstance", + "state": "success" + } + ] + }, + "AnyInstanceInService":{ + "acceptors":[ + { + "argument":"InstanceStates[].State", + "expected":"InService", + "matcher":"pathAny", + "state":"success" + } + ], + "delay":15, + "maxAttempts":40, + "operation":"DescribeInstanceHealth" + }, + "InstanceInService":{ + "acceptors":[ + { + "argument":"InstanceStates[].State", + "expected":"InService", + "matcher":"pathAll", + "state":"success" + } + ], + "delay":15, + "maxAttempts":40, + "operation":"DescribeInstanceHealth" + } + } +} + +},{}],54:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-12-01", + "endpointPrefix": "elasticloadbalancing", + "protocol": "query", + "serviceAbbreviation": "Elastic Load Balancing v2", + "serviceFullName": "Elastic Load Balancing", + "signatureVersion": "v4", + "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "ResourceArns", + "Tags" + ], + "members": { + "ResourceArns": { + "shape": "S2" + }, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "AddTagsResult", + "type": "structure", + "members": {} + } + }, + "CreateListener": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "Protocol", + "Port", + "DefaultActions" + ], + "members": { + "LoadBalancerArn": {}, + "Protocol": {}, + "Port": { + "type": "integer" + }, + "SslPolicy": {}, + "Certificates": { + "shape": "Se" + }, + "DefaultActions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "CreateListenerResult", + "type": "structure", + "members": { + "Listeners": { + "shape": "Sm" + } + } + } + }, + "CreateLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "Name", + "Subnets" + ], + "members": { + "Name": {}, + "Subnets": { + "shape": "Sr" + }, + "SecurityGroups": { + "shape": "St" + }, + "Scheme": {}, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "resultWrapper": "CreateLoadBalancerResult", + "type": "structure", + "members": { + "LoadBalancers": { + "shape": "Sx" + } + } + } + }, + "CreateRule": { + "input": { + "type": "structure", + "required": [ + "ListenerArn", + "Conditions", + "Priority", + "Actions" + ], + "members": { + "ListenerArn": {}, + "Conditions": { + "shape": "S1b" + }, + "Priority": { + "type": "integer" + }, + "Actions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "CreateRuleResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "CreateTargetGroup": { + "input": { + "type": "structure", + "required": [ + "Name", + "Protocol", + "Port", + "VpcId" + ], + "members": { + "Name": {}, + "Protocol": {}, + "Port": { + "type": "integer" + }, + "VpcId": {}, + "HealthCheckProtocol": {}, + "HealthCheckPort": {}, + "HealthCheckPath": {}, + "HealthCheckIntervalSeconds": { + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "type": "integer" + }, + "HealthyThresholdCount": { + "type": "integer" + }, + "UnhealthyThresholdCount": { + "type": "integer" + }, + "Matcher": { + "shape": "S1u" + } + } + }, + "output": { + "resultWrapper": "CreateTargetGroupResult", + "type": "structure", + "members": { + "TargetGroups": { + "shape": "S1x" + } + } + } + }, + "DeleteListener": { + "input": { + "type": "structure", + "required": [ + "ListenerArn" + ], + "members": { + "ListenerArn": {} + } + }, + "output": { + "resultWrapper": "DeleteListenerResult", + "type": "structure", + "members": {} + } + }, + "DeleteLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn" + ], + "members": { + "LoadBalancerArn": {} + } + }, + "output": { + "resultWrapper": "DeleteLoadBalancerResult", + "type": "structure", + "members": {} + } + }, + "DeleteRule": { + "input": { + "type": "structure", + "required": [ + "RuleArn" + ], + "members": { + "RuleArn": {} + } + }, + "output": { + "resultWrapper": "DeleteRuleResult", + "type": "structure", + "members": {} + } + }, + "DeleteTargetGroup": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {} + } + }, + "output": { + "resultWrapper": "DeleteTargetGroupResult", + "type": "structure", + "members": {} + } + }, + "DeregisterTargets": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn", + "Targets" + ], + "members": { + "TargetGroupArn": {}, + "Targets": { + "shape": "S29" + } + } + }, + "output": { + "resultWrapper": "DeregisterTargetsResult", + "type": "structure", + "members": {} + } + }, + "DescribeListeners": { + "input": { + "type": "structure", + "members": { + "LoadBalancerArn": {}, + "ListenerArns": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeListenersResult", + "type": "structure", + "members": { + "Listeners": { + "shape": "Sm" + }, + "NextMarker": {} + } + } + }, + "DescribeLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn" + ], + "members": { + "LoadBalancerArn": {} + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancerAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S2k" + } + } + } + }, + "DescribeLoadBalancers": { + "input": { + "type": "structure", + "members": { + "LoadBalancerArns": { + "shape": "S1z" + }, + "Names": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeLoadBalancersResult", + "type": "structure", + "members": { + "LoadBalancers": { + "shape": "Sx" + }, + "NextMarker": {} + } + } + }, + "DescribeRules": { + "input": { + "type": "structure", + "members": { + "ListenerArn": {}, + "RuleArns": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "DescribeRulesResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "DescribeSSLPolicies": { + "input": { + "type": "structure", + "members": { + "Names": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeSSLPoliciesResult", + "type": "structure", + "members": { + "SslPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SslProtocols": { + "type": "list", + "member": {} + }, + "Ciphers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Priority": { + "type": "integer" + } + } + } + }, + "Name": {} + } + } + }, + "NextMarker": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "ResourceArns" + ], + "members": { + "ResourceArns": { + "shape": "S2" + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "TagDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ResourceArn": {}, + "Tags": { + "shape": "S4" + } + } + } + } + } + } + }, + "DescribeTargetGroupAttributes": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {} + } + }, + "output": { + "resultWrapper": "DescribeTargetGroupAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S3b" + } + } + } + }, + "DescribeTargetGroups": { + "input": { + "type": "structure", + "members": { + "LoadBalancerArn": {}, + "TargetGroupArns": { + "type": "list", + "member": {} + }, + "Names": { + "type": "list", + "member": {} + }, + "Marker": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribeTargetGroupsResult", + "type": "structure", + "members": { + "TargetGroups": { + "shape": "S1x" + }, + "NextMarker": {} + } + } + }, + "DescribeTargetHealth": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {}, + "Targets": { + "shape": "S29" + } + } + }, + "output": { + "resultWrapper": "DescribeTargetHealthResult", + "type": "structure", + "members": { + "TargetHealthDescriptions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Target": { + "shape": "S2a" + }, + "HealthCheckPort": {}, + "TargetHealth": { + "type": "structure", + "members": { + "State": {}, + "Reason": {}, + "Description": {} + } + } + } + } + } + } + } + }, + "ModifyListener": { + "input": { + "type": "structure", + "required": [ + "ListenerArn" + ], + "members": { + "ListenerArn": {}, + "Port": { + "type": "integer" + }, + "Protocol": {}, + "SslPolicy": {}, + "Certificates": { + "shape": "Se" + }, + "DefaultActions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "ModifyListenerResult", + "type": "structure", + "members": { + "Listeners": { + "shape": "Sm" + } + } + } + }, + "ModifyLoadBalancerAttributes": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "Attributes" + ], + "members": { + "LoadBalancerArn": {}, + "Attributes": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "ModifyLoadBalancerAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S2k" + } + } + } + }, + "ModifyRule": { + "input": { + "type": "structure", + "required": [ + "RuleArn" + ], + "members": { + "RuleArn": {}, + "Conditions": { + "shape": "S1b" + }, + "Actions": { + "shape": "Sh" + } + } + }, + "output": { + "resultWrapper": "ModifyRuleResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "ModifyTargetGroup": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn" + ], + "members": { + "TargetGroupArn": {}, + "HealthCheckProtocol": {}, + "HealthCheckPort": {}, + "HealthCheckPath": {}, + "HealthCheckIntervalSeconds": { + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "type": "integer" + }, + "HealthyThresholdCount": { + "type": "integer" + }, + "UnhealthyThresholdCount": { + "type": "integer" + }, + "Matcher": { + "shape": "S1u" + } + } + }, + "output": { + "resultWrapper": "ModifyTargetGroupResult", + "type": "structure", + "members": { + "TargetGroups": { + "shape": "S1x" + } + } + } + }, + "ModifyTargetGroupAttributes": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn", + "Attributes" + ], + "members": { + "TargetGroupArn": {}, + "Attributes": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "ModifyTargetGroupAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "S3b" + } + } + } + }, + "RegisterTargets": { + "input": { + "type": "structure", + "required": [ + "TargetGroupArn", + "Targets" + ], + "members": { + "TargetGroupArn": {}, + "Targets": { + "shape": "S29" + } + } + }, + "output": { + "resultWrapper": "RegisterTargetsResult", + "type": "structure", + "members": {} + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "ResourceArns", + "TagKeys" + ], + "members": { + "ResourceArns": { + "shape": "S2" + }, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "RemoveTagsResult", + "type": "structure", + "members": {} + } + }, + "SetRulePriorities": { + "input": { + "type": "structure", + "required": [ + "RulePriorities" + ], + "members": { + "RulePriorities": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RuleArn": {}, + "Priority": { + "type": "integer" + } + } + } + } + } + }, + "output": { + "resultWrapper": "SetRulePrioritiesResult", + "type": "structure", + "members": { + "Rules": { + "shape": "S1i" + } + } + } + }, + "SetSecurityGroups": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "SecurityGroups" + ], + "members": { + "LoadBalancerArn": {}, + "SecurityGroups": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "SetSecurityGroupsResult", + "type": "structure", + "members": { + "SecurityGroupIds": { + "shape": "St" + } + } + } + }, + "SetSubnets": { + "input": { + "type": "structure", + "required": [ + "LoadBalancerArn", + "Subnets" + ], + "members": { + "LoadBalancerArn": {}, + "Subnets": { + "shape": "Sr" + } + } + }, + "output": { + "resultWrapper": "SetSubnetsResult", + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "S17" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Se": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CertificateArn": {} + } + } + }, + "Sh": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Type", + "TargetGroupArn" + ], + "members": { + "Type": {}, + "TargetGroupArn": {} + } + } + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ListenerArn": {}, + "LoadBalancerArn": {}, + "Port": { + "type": "integer" + }, + "Protocol": {}, + "Certificates": { + "shape": "Se" + }, + "SslPolicy": {}, + "DefaultActions": { + "shape": "Sh" + } + } + } + }, + "Sr": { + "type": "list", + "member": {} + }, + "St": { + "type": "list", + "member": {} + }, + "Sx": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LoadBalancerArn": {}, + "DNSName": {}, + "CanonicalHostedZoneId": {}, + "CreatedTime": { + "type": "timestamp" + }, + "LoadBalancerName": {}, + "Scheme": {}, + "VpcId": {}, + "State": { + "type": "structure", + "members": { + "Code": {}, + "Reason": {} + } + }, + "Type": {}, + "AvailabilityZones": { + "shape": "S17" + }, + "SecurityGroups": { + "shape": "St" + } + } + } + }, + "S17": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ZoneName": {}, + "SubnetId": {} + } + } + }, + "S1b": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Field": {}, + "Values": { + "type": "list", + "member": {} + } + } + } + }, + "S1i": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RuleArn": {}, + "Priority": {}, + "Conditions": { + "shape": "S1b" + }, + "Actions": { + "shape": "Sh" + }, + "IsDefault": { + "type": "boolean" + } + } + } + }, + "S1u": { + "type": "structure", + "required": [ + "HttpCode" + ], + "members": { + "HttpCode": {} + } + }, + "S1x": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetGroupArn": {}, + "TargetGroupName": {}, + "Protocol": {}, + "Port": { + "type": "integer" + }, + "VpcId": {}, + "HealthCheckProtocol": {}, + "HealthCheckPort": {}, + "HealthCheckIntervalSeconds": { + "type": "integer" + }, + "HealthCheckTimeoutSeconds": { + "type": "integer" + }, + "HealthyThresholdCount": { + "type": "integer" + }, + "UnhealthyThresholdCount": { + "type": "integer" + }, + "HealthCheckPath": {}, + "Matcher": { + "shape": "S1u" + }, + "LoadBalancerArns": { + "shape": "S1z" + } + } + } + }, + "S1z": { + "type": "list", + "member": {} + }, + "S29": { + "type": "list", + "member": { + "shape": "S2a" + } + }, + "S2a": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": {}, + "Port": { + "type": "integer" + } + } + }, + "S2k": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S3b": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } +} +},{}],55:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeTargetGroups": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "TargetGroups" + }, + "DescribeListeners": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "Listeners" + }, + "DescribeLoadBalancers": { + "input_token": "Marker", + "output_token": "NextMarker", + "result_key": "LoadBalancers" + } + } +} + + +},{}],56:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2009-03-31", + "endpointPrefix": "elasticmapreduce", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon EMR", + "serviceFullName": "Amazon Elastic MapReduce", + "signatureVersion": "v4", + "targetPrefix": "ElasticMapReduce", + "timestampFormat": "unixTimestamp" + }, + "operations": { + "AddInstanceGroups": { + "input": { + "type": "structure", + "required": [ + "InstanceGroups", + "JobFlowId" + ], + "members": { + "InstanceGroups": { + "shape": "S2" + }, + "JobFlowId": {} + } + }, + "output": { + "type": "structure", + "members": { + "JobFlowId": {}, + "InstanceGroupIds": { + "type": "list", + "member": {} + } + } + } + }, + "AddJobFlowSteps": { + "input": { + "type": "structure", + "required": [ + "JobFlowId", + "Steps" + ], + "members": { + "JobFlowId": {}, + "Steps": { + "shape": "Sl" + } + } + }, + "output": { + "type": "structure", + "members": { + "StepIds": { + "type": "list", + "member": {} + } + } + } + }, + "AddTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "Tags" + ], + "members": { + "ResourceId": {}, + "Tags": { + "shape": "Sx" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateSecurityConfiguration": { + "input": { + "type": "structure", + "required": [ + "Name", + "SecurityConfiguration" + ], + "members": { + "Name": {}, + "SecurityConfiguration": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Name", + "CreationDateTime" + ], + "members": { + "Name": {}, + "CreationDateTime": { + "type": "timestamp" + } + } + } + }, + "DeleteSecurityConfiguration": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Cluster": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Status": { + "shape": "S19" + }, + "Ec2InstanceAttributes": { + "type": "structure", + "members": { + "Ec2KeyName": {}, + "Ec2SubnetId": {}, + "Ec2AvailabilityZone": {}, + "IamInstanceProfile": {}, + "EmrManagedMasterSecurityGroup": {}, + "EmrManagedSlaveSecurityGroup": {}, + "ServiceAccessSecurityGroup": {}, + "AdditionalMasterSecurityGroups": { + "shape": "S1f" + }, + "AdditionalSlaveSecurityGroups": { + "shape": "S1f" + } + } + }, + "LogUri": {}, + "RequestedAmiVersion": {}, + "RunningAmiVersion": {}, + "ReleaseLabel": {}, + "AutoTerminate": { + "type": "boolean" + }, + "TerminationProtected": { + "type": "boolean" + }, + "VisibleToAllUsers": { + "type": "boolean" + }, + "Applications": { + "shape": "S1h" + }, + "Tags": { + "shape": "Sx" + }, + "ServiceRole": {}, + "NormalizedInstanceHours": { + "type": "integer" + }, + "MasterPublicDnsName": {}, + "Configurations": { + "shape": "S9" + }, + "SecurityConfiguration": {} + } + } + } + } + }, + "DescribeJobFlows": { + "input": { + "type": "structure", + "members": { + "CreatedAfter": { + "type": "timestamp" + }, + "CreatedBefore": { + "type": "timestamp" + }, + "JobFlowIds": { + "shape": "Ss" + }, + "JobFlowStates": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "JobFlows": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "JobFlowId", + "Name", + "ExecutionStatusDetail", + "Instances" + ], + "members": { + "JobFlowId": {}, + "Name": {}, + "LogUri": {}, + "AmiVersion": {}, + "ExecutionStatusDetail": { + "type": "structure", + "required": [ + "State", + "CreationDateTime" + ], + "members": { + "State": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + }, + "LastStateChangeReason": {} + } + }, + "Instances": { + "type": "structure", + "required": [ + "MasterInstanceType", + "SlaveInstanceType", + "InstanceCount" + ], + "members": { + "MasterInstanceType": {}, + "MasterPublicDnsName": {}, + "MasterInstanceId": {}, + "SlaveInstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "InstanceGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Market", + "InstanceRole", + "InstanceType", + "InstanceRequestCount", + "InstanceRunningCount", + "State", + "CreationDateTime" + ], + "members": { + "InstanceGroupId": {}, + "Name": {}, + "Market": {}, + "InstanceRole": {}, + "BidPrice": {}, + "InstanceType": {}, + "InstanceRequestCount": { + "type": "integer" + }, + "InstanceRunningCount": { + "type": "integer" + }, + "State": {}, + "LastStateChangeReason": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + }, + "NormalizedInstanceHours": { + "type": "integer" + }, + "Ec2KeyName": {}, + "Ec2SubnetId": {}, + "Placement": { + "shape": "S1u" + }, + "KeepJobFlowAliveWhenNoSteps": { + "type": "boolean" + }, + "TerminationProtected": { + "type": "boolean" + }, + "HadoopVersion": {} + } + }, + "Steps": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "StepConfig", + "ExecutionStatusDetail" + ], + "members": { + "StepConfig": { + "shape": "Sm" + }, + "ExecutionStatusDetail": { + "type": "structure", + "required": [ + "State", + "CreationDateTime" + ], + "members": { + "State": {}, + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + }, + "LastStateChangeReason": {} + } + } + } + } + }, + "BootstrapActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "BootstrapActionConfig": { + "shape": "S21" + } + } + } + }, + "SupportedProducts": { + "shape": "S23" + }, + "VisibleToAllUsers": { + "type": "boolean" + }, + "JobFlowRole": {}, + "ServiceRole": {} + } + } + } + } + }, + "deprecated": true + }, + "DescribeSecurityConfiguration": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "SecurityConfiguration": {}, + "CreationDateTime": { + "type": "timestamp" + } + } + } + }, + "DescribeStep": { + "input": { + "type": "structure", + "required": [ + "ClusterId", + "StepId" + ], + "members": { + "ClusterId": {}, + "StepId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Step": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Config": { + "shape": "S2a" + }, + "ActionOnFailure": {}, + "Status": { + "shape": "S2b" + } + } + } + } + } + }, + "ListBootstrapActions": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "BootstrapActions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "ScriptPath": {}, + "Args": { + "shape": "S1f" + } + } + } + }, + "Marker": {} + } + } + }, + "ListClusters": { + "input": { + "type": "structure", + "members": { + "CreatedAfter": { + "type": "timestamp" + }, + "CreatedBefore": { + "type": "timestamp" + }, + "ClusterStates": { + "type": "list", + "member": {} + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Clusters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Status": { + "shape": "S19" + }, + "NormalizedInstanceHours": { + "type": "integer" + } + } + } + }, + "Marker": {} + } + } + }, + "ListInstanceGroups": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Market": {}, + "InstanceGroupType": {}, + "BidPrice": {}, + "InstanceType": {}, + "RequestedInstanceCount": { + "type": "integer" + }, + "RunningInstanceCount": { + "type": "integer" + }, + "Status": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "Configurations": { + "shape": "S9" + }, + "EbsBlockDevices": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeSpecification": { + "shape": "Sg" + }, + "Device": {} + } + } + }, + "EbsOptimized": { + "type": "boolean" + }, + "ShrinkPolicy": { + "shape": "S33" + } + } + } + }, + "Marker": {} + } + } + }, + "ListInstances": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "InstanceGroupId": {}, + "InstanceGroupTypes": { + "type": "list", + "member": {} + }, + "InstanceStates": { + "type": "list", + "member": {} + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Instances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Ec2InstanceId": {}, + "PublicDnsName": {}, + "PublicIpAddress": {}, + "PrivateDnsName": {}, + "PrivateIpAddress": {}, + "Status": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "InstanceGroupId": {}, + "EbsVolumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Device": {}, + "VolumeId": {} + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "ListSecurityConfigurations": { + "input": { + "type": "structure", + "members": { + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "SecurityConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "CreationDateTime": { + "type": "timestamp" + } + } + } + }, + "Marker": {} + } + } + }, + "ListSteps": { + "input": { + "type": "structure", + "required": [ + "ClusterId" + ], + "members": { + "ClusterId": {}, + "StepStates": { + "type": "list", + "member": {} + }, + "StepIds": { + "shape": "Ss" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Steps": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Config": { + "shape": "S2a" + }, + "ActionOnFailure": {}, + "Status": { + "shape": "S2b" + } + } + } + }, + "Marker": {} + } + } + }, + "ModifyInstanceGroups": { + "input": { + "type": "structure", + "members": { + "InstanceGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InstanceGroupId" + ], + "members": { + "InstanceGroupId": {}, + "InstanceCount": { + "type": "integer" + }, + "EC2InstanceIdsToTerminate": { + "type": "list", + "member": {} + }, + "ShrinkPolicy": { + "shape": "S33" + } + } + } + } + } + } + }, + "RemoveTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "TagKeys" + ], + "members": { + "ResourceId": {}, + "TagKeys": { + "shape": "S1f" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RunJobFlow": { + "input": { + "type": "structure", + "required": [ + "Name", + "Instances" + ], + "members": { + "Name": {}, + "LogUri": {}, + "AdditionalInfo": {}, + "AmiVersion": {}, + "ReleaseLabel": {}, + "Instances": { + "type": "structure", + "members": { + "MasterInstanceType": {}, + "SlaveInstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "InstanceGroups": { + "shape": "S2" + }, + "Ec2KeyName": {}, + "Placement": { + "shape": "S1u" + }, + "KeepJobFlowAliveWhenNoSteps": { + "type": "boolean" + }, + "TerminationProtected": { + "type": "boolean" + }, + "HadoopVersion": {}, + "Ec2SubnetId": {}, + "EmrManagedMasterSecurityGroup": {}, + "EmrManagedSlaveSecurityGroup": {}, + "ServiceAccessSecurityGroup": {}, + "AdditionalMasterSecurityGroups": { + "shape": "S41" + }, + "AdditionalSlaveSecurityGroups": { + "shape": "S41" + } + } + }, + "Steps": { + "shape": "Sl" + }, + "BootstrapActions": { + "type": "list", + "member": { + "shape": "S21" + } + }, + "SupportedProducts": { + "shape": "S23" + }, + "NewSupportedProducts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Args": { + "shape": "Ss" + } + } + } + }, + "Applications": { + "shape": "S1h" + }, + "Configurations": { + "shape": "S9" + }, + "VisibleToAllUsers": { + "type": "boolean" + }, + "JobFlowRole": {}, + "ServiceRole": {}, + "Tags": { + "shape": "Sx" + }, + "SecurityConfiguration": {} + } + }, + "output": { + "type": "structure", + "members": { + "JobFlowId": {} + } + } + }, + "SetTerminationProtection": { + "input": { + "type": "structure", + "required": [ + "JobFlowIds", + "TerminationProtected" + ], + "members": { + "JobFlowIds": { + "shape": "Ss" + }, + "TerminationProtected": { + "type": "boolean" + } + } + } + }, + "SetVisibleToAllUsers": { + "input": { + "type": "structure", + "required": [ + "JobFlowIds", + "VisibleToAllUsers" + ], + "members": { + "JobFlowIds": { + "shape": "Ss" + }, + "VisibleToAllUsers": { + "type": "boolean" + } + } + } + }, + "TerminateJobFlows": { + "input": { + "type": "structure", + "required": [ + "JobFlowIds" + ], + "members": { + "JobFlowIds": { + "shape": "Ss" + } + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "InstanceRole", + "InstanceType", + "InstanceCount" + ], + "members": { + "Name": {}, + "Market": {}, + "InstanceRole": {}, + "BidPrice": {}, + "InstanceType": {}, + "InstanceCount": { + "type": "integer" + }, + "Configurations": { + "shape": "S9" + }, + "EbsConfiguration": { + "type": "structure", + "members": { + "EbsBlockDeviceConfigs": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "VolumeSpecification" + ], + "members": { + "VolumeSpecification": { + "shape": "Sg" + }, + "VolumesPerInstance": { + "type": "integer" + } + } + } + }, + "EbsOptimized": { + "type": "boolean" + } + } + } + } + } + }, + "S9": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Classification": {}, + "Configurations": { + "shape": "S9" + }, + "Properties": { + "shape": "Sc" + } + } + } + }, + "Sc": { + "type": "map", + "key": {}, + "value": {} + }, + "Sg": { + "type": "structure", + "required": [ + "VolumeType", + "SizeInGB" + ], + "members": { + "VolumeType": {}, + "Iops": { + "type": "integer" + }, + "SizeInGB": { + "type": "integer" + } + } + }, + "Sl": { + "type": "list", + "member": { + "shape": "Sm" + } + }, + "Sm": { + "type": "structure", + "required": [ + "Name", + "HadoopJarStep" + ], + "members": { + "Name": {}, + "ActionOnFailure": {}, + "HadoopJarStep": { + "type": "structure", + "required": [ + "Jar" + ], + "members": { + "Properties": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Jar": {}, + "MainClass": {}, + "Args": { + "shape": "Ss" + } + } + } + } + }, + "Ss": { + "type": "list", + "member": {} + }, + "Sx": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S19": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "ReadyDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "S1f": { + "type": "list", + "member": {} + }, + "S1h": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Version": {}, + "Args": { + "shape": "S1f" + }, + "AdditionalInfo": { + "shape": "Sc" + } + } + } + }, + "S1u": { + "type": "structure", + "required": [ + "AvailabilityZone" + ], + "members": { + "AvailabilityZone": {} + } + }, + "S21": { + "type": "structure", + "required": [ + "Name", + "ScriptBootstrapAction" + ], + "members": { + "Name": {}, + "ScriptBootstrapAction": { + "type": "structure", + "required": [ + "Path" + ], + "members": { + "Path": {}, + "Args": { + "shape": "Ss" + } + } + } + } + }, + "S23": { + "type": "list", + "member": {} + }, + "S2a": { + "type": "structure", + "members": { + "Jar": {}, + "Properties": { + "shape": "Sc" + }, + "MainClass": {}, + "Args": { + "shape": "S1f" + } + } + }, + "S2b": { + "type": "structure", + "members": { + "State": {}, + "StateChangeReason": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + }, + "FailureDetails": { + "type": "structure", + "members": { + "Reason": {}, + "Message": {}, + "LogFile": {} + } + }, + "Timeline": { + "type": "structure", + "members": { + "CreationDateTime": { + "type": "timestamp" + }, + "StartDateTime": { + "type": "timestamp" + }, + "EndDateTime": { + "type": "timestamp" + } + } + } + } + }, + "S33": { + "type": "structure", + "members": { + "DecommissionTimeout": { + "type": "integer" + }, + "InstanceResizePolicy": { + "type": "structure", + "members": { + "InstancesToTerminate": { + "shape": "S35" + }, + "InstancesToProtect": { + "shape": "S35" + }, + "InstanceTerminationTimeout": { + "type": "integer" + } + } + } + } + }, + "S35": { + "type": "list", + "member": {} + }, + "S41": { + "type": "list", + "member": {} + } + } +} +},{}],57:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeJobFlows": { + "result_key": "JobFlows" + }, + "ListBootstrapActions": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "BootstrapActions" + }, + "ListClusters": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "Clusters" + }, + "ListInstanceGroups": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "InstanceGroups" + }, + "ListInstances": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "Instances" + }, + "ListSteps": { + "input_token": "Marker", + "output_token": "Marker", + "result_key": "Steps" + } + } +} + +},{}],58:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "ClusterRunning": { + "delay": 30, + "operation": "DescribeCluster", + "maxAttempts": 60, + "acceptors": [ + { + "state": "success", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "RUNNING" + }, + { + "state": "success", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "WAITING" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "TERMINATING" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "TERMINATED" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Cluster.Status.State", + "expected": "TERMINATED_WITH_ERRORS" + } + ] + }, + "StepComplete": { + "delay": 30, + "operation": "DescribeStep", + "maxAttempts": 60, + "acceptors": [ + { + "state": "success", + "matcher": "path", + "argument": "Step.Status.State", + "expected": "COMPLETED" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Step.Status.State", + "expected": "FAILED" + }, + { + "state": "failure", + "matcher": "path", + "argument": "Step.Status.State", + "expected": "CANCELLED" + } + ] + } + } +} + +},{}],59:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2012-09-25", + "endpointPrefix": "elastictranscoder", + "protocol": "rest-json", + "serviceFullName": "Amazon Elastic Transcoder", + "signatureVersion": "v4" + }, + "operations": { + "CancelJob": { + "http": { + "method": "DELETE", + "requestUri": "/2012-09-25/jobs/{Id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateJob": { + "http": { + "requestUri": "/2012-09-25/jobs", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "PipelineId", + "Input" + ], + "members": { + "PipelineId": {}, + "Input": { + "shape": "S5" + }, + "Output": { + "shape": "Sk" + }, + "Outputs": { + "type": "list", + "member": { + "shape": "Sk" + } + }, + "OutputKeyPrefix": {}, + "Playlists": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Format": {}, + "OutputKeys": { + "shape": "S1j" + }, + "HlsContentProtection": { + "shape": "S1k" + }, + "PlayReadyDrm": { + "shape": "S1o" + } + } + } + }, + "UserMetadata": { + "shape": "S1t" + } + } + }, + "output": { + "type": "structure", + "members": { + "Job": { + "shape": "S1w" + } + } + } + }, + "CreatePipeline": { + "http": { + "requestUri": "/2012-09-25/pipelines", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "Name", + "InputBucket", + "Role" + ], + "members": { + "Name": {}, + "InputBucket": {}, + "OutputBucket": {}, + "Role": {}, + "AwsKmsKeyArn": {}, + "Notifications": { + "shape": "S28" + }, + "ContentConfig": { + "shape": "S2a" + }, + "ThumbnailConfig": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + }, + "Warnings": { + "shape": "S2l" + } + } + } + }, + "CreatePreset": { + "http": { + "requestUri": "/2012-09-25/presets", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "Name", + "Container" + ], + "members": { + "Name": {}, + "Description": {}, + "Container": {}, + "Video": { + "shape": "S2p" + }, + "Audio": { + "shape": "S35" + }, + "Thumbnails": { + "shape": "S3g" + } + } + }, + "output": { + "type": "structure", + "members": { + "Preset": { + "shape": "S3k" + }, + "Warning": {} + } + } + }, + "DeletePipeline": { + "http": { + "method": "DELETE", + "requestUri": "/2012-09-25/pipelines/{Id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeletePreset": { + "http": { + "method": "DELETE", + "requestUri": "/2012-09-25/presets/{Id}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ListJobsByPipeline": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}" + }, + "input": { + "type": "structure", + "required": [ + "PipelineId" + ], + "members": { + "PipelineId": { + "location": "uri", + "locationName": "PipelineId" + }, + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Jobs": { + "shape": "S3t" + }, + "NextPageToken": {} + } + } + }, + "ListJobsByStatus": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/jobsByStatus/{Status}" + }, + "input": { + "type": "structure", + "required": [ + "Status" + ], + "members": { + "Status": { + "location": "uri", + "locationName": "Status" + }, + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Jobs": { + "shape": "S3t" + }, + "NextPageToken": {} + } + } + }, + "ListPipelines": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/pipelines" + }, + "input": { + "type": "structure", + "members": { + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipelines": { + "type": "list", + "member": { + "shape": "S2j" + } + }, + "NextPageToken": {} + } + } + }, + "ListPresets": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/presets" + }, + "input": { + "type": "structure", + "members": { + "Ascending": { + "location": "querystring", + "locationName": "Ascending" + }, + "PageToken": { + "location": "querystring", + "locationName": "PageToken" + } + } + }, + "output": { + "type": "structure", + "members": { + "Presets": { + "type": "list", + "member": { + "shape": "S3k" + } + }, + "NextPageToken": {} + } + } + }, + "ReadJob": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/jobs/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Job": { + "shape": "S1w" + } + } + } + }, + "ReadPipeline": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/pipelines/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + }, + "Warnings": { + "shape": "S2l" + } + } + } + }, + "ReadPreset": { + "http": { + "method": "GET", + "requestUri": "/2012-09-25/presets/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": { + "Preset": { + "shape": "S3k" + } + } + } + }, + "TestRole": { + "http": { + "requestUri": "/2012-09-25/roleTests", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "Role", + "InputBucket", + "OutputBucket", + "Topics" + ], + "members": { + "Role": {}, + "InputBucket": {}, + "OutputBucket": {}, + "Topics": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "Success": {}, + "Messages": { + "type": "list", + "member": {} + } + } + } + }, + "UpdatePipeline": { + "http": { + "method": "PUT", + "requestUri": "/2012-09-25/pipelines/{Id}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Name": {}, + "InputBucket": {}, + "Role": {}, + "AwsKmsKeyArn": {}, + "Notifications": { + "shape": "S28" + }, + "ContentConfig": { + "shape": "S2a" + }, + "ThumbnailConfig": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + }, + "Warnings": { + "shape": "S2l" + } + } + } + }, + "UpdatePipelineNotifications": { + "http": { + "requestUri": "/2012-09-25/pipelines/{Id}/notifications" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Notifications" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Notifications": { + "shape": "S28" + } + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + } + } + } + }, + "UpdatePipelineStatus": { + "http": { + "requestUri": "/2012-09-25/pipelines/{Id}/status" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Status" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Status": {} + } + }, + "output": { + "type": "structure", + "members": { + "Pipeline": { + "shape": "S2j" + } + } + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "members": { + "Key": {}, + "FrameRate": {}, + "Resolution": {}, + "AspectRatio": {}, + "Interlaced": {}, + "Container": {}, + "Encryption": { + "shape": "Sc" + }, + "DetectedProperties": { + "type": "structure", + "members": { + "Width": { + "type": "integer" + }, + "Height": { + "type": "integer" + }, + "FrameRate": {}, + "FileSize": { + "type": "long" + }, + "DurationMillis": { + "type": "long" + } + } + } + } + }, + "Sc": { + "type": "structure", + "members": { + "Mode": {}, + "Key": {}, + "KeyMd5": {}, + "InitializationVector": {} + } + }, + "Sk": { + "type": "structure", + "members": { + "Key": {}, + "ThumbnailPattern": {}, + "ThumbnailEncryption": { + "shape": "Sc" + }, + "Rotate": {}, + "PresetId": {}, + "SegmentDuration": {}, + "Watermarks": { + "shape": "So" + }, + "AlbumArt": { + "shape": "Ss" + }, + "Composition": { + "shape": "S10" + }, + "Captions": { + "shape": "S14" + }, + "Encryption": { + "shape": "Sc" + } + } + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PresetWatermarkId": {}, + "InputKey": {}, + "Encryption": { + "shape": "Sc" + } + } + } + }, + "Ss": { + "type": "structure", + "members": { + "MergePolicy": {}, + "Artwork": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InputKey": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "SizingPolicy": {}, + "PaddingPolicy": {}, + "AlbumArtFormat": {}, + "Encryption": { + "shape": "Sc" + } + } + } + } + } + }, + "S10": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TimeSpan": { + "type": "structure", + "members": { + "StartTime": {}, + "Duration": {} + } + } + } + } + }, + "S14": { + "type": "structure", + "members": { + "MergePolicy": {}, + "CaptionSources": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Language": {}, + "TimeOffset": {}, + "Label": {}, + "Encryption": { + "shape": "Sc" + } + } + } + }, + "CaptionFormats": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Format": {}, + "Pattern": {}, + "Encryption": { + "shape": "Sc" + } + } + } + } + } + }, + "S1j": { + "type": "list", + "member": {} + }, + "S1k": { + "type": "structure", + "members": { + "Method": {}, + "Key": {}, + "KeyMd5": {}, + "InitializationVector": {}, + "LicenseAcquisitionUrl": {}, + "KeyStoragePolicy": {} + } + }, + "S1o": { + "type": "structure", + "members": { + "Format": {}, + "Key": {}, + "KeyMd5": {}, + "KeyId": {}, + "InitializationVector": {}, + "LicenseAcquisitionUrl": {} + } + }, + "S1t": { + "type": "map", + "key": {}, + "value": {} + }, + "S1w": { + "type": "structure", + "members": { + "Id": {}, + "Arn": {}, + "PipelineId": {}, + "Input": { + "shape": "S5" + }, + "Output": { + "shape": "S1x" + }, + "Outputs": { + "type": "list", + "member": { + "shape": "S1x" + } + }, + "OutputKeyPrefix": {}, + "Playlists": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Format": {}, + "OutputKeys": { + "shape": "S1j" + }, + "HlsContentProtection": { + "shape": "S1k" + }, + "PlayReadyDrm": { + "shape": "S1o" + }, + "Status": {}, + "StatusDetail": {} + } + } + }, + "Status": {}, + "UserMetadata": { + "shape": "S1t" + }, + "Timing": { + "type": "structure", + "members": { + "SubmitTimeMillis": { + "type": "long" + }, + "StartTimeMillis": { + "type": "long" + }, + "FinishTimeMillis": { + "type": "long" + } + } + } + } + }, + "S1x": { + "type": "structure", + "members": { + "Id": {}, + "Key": {}, + "ThumbnailPattern": {}, + "ThumbnailEncryption": { + "shape": "Sc" + }, + "Rotate": {}, + "PresetId": {}, + "SegmentDuration": {}, + "Status": {}, + "StatusDetail": {}, + "Duration": { + "type": "long" + }, + "Width": { + "type": "integer" + }, + "Height": { + "type": "integer" + }, + "FrameRate": {}, + "FileSize": { + "type": "long" + }, + "DurationMillis": { + "type": "long" + }, + "Watermarks": { + "shape": "So" + }, + "AlbumArt": { + "shape": "Ss" + }, + "Composition": { + "shape": "S10" + }, + "Captions": { + "shape": "S14" + }, + "Encryption": { + "shape": "Sc" + }, + "AppliedColorSpaceConversion": {} + } + }, + "S28": { + "type": "structure", + "members": { + "Progressing": {}, + "Completed": {}, + "Warning": {}, + "Error": {} + } + }, + "S2a": { + "type": "structure", + "members": { + "Bucket": {}, + "StorageClass": {}, + "Permissions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GranteeType": {}, + "Grantee": {}, + "Access": { + "type": "list", + "member": {} + } + } + } + } + } + }, + "S2j": { + "type": "structure", + "members": { + "Id": {}, + "Arn": {}, + "Name": {}, + "Status": {}, + "InputBucket": {}, + "OutputBucket": {}, + "Role": {}, + "AwsKmsKeyArn": {}, + "Notifications": { + "shape": "S28" + }, + "ContentConfig": { + "shape": "S2a" + }, + "ThumbnailConfig": { + "shape": "S2a" + } + } + }, + "S2l": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Code": {}, + "Message": {} + } + } + }, + "S2p": { + "type": "structure", + "members": { + "Codec": {}, + "CodecOptions": { + "type": "map", + "key": {}, + "value": {} + }, + "KeyframesMaxDist": {}, + "FixedGOP": {}, + "BitRate": {}, + "FrameRate": {}, + "MaxFrameRate": {}, + "Resolution": {}, + "AspectRatio": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "DisplayAspectRatio": {}, + "SizingPolicy": {}, + "PaddingPolicy": {}, + "Watermarks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "SizingPolicy": {}, + "HorizontalAlign": {}, + "HorizontalOffset": {}, + "VerticalAlign": {}, + "VerticalOffset": {}, + "Opacity": {}, + "Target": {} + } + } + } + } + }, + "S35": { + "type": "structure", + "members": { + "Codec": {}, + "SampleRate": {}, + "BitRate": {}, + "Channels": {}, + "AudioPackingMode": {}, + "CodecOptions": { + "type": "structure", + "members": { + "Profile": {}, + "BitDepth": {}, + "BitOrder": {}, + "Signed": {} + } + } + } + }, + "S3g": { + "type": "structure", + "members": { + "Format": {}, + "Interval": {}, + "Resolution": {}, + "AspectRatio": {}, + "MaxWidth": {}, + "MaxHeight": {}, + "SizingPolicy": {}, + "PaddingPolicy": {} + } + }, + "S3k": { + "type": "structure", + "members": { + "Id": {}, + "Arn": {}, + "Name": {}, + "Description": {}, + "Container": {}, + "Audio": { + "shape": "S35" + }, + "Video": { + "shape": "S2p" + }, + "Thumbnails": { + "shape": "S3g" + }, + "Type": {} + } + }, + "S3t": { + "type": "list", + "member": { + "shape": "S1w" + } + } + } +} +},{}],60:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListJobsByPipeline": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Jobs" + }, + "ListJobsByStatus": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Jobs" + }, + "ListPipelines": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Pipelines" + }, + "ListPresets": { + "input_token": "PageToken", + "output_token": "NextPageToken", + "result_key": "Presets" + } + } +} + +},{}],61:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "JobComplete": { + "delay": 30, + "operation": "ReadJob", + "maxAttempts": 120, + "acceptors": [ + { + "expected": "Complete", + "matcher": "path", + "state": "success", + "argument": "Job.Status" + }, + { + "expected": "Canceled", + "matcher": "path", + "state": "failure", + "argument": "Job.Status" + }, + { + "expected": "Error", + "matcher": "path", + "state": "failure", + "argument": "Job.Status" + } + ] + } + } +} + +},{}],62:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2010-12-01", + "endpointPrefix": "email", + "protocol": "query", + "serviceAbbreviation": "Amazon SES", + "serviceFullName": "Amazon Simple Email Service", + "signatureVersion": "v4", + "signingName": "ses", + "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/" + }, + "operations": { + "CloneReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "OriginalRuleSetName" + ], + "members": { + "RuleSetName": {}, + "OriginalRuleSetName": {} + } + }, + "output": { + "resultWrapper": "CloneReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "CreateReceiptFilter": { + "input": { + "type": "structure", + "required": [ + "Filter" + ], + "members": { + "Filter": { + "shape": "S5" + } + } + }, + "output": { + "resultWrapper": "CreateReceiptFilterResult", + "type": "structure", + "members": {} + } + }, + "CreateReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "Rule" + ], + "members": { + "RuleSetName": {}, + "After": {}, + "Rule": { + "shape": "Sd" + } + } + }, + "output": { + "resultWrapper": "CreateReceiptRuleResult", + "type": "structure", + "members": {} + } + }, + "CreateReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName" + ], + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "CreateReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "DeleteIdentity": { + "input": { + "type": "structure", + "required": [ + "Identity" + ], + "members": { + "Identity": {} + } + }, + "output": { + "resultWrapper": "DeleteIdentityResult", + "type": "structure", + "members": {} + } + }, + "DeleteIdentityPolicy": { + "input": { + "type": "structure", + "required": [ + "Identity", + "PolicyName" + ], + "members": { + "Identity": {}, + "PolicyName": {} + } + }, + "output": { + "resultWrapper": "DeleteIdentityPolicyResult", + "type": "structure", + "members": {} + } + }, + "DeleteReceiptFilter": { + "input": { + "type": "structure", + "required": [ + "FilterName" + ], + "members": { + "FilterName": {} + } + }, + "output": { + "resultWrapper": "DeleteReceiptFilterResult", + "type": "structure", + "members": {} + } + }, + "DeleteReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleName" + ], + "members": { + "RuleSetName": {}, + "RuleName": {} + } + }, + "output": { + "resultWrapper": "DeleteReceiptRuleResult", + "type": "structure", + "members": {} + } + }, + "DeleteReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName" + ], + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "DeleteReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "DeleteVerifiedEmailAddress": { + "input": { + "type": "structure", + "required": [ + "EmailAddress" + ], + "members": { + "EmailAddress": {} + } + } + }, + "DescribeActiveReceiptRuleSet": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "DescribeActiveReceiptRuleSetResult", + "type": "structure", + "members": { + "Metadata": { + "shape": "S1l" + }, + "Rules": { + "shape": "S1n" + } + } + } + }, + "DescribeReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleName" + ], + "members": { + "RuleSetName": {}, + "RuleName": {} + } + }, + "output": { + "resultWrapper": "DescribeReceiptRuleResult", + "type": "structure", + "members": { + "Rule": { + "shape": "Sd" + } + } + } + }, + "DescribeReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName" + ], + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "DescribeReceiptRuleSetResult", + "type": "structure", + "members": { + "Metadata": { + "shape": "S1l" + }, + "Rules": { + "shape": "S1n" + } + } + } + }, + "GetIdentityDkimAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityDkimAttributesResult", + "type": "structure", + "required": [ + "DkimAttributes" + ], + "members": { + "DkimAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "DkimEnabled", + "DkimVerificationStatus" + ], + "members": { + "DkimEnabled": { + "type": "boolean" + }, + "DkimVerificationStatus": {}, + "DkimTokens": { + "shape": "S1y" + } + } + } + } + } + } + }, + "GetIdentityMailFromDomainAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityMailFromDomainAttributesResult", + "type": "structure", + "required": [ + "MailFromDomainAttributes" + ], + "members": { + "MailFromDomainAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "MailFromDomain", + "MailFromDomainStatus", + "BehaviorOnMXFailure" + ], + "members": { + "MailFromDomain": {}, + "MailFromDomainStatus": {}, + "BehaviorOnMXFailure": {} + } + } + } + } + } + }, + "GetIdentityNotificationAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityNotificationAttributesResult", + "type": "structure", + "required": [ + "NotificationAttributes" + ], + "members": { + "NotificationAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "BounceTopic", + "ComplaintTopic", + "DeliveryTopic", + "ForwardingEnabled" + ], + "members": { + "BounceTopic": {}, + "ComplaintTopic": {}, + "DeliveryTopic": {}, + "ForwardingEnabled": { + "type": "boolean" + }, + "HeadersInBounceNotificationsEnabled": { + "type": "boolean" + }, + "HeadersInComplaintNotificationsEnabled": { + "type": "boolean" + }, + "HeadersInDeliveryNotificationsEnabled": { + "type": "boolean" + } + } + } + } + } + } + }, + "GetIdentityPolicies": { + "input": { + "type": "structure", + "required": [ + "Identity", + "PolicyNames" + ], + "members": { + "Identity": {}, + "PolicyNames": { + "shape": "S2d" + } + } + }, + "output": { + "resultWrapper": "GetIdentityPoliciesResult", + "type": "structure", + "required": [ + "Policies" + ], + "members": { + "Policies": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "GetIdentityVerificationAttributes": { + "input": { + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + } + } + }, + "output": { + "resultWrapper": "GetIdentityVerificationAttributesResult", + "type": "structure", + "required": [ + "VerificationAttributes" + ], + "members": { + "VerificationAttributes": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "VerificationStatus" + ], + "members": { + "VerificationStatus": {}, + "VerificationToken": {} + } + } + } + } + } + }, + "GetSendQuota": { + "output": { + "resultWrapper": "GetSendQuotaResult", + "type": "structure", + "members": { + "Max24HourSend": { + "type": "double" + }, + "MaxSendRate": { + "type": "double" + }, + "SentLast24Hours": { + "type": "double" + } + } + } + }, + "GetSendStatistics": { + "output": { + "resultWrapper": "GetSendStatisticsResult", + "type": "structure", + "members": { + "SendDataPoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Timestamp": { + "type": "timestamp" + }, + "DeliveryAttempts": { + "type": "long" + }, + "Bounces": { + "type": "long" + }, + "Complaints": { + "type": "long" + }, + "Rejects": { + "type": "long" + } + } + } + } + } + } + }, + "ListIdentities": { + "input": { + "type": "structure", + "members": { + "IdentityType": {}, + "NextToken": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ListIdentitiesResult", + "type": "structure", + "required": [ + "Identities" + ], + "members": { + "Identities": { + "shape": "S1t" + }, + "NextToken": {} + } + } + }, + "ListIdentityPolicies": { + "input": { + "type": "structure", + "required": [ + "Identity" + ], + "members": { + "Identity": {} + } + }, + "output": { + "resultWrapper": "ListIdentityPoliciesResult", + "type": "structure", + "required": [ + "PolicyNames" + ], + "members": { + "PolicyNames": { + "shape": "S2d" + } + } + } + }, + "ListReceiptFilters": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "ListReceiptFiltersResult", + "type": "structure", + "members": { + "Filters": { + "type": "list", + "member": { + "shape": "S5" + } + } + } + } + }, + "ListReceiptRuleSets": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListReceiptRuleSetsResult", + "type": "structure", + "members": { + "RuleSets": { + "type": "list", + "member": { + "shape": "S1l" + } + }, + "NextToken": {} + } + } + }, + "ListVerifiedEmailAddresses": { + "output": { + "resultWrapper": "ListVerifiedEmailAddressesResult", + "type": "structure", + "members": { + "VerifiedEmailAddresses": { + "shape": "S37" + } + } + } + }, + "PutIdentityPolicy": { + "input": { + "type": "structure", + "required": [ + "Identity", + "PolicyName", + "Policy" + ], + "members": { + "Identity": {}, + "PolicyName": {}, + "Policy": {} + } + }, + "output": { + "resultWrapper": "PutIdentityPolicyResult", + "type": "structure", + "members": {} + } + }, + "ReorderReceiptRuleSet": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleNames" + ], + "members": { + "RuleSetName": {}, + "RuleNames": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "ReorderReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "SendBounce": { + "input": { + "type": "structure", + "required": [ + "OriginalMessageId", + "BounceSender", + "BouncedRecipientInfoList" + ], + "members": { + "OriginalMessageId": {}, + "BounceSender": {}, + "Explanation": {}, + "MessageDsn": { + "type": "structure", + "required": [ + "ReportingMta" + ], + "members": { + "ReportingMta": {}, + "ArrivalDate": { + "type": "timestamp" + }, + "ExtensionFields": { + "shape": "S3j" + } + } + }, + "BouncedRecipientInfoList": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Recipient" + ], + "members": { + "Recipient": {}, + "RecipientArn": {}, + "BounceType": {}, + "RecipientDsnFields": { + "type": "structure", + "required": [ + "Action", + "Status" + ], + "members": { + "FinalRecipient": {}, + "Action": {}, + "RemoteMta": {}, + "Status": {}, + "DiagnosticCode": {}, + "LastAttemptDate": { + "type": "timestamp" + }, + "ExtensionFields": { + "shape": "S3j" + } + } + } + } + } + }, + "BounceSenderArn": {} + } + }, + "output": { + "resultWrapper": "SendBounceResult", + "type": "structure", + "members": { + "MessageId": {} + } + } + }, + "SendEmail": { + "input": { + "type": "structure", + "required": [ + "Source", + "Destination", + "Message" + ], + "members": { + "Source": {}, + "Destination": { + "type": "structure", + "members": { + "ToAddresses": { + "shape": "S37" + }, + "CcAddresses": { + "shape": "S37" + }, + "BccAddresses": { + "shape": "S37" + } + } + }, + "Message": { + "type": "structure", + "required": [ + "Subject", + "Body" + ], + "members": { + "Subject": { + "shape": "S40" + }, + "Body": { + "type": "structure", + "members": { + "Text": { + "shape": "S40" + }, + "Html": { + "shape": "S40" + } + } + } + } + }, + "ReplyToAddresses": { + "shape": "S37" + }, + "ReturnPath": {}, + "SourceArn": {}, + "ReturnPathArn": {} + } + }, + "output": { + "resultWrapper": "SendEmailResult", + "type": "structure", + "required": [ + "MessageId" + ], + "members": { + "MessageId": {} + } + } + }, + "SendRawEmail": { + "input": { + "type": "structure", + "required": [ + "RawMessage" + ], + "members": { + "Source": {}, + "Destinations": { + "shape": "S37" + }, + "RawMessage": { + "type": "structure", + "required": [ + "Data" + ], + "members": { + "Data": { + "type": "blob" + } + } + }, + "FromArn": {}, + "SourceArn": {}, + "ReturnPathArn": {} + } + }, + "output": { + "resultWrapper": "SendRawEmailResult", + "type": "structure", + "required": [ + "MessageId" + ], + "members": { + "MessageId": {} + } + } + }, + "SetActiveReceiptRuleSet": { + "input": { + "type": "structure", + "members": { + "RuleSetName": {} + } + }, + "output": { + "resultWrapper": "SetActiveReceiptRuleSetResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityDkimEnabled": { + "input": { + "type": "structure", + "required": [ + "Identity", + "DkimEnabled" + ], + "members": { + "Identity": {}, + "DkimEnabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetIdentityDkimEnabledResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityFeedbackForwardingEnabled": { + "input": { + "type": "structure", + "required": [ + "Identity", + "ForwardingEnabled" + ], + "members": { + "Identity": {}, + "ForwardingEnabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityHeadersInNotificationsEnabled": { + "input": { + "type": "structure", + "required": [ + "Identity", + "NotificationType", + "Enabled" + ], + "members": { + "Identity": {}, + "NotificationType": {}, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityMailFromDomain": { + "input": { + "type": "structure", + "required": [ + "Identity" + ], + "members": { + "Identity": {}, + "MailFromDomain": {}, + "BehaviorOnMXFailure": {} + } + }, + "output": { + "resultWrapper": "SetIdentityMailFromDomainResult", + "type": "structure", + "members": {} + } + }, + "SetIdentityNotificationTopic": { + "input": { + "type": "structure", + "required": [ + "Identity", + "NotificationType" + ], + "members": { + "Identity": {}, + "NotificationType": {}, + "SnsTopic": {} + } + }, + "output": { + "resultWrapper": "SetIdentityNotificationTopicResult", + "type": "structure", + "members": {} + } + }, + "SetReceiptRulePosition": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "RuleName" + ], + "members": { + "RuleSetName": {}, + "RuleName": {}, + "After": {} + } + }, + "output": { + "resultWrapper": "SetReceiptRulePositionResult", + "type": "structure", + "members": {} + } + }, + "UpdateReceiptRule": { + "input": { + "type": "structure", + "required": [ + "RuleSetName", + "Rule" + ], + "members": { + "RuleSetName": {}, + "Rule": { + "shape": "Sd" + } + } + }, + "output": { + "resultWrapper": "UpdateReceiptRuleResult", + "type": "structure", + "members": {} + } + }, + "VerifyDomainDkim": { + "input": { + "type": "structure", + "required": [ + "Domain" + ], + "members": { + "Domain": {} + } + }, + "output": { + "resultWrapper": "VerifyDomainDkimResult", + "type": "structure", + "required": [ + "DkimTokens" + ], + "members": { + "DkimTokens": { + "shape": "S1y" + } + } + } + }, + "VerifyDomainIdentity": { + "input": { + "type": "structure", + "required": [ + "Domain" + ], + "members": { + "Domain": {} + } + }, + "output": { + "resultWrapper": "VerifyDomainIdentityResult", + "type": "structure", + "required": [ + "VerificationToken" + ], + "members": { + "VerificationToken": {} + } + } + }, + "VerifyEmailAddress": { + "input": { + "type": "structure", + "required": [ + "EmailAddress" + ], + "members": { + "EmailAddress": {} + } + } + }, + "VerifyEmailIdentity": { + "input": { + "type": "structure", + "required": [ + "EmailAddress" + ], + "members": { + "EmailAddress": {} + } + }, + "output": { + "resultWrapper": "VerifyEmailIdentityResult", + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "required": [ + "Name", + "IpFilter" + ], + "members": { + "Name": {}, + "IpFilter": { + "type": "structure", + "required": [ + "Policy", + "Cidr" + ], + "members": { + "Policy": {}, + "Cidr": {} + } + } + } + }, + "Sd": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Enabled": { + "type": "boolean" + }, + "TlsPolicy": {}, + "Recipients": { + "type": "list", + "member": {} + }, + "Actions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "S3Action": { + "type": "structure", + "required": [ + "BucketName" + ], + "members": { + "TopicArn": {}, + "BucketName": {}, + "ObjectKeyPrefix": {}, + "KmsKeyArn": {} + } + }, + "BounceAction": { + "type": "structure", + "required": [ + "SmtpReplyCode", + "Message", + "Sender" + ], + "members": { + "TopicArn": {}, + "SmtpReplyCode": {}, + "StatusCode": {}, + "Message": {}, + "Sender": {} + } + }, + "WorkmailAction": { + "type": "structure", + "required": [ + "OrganizationArn" + ], + "members": { + "TopicArn": {}, + "OrganizationArn": {} + } + }, + "LambdaAction": { + "type": "structure", + "required": [ + "FunctionArn" + ], + "members": { + "TopicArn": {}, + "FunctionArn": {}, + "InvocationType": {} + } + }, + "StopAction": { + "type": "structure", + "required": [ + "Scope" + ], + "members": { + "Scope": {}, + "TopicArn": {} + } + }, + "AddHeaderAction": { + "type": "structure", + "required": [ + "HeaderName", + "HeaderValue" + ], + "members": { + "HeaderName": {}, + "HeaderValue": {} + } + }, + "SNSAction": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {}, + "Encoding": {} + } + } + } + } + }, + "ScanEnabled": { + "type": "boolean" + } + } + }, + "S1l": { + "type": "structure", + "members": { + "Name": {}, + "CreatedTimestamp": { + "type": "timestamp" + } + } + }, + "S1n": { + "type": "list", + "member": { + "shape": "Sd" + } + }, + "S1t": { + "type": "list", + "member": {} + }, + "S1y": { + "type": "list", + "member": {} + }, + "S2d": { + "type": "list", + "member": {} + }, + "S37": { + "type": "list", + "member": {} + }, + "S3j": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + } + } + }, + "S40": { + "type": "structure", + "required": [ + "Data" + ], + "members": { + "Data": {}, + "Charset": {} + } + } + } +} +},{}],63:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListIdentities": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxItems", + "result_key": "Identities" + }, + "ListVerifiedEmailAddresses": { + "result_key": "VerifiedEmailAddresses" + } + } +} + +},{}],64:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "IdentityExists": { + "delay": 3, + "operation": "GetIdentityVerificationAttributes", + "maxAttempts": 20, + "acceptors": [ + { + "expected": "Success", + "matcher": "pathAll", + "state": "success", + "argument": "VerificationAttributes.*.VerificationStatus" + } + ] + } + } +} + +},{}],65:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-10-07", + "endpointPrefix": "events", + "jsonVersion": "1.1", + "serviceFullName": "Amazon CloudWatch Events", + "signatureVersion": "v4", + "targetPrefix": "AWSEvents", + "protocol": "json" + }, + "operations": { + "DeleteRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + } + }, + "DescribeRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "Arn": {}, + "EventPattern": {}, + "ScheduleExpression": {}, + "State": {}, + "Description": {}, + "RoleArn": {} + } + } + }, + "DisableRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + } + }, + "EnableRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + } + }, + "ListRuleNamesByTarget": { + "input": { + "type": "structure", + "required": [ + "TargetArn" + ], + "members": { + "TargetArn": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "RuleNames": { + "type": "list", + "member": {} + }, + "NextToken": {} + } + } + }, + "ListRules": { + "input": { + "type": "structure", + "members": { + "NamePrefix": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Rules": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Arn": {}, + "EventPattern": {}, + "State": {}, + "Description": {}, + "ScheduleExpression": {}, + "RoleArn": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListTargetsByRule": { + "input": { + "type": "structure", + "required": [ + "Rule" + ], + "members": { + "Rule": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Targets": { + "shape": "Sp" + }, + "NextToken": {} + } + } + }, + "PutEvents": { + "input": { + "type": "structure", + "required": [ + "Entries" + ], + "members": { + "Entries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Time": { + "type": "timestamp" + }, + "Source": {}, + "Resources": { + "type": "list", + "member": {} + }, + "DetailType": {}, + "Detail": {} + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedEntryCount": { + "type": "integer" + }, + "Entries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "PutRule": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "ScheduleExpression": {}, + "EventPattern": {}, + "State": {}, + "Description": {}, + "RoleArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "RuleArn": {} + } + } + }, + "PutTargets": { + "input": { + "type": "structure", + "required": [ + "Rule", + "Targets" + ], + "members": { + "Rule": {}, + "Targets": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedEntryCount": { + "type": "integer" + }, + "FailedEntries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "RemoveTargets": { + "input": { + "type": "structure", + "required": [ + "Rule", + "Ids" + ], + "members": { + "Rule": {}, + "Ids": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "FailedEntryCount": { + "type": "integer" + }, + "FailedEntries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "TestEventPattern": { + "input": { + "type": "structure", + "required": [ + "EventPattern", + "Event" + ], + "members": { + "EventPattern": {}, + "Event": {} + } + }, + "output": { + "type": "structure", + "members": { + "Result": { + "type": "boolean" + } + } + } + } + }, + "shapes": { + "Sp": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Id", + "Arn" + ], + "members": { + "Id": {}, + "Arn": {}, + "Input": {}, + "InputPath": {} + } + } + } + }, + "examples": {} +} +},{}],66:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-08-04", + "endpointPrefix": "firehose", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Firehose", + "serviceFullName": "Amazon Kinesis Firehose", + "signatureVersion": "v4", + "targetPrefix": "Firehose_20150804" + }, + "operations": { + "CreateDeliveryStream": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName" + ], + "members": { + "DeliveryStreamName": {}, + "S3DestinationConfiguration": { + "shape": "S3" + }, + "RedshiftDestinationConfiguration": { + "type": "structure", + "required": [ + "RoleARN", + "ClusterJDBCURL", + "CopyCommand", + "Username", + "Password", + "S3Configuration" + ], + "members": { + "RoleARN": {}, + "ClusterJDBCURL": {}, + "CopyCommand": { + "shape": "Sl" + }, + "Username": { + "shape": "Sp" + }, + "Password": { + "shape": "Sq" + }, + "RetryOptions": { + "shape": "Sr" + }, + "S3Configuration": { + "shape": "S3" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "ElasticsearchDestinationConfiguration": { + "type": "structure", + "required": [ + "RoleARN", + "DomainARN", + "IndexName", + "TypeName", + "S3Configuration" + ], + "members": { + "RoleARN": {}, + "DomainARN": {}, + "IndexName": {}, + "TypeName": {}, + "IndexRotationPeriod": {}, + "BufferingHints": { + "shape": "Sy" + }, + "RetryOptions": { + "shape": "S11" + }, + "S3BackupMode": {}, + "S3Configuration": { + "shape": "S3" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "DeliveryStreamARN": {} + } + } + }, + "DeleteDeliveryStream": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName" + ], + "members": { + "DeliveryStreamName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeDeliveryStream": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName" + ], + "members": { + "DeliveryStreamName": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartDestinationId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DeliveryStreamDescription" + ], + "members": { + "DeliveryStreamDescription": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "DeliveryStreamARN", + "DeliveryStreamStatus", + "VersionId", + "Destinations", + "HasMoreDestinations" + ], + "members": { + "DeliveryStreamName": {}, + "DeliveryStreamARN": {}, + "DeliveryStreamStatus": {}, + "VersionId": {}, + "CreateTimestamp": { + "type": "timestamp" + }, + "LastUpdateTimestamp": { + "type": "timestamp" + }, + "Destinations": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DestinationId" + ], + "members": { + "DestinationId": {}, + "S3DestinationDescription": { + "shape": "S1i" + }, + "RedshiftDestinationDescription": { + "type": "structure", + "required": [ + "RoleARN", + "ClusterJDBCURL", + "CopyCommand", + "Username", + "S3DestinationDescription" + ], + "members": { + "RoleARN": {}, + "ClusterJDBCURL": {}, + "CopyCommand": { + "shape": "Sl" + }, + "Username": { + "shape": "Sp" + }, + "RetryOptions": { + "shape": "Sr" + }, + "S3DestinationDescription": { + "shape": "S1i" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "ElasticsearchDestinationDescription": { + "type": "structure", + "members": { + "RoleARN": {}, + "DomainARN": {}, + "IndexName": {}, + "TypeName": {}, + "IndexRotationPeriod": {}, + "BufferingHints": { + "shape": "Sy" + }, + "RetryOptions": { + "shape": "S11" + }, + "S3BackupMode": {}, + "S3DestinationDescription": { + "shape": "S1i" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } + } + }, + "HasMoreDestinations": { + "type": "boolean" + } + } + } + } + } + }, + "ListDeliveryStreams": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "ExclusiveStartDeliveryStreamName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DeliveryStreamNames", + "HasMoreDeliveryStreams" + ], + "members": { + "DeliveryStreamNames": { + "type": "list", + "member": {} + }, + "HasMoreDeliveryStreams": { + "type": "boolean" + } + } + } + }, + "PutRecord": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "Record" + ], + "members": { + "DeliveryStreamName": {}, + "Record": { + "shape": "S1q" + } + } + }, + "output": { + "type": "structure", + "required": [ + "RecordId" + ], + "members": { + "RecordId": {} + } + } + }, + "PutRecordBatch": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "Records" + ], + "members": { + "DeliveryStreamName": {}, + "Records": { + "type": "list", + "member": { + "shape": "S1q" + } + } + } + }, + "output": { + "type": "structure", + "required": [ + "FailedPutCount", + "RequestResponses" + ], + "members": { + "FailedPutCount": { + "type": "integer" + }, + "RequestResponses": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RecordId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "UpdateDestination": { + "input": { + "type": "structure", + "required": [ + "DeliveryStreamName", + "CurrentDeliveryStreamVersionId", + "DestinationId" + ], + "members": { + "DeliveryStreamName": {}, + "CurrentDeliveryStreamVersionId": {}, + "DestinationId": {}, + "S3DestinationUpdate": { + "shape": "S23" + }, + "RedshiftDestinationUpdate": { + "type": "structure", + "members": { + "RoleARN": {}, + "ClusterJDBCURL": {}, + "CopyCommand": { + "shape": "Sl" + }, + "Username": { + "shape": "Sp" + }, + "Password": { + "shape": "Sq" + }, + "RetryOptions": { + "shape": "Sr" + }, + "S3Update": { + "shape": "S23" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "ElasticsearchDestinationUpdate": { + "type": "structure", + "members": { + "RoleARN": {}, + "DomainARN": {}, + "IndexName": {}, + "TypeName": {}, + "IndexRotationPeriod": {}, + "BufferingHints": { + "shape": "Sy" + }, + "RetryOptions": { + "shape": "S11" + }, + "S3Update": { + "shape": "S23" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "required": [ + "RoleARN", + "BucketARN" + ], + "members": { + "RoleARN": {}, + "BucketARN": {}, + "Prefix": {}, + "BufferingHints": { + "shape": "S7" + }, + "CompressionFormat": {}, + "EncryptionConfiguration": { + "shape": "Sb" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "S7": { + "type": "structure", + "members": { + "SizeInMBs": { + "type": "integer" + }, + "IntervalInSeconds": { + "type": "integer" + } + } + }, + "Sb": { + "type": "structure", + "members": { + "NoEncryptionConfig": {}, + "KMSEncryptionConfig": { + "type": "structure", + "required": [ + "AWSKMSKeyARN" + ], + "members": { + "AWSKMSKeyARN": {} + } + } + } + }, + "Sf": { + "type": "structure", + "members": { + "Enabled": { + "type": "boolean" + }, + "LogGroupName": {}, + "LogStreamName": {} + } + }, + "Sl": { + "type": "structure", + "required": [ + "DataTableName" + ], + "members": { + "DataTableName": {}, + "DataTableColumns": {}, + "CopyOptions": {} + } + }, + "Sp": { + "type": "string", + "sensitive": true + }, + "Sq": { + "type": "string", + "sensitive": true + }, + "Sr": { + "type": "structure", + "members": { + "DurationInSeconds": { + "type": "integer" + } + } + }, + "Sy": { + "type": "structure", + "members": { + "IntervalInSeconds": { + "type": "integer" + }, + "SizeInMBs": { + "type": "integer" + } + } + }, + "S11": { + "type": "structure", + "members": { + "DurationInSeconds": { + "type": "integer" + } + } + }, + "S1i": { + "type": "structure", + "required": [ + "RoleARN", + "BucketARN", + "BufferingHints", + "CompressionFormat", + "EncryptionConfiguration" + ], + "members": { + "RoleARN": {}, + "BucketARN": {}, + "Prefix": {}, + "BufferingHints": { + "shape": "S7" + }, + "CompressionFormat": {}, + "EncryptionConfiguration": { + "shape": "Sb" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + }, + "S1q": { + "type": "structure", + "required": [ + "Data" + ], + "members": { + "Data": { + "type": "blob" + } + } + }, + "S23": { + "type": "structure", + "members": { + "RoleARN": {}, + "BucketARN": {}, + "Prefix": {}, + "BufferingHints": { + "shape": "S7" + }, + "CompressionFormat": {}, + "EncryptionConfiguration": { + "shape": "Sb" + }, + "CloudWatchLoggingOptions": { + "shape": "Sf" + } + } + } + } +} +},{}],67:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-10-01", + "endpointPrefix": "gamelift", + "jsonVersion": "1.1", + "serviceFullName": "Amazon GameLift", + "signatureVersion": "v4", + "targetPrefix": "GameLift", + "protocol": "json" + }, + "operations": { + "CreateAlias": { + "input": { + "type": "structure", + "required": [ + "Name", + "RoutingStrategy" + ], + "members": { + "Name": {}, + "Description": {}, + "RoutingStrategy": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Alias": { + "shape": "S8" + } + } + } + }, + "CreateBuild": { + "input": { + "type": "structure", + "members": { + "Name": {}, + "Version": {}, + "StorageLocation": { + "shape": "Sc" + }, + "OperatingSystem": {} + } + }, + "output": { + "type": "structure", + "members": { + "Build": { + "shape": "Sg" + }, + "UploadCredentials": { + "shape": "Sk" + }, + "StorageLocation": { + "shape": "Sc" + } + } + } + }, + "CreateFleet": { + "input": { + "type": "structure", + "required": [ + "Name", + "BuildId", + "EC2InstanceType" + ], + "members": { + "Name": {}, + "Description": {}, + "BuildId": {}, + "ServerLaunchPath": {}, + "ServerLaunchParameters": {}, + "LogPaths": { + "shape": "Sm" + }, + "EC2InstanceType": {}, + "EC2InboundPermissions": { + "shape": "So" + }, + "NewGameSessionProtectionPolicy": {}, + "RuntimeConfiguration": { + "shape": "Su" + } + } + }, + "output": { + "type": "structure", + "members": { + "FleetAttributes": { + "shape": "Sz" + } + } + } + }, + "CreateGameSession": { + "input": { + "type": "structure", + "required": [ + "MaximumPlayerSessionCount" + ], + "members": { + "FleetId": {}, + "AliasId": {}, + "MaximumPlayerSessionCount": { + "type": "integer" + }, + "Name": {}, + "GameProperties": { + "shape": "S13" + } + } + }, + "output": { + "type": "structure", + "members": { + "GameSession": { + "shape": "S18" + } + } + } + }, + "CreatePlayerSession": { + "input": { + "type": "structure", + "required": [ + "GameSessionId", + "PlayerId" + ], + "members": { + "GameSessionId": {}, + "PlayerId": {} + } + }, + "output": { + "type": "structure", + "members": { + "PlayerSession": { + "shape": "S1f" + } + } + } + }, + "CreatePlayerSessions": { + "input": { + "type": "structure", + "required": [ + "GameSessionId", + "PlayerIds" + ], + "members": { + "GameSessionId": {}, + "PlayerIds": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "PlayerSessions": { + "shape": "S1l" + } + } + } + }, + "DeleteAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {} + } + } + }, + "DeleteBuild": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {} + } + } + }, + "DeleteFleet": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {} + } + } + }, + "DeleteScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "Name", + "FleetId" + ], + "members": { + "Name": {}, + "FleetId": {} + } + } + }, + "DescribeAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Alias": { + "shape": "S8" + } + } + } + }, + "DescribeBuild": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Build": { + "shape": "Sg" + } + } + } + }, + "DescribeEC2InstanceLimits": { + "input": { + "type": "structure", + "members": { + "EC2InstanceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "EC2InstanceLimits": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EC2InstanceType": {}, + "CurrentInstances": { + "type": "integer" + }, + "InstanceLimit": { + "type": "integer" + } + } + } + } + } + } + }, + "DescribeFleetAttributes": { + "input": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetAttributes": { + "type": "list", + "member": { + "shape": "Sz" + } + }, + "NextToken": {} + } + } + }, + "DescribeFleetCapacity": { + "input": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetCapacity": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FleetId": {}, + "InstanceType": {}, + "InstanceCounts": { + "type": "structure", + "members": { + "DESIRED": { + "type": "integer" + }, + "MINIMUM": { + "type": "integer" + }, + "MAXIMUM": { + "type": "integer" + }, + "PENDING": { + "type": "integer" + }, + "ACTIVE": { + "type": "integer" + }, + "IDLE": { + "type": "integer" + }, + "TERMINATING": { + "type": "integer" + } + } + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeFleetEvents": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EventId": {}, + "ResourceId": {}, + "EventCode": {}, + "Message": {}, + "EventTime": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeFleetPortSettings": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "InboundPermissions": { + "shape": "So" + } + } + } + }, + "DescribeFleetUtilization": { + "input": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetUtilization": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FleetId": {}, + "ActiveServerProcessCount": { + "type": "integer" + }, + "ActiveGameSessionCount": { + "type": "integer" + }, + "CurrentPlayerSessionCount": { + "type": "integer" + }, + "MaximumPlayerSessionCount": { + "type": "integer" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeGameSessionDetails": { + "input": { + "type": "structure", + "members": { + "FleetId": {}, + "GameSessionId": {}, + "AliasId": {}, + "StatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSessionDetails": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GameSession": { + "shape": "S18" + }, + "ProtectionPolicy": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeGameSessions": { + "input": { + "type": "structure", + "members": { + "FleetId": {}, + "GameSessionId": {}, + "AliasId": {}, + "StatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSessions": { + "shape": "S2o" + }, + "NextToken": {} + } + } + }, + "DescribePlayerSessions": { + "input": { + "type": "structure", + "members": { + "GameSessionId": {}, + "PlayerId": {}, + "PlayerSessionId": {}, + "PlayerSessionStatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "PlayerSessions": { + "shape": "S1l" + }, + "NextToken": {} + } + } + }, + "DescribeRuntimeConfiguration": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "RuntimeConfiguration": { + "shape": "Su" + } + } + } + }, + "DescribeScalingPolicies": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "StatusFilter": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ScalingPolicies": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FleetId": {}, + "Name": {}, + "Status": {}, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": {}, + "ComparisonOperator": {}, + "Threshold": { + "type": "double" + }, + "EvaluationPeriods": { + "type": "integer" + }, + "MetricName": {} + } + } + }, + "NextToken": {} + } + } + }, + "GetGameSessionLogUrl": { + "input": { + "type": "structure", + "required": [ + "GameSessionId" + ], + "members": { + "GameSessionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "PreSignedUrl": {} + } + } + }, + "ListAliases": { + "input": { + "type": "structure", + "members": { + "RoutingStrategyType": {}, + "Name": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Aliases": { + "type": "list", + "member": { + "shape": "S8" + } + }, + "NextToken": {} + } + } + }, + "ListBuilds": { + "input": { + "type": "structure", + "members": { + "Status": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Builds": { + "type": "list", + "member": { + "shape": "Sg" + } + }, + "NextToken": {} + } + } + }, + "ListFleets": { + "input": { + "type": "structure", + "members": { + "BuildId": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetIds": { + "shape": "S1z" + }, + "NextToken": {} + } + } + }, + "PutScalingPolicy": { + "input": { + "type": "structure", + "required": [ + "Name", + "FleetId", + "ScalingAdjustment", + "ScalingAdjustmentType", + "Threshold", + "ComparisonOperator", + "EvaluationPeriods", + "MetricName" + ], + "members": { + "Name": {}, + "FleetId": {}, + "ScalingAdjustment": { + "type": "integer" + }, + "ScalingAdjustmentType": {}, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {}, + "EvaluationPeriods": { + "type": "integer" + }, + "MetricName": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {} + } + } + }, + "RequestUploadCredentials": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {} + } + }, + "output": { + "type": "structure", + "members": { + "UploadCredentials": { + "shape": "Sk" + }, + "StorageLocation": { + "shape": "Sc" + } + } + } + }, + "ResolveAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "SearchGameSessions": { + "input": { + "type": "structure", + "members": { + "FleetId": {}, + "AliasId": {}, + "FilterExpression": {}, + "SortExpression": {}, + "Limit": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSessions": { + "shape": "S2o" + }, + "NextToken": {} + } + } + }, + "UpdateAlias": { + "input": { + "type": "structure", + "required": [ + "AliasId" + ], + "members": { + "AliasId": {}, + "Name": {}, + "Description": {}, + "RoutingStrategy": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Alias": { + "shape": "S8" + } + } + } + }, + "UpdateBuild": { + "input": { + "type": "structure", + "required": [ + "BuildId" + ], + "members": { + "BuildId": {}, + "Name": {}, + "Version": {} + } + }, + "output": { + "type": "structure", + "members": { + "Build": { + "shape": "Sg" + } + } + } + }, + "UpdateFleetAttributes": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "Name": {}, + "Description": {}, + "NewGameSessionProtectionPolicy": {} + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "UpdateFleetCapacity": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "DesiredInstances": { + "type": "integer" + }, + "MinSize": { + "type": "integer" + }, + "MaxSize": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "UpdateFleetPortSettings": { + "input": { + "type": "structure", + "required": [ + "FleetId" + ], + "members": { + "FleetId": {}, + "InboundPermissionAuthorizations": { + "shape": "So" + }, + "InboundPermissionRevocations": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "members": { + "FleetId": {} + } + } + }, + "UpdateGameSession": { + "input": { + "type": "structure", + "required": [ + "GameSessionId" + ], + "members": { + "GameSessionId": {}, + "MaximumPlayerSessionCount": { + "type": "integer" + }, + "Name": {}, + "PlayerSessionCreationPolicy": {}, + "ProtectionPolicy": {} + } + }, + "output": { + "type": "structure", + "members": { + "GameSession": { + "shape": "S18" + } + } + } + }, + "UpdateRuntimeConfiguration": { + "input": { + "type": "structure", + "required": [ + "FleetId", + "RuntimeConfiguration" + ], + "members": { + "FleetId": {}, + "RuntimeConfiguration": { + "shape": "Su" + } + } + }, + "output": { + "type": "structure", + "members": { + "RuntimeConfiguration": { + "shape": "Su" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "members": { + "Type": {}, + "FleetId": {}, + "Message": {} + } + }, + "S8": { + "type": "structure", + "members": { + "AliasId": {}, + "Name": {}, + "Description": {}, + "RoutingStrategy": { + "shape": "S3" + }, + "CreationTime": { + "type": "timestamp" + }, + "LastUpdatedTime": { + "type": "timestamp" + } + } + }, + "Sc": { + "type": "structure", + "members": { + "Bucket": {}, + "Key": {}, + "RoleArn": {} + } + }, + "Sg": { + "type": "structure", + "members": { + "BuildId": {}, + "Name": {}, + "Version": {}, + "Status": {}, + "SizeOnDisk": { + "type": "long" + }, + "OperatingSystem": {}, + "CreationTime": { + "type": "timestamp" + } + } + }, + "Sk": { + "type": "structure", + "members": { + "AccessKeyId": {}, + "SecretAccessKey": {}, + "SessionToken": {} + }, + "sensitive": true + }, + "Sm": { + "type": "list", + "member": {} + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "FromPort", + "ToPort", + "IpRange", + "Protocol" + ], + "members": { + "FromPort": { + "type": "integer" + }, + "ToPort": { + "type": "integer" + }, + "IpRange": {}, + "Protocol": {} + } + } + }, + "Su": { + "type": "structure", + "members": { + "ServerProcesses": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "LaunchPath", + "ConcurrentExecutions" + ], + "members": { + "LaunchPath": {}, + "Parameters": {}, + "ConcurrentExecutions": { + "type": "integer" + } + } + } + } + } + }, + "Sz": { + "type": "structure", + "members": { + "FleetId": {}, + "Description": {}, + "Name": {}, + "CreationTime": { + "type": "timestamp" + }, + "TerminationTime": { + "type": "timestamp" + }, + "Status": {}, + "BuildId": {}, + "ServerLaunchPath": {}, + "ServerLaunchParameters": {}, + "LogPaths": { + "shape": "Sm" + }, + "NewGameSessionProtectionPolicy": {}, + "OperatingSystem": {} + } + }, + "S13": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S18": { + "type": "structure", + "members": { + "GameSessionId": {}, + "Name": {}, + "FleetId": {}, + "CreationTime": { + "type": "timestamp" + }, + "TerminationTime": { + "type": "timestamp" + }, + "CurrentPlayerSessionCount": { + "type": "integer" + }, + "MaximumPlayerSessionCount": { + "type": "integer" + }, + "Status": {}, + "GameProperties": { + "shape": "S13" + }, + "IpAddress": {}, + "Port": { + "type": "integer" + }, + "PlayerSessionCreationPolicy": {} + } + }, + "S1f": { + "type": "structure", + "members": { + "PlayerSessionId": {}, + "PlayerId": {}, + "GameSessionId": {}, + "FleetId": {}, + "CreationTime": { + "type": "timestamp" + }, + "TerminationTime": { + "type": "timestamp" + }, + "Status": {}, + "IpAddress": {}, + "Port": { + "type": "integer" + } + } + }, + "S1l": { + "type": "list", + "member": { + "shape": "S1f" + } + }, + "S1z": { + "type": "list", + "member": {} + }, + "S2o": { + "type": "list", + "member": { + "shape": "S18" + } + } + }, + "examples": {} +} +},{}],68:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2016-02-16", + "endpointPrefix": "inspector", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon Inspector", + "signatureVersion": "v4", + "targetPrefix": "InspectorService" + }, + "operations": { + "AddAttributesToFindings": { + "input": { + "type": "structure", + "required": [ + "findingArns", + "attributes" + ], + "members": { + "findingArns": { + "shape": "S2" + }, + "attributes": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "required": [ + "failedItems" + ], + "members": { + "failedItems": { + "shape": "S9" + } + } + } + }, + "CreateAssessmentTarget": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetName", + "resourceGroupArn" + ], + "members": { + "assessmentTargetName": {}, + "resourceGroupArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTargetArn" + ], + "members": { + "assessmentTargetArn": {} + } + } + }, + "CreateAssessmentTemplate": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArn", + "assessmentTemplateName", + "durationInSeconds", + "rulesPackageArns" + ], + "members": { + "assessmentTargetArn": {}, + "assessmentTemplateName": {}, + "durationInSeconds": { + "type": "integer" + }, + "rulesPackageArns": { + "shape": "Sj" + }, + "userAttributesForFindings": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTemplateArn" + ], + "members": { + "assessmentTemplateArn": {} + } + } + }, + "CreateResourceGroup": { + "input": { + "type": "structure", + "required": [ + "resourceGroupTags" + ], + "members": { + "resourceGroupTags": { + "shape": "Sm" + } + } + }, + "output": { + "type": "structure", + "required": [ + "resourceGroupArn" + ], + "members": { + "resourceGroupArn": {} + } + } + }, + "DeleteAssessmentRun": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + } + }, + "DeleteAssessmentTarget": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArn" + ], + "members": { + "assessmentTargetArn": {} + } + } + }, + "DeleteAssessmentTemplate": { + "input": { + "type": "structure", + "required": [ + "assessmentTemplateArn" + ], + "members": { + "assessmentTemplateArn": {} + } + } + }, + "DescribeAssessmentRuns": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArns" + ], + "members": { + "assessmentRunArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRuns", + "failedItems" + ], + "members": { + "assessmentRuns": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "assessmentTemplateArn", + "state", + "durationInSeconds", + "rulesPackageArns", + "userAttributesForFindings", + "createdAt", + "stateChangedAt", + "dataCollected", + "stateChanges", + "notifications" + ], + "members": { + "arn": {}, + "name": {}, + "assessmentTemplateArn": {}, + "state": {}, + "durationInSeconds": { + "type": "integer" + }, + "rulesPackageArns": { + "type": "list", + "member": {} + }, + "userAttributesForFindings": { + "shape": "S4" + }, + "createdAt": { + "type": "timestamp" + }, + "startedAt": { + "type": "timestamp" + }, + "completedAt": { + "type": "timestamp" + }, + "stateChangedAt": { + "type": "timestamp" + }, + "dataCollected": { + "type": "boolean" + }, + "stateChanges": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "stateChangedAt", + "state" + ], + "members": { + "stateChangedAt": { + "type": "timestamp" + }, + "state": {} + } + } + }, + "notifications": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "date", + "event", + "error" + ], + "members": { + "date": { + "type": "timestamp" + }, + "event": {}, + "message": {}, + "error": { + "type": "boolean" + }, + "snsTopicArn": {}, + "snsPublishStatusCode": {} + } + } + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeAssessmentTargets": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArns" + ], + "members": { + "assessmentTargetArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTargets", + "failedItems" + ], + "members": { + "assessmentTargets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "resourceGroupArn", + "createdAt", + "updatedAt" + ], + "members": { + "arn": {}, + "name": {}, + "resourceGroupArn": {}, + "createdAt": { + "type": "timestamp" + }, + "updatedAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeAssessmentTemplates": { + "input": { + "type": "structure", + "required": [ + "assessmentTemplateArns" + ], + "members": { + "assessmentTemplateArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTemplates", + "failedItems" + ], + "members": { + "assessmentTemplates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "assessmentTargetArn", + "durationInSeconds", + "rulesPackageArns", + "userAttributesForFindings", + "createdAt" + ], + "members": { + "arn": {}, + "name": {}, + "assessmentTargetArn": {}, + "durationInSeconds": { + "type": "integer" + }, + "rulesPackageArns": { + "shape": "Sj" + }, + "userAttributesForFindings": { + "shape": "S4" + }, + "createdAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeCrossAccountAccessRole": { + "output": { + "type": "structure", + "required": [ + "roleArn", + "valid", + "registeredAt" + ], + "members": { + "roleArn": {}, + "valid": { + "type": "boolean" + }, + "registeredAt": { + "type": "timestamp" + } + } + } + }, + "DescribeFindings": { + "input": { + "type": "structure", + "required": [ + "findingArns" + ], + "members": { + "findingArns": { + "shape": "Sv" + }, + "locale": {} + } + }, + "output": { + "type": "structure", + "required": [ + "findings", + "failedItems" + ], + "members": { + "findings": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "attributes", + "userAttributes", + "createdAt", + "updatedAt" + ], + "members": { + "arn": {}, + "schemaVersion": { + "type": "integer" + }, + "service": {}, + "serviceAttributes": { + "type": "structure", + "required": [ + "schemaVersion" + ], + "members": { + "schemaVersion": { + "type": "integer" + }, + "assessmentRunArn": {}, + "rulesPackageArn": {} + } + }, + "assetType": {}, + "assetAttributes": { + "type": "structure", + "required": [ + "schemaVersion" + ], + "members": { + "schemaVersion": { + "type": "integer" + }, + "agentId": {}, + "autoScalingGroup": {}, + "amiId": {}, + "hostname": {}, + "ipv4Addresses": { + "type": "list", + "member": {} + } + } + }, + "id": {}, + "title": {}, + "description": {}, + "recommendation": {}, + "severity": {}, + "numericSeverity": { + "type": "double" + }, + "confidence": { + "type": "integer" + }, + "indicatorOfCompromise": { + "type": "boolean" + }, + "attributes": { + "shape": "S24" + }, + "userAttributes": { + "shape": "S4" + }, + "createdAt": { + "type": "timestamp" + }, + "updatedAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeResourceGroups": { + "input": { + "type": "structure", + "required": [ + "resourceGroupArns" + ], + "members": { + "resourceGroupArns": { + "shape": "Sv" + } + } + }, + "output": { + "type": "structure", + "required": [ + "resourceGroups", + "failedItems" + ], + "members": { + "resourceGroups": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "tags", + "createdAt" + ], + "members": { + "arn": {}, + "tags": { + "shape": "Sm" + }, + "createdAt": { + "type": "timestamp" + } + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "DescribeRulesPackages": { + "input": { + "type": "structure", + "required": [ + "rulesPackageArns" + ], + "members": { + "rulesPackageArns": { + "shape": "Sv" + }, + "locale": {} + } + }, + "output": { + "type": "structure", + "required": [ + "rulesPackages", + "failedItems" + ], + "members": { + "rulesPackages": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "arn", + "name", + "version", + "provider" + ], + "members": { + "arn": {}, + "name": {}, + "version": {}, + "provider": {}, + "description": {} + } + } + }, + "failedItems": { + "shape": "S9" + } + } + } + }, + "GetTelemetryMetadata": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "telemetryMetadata" + ], + "members": { + "telemetryMetadata": { + "shape": "S2i" + } + } + } + }, + "ListAssessmentRunAgents": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {}, + "filter": { + "type": "structure", + "required": [ + "agentHealths", + "agentHealthCodes" + ], + "members": { + "agentHealths": { + "type": "list", + "member": {} + }, + "agentHealthCodes": { + "type": "list", + "member": {} + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRunAgents" + ], + "members": { + "assessmentRunAgents": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "agentId", + "assessmentRunArn", + "agentHealth", + "agentHealthCode", + "telemetryMetadata" + ], + "members": { + "agentId": {}, + "assessmentRunArn": {}, + "agentHealth": {}, + "agentHealthCode": {}, + "agentHealthDetails": {}, + "autoScalingGroup": {}, + "telemetryMetadata": { + "shape": "S2i" + } + } + } + }, + "nextToken": {} + } + } + }, + "ListAssessmentRuns": { + "input": { + "type": "structure", + "members": { + "assessmentTemplateArns": { + "shape": "S2y" + }, + "filter": { + "type": "structure", + "members": { + "namePattern": {}, + "states": { + "type": "list", + "member": {} + }, + "durationRange": { + "shape": "S32" + }, + "rulesPackageArns": { + "shape": "S33" + }, + "startTimeRange": { + "shape": "S34" + }, + "completionTimeRange": { + "shape": "S34" + }, + "stateChangeTimeRange": { + "shape": "S34" + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRunArns" + ], + "members": { + "assessmentRunArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListAssessmentTargets": { + "input": { + "type": "structure", + "members": { + "filter": { + "type": "structure", + "members": { + "assessmentTargetNamePattern": {} + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTargetArns" + ], + "members": { + "assessmentTargetArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListAssessmentTemplates": { + "input": { + "type": "structure", + "members": { + "assessmentTargetArns": { + "shape": "S2y" + }, + "filter": { + "type": "structure", + "members": { + "namePattern": {}, + "durationRange": { + "shape": "S32" + }, + "rulesPackageArns": { + "shape": "S33" + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentTemplateArns" + ], + "members": { + "assessmentTemplateArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "resourceArn": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "subscriptions" + ], + "members": { + "subscriptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "resourceArn", + "topicArn", + "eventSubscriptions" + ], + "members": { + "resourceArn": {}, + "topicArn": {}, + "eventSubscriptions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "event", + "subscribedAt" + ], + "members": { + "event": {}, + "subscribedAt": { + "type": "timestamp" + } + } + } + } + } + } + }, + "nextToken": {} + } + } + }, + "ListFindings": { + "input": { + "type": "structure", + "members": { + "assessmentRunArns": { + "shape": "S2y" + }, + "filter": { + "type": "structure", + "members": { + "agentIds": { + "type": "list", + "member": {} + }, + "autoScalingGroups": { + "type": "list", + "member": {} + }, + "ruleNames": { + "type": "list", + "member": {} + }, + "severities": { + "type": "list", + "member": {} + }, + "rulesPackageArns": { + "shape": "S33" + }, + "attributes": { + "shape": "S24" + }, + "userAttributes": { + "shape": "S24" + }, + "creationTimeRange": { + "shape": "S34" + } + } + }, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "findingArns" + ], + "members": { + "findingArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListRulesPackages": { + "input": { + "type": "structure", + "members": { + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "rulesPackageArns" + ], + "members": { + "rulesPackageArns": { + "shape": "S36" + }, + "nextToken": {} + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "resourceArn" + ], + "members": { + "resourceArn": {} + } + }, + "output": { + "type": "structure", + "required": [ + "tags" + ], + "members": { + "tags": { + "shape": "S3w" + } + } + } + }, + "PreviewAgents": { + "input": { + "type": "structure", + "required": [ + "previewAgentsArn" + ], + "members": { + "previewAgentsArn": {}, + "nextToken": {}, + "maxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "agentPreviews" + ], + "members": { + "agentPreviews": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "agentId" + ], + "members": { + "agentId": {}, + "autoScalingGroup": {} + } + } + }, + "nextToken": {} + } + } + }, + "RegisterCrossAccountAccessRole": { + "input": { + "type": "structure", + "required": [ + "roleArn" + ], + "members": { + "roleArn": {} + } + } + }, + "RemoveAttributesFromFindings": { + "input": { + "type": "structure", + "required": [ + "findingArns", + "attributeKeys" + ], + "members": { + "findingArns": { + "shape": "S2" + }, + "attributeKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "required": [ + "failedItems" + ], + "members": { + "failedItems": { + "shape": "S9" + } + } + } + }, + "SetTagsForResource": { + "input": { + "type": "structure", + "required": [ + "resourceArn" + ], + "members": { + "resourceArn": {}, + "tags": { + "shape": "S3w" + } + } + } + }, + "StartAssessmentRun": { + "input": { + "type": "structure", + "required": [ + "assessmentTemplateArn" + ], + "members": { + "assessmentTemplateArn": {}, + "assessmentRunName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + } + }, + "StopAssessmentRun": { + "input": { + "type": "structure", + "required": [ + "assessmentRunArn" + ], + "members": { + "assessmentRunArn": {} + } + } + }, + "SubscribeToEvent": { + "input": { + "type": "structure", + "required": [ + "resourceArn", + "event", + "topicArn" + ], + "members": { + "resourceArn": {}, + "event": {}, + "topicArn": {} + } + } + }, + "UnsubscribeFromEvent": { + "input": { + "type": "structure", + "required": [ + "resourceArn", + "event", + "topicArn" + ], + "members": { + "resourceArn": {}, + "event": {}, + "topicArn": {} + } + } + }, + "UpdateAssessmentTarget": { + "input": { + "type": "structure", + "required": [ + "assessmentTargetArn", + "assessmentTargetName", + "resourceGroupArn" + ], + "members": { + "assessmentTargetArn": {}, + "assessmentTargetName": {}, + "resourceGroupArn": {} + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "S4": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "S5": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "value": {} + } + }, + "S9": { + "type": "map", + "key": {}, + "value": { + "type": "structure", + "required": [ + "failureCode", + "retryable" + ], + "members": { + "failureCode": {}, + "retryable": { + "type": "boolean" + } + } + } + }, + "Sj": { + "type": "list", + "member": {} + }, + "Sm": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "Sv": { + "type": "list", + "member": {} + }, + "S24": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "S2i": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "messageType", + "count" + ], + "members": { + "messageType": {}, + "count": { + "type": "long" + }, + "dataSize": { + "type": "long" + } + } + } + }, + "S2y": { + "type": "list", + "member": {} + }, + "S32": { + "type": "structure", + "members": { + "minSeconds": { + "type": "integer" + }, + "maxSeconds": { + "type": "integer" + } + } + }, + "S33": { + "type": "list", + "member": {} + }, + "S34": { + "type": "structure", + "members": { + "beginDate": { + "type": "timestamp" + }, + "endDate": { + "type": "timestamp" + } + } + }, + "S36": { + "type": "list", + "member": {} + }, + "S3w": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key" + ], + "members": { + "key": {}, + "value": {} + } + } + } + } +} +},{}],69:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-05-28", + "endpointPrefix": "iot", + "serviceFullName": "AWS IoT", + "signatureVersion": "v4", + "signingName": "execute-api", + "protocol": "rest-json" + }, + "operations": { + "AcceptCertificateTransfer": { + "http": { + "method": "PATCH", + "requestUri": "/accept-certificate-transfer/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + } + } + } + }, + "AttachPrincipalPolicy": { + "http": { + "method": "PUT", + "requestUri": "/principal-policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "principal" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-iot-principal" + } + } + } + }, + "AttachThingPrincipal": { + "http": { + "method": "PUT", + "requestUri": "/things/{thingName}/principals" + }, + "input": { + "type": "structure", + "required": [ + "thingName", + "principal" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-principal" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CancelCertificateTransfer": { + "http": { + "method": "PATCH", + "requestUri": "/cancel-certificate-transfer/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + } + } + } + }, + "CreateCertificateFromCsr": { + "http": { + "requestUri": "/certificates" + }, + "input": { + "type": "structure", + "required": [ + "certificateSigningRequest" + ], + "members": { + "certificateSigningRequest": {}, + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "certificatePem": {} + } + } + }, + "CreateKeysAndCertificate": { + "http": { + "requestUri": "/keys-and-certificate" + }, + "input": { + "type": "structure", + "members": { + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "certificatePem": {}, + "keyPair": { + "type": "structure", + "members": { + "PublicKey": {}, + "PrivateKey": { + "type": "string", + "sensitive": true + } + } + } + } + } + }, + "CreatePolicy": { + "http": { + "requestUri": "/policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyDocument" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyDocument": {} + } + }, + "output": { + "type": "structure", + "members": { + "policyName": {}, + "policyArn": {}, + "policyDocument": {}, + "policyVersionId": {} + } + } + }, + "CreatePolicyVersion": { + "http": { + "requestUri": "/policies/{policyName}/version" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyDocument" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyDocument": {}, + "setAsDefault": { + "location": "querystring", + "locationName": "setAsDefault", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyArn": {}, + "policyDocument": {}, + "policyVersionId": {}, + "isDefaultVersion": { + "type": "boolean" + } + } + } + }, + "CreateThing": { + "http": { + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "thingTypeName": {}, + "attributePayload": { + "shape": "Sw" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingName": {}, + "thingArn": {} + } + } + }, + "CreateThingType": { + "http": { + "requestUri": "/thing-types/{thingTypeName}" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + }, + "thingTypeProperties": { + "shape": "S14" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingTypeName": {}, + "thingTypeArn": {} + } + } + }, + "CreateTopicRule": { + "http": { + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "required": [ + "ruleName", + "topicRulePayload" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + }, + "topicRulePayload": { + "shape": "S1b" + } + }, + "payload": "topicRulePayload" + } + }, + "DeleteCACertificate": { + "http": { + "method": "DELETE", + "requestUri": "/cacertificate/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "caCertificateId" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteCertificate": { + "http": { + "method": "DELETE", + "requestUri": "/certificates/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + } + } + } + }, + "DeletePolicy": { + "http": { + "method": "DELETE", + "requestUri": "/policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + } + } + } + }, + "DeletePolicyVersion": { + "http": { + "method": "DELETE", + "requestUri": "/policies/{policyName}/version/{policyVersionId}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyVersionId" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyVersionId": { + "location": "uri", + "locationName": "policyVersionId" + } + } + } + }, + "DeleteRegistrationCode": { + "http": { + "method": "DELETE", + "requestUri": "/registrationcode" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteThing": { + "http": { + "method": "DELETE", + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "expectedVersion": { + "location": "querystring", + "locationName": "expectedVersion", + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteThingType": { + "http": { + "method": "DELETE", + "requestUri": "/thing-types/{thingTypeName}" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTopicRule": { + "http": { + "method": "DELETE", + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + }, + "required": [ + "ruleName" + ] + } + }, + "DeprecateThingType": { + "http": { + "requestUri": "/thing-types/{thingTypeName}/deprecate" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + }, + "undoDeprecate": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeCACertificate": { + "http": { + "method": "GET", + "requestUri": "/cacertificate/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "caCertificateId" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateDescription": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "status": {}, + "certificatePem": {}, + "ownedBy": {}, + "creationDate": { + "type": "timestamp" + }, + "autoRegistrationStatus": {} + } + } + } + } + }, + "DescribeCertificate": { + "http": { + "method": "GET", + "requestUri": "/certificates/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateDescription": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "caCertificateId": {}, + "status": {}, + "certificatePem": {}, + "ownedBy": {}, + "previousOwnedBy": {}, + "creationDate": { + "type": "timestamp" + }, + "lastModifiedDate": { + "type": "timestamp" + }, + "transferData": { + "type": "structure", + "members": { + "transferMessage": {}, + "rejectReason": {}, + "transferDate": { + "type": "timestamp" + }, + "acceptDate": { + "type": "timestamp" + }, + "rejectDate": { + "type": "timestamp" + } + } + } + } + } + } + } + }, + "DescribeEndpoint": { + "http": { + "method": "GET", + "requestUri": "/endpoint" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "endpointAddress": {} + } + } + }, + "DescribeThing": { + "http": { + "method": "GET", + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "members": { + "defaultClientId": {}, + "thingName": {}, + "thingTypeName": {}, + "attributes": { + "shape": "Sx" + }, + "version": { + "type": "long" + } + } + } + }, + "DescribeThingType": { + "http": { + "method": "GET", + "requestUri": "/thing-types/{thingTypeName}" + }, + "input": { + "type": "structure", + "required": [ + "thingTypeName" + ], + "members": { + "thingTypeName": { + "location": "uri", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingTypeName": {}, + "thingTypeProperties": { + "shape": "S14" + }, + "thingTypeMetadata": { + "shape": "S3s" + } + } + } + }, + "DetachPrincipalPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/principal-policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "principal" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-iot-principal" + } + } + } + }, + "DetachThingPrincipal": { + "http": { + "method": "DELETE", + "requestUri": "/things/{thingName}/principals" + }, + "input": { + "type": "structure", + "required": [ + "thingName", + "principal" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-principal" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableTopicRule": { + "http": { + "requestUri": "/rules/{ruleName}/disable" + }, + "input": { + "type": "structure", + "required": [ + "ruleName" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + } + } + }, + "EnableTopicRule": { + "http": { + "requestUri": "/rules/{ruleName}/enable" + }, + "input": { + "type": "structure", + "required": [ + "ruleName" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + } + } + }, + "GetLoggingOptions": { + "http": { + "method": "GET", + "requestUri": "/loggingOptions" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "roleArn": {}, + "logLevel": {} + } + } + }, + "GetPolicy": { + "http": { + "method": "GET", + "requestUri": "/policies/{policyName}" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyName": {}, + "policyArn": {}, + "policyDocument": {}, + "defaultVersionId": {} + } + } + }, + "GetPolicyVersion": { + "http": { + "method": "GET", + "requestUri": "/policies/{policyName}/version/{policyVersionId}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyVersionId" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyVersionId": { + "location": "uri", + "locationName": "policyVersionId" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyArn": {}, + "policyName": {}, + "policyDocument": {}, + "policyVersionId": {}, + "isDefaultVersion": { + "type": "boolean" + } + } + } + }, + "GetRegistrationCode": { + "http": { + "method": "GET", + "requestUri": "/registrationcode" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "registrationCode": {} + } + } + }, + "GetTopicRule": { + "http": { + "method": "GET", + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "required": [ + "ruleName" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + } + } + }, + "output": { + "type": "structure", + "members": { + "ruleArn": {}, + "rule": { + "type": "structure", + "members": { + "ruleName": {}, + "sql": {}, + "description": {}, + "createdAt": { + "type": "timestamp" + }, + "actions": { + "shape": "S1e" + }, + "ruleDisabled": { + "type": "boolean" + }, + "awsIotSqlVersion": {} + } + } + } + } + }, + "ListCACertificates": { + "http": { + "method": "GET", + "requestUri": "/cacertificates" + }, + "input": { + "type": "structure", + "members": { + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "status": {}, + "creationDate": { + "type": "timestamp" + } + } + } + }, + "nextMarker": {} + } + } + }, + "ListCertificates": { + "http": { + "method": "GET", + "requestUri": "/certificates" + }, + "input": { + "type": "structure", + "members": { + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificates": { + "shape": "S4p" + }, + "nextMarker": {} + } + } + }, + "ListCertificatesByCA": { + "http": { + "method": "GET", + "requestUri": "/certificates-by-ca/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "caCertificateId" + ], + "members": { + "caCertificateId": { + "location": "uri", + "locationName": "caCertificateId" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificates": { + "shape": "S4p" + }, + "nextMarker": {} + } + } + }, + "ListOutgoingCertificates": { + "http": { + "method": "GET", + "requestUri": "/certificates-out-going" + }, + "input": { + "type": "structure", + "members": { + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "outgoingCertificates": { + "type": "list", + "member": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "transferredTo": {}, + "transferDate": { + "type": "timestamp" + }, + "transferMessage": {}, + "creationDate": { + "type": "timestamp" + } + } + } + }, + "nextMarker": {} + } + } + }, + "ListPolicies": { + "http": { + "method": "GET", + "requestUri": "/policies" + }, + "input": { + "type": "structure", + "members": { + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "policies": { + "shape": "S4z" + }, + "nextMarker": {} + } + } + }, + "ListPolicyPrincipals": { + "http": { + "method": "GET", + "requestUri": "/policy-principals" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "header", + "locationName": "x-amzn-iot-policy" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "principals": { + "shape": "S53" + }, + "nextMarker": {} + } + } + }, + "ListPolicyVersions": { + "http": { + "method": "GET", + "requestUri": "/policies/{policyName}/version" + }, + "input": { + "type": "structure", + "required": [ + "policyName" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + } + } + }, + "output": { + "type": "structure", + "members": { + "policyVersions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "versionId": {}, + "isDefaultVersion": { + "type": "boolean" + }, + "createDate": { + "type": "timestamp" + } + } + } + } + } + } + }, + "ListPrincipalPolicies": { + "http": { + "method": "GET", + "requestUri": "/principal-policies" + }, + "input": { + "type": "structure", + "required": [ + "principal" + ], + "members": { + "principal": { + "location": "header", + "locationName": "x-amzn-iot-principal" + }, + "marker": { + "location": "querystring", + "locationName": "marker" + }, + "pageSize": { + "location": "querystring", + "locationName": "pageSize", + "type": "integer" + }, + "ascendingOrder": { + "location": "querystring", + "locationName": "isAscendingOrder", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "policies": { + "shape": "S4z" + }, + "nextMarker": {} + } + } + }, + "ListPrincipalThings": { + "http": { + "method": "GET", + "requestUri": "/principals/things" + }, + "input": { + "type": "structure", + "required": [ + "principal" + ], + "members": { + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "principal": { + "location": "header", + "locationName": "x-amzn-principal" + } + } + }, + "output": { + "type": "structure", + "members": { + "things": { + "type": "list", + "member": {} + }, + "nextToken": {} + } + } + }, + "ListThingPrincipals": { + "http": { + "method": "GET", + "requestUri": "/things/{thingName}/principals" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "members": { + "principals": { + "shape": "S53" + } + } + } + }, + "ListThingTypes": { + "http": { + "method": "GET", + "requestUri": "/thing-types" + }, + "input": { + "type": "structure", + "members": { + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "thingTypeName": { + "location": "querystring", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": { + "thingTypes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "thingTypeName": {}, + "thingTypeProperties": { + "shape": "S14" + }, + "thingTypeMetadata": { + "shape": "S3s" + } + } + } + }, + "nextToken": {} + } + } + }, + "ListThings": { + "http": { + "method": "GET", + "requestUri": "/things" + }, + "input": { + "type": "structure", + "members": { + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "attributeName": { + "location": "querystring", + "locationName": "attributeName" + }, + "attributeValue": { + "location": "querystring", + "locationName": "attributeValue" + }, + "thingTypeName": { + "location": "querystring", + "locationName": "thingTypeName" + } + } + }, + "output": { + "type": "structure", + "members": { + "things": { + "type": "list", + "member": { + "type": "structure", + "members": { + "thingName": {}, + "thingTypeName": {}, + "attributes": { + "shape": "Sx" + }, + "version": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "ListTopicRules": { + "http": { + "method": "GET", + "requestUri": "/rules" + }, + "input": { + "type": "structure", + "members": { + "topic": { + "location": "querystring", + "locationName": "topic" + }, + "maxResults": { + "location": "querystring", + "locationName": "maxResults", + "type": "integer" + }, + "nextToken": { + "location": "querystring", + "locationName": "nextToken" + }, + "ruleDisabled": { + "location": "querystring", + "locationName": "ruleDisabled", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "rules": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ruleArn": {}, + "ruleName": {}, + "topicPattern": {}, + "createdAt": { + "type": "timestamp" + }, + "ruleDisabled": { + "type": "boolean" + } + } + } + }, + "nextToken": {} + } + } + }, + "RegisterCACertificate": { + "http": { + "requestUri": "/cacertificate" + }, + "input": { + "type": "structure", + "required": [ + "caCertificate", + "verificationCertificate" + ], + "members": { + "caCertificate": {}, + "verificationCertificate": {}, + "setAsActive": { + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + }, + "allowAutoRegistration": { + "location": "querystring", + "locationName": "allowAutoRegistration", + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {} + } + } + }, + "RegisterCertificate": { + "http": { + "requestUri": "/certificate/register" + }, + "input": { + "type": "structure", + "required": [ + "certificatePem" + ], + "members": { + "certificatePem": {}, + "caCertificatePem": {}, + "setAsActive": { + "deprecated": true, + "location": "querystring", + "locationName": "setAsActive", + "type": "boolean" + }, + "status": {} + } + }, + "output": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {} + } + } + }, + "RejectCertificateTransfer": { + "http": { + "method": "PATCH", + "requestUri": "/reject-certificate-transfer/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "rejectReason": {} + } + } + }, + "ReplaceTopicRule": { + "http": { + "method": "PATCH", + "requestUri": "/rules/{ruleName}" + }, + "input": { + "type": "structure", + "required": [ + "ruleName", + "topicRulePayload" + ], + "members": { + "ruleName": { + "location": "uri", + "locationName": "ruleName" + }, + "topicRulePayload": { + "shape": "S1b" + } + }, + "payload": "topicRulePayload" + } + }, + "SetDefaultPolicyVersion": { + "http": { + "method": "PATCH", + "requestUri": "/policies/{policyName}/version/{policyVersionId}" + }, + "input": { + "type": "structure", + "required": [ + "policyName", + "policyVersionId" + ], + "members": { + "policyName": { + "location": "uri", + "locationName": "policyName" + }, + "policyVersionId": { + "location": "uri", + "locationName": "policyVersionId" + } + } + } + }, + "SetLoggingOptions": { + "http": { + "requestUri": "/loggingOptions" + }, + "input": { + "type": "structure", + "required": [ + "loggingOptionsPayload" + ], + "members": { + "loggingOptionsPayload": { + "type": "structure", + "required": [ + "roleArn" + ], + "members": { + "roleArn": {}, + "logLevel": {} + } + } + }, + "payload": "loggingOptionsPayload" + } + }, + "TransferCertificate": { + "http": { + "method": "PATCH", + "requestUri": "/transfer-certificate/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId", + "targetAwsAccount" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "targetAwsAccount": { + "location": "querystring", + "locationName": "targetAwsAccount" + }, + "transferMessage": {} + } + }, + "output": { + "type": "structure", + "members": { + "transferredCertificateArn": {} + } + } + }, + "UpdateCACertificate": { + "http": { + "method": "PUT", + "requestUri": "/cacertificate/{caCertificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "caCertificateId" + }, + "newStatus": { + "location": "querystring", + "locationName": "newStatus" + }, + "newAutoRegistrationStatus": { + "location": "querystring", + "locationName": "newAutoRegistrationStatus" + } + } + } + }, + "UpdateCertificate": { + "http": { + "method": "PUT", + "requestUri": "/certificates/{certificateId}" + }, + "input": { + "type": "structure", + "required": [ + "certificateId", + "newStatus" + ], + "members": { + "certificateId": { + "location": "uri", + "locationName": "certificateId" + }, + "newStatus": { + "location": "querystring", + "locationName": "newStatus" + } + } + } + }, + "UpdateThing": { + "http": { + "method": "PATCH", + "requestUri": "/things/{thingName}" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "thingTypeName": {}, + "attributePayload": { + "shape": "Sw" + }, + "expectedVersion": { + "type": "long" + }, + "removeThingType": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "Sw": { + "type": "structure", + "members": { + "attributes": { + "shape": "Sx" + }, + "merge": { + "type": "boolean" + } + } + }, + "Sx": { + "type": "map", + "key": {}, + "value": {} + }, + "S14": { + "type": "structure", + "members": { + "thingTypeDescription": {}, + "searchableAttributes": { + "type": "list", + "member": {} + } + } + }, + "S1b": { + "type": "structure", + "required": [ + "sql", + "actions" + ], + "members": { + "sql": {}, + "description": {}, + "actions": { + "shape": "S1e" + }, + "ruleDisabled": { + "type": "boolean" + }, + "awsIotSqlVersion": {} + } + }, + "S1e": { + "type": "list", + "member": { + "type": "structure", + "members": { + "dynamoDB": { + "type": "structure", + "required": [ + "tableName", + "roleArn", + "hashKeyField", + "hashKeyValue" + ], + "members": { + "tableName": {}, + "roleArn": {}, + "operation": {}, + "hashKeyField": {}, + "hashKeyValue": {}, + "hashKeyType": {}, + "rangeKeyField": {}, + "rangeKeyValue": {}, + "rangeKeyType": {}, + "payloadField": {} + } + }, + "lambda": { + "type": "structure", + "required": [ + "functionArn" + ], + "members": { + "functionArn": {} + } + }, + "sns": { + "type": "structure", + "required": [ + "targetArn", + "roleArn" + ], + "members": { + "targetArn": {}, + "roleArn": {}, + "messageFormat": {} + } + }, + "sqs": { + "type": "structure", + "required": [ + "roleArn", + "queueUrl" + ], + "members": { + "roleArn": {}, + "queueUrl": {}, + "useBase64": { + "type": "boolean" + } + } + }, + "kinesis": { + "type": "structure", + "required": [ + "roleArn", + "streamName" + ], + "members": { + "roleArn": {}, + "streamName": {}, + "partitionKey": {} + } + }, + "republish": { + "type": "structure", + "required": [ + "roleArn", + "topic" + ], + "members": { + "roleArn": {}, + "topic": {} + } + }, + "s3": { + "type": "structure", + "required": [ + "roleArn", + "bucketName", + "key" + ], + "members": { + "roleArn": {}, + "bucketName": {}, + "key": {}, + "cannedAcl": {} + } + }, + "firehose": { + "type": "structure", + "required": [ + "roleArn", + "deliveryStreamName" + ], + "members": { + "roleArn": {}, + "deliveryStreamName": {}, + "separator": {} + } + }, + "cloudwatchMetric": { + "type": "structure", + "required": [ + "roleArn", + "metricNamespace", + "metricName", + "metricValue", + "metricUnit" + ], + "members": { + "roleArn": {}, + "metricNamespace": {}, + "metricName": {}, + "metricValue": {}, + "metricUnit": {}, + "metricTimestamp": {} + } + }, + "cloudwatchAlarm": { + "type": "structure", + "required": [ + "roleArn", + "alarmName", + "stateReason", + "stateValue" + ], + "members": { + "roleArn": {}, + "alarmName": {}, + "stateReason": {}, + "stateValue": {} + } + }, + "elasticsearch": { + "type": "structure", + "required": [ + "roleArn", + "endpoint", + "index", + "type", + "id" + ], + "members": { + "roleArn": {}, + "endpoint": {}, + "index": {}, + "type": {}, + "id": {} + } + } + } + } + }, + "S3s": { + "type": "structure", + "members": { + "deprecated": { + "type": "boolean" + }, + "deprecationDate": { + "type": "timestamp" + }, + "creationDate": { + "type": "timestamp" + } + } + }, + "S4p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "certificateArn": {}, + "certificateId": {}, + "status": {}, + "creationDate": { + "type": "timestamp" + } + } + } + }, + "S4z": { + "type": "list", + "member": { + "type": "structure", + "members": { + "policyName": {}, + "policyArn": {} + } + } + }, + "S53": { + "type": "list", + "member": {} + } + }, + "examples": {} +} +},{}],70:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-05-28", + "endpointPrefix": "data.iot", + "protocol": "rest-json", + "serviceFullName": "AWS IoT Data Plane", + "signatureVersion": "v4", + "signingName": "iotdata" + }, + "operations": { + "DeleteThingShadow": { + "http": { + "method": "DELETE", + "requestUri": "/things/{thingName}/shadow" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "required": [ + "payload" + ], + "members": { + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + }, + "GetThingShadow": { + "http": { + "method": "GET", + "requestUri": "/things/{thingName}/shadow" + }, + "input": { + "type": "structure", + "required": [ + "thingName" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + } + } + }, + "output": { + "type": "structure", + "members": { + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + }, + "Publish": { + "http": { + "requestUri": "/topics/{topic}" + }, + "input": { + "type": "structure", + "required": [ + "topic" + ], + "members": { + "topic": { + "location": "uri", + "locationName": "topic" + }, + "qos": { + "location": "querystring", + "locationName": "qos", + "type": "integer" + }, + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + }, + "UpdateThingShadow": { + "http": { + "requestUri": "/things/{thingName}/shadow" + }, + "input": { + "type": "structure", + "required": [ + "thingName", + "payload" + ], + "members": { + "thingName": { + "location": "uri", + "locationName": "thingName" + }, + "payload": { + "type": "blob" + } + }, + "payload": "payload" + }, + "output": { + "type": "structure", + "members": { + "payload": { + "type": "blob" + } + }, + "payload": "payload" + } + } + }, + "shapes": {} +} +},{}],71:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-12-02", + "endpointPrefix": "kinesis", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Kinesis", + "serviceFullName": "Amazon Kinesis", + "signatureVersion": "v4", + "targetPrefix": "Kinesis_20131202" + }, + "operations": { + "AddTagsToStream": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "Tags" + ], + "members": { + "StreamName": {}, + "Tags": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "CreateStream": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardCount" + ], + "members": { + "StreamName": {}, + "ShardCount": { + "type": "integer" + } + } + } + }, + "DecreaseStreamRetentionPeriod": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "RetentionPeriodHours" + ], + "members": { + "StreamName": {}, + "RetentionPeriodHours": { + "type": "integer" + } + } + } + }, + "DeleteStream": { + "input": { + "type": "structure", + "required": [ + "StreamName" + ], + "members": { + "StreamName": {} + } + } + }, + "DescribeStream": { + "input": { + "type": "structure", + "required": [ + "StreamName" + ], + "members": { + "StreamName": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartShardId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "StreamDescription" + ], + "members": { + "StreamDescription": { + "type": "structure", + "required": [ + "StreamName", + "StreamARN", + "StreamStatus", + "Shards", + "HasMoreShards", + "RetentionPeriodHours", + "EnhancedMonitoring" + ], + "members": { + "StreamName": {}, + "StreamARN": {}, + "StreamStatus": {}, + "Shards": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ShardId", + "HashKeyRange", + "SequenceNumberRange" + ], + "members": { + "ShardId": {}, + "ParentShardId": {}, + "AdjacentParentShardId": {}, + "HashKeyRange": { + "type": "structure", + "required": [ + "StartingHashKey", + "EndingHashKey" + ], + "members": { + "StartingHashKey": {}, + "EndingHashKey": {} + } + }, + "SequenceNumberRange": { + "type": "structure", + "required": [ + "StartingSequenceNumber" + ], + "members": { + "StartingSequenceNumber": {}, + "EndingSequenceNumber": {} + } + } + } + } + }, + "HasMoreShards": { + "type": "boolean" + }, + "RetentionPeriodHours": { + "type": "integer" + }, + "EnhancedMonitoring": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ShardLevelMetrics": { + "shape": "Sr" + } + } + } + } + } + } + } + } + }, + "DisableEnhancedMonitoring": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardLevelMetrics" + ], + "members": { + "StreamName": {}, + "ShardLevelMetrics": { + "shape": "Sr" + } + } + }, + "output": { + "shape": "Su" + } + }, + "EnableEnhancedMonitoring": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardLevelMetrics" + ], + "members": { + "StreamName": {}, + "ShardLevelMetrics": { + "shape": "Sr" + } + } + }, + "output": { + "shape": "Su" + } + }, + "GetRecords": { + "input": { + "type": "structure", + "required": [ + "ShardIterator" + ], + "members": { + "ShardIterator": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Records" + ], + "members": { + "Records": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SequenceNumber", + "Data", + "PartitionKey" + ], + "members": { + "SequenceNumber": {}, + "ApproximateArrivalTimestamp": { + "type": "timestamp" + }, + "Data": { + "type": "blob" + }, + "PartitionKey": {} + } + } + }, + "NextShardIterator": {}, + "MillisBehindLatest": { + "type": "long" + } + } + } + }, + "GetShardIterator": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardId", + "ShardIteratorType" + ], + "members": { + "StreamName": {}, + "ShardId": {}, + "ShardIteratorType": {}, + "StartingSequenceNumber": {}, + "Timestamp": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": { + "ShardIterator": {} + } + } + }, + "IncreaseStreamRetentionPeriod": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "RetentionPeriodHours" + ], + "members": { + "StreamName": {}, + "RetentionPeriodHours": { + "type": "integer" + } + } + } + }, + "ListStreams": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "ExclusiveStartStreamName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "StreamNames", + "HasMoreStreams" + ], + "members": { + "StreamNames": { + "type": "list", + "member": {} + }, + "HasMoreStreams": { + "type": "boolean" + } + } + } + }, + "ListTagsForStream": { + "input": { + "type": "structure", + "required": [ + "StreamName" + ], + "members": { + "StreamName": {}, + "ExclusiveStartTagKey": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Tags", + "HasMoreTags" + ], + "members": { + "Tags": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "HasMoreTags": { + "type": "boolean" + } + } + } + }, + "MergeShards": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardToMerge", + "AdjacentShardToMerge" + ], + "members": { + "StreamName": {}, + "ShardToMerge": {}, + "AdjacentShardToMerge": {} + } + } + }, + "PutRecord": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "Data", + "PartitionKey" + ], + "members": { + "StreamName": {}, + "Data": { + "type": "blob" + }, + "PartitionKey": {}, + "ExplicitHashKey": {}, + "SequenceNumberForOrdering": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ShardId", + "SequenceNumber" + ], + "members": { + "ShardId": {}, + "SequenceNumber": {} + } + } + }, + "PutRecords": { + "input": { + "type": "structure", + "required": [ + "Records", + "StreamName" + ], + "members": { + "Records": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Data", + "PartitionKey" + ], + "members": { + "Data": { + "type": "blob" + }, + "ExplicitHashKey": {}, + "PartitionKey": {} + } + } + }, + "StreamName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Records" + ], + "members": { + "FailedRecordCount": { + "type": "integer" + }, + "Records": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SequenceNumber": {}, + "ShardId": {}, + "ErrorCode": {}, + "ErrorMessage": {} + } + } + } + } + } + }, + "RemoveTagsFromStream": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "TagKeys" + ], + "members": { + "StreamName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "SplitShard": { + "input": { + "type": "structure", + "required": [ + "StreamName", + "ShardToSplit", + "NewStartingHashKey" + ], + "members": { + "StreamName": {}, + "ShardToSplit": {}, + "NewStartingHashKey": {} + } + } + } + }, + "shapes": { + "Sr": { + "type": "list", + "member": {} + }, + "Su": { + "type": "structure", + "members": { + "StreamName": {}, + "CurrentShardLevelMetrics": { + "shape": "Sr" + }, + "DesiredShardLevelMetrics": { + "shape": "Sr" + } + } + } + } +} +},{}],72:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeStream": { + "input_token": "ExclusiveStartShardId", + "limit_key": "Limit", + "more_results": "StreamDescription.HasMoreShards", + "output_token": "StreamDescription.Shards[-1].ShardId", + "result_key": "StreamDescription.Shards" + }, + "ListStreams": { + "input_token": "ExclusiveStartStreamName", + "limit_key": "Limit", + "more_results": "HasMoreStreams", + "output_token": "StreamNames[-1]", + "result_key": "StreamNames" + } + } +} + +},{}],73:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "StreamExists": { + "delay": 10, + "operation": "DescribeStream", + "maxAttempts": 18, + "acceptors": [ + { + "expected": "ACTIVE", + "matcher": "path", + "state": "success", + "argument": "StreamDescription.StreamStatus" + } + ] + } + } +} + +},{}],74:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-01", + "endpointPrefix": "kms", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "KMS", + "serviceFullName": "AWS Key Management Service", + "signatureVersion": "v4", + "targetPrefix": "TrentService" + }, + "operations": { + "CancelKeyDeletion": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {} + } + } + }, + "CreateAlias": { + "input": { + "type": "structure", + "required": [ + "AliasName", + "TargetKeyId" + ], + "members": { + "AliasName": {}, + "TargetKeyId": {} + } + } + }, + "CreateGrant": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "GranteePrincipal" + ], + "members": { + "KeyId": {}, + "GranteePrincipal": {}, + "RetiringPrincipal": {}, + "Operations": { + "shape": "S8" + }, + "Constraints": { + "shape": "Sa" + }, + "GrantTokens": { + "shape": "Se" + }, + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "GrantToken": {}, + "GrantId": {} + } + } + }, + "CreateKey": { + "input": { + "type": "structure", + "members": { + "Policy": {}, + "Description": {}, + "KeyUsage": {}, + "Origin": {}, + "BypassPolicyLockoutSafetyCheck": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyMetadata": { + "shape": "Sq" + } + } + } + }, + "Decrypt": { + "input": { + "type": "structure", + "required": [ + "CiphertextBlob" + ], + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "EncryptionContext": { + "shape": "Sb" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {}, + "Plaintext": { + "shape": "Sz" + } + } + } + }, + "DeleteAlias": { + "input": { + "type": "structure", + "required": [ + "AliasName" + ], + "members": { + "AliasName": {} + } + } + }, + "DeleteImportedKeyMaterial": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "DescribeKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyMetadata": { + "shape": "Sq" + } + } + } + }, + "DisableKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "DisableKeyRotation": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "EnableKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "EnableKeyRotation": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + } + }, + "Encrypt": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "Plaintext" + ], + "members": { + "KeyId": {}, + "Plaintext": { + "shape": "Sz" + }, + "EncryptionContext": { + "shape": "Sb" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "KeyId": {} + } + } + }, + "GenerateDataKey": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "EncryptionContext": { + "shape": "Sb" + }, + "NumberOfBytes": { + "type": "integer" + }, + "KeySpec": {}, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "Plaintext": { + "shape": "Sz" + }, + "KeyId": {} + } + } + }, + "GenerateDataKeyWithoutPlaintext": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "EncryptionContext": { + "shape": "Sb" + }, + "KeySpec": {}, + "NumberOfBytes": { + "type": "integer" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "KeyId": {} + } + } + }, + "GenerateRandom": { + "input": { + "type": "structure", + "members": { + "NumberOfBytes": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Plaintext": { + "shape": "Sz" + } + } + } + }, + "GetKeyPolicy": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "PolicyName" + ], + "members": { + "KeyId": {}, + "PolicyName": {} + } + }, + "output": { + "type": "structure", + "members": { + "Policy": {} + } + } + }, + "GetKeyRotationStatus": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyRotationEnabled": { + "type": "boolean" + } + } + } + }, + "GetParametersForImport": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "WrappingAlgorithm", + "WrappingKeySpec" + ], + "members": { + "KeyId": {}, + "WrappingAlgorithm": {}, + "WrappingKeySpec": {} + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {}, + "ImportToken": { + "type": "blob" + }, + "PublicKey": { + "shape": "Sz" + }, + "ParametersValidTo": { + "type": "timestamp" + } + } + } + }, + "ImportKeyMaterial": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "ImportToken", + "EncryptedKeyMaterial" + ], + "members": { + "KeyId": {}, + "ImportToken": { + "type": "blob" + }, + "EncryptedKeyMaterial": { + "type": "blob" + }, + "ValidTo": { + "type": "timestamp" + }, + "ExpirationModel": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ListAliases": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Aliases": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AliasName": {}, + "AliasArn": {}, + "TargetKeyId": {} + } + } + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + }, + "ListGrants": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {}, + "KeyId": {} + } + }, + "output": { + "shape": "S20" + } + }, + "ListKeyPolicies": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "Limit": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "PolicyNames": { + "type": "list", + "member": {} + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + }, + "ListKeys": { + "input": { + "type": "structure", + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "type": "structure", + "members": { + "Keys": { + "type": "list", + "member": { + "type": "structure", + "members": { + "KeyId": {}, + "KeyArn": {} + } + } + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + }, + "ListRetirableGrants": { + "input": { + "type": "structure", + "required": [ + "RetiringPrincipal" + ], + "members": { + "Limit": { + "type": "integer" + }, + "Marker": {}, + "RetiringPrincipal": {} + } + }, + "output": { + "shape": "S20" + } + }, + "PutKeyPolicy": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "PolicyName", + "Policy" + ], + "members": { + "KeyId": {}, + "PolicyName": {}, + "Policy": {}, + "BypassPolicyLockoutSafetyCheck": { + "type": "boolean" + } + } + } + }, + "ReEncrypt": { + "input": { + "type": "structure", + "required": [ + "CiphertextBlob", + "DestinationKeyId" + ], + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "SourceEncryptionContext": { + "shape": "Sb" + }, + "DestinationKeyId": {}, + "DestinationEncryptionContext": { + "shape": "Sb" + }, + "GrantTokens": { + "shape": "Se" + } + } + }, + "output": { + "type": "structure", + "members": { + "CiphertextBlob": { + "type": "blob" + }, + "SourceKeyId": {}, + "KeyId": {} + } + } + }, + "RetireGrant": { + "input": { + "type": "structure", + "members": { + "GrantToken": {}, + "KeyId": {}, + "GrantId": {} + } + } + }, + "RevokeGrant": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "GrantId" + ], + "members": { + "KeyId": {}, + "GrantId": {} + } + } + }, + "ScheduleKeyDeletion": { + "input": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "KeyId": {}, + "PendingWindowInDays": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "KeyId": {}, + "DeletionDate": { + "type": "timestamp" + } + } + } + }, + "UpdateAlias": { + "input": { + "type": "structure", + "required": [ + "AliasName", + "TargetKeyId" + ], + "members": { + "AliasName": {}, + "TargetKeyId": {} + } + } + }, + "UpdateKeyDescription": { + "input": { + "type": "structure", + "required": [ + "KeyId", + "Description" + ], + "members": { + "KeyId": {}, + "Description": {} + } + } + } + }, + "shapes": { + "S8": { + "type": "list", + "member": {} + }, + "Sa": { + "type": "structure", + "members": { + "EncryptionContextSubset": { + "shape": "Sb" + }, + "EncryptionContextEquals": { + "shape": "Sb" + } + } + }, + "Sb": { + "type": "map", + "key": {}, + "value": {} + }, + "Se": { + "type": "list", + "member": {} + }, + "Sq": { + "type": "structure", + "required": [ + "KeyId" + ], + "members": { + "AWSAccountId": {}, + "KeyId": {}, + "Arn": {}, + "CreationDate": { + "type": "timestamp" + }, + "Enabled": { + "type": "boolean" + }, + "Description": {}, + "KeyUsage": {}, + "KeyState": {}, + "DeletionDate": { + "type": "timestamp" + }, + "ValidTo": { + "type": "timestamp" + }, + "Origin": {}, + "ExpirationModel": {} + } + }, + "Sz": { + "type": "blob", + "sensitive": true + }, + "S20": { + "type": "structure", + "members": { + "Grants": { + "type": "list", + "member": { + "type": "structure", + "members": { + "KeyId": {}, + "GrantId": {}, + "Name": {}, + "CreationDate": { + "type": "timestamp" + }, + "GranteePrincipal": {}, + "RetiringPrincipal": {}, + "IssuingAccount": {}, + "Operations": { + "shape": "S8" + }, + "Constraints": { + "shape": "Sa" + } + } + } + }, + "NextMarker": {}, + "Truncated": { + "type": "boolean" + } + } + } + } +} +},{}],75:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListAliases": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "Aliases" + }, + "ListGrants": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "Grants" + }, + "ListKeyPolicies": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "PolicyNames" + }, + "ListKeys": { + "limit_key": "Limit", + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "Truncated", + "result_key": "Keys" + } + } +} + +},{}],76:[function(require,module,exports){ +module.exports={ + "metadata": { + "apiVersion": "2014-11-11", + "endpointPrefix": "lambda", + "serviceFullName": "AWS Lambda", + "signatureVersion": "v4", + "protocol": "rest-json" + }, + "operations": { + "AddEventSource": { + "http": { + "requestUri": "/2014-11-13/event-source-mappings/" + }, + "input": { + "type": "structure", + "required": [ + "EventSource", + "FunctionName", + "Role" + ], + "members": { + "EventSource": {}, + "FunctionName": {}, + "Role": {}, + "BatchSize": { + "type": "integer" + }, + "Parameters": { + "shape": "S6" + } + } + }, + "output": { + "shape": "S7" + } + }, + "DeleteFunction": { + "http": { + "method": "DELETE", + "requestUri": "/2014-11-13/functions/{FunctionName}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + } + } + } + }, + "GetEventSource": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/event-source-mappings/{UUID}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + }, + "output": { + "shape": "S7" + } + }, + "GetFunction": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/functions/{FunctionName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + } + } + }, + "output": { + "type": "structure", + "members": { + "Configuration": { + "shape": "Se" + }, + "Code": { + "type": "structure", + "members": { + "RepositoryType": {}, + "Location": {} + } + } + } + } + }, + "GetFunctionConfiguration": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + } + } + }, + "output": { + "shape": "Se" + } + }, + "InvokeAsync": { + "http": { + "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "InvokeArgs" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "InvokeArgs": { + "shape": "Sq" + } + }, + "payload": "InvokeArgs" + }, + "output": { + "type": "structure", + "members": { + "Status": { + "location": "statusCode", + "type": "integer" + } + } + } + }, + "ListEventSources": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/event-source-mappings/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "EventSourceArn": { + "location": "querystring", + "locationName": "EventSource" + }, + "FunctionName": { + "location": "querystring", + "locationName": "FunctionName" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "EventSources": { + "type": "list", + "member": { + "shape": "S7" + } + } + } + } + }, + "ListFunctions": { + "http": { + "method": "GET", + "requestUri": "/2014-11-13/functions/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Functions": { + "type": "list", + "member": { + "shape": "Se" + } + } + } + } + }, + "RemoveEventSource": { + "http": { + "method": "DELETE", + "requestUri": "/2014-11-13/event-source-mappings/{UUID}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + } + }, + "UpdateFunctionConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Role": { + "location": "querystring", + "locationName": "Role" + }, + "Handler": { + "location": "querystring", + "locationName": "Handler" + }, + "Description": { + "location": "querystring", + "locationName": "Description" + }, + "Timeout": { + "location": "querystring", + "locationName": "Timeout", + "type": "integer" + }, + "MemorySize": { + "location": "querystring", + "locationName": "MemorySize", + "type": "integer" + } + } + }, + "output": { + "shape": "Se" + } + }, + "UploadFunction": { + "http": { + "method": "PUT", + "requestUri": "/2014-11-13/functions/{FunctionName}", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "FunctionZip", + "Runtime", + "Role", + "Handler", + "Mode" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "FunctionZip": { + "shape": "Sq" + }, + "Runtime": { + "location": "querystring", + "locationName": "Runtime" + }, + "Role": { + "location": "querystring", + "locationName": "Role" + }, + "Handler": { + "location": "querystring", + "locationName": "Handler" + }, + "Mode": { + "location": "querystring", + "locationName": "Mode" + }, + "Description": { + "location": "querystring", + "locationName": "Description" + }, + "Timeout": { + "location": "querystring", + "locationName": "Timeout", + "type": "integer" + }, + "MemorySize": { + "location": "querystring", + "locationName": "MemorySize", + "type": "integer" + } + }, + "payload": "FunctionZip" + }, + "output": { + "shape": "Se" + } + } + }, + "shapes": { + "S6": { + "type": "map", + "key": {}, + "value": {} + }, + "S7": { + "type": "structure", + "members": { + "UUID": {}, + "BatchSize": { + "type": "integer" + }, + "EventSource": {}, + "FunctionName": {}, + "Parameters": { + "shape": "S6" + }, + "Role": {}, + "LastModified": { + "type": "timestamp" + }, + "IsActive": { + "type": "boolean" + }, + "Status": {} + } + }, + "Se": { + "type": "structure", + "members": { + "FunctionName": {}, + "FunctionARN": {}, + "ConfigurationId": {}, + "Runtime": {}, + "Role": {}, + "Handler": {}, + "Mode": {}, + "CodeSize": { + "type": "long" + }, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "LastModified": { + "type": "timestamp" + } + } + }, + "Sq": { + "type": "blob", + "streaming": true + } + } +} +},{}],77:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListEventSources": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "EventSources" + }, + "ListFunctions": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "Functions" + } + } +} + +},{}],78:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-03-31", + "endpointPrefix": "lambda", + "protocol": "rest-json", + "serviceFullName": "AWS Lambda", + "signatureVersion": "v4" + }, + "operations": { + "AddPermission": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/policy", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "StatementId", + "Action", + "Principal" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "StatementId": {}, + "Action": {}, + "Principal": {}, + "SourceArn": {}, + "SourceAccount": {}, + "EventSourceToken": {}, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "type": "structure", + "members": { + "Statement": {} + } + } + }, + "CreateAlias": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name", + "FunctionVersion" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": {}, + "FunctionVersion": {}, + "Description": {} + } + }, + "output": { + "shape": "Sg" + } + }, + "CreateEventSourceMapping": { + "http": { + "requestUri": "/2015-03-31/event-source-mappings/", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "EventSourceArn", + "FunctionName", + "StartingPosition" + ], + "members": { + "EventSourceArn": {}, + "FunctionName": {}, + "Enabled": { + "type": "boolean" + }, + "BatchSize": { + "type": "integer" + }, + "StartingPosition": {} + } + }, + "output": { + "shape": "Sm" + } + }, + "CreateFunction": { + "http": { + "requestUri": "/2015-03-31/functions", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Runtime", + "Role", + "Handler", + "Code" + ], + "members": { + "FunctionName": {}, + "Runtime": {}, + "Role": {}, + "Handler": {}, + "Code": { + "type": "structure", + "members": { + "ZipFile": { + "type": "blob" + }, + "S3Bucket": {}, + "S3Key": {}, + "S3ObjectVersion": {} + } + }, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "Publish": { + "type": "boolean" + }, + "VpcConfig": { + "shape": "S10" + } + } + }, + "output": { + "shape": "S15" + } + }, + "DeleteAlias": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": { + "location": "uri", + "locationName": "Name" + } + } + } + }, + "DeleteEventSourceMapping": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/event-source-mappings/{UUID}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + }, + "output": { + "shape": "Sm" + } + }, + "DeleteFunction": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/functions/{FunctionName}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + } + }, + "GetAlias": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": { + "location": "uri", + "locationName": "Name" + } + } + }, + "output": { + "shape": "Sg" + } + }, + "GetEventSourceMapping": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/event-source-mappings/{UUID}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + } + } + }, + "output": { + "shape": "Sm" + } + }, + "GetFunction": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "type": "structure", + "members": { + "Configuration": { + "shape": "S15" + }, + "Code": { + "type": "structure", + "members": { + "RepositoryType": {}, + "Location": {} + } + } + } + } + }, + "GetFunctionConfiguration": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "shape": "S15" + } + }, + "GetPolicy": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/policy", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + }, + "output": { + "type": "structure", + "members": { + "Policy": {} + } + } + }, + "Invoke": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/invocations" + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "InvocationType": { + "location": "header", + "locationName": "X-Amz-Invocation-Type" + }, + "LogType": { + "location": "header", + "locationName": "X-Amz-Log-Type" + }, + "ClientContext": { + "location": "header", + "locationName": "X-Amz-Client-Context" + }, + "Payload": { + "type": "blob" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + }, + "payload": "Payload" + }, + "output": { + "type": "structure", + "members": { + "StatusCode": { + "location": "statusCode", + "type": "integer" + }, + "FunctionError": { + "location": "header", + "locationName": "X-Amz-Function-Error" + }, + "LogResult": { + "location": "header", + "locationName": "X-Amz-Log-Result" + }, + "Payload": { + "type": "blob" + } + }, + "payload": "Payload" + } + }, + "InvokeAsync": { + "http": { + "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "InvokeArgs" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "InvokeArgs": { + "type": "blob", + "streaming": true + } + }, + "deprecated": true, + "payload": "InvokeArgs" + }, + "output": { + "type": "structure", + "members": { + "Status": { + "location": "statusCode", + "type": "integer" + } + }, + "deprecated": true + }, + "deprecated": true + }, + "ListAliases": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "FunctionVersion": { + "location": "querystring", + "locationName": "FunctionVersion" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Aliases": { + "type": "list", + "member": { + "shape": "Sg" + } + } + } + } + }, + "ListEventSourceMappings": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/event-source-mappings/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "EventSourceArn": { + "location": "querystring", + "locationName": "EventSourceArn" + }, + "FunctionName": { + "location": "querystring", + "locationName": "FunctionName" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "EventSourceMappings": { + "type": "list", + "member": { + "shape": "Sm" + } + } + } + } + }, + "ListFunctions": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/", + "responseCode": 200 + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Functions": { + "shape": "S23" + } + } + } + }, + "ListVersionsByFunction": { + "http": { + "method": "GET", + "requestUri": "/2015-03-31/functions/{FunctionName}/versions", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Marker": { + "location": "querystring", + "locationName": "Marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "MaxItems", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Versions": { + "shape": "S23" + } + } + } + }, + "PublishVersion": { + "http": { + "requestUri": "/2015-03-31/functions/{FunctionName}/versions", + "responseCode": 201 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "CodeSha256": {}, + "Description": {} + } + }, + "output": { + "shape": "S15" + } + }, + "RemovePermission": { + "http": { + "method": "DELETE", + "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}", + "responseCode": 204 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "StatementId" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "StatementId": { + "location": "uri", + "locationName": "StatementId" + }, + "Qualifier": { + "location": "querystring", + "locationName": "Qualifier" + } + } + } + }, + "UpdateAlias": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName", + "Name" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Name": { + "location": "uri", + "locationName": "Name" + }, + "FunctionVersion": {}, + "Description": {} + } + }, + "output": { + "shape": "Sg" + } + }, + "UpdateEventSourceMapping": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/event-source-mappings/{UUID}", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "UUID" + ], + "members": { + "UUID": { + "location": "uri", + "locationName": "UUID" + }, + "FunctionName": {}, + "Enabled": { + "type": "boolean" + }, + "BatchSize": { + "type": "integer" + } + } + }, + "output": { + "shape": "Sm" + } + }, + "UpdateFunctionCode": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/functions/{FunctionName}/code", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "ZipFile": { + "type": "blob" + }, + "S3Bucket": {}, + "S3Key": {}, + "S3ObjectVersion": {}, + "Publish": { + "type": "boolean" + } + } + }, + "output": { + "shape": "S15" + } + }, + "UpdateFunctionConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", + "responseCode": 200 + }, + "input": { + "type": "structure", + "required": [ + "FunctionName" + ], + "members": { + "FunctionName": { + "location": "uri", + "locationName": "FunctionName" + }, + "Role": {}, + "Handler": {}, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "VpcConfig": { + "shape": "S10" + }, + "Runtime": {} + } + }, + "output": { + "shape": "S15" + } + } + }, + "shapes": { + "Sg": { + "type": "structure", + "members": { + "AliasArn": {}, + "Name": {}, + "FunctionVersion": {}, + "Description": {} + } + }, + "Sm": { + "type": "structure", + "members": { + "UUID": {}, + "BatchSize": { + "type": "integer" + }, + "EventSourceArn": {}, + "FunctionArn": {}, + "LastModified": { + "type": "timestamp" + }, + "LastProcessingResult": {}, + "State": {}, + "StateTransitionReason": {} + } + }, + "S10": { + "type": "structure", + "members": { + "SubnetIds": { + "shape": "S11" + }, + "SecurityGroupIds": { + "shape": "S13" + } + } + }, + "S11": { + "type": "list", + "member": {} + }, + "S13": { + "type": "list", + "member": {} + }, + "S15": { + "type": "structure", + "members": { + "FunctionName": {}, + "FunctionArn": {}, + "Runtime": {}, + "Role": {}, + "Handler": {}, + "CodeSize": { + "type": "long" + }, + "Description": {}, + "Timeout": { + "type": "integer" + }, + "MemorySize": { + "type": "integer" + }, + "LastModified": {}, + "CodeSha256": {}, + "Version": {}, + "VpcConfig": { + "type": "structure", + "members": { + "SubnetIds": { + "shape": "S11" + }, + "SecurityGroupIds": { + "shape": "S13" + }, + "VpcId": {} + } + } + } + }, + "S23": { + "type": "list", + "member": { + "shape": "S15" + } + } + } +} +},{}],79:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListEventSourceMappings": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "EventSourceMappings" + }, + "ListFunctions": { + "input_token": "Marker", + "output_token": "NextMarker", + "limit_key": "MaxItems", + "result_key": "Functions" + } + } +} + +},{}],80:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-03-28", + "endpointPrefix": "logs", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon CloudWatch Logs", + "signatureVersion": "v4", + "targetPrefix": "Logs_20140328" + }, + "operations": { + "CancelExportTask": { + "input": { + "type": "structure", + "required": [ + "taskId" + ], + "members": { + "taskId": {} + } + } + }, + "CreateExportTask": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "from", + "to", + "destination" + ], + "members": { + "taskName": {}, + "logGroupName": {}, + "logStreamNamePrefix": {}, + "from": { + "type": "long" + }, + "to": { + "type": "long" + }, + "destination": {}, + "destinationPrefix": {} + } + }, + "output": { + "type": "structure", + "members": { + "taskId": {} + } + } + }, + "CreateLogGroup": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {} + } + } + }, + "CreateLogStream": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName" + ], + "members": { + "logGroupName": {}, + "logStreamName": {} + } + } + }, + "DeleteDestination": { + "input": { + "type": "structure", + "required": [ + "destinationName" + ], + "members": { + "destinationName": {} + } + } + }, + "DeleteLogGroup": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {} + } + } + }, + "DeleteLogStream": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName" + ], + "members": { + "logGroupName": {}, + "logStreamName": {} + } + } + }, + "DeleteMetricFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName" + ], + "members": { + "logGroupName": {}, + "filterName": {} + } + } + }, + "DeleteRetentionPolicy": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {} + } + } + }, + "DeleteSubscriptionFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName" + ], + "members": { + "logGroupName": {}, + "filterName": {} + } + } + }, + "DescribeDestinations": { + "input": { + "type": "structure", + "members": { + "DestinationNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "destinations": { + "type": "list", + "member": { + "shape": "Sq" + } + }, + "nextToken": {} + } + } + }, + "DescribeExportTasks": { + "input": { + "type": "structure", + "members": { + "taskId": {}, + "statusCode": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "exportTasks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "taskId": {}, + "taskName": {}, + "logGroupName": {}, + "from": { + "type": "long" + }, + "to": { + "type": "long" + }, + "destination": {}, + "destinationPrefix": {}, + "status": { + "type": "structure", + "members": { + "code": {}, + "message": {} + } + }, + "executionInfo": { + "type": "structure", + "members": { + "creationTime": { + "type": "long" + }, + "completionTime": { + "type": "long" + } + } + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeLogGroups": { + "input": { + "type": "structure", + "members": { + "logGroupNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "logGroups": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logGroupName": {}, + "creationTime": { + "type": "long" + }, + "retentionInDays": { + "type": "integer" + }, + "metricFilterCount": { + "type": "integer" + }, + "arn": {}, + "storedBytes": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeLogStreams": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "logStreamNamePrefix": {}, + "orderBy": {}, + "descending": { + "type": "boolean" + }, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "logStreams": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logStreamName": {}, + "creationTime": { + "type": "long" + }, + "firstEventTimestamp": { + "type": "long" + }, + "lastEventTimestamp": { + "type": "long" + }, + "lastIngestionTime": { + "type": "long" + }, + "uploadSequenceToken": {}, + "arn": {}, + "storedBytes": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeMetricFilters": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "filterNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "metricFilters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "filterName": {}, + "filterPattern": {}, + "metricTransformations": { + "shape": "S1m" + }, + "creationTime": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "DescribeSubscriptionFilters": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "filterNamePrefix": {}, + "nextToken": {}, + "limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "subscriptionFilters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "filterName": {}, + "logGroupName": {}, + "filterPattern": {}, + "destinationArn": {}, + "roleArn": {}, + "creationTime": { + "type": "long" + } + } + } + }, + "nextToken": {} + } + } + }, + "FilterLogEvents": { + "input": { + "type": "structure", + "required": [ + "logGroupName" + ], + "members": { + "logGroupName": {}, + "logStreamNames": { + "type": "list", + "member": {} + }, + "startTime": { + "type": "long" + }, + "endTime": { + "type": "long" + }, + "filterPattern": {}, + "nextToken": {}, + "limit": { + "type": "integer" + }, + "interleaved": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logStreamName": {}, + "timestamp": { + "type": "long" + }, + "message": {}, + "ingestionTime": { + "type": "long" + }, + "eventId": {} + } + } + }, + "searchedLogStreams": { + "type": "list", + "member": { + "type": "structure", + "members": { + "logStreamName": {}, + "searchedCompletely": { + "type": "boolean" + } + } + } + }, + "nextToken": {} + } + } + }, + "GetLogEvents": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName" + ], + "members": { + "logGroupName": {}, + "logStreamName": {}, + "startTime": { + "type": "long" + }, + "endTime": { + "type": "long" + }, + "nextToken": {}, + "limit": { + "type": "integer" + }, + "startFromHead": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "events": { + "type": "list", + "member": { + "type": "structure", + "members": { + "timestamp": { + "type": "long" + }, + "message": {}, + "ingestionTime": { + "type": "long" + } + } + } + }, + "nextForwardToken": {}, + "nextBackwardToken": {} + } + } + }, + "PutDestination": { + "input": { + "type": "structure", + "required": [ + "destinationName", + "targetArn", + "roleArn" + ], + "members": { + "destinationName": {}, + "targetArn": {}, + "roleArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "destination": { + "shape": "Sq" + } + } + } + }, + "PutDestinationPolicy": { + "input": { + "type": "structure", + "required": [ + "destinationName", + "accessPolicy" + ], + "members": { + "destinationName": {}, + "accessPolicy": {} + } + } + }, + "PutLogEvents": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "logStreamName", + "logEvents" + ], + "members": { + "logGroupName": {}, + "logStreamName": {}, + "logEvents": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "timestamp", + "message" + ], + "members": { + "timestamp": { + "type": "long" + }, + "message": {} + } + } + }, + "sequenceToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "nextSequenceToken": {}, + "rejectedLogEventsInfo": { + "type": "structure", + "members": { + "tooNewLogEventStartIndex": { + "type": "integer" + }, + "tooOldLogEventEndIndex": { + "type": "integer" + }, + "expiredLogEventEndIndex": { + "type": "integer" + } + } + } + } + } + }, + "PutMetricFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName", + "filterPattern", + "metricTransformations" + ], + "members": { + "logGroupName": {}, + "filterName": {}, + "filterPattern": {}, + "metricTransformations": { + "shape": "S1m" + } + } + } + }, + "PutRetentionPolicy": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "retentionInDays" + ], + "members": { + "logGroupName": {}, + "retentionInDays": { + "type": "integer" + } + } + } + }, + "PutSubscriptionFilter": { + "input": { + "type": "structure", + "required": [ + "logGroupName", + "filterName", + "filterPattern", + "destinationArn" + ], + "members": { + "logGroupName": {}, + "filterName": {}, + "filterPattern": {}, + "destinationArn": {}, + "roleArn": {} + } + } + }, + "TestMetricFilter": { + "input": { + "type": "structure", + "required": [ + "filterPattern", + "logEventMessages" + ], + "members": { + "filterPattern": {}, + "logEventMessages": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "matches": { + "type": "list", + "member": { + "type": "structure", + "members": { + "eventNumber": { + "type": "long" + }, + "eventMessage": {}, + "extractedValues": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + } + } + }, + "shapes": { + "Sq": { + "type": "structure", + "members": { + "destinationName": {}, + "targetArn": {}, + "roleArn": {}, + "accessPolicy": {}, + "arn": {}, + "creationTime": { + "type": "long" + } + } + }, + "S1m": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "metricName", + "metricNamespace", + "metricValue" + ], + "members": { + "metricName": {}, + "metricNamespace": {}, + "metricValue": {}, + "defaultValue": { + "type": "double" + } + } + } + } + } +} +},{}],81:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeDestinations": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "destinations" + }, + "DescribeLogGroups": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "logGroups" + }, + "DescribeLogStreams": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "logStreams" + }, + "DescribeMetricFilters": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "metricFilters" + }, + "DescribeSubscriptionFilters": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": "subscriptionFilters" + }, + "FilterLogEvents": { + "input_token": "nextToken", + "output_token": "nextToken", + "limit_key": "limit", + "result_key": [ + "events", + "searchedLogStreams" + ] + }, + "GetLogEvents": { + "input_token": "nextToken", + "output_token": "nextForwardToken", + "limit_key": "limit", + "result_key": "events" + } + } +} + +},{}],82:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-12-12", + "endpointPrefix": "machinelearning", + "jsonVersion": "1.1", + "serviceFullName": "Amazon Machine Learning", + "signatureVersion": "v4", + "targetPrefix": "AmazonML_20141212", + "protocol": "json" + }, + "operations": { + "AddTags": { + "input": { + "type": "structure", + "required": [ + "Tags", + "ResourceId", + "ResourceType" + ], + "members": { + "Tags": { + "shape": "S2" + }, + "ResourceId": {}, + "ResourceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {} + } + } + }, + "CreateBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId", + "MLModelId", + "BatchPredictionDataSourceId", + "OutputUri" + ], + "members": { + "BatchPredictionId": {}, + "BatchPredictionName": {}, + "MLModelId": {}, + "BatchPredictionDataSourceId": {}, + "OutputUri": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {} + } + } + }, + "CreateDataSourceFromRDS": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "RDSData", + "RoleARN" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {}, + "RDSData": { + "type": "structure", + "required": [ + "DatabaseInformation", + "SelectSqlQuery", + "DatabaseCredentials", + "S3StagingLocation", + "ResourceRole", + "ServiceRole", + "SubnetId", + "SecurityGroupIds" + ], + "members": { + "DatabaseInformation": { + "shape": "Sf" + }, + "SelectSqlQuery": {}, + "DatabaseCredentials": { + "type": "structure", + "required": [ + "Username", + "Password" + ], + "members": { + "Username": {}, + "Password": {} + } + }, + "S3StagingLocation": {}, + "DataRearrangement": {}, + "DataSchema": {}, + "DataSchemaUri": {}, + "ResourceRole": {}, + "ServiceRole": {}, + "SubnetId": {}, + "SecurityGroupIds": { + "type": "list", + "member": {} + } + } + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "CreateDataSourceFromRedshift": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "DataSpec", + "RoleARN" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {}, + "DataSpec": { + "type": "structure", + "required": [ + "DatabaseInformation", + "SelectSqlQuery", + "DatabaseCredentials", + "S3StagingLocation" + ], + "members": { + "DatabaseInformation": { + "shape": "Sy" + }, + "SelectSqlQuery": {}, + "DatabaseCredentials": { + "type": "structure", + "required": [ + "Username", + "Password" + ], + "members": { + "Username": {}, + "Password": {} + } + }, + "S3StagingLocation": {}, + "DataRearrangement": {}, + "DataSchema": {}, + "DataSchemaUri": {} + } + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "CreateDataSourceFromS3": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "DataSpec" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {}, + "DataSpec": { + "type": "structure", + "required": [ + "DataLocationS3" + ], + "members": { + "DataLocationS3": {}, + "DataRearrangement": {}, + "DataSchema": {}, + "DataSchemaLocationS3": {} + } + }, + "ComputeStatistics": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "CreateEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId", + "MLModelId", + "EvaluationDataSourceId" + ], + "members": { + "EvaluationId": {}, + "EvaluationName": {}, + "MLModelId": {}, + "EvaluationDataSourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {} + } + } + }, + "CreateMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId", + "MLModelType", + "TrainingDataSourceId" + ], + "members": { + "MLModelId": {}, + "MLModelName": {}, + "MLModelType": {}, + "Parameters": { + "shape": "S1d" + }, + "TrainingDataSourceId": {}, + "Recipe": {}, + "RecipeUri": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {} + } + } + }, + "CreateRealtimeEndpoint": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {}, + "RealtimeEndpointInfo": { + "shape": "S1j" + } + } + } + }, + "DeleteBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId" + ], + "members": { + "BatchPredictionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {} + } + } + }, + "DeleteDataSource": { + "input": { + "type": "structure", + "required": [ + "DataSourceId" + ], + "members": { + "DataSourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "DeleteEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId" + ], + "members": { + "EvaluationId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {} + } + } + }, + "DeleteMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {} + } + } + }, + "DeleteRealtimeEndpoint": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {} + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {}, + "RealtimeEndpointInfo": { + "shape": "S1j" + } + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "TagKeys", + "ResourceId", + "ResourceType" + ], + "members": { + "TagKeys": { + "type": "list", + "member": {} + }, + "ResourceId": {}, + "ResourceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {} + } + } + }, + "DescribeBatchPredictions": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "BatchPredictionId": {}, + "MLModelId": {}, + "BatchPredictionDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "OutputUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "TotalRecordCount": { + "type": "long" + }, + "InvalidRecordCount": { + "type": "long" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeDataSources": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DataSourceId": {}, + "DataLocationS3": {}, + "DataRearrangement": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "DataSizeInBytes": { + "type": "long" + }, + "NumberOfFiles": { + "type": "long" + }, + "Name": {}, + "Status": {}, + "Message": {}, + "RedshiftMetadata": { + "shape": "S2i" + }, + "RDSMetadata": { + "shape": "S2j" + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + }, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeEvaluations": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EvaluationId": {}, + "MLModelId": {}, + "EvaluationDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "PerformanceMetrics": { + "shape": "S2q" + }, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeMLModels": { + "input": { + "type": "structure", + "members": { + "FilterVariable": {}, + "EQ": {}, + "GT": {}, + "LT": {}, + "GE": {}, + "LE": {}, + "NE": {}, + "Prefix": {}, + "SortOrder": {}, + "NextToken": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Results": { + "type": "list", + "member": { + "type": "structure", + "members": { + "MLModelId": {}, + "TrainingDataSourceId": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "SizeInBytes": { + "type": "long" + }, + "EndpointInfo": { + "shape": "S1j" + }, + "TrainingParameters": { + "shape": "S1d" + }, + "InputDataLocationS3": {}, + "Algorithm": {}, + "MLModelType": {}, + "ScoreThreshold": { + "type": "float" + }, + "ScoreThresholdLastUpdatedAt": { + "type": "timestamp" + }, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "required": [ + "ResourceId", + "ResourceType" + ], + "members": { + "ResourceId": {}, + "ResourceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "ResourceId": {}, + "ResourceType": {}, + "Tags": { + "shape": "S2" + } + } + } + }, + "GetBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId" + ], + "members": { + "BatchPredictionId": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {}, + "MLModelId": {}, + "BatchPredictionDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "OutputUri": {}, + "LogUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "TotalRecordCount": { + "type": "long" + }, + "InvalidRecordCount": { + "type": "long" + } + } + } + }, + "GetDataSource": { + "input": { + "type": "structure", + "required": [ + "DataSourceId" + ], + "members": { + "DataSourceId": {}, + "Verbose": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {}, + "DataLocationS3": {}, + "DataRearrangement": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "DataSizeInBytes": { + "type": "long" + }, + "NumberOfFiles": { + "type": "long" + }, + "Name": {}, + "Status": {}, + "LogUri": {}, + "Message": {}, + "RedshiftMetadata": { + "shape": "S2i" + }, + "RDSMetadata": { + "shape": "S2j" + }, + "RoleARN": {}, + "ComputeStatistics": { + "type": "boolean" + }, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "DataSourceSchema": {} + } + } + }, + "GetEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId" + ], + "members": { + "EvaluationId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {}, + "MLModelId": {}, + "EvaluationDataSourceId": {}, + "InputDataLocationS3": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "PerformanceMetrics": { + "shape": "S2q" + }, + "LogUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + } + } + } + }, + "GetMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {}, + "Verbose": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {}, + "TrainingDataSourceId": {}, + "CreatedByIamUser": {}, + "CreatedAt": { + "type": "timestamp" + }, + "LastUpdatedAt": { + "type": "timestamp" + }, + "Name": {}, + "Status": {}, + "SizeInBytes": { + "type": "long" + }, + "EndpointInfo": { + "shape": "S1j" + }, + "TrainingParameters": { + "shape": "S1d" + }, + "InputDataLocationS3": {}, + "MLModelType": {}, + "ScoreThreshold": { + "type": "float" + }, + "ScoreThresholdLastUpdatedAt": { + "type": "timestamp" + }, + "LogUri": {}, + "Message": {}, + "ComputeTime": { + "type": "long" + }, + "FinishedAt": { + "type": "timestamp" + }, + "StartedAt": { + "type": "timestamp" + }, + "Recipe": {}, + "Schema": {} + } + } + }, + "Predict": { + "input": { + "type": "structure", + "required": [ + "MLModelId", + "Record", + "PredictEndpoint" + ], + "members": { + "MLModelId": {}, + "Record": { + "type": "map", + "key": {}, + "value": {} + }, + "PredictEndpoint": {} + } + }, + "output": { + "type": "structure", + "members": { + "Prediction": { + "type": "structure", + "members": { + "predictedLabel": {}, + "predictedValue": { + "type": "float" + }, + "predictedScores": { + "type": "map", + "key": {}, + "value": { + "type": "float" + } + }, + "details": { + "type": "map", + "key": {}, + "value": {} + } + } + } + } + } + }, + "UpdateBatchPrediction": { + "input": { + "type": "structure", + "required": [ + "BatchPredictionId", + "BatchPredictionName" + ], + "members": { + "BatchPredictionId": {}, + "BatchPredictionName": {} + } + }, + "output": { + "type": "structure", + "members": { + "BatchPredictionId": {} + } + } + }, + "UpdateDataSource": { + "input": { + "type": "structure", + "required": [ + "DataSourceId", + "DataSourceName" + ], + "members": { + "DataSourceId": {}, + "DataSourceName": {} + } + }, + "output": { + "type": "structure", + "members": { + "DataSourceId": {} + } + } + }, + "UpdateEvaluation": { + "input": { + "type": "structure", + "required": [ + "EvaluationId", + "EvaluationName" + ], + "members": { + "EvaluationId": {}, + "EvaluationName": {} + } + }, + "output": { + "type": "structure", + "members": { + "EvaluationId": {} + } + } + }, + "UpdateMLModel": { + "input": { + "type": "structure", + "required": [ + "MLModelId" + ], + "members": { + "MLModelId": {}, + "MLModelName": {}, + "ScoreThreshold": { + "type": "float" + } + } + }, + "output": { + "type": "structure", + "members": { + "MLModelId": {} + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sf": { + "type": "structure", + "required": [ + "InstanceIdentifier", + "DatabaseName" + ], + "members": { + "InstanceIdentifier": {}, + "DatabaseName": {} + } + }, + "Sy": { + "type": "structure", + "required": [ + "DatabaseName", + "ClusterIdentifier" + ], + "members": { + "DatabaseName": {}, + "ClusterIdentifier": {} + } + }, + "S1d": { + "type": "map", + "key": {}, + "value": {} + }, + "S1j": { + "type": "structure", + "members": { + "PeakRequestsPerSecond": { + "type": "integer" + }, + "CreatedAt": { + "type": "timestamp" + }, + "EndpointUrl": {}, + "EndpointStatus": {} + } + }, + "S2i": { + "type": "structure", + "members": { + "RedshiftDatabase": { + "shape": "Sy" + }, + "DatabaseUserName": {}, + "SelectSqlQuery": {} + } + }, + "S2j": { + "type": "structure", + "members": { + "Database": { + "shape": "Sf" + }, + "DatabaseUserName": {}, + "SelectSqlQuery": {}, + "ResourceRole": {}, + "ServiceRole": {}, + "DataPipelineId": {} + } + }, + "S2q": { + "type": "structure", + "members": { + "Properties": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "examples": {} +} +},{}],83:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeBatchPredictions": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + }, + "DescribeDataSources": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + }, + "DescribeEvaluations": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + }, + "DescribeMLModels": { + "limit_key": "Limit", + "output_token": "NextToken", + "input_token": "NextToken", + "result_key": "Results" + } + } +} + +},{}],84:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "DataSourceAvailable": { + "delay": 30, + "operation": "DescribeDataSources", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + }, + "MLModelAvailable": { + "delay": 30, + "operation": "DescribeMLModels", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + }, + "EvaluationAvailable": { + "delay": 30, + "operation": "DescribeEvaluations", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + }, + "BatchPredictionAvailable": { + "delay": 30, + "operation": "DescribeBatchPredictions", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "COMPLETED", + "matcher": "pathAll", + "state": "success", + "argument": "Results[].Status" + }, + { + "expected": "FAILED", + "matcher": "pathAny", + "state": "failure", + "argument": "Results[].Status" + } + ] + } + } +} + +},{}],85:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-07-01", + "endpointPrefix": "marketplacecommerceanalytics", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Marketplace Commerce Analytics", + "signatureVersion": "v4", + "signingName": "marketplacecommerceanalytics", + "targetPrefix": "MarketplaceCommerceAnalytics20150701" + }, + "operations": { + "GenerateDataSet": { + "input": { + "type": "structure", + "required": [ + "dataSetType", + "dataSetPublicationDate", + "roleNameArn", + "destinationS3BucketName", + "snsTopicArn" + ], + "members": { + "dataSetType": {}, + "dataSetPublicationDate": { + "type": "timestamp" + }, + "roleNameArn": {}, + "destinationS3BucketName": {}, + "destinationS3Prefix": {}, + "snsTopicArn": {}, + "customerDefinedValues": { + "shape": "S8" + } + } + }, + "output": { + "type": "structure", + "members": { + "dataSetRequestId": {} + } + } + }, + "StartSupportDataExport": { + "input": { + "type": "structure", + "required": [ + "dataSetType", + "fromDate", + "roleNameArn", + "destinationS3BucketName", + "snsTopicArn" + ], + "members": { + "dataSetType": {}, + "fromDate": { + "type": "timestamp" + }, + "roleNameArn": {}, + "destinationS3BucketName": {}, + "destinationS3Prefix": {}, + "snsTopicArn": {}, + "customerDefinedValues": { + "shape": "S8" + } + } + }, + "output": { + "type": "structure", + "members": { + "dataSetRequestId": {} + } + } + } + }, + "shapes": { + "S8": { + "type": "map", + "key": {}, + "value": {} + } + } +} +},{}],86:[function(require,module,exports){ +module.exports={ + "acm": { + "name": "ACM", + "cors": true + }, + "apigateway": { + "name": "APIGateway", + "cors": true + }, + "applicationautoscaling": { + "prefix": "application-autoscaling", + "name": "ApplicationAutoScaling", + "cors": true + }, + "autoscaling": { + "name": "AutoScaling", + "cors": true + }, + "cloudformation": { + "name": "CloudFormation", + "cors": true + }, + "cloudfront": { + "name": "CloudFront", + "versions": ["2013-05-12*", "2013-11-11*", "2014-05-31*", "2014-10-21*", "2014-11-06*", "2015-04-17*", "2015-07-27*", "2015-09-17*", "2016-01-13*", "2016-01-28*", "2016-08-01*", "2016-08-20*"], + "cors": true + }, + "cloudhsm": { + "name": "CloudHSM", + "cors": true + }, + "cloudsearch": { + "name": "CloudSearch" + }, + "cloudsearchdomain": { + "name": "CloudSearchDomain" + }, + "cloudtrail": { + "name": "CloudTrail", + "cors": true + }, + "cloudwatch": { + "prefix": "monitoring", + "name": "CloudWatch", + "cors": true + }, + "cloudwatchevents": { + "prefix": "events", + "name": "CloudWatchEvents", + "versions": ["2014-02-03*"], + "cors": true + }, + "cloudwatchlogs": { + "prefix": "logs", + "name": "CloudWatchLogs", + "cors": true + }, + "codecommit": { + "name": "CodeCommit", + "cors": true + }, + "codedeploy": { + "name": "CodeDeploy", + "cors": true + }, + "codepipeline": { + "name": "CodePipeline", + "cors": true + }, + "cognitoidentity": { + "prefix": "cognito-identity", + "name": "CognitoIdentity", + "cors": true + }, + "cognitoidentityserviceprovider": { + "prefix": "cognito-idp", + "name": "CognitoIdentityServiceProvider", + "cors": true + }, + "cognitosync": { + "prefix": "cognito-sync", + "name": "CognitoSync", + "cors": true + }, + "configservice": { + "prefix": "config", + "name": "ConfigService", + "cors": true + }, + "datapipeline": { + "name": "DataPipeline" + }, + "devicefarm": { + "name": "DeviceFarm", + "cors": true + }, + "directconnect": { + "name": "DirectConnect", + "cors": true + }, + "directoryservice": { + "prefix": "ds", + "name": "DirectoryService" + }, + "discovery": { + "name": "Discovery" + }, + "dms": { + "name": "DMS" + }, + "dynamodb": { + "name": "DynamoDB", + "cors": true + }, + "dynamodbstreams": { + "prefix": "streams.dynamodb", + "name": "DynamoDBStreams", + "cors": true + }, + "ec2": { + "name": "EC2", + "versions": ["2013-06-15*", "2013-10-15*", "2014-02-01*", "2014-05-01*", "2014-06-15*", "2014-09-01*", "2014-10-01*", "2015-03-01*", "2015-04-15*", "2015-10-01*", "2016-04-01*"], + "cors": true + }, + "ecr": { + "name": "ECR", + "cors": true + }, + "ecs": { + "name": "ECS", + "cors": true + }, + "efs": { + "prefix": "elasticfilesystem", + "name": "EFS" + }, + "elasticache": { + "name": "ElastiCache", + "versions": ["2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*"], + "cors": true + }, + "elasticbeanstalk": { + "name": "ElasticBeanstalk", + "cors": true + }, + "elb": { + "prefix": "elasticloadbalancing", + "name": "ELB", + "cors": true + }, + "elbv2": { + "prefix": "elasticloadbalancingv2", + "name": "ELBv2", + "cors": true + }, + "emr": { + "prefix": "elasticmapreduce", + "name": "EMR", + "cors": true + }, + "es": { + "name": "ES" + }, + "elastictranscoder": { + "name": "ElasticTranscoder", + "cors": true + }, + "firehose": { + "name": "Firehose", + "cors": true + }, + "gamelift": { + "name": "GameLift", + "cors": true + }, + "glacier": { + "name": "Glacier" + }, + "iam": { + "name": "IAM" + }, + "importexport": { + "name": "ImportExport" + }, + "inspector": { + "name": "Inspector", + "versions": ["2015-08-18*"], + "cors": true + }, + "iot": { + "name": "Iot", + "cors": true + }, + "iotdata": { + "prefix": "iot-data", + "name": "IotData", + "cors": true + }, + "kinesis": { + "name": "Kinesis", + "cors": true + }, + "kinesisanalytics": { + "name": "KinesisAnalytics" + }, + "kms": { + "name": "KMS", + "cors": true + }, + "lambda": { + "name": "Lambda", + "cors": true + }, + "machinelearning": { + "name": "MachineLearning", + "cors": true + }, + "marketplacecommerceanalytics": { + "name": "MarketplaceCommerceAnalytics", + "cors": true + }, + "marketplacemetering": { + "prefix": "meteringmarketplace", + "name": "MarketplaceMetering" + }, + "mobileanalytics": { + "name": "MobileAnalytics", + "cors": true + }, + "opsworks": { + "name": "OpsWorks", + "cors": true + }, + "rds": { + "name": "RDS", + "versions": ["2014-09-01*"], + "cors": true + }, + "redshift": { + "name": "Redshift", + "cors": true + }, + "route53": { + "name": "Route53", + "cors": true + }, + "route53domains": { + "name": "Route53Domains", + "cors": true + }, + "s3": { + "name": "S3", + "dualstackAvailable": true, + "cors": true + }, + "servicecatalog": { + "name": "ServiceCatalog", + "cors": true + }, + "ses": { + "prefix": "email", + "name": "SES", + "cors": true + }, + "simpledb": { + "prefix": "sdb", + "name": "SimpleDB" + }, + "snowball": { + "name": "Snowball" + }, + "sns": { + "name": "SNS", + "cors": true + }, + "sqs": { + "name": "SQS", + "cors": true + }, + "ssm": { + "name": "SSM", + "cors": true + }, + "storagegateway": { + "name": "StorageGateway", + "cors": true + }, + "sts": { + "name": "STS", + "cors": true + }, + "support": { + "name": "Support" + }, + "swf": { + "name": "SWF" + }, + "waf": { + "name": "WAF", + "cors": true + }, + "workspaces": { + "name": "WorkSpaces" + } +} + +},{}],87:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-06-05", + "endpointPrefix": "mobileanalytics", + "serviceFullName": "Amazon Mobile Analytics", + "signatureVersion": "v4", + "protocol": "rest-json" + }, + "operations": { + "PutEvents": { + "http": { + "requestUri": "/2014-06-05/events", + "responseCode": 202 + }, + "input": { + "type": "structure", + "required": [ + "events", + "clientContext" + ], + "members": { + "events": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "eventType", + "timestamp" + ], + "members": { + "eventType": {}, + "timestamp": {}, + "session": { + "type": "structure", + "members": { + "id": {}, + "duration": { + "type": "long" + }, + "startTimestamp": {}, + "stopTimestamp": {} + } + }, + "version": {}, + "attributes": { + "type": "map", + "key": {}, + "value": {} + }, + "metrics": { + "type": "map", + "key": {}, + "value": { + "type": "double" + } + } + } + } + }, + "clientContext": { + "location": "header", + "locationName": "x-amz-Client-Context" + }, + "clientContextEncoding": { + "location": "header", + "locationName": "x-amz-Client-Context-Encoding" + } + } + } + } + }, + "shapes": {} +} +},{}],88:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2010-08-01", + "endpointPrefix": "monitoring", + "protocol": "query", + "serviceAbbreviation": "CloudWatch", + "serviceFullName": "Amazon CloudWatch", + "signatureVersion": "v4", + "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/" + }, + "operations": { + "DeleteAlarms": { + "input": { + "type": "structure", + "required": [ + "AlarmNames" + ], + "members": { + "AlarmNames": { + "shape": "S2" + } + } + } + }, + "DescribeAlarmHistory": { + "input": { + "type": "structure", + "members": { + "AlarmName": {}, + "HistoryItemType": {}, + "StartDate": { + "type": "timestamp" + }, + "EndDate": { + "type": "timestamp" + }, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeAlarmHistoryResult", + "type": "structure", + "members": { + "AlarmHistoryItems": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AlarmName": {}, + "Timestamp": { + "type": "timestamp" + }, + "HistoryItemType": {}, + "HistorySummary": {}, + "HistoryData": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeAlarms": { + "input": { + "type": "structure", + "members": { + "AlarmNames": { + "shape": "S2" + }, + "AlarmNamePrefix": {}, + "StateValue": {}, + "ActionPrefix": {}, + "MaxRecords": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "DescribeAlarmsResult", + "type": "structure", + "members": { + "MetricAlarms": { + "shape": "Sj" + }, + "NextToken": {} + } + } + }, + "DescribeAlarmsForMetric": { + "input": { + "type": "structure", + "required": [ + "MetricName", + "Namespace" + ], + "members": { + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "shape": "Sv" + }, + "Period": { + "type": "integer" + }, + "Unit": {} + } + }, + "output": { + "resultWrapper": "DescribeAlarmsForMetricResult", + "type": "structure", + "members": { + "MetricAlarms": { + "shape": "Sj" + } + } + } + }, + "DisableAlarmActions": { + "input": { + "type": "structure", + "required": [ + "AlarmNames" + ], + "members": { + "AlarmNames": { + "shape": "S2" + } + } + } + }, + "EnableAlarmActions": { + "input": { + "type": "structure", + "required": [ + "AlarmNames" + ], + "members": { + "AlarmNames": { + "shape": "S2" + } + } + } + }, + "GetMetricStatistics": { + "input": { + "type": "structure", + "required": [ + "Namespace", + "MetricName", + "StartTime", + "EndTime", + "Period", + "Statistics" + ], + "members": { + "Namespace": {}, + "MetricName": {}, + "Dimensions": { + "shape": "Sv" + }, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Period": { + "type": "integer" + }, + "Statistics": { + "type": "list", + "member": {} + }, + "Unit": {} + } + }, + "output": { + "resultWrapper": "GetMetricStatisticsResult", + "type": "structure", + "members": { + "Label": {}, + "Datapoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Timestamp": { + "type": "timestamp" + }, + "SampleCount": { + "type": "double" + }, + "Average": { + "type": "double" + }, + "Sum": { + "type": "double" + }, + "Minimum": { + "type": "double" + }, + "Maximum": { + "type": "double" + }, + "Unit": {} + }, + "xmlOrder": [ + "Timestamp", + "SampleCount", + "Average", + "Sum", + "Minimum", + "Maximum", + "Unit" + ] + } + } + } + } + }, + "ListMetrics": { + "input": { + "type": "structure", + "members": { + "Namespace": {}, + "MetricName": {}, + "Dimensions": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Value": {} + } + } + }, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListMetricsResult", + "type": "structure", + "members": { + "Metrics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Namespace": {}, + "MetricName": {}, + "Dimensions": { + "shape": "Sv" + } + }, + "xmlOrder": [ + "Namespace", + "MetricName", + "Dimensions" + ] + } + }, + "NextToken": {} + }, + "xmlOrder": [ + "Metrics", + "NextToken" + ] + } + }, + "PutMetricAlarm": { + "input": { + "type": "structure", + "required": [ + "AlarmName", + "MetricName", + "Namespace", + "Statistic", + "Period", + "EvaluationPeriods", + "Threshold", + "ComparisonOperator" + ], + "members": { + "AlarmName": {}, + "AlarmDescription": {}, + "ActionsEnabled": { + "type": "boolean" + }, + "OKActions": { + "shape": "So" + }, + "AlarmActions": { + "shape": "So" + }, + "InsufficientDataActions": { + "shape": "So" + }, + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "shape": "Sv" + }, + "Period": { + "type": "integer" + }, + "Unit": {}, + "EvaluationPeriods": { + "type": "integer" + }, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {} + } + } + }, + "PutMetricData": { + "input": { + "type": "structure", + "required": [ + "Namespace", + "MetricData" + ], + "members": { + "Namespace": {}, + "MetricData": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "MetricName" + ], + "members": { + "MetricName": {}, + "Dimensions": { + "shape": "Sv" + }, + "Timestamp": { + "type": "timestamp" + }, + "Value": { + "type": "double" + }, + "StatisticValues": { + "type": "structure", + "required": [ + "SampleCount", + "Sum", + "Minimum", + "Maximum" + ], + "members": { + "SampleCount": { + "type": "double" + }, + "Sum": { + "type": "double" + }, + "Minimum": { + "type": "double" + }, + "Maximum": { + "type": "double" + } + } + }, + "Unit": {} + } + } + } + } + } + }, + "SetAlarmState": { + "input": { + "type": "structure", + "required": [ + "AlarmName", + "StateValue", + "StateReason" + ], + "members": { + "AlarmName": {}, + "StateValue": {}, + "StateReason": {}, + "StateReasonData": {} + } + } + } + }, + "shapes": { + "S2": { + "type": "list", + "member": {} + }, + "Sj": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AlarmName": {}, + "AlarmArn": {}, + "AlarmDescription": {}, + "AlarmConfigurationUpdatedTimestamp": { + "type": "timestamp" + }, + "ActionsEnabled": { + "type": "boolean" + }, + "OKActions": { + "shape": "So" + }, + "AlarmActions": { + "shape": "So" + }, + "InsufficientDataActions": { + "shape": "So" + }, + "StateValue": {}, + "StateReason": {}, + "StateReasonData": {}, + "StateUpdatedTimestamp": { + "type": "timestamp" + }, + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "shape": "Sv" + }, + "Period": { + "type": "integer" + }, + "Unit": {}, + "EvaluationPeriods": { + "type": "integer" + }, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {} + }, + "xmlOrder": [ + "AlarmName", + "AlarmArn", + "AlarmDescription", + "AlarmConfigurationUpdatedTimestamp", + "ActionsEnabled", + "OKActions", + "AlarmActions", + "InsufficientDataActions", + "StateValue", + "StateReason", + "StateReasonData", + "StateUpdatedTimestamp", + "MetricName", + "Namespace", + "Statistic", + "Dimensions", + "Period", + "Unit", + "EvaluationPeriods", + "Threshold", + "ComparisonOperator" + ] + } + }, + "So": { + "type": "list", + "member": {} + }, + "Sv": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + }, + "xmlOrder": [ + "Name", + "Value" + ] + } + } + } +} +},{}],89:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeAlarmHistory": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "AlarmHistoryItems" + }, + "DescribeAlarms": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxRecords", + "result_key": "MetricAlarms" + }, + "DescribeAlarmsForMetric": { + "result_key": "MetricAlarms" + }, + "ListMetrics": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Metrics" + } + } +} + +},{}],90:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "AlarmExists": { + "delay": 5, + "maxAttempts": 40, + "operation": "DescribeAlarms", + "acceptors": [ + { + "matcher": "path", + "expected": true, + "argument": "length(MetricAlarms[]) > `0`", + "state": "success" + } + ] + } + } +} + +},{}],91:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-02-18", + "endpointPrefix": "opsworks", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS OpsWorks", + "signatureVersion": "v4", + "targetPrefix": "OpsWorks_20130218" + }, + "operations": { + "AssignInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "LayerIds" + ], + "members": { + "InstanceId": {}, + "LayerIds": { + "shape": "S3" + } + } + } + }, + "AssignVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {}, + "InstanceId": {} + } + } + }, + "AssociateElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {}, + "InstanceId": {} + } + } + }, + "AttachElasticLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "ElasticLoadBalancerName", + "LayerId" + ], + "members": { + "ElasticLoadBalancerName": {}, + "LayerId": {} + } + } + }, + "CloneStack": { + "input": { + "type": "structure", + "required": [ + "SourceStackId", + "ServiceRoleArn" + ], + "members": { + "SourceStackId": {}, + "Name": {}, + "Region": {}, + "VpcId": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "ClonePermissions": { + "type": "boolean" + }, + "CloneAppIds": { + "shape": "S3" + }, + "DefaultRootDeviceType": {}, + "AgentVersion": {} + } + }, + "output": { + "type": "structure", + "members": { + "StackId": {} + } + } + }, + "CreateApp": { + "input": { + "type": "structure", + "required": [ + "StackId", + "Name", + "Type" + ], + "members": { + "StackId": {}, + "Shortname": {}, + "Name": {}, + "Description": {}, + "DataSources": { + "shape": "Si" + }, + "Type": {}, + "AppSource": { + "shape": "Sd" + }, + "Domains": { + "shape": "S3" + }, + "EnableSsl": { + "type": "boolean" + }, + "SslConfiguration": { + "shape": "Sl" + }, + "Attributes": { + "shape": "Sm" + }, + "Environment": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "members": { + "AppId": {} + } + } + }, + "CreateDeployment": { + "input": { + "type": "structure", + "required": [ + "StackId", + "Command" + ], + "members": { + "StackId": {}, + "AppId": {}, + "InstanceIds": { + "shape": "S3" + }, + "LayerIds": { + "shape": "S3" + }, + "Command": { + "shape": "Ss" + }, + "Comment": {}, + "CustomJson": {} + } + }, + "output": { + "type": "structure", + "members": { + "DeploymentId": {} + } + } + }, + "CreateInstance": { + "input": { + "type": "structure", + "required": [ + "StackId", + "LayerIds", + "InstanceType" + ], + "members": { + "StackId": {}, + "LayerIds": { + "shape": "S3" + }, + "InstanceType": {}, + "AutoScalingType": {}, + "Hostname": {}, + "Os": {}, + "AmiId": {}, + "SshKeyName": {}, + "AvailabilityZone": {}, + "VirtualizationType": {}, + "SubnetId": {}, + "Architecture": {}, + "RootDeviceType": {}, + "BlockDeviceMappings": { + "shape": "Sz" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "EbsOptimized": { + "type": "boolean" + }, + "AgentVersion": {}, + "Tenancy": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": {} + } + } + }, + "CreateLayer": { + "input": { + "type": "structure", + "required": [ + "StackId", + "Type", + "Name", + "Shortname" + ], + "members": { + "StackId": {}, + "Type": {}, + "Name": {}, + "Shortname": {}, + "Attributes": { + "shape": "S17" + }, + "CustomInstanceProfileArn": {}, + "CustomJson": {}, + "CustomSecurityGroupIds": { + "shape": "S3" + }, + "Packages": { + "shape": "S3" + }, + "VolumeConfigurations": { + "shape": "S19" + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "CustomRecipes": { + "shape": "S1b" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "shape": "S1c" + } + } + }, + "output": { + "type": "structure", + "members": { + "LayerId": {} + } + } + }, + "CreateStack": { + "input": { + "type": "structure", + "required": [ + "Name", + "Region", + "ServiceRoleArn", + "DefaultInstanceProfileArn" + ], + "members": { + "Name": {}, + "Region": {}, + "VpcId": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "DefaultRootDeviceType": {}, + "AgentVersion": {} + } + }, + "output": { + "type": "structure", + "members": { + "StackId": {} + } + } + }, + "CreateUserProfile": { + "input": { + "type": "structure", + "required": [ + "IamUserArn" + ], + "members": { + "IamUserArn": {}, + "SshUsername": {}, + "SshPublicKey": {}, + "AllowSelfManagement": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "IamUserArn": {} + } + } + }, + "DeleteApp": { + "input": { + "type": "structure", + "required": [ + "AppId" + ], + "members": { + "AppId": {} + } + } + }, + "DeleteInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "DeleteElasticIp": { + "type": "boolean" + }, + "DeleteVolumes": { + "type": "boolean" + } + } + } + }, + "DeleteLayer": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {} + } + } + }, + "DeleteStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + } + }, + "DeleteUserProfile": { + "input": { + "type": "structure", + "required": [ + "IamUserArn" + ], + "members": { + "IamUserArn": {} + } + } + }, + "DeregisterEcsCluster": { + "input": { + "type": "structure", + "required": [ + "EcsClusterArn" + ], + "members": { + "EcsClusterArn": {} + } + } + }, + "DeregisterElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {} + } + } + }, + "DeregisterInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "DeregisterRdsDbInstance": { + "input": { + "type": "structure", + "required": [ + "RdsDbInstanceArn" + ], + "members": { + "RdsDbInstanceArn": {} + } + } + }, + "DeregisterVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {} + } + } + }, + "DescribeAgentVersions": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "ConfigurationManager": { + "shape": "Sa" + } + } + }, + "output": { + "type": "structure", + "members": { + "AgentVersions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Version": {}, + "ConfigurationManager": { + "shape": "Sa" + } + } + } + } + } + } + }, + "DescribeApps": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "AppIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Apps": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AppId": {}, + "StackId": {}, + "Shortname": {}, + "Name": {}, + "Description": {}, + "DataSources": { + "shape": "Si" + }, + "Type": {}, + "AppSource": { + "shape": "Sd" + }, + "Domains": { + "shape": "S3" + }, + "EnableSsl": { + "type": "boolean" + }, + "SslConfiguration": { + "shape": "Sl" + }, + "Attributes": { + "shape": "Sm" + }, + "CreatedAt": {}, + "Environment": { + "shape": "So" + } + } + } + } + } + } + }, + "DescribeCommands": { + "input": { + "type": "structure", + "members": { + "DeploymentId": {}, + "InstanceId": {}, + "CommandIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Commands": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "DeploymentId": {}, + "CreatedAt": {}, + "AcknowledgedAt": {}, + "CompletedAt": {}, + "Status": {}, + "ExitCode": { + "type": "integer" + }, + "LogUrl": {}, + "Type": {} + } + } + } + } + } + }, + "DescribeDeployments": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "AppId": {}, + "DeploymentIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Deployments": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DeploymentId": {}, + "StackId": {}, + "AppId": {}, + "CreatedAt": {}, + "CompletedAt": {}, + "Duration": { + "type": "integer" + }, + "IamUserArn": {}, + "Comment": {}, + "Command": { + "shape": "Ss" + }, + "Status": {}, + "CustomJson": {}, + "InstanceIds": { + "shape": "S3" + } + } + } + } + } + } + }, + "DescribeEcsClusters": { + "input": { + "type": "structure", + "members": { + "EcsClusterArns": { + "shape": "S3" + }, + "StackId": {}, + "NextToken": {}, + "MaxResults": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "EcsClusters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EcsClusterArn": {}, + "EcsClusterName": {}, + "StackId": {}, + "RegisteredAt": {} + } + } + }, + "NextToken": {} + } + } + }, + "DescribeElasticIps": { + "input": { + "type": "structure", + "members": { + "InstanceId": {}, + "StackId": {}, + "Ips": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ElasticIps": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Ip": {}, + "Name": {}, + "Domain": {}, + "Region": {}, + "InstanceId": {} + } + } + } + } + } + }, + "DescribeElasticLoadBalancers": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "LayerIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ElasticLoadBalancers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ElasticLoadBalancerName": {}, + "Region": {}, + "DnsName": {}, + "StackId": {}, + "LayerId": {}, + "VpcId": {}, + "AvailabilityZones": { + "shape": "S3" + }, + "SubnetIds": { + "shape": "S3" + }, + "Ec2InstanceIds": { + "shape": "S3" + } + } + } + } + } + } + }, + "DescribeInstances": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "LayerId": {}, + "InstanceIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Instances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "AgentVersion": {}, + "AmiId": {}, + "Architecture": {}, + "AutoScalingType": {}, + "AvailabilityZone": {}, + "BlockDeviceMappings": { + "shape": "Sz" + }, + "CreatedAt": {}, + "EbsOptimized": { + "type": "boolean" + }, + "Ec2InstanceId": {}, + "EcsClusterArn": {}, + "EcsContainerInstanceArn": {}, + "ElasticIp": {}, + "Hostname": {}, + "InfrastructureClass": {}, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "InstanceId": {}, + "InstanceProfileArn": {}, + "InstanceType": {}, + "LastServiceErrorId": {}, + "LayerIds": { + "shape": "S3" + }, + "Os": {}, + "Platform": {}, + "PrivateDns": {}, + "PrivateIp": {}, + "PublicDns": {}, + "PublicIp": {}, + "RegisteredBy": {}, + "ReportedAgentVersion": {}, + "ReportedOs": { + "type": "structure", + "members": { + "Family": {}, + "Name": {}, + "Version": {} + } + }, + "RootDeviceType": {}, + "RootDeviceVolumeId": {}, + "SecurityGroupIds": { + "shape": "S3" + }, + "SshHostDsaKeyFingerprint": {}, + "SshHostRsaKeyFingerprint": {}, + "SshKeyName": {}, + "StackId": {}, + "Status": {}, + "SubnetId": {}, + "Tenancy": {}, + "VirtualizationType": {} + } + } + } + } + } + }, + "DescribeLayers": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "LayerIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Layers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "LayerId": {}, + "Type": {}, + "Name": {}, + "Shortname": {}, + "Attributes": { + "shape": "S17" + }, + "CustomInstanceProfileArn": {}, + "CustomJson": {}, + "CustomSecurityGroupIds": { + "shape": "S3" + }, + "DefaultSecurityGroupNames": { + "shape": "S3" + }, + "Packages": { + "shape": "S3" + }, + "VolumeConfigurations": { + "shape": "S19" + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "DefaultRecipes": { + "shape": "S1b" + }, + "CustomRecipes": { + "shape": "S1b" + }, + "CreatedAt": {}, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "shape": "S1c" + } + } + } + } + } + } + }, + "DescribeLoadBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "LayerIds" + ], + "members": { + "LayerIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "LoadBasedAutoScalingConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "LayerId": {}, + "Enable": { + "type": "boolean" + }, + "UpScaling": { + "shape": "S30" + }, + "DownScaling": { + "shape": "S30" + } + } + } + } + } + } + }, + "DescribeMyUserProfile": { + "output": { + "type": "structure", + "members": { + "UserProfile": { + "type": "structure", + "members": { + "IamUserArn": {}, + "Name": {}, + "SshUsername": {}, + "SshPublicKey": {} + } + } + } + } + }, + "DescribePermissions": { + "input": { + "type": "structure", + "members": { + "IamUserArn": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Permissions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "IamUserArn": {}, + "AllowSsh": { + "type": "boolean" + }, + "AllowSudo": { + "type": "boolean" + }, + "Level": {} + } + } + } + } + } + }, + "DescribeRaidArrays": { + "input": { + "type": "structure", + "members": { + "InstanceId": {}, + "StackId": {}, + "RaidArrayIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "RaidArrays": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RaidArrayId": {}, + "InstanceId": {}, + "Name": {}, + "RaidLevel": { + "type": "integer" + }, + "NumberOfDisks": { + "type": "integer" + }, + "Size": { + "type": "integer" + }, + "Device": {}, + "MountPoint": {}, + "AvailabilityZone": {}, + "CreatedAt": {}, + "StackId": {}, + "VolumeType": {}, + "Iops": { + "type": "integer" + } + } + } + } + } + } + }, + "DescribeRdsDbInstances": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {}, + "RdsDbInstanceArns": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "RdsDbInstances": { + "type": "list", + "member": { + "type": "structure", + "members": { + "RdsDbInstanceArn": {}, + "DbInstanceIdentifier": {}, + "DbUser": {}, + "DbPassword": {}, + "Region": {}, + "Address": {}, + "Engine": {}, + "StackId": {}, + "MissingOnRds": { + "type": "boolean" + } + } + } + } + } + } + }, + "DescribeServiceErrors": { + "input": { + "type": "structure", + "members": { + "StackId": {}, + "InstanceId": {}, + "ServiceErrorIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "ServiceErrors": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ServiceErrorId": {}, + "StackId": {}, + "InstanceId": {}, + "Type": {}, + "Message": {}, + "CreatedAt": {} + } + } + } + } + } + }, + "DescribeStackProvisioningParameters": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "AgentInstallerUrl": {}, + "Parameters": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "DescribeStackSummary": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "StackSummary": { + "type": "structure", + "members": { + "StackId": {}, + "Name": {}, + "Arn": {}, + "LayersCount": { + "type": "integer" + }, + "AppsCount": { + "type": "integer" + }, + "InstancesCount": { + "type": "structure", + "members": { + "Assigning": { + "type": "integer" + }, + "Booting": { + "type": "integer" + }, + "ConnectionLost": { + "type": "integer" + }, + "Deregistering": { + "type": "integer" + }, + "Online": { + "type": "integer" + }, + "Pending": { + "type": "integer" + }, + "Rebooting": { + "type": "integer" + }, + "Registered": { + "type": "integer" + }, + "Registering": { + "type": "integer" + }, + "Requested": { + "type": "integer" + }, + "RunningSetup": { + "type": "integer" + }, + "SetupFailed": { + "type": "integer" + }, + "ShuttingDown": { + "type": "integer" + }, + "StartFailed": { + "type": "integer" + }, + "Stopped": { + "type": "integer" + }, + "Stopping": { + "type": "integer" + }, + "Terminated": { + "type": "integer" + }, + "Terminating": { + "type": "integer" + }, + "Unassigning": { + "type": "integer" + } + } + } + } + } + } + } + }, + "DescribeStacks": { + "input": { + "type": "structure", + "members": { + "StackIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Stacks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StackId": {}, + "Name": {}, + "Arn": {}, + "Region": {}, + "VpcId": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "CreatedAt": {}, + "DefaultRootDeviceType": {}, + "AgentVersion": {} + } + } + } + } + } + }, + "DescribeTimeBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "InstanceIds" + ], + "members": { + "InstanceIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "TimeBasedAutoScalingConfigurations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "InstanceId": {}, + "AutoScalingSchedule": { + "shape": "S40" + } + } + } + } + } + } + }, + "DescribeUserProfiles": { + "input": { + "type": "structure", + "members": { + "IamUserArns": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "UserProfiles": { + "type": "list", + "member": { + "type": "structure", + "members": { + "IamUserArn": {}, + "Name": {}, + "SshUsername": {}, + "SshPublicKey": {}, + "AllowSelfManagement": { + "type": "boolean" + } + } + } + } + } + } + }, + "DescribeVolumes": { + "input": { + "type": "structure", + "members": { + "InstanceId": {}, + "StackId": {}, + "RaidArrayId": {}, + "VolumeIds": { + "shape": "S3" + } + } + }, + "output": { + "type": "structure", + "members": { + "Volumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeId": {}, + "Ec2VolumeId": {}, + "Name": {}, + "RaidArrayId": {}, + "InstanceId": {}, + "Status": {}, + "Size": { + "type": "integer" + }, + "Device": {}, + "MountPoint": {}, + "Region": {}, + "AvailabilityZone": {}, + "VolumeType": {}, + "Iops": { + "type": "integer" + } + } + } + } + } + } + }, + "DetachElasticLoadBalancer": { + "input": { + "type": "structure", + "required": [ + "ElasticLoadBalancerName", + "LayerId" + ], + "members": { + "ElasticLoadBalancerName": {}, + "LayerId": {} + } + } + }, + "DisassociateElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {} + } + } + }, + "GetHostnameSuggestion": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {} + } + }, + "output": { + "type": "structure", + "members": { + "LayerId": {}, + "Hostname": {} + } + } + }, + "GrantAccess": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "ValidForInMinutes": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TemporaryCredential": { + "type": "structure", + "members": { + "Username": {}, + "Password": {}, + "ValidForInMinutes": { + "type": "integer" + }, + "InstanceId": {} + } + } + } + } + }, + "RebootInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "RegisterEcsCluster": { + "input": { + "type": "structure", + "required": [ + "EcsClusterArn", + "StackId" + ], + "members": { + "EcsClusterArn": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "EcsClusterArn": {} + } + } + }, + "RegisterElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp", + "StackId" + ], + "members": { + "ElasticIp": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ElasticIp": {} + } + } + }, + "RegisterInstance": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {}, + "Hostname": {}, + "PublicIp": {}, + "PrivateIp": {}, + "RsaPublicKey": {}, + "RsaPublicKeyFingerprint": {}, + "InstanceIdentity": { + "type": "structure", + "members": { + "Document": {}, + "Signature": {} + } + } + } + }, + "output": { + "type": "structure", + "members": { + "InstanceId": {} + } + } + }, + "RegisterRdsDbInstance": { + "input": { + "type": "structure", + "required": [ + "StackId", + "RdsDbInstanceArn", + "DbUser", + "DbPassword" + ], + "members": { + "StackId": {}, + "RdsDbInstanceArn": {}, + "DbUser": {}, + "DbPassword": {} + } + } + }, + "RegisterVolume": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "Ec2VolumeId": {}, + "StackId": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeId": {} + } + } + }, + "SetLoadBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {}, + "Enable": { + "type": "boolean" + }, + "UpScaling": { + "shape": "S30" + }, + "DownScaling": { + "shape": "S30" + } + } + } + }, + "SetPermission": { + "input": { + "type": "structure", + "required": [ + "StackId", + "IamUserArn" + ], + "members": { + "StackId": {}, + "IamUserArn": {}, + "AllowSsh": { + "type": "boolean" + }, + "AllowSudo": { + "type": "boolean" + }, + "Level": {} + } + } + }, + "SetTimeBasedAutoScaling": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "AutoScalingSchedule": { + "shape": "S40" + } + } + } + }, + "StartInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "StartStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + } + }, + "StopInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "StopStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {} + } + } + }, + "UnassignInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + } + }, + "UnassignVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {} + } + } + }, + "UpdateApp": { + "input": { + "type": "structure", + "required": [ + "AppId" + ], + "members": { + "AppId": {}, + "Name": {}, + "Description": {}, + "DataSources": { + "shape": "Si" + }, + "Type": {}, + "AppSource": { + "shape": "Sd" + }, + "Domains": { + "shape": "S3" + }, + "EnableSsl": { + "type": "boolean" + }, + "SslConfiguration": { + "shape": "Sl" + }, + "Attributes": { + "shape": "Sm" + }, + "Environment": { + "shape": "So" + } + } + } + }, + "UpdateElasticIp": { + "input": { + "type": "structure", + "required": [ + "ElasticIp" + ], + "members": { + "ElasticIp": {}, + "Name": {} + } + } + }, + "UpdateInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {}, + "LayerIds": { + "shape": "S3" + }, + "InstanceType": {}, + "AutoScalingType": {}, + "Hostname": {}, + "Os": {}, + "AmiId": {}, + "SshKeyName": {}, + "Architecture": {}, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "EbsOptimized": { + "type": "boolean" + }, + "AgentVersion": {} + } + } + }, + "UpdateLayer": { + "input": { + "type": "structure", + "required": [ + "LayerId" + ], + "members": { + "LayerId": {}, + "Name": {}, + "Shortname": {}, + "Attributes": { + "shape": "S17" + }, + "CustomInstanceProfileArn": {}, + "CustomJson": {}, + "CustomSecurityGroupIds": { + "shape": "S3" + }, + "Packages": { + "shape": "S3" + }, + "VolumeConfigurations": { + "shape": "S19" + }, + "EnableAutoHealing": { + "type": "boolean" + }, + "AutoAssignElasticIps": { + "type": "boolean" + }, + "AutoAssignPublicIps": { + "type": "boolean" + }, + "CustomRecipes": { + "shape": "S1b" + }, + "InstallUpdatesOnBoot": { + "type": "boolean" + }, + "UseEbsOptimizedInstances": { + "type": "boolean" + }, + "LifecycleEventConfiguration": { + "shape": "S1c" + } + } + } + }, + "UpdateMyUserProfile": { + "input": { + "type": "structure", + "members": { + "SshPublicKey": {} + } + } + }, + "UpdateRdsDbInstance": { + "input": { + "type": "structure", + "required": [ + "RdsDbInstanceArn" + ], + "members": { + "RdsDbInstanceArn": {}, + "DbUser": {}, + "DbPassword": {} + } + } + }, + "UpdateStack": { + "input": { + "type": "structure", + "required": [ + "StackId" + ], + "members": { + "StackId": {}, + "Name": {}, + "Attributes": { + "shape": "S8" + }, + "ServiceRoleArn": {}, + "DefaultInstanceProfileArn": {}, + "DefaultOs": {}, + "HostnameTheme": {}, + "DefaultAvailabilityZone": {}, + "DefaultSubnetId": {}, + "CustomJson": {}, + "ConfigurationManager": { + "shape": "Sa" + }, + "ChefConfiguration": { + "shape": "Sb" + }, + "UseCustomCookbooks": { + "type": "boolean" + }, + "CustomCookbooksSource": { + "shape": "Sd" + }, + "DefaultSshKeyName": {}, + "DefaultRootDeviceType": {}, + "UseOpsworksSecurityGroups": { + "type": "boolean" + }, + "AgentVersion": {} + } + } + }, + "UpdateUserProfile": { + "input": { + "type": "structure", + "required": [ + "IamUserArn" + ], + "members": { + "IamUserArn": {}, + "SshUsername": {}, + "SshPublicKey": {}, + "AllowSelfManagement": { + "type": "boolean" + } + } + } + }, + "UpdateVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeId" + ], + "members": { + "VolumeId": {}, + "Name": {}, + "MountPoint": {} + } + } + } + }, + "shapes": { + "S3": { + "type": "list", + "member": {} + }, + "S8": { + "type": "map", + "key": {}, + "value": {} + }, + "Sa": { + "type": "structure", + "members": { + "Name": {}, + "Version": {} + } + }, + "Sb": { + "type": "structure", + "members": { + "ManageBerkshelf": { + "type": "boolean" + }, + "BerkshelfVersion": {} + } + }, + "Sd": { + "type": "structure", + "members": { + "Type": {}, + "Url": {}, + "Username": {}, + "Password": {}, + "SshKey": {}, + "Revision": {} + } + }, + "Si": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "Arn": {}, + "DatabaseName": {} + } + } + }, + "Sl": { + "type": "structure", + "required": [ + "Certificate", + "PrivateKey" + ], + "members": { + "Certificate": {}, + "PrivateKey": {}, + "Chain": {} + } + }, + "Sm": { + "type": "map", + "key": {}, + "value": {} + }, + "So": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {}, + "Secure": { + "type": "boolean" + } + } + } + }, + "Ss": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Args": { + "type": "map", + "key": {}, + "value": { + "shape": "S3" + } + } + } + }, + "Sz": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DeviceName": {}, + "NoDevice": {}, + "VirtualName": {}, + "Ebs": { + "type": "structure", + "members": { + "SnapshotId": {}, + "Iops": { + "type": "integer" + }, + "VolumeSize": { + "type": "integer" + }, + "VolumeType": {}, + "DeleteOnTermination": { + "type": "boolean" + } + } + } + } + } + }, + "S17": { + "type": "map", + "key": {}, + "value": {} + }, + "S19": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "MountPoint", + "NumberOfDisks", + "Size" + ], + "members": { + "MountPoint": {}, + "RaidLevel": { + "type": "integer" + }, + "NumberOfDisks": { + "type": "integer" + }, + "Size": { + "type": "integer" + }, + "VolumeType": {}, + "Iops": { + "type": "integer" + } + } + } + }, + "S1b": { + "type": "structure", + "members": { + "Setup": { + "shape": "S3" + }, + "Configure": { + "shape": "S3" + }, + "Deploy": { + "shape": "S3" + }, + "Undeploy": { + "shape": "S3" + }, + "Shutdown": { + "shape": "S3" + } + } + }, + "S1c": { + "type": "structure", + "members": { + "Shutdown": { + "type": "structure", + "members": { + "ExecutionTimeout": { + "type": "integer" + }, + "DelayUntilElbConnectionsDrained": { + "type": "boolean" + } + } + } + } + }, + "S30": { + "type": "structure", + "members": { + "InstanceCount": { + "type": "integer" + }, + "ThresholdsWaitTime": { + "type": "integer" + }, + "IgnoreMetricsTime": { + "type": "integer" + }, + "CpuThreshold": { + "type": "double" + }, + "MemoryThreshold": { + "type": "double" + }, + "LoadThreshold": { + "type": "double" + }, + "Alarms": { + "shape": "S3" + } + } + }, + "S40": { + "type": "structure", + "members": { + "Monday": { + "shape": "S41" + }, + "Tuesday": { + "shape": "S41" + }, + "Wednesday": { + "shape": "S41" + }, + "Thursday": { + "shape": "S41" + }, + "Friday": { + "shape": "S41" + }, + "Saturday": { + "shape": "S41" + }, + "Sunday": { + "shape": "S41" + } + } + }, + "S41": { + "type": "map", + "key": {}, + "value": {} + } + } +} +},{}],92:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeApps": { + "result_key": "Apps" + }, + "DescribeCommands": { + "result_key": "Commands" + }, + "DescribeDeployments": { + "result_key": "Deployments" + }, + "DescribeEcsClusters": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "EcsClusters" + }, + "DescribeElasticIps": { + "result_key": "ElasticIps" + }, + "DescribeElasticLoadBalancers": { + "result_key": "ElasticLoadBalancers" + }, + "DescribeInstances": { + "result_key": "Instances" + }, + "DescribeLayers": { + "result_key": "Layers" + }, + "DescribeLoadBasedAutoScaling": { + "result_key": "LoadBasedAutoScalingConfigurations" + }, + "DescribePermissions": { + "result_key": "Permissions" + }, + "DescribeRaidArrays": { + "result_key": "RaidArrays" + }, + "DescribeServiceErrors": { + "result_key": "ServiceErrors" + }, + "DescribeStacks": { + "result_key": "Stacks" + }, + "DescribeTimeBasedAutoScaling": { + "result_key": "TimeBasedAutoScalingConfigurations" + }, + "DescribeUserProfiles": { + "result_key": "UserProfiles" + }, + "DescribeVolumes": { + "result_key": "Volumes" + } + } +} + +},{}],93:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "AppExists": { + "delay": 1, + "operation": "DescribeApps", + "maxAttempts": 40, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "matcher": "status", + "expected": 400, + "state": "failure" + } + ] + }, + "DeploymentSuccessful": { + "delay": 15, + "operation": "DescribeDeployments", + "maxAttempts": 40, + "description": "Wait until a deployment has completed successfully", + "acceptors": [ + { + "expected": "successful", + "matcher": "pathAll", + "state": "success", + "argument": "Deployments[].Status" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Deployments[].Status" + } + ] + }, + "InstanceOnline": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is online.", + "acceptors": [ + { + "expected": "online", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "shutting_down", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "start_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopped", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminating", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stop_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + }, + "InstanceRegistered": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is registered.", + "acceptors": [ + { + "expected": "registered", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "shutting_down", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopped", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stopping", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminating", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "terminated", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stop_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + }, + "InstanceStopped": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is stopped.", + "acceptors": [ + { + "expected": "stopped", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "booting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "online", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "requested", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "running_setup", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "start_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "stop_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + }, + "InstanceTerminated": { + "delay": 15, + "operation": "DescribeInstances", + "maxAttempts": 40, + "description": "Wait until OpsWorks instance is terminated.", + "acceptors": [ + { + "expected": "terminated", + "matcher": "pathAll", + "state": "success", + "argument": "Instances[].Status" + }, + { + "expected": "ResourceNotFoundException", + "matcher": "error", + "state": "success" + }, + { + "expected": "booting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "online", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "pending", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "requested", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "running_setup", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "setup_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + }, + { + "expected": "start_failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Instances[].Status" + } + ] + } + } +} + +},{}],94:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-01-10", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "AllocatedStorage", + "DBInstanceClass", + "Engine", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "S1c" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1i" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1o" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S25" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S25", + "locationName": "CharacterSet" + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "S1c", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2f" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S11", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2f" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {} + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S1o", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S14", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S3m", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S3o" + } + }, + "wrapper": true + } + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {} + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S2f" + } + } + }, + "output": { + "shape": "S3z", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1i" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sp" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sq" + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1o" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S3m" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2f" + } + } + }, + "output": { + "shape": "S3z", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "Id": {}, + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + } + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "Sv" + }, + "VpcSecurityGroups": { + "shape": "Sx" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S11" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMembership": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + } + }, + "wrapper": true + }, + "Sv": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "Sx": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S11": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S14" + }, + "SubnetStatus": {} + } + } + } + }, + "wrapper": true + }, + "S14": { + "type": "structure", + "members": { + "Name": {}, + "ProvisionedIopsCapable": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S1c": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1i": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1o": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sv" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sx" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {} + }, + "wrapper": true + }, + "S25": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S2f": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S3m": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S3o" + } + }, + "wrapper": true + }, + "S3o": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S3z": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} +},{}],95:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeDBEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBEngineVersions" + }, + "DescribeDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBInstances" + }, + "DescribeDBParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBParameterGroups" + }, + "DescribeDBParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeDBSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSecurityGroups" + }, + "DescribeDBSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSnapshots" + }, + "DescribeDBSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeOptionGroupOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupOptions" + }, + "DescribeOptionGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupsList" + }, + "DescribeOrderableDBInstanceOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableDBInstanceOptions" + }, + "DescribeReservedDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstances" + }, + "DescribeReservedDBInstancesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstancesOfferings" + }, + "ListTagsForResource": { + "result_key": "TagList" + } + } +} + +},{}],96:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-02-12", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "AllocatedStorage", + "DBInstanceClass", + "Engine", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "S1d" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1j" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {} + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1p" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S28" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S28", + "locationName": "CharacterSet" + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBLogFiles": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "FilenameContains": {}, + "FileLastWritten": { + "type": "long" + }, + "FileSize": { + "type": "long" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBLogFilesResult", + "type": "structure", + "members": { + "DescribeDBLogFiles": { + "type": "list", + "member": { + "locationName": "DescribeDBLogFilesDetails", + "type": "structure", + "members": { + "LogFileName": {}, + "LastWritten": { + "type": "long" + }, + "Size": { + "type": "long" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "S1d", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2n" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S11", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2n" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {} + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + }, + "Persistent": { + "type": "boolean" + }, + "OptionGroupOptionSettings": { + "type": "list", + "member": { + "locationName": "OptionGroupOptionSetting", + "type": "structure", + "members": { + "SettingName": {}, + "SettingDescription": {}, + "DefaultValue": {}, + "ApplyType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + } + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S1p", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S14", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S3w", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S3y" + } + }, + "wrapper": true + } + } + } + } + }, + "DownloadDBLogFilePortion": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "LogFileName" + ], + "members": { + "DBInstanceIdentifier": {}, + "LogFileName": {}, + "Marker": {}, + "NumberOfLines": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DownloadDBLogFilePortionResult", + "type": "structure", + "members": { + "LogFileData": {}, + "Marker": {}, + "AdditionalDataPending": { + "type": "boolean" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {} + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S2n" + } + } + }, + "output": { + "shape": "S4b", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1j" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sp" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sq" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1t", + "locationName": "OptionSetting" + } + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1p" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S3w" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2n" + } + } + }, + "output": { + "shape": "S4b", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {} + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "Sv" + }, + "VpcSecurityGroups": { + "shape": "Sx" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S11" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "OptionGroupMembership", + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + } + }, + "wrapper": true + }, + "Sv": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "Sx": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S11": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S14" + }, + "SubnetStatus": {} + } + } + } + }, + "wrapper": true + }, + "S14": { + "type": "structure", + "members": { + "Name": {}, + "ProvisionedIopsCapable": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S1d": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1j": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1p": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Persistent": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1t", + "locationName": "OptionSetting" + } + }, + "DBSecurityGroupMemberships": { + "shape": "Sv" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sx" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {} + }, + "wrapper": true + }, + "S1t": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "DefaultValue": {}, + "Description": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "IsCollection": { + "type": "boolean" + } + } + }, + "S28": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S2n": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S3w": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S3y" + } + }, + "wrapper": true + }, + "S3y": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S4b": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} +},{}],97:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeDBEngineVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBEngineVersions" + }, + "DescribeDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBInstances" + }, + "DescribeDBLogFiles": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DescribeDBLogFiles" + }, + "DescribeDBParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBParameterGroups" + }, + "DescribeDBParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeDBSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSecurityGroups" + }, + "DescribeDBSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSnapshots" + }, + "DescribeDBSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "DBSubnetGroups" + }, + "DescribeEngineDefaultParameters": { + "input_token": "Marker", + "output_token": "EngineDefaults.Marker", + "limit_key": "MaxRecords", + "result_key": "EngineDefaults.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeOptionGroupOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupOptions" + }, + "DescribeOptionGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OptionGroupsList" + }, + "DescribeOrderableDBInstanceOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableDBInstanceOptions" + }, + "DescribeReservedDBInstances": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstances" + }, + "DescribeReservedDBInstancesOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedDBInstancesOfferings" + }, + "DownloadDBLogFilePortion": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "NumberOfLines", + "more_results": "AdditionalDataPending", + "result_key": "LogFileData" + }, + "ListTagsForResource": { + "result_key": "TagList" + } + } +} + +},{}],98:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-09-09", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "AllocatedStorage", + "DBInstanceClass", + "Engine", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "DBSubnetGroupName": {} + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "S1f" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1l" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1r" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "Sk" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S2d" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S2d", + "locationName": "CharacterSet" + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBLogFiles": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "FilenameContains": {}, + "FileLastWritten": { + "type": "long" + }, + "FileSize": { + "type": "long" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBLogFilesResult", + "type": "structure", + "members": { + "DescribeDBLogFiles": { + "type": "list", + "member": { + "locationName": "DescribeDBLogFilesDetails", + "type": "structure", + "members": { + "LogFileName": {}, + "LastWritten": { + "type": "long" + }, + "Size": { + "type": "long" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "S1f", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2s" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "Sk", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S11", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2s" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {}, + "Filters": { + "shape": "S27" + } + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + } + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + }, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "OptionGroupOptionSettings": { + "type": "list", + "member": { + "locationName": "OptionGroupOptionSetting", + "type": "structure", + "members": { + "SettingName": {}, + "SettingDescription": {}, + "DefaultValue": {}, + "ApplyType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + } + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Filters": { + "shape": "S27" + }, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S1r", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S14", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S41", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S27" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S43" + } + }, + "wrapper": true + } + } + } + } + }, + "DownloadDBLogFilePortion": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "LogFileName" + ], + "members": { + "DBInstanceIdentifier": {}, + "LogFileName": {}, + "Marker": {}, + "NumberOfLines": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DownloadDBLogFilePortionResult", + "type": "structure", + "members": { + "LogFileData": {}, + "Marker": {}, + "AdditionalDataPending": { + "type": "boolean" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {}, + "Filters": { + "shape": "S27" + } + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S2s" + } + } + }, + "output": { + "shape": "S4g", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S1l" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S11" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "DBSecurityGroupMemberships": { + "shape": "Sp" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sq" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1v", + "locationName": "OptionSetting" + } + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S1r" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S41" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2s" + } + } + }, + "output": { + "shape": "S4g", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "St" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sd" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + } + }, + "wrapper": true + }, + "Sk": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PercentProgress": { + "type": "integer" + }, + "SourceRegion": {} + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "Sv" + }, + "VpcSecurityGroups": { + "shape": "Sx" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S11" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "OptionGroupMembership", + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "StatusInfos": { + "type": "list", + "member": { + "locationName": "DBInstanceStatusInfo", + "type": "structure", + "members": { + "StatusType": {}, + "Normal": { + "type": "boolean" + }, + "Status": {}, + "Message": {} + } + } + } + }, + "wrapper": true + }, + "Sv": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "Sx": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S11": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S14" + }, + "SubnetStatus": {} + } + } + } + }, + "wrapper": true + }, + "S14": { + "type": "structure", + "members": { + "Name": {}, + "ProvisionedIopsCapable": { + "type": "boolean" + } + }, + "wrapper": true + }, + "S1f": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {} + }, + "wrapper": true + }, + "S1l": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1r": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1v", + "locationName": "OptionSetting" + } + }, + "DBSecurityGroupMemberships": { + "shape": "Sv" + }, + "VpcSecurityGroupMemberships": { + "shape": "Sx" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {} + }, + "wrapper": true + }, + "S1v": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "DefaultValue": {}, + "Description": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "IsCollection": { + "type": "boolean" + } + } + }, + "S27": { + "type": "list", + "member": { + "locationName": "Filter", + "type": "structure", + "required": [ + "Name", + "Values" + ], + "members": { + "Name": {}, + "Values": { + "type": "list", + "member": { + "locationName": "Value" + } + } + } + } + }, + "S2d": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S2s": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S41": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S43" + } + }, + "wrapper": true + }, + "S43": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S4g": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} +},{}],99:[function(require,module,exports){ +arguments[4][97][0].apply(exports,arguments) +},{"dup":97}],100:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "DBInstanceAvailable": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-restore", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-parameters", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-parameters", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-restore", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + }, + "DBInstanceDeleted": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "creating", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "modifying", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "resetting-master-credentials", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + } + } +} + +},{}],101:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-10-31", + "endpointPrefix": "rds", + "protocol": "query", + "serviceAbbreviation": "Amazon RDS", + "serviceFullName": "Amazon Relational Database Service", + "signatureVersion": "v4", + "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/" + }, + "operations": { + "AddSourceIdentifierToSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "AddSourceIdentifierToSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S9" + } + } + } + }, + "ApplyPendingMaintenanceAction": { + "input": { + "type": "structure", + "required": [ + "ResourceIdentifier", + "ApplyAction", + "OptInType" + ], + "members": { + "ResourceIdentifier": {}, + "ApplyAction": {}, + "OptInType": {} + } + }, + "output": { + "resultWrapper": "ApplyPendingMaintenanceActionResult", + "type": "structure", + "members": { + "ResourcePendingMaintenanceActions": { + "shape": "Sd" + } + } + } + }, + "AuthorizeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sj" + } + } + } + }, + "CopyDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "SourceDBClusterParameterGroupIdentifier", + "TargetDBClusterParameterGroupIdentifier", + "TargetDBClusterParameterGroupDescription" + ], + "members": { + "SourceDBClusterParameterGroupIdentifier": {}, + "TargetDBClusterParameterGroupIdentifier": {}, + "TargetDBClusterParameterGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBClusterParameterGroupResult", + "type": "structure", + "members": { + "DBClusterParameterGroup": { + "shape": "Sq" + } + } + } + }, + "CopyDBClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBClusterSnapshotIdentifier", + "TargetDBClusterSnapshotIdentifier" + ], + "members": { + "SourceDBClusterSnapshotIdentifier": {}, + "TargetDBClusterSnapshotIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBClusterSnapshotResult", + "type": "structure", + "members": { + "DBClusterSnapshot": { + "shape": "St" + } + } + } + }, + "CopyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "SourceDBParameterGroupIdentifier", + "TargetDBParameterGroupIdentifier", + "TargetDBParameterGroupDescription" + ], + "members": { + "SourceDBParameterGroupIdentifier": {}, + "TargetDBParameterGroupIdentifier": {}, + "TargetDBParameterGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "Sy" + } + } + } + }, + "CopyDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceDBSnapshotIdentifier", + "TargetDBSnapshotIdentifier" + ], + "members": { + "SourceDBSnapshotIdentifier": {}, + "TargetDBSnapshotIdentifier": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S9" + }, + "CopyTags": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "CopyDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "S12" + } + } + } + }, + "CopyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "SourceOptionGroupIdentifier", + "TargetOptionGroupIdentifier", + "TargetOptionGroupDescription" + ], + "members": { + "SourceOptionGroupIdentifier": {}, + "TargetOptionGroupIdentifier": {}, + "TargetOptionGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CopyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S16" + } + } + } + }, + "CreateDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "Engine" + ], + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "CharacterSetName": {}, + "DatabaseName": {}, + "DBClusterIdentifier": {}, + "DBClusterParameterGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "DBSubnetGroupName": {}, + "Engine": {}, + "EngineVersion": {}, + "Port": { + "type": "integer" + }, + "MasterUsername": {}, + "MasterUserPassword": {}, + "OptionGroupName": {}, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "ReplicationSourceIdentifier": {}, + "Tags": { + "shape": "S9" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {} + } + }, + "output": { + "resultWrapper": "CreateDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "CreateDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBClusterParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBClusterParameterGroupResult", + "type": "structure", + "members": { + "DBClusterParameterGroup": { + "shape": "Sq" + } + } + } + }, + "CreateDBClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier", + "DBClusterIdentifier" + ], + "members": { + "DBClusterSnapshotIdentifier": {}, + "DBClusterIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBClusterSnapshotResult", + "type": "structure", + "members": { + "DBClusterSnapshot": { + "shape": "St" + } + } + } + }, + "CreateDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBInstanceClass", + "Engine" + ], + "members": { + "DBName": {}, + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "Engine": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "DBSecurityGroups": { + "shape": "S1t" + }, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "PreferredMaintenanceWindow": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "Port": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CharacterSetName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "DBClusterIdentifier": {}, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "Domain": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "MonitoringRoleArn": {}, + "DomainIAMRoleName": {}, + "PromotionTier": { + "type": "integer" + }, + "Timezone": {} + } + }, + "output": { + "resultWrapper": "CreateDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "CreateDBInstanceReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "SourceDBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SourceDBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "AvailabilityZone": {}, + "Port": { + "type": "integer" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "DBSubnetGroupName": {}, + "StorageType": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "MonitoringRoleArn": {} + } + }, + "output": { + "resultWrapper": "CreateDBInstanceReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "CreateDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "DBParameterGroupFamily", + "Description" + ], + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBParameterGroupResult", + "type": "structure", + "members": { + "DBParameterGroup": { + "shape": "Sy" + } + } + } + }, + "CreateDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName", + "DBSecurityGroupDescription" + ], + "members": { + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSecurityGroupResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sj" + } + } + } + }, + "CreateDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "DBInstanceIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "S12" + } + } + } + }, + "CreateDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "DBSubnetGroupDescription", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S2k" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S1z" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "SourceIds": { + "shape": "S5" + }, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "CreateOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName", + "EngineName", + "MajorEngineVersion", + "OptionGroupDescription" + ], + "members": { + "OptionGroupName": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "OptionGroupDescription": {}, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "CreateOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S16" + } + } + } + }, + "DeleteDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "DeleteDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName" + ], + "members": { + "DBClusterParameterGroupName": {} + } + } + }, + "DeleteDBClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier" + ], + "members": { + "DBClusterSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBClusterSnapshotResult", + "type": "structure", + "members": { + "DBClusterSnapshot": { + "shape": "St" + } + } + } + }, + "DeleteDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "SkipFinalSnapshot": { + "type": "boolean" + }, + "FinalDBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "DeleteDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {} + } + } + }, + "DeleteDBSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {} + } + } + }, + "DeleteDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteDBSnapshotResult", + "type": "structure", + "members": { + "DBSnapshot": { + "shape": "S12" + } + } + } + }, + "DeleteDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName" + ], + "members": { + "DBSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + }, + "output": { + "resultWrapper": "DeleteEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "DeleteOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {} + } + } + }, + "DescribeAccountAttributes": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "DescribeAccountAttributesResult", + "type": "structure", + "members": { + "AccountQuotas": { + "type": "list", + "member": { + "locationName": "AccountQuota", + "type": "structure", + "members": { + "AccountQuotaName": {}, + "Used": { + "type": "long" + }, + "Max": { + "type": "long" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeCertificates": { + "input": { + "type": "structure", + "members": { + "CertificateIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeCertificatesResult", + "type": "structure", + "members": { + "Certificates": { + "type": "list", + "member": { + "locationName": "Certificate", + "type": "structure", + "members": { + "CertificateIdentifier": {}, + "CertificateType": {}, + "Thumbprint": {}, + "ValidFrom": { + "type": "timestamp" + }, + "ValidTill": { + "type": "timestamp" + }, + "CertificateArn": {} + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeDBClusterParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBClusterParameterGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClusterParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBClusterParameterGroups": { + "type": "list", + "member": { + "shape": "Sq", + "locationName": "DBClusterParameterGroup" + } + } + } + } + }, + "DescribeDBClusterParameters": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName" + ], + "members": { + "DBClusterParameterGroupName": {}, + "Source": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClusterParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S3m" + }, + "Marker": {} + } + } + }, + "DescribeDBClusterSnapshotAttributes": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier" + ], + "members": { + "DBClusterSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClusterSnapshotAttributesResult", + "type": "structure", + "members": { + "DBClusterSnapshotAttributesResult": { + "shape": "S3r" + } + } + } + }, + "DescribeDBClusterSnapshots": { + "input": { + "type": "structure", + "members": { + "DBClusterIdentifier": {}, + "DBClusterSnapshotIdentifier": {}, + "SnapshotType": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "IncludeShared": { + "type": "boolean" + }, + "IncludePublic": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBClusterSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBClusterSnapshots": { + "type": "list", + "member": { + "shape": "St", + "locationName": "DBClusterSnapshot" + } + } + } + } + }, + "DescribeDBClusters": { + "input": { + "type": "structure", + "members": { + "DBClusterIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBClustersResult", + "type": "structure", + "members": { + "Marker": {}, + "DBClusters": { + "type": "list", + "member": { + "shape": "S1i", + "locationName": "DBCluster" + } + } + } + } + }, + "DescribeDBEngineVersions": { + "input": { + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "DefaultOnly": { + "type": "boolean" + }, + "ListSupportedCharacterSets": { + "type": "boolean" + }, + "ListSupportedTimezones": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBEngineVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBEngineVersions": { + "type": "list", + "member": { + "locationName": "DBEngineVersion", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBParameterGroupFamily": {}, + "DBEngineDescription": {}, + "DBEngineVersionDescription": {}, + "DefaultCharacterSet": { + "shape": "S45" + }, + "SupportedCharacterSets": { + "type": "list", + "member": { + "shape": "S45", + "locationName": "CharacterSet" + } + }, + "ValidUpgradeTarget": { + "type": "list", + "member": { + "locationName": "UpgradeTarget", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "Description": {}, + "AutoUpgrade": { + "type": "boolean" + }, + "IsMajorVersionUpgrade": { + "type": "boolean" + } + } + } + }, + "SupportedTimezones": { + "type": "list", + "member": { + "locationName": "Timezone", + "type": "structure", + "members": { + "TimezoneName": {} + } + } + } + } + } + } + } + } + }, + "DescribeDBInstances": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "DBInstances": { + "type": "list", + "member": { + "shape": "S1v", + "locationName": "DBInstance" + } + } + } + } + }, + "DescribeDBLogFiles": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "FilenameContains": {}, + "FileLastWritten": { + "type": "long" + }, + "FileSize": { + "type": "long" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBLogFilesResult", + "type": "structure", + "members": { + "DescribeDBLogFiles": { + "type": "list", + "member": { + "locationName": "DescribeDBLogFilesDetails", + "type": "structure", + "members": { + "LogFileName": {}, + "LastWritten": { + "type": "long" + }, + "Size": { + "type": "long" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeDBParameterGroups": { + "input": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBParameterGroups": { + "type": "list", + "member": { + "shape": "Sy", + "locationName": "DBParameterGroup" + } + } + } + } + }, + "DescribeDBParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "Source": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S3m" + }, + "Marker": {} + } + } + }, + "DescribeDBSecurityGroups": { + "input": { + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSecurityGroups": { + "type": "list", + "member": { + "shape": "Sj", + "locationName": "DBSecurityGroup" + } + } + } + } + }, + "DescribeDBSnapshotAttributes": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier" + ], + "members": { + "DBSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotAttributesResult", + "type": "structure", + "members": { + "DBSnapshotAttributesResult": { + "shape": "S4s" + } + } + } + }, + "DescribeDBSnapshots": { + "input": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "SnapshotType": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "IncludeShared": { + "type": "boolean" + }, + "IncludePublic": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "DescribeDBSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSnapshots": { + "type": "list", + "member": { + "shape": "S12", + "locationName": "DBSnapshot" + } + } + } + } + }, + "DescribeDBSubnetGroups": { + "input": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDBSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "DBSubnetGroups": { + "type": "list", + "member": { + "shape": "S1z", + "locationName": "DBSubnetGroup" + } + } + } + } + }, + "DescribeEngineDefaultClusterParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultClusterParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "shape": "S53" + } + } + } + }, + "DescribeEngineDefaultParameters": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupFamily" + ], + "members": { + "DBParameterGroupFamily": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEngineDefaultParametersResult", + "type": "structure", + "members": { + "EngineDefaults": { + "shape": "S53" + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {}, + "Filters": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "EventCategories": { + "shape": "S6" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "EventCategories": { + "shape": "S6" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S6" + }, + "Date": { + "type": "timestamp" + }, + "SourceArn": {} + } + } + } + } + } + }, + "DescribeOptionGroupOptions": { + "input": { + "type": "structure", + "required": [ + "EngineName" + ], + "members": { + "EngineName": {}, + "MajorEngineVersion": {}, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupOptionsResult", + "type": "structure", + "members": { + "OptionGroupOptions": { + "type": "list", + "member": { + "locationName": "OptionGroupOption", + "type": "structure", + "members": { + "Name": {}, + "Description": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "MinimumRequiredMinorEngineVersion": {}, + "PortRequired": { + "type": "boolean" + }, + "DefaultPort": { + "type": "integer" + }, + "OptionsDependedOn": { + "type": "list", + "member": { + "locationName": "OptionName" + } + }, + "OptionsConflictsWith": { + "type": "list", + "member": { + "locationName": "OptionConflictName" + } + }, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "OptionGroupOptionSettings": { + "type": "list", + "member": { + "locationName": "OptionGroupOptionSetting", + "type": "structure", + "members": { + "SettingName": {}, + "SettingDescription": {}, + "DefaultValue": {}, + "ApplyType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + } + } + } + }, + "OptionGroupOptionVersions": { + "type": "list", + "member": { + "locationName": "OptionVersion", + "type": "structure", + "members": { + "Version": {}, + "IsDefault": { + "type": "boolean" + } + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeOptionGroups": { + "input": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "Filters": { + "shape": "S3b" + }, + "Marker": {}, + "MaxRecords": { + "type": "integer" + }, + "EngineName": {}, + "MajorEngineVersion": {} + } + }, + "output": { + "resultWrapper": "DescribeOptionGroupsResult", + "type": "structure", + "members": { + "OptionGroupsList": { + "type": "list", + "member": { + "shape": "S16", + "locationName": "OptionGroup" + } + }, + "Marker": {} + } + } + }, + "DescribeOrderableDBInstanceOptions": { + "input": { + "type": "structure", + "required": [ + "Engine" + ], + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "Vpc": { + "type": "boolean" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", + "type": "structure", + "members": { + "OrderableDBInstanceOptions": { + "type": "list", + "member": { + "locationName": "OrderableDBInstanceOption", + "type": "structure", + "members": { + "Engine": {}, + "EngineVersion": {}, + "DBInstanceClass": {}, + "LicenseModel": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S22", + "locationName": "AvailabilityZone" + } + }, + "MultiAZCapable": { + "type": "boolean" + }, + "ReadReplicaCapable": { + "type": "boolean" + }, + "Vpc": { + "type": "boolean" + }, + "SupportsStorageEncryption": { + "type": "boolean" + }, + "StorageType": {}, + "SupportsIops": { + "type": "boolean" + }, + "SupportsEnhancedMonitoring": { + "type": "boolean" + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribePendingMaintenanceActions": { + "input": { + "type": "structure", + "members": { + "ResourceIdentifier": {}, + "Filters": { + "shape": "S3b" + }, + "Marker": {}, + "MaxRecords": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DescribePendingMaintenanceActionsResult", + "type": "structure", + "members": { + "PendingMaintenanceActions": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "ResourcePendingMaintenanceActions" + } + }, + "Marker": {} + } + } + }, + "DescribeReservedDBInstances": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstances": { + "type": "list", + "member": { + "shape": "S66", + "locationName": "ReservedDBInstance" + } + } + } + } + }, + "DescribeReservedDBInstancesOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "Filters": { + "shape": "S3b" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedDBInstancesOfferings": { + "type": "list", + "member": { + "locationName": "ReservedDBInstancesOffering", + "type": "structure", + "members": { + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "RecurringCharges": { + "shape": "S68" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeSourceRegions": { + "input": { + "type": "structure", + "members": { + "RegionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "Filters": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "DescribeSourceRegionsResult", + "type": "structure", + "members": { + "Marker": {}, + "SourceRegions": { + "type": "list", + "member": { + "locationName": "SourceRegion", + "type": "structure", + "members": { + "RegionName": {}, + "Endpoint": {}, + "Status": {} + } + } + } + } + } + }, + "DownloadDBLogFilePortion": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "LogFileName" + ], + "members": { + "DBInstanceIdentifier": {}, + "LogFileName": {}, + "Marker": {}, + "NumberOfLines": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "DownloadDBLogFilePortionResult", + "type": "structure", + "members": { + "LogFileData": {}, + "Marker": {}, + "AdditionalDataPending": { + "type": "boolean" + } + } + } + }, + "FailoverDBCluster": { + "input": { + "type": "structure", + "members": { + "DBClusterIdentifier": {}, + "TargetDBInstanceIdentifier": {} + } + }, + "output": { + "resultWrapper": "FailoverDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName" + ], + "members": { + "ResourceName": {}, + "Filters": { + "shape": "S3b" + } + } + }, + "output": { + "resultWrapper": "ListTagsForResourceResult", + "type": "structure", + "members": { + "TagList": { + "shape": "S9" + } + } + } + }, + "ModifyDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {}, + "NewDBClusterIdentifier": {}, + "ApplyImmediately": { + "type": "boolean" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBClusterParameterGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "Port": { + "type": "integer" + }, + "MasterUserPassword": {}, + "OptionGroupName": {}, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {} + } + }, + "output": { + "resultWrapper": "ModifyDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "ModifyDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName", + "Parameters" + ], + "members": { + "DBClusterParameterGroupName": {}, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6r", + "resultWrapper": "ModifyDBClusterParameterGroupResult" + } + }, + "ModifyDBClusterSnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "DBClusterSnapshotIdentifier", + "AttributeName" + ], + "members": { + "DBClusterSnapshotIdentifier": {}, + "AttributeName": {}, + "ValuesToAdd": { + "shape": "S3u" + }, + "ValuesToRemove": { + "shape": "S3u" + } + } + }, + "output": { + "resultWrapper": "ModifyDBClusterSnapshotAttributeResult", + "type": "structure", + "members": { + "DBClusterSnapshotAttributesResult": { + "shape": "S3r" + } + } + } + }, + "ModifyDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "AllocatedStorage": { + "type": "integer" + }, + "DBInstanceClass": {}, + "DBSubnetGroupName": {}, + "DBSecurityGroups": { + "shape": "S1t" + }, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "ApplyImmediately": { + "type": "boolean" + }, + "MasterUserPassword": {}, + "DBParameterGroupName": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AllowMajorVersionUpgrade": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "NewDBInstanceIdentifier": {}, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "CACertificateIdentifier": {}, + "Domain": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "DBPortNumber": { + "type": "integer" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "MonitoringRoleArn": {}, + "DomainIAMRoleName": {}, + "PromotionTier": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ModifyDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "ModifyDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName", + "Parameters" + ], + "members": { + "DBParameterGroupName": {}, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6x", + "resultWrapper": "ModifyDBParameterGroupResult" + } + }, + "ModifyDBSnapshotAttribute": { + "input": { + "type": "structure", + "required": [ + "DBSnapshotIdentifier", + "AttributeName" + ], + "members": { + "DBSnapshotIdentifier": {}, + "AttributeName": {}, + "ValuesToAdd": { + "shape": "S3u" + }, + "ValuesToRemove": { + "shape": "S3u" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSnapshotAttributeResult", + "type": "structure", + "members": { + "DBSnapshotAttributesResult": { + "shape": "S4s" + } + } + } + }, + "ModifyDBSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "DBSubnetGroupName", + "SubnetIds" + ], + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "SubnetIds": { + "shape": "S2k" + } + } + }, + "output": { + "resultWrapper": "ModifyDBSubnetGroupResult", + "type": "structure", + "members": { + "DBSubnetGroup": { + "shape": "S1z" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "EventCategories": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "ModifyOptionGroup": { + "input": { + "type": "structure", + "required": [ + "OptionGroupName" + ], + "members": { + "OptionGroupName": {}, + "OptionsToInclude": { + "type": "list", + "member": { + "locationName": "OptionConfiguration", + "type": "structure", + "required": [ + "OptionName" + ], + "members": { + "OptionName": {}, + "Port": { + "type": "integer" + }, + "OptionVersion": {}, + "DBSecurityGroupMemberships": { + "shape": "S1t" + }, + "VpcSecurityGroupMemberships": { + "shape": "S1g" + }, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1a", + "locationName": "OptionSetting" + } + } + } + } + }, + "OptionsToRemove": { + "type": "list", + "member": {} + }, + "ApplyImmediately": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyOptionGroupResult", + "type": "structure", + "members": { + "OptionGroup": { + "shape": "S16" + } + } + } + }, + "PromoteReadReplica": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "PreferredBackupWindow": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "PromoteReadReplicaDBCluster": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "PromoteReadReplicaDBClusterResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "PurchaseReservedDBInstancesOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedDBInstancesOfferingId" + ], + "members": { + "ReservedDBInstancesOfferingId": {}, + "ReservedDBInstanceId": {}, + "DBInstanceCount": { + "type": "integer" + }, + "Tags": { + "shape": "S9" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", + "type": "structure", + "members": { + "ReservedDBInstance": { + "shape": "S66" + } + } + } + }, + "RebootDBInstance": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "ForceFailover": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "RebootDBInstanceResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "RemoveSourceIdentifierFromSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SourceIdentifier" + ], + "members": { + "SubscriptionName": {}, + "SourceIdentifier": {} + } + }, + "output": { + "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S4" + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + } + }, + "ResetDBClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBClusterParameterGroupName" + ], + "members": { + "DBClusterParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6r", + "resultWrapper": "ResetDBClusterParameterGroupResult" + } + }, + "ResetDBParameterGroup": { + "input": { + "type": "structure", + "required": [ + "DBParameterGroupName" + ], + "members": { + "DBParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S3m" + } + } + }, + "output": { + "shape": "S6x", + "resultWrapper": "ResetDBParameterGroupResult" + } + }, + "RestoreDBClusterFromS3": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "Engine", + "MasterUsername", + "MasterUserPassword", + "SourceEngine", + "SourceEngineVersion", + "S3BucketName", + "S3IngestionRoleArn" + ], + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "CharacterSetName": {}, + "DatabaseName": {}, + "DBClusterIdentifier": {}, + "DBClusterParameterGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "DBSubnetGroupName": {}, + "Engine": {}, + "EngineVersion": {}, + "Port": { + "type": "integer" + }, + "MasterUsername": {}, + "MasterUserPassword": {}, + "OptionGroupName": {}, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "Tags": { + "shape": "S9" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "SourceEngine": {}, + "SourceEngineVersion": {}, + "S3BucketName": {}, + "S3Prefix": {}, + "S3IngestionRoleArn": {} + } + }, + "output": { + "resultWrapper": "RestoreDBClusterFromS3Result", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "RestoreDBClusterFromSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "SnapshotIdentifier", + "Engine" + ], + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "DBClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "Engine": {}, + "EngineVersion": {}, + "Port": { + "type": "integer" + }, + "DBSubnetGroupName": {}, + "DatabaseName": {}, + "OptionGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "Tags": { + "shape": "S9" + }, + "KmsKeyId": {} + } + }, + "output": { + "resultWrapper": "RestoreDBClusterFromSnapshotResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "RestoreDBClusterToPointInTime": { + "input": { + "type": "structure", + "required": [ + "DBClusterIdentifier", + "SourceDBClusterIdentifier" + ], + "members": { + "DBClusterIdentifier": {}, + "SourceDBClusterIdentifier": {}, + "RestoreToTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "DBSubnetGroupName": {}, + "OptionGroupName": {}, + "VpcSecurityGroupIds": { + "shape": "S1g" + }, + "Tags": { + "shape": "S9" + }, + "KmsKeyId": {} + } + }, + "output": { + "resultWrapper": "RestoreDBClusterToPointInTimeResult", + "type": "structure", + "members": { + "DBCluster": { + "shape": "S1i" + } + } + } + }, + "RestoreDBInstanceFromDBSnapshot": { + "input": { + "type": "structure", + "required": [ + "DBInstanceIdentifier", + "DBSnapshotIdentifier" + ], + "members": { + "DBInstanceIdentifier": {}, + "DBSnapshotIdentifier": {}, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "Tags": { + "shape": "S9" + }, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "Domain": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "DomainIAMRoleName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "RestoreDBInstanceToPointInTime": { + "input": { + "type": "structure", + "required": [ + "SourceDBInstanceIdentifier", + "TargetDBInstanceIdentifier" + ], + "members": { + "SourceDBInstanceIdentifier": {}, + "TargetDBInstanceIdentifier": {}, + "RestoreTime": { + "type": "timestamp" + }, + "UseLatestRestorableTime": { + "type": "boolean" + }, + "DBInstanceClass": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "DBSubnetGroupName": {}, + "MultiAZ": { + "type": "boolean" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "LicenseModel": {}, + "DBName": {}, + "Engine": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "Tags": { + "shape": "S9" + }, + "StorageType": {}, + "TdeCredentialArn": {}, + "TdeCredentialPassword": {}, + "Domain": {}, + "DomainIAMRoleName": {} + } + }, + "output": { + "resultWrapper": "RestoreDBInstanceToPointInTimeResult", + "type": "structure", + "members": { + "DBInstance": { + "shape": "S1v" + } + } + } + }, + "RevokeDBSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "DBSecurityGroupName" + ], + "members": { + "DBSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeDBSecurityGroupIngressResult", + "type": "structure", + "members": { + "DBSecurityGroup": { + "shape": "Sj" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": {}, + "SourceType": {}, + "SourceIdsList": { + "shape": "S5" + }, + "EventCategoriesList": { + "shape": "S6" + }, + "Enabled": { + "type": "boolean" + }, + "EventSubscriptionArn": {} + }, + "wrapper": true + }, + "S5": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S6": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S9": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sd": { + "type": "structure", + "members": { + "ResourceIdentifier": {}, + "PendingMaintenanceActionDetails": { + "type": "list", + "member": { + "locationName": "PendingMaintenanceAction", + "type": "structure", + "members": { + "Action": {}, + "AutoAppliedAfterDate": { + "type": "timestamp" + }, + "ForcedApplyDate": { + "type": "timestamp" + }, + "OptInStatus": {}, + "CurrentApplyDate": { + "type": "timestamp" + }, + "Description": {} + } + } + } + }, + "wrapper": true + }, + "Sj": { + "type": "structure", + "members": { + "OwnerId": {}, + "DBSecurityGroupName": {}, + "DBSecurityGroupDescription": {}, + "VpcId": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupId": {}, + "EC2SecurityGroupOwnerId": {} + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {} + } + } + }, + "DBSecurityGroupArn": {} + }, + "wrapper": true + }, + "Sq": { + "type": "structure", + "members": { + "DBClusterParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "DBClusterParameterGroupArn": {} + }, + "wrapper": true + }, + "St": { + "type": "structure", + "members": { + "AvailabilityZones": { + "shape": "Su" + }, + "DBClusterSnapshotIdentifier": {}, + "DBClusterIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "VpcId": {}, + "ClusterCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "PercentProgress": { + "type": "integer" + }, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DBClusterSnapshotArn": {} + }, + "wrapper": true + }, + "Su": { + "type": "list", + "member": { + "locationName": "AvailabilityZone" + } + }, + "Sy": { + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "DBParameterGroupFamily": {}, + "Description": {}, + "DBParameterGroupArn": {} + }, + "wrapper": true + }, + "S12": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBInstanceIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Engine": {}, + "AllocatedStorage": { + "type": "integer" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "VpcId": {}, + "InstanceCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "EngineVersion": {}, + "LicenseModel": {}, + "SnapshotType": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupName": {}, + "PercentProgress": { + "type": "integer" + }, + "SourceRegion": {}, + "SourceDBSnapshotIdentifier": {}, + "StorageType": {}, + "TdeCredentialArn": {}, + "Encrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DBSnapshotArn": {}, + "Timezone": {} + }, + "wrapper": true + }, + "S16": { + "type": "structure", + "members": { + "OptionGroupName": {}, + "OptionGroupDescription": {}, + "EngineName": {}, + "MajorEngineVersion": {}, + "Options": { + "type": "list", + "member": { + "locationName": "Option", + "type": "structure", + "members": { + "OptionName": {}, + "OptionDescription": {}, + "Persistent": { + "type": "boolean" + }, + "Permanent": { + "type": "boolean" + }, + "Port": { + "type": "integer" + }, + "OptionVersion": {}, + "OptionSettings": { + "type": "list", + "member": { + "shape": "S1a", + "locationName": "OptionSetting" + } + }, + "DBSecurityGroupMemberships": { + "shape": "S1b" + }, + "VpcSecurityGroupMemberships": { + "shape": "S1d" + } + } + } + }, + "AllowsVpcAndNonVpcInstanceMemberships": { + "type": "boolean" + }, + "VpcId": {}, + "OptionGroupArn": {} + }, + "wrapper": true + }, + "S1a": { + "type": "structure", + "members": { + "Name": {}, + "Value": {}, + "DefaultValue": {}, + "Description": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "IsCollection": { + "type": "boolean" + } + } + }, + "S1b": { + "type": "list", + "member": { + "locationName": "DBSecurityGroup", + "type": "structure", + "members": { + "DBSecurityGroupName": {}, + "Status": {} + } + } + }, + "S1d": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupMembership", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "S1g": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "S1i": { + "type": "structure", + "members": { + "AllocatedStorage": { + "type": "integer" + }, + "AvailabilityZones": { + "shape": "Su" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "CharacterSetName": {}, + "DatabaseName": {}, + "DBClusterIdentifier": {}, + "DBClusterParameterGroup": {}, + "DBSubnetGroup": {}, + "Status": {}, + "PercentProgress": {}, + "EarliestRestorableTime": { + "type": "timestamp" + }, + "Endpoint": {}, + "ReaderEndpoint": {}, + "Engine": {}, + "EngineVersion": {}, + "LatestRestorableTime": { + "type": "timestamp" + }, + "Port": { + "type": "integer" + }, + "MasterUsername": {}, + "DBClusterOptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "DBClusterOptionGroup", + "type": "structure", + "members": { + "DBClusterOptionGroupName": {}, + "Status": {} + } + } + }, + "PreferredBackupWindow": {}, + "PreferredMaintenanceWindow": {}, + "ReplicationSourceIdentifier": {}, + "ReadReplicaIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaIdentifier" + } + }, + "DBClusterMembers": { + "type": "list", + "member": { + "locationName": "DBClusterMember", + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "IsClusterWriter": { + "type": "boolean" + }, + "DBClusterParameterGroupStatus": {}, + "PromotionTier": { + "type": "integer" + } + }, + "wrapper": true + } + }, + "VpcSecurityGroups": { + "shape": "S1d" + }, + "HostedZoneId": {}, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DbClusterResourceId": {}, + "DBClusterArn": {} + }, + "wrapper": true + }, + "S1t": { + "type": "list", + "member": { + "locationName": "DBSecurityGroupName" + } + }, + "S1v": { + "type": "structure", + "members": { + "DBInstanceIdentifier": {}, + "DBInstanceClass": {}, + "Engine": {}, + "DBInstanceStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + }, + "HostedZoneId": {} + } + }, + "AllocatedStorage": { + "type": "integer" + }, + "InstanceCreateTime": { + "type": "timestamp" + }, + "PreferredBackupWindow": {}, + "BackupRetentionPeriod": { + "type": "integer" + }, + "DBSecurityGroups": { + "shape": "S1b" + }, + "VpcSecurityGroups": { + "shape": "S1d" + }, + "DBParameterGroups": { + "type": "list", + "member": { + "locationName": "DBParameterGroup", + "type": "structure", + "members": { + "DBParameterGroupName": {}, + "ParameterApplyStatus": {} + } + } + }, + "AvailabilityZone": {}, + "DBSubnetGroup": { + "shape": "S1z" + }, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "DBInstanceClass": {}, + "AllocatedStorage": { + "type": "integer" + }, + "MasterUserPassword": {}, + "Port": { + "type": "integer" + }, + "BackupRetentionPeriod": { + "type": "integer" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "DBInstanceIdentifier": {}, + "StorageType": {}, + "CACertificateIdentifier": {}, + "DBSubnetGroupName": {} + } + }, + "LatestRestorableTime": { + "type": "timestamp" + }, + "MultiAZ": { + "type": "boolean" + }, + "EngineVersion": {}, + "AutoMinorVersionUpgrade": { + "type": "boolean" + }, + "ReadReplicaSourceDBInstanceIdentifier": {}, + "ReadReplicaDBInstanceIdentifiers": { + "type": "list", + "member": { + "locationName": "ReadReplicaDBInstanceIdentifier" + } + }, + "LicenseModel": {}, + "Iops": { + "type": "integer" + }, + "OptionGroupMemberships": { + "type": "list", + "member": { + "locationName": "OptionGroupMembership", + "type": "structure", + "members": { + "OptionGroupName": {}, + "Status": {} + } + } + }, + "CharacterSetName": {}, + "SecondaryAvailabilityZone": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "StatusInfos": { + "type": "list", + "member": { + "locationName": "DBInstanceStatusInfo", + "type": "structure", + "members": { + "StatusType": {}, + "Normal": { + "type": "boolean" + }, + "Status": {}, + "Message": {} + } + } + }, + "StorageType": {}, + "TdeCredentialArn": {}, + "DbInstancePort": { + "type": "integer" + }, + "DBClusterIdentifier": {}, + "StorageEncrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "DbiResourceId": {}, + "CACertificateIdentifier": {}, + "DomainMemberships": { + "type": "list", + "member": { + "locationName": "DomainMembership", + "type": "structure", + "members": { + "Domain": {}, + "Status": {}, + "FQDN": {}, + "IAMRoleName": {} + } + } + }, + "CopyTagsToSnapshot": { + "type": "boolean" + }, + "MonitoringInterval": { + "type": "integer" + }, + "EnhancedMonitoringResourceArn": {}, + "MonitoringRoleArn": {}, + "PromotionTier": { + "type": "integer" + }, + "DBInstanceArn": {}, + "Timezone": {} + }, + "wrapper": true + }, + "S1z": { + "type": "structure", + "members": { + "DBSubnetGroupName": {}, + "DBSubnetGroupDescription": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S22" + }, + "SubnetStatus": {} + } + } + }, + "DBSubnetGroupArn": {} + }, + "wrapper": true + }, + "S22": { + "type": "structure", + "members": { + "Name": {} + }, + "wrapper": true + }, + "S2k": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S3b": { + "type": "list", + "member": { + "locationName": "Filter", + "type": "structure", + "required": [ + "Name", + "Values" + ], + "members": { + "Name": {}, + "Values": { + "type": "list", + "member": { + "locationName": "Value" + } + } + } + } + }, + "S3m": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "ApplyType": {}, + "DataType": {}, + "AllowedValues": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {}, + "ApplyMethod": {} + } + } + }, + "S3r": { + "type": "structure", + "members": { + "DBClusterSnapshotIdentifier": {}, + "DBClusterSnapshotAttributes": { + "type": "list", + "member": { + "locationName": "DBClusterSnapshotAttribute", + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValues": { + "shape": "S3u" + } + } + } + } + }, + "wrapper": true + }, + "S3u": { + "type": "list", + "member": { + "locationName": "AttributeValue" + } + }, + "S45": { + "type": "structure", + "members": { + "CharacterSetName": {}, + "CharacterSetDescription": {} + } + }, + "S4s": { + "type": "structure", + "members": { + "DBSnapshotIdentifier": {}, + "DBSnapshotAttributes": { + "type": "list", + "member": { + "locationName": "DBSnapshotAttribute", + "type": "structure", + "members": { + "AttributeName": {}, + "AttributeValues": { + "shape": "S3u" + } + }, + "wrapper": true + } + } + }, + "wrapper": true + }, + "S53": { + "type": "structure", + "members": { + "DBParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S3m" + } + }, + "wrapper": true + }, + "S66": { + "type": "structure", + "members": { + "ReservedDBInstanceId": {}, + "ReservedDBInstancesOfferingId": {}, + "DBInstanceClass": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "DBInstanceCount": { + "type": "integer" + }, + "ProductDescription": {}, + "OfferingType": {}, + "MultiAZ": { + "type": "boolean" + }, + "State": {}, + "RecurringCharges": { + "shape": "S68" + }, + "ReservedDBInstanceArn": {} + }, + "wrapper": true + }, + "S68": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S6r": { + "type": "structure", + "members": { + "DBClusterParameterGroupName": {} + } + }, + "S6x": { + "type": "structure", + "members": { + "DBParameterGroupName": {} + } + } + } +} +},{}],102:[function(require,module,exports){ +arguments[4][97][0].apply(exports,arguments) +},{"dup":97}],103:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "DBInstanceAvailable": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-restore", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "incompatible-parameters", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + }, + "DBInstanceDeleted": { + "delay": 30, + "operation": "DescribeDBInstances", + "maxAttempts": 60, + "acceptors": [ + { + "expected": "deleted", + "matcher": "pathAll", + "state": "success", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "DBInstanceNotFound", + "matcher": "error", + "state": "success" + }, + { + "expected": "creating", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "modifying", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "rebooting", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + }, + { + "expected": "resetting-master-credentials", + "matcher": "pathAny", + "state": "failure", + "argument": "DBInstances[].DBInstanceStatus" + } + ] + } + } +} + +},{}],104:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2012-12-01", + "endpointPrefix": "redshift", + "protocol": "query", + "serviceFullName": "Amazon Redshift", + "signatureVersion": "v4", + "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/" + }, + "operations": { + "AuthorizeClusterSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName" + ], + "members": { + "ClusterSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult", + "type": "structure", + "members": { + "ClusterSecurityGroup": { + "shape": "S4" + } + } + } + }, + "AuthorizeSnapshotAccess": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier", + "AccountWithRestoreAccess" + ], + "members": { + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {}, + "AccountWithRestoreAccess": {} + } + }, + "output": { + "resultWrapper": "AuthorizeSnapshotAccessResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CopyClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SourceSnapshotIdentifier", + "TargetSnapshotIdentifier" + ], + "members": { + "SourceSnapshotIdentifier": {}, + "SourceSnapshotClusterIdentifier": {}, + "TargetSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "CopyClusterSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CreateCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "NodeType", + "MasterUsername", + "MasterUserPassword" + ], + "members": { + "DBName": {}, + "ClusterIdentifier": {}, + "ClusterType": {}, + "NodeType": {}, + "MasterUsername": {}, + "MasterUserPassword": {}, + "ClusterSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "ClusterSubnetGroupName": {}, + "AvailabilityZone": {}, + "PreferredMaintenanceWindow": {}, + "ClusterParameterGroupName": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "Port": { + "type": "integer" + }, + "ClusterVersion": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "NumberOfNodes": { + "type": "integer" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "ElasticIp": {}, + "Tags": { + "shape": "S7" + }, + "KmsKeyId": {}, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "AdditionalInfo": {}, + "IamRoles": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "CreateClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "CreateClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName", + "ParameterGroupFamily", + "Description" + ], + "members": { + "ParameterGroupName": {}, + "ParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterParameterGroupResult", + "type": "structure", + "members": { + "ClusterParameterGroup": { + "shape": "S1g" + } + } + } + }, + "CreateClusterSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName", + "Description" + ], + "members": { + "ClusterSecurityGroupName": {}, + "Description": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterSecurityGroupResult", + "type": "structure", + "members": { + "ClusterSecurityGroup": { + "shape": "S4" + } + } + } + }, + "CreateClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier", + "ClusterIdentifier" + ], + "members": { + "SnapshotIdentifier": {}, + "ClusterIdentifier": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "CreateClusterSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSubnetGroupName", + "Description", + "SubnetIds" + ], + "members": { + "ClusterSubnetGroupName": {}, + "Description": {}, + "SubnetIds": { + "shape": "S1m" + }, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateClusterSubnetGroupResult", + "type": "structure", + "members": { + "ClusterSubnetGroup": { + "shape": "S1o" + } + } + } + }, + "CreateEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName", + "SnsTopicArn" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "SourceIds": { + "shape": "S1t" + }, + "EventCategories": { + "shape": "S1u" + }, + "Severity": {}, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S1w" + } + } + } + }, + "CreateHsmClientCertificate": { + "input": { + "type": "structure", + "required": [ + "HsmClientCertificateIdentifier" + ], + "members": { + "HsmClientCertificateIdentifier": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateHsmClientCertificateResult", + "type": "structure", + "members": { + "HsmClientCertificate": { + "shape": "S1z" + } + } + } + }, + "CreateHsmConfiguration": { + "input": { + "type": "structure", + "required": [ + "HsmConfigurationIdentifier", + "Description", + "HsmIpAddress", + "HsmPartitionName", + "HsmPartitionPassword", + "HsmServerPublicCertificate" + ], + "members": { + "HsmConfigurationIdentifier": {}, + "Description": {}, + "HsmIpAddress": {}, + "HsmPartitionName": {}, + "HsmPartitionPassword": {}, + "HsmServerPublicCertificate": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateHsmConfigurationResult", + "type": "structure", + "members": { + "HsmConfiguration": { + "shape": "S22" + } + } + } + }, + "CreateSnapshotCopyGrant": { + "input": { + "type": "structure", + "required": [ + "SnapshotCopyGrantName" + ], + "members": { + "SnapshotCopyGrantName": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S7" + } + } + }, + "output": { + "resultWrapper": "CreateSnapshotCopyGrantResult", + "type": "structure", + "members": { + "SnapshotCopyGrant": { + "shape": "S25" + } + } + } + }, + "CreateTags": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "Tags" + ], + "members": { + "ResourceName": {}, + "Tags": { + "shape": "S7" + } + } + } + }, + "DeleteCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "SkipFinalClusterSnapshot": { + "type": "boolean" + }, + "FinalClusterSnapshotIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "DeleteClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName" + ], + "members": { + "ParameterGroupName": {} + } + } + }, + "DeleteClusterSecurityGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName" + ], + "members": { + "ClusterSecurityGroupName": {} + } + } + }, + "DeleteClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier" + ], + "members": { + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "DeleteClusterSnapshotResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "DeleteClusterSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSubnetGroupName" + ], + "members": { + "ClusterSubnetGroupName": {} + } + } + }, + "DeleteEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {} + } + } + }, + "DeleteHsmClientCertificate": { + "input": { + "type": "structure", + "required": [ + "HsmClientCertificateIdentifier" + ], + "members": { + "HsmClientCertificateIdentifier": {} + } + } + }, + "DeleteHsmConfiguration": { + "input": { + "type": "structure", + "required": [ + "HsmConfigurationIdentifier" + ], + "members": { + "HsmConfigurationIdentifier": {} + } + } + }, + "DeleteSnapshotCopyGrant": { + "input": { + "type": "structure", + "required": [ + "SnapshotCopyGrantName" + ], + "members": { + "SnapshotCopyGrantName": {} + } + } + }, + "DeleteTags": { + "input": { + "type": "structure", + "required": [ + "ResourceName", + "TagKeys" + ], + "members": { + "ResourceName": {}, + "TagKeys": { + "shape": "S2j" + } + } + } + }, + "DescribeClusterParameterGroups": { + "input": { + "type": "structure", + "members": { + "ParameterGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterParameterGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ParameterGroups": { + "type": "list", + "member": { + "shape": "S1g", + "locationName": "ClusterParameterGroup" + } + } + } + } + }, + "DescribeClusterParameters": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName" + ], + "members": { + "ParameterGroupName": {}, + "Source": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeClusterParametersResult", + "type": "structure", + "members": { + "Parameters": { + "shape": "S2q" + }, + "Marker": {} + } + } + }, + "DescribeClusterSecurityGroups": { + "input": { + "type": "structure", + "members": { + "ClusterSecurityGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterSecurityGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ClusterSecurityGroups": { + "type": "list", + "member": { + "shape": "S4", + "locationName": "ClusterSecurityGroup" + } + } + } + } + }, + "DescribeClusterSnapshots": { + "input": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SnapshotType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "OwnerAccount": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterSnapshotsResult", + "type": "structure", + "members": { + "Marker": {}, + "Snapshots": { + "type": "list", + "member": { + "shape": "Sd", + "locationName": "Snapshot" + } + } + } + } + }, + "DescribeClusterSubnetGroups": { + "input": { + "type": "structure", + "members": { + "ClusterSubnetGroupName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClusterSubnetGroupsResult", + "type": "structure", + "members": { + "Marker": {}, + "ClusterSubnetGroups": { + "type": "list", + "member": { + "shape": "S1o", + "locationName": "ClusterSubnetGroup" + } + } + } + } + }, + "DescribeClusterVersions": { + "input": { + "type": "structure", + "members": { + "ClusterVersion": {}, + "ClusterParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeClusterVersionsResult", + "type": "structure", + "members": { + "Marker": {}, + "ClusterVersions": { + "type": "list", + "member": { + "locationName": "ClusterVersion", + "type": "structure", + "members": { + "ClusterVersion": {}, + "ClusterParameterGroupFamily": {}, + "Description": {} + } + } + } + } + } + }, + "DescribeClusters": { + "input": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeClustersResult", + "type": "structure", + "members": { + "Marker": {}, + "Clusters": { + "type": "list", + "member": { + "shape": "Sv", + "locationName": "Cluster" + } + } + } + } + }, + "DescribeDefaultClusterParameters": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupFamily" + ], + "members": { + "ParameterGroupFamily": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeDefaultClusterParametersResult", + "type": "structure", + "members": { + "DefaultClusterParameters": { + "type": "structure", + "members": { + "ParameterGroupFamily": {}, + "Marker": {}, + "Parameters": { + "shape": "S2q" + } + }, + "wrapper": true + } + } + } + }, + "DescribeEventCategories": { + "input": { + "type": "structure", + "members": { + "SourceType": {} + } + }, + "output": { + "resultWrapper": "DescribeEventCategoriesResult", + "type": "structure", + "members": { + "EventCategoriesMapList": { + "type": "list", + "member": { + "locationName": "EventCategoriesMap", + "type": "structure", + "members": { + "SourceType": {}, + "Events": { + "type": "list", + "member": { + "locationName": "EventInfoMap", + "type": "structure", + "members": { + "EventId": {}, + "EventCategories": { + "shape": "S1u" + }, + "EventDescription": {}, + "Severity": {} + }, + "wrapper": true + } + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeEventSubscriptions": { + "input": { + "type": "structure", + "members": { + "SubscriptionName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventSubscriptionsResult", + "type": "structure", + "members": { + "Marker": {}, + "EventSubscriptionsList": { + "type": "list", + "member": { + "shape": "S1w", + "locationName": "EventSubscription" + } + } + } + } + }, + "DescribeEvents": { + "input": { + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeEventsResult", + "type": "structure", + "members": { + "Marker": {}, + "Events": { + "type": "list", + "member": { + "locationName": "Event", + "type": "structure", + "members": { + "SourceIdentifier": {}, + "SourceType": {}, + "Message": {}, + "EventCategories": { + "shape": "S1u" + }, + "Severity": {}, + "Date": { + "type": "timestamp" + }, + "EventId": {} + } + } + } + } + } + }, + "DescribeHsmClientCertificates": { + "input": { + "type": "structure", + "members": { + "HsmClientCertificateIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeHsmClientCertificatesResult", + "type": "structure", + "members": { + "Marker": {}, + "HsmClientCertificates": { + "type": "list", + "member": { + "shape": "S1z", + "locationName": "HsmClientCertificate" + } + } + } + } + }, + "DescribeHsmConfigurations": { + "input": { + "type": "structure", + "members": { + "HsmConfigurationIdentifier": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeHsmConfigurationsResult", + "type": "structure", + "members": { + "Marker": {}, + "HsmConfigurations": { + "type": "list", + "member": { + "shape": "S22", + "locationName": "HsmConfiguration" + } + } + } + } + }, + "DescribeLoggingStatus": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "shape": "S3x", + "resultWrapper": "DescribeLoggingStatusResult" + } + }, + "DescribeOrderableClusterOptions": { + "input": { + "type": "structure", + "members": { + "ClusterVersion": {}, + "NodeType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeOrderableClusterOptionsResult", + "type": "structure", + "members": { + "OrderableClusterOptions": { + "type": "list", + "member": { + "locationName": "OrderableClusterOption", + "type": "structure", + "members": { + "ClusterVersion": {}, + "ClusterType": {}, + "NodeType": {}, + "AvailabilityZones": { + "type": "list", + "member": { + "shape": "S1r", + "locationName": "AvailabilityZone" + } + } + }, + "wrapper": true + } + }, + "Marker": {} + } + } + }, + "DescribeReservedNodeOfferings": { + "input": { + "type": "structure", + "members": { + "ReservedNodeOfferingId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedNodeOfferingsResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedNodeOfferings": { + "type": "list", + "member": { + "locationName": "ReservedNodeOffering", + "type": "structure", + "members": { + "ReservedNodeOfferingId": {}, + "NodeType": {}, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "OfferingType": {}, + "RecurringCharges": { + "shape": "S47" + } + }, + "wrapper": true + } + } + } + } + }, + "DescribeReservedNodes": { + "input": { + "type": "structure", + "members": { + "ReservedNodeId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeReservedNodesResult", + "type": "structure", + "members": { + "Marker": {}, + "ReservedNodes": { + "type": "list", + "member": { + "shape": "S4c", + "locationName": "ReservedNode" + } + } + } + } + }, + "DescribeResize": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "DescribeResizeResult", + "type": "structure", + "members": { + "TargetNodeType": {}, + "TargetNumberOfNodes": { + "type": "integer" + }, + "TargetClusterType": {}, + "Status": {}, + "ImportTablesCompleted": { + "type": "list", + "member": {} + }, + "ImportTablesInProgress": { + "type": "list", + "member": {} + }, + "ImportTablesNotStarted": { + "type": "list", + "member": {} + }, + "AvgResizeRateInMegaBytesPerSecond": { + "type": "double" + }, + "TotalResizeDataInMegaBytes": { + "type": "long" + }, + "ProgressInMegaBytes": { + "type": "long" + }, + "ElapsedTimeInSeconds": { + "type": "long" + }, + "EstimatedTimeToCompletionInSeconds": { + "type": "long" + } + } + } + }, + "DescribeSnapshotCopyGrants": { + "input": { + "type": "structure", + "members": { + "SnapshotCopyGrantName": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeSnapshotCopyGrantsResult", + "type": "structure", + "members": { + "Marker": {}, + "SnapshotCopyGrants": { + "type": "list", + "member": { + "shape": "S25", + "locationName": "SnapshotCopyGrant" + } + } + } + } + }, + "DescribeTableRestoreStatus": { + "input": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "TableRestoreRequestId": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {} + } + }, + "output": { + "resultWrapper": "DescribeTableRestoreStatusResult", + "type": "structure", + "members": { + "TableRestoreStatusDetails": { + "type": "list", + "member": { + "shape": "S4q", + "locationName": "TableRestoreStatus" + } + }, + "Marker": {} + } + } + }, + "DescribeTags": { + "input": { + "type": "structure", + "members": { + "ResourceName": {}, + "ResourceType": {}, + "MaxRecords": { + "type": "integer" + }, + "Marker": {}, + "TagKeys": { + "shape": "S2j" + }, + "TagValues": { + "shape": "S2l" + } + } + }, + "output": { + "resultWrapper": "DescribeTagsResult", + "type": "structure", + "members": { + "TaggedResources": { + "type": "list", + "member": { + "locationName": "TaggedResource", + "type": "structure", + "members": { + "Tag": { + "shape": "S8" + }, + "ResourceName": {}, + "ResourceType": {} + } + } + }, + "Marker": {} + } + } + }, + "DisableLogging": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "shape": "S3x", + "resultWrapper": "DisableLoggingResult" + } + }, + "DisableSnapshotCopy": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "DisableSnapshotCopyResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "EnableLogging": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "BucketName" + ], + "members": { + "ClusterIdentifier": {}, + "BucketName": {}, + "S3KeyPrefix": {} + } + }, + "output": { + "shape": "S3x", + "resultWrapper": "EnableLoggingResult" + } + }, + "EnableSnapshotCopy": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "DestinationRegion" + ], + "members": { + "ClusterIdentifier": {}, + "DestinationRegion": {}, + "RetentionPeriod": { + "type": "integer" + }, + "SnapshotCopyGrantName": {} + } + }, + "output": { + "resultWrapper": "EnableSnapshotCopyResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ModifyCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "ClusterType": {}, + "NodeType": {}, + "NumberOfNodes": { + "type": "integer" + }, + "ClusterSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "MasterUserPassword": {}, + "ClusterParameterGroupName": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "PreferredMaintenanceWindow": {}, + "ClusterVersion": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "NewClusterIdentifier": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "ElasticIp": {}, + "EnhancedVpcRouting": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ModifyClusterIamRoles": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "AddIamRoles": { + "shape": "St" + }, + "RemoveIamRoles": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "ModifyClusterIamRolesResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ModifyClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName", + "Parameters" + ], + "members": { + "ParameterGroupName": {}, + "Parameters": { + "shape": "S2q" + } + } + }, + "output": { + "shape": "S57", + "resultWrapper": "ModifyClusterParameterGroupResult" + } + }, + "ModifyClusterSubnetGroup": { + "input": { + "type": "structure", + "required": [ + "ClusterSubnetGroupName", + "SubnetIds" + ], + "members": { + "ClusterSubnetGroupName": {}, + "Description": {}, + "SubnetIds": { + "shape": "S1m" + } + } + }, + "output": { + "resultWrapper": "ModifyClusterSubnetGroupResult", + "type": "structure", + "members": { + "ClusterSubnetGroup": { + "shape": "S1o" + } + } + } + }, + "ModifyEventSubscription": { + "input": { + "type": "structure", + "required": [ + "SubscriptionName" + ], + "members": { + "SubscriptionName": {}, + "SnsTopicArn": {}, + "SourceType": {}, + "SourceIds": { + "shape": "S1t" + }, + "EventCategories": { + "shape": "S1u" + }, + "Severity": {}, + "Enabled": { + "type": "boolean" + } + } + }, + "output": { + "resultWrapper": "ModifyEventSubscriptionResult", + "type": "structure", + "members": { + "EventSubscription": { + "shape": "S1w" + } + } + } + }, + "ModifySnapshotCopyRetentionPeriod": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "RetentionPeriod" + ], + "members": { + "ClusterIdentifier": {}, + "RetentionPeriod": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "PurchaseReservedNodeOffering": { + "input": { + "type": "structure", + "required": [ + "ReservedNodeOfferingId" + ], + "members": { + "ReservedNodeOfferingId": {}, + "NodeCount": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "PurchaseReservedNodeOfferingResult", + "type": "structure", + "members": { + "ReservedNode": { + "shape": "S4c" + } + } + } + }, + "RebootCluster": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "RebootClusterResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "ResetClusterParameterGroup": { + "input": { + "type": "structure", + "required": [ + "ParameterGroupName" + ], + "members": { + "ParameterGroupName": {}, + "ResetAllParameters": { + "type": "boolean" + }, + "Parameters": { + "shape": "S2q" + } + } + }, + "output": { + "shape": "S57", + "resultWrapper": "ResetClusterParameterGroupResult" + } + }, + "RestoreFromClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "SnapshotIdentifier" + ], + "members": { + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "ClusterSubnetGroupName": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "OwnerAccount": {}, + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "ElasticIp": {}, + "ClusterParameterGroupName": {}, + "ClusterSecurityGroups": { + "shape": "Sp" + }, + "VpcSecurityGroupIds": { + "shape": "Sq" + }, + "PreferredMaintenanceWindow": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "KmsKeyId": {}, + "NodeType": {}, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "AdditionalInfo": {}, + "IamRoles": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "RestoreFromClusterSnapshotResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + }, + "RestoreTableFromClusterSnapshot": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier", + "SnapshotIdentifier", + "SourceDatabaseName", + "SourceTableName", + "NewTableName" + ], + "members": { + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SourceDatabaseName": {}, + "SourceSchemaName": {}, + "SourceTableName": {}, + "TargetDatabaseName": {}, + "TargetSchemaName": {}, + "NewTableName": {} + } + }, + "output": { + "resultWrapper": "RestoreTableFromClusterSnapshotResult", + "type": "structure", + "members": { + "TableRestoreStatus": { + "shape": "S4q" + } + } + } + }, + "RevokeClusterSecurityGroupIngress": { + "input": { + "type": "structure", + "required": [ + "ClusterSecurityGroupName" + ], + "members": { + "ClusterSecurityGroupName": {}, + "CIDRIP": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {} + } + }, + "output": { + "resultWrapper": "RevokeClusterSecurityGroupIngressResult", + "type": "structure", + "members": { + "ClusterSecurityGroup": { + "shape": "S4" + } + } + } + }, + "RevokeSnapshotAccess": { + "input": { + "type": "structure", + "required": [ + "SnapshotIdentifier", + "AccountWithRestoreAccess" + ], + "members": { + "SnapshotIdentifier": {}, + "SnapshotClusterIdentifier": {}, + "AccountWithRestoreAccess": {} + } + }, + "output": { + "resultWrapper": "RevokeSnapshotAccessResult", + "type": "structure", + "members": { + "Snapshot": { + "shape": "Sd" + } + } + } + }, + "RotateEncryptionKey": { + "input": { + "type": "structure", + "required": [ + "ClusterIdentifier" + ], + "members": { + "ClusterIdentifier": {} + } + }, + "output": { + "resultWrapper": "RotateEncryptionKeyResult", + "type": "structure", + "members": { + "Cluster": { + "shape": "Sv" + } + } + } + } + }, + "shapes": { + "S4": { + "type": "structure", + "members": { + "ClusterSecurityGroupName": {}, + "Description": {}, + "EC2SecurityGroups": { + "type": "list", + "member": { + "locationName": "EC2SecurityGroup", + "type": "structure", + "members": { + "Status": {}, + "EC2SecurityGroupName": {}, + "EC2SecurityGroupOwnerId": {}, + "Tags": { + "shape": "S7" + } + } + } + }, + "IPRanges": { + "type": "list", + "member": { + "locationName": "IPRange", + "type": "structure", + "members": { + "Status": {}, + "CIDRIP": {}, + "Tags": { + "shape": "S7" + } + } + } + }, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S7": { + "type": "list", + "member": { + "shape": "S8", + "locationName": "Tag" + } + }, + "S8": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + }, + "Sd": { + "type": "structure", + "members": { + "SnapshotIdentifier": {}, + "ClusterIdentifier": {}, + "SnapshotCreateTime": { + "type": "timestamp" + }, + "Status": {}, + "Port": { + "type": "integer" + }, + "AvailabilityZone": {}, + "ClusterCreateTime": { + "type": "timestamp" + }, + "MasterUsername": {}, + "ClusterVersion": {}, + "SnapshotType": {}, + "NodeType": {}, + "NumberOfNodes": { + "type": "integer" + }, + "DBName": {}, + "VpcId": {}, + "Encrypted": { + "type": "boolean" + }, + "KmsKeyId": {}, + "EncryptedWithHSM": { + "type": "boolean" + }, + "AccountsWithRestoreAccess": { + "type": "list", + "member": { + "locationName": "AccountWithRestoreAccess", + "type": "structure", + "members": { + "AccountId": {} + } + } + }, + "OwnerAccount": {}, + "TotalBackupSizeInMegaBytes": { + "type": "double" + }, + "ActualIncrementalBackupSizeInMegaBytes": { + "type": "double" + }, + "BackupProgressInMegaBytes": { + "type": "double" + }, + "CurrentBackupRateInMegaBytesPerSecond": { + "type": "double" + }, + "EstimatedSecondsToCompletion": { + "type": "long" + }, + "ElapsedTimeInSeconds": { + "type": "long" + }, + "SourceRegion": {}, + "Tags": { + "shape": "S7" + }, + "RestorableNodeTypes": { + "type": "list", + "member": { + "locationName": "NodeType" + } + }, + "EnhancedVpcRouting": { + "type": "boolean" + } + }, + "wrapper": true + }, + "Sp": { + "type": "list", + "member": { + "locationName": "ClusterSecurityGroupName" + } + }, + "Sq": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroupId" + } + }, + "St": { + "type": "list", + "member": { + "locationName": "IamRoleArn" + } + }, + "Sv": { + "type": "structure", + "members": { + "ClusterIdentifier": {}, + "NodeType": {}, + "ClusterStatus": {}, + "ModifyStatus": {}, + "MasterUsername": {}, + "DBName": {}, + "Endpoint": { + "type": "structure", + "members": { + "Address": {}, + "Port": { + "type": "integer" + } + } + }, + "ClusterCreateTime": { + "type": "timestamp" + }, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "ClusterSecurityGroups": { + "type": "list", + "member": { + "locationName": "ClusterSecurityGroup", + "type": "structure", + "members": { + "ClusterSecurityGroupName": {}, + "Status": {} + } + } + }, + "VpcSecurityGroups": { + "type": "list", + "member": { + "locationName": "VpcSecurityGroup", + "type": "structure", + "members": { + "VpcSecurityGroupId": {}, + "Status": {} + } + } + }, + "ClusterParameterGroups": { + "type": "list", + "member": { + "locationName": "ClusterParameterGroup", + "type": "structure", + "members": { + "ParameterGroupName": {}, + "ParameterApplyStatus": {}, + "ClusterParameterStatusList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterApplyStatus": {}, + "ParameterApplyErrorDescription": {} + } + } + } + } + } + }, + "ClusterSubnetGroupName": {}, + "VpcId": {}, + "AvailabilityZone": {}, + "PreferredMaintenanceWindow": {}, + "PendingModifiedValues": { + "type": "structure", + "members": { + "MasterUserPassword": {}, + "NodeType": {}, + "NumberOfNodes": { + "type": "integer" + }, + "ClusterType": {}, + "ClusterVersion": {}, + "AutomatedSnapshotRetentionPeriod": { + "type": "integer" + }, + "ClusterIdentifier": {}, + "PubliclyAccessible": { + "type": "boolean" + }, + "EnhancedVpcRouting": { + "type": "boolean" + } + } + }, + "ClusterVersion": {}, + "AllowVersionUpgrade": { + "type": "boolean" + }, + "NumberOfNodes": { + "type": "integer" + }, + "PubliclyAccessible": { + "type": "boolean" + }, + "Encrypted": { + "type": "boolean" + }, + "RestoreStatus": { + "type": "structure", + "members": { + "Status": {}, + "CurrentRestoreRateInMegaBytesPerSecond": { + "type": "double" + }, + "SnapshotSizeInMegaBytes": { + "type": "long" + }, + "ProgressInMegaBytes": { + "type": "long" + }, + "ElapsedTimeInSeconds": { + "type": "long" + }, + "EstimatedTimeToCompletionInSeconds": { + "type": "long" + } + } + }, + "HsmStatus": { + "type": "structure", + "members": { + "HsmClientCertificateIdentifier": {}, + "HsmConfigurationIdentifier": {}, + "Status": {} + } + }, + "ClusterSnapshotCopyStatus": { + "type": "structure", + "members": { + "DestinationRegion": {}, + "RetentionPeriod": { + "type": "long" + }, + "SnapshotCopyGrantName": {} + } + }, + "ClusterPublicKey": {}, + "ClusterNodes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "NodeRole": {}, + "PrivateIPAddress": {}, + "PublicIPAddress": {} + } + } + }, + "ElasticIpStatus": { + "type": "structure", + "members": { + "ElasticIp": {}, + "Status": {} + } + }, + "ClusterRevisionNumber": {}, + "Tags": { + "shape": "S7" + }, + "KmsKeyId": {}, + "EnhancedVpcRouting": { + "type": "boolean" + }, + "IamRoles": { + "type": "list", + "member": { + "locationName": "ClusterIamRole", + "type": "structure", + "members": { + "IamRoleArn": {}, + "ApplyStatus": {} + } + } + } + }, + "wrapper": true + }, + "S1g": { + "type": "structure", + "members": { + "ParameterGroupName": {}, + "ParameterGroupFamily": {}, + "Description": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S1m": { + "type": "list", + "member": { + "locationName": "SubnetIdentifier" + } + }, + "S1o": { + "type": "structure", + "members": { + "ClusterSubnetGroupName": {}, + "Description": {}, + "VpcId": {}, + "SubnetGroupStatus": {}, + "Subnets": { + "type": "list", + "member": { + "locationName": "Subnet", + "type": "structure", + "members": { + "SubnetIdentifier": {}, + "SubnetAvailabilityZone": { + "shape": "S1r" + }, + "SubnetStatus": {} + } + } + }, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S1r": { + "type": "structure", + "members": { + "Name": {} + }, + "wrapper": true + }, + "S1t": { + "type": "list", + "member": { + "locationName": "SourceId" + } + }, + "S1u": { + "type": "list", + "member": { + "locationName": "EventCategory" + } + }, + "S1w": { + "type": "structure", + "members": { + "CustomerAwsId": {}, + "CustSubscriptionId": {}, + "SnsTopicArn": {}, + "Status": {}, + "SubscriptionCreationTime": { + "type": "timestamp" + }, + "SourceType": {}, + "SourceIdsList": { + "shape": "S1t" + }, + "EventCategoriesList": { + "shape": "S1u" + }, + "Severity": {}, + "Enabled": { + "type": "boolean" + }, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S1z": { + "type": "structure", + "members": { + "HsmClientCertificateIdentifier": {}, + "HsmClientCertificatePublicKey": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S22": { + "type": "structure", + "members": { + "HsmConfigurationIdentifier": {}, + "Description": {}, + "HsmIpAddress": {}, + "HsmPartitionName": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S25": { + "type": "structure", + "members": { + "SnapshotCopyGrantName": {}, + "KmsKeyId": {}, + "Tags": { + "shape": "S7" + } + }, + "wrapper": true + }, + "S2j": { + "type": "list", + "member": { + "locationName": "TagKey" + } + }, + "S2l": { + "type": "list", + "member": { + "locationName": "TagValue" + } + }, + "S2q": { + "type": "list", + "member": { + "locationName": "Parameter", + "type": "structure", + "members": { + "ParameterName": {}, + "ParameterValue": {}, + "Description": {}, + "Source": {}, + "DataType": {}, + "AllowedValues": {}, + "ApplyType": {}, + "IsModifiable": { + "type": "boolean" + }, + "MinimumEngineVersion": {} + } + } + }, + "S3x": { + "type": "structure", + "members": { + "LoggingEnabled": { + "type": "boolean" + }, + "BucketName": {}, + "S3KeyPrefix": {}, + "LastSuccessfulDeliveryTime": { + "type": "timestamp" + }, + "LastFailureTime": { + "type": "timestamp" + }, + "LastFailureMessage": {} + } + }, + "S47": { + "type": "list", + "member": { + "locationName": "RecurringCharge", + "type": "structure", + "members": { + "RecurringChargeAmount": { + "type": "double" + }, + "RecurringChargeFrequency": {} + }, + "wrapper": true + } + }, + "S4c": { + "type": "structure", + "members": { + "ReservedNodeId": {}, + "ReservedNodeOfferingId": {}, + "NodeType": {}, + "StartTime": { + "type": "timestamp" + }, + "Duration": { + "type": "integer" + }, + "FixedPrice": { + "type": "double" + }, + "UsagePrice": { + "type": "double" + }, + "CurrencyCode": {}, + "NodeCount": { + "type": "integer" + }, + "State": {}, + "OfferingType": {}, + "RecurringCharges": { + "shape": "S47" + } + }, + "wrapper": true + }, + "S4q": { + "type": "structure", + "members": { + "TableRestoreRequestId": {}, + "Status": {}, + "Message": {}, + "RequestTime": { + "type": "timestamp" + }, + "ProgressInMegaBytes": { + "type": "long" + }, + "TotalDataInMegaBytes": { + "type": "long" + }, + "ClusterIdentifier": {}, + "SnapshotIdentifier": {}, + "SourceDatabaseName": {}, + "SourceSchemaName": {}, + "SourceTableName": {}, + "TargetDatabaseName": {}, + "TargetSchemaName": {}, + "NewTableName": {} + }, + "wrapper": true + }, + "S57": { + "type": "structure", + "members": { + "ParameterGroupName": {}, + "ParameterGroupStatus": {} + } + } + } +} +},{}],105:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeClusterParameterGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ParameterGroups" + }, + "DescribeClusterParameters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Parameters" + }, + "DescribeClusterSecurityGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ClusterSecurityGroups" + }, + "DescribeClusterSnapshots": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Snapshots" + }, + "DescribeClusterSubnetGroups": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ClusterSubnetGroups" + }, + "DescribeClusterVersions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ClusterVersions" + }, + "DescribeClusters": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Clusters" + }, + "DescribeDefaultClusterParameters": { + "input_token": "Marker", + "output_token": "DefaultClusterParameters.Marker", + "limit_key": "MaxRecords", + "result_key": "DefaultClusterParameters.Parameters" + }, + "DescribeEventSubscriptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "EventSubscriptionsList" + }, + "DescribeEvents": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "Events" + }, + "DescribeHsmClientCertificates": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "HsmClientCertificates" + }, + "DescribeHsmConfigurations": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "HsmConfigurations" + }, + "DescribeOrderableClusterOptions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "OrderableClusterOptions" + }, + "DescribeReservedNodeOfferings": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedNodeOfferings" + }, + "DescribeReservedNodes": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords", + "result_key": "ReservedNodes" + } + } +} + +},{}],106:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "ClusterAvailable": { + "delay": 60, + "operation": "DescribeClusters", + "maxAttempts": 30, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Clusters[].ClusterStatus" + }, + { + "expected": "deleting", + "matcher": "pathAny", + "state": "failure", + "argument": "Clusters[].ClusterStatus" + }, + { + "expected": "ClusterNotFound", + "matcher": "error", + "state": "retry" + } + ] + }, + "ClusterDeleted": { + "delay": 60, + "operation": "DescribeClusters", + "maxAttempts": 30, + "acceptors": [ + { + "expected": "ClusterNotFound", + "matcher": "error", + "state": "success" + }, + { + "expected": "creating", + "matcher": "pathAny", + "state": "failure", + "argument": "Clusters[].ClusterStatus" + }, + { + "expected": "modifying", + "matcher": "pathAny", + "state": "failure", + "argument": "Clusters[].ClusterStatus" + } + ] + }, + "ClusterRestored": { + "operation": "DescribeClusters", + "maxAttempts": 30, + "delay": 60, + "acceptors": [ + { + "state": "success", + "matcher": "pathAll", + "argument": "Clusters[].RestoreStatus.Status", + "expected": "completed" + }, + { + "state": "failure", + "matcher": "pathAny", + "argument": "Clusters[].ClusterStatus", + "expected": "deleting" + } + ] + }, + "SnapshotAvailable": { + "delay": 15, + "operation": "DescribeClusterSnapshots", + "maxAttempts": 20, + "acceptors": [ + { + "expected": "available", + "matcher": "pathAll", + "state": "success", + "argument": "Snapshots[].Status" + }, + { + "expected": "failed", + "matcher": "pathAny", + "state": "failure", + "argument": "Snapshots[].Status" + }, + { + "expected": "deleted", + "matcher": "pathAny", + "state": "failure", + "argument": "Snapshots[].Status" + } + ] + } + } +} + +},{}],107:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-04-01", + "endpointPrefix": "route53", + "globalEndpoint": "route53.amazonaws.com", + "protocol": "rest-xml", + "serviceAbbreviation": "Route 53", + "serviceFullName": "Amazon Route 53", + "signatureVersion": "v4" + }, + "operations": { + "AssociateVPCWithHostedZone": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc" + }, + "input": { + "locationName": "AssociateVPCWithHostedZoneRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "VPC" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "VPC": { + "shape": "S3" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "ChangeResourceRecordSets": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/" + }, + "input": { + "locationName": "ChangeResourceRecordSetsRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "ChangeBatch" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "ChangeBatch": { + "type": "structure", + "required": [ + "Changes" + ], + "members": { + "Comment": {}, + "Changes": { + "shape": "Se" + } + } + } + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "ChangeTagsForResource": { + "http": { + "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" + }, + "input": { + "locationName": "ChangeTagsForResourceRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": { + "location": "uri", + "locationName": "ResourceType" + }, + "ResourceId": { + "location": "uri", + "locationName": "ResourceId" + }, + "AddTags": { + "shape": "S14" + }, + "RemoveTagKeys": { + "type": "list", + "member": { + "locationName": "Key" + } + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateHealthCheck": { + "http": { + "requestUri": "/2013-04-01/healthcheck", + "responseCode": 201 + }, + "input": { + "locationName": "CreateHealthCheckRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "CallerReference", + "HealthCheckConfig" + ], + "members": { + "CallerReference": {}, + "HealthCheckConfig": { + "shape": "S1c" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheck", + "Location" + ], + "members": { + "HealthCheck": { + "shape": "S1x" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateHostedZone": { + "http": { + "requestUri": "/2013-04-01/hostedzone", + "responseCode": 201 + }, + "input": { + "locationName": "CreateHostedZoneRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Name", + "CallerReference" + ], + "members": { + "Name": {}, + "VPC": { + "shape": "S3" + }, + "CallerReference": {}, + "HostedZoneConfig": { + "shape": "S2d" + }, + "DelegationSetId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZone", + "ChangeInfo", + "DelegationSet", + "Location" + ], + "members": { + "HostedZone": { + "shape": "S2g" + }, + "ChangeInfo": { + "shape": "S8" + }, + "DelegationSet": { + "shape": "S2i" + }, + "VPC": { + "shape": "S3" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateReusableDelegationSet": { + "http": { + "requestUri": "/2013-04-01/delegationset", + "responseCode": 201 + }, + "input": { + "locationName": "CreateReusableDelegationSetRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "CallerReference" + ], + "members": { + "CallerReference": {}, + "HostedZoneId": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DelegationSet", + "Location" + ], + "members": { + "DelegationSet": { + "shape": "S2i" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateTrafficPolicy": { + "http": { + "requestUri": "/2013-04-01/trafficpolicy", + "responseCode": 201 + }, + "input": { + "locationName": "CreateTrafficPolicyRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Name", + "Document" + ], + "members": { + "Name": {}, + "Document": {}, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy", + "Location" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateTrafficPolicyInstance": { + "http": { + "requestUri": "/2013-04-01/trafficpolicyinstance", + "responseCode": 201 + }, + "input": { + "locationName": "CreateTrafficPolicyInstanceRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "Name", + "TTL", + "TrafficPolicyId", + "TrafficPolicyVersion" + ], + "members": { + "HostedZoneId": {}, + "Name": {}, + "TTL": { + "type": "long" + }, + "TrafficPolicyId": {}, + "TrafficPolicyVersion": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstance", + "Location" + ], + "members": { + "TrafficPolicyInstance": { + "shape": "S2w" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "CreateTrafficPolicyVersion": { + "http": { + "requestUri": "/2013-04-01/trafficpolicy/{Id}", + "responseCode": 201 + }, + "input": { + "locationName": "CreateTrafficPolicyVersionRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id", + "Document" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Document": {}, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy", + "Location" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + }, + "Location": { + "location": "header", + "locationName": "Location" + } + } + } + }, + "DeleteHealthCheck": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteHostedZone": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/hostedzone/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "DeleteReusableDelegationSet": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/delegationset/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTrafficPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Version" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Version": { + "location": "uri", + "locationName": "Version", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteTrafficPolicyInstance": { + "http": { + "method": "DELETE", + "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisassociateVPCFromHostedZone": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc" + }, + "input": { + "locationName": "DisassociateVPCFromHostedZoneRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HostedZoneId", + "VPC" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "VPC": { + "shape": "S3" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "GetChange": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/change/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ChangeInfo" + ], + "members": { + "ChangeInfo": { + "shape": "S8" + } + } + } + }, + "GetChangeDetails": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/changedetails/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + }, + "deprecated": true + }, + "output": { + "type": "structure", + "required": [ + "ChangeBatchRecord" + ], + "members": { + "ChangeBatchRecord": { + "shape": "S3i" + } + }, + "deprecated": true + }, + "deprecated": true + }, + "GetCheckerIpRanges": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/checkeripranges" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "CheckerIpRanges" + ], + "members": { + "CheckerIpRanges": { + "type": "list", + "member": {} + } + } + } + }, + "GetGeoLocation": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/geolocation" + }, + "input": { + "type": "structure", + "members": { + "ContinentCode": { + "location": "querystring", + "locationName": "continentcode" + }, + "CountryCode": { + "location": "querystring", + "locationName": "countrycode" + }, + "SubdivisionCode": { + "location": "querystring", + "locationName": "subdivisioncode" + } + } + }, + "output": { + "type": "structure", + "required": [ + "GeoLocationDetails" + ], + "members": { + "GeoLocationDetails": { + "shape": "S3q" + } + } + } + }, + "GetHealthCheck": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheck" + ], + "members": { + "HealthCheck": { + "shape": "S1x" + } + } + } + }, + "GetHealthCheckCount": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheckcount" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "HealthCheckCount" + ], + "members": { + "HealthCheckCount": { + "type": "long" + } + } + } + }, + "GetHealthCheckLastFailureReason": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheckObservations" + ], + "members": { + "HealthCheckObservations": { + "shape": "S41" + } + } + } + }, + "GetHealthCheckStatus": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status" + }, + "input": { + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheckObservations" + ], + "members": { + "HealthCheckObservations": { + "shape": "S41" + } + } + } + }, + "GetHostedZone": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZone" + ], + "members": { + "HostedZone": { + "shape": "S2g" + }, + "DelegationSet": { + "shape": "S2i" + }, + "VPCs": { + "type": "list", + "member": { + "shape": "S3", + "locationName": "VPC" + } + } + } + } + }, + "GetHostedZoneCount": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzonecount" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "HostedZoneCount" + ], + "members": { + "HostedZoneCount": { + "type": "long" + } + } + } + }, + "GetReusableDelegationSet": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/delegationset/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "DelegationSet" + ], + "members": { + "DelegationSet": { + "shape": "S2i" + } + } + } + }, + "GetTrafficPolicy": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" + }, + "input": { + "type": "structure", + "required": [ + "Id", + "Version" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Version": { + "location": "uri", + "locationName": "Version", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + } + } + } + }, + "GetTrafficPolicyInstance": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstance" + ], + "members": { + "TrafficPolicyInstance": { + "shape": "S2w" + } + } + } + }, + "GetTrafficPolicyInstanceCount": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstancecount" + }, + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstanceCount" + ], + "members": { + "TrafficPolicyInstanceCount": { + "type": "integer" + } + } + } + }, + "ListChangeBatchesByHostedZone": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}/changes" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId", + "StartDate", + "EndDate" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "StartDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "startDate" + }, + "EndDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "endDate" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxItems" + }, + "Marker": { + "location": "querystring", + "locationName": "marker" + } + }, + "deprecated": true + }, + "output": { + "type": "structure", + "required": [ + "MaxItems", + "Marker", + "ChangeBatchRecords" + ], + "members": { + "MaxItems": {}, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "ChangeBatchRecords": { + "shape": "S4s" + }, + "NextMarker": {} + }, + "deprecated": true + }, + "deprecated": true + }, + "ListChangeBatchesByRRSet": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}/rrsChanges" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId", + "Name", + "Type", + "StartDate", + "EndDate" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "Name": { + "location": "querystring", + "locationName": "rrSet_name" + }, + "Type": { + "location": "querystring", + "locationName": "type" + }, + "SetIdentifier": { + "location": "querystring", + "locationName": "identifier" + }, + "StartDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "startDate" + }, + "EndDate": { + "shape": "S4n", + "location": "querystring", + "locationName": "endDate" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxItems" + }, + "Marker": { + "location": "querystring", + "locationName": "marker" + } + }, + "deprecated": true + }, + "output": { + "type": "structure", + "required": [ + "MaxItems", + "Marker", + "ChangeBatchRecords" + ], + "members": { + "MaxItems": {}, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "ChangeBatchRecords": { + "shape": "S4s" + }, + "NextMarker": {} + }, + "deprecated": true + }, + "deprecated": true + }, + "ListGeoLocations": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/geolocations" + }, + "input": { + "type": "structure", + "members": { + "StartContinentCode": { + "location": "querystring", + "locationName": "startcontinentcode" + }, + "StartCountryCode": { + "location": "querystring", + "locationName": "startcountrycode" + }, + "StartSubdivisionCode": { + "location": "querystring", + "locationName": "startsubdivisioncode" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "GeoLocationDetailsList", + "IsTruncated", + "MaxItems" + ], + "members": { + "GeoLocationDetailsList": { + "type": "list", + "member": { + "shape": "S3q", + "locationName": "GeoLocationDetails" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "NextContinentCode": {}, + "NextCountryCode": {}, + "NextSubdivisionCode": {}, + "MaxItems": {} + } + } + }, + "ListHealthChecks": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/healthcheck" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HealthChecks", + "Marker", + "IsTruncated", + "MaxItems" + ], + "members": { + "HealthChecks": { + "type": "list", + "member": { + "shape": "S1x", + "locationName": "HealthCheck" + } + }, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextMarker": {}, + "MaxItems": {} + } + } + }, + "ListHostedZones": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + }, + "DelegationSetId": { + "location": "querystring", + "locationName": "delegationsetid" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZones", + "Marker", + "IsTruncated", + "MaxItems" + ], + "members": { + "HostedZones": { + "shape": "S53" + }, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextMarker": {}, + "MaxItems": {} + } + } + }, + "ListHostedZonesByName": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzonesbyname" + }, + "input": { + "type": "structure", + "members": { + "DNSName": { + "location": "querystring", + "locationName": "dnsname" + }, + "HostedZoneId": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZones", + "IsTruncated", + "MaxItems" + ], + "members": { + "HostedZones": { + "shape": "S53" + }, + "DNSName": {}, + "HostedZoneId": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextDNSName": {}, + "NextHostedZoneId": {}, + "MaxItems": {} + } + } + }, + "ListResourceRecordSets": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/hostedzone/{Id}/rrset" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId" + ], + "members": { + "HostedZoneId": { + "location": "uri", + "locationName": "Id" + }, + "StartRecordName": { + "location": "querystring", + "locationName": "name" + }, + "StartRecordType": { + "location": "querystring", + "locationName": "type" + }, + "StartRecordIdentifier": { + "location": "querystring", + "locationName": "identifier" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ResourceRecordSets", + "IsTruncated", + "MaxItems" + ], + "members": { + "ResourceRecordSets": { + "type": "list", + "member": { + "shape": "Sh", + "locationName": "ResourceRecordSet" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "NextRecordName": {}, + "NextRecordType": {}, + "NextRecordIdentifier": {}, + "MaxItems": {} + } + } + }, + "ListReusableDelegationSets": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/delegationset" + }, + "input": { + "type": "structure", + "members": { + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "DelegationSets", + "Marker", + "IsTruncated", + "MaxItems" + ], + "members": { + "DelegationSets": { + "type": "list", + "member": { + "shape": "S2i", + "locationName": "DelegationSet" + } + }, + "Marker": {}, + "IsTruncated": { + "type": "boolean" + }, + "NextMarker": {}, + "MaxItems": {} + } + } + }, + "ListTagsForResource": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" + }, + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": { + "location": "uri", + "locationName": "ResourceType" + }, + "ResourceId": { + "location": "uri", + "locationName": "ResourceId" + } + } + }, + "output": { + "type": "structure", + "required": [ + "ResourceTagSet" + ], + "members": { + "ResourceTagSet": { + "shape": "S5e" + } + } + } + }, + "ListTagsForResources": { + "http": { + "requestUri": "/2013-04-01/tags/{ResourceType}" + }, + "input": { + "locationName": "ListTagsForResourcesRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "ResourceType", + "ResourceIds" + ], + "members": { + "ResourceType": { + "location": "uri", + "locationName": "ResourceType" + }, + "ResourceIds": { + "type": "list", + "member": { + "locationName": "ResourceId" + } + } + } + }, + "output": { + "type": "structure", + "required": [ + "ResourceTagSets" + ], + "members": { + "ResourceTagSets": { + "type": "list", + "member": { + "shape": "S5e", + "locationName": "ResourceTagSet" + } + } + } + } + }, + "ListTrafficPolicies": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicies" + }, + "input": { + "type": "structure", + "members": { + "TrafficPolicyIdMarker": { + "location": "querystring", + "locationName": "trafficpolicyid" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicySummaries", + "IsTruncated", + "TrafficPolicyIdMarker", + "MaxItems" + ], + "members": { + "TrafficPolicySummaries": { + "type": "list", + "member": { + "locationName": "TrafficPolicySummary", + "type": "structure", + "required": [ + "Id", + "Name", + "Type", + "LatestVersion", + "TrafficPolicyCount" + ], + "members": { + "Id": {}, + "Name": {}, + "Type": {}, + "LatestVersion": { + "type": "integer" + }, + "TrafficPolicyCount": { + "type": "integer" + } + } + } + }, + "IsTruncated": { + "type": "boolean" + }, + "TrafficPolicyIdMarker": {}, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyInstances": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstances" + }, + "input": { + "type": "structure", + "members": { + "HostedZoneIdMarker": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "TrafficPolicyInstanceNameMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancename" + }, + "TrafficPolicyInstanceTypeMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancetype" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstances", + "IsTruncated", + "MaxItems" + ], + "members": { + "TrafficPolicyInstances": { + "shape": "S5p" + }, + "HostedZoneIdMarker": {}, + "TrafficPolicyInstanceNameMarker": {}, + "TrafficPolicyInstanceTypeMarker": {}, + "IsTruncated": { + "type": "boolean" + }, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyInstancesByHostedZone": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId" + ], + "members": { + "HostedZoneId": { + "location": "querystring", + "locationName": "id" + }, + "TrafficPolicyInstanceNameMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancename" + }, + "TrafficPolicyInstanceTypeMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancetype" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstances", + "IsTruncated", + "MaxItems" + ], + "members": { + "TrafficPolicyInstances": { + "shape": "S5p" + }, + "TrafficPolicyInstanceNameMarker": {}, + "TrafficPolicyInstanceTypeMarker": {}, + "IsTruncated": { + "type": "boolean" + }, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyInstancesByPolicy": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy" + }, + "input": { + "type": "structure", + "required": [ + "TrafficPolicyId", + "TrafficPolicyVersion" + ], + "members": { + "TrafficPolicyId": { + "location": "querystring", + "locationName": "id" + }, + "TrafficPolicyVersion": { + "location": "querystring", + "locationName": "version", + "type": "integer" + }, + "HostedZoneIdMarker": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "TrafficPolicyInstanceNameMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancename" + }, + "TrafficPolicyInstanceTypeMarker": { + "location": "querystring", + "locationName": "trafficpolicyinstancetype" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstances", + "IsTruncated", + "MaxItems" + ], + "members": { + "TrafficPolicyInstances": { + "shape": "S5p" + }, + "HostedZoneIdMarker": {}, + "TrafficPolicyInstanceNameMarker": {}, + "TrafficPolicyInstanceTypeMarker": {}, + "IsTruncated": { + "type": "boolean" + }, + "MaxItems": {} + } + } + }, + "ListTrafficPolicyVersions": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions" + }, + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "TrafficPolicyVersionMarker": { + "location": "querystring", + "locationName": "trafficpolicyversion" + }, + "MaxItems": { + "location": "querystring", + "locationName": "maxitems" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicies", + "IsTruncated", + "TrafficPolicyVersionMarker", + "MaxItems" + ], + "members": { + "TrafficPolicies": { + "type": "list", + "member": { + "shape": "S2r", + "locationName": "TrafficPolicy" + } + }, + "IsTruncated": { + "type": "boolean" + }, + "TrafficPolicyVersionMarker": {}, + "MaxItems": {} + } + } + }, + "TestDNSAnswer": { + "http": { + "method": "GET", + "requestUri": "/2013-04-01/testdnsanswer" + }, + "input": { + "type": "structure", + "required": [ + "HostedZoneId", + "RecordName", + "RecordType" + ], + "members": { + "HostedZoneId": { + "location": "querystring", + "locationName": "hostedzoneid" + }, + "RecordName": { + "location": "querystring", + "locationName": "recordname" + }, + "RecordType": { + "location": "querystring", + "locationName": "recordtype" + }, + "ResolverIP": { + "location": "querystring", + "locationName": "resolverip" + }, + "EDNS0ClientSubnetIP": { + "location": "querystring", + "locationName": "edns0clientsubnetip" + }, + "EDNS0ClientSubnetMask": { + "location": "querystring", + "locationName": "edns0clientsubnetmask" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Nameserver", + "RecordName", + "RecordType", + "RecordData", + "ResponseCode", + "Protocol" + ], + "members": { + "Nameserver": {}, + "RecordName": {}, + "RecordType": {}, + "RecordData": { + "type": "list", + "member": { + "locationName": "RecordDataEntry" + } + }, + "ResponseCode": {}, + "Protocol": {} + } + } + }, + "UpdateHealthCheck": { + "http": { + "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" + }, + "input": { + "locationName": "UpdateHealthCheckRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "HealthCheckId" + ], + "members": { + "HealthCheckId": { + "location": "uri", + "locationName": "HealthCheckId" + }, + "HealthCheckVersion": { + "type": "long" + }, + "IPAddress": {}, + "Port": { + "type": "integer" + }, + "ResourcePath": {}, + "FullyQualifiedDomainName": {}, + "SearchString": {}, + "FailureThreshold": { + "type": "integer" + }, + "Inverted": { + "type": "boolean" + }, + "HealthThreshold": { + "type": "integer" + }, + "ChildHealthChecks": { + "shape": "S1o" + }, + "EnableSNI": { + "type": "boolean" + }, + "Regions": { + "shape": "S1q" + }, + "AlarmIdentifier": { + "shape": "S1s" + }, + "InsufficientDataHealthStatus": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HealthCheck" + ], + "members": { + "HealthCheck": { + "shape": "S1x" + } + } + } + }, + "UpdateHostedZoneComment": { + "http": { + "requestUri": "/2013-04-01/hostedzone/{Id}" + }, + "input": { + "locationName": "UpdateHostedZoneCommentRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "HostedZone" + ], + "members": { + "HostedZone": { + "shape": "S2g" + } + } + } + }, + "UpdateTrafficPolicyComment": { + "http": { + "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" + }, + "input": { + "locationName": "UpdateTrafficPolicyCommentRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id", + "Version", + "Comment" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "Version": { + "location": "uri", + "locationName": "Version", + "type": "integer" + }, + "Comment": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicy" + ], + "members": { + "TrafficPolicy": { + "shape": "S2r" + } + } + } + }, + "UpdateTrafficPolicyInstance": { + "http": { + "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" + }, + "input": { + "locationName": "UpdateTrafficPolicyInstanceRequest", + "xmlNamespace": { + "uri": "https://route53.amazonaws.com/doc/2013-04-01/" + }, + "type": "structure", + "required": [ + "Id", + "TTL", + "TrafficPolicyId", + "TrafficPolicyVersion" + ], + "members": { + "Id": { + "location": "uri", + "locationName": "Id" + }, + "TTL": { + "type": "long" + }, + "TrafficPolicyId": {}, + "TrafficPolicyVersion": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TrafficPolicyInstance" + ], + "members": { + "TrafficPolicyInstance": { + "shape": "S2w" + } + } + } + } + }, + "shapes": { + "S3": { + "type": "structure", + "members": { + "VPCRegion": {}, + "VPCId": {} + } + }, + "S8": { + "type": "structure", + "required": [ + "Id", + "Status", + "SubmittedAt" + ], + "members": { + "Id": {}, + "Status": {}, + "SubmittedAt": { + "type": "timestamp" + }, + "Comment": {} + } + }, + "Se": { + "type": "list", + "member": { + "locationName": "Change", + "type": "structure", + "required": [ + "Action", + "ResourceRecordSet" + ], + "members": { + "Action": {}, + "ResourceRecordSet": { + "shape": "Sh" + } + } + } + }, + "Sh": { + "type": "structure", + "required": [ + "Name", + "Type" + ], + "members": { + "Name": {}, + "Type": {}, + "SetIdentifier": {}, + "Weight": { + "type": "long" + }, + "Region": {}, + "GeoLocation": { + "type": "structure", + "members": { + "ContinentCode": {}, + "CountryCode": {}, + "SubdivisionCode": {} + } + }, + "Failover": {}, + "TTL": { + "type": "long" + }, + "ResourceRecords": { + "type": "list", + "member": { + "locationName": "ResourceRecord", + "type": "structure", + "required": [ + "Value" + ], + "members": { + "Value": {} + } + } + }, + "AliasTarget": { + "type": "structure", + "required": [ + "HostedZoneId", + "DNSName", + "EvaluateTargetHealth" + ], + "members": { + "HostedZoneId": {}, + "DNSName": {}, + "EvaluateTargetHealth": { + "type": "boolean" + } + } + }, + "HealthCheckId": {}, + "TrafficPolicyInstanceId": {} + } + }, + "S14": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S1c": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "IPAddress": {}, + "Port": { + "type": "integer" + }, + "Type": {}, + "ResourcePath": {}, + "FullyQualifiedDomainName": {}, + "SearchString": {}, + "RequestInterval": { + "type": "integer" + }, + "FailureThreshold": { + "type": "integer" + }, + "MeasureLatency": { + "type": "boolean" + }, + "Inverted": { + "type": "boolean" + }, + "HealthThreshold": { + "type": "integer" + }, + "ChildHealthChecks": { + "shape": "S1o" + }, + "EnableSNI": { + "type": "boolean" + }, + "Regions": { + "shape": "S1q" + }, + "AlarmIdentifier": { + "shape": "S1s" + }, + "InsufficientDataHealthStatus": {} + } + }, + "S1o": { + "type": "list", + "member": { + "locationName": "ChildHealthCheck" + } + }, + "S1q": { + "type": "list", + "member": { + "locationName": "Region" + } + }, + "S1s": { + "type": "structure", + "required": [ + "Region", + "Name" + ], + "members": { + "Region": {}, + "Name": {} + } + }, + "S1x": { + "type": "structure", + "required": [ + "Id", + "CallerReference", + "HealthCheckConfig", + "HealthCheckVersion" + ], + "members": { + "Id": {}, + "CallerReference": {}, + "HealthCheckConfig": { + "shape": "S1c" + }, + "HealthCheckVersion": { + "type": "long" + }, + "CloudWatchAlarmConfiguration": { + "type": "structure", + "required": [ + "EvaluationPeriods", + "Threshold", + "ComparisonOperator", + "Period", + "MetricName", + "Namespace", + "Statistic" + ], + "members": { + "EvaluationPeriods": { + "type": "integer" + }, + "Threshold": { + "type": "double" + }, + "ComparisonOperator": {}, + "Period": { + "type": "integer" + }, + "MetricName": {}, + "Namespace": {}, + "Statistic": {}, + "Dimensions": { + "type": "list", + "member": { + "locationName": "Dimension", + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + } + } + } + } + } + } + }, + "S2d": { + "type": "structure", + "members": { + "Comment": {}, + "PrivateZone": { + "type": "boolean" + } + } + }, + "S2g": { + "type": "structure", + "required": [ + "Id", + "Name", + "CallerReference" + ], + "members": { + "Id": {}, + "Name": {}, + "CallerReference": {}, + "Config": { + "shape": "S2d" + }, + "ResourceRecordSetCount": { + "type": "long" + } + } + }, + "S2i": { + "type": "structure", + "required": [ + "NameServers" + ], + "members": { + "Id": {}, + "CallerReference": {}, + "NameServers": { + "type": "list", + "member": { + "locationName": "NameServer" + } + } + } + }, + "S2r": { + "type": "structure", + "required": [ + "Id", + "Version", + "Name", + "Type", + "Document" + ], + "members": { + "Id": {}, + "Version": { + "type": "integer" + }, + "Name": {}, + "Type": {}, + "Document": {}, + "Comment": {} + } + }, + "S2w": { + "type": "structure", + "required": [ + "Id", + "HostedZoneId", + "Name", + "TTL", + "State", + "Message", + "TrafficPolicyId", + "TrafficPolicyVersion", + "TrafficPolicyType" + ], + "members": { + "Id": {}, + "HostedZoneId": {}, + "Name": {}, + "TTL": { + "type": "long" + }, + "State": {}, + "Message": {}, + "TrafficPolicyId": {}, + "TrafficPolicyVersion": { + "type": "integer" + }, + "TrafficPolicyType": {} + } + }, + "S3i": { + "type": "structure", + "required": [ + "Id", + "Status" + ], + "members": { + "Id": {}, + "SubmittedAt": { + "type": "timestamp" + }, + "Status": {}, + "Comment": {}, + "Submitter": {}, + "Changes": { + "shape": "Se" + } + }, + "deprecated": true + }, + "S3q": { + "type": "structure", + "members": { + "ContinentCode": {}, + "ContinentName": {}, + "CountryCode": {}, + "CountryName": {}, + "SubdivisionCode": {}, + "SubdivisionName": {} + } + }, + "S41": { + "type": "list", + "member": { + "locationName": "HealthCheckObservation", + "type": "structure", + "members": { + "Region": {}, + "IPAddress": {}, + "StatusReport": { + "type": "structure", + "members": { + "Status": {}, + "CheckedTime": { + "type": "timestamp" + } + } + } + } + } + }, + "S4n": { + "type": "string", + "deprecated": true + }, + "S4s": { + "type": "list", + "member": { + "shape": "S3i", + "locationName": "ChangeBatchRecord" + }, + "deprecated": true + }, + "S53": { + "type": "list", + "member": { + "shape": "S2g", + "locationName": "HostedZone" + } + }, + "S5e": { + "type": "structure", + "members": { + "ResourceType": {}, + "ResourceId": {}, + "Tags": { + "shape": "S14" + } + } + }, + "S5p": { + "type": "list", + "member": { + "shape": "S2w", + "locationName": "TrafficPolicyInstance" + } + } + } +} +},{}],108:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListHealthChecks": { + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "IsTruncated", + "limit_key": "MaxItems", + "result_key": "HealthChecks" + }, + "ListHostedZones": { + "input_token": "Marker", + "output_token": "NextMarker", + "more_results": "IsTruncated", + "limit_key": "MaxItems", + "result_key": "HostedZones" + }, + "ListResourceRecordSets": { + "more_results": "IsTruncated", + "limit_key": "MaxItems", + "result_key": "ResourceRecordSets", + "input_token": [ + "StartRecordName", + "StartRecordType", + "StartRecordIdentifier" + ], + "output_token": [ + "NextRecordName", + "NextRecordType", + "NextRecordIdentifier" + ] + } + } +} + +},{}],109:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "ResourceRecordSetsChanged": { + "delay": 30, + "maxAttempts": 60, + "operation": "GetChange", + "acceptors": [ + { + "matcher": "path", + "expected": "INSYNC", + "argument": "ChangeInfo.Status", + "state": "success" + } + ] + } + } +} + +},{}],110:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-05-15", + "endpointPrefix": "route53domains", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "Amazon Route 53 Domains", + "signatureVersion": "v4", + "targetPrefix": "Route53Domains_v20140515" + }, + "operations": { + "CheckDomainAvailability": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "IdnLangCode": {} + } + }, + "output": { + "type": "structure", + "required": [ + "Availability" + ], + "members": { + "Availability": {} + } + } + }, + "DeleteTagsForDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "TagsToDelete" + ], + "members": { + "DomainName": {}, + "TagsToDelete": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableDomainAutoRenew": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DisableDomainTransferLock": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "EnableDomainAutoRenew": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "EnableDomainTransferLock": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "GetContactReachabilityStatus": { + "input": { + "type": "structure", + "members": { + "domainName": {} + } + }, + "output": { + "type": "structure", + "members": { + "domainName": {}, + "status": {} + } + } + }, + "GetDomainDetail": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "DomainName", + "Nameservers", + "AdminContact", + "RegistrantContact", + "TechContact" + ], + "members": { + "DomainName": {}, + "Nameservers": { + "shape": "So" + }, + "AutoRenew": { + "type": "boolean" + }, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + }, + "AdminPrivacy": { + "type": "boolean" + }, + "RegistrantPrivacy": { + "type": "boolean" + }, + "TechPrivacy": { + "type": "boolean" + }, + "RegistrarName": {}, + "WhoIsServer": {}, + "RegistrarUrl": {}, + "AbuseContactEmail": {}, + "AbuseContactPhone": {}, + "RegistryDomainId": {}, + "CreationDate": { + "type": "timestamp" + }, + "UpdatedDate": { + "type": "timestamp" + }, + "ExpirationDate": { + "type": "timestamp" + }, + "Reseller": {}, + "DnsSec": {}, + "StatusList": { + "type": "list", + "member": {} + } + } + } + }, + "GetDomainSuggestions": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "SuggestionCount", + "OnlyAvailable" + ], + "members": { + "DomainName": {}, + "SuggestionCount": { + "type": "integer" + }, + "OnlyAvailable": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "SuggestionsList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DomainName": {}, + "Availability": {} + } + } + } + } + } + }, + "GetOperationDetail": { + "input": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + }, + "output": { + "type": "structure", + "members": { + "OperationId": {}, + "Status": {}, + "Message": {}, + "DomainName": {}, + "Type": {}, + "SubmittedDate": { + "type": "timestamp" + } + } + } + }, + "ListDomains": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Domains" + ], + "members": { + "Domains": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AutoRenew": { + "type": "boolean" + }, + "TransferLock": { + "type": "boolean" + }, + "Expiry": { + "type": "timestamp" + } + } + } + }, + "NextPageMarker": {} + } + } + }, + "ListOperations": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "Operations" + ], + "members": { + "Operations": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "OperationId", + "Status", + "Type", + "SubmittedDate" + ], + "members": { + "OperationId": {}, + "Status": {}, + "Type": {}, + "SubmittedDate": { + "type": "timestamp" + } + } + } + }, + "NextPageMarker": {} + } + } + }, + "ListTagsForDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "TagList" + ], + "members": { + "TagList": { + "shape": "S24" + } + } + } + }, + "RegisterDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "DurationInYears", + "AdminContact", + "RegistrantContact", + "TechContact" + ], + "members": { + "DomainName": {}, + "IdnLangCode": {}, + "DurationInYears": { + "type": "integer" + }, + "AutoRenew": { + "type": "boolean" + }, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + }, + "PrivacyProtectAdminContact": { + "type": "boolean" + }, + "PrivacyProtectRegistrantContact": { + "type": "boolean" + }, + "PrivacyProtectTechContact": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "RenewDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "CurrentExpiryYear" + ], + "members": { + "DomainName": {}, + "DurationInYears": { + "type": "integer" + }, + "CurrentExpiryYear": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "ResendContactReachabilityEmail": { + "input": { + "type": "structure", + "members": { + "domainName": {} + } + }, + "output": { + "type": "structure", + "members": { + "domainName": {}, + "emailAddress": {}, + "isAlreadyVerified": { + "type": "boolean" + } + } + } + }, + "RetrieveDomainAuthCode": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {} + } + }, + "output": { + "type": "structure", + "required": [ + "AuthCode" + ], + "members": { + "AuthCode": { + "shape": "S2h" + } + } + } + }, + "TransferDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "DurationInYears", + "AdminContact", + "RegistrantContact", + "TechContact" + ], + "members": { + "DomainName": {}, + "IdnLangCode": {}, + "DurationInYears": { + "type": "integer" + }, + "Nameservers": { + "shape": "So" + }, + "AuthCode": { + "shape": "S2h" + }, + "AutoRenew": { + "type": "boolean" + }, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + }, + "PrivacyProtectAdminContact": { + "type": "boolean" + }, + "PrivacyProtectRegistrantContact": { + "type": "boolean" + }, + "PrivacyProtectTechContact": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateDomainContact": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AdminContact": { + "shape": "Su" + }, + "RegistrantContact": { + "shape": "Su" + }, + "TechContact": { + "shape": "Su" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateDomainContactPrivacy": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "AdminPrivacy": { + "type": "boolean" + }, + "RegistrantPrivacy": { + "type": "boolean" + }, + "TechPrivacy": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateDomainNameservers": { + "input": { + "type": "structure", + "required": [ + "DomainName", + "Nameservers" + ], + "members": { + "DomainName": {}, + "FIAuthKey": {}, + "Nameservers": { + "shape": "So" + } + } + }, + "output": { + "type": "structure", + "required": [ + "OperationId" + ], + "members": { + "OperationId": {} + } + } + }, + "UpdateTagsForDomain": { + "input": { + "type": "structure", + "required": [ + "DomainName" + ], + "members": { + "DomainName": {}, + "TagsToUpdate": { + "shape": "S24" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "ViewBilling": { + "input": { + "type": "structure", + "members": { + "Start": { + "type": "timestamp" + }, + "End": { + "type": "timestamp" + }, + "Marker": {}, + "MaxItems": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextPageMarker": {}, + "BillingRecords": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DomainName": {}, + "Operation": {}, + "InvoiceId": {}, + "BillDate": { + "type": "timestamp" + }, + "Price": { + "type": "double" + } + } + } + } + } + } + } + }, + "shapes": { + "So": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "GlueIps": { + "type": "list", + "member": {} + } + } + } + }, + "Su": { + "type": "structure", + "members": { + "FirstName": {}, + "LastName": {}, + "ContactType": {}, + "OrganizationName": {}, + "AddressLine1": {}, + "AddressLine2": {}, + "City": {}, + "State": {}, + "CountryCode": {}, + "ZipCode": {}, + "PhoneNumber": {}, + "Email": {}, + "Fax": {}, + "ExtraParams": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Name", + "Value" + ], + "members": { + "Name": {}, + "Value": {} + } + } + } + }, + "sensitive": true + }, + "S24": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S2h": { + "type": "string", + "sensitive": true + } + } +} +},{}],111:[function(require,module,exports){ +module.exports={ + "version": "1.0", + "pagination": { + "ListDomains": { + "limit_key": "MaxItems", + "input_token": "Marker", + "output_token": "NextPageMarker", + "result_key": "Domains" + }, + "ListOperations": { + "limit_key": "MaxItems", + "input_token": "Marker", + "output_token": "NextPageMarker", + "result_key": "Operations" + } + } +} + +},{}],112:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2006-03-01", + "checksumFormat": "md5", + "endpointPrefix": "s3", + "globalEndpoint": "s3.amazonaws.com", + "protocol": "rest-xml", + "serviceAbbreviation": "Amazon S3", + "serviceFullName": "Amazon Simple Storage Service", + "signatureVersion": "s3", + "timestampFormat": "rfc822" + }, + "operations": { + "AbortMultipartUpload": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "CompleteMultipartUpload": { + "http": { + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "MultipartUpload": { + "locationName": "CompleteMultipartUpload", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "Parts": { + "locationName": "Part", + "type": "list", + "member": { + "type": "structure", + "members": { + "ETag": {}, + "PartNumber": { + "type": "integer" + } + } + }, + "flattened": true + } + } + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "MultipartUpload" + }, + "output": { + "type": "structure", + "members": { + "Location": {}, + "Bucket": {}, + "Key": {}, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "ETag": {}, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "CopyObject": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "CopySource", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "CopySource": { + "location": "header", + "locationName": "x-amz-copy-source" + }, + "CopySourceIfMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-match" + }, + "CopySourceIfModifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-modified-since", + "type": "timestamp" + }, + "CopySourceIfNoneMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-none-match" + }, + "CopySourceIfUnmodifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-unmodified-since", + "type": "timestamp" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "MetadataDirective": { + "location": "header", + "locationName": "x-amz-metadata-directive" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "CopySourceSSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" + }, + "CopySourceSSECustomerKey": { + "shape": "S1b", + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key" + }, + "CopySourceSSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "CopyObjectResult": { + "type": "structure", + "members": { + "ETag": {}, + "LastModified": { + "type": "timestamp" + } + } + }, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "CopySourceVersionId": { + "location": "header", + "locationName": "x-amz-copy-source-version-id" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + }, + "payload": "CopyObjectResult" + }, + "alias": "PutObjectCopy" + }, + "CreateBucket": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CreateBucketConfiguration": { + "locationName": "CreateBucketConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "LocationConstraint": {} + } + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWrite": { + "location": "header", + "locationName": "x-amz-grant-write" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + } + }, + "payload": "CreateBucketConfiguration" + }, + "output": { + "type": "structure", + "members": { + "Location": { + "location": "header", + "locationName": "Location" + } + } + }, + "alias": "PutBucket" + }, + "CreateMultipartUpload": { + "http": { + "requestUri": "/{Bucket}/{Key+}?uploads" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "AbortDate": { + "location": "header", + "locationName": "x-amz-abort-date", + "type": "timestamp" + }, + "AbortRuleId": { + "location": "header", + "locationName": "x-amz-abort-rule-id" + }, + "Bucket": { + "locationName": "Bucket" + }, + "Key": {}, + "UploadId": {}, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + }, + "alias": "InitiateMultipartUpload" + }, + "DeleteBucket": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketCors": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?cors" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketLifecycle": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketPolicy": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?policy" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketReplication": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?replication" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketTagging": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?tagging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteBucketWebsite": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}?website" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "DeleteObject": { + "http": { + "method": "DELETE", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "MFA": { + "location": "header", + "locationName": "x-amz-mfa" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "DeleteMarker": { + "location": "header", + "locationName": "x-amz-delete-marker", + "type": "boolean" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "DeleteObjects": { + "http": { + "requestUri": "/{Bucket}?delete" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Delete" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delete": { + "locationName": "Delete", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Objects" + ], + "members": { + "Objects": { + "locationName": "Object", + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {}, + "VersionId": {} + } + }, + "flattened": true + }, + "Quiet": { + "type": "boolean" + } + } + }, + "MFA": { + "location": "header", + "locationName": "x-amz-mfa" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "Delete" + }, + "output": { + "type": "structure", + "members": { + "Deleted": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "VersionId": {}, + "DeleteMarker": { + "type": "boolean" + }, + "DeleteMarkerVersionId": {} + } + }, + "flattened": true + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + }, + "Errors": { + "locationName": "Error", + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "VersionId": {}, + "Code": {}, + "Message": {} + } + }, + "flattened": true + } + } + }, + "alias": "DeleteMultipleObjects" + }, + "GetBucketAccelerateConfiguration": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?accelerate" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Status": {} + } + } + }, + "GetBucketAcl": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Owner": { + "shape": "S2k" + }, + "Grants": { + "shape": "S2n", + "locationName": "AccessControlList" + } + } + } + }, + "GetBucketCors": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?cors" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "CORSRules": { + "shape": "S2w", + "locationName": "CORSRule" + } + } + } + }, + "GetBucketLifecycle": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Rules": { + "shape": "S39", + "locationName": "Rule" + } + } + }, + "deprecated": true + }, + "GetBucketLifecycleConfiguration": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Rules": { + "shape": "S3p", + "locationName": "Rule" + } + } + } + }, + "GetBucketLocation": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?location" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "LocationConstraint": {} + } + } + }, + "GetBucketLogging": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?logging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "LoggingEnabled": { + "shape": "S3x" + } + } + } + }, + "GetBucketNotification": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "shape": "S43" + }, + "output": { + "shape": "S44" + }, + "deprecated": true + }, + "GetBucketNotificationConfiguration": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "shape": "S43" + }, + "output": { + "shape": "S4f" + } + }, + "GetBucketPolicy": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?policy" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Policy": {} + }, + "payload": "Policy" + } + }, + "GetBucketReplication": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?replication" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "ReplicationConfiguration": { + "shape": "S4y" + } + }, + "payload": "ReplicationConfiguration" + } + }, + "GetBucketRequestPayment": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?requestPayment" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Payer": {} + } + } + }, + "GetBucketTagging": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?tagging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "required": [ + "TagSet" + ], + "members": { + "TagSet": { + "shape": "S59" + } + } + } + }, + "GetBucketVersioning": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?versioning" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "Status": {}, + "MFADelete": { + "locationName": "MfaDelete" + } + } + } + }, + "GetBucketWebsite": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?website" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "output": { + "type": "structure", + "members": { + "RedirectAllRequestsTo": { + "shape": "S5i" + }, + "IndexDocument": { + "shape": "S5l" + }, + "ErrorDocument": { + "shape": "S5n" + }, + "RoutingRules": { + "shape": "S5o" + } + } + } + }, + "GetObject": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + }, + "IfModifiedSince": { + "location": "header", + "locationName": "If-Modified-Since", + "type": "timestamp" + }, + "IfNoneMatch": { + "location": "header", + "locationName": "If-None-Match" + }, + "IfUnmodifiedSince": { + "location": "header", + "locationName": "If-Unmodified-Since", + "type": "timestamp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Range": { + "location": "header", + "locationName": "Range" + }, + "ResponseCacheControl": { + "location": "querystring", + "locationName": "response-cache-control" + }, + "ResponseContentDisposition": { + "location": "querystring", + "locationName": "response-content-disposition" + }, + "ResponseContentEncoding": { + "location": "querystring", + "locationName": "response-content-encoding" + }, + "ResponseContentLanguage": { + "location": "querystring", + "locationName": "response-content-language" + }, + "ResponseContentType": { + "location": "querystring", + "locationName": "response-content-type" + }, + "ResponseExpires": { + "location": "querystring", + "locationName": "response-expires", + "type": "timestamp" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Body": { + "streaming": true, + "type": "blob" + }, + "DeleteMarker": { + "location": "header", + "locationName": "x-amz-delete-marker", + "type": "boolean" + }, + "AcceptRanges": { + "location": "header", + "locationName": "accept-ranges" + }, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "Restore": { + "location": "header", + "locationName": "x-amz-restore" + }, + "LastModified": { + "location": "header", + "locationName": "Last-Modified", + "type": "timestamp" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "MissingMeta": { + "location": "header", + "locationName": "x-amz-missing-meta", + "type": "integer" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentRange": { + "location": "header", + "locationName": "Content-Range" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + }, + "ReplicationStatus": { + "location": "header", + "locationName": "x-amz-replication-status" + }, + "PartsCount": { + "location": "header", + "locationName": "x-amz-mp-parts-count", + "type": "integer" + } + }, + "payload": "Body" + } + }, + "GetObjectAcl": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Owner": { + "shape": "S2k" + }, + "Grants": { + "shape": "S2n", + "locationName": "AccessControlList" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "GetObjectTorrent": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}?torrent" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Body": { + "streaming": true, + "type": "blob" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + }, + "payload": "Body" + } + }, + "HeadBucket": { + "http": { + "method": "HEAD", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + } + }, + "HeadObject": { + "http": { + "method": "HEAD", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "IfMatch": { + "location": "header", + "locationName": "If-Match" + }, + "IfModifiedSince": { + "location": "header", + "locationName": "If-Modified-Since", + "type": "timestamp" + }, + "IfNoneMatch": { + "location": "header", + "locationName": "If-None-Match" + }, + "IfUnmodifiedSince": { + "location": "header", + "locationName": "If-Unmodified-Since", + "type": "timestamp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Range": { + "location": "header", + "locationName": "Range" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "DeleteMarker": { + "location": "header", + "locationName": "x-amz-delete-marker", + "type": "boolean" + }, + "AcceptRanges": { + "location": "header", + "locationName": "accept-ranges" + }, + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "Restore": { + "location": "header", + "locationName": "x-amz-restore" + }, + "LastModified": { + "location": "header", + "locationName": "Last-Modified", + "type": "timestamp" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "MissingMeta": { + "location": "header", + "locationName": "x-amz-missing-meta", + "type": "integer" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + }, + "ReplicationStatus": { + "location": "header", + "locationName": "x-amz-replication-status" + }, + "PartsCount": { + "location": "header", + "locationName": "x-amz-mp-parts-count", + "type": "integer" + } + } + } + }, + "ListBuckets": { + "http": { + "method": "GET" + }, + "output": { + "type": "structure", + "members": { + "Buckets": { + "type": "list", + "member": { + "locationName": "Bucket", + "type": "structure", + "members": { + "Name": {}, + "CreationDate": { + "type": "timestamp" + } + } + } + }, + "Owner": { + "shape": "S2k" + } + } + }, + "alias": "GetService" + }, + "ListMultipartUploads": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?uploads" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "KeyMarker": { + "location": "querystring", + "locationName": "key-marker" + }, + "MaxUploads": { + "location": "querystring", + "locationName": "max-uploads", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "UploadIdMarker": { + "location": "querystring", + "locationName": "upload-id-marker" + } + } + }, + "output": { + "type": "structure", + "members": { + "Bucket": {}, + "KeyMarker": {}, + "UploadIdMarker": {}, + "NextKeyMarker": {}, + "Prefix": {}, + "Delimiter": {}, + "NextUploadIdMarker": {}, + "MaxUploads": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Uploads": { + "locationName": "Upload", + "type": "list", + "member": { + "type": "structure", + "members": { + "UploadId": {}, + "Key": {}, + "Initiated": { + "type": "timestamp" + }, + "StorageClass": {}, + "Owner": { + "shape": "S2k" + }, + "Initiator": { + "shape": "S76" + } + } + }, + "flattened": true + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {} + } + } + }, + "ListObjectVersions": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?versions" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "KeyMarker": { + "location": "querystring", + "locationName": "key-marker" + }, + "MaxKeys": { + "location": "querystring", + "locationName": "max-keys", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "VersionIdMarker": { + "location": "querystring", + "locationName": "version-id-marker" + } + } + }, + "output": { + "type": "structure", + "members": { + "IsTruncated": { + "type": "boolean" + }, + "KeyMarker": {}, + "VersionIdMarker": {}, + "NextKeyMarker": {}, + "NextVersionIdMarker": {}, + "Versions": { + "locationName": "Version", + "type": "list", + "member": { + "type": "structure", + "members": { + "ETag": {}, + "Size": { + "type": "integer" + }, + "StorageClass": {}, + "Key": {}, + "VersionId": {}, + "IsLatest": { + "type": "boolean" + }, + "LastModified": { + "type": "timestamp" + }, + "Owner": { + "shape": "S2k" + } + } + }, + "flattened": true + }, + "DeleteMarkers": { + "locationName": "DeleteMarker", + "type": "list", + "member": { + "type": "structure", + "members": { + "Owner": { + "shape": "S2k" + }, + "Key": {}, + "VersionId": {}, + "IsLatest": { + "type": "boolean" + }, + "LastModified": { + "type": "timestamp" + } + } + }, + "flattened": true + }, + "Name": {}, + "Prefix": {}, + "Delimiter": {}, + "MaxKeys": { + "type": "integer" + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {} + } + }, + "alias": "GetBucketObjectVersions" + }, + "ListObjects": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "Marker": { + "location": "querystring", + "locationName": "marker" + }, + "MaxKeys": { + "location": "querystring", + "locationName": "max-keys", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "IsTruncated": { + "type": "boolean" + }, + "Marker": {}, + "NextMarker": {}, + "Contents": { + "shape": "S7p" + }, + "Name": {}, + "Prefix": {}, + "Delimiter": {}, + "MaxKeys": { + "type": "integer" + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {} + } + }, + "alias": "GetBucket" + }, + "ListObjectsV2": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}?list-type=2" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Delimiter": { + "location": "querystring", + "locationName": "delimiter" + }, + "EncodingType": { + "location": "querystring", + "locationName": "encoding-type" + }, + "MaxKeys": { + "location": "querystring", + "locationName": "max-keys", + "type": "integer" + }, + "Prefix": { + "location": "querystring", + "locationName": "prefix" + }, + "ContinuationToken": { + "location": "querystring", + "locationName": "continuation-token" + }, + "FetchOwner": { + "location": "querystring", + "locationName": "fetch-owner", + "type": "boolean" + }, + "StartAfter": { + "location": "querystring", + "locationName": "start-after" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "IsTruncated": { + "type": "boolean" + }, + "Contents": { + "shape": "S7p" + }, + "Name": {}, + "Prefix": {}, + "Delimiter": {}, + "MaxKeys": { + "type": "integer" + }, + "CommonPrefixes": { + "shape": "S77" + }, + "EncodingType": {}, + "KeyCount": { + "type": "integer" + }, + "ContinuationToken": {}, + "NextContinuationToken": {}, + "StartAfter": {} + } + } + }, + "ListParts": { + "http": { + "method": "GET", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "MaxParts": { + "location": "querystring", + "locationName": "max-parts", + "type": "integer" + }, + "PartNumberMarker": { + "location": "querystring", + "locationName": "part-number-marker", + "type": "integer" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "AbortDate": { + "location": "header", + "locationName": "x-amz-abort-date", + "type": "timestamp" + }, + "AbortRuleId": { + "location": "header", + "locationName": "x-amz-abort-rule-id" + }, + "Bucket": {}, + "Key": {}, + "UploadId": {}, + "PartNumberMarker": { + "type": "integer" + }, + "NextPartNumberMarker": { + "type": "integer" + }, + "MaxParts": { + "type": "integer" + }, + "IsTruncated": { + "type": "boolean" + }, + "Parts": { + "locationName": "Part", + "type": "list", + "member": { + "type": "structure", + "members": { + "PartNumber": { + "type": "integer" + }, + "LastModified": { + "type": "timestamp" + }, + "ETag": {}, + "Size": { + "type": "integer" + } + } + }, + "flattened": true + }, + "Initiator": { + "shape": "S76" + }, + "Owner": { + "shape": "S2k" + }, + "StorageClass": {}, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "PutBucketAccelerateConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?accelerate" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "AccelerateConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "AccelerateConfiguration": { + "locationName": "AccelerateConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "Status": {} + } + } + }, + "payload": "AccelerateConfiguration" + } + }, + "PutBucketAcl": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "AccessControlPolicy": { + "shape": "S89", + "locationName": "AccessControlPolicy", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWrite": { + "location": "header", + "locationName": "x-amz-grant-write" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + } + }, + "payload": "AccessControlPolicy" + } + }, + "PutBucketCors": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?cors" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "CORSConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CORSConfiguration": { + "locationName": "CORSConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "CORSRules" + ], + "members": { + "CORSRules": { + "shape": "S2w", + "locationName": "CORSRule" + } + } + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + } + }, + "payload": "CORSConfiguration" + } + }, + "PutBucketLifecycle": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "LifecycleConfiguration": { + "locationName": "LifecycleConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Rules" + ], + "members": { + "Rules": { + "shape": "S39", + "locationName": "Rule" + } + } + } + }, + "payload": "LifecycleConfiguration" + }, + "deprecated": true + }, + "PutBucketLifecycleConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?lifecycle" + }, + "input": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "LifecycleConfiguration": { + "locationName": "LifecycleConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Rules" + ], + "members": { + "Rules": { + "shape": "S3p", + "locationName": "Rule" + } + } + } + }, + "payload": "LifecycleConfiguration" + } + }, + "PutBucketLogging": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?logging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "BucketLoggingStatus" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "BucketLoggingStatus": { + "locationName": "BucketLoggingStatus", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "LoggingEnabled": { + "shape": "S3x" + } + } + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + } + }, + "payload": "BucketLoggingStatus" + } + }, + "PutBucketNotification": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "NotificationConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "NotificationConfiguration": { + "shape": "S44", + "locationName": "NotificationConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + } + }, + "payload": "NotificationConfiguration" + }, + "deprecated": true + }, + "PutBucketNotificationConfiguration": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?notification" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "NotificationConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "NotificationConfiguration": { + "shape": "S4f", + "locationName": "NotificationConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + } + }, + "payload": "NotificationConfiguration" + } + }, + "PutBucketPolicy": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?policy" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Policy" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "Policy": {} + }, + "payload": "Policy" + } + }, + "PutBucketReplication": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?replication" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "ReplicationConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "ReplicationConfiguration": { + "shape": "S4y", + "locationName": "ReplicationConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + } + }, + "payload": "ReplicationConfiguration" + } + }, + "PutBucketRequestPayment": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?requestPayment" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "RequestPaymentConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "RequestPaymentConfiguration": { + "locationName": "RequestPaymentConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Payer" + ], + "members": { + "Payer": {} + } + } + }, + "payload": "RequestPaymentConfiguration" + } + }, + "PutBucketTagging": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?tagging" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Tagging" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "Tagging": { + "locationName": "Tagging", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "TagSet" + ], + "members": { + "TagSet": { + "shape": "S59" + } + } + } + }, + "payload": "Tagging" + } + }, + "PutBucketVersioning": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?versioning" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "VersioningConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "MFA": { + "location": "header", + "locationName": "x-amz-mfa" + }, + "VersioningConfiguration": { + "locationName": "VersioningConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "MFADelete": { + "locationName": "MfaDelete" + }, + "Status": {} + } + } + }, + "payload": "VersioningConfiguration" + } + }, + "PutBucketWebsite": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}?website" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "WebsiteConfiguration" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "WebsiteConfiguration": { + "locationName": "WebsiteConfiguration", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "members": { + "ErrorDocument": { + "shape": "S5n" + }, + "IndexDocument": { + "shape": "S5l" + }, + "RedirectAllRequestsTo": { + "shape": "S5i" + }, + "RoutingRules": { + "shape": "S5o" + } + } + } + }, + "payload": "WebsiteConfiguration" + } + }, + "PutObject": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "Body": { + "streaming": true, + "type": "blob" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CacheControl": { + "location": "header", + "locationName": "Cache-Control" + }, + "ContentDisposition": { + "location": "header", + "locationName": "Content-Disposition" + }, + "ContentEncoding": { + "location": "header", + "locationName": "Content-Encoding" + }, + "ContentLanguage": { + "location": "header", + "locationName": "Content-Language" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "ContentType": { + "location": "header", + "locationName": "Content-Type" + }, + "Expires": { + "location": "header", + "locationName": "Expires", + "type": "timestamp" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "Metadata": { + "shape": "S11", + "location": "headers", + "locationName": "x-amz-meta-" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "StorageClass": { + "location": "header", + "locationName": "x-amz-storage-class" + }, + "WebsiteRedirectLocation": { + "location": "header", + "locationName": "x-amz-website-redirect-location" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "Body" + }, + "output": { + "type": "structure", + "members": { + "Expiration": { + "location": "header", + "locationName": "x-amz-expiration" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "VersionId": { + "location": "header", + "locationName": "x-amz-version-id" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "PutObjectAcl": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}?acl" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "ACL": { + "location": "header", + "locationName": "x-amz-acl" + }, + "AccessControlPolicy": { + "shape": "S89", + "locationName": "AccessControlPolicy", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + } + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "GrantFullControl": { + "location": "header", + "locationName": "x-amz-grant-full-control" + }, + "GrantRead": { + "location": "header", + "locationName": "x-amz-grant-read" + }, + "GrantReadACP": { + "location": "header", + "locationName": "x-amz-grant-read-acp" + }, + "GrantWrite": { + "location": "header", + "locationName": "x-amz-grant-write" + }, + "GrantWriteACP": { + "location": "header", + "locationName": "x-amz-grant-write-acp" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + } + }, + "payload": "AccessControlPolicy" + }, + "output": { + "type": "structure", + "members": { + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "RestoreObject": { + "http": { + "requestUri": "/{Bucket}/{Key+}?restore" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "VersionId": { + "location": "querystring", + "locationName": "versionId" + }, + "RestoreRequest": { + "locationName": "RestoreRequest", + "xmlNamespace": { + "uri": "http://s3.amazonaws.com/doc/2006-03-01/" + }, + "type": "structure", + "required": [ + "Days" + ], + "members": { + "Days": { + "type": "integer" + } + } + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "RestoreRequest" + }, + "output": { + "type": "structure", + "members": { + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + }, + "alias": "PostObjectRestore" + }, + "UploadPart": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "Key", + "PartNumber", + "UploadId" + ], + "members": { + "Body": { + "streaming": true, + "type": "blob" + }, + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "ContentLength": { + "location": "header", + "locationName": "Content-Length", + "type": "long" + }, + "ContentMD5": { + "location": "header", + "locationName": "Content-MD5" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + }, + "payload": "Body" + }, + "output": { + "type": "structure", + "members": { + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "ETag": { + "location": "header", + "locationName": "ETag" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + } + } + }, + "UploadPartCopy": { + "http": { + "method": "PUT", + "requestUri": "/{Bucket}/{Key+}" + }, + "input": { + "type": "structure", + "required": [ + "Bucket", + "CopySource", + "Key", + "PartNumber", + "UploadId" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + }, + "CopySource": { + "location": "header", + "locationName": "x-amz-copy-source" + }, + "CopySourceIfMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-match" + }, + "CopySourceIfModifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-modified-since", + "type": "timestamp" + }, + "CopySourceIfNoneMatch": { + "location": "header", + "locationName": "x-amz-copy-source-if-none-match" + }, + "CopySourceIfUnmodifiedSince": { + "location": "header", + "locationName": "x-amz-copy-source-if-unmodified-since", + "type": "timestamp" + }, + "CopySourceRange": { + "location": "header", + "locationName": "x-amz-copy-source-range" + }, + "Key": { + "location": "uri", + "locationName": "Key" + }, + "PartNumber": { + "location": "querystring", + "locationName": "partNumber", + "type": "integer" + }, + "UploadId": { + "location": "querystring", + "locationName": "uploadId" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKey": { + "shape": "S18", + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "CopySourceSSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" + }, + "CopySourceSSECustomerKey": { + "shape": "S1b", + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key" + }, + "CopySourceSSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" + }, + "RequestPayer": { + "location": "header", + "locationName": "x-amz-request-payer" + } + } + }, + "output": { + "type": "structure", + "members": { + "CopySourceVersionId": { + "location": "header", + "locationName": "x-amz-copy-source-version-id" + }, + "CopyPartResult": { + "type": "structure", + "members": { + "ETag": {}, + "LastModified": { + "type": "timestamp" + } + } + }, + "ServerSideEncryption": { + "location": "header", + "locationName": "x-amz-server-side-encryption" + }, + "SSECustomerAlgorithm": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-algorithm" + }, + "SSECustomerKeyMD5": { + "location": "header", + "locationName": "x-amz-server-side-encryption-customer-key-MD5" + }, + "SSEKMSKeyId": { + "shape": "Sj", + "location": "header", + "locationName": "x-amz-server-side-encryption-aws-kms-key-id" + }, + "RequestCharged": { + "location": "header", + "locationName": "x-amz-request-charged" + } + }, + "payload": "CopyPartResult" + } + } + }, + "shapes": { + "Sj": { + "type": "string", + "sensitive": true + }, + "S11": { + "type": "map", + "key": {}, + "value": {} + }, + "S18": { + "type": "blob", + "sensitive": true + }, + "S1b": { + "type": "blob", + "sensitive": true + }, + "S2k": { + "type": "structure", + "members": { + "DisplayName": {}, + "ID": {} + } + }, + "S2n": { + "type": "list", + "member": { + "locationName": "Grant", + "type": "structure", + "members": { + "Grantee": { + "shape": "S2p" + }, + "Permission": {} + } + } + }, + "S2p": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "DisplayName": {}, + "EmailAddress": {}, + "ID": {}, + "Type": { + "locationName": "xsi:type", + "xmlAttribute": true + }, + "URI": {} + }, + "xmlNamespace": { + "prefix": "xsi", + "uri": "http://www.w3.org/2001/XMLSchema-instance" + } + }, + "S2w": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AllowedMethods", + "AllowedOrigins" + ], + "members": { + "AllowedHeaders": { + "locationName": "AllowedHeader", + "type": "list", + "member": {}, + "flattened": true + }, + "AllowedMethods": { + "locationName": "AllowedMethod", + "type": "list", + "member": {}, + "flattened": true + }, + "AllowedOrigins": { + "locationName": "AllowedOrigin", + "type": "list", + "member": {}, + "flattened": true + }, + "ExposeHeaders": { + "locationName": "ExposeHeader", + "type": "list", + "member": {}, + "flattened": true + }, + "MaxAgeSeconds": { + "type": "integer" + } + } + }, + "flattened": true + }, + "S39": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Prefix", + "Status" + ], + "members": { + "Expiration": { + "shape": "S3b" + }, + "ID": {}, + "Prefix": {}, + "Status": {}, + "Transition": { + "shape": "S3h" + }, + "NoncurrentVersionTransition": { + "shape": "S3j" + }, + "NoncurrentVersionExpiration": { + "shape": "S3k" + }, + "AbortIncompleteMultipartUpload": { + "shape": "S3l" + } + } + }, + "flattened": true + }, + "S3b": { + "type": "structure", + "members": { + "Date": { + "shape": "S3c" + }, + "Days": { + "type": "integer" + }, + "ExpiredObjectDeleteMarker": { + "type": "boolean" + } + } + }, + "S3c": { + "type": "timestamp", + "timestampFormat": "iso8601" + }, + "S3h": { + "type": "structure", + "members": { + "Date": { + "shape": "S3c" + }, + "Days": { + "type": "integer" + }, + "StorageClass": {} + } + }, + "S3j": { + "type": "structure", + "members": { + "NoncurrentDays": { + "type": "integer" + }, + "StorageClass": {} + } + }, + "S3k": { + "type": "structure", + "members": { + "NoncurrentDays": { + "type": "integer" + } + } + }, + "S3l": { + "type": "structure", + "members": { + "DaysAfterInitiation": { + "type": "integer" + } + } + }, + "S3p": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Prefix", + "Status" + ], + "members": { + "Expiration": { + "shape": "S3b" + }, + "ID": {}, + "Prefix": {}, + "Status": {}, + "Transitions": { + "locationName": "Transition", + "type": "list", + "member": { + "shape": "S3h" + }, + "flattened": true + }, + "NoncurrentVersionTransitions": { + "locationName": "NoncurrentVersionTransition", + "type": "list", + "member": { + "shape": "S3j" + }, + "flattened": true + }, + "NoncurrentVersionExpiration": { + "shape": "S3k" + }, + "AbortIncompleteMultipartUpload": { + "shape": "S3l" + } + } + }, + "flattened": true + }, + "S3x": { + "type": "structure", + "members": { + "TargetBucket": {}, + "TargetGrants": { + "type": "list", + "member": { + "locationName": "Grant", + "type": "structure", + "members": { + "Grantee": { + "shape": "S2p" + }, + "Permission": {} + } + } + }, + "TargetPrefix": {} + } + }, + "S43": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": { + "location": "uri", + "locationName": "Bucket" + } + } + }, + "S44": { + "type": "structure", + "members": { + "TopicConfiguration": { + "type": "structure", + "members": { + "Id": {}, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Event": { + "deprecated": true + }, + "Topic": {} + } + }, + "QueueConfiguration": { + "type": "structure", + "members": { + "Id": {}, + "Event": { + "deprecated": true + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Queue": {} + } + }, + "CloudFunctionConfiguration": { + "type": "structure", + "members": { + "Id": {}, + "Event": { + "deprecated": true + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "CloudFunction": {}, + "InvocationRole": {} + } + } + } + }, + "S47": { + "type": "list", + "member": {}, + "flattened": true + }, + "S4f": { + "type": "structure", + "members": { + "TopicConfigurations": { + "locationName": "TopicConfiguration", + "type": "list", + "member": { + "type": "structure", + "required": [ + "TopicArn", + "Events" + ], + "members": { + "Id": {}, + "TopicArn": { + "locationName": "Topic" + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Filter": { + "shape": "S4i" + } + } + }, + "flattened": true + }, + "QueueConfigurations": { + "locationName": "QueueConfiguration", + "type": "list", + "member": { + "type": "structure", + "required": [ + "QueueArn", + "Events" + ], + "members": { + "Id": {}, + "QueueArn": { + "locationName": "Queue" + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Filter": { + "shape": "S4i" + } + } + }, + "flattened": true + }, + "LambdaFunctionConfigurations": { + "locationName": "CloudFunctionConfiguration", + "type": "list", + "member": { + "type": "structure", + "required": [ + "LambdaFunctionArn", + "Events" + ], + "members": { + "Id": {}, + "LambdaFunctionArn": { + "locationName": "CloudFunction" + }, + "Events": { + "shape": "S47", + "locationName": "Event" + }, + "Filter": { + "shape": "S4i" + } + } + }, + "flattened": true + } + } + }, + "S4i": { + "type": "structure", + "members": { + "Key": { + "locationName": "S3Key", + "type": "structure", + "members": { + "FilterRules": { + "locationName": "FilterRule", + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Value": {} + } + }, + "flattened": true + } + } + } + } + }, + "S4y": { + "type": "structure", + "required": [ + "Role", + "Rules" + ], + "members": { + "Role": {}, + "Rules": { + "locationName": "Rule", + "type": "list", + "member": { + "type": "structure", + "required": [ + "Prefix", + "Status", + "Destination" + ], + "members": { + "ID": {}, + "Prefix": {}, + "Status": {}, + "Destination": { + "type": "structure", + "required": [ + "Bucket" + ], + "members": { + "Bucket": {}, + "StorageClass": {} + } + } + } + }, + "flattened": true + } + } + }, + "S59": { + "type": "list", + "member": { + "locationName": "Tag", + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S5i": { + "type": "structure", + "required": [ + "HostName" + ], + "members": { + "HostName": {}, + "Protocol": {} + } + }, + "S5l": { + "type": "structure", + "required": [ + "Suffix" + ], + "members": { + "Suffix": {} + } + }, + "S5n": { + "type": "structure", + "required": [ + "Key" + ], + "members": { + "Key": {} + } + }, + "S5o": { + "type": "list", + "member": { + "locationName": "RoutingRule", + "type": "structure", + "required": [ + "Redirect" + ], + "members": { + "Condition": { + "type": "structure", + "members": { + "HttpErrorCodeReturnedEquals": {}, + "KeyPrefixEquals": {} + } + }, + "Redirect": { + "type": "structure", + "members": { + "HostName": {}, + "HttpRedirectCode": {}, + "Protocol": {}, + "ReplaceKeyPrefixWith": {}, + "ReplaceKeyWith": {} + } + } + } + } + }, + "S76": { + "type": "structure", + "members": { + "ID": {}, + "DisplayName": {} + } + }, + "S77": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Prefix": {} + } + }, + "flattened": true + }, + "S7p": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "LastModified": { + "type": "timestamp" + }, + "ETag": {}, + "Size": { + "type": "integer" + }, + "StorageClass": {}, + "Owner": { + "shape": "S2k" + } + } + }, + "flattened": true + }, + "S89": { + "type": "structure", + "members": { + "Grants": { + "shape": "S2n", + "locationName": "AccessControlList" + }, + "Owner": { + "shape": "S2k" + } + } + } + } +} +},{}],113:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListBuckets": { + "result_key": "Buckets" + }, + "ListMultipartUploads": { + "limit_key": "MaxUploads", + "more_results": "IsTruncated", + "output_token": [ + "NextKeyMarker", + "NextUploadIdMarker" + ], + "input_token": [ + "KeyMarker", + "UploadIdMarker" + ], + "result_key": [ + "Uploads", + "CommonPrefixes" + ] + }, + "ListObjectVersions": { + "more_results": "IsTruncated", + "limit_key": "MaxKeys", + "output_token": [ + "NextKeyMarker", + "NextVersionIdMarker" + ], + "input_token": [ + "KeyMarker", + "VersionIdMarker" + ], + "result_key": [ + "Versions", + "DeleteMarkers", + "CommonPrefixes" + ] + }, + "ListObjects": { + "more_results": "IsTruncated", + "limit_key": "MaxKeys", + "output_token": "NextMarker || Contents[-1].Key", + "input_token": "Marker", + "result_key": [ + "Contents", + "CommonPrefixes" + ] + }, + "ListObjectsV2": { + "limit_key": "MaxKeys", + "output_token": "NextContinuationToken", + "input_token": "ContinuationToken", + "result_key": [ + "Contents", + "CommonPrefixes" + ] + }, + "ListParts": { + "more_results": "IsTruncated", + "limit_key": "MaxParts", + "output_token": "NextPartNumberMarker", + "input_token": "PartNumberMarker", + "result_key": "Parts" + } + } +} + +},{}],114:[function(require,module,exports){ +module.exports={ + "version": 2, + "waiters": { + "BucketExists": { + "delay": 5, + "operation": "HeadBucket", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "expected": 301, + "matcher": "status", + "state": "success" + }, + { + "expected": 403, + "matcher": "status", + "state": "success" + }, + { + "expected": 404, + "matcher": "status", + "state": "retry" + } + ] + }, + "BucketNotExists": { + "delay": 5, + "operation": "HeadBucket", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 404, + "matcher": "status", + "state": "success" + } + ] + }, + "ObjectExists": { + "delay": 5, + "operation": "HeadObject", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 200, + "matcher": "status", + "state": "success" + }, + { + "expected": 404, + "matcher": "status", + "state": "retry" + } + ] + }, + "ObjectNotExists": { + "delay": 5, + "operation": "HeadObject", + "maxAttempts": 20, + "acceptors": [ + { + "expected": 404, + "matcher": "status", + "state": "success" + } + ] + } + } +} + +},{}],115:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-12-10", + "endpointPrefix": "servicecatalog", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Service Catalog", + "signatureVersion": "v4", + "targetPrefix": "AWS242ServiceCatalogService" + }, + "operations": { + "DescribeProduct": { + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "AcceptLanguage": {}, + "Id": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProductViewSummary": { + "shape": "S5" + }, + "ProvisioningArtifacts": { + "shape": "Sf" + } + } + } + }, + "DescribeProductView": { + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "AcceptLanguage": {}, + "Id": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProductViewSummary": { + "shape": "S5" + }, + "ProvisioningArtifacts": { + "shape": "Sf" + } + } + } + }, + "DescribeProvisioningParameters": { + "input": { + "type": "structure", + "required": [ + "ProductId", + "ProvisioningArtifactId" + ], + "members": { + "AcceptLanguage": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProvisioningArtifactParameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ParameterKey": {}, + "DefaultValue": {}, + "ParameterType": {}, + "IsNoEcho": { + "type": "boolean" + }, + "Description": {}, + "ParameterConstraints": { + "type": "structure", + "members": { + "AllowedValues": { + "type": "list", + "member": {} + } + } + } + } + } + }, + "ConstraintSummaries": { + "shape": "Sy" + }, + "UsageInstructions": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "Value": {} + } + } + } + } + } + }, + "DescribeRecord": { + "input": { + "type": "structure", + "required": [ + "Id" + ], + "members": { + "AcceptLanguage": {}, + "Id": {}, + "PageToken": {}, + "PageSize": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + }, + "RecordOutputs": { + "type": "list", + "member": { + "type": "structure", + "members": { + "OutputKey": {}, + "OutputValue": {}, + "Description": {} + } + } + }, + "NextPageToken": {} + } + } + }, + "ListLaunchPaths": { + "input": { + "type": "structure", + "required": [ + "ProductId" + ], + "members": { + "AcceptLanguage": {}, + "ProductId": {}, + "PageSize": { + "type": "integer" + }, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "LaunchPathSummaries": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "ConstraintSummaries": { + "shape": "Sy" + }, + "Tags": { + "shape": "S1x" + }, + "Name": {} + } + } + }, + "NextPageToken": {} + } + } + }, + "ListRecordHistory": { + "input": { + "type": "structure", + "members": { + "AcceptLanguage": {}, + "AccessLevelFilter": { + "shape": "S23" + }, + "SearchFilter": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + }, + "PageSize": { + "type": "integer" + }, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetails": { + "type": "list", + "member": { + "shape": "S1a" + } + }, + "NextPageToken": {} + } + } + }, + "ProvisionProduct": { + "input": { + "type": "structure", + "required": [ + "ProductId", + "ProvisioningArtifactId", + "ProvisionedProductName", + "ProvisionToken" + ], + "members": { + "AcceptLanguage": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {}, + "ProvisionedProductName": {}, + "ProvisioningParameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Tags": { + "shape": "S1x" + }, + "NotificationArns": { + "type": "list", + "member": {} + }, + "ProvisionToken": { + "idempotencyToken": true + } + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + } + } + } + }, + "ScanProvisionedProducts": { + "input": { + "type": "structure", + "members": { + "AcceptLanguage": {}, + "AccessLevelFilter": { + "shape": "S23" + }, + "PageSize": { + "type": "integer" + }, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProvisionedProducts": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Arn": {}, + "Type": {}, + "Id": {}, + "Status": {}, + "StatusMessage": {}, + "CreatedTime": { + "type": "timestamp" + }, + "IdempotencyToken": {}, + "LastRecordId": {} + } + } + }, + "NextPageToken": {} + } + } + }, + "SearchProducts": { + "input": { + "type": "structure", + "members": { + "AcceptLanguage": {}, + "Filters": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": {} + } + }, + "PageSize": { + "type": "integer" + }, + "SortBy": {}, + "SortOrder": {}, + "PageToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ProductViewSummaries": { + "type": "list", + "member": { + "shape": "S5" + } + }, + "ProductViewAggregations": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Value": {}, + "ApproximateCount": { + "type": "integer" + } + } + } + } + }, + "NextPageToken": {} + } + } + }, + "TerminateProvisionedProduct": { + "input": { + "type": "structure", + "required": [ + "TerminateToken" + ], + "members": { + "ProvisionedProductName": {}, + "ProvisionedProductId": {}, + "TerminateToken": { + "idempotencyToken": true + }, + "IgnoreErrors": { + "type": "boolean" + }, + "AcceptLanguage": {} + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + } + } + } + }, + "UpdateProvisionedProduct": { + "input": { + "type": "structure", + "required": [ + "UpdateToken" + ], + "members": { + "AcceptLanguage": {}, + "ProvisionedProductName": {}, + "ProvisionedProductId": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {}, + "ProvisioningParameters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {}, + "UsePreviousValue": { + "type": "boolean" + } + } + } + }, + "UpdateToken": { + "idempotencyToken": true + } + } + }, + "output": { + "type": "structure", + "members": { + "RecordDetail": { + "shape": "S1a" + } + } + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "members": { + "Id": {}, + "ProductId": {}, + "Name": {}, + "Owner": {}, + "ShortDescription": {}, + "Type": {}, + "Distributor": {}, + "HasDefaultPath": { + "type": "boolean" + }, + "SupportEmail": {}, + "SupportDescription": {}, + "SupportUrl": {} + } + }, + "Sf": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Id": {}, + "Name": {}, + "Description": {}, + "CreatedTime": { + "type": "timestamp" + } + } + } + }, + "Sy": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Type": {}, + "Description": {} + } + } + }, + "S1a": { + "type": "structure", + "members": { + "RecordId": {}, + "ProvisionedProductName": {}, + "Status": {}, + "CreatedTime": { + "type": "timestamp" + }, + "UpdatedTime": { + "type": "timestamp" + }, + "ProvisionedProductType": {}, + "RecordType": {}, + "ProvisionedProductId": {}, + "ProductId": {}, + "ProvisioningArtifactId": {}, + "PathId": {}, + "RecordErrors": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Code": {}, + "Description": {} + } + } + }, + "RecordTags": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } + } + }, + "S1x": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S23": { + "type": "structure", + "members": { + "Key": {}, + "Value": {} + } + } + } +} +},{}],116:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2010-03-31", + "endpointPrefix": "sns", + "protocol": "query", + "serviceAbbreviation": "Amazon SNS", + "serviceFullName": "Amazon Simple Notification Service", + "signatureVersion": "v4", + "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/" + }, + "operations": { + "AddPermission": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Label", + "AWSAccountId", + "ActionName" + ], + "members": { + "TopicArn": {}, + "Label": {}, + "AWSAccountId": { + "type": "list", + "member": {} + }, + "ActionName": { + "type": "list", + "member": {} + } + } + } + }, + "CheckIfPhoneNumberIsOptedOut": { + "input": { + "type": "structure", + "required": [ + "phoneNumber" + ], + "members": { + "phoneNumber": {} + } + }, + "output": { + "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult", + "type": "structure", + "members": { + "isOptedOut": { + "type": "boolean" + } + } + } + }, + "ConfirmSubscription": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Token" + ], + "members": { + "TopicArn": {}, + "Token": {}, + "AuthenticateOnUnsubscribe": {} + } + }, + "output": { + "resultWrapper": "ConfirmSubscriptionResult", + "type": "structure", + "members": { + "SubscriptionArn": {} + } + } + }, + "CreatePlatformApplication": { + "input": { + "type": "structure", + "required": [ + "Name", + "Platform", + "Attributes" + ], + "members": { + "Name": {}, + "Platform": {}, + "Attributes": { + "shape": "Sj" + } + } + }, + "output": { + "resultWrapper": "CreatePlatformApplicationResult", + "type": "structure", + "members": { + "PlatformApplicationArn": {} + } + } + }, + "CreatePlatformEndpoint": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn", + "Token" + ], + "members": { + "PlatformApplicationArn": {}, + "Token": {}, + "CustomUserData": {}, + "Attributes": { + "shape": "Sj" + } + } + }, + "output": { + "resultWrapper": "CreatePlatformEndpointResult", + "type": "structure", + "members": { + "EndpointArn": {} + } + } + }, + "CreateTopic": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "resultWrapper": "CreateTopicResult", + "type": "structure", + "members": { + "TopicArn": {} + } + } + }, + "DeleteEndpoint": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {} + } + } + }, + "DeletePlatformApplication": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn" + ], + "members": { + "PlatformApplicationArn": {} + } + } + }, + "DeleteTopic": { + "input": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {} + } + } + }, + "GetEndpointAttributes": { + "input": { + "type": "structure", + "required": [ + "EndpointArn" + ], + "members": { + "EndpointArn": {} + } + }, + "output": { + "resultWrapper": "GetEndpointAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "Sj" + } + } + } + }, + "GetPlatformApplicationAttributes": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn" + ], + "members": { + "PlatformApplicationArn": {} + } + }, + "output": { + "resultWrapper": "GetPlatformApplicationAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "Sj" + } + } + } + }, + "GetSMSAttributes": { + "input": { + "type": "structure", + "members": { + "attributes": { + "type": "list", + "member": {} + } + } + }, + "output": { + "resultWrapper": "GetSMSAttributesResult", + "type": "structure", + "members": { + "attributes": { + "shape": "Sj" + } + } + } + }, + "GetSubscriptionAttributes": { + "input": { + "type": "structure", + "required": [ + "SubscriptionArn" + ], + "members": { + "SubscriptionArn": {} + } + }, + "output": { + "resultWrapper": "GetSubscriptionAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "GetTopicAttributes": { + "input": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {} + } + }, + "output": { + "resultWrapper": "GetTopicAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "type": "map", + "key": {}, + "value": {} + } + } + } + }, + "ListEndpointsByPlatformApplication": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn" + ], + "members": { + "PlatformApplicationArn": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListEndpointsByPlatformApplicationResult", + "type": "structure", + "members": { + "Endpoints": { + "type": "list", + "member": { + "type": "structure", + "members": { + "EndpointArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListPhoneNumbersOptedOut": { + "input": { + "type": "structure", + "members": { + "nextToken": {} + } + }, + "output": { + "resultWrapper": "ListPhoneNumbersOptedOutResult", + "type": "structure", + "members": { + "phoneNumbers": { + "type": "list", + "member": {} + }, + "nextToken": {} + } + } + }, + "ListPlatformApplications": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListPlatformApplicationsResult", + "type": "structure", + "members": { + "PlatformApplications": { + "type": "list", + "member": { + "type": "structure", + "members": { + "PlatformApplicationArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListSubscriptions": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListSubscriptionsResult", + "type": "structure", + "members": { + "Subscriptions": { + "shape": "S1n" + }, + "NextToken": {} + } + } + }, + "ListSubscriptionsByTopic": { + "input": { + "type": "structure", + "required": [ + "TopicArn" + ], + "members": { + "TopicArn": {}, + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListSubscriptionsByTopicResult", + "type": "structure", + "members": { + "Subscriptions": { + "shape": "S1n" + }, + "NextToken": {} + } + } + }, + "ListTopics": { + "input": { + "type": "structure", + "members": { + "NextToken": {} + } + }, + "output": { + "resultWrapper": "ListTopicsResult", + "type": "structure", + "members": { + "Topics": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TopicArn": {} + } + } + }, + "NextToken": {} + } + } + }, + "OptInPhoneNumber": { + "input": { + "type": "structure", + "required": [ + "phoneNumber" + ], + "members": { + "phoneNumber": {} + } + }, + "output": { + "resultWrapper": "OptInPhoneNumberResult", + "type": "structure", + "members": {} + } + }, + "Publish": { + "input": { + "type": "structure", + "required": [ + "Message" + ], + "members": { + "TopicArn": {}, + "TargetArn": {}, + "PhoneNumber": {}, + "Message": {}, + "Subject": {}, + "MessageStructure": {}, + "MessageAttributes": { + "type": "map", + "key": { + "locationName": "Name" + }, + "value": { + "locationName": "Value", + "type": "structure", + "required": [ + "DataType" + ], + "members": { + "DataType": {}, + "StringValue": {}, + "BinaryValue": { + "type": "blob" + } + } + } + } + } + }, + "output": { + "resultWrapper": "PublishResult", + "type": "structure", + "members": { + "MessageId": {} + } + } + }, + "RemovePermission": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Label" + ], + "members": { + "TopicArn": {}, + "Label": {} + } + } + }, + "SetEndpointAttributes": { + "input": { + "type": "structure", + "required": [ + "EndpointArn", + "Attributes" + ], + "members": { + "EndpointArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "SetPlatformApplicationAttributes": { + "input": { + "type": "structure", + "required": [ + "PlatformApplicationArn", + "Attributes" + ], + "members": { + "PlatformApplicationArn": {}, + "Attributes": { + "shape": "Sj" + } + } + } + }, + "SetSMSAttributes": { + "input": { + "type": "structure", + "required": [ + "attributes" + ], + "members": { + "attributes": { + "shape": "Sj" + } + } + }, + "output": { + "resultWrapper": "SetSMSAttributesResult", + "type": "structure", + "members": {} + } + }, + "SetSubscriptionAttributes": { + "input": { + "type": "structure", + "required": [ + "SubscriptionArn", + "AttributeName" + ], + "members": { + "SubscriptionArn": {}, + "AttributeName": {}, + "AttributeValue": {} + } + } + }, + "SetTopicAttributes": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "AttributeName" + ], + "members": { + "TopicArn": {}, + "AttributeName": {}, + "AttributeValue": {} + } + } + }, + "Subscribe": { + "input": { + "type": "structure", + "required": [ + "TopicArn", + "Protocol" + ], + "members": { + "TopicArn": {}, + "Protocol": {}, + "Endpoint": {} + } + }, + "output": { + "resultWrapper": "SubscribeResult", + "type": "structure", + "members": { + "SubscriptionArn": {} + } + } + }, + "Unsubscribe": { + "input": { + "type": "structure", + "required": [ + "SubscriptionArn" + ], + "members": { + "SubscriptionArn": {} + } + } + } + }, + "shapes": { + "Sj": { + "type": "map", + "key": {}, + "value": {} + }, + "S1n": { + "type": "list", + "member": { + "type": "structure", + "members": { + "SubscriptionArn": {}, + "Owner": {}, + "Protocol": {}, + "Endpoint": {}, + "TopicArn": {} + } + } + } + } +} +},{}],117:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListEndpointsByPlatformApplication": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Endpoints" + }, + "ListPlatformApplications": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "PlatformApplications" + }, + "ListSubscriptions": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Subscriptions" + }, + "ListSubscriptionsByTopic": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Subscriptions" + }, + "ListTopics": { + "input_token": "NextToken", + "output_token": "NextToken", + "result_key": "Topics" + } + } +} + +},{}],118:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2012-11-05", + "endpointPrefix": "sqs", + "protocol": "query", + "serviceAbbreviation": "Amazon SQS", + "serviceFullName": "Amazon Simple Queue Service", + "signatureVersion": "v4", + "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/" + }, + "operations": { + "AddPermission": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Label", + "AWSAccountIds", + "Actions" + ], + "members": { + "QueueUrl": {}, + "Label": {}, + "AWSAccountIds": { + "type": "list", + "member": { + "locationName": "AWSAccountId" + }, + "flattened": true + }, + "Actions": { + "type": "list", + "member": { + "locationName": "ActionName" + }, + "flattened": true + } + } + } + }, + "ChangeMessageVisibility": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "ReceiptHandle", + "VisibilityTimeout" + ], + "members": { + "QueueUrl": {}, + "ReceiptHandle": {}, + "VisibilityTimeout": { + "type": "integer" + } + } + } + }, + "ChangeMessageVisibilityBatch": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Entries" + ], + "members": { + "QueueUrl": {}, + "Entries": { + "type": "list", + "member": { + "locationName": "ChangeMessageVisibilityBatchRequestEntry", + "type": "structure", + "required": [ + "Id", + "ReceiptHandle" + ], + "members": { + "Id": {}, + "ReceiptHandle": {}, + "VisibilityTimeout": { + "type": "integer" + } + } + }, + "flattened": true + } + } + }, + "output": { + "resultWrapper": "ChangeMessageVisibilityBatchResult", + "type": "structure", + "required": [ + "Successful", + "Failed" + ], + "members": { + "Successful": { + "type": "list", + "member": { + "locationName": "ChangeMessageVisibilityBatchResultEntry", + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": {} + } + }, + "flattened": true + }, + "Failed": { + "shape": "Sd" + } + } + } + }, + "CreateQueue": { + "input": { + "type": "structure", + "required": [ + "QueueName" + ], + "members": { + "QueueName": {}, + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + } + } + }, + "output": { + "resultWrapper": "CreateQueueResult", + "type": "structure", + "members": { + "QueueUrl": {} + } + } + }, + "DeleteMessage": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "ReceiptHandle" + ], + "members": { + "QueueUrl": {}, + "ReceiptHandle": {} + } + } + }, + "DeleteMessageBatch": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Entries" + ], + "members": { + "QueueUrl": {}, + "Entries": { + "type": "list", + "member": { + "locationName": "DeleteMessageBatchRequestEntry", + "type": "structure", + "required": [ + "Id", + "ReceiptHandle" + ], + "members": { + "Id": {}, + "ReceiptHandle": {} + } + }, + "flattened": true + } + } + }, + "output": { + "resultWrapper": "DeleteMessageBatchResult", + "type": "structure", + "required": [ + "Successful", + "Failed" + ], + "members": { + "Successful": { + "type": "list", + "member": { + "locationName": "DeleteMessageBatchResultEntry", + "type": "structure", + "required": [ + "Id" + ], + "members": { + "Id": {} + } + }, + "flattened": true + }, + "Failed": { + "shape": "Sd" + } + } + } + }, + "DeleteQueue": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {} + } + } + }, + "GetQueueAttributes": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {}, + "AttributeNames": { + "shape": "St" + } + } + }, + "output": { + "resultWrapper": "GetQueueAttributesResult", + "type": "structure", + "members": { + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + } + } + } + }, + "GetQueueUrl": { + "input": { + "type": "structure", + "required": [ + "QueueName" + ], + "members": { + "QueueName": {}, + "QueueOwnerAWSAccountId": {} + } + }, + "output": { + "resultWrapper": "GetQueueUrlResult", + "type": "structure", + "members": { + "QueueUrl": {} + } + } + }, + "ListDeadLetterSourceQueues": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {} + } + }, + "output": { + "resultWrapper": "ListDeadLetterSourceQueuesResult", + "type": "structure", + "required": [ + "queueUrls" + ], + "members": { + "queueUrls": { + "shape": "Sz" + } + } + } + }, + "ListQueues": { + "input": { + "type": "structure", + "members": { + "QueueNamePrefix": {} + } + }, + "output": { + "resultWrapper": "ListQueuesResult", + "type": "structure", + "members": { + "QueueUrls": { + "shape": "Sz" + } + } + } + }, + "PurgeQueue": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {} + } + } + }, + "ReceiveMessage": { + "input": { + "type": "structure", + "required": [ + "QueueUrl" + ], + "members": { + "QueueUrl": {}, + "AttributeNames": { + "shape": "St" + }, + "MessageAttributeNames": { + "type": "list", + "member": { + "locationName": "MessageAttributeName" + }, + "flattened": true + }, + "MaxNumberOfMessages": { + "type": "integer" + }, + "VisibilityTimeout": { + "type": "integer" + }, + "WaitTimeSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "ReceiveMessageResult", + "type": "structure", + "members": { + "Messages": { + "type": "list", + "member": { + "locationName": "Message", + "type": "structure", + "members": { + "MessageId": {}, + "ReceiptHandle": {}, + "MD5OfBody": {}, + "Body": {}, + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + }, + "MD5OfMessageAttributes": {}, + "MessageAttributes": { + "shape": "S19", + "locationName": "MessageAttribute" + } + } + }, + "flattened": true + } + } + } + }, + "RemovePermission": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Label" + ], + "members": { + "QueueUrl": {}, + "Label": {} + } + } + }, + "SendMessage": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "MessageBody" + ], + "members": { + "QueueUrl": {}, + "MessageBody": {}, + "DelaySeconds": { + "type": "integer" + }, + "MessageAttributes": { + "shape": "S19", + "locationName": "MessageAttribute" + } + } + }, + "output": { + "resultWrapper": "SendMessageResult", + "type": "structure", + "members": { + "MD5OfMessageBody": {}, + "MD5OfMessageAttributes": {}, + "MessageId": {} + } + } + }, + "SendMessageBatch": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Entries" + ], + "members": { + "QueueUrl": {}, + "Entries": { + "type": "list", + "member": { + "locationName": "SendMessageBatchRequestEntry", + "type": "structure", + "required": [ + "Id", + "MessageBody" + ], + "members": { + "Id": {}, + "MessageBody": {}, + "DelaySeconds": { + "type": "integer" + }, + "MessageAttributes": { + "shape": "S19", + "locationName": "MessageAttribute" + } + } + }, + "flattened": true + } + } + }, + "output": { + "resultWrapper": "SendMessageBatchResult", + "type": "structure", + "required": [ + "Successful", + "Failed" + ], + "members": { + "Successful": { + "type": "list", + "member": { + "locationName": "SendMessageBatchResultEntry", + "type": "structure", + "required": [ + "Id", + "MessageId", + "MD5OfMessageBody" + ], + "members": { + "Id": {}, + "MessageId": {}, + "MD5OfMessageBody": {}, + "MD5OfMessageAttributes": {} + } + }, + "flattened": true + }, + "Failed": { + "shape": "Sd" + } + } + } + }, + "SetQueueAttributes": { + "input": { + "type": "structure", + "required": [ + "QueueUrl", + "Attributes" + ], + "members": { + "QueueUrl": {}, + "Attributes": { + "shape": "Sh", + "locationName": "Attribute" + } + } + } + } + }, + "shapes": { + "Sd": { + "type": "list", + "member": { + "locationName": "BatchResultErrorEntry", + "type": "structure", + "required": [ + "Id", + "SenderFault", + "Code" + ], + "members": { + "Id": {}, + "SenderFault": { + "type": "boolean" + }, + "Code": {}, + "Message": {} + } + }, + "flattened": true + }, + "Sh": { + "type": "map", + "key": { + "locationName": "Name" + }, + "value": { + "locationName": "Value" + }, + "flattened": true, + "locationName": "Attribute" + }, + "St": { + "type": "list", + "member": { + "locationName": "AttributeName" + }, + "flattened": true + }, + "Sz": { + "type": "list", + "member": { + "locationName": "QueueUrl" + }, + "flattened": true + }, + "S19": { + "type": "map", + "key": { + "locationName": "Name" + }, + "value": { + "locationName": "Value", + "type": "structure", + "required": [ + "DataType" + ], + "members": { + "StringValue": {}, + "BinaryValue": { + "type": "blob" + }, + "StringListValues": { + "flattened": true, + "locationName": "StringListValue", + "type": "list", + "member": { + "locationName": "StringListValue" + } + }, + "BinaryListValues": { + "flattened": true, + "locationName": "BinaryListValue", + "type": "list", + "member": { + "locationName": "BinaryListValue", + "type": "blob" + } + }, + "DataType": {} + } + }, + "flattened": true + } + } +} +},{}],119:[function(require,module,exports){ +module.exports={ + "pagination": { + "ListQueues": { + "result_key": "QueueUrls" + } + } +} + +},{}],120:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2014-11-06", + "endpointPrefix": "ssm", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "Amazon SSM", + "serviceFullName": "Amazon Simple Systems Management Service", + "signatureVersion": "v4", + "targetPrefix": "AmazonSSM" + }, + "operations": { + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId", + "Tags" + ], + "members": { + "ResourceType": {}, + "ResourceId": {}, + "Tags": { + "shape": "S4" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CancelCommand": { + "input": { + "type": "structure", + "required": [ + "CommandId" + ], + "members": { + "CommandId": {}, + "InstanceIds": { + "shape": "Sb" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "CreateActivation": { + "input": { + "type": "structure", + "required": [ + "IamRole" + ], + "members": { + "Description": {}, + "DefaultInstanceName": {}, + "IamRole": {}, + "RegistrationLimit": { + "type": "integer" + }, + "ExpirationDate": { + "type": "timestamp" + } + } + }, + "output": { + "type": "structure", + "members": { + "ActivationId": {}, + "ActivationCode": {} + } + } + }, + "CreateAssociation": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId" + ], + "members": { + "Name": {}, + "InstanceId": {}, + "Parameters": { + "shape": "Sp" + } + } + }, + "output": { + "type": "structure", + "members": { + "AssociationDescription": { + "shape": "Su" + } + } + } + }, + "CreateAssociationBatch": { + "input": { + "type": "structure", + "required": [ + "Entries" + ], + "members": { + "Entries": { + "type": "list", + "member": { + "shape": "S12", + "locationName": "entries" + } + } + } + }, + "output": { + "type": "structure", + "members": { + "Successful": { + "type": "list", + "member": { + "shape": "Su", + "locationName": "AssociationDescription" + } + }, + "Failed": { + "type": "list", + "member": { + "locationName": "FailedCreateAssociationEntry", + "type": "structure", + "members": { + "Entry": { + "shape": "S12" + }, + "Message": {}, + "Fault": {} + } + } + } + } + } + }, + "CreateDocument": { + "input": { + "type": "structure", + "required": [ + "Content", + "Name" + ], + "members": { + "Content": {}, + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "DocumentDescription": { + "shape": "S1c" + } + } + } + }, + "DeleteActivation": { + "input": { + "type": "structure", + "required": [ + "ActivationId" + ], + "members": { + "ActivationId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteAssociation": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId" + ], + "members": { + "Name": {}, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeleteDocument": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DeregisterManagedInstance": { + "input": { + "type": "structure", + "required": [ + "InstanceId" + ], + "members": { + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "DescribeActivations": { + "input": { + "type": "structure", + "members": { + "Filters": { + "type": "list", + "member": { + "type": "structure", + "members": { + "FilterKey": {}, + "FilterValues": { + "type": "list", + "member": {} + } + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ActivationList": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ActivationId": {}, + "Description": {}, + "DefaultInstanceName": {}, + "IamRole": {}, + "RegistrationLimit": { + "type": "integer" + }, + "RegistrationsCount": { + "type": "integer" + }, + "ExpirationDate": { + "type": "timestamp" + }, + "Expired": { + "type": "boolean" + }, + "CreatedDate": { + "type": "timestamp" + } + } + } + }, + "NextToken": {} + } + } + }, + "DescribeAssociation": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId" + ], + "members": { + "Name": {}, + "InstanceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "AssociationDescription": { + "shape": "Su" + } + } + } + }, + "DescribeDocument": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Document": { + "shape": "S1c" + } + } + } + }, + "DescribeDocumentPermission": { + "input": { + "type": "structure", + "required": [ + "Name", + "PermissionType" + ], + "members": { + "Name": {}, + "PermissionType": {} + } + }, + "output": { + "type": "structure", + "members": { + "AccountIds": { + "shape": "S2m" + } + } + } + }, + "DescribeInstanceInformation": { + "input": { + "type": "structure", + "members": { + "InstanceInformationFilterList": { + "type": "list", + "member": { + "locationName": "InstanceInformationFilter", + "type": "structure", + "required": [ + "key", + "valueSet" + ], + "members": { + "key": {}, + "valueSet": { + "type": "list", + "member": { + "locationName": "InstanceInformationFilterValue" + } + } + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "InstanceInformationList": { + "type": "list", + "member": { + "locationName": "InstanceInformation", + "type": "structure", + "members": { + "InstanceId": {}, + "PingStatus": {}, + "LastPingDateTime": { + "type": "timestamp" + }, + "AgentVersion": {}, + "IsLatestVersion": { + "type": "boolean" + }, + "PlatformType": {}, + "PlatformName": {}, + "PlatformVersion": {}, + "ActivationId": {}, + "IamRole": {}, + "RegistrationDate": { + "type": "timestamp" + }, + "ResourceType": {}, + "Name": {}, + "IPAddress": {}, + "ComputerName": {} + } + } + }, + "NextToken": {} + } + } + }, + "GetDocument": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {} + } + }, + "output": { + "type": "structure", + "members": { + "Name": {}, + "Content": {} + } + } + }, + "ListAssociations": { + "input": { + "type": "structure", + "required": [ + "AssociationFilterList" + ], + "members": { + "AssociationFilterList": { + "type": "list", + "member": { + "locationName": "AssociationFilter", + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Associations": { + "type": "list", + "member": { + "locationName": "Association", + "type": "structure", + "members": { + "Name": {}, + "InstanceId": {} + } + } + }, + "NextToken": {} + } + } + }, + "ListCommandInvocations": { + "input": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {}, + "Filters": { + "shape": "S3f" + }, + "Details": { + "type": "boolean" + } + } + }, + "output": { + "type": "structure", + "members": { + "CommandInvocations": { + "type": "list", + "member": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "Comment": {}, + "DocumentName": {}, + "RequestedDateTime": { + "type": "timestamp" + }, + "Status": {}, + "TraceOutput": {}, + "CommandPlugins": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Status": {}, + "ResponseCode": { + "type": "integer" + }, + "ResponseStartDateTime": { + "type": "timestamp" + }, + "ResponseFinishDateTime": { + "type": "timestamp" + }, + "Output": {}, + "OutputS3BucketName": {}, + "OutputS3KeyPrefix": {} + } + } + }, + "ServiceRole": {}, + "NotificationConfig": { + "shape": "S3y" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListCommands": { + "input": { + "type": "structure", + "members": { + "CommandId": {}, + "InstanceId": {}, + "MaxResults": { + "type": "integer" + }, + "NextToken": {}, + "Filters": { + "shape": "S3f" + } + } + }, + "output": { + "type": "structure", + "members": { + "Commands": { + "type": "list", + "member": { + "shape": "S46" + } + }, + "NextToken": {} + } + } + }, + "ListDocuments": { + "input": { + "type": "structure", + "members": { + "DocumentFilterList": { + "type": "list", + "member": { + "locationName": "DocumentFilter", + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "MaxResults": { + "type": "integer" + }, + "NextToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "DocumentIdentifiers": { + "type": "list", + "member": { + "locationName": "DocumentIdentifier", + "type": "structure", + "members": { + "Name": {}, + "Owner": {}, + "PlatformTypes": { + "shape": "S1q" + } + } + } + }, + "NextToken": {} + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId" + ], + "members": { + "ResourceType": {}, + "ResourceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "TagList": { + "shape": "S4" + } + } + } + }, + "ModifyDocumentPermission": { + "input": { + "type": "structure", + "required": [ + "Name", + "PermissionType" + ], + "members": { + "Name": {}, + "PermissionType": {}, + "AccountIdsToAdd": { + "shape": "S2m" + }, + "AccountIdsToRemove": { + "shape": "S2m" + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceType", + "ResourceId", + "TagKeys" + ], + "members": { + "ResourceType": {}, + "ResourceId": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": {} + } + }, + "SendCommand": { + "input": { + "type": "structure", + "required": [ + "InstanceIds", + "DocumentName" + ], + "members": { + "InstanceIds": { + "shape": "Sb" + }, + "DocumentName": {}, + "DocumentHash": {}, + "DocumentHashType": {}, + "TimeoutSeconds": { + "type": "integer" + }, + "Comment": {}, + "Parameters": { + "shape": "Sp" + }, + "OutputS3BucketName": {}, + "OutputS3KeyPrefix": {}, + "ServiceRoleArn": {}, + "NotificationConfig": { + "shape": "S3y" + } + } + }, + "output": { + "type": "structure", + "members": { + "Command": { + "shape": "S46" + } + } + } + }, + "UpdateAssociationStatus": { + "input": { + "type": "structure", + "required": [ + "Name", + "InstanceId", + "AssociationStatus" + ], + "members": { + "Name": {}, + "InstanceId": {}, + "AssociationStatus": { + "shape": "Sw" + } + } + }, + "output": { + "type": "structure", + "members": { + "AssociationDescription": { + "shape": "Su" + } + } + } + }, + "UpdateManagedInstanceRole": { + "input": { + "type": "structure", + "required": [ + "InstanceId", + "IamRole" + ], + "members": { + "InstanceId": {}, + "IamRole": {} + } + }, + "output": { + "type": "structure", + "members": {} + } + } + }, + "shapes": { + "S4": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "Sb": { + "type": "list", + "member": {} + }, + "Sp": { + "type": "map", + "key": {}, + "value": { + "type": "list", + "member": {} + } + }, + "Su": { + "type": "structure", + "members": { + "Name": {}, + "InstanceId": {}, + "Date": { + "type": "timestamp" + }, + "Status": { + "shape": "Sw" + }, + "Parameters": { + "shape": "Sp" + } + } + }, + "Sw": { + "type": "structure", + "required": [ + "Date", + "Name", + "Message" + ], + "members": { + "Date": { + "type": "timestamp" + }, + "Name": {}, + "Message": {}, + "AdditionalInfo": {} + } + }, + "S12": { + "type": "structure", + "members": { + "Name": {}, + "InstanceId": {}, + "Parameters": { + "shape": "Sp" + } + } + }, + "S1c": { + "type": "structure", + "members": { + "Sha1": {}, + "Hash": {}, + "HashType": {}, + "Name": {}, + "Owner": {}, + "CreatedDate": { + "type": "timestamp" + }, + "Status": {}, + "Description": {}, + "Parameters": { + "type": "list", + "member": { + "locationName": "DocumentParameter", + "type": "structure", + "members": { + "Name": {}, + "Type": {}, + "Description": {}, + "DefaultValue": {} + } + } + }, + "PlatformTypes": { + "shape": "S1q" + } + } + }, + "S1q": { + "type": "list", + "member": { + "locationName": "PlatformType" + } + }, + "S2m": { + "type": "list", + "member": { + "locationName": "AccountId" + } + }, + "S3f": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "key", + "value" + ], + "members": { + "key": {}, + "value": {} + } + } + }, + "S3y": { + "type": "structure", + "members": { + "NotificationArn": {}, + "NotificationEvents": { + "type": "list", + "member": {} + }, + "NotificationType": {} + } + }, + "S46": { + "type": "structure", + "members": { + "CommandId": {}, + "DocumentName": {}, + "Comment": {}, + "ExpiresAfter": { + "type": "timestamp" + }, + "Parameters": { + "shape": "Sp" + }, + "InstanceIds": { + "shape": "Sb" + }, + "RequestedDateTime": { + "type": "timestamp" + }, + "Status": {}, + "OutputS3BucketName": {}, + "OutputS3KeyPrefix": {}, + "ServiceRole": {}, + "NotificationConfig": { + "shape": "S3y" + } + } + } + } +} +},{}],121:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeInstanceInformation": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "InstanceInformationList" + }, + "ListAssociations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Associations" + }, + "ListCommandInvocations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "CommandInvocations" + }, + "ListCommands": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "Commands" + }, + "ListDocuments": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "DocumentIdentifiers" + }, + "DescribeActivations": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults", + "result_key": "ActivationList" + } + } +} + +},{}],122:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2013-06-30", + "endpointPrefix": "storagegateway", + "jsonVersion": "1.1", + "protocol": "json", + "serviceFullName": "AWS Storage Gateway", + "signatureVersion": "v4", + "targetPrefix": "StorageGateway_20130630" + }, + "operations": { + "ActivateGateway": { + "input": { + "type": "structure", + "required": [ + "ActivationKey", + "GatewayName", + "GatewayTimezone", + "GatewayRegion" + ], + "members": { + "ActivationKey": {}, + "GatewayName": {}, + "GatewayTimezone": {}, + "GatewayRegion": {}, + "GatewayType": {}, + "TapeDriveType": {}, + "MediumChangerType": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "AddCache": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskIds" + ], + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "AddTagsToResource": { + "input": { + "type": "structure", + "required": [ + "ResourceARN", + "Tags" + ], + "members": { + "ResourceARN": {}, + "Tags": { + "shape": "Sh" + } + } + }, + "output": { + "type": "structure", + "members": { + "ResourceARN": {} + } + } + }, + "AddUploadBuffer": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskIds" + ], + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "AddWorkingStorage": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskIds" + ], + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "CancelArchival": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeARN" + ], + "members": { + "GatewayARN": {}, + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "CancelRetrieval": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeARN" + ], + "members": { + "GatewayARN": {}, + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "CreateCachediSCSIVolume": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "VolumeSizeInBytes", + "TargetName", + "NetworkInterfaceId", + "ClientToken" + ], + "members": { + "GatewayARN": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "SnapshotId": {}, + "TargetName": {}, + "NetworkInterfaceId": {}, + "ClientToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "TargetARN": {} + } + } + }, + "CreateSnapshot": { + "input": { + "type": "structure", + "required": [ + "VolumeARN", + "SnapshotDescription" + ], + "members": { + "VolumeARN": {}, + "SnapshotDescription": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "SnapshotId": {} + } + } + }, + "CreateSnapshotFromVolumeRecoveryPoint": { + "input": { + "type": "structure", + "required": [ + "VolumeARN", + "SnapshotDescription" + ], + "members": { + "VolumeARN": {}, + "SnapshotDescription": {} + } + }, + "output": { + "type": "structure", + "members": { + "SnapshotId": {}, + "VolumeARN": {}, + "VolumeRecoveryPointTime": {} + } + } + }, + "CreateStorediSCSIVolume": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "DiskId", + "PreserveExistingData", + "TargetName", + "NetworkInterfaceId" + ], + "members": { + "GatewayARN": {}, + "DiskId": {}, + "SnapshotId": {}, + "PreserveExistingData": { + "type": "boolean" + }, + "TargetName": {}, + "NetworkInterfaceId": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "TargetARN": {} + } + } + }, + "CreateTapeWithBarcode": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeSizeInBytes", + "TapeBarcode" + ], + "members": { + "GatewayARN": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeBarcode": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "CreateTapes": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeSizeInBytes", + "ClientToken", + "NumTapesToCreate", + "TapeBarcodePrefix" + ], + "members": { + "GatewayARN": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "ClientToken": {}, + "NumTapesToCreate": { + "type": "integer" + }, + "TapeBarcodePrefix": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARNs": { + "shape": "S1l" + } + } + } + }, + "DeleteBandwidthRateLimit": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "BandwidthType" + ], + "members": { + "GatewayARN": {}, + "BandwidthType": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "DeleteChapCredentials": { + "input": { + "type": "structure", + "required": [ + "TargetARN", + "InitiatorName" + ], + "members": { + "TargetARN": {}, + "InitiatorName": {} + } + }, + "output": { + "type": "structure", + "members": { + "TargetARN": {}, + "InitiatorName": {} + } + } + }, + "DeleteGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "DeleteSnapshotSchedule": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {} + } + } + }, + "DeleteTape": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "TapeARN" + ], + "members": { + "GatewayARN": {}, + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "DeleteTapeArchive": { + "input": { + "type": "structure", + "required": [ + "TapeARN" + ], + "members": { + "TapeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "DeleteVolume": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {} + } + } + }, + "DescribeBandwidthRateLimit": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "AverageUploadRateLimitInBitsPerSec": { + "type": "long" + }, + "AverageDownloadRateLimitInBitsPerSec": { + "type": "long" + } + } + } + }, + "DescribeCache": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + }, + "CacheAllocatedInBytes": { + "type": "long" + }, + "CacheUsedPercentage": { + "type": "double" + }, + "CacheDirtyPercentage": { + "type": "double" + }, + "CacheHitPercentage": { + "type": "double" + }, + "CacheMissPercentage": { + "type": "double" + } + } + } + }, + "DescribeCachediSCSIVolumes": { + "input": { + "type": "structure", + "required": [ + "VolumeARNs" + ], + "members": { + "VolumeARNs": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "CachediSCSIVolumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeId": {}, + "VolumeType": {}, + "VolumeStatus": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "VolumeProgress": { + "type": "double" + }, + "SourceSnapshotId": {}, + "VolumeiSCSIAttributes": { + "shape": "S2i" + } + } + } + } + } + } + }, + "DescribeChapCredentials": { + "input": { + "type": "structure", + "required": [ + "TargetARN" + ], + "members": { + "TargetARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChapCredentials": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TargetARN": {}, + "SecretToAuthenticateInitiator": {}, + "InitiatorName": {}, + "SecretToAuthenticateTarget": {} + } + } + } + } + } + }, + "DescribeGatewayInformation": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "GatewayId": {}, + "GatewayName": {}, + "GatewayTimezone": {}, + "GatewayState": {}, + "GatewayNetworkInterfaces": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Ipv4Address": {}, + "MacAddress": {}, + "Ipv6Address": {} + } + } + }, + "GatewayType": {}, + "NextUpdateAvailabilityDate": {}, + "LastSoftwareUpdate": {} + } + } + }, + "DescribeMaintenanceStartTime": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "HourOfDay": { + "type": "integer" + }, + "MinuteOfHour": { + "type": "integer" + }, + "DayOfWeek": { + "type": "integer" + }, + "Timezone": {} + } + } + }, + "DescribeSnapshotSchedule": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {}, + "StartAt": { + "type": "integer" + }, + "RecurrenceInHours": { + "type": "integer" + }, + "Description": {}, + "Timezone": {} + } + } + }, + "DescribeStorediSCSIVolumes": { + "input": { + "type": "structure", + "required": [ + "VolumeARNs" + ], + "members": { + "VolumeARNs": { + "shape": "S2a" + } + } + }, + "output": { + "type": "structure", + "members": { + "StorediSCSIVolumes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeId": {}, + "VolumeType": {}, + "VolumeStatus": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "VolumeProgress": { + "type": "double" + }, + "VolumeDiskId": {}, + "SourceSnapshotId": {}, + "PreservedExistingData": { + "type": "boolean" + }, + "VolumeiSCSIAttributes": { + "shape": "S2i" + } + } + } + } + } + } + }, + "DescribeTapeArchives": { + "input": { + "type": "structure", + "members": { + "TapeARNs": { + "shape": "S1l" + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TapeArchives": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeBarcode": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "CompletionTime": { + "type": "timestamp" + }, + "RetrievedTo": {}, + "TapeStatus": {} + } + } + }, + "Marker": {} + } + } + }, + "DescribeTapeRecoveryPoints": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "TapeRecoveryPointInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeRecoveryPointTime": { + "type": "timestamp" + }, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeStatus": {} + } + } + }, + "Marker": {} + } + } + }, + "DescribeTapes": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "TapeARNs": { + "shape": "S1l" + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Tapes": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeBarcode": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeStatus": {}, + "VTLDevice": {}, + "Progress": { + "type": "double" + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeUploadBuffer": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + }, + "UploadBufferUsedInBytes": { + "type": "long" + }, + "UploadBufferAllocatedInBytes": { + "type": "long" + } + } + } + }, + "DescribeVTLDevices": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "VTLDeviceARNs": { + "type": "list", + "member": {} + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "VTLDevices": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VTLDeviceARN": {}, + "VTLDeviceType": {}, + "VTLDeviceVendor": {}, + "VTLDeviceProductIdentifier": {}, + "DeviceiSCSIAttributes": { + "type": "structure", + "members": { + "TargetARN": {}, + "NetworkInterfaceId": {}, + "NetworkInterfacePort": { + "type": "integer" + }, + "ChapEnabled": { + "type": "boolean" + } + } + } + } + } + }, + "Marker": {} + } + } + }, + "DescribeWorkingStorage": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "DiskIds": { + "shape": "Sc" + }, + "WorkingStorageUsedInBytes": { + "type": "long" + }, + "WorkingStorageAllocatedInBytes": { + "type": "long" + } + } + } + }, + "DisableGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "ListGateways": { + "input": { + "type": "structure", + "members": { + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Gateways": { + "type": "list", + "member": { + "type": "structure", + "members": { + "GatewayId": {}, + "GatewayARN": {}, + "GatewayType": {}, + "GatewayOperationalState": {}, + "GatewayName": {} + } + } + }, + "Marker": {} + } + } + }, + "ListLocalDisks": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "Disks": { + "type": "list", + "member": { + "type": "structure", + "members": { + "DiskId": {}, + "DiskPath": {}, + "DiskNode": {}, + "DiskStatus": {}, + "DiskSizeInBytes": { + "type": "long" + }, + "DiskAllocationType": {}, + "DiskAllocationResource": {} + } + } + } + } + } + }, + "ListTagsForResource": { + "input": { + "type": "structure", + "required": [ + "ResourceARN" + ], + "members": { + "ResourceARN": {}, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "ResourceARN": {}, + "Marker": {}, + "Tags": { + "shape": "Sh" + } + } + } + }, + "ListTapes": { + "input": { + "type": "structure", + "members": { + "TapeARNs": { + "shape": "S1l" + }, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "TapeInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "TapeARN": {}, + "TapeBarcode": {}, + "TapeSizeInBytes": { + "type": "long" + }, + "TapeStatus": {}, + "GatewayARN": {} + } + } + }, + "Marker": {} + } + } + }, + "ListVolumeInitiators": { + "input": { + "type": "structure", + "required": [ + "VolumeARN" + ], + "members": { + "VolumeARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "Initiators": { + "type": "list", + "member": {} + } + } + } + }, + "ListVolumeRecoveryPoints": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "VolumeRecoveryPointInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeSizeInBytes": { + "type": "long" + }, + "VolumeUsageInBytes": { + "type": "long" + }, + "VolumeRecoveryPointTime": {} + } + } + } + } + } + }, + "ListVolumes": { + "input": { + "type": "structure", + "members": { + "GatewayARN": {}, + "Marker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "Marker": {}, + "VolumeInfos": { + "type": "list", + "member": { + "type": "structure", + "members": { + "VolumeARN": {}, + "VolumeId": {}, + "GatewayARN": {}, + "GatewayId": {}, + "VolumeType": {}, + "VolumeSizeInBytes": { + "type": "long" + } + } + } + } + } + } + }, + "RemoveTagsFromResource": { + "input": { + "type": "structure", + "required": [ + "ResourceARN", + "TagKeys" + ], + "members": { + "ResourceARN": {}, + "TagKeys": { + "type": "list", + "member": {} + } + } + }, + "output": { + "type": "structure", + "members": { + "ResourceARN": {} + } + } + }, + "ResetCache": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "RetrieveTapeArchive": { + "input": { + "type": "structure", + "required": [ + "TapeARN", + "GatewayARN" + ], + "members": { + "TapeARN": {}, + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "RetrieveTapeRecoveryPoint": { + "input": { + "type": "structure", + "required": [ + "TapeARN", + "GatewayARN" + ], + "members": { + "TapeARN": {}, + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "TapeARN": {} + } + } + }, + "SetLocalConsolePassword": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "LocalConsolePassword" + ], + "members": { + "GatewayARN": {}, + "LocalConsolePassword": { + "type": "string", + "sensitive": true + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "ShutdownGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "StartGateway": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateBandwidthRateLimit": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "AverageUploadRateLimitInBitsPerSec": { + "type": "long" + }, + "AverageDownloadRateLimitInBitsPerSec": { + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateChapCredentials": { + "input": { + "type": "structure", + "required": [ + "TargetARN", + "SecretToAuthenticateInitiator", + "InitiatorName" + ], + "members": { + "TargetARN": {}, + "SecretToAuthenticateInitiator": {}, + "InitiatorName": {}, + "SecretToAuthenticateTarget": {} + } + }, + "output": { + "type": "structure", + "members": { + "TargetARN": {}, + "InitiatorName": {} + } + } + }, + "UpdateGatewayInformation": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {}, + "GatewayName": {}, + "GatewayTimezone": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {}, + "GatewayName": {} + } + } + }, + "UpdateGatewaySoftwareNow": { + "input": { + "type": "structure", + "required": [ + "GatewayARN" + ], + "members": { + "GatewayARN": {} + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateMaintenanceStartTime": { + "input": { + "type": "structure", + "required": [ + "GatewayARN", + "HourOfDay", + "MinuteOfHour", + "DayOfWeek" + ], + "members": { + "GatewayARN": {}, + "HourOfDay": { + "type": "integer" + }, + "MinuteOfHour": { + "type": "integer" + }, + "DayOfWeek": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "GatewayARN": {} + } + } + }, + "UpdateSnapshotSchedule": { + "input": { + "type": "structure", + "required": [ + "VolumeARN", + "StartAt", + "RecurrenceInHours" + ], + "members": { + "VolumeARN": {}, + "StartAt": { + "type": "integer" + }, + "RecurrenceInHours": { + "type": "integer" + }, + "Description": {} + } + }, + "output": { + "type": "structure", + "members": { + "VolumeARN": {} + } + } + }, + "UpdateVTLDeviceType": { + "input": { + "type": "structure", + "required": [ + "VTLDeviceARN", + "DeviceType" + ], + "members": { + "VTLDeviceARN": {}, + "DeviceType": {} + } + }, + "output": { + "type": "structure", + "members": { + "VTLDeviceARN": {} + } + } + } + }, + "shapes": { + "Sc": { + "type": "list", + "member": {} + }, + "Sh": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Key", + "Value" + ], + "members": { + "Key": {}, + "Value": {} + } + } + }, + "S1l": { + "type": "list", + "member": {} + }, + "S2a": { + "type": "list", + "member": {} + }, + "S2i": { + "type": "structure", + "members": { + "TargetARN": {}, + "NetworkInterfaceId": {}, + "NetworkInterfacePort": { + "type": "integer" + }, + "LunNumber": { + "type": "integer" + }, + "ChapEnabled": { + "type": "boolean" + } + } + } + } +} +},{}],123:[function(require,module,exports){ +module.exports={ + "pagination": { + "DescribeCachediSCSIVolumes": { + "result_key": "CachediSCSIVolumes" + }, + "DescribeStorediSCSIVolumes": { + "result_key": "StorediSCSIVolumes" + }, + "DescribeTapeArchives": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "TapeArchives" + }, + "DescribeTapeRecoveryPoints": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "TapeRecoveryPointInfos" + }, + "DescribeTapes": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "Tapes" + }, + "DescribeVTLDevices": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "VTLDevices" + }, + "ListGateways": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "Gateways" + }, + "ListLocalDisks": { + "result_key": "Disks" + }, + "ListVolumeRecoveryPoints": { + "result_key": "VolumeRecoveryPointInfos" + }, + "ListVolumes": { + "input_token": "Marker", + "limit_key": "Limit", + "output_token": "Marker", + "result_key": "VolumeInfos" + } + } +} + +},{}],124:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2012-08-10", + "endpointPrefix": "streams.dynamodb", + "jsonVersion": "1.0", + "protocol": "json", + "serviceFullName": "Amazon DynamoDB Streams", + "signatureVersion": "v4", + "signingName": "dynamodb", + "targetPrefix": "DynamoDBStreams_20120810" + }, + "operations": { + "DescribeStream": { + "input": { + "type": "structure", + "required": [ + "StreamArn" + ], + "members": { + "StreamArn": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartShardId": {} + } + }, + "output": { + "type": "structure", + "members": { + "StreamDescription": { + "type": "structure", + "members": { + "StreamArn": {}, + "StreamLabel": {}, + "StreamStatus": {}, + "StreamViewType": {}, + "CreationRequestDateTime": { + "type": "timestamp" + }, + "TableName": {}, + "KeySchema": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "AttributeName", + "KeyType" + ], + "members": { + "AttributeName": {}, + "KeyType": {} + } + } + }, + "Shards": { + "type": "list", + "member": { + "type": "structure", + "members": { + "ShardId": {}, + "SequenceNumberRange": { + "type": "structure", + "members": { + "StartingSequenceNumber": {}, + "EndingSequenceNumber": {} + } + }, + "ParentShardId": {} + } + } + }, + "LastEvaluatedShardId": {} + } + } + } + } + }, + "GetRecords": { + "input": { + "type": "structure", + "required": [ + "ShardIterator" + ], + "members": { + "ShardIterator": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "Records": { + "type": "list", + "member": { + "type": "structure", + "members": { + "eventID": {}, + "eventName": {}, + "eventVersion": {}, + "eventSource": {}, + "awsRegion": {}, + "dynamodb": { + "type": "structure", + "members": { + "ApproximateCreationDateTime": { + "type": "timestamp" + }, + "Keys": { + "shape": "Sr" + }, + "NewImage": { + "shape": "Sr" + }, + "OldImage": { + "shape": "Sr" + }, + "SequenceNumber": {}, + "SizeBytes": { + "type": "long" + }, + "StreamViewType": {} + } + } + } + } + }, + "NextShardIterator": {} + } + } + }, + "GetShardIterator": { + "input": { + "type": "structure", + "required": [ + "StreamArn", + "ShardId", + "ShardIteratorType" + ], + "members": { + "StreamArn": {}, + "ShardId": {}, + "ShardIteratorType": {}, + "SequenceNumber": {} + } + }, + "output": { + "type": "structure", + "members": { + "ShardIterator": {} + } + } + }, + "ListStreams": { + "input": { + "type": "structure", + "members": { + "TableName": {}, + "Limit": { + "type": "integer" + }, + "ExclusiveStartStreamArn": {} + } + }, + "output": { + "type": "structure", + "members": { + "Streams": { + "type": "list", + "member": { + "type": "structure", + "members": { + "StreamArn": {}, + "TableName": {}, + "StreamLabel": {} + } + } + }, + "LastEvaluatedStreamArn": {} + } + } + } + }, + "shapes": { + "Sr": { + "type": "map", + "key": {}, + "value": { + "shape": "St" + } + }, + "St": { + "type": "structure", + "members": { + "S": {}, + "N": {}, + "B": { + "type": "blob" + }, + "SS": { + "type": "list", + "member": {} + }, + "NS": { + "type": "list", + "member": {} + }, + "BS": { + "type": "list", + "member": { + "type": "blob" + } + }, + "M": { + "type": "map", + "key": {}, + "value": { + "shape": "St" + } + }, + "L": { + "type": "list", + "member": { + "shape": "St" + } + }, + "NULL": { + "type": "boolean" + }, + "BOOL": { + "type": "boolean" + } + } + } + } +} +},{}],125:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2011-06-15", + "endpointPrefix": "sts", + "globalEndpoint": "sts.amazonaws.com", + "protocol": "query", + "serviceAbbreviation": "AWS STS", + "serviceFullName": "AWS Security Token Service", + "signatureVersion": "v4", + "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/" + }, + "operations": { + "AssumeRole": { + "input": { + "type": "structure", + "required": [ + "RoleArn", + "RoleSessionName" + ], + "members": { + "RoleArn": {}, + "RoleSessionName": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + }, + "ExternalId": {}, + "SerialNumber": {}, + "TokenCode": {} + } + }, + "output": { + "resultWrapper": "AssumeRoleResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "AssumedRoleUser": { + "shape": "Sf" + }, + "PackedPolicySize": { + "type": "integer" + } + } + } + }, + "AssumeRoleWithSAML": { + "input": { + "type": "structure", + "required": [ + "RoleArn", + "PrincipalArn", + "SAMLAssertion" + ], + "members": { + "RoleArn": {}, + "PrincipalArn": {}, + "SAMLAssertion": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "AssumeRoleWithSAMLResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "AssumedRoleUser": { + "shape": "Sf" + }, + "PackedPolicySize": { + "type": "integer" + }, + "Subject": {}, + "SubjectType": {}, + "Issuer": {}, + "Audience": {}, + "NameQualifier": {} + } + } + }, + "AssumeRoleWithWebIdentity": { + "input": { + "type": "structure", + "required": [ + "RoleArn", + "RoleSessionName", + "WebIdentityToken" + ], + "members": { + "RoleArn": {}, + "RoleSessionName": {}, + "WebIdentityToken": {}, + "ProviderId": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "AssumeRoleWithWebIdentityResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "SubjectFromWebIdentityToken": {}, + "AssumedRoleUser": { + "shape": "Sf" + }, + "PackedPolicySize": { + "type": "integer" + }, + "Provider": {}, + "Audience": {} + } + } + }, + "DecodeAuthorizationMessage": { + "input": { + "type": "structure", + "required": [ + "EncodedMessage" + ], + "members": { + "EncodedMessage": {} + } + }, + "output": { + "resultWrapper": "DecodeAuthorizationMessageResult", + "type": "structure", + "members": { + "DecodedMessage": {} + } + } + }, + "GetCallerIdentity": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "resultWrapper": "GetCallerIdentityResult", + "type": "structure", + "members": { + "UserId": {}, + "Account": {}, + "Arn": {} + } + } + }, + "GetFederationToken": { + "input": { + "type": "structure", + "required": [ + "Name" + ], + "members": { + "Name": {}, + "Policy": {}, + "DurationSeconds": { + "type": "integer" + } + } + }, + "output": { + "resultWrapper": "GetFederationTokenResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + }, + "FederatedUser": { + "type": "structure", + "required": [ + "FederatedUserId", + "Arn" + ], + "members": { + "FederatedUserId": {}, + "Arn": {} + } + }, + "PackedPolicySize": { + "type": "integer" + } + } + } + }, + "GetSessionToken": { + "input": { + "type": "structure", + "members": { + "DurationSeconds": { + "type": "integer" + }, + "SerialNumber": {}, + "TokenCode": {} + } + }, + "output": { + "resultWrapper": "GetSessionTokenResult", + "type": "structure", + "members": { + "Credentials": { + "shape": "Sa" + } + } + } + } + }, + "shapes": { + "Sa": { + "type": "structure", + "required": [ + "AccessKeyId", + "SecretAccessKey", + "SessionToken", + "Expiration" + ], + "members": { + "AccessKeyId": {}, + "SecretAccessKey": {}, + "SessionToken": {}, + "Expiration": { + "type": "timestamp" + } + } + }, + "Sf": { + "type": "structure", + "required": [ + "AssumedRoleId", + "Arn" + ], + "members": { + "AssumedRoleId": {}, + "Arn": {} + } + } + } +} +},{}],126:[function(require,module,exports){ +module.exports={ + "version": "2.0", + "metadata": { + "apiVersion": "2015-08-24", + "endpointPrefix": "waf", + "jsonVersion": "1.1", + "protocol": "json", + "serviceAbbreviation": "WAF", + "serviceFullName": "AWS WAF", + "signatureVersion": "v4", + "targetPrefix": "AWSWAF_20150824" + }, + "operations": { + "CreateByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ByteMatchSet": { + "shape": "S5" + }, + "ChangeToken": {} + } + } + }, + "CreateIPSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "IPSet": { + "shape": "Sh" + }, + "ChangeToken": {} + } + } + }, + "CreateRule": { + "input": { + "type": "structure", + "required": [ + "Name", + "MetricName", + "ChangeToken" + ], + "members": { + "Name": {}, + "MetricName": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "Rule": { + "shape": "Sp" + }, + "ChangeToken": {} + } + } + }, + "CreateSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "SizeConstraintSet": { + "shape": "Sw" + }, + "ChangeToken": {} + } + } + }, + "CreateSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "SqlInjectionMatchSet": { + "shape": "S13" + }, + "ChangeToken": {} + } + } + }, + "CreateWebACL": { + "input": { + "type": "structure", + "required": [ + "Name", + "MetricName", + "DefaultAction", + "ChangeToken" + ], + "members": { + "Name": {}, + "MetricName": {}, + "DefaultAction": { + "shape": "S17" + }, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "WebACL": { + "shape": "S1a" + }, + "ChangeToken": {} + } + } + }, + "CreateXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "Name", + "ChangeToken" + ], + "members": { + "Name": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "XssMatchSet": { + "shape": "S1g" + }, + "ChangeToken": {} + } + } + }, + "DeleteByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "ChangeToken" + ], + "members": { + "ByteMatchSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteIPSet": { + "input": { + "type": "structure", + "required": [ + "IPSetId", + "ChangeToken" + ], + "members": { + "IPSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteRule": { + "input": { + "type": "structure", + "required": [ + "RuleId", + "ChangeToken" + ], + "members": { + "RuleId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "ChangeToken" + ], + "members": { + "SizeConstraintSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "ChangeToken" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteWebACL": { + "input": { + "type": "structure", + "required": [ + "WebACLId", + "ChangeToken" + ], + "members": { + "WebACLId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "DeleteXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "XssMatchSetId", + "ChangeToken" + ], + "members": { + "XssMatchSetId": {}, + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "GetByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "ByteMatchSetId" + ], + "members": { + "ByteMatchSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "ByteMatchSet": { + "shape": "S5" + } + } + } + }, + "GetChangeToken": { + "input": { + "type": "structure", + "members": {} + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "GetChangeTokenStatus": { + "input": { + "type": "structure", + "required": [ + "ChangeToken" + ], + "members": { + "ChangeToken": {} + } + }, + "output": { + "type": "structure", + "members": { + "ChangeTokenStatus": {} + } + } + }, + "GetIPSet": { + "input": { + "type": "structure", + "required": [ + "IPSetId" + ], + "members": { + "IPSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "IPSet": { + "shape": "Sh" + } + } + } + }, + "GetRule": { + "input": { + "type": "structure", + "required": [ + "RuleId" + ], + "members": { + "RuleId": {} + } + }, + "output": { + "type": "structure", + "members": { + "Rule": { + "shape": "Sp" + } + } + } + }, + "GetSampledRequests": { + "input": { + "type": "structure", + "required": [ + "WebAclId", + "RuleId", + "TimeWindow", + "MaxItems" + ], + "members": { + "WebAclId": {}, + "RuleId": {}, + "TimeWindow": { + "shape": "S29" + }, + "MaxItems": { + "type": "long" + } + } + }, + "output": { + "type": "structure", + "members": { + "SampledRequests": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Request", + "Weight" + ], + "members": { + "Request": { + "type": "structure", + "members": { + "ClientIP": {}, + "Country": {}, + "URI": {}, + "Method": {}, + "HTTPVersion": {}, + "Headers": { + "type": "list", + "member": { + "type": "structure", + "members": { + "Name": {}, + "Value": {} + } + } + } + } + }, + "Weight": { + "type": "long" + }, + "Timestamp": { + "type": "timestamp" + }, + "Action": {} + } + } + }, + "PopulationSize": { + "type": "long" + }, + "TimeWindow": { + "shape": "S29" + } + } + } + }, + "GetSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "SizeConstraintSetId" + ], + "members": { + "SizeConstraintSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "SizeConstraintSet": { + "shape": "Sw" + } + } + } + }, + "GetSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId" + ], + "members": { + "SqlInjectionMatchSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "SqlInjectionMatchSet": { + "shape": "S13" + } + } + } + }, + "GetWebACL": { + "input": { + "type": "structure", + "required": [ + "WebACLId" + ], + "members": { + "WebACLId": {} + } + }, + "output": { + "type": "structure", + "members": { + "WebACL": { + "shape": "S1a" + } + } + } + }, + "GetXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "XssMatchSetId" + ], + "members": { + "XssMatchSetId": {} + } + }, + "output": { + "type": "structure", + "members": { + "XssMatchSet": { + "shape": "S1g" + } + } + } + }, + "ListByteMatchSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "ByteMatchSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "Name" + ], + "members": { + "ByteMatchSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListIPSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "IPSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "IPSetId", + "Name" + ], + "members": { + "IPSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListRules": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "Rules": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "RuleId", + "Name" + ], + "members": { + "RuleId": {}, + "Name": {} + } + } + } + } + } + }, + "ListSizeConstraintSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "SizeConstraintSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "Name" + ], + "members": { + "SizeConstraintSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListSqlInjectionMatchSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "SqlInjectionMatchSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "Name" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "Name": {} + } + } + } + } + } + }, + "ListWebACLs": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "WebACLs": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "WebACLId", + "Name" + ], + "members": { + "WebACLId": {}, + "Name": {} + } + } + } + } + } + }, + "ListXssMatchSets": { + "input": { + "type": "structure", + "members": { + "NextMarker": {}, + "Limit": { + "type": "integer" + } + } + }, + "output": { + "type": "structure", + "members": { + "NextMarker": {}, + "XssMatchSets": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "XssMatchSetId", + "Name" + ], + "members": { + "XssMatchSetId": {}, + "Name": {} + } + } + } + } + } + }, + "UpdateByteMatchSet": { + "input": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "ChangeToken", + "Updates" + ], + "members": { + "ByteMatchSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "ByteMatchTuple" + ], + "members": { + "Action": {}, + "ByteMatchTuple": { + "shape": "S8" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateIPSet": { + "input": { + "type": "structure", + "required": [ + "IPSetId", + "ChangeToken", + "Updates" + ], + "members": { + "IPSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "IPSetDescriptor" + ], + "members": { + "Action": {}, + "IPSetDescriptor": { + "shape": "Sj" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateRule": { + "input": { + "type": "structure", + "required": [ + "RuleId", + "ChangeToken", + "Updates" + ], + "members": { + "RuleId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "Predicate" + ], + "members": { + "Action": {}, + "Predicate": { + "shape": "Sr" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateSizeConstraintSet": { + "input": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "ChangeToken", + "Updates" + ], + "members": { + "SizeConstraintSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "SizeConstraint" + ], + "members": { + "Action": {}, + "SizeConstraint": { + "shape": "Sy" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateSqlInjectionMatchSet": { + "input": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "ChangeToken", + "Updates" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "SqlInjectionMatchTuple" + ], + "members": { + "Action": {}, + "SqlInjectionMatchTuple": { + "shape": "S15" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateWebACL": { + "input": { + "type": "structure", + "required": [ + "WebACLId", + "ChangeToken" + ], + "members": { + "WebACLId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "ActivatedRule" + ], + "members": { + "Action": {}, + "ActivatedRule": { + "shape": "S1c" + } + } + } + }, + "DefaultAction": { + "shape": "S17" + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + }, + "UpdateXssMatchSet": { + "input": { + "type": "structure", + "required": [ + "XssMatchSetId", + "ChangeToken", + "Updates" + ], + "members": { + "XssMatchSetId": {}, + "ChangeToken": {}, + "Updates": { + "type": "list", + "member": { + "type": "structure", + "required": [ + "Action", + "XssMatchTuple" + ], + "members": { + "Action": {}, + "XssMatchTuple": { + "shape": "S1i" + } + } + } + } + } + }, + "output": { + "type": "structure", + "members": { + "ChangeToken": {} + } + } + } + }, + "shapes": { + "S5": { + "type": "structure", + "required": [ + "ByteMatchSetId", + "ByteMatchTuples" + ], + "members": { + "ByteMatchSetId": {}, + "Name": {}, + "ByteMatchTuples": { + "type": "list", + "member": { + "shape": "S8" + } + } + } + }, + "S8": { + "type": "structure", + "required": [ + "FieldToMatch", + "TargetString", + "TextTransformation", + "PositionalConstraint" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TargetString": { + "type": "blob" + }, + "TextTransformation": {}, + "PositionalConstraint": {} + } + }, + "S9": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "Type": {}, + "Data": {} + } + }, + "Sh": { + "type": "structure", + "required": [ + "IPSetId", + "IPSetDescriptors" + ], + "members": { + "IPSetId": {}, + "Name": {}, + "IPSetDescriptors": { + "type": "list", + "member": { + "shape": "Sj" + } + } + } + }, + "Sj": { + "type": "structure", + "required": [ + "Type", + "Value" + ], + "members": { + "Type": {}, + "Value": {} + } + }, + "Sp": { + "type": "structure", + "required": [ + "RuleId", + "Predicates" + ], + "members": { + "RuleId": {}, + "Name": {}, + "MetricName": {}, + "Predicates": { + "type": "list", + "member": { + "shape": "Sr" + } + } + } + }, + "Sr": { + "type": "structure", + "required": [ + "Negated", + "Type", + "DataId" + ], + "members": { + "Negated": { + "type": "boolean" + }, + "Type": {}, + "DataId": {} + } + }, + "Sw": { + "type": "structure", + "required": [ + "SizeConstraintSetId", + "SizeConstraints" + ], + "members": { + "SizeConstraintSetId": {}, + "Name": {}, + "SizeConstraints": { + "type": "list", + "member": { + "shape": "Sy" + } + } + } + }, + "Sy": { + "type": "structure", + "required": [ + "FieldToMatch", + "TextTransformation", + "ComparisonOperator", + "Size" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TextTransformation": {}, + "ComparisonOperator": {}, + "Size": { + "type": "long" + } + } + }, + "S13": { + "type": "structure", + "required": [ + "SqlInjectionMatchSetId", + "SqlInjectionMatchTuples" + ], + "members": { + "SqlInjectionMatchSetId": {}, + "Name": {}, + "SqlInjectionMatchTuples": { + "type": "list", + "member": { + "shape": "S15" + } + } + } + }, + "S15": { + "type": "structure", + "required": [ + "FieldToMatch", + "TextTransformation" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TextTransformation": {} + } + }, + "S17": { + "type": "structure", + "required": [ + "Type" + ], + "members": { + "Type": {} + } + }, + "S1a": { + "type": "structure", + "required": [ + "WebACLId", + "DefaultAction", + "Rules" + ], + "members": { + "WebACLId": {}, + "Name": {}, + "MetricName": {}, + "DefaultAction": { + "shape": "S17" + }, + "Rules": { + "type": "list", + "member": { + "shape": "S1c" + } + } + } + }, + "S1c": { + "type": "structure", + "required": [ + "Priority", + "RuleId", + "Action" + ], + "members": { + "Priority": { + "type": "integer" + }, + "RuleId": {}, + "Action": { + "shape": "S17" + } + } + }, + "S1g": { + "type": "structure", + "required": [ + "XssMatchSetId", + "XssMatchTuples" + ], + "members": { + "XssMatchSetId": {}, + "Name": {}, + "XssMatchTuples": { + "type": "list", + "member": { + "shape": "S1i" + } + } + } + }, + "S1i": { + "type": "structure", + "required": [ + "FieldToMatch", + "TextTransformation" + ], + "members": { + "FieldToMatch": { + "shape": "S9" + }, + "TextTransformation": {} + } + }, + "S29": { + "type": "structure", + "required": [ + "StartTime", + "EndTime" + ], + "members": { + "StartTime": { + "type": "timestamp" + }, + "EndTime": { + "type": "timestamp" + } + } + } + } +} +},{}],127:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['acm'] = {}; +AWS.ACM = Service.defineService('acm', ['2015-12-08']); +Object.defineProperty(apiLoader.services['acm'], '2015-12-08', { + get: function get() { + var model = require('../apis/acm-2015-12-08.min.json'); + model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ACM; + +},{"../apis/acm-2015-12-08.min.json":1,"../apis/acm-2015-12-08.paginators.json":2,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],128:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['apigateway'] = {}; +AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); +require('../lib/services/apigateway'); +Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', { + get: function get() { + var model = require('../apis/apigateway-2015-07-09.min.json'); + model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.APIGateway; + +},{"../apis/apigateway-2015-07-09.min.json":3,"../apis/apigateway-2015-07-09.paginators.json":4,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/apigateway":226}],129:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['applicationautoscaling'] = {}; +AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); +Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', { + get: function get() { + var model = require('../apis/application-autoscaling-2016-02-06.min.json'); + model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ApplicationAutoScaling; + +},{"../apis/application-autoscaling-2016-02-06.min.json":5,"../apis/application-autoscaling-2016-02-06.paginators.json":6,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],130:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['autoscaling'] = {}; +AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); +Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', { + get: function get() { + var model = require('../apis/autoscaling-2011-01-01.min.json'); + model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.AutoScaling; + +},{"../apis/autoscaling-2011-01-01.min.json":7,"../apis/autoscaling-2011-01-01.paginators.json":8,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],131:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); + +module.exports = { + ACM: require('./acm'), + APIGateway: require('./apigateway'), + ApplicationAutoScaling: require('./applicationautoscaling'), + AutoScaling: require('./autoscaling'), + CloudFormation: require('./cloudformation'), + CloudFront: require('./cloudfront'), + CloudHSM: require('./cloudhsm'), + CloudTrail: require('./cloudtrail'), + CloudWatch: require('./cloudwatch'), + CloudWatchEvents: require('./cloudwatchevents'), + CloudWatchLogs: require('./cloudwatchlogs'), + CodeCommit: require('./codecommit'), + CodeDeploy: require('./codedeploy'), + CodePipeline: require('./codepipeline'), + CognitoIdentity: require('./cognitoidentity'), + CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), + CognitoSync: require('./cognitosync'), + ConfigService: require('./configservice'), + DeviceFarm: require('./devicefarm'), + DirectConnect: require('./directconnect'), + DynamoDB: require('./dynamodb'), + DynamoDBStreams: require('./dynamodbstreams'), + EC2: require('./ec2'), + ECR: require('./ecr'), + ECS: require('./ecs'), + ElastiCache: require('./elasticache'), + ElasticBeanstalk: require('./elasticbeanstalk'), + ELB: require('./elb'), + ELBv2: require('./elbv2'), + EMR: require('./emr'), + ElasticTranscoder: require('./elastictranscoder'), + Firehose: require('./firehose'), + GameLift: require('./gamelift'), + Inspector: require('./inspector'), + Iot: require('./iot'), + IotData: require('./iotdata'), + Kinesis: require('./kinesis'), + KMS: require('./kms'), + Lambda: require('./lambda'), + MachineLearning: require('./machinelearning'), + MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), + MobileAnalytics: require('./mobileanalytics'), + OpsWorks: require('./opsworks'), + RDS: require('./rds'), + Redshift: require('./redshift'), + Route53: require('./route53'), + Route53Domains: require('./route53domains'), + S3: require('./s3'), + ServiceCatalog: require('./servicecatalog'), + SES: require('./ses'), + SNS: require('./sns'), + SQS: require('./sqs'), + SSM: require('./ssm'), + StorageGateway: require('./storagegateway'), + STS: require('./sts'), + WAF: require('./waf') +}; +},{"../lib/core":188,"../lib/node_loader":185,"./acm":127,"./apigateway":128,"./applicationautoscaling":129,"./autoscaling":130,"./cloudformation":132,"./cloudfront":133,"./cloudhsm":134,"./cloudtrail":135,"./cloudwatch":136,"./cloudwatchevents":137,"./cloudwatchlogs":138,"./codecommit":139,"./codedeploy":140,"./codepipeline":141,"./cognitoidentity":142,"./cognitoidentityserviceprovider":143,"./cognitosync":144,"./configservice":145,"./devicefarm":146,"./directconnect":147,"./dynamodb":148,"./dynamodbstreams":149,"./ec2":150,"./ecr":151,"./ecs":152,"./elasticache":153,"./elasticbeanstalk":154,"./elastictranscoder":155,"./elb":156,"./elbv2":157,"./emr":158,"./firehose":159,"./gamelift":160,"./inspector":161,"./iot":162,"./iotdata":163,"./kinesis":164,"./kms":165,"./lambda":166,"./machinelearning":167,"./marketplacecommerceanalytics":168,"./mobileanalytics":169,"./opsworks":170,"./rds":171,"./redshift":172,"./route53":173,"./route53domains":174,"./s3":175,"./servicecatalog":176,"./ses":177,"./sns":178,"./sqs":179,"./ssm":180,"./storagegateway":181,"./sts":182,"./waf":183}],132:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudformation'] = {}; +AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); +Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', { + get: function get() { + var model = require('../apis/cloudformation-2010-05-15.min.json'); + model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; + model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudFormation; + +},{"../apis/cloudformation-2010-05-15.min.json":9,"../apis/cloudformation-2010-05-15.paginators.json":10,"../apis/cloudformation-2010-05-15.waiters2.json":11,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],133:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudfront'] = {}; +AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07']); +require('../lib/services/cloudfront'); +Object.defineProperty(apiLoader.services['cloudfront'], '2016-09-07', { + get: function get() { + var model = require('../apis/cloudfront-2016-09-07.min.json'); + model.paginators = require('../apis/cloudfront-2016-09-07.paginators.json').pagination; + model.waiters = require('../apis/cloudfront-2016-09-07.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudFront; + +},{"../apis/cloudfront-2016-09-07.min.json":12,"../apis/cloudfront-2016-09-07.paginators.json":13,"../apis/cloudfront-2016-09-07.waiters2.json":14,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cloudfront":227}],134:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudhsm'] = {}; +AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); +Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', { + get: function get() { + var model = require('../apis/cloudhsm-2014-05-30.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudHSM; + +},{"../apis/cloudhsm-2014-05-30.min.json":15,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],135:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudtrail'] = {}; +AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); +Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', { + get: function get() { + var model = require('../apis/cloudtrail-2013-11-01.min.json'); + model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudTrail; + +},{"../apis/cloudtrail-2013-11-01.min.json":16,"../apis/cloudtrail-2013-11-01.paginators.json":17,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],136:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudwatch'] = {}; +AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); +Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', { + get: function get() { + var model = require('../apis/monitoring-2010-08-01.min.json'); + model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; + model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudWatch; + +},{"../apis/monitoring-2010-08-01.min.json":88,"../apis/monitoring-2010-08-01.paginators.json":89,"../apis/monitoring-2010-08-01.waiters2.json":90,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],137:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudwatchevents'] = {}; +AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']); +Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', { + get: function get() { + var model = require('../apis/events-2015-10-07.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudWatchEvents; + +},{"../apis/events-2015-10-07.min.json":65,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],138:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cloudwatchlogs'] = {}; +AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); +Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', { + get: function get() { + var model = require('../apis/logs-2014-03-28.min.json'); + model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CloudWatchLogs; + +},{"../apis/logs-2014-03-28.min.json":80,"../apis/logs-2014-03-28.paginators.json":81,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],139:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['codecommit'] = {}; +AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); +Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', { + get: function get() { + var model = require('../apis/codecommit-2015-04-13.min.json'); + model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CodeCommit; + +},{"../apis/codecommit-2015-04-13.min.json":18,"../apis/codecommit-2015-04-13.paginators.json":19,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],140:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['codedeploy'] = {}; +AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); +Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', { + get: function get() { + var model = require('../apis/codedeploy-2014-10-06.min.json'); + model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; + model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CodeDeploy; + +},{"../apis/codedeploy-2014-10-06.min.json":20,"../apis/codedeploy-2014-10-06.paginators.json":21,"../apis/codedeploy-2014-10-06.waiters2.json":22,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],141:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['codepipeline'] = {}; +AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); +Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', { + get: function get() { + var model = require('../apis/codepipeline-2015-07-09.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CodePipeline; + +},{"../apis/codepipeline-2015-07-09.min.json":23,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],142:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cognitoidentity'] = {}; +AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); +require('../lib/services/cognitoidentity'); +Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', { + get: function get() { + var model = require('../apis/cognito-identity-2014-06-30.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CognitoIdentity; + +},{"../apis/cognito-identity-2014-06-30.min.json":24,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cognitoidentity":228}],143:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cognitoidentityserviceprovider'] = {}; +AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); +Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', { + get: function get() { + var model = require('../apis/cognito-idp-2016-04-18.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CognitoIdentityServiceProvider; + +},{"../apis/cognito-idp-2016-04-18.min.json":25,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],144:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['cognitosync'] = {}; +AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); +Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', { + get: function get() { + var model = require('../apis/cognito-sync-2014-06-30.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.CognitoSync; + +},{"../apis/cognito-sync-2014-06-30.min.json":26,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],145:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['configservice'] = {}; +AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); +Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', { + get: function get() { + var model = require('../apis/config-2014-11-12.min.json'); + model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ConfigService; + +},{"../apis/config-2014-11-12.min.json":27,"../apis/config-2014-11-12.paginators.json":28,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],146:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['devicefarm'] = {}; +AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); +Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', { + get: function get() { + var model = require('../apis/devicefarm-2015-06-23.min.json'); + model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DeviceFarm; + +},{"../apis/devicefarm-2015-06-23.min.json":29,"../apis/devicefarm-2015-06-23.paginators.json":30,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],147:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['directconnect'] = {}; +AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); +Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', { + get: function get() { + var model = require('../apis/directconnect-2012-10-25.min.json'); + model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DirectConnect; + +},{"../apis/directconnect-2012-10-25.min.json":31,"../apis/directconnect-2012-10-25.paginators.json":32,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],148:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['dynamodb'] = {}; +AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); +require('../lib/services/dynamodb'); +Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', { + get: function get() { + var model = require('../apis/dynamodb-2011-12-05.min.json'); + model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; + model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', { + get: function get() { + var model = require('../apis/dynamodb-2012-08-10.min.json'); + model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; + model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DynamoDB; + +},{"../apis/dynamodb-2011-12-05.min.json":33,"../apis/dynamodb-2011-12-05.paginators.json":34,"../apis/dynamodb-2011-12-05.waiters2.json":35,"../apis/dynamodb-2012-08-10.min.json":36,"../apis/dynamodb-2012-08-10.paginators.json":37,"../apis/dynamodb-2012-08-10.waiters2.json":38,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/dynamodb":229}],149:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['dynamodbstreams'] = {}; +AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); +Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', { + get: function get() { + var model = require('../apis/streams.dynamodb-2012-08-10.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.DynamoDBStreams; + +},{"../apis/streams.dynamodb-2012-08-10.min.json":124,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],150:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ec2'] = {}; +AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15']); +require('../lib/services/ec2'); +Object.defineProperty(apiLoader.services['ec2'], '2016-09-15', { + get: function get() { + var model = require('../apis/ec2-2016-09-15.min.json'); + model.paginators = require('../apis/ec2-2016-09-15.paginators.json').pagination; + model.waiters = require('../apis/ec2-2016-09-15.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.EC2; + +},{"../apis/ec2-2016-09-15.min.json":39,"../apis/ec2-2016-09-15.paginators.json":40,"../apis/ec2-2016-09-15.waiters2.json":41,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/ec2":230}],151:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ecr'] = {}; +AWS.ECR = Service.defineService('ecr', ['2015-09-21']); +Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', { + get: function get() { + var model = require('../apis/ecr-2015-09-21.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ECR; + +},{"../apis/ecr-2015-09-21.min.json":42,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],152:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ecs'] = {}; +AWS.ECS = Service.defineService('ecs', ['2014-11-13']); +Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', { + get: function get() { + var model = require('../apis/ecs-2014-11-13.min.json'); + model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; + model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ECS; + +},{"../apis/ecs-2014-11-13.min.json":43,"../apis/ecs-2014-11-13.paginators.json":44,"../apis/ecs-2014-11-13.waiters2.json":45,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],153:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elasticache'] = {}; +AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']); +Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', { + get: function get() { + var model = require('../apis/elasticache-2015-02-02.min.json'); + model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; + model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ElastiCache; + +},{"../apis/elasticache-2015-02-02.min.json":46,"../apis/elasticache-2015-02-02.paginators.json":47,"../apis/elasticache-2015-02-02.waiters2.json":48,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],154:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elasticbeanstalk'] = {}; +AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); +Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', { + get: function get() { + var model = require('../apis/elasticbeanstalk-2010-12-01.min.json'); + model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ElasticBeanstalk; + +},{"../apis/elasticbeanstalk-2010-12-01.min.json":49,"../apis/elasticbeanstalk-2010-12-01.paginators.json":50,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],155:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elastictranscoder'] = {}; +AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); +Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', { + get: function get() { + var model = require('../apis/elastictranscoder-2012-09-25.min.json'); + model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; + model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ElasticTranscoder; + +},{"../apis/elastictranscoder-2012-09-25.min.json":59,"../apis/elastictranscoder-2012-09-25.paginators.json":60,"../apis/elastictranscoder-2012-09-25.waiters2.json":61,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],156:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elb'] = {}; +AWS.ELB = Service.defineService('elb', ['2012-06-01']); +Object.defineProperty(apiLoader.services['elb'], '2012-06-01', { + get: function get() { + var model = require('../apis/elasticloadbalancing-2012-06-01.min.json'); + model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; + model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ELB; + +},{"../apis/elasticloadbalancing-2012-06-01.min.json":51,"../apis/elasticloadbalancing-2012-06-01.paginators.json":52,"../apis/elasticloadbalancing-2012-06-01.waiters2.json":53,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],157:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['elbv2'] = {}; +AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); +Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', { + get: function get() { + var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); + model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ELBv2; + +},{"../apis/elasticloadbalancingv2-2015-12-01.min.json":54,"../apis/elasticloadbalancingv2-2015-12-01.paginators.json":55,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],158:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['emr'] = {}; +AWS.EMR = Service.defineService('emr', ['2009-03-31']); +Object.defineProperty(apiLoader.services['emr'], '2009-03-31', { + get: function get() { + var model = require('../apis/elasticmapreduce-2009-03-31.min.json'); + model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; + model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.EMR; + +},{"../apis/elasticmapreduce-2009-03-31.min.json":56,"../apis/elasticmapreduce-2009-03-31.paginators.json":57,"../apis/elasticmapreduce-2009-03-31.waiters2.json":58,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],159:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['firehose'] = {}; +AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); +Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', { + get: function get() { + var model = require('../apis/firehose-2015-08-04.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Firehose; + +},{"../apis/firehose-2015-08-04.min.json":66,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],160:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['gamelift'] = {}; +AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); +Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', { + get: function get() { + var model = require('../apis/gamelift-2015-10-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.GameLift; + +},{"../apis/gamelift-2015-10-01.min.json":67,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],161:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['inspector'] = {}; +AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']); +Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', { + get: function get() { + var model = require('../apis/inspector-2016-02-16.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Inspector; + +},{"../apis/inspector-2016-02-16.min.json":68,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],162:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['iot'] = {}; +AWS.Iot = Service.defineService('iot', ['2015-05-28']); +Object.defineProperty(apiLoader.services['iot'], '2015-05-28', { + get: function get() { + var model = require('../apis/iot-2015-05-28.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Iot; + +},{"../apis/iot-2015-05-28.min.json":69,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],163:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['iotdata'] = {}; +AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); +require('../lib/services/iotdata'); +Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', { + get: function get() { + var model = require('../apis/iot-data-2015-05-28.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.IotData; + +},{"../apis/iot-data-2015-05-28.min.json":70,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/iotdata":231}],164:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['kinesis'] = {}; +AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); +Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', { + get: function get() { + var model = require('../apis/kinesis-2013-12-02.min.json'); + model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; + model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Kinesis; + +},{"../apis/kinesis-2013-12-02.min.json":71,"../apis/kinesis-2013-12-02.paginators.json":72,"../apis/kinesis-2013-12-02.waiters2.json":73,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],165:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['kms'] = {}; +AWS.KMS = Service.defineService('kms', ['2014-11-01']); +Object.defineProperty(apiLoader.services['kms'], '2014-11-01', { + get: function get() { + var model = require('../apis/kms-2014-11-01.min.json'); + model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.KMS; + +},{"../apis/kms-2014-11-01.min.json":74,"../apis/kms-2014-11-01.paginators.json":75,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],166:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['lambda'] = {}; +AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); +Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', { + get: function get() { + var model = require('../apis/lambda-2014-11-11.min.json'); + model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', { + get: function get() { + var model = require('../apis/lambda-2015-03-31.min.json'); + model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Lambda; + +},{"../apis/lambda-2014-11-11.min.json":76,"../apis/lambda-2014-11-11.paginators.json":77,"../apis/lambda-2015-03-31.min.json":78,"../apis/lambda-2015-03-31.paginators.json":79,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],167:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['machinelearning'] = {}; +AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); +require('../lib/services/machinelearning'); +Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', { + get: function get() { + var model = require('../apis/machinelearning-2014-12-12.min.json'); + model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; + model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MachineLearning; + +},{"../apis/machinelearning-2014-12-12.min.json":82,"../apis/machinelearning-2014-12-12.paginators.json":83,"../apis/machinelearning-2014-12-12.waiters2.json":84,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/machinelearning":232}],168:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['marketplacecommerceanalytics'] = {}; +AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); +Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', { + get: function get() { + var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MarketplaceCommerceAnalytics; + +},{"../apis/marketplacecommerceanalytics-2015-07-01.min.json":85,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],169:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['mobileanalytics'] = {}; +AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); +Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', { + get: function get() { + var model = require('../apis/mobileanalytics-2014-06-05.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.MobileAnalytics; + +},{"../apis/mobileanalytics-2014-06-05.min.json":87,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],170:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['opsworks'] = {}; +AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); +Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', { + get: function get() { + var model = require('../apis/opsworks-2013-02-18.min.json'); + model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; + model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.OpsWorks; + +},{"../apis/opsworks-2013-02-18.min.json":91,"../apis/opsworks-2013-02-18.paginators.json":92,"../apis/opsworks-2013-02-18.waiters2.json":93,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],171:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['rds'] = {}; +AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01*', '2014-10-31']); +Object.defineProperty(apiLoader.services['rds'], '2013-01-10', { + get: function get() { + var model = require('../apis/rds-2013-01-10.min.json'); + model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['rds'], '2013-02-12', { + get: function get() { + var model = require('../apis/rds-2013-02-12.min.json'); + model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['rds'], '2013-09-09', { + get: function get() { + var model = require('../apis/rds-2013-09-09.min.json'); + model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; + model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); +Object.defineProperty(apiLoader.services['rds'], '2014-10-31', { + get: function get() { + var model = require('../apis/rds-2014-10-31.min.json'); + model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; + model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.RDS; + +},{"../apis/rds-2013-01-10.min.json":94,"../apis/rds-2013-01-10.paginators.json":95,"../apis/rds-2013-02-12.min.json":96,"../apis/rds-2013-02-12.paginators.json":97,"../apis/rds-2013-09-09.min.json":98,"../apis/rds-2013-09-09.paginators.json":99,"../apis/rds-2013-09-09.waiters2.json":100,"../apis/rds-2014-10-31.min.json":101,"../apis/rds-2014-10-31.paginators.json":102,"../apis/rds-2014-10-31.waiters2.json":103,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],172:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['redshift'] = {}; +AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); +Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', { + get: function get() { + var model = require('../apis/redshift-2012-12-01.min.json'); + model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; + model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Redshift; + +},{"../apis/redshift-2012-12-01.min.json":104,"../apis/redshift-2012-12-01.paginators.json":105,"../apis/redshift-2012-12-01.waiters2.json":106,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],173:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['route53'] = {}; +AWS.Route53 = Service.defineService('route53', ['2013-04-01']); +require('../lib/services/route53'); +Object.defineProperty(apiLoader.services['route53'], '2013-04-01', { + get: function get() { + var model = require('../apis/route53-2013-04-01.min.json'); + model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; + model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Route53; + +},{"../apis/route53-2013-04-01.min.json":107,"../apis/route53-2013-04-01.paginators.json":108,"../apis/route53-2013-04-01.waiters2.json":109,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/route53":233}],174:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['route53domains'] = {}; +AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); +Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', { + get: function get() { + var model = require('../apis/route53domains-2014-05-15.min.json'); + model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.Route53Domains; + +},{"../apis/route53domains-2014-05-15.min.json":110,"../apis/route53domains-2014-05-15.paginators.json":111,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],175:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['s3'] = {}; +AWS.S3 = Service.defineService('s3', ['2006-03-01']); +require('../lib/services/s3'); +Object.defineProperty(apiLoader.services['s3'], '2006-03-01', { + get: function get() { + var model = require('../apis/s3-2006-03-01.min.json'); + model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; + model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.S3; + +},{"../apis/s3-2006-03-01.min.json":112,"../apis/s3-2006-03-01.paginators.json":113,"../apis/s3-2006-03-01.waiters2.json":114,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/s3":234}],176:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['servicecatalog'] = {}; +AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); +Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', { + get: function get() { + var model = require('../apis/servicecatalog-2015-12-10.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.ServiceCatalog; + +},{"../apis/servicecatalog-2015-12-10.min.json":115,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],177:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ses'] = {}; +AWS.SES = Service.defineService('ses', ['2010-12-01']); +Object.defineProperty(apiLoader.services['ses'], '2010-12-01', { + get: function get() { + var model = require('../apis/email-2010-12-01.min.json'); + model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination; + model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SES; + +},{"../apis/email-2010-12-01.min.json":62,"../apis/email-2010-12-01.paginators.json":63,"../apis/email-2010-12-01.waiters2.json":64,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],178:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['sns'] = {}; +AWS.SNS = Service.defineService('sns', ['2010-03-31']); +Object.defineProperty(apiLoader.services['sns'], '2010-03-31', { + get: function get() { + var model = require('../apis/sns-2010-03-31.min.json'); + model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SNS; + +},{"../apis/sns-2010-03-31.min.json":116,"../apis/sns-2010-03-31.paginators.json":117,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],179:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['sqs'] = {}; +AWS.SQS = Service.defineService('sqs', ['2012-11-05']); +require('../lib/services/sqs'); +Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', { + get: function get() { + var model = require('../apis/sqs-2012-11-05.min.json'); + model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SQS; + +},{"../apis/sqs-2012-11-05.min.json":118,"../apis/sqs-2012-11-05.paginators.json":119,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sqs":235}],180:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['ssm'] = {}; +AWS.SSM = Service.defineService('ssm', ['2014-11-06']); +Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', { + get: function get() { + var model = require('../apis/ssm-2014-11-06.min.json'); + model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.SSM; + +},{"../apis/ssm-2014-11-06.min.json":120,"../apis/ssm-2014-11-06.paginators.json":121,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],181:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['storagegateway'] = {}; +AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); +Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', { + get: function get() { + var model = require('../apis/storagegateway-2013-06-30.min.json'); + model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.StorageGateway; + +},{"../apis/storagegateway-2013-06-30.min.json":122,"../apis/storagegateway-2013-06-30.paginators.json":123,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],182:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['sts'] = {}; +AWS.STS = Service.defineService('sts', ['2011-06-15']); +require('../lib/services/sts'); +Object.defineProperty(apiLoader.services['sts'], '2011-06-15', { + get: function get() { + var model = require('../apis/sts-2011-06-15.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.STS; + +},{"../apis/sts-2011-06-15.min.json":125,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sts":236}],183:[function(require,module,exports){ +require('../lib/node_loader'); +var AWS = require('../lib/core'); +var Service = require('../lib/service'); +var apiLoader = require('../lib/api_loader'); + +apiLoader.services['waf'] = {}; +AWS.WAF = Service.defineService('waf', ['2015-08-24']); +Object.defineProperty(apiLoader.services['waf'], '2015-08-24', { + get: function get() { + var model = require('../apis/waf-2015-08-24.min.json'); + return model; + }, + enumerable: true, + configurable: true +}); + +module.exports = AWS.WAF; + +},{"../apis/waf-2015-08-24.min.json":126,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],184:[function(require,module,exports){ +var AWS = require('./core'); + +AWS.apiLoader = function(svc, version) { + if (!AWS.apiLoader.services.hasOwnProperty(svc)) { + throw new Error('InvalidService: Failed to load api for ' + svc); + } + return AWS.apiLoader.services[svc][version]; +}; + +AWS.apiLoader.services = {}; + +module.exports = AWS.apiLoader; +},{"./core":188}],185:[function(require,module,exports){ +(function (process){ +var util = require('./util'); + +util.crypto.lib = require('crypto-browserify'); +util.Buffer = require('buffer/').Buffer; +util.url = require('url/'); +util.querystring = require('querystring/'); + +var AWS = require('./core'); + +require('./api_loader'); + +AWS.XML.Parser = require('./xml/browser_parser'); + +require('./http/xhr'); + +if (typeof process === 'undefined') { + process = { + browser: true + }; +} +}).call(this,require('_process')) +},{"./api_loader":184,"./core":188,"./http/xhr":202,"./util":245,"./xml/browser_parser":246,"_process":250,"buffer/":258,"crypto-browserify":263,"querystring/":271,"url/":272}],186:[function(require,module,exports){ +var AWS = require('../core'), + url = AWS.util.url, + crypto = AWS.util.crypto.lib, + base64Encode = AWS.util.base64.encode, + inherit = AWS.util.inherit; + +var queryEncode = function (string) { + var replacements = { + '+': '-', + '=': '_', + '/': '~' + }; + return string.replace(/[\+=\/]/g, function (match) { + return replacements[match]; + }); +}; + +var signPolicy = function (policy, privateKey) { + var sign = crypto.createSign('RSA-SHA1'); + sign.write(policy); + return queryEncode(sign.sign(privateKey, 'base64')) +}; + +var signWithCannedPolicy = function (url, expires, keyPairId, privateKey) { + var policy = JSON.stringify({ + Statement: [ + { + Resource: url, + Condition: { DateLessThan: { 'AWS:EpochTime': expires } } + } + ] + }); + + return { + Expires: expires, + 'Key-Pair-Id': keyPairId, + Signature: signPolicy(policy.toString(), privateKey) + }; +}; + +var signWithCustomPolicy = function (policy, keyPairId, privateKey) { + policy = policy.replace(/\s/mg, policy); + + return { + Policy: queryEncode(base64Encode(policy)), + 'Key-Pair-Id': keyPairId, + Signature: signPolicy(policy, privateKey) + } +}; + +var determineScheme = function (url) { + var parts = url.split('://'); + if (parts.length < 2) { + throw new Error('Invalid URL.'); + } + + return parts[0].replace('*', ''); +}; + +var getRtmpUrl = function (rtmpUrl) { + var parsed = url.parse(rtmpUrl); + return parsed.path.replace(/^\//, '') + (parsed.hash || ''); +}; + +var getResource = function (url) { + switch (determineScheme(url)) { + case 'http': + case 'https': + return url; + case 'rtmp': + return getRtmpUrl(url); + default: + throw new Error('Invalid URI scheme. Scheme must be one of' + + ' http, https, or rtmp'); + } +}; + +var handleError = function (err, callback) { + if (!callback || typeof callback !== 'function') { + throw err; + } + + callback(err); +}; + +var handleSuccess = function (result, callback) { + if (!callback || typeof callback !== 'function') { + return result; + } + + callback(null, result); +}; + +AWS.CloudFront.Signer = inherit({ + + constructor: function Signer(keyPairId, privateKey) { + if (keyPairId === void 0 || privateKey === void 0) { + throw new Error('A key pair ID and private key are required'); + } + + this.keyPairId = keyPairId; + this.privateKey = privateKey; + }, + + + getSignedCookie: function (options, cb) { + var signatureHash = 'policy' in options + ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) + : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey); + + var cookieHash = {}; + for (var key in signatureHash) { + if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { + cookieHash['CloudFront-' + key] = signatureHash[key]; + } + } + + return handleSuccess(cookieHash, cb); + }, + + + getSignedUrl: function (options, cb) { + try { + var resource = getResource(options.url); + } catch (err) { + return handleError(err, cb); + } + + var parsedUrl = url.parse(options.url, true), + signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy') + ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) + : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey); + + parsedUrl.search = null; + for (var key in signatureHash) { + if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { + parsedUrl.query[key] = signatureHash[key]; + } + } + + try { + var signedUrl = determineScheme(options.url) === 'rtmp' + ? getRtmpUrl(url.format(parsedUrl)) + : url.format(parsedUrl); + } catch (err) { + return handleError(err, cb); + } + + return handleSuccess(signedUrl, cb); + } +}); + +module.exports = AWS.CloudFront.Signer; + +},{"../core":188}],187:[function(require,module,exports){ +var AWS = require('./core'); +require('./credentials'); +require('./credentials/credential_provider_chain'); + + +AWS.Config = AWS.util.inherit({ + + + + constructor: function Config(options) { + if (options === undefined) options = {}; + options = this.extractCredentials(options); + + AWS.util.each.call(this, this.keys, function (key, value) { + this.set(key, options[key], value); + }); + }, + + + + + getCredentials: function getCredentials(callback) { + var self = this; + + function finish(err) { + callback(err, err ? null : self.credentials); + } + + function credError(msg, err) { + return new AWS.util.error(err || new Error(), { + code: 'CredentialsError', message: msg + }); + } + + function getAsyncCredentials() { + self.credentials.get(function(err) { + if (err) { + var msg = 'Could not load credentials from ' + + self.credentials.constructor.name; + err = credError(msg, err); + } + finish(err); + }); + } + + function getStaticCredentials() { + var err = null; + if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) { + err = credError('Missing credentials'); + } + finish(err); + } + + if (self.credentials) { + if (typeof self.credentials.get === 'function') { + getAsyncCredentials(); + } else { // static credentials + getStaticCredentials(); + } + } else if (self.credentialProvider) { + self.credentialProvider.resolve(function(err, creds) { + if (err) { + err = credError('Could not load credentials from any providers', err); + } + self.credentials = creds; + finish(err); + }); + } else { + finish(credError('No credentials to load')); + } + }, + + + + + update: function update(options, allowUnknownKeys) { + allowUnknownKeys = allowUnknownKeys || false; + options = this.extractCredentials(options); + AWS.util.each.call(this, options, function (key, value) { + if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) || + AWS.Service.hasService(key)) { + this.set(key, value); + } + }); + }, + + + loadFromPath: function loadFromPath(path) { + this.clear(); + + var options = JSON.parse(AWS.util.readFileSync(path)); + var fileSystemCreds = new AWS.FileSystemCredentials(path); + var chain = new AWS.CredentialProviderChain(); + chain.providers.unshift(fileSystemCreds); + chain.resolve(function (err, creds) { + if (err) throw err; + else options.credentials = creds; + }); + + this.constructor(options); + + return this; + }, + + + clear: function clear() { + + AWS.util.each.call(this, this.keys, function (key) { + delete this[key]; + }); + + this.set('credentials', undefined); + this.set('credentialProvider', undefined); + }, + + + set: function set(property, value, defaultValue) { + if (value === undefined) { + if (defaultValue === undefined) { + defaultValue = this.keys[property]; + } + if (typeof defaultValue === 'function') { + this[property] = defaultValue.call(this); + } else { + this[property] = defaultValue; + } + } else if (property === 'httpOptions' && this[property]) { + this[property] = AWS.util.merge(this[property], value); + } else { + this[property] = value; + } + }, + + + keys: { + credentials: null, + credentialProvider: null, + region: null, + logger: null, + apiVersions: {}, + apiVersion: null, + endpoint: undefined, + httpOptions: { + timeout: 120000 + }, + maxRetries: undefined, + maxRedirects: 10, + paramValidation: true, + sslEnabled: true, + s3ForcePathStyle: false, + s3BucketEndpoint: false, + s3DisableBodySigning: true, + computeChecksums: true, + convertResponseTypes: true, + correctClockSkew: false, + customUserAgent: null, + dynamoDbCrc32: true, + systemClockOffset: 0, + signatureVersion: null, + signatureCache: true, + retryDelayOptions: { + base: 100 + }, + useAccelerateEndpoint: false + }, + + + extractCredentials: function extractCredentials(options) { + if (options.accessKeyId && options.secretAccessKey) { + options = AWS.util.copy(options); + options.credentials = new AWS.Credentials(options); + } + return options; + }, + + + setPromisesDependency: function setPromisesDependency(dep) { + AWS.util.addPromisesToRequests(AWS.Request, dep); + } +}); + + +AWS.config = new AWS.Config(); + +},{"./core":188,"./credentials":189,"./credentials/credential_provider_chain":191}],188:[function(require,module,exports){ + +var AWS = { util: require('./util') }; + + +var _hidden = {}; _hidden.toString(); // hack to parse macro + +module.exports = AWS; + +AWS.util.update(AWS, { + + + VERSION: '2.6.8', + + + Signers: {}, + + + Protocol: { + Json: require('./protocol/json'), + Query: require('./protocol/query'), + Rest: require('./protocol/rest'), + RestJson: require('./protocol/rest_json'), + RestXml: require('./protocol/rest_xml') + }, + + + XML: { + Builder: require('./xml/builder'), + Parser: null // conditionally set based on environment + }, + + + JSON: { + Builder: require('./json/builder'), + Parser: require('./json/parser') + }, + + + Model: { + Api: require('./model/api'), + Operation: require('./model/operation'), + Shape: require('./model/shape'), + Paginator: require('./model/paginator'), + ResourceWaiter: require('./model/resource_waiter') + }, + + util: require('./util'), + + + apiLoader: function() { throw new Error('No API loader set'); } +}); + +require('./service'); + +require('./credentials'); +require('./credentials/credential_provider_chain'); +require('./credentials/temporary_credentials'); +require('./credentials/web_identity_credentials'); +require('./credentials/cognito_identity_credentials'); +require('./credentials/saml_credentials'); + +require('./config'); +require('./http'); +require('./sequential_executor'); +require('./event_listeners'); +require('./request'); +require('./response'); +require('./resource_waiter'); +require('./signers/request_signer'); +require('./param_validator'); + + +AWS.events = new AWS.SequentialExecutor(); + +},{"./config":187,"./credentials":189,"./credentials/cognito_identity_credentials":190,"./credentials/credential_provider_chain":191,"./credentials/saml_credentials":192,"./credentials/temporary_credentials":193,"./credentials/web_identity_credentials":194,"./event_listeners":200,"./http":201,"./json/builder":203,"./json/parser":204,"./model/api":205,"./model/operation":207,"./model/paginator":208,"./model/resource_waiter":209,"./model/shape":210,"./param_validator":211,"./protocol/json":212,"./protocol/query":213,"./protocol/rest":214,"./protocol/rest_json":215,"./protocol/rest_xml":216,"./request":220,"./resource_waiter":221,"./response":222,"./sequential_executor":224,"./service":225,"./signers/request_signer":238,"./util":245,"./xml/builder":247}],189:[function(require,module,exports){ +var AWS = require('./core'); + + +AWS.Credentials = AWS.util.inherit({ + + constructor: function Credentials() { + AWS.util.hideProperties(this, ['secretAccessKey']); + + this.expired = false; + this.expireTime = null; + if (arguments.length === 1 && typeof arguments[0] === 'object') { + var creds = arguments[0].credentials || arguments[0]; + this.accessKeyId = creds.accessKeyId; + this.secretAccessKey = creds.secretAccessKey; + this.sessionToken = creds.sessionToken; + } else { + this.accessKeyId = arguments[0]; + this.secretAccessKey = arguments[1]; + this.sessionToken = arguments[2]; + } + }, + + + expiryWindow: 15, + + + needsRefresh: function needsRefresh() { + var currentTime = AWS.util.date.getDate().getTime(); + var adjustedTime = new Date(currentTime + this.expiryWindow * 1000); + + if (this.expireTime && adjustedTime > this.expireTime) { + return true; + } else { + return this.expired || !this.accessKeyId || !this.secretAccessKey; + } + }, + + + get: function get(callback) { + var self = this; + if (this.needsRefresh()) { + this.refresh(function(err) { + if (!err) self.expired = false; // reset expired flag + if (callback) callback(err); + }); + } else if (callback) { + callback(); + } + }, + + + refresh: function refresh(callback) { + this.expired = false; + callback(); + } +}); + +},{"./core":188}],190:[function(require,module,exports){ +var AWS = require('../core'); +var CognitoIdentity = require('../../clients/cognitoidentity'); +var STS = require('../../clients/sts'); + + +AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { + + localStorageKey: { + id: 'aws.cognito.identity-id.', + providers: 'aws.cognito.identity-providers.' + }, + + + constructor: function CognitoIdentityCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + this.data = null; + this.identityId = null; + this.loadCachedId(); + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + self.data = null; + self.identityId = null; + self.getId(function(err) { + if (!err) { + if (!self.params.RoleArn) { + self.getCredentialsForIdentity(callback); + } else { + self.getCredentialsFromSTS(callback); + } + } else { + self.clearIdOnNotAuthorized(err); + callback(err); + } + }); + }, + + + clearCachedId: function clearCache() { + this.identityId = null; + delete this.params.IdentityId; + + var poolId = this.params.IdentityPoolId; + var loginId = this.params.LoginId || ''; + delete this.storage[this.localStorageKey.id + poolId + loginId]; + delete this.storage[this.localStorageKey.providers + poolId + loginId]; + }, + + + clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) { + var self = this; + if (err.code == 'NotAuthorizedException') { + self.clearCachedId(); + } + }, + + + getId: function getId(callback) { + var self = this; + if (typeof self.params.IdentityId === 'string') { + return callback(null, self.params.IdentityId); + } + + self.cognito.getId(function(err, data) { + if (!err && data.IdentityId) { + self.params.IdentityId = data.IdentityId; + callback(null, data.IdentityId); + } else { + callback(err); + } + }); + }, + + + + loadCredentials: function loadCredentials(data, credentials) { + if (!data || !credentials) return; + credentials.expired = false; + credentials.accessKeyId = data.Credentials.AccessKeyId; + credentials.secretAccessKey = data.Credentials.SecretKey; + credentials.sessionToken = data.Credentials.SessionToken; + credentials.expireTime = data.Credentials.Expiration; + }, + + + getCredentialsForIdentity: function getCredentialsForIdentity(callback) { + var self = this; + self.cognito.getCredentialsForIdentity(function(err, data) { + if (!err) { + self.cacheId(data); + self.data = data; + self.loadCredentials(self.data, self); + } else { + self.clearIdOnNotAuthorized(err); + } + callback(err); + }); + }, + + + getCredentialsFromSTS: function getCredentialsFromSTS(callback) { + var self = this; + self.cognito.getOpenIdToken(function(err, data) { + if (!err) { + self.cacheId(data); + self.params.WebIdentityToken = data.Token; + self.webIdentityCredentials.refresh(function(webErr) { + if (!webErr) { + self.data = self.webIdentityCredentials.data; + self.sts.credentialsFrom(self.data, self); + } + callback(webErr); + }); + } else { + self.clearIdOnNotAuthorized(err); + callback(err); + } + }); + }, + + + loadCachedId: function loadCachedId() { + var self = this; + + if (AWS.util.isBrowser() && !self.params.IdentityId) { + var id = self.getStorage('id'); + if (id && self.params.Logins) { + var actualProviders = Object.keys(self.params.Logins); + var cachedProviders = + (self.getStorage('providers') || '').split(','); + + var intersect = cachedProviders.filter(function(n) { + return actualProviders.indexOf(n) !== -1; + }); + if (intersect.length !== 0) { + self.params.IdentityId = id; + } + } else if (id) { + self.params.IdentityId = id; + } + } + }, + + + createClients: function() { + this.webIdentityCredentials = this.webIdentityCredentials || + new AWS.WebIdentityCredentials(this.params); + this.cognito = this.cognito || + new CognitoIdentity({params: this.params}); + this.sts = this.sts || new STS(); + }, + + + cacheId: function cacheId(data) { + this.identityId = data.IdentityId; + this.params.IdentityId = this.identityId; + + if (AWS.util.isBrowser()) { + this.setStorage('id', data.IdentityId); + + if (this.params.Logins) { + this.setStorage('providers', Object.keys(this.params.Logins).join(',')); + } + } + }, + + + getStorage: function getStorage(key) { + return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')]; + }, + + + setStorage: function setStorage(key, val) { + try { + this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val; + } catch (_) {} + }, + + + storage: (function() { + try { + return AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ? + window.localStorage : {}; + } catch (_) { + return {}; + } + })() +}); + +},{"../../clients/cognitoidentity":142,"../../clients/sts":182,"../core":188}],191:[function(require,module,exports){ +var AWS = require('../core'); + + +AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, { + + + constructor: function CredentialProviderChain(providers) { + if (providers) { + this.providers = providers; + } else { + this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0); + } + }, + + + resolve: function resolve(callback) { + if (this.providers.length === 0) { + callback(new Error('No providers')); + return this; + } + + var index = 0; + var providers = this.providers.slice(0); + + function resolveNext(err, creds) { + if ((!err && creds) || index === providers.length) { + callback(err, creds); + return; + } + + var provider = providers[index++]; + if (typeof provider === 'function') { + creds = provider.call(); + } else { + creds = provider; + } + + if (creds.get) { + creds.get(function(getErr) { + resolveNext(getErr, getErr ? null : creds); + }); + } else { + resolveNext(null, creds); + } + } + + resolveNext(); + return this; + } + +}); + + +AWS.CredentialProviderChain.defaultProviders = []; + +},{"../core":188}],192:[function(require,module,exports){ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + + +AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { + + constructor: function SAMLCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.assumeRoleWithSAML(function (err, data) { + if (!err) { + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); + +},{"../../clients/sts":182,"../core":188}],193:[function(require,module,exports){ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + + +AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { + + constructor: function TemporaryCredentials(params) { + AWS.Credentials.call(this); + this.loadMasterCredentials(); + this.expired = true; + + this.params = params || {}; + if (this.params.RoleArn) { + this.params.RoleSessionName = + this.params.RoleSessionName || 'temporary-credentials'; + } + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.config.credentials = self.masterCredentials; + var operation = self.params.RoleArn ? + self.service.assumeRole : self.service.getSessionToken; + operation.call(self.service, function (err, data) { + if (!err) { + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + + loadMasterCredentials: function loadMasterCredentials() { + this.masterCredentials = AWS.config.credentials; + while (this.masterCredentials.masterCredentials) { + this.masterCredentials = this.masterCredentials.masterCredentials; + } + }, + + + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); + +},{"../../clients/sts":182,"../core":188}],194:[function(require,module,exports){ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + + +AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { + + constructor: function WebIdentityCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity'; + this.data = null; + }, + + + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.assumeRoleWithWebIdentity(function (err, data) { + self.data = null; + if (!err) { + self.data = data; + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); + +},{"../../clients/sts":182,"../core":188}],195:[function(require,module,exports){ +var util = require('../core').util; +var typeOf = require('./types').typeOf; +var DynamoDBSet = require('./set'); + +function convertInput(data) { + if (typeOf(data) === 'Object') { + var map = {M: {}}; + for (var key in data) { + map['M'][key] = convertInput(data[key]); + } + return map; + } else if (typeOf(data) === 'Array') { + var list = {L: []}; + for (var i = 0; i < data.length; i++) { + list['L'].push(convertInput(data[i])); + } + return list; + } else if (typeOf(data) === 'Set') { + return formatSet(data); + } else if (typeOf(data) === 'String') { + return { 'S': data }; + } else if (typeOf(data) === 'Number') { + return { 'N': data.toString() }; + } else if (typeOf(data) === 'Binary') { + return { 'B': data }; + } else if (typeOf(data) === 'Boolean') { + return {'BOOL': data}; + } else if (typeOf(data) === 'null') { + return {'NULL': true}; + } +} + +function formatSet(data) { + var map = {}; + switch (data.type) { + case 'String': map['SS'] = data.values; break; + case 'Binary': map['BS'] = data.values; break; + case 'Number': map['NS'] = data.values.map(function (value) { + return value.toString(); + }); + } + return map; +} + +function convertOutput(data) { + var list, map, i; + for (var type in data) { + var values = data[type]; + if (type === 'M') { + map = {}; + for (var key in values) { + map[key] = convertOutput(values[key]); + } + return map; + } else if (type === 'L') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(convertOutput(values[i])); + } + return list; + } else if (type === 'SS') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(values[i] + ''); + } + return new DynamoDBSet(list); + } else if (type === 'NS') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(Number(values[i])); + } + return new DynamoDBSet(list); + } else if (type === 'BS') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(new util.Buffer(values[i])); + } + return new DynamoDBSet(list); + } else if (type === 'S') { + return values + ''; + } else if (type === 'N') { + return Number(values); + } else if (type === 'B') { + return new util.Buffer(values); + } else if (type === 'BOOL') { + return (values === 'true' || values === 'TRUE' || values === true); + } else if (type === 'NULL') { + return null; + } + } +} + +module.exports = { + input: convertInput, + output: convertOutput +}; + +},{"../core":188,"./set":197,"./types":199}],196:[function(require,module,exports){ +var AWS = require('../core'); +var Translator = require('./translator'); +var DynamoDBSet = require('./set'); + + +AWS.DynamoDB.DocumentClient = AWS.util.inherit({ + + + operations: { + batchGetItem: 'batchGet', + batchWriteItem: 'batchWrite', + putItem: 'put', + getItem: 'get', + deleteItem: 'delete', + updateItem: 'update', + scan: 'scan', + query: 'query' + }, + + + constructor: function DocumentClient(options) { + var self = this; + self.options = options || {}; + self.configure(self.options); + }, + + + configure: function configure(options) { + var self = this; + self.service = options.service; + self.bindServiceObject(options); + self.attrValue = + self.service.api.operations.putItem.input.members.Item.value.shape; + }, + + + bindServiceObject: function bindServiceObject(options) { + var self = this; + options = options || {}; + + if (!self.service) { + self.service = new AWS.DynamoDB(options); + } else { + var config = AWS.util.copy(self.service.config); + self.service = new self.service.constructor.__super__(config); + self.service.config.params = + AWS.util.merge(self.service.config.params || {}, options.params); + } + }, + + + batchGet: function(params, callback) { + var self = this; + var request = self.service.batchGetItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + batchWrite: function(params, callback) { + var self = this; + var request = self.service.batchWriteItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + delete: function(params, callback) { + var self = this; + var request = self.service.deleteItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + get: function(params, callback) { + var self = this; + var request = self.service.getItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + put: function put(params, callback) { + var self = this; + var request = self.service.putItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + update: function(params, callback) { + var self = this; + var request = self.service.updateItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + scan: function(params, callback) { + var self = this; + var request = self.service.scan(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + query: function(params, callback) { + var self = this; + var request = self.service.query(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + + createSet: function(list, options) { + options = options || {}; + return new DynamoDBSet(list, options); + }, + + + getTranslator: function() { + return new Translator({attrValue: this.attrValue}); + }, + + + setupRequest: function setupRequest(request) { + var self = this; + var translator = self.getTranslator(); + var operation = request.operation; + var inputShape = request.service.api.operations[operation].input; + request._events.validate.unshift(function(req) { + req.rawParams = AWS.util.copy(req.params); + req.params = translator.translateInput(req.rawParams, inputShape); + }); + }, + + + setupResponse: function setupResponse(request) { + var self = this; + var translator = self.getTranslator(); + var outputShape = self.service.api.operations[request.operation].output; + request.on('extractData', function(response) { + response.data = translator.translateOutput(response.data, outputShape); + }); + + var response = request.response; + response.nextPage = function(cb) { + var resp = this; + var req = resp.request; + var config; + var service = req.service; + var operation = req.operation; + try { + config = service.paginationConfig(operation, true); + } catch (e) { resp.error = e; } + + if (!resp.hasNextPage()) { + if (cb) cb(resp.error, null); + else if (resp.error) throw resp.error; + return null; + } + + var params = AWS.util.copy(req.rawParams); + if (!resp.nextPageTokens) { + return cb ? cb(null, null) : null; + } else { + var inputTokens = config.inputToken; + if (typeof inputTokens === 'string') inputTokens = [inputTokens]; + for (var i = 0; i < inputTokens.length; i++) { + params[inputTokens[i]] = resp.nextPageTokens[i]; + } + return self[operation](params, cb); + } + }; + } + +}); + +module.exports = AWS.DynamoDB.DocumentClient; + +},{"../core":188,"./set":197,"./translator":198}],197:[function(require,module,exports){ +var util = require('../core').util; +var typeOf = require('./types').typeOf; + +var DynamoDBSet = util.inherit({ + + constructor: function Set(list, options) { + options = options || {}; + this.initialize(list, options.validate); + }, + + initialize: function(list, validate) { + var self = this; + self.values = [].concat(list); + self.detectType(); + if (validate) { + self.validate(); + } + }, + + detectType: function() { + var self = this; + var value = self.values[0]; + if (typeOf(value) === 'String') { + self.type = 'String'; + } else if (typeOf(value) === 'Number') { + self.type = 'Number'; + } else if (typeOf(value) === 'Binary') { + self.type = 'Binary'; + } else { + throw util.error(new Error(), { + code: 'InvalidSetType', + message: 'Sets can contain string, number, or binary values' + }); + } + }, + + validate: function() { + var self = this; + var length = self.values.length; + var values = self.values; + for (var i = 0; i < length; i++) { + if (typeOf(values[i]) !== self.type) { + throw util.error(new Error(), { + code: 'InvalidType', + message: self.type + ' Set contains ' + typeOf(values[i]) + ' value' + }); + } + } + } + +}); + +module.exports = DynamoDBSet; + +},{"../core":188,"./types":199}],198:[function(require,module,exports){ +var util = require('../core').util; +var convert = require('./converter'); + +var Translator = function(options) { + options = options || {}; + this.attrValue = options.attrValue; +}; + +Translator.prototype.translateInput = function(value, shape) { + this.mode = 'input'; + return this.translate(value, shape); +}; + +Translator.prototype.translateOutput = function(value, shape) { + this.mode = 'output'; + return this.translate(value, shape); +}; + +Translator.prototype.translate = function(value, shape) { + var self = this; + if (!shape || value === undefined) return undefined; + + if (shape.shape === self.attrValue) { + return convert[self.mode](value); + } + switch (shape.type) { + case 'structure': return self.translateStructure(value, shape); + case 'map': return self.translateMap(value, shape); + case 'list': return self.translateList(value, shape); + default: return self.translateScalar(value, shape); + } +}; + +Translator.prototype.translateStructure = function(structure, shape) { + var self = this; + if (structure == null) return undefined; + + var struct = {}; + util.each(structure, function(name, value) { + var memberShape = shape.members[name]; + if (memberShape) { + var result = self.translate(value, memberShape); + if (result !== undefined) struct[name] = result; + } + }); + return struct; +}; + +Translator.prototype.translateList = function(list, shape) { + var self = this; + if (list == null) return undefined; + + var out = []; + util.arrayEach(list, function(value) { + var result = self.translate(value, shape.member); + if (result === undefined) out.push(null); + else out.push(result); + }); + return out; +}; + +Translator.prototype.translateMap = function(map, shape) { + var self = this; + if (map == null) return undefined; + + var out = {}; + util.each(map, function(key, value) { + var result = self.translate(value, shape.value); + if (result === undefined) out[key] = null; + else out[key] = result; + }); + return out; +}; + +Translator.prototype.translateScalar = function(value, shape) { + return shape.toType(value); +}; + +module.exports = Translator; + +},{"../core":188,"./converter":195}],199:[function(require,module,exports){ +var util = require('../core').util; + +function typeOf(data) { + if (data === null && typeof data === 'object') { + return 'null'; + } else if (data !== undefined && isBinary(data)) { + return 'Binary'; + } else if (data !== undefined && data.constructor) { + return util.typeName(data.constructor); + } else { + return 'undefined'; + } +} + +function isBinary(data) { + var types = [ + 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView', + 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]; + if (util.isNode()) { + var Stream = util.stream.Stream; + if (util.Buffer.isBuffer(data) || data instanceof Stream) + return true; + } else { + for (var i = 0; i < types.length; i++) { + if (data !== undefined && data.constructor) { + if (util.isType(data, types[i])) return true; + if (util.typeName(data.constructor) === types[i]) return true; + } + } + } + return false; +} + +module.exports = { + typeOf: typeOf, + isBinary: isBinary +}; + +},{"../core":188}],200:[function(require,module,exports){ +var AWS = require('./core'); +var SequentialExecutor = require('./sequential_executor'); + + +AWS.EventListeners = { + + Core: {} /* doc hack */ +}; + +AWS.EventListeners = { + Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) { + addAsync('VALIDATE_CREDENTIALS', 'validate', + function VALIDATE_CREDENTIALS(req, done) { + if (!req.service.api.signatureVersion) return done(); // none + req.service.config.getCredentials(function(err) { + if (err) { + req.response.error = AWS.util.error(err, + {code: 'CredentialsError', message: 'Missing credentials in config'}); + } + done(); + }); + }); + + add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) { + if (!req.service.config.region && !req.service.isGlobalEndpoint) { + req.response.error = AWS.util.error(new Error(), + {code: 'ConfigError', message: 'Missing region in config'}); + } + }); + + add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) { + var rules = req.service.api.operations[req.operation].input; + var validation = req.service.config.paramValidation; + new AWS.ParamValidator(validation).validate(rules, req.params); + }); + + addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) { + req.haltHandlersOnError(); + if (!req.service.api.signatureVersion) return done(); // none + if (req.service.getSignerClass(req) === AWS.Signers.V4) { + var body = req.httpRequest.body || ''; + AWS.util.computeSha256(body, function(err, sha) { + if (err) { + done(err); + } + else { + req.httpRequest.headers['X-Amz-Content-Sha256'] = sha; + done(); + } + }); + } else { + done(); + } + }); + + add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) { + if (req.httpRequest.headers['Content-Length'] === undefined) { + var length = AWS.util.string.byteLength(req.httpRequest.body); + req.httpRequest.headers['Content-Length'] = length; + } + }); + + add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) { + req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host; + }); + + add('RESTART', 'restart', function RESTART() { + var err = this.response.error; + if (!err || !err.retryable) return; + + this.httpRequest = new AWS.HttpRequest( + this.service.endpoint, + this.service.region + ); + + if (this.response.retryCount < this.service.config.maxRetries) { + this.response.retryCount++; + } else { + this.response.error = null; + } + }); + + addAsync('SIGN', 'sign', function SIGN(req, done) { + var service = req.service; + if (!service.api.signatureVersion) return done(); // none + + service.config.getCredentials(function (err, credentials) { + if (err) { + req.response.error = err; + return done(); + } + + try { + var date = AWS.util.date.getDate(); + var SignerClass = service.getSignerClass(req); + var signer = new SignerClass(req.httpRequest, + service.api.signingName || service.api.endpointPrefix, + service.config.signatureCache); + signer.setServiceClientId(service._clientId); + + delete req.httpRequest.headers['Authorization']; + delete req.httpRequest.headers['Date']; + delete req.httpRequest.headers['X-Amz-Date']; + + signer.addAuthorization(credentials, date); + req.signedAt = date; + } catch (e) { + req.response.error = e; + } + done(); + }); + }); + + add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) { + if (this.service.successfulResponse(resp, this)) { + resp.data = {}; + resp.error = null; + } else { + resp.data = null; + resp.error = AWS.util.error(new Error(), + {code: 'UnknownError', message: 'An unknown error occurred.'}); + } + }); + + addAsync('SEND', 'send', function SEND(resp, done) { + resp.httpResponse._abortCallback = done; + resp.error = null; + resp.data = null; + + function callback(httpResp) { + resp.httpResponse.stream = httpResp; + + httpResp.on('headers', function onHeaders(statusCode, headers) { + resp.request.emit('httpHeaders', [statusCode, headers, resp]); + + if (!resp.httpResponse.streaming) { + if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check + httpResp.on('readable', function onReadable() { + var data = httpResp.read(); + if (data !== null) { + resp.request.emit('httpData', [data, resp]); + } + }); + } else { // legacy streams API + httpResp.on('data', function onData(data) { + resp.request.emit('httpData', [data, resp]); + }); + } + } + }); + + httpResp.on('end', function onEnd() { + resp.request.emit('httpDone'); + done(); + }); + } + + function progress(httpResp) { + httpResp.on('sendProgress', function onSendProgress(value) { + resp.request.emit('httpUploadProgress', [value, resp]); + }); + + httpResp.on('receiveProgress', function onReceiveProgress(value) { + resp.request.emit('httpDownloadProgress', [value, resp]); + }); + } + + function error(err) { + resp.error = AWS.util.error(err, { + code: 'NetworkingError', + region: resp.request.httpRequest.region, + hostname: resp.request.httpRequest.endpoint.hostname, + retryable: true + }); + resp.request.emit('httpError', [resp.error, resp], function() { + done(); + }); + } + + function executeSend() { + var http = AWS.HttpClient.getInstance(); + var httpOptions = resp.request.service.config.httpOptions || {}; + try { + var stream = http.handleRequest(resp.request.httpRequest, httpOptions, + callback, error); + progress(stream); + } catch (err) { + error(err); + } + } + + var timeDiff = (AWS.util.date.getDate() - this.signedAt) / 1000; + if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign + this.emit('sign', [this], function(err) { + if (err) done(err); + else executeSend(); + }); + } else { + executeSend(); + } + }); + + add('HTTP_HEADERS', 'httpHeaders', + function HTTP_HEADERS(statusCode, headers, resp) { + resp.httpResponse.statusCode = statusCode; + resp.httpResponse.headers = headers; + resp.httpResponse.body = new AWS.util.Buffer(''); + resp.httpResponse.buffers = []; + resp.httpResponse.numBytes = 0; + var dateHeader = headers.date || headers.Date; + if (dateHeader) { + var serverTime = Date.parse(dateHeader); + if (resp.request.service.config.correctClockSkew + && AWS.util.isClockSkewed(serverTime)) { + AWS.util.applyClockOffset(serverTime); + } + } + }); + + add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) { + if (chunk) { + if (AWS.util.isNode()) { + resp.httpResponse.numBytes += chunk.length; + + var total = resp.httpResponse.headers['content-length']; + var progress = { loaded: resp.httpResponse.numBytes, total: total }; + resp.request.emit('httpDownloadProgress', [progress, resp]); + } + + resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk)); + } + }); + + add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) { + if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) { + var body = AWS.util.buffer.concat(resp.httpResponse.buffers); + resp.httpResponse.body = body; + } + delete resp.httpResponse.numBytes; + delete resp.httpResponse.buffers; + }); + + add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) { + if (resp.httpResponse.statusCode) { + resp.error.statusCode = resp.httpResponse.statusCode; + if (resp.error.retryable === undefined) { + resp.error.retryable = this.service.retryableError(resp.error, this); + } + } + }); + + add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) { + if (!resp.error) return; + switch (resp.error.code) { + case 'RequestExpired': // EC2 only + case 'ExpiredTokenException': + case 'ExpiredToken': + resp.error.retryable = true; + resp.request.service.config.credentials.expired = true; + } + }); + + add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) { + var err = resp.error; + if (!err) return; + if (typeof err.code === 'string' && typeof err.message === 'string') { + if (err.code.match(/Signature/) && err.message.match(/expired/)) { + resp.error.retryable = true; + } + } + }); + + add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) { + if (!resp.error) return; + if (this.service.clockSkewError(resp.error) + && this.service.config.correctClockSkew + && AWS.config.isClockSkewed) { + resp.error.retryable = true; + } + }); + + add('REDIRECT', 'retry', function REDIRECT(resp) { + if (resp.error && resp.error.statusCode >= 300 && + resp.error.statusCode < 400 && resp.httpResponse.headers['location']) { + this.httpRequest.endpoint = + new AWS.Endpoint(resp.httpResponse.headers['location']); + this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host; + resp.error.redirect = true; + resp.error.retryable = true; + } + }); + + add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) { + if (resp.error) { + if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { + resp.error.retryDelay = 0; + } else if (resp.retryCount < resp.maxRetries) { + resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0; + } + } + }); + + addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) { + var delay, willRetry = false; + + if (resp.error) { + delay = resp.error.retryDelay || 0; + if (resp.error.retryable && resp.retryCount < resp.maxRetries) { + resp.retryCount++; + willRetry = true; + } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { + resp.redirectCount++; + willRetry = true; + } + } + + if (willRetry) { + resp.error = null; + setTimeout(done, delay); + } else { + done(); + } + }); + }), + + CorePost: new SequentialExecutor().addNamedListeners(function(add) { + add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId); + add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId); + + add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) { + if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') { + var message = 'Inaccessible host: `' + err.hostname + + '\'. This service may not be available in the `' + err.region + + '\' region.'; + this.response.error = AWS.util.error(new Error(message), { + code: 'UnknownEndpoint', + region: err.region, + hostname: err.hostname, + retryable: true, + originalError: err + }); + } + }); + }), + + Logger: new SequentialExecutor().addNamedListeners(function(add) { + add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) { + var req = resp.request; + var logger = req.service.config.logger; + if (!logger) return; + + function buildMessage() { + var time = AWS.util.date.getDate().getTime(); + var delta = (time - req.startTime.getTime()) / 1000; + var ansi = logger.isTTY ? true : false; + var status = resp.httpResponse.statusCode; + var params = require('util').inspect(req.params, true, null); + + var message = ''; + if (ansi) message += '\x1B[33m'; + message += '[AWS ' + req.service.serviceIdentifier + ' ' + status; + message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]'; + if (ansi) message += '\x1B[0;1m'; + message += ' ' + AWS.util.string.lowerFirst(req.operation); + message += '(' + params + ')'; + if (ansi) message += '\x1B[0m'; + return message; + } + + var line = buildMessage(); + if (typeof logger.log === 'function') { + logger.log(line); + } else if (typeof logger.write === 'function') { + logger.write(line + '\n'); + } + }); + }), + + Json: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/json'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + Rest: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + RestJson: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest_json'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + RestXml: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest_xml'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + Query: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/query'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }) +}; + +},{"./core":188,"./protocol/json":212,"./protocol/query":213,"./protocol/rest":214,"./protocol/rest_json":215,"./protocol/rest_xml":216,"./sequential_executor":224,"util":257}],201:[function(require,module,exports){ +var AWS = require('./core'); +var inherit = AWS.util.inherit; + + +AWS.Endpoint = inherit({ + + + constructor: function Endpoint(endpoint, config) { + AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']); + + if (typeof endpoint === 'undefined' || endpoint === null) { + throw new Error('Invalid endpoint: ' + endpoint); + } else if (typeof endpoint !== 'string') { + return AWS.util.copy(endpoint); + } + + if (!endpoint.match(/^http/)) { + var useSSL = config && config.sslEnabled !== undefined ? + config.sslEnabled : AWS.config.sslEnabled; + endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint; + } + + AWS.util.update(this, AWS.util.urlParse(endpoint)); + + if (this.port) { + this.port = parseInt(this.port, 10); + } else { + this.port = this.protocol === 'https:' ? 443 : 80; + } + } + +}); + + +AWS.HttpRequest = inherit({ + + + constructor: function HttpRequest(endpoint, region, customUserAgent) { + endpoint = new AWS.Endpoint(endpoint); + this.method = 'POST'; + this.path = endpoint.path || '/'; + this.headers = {}; + this.body = ''; + this.endpoint = endpoint; + this.region = region; + this.setUserAgent(customUserAgent); + }, + + + setUserAgent: function setUserAgent(customUserAgent) { + var prefix = AWS.util.isBrowser() ? 'X-Amz-' : ''; + var customSuffix = ''; + if (typeof customUserAgent === 'string' && customUserAgent) { + customSuffix += ' ' + customUserAgent; + } + this.headers[prefix + 'User-Agent'] = AWS.util.userAgent() + customSuffix; + }, + + + pathname: function pathname() { + return this.path.split('?', 1)[0]; + }, + + + search: function search() { + var query = this.path.split('?', 2)[1]; + if (query) { + query = AWS.util.queryStringParse(query); + return AWS.util.queryParamsToString(query); + } + return ''; + } + +}); + + +AWS.HttpResponse = inherit({ + + + constructor: function HttpResponse() { + this.statusCode = undefined; + this.headers = {}; + this.body = undefined; + this.streaming = false; + this.stream = null; + }, + + + createUnbufferedStream: function createUnbufferedStream() { + this.streaming = true; + return this.stream; + } +}); + + +AWS.HttpClient = inherit({}); + + +AWS.HttpClient.getInstance = function getInstance() { + if (this.singleton === undefined) { + this.singleton = new this(); + } + return this.singleton; +}; + +},{"./core":188}],202:[function(require,module,exports){ +var AWS = require('../core'); +var EventEmitter = require('events').EventEmitter; +require('../http'); + + +AWS.XHRClient = AWS.util.inherit({ + handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { + var self = this; + var endpoint = httpRequest.endpoint; + var emitter = new EventEmitter(); + var href = endpoint.protocol + '//' + endpoint.hostname; + if (endpoint.port !== 80 && endpoint.port !== 443) { + href += ':' + endpoint.port; + } + href += httpRequest.path; + + var xhr = new XMLHttpRequest(), headersEmitted = false; + httpRequest.stream = xhr; + + xhr.addEventListener('readystatechange', function() { + try { + if (xhr.status === 0) return; // 0 code is invalid + } catch (e) { return; } + + if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) { + try { xhr.responseType = 'arraybuffer'; } catch (e) {} + emitter.statusCode = xhr.status; + emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders()); + emitter.emit('headers', emitter.statusCode, emitter.headers); + headersEmitted = true; + } + if (this.readyState === this.DONE) { + self.finishRequest(xhr, emitter); + } + }, false); + xhr.upload.addEventListener('progress', function (evt) { + emitter.emit('sendProgress', evt); + }); + xhr.addEventListener('progress', function (evt) { + emitter.emit('receiveProgress', evt); + }, false); + xhr.addEventListener('timeout', function () { + errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'})); + }, false); + xhr.addEventListener('error', function () { + errCallback(AWS.util.error(new Error('Network Failure'), { + code: 'NetworkingError' + })); + }, false); + + callback(emitter); + xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false); + AWS.util.each(httpRequest.headers, function (key, value) { + if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') { + xhr.setRequestHeader(key, value); + } + }); + + if (httpOptions.timeout && httpOptions.xhrAsync !== false) { + xhr.timeout = httpOptions.timeout; + } + + if (httpOptions.xhrWithCredentials) { + xhr.withCredentials = true; + } + + try { + xhr.send(httpRequest.body); + } catch (err) { + if (httpRequest.body && typeof httpRequest.body.buffer === 'object') { + xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly + } else { + throw err; + } + } + + return emitter; + }, + + parseHeaders: function parseHeaders(rawHeaders) { + var headers = {}; + AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) { + var key = line.split(':', 1)[0]; + var value = line.substring(key.length + 2); + if (key.length > 0) headers[key.toLowerCase()] = value; + }); + return headers; + }, + + finishRequest: function finishRequest(xhr, emitter) { + var buffer; + if (xhr.responseType === 'arraybuffer' && xhr.response) { + var ab = xhr.response; + buffer = new AWS.util.Buffer(ab.byteLength); + var view = new Uint8Array(ab); + for (var i = 0; i < buffer.length; ++i) { + buffer[i] = view[i]; + } + } + + try { + if (!buffer && typeof xhr.responseText === 'string') { + buffer = new AWS.util.Buffer(xhr.responseText); + } + } catch (e) {} + + if (buffer) emitter.emit('data', buffer); + emitter.emit('end'); + } +}); + + +AWS.HttpClient.prototype = AWS.XHRClient.prototype; + + +AWS.HttpClient.streamsApiVersion = 1; + +},{"../core":188,"../http":201,"events":249}],203:[function(require,module,exports){ +var util = require('../util'); + +function JsonBuilder() { } + +JsonBuilder.prototype.build = function(value, shape) { + return JSON.stringify(translate(value, shape)); +}; + +function translate(value, shape) { + if (!shape || value === undefined || value === null) return undefined; + + switch (shape.type) { + case 'structure': return translateStructure(value, shape); + case 'map': return translateMap(value, shape); + case 'list': return translateList(value, shape); + default: return translateScalar(value, shape); + } +} + +function translateStructure(structure, shape) { + var struct = {}; + util.each(structure, function(name, value) { + var memberShape = shape.members[name]; + if (memberShape) { + if (memberShape.location !== 'body') return; + var locationName = memberShape.isLocationName ? memberShape.name : name; + var result = translate(value, memberShape); + if (result !== undefined) struct[locationName] = result; + } + }); + return struct; +} + +function translateList(list, shape) { + var out = []; + util.arrayEach(list, function(value) { + var result = translate(value, shape.member); + if (result !== undefined) out.push(result); + }); + return out; +} + +function translateMap(map, shape) { + var out = {}; + util.each(map, function(key, value) { + var result = translate(value, shape.value); + if (result !== undefined) out[key] = result; + }); + return out; +} + +function translateScalar(value, shape) { + return shape.toWireFormat(value); +} + +module.exports = JsonBuilder; + +},{"../util":245}],204:[function(require,module,exports){ +var util = require('../util'); + +function JsonParser() { } + +JsonParser.prototype.parse = function(value, shape) { + return translate(JSON.parse(value), shape); +}; + +function translate(value, shape) { + if (!shape || value === undefined) return undefined; + + switch (shape.type) { + case 'structure': return translateStructure(value, shape); + case 'map': return translateMap(value, shape); + case 'list': return translateList(value, shape); + default: return translateScalar(value, shape); + } +} + +function translateStructure(structure, shape) { + if (structure == null) return undefined; + + var struct = {}; + var shapeMembers = shape.members; + util.each(shapeMembers, function(name, memberShape) { + var locationName = memberShape.isLocationName ? memberShape.name : name; + if (Object.prototype.hasOwnProperty.call(structure, locationName)) { + var value = structure[locationName]; + var result = translate(value, memberShape); + if (result !== undefined) struct[name] = result; + } + }); + return struct; +} + +function translateList(list, shape) { + if (list == null) return undefined; + + var out = []; + util.arrayEach(list, function(value) { + var result = translate(value, shape.member); + if (result === undefined) out.push(null); + else out.push(result); + }); + return out; +} + +function translateMap(map, shape) { + if (map == null) return undefined; + + var out = {}; + util.each(map, function(key, value) { + var result = translate(value, shape.value); + if (result === undefined) out[key] = null; + else out[key] = result; + }); + return out; +} + +function translateScalar(value, shape) { + return shape.toType(value); +} + +module.exports = JsonParser; + +},{"../util":245}],205:[function(require,module,exports){ +var Collection = require('./collection'); +var Operation = require('./operation'); +var Shape = require('./shape'); +var Paginator = require('./paginator'); +var ResourceWaiter = require('./resource_waiter'); + +var util = require('../util'); +var property = util.property; +var memoizedProperty = util.memoizedProperty; + +function Api(api, options) { + api = api || {}; + options = options || {}; + options.api = this; + + api.metadata = api.metadata || {}; + + property(this, 'isApi', true, false); + property(this, 'apiVersion', api.metadata.apiVersion); + property(this, 'endpointPrefix', api.metadata.endpointPrefix); + property(this, 'signingName', api.metadata.signingName); + property(this, 'globalEndpoint', api.metadata.globalEndpoint); + property(this, 'signatureVersion', api.metadata.signatureVersion); + property(this, 'jsonVersion', api.metadata.jsonVersion); + property(this, 'targetPrefix', api.metadata.targetPrefix); + property(this, 'protocol', api.metadata.protocol); + property(this, 'timestampFormat', api.metadata.timestampFormat); + property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace); + property(this, 'abbreviation', api.metadata.serviceAbbreviation); + property(this, 'fullName', api.metadata.serviceFullName); + + memoizedProperty(this, 'className', function() { + var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName; + if (!name) return null; + + name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, ''); + if (name === 'ElasticLoadBalancing') name = 'ELB'; + return name; + }); + + property(this, 'operations', new Collection(api.operations, options, function(name, operation) { + return new Operation(name, operation, options); + }, util.string.lowerFirst)); + + property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) { + return Shape.create(shape, options); + })); + + property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) { + return new Paginator(name, paginator, options); + })); + + property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) { + return new ResourceWaiter(name, waiter, options); + }, util.string.lowerFirst)); + + if (options.documentation) { + property(this, 'documentation', api.documentation); + property(this, 'documentationUrl', api.documentationUrl); + } +} + +module.exports = Api; + +},{"../util":245,"./collection":206,"./operation":207,"./paginator":208,"./resource_waiter":209,"./shape":210}],206:[function(require,module,exports){ +var memoizedProperty = require('../util').memoizedProperty; + +function memoize(name, value, fn, nameTr) { + memoizedProperty(this, nameTr(name), function() { + return fn(name, value); + }); +} + +function Collection(iterable, options, fn, nameTr) { + nameTr = nameTr || String; + var self = this; + + for (var id in iterable) { + if (Object.prototype.hasOwnProperty.call(iterable, id)) { + memoize.call(self, id, iterable[id], fn, nameTr); + } + } +} + +module.exports = Collection; + +},{"../util":245}],207:[function(require,module,exports){ +var Shape = require('./shape'); + +var util = require('../util'); +var property = util.property; +var memoizedProperty = util.memoizedProperty; + +function Operation(name, operation, options) { + options = options || {}; + + property(this, 'name', operation.name || name); + property(this, 'api', options.api, false); + + operation.http = operation.http || {}; + property(this, 'httpMethod', operation.http.method || 'POST'); + property(this, 'httpPath', operation.http.requestUri || '/'); + property(this, 'authtype', operation.authtype || ''); + + memoizedProperty(this, 'input', function() { + if (!operation.input) { + return new Shape.create({type: 'structure'}, options); + } + return Shape.create(operation.input, options); + }); + + memoizedProperty(this, 'output', function() { + if (!operation.output) { + return new Shape.create({type: 'structure'}, options); + } + return Shape.create(operation.output, options); + }); + + memoizedProperty(this, 'errors', function() { + var list = []; + if (!operation.errors) return null; + + for (var i = 0; i < operation.errors.length; i++) { + list.push(Shape.create(operation.errors[i], options)); + } + + return list; + }); + + memoizedProperty(this, 'paginator', function() { + return options.api.paginators[name]; + }); + + if (options.documentation) { + property(this, 'documentation', operation.documentation); + property(this, 'documentationUrl', operation.documentationUrl); + } +} + +module.exports = Operation; + +},{"../util":245,"./shape":210}],208:[function(require,module,exports){ +var property = require('../util').property; + +function Paginator(name, paginator) { + property(this, 'inputToken', paginator.input_token); + property(this, 'limitKey', paginator.limit_key); + property(this, 'moreResults', paginator.more_results); + property(this, 'outputToken', paginator.output_token); + property(this, 'resultKey', paginator.result_key); +} + +module.exports = Paginator; + +},{"../util":245}],209:[function(require,module,exports){ +var util = require('../util'); +var property = util.property; + +function ResourceWaiter(name, waiter, options) { + options = options || {}; + property(this, 'name', name); + property(this, 'api', options.api, false); + + if (waiter.operation) { + property(this, 'operation', util.string.lowerFirst(waiter.operation)); + } + + var self = this; + var keys = [ + 'type', + 'description', + 'delay', + 'maxAttempts', + 'acceptors' + ]; + + keys.forEach(function(key) { + var value = waiter[key]; + if (value) { + property(self, key, value); + } + }); +} + +module.exports = ResourceWaiter; + +},{"../util":245}],210:[function(require,module,exports){ +var Collection = require('./collection'); + +var util = require('../util'); + +function property(obj, name, value) { + if (value !== null && value !== undefined) { + util.property.apply(this, arguments); + } +} + +function memoizedProperty(obj, name) { + if (!obj.constructor.prototype[name]) { + util.memoizedProperty.apply(this, arguments); + } +} + +function Shape(shape, options, memberName) { + options = options || {}; + + property(this, 'shape', shape.shape); + property(this, 'api', options.api, false); + property(this, 'type', shape.type); + property(this, 'enum', shape.enum); + property(this, 'min', shape.min); + property(this, 'max', shape.max); + property(this, 'pattern', shape.pattern); + property(this, 'location', shape.location || this.location || 'body'); + property(this, 'name', this.name || shape.xmlName || shape.queryName || + shape.locationName || memberName); + property(this, 'isStreaming', shape.streaming || this.isStreaming || false); + property(this, 'isComposite', shape.isComposite || false); + property(this, 'isShape', true, false); + property(this, 'isQueryName', shape.queryName ? true : false, false); + property(this, 'isLocationName', shape.locationName ? true : false, false); + + if (options.documentation) { + property(this, 'documentation', shape.documentation); + property(this, 'documentationUrl', shape.documentationUrl); + } + + if (shape.xmlAttribute) { + property(this, 'isXmlAttribute', shape.xmlAttribute || false); + } + + property(this, 'defaultValue', null); + this.toWireFormat = function(value) { + if (value === null || value === undefined) return ''; + return value; + }; + this.toType = function(value) { return value; }; +} + + +Shape.normalizedTypes = { + character: 'string', + double: 'float', + long: 'integer', + short: 'integer', + biginteger: 'integer', + bigdecimal: 'float', + blob: 'binary' +}; + + +Shape.types = { + 'structure': StructureShape, + 'list': ListShape, + 'map': MapShape, + 'boolean': BooleanShape, + 'timestamp': TimestampShape, + 'float': FloatShape, + 'integer': IntegerShape, + 'string': StringShape, + 'base64': Base64Shape, + 'binary': BinaryShape +}; + +Shape.resolve = function resolve(shape, options) { + if (shape.shape) { + var refShape = options.api.shapes[shape.shape]; + if (!refShape) { + throw new Error('Cannot find shape reference: ' + shape.shape); + } + + return refShape; + } else { + return null; + } +}; + +Shape.create = function create(shape, options, memberName) { + if (shape.isShape) return shape; + + var refShape = Shape.resolve(shape, options); + if (refShape) { + var filteredKeys = Object.keys(shape); + if (!options.documentation) { + filteredKeys = filteredKeys.filter(function(name) { + return !name.match(/documentation/); + }); + } + if (filteredKeys === ['shape']) { // no inline customizations + return refShape; + } + + var InlineShape = function() { + refShape.constructor.call(this, shape, options, memberName); + }; + InlineShape.prototype = refShape; + return new InlineShape(); + } else { + if (!shape.type) { + if (shape.members) shape.type = 'structure'; + else if (shape.member) shape.type = 'list'; + else if (shape.key) shape.type = 'map'; + else shape.type = 'string'; + } + + var origType = shape.type; + if (Shape.normalizedTypes[shape.type]) { + shape.type = Shape.normalizedTypes[shape.type]; + } + + if (Shape.types[shape.type]) { + return new Shape.types[shape.type](shape, options, memberName); + } else { + throw new Error('Unrecognized shape type: ' + origType); + } + } +}; + +function CompositeShape(shape) { + Shape.apply(this, arguments); + property(this, 'isComposite', true); + + if (shape.flattened) { + property(this, 'flattened', shape.flattened || false); + } +} + +function StructureShape(shape, options) { + var requiredMap = null, firstInit = !this.isShape; + + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return {}; }); + property(this, 'members', {}); + property(this, 'memberNames', []); + property(this, 'required', []); + property(this, 'isRequired', function() { return false; }); + } + + if (shape.members) { + property(this, 'members', new Collection(shape.members, options, function(name, member) { + return Shape.create(member, options, name); + })); + memoizedProperty(this, 'memberNames', function() { + return shape.xmlOrder || Object.keys(shape.members); + }); + } + + if (shape.required) { + property(this, 'required', shape.required); + property(this, 'isRequired', function(name) { + if (!requiredMap) { + requiredMap = {}; + for (var i = 0; i < shape.required.length; i++) { + requiredMap[shape.required[i]] = true; + } + } + + return requiredMap[name]; + }, false, true); + } + + property(this, 'resultWrapper', shape.resultWrapper || null); + + if (shape.payload) { + property(this, 'payload', shape.payload); + } + + if (typeof shape.xmlNamespace === 'string') { + property(this, 'xmlNamespaceUri', shape.xmlNamespace); + } else if (typeof shape.xmlNamespace === 'object') { + property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix); + property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri); + } +} + +function ListShape(shape, options) { + var self = this, firstInit = !this.isShape; + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return []; }); + } + + if (shape.member) { + memoizedProperty(this, 'member', function() { + return Shape.create(shape.member, options); + }); + } + + if (this.flattened) { + var oldName = this.name; + memoizedProperty(this, 'name', function() { + return self.member.name || oldName; + }); + } +} + +function MapShape(shape, options) { + var firstInit = !this.isShape; + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return {}; }); + property(this, 'key', Shape.create({type: 'string'}, options)); + property(this, 'value', Shape.create({type: 'string'}, options)); + } + + if (shape.key) { + memoizedProperty(this, 'key', function() { + return Shape.create(shape.key, options); + }); + } + if (shape.value) { + memoizedProperty(this, 'value', function() { + return Shape.create(shape.value, options); + }); + } +} + +function TimestampShape(shape) { + var self = this; + Shape.apply(this, arguments); + + if (this.location === 'header') { + property(this, 'timestampFormat', 'rfc822'); + } else if (shape.timestampFormat) { + property(this, 'timestampFormat', shape.timestampFormat); + } else if (this.api) { + if (this.api.timestampFormat) { + property(this, 'timestampFormat', this.api.timestampFormat); + } else { + switch (this.api.protocol) { + case 'json': + case 'rest-json': + property(this, 'timestampFormat', 'unixTimestamp'); + break; + case 'rest-xml': + case 'query': + case 'ec2': + property(this, 'timestampFormat', 'iso8601'); + break; + } + } + } + + this.toType = function(value) { + if (value === null || value === undefined) return null; + if (typeof value.toUTCString === 'function') return value; + return typeof value === 'string' || typeof value === 'number' ? + util.date.parseTimestamp(value) : null; + }; + + this.toWireFormat = function(value) { + return util.date.format(value, self.timestampFormat); + }; +} + +function StringShape() { + Shape.apply(this, arguments); + + if (this.api) { + switch (this.api.protocol) { + case 'rest-xml': + case 'query': + case 'ec2': + this.toType = function(value) { return value || ''; }; + } + } +} + +function FloatShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (value === null || value === undefined) return null; + return parseFloat(value); + }; + this.toWireFormat = this.toType; +} + +function IntegerShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (value === null || value === undefined) return null; + return parseInt(value, 10); + }; + this.toWireFormat = this.toType; +} + +function BinaryShape() { + Shape.apply(this, arguments); + this.toType = util.base64.decode; + this.toWireFormat = util.base64.encode; +} + +function Base64Shape() { + BinaryShape.apply(this, arguments); +} + +function BooleanShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (typeof value === 'boolean') return value; + if (value === null || value === undefined) return null; + return value === 'true'; + }; +} + + +Shape.shapes = { + StructureShape: StructureShape, + ListShape: ListShape, + MapShape: MapShape, + StringShape: StringShape, + BooleanShape: BooleanShape, + Base64Shape: Base64Shape +}; + +module.exports = Shape; + +},{"../util":245,"./collection":206}],211:[function(require,module,exports){ +var AWS = require('./core'); + + +AWS.ParamValidator = AWS.util.inherit({ + + constructor: function ParamValidator(validation) { + if (validation === true || validation === undefined) { + validation = {'min': true}; + } + this.validation = validation; + }, + + validate: function validate(shape, params, context) { + this.errors = []; + this.validateMember(shape, params || {}, context || 'params'); + + if (this.errors.length > 1) { + var msg = this.errors.join('\n* '); + msg = 'There were ' + this.errors.length + + ' validation errors:\n* ' + msg; + throw AWS.util.error(new Error(msg), + {code: 'MultipleValidationErrors', errors: this.errors}); + } else if (this.errors.length === 1) { + throw this.errors[0]; + } else { + return true; + } + }, + + fail: function fail(code, message) { + this.errors.push(AWS.util.error(new Error(message), {code: code})); + }, + + validateStructure: function validateStructure(shape, params, context) { + this.validateType(params, context, ['object'], 'structure'); + + var paramName; + for (var i = 0; shape.required && i < shape.required.length; i++) { + paramName = shape.required[i]; + var value = params[paramName]; + if (value === undefined || value === null) { + this.fail('MissingRequiredParameter', + 'Missing required key \'' + paramName + '\' in ' + context); + } + } + + for (paramName in params) { + if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue; + + var paramValue = params[paramName], + memberShape = shape.members[paramName]; + + if (memberShape !== undefined) { + var memberContext = [context, paramName].join('.'); + this.validateMember(memberShape, paramValue, memberContext); + } else { + this.fail('UnexpectedParameter', + 'Unexpected key \'' + paramName + '\' found in ' + context); + } + } + + return true; + }, + + validateMember: function validateMember(shape, param, context) { + switch (shape.type) { + case 'structure': + return this.validateStructure(shape, param, context); + case 'list': + return this.validateList(shape, param, context); + case 'map': + return this.validateMap(shape, param, context); + default: + return this.validateScalar(shape, param, context); + } + }, + + validateList: function validateList(shape, params, context) { + if (this.validateType(params, context, [Array])) { + this.validateRange(shape, params.length, context, 'list member count'); + for (var i = 0; i < params.length; i++) { + this.validateMember(shape.member, params[i], context + '[' + i + ']'); + } + } + }, + + validateMap: function validateMap(shape, params, context) { + if (this.validateType(params, context, ['object'], 'map')) { + var mapCount = 0; + for (var param in params) { + if (!Object.prototype.hasOwnProperty.call(params, param)) continue; + this.validateMember(shape.key, param, + context + '[key=\'' + param + '\']') + this.validateMember(shape.value, params[param], + context + '[\'' + param + '\']'); + mapCount++; + } + this.validateRange(shape, mapCount, context, 'map member count'); + } + }, + + validateScalar: function validateScalar(shape, value, context) { + switch (shape.type) { + case null: + case undefined: + case 'string': + return this.validateString(shape, value, context); + case 'base64': + case 'binary': + return this.validatePayload(value, context); + case 'integer': + case 'float': + return this.validateNumber(shape, value, context); + case 'boolean': + return this.validateType(value, context, ['boolean']); + case 'timestamp': + return this.validateType(value, context, [Date, + /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'], + 'Date object, ISO-8601 string, or a UNIX timestamp'); + default: + return this.fail('UnkownType', 'Unhandled type ' + + shape.type + ' for ' + context); + } + }, + + validateString: function validateString(shape, value, context) { + if (this.validateType(value, context, ['string'])) { + this.validateEnum(shape, value, context); + this.validateRange(shape, value.length, context, 'string length'); + this.validatePattern(shape, value, context); + } + }, + + validatePattern: function validatePattern(shape, value, context) { + if (this.validation['pattern'] && shape['pattern'] !== undefined) { + if (!(new RegExp(shape['pattern'])).test(value)) { + this.fail('PatternMatchError', 'Provided value "' + value + '" ' + + 'does not match regex pattern /' + shape['pattern'] + '/ for ' + + context); + } + } + }, + + validateRange: function validateRange(shape, value, context, descriptor) { + if (this.validation['min']) { + if (shape['min'] !== undefined && value < shape['min']) { + this.fail('MinRangeError', 'Expected ' + descriptor + ' >= ' + + shape['min'] + ', but found ' + value + ' for ' + context); + } + } + if (this.validation['max']) { + if (shape['max'] !== undefined && value > shape['max']) { + this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= ' + + shape['max'] + ', but found ' + value + ' for ' + context); + } + } + }, + + validateEnum: function validateRange(shape, value, context) { + if (this.validation['enum'] && shape['enum'] !== undefined) { + if (shape['enum'].indexOf(value) === -1) { + this.fail('EnumError', 'Found string value of ' + value + ', but ' + + 'expected ' + shape['enum'].join('|') + ' for ' + context); + } + } + }, + + validateType: function validateType(value, context, acceptedTypes, type) { + if (value === null || value === undefined) return false; + + var foundInvalidType = false; + for (var i = 0; i < acceptedTypes.length; i++) { + if (typeof acceptedTypes[i] === 'string') { + if (typeof value === acceptedTypes[i]) return true; + } else if (acceptedTypes[i] instanceof RegExp) { + if ((value || '').toString().match(acceptedTypes[i])) return true; + } else { + if (value instanceof acceptedTypes[i]) return true; + if (AWS.util.isType(value, acceptedTypes[i])) return true; + if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice(); + acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]); + } + foundInvalidType = true; + } + + var acceptedType = type; + if (!acceptedType) { + acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1'); + } + + var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : ''; + this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' + + vowel + ' ' + acceptedType); + return false; + }, + + validateNumber: function validateNumber(shape, value, context) { + if (value === null || value === undefined) return; + if (typeof value === 'string') { + var castedValue = parseFloat(value); + if (castedValue.toString() === value) value = castedValue; + } + if (this.validateType(value, context, ['number'])) { + this.validateRange(shape, value, context, 'numeric value'); + } + }, + + validatePayload: function validatePayload(value, context) { + if (value === null || value === undefined) return; + if (typeof value === 'string') return; + if (value && typeof value.byteLength === 'number') return; // typed arrays + if (AWS.util.isNode()) { // special check for buffer/stream in Node.js + var Stream = AWS.util.stream.Stream; + if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; + } + + var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView']; + if (value) { + for (var i = 0; i < types.length; i++) { + if (AWS.util.isType(value, types[i])) return; + if (AWS.util.typeName(value.constructor) === types[i]) return; + } + } + + this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' + + 'string, Buffer, Stream, Blob, or typed array object'); + } +}); + +},{"./core":188}],212:[function(require,module,exports){ +var util = require('../util'); +var JsonBuilder = require('../json/builder'); +var JsonParser = require('../json/parser'); + +function buildRequest(req) { + var httpRequest = req.httpRequest; + var api = req.service.api; + var target = api.targetPrefix + '.' + api.operations[req.operation].name; + var version = api.jsonVersion || '1.0'; + var input = api.operations[req.operation].input; + var builder = new JsonBuilder(); + + if (version === 1) version = '1.0'; + httpRequest.body = builder.build(req.params || {}, input); + httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; + httpRequest.headers['X-Amz-Target'] = target; +} + +function extractError(resp) { + var error = {}; + var httpResponse = resp.httpResponse; + + error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError'; + if (typeof error.code === 'string') { + error.code = error.code.split(':')[0]; + } + + if (httpResponse.body.length > 0) { + var e = JSON.parse(httpResponse.body.toString()); + if (e.__type || e.code) { + error.code = (e.__type || e.code).split('#').pop(); + } + if (error.code === 'RequestEntityTooLarge') { + error.message = 'Request body must be less than 1 MB'; + } else { + error.message = (e.message || e.Message || null); + } + } else { + error.statusCode = httpResponse.statusCode; + error.message = httpResponse.statusCode.toString(); + } + + resp.error = util.error(new Error(), error); +} + +function extractData(resp) { + var body = resp.httpResponse.body.toString() || '{}'; + if (resp.request.service.config.convertResponseTypes === false) { + resp.data = JSON.parse(body); + } else { + var operation = resp.request.service.api.operations[resp.request.operation]; + var shape = operation.output || {}; + var parser = new JsonParser(); + resp.data = parser.parse(body, shape); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../json/builder":203,"../json/parser":204,"../util":245}],213:[function(require,module,exports){ +var AWS = require('../core'); +var util = require('../util'); +var QueryParamSerializer = require('../query/query_param_serializer'); +var Shape = require('../model/shape'); + +function buildRequest(req) { + var operation = req.service.api.operations[req.operation]; + var httpRequest = req.httpRequest; + httpRequest.headers['Content-Type'] = + 'application/x-www-form-urlencoded; charset=utf-8'; + httpRequest.params = { + Version: req.service.api.apiVersion, + Action: operation.name + }; + + var builder = new QueryParamSerializer(); + builder.serialize(req.params, operation.input, function(name, value) { + httpRequest.params[name] = value; + }); + httpRequest.body = util.queryParamsToString(httpRequest.params); +} + +function extractError(resp) { + var data, body = resp.httpResponse.body.toString(); + if (body.match('= 0 ? '&' : '?'); + var parts = []; + util.arrayEach(Object.keys(queryString).sort(), function(key) { + if (!Array.isArray(queryString[key])) { + queryString[key] = [queryString[key]]; + } + for (var i = 0; i < queryString[key].length; i++) { + parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]); + } + }); + uri += parts.join('&'); + } + + req.httpRequest.path = uri; +} + +function populateHeaders(req) { + var operation = req.service.api.operations[req.operation]; + util.each(operation.input.members, function (name, member) { + var value = req.params[name]; + if (value === null || value === undefined) return; + + if (member.location === 'headers' && member.type === 'map') { + util.each(value, function(key, memberValue) { + req.httpRequest.headers[member.name + key] = memberValue; + }); + } else if (member.location === 'header') { + value = member.toWireFormat(value).toString(); + req.httpRequest.headers[member.name] = value; + } + }); +} + +function buildRequest(req) { + populateMethod(req); + populateURI(req); + populateHeaders(req); +} + +function extractError() { +} + +function extractData(resp) { + var req = resp.request; + var data = {}; + var r = resp.httpResponse; + var operation = req.service.api.operations[req.operation]; + var output = operation.output; + + var headers = {}; + util.each(r.headers, function (k, v) { + headers[k.toLowerCase()] = v; + }); + + util.each(output.members, function(name, member) { + var header = (member.name || name).toLowerCase(); + if (member.location === 'headers' && member.type === 'map') { + data[name] = {}; + var location = member.isLocationName ? member.name : ''; + var pattern = new RegExp('^' + location + '(.+)', 'i'); + util.each(r.headers, function (k, v) { + var result = k.match(pattern); + if (result !== null) { + data[name][result[1]] = v; + } + }); + } else if (member.location === 'header') { + if (headers[header] !== undefined) { + data[name] = headers[header]; + } + } else if (member.location === 'statusCode') { + data[name] = parseInt(r.statusCode, 10); + } + }); + + resp.data = data; +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../util":245}],215:[function(require,module,exports){ +var util = require('../util'); +var Rest = require('./rest'); +var Json = require('./json'); +var JsonBuilder = require('../json/builder'); +var JsonParser = require('../json/parser'); + +function populateBody(req) { + var builder = new JsonBuilder(); + var input = req.service.api.operations[req.operation].input; + + if (input.payload) { + var params = {}; + var payloadShape = input.members[input.payload]; + params = req.params[input.payload]; + if (params === undefined) return; + + if (payloadShape.type === 'structure') { + req.httpRequest.body = builder.build(params, payloadShape); + } else { // non-JSON payload + req.httpRequest.body = params; + } + } else { + req.httpRequest.body = builder.build(req.params, input); + } +} + +function buildRequest(req) { + Rest.buildRequest(req); + + if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) { + populateBody(req); + } +} + +function extractError(resp) { + Json.extractError(resp); +} + +function extractData(resp) { + Rest.extractData(resp); + + var req = resp.request; + var rules = req.service.api.operations[req.operation].output || {}; + if (rules.payload) { + var payloadMember = rules.members[rules.payload]; + var body = resp.httpResponse.body; + if (payloadMember.isStreaming) { + resp.data[rules.payload] = body; + } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') { + var parser = new JsonParser(); + resp.data[rules.payload] = parser.parse(body, payloadMember); + } else { + resp.data[rules.payload] = body.toString(); + } + } else { + var data = resp.data; + Json.extractData(resp); + resp.data = util.merge(data, resp.data); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../json/builder":203,"../json/parser":204,"../util":245,"./json":212,"./rest":214}],216:[function(require,module,exports){ +var AWS = require('../core'); +var util = require('../util'); +var Rest = require('./rest'); + +function populateBody(req) { + var input = req.service.api.operations[req.operation].input; + var builder = new AWS.XML.Builder(); + var params = req.params; + + var payload = input.payload; + if (payload) { + var payloadMember = input.members[payload]; + params = params[payload]; + if (params === undefined) return; + + if (payloadMember.type === 'structure') { + var rootElement = payloadMember.name; + req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true); + } else { // non-xml payload + req.httpRequest.body = params; + } + } else { + req.httpRequest.body = builder.toXML(params, input, input.name || + input.shape || util.string.upperFirst(req.operation) + 'Request'); + } +} + +function buildRequest(req) { + Rest.buildRequest(req); + + if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) { + populateBody(req); + } +} + +function extractError(resp) { + Rest.extractError(resp); + + var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString()); + if (data.Errors) data = data.Errors; + if (data.Error) data = data.Error; + if (data.Code) { + resp.error = util.error(new Error(), { + code: data.Code, + message: data.Message + }); + } else { + resp.error = util.error(new Error(), { + code: resp.httpResponse.statusCode, + message: null + }); + } +} + +function extractData(resp) { + Rest.extractData(resp); + + var parser; + var req = resp.request; + var body = resp.httpResponse.body; + var operation = req.service.api.operations[req.operation]; + var output = operation.output; + + var payload = output.payload; + if (payload) { + var payloadMember = output.members[payload]; + if (payloadMember.isStreaming) { + resp.data[payload] = body; + } else if (payloadMember.type === 'structure') { + parser = new AWS.XML.Parser(); + resp.data[payload] = parser.parse(body.toString(), payloadMember); + } else { + resp.data[payload] = body.toString(); + } + } else if (body.length > 0) { + parser = new AWS.XML.Parser(); + var data = parser.parse(body.toString(), output); + util.update(resp.data, data); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; + +},{"../core":188,"../util":245,"./rest":214}],217:[function(require,module,exports){ +var util = require('../util'); + +function QueryParamSerializer() { +} + +QueryParamSerializer.prototype.serialize = function(params, shape, fn) { + serializeStructure('', params, shape, fn); +}; + +function ucfirst(shape) { + if (shape.isQueryName || shape.api.protocol !== 'ec2') { + return shape.name; + } else { + return shape.name[0].toUpperCase() + shape.name.substr(1); + } +} + +function serializeStructure(prefix, struct, rules, fn) { + util.each(rules.members, function(name, member) { + var value = struct[name]; + if (value === null || value === undefined) return; + + var memberName = ucfirst(member); + memberName = prefix ? prefix + '.' + memberName : memberName; + serializeMember(memberName, value, member, fn); + }); +} + +function serializeMap(name, map, rules, fn) { + var i = 1; + util.each(map, function (key, value) { + var prefix = rules.flattened ? '.' : '.entry.'; + var position = prefix + (i++) + '.'; + var keyName = position + (rules.key.name || 'key'); + var valueName = position + (rules.value.name || 'value'); + serializeMember(name + keyName, key, rules.key, fn); + serializeMember(name + valueName, value, rules.value, fn); + }); +} + +function serializeList(name, list, rules, fn) { + var memberRules = rules.member || {}; + + if (list.length === 0) { + fn.call(this, name, null); + return; + } + + util.arrayEach(list, function (v, n) { + var suffix = '.' + (n + 1); + if (rules.api.protocol === 'ec2') { + suffix = suffix + ''; // make linter happy + } else if (rules.flattened) { + if (memberRules.name) { + var parts = name.split('.'); + parts.pop(); + parts.push(ucfirst(memberRules)); + name = parts.join('.'); + } + } else { + suffix = '.member' + suffix; + } + serializeMember(name + suffix, v, memberRules, fn); + }); +} + +function serializeMember(name, value, rules, fn) { + if (value === null || value === undefined) return; + if (rules.type === 'structure') { + serializeStructure(name, value, rules, fn); + } else if (rules.type === 'list') { + serializeList(name, value, rules, fn); + } else if (rules.type === 'map') { + serializeMap(name, value, rules, fn); + } else { + fn(name, rules.toWireFormat(value).toString()); + } +} + +module.exports = QueryParamSerializer; + +},{"../util":245}],218:[function(require,module,exports){ +module.exports={ + "rules": { + "*/*": { + "endpoint": "{service}.{region}.amazonaws.com" + }, + "cn-*/*": { + "endpoint": "{service}.{region}.amazonaws.com.cn" + }, + "*/cloudfront": "globalSSL", + "*/iam": "globalSSL", + "*/sts": "globalSSL", + "*/importexport": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "v2", + "globalEndpoint": true + }, + "*/route53": { + "endpoint": "https://{service}.amazonaws.com", + "signatureVersion": "v3https", + "globalEndpoint": true + }, + "*/waf": "globalSSL", + "us-gov-*/iam": "globalGovCloud", + "us-gov-*/sts": { + "endpoint": "{service}.{region}.amazonaws.com" + }, + "us-gov-west-1/s3": "s3dash", + "us-west-1/s3": "s3dash", + "us-west-2/s3": "s3dash", + "eu-west-1/s3": "s3dash", + "ap-southeast-1/s3": "s3dash", + "ap-southeast-2/s3": "s3dash", + "ap-northeast-1/s3": "s3dash", + "sa-east-1/s3": "s3dash", + "us-east-1/s3": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "s3" + }, + "us-east-1/sdb": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "v2" + }, + "*/sdb": { + "endpoint": "{service}.{region}.amazonaws.com", + "signatureVersion": "v2" + } + }, + + "patterns": { + "globalSSL": { + "endpoint": "https://{service}.amazonaws.com", + "globalEndpoint": true + }, + "globalGovCloud": { + "endpoint": "{service}.us-gov.amazonaws.com" + }, + "s3dash": { + "endpoint": "{service}-{region}.amazonaws.com", + "signatureVersion": "s3" + } + } +} + +},{}],219:[function(require,module,exports){ +var util = require('./util'); +var regionConfig = require('./region_config.json'); + +function generateRegionPrefix(region) { + if (!region) return null; + + var parts = region.split('-'); + if (parts.length < 3) return null; + return parts.slice(0, parts.length - 2).join('-') + '-*'; +} + +function derivedKeys(service) { + var region = service.config.region; + var regionPrefix = generateRegionPrefix(region); + var endpointPrefix = service.api.endpointPrefix; + + return [ + [region, endpointPrefix], + [regionPrefix, endpointPrefix], + [region, '*'], + [regionPrefix, '*'], + ['*', endpointPrefix], + ['*', '*'] + ].map(function(item) { + return item[0] && item[1] ? item.join('/') : null; + }); +} + +function applyConfig(service, config) { + util.each(config, function(key, value) { + if (key === 'globalEndpoint') return; + if (service.config[key] === undefined || service.config[key] === null) { + service.config[key] = value; + } + }); +} + +function configureEndpoint(service) { + var keys = derivedKeys(service); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!key) continue; + + if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) { + var config = regionConfig.rules[key]; + if (typeof config === 'string') { + config = regionConfig.patterns[config]; + } + + if (service.config.useDualstack && util.isDualstackAvailable(service)) { + config = util.copy(config); + config.endpoint = '{service}.dualstack.{region}.amazonaws.com'; + } + + service.isGlobalEndpoint = !!config.globalEndpoint; + + if (!config.signatureVersion) config.signatureVersion = 'v4'; + + applyConfig(service, config); + return; + } + } +} + +module.exports = configureEndpoint; + +},{"./region_config.json":218,"./util":245}],220:[function(require,module,exports){ +(function (process){ +var AWS = require('./core'); +var AcceptorStateMachine = require('./state_machine'); +var inherit = AWS.util.inherit; +var domain = AWS.util.domain; +var jmespath = require('jmespath'); + + +var hardErrorStates = {success: 1, error: 1, complete: 1}; + +function isTerminalState(machine) { + return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState); +} + +var fsm = new AcceptorStateMachine(); +fsm.setupStates = function() { + var transition = function(_, done) { + var self = this; + self._haltHandlersOnError = false; + + self.emit(self._asm.currentState, function(err) { + if (err) { + if (isTerminalState(self)) { + if (domain && self.domain instanceof domain.Domain) { + err.domainEmitter = self; + err.domain = self.domain; + err.domainThrown = false; + self.domain.emit('error', err); + } else { + throw err; + } + } else { + self.response.error = err; + done(err); + } + } else { + done(self.response.error); + } + }); + + }; + + this.addState('validate', 'build', 'error', transition); + this.addState('build', 'afterBuild', 'restart', transition); + this.addState('afterBuild', 'sign', 'restart', transition); + this.addState('sign', 'send', 'retry', transition); + this.addState('retry', 'afterRetry', 'afterRetry', transition); + this.addState('afterRetry', 'sign', 'error', transition); + this.addState('send', 'validateResponse', 'retry', transition); + this.addState('validateResponse', 'extractData', 'extractError', transition); + this.addState('extractError', 'extractData', 'retry', transition); + this.addState('extractData', 'success', 'retry', transition); + this.addState('restart', 'build', 'error', transition); + this.addState('success', 'complete', 'complete', transition); + this.addState('error', 'complete', 'complete', transition); + this.addState('complete', null, null, transition); +}; +fsm.setupStates(); + + +AWS.Request = inherit({ + + + constructor: function Request(service, operation, params) { + var endpoint = service.endpoint; + var region = service.config.region; + var customUserAgent = service.config.customUserAgent; + + if (service.isGlobalEndpoint) region = 'us-east-1'; + + this.domain = domain && domain.active; + this.service = service; + this.operation = operation; + this.params = params || {}; + this.httpRequest = new AWS.HttpRequest(endpoint, region, customUserAgent); + this.startTime = AWS.util.date.getDate(); + + this.response = new AWS.Response(this); + this._asm = new AcceptorStateMachine(fsm.states, 'validate'); + this._haltHandlersOnError = false; + + AWS.SequentialExecutor.call(this); + this.emit = this.emitEvent; + }, + + + + + send: function send(callback) { + if (callback) { + this.on('complete', function (resp) { + callback.call(resp, resp.error, resp.data); + }); + } + this.runTo(); + + return this.response; + }, + + + + + build: function build(callback) { + return this.runTo('send', callback); + }, + + + runTo: function runTo(state, done) { + this._asm.runTo(state, done, this); + return this; + }, + + + abort: function abort() { + this.removeAllListeners('validateResponse'); + this.removeAllListeners('extractError'); + this.on('validateResponse', function addAbortedError(resp) { + resp.error = AWS.util.error(new Error('Request aborted by user'), { + code: 'RequestAbortedError', retryable: false + }); + }); + + if (this.httpRequest.stream) { // abort HTTP stream + this.httpRequest.stream.abort(); + if (this.httpRequest._abortCallback) { + this.httpRequest._abortCallback(); + } else { + this.removeAllListeners('send'); // haven't sent yet, so let's not + } + } + + return this; + }, + + + eachPage: function eachPage(callback) { + callback = AWS.util.fn.makeAsync(callback, 3); + + function wrappedCallback(response) { + callback.call(response, response.error, response.data, function (result) { + if (result === false) return; + + if (response.hasNextPage()) { + response.nextPage().on('complete', wrappedCallback).send(); + } else { + callback.call(response, null, null, AWS.util.fn.noop); + } + }); + } + + this.on('complete', wrappedCallback).send(); + }, + + + eachItem: function eachItem(callback) { + var self = this; + function wrappedCallback(err, data) { + if (err) return callback(err, null); + if (data === null) return callback(null, null); + + var config = self.service.paginationConfig(self.operation); + var resultKey = config.resultKey; + if (Array.isArray(resultKey)) resultKey = resultKey[0]; + var items = jmespath.search(data, resultKey); + var continueIteration = true; + AWS.util.arrayEach(items, function(item) { + continueIteration = callback(null, item); + if (continueIteration === false) { + return AWS.util.abort; + } + }); + return continueIteration; + } + + this.eachPage(wrappedCallback); + }, + + + isPageable: function isPageable() { + return this.service.paginationConfig(this.operation) ? true : false; + }, + + + createReadStream: function createReadStream() { + var streams = AWS.util.stream; + var req = this; + var stream = null; + + if (AWS.HttpClient.streamsApiVersion === 2) { + stream = new streams.PassThrough(); + req.send(); + } else { + stream = new streams.Stream(); + stream.readable = true; + + stream.sent = false; + stream.on('newListener', function(event) { + if (!stream.sent && event === 'data') { + stream.sent = true; + process.nextTick(function() { req.send(); }); + } + }); + } + + this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) { + if (statusCode < 300) { + req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA); + req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR); + req.on('httpError', function streamHttpError(error) { + resp.error = error; + resp.error.retryable = false; + }); + + var shouldCheckContentLength = false; + var expectedLen; + if (req.httpRequest.method !== 'HEAD') { + expectedLen = parseInt(headers['content-length'], 10); + } + if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) { + shouldCheckContentLength = true; + var receivedLen = 0; + } + + var checkContentLengthAndEmit = function checkContentLengthAndEmit() { + if (shouldCheckContentLength && receivedLen !== expectedLen) { + stream.emit('error', AWS.util.error( + new Error('Stream content length mismatch. Received ' + + receivedLen + ' of ' + expectedLen + ' bytes.'), + { code: 'StreamContentLengthMismatch' } + )); + } else if (AWS.HttpClient.streamsApiVersion === 2) { + stream.end(); + } else { + stream.emit('end') + } + } + + var httpStream = resp.httpResponse.createUnbufferedStream(); + + if (AWS.HttpClient.streamsApiVersion === 2) { + if (shouldCheckContentLength) { + var lengthAccumulator = new streams.PassThrough(); + lengthAccumulator._write = function(chunk) { + if (chunk && chunk.length) { + receivedLen += chunk.length; + } + return streams.PassThrough.prototype._write.apply(this, arguments); + }; + + lengthAccumulator.on('end', checkContentLengthAndEmit); + httpStream.pipe(lengthAccumulator).pipe(stream, { end: false }); + } else { + httpStream.pipe(stream); + } + } else { + + if (shouldCheckContentLength) { + httpStream.on('data', function(arg) { + if (arg && arg.length) { + receivedLen += arg.length; + } + }); + } + + httpStream.on('data', function(arg) { + stream.emit('data', arg); + }); + httpStream.on('end', checkContentLengthAndEmit); + } + + httpStream.on('error', function(err) { + shouldCheckContentLength = false; + stream.emit('error', err); + }); + } + }); + + this.on('error', function(err) { + stream.emit('error', err); + }); + + return stream; + }, + + + emitEvent: function emit(eventName, args, done) { + if (typeof args === 'function') { done = args; args = null; } + if (!done) done = function() { }; + if (!args) args = this.eventParameters(eventName, this.response); + + var origEmit = AWS.SequentialExecutor.prototype.emit; + origEmit.call(this, eventName, args, function (err) { + if (err) this.response.error = err; + done.call(this, err); + }); + }, + + + eventParameters: function eventParameters(eventName) { + switch (eventName) { + case 'restart': + case 'validate': + case 'sign': + case 'build': + case 'afterValidate': + case 'afterBuild': + return [this]; + case 'error': + return [this.response.error, this.response]; + default: + return [this.response]; + } + }, + + + presign: function presign(expires, callback) { + if (!callback && typeof expires === 'function') { + callback = expires; + expires = null; + } + return new AWS.Signers.Presign().sign(this.toGet(), expires, callback); + }, + + + isPresigned: function isPresigned() { + return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires'); + }, + + + toUnauthenticated: function toUnauthenticated() { + this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS); + this.removeListener('sign', AWS.EventListeners.Core.SIGN); + return this; + }, + + + toGet: function toGet() { + if (this.service.api.protocol === 'query' || + this.service.api.protocol === 'ec2') { + this.removeListener('build', this.buildAsGet); + this.addListener('build', this.buildAsGet); + } + return this; + }, + + + buildAsGet: function buildAsGet(request) { + request.httpRequest.method = 'GET'; + request.httpRequest.path = request.service.endpoint.path + + '?' + request.httpRequest.body; + request.httpRequest.body = ''; + + delete request.httpRequest.headers['Content-Length']; + delete request.httpRequest.headers['Content-Type']; + }, + + + haltHandlersOnError: function haltHandlersOnError() { + this._haltHandlersOnError = true; + } +}); + +AWS.util.addPromisesToRequests(AWS.Request); + +AWS.util.mixin(AWS.Request, AWS.SequentialExecutor); + +}).call(this,require('_process')) +},{"./core":188,"./state_machine":244,"_process":250,"jmespath":268}],221:[function(require,module,exports){ + + +var AWS = require('./core'); +var inherit = AWS.util.inherit; +var jmespath = require('jmespath'); + + +function CHECK_ACCEPTORS(resp) { + var waiter = resp.request._waiter; + var acceptors = waiter.config.acceptors; + var acceptorMatched = false; + var state = 'retry'; + + acceptors.forEach(function(acceptor) { + if (!acceptorMatched) { + var matcher = waiter.matchers[acceptor.matcher]; + if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) { + acceptorMatched = true; + state = acceptor.state; + } + } + }); + + if (!acceptorMatched && resp.error) state = 'failure'; + + if (state === 'success') { + waiter.setSuccess(resp); + } else { + waiter.setError(resp, state === 'retry'); + } +} + + +AWS.ResourceWaiter = inherit({ + + constructor: function constructor(service, state) { + this.service = service; + this.state = state; + this.loadWaiterConfig(this.state); + }, + + service: null, + + state: null, + + config: null, + + matchers: { + path: function(resp, expected, argument) { + var result = jmespath.search(resp.data, argument); + return jmespath.strictDeepEqual(result,expected); + }, + + pathAll: function(resp, expected, argument) { + var results = jmespath.search(resp.data, argument); + if (!Array.isArray(results)) results = [results]; + var numResults = results.length; + if (!numResults) return false; + for (var ind = 0 ; ind < numResults; ind++) { + if (!jmespath.strictDeepEqual(results[ind], expected)) { + return false; + } + } + return true; + }, + + pathAny: function(resp, expected, argument) { + var results = jmespath.search(resp.data, argument); + if (!Array.isArray(results)) results = [results]; + var numResults = results.length; + for (var ind = 0 ; ind < numResults; ind++) { + if (jmespath.strictDeepEqual(results[ind], expected)) { + return true; + } + } + return false; + }, + + status: function(resp, expected) { + var statusCode = resp.httpResponse.statusCode; + return (typeof statusCode === 'number') && (statusCode === expected); + }, + + error: function(resp, expected) { + if (typeof expected === 'string' && resp.error) { + return expected === resp.error.code; + } + return expected === !!resp.error; + } + }, + + listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) { + add('RETRY_CHECK', 'retry', function(resp) { + var waiter = resp.request._waiter; + if (resp.error && resp.error.code === 'ResourceNotReady') { + resp.error.retryDelay = (waiter.config.delay || 0) * 1000; + } + }); + + add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS); + + add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS); + }), + + + wait: function wait(params, callback) { + if (typeof params === 'function') { + callback = params; params = undefined; + } + + var request = this.service.makeRequest(this.config.operation, params); + request._waiter = this; + request.response.maxRetries = this.config.maxAttempts; + request.addListeners(this.listeners); + + if (callback) request.send(callback); + return request; + }, + + setSuccess: function setSuccess(resp) { + resp.error = null; + resp.data = resp.data || {}; + resp.request.removeAllListeners('extractData'); + }, + + setError: function setError(resp, retryable) { + resp.data = null; + resp.error = AWS.util.error(resp.error || new Error(), { + code: 'ResourceNotReady', + message: 'Resource is not in the state ' + this.state, + retryable: retryable + }); + }, + + + loadWaiterConfig: function loadWaiterConfig(state) { + if (!this.service.api.waiters[state]) { + throw new AWS.util.error(new Error(), { + code: 'StateNotFoundError', + message: 'State ' + state + ' not found.' + }); + } + + this.config = this.service.api.waiters[state]; + } +}); + +},{"./core":188,"jmespath":268}],222:[function(require,module,exports){ +var AWS = require('./core'); +var inherit = AWS.util.inherit; +var jmespath = require('jmespath'); + + +AWS.Response = inherit({ + + + constructor: function Response(request) { + this.request = request; + this.data = null; + this.error = null; + this.retryCount = 0; + this.redirectCount = 0; + this.httpResponse = new AWS.HttpResponse(); + if (request) { + this.maxRetries = request.service.numRetries(); + this.maxRedirects = request.service.config.maxRedirects; + } + }, + + + nextPage: function nextPage(callback) { + var config; + var service = this.request.service; + var operation = this.request.operation; + try { + config = service.paginationConfig(operation, true); + } catch (e) { this.error = e; } + + if (!this.hasNextPage()) { + if (callback) callback(this.error, null); + else if (this.error) throw this.error; + return null; + } + + var params = AWS.util.copy(this.request.params); + if (!this.nextPageTokens) { + return callback ? callback(null, null) : null; + } else { + var inputTokens = config.inputToken; + if (typeof inputTokens === 'string') inputTokens = [inputTokens]; + for (var i = 0; i < inputTokens.length; i++) { + params[inputTokens[i]] = this.nextPageTokens[i]; + } + return service.makeRequest(this.request.operation, params, callback); + } + }, + + + hasNextPage: function hasNextPage() { + this.cacheNextPageTokens(); + if (this.nextPageTokens) return true; + if (this.nextPageTokens === undefined) return undefined; + else return false; + }, + + + cacheNextPageTokens: function cacheNextPageTokens() { + if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens; + this.nextPageTokens = undefined; + + var config = this.request.service.paginationConfig(this.request.operation); + if (!config) return this.nextPageTokens; + + this.nextPageTokens = null; + if (config.moreResults) { + if (!jmespath.search(this.data, config.moreResults)) { + return this.nextPageTokens; + } + } + + var exprs = config.outputToken; + if (typeof exprs === 'string') exprs = [exprs]; + AWS.util.arrayEach.call(this, exprs, function (expr) { + var output = jmespath.search(this.data, expr); + if (output) { + this.nextPageTokens = this.nextPageTokens || []; + this.nextPageTokens.push(output); + } + }); + + return this.nextPageTokens; + } + +}); + +},{"./core":188,"jmespath":268}],223:[function(require,module,exports){ +var AWS = require('../core'); +var byteLength = AWS.util.string.byteLength; +var Buffer = AWS.util.Buffer; + + +AWS.S3.ManagedUpload = AWS.util.inherit({ + + constructor: function ManagedUpload(options) { + var self = this; + AWS.SequentialExecutor.call(self); + self.body = null; + self.sliceFn = null; + self.callback = null; + self.parts = {}; + self.completeInfo = []; + self.fillQueue = function() { + self.callback(new Error('Unsupported body payload ' + typeof self.body)); + }; + + self.configure(options); + }, + + + configure: function configure(options) { + options = options || {}; + this.partSize = this.minPartSize; + + if (options.queueSize) this.queueSize = options.queueSize; + if (options.partSize) this.partSize = options.partSize; + if (options.leavePartsOnError) this.leavePartsOnError = true; + + if (this.partSize < this.minPartSize) { + throw new Error('partSize must be greater than ' + + this.minPartSize); + } + + this.service = options.service; + this.bindServiceObject(options.params); + this.validateBody(); + this.adjustTotalBytes(); + }, + + + leavePartsOnError: false, + + + queueSize: 4, + + + partSize: null, + + + minPartSize: 1024 * 1024 * 5, + + + maxTotalParts: 10000, + + + send: function(callback) { + var self = this; + self.failed = false; + self.callback = callback || function(err) { if (err) throw err; }; + + var runFill = true; + if (self.sliceFn) { + self.fillQueue = self.fillBuffer; + } else if (AWS.util.isNode()) { + var Stream = AWS.util.stream.Stream; + if (self.body instanceof Stream) { + runFill = false; + self.fillQueue = self.fillStream; + self.partBuffers = []; + self.body. + on('readable', function() { self.fillQueue(); }). + on('end', function() { + self.isDoneChunking = true; + self.numParts = self.totalPartNumbers; + self.fillQueue.call(self); + }); + } + } + + if (runFill) self.fillQueue.call(self); + }, + + + abort: function() { + this.cleanup(AWS.util.error(new Error('Request aborted by user'), { + code: 'RequestAbortedError', retryable: false + })); + }, + + + validateBody: function validateBody() { + var self = this; + self.body = self.service.config.params.Body; + if (!self.body) throw new Error('params.Body is required'); + if (typeof self.body === 'string') { + self.body = new AWS.util.Buffer(self.body); + } + self.sliceFn = AWS.util.arraySliceFn(self.body); + }, + + + bindServiceObject: function bindServiceObject(params) { + params = params || {}; + var self = this; + + if (!self.service) { + self.service = new AWS.S3({params: params}); + } else { + var config = AWS.util.copy(self.service.config); + self.service = new self.service.constructor.__super__(config); + self.service.config.params = + AWS.util.merge(self.service.config.params || {}, params); + } + }, + + + adjustTotalBytes: function adjustTotalBytes() { + var self = this; + try { // try to get totalBytes + self.totalBytes = byteLength(self.body); + } catch (e) { } + + if (self.totalBytes) { + var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts); + if (newPartSize > self.partSize) self.partSize = newPartSize; + } else { + self.totalBytes = undefined; + } + }, + + + isDoneChunking: false, + + + partPos: 0, + + + totalChunkedBytes: 0, + + + totalUploadedBytes: 0, + + + totalBytes: undefined, + + + numParts: 0, + + + totalPartNumbers: 0, + + + activeParts: 0, + + + doneParts: 0, + + + parts: null, + + + completeInfo: null, + + + failed: false, + + + multipartReq: null, + + + partBuffers: null, + + + partBufferLength: 0, + + + fillBuffer: function fillBuffer() { + var self = this; + var bodyLen = byteLength(self.body); + + if (bodyLen === 0) { + self.isDoneChunking = true; + self.numParts = 1; + self.nextChunk(self.body); + return; + } + + while (self.activeParts < self.queueSize && self.partPos < bodyLen) { + var endPos = Math.min(self.partPos + self.partSize, bodyLen); + var buf = self.sliceFn.call(self.body, self.partPos, endPos); + self.partPos += self.partSize; + + if (byteLength(buf) < self.partSize || self.partPos === bodyLen) { + self.isDoneChunking = true; + self.numParts = self.totalPartNumbers + 1; + } + self.nextChunk(buf); + } + }, + + + fillStream: function fillStream() { + var self = this; + if (self.activeParts >= self.queueSize) return; + + var buf = self.body.read(self.partSize - self.partBufferLength) || + self.body.read(); + if (buf) { + self.partBuffers.push(buf); + self.partBufferLength += buf.length; + self.totalChunkedBytes += buf.length; + } + + if (self.partBufferLength >= self.partSize) { + var pbuf = self.partBuffers.length === 1 ? + self.partBuffers[0] : Buffer.concat(self.partBuffers); + self.partBuffers = []; + self.partBufferLength = 0; + + if (pbuf.length > self.partSize) { + var rest = pbuf.slice(self.partSize); + self.partBuffers.push(rest); + self.partBufferLength += rest.length; + pbuf = pbuf.slice(0, self.partSize); + } + + self.nextChunk(pbuf); + } + + if (self.isDoneChunking && !self.isDoneSending) { + pbuf = self.partBuffers.length === 1 ? + self.partBuffers[0] : Buffer.concat(self.partBuffers); + self.partBuffers = []; + self.partBufferLength = 0; + self.totalBytes = self.totalChunkedBytes; + self.isDoneSending = true; + + if (self.numParts === 0 || pbuf.length > 0) { + self.numParts++; + self.nextChunk(pbuf); + } + } + + self.body.read(0); + }, + + + nextChunk: function nextChunk(chunk) { + var self = this; + if (self.failed) return null; + + var partNumber = ++self.totalPartNumbers; + if (self.isDoneChunking && partNumber === 1) { + var req = self.service.putObject({Body: chunk}); + req._managedUpload = self; + req.on('httpUploadProgress', self.progress).send(self.finishSinglePart); + return null; + } else if (self.service.config.params.ContentMD5) { + var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), { + code: 'InvalidDigest', retryable: false + }); + + self.cleanup(err); + return null; + } + + if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) { + return null; // Already uploaded this part. + } + + self.activeParts++; + if (!self.service.config.params.UploadId) { + + if (!self.multipartReq) { // create multipart + self.multipartReq = self.service.createMultipartUpload(); + self.multipartReq.on('success', function(resp) { + self.service.config.params.UploadId = resp.data.UploadId; + self.multipartReq = null; + }); + self.queueChunks(chunk, partNumber); + self.multipartReq.on('error', function(err) { + self.cleanup(err); + }); + self.multipartReq.send(); + } else { + self.queueChunks(chunk, partNumber); + } + } else { // multipart is created, just send + self.uploadPart(chunk, partNumber); + } + }, + + + uploadPart: function uploadPart(chunk, partNumber) { + var self = this; + + var partParams = { + Body: chunk, + ContentLength: AWS.util.string.byteLength(chunk), + PartNumber: partNumber + }; + + var partInfo = {ETag: null, PartNumber: partNumber}; + self.completeInfo[partNumber] = partInfo; + + var req = self.service.uploadPart(partParams); + self.parts[partNumber] = req; + req._lastUploadedBytes = 0; + req._managedUpload = self; + req.on('httpUploadProgress', self.progress); + req.send(function(err, data) { + delete self.parts[partParams.PartNumber]; + self.activeParts--; + + if (!err && (!data || !data.ETag)) { + var message = 'No access to ETag property on response.'; + if (AWS.util.isBrowser()) { + message += ' Check CORS configuration to expose ETag header.'; + } + + err = AWS.util.error(new Error(message), { + code: 'ETagMissing', retryable: false + }); + } + if (err) return self.cleanup(err); + + partInfo.ETag = data.ETag; + self.doneParts++; + if (self.isDoneChunking && self.doneParts === self.numParts) { + self.finishMultiPart(); + } else { + self.fillQueue.call(self); + } + }); + }, + + + queueChunks: function queueChunks(chunk, partNumber) { + var self = this; + self.multipartReq.on('success', function() { + self.uploadPart(chunk, partNumber); + }); + }, + + + cleanup: function cleanup(err) { + var self = this; + if (self.failed) return; + + if (typeof self.body.removeAllListeners === 'function' && + typeof self.body.resume === 'function') { + self.body.removeAllListeners('readable'); + self.body.removeAllListeners('end'); + self.body.resume(); + } + + if (self.service.config.params.UploadId && !self.leavePartsOnError) { + self.service.abortMultipartUpload().send(); + } + + AWS.util.each(self.parts, function(partNumber, part) { + part.removeAllListeners('complete'); + part.abort(); + }); + + self.activeParts = 0; + self.partPos = 0; + self.numParts = 0; + self.totalPartNumbers = 0; + self.parts = {}; + self.failed = true; + self.callback(err); + }, + + + finishMultiPart: function finishMultiPart() { + var self = this; + var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } }; + self.service.completeMultipartUpload(completeParams, function(err, data) { + if (err) return self.cleanup(err); + else self.callback(err, data); + }); + }, + + + finishSinglePart: function finishSinglePart(err, data) { + var upload = this.request._managedUpload; + var httpReq = this.request.httpRequest; + var endpoint = httpReq.endpoint; + if (err) return upload.callback(err); + data.Location = + [endpoint.protocol, '//', endpoint.host, httpReq.path].join(''); + data.key = this.request.params.Key; // will stay undocumented + data.Key = this.request.params.Key; + data.Bucket = this.request.params.Bucket; + upload.callback(err, data); + }, + + + progress: function progress(info) { + var upload = this._managedUpload; + if (this.operation === 'putObject') { + info.part = 1; + info.key = this.params.Key; + } else { + upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes; + this._lastUploadedBytes = info.loaded; + info = { + loaded: upload.totalUploadedBytes, + total: upload.totalBytes, + part: this.params.PartNumber, + key: this.params.Key + }; + } + upload.emit('httpUploadProgress', [info]); + } +}); + +AWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor); +module.exports = AWS.S3.ManagedUpload; + +},{"../core":188}],224:[function(require,module,exports){ +var AWS = require('./core'); + + +AWS.SequentialExecutor = AWS.util.inherit({ + + constructor: function SequentialExecutor() { + this._events = {}; + }, + + + listeners: function listeners(eventName) { + return this._events[eventName] ? this._events[eventName].slice(0) : []; + }, + + on: function on(eventName, listener) { + if (this._events[eventName]) { + this._events[eventName].push(listener); + } else { + this._events[eventName] = [listener]; + } + return this; + }, + + + onAsync: function onAsync(eventName, listener) { + listener._isAsync = true; + return this.on(eventName, listener); + }, + + removeListener: function removeListener(eventName, listener) { + var listeners = this._events[eventName]; + if (listeners) { + var length = listeners.length; + var position = -1; + for (var i = 0; i < length; ++i) { + if (listeners[i] === listener) { + position = i; + } + } + if (position > -1) { + listeners.splice(position, 1); + } + } + return this; + }, + + removeAllListeners: function removeAllListeners(eventName) { + if (eventName) { + delete this._events[eventName]; + } else { + this._events = {}; + } + return this; + }, + + + emit: function emit(eventName, eventArgs, doneCallback) { + if (!doneCallback) doneCallback = function() { }; + var listeners = this.listeners(eventName); + var count = listeners.length; + this.callListeners(listeners, eventArgs, doneCallback); + return count > 0; + }, + + + callListeners: function callListeners(listeners, args, doneCallback, prevError) { + var self = this; + var error = prevError || null; + + function callNextListener(err) { + if (err) { + error = AWS.util.error(error || new Error(), err); + if (self._haltHandlersOnError) { + return doneCallback.call(self, error); + } + } + self.callListeners(listeners, args, doneCallback, error); + } + + while (listeners.length > 0) { + var listener = listeners.shift(); + if (listener._isAsync) { // asynchronous listener + listener.apply(self, args.concat([callNextListener])); + return; // stop here, callNextListener will continue + } else { // synchronous listener + try { + listener.apply(self, args); + } catch (err) { + error = AWS.util.error(error || new Error(), err); + } + if (error && self._haltHandlersOnError) { + doneCallback.call(self, error); + return; + } + } + } + doneCallback.call(self, error); + }, + + + addListeners: function addListeners(listeners) { + var self = this; + + if (listeners._events) listeners = listeners._events; + + AWS.util.each(listeners, function(event, callbacks) { + if (typeof callbacks === 'function') callbacks = [callbacks]; + AWS.util.arrayEach(callbacks, function(callback) { + self.on(event, callback); + }); + }); + + return self; + }, + + + addNamedListener: function addNamedListener(name, eventName, callback) { + this[name] = callback; + this.addListener(eventName, callback); + return this; + }, + + + addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) { + callback._isAsync = true; + return this.addNamedListener(name, eventName, callback); + }, + + + addNamedListeners: function addNamedListeners(callback) { + var self = this; + callback( + function() { + self.addNamedListener.apply(self, arguments); + }, + function() { + self.addNamedAsyncListener.apply(self, arguments); + } + ); + return this; + } +}); + + +AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on; + +module.exports = AWS.SequentialExecutor; + +},{"./core":188}],225:[function(require,module,exports){ +var AWS = require('./core'); +var Api = require('./model/api'); +var regionConfig = require('./region_config'); +var inherit = AWS.util.inherit; +var clientCount = 0; + + +AWS.Service = inherit({ + + constructor: function Service(config) { + if (!this.loadServiceClass) { + throw AWS.util.error(new Error(), + 'Service must be constructed with `new\' operator'); + } + var ServiceClass = this.loadServiceClass(config || {}); + if (ServiceClass) { + var originalConfig = AWS.util.copy(config); + var svc = new ServiceClass(config); + Object.defineProperty(svc, '_originalConfig', { + get: function() { return originalConfig; }, + enumerable: false, + configurable: true + }); + svc._clientId = ++clientCount; + return svc; + } + this.initialize(config); + }, + + + initialize: function initialize(config) { + var svcConfig = AWS.config[this.serviceIdentifier]; + + this.config = new AWS.Config(AWS.config); + if (svcConfig) this.config.update(svcConfig, true); + if (config) this.config.update(config, true); + + this.validateService(); + if (!this.config.endpoint) regionConfig(this); + + this.config.endpoint = this.endpointFromTemplate(this.config.endpoint); + this.setEndpoint(this.config.endpoint); + }, + + + validateService: function validateService() { + }, + + + loadServiceClass: function loadServiceClass(serviceConfig) { + var config = serviceConfig; + if (!AWS.util.isEmpty(this.api)) { + return null; + } else if (config.apiConfig) { + return AWS.Service.defineServiceApi(this.constructor, config.apiConfig); + } else if (!this.constructor.services) { + return null; + } else { + config = new AWS.Config(AWS.config); + config.update(serviceConfig, true); + var version = config.apiVersions[this.constructor.serviceIdentifier]; + version = version || config.apiVersion; + return this.getLatestServiceClass(version); + } + }, + + + getLatestServiceClass: function getLatestServiceClass(version) { + version = this.getLatestServiceVersion(version); + if (this.constructor.services[version] === null) { + AWS.Service.defineServiceApi(this.constructor, version); + } + + return this.constructor.services[version]; + }, + + + getLatestServiceVersion: function getLatestServiceVersion(version) { + if (!this.constructor.services || this.constructor.services.length === 0) { + throw new Error('No services defined on ' + + this.constructor.serviceIdentifier); + } + + if (!version) { + version = 'latest'; + } else if (AWS.util.isType(version, Date)) { + version = AWS.util.date.iso8601(version).split('T')[0]; + } + + if (Object.hasOwnProperty(this.constructor.services, version)) { + return version; + } + + var keys = Object.keys(this.constructor.services).sort(); + var selectedVersion = null; + for (var i = keys.length - 1; i >= 0; i--) { + if (keys[i][keys[i].length - 1] !== '*') { + selectedVersion = keys[i]; + } + if (keys[i].substr(0, 10) <= version) { + return selectedVersion; + } + } + + throw new Error('Could not find ' + this.constructor.serviceIdentifier + + ' API to satisfy version constraint `' + version + '\''); + }, + + + api: {}, + + + defaultRetryCount: 3, + + + makeRequest: function makeRequest(operation, params, callback) { + if (typeof params === 'function') { + callback = params; + params = null; + } + + params = params || {}; + if (this.config.params) { // copy only toplevel bound params + var rules = this.api.operations[operation]; + if (rules) { + params = AWS.util.copy(params); + AWS.util.each(this.config.params, function(key, value) { + if (rules.input.members[key]) { + if (params[key] === undefined || params[key] === null) { + params[key] = value; + } + } + }); + } + } + + var request = new AWS.Request(this, operation, params); + this.addAllRequestListeners(request); + + if (callback) request.send(callback); + return request; + }, + + + makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) { + if (typeof params === 'function') { + callback = params; + params = {}; + } + + var request = this.makeRequest(operation, params).toUnauthenticated(); + return callback ? request.send(callback) : request; + }, + + + waitFor: function waitFor(state, params, callback) { + var waiter = new AWS.ResourceWaiter(this, state); + return waiter.wait(params, callback); + }, + + + addAllRequestListeners: function addAllRequestListeners(request) { + var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(), + AWS.EventListeners.CorePost]; + for (var i = 0; i < list.length; i++) { + if (list[i]) request.addListeners(list[i]); + } + + if (!this.config.paramValidation) { + request.removeListener('validate', + AWS.EventListeners.Core.VALIDATE_PARAMETERS); + } + + if (this.config.logger) { // add logging events + request.addListeners(AWS.EventListeners.Logger); + } + + this.setupRequestListeners(request); + }, + + + setupRequestListeners: function setupRequestListeners() { + }, + + + getSignerClass: function getSignerClass() { + var version; + if (this.config.signatureVersion) { + version = this.config.signatureVersion; + } else { + version = this.api.signatureVersion; + } + return AWS.Signers.RequestSigner.getVersion(version); + }, + + + serviceInterface: function serviceInterface() { + switch (this.api.protocol) { + case 'ec2': return AWS.EventListeners.Query; + case 'query': return AWS.EventListeners.Query; + case 'json': return AWS.EventListeners.Json; + case 'rest-json': return AWS.EventListeners.RestJson; + case 'rest-xml': return AWS.EventListeners.RestXml; + } + if (this.api.protocol) { + throw new Error('Invalid service `protocol\' ' + + this.api.protocol + ' in API config'); + } + }, + + + successfulResponse: function successfulResponse(resp) { + return resp.httpResponse.statusCode < 300; + }, + + + numRetries: function numRetries() { + if (this.config.maxRetries !== undefined) { + return this.config.maxRetries; + } else { + return this.defaultRetryCount; + } + }, + + + retryDelays: function retryDelays(retryCount) { + return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions); + }, + + + retryableError: function retryableError(error) { + if (this.networkingError(error)) return true; + if (this.expiredCredentialsError(error)) return true; + if (this.throttledError(error)) return true; + if (error.statusCode >= 500) return true; + return false; + }, + + + networkingError: function networkingError(error) { + return error.code === 'NetworkingError'; + }, + + + expiredCredentialsError: function expiredCredentialsError(error) { + return (error.code === 'ExpiredTokenException'); + }, + + + clockSkewError: function clockSkewError(error) { + switch (error.code) { + case 'RequestTimeTooSkewed': + case 'RequestExpired': + case 'InvalidSignatureException': + case 'SignatureDoesNotMatch': + case 'AuthFailure': + case 'RequestInTheFuture': + return true; + default: return false; + } + }, + + + throttledError: function throttledError(error) { + switch (error.code) { + case 'ProvisionedThroughputExceededException': + case 'Throttling': + case 'ThrottlingException': + case 'RequestLimitExceeded': + case 'RequestThrottled': + return true; + default: + return false; + } + }, + + + endpointFromTemplate: function endpointFromTemplate(endpoint) { + if (typeof endpoint !== 'string') return endpoint; + + var e = endpoint; + e = e.replace(/\{service\}/g, this.api.endpointPrefix); + e = e.replace(/\{region\}/g, this.config.region); + e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http'); + return e; + }, + + + setEndpoint: function setEndpoint(endpoint) { + this.endpoint = new AWS.Endpoint(endpoint, this.config); + }, + + + paginationConfig: function paginationConfig(operation, throwException) { + var paginator = this.api.operations[operation].paginator; + if (!paginator) { + if (throwException) { + var e = new Error(); + throw AWS.util.error(e, 'No pagination configuration for ' + operation); + } + return null; + } + + return paginator; + } +}); + +AWS.util.update(AWS.Service, { + + + defineMethods: function defineMethods(svc) { + AWS.util.each(svc.prototype.api.operations, function iterator(method) { + if (svc.prototype[method]) return; + var operation = svc.prototype.api.operations[method]; + if (operation.authtype === 'none') { + svc.prototype[method] = function (params, callback) { + return this.makeUnauthenticatedRequest(method, params, callback); + }; + } else { + svc.prototype[method] = function (params, callback) { + return this.makeRequest(method, params, callback); + }; + } + }); + }, + + + defineService: function defineService(serviceIdentifier, versions, features) { + AWS.Service._serviceMap[serviceIdentifier] = true; + if (!Array.isArray(versions)) { + features = versions; + versions = []; + } + + var svc = inherit(AWS.Service, features || {}); + + if (typeof serviceIdentifier === 'string') { + AWS.Service.addVersions(svc, versions); + + var identifier = svc.serviceIdentifier || serviceIdentifier; + svc.serviceIdentifier = identifier; + } else { // defineService called with an API + svc.prototype.api = serviceIdentifier; + AWS.Service.defineMethods(svc); + } + + return svc; + }, + + + addVersions: function addVersions(svc, versions) { + if (!Array.isArray(versions)) versions = [versions]; + + svc.services = svc.services || {}; + for (var i = 0; i < versions.length; i++) { + if (svc.services[versions[i]] === undefined) { + svc.services[versions[i]] = null; + } + } + + svc.apiVersions = Object.keys(svc.services).sort(); + }, + + + defineServiceApi: function defineServiceApi(superclass, version, apiConfig) { + var svc = inherit(superclass, { + serviceIdentifier: superclass.serviceIdentifier + }); + + function setApi(api) { + if (api.isApi) { + svc.prototype.api = api; + } else { + svc.prototype.api = new Api(api); + } + } + + if (typeof version === 'string') { + if (apiConfig) { + setApi(apiConfig); + } else { + try { + setApi(AWS.apiLoader(superclass.serviceIdentifier, version)); + } catch (err) { + throw AWS.util.error(err, { + message: 'Could not find API configuration ' + + superclass.serviceIdentifier + '-' + version + }); + } + } + if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) { + superclass.apiVersions = superclass.apiVersions.concat(version).sort(); + } + superclass.services[version] = svc; + } else { + setApi(version); + } + + AWS.Service.defineMethods(svc); + return svc; + }, + + + hasService: function(identifier) { + return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier); + }, + + + _serviceMap: {} +}); + +module.exports = AWS.Service; +},{"./core":188,"./model/api":205,"./region_config":219}],226:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.APIGateway.prototype, { + + setAcceptHeader: function setAcceptHeader(req) { + var httpRequest = req.httpRequest; + httpRequest.headers['Accept'] = 'application/json'; + }, + + + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('build', this.setAcceptHeader); + if (request.operation === 'getSdk') { + request.addListener('extractData', this.useRawPayload); + } + }, + + useRawPayload: function useRawPayload(resp) { + var req = resp.request; + var operation = req.operation; + var rules = req.service.api.operations[operation].output || {}; + if (rules.payload) { + var body = resp.httpResponse.body; + resp.data[rules.payload] = body; + } + } +}); + + +},{"../core":188}],227:[function(require,module,exports){ +var AWS = require('../core'); + +require('../cloudfront/signer'); + +AWS.util.update(AWS.CloudFront.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('extractData', AWS.util.hoistPayloadMember); + } + +}); + +},{"../cloudfront/signer":186,"../core":188}],228:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.CognitoIdentity.prototype, { + getOpenIdToken: function getOpenIdToken(params, callback) { + return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback); + }, + + getId: function getId(params, callback) { + return this.makeUnauthenticatedRequest('getId', params, callback); + }, + + getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) { + return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback); + } +}); + +},{"../core":188}],229:[function(require,module,exports){ +var AWS = require('../core'); +require('../dynamodb/document_client'); + +AWS.util.update(AWS.DynamoDB.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + if (request.service.config.dynamoDbCrc32) { + request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); + request.addListener('extractData', this.checkCrc32); + request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); + } + }, + + + checkCrc32: function checkCrc32(resp) { + if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) { + resp.data = null; + resp.error = AWS.util.error(new Error(), { + code: 'CRC32CheckFailed', + message: 'CRC32 integrity check failed', + retryable: true + }); + resp.request.haltHandlersOnError(); + throw (resp.error); + } + }, + + + crc32IsValid: function crc32IsValid(resp) { + var crc = resp.httpResponse.headers['x-amz-crc32']; + if (!crc) return true; // no (valid) CRC32 header + return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body); + }, + + + defaultRetryCount: 10, + + + retryDelays: function retryDelays(retryCount) { + var delay = retryCount > 0 ? (50 * Math.pow(2, retryCount - 1)) : 0; + return delay; + } +}); + +},{"../core":188,"../dynamodb/document_client":196}],230:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.EC2.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR); + request.addListener('extractError', this.extractError); + + if (request.operation === 'copySnapshot') { + request.onAsync('validate', this.buildCopySnapshotPresignedUrl); + } + }, + + + buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) { + if (req.params.PresignedUrl || req._subRequest) { + return done(); + } + + req.params = AWS.util.copy(req.params); + req.params.DestinationRegion = req.service.config.region; + + var config = AWS.util.copy(req.service.config); + delete config.endpoint; + config.region = req.params.SourceRegion; + var svc = new req.service.constructor(config); + var newReq = svc[req.operation](req.params); + newReq._subRequest = true; + newReq.presign(function(err, url) { + if (err) done(err); + else { + req.params.PresignedUrl = url; + done(); + } + }); + }, + + + extractError: function extractError(resp) { + var httpResponse = resp.httpResponse; + var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || ''); + if (data.Errors) { + resp.error = AWS.util.error(new Error(), { + code: data.Errors.Error.Code, + message: data.Errors.Error.Message + }); + } else { + resp.error = AWS.util.error(new Error(), { + code: httpResponse.statusCode, + message: null + }); + } + resp.error.requestId = data.RequestID || null; + } +}); + +},{"../core":188}],231:[function(require,module,exports){ +var AWS = require('../core'); + + +AWS.util.update(AWS.IotData.prototype, { + + validateService: function validateService() { + if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { + var msg = 'AWS.IotData requires an explicit ' + + '`endpoint\' configuration option.'; + throw AWS.util.error(new Error(), + {name: 'InvalidEndpoint', message: msg}); + } + }, + + + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('validateResponse', this.validateResponseBody) + }, + + + validateResponseBody: function validateResponseBody(resp) { + var body = resp.httpResponse.body.toString() || '{}'; + var bodyCheck = body.trim(); + if (!bodyCheck || bodyCheck.charAt(0) !== '{') { + resp.httpResponse.body = ''; + } + } + +}); + +},{"../core":188}],232:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.MachineLearning.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + if (request.operation === 'predict') { + request.addListener('build', this.buildEndpoint); + } + }, + + + buildEndpoint: function buildEndpoint(request) { + var url = request.params.PredictEndpoint; + if (url) { + request.httpRequest.endpoint = new AWS.Endpoint(url); + } + } + +}); + +},{"../core":188}],233:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.Route53.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + request.on('build', this.sanitizeUrl); + }, + + + sanitizeUrl: function sanitizeUrl(request) { + var path = request.httpRequest.path; + request.httpRequest.path = path.replace(/\/%2F\w+%2F/, '/'); + }, + + + retryableError: function retryableError(error) { + if (error.code === 'PriorRequestNotComplete' && + error.statusCode === 400) { + return true; + } else { + var _super = AWS.Service.prototype.retryableError; + return _super.call(this, error); + } + } +}); + +},{"../core":188}],234:[function(require,module,exports){ +var AWS = require('../core'); + +require('../s3/managed_upload'); + + +var operationsWith200StatusCodeError = { + 'completeMultipartUpload': true, + 'copyObject': true, + 'uploadPartCopy': true +}; + + + var regionRedirectErrorCodes = [ + 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints + 'BadRequest', // head operations on virtual-hosted global bucket endpoints + 'PermanentRedirect', // non-head operations on path-style or regional endpoints + 301 // head operations on path-style or regional endpoints + ]; + +AWS.util.update(AWS.S3.prototype, { + + getSignerClass: function getSignerClass(request) { + var defaultApiVersion = this.api.signatureVersion; + var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null; + var regionDefinedVersion = this.config.signatureVersion; + var isPresigned = request ? request.isPresigned() : false; + + if (userDefinedVersion) { + userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion; + return AWS.Signers.RequestSigner.getVersion(userDefinedVersion); + } + if (regionDefinedVersion) { + defaultApiVersion = regionDefinedVersion; + } + + return AWS.Signers.RequestSigner.getVersion(defaultApiVersion); + }, + + + validateService: function validateService() { + var msg; + var messages = []; + + if (!this.config.region) this.config.region = 'us-east-1'; + + if (!this.config.endpoint && this.config.s3BucketEndpoint) { + messages.push('An endpoint must be provided when configuring ' + + '`s3BucketEndpoint` to true.'); + } + if (this.config.useAccelerateEndpoint && this.config.useDualstack) { + messages.push('`useAccelerateEndpoint` and `useDualstack` ' + + 'cannot both be configured to true.'); + } + if (messages.length === 1) { + msg = messages[0]; + } else if (messages.length > 1) { + msg = 'Multiple configuration errors:\n' + messages.join('\n'); + } + if (msg) { + throw AWS.util.error(new Error(), + {name: 'InvalidEndpoint', message: msg}); + } + }, + + + shouldDisableBodySigning: function shouldDisableBodySigning(request) { + var signerClass = this.getSignerClass(); + if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4 + && request.httpRequest.endpoint.protocol === 'https:') { + return true; + } + return false; + }, + + + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('validate', this.validateScheme); + request.addListener('validate', this.validateBucketEndpoint); + request.addListener('validate', this.correctBucketRegionFromCache); + request.addListener('build', this.addContentType); + request.addListener('build', this.populateURI); + request.addListener('build', this.computeContentMd5); + request.addListener('build', this.computeSseCustomerKeyMd5); + request.addListener('afterBuild', this.addExpect100Continue); + request.removeListener('validate', + AWS.EventListeners.Core.VALIDATE_REGION); + request.addListener('extractError', this.extractError); + request.onAsync('extractError', this.requestBucketRegion); + request.addListener('extractData', this.extractData); + request.addListener('extractData', AWS.util.hoistPayloadMember); + request.addListener('beforePresign', this.prepareSignedUrl); + if (AWS.util.isBrowser()) { + request.onAsync('retry', this.reqRegionForNetworkingError); + } + if (this.shouldDisableBodySigning(request)) { + request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); + request.addListener('afterBuild', this.disableBodySigning); + } + }, + + + validateScheme: function(req) { + var params = req.params, + scheme = req.httpRequest.endpoint.protocol, + sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey; + if (sensitive && scheme !== 'https:') { + var msg = 'Cannot send SSE keys over HTTP. Set \'sslEnabled\'' + + 'to \'true\' in your configuration'; + throw AWS.util.error(new Error(), + { code: 'ConfigError', message: msg }); + } + }, + + + validateBucketEndpoint: function(req) { + if (!req.params.Bucket && req.service.config.s3BucketEndpoint) { + var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.'; + throw AWS.util.error(new Error(), + { code: 'ConfigError', message: msg }); + } + }, + + + isValidAccelerateOperation: function isValidAccelerateOperation(operation) { + var invalidOperations = [ + 'createBucket', + 'deleteBucket', + 'listBuckets' + ]; + return invalidOperations.indexOf(operation) === -1; + }, + + + + populateURI: function populateURI(req) { + var httpRequest = req.httpRequest; + var b = req.params.Bucket; + var service = req.service; + var endpoint = httpRequest.endpoint; + + if (b) { + if (!service.pathStyleBucketName(b)) { + if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) { + endpoint.hostname = b + '.s3-accelerate.amazonaws.com'; + } else if (!service.config.s3BucketEndpoint) { + endpoint.hostname = + b + '.' + endpoint.hostname; + } + + var port = endpoint.port; + if (port !== 80 && port !== 443) { + endpoint.host = endpoint.hostname + ':' + + endpoint.port; + } else { + endpoint.host = endpoint.hostname; + } + + httpRequest.virtualHostedBucket = b; // needed for signing the request + service.removeVirtualHostedBucketFromPath(req); + } + } + }, + + + removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) { + var httpRequest = req.httpRequest; + var bucket = httpRequest.virtualHostedBucket; + if (bucket && httpRequest.path) { + httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), ''); + if (httpRequest.path[0] !== '/') { + httpRequest.path = '/' + httpRequest.path; + } + } + }, + + + addExpect100Continue: function addExpect100Continue(req) { + var len = req.httpRequest.headers['Content-Length']; + if (AWS.util.isNode() && len >= 1024 * 1024) { + req.httpRequest.headers['Expect'] = '100-continue'; + } + }, + + + addContentType: function addContentType(req) { + var httpRequest = req.httpRequest; + if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') { + delete httpRequest.headers['Content-Type']; + return; + } + + if (!httpRequest.headers['Content-Type']) { // always have a Content-Type + httpRequest.headers['Content-Type'] = 'application/octet-stream'; + } + + var contentType = httpRequest.headers['Content-Type']; + if (AWS.util.isBrowser()) { + if (typeof httpRequest.body === 'string' && !contentType.match(/;\s*charset=/)) { + var charset = '; charset=UTF-8'; + httpRequest.headers['Content-Type'] += charset; + } else { + var replaceFn = function(_, prefix, charsetName) { + return prefix + charsetName.toUpperCase(); + }; + + httpRequest.headers['Content-Type'] = + contentType.replace(/(;\s*charset=)(.+)$/, replaceFn); + } + } + }, + + + computableChecksumOperations: { + putBucketCors: true, + putBucketLifecycle: true, + putBucketLifecycleConfiguration: true, + putBucketTagging: true, + deleteObjects: true, + putBucketReplication: true + }, + + + willComputeChecksums: function willComputeChecksums(req) { + if (this.computableChecksumOperations[req.operation]) return true; + if (!this.config.computeChecksums) return false; + + if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) && + typeof req.httpRequest.body !== 'string') { + return false; + } + + var rules = req.service.api.operations[req.operation].input.members; + + if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) { + if (rules.ContentMD5 && !req.params.ContentMD5) { + return true; + } + } + + if (req.service.getSignerClass(req) === AWS.Signers.V4) { + if (rules.ContentMD5 && !rules.ContentMD5.required) return false; + } + + if (rules.ContentMD5 && !req.params.ContentMD5) return true; + }, + + + computeContentMd5: function computeContentMd5(req) { + if (req.service.willComputeChecksums(req)) { + var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64'); + req.httpRequest.headers['Content-MD5'] = md5; + } + }, + + + computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) { + var keys = { + SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5', + CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5' + }; + AWS.util.each(keys, function(key, header) { + if (req.params[key]) { + var value = AWS.util.crypto.md5(req.params[key], 'base64'); + req.httpRequest.headers[header] = value; + } + }); + }, + + + pathStyleBucketName: function pathStyleBucketName(bucketName) { + if (this.config.s3ForcePathStyle) return true; + if (this.config.s3BucketEndpoint) return false; + + if (this.dnsCompatibleBucketName(bucketName)) { + return (this.config.sslEnabled && bucketName.match(/\./)) ? true : false; + } else { + return true; // not dns compatible names must always use path style + } + }, + + + dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) { + var b = bucketName; + var domain = new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/); + var ipAddress = new RegExp(/(\d+\.){3}\d+/); + var dots = new RegExp(/\.\./); + return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false; + }, + + + successfulResponse: function successfulResponse(resp) { + var req = resp.request; + var httpResponse = resp.httpResponse; + if (operationsWith200StatusCodeError[req.operation] && + httpResponse.body.toString().match('')) { + return false; + } else { + return httpResponse.statusCode < 300; + } + }, + + + retryableError: function retryableError(error, request) { + if (operationsWith200StatusCodeError[request.operation] && + error.statusCode === 200) { + return true; + } else if (request._requestRegionForBucket && + request.service.bucketRegionCache[request._requestRegionForBucket]) { + return false; + } else if (error && error.code === 'RequestTimeout') { + return true; + } else if (error && + regionRedirectErrorCodes.indexOf(error.code) != -1 && + error.region && error.region != request.httpRequest.region) { + request.httpRequest.region = error.region; + if (error.statusCode === 301) { + request.service.updateReqBucketRegion(request); + } + return true; + } else { + var _super = AWS.Service.prototype.retryableError; + return _super.call(this, error, request); + } + }, + + + updateReqBucketRegion: function updateReqBucketRegion(request, region) { + var httpRequest = request.httpRequest; + if (typeof region === 'string' && region.length) { + httpRequest.region = region; + } + if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)) { + return; + } + var service = request.service; + var s3Config = service.config; + var s3BucketEndpoint = s3Config.s3BucketEndpoint; + if (s3BucketEndpoint) { + delete s3Config.s3BucketEndpoint; + } + var newConfig = AWS.util.copy(s3Config); + delete newConfig.endpoint; + newConfig.region = httpRequest.region; + + httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint; + service.populateURI(request); + s3Config.s3BucketEndpoint = s3BucketEndpoint; + httpRequest.headers.Host = httpRequest.endpoint.host; + + if (request._asm.currentState === 'validate') { + request.removeListener('build', service.populateURI); + request.addListener('build', service.removeVirtualHostedBucketFromPath); + } + }, + + + extractData: function extractData(resp) { + var req = resp.request; + if (req.operation === 'getBucketLocation') { + var match = resp.httpResponse.body.toString().match(/>(.+)<\/Location/); + delete resp.data['_']; + if (match) { + resp.data.LocationConstraint = match[1]; + } else { + resp.data.LocationConstraint = ''; + } + } + var bucket = req.params.Bucket || null; + if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) { + req.service.clearBucketRegionCache(bucket); + } else { + var headers = resp.httpResponse.headers || {}; + var region = headers['x-amz-bucket-region'] || null; + if (!region && req.operation === 'createBucket' && !resp.error) { + var createBucketConfiguration = req.params.CreateBucketConfiguration; + if (!createBucketConfiguration) { + region = 'us-east-1'; + } else if (createBucketConfiguration.LocationConstraint === 'EU') { + region = 'eu-west-1'; + } else { + region = createBucketConfiguration.LocationConstraint; + } + } + if (region) { + if (bucket && region !== req.service.bucketRegionCache[bucket]) { + req.service.bucketRegionCache[bucket] = region; + } + } + } + req.service.extractRequestIds(resp); + }, + + + extractError: function extractError(resp) { + var codes = { + 304: 'NotModified', + 403: 'Forbidden', + 400: 'BadRequest', + 404: 'NotFound' + }; + + var req = resp.request; + var code = resp.httpResponse.statusCode; + var body = resp.httpResponse.body || ''; + + var headers = resp.httpResponse.headers || {}; + var region = headers['x-amz-bucket-region'] || null; + var bucket = req.params.Bucket || null; + var bucketRegionCache = req.service.bucketRegionCache; + if (region && bucket && region !== bucketRegionCache[bucket]) { + bucketRegionCache[bucket] = region; + } + + var cachedRegion; + if (codes[code] && body.length === 0) { + if (bucket && !region) { + cachedRegion = bucketRegionCache[bucket] || null; + if (cachedRegion !== req.httpRequest.region) { + region = cachedRegion; + } + } + resp.error = AWS.util.error(new Error(), { + code: codes[code], + message: null, + region: region + }); + } else { + var data = new AWS.XML.Parser().parse(body.toString()); + + if (data.Region && !region) { + region = data.Region; + if (bucket && region !== bucketRegionCache[bucket]) { + bucketRegionCache[bucket] = region; + } + } else if (bucket && !region && !data.Region) { + cachedRegion = bucketRegionCache[bucket] || null; + if (cachedRegion !== req.httpRequest.region) { + region = cachedRegion; + } + } + + resp.error = AWS.util.error(new Error(), { + code: data.Code || code, + message: data.Message || null, + region: region + }); + } + req.service.extractRequestIds(resp); + }, + + + requestBucketRegion: function requestBucketRegion(resp, done) { + var error = resp.error; + var req = resp.request; + var bucket = req.params.Bucket || null; + + if (!error || !bucket || error.region || req.operation === 'listObjects' || + (AWS.util.isNode() && req.operation === 'headBucket') || + (error.statusCode === 400 && req.operation !== 'headObject') || + regionRedirectErrorCodes.indexOf(error.code) === -1) { + return done(); + } + var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects'; + var reqParams = {Bucket: bucket}; + if (reqOperation === 'listObjects') reqParams.MaxKeys = 0; + var regionReq = req.service[reqOperation](reqParams); + regionReq._requestRegionForBucket = bucket; + regionReq.send(function() { + var region = req.service.bucketRegionCache[bucket] || null; + error.region = region; + done(); + }); + }, + + + reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) { + if (!AWS.util.isBrowser()) { + return done(); + } + var error = resp.error; + var request = resp.request; + var bucket = request.params.Bucket; + if (!error || error.code !== 'NetworkingError' || !bucket || + request.httpRequest.region === 'us-east-1') { + return done(); + } + var service = request.service; + var bucketRegionCache = service.bucketRegionCache; + var cachedRegion = bucketRegionCache[bucket] || null; + + if (cachedRegion && cachedRegion !== request.httpRequest.region) { + service.updateReqBucketRegion(request, cachedRegion); + done(); + } else if (!service.dnsCompatibleBucketName(bucket)) { + service.updateReqBucketRegion(request, 'us-east-1'); + if (bucketRegionCache[bucket] !== 'us-east-1') { + bucketRegionCache[bucket] = 'us-east-1'; + } + done(); + } else if (request.httpRequest.virtualHostedBucket) { + var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0}); + service.updateReqBucketRegion(getRegionReq, 'us-east-1'); + getRegionReq._requestRegionForBucket = bucket; + + getRegionReq.send(function() { + var region = service.bucketRegionCache[bucket] || null; + if (region && region !== request.httpRequest.region) { + service.updateReqBucketRegion(request, region); + } + done(); + }); + } else { + done(); + } + }, + + + bucketRegionCache: {}, + + + clearBucketRegionCache: function(buckets) { + var bucketRegionCache = this.bucketRegionCache; + if (!buckets) { + buckets = Object.keys(bucketRegionCache); + } else if (typeof buckets === 'string') { + buckets = [buckets]; + } + for (var i = 0; i < buckets.length; i++) { + delete bucketRegionCache[buckets[i]]; + } + return bucketRegionCache; + }, + + + correctBucketRegionFromCache: function correctBucketRegionFromCache(req) { + var bucket = req.params.Bucket || null; + if (bucket) { + var service = req.service; + var requestRegion = req.httpRequest.region; + var cachedRegion = service.bucketRegionCache[bucket]; + if (cachedRegion && cachedRegion !== requestRegion) { + service.updateReqBucketRegion(req, cachedRegion); + } + } + }, + + + extractRequestIds: function extractRequestIds(resp) { + var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null; + var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null; + resp.extendedRequestId = extendedRequestId; + resp.cfId = cfId; + + if (resp.error) { + resp.error.requestId = resp.requestId || null; + resp.error.extendedRequestId = extendedRequestId; + resp.error.cfId = cfId; + } + }, + + + getSignedUrl: function getSignedUrl(operation, params, callback) { + params = AWS.util.copy(params || {}); + var expires = params.Expires || 900; + delete params.Expires; // we can't validate this + var request = this.makeRequest(operation, params); + return request.presign(expires, callback); + }, + + + prepareSignedUrl: function prepareSignedUrl(request) { + request.addListener('validate', request.service.noPresignedContentLength); + request.removeListener('build', request.service.addContentType); + if (!request.params.Body) { + request.removeListener('build', request.service.computeContentMd5); + } else { + request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); + } + }, + + + disableBodySigning: function disableBodySigning(request) { + var headers = request.httpRequest.headers; + if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) { + headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD'; + } + }, + + + noPresignedContentLength: function noPresignedContentLength(request) { + if (request.params.ContentLength !== undefined) { + throw AWS.util.error(new Error(), {code: 'UnexpectedParameter', + message: 'ContentLength is not supported in pre-signed URLs.'}); + } + }, + + createBucket: function createBucket(params, callback) { + if (typeof params === 'function' || !params) { + callback = callback || params; + params = {}; + } + var hostname = this.endpoint.hostname; + if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) { + params.CreateBucketConfiguration = { LocationConstraint: this.config.region }; + } + return this.makeRequest('createBucket', params, callback); + }, + + + upload: function upload(params, options, callback) { + if (typeof options === 'function' && callback === undefined) { + callback = options; + options = null; + } + + options = options || {}; + options = AWS.util.merge(options || {}, {service: this, params: params}); + + var uploader = new AWS.S3.ManagedUpload(options); + if (typeof callback === 'function') uploader.send(callback); + return uploader; + } +}); + +},{"../core":188,"../s3/managed_upload":223}],235:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.SQS.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('build', this.buildEndpoint); + + if (request.service.config.computeChecksums) { + if (request.operation === 'sendMessage') { + request.addListener('extractData', this.verifySendMessageChecksum); + } else if (request.operation === 'sendMessageBatch') { + request.addListener('extractData', this.verifySendMessageBatchChecksum); + } else if (request.operation === 'receiveMessage') { + request.addListener('extractData', this.verifyReceiveMessageChecksum); + } + } + }, + + + verifySendMessageChecksum: function verifySendMessageChecksum(response) { + if (!response.data) return; + + var md5 = response.data.MD5OfMessageBody; + var body = this.params.MessageBody; + var calculatedMd5 = this.service.calculateChecksum(body); + if (calculatedMd5 !== md5) { + var msg = 'Got "' + response.data.MD5OfMessageBody + + '", expecting "' + calculatedMd5 + '".'; + this.service.throwInvalidChecksumError(response, + [response.data.MessageId], msg); + } + }, + + + verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) { + if (!response.data) return; + + var service = this.service; + var entries = {}; + var errors = []; + var messageIds = []; + AWS.util.arrayEach(response.data.Successful, function (entry) { + entries[entry.Id] = entry; + }); + AWS.util.arrayEach(this.params.Entries, function (entry) { + if (entries[entry.Id]) { + var md5 = entries[entry.Id].MD5OfMessageBody; + var body = entry.MessageBody; + if (!service.isChecksumValid(md5, body)) { + errors.push(entry.Id); + messageIds.push(entries[entry.Id].MessageId); + } + } + }); + + if (errors.length > 0) { + service.throwInvalidChecksumError(response, messageIds, + 'Invalid messages: ' + errors.join(', ')); + } + }, + + + verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) { + if (!response.data) return; + + var service = this.service; + var messageIds = []; + AWS.util.arrayEach(response.data.Messages, function(message) { + var md5 = message.MD5OfBody; + var body = message.Body; + if (!service.isChecksumValid(md5, body)) { + messageIds.push(message.MessageId); + } + }); + + if (messageIds.length > 0) { + service.throwInvalidChecksumError(response, messageIds, + 'Invalid messages: ' + messageIds.join(', ')); + } + }, + + + throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) { + response.error = AWS.util.error(new Error(), { + retryable: true, + code: 'InvalidChecksum', + messageIds: ids, + message: response.request.operation + + ' returned an invalid MD5 response. ' + message + }); + }, + + + isChecksumValid: function isChecksumValid(checksum, data) { + return this.calculateChecksum(data) === checksum; + }, + + + calculateChecksum: function calculateChecksum(data) { + return AWS.util.crypto.md5(data, 'hex'); + }, + + + buildEndpoint: function buildEndpoint(request) { + var url = request.httpRequest.params.QueueUrl; + if (url) { + request.httpRequest.endpoint = new AWS.Endpoint(url); + + var matches = request.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./); + if (matches) request.httpRequest.region = matches[1]; + } + } +}); + +},{"../core":188}],236:[function(require,module,exports){ +var AWS = require('../core'); + +AWS.util.update(AWS.STS.prototype, { + + credentialsFrom: function credentialsFrom(data, credentials) { + if (!data) return null; + if (!credentials) credentials = new AWS.TemporaryCredentials(); + credentials.expired = false; + credentials.accessKeyId = data.Credentials.AccessKeyId; + credentials.secretAccessKey = data.Credentials.SecretAccessKey; + credentials.sessionToken = data.Credentials.SessionToken; + credentials.expireTime = data.Credentials.Expiration; + return credentials; + }, + + assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) { + return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback); + }, + + assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) { + return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback); + } +}); + +},{"../core":188}],237:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +var expiresHeader = 'presigned-expires'; + + +function signedUrlBuilder(request) { + var expires = request.httpRequest.headers[expiresHeader]; + var signerClass = request.service.getSignerClass(request); + + delete request.httpRequest.headers['User-Agent']; + delete request.httpRequest.headers['X-Amz-User-Agent']; + + if (signerClass === AWS.Signers.V4) { + if (expires > 604800) { // one week expiry is invalid + var message = 'Presigning does not support expiry time greater ' + + 'than a week with SigV4 signing.'; + throw AWS.util.error(new Error(), { + code: 'InvalidExpiryTime', message: message, retryable: false + }); + } + request.httpRequest.headers[expiresHeader] = expires; + } else if (signerClass === AWS.Signers.S3) { + request.httpRequest.headers[expiresHeader] = parseInt( + AWS.util.date.unixTimestamp() + expires, 10).toString(); + } else { + throw AWS.util.error(new Error(), { + message: 'Presigning only supports S3 or SigV4 signing.', + code: 'UnsupportedSigner', retryable: false + }); + } +} + + +function signedUrlSigner(request) { + var endpoint = request.httpRequest.endpoint; + var parsedUrl = AWS.util.urlParse(request.httpRequest.path); + var queryParams = {}; + + if (parsedUrl.search) { + queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1)); + } + + AWS.util.each(request.httpRequest.headers, function (key, value) { + if (key === expiresHeader) key = 'Expires'; + if (key.indexOf('x-amz-meta-') === 0) { + delete queryParams[key]; + key = key.toLowerCase(); + } + queryParams[key] = value; + }); + delete request.httpRequest.headers[expiresHeader]; + + var auth = queryParams['Authorization'].split(' '); + if (auth[0] === 'AWS') { + auth = auth[1].split(':'); + queryParams['AWSAccessKeyId'] = auth[0]; + queryParams['Signature'] = auth[1]; + } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing + auth.shift(); + var rest = auth.join(' '); + var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1]; + queryParams['X-Amz-Signature'] = signature; + delete queryParams['Expires']; + } + delete queryParams['Authorization']; + delete queryParams['Host']; + + endpoint.pathname = parsedUrl.pathname; + endpoint.search = AWS.util.queryParamsToString(queryParams); +} + + +AWS.Signers.Presign = inherit({ + + sign: function sign(request, expireTime, callback) { + request.httpRequest.headers[expiresHeader] = expireTime || 3600; + request.on('build', signedUrlBuilder); + request.on('sign', signedUrlSigner); + request.removeListener('afterBuild', + AWS.EventListeners.Core.SET_CONTENT_LENGTH); + request.removeListener('afterBuild', + AWS.EventListeners.Core.COMPUTE_SHA256); + + request.emit('beforePresign', [request]); + + if (callback) { + request.build(function() { + if (this.response.error) callback(this.response.error); + else { + callback(null, AWS.util.urlFormat(request.httpRequest.endpoint)); + } + }); + } else { + request.build(); + if (request.response.error) throw request.response.error; + return AWS.util.urlFormat(request.httpRequest.endpoint); + } + } +}); + +module.exports = AWS.Signers.Presign; + +},{"../core":188}],238:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.RequestSigner = inherit({ + constructor: function RequestSigner(request) { + this.request = request; + }, + + setServiceClientId: function setServiceClientId(id) { + this.serviceClientId = id; + }, + + getServiceClientId: function getServiceClientId() { + return this.serviceClientId; + } +}); + +AWS.Signers.RequestSigner.getVersion = function getVersion(version) { + switch (version) { + case 'v2': return AWS.Signers.V2; + case 'v3': return AWS.Signers.V3; + case 'v4': return AWS.Signers.V4; + case 's3': return AWS.Signers.S3; + case 'v3https': return AWS.Signers.V3Https; + } + throw new Error('Unknown signing version ' + version); +}; + +require('./v2'); +require('./v3'); +require('./v3https'); +require('./v4'); +require('./s3'); +require('./presign'); + +},{"../core":188,"./presign":237,"./s3":239,"./v2":240,"./v3":241,"./v3https":242,"./v4":243}],239:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, { + + subResources: { + 'acl': 1, + 'accelerate': 1, + 'cors': 1, + 'lifecycle': 1, + 'delete': 1, + 'location': 1, + 'logging': 1, + 'notification': 1, + 'partNumber': 1, + 'policy': 1, + 'requestPayment': 1, + 'replication': 1, + 'restore': 1, + 'tagging': 1, + 'torrent': 1, + 'uploadId': 1, + 'uploads': 1, + 'versionId': 1, + 'versioning': 1, + 'versions': 1, + 'website': 1 + }, + + responseHeaders: { + 'response-content-type': 1, + 'response-content-language': 1, + 'response-expires': 1, + 'response-cache-control': 1, + 'response-content-disposition': 1, + 'response-content-encoding': 1 + }, + + addAuthorization: function addAuthorization(credentials, date) { + if (!this.request.headers['presigned-expires']) { + this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date); + } + + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + + var signature = this.sign(credentials.secretAccessKey, this.stringToSign()); + var auth = 'AWS ' + credentials.accessKeyId + ':' + signature; + + this.request.headers['Authorization'] = auth; + }, + + stringToSign: function stringToSign() { + var r = this.request; + + var parts = []; + parts.push(r.method); + parts.push(r.headers['Content-MD5'] || ''); + parts.push(r.headers['Content-Type'] || ''); + + parts.push(r.headers['presigned-expires'] || ''); + + var headers = this.canonicalizedAmzHeaders(); + if (headers) parts.push(headers); + parts.push(this.canonicalizedResource()); + + return parts.join('\n'); + + }, + + canonicalizedAmzHeaders: function canonicalizedAmzHeaders() { + + var amzHeaders = []; + + AWS.util.each(this.request.headers, function (name) { + if (name.match(/^x-amz-/i)) + amzHeaders.push(name); + }); + + amzHeaders.sort(function (a, b) { + return a.toLowerCase() < b.toLowerCase() ? -1 : 1; + }); + + var parts = []; + AWS.util.arrayEach.call(this, amzHeaders, function (name) { + parts.push(name.toLowerCase() + ':' + String(this.request.headers[name])); + }); + + return parts.join('\n'); + + }, + + canonicalizedResource: function canonicalizedResource() { + + var r = this.request; + + var parts = r.path.split('?'); + var path = parts[0]; + var querystring = parts[1]; + + var resource = ''; + + if (r.virtualHostedBucket) + resource += '/' + r.virtualHostedBucket; + + resource += path; + + if (querystring) { + + var resources = []; + + AWS.util.arrayEach.call(this, querystring.split('&'), function (param) { + var name = param.split('=')[0]; + var value = param.split('=')[1]; + if (this.subResources[name] || this.responseHeaders[name]) { + var subresource = { name: name }; + if (value !== undefined) { + if (this.subResources[name]) { + subresource.value = value; + } else { + subresource.value = decodeURIComponent(value); + } + } + resources.push(subresource); + } + }); + + resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); + + if (resources.length) { + + querystring = []; + AWS.util.arrayEach(resources, function (res) { + if (res.value === undefined) { + querystring.push(res.name); + } else { + querystring.push(res.name + '=' + res.value); + } + }); + + resource += '?' + querystring.join('&'); + } + + } + + return resource; + + }, + + sign: function sign(secret, string) { + return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1'); + } +}); + +module.exports = AWS.Signers.S3; + +},{"../core":188}],240:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, { + addAuthorization: function addAuthorization(credentials, date) { + + if (!date) date = AWS.util.date.getDate(); + + var r = this.request; + + r.params.Timestamp = AWS.util.date.iso8601(date); + r.params.SignatureVersion = '2'; + r.params.SignatureMethod = 'HmacSHA256'; + r.params.AWSAccessKeyId = credentials.accessKeyId; + + if (credentials.sessionToken) { + r.params.SecurityToken = credentials.sessionToken; + } + + delete r.params.Signature; // delete old Signature for re-signing + r.params.Signature = this.signature(credentials); + + r.body = AWS.util.queryParamsToString(r.params); + r.headers['Content-Length'] = r.body.length; + }, + + signature: function signature(credentials) { + return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); + }, + + stringToSign: function stringToSign() { + var parts = []; + parts.push(this.request.method); + parts.push(this.request.endpoint.host.toLowerCase()); + parts.push(this.request.pathname()); + parts.push(AWS.util.queryParamsToString(this.request.params)); + return parts.join('\n'); + } + +}); + +module.exports = AWS.Signers.V2; + +},{"../core":188}],241:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, { + addAuthorization: function addAuthorization(credentials, date) { + + var datetime = AWS.util.date.rfc822(date); + + this.request.headers['X-Amz-Date'] = datetime; + + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + + this.request.headers['X-Amzn-Authorization'] = + this.authorization(credentials, datetime); + + }, + + authorization: function authorization(credentials) { + return 'AWS3 ' + + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + + 'Algorithm=HmacSHA256,' + + 'SignedHeaders=' + this.signedHeaders() + ',' + + 'Signature=' + this.signature(credentials); + }, + + signedHeaders: function signedHeaders() { + var headers = []; + AWS.util.arrayEach(this.headersToSign(), function iterator(h) { + headers.push(h.toLowerCase()); + }); + return headers.sort().join(';'); + }, + + canonicalHeaders: function canonicalHeaders() { + var headers = this.request.headers; + var parts = []; + AWS.util.arrayEach(this.headersToSign(), function iterator(h) { + parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim()); + }); + return parts.sort().join('\n') + '\n'; + }, + + headersToSign: function headersToSign() { + var headers = []; + AWS.util.each(this.request.headers, function iterator(k) { + if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) { + headers.push(k); + } + }); + return headers; + }, + + signature: function signature(credentials) { + return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); + }, + + stringToSign: function stringToSign() { + var parts = []; + parts.push(this.request.method); + parts.push('/'); + parts.push(''); + parts.push(this.canonicalHeaders()); + parts.push(this.request.body); + return AWS.util.crypto.sha256(parts.join('\n')); + } + +}); + +module.exports = AWS.Signers.V3; + +},{"../core":188}],242:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +require('./v3'); + + +AWS.Signers.V3Https = inherit(AWS.Signers.V3, { + authorization: function authorization(credentials) { + return 'AWS3-HTTPS ' + + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + + 'Algorithm=HmacSHA256,' + + 'Signature=' + this.signature(credentials); + }, + + stringToSign: function stringToSign() { + return this.request.headers['X-Amz-Date']; + } +}); + +module.exports = AWS.Signers.V3Https; + +},{"../core":188,"./v3":241}],243:[function(require,module,exports){ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + + +var cachedSecret = {}; + + +var cacheQueue = []; + + +var maxCacheEntries = 50; + + +var expiresHeader = 'presigned-expires'; + + +AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, { + constructor: function V4(request, serviceName, signatureCache) { + AWS.Signers.RequestSigner.call(this, request); + this.serviceName = serviceName; + this.signatureCache = signatureCache; + }, + + algorithm: 'AWS4-HMAC-SHA256', + + addAuthorization: function addAuthorization(credentials, date) { + var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, ''); + + if (this.isPresigned()) { + this.updateForPresigned(credentials, datetime); + } else { + this.addHeaders(credentials, datetime); + } + + this.request.headers['Authorization'] = + this.authorization(credentials, datetime); + }, + + addHeaders: function addHeaders(credentials, datetime) { + this.request.headers['X-Amz-Date'] = datetime; + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + }, + + updateForPresigned: function updateForPresigned(credentials, datetime) { + var credString = this.credentialString(datetime); + var qs = { + 'X-Amz-Date': datetime, + 'X-Amz-Algorithm': this.algorithm, + 'X-Amz-Credential': credentials.accessKeyId + '/' + credString, + 'X-Amz-Expires': this.request.headers[expiresHeader], + 'X-Amz-SignedHeaders': this.signedHeaders() + }; + + if (credentials.sessionToken) { + qs['X-Amz-Security-Token'] = credentials.sessionToken; + } + + if (this.request.headers['Content-Type']) { + qs['Content-Type'] = this.request.headers['Content-Type']; + } + if (this.request.headers['Content-MD5']) { + qs['Content-MD5'] = this.request.headers['Content-MD5']; + } + if (this.request.headers['Cache-Control']) { + qs['Cache-Control'] = this.request.headers['Cache-Control']; + } + + AWS.util.each.call(this, this.request.headers, function(key, value) { + if (key === expiresHeader) return; + if (this.isSignableHeader(key)) { + var lowerKey = key.toLowerCase(); + if (lowerKey.indexOf('x-amz-meta-') === 0) { + qs[lowerKey] = value; + } else if (lowerKey.indexOf('x-amz-') === 0) { + qs[key] = value; + } + } + }); + + var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?'; + this.request.path += sep + AWS.util.queryParamsToString(qs); + }, + + authorization: function authorization(credentials, datetime) { + var parts = []; + var credString = this.credentialString(datetime); + parts.push(this.algorithm + ' Credential=' + + credentials.accessKeyId + '/' + credString); + parts.push('SignedHeaders=' + this.signedHeaders()); + parts.push('Signature=' + this.signature(credentials, datetime)); + return parts.join(', '); + }, + + signature: function signature(credentials, datetime) { + var cache = null; + var cacheIdentifier = this.serviceName + (this.getServiceClientId() ? '_' + this.getServiceClientId() : ''); + if (this.signatureCache) { + var cache = cachedSecret[cacheIdentifier]; + if (!cache) { + cacheQueue.push(cacheIdentifier); + if (cacheQueue.length > maxCacheEntries) { + delete cachedSecret[cacheQueue.shift()]; + } + } + + } + var date = datetime.substr(0, 8); + + if (!cache || + cache.akid !== credentials.accessKeyId || + cache.region !== this.request.region || + cache.date !== date) { + + var kSecret = credentials.secretAccessKey; + var kDate = AWS.util.crypto.hmac('AWS4' + kSecret, date, 'buffer'); + var kRegion = AWS.util.crypto.hmac(kDate, this.request.region, 'buffer'); + var kService = AWS.util.crypto.hmac(kRegion, this.serviceName, 'buffer'); + var kCredentials = AWS.util.crypto.hmac(kService, 'aws4_request', 'buffer'); + + if (!this.signatureCache) { + return AWS.util.crypto.hmac(kCredentials, this.stringToSign(datetime), 'hex'); + } + + cachedSecret[cacheIdentifier] = { + region: this.request.region, date: date, + key: kCredentials, akid: credentials.accessKeyId + }; + } + + var key = cachedSecret[cacheIdentifier].key; + return AWS.util.crypto.hmac(key, this.stringToSign(datetime), 'hex'); + }, + + stringToSign: function stringToSign(datetime) { + var parts = []; + parts.push('AWS4-HMAC-SHA256'); + parts.push(datetime); + parts.push(this.credentialString(datetime)); + parts.push(this.hexEncodedHash(this.canonicalString())); + return parts.join('\n'); + }, + + canonicalString: function canonicalString() { + var parts = [], pathname = this.request.pathname(); + if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname); + + parts.push(this.request.method); + parts.push(pathname); + parts.push(this.request.search()); + parts.push(this.canonicalHeaders() + '\n'); + parts.push(this.signedHeaders()); + parts.push(this.hexEncodedBodyHash()); + return parts.join('\n'); + }, + + canonicalHeaders: function canonicalHeaders() { + var headers = []; + AWS.util.each.call(this, this.request.headers, function (key, item) { + headers.push([key, item]); + }); + headers.sort(function (a, b) { + return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1; + }); + var parts = []; + AWS.util.arrayEach.call(this, headers, function (item) { + var key = item[0].toLowerCase(); + if (this.isSignableHeader(key)) { + parts.push(key + ':' + + this.canonicalHeaderValues(item[1].toString())); + } + }); + return parts.join('\n'); + }, + + canonicalHeaderValues: function canonicalHeaderValues(values) { + return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); + }, + + signedHeaders: function signedHeaders() { + var keys = []; + AWS.util.each.call(this, this.request.headers, function (key) { + key = key.toLowerCase(); + if (this.isSignableHeader(key)) keys.push(key); + }); + return keys.sort().join(';'); + }, + + credentialString: function credentialString(datetime) { + var parts = []; + parts.push(datetime.substr(0, 8)); + parts.push(this.request.region); + parts.push(this.serviceName); + parts.push('aws4_request'); + return parts.join('/'); + }, + + hexEncodedHash: function hash(string) { + return AWS.util.crypto.sha256(string, 'hex'); + }, + + hexEncodedBodyHash: function hexEncodedBodyHash() { + if (this.isPresigned() && this.serviceName === 's3' && !this.request.body) { + return 'UNSIGNED-PAYLOAD'; + } else if (this.request.headers['X-Amz-Content-Sha256']) { + return this.request.headers['X-Amz-Content-Sha256']; + } else { + return this.hexEncodedHash(this.request.body || ''); + } + }, + + unsignableHeaders: ['authorization', 'content-type', 'content-length', + 'user-agent', expiresHeader, 'expect'], + + isSignableHeader: function isSignableHeader(key) { + if (key.toLowerCase().indexOf('x-amz-') === 0) return true; + return this.unsignableHeaders.indexOf(key) < 0; + }, + + isPresigned: function isPresigned() { + return this.request.headers[expiresHeader] ? true : false; + } + +}); + +module.exports = AWS.Signers.V4; + +},{"../core":188}],244:[function(require,module,exports){ +function AcceptorStateMachine(states, state) { + this.currentState = state || null; + this.states = states || {}; +} + +AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) { + if (typeof finalState === 'function') { + inputError = bindObject; bindObject = done; + done = finalState; finalState = null; + } + + var self = this; + var state = self.states[self.currentState]; + state.fn.call(bindObject || self, inputError, function(err) { + if (err) { + if (state.fail) self.currentState = state.fail; + else return done ? done.call(bindObject, err) : null; + } else { + if (state.accept) self.currentState = state.accept; + else return done ? done.call(bindObject) : null; + } + if (self.currentState === finalState) { + return done ? done.call(bindObject, err) : null; + } + + self.runTo(finalState, done, bindObject, err); + }); +}; + +AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) { + if (typeof acceptState === 'function') { + fn = acceptState; acceptState = null; failState = null; + } else if (typeof failState === 'function') { + fn = failState; failState = null; + } + + if (!this.currentState) this.currentState = name; + this.states[name] = { accept: acceptState, fail: failState, fn: fn }; + return this; +}; + +module.exports = AcceptorStateMachine; + +},{}],245:[function(require,module,exports){ +(function (process){ + +var AWS; + + +var util = { + engine: function engine() { + if (util.isBrowser() && typeof navigator !== 'undefined') { + return navigator.userAgent; + } else { + return process.platform + '/' + process.version; + } + }, + + userAgent: function userAgent() { + var name = util.isBrowser() ? 'js' : 'nodejs'; + var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION; + if (name === 'nodejs') agent += ' ' + util.engine(); + return agent; + }, + + isBrowser: function isBrowser() { return process && process.browser; }, + isNode: function isNode() { return !util.isBrowser(); }, + uriEscape: function uriEscape(string) { + var output = encodeURIComponent(string); + output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); + + output = output.replace(/[*]/g, function(ch) { + return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); + }); + + return output; + }, + + uriEscapePath: function uriEscapePath(string) { + var parts = []; + util.arrayEach(string.split('/'), function (part) { + parts.push(util.uriEscape(part)); + }); + return parts.join('/'); + }, + + urlParse: function urlParse(url) { + return util.url.parse(url); + }, + + urlFormat: function urlFormat(url) { + return util.url.format(url); + }, + + queryStringParse: function queryStringParse(qs) { + return util.querystring.parse(qs); + }, + + queryParamsToString: function queryParamsToString(params) { + var items = []; + var escape = util.uriEscape; + var sortedKeys = Object.keys(params).sort(); + + util.arrayEach(sortedKeys, function(name) { + var value = params[name]; + var ename = escape(name); + var result = ename + '='; + if (Array.isArray(value)) { + var vals = []; + util.arrayEach(value, function(item) { vals.push(escape(item)); }); + result = ename + '=' + vals.sort().join('&' + ename + '='); + } else if (value !== undefined && value !== null) { + result = ename + '=' + escape(value); + } + items.push(result); + }); + + return items.join('&'); + }, + + readFileSync: function readFileSync(path) { + if (util.isBrowser()) return null; + return require('fs').readFileSync(path, 'utf-8'); + }, + + base64: { + + encode: function encode64(string) { + return new util.Buffer(string).toString('base64'); + }, + + decode: function decode64(string) { + return new util.Buffer(string, 'base64'); + } + + }, + + buffer: { + toStream: function toStream(buffer) { + if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); + + var readable = new (util.stream.Readable)(); + var pos = 0; + readable._read = function(size) { + if (pos >= buffer.length) return readable.push(null); + + var end = pos + size; + if (end > buffer.length) end = buffer.length; + readable.push(buffer.slice(pos, end)); + pos = end; + }; + + return readable; + }, + + + concat: function(buffers) { + var length = 0, + offset = 0, + buffer = null, i; + + for (i = 0; i < buffers.length; i++) { + length += buffers[i].length; + } + + buffer = new util.Buffer(length); + + for (i = 0; i < buffers.length; i++) { + buffers[i].copy(buffer, offset); + offset += buffers[i].length; + } + + return buffer; + } + }, + + string: { + byteLength: function byteLength(string) { + if (string === null || string === undefined) return 0; + if (typeof string === 'string') string = new util.Buffer(string); + + if (typeof string.byteLength === 'number') { + return string.byteLength; + } else if (typeof string.length === 'number') { + return string.length; + } else if (typeof string.size === 'number') { + return string.size; + } else if (typeof string.path === 'string') { + return require('fs').lstatSync(string.path).size; + } else { + throw util.error(new Error('Cannot determine length of ' + string), + { object: string }); + } + }, + + upperFirst: function upperFirst(string) { + return string[0].toUpperCase() + string.substr(1); + }, + + lowerFirst: function lowerFirst(string) { + return string[0].toLowerCase() + string.substr(1); + } + }, + + ini: { + parse: function string(ini) { + var currentSection, map = {}; + util.arrayEach(ini.split(/\r?\n/), function(line) { + line = line.split(/(^|\s)[;#]/)[0]; // remove comments + var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); + if (section) { + currentSection = section[1]; + } else if (currentSection) { + var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); + if (item) { + map[currentSection] = map[currentSection] || {}; + map[currentSection][item[1]] = item[2]; + } + } + }); + + return map; + } + }, + + fn: { + noop: function() {}, + + + makeAsync: function makeAsync(fn, expectedArgs) { + if (expectedArgs && expectedArgs <= fn.length) { + return fn; + } + + return function() { + var args = Array.prototype.slice.call(arguments, 0); + var callback = args.pop(); + var result = fn.apply(null, args); + callback(result); + }; + } + }, + + + date: { + + + getDate: function getDate() { + if (!AWS) AWS = require('./core'); + if (AWS.config.systemClockOffset) { // use offset when non-zero + return new Date(new Date().getTime() + AWS.config.systemClockOffset); + } else { + return new Date(); + } + }, + + + iso8601: function iso8601(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); + }, + + + rfc822: function rfc822(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.toUTCString(); + }, + + + unixTimestamp: function unixTimestamp(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.getTime() / 1000; + }, + + + from: function format(date) { + if (typeof date === 'number') { + return new Date(date * 1000); // unix timestamp + } else { + return new Date(date); + } + }, + + + format: function format(date, formatter) { + if (!formatter) formatter = 'iso8601'; + return util.date[formatter](util.date.from(date)); + }, + + parseTimestamp: function parseTimestamp(value) { + if (typeof value === 'number') { // unix timestamp (number) + return new Date(value * 1000); + } else if (value.match(/^\d+$/)) { // unix timestamp + return new Date(value * 1000); + } else if (value.match(/^\d{4}/)) { // iso8601 + return new Date(value); + } else if (value.match(/^\w{3},/)) { // rfc822 + return new Date(value); + } else { + throw util.error( + new Error('unhandled timestamp format: ' + value), + {code: 'TimestampParserError'}); + } + } + + }, + + crypto: { + crc32Table: [ + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, + 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, + 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, + 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, + 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, + 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, + 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, + 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, + 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, + 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, + 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, + 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, + 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, + 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, + 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, + 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, + 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, + 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, + 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, + 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, + 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, + 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, + 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, + 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, + 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, + 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, + 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, + 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, + 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, + 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, + 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, + 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, + 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, + 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, + 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, + 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, + 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, + 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, + 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, + 0x2D02EF8D], + + crc32: function crc32(data) { + var tbl = util.crypto.crc32Table; + var crc = 0 ^ -1; + + if (typeof data === 'string') { + data = new util.Buffer(data); + } + + for (var i = 0; i < data.length; i++) { + var code = data.readUInt8(i); + crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; + } + return (crc ^ -1) >>> 0; + }, + + hmac: function hmac(key, string, digest, fn) { + if (!digest) digest = 'binary'; + if (digest === 'buffer') { digest = undefined; } + if (!fn) fn = 'sha256'; + if (typeof string === 'string') string = new util.Buffer(string); + return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); + }, + + md5: function md5(data, digest, callback) { + return util.crypto.hash('md5', data, digest, callback); + }, + + sha256: function sha256(data, digest, callback) { + return util.crypto.hash('sha256', data, digest, callback); + }, + + hash: function(algorithm, data, digest, callback) { + var hash = util.crypto.createHash(algorithm); + if (!digest) { digest = 'binary'; } + if (digest === 'buffer') { digest = undefined; } + if (typeof data === 'string') data = new util.Buffer(data); + var sliceFn = util.arraySliceFn(data); + var isBuffer = util.Buffer.isBuffer(data); + if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; + + if (callback && typeof data === 'object' && + typeof data.on === 'function' && !isBuffer) { + data.on('data', function(chunk) { hash.update(chunk); }); + data.on('error', function(err) { callback(err); }); + data.on('end', function() { callback(null, hash.digest(digest)); }); + } else if (callback && sliceFn && !isBuffer && + typeof FileReader !== 'undefined') { + var index = 0, size = 1024 * 512; + var reader = new FileReader(); + reader.onerror = function() { + callback(new Error('Failed to read data.')); + }; + reader.onload = function() { + var buf = new util.Buffer(new Uint8Array(reader.result)); + hash.update(buf); + index += buf.length; + reader._continueReading(); + }; + reader._continueReading = function() { + if (index >= data.size) { + callback(null, hash.digest(digest)); + return; + } + + var back = index + size; + if (back > data.size) back = data.size; + reader.readAsArrayBuffer(sliceFn.call(data, index, back)); + }; + + reader._continueReading(); + } else { + if (util.isBrowser() && typeof data === 'object' && !isBuffer) { + data = new util.Buffer(new Uint8Array(data)); + } + var out = hash.update(data).digest(digest); + if (callback) callback(null, out); + return out; + } + }, + + toHex: function toHex(data) { + var out = []; + for (var i = 0; i < data.length; i++) { + out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); + } + return out.join(''); + }, + + createHash: function createHash(algorithm) { + return util.crypto.lib.createHash(algorithm); + } + + }, + + + + + abort: {}, + + each: function each(object, iterFunction) { + for (var key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + var ret = iterFunction.call(this, key, object[key]); + if (ret === util.abort) break; + } + } + }, + + arrayEach: function arrayEach(array, iterFunction) { + for (var idx in array) { + if (Object.prototype.hasOwnProperty.call(array, idx)) { + var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); + if (ret === util.abort) break; + } + } + }, + + update: function update(obj1, obj2) { + util.each(obj2, function iterator(key, item) { + obj1[key] = item; + }); + return obj1; + }, + + merge: function merge(obj1, obj2) { + return util.update(util.copy(obj1), obj2); + }, + + copy: function copy(object) { + if (object === null || object === undefined) return object; + var dupe = {}; + for (var key in object) { + dupe[key] = object[key]; + } + return dupe; + }, + + isEmpty: function isEmpty(obj) { + for (var prop in obj) { + if (Object.prototype.hasOwnProperty.call(obj, prop)) { + return false; + } + } + return true; + }, + + arraySliceFn: function arraySliceFn(obj) { + var fn = obj.slice || obj.webkitSlice || obj.mozSlice; + return typeof fn === 'function' ? fn : null; + }, + + isType: function isType(obj, type) { + if (typeof type === 'function') type = util.typeName(type); + return Object.prototype.toString.call(obj) === '[object ' + type + ']'; + }, + + typeName: function typeName(type) { + if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; + var str = type.toString(); + var match = str.match(/^\s*function (.+)\(/); + return match ? match[1] : str; + }, + + error: function error(err, options) { + var originalError = null; + if (typeof err.message === 'string' && err.message !== '') { + if (typeof options === 'string' || (options && options.message)) { + originalError = util.copy(err); + originalError.message = err.message; + } + } + err.message = err.message || null; + + if (typeof options === 'string') { + err.message = options; + } else if (typeof options === 'object' && options !== null) { + util.update(err, options); + if (options.message) + err.message = options.message; + if (options.code || options.name) + err.code = options.code || options.name; + if (options.stack) + err.stack = options.stack; + } + + if (typeof Object.defineProperty === 'function') { + Object.defineProperty(err, 'name', {writable: true, enumerable: false}); + Object.defineProperty(err, 'message', {enumerable: true}); + } + + err.name = options && options.name || err.name || err.code || 'Error'; + err.time = new Date(); + + if (originalError) err.originalError = originalError; + + return err; + }, + + + inherit: function inherit(klass, features) { + var newObject = null; + if (features === undefined) { + features = klass; + klass = Object; + newObject = {}; + } else { + var ctor = function ConstructorWrapper() {}; + ctor.prototype = klass.prototype; + newObject = new ctor(); + } + + if (features.constructor === Object) { + features.constructor = function() { + if (klass !== Object) { + return klass.apply(this, arguments); + } + }; + } + + features.constructor.prototype = newObject; + util.update(features.constructor.prototype, features); + features.constructor.__super__ = klass; + return features.constructor; + }, + + + mixin: function mixin() { + var klass = arguments[0]; + for (var i = 1; i < arguments.length; i++) { + for (var prop in arguments[i].prototype) { + var fn = arguments[i].prototype[prop]; + if (prop !== 'constructor') { + klass.prototype[prop] = fn; + } + } + } + return klass; + }, + + + hideProperties: function hideProperties(obj, props) { + if (typeof Object.defineProperty !== 'function') return; + + util.arrayEach(props, function (key) { + Object.defineProperty(obj, key, { + enumerable: false, writable: true, configurable: true }); + }); + }, + + + property: function property(obj, name, value, enumerable, isValue) { + var opts = { + configurable: true, + enumerable: enumerable !== undefined ? enumerable : true + }; + if (typeof value === 'function' && !isValue) { + opts.get = value; + } + else { + opts.value = value; opts.writable = true; + } + + Object.defineProperty(obj, name, opts); + }, + + + memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { + var cachedValue = null; + + util.property(obj, name, function() { + if (cachedValue === null) { + cachedValue = get(); + } + return cachedValue; + }, enumerable); + }, + + + hoistPayloadMember: function hoistPayloadMember(resp) { + var req = resp.request; + var operation = req.operation; + var output = req.service.api.operations[operation].output; + if (output.payload) { + var payloadMember = output.members[output.payload]; + var responsePayload = resp.data[output.payload]; + if (payloadMember.type === 'structure') { + util.each(responsePayload, function(key, value) { + util.property(resp.data, key, value, false); + }); + } + } + }, + + + computeSha256: function computeSha256(body, done) { + if (util.isNode()) { + var Stream = util.stream.Stream; + var fs = require('fs'); + if (body instanceof Stream) { + if (typeof body.path === 'string') { // assume file object + var settings = {}; + if (typeof body.start === 'number') { + settings.start = body.start; + } + if (typeof body.end === 'number') { + settings.end = body.end; + } + body = fs.createReadStream(body.path, settings); + } else { // TODO support other stream types + return done(new Error('Non-file stream objects are ' + + 'not supported with SigV4')); + } + } + } + + util.crypto.sha256(body, 'hex', function(err, sha) { + if (err) done(err); + else done(null, sha); + }); + }, + + + isClockSkewed: function isClockSkewed(serverTime) { + if (serverTime) { + util.property(AWS.config, 'isClockSkewed', + Math.abs(new Date().getTime() - serverTime) >= 300000, false); + return AWS.config.isClockSkewed; + } + }, + + applyClockOffset: function applyClockOffset(serverTime) { + if (serverTime) + AWS.config.systemClockOffset = serverTime - new Date().getTime(); + }, + + + extractRequestId: function extractRequestId(resp) { + var requestId = resp.httpResponse.headers['x-amz-request-id'] || + resp.httpResponse.headers['x-amzn-requestid']; + + if (!requestId && resp.data && resp.data.ResponseMetadata) { + requestId = resp.data.ResponseMetadata.RequestId; + } + + if (requestId) { + resp.requestId = requestId; + } + + if (resp.error) { + resp.error.requestId = requestId; + } + }, + + + addPromisesToRequests: function addPromisesToRequests(constructor, PromiseDependency) { + PromiseDependency = PromiseDependency || null; + if (!PromiseDependency && typeof Promise !== 'undefined') { + PromiseDependency = Promise; + } + if (typeof PromiseDependency !== 'function') { + delete constructor.prototype.promise; + return; + } + constructor.prototype.promise = function promise() { + var self = this; + return new PromiseDependency(function(resolve, reject) { + self.on('complete', function(resp) { + if (resp.error) { + reject(resp.error); + } else { + resolve(resp.data); + } + }); + self.runTo(); + }); + } + }, + + + isDualstackAvailable: function isDualstackAvailable(service) { + if (!service) return false; + var metadata = require('../apis/metadata.json'); + if (typeof service !== 'string') service = service.serviceIdentifier; + if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; + return !!metadata[service].dualstackAvailable; + }, + + + calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { + if (!retryDelayOptions) retryDelayOptions = {}; + var customBackoff = retryDelayOptions.customBackoff || null; + if (typeof customBackoff === 'function') { + return customBackoff(retryCount); + } + var base = retryDelayOptions.base || 100; + var delay = Math.random() * (Math.pow(2, retryCount) * base); + return delay; + }, + + + handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { + if (!options) options = {}; + var http = AWS.HttpClient.getInstance(); + var httpOptions = options.httpOptions || {}; + var retryCount = 0; + + var errCallback = function(err) { + var maxRetries = options.maxRetries || 0; + if (err && err.code === 'TimeoutError') err.retryable = true; + if (err && err.retryable && retryCount < maxRetries) { + retryCount++; + var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); + setTimeout(sendRequest, delay + (err.retryAfter || 0)); + } else { + cb(err); + } + }; + + var sendRequest = function() { + var data = ''; + http.handleRequest(httpRequest, httpOptions, function(httpResponse) { + httpResponse.on('data', function(chunk) { data += chunk.toString(); }); + httpResponse.on('end', function() { + var statusCode = httpResponse.statusCode; + if (statusCode < 300) { + cb(null, data); + } else { + var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; + var err = util.error(new Error(), + { retryable: statusCode >= 500 || statusCode === 429 } + ); + if (retryAfter && err.retryable) err.retryAfter = retryAfter; + errCallback(err); + } + }); + }, errCallback); + }; + + process.nextTick(sendRequest); + } + +}; + +module.exports = util; + +}).call(this,require('_process')) +},{"../apis/metadata.json":86,"./core":188,"_process":250,"fs":248}],246:[function(require,module,exports){ +var util = require('../util'); +var Shape = require('../model/shape'); + +function DomXmlParser() { } + +DomXmlParser.prototype.parse = function(xml, shape) { + if (xml.replace(/^\s+/, '') === '') return {}; + + var result, error; + try { + if (window.DOMParser) { + try { + var parser = new DOMParser(); + result = parser.parseFromString(xml, 'text/xml'); + } catch (syntaxError) { + throw util.error(new Error('Parse error in document'), + { + originalError: syntaxError, + code: 'XMLParserError', + retryable: true + }); + } + + if (result.documentElement === null) { + throw util.error(new Error('Cannot parse empty document.'), + { + code: 'XMLParserError', + retryable: true + }); + } + + var isError = result.getElementsByTagName('parsererror')[0]; + if (isError && (isError.parentNode === result || + isError.parentNode.nodeName === 'body' || + isError.parentNode.parentNode === result || + isError.parentNode.parentNode.nodeName === 'body')) { + var errorElement = isError.getElementsByTagName('div')[0] || isError; + throw util.error(new Error(errorElement.textContent || 'Parser error in document'), + { + code: 'XMLParserError', + retryable: true + }); + } + } else if (window.ActiveXObject) { + result = new window.ActiveXObject('Microsoft.XMLDOM'); + result.async = false; + + if (!result.loadXML(xml)) { + throw util.error(new Error('Parse error in document'), + { + code: 'XMLParserError', + retryable: true + }); + } + } else { + throw new Error('Cannot load XML parser'); + } + } catch (e) { + error = e; + } + + if (result && result.documentElement && !error) { + var data = parseXml(result.documentElement, shape); + var metadata = result.getElementsByTagName('ResponseMetadata')[0]; + if (metadata) { + data.ResponseMetadata = parseXml(metadata, {}); + } + return data; + } else if (error) { + throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true}); + } else { // empty xml document + return {}; + } +}; + +function parseXml(xml, shape) { + if (!shape) shape = {}; + switch (shape.type) { + case 'structure': return parseStructure(xml, shape); + case 'map': return parseMap(xml, shape); + case 'list': return parseList(xml, shape); + case undefined: case null: return parseUnknown(xml); + default: return parseScalar(xml, shape); + } +} + +function parseStructure(xml, shape) { + var data = {}; + if (xml === null) return data; + + util.each(shape.members, function(memberName, memberShape) { + if (memberShape.isXmlAttribute) { + if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) { + var value = xml.attributes[memberShape.name].value; + data[memberName] = parseXml({textContent: value}, memberShape); + } + } else { + var xmlChild = memberShape.flattened ? xml : + xml.getElementsByTagName(memberShape.name)[0]; + if (xmlChild) { + data[memberName] = parseXml(xmlChild, memberShape); + } else if (!memberShape.flattened && memberShape.type === 'list') { + data[memberName] = memberShape.defaultValue; + } + } + }); + + return data; +} + +function parseMap(xml, shape) { + var data = {}; + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + var tagName = shape.flattened ? shape.name : 'entry'; + + var child = xml.firstElementChild; + while (child) { + if (child.nodeName === tagName) { + var key = child.getElementsByTagName(xmlKey)[0].textContent; + var value = child.getElementsByTagName(xmlValue)[0]; + data[key] = parseXml(value, shape.value); + } + child = child.nextElementSibling; + } + return data; +} + +function parseList(xml, shape) { + var data = []; + var tagName = shape.flattened ? shape.name : (shape.member.name || 'member'); + + var child = xml.firstElementChild; + while (child) { + if (child.nodeName === tagName) { + data.push(parseXml(child, shape.member)); + } + child = child.nextElementSibling; + } + return data; +} + +function parseScalar(xml, shape) { + if (xml.getAttribute) { + var encoding = xml.getAttribute('encoding'); + if (encoding === 'base64') { + shape = new Shape.create({type: encoding}); + } + } + + var text = xml.textContent; + if (text === '') text = null; + if (typeof shape.toType === 'function') { + return shape.toType(text); + } else { + return text; + } +} + +function parseUnknown(xml) { + if (xml === undefined || xml === null) return ''; + + if (!xml.firstElementChild) { + if (xml.parentNode.parentNode === null) return {}; + if (xml.childNodes.length === 0) return ''; + else return xml.textContent; + } + + var shape = {type: 'structure', members: {}}; + var child = xml.firstElementChild; + while (child) { + var tag = child.nodeName; + if (Object.prototype.hasOwnProperty.call(shape.members, tag)) { + shape.members[tag].type = 'list'; + } else { + shape.members[tag] = {name: tag}; + } + child = child.nextElementSibling; + } + return parseStructure(xml, shape); +} + +module.exports = DomXmlParser; + +},{"../model/shape":210,"../util":245}],247:[function(require,module,exports){ +var util = require('../util'); +var builder = require('xmlbuilder'); + +function XmlBuilder() { } + +XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) { + var xml = builder.create(rootElement); + applyNamespaces(xml, shape); + serialize(xml, params, shape); + return xml.children.length > 0 || noEmpty ? xml.root().toString() : ''; +}; + +function serialize(xml, value, shape) { + switch (shape.type) { + case 'structure': return serializeStructure(xml, value, shape); + case 'map': return serializeMap(xml, value, shape); + case 'list': return serializeList(xml, value, shape); + default: return serializeScalar(xml, value, shape); + } +} + +function serializeStructure(xml, params, shape) { + util.arrayEach(shape.memberNames, function(memberName) { + var memberShape = shape.members[memberName]; + if (memberShape.location !== 'body') return; + + var value = params[memberName]; + var name = memberShape.name; + if (value !== undefined && value !== null) { + if (memberShape.isXmlAttribute) { + xml.att(name, value); + } else if (memberShape.flattened) { + serialize(xml, value, memberShape); + } else { + var element = xml.ele(name); + applyNamespaces(element, memberShape); + serialize(element, value, memberShape); + } + } + }); +} + +function serializeMap(xml, map, shape) { + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + + util.each(map, function(key, value) { + var entry = xml.ele(shape.flattened ? shape.name : 'entry'); + serialize(entry.ele(xmlKey), key, shape.key); + serialize(entry.ele(xmlValue), value, shape.value); + }); +} + +function serializeList(xml, list, shape) { + if (shape.flattened) { + util.arrayEach(list, function(value) { + var name = shape.member.name || shape.name; + var element = xml.ele(name); + serialize(element, value, shape.member); + }); + } else { + util.arrayEach(list, function(value) { + var name = shape.member.name || 'member'; + var element = xml.ele(name); + serialize(element, value, shape.member); + }); + } +} + +function serializeScalar(xml, value, shape) { + xml.txt(shape.toWireFormat(value)); +} + +function applyNamespaces(xml, shape) { + var uri, prefix = 'xmlns'; + if (shape.xmlNamespaceUri) { + uri = shape.xmlNamespaceUri; + if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix; + } else if (xml.isRoot && shape.api.xmlNamespaceUri) { + uri = shape.api.xmlNamespaceUri; + } + + if (uri) xml.att(prefix, uri); +} + +module.exports = XmlBuilder; + +},{"../util":245,"xmlbuilder":289}],248:[function(require,module,exports){ + +},{}],249:[function(require,module,exports){ + +function EventEmitter() { + this._events = this._events || {}; + this._maxListeners = this._maxListeners || undefined; +} +module.exports = EventEmitter; + +EventEmitter.EventEmitter = EventEmitter; + +EventEmitter.prototype._events = undefined; +EventEmitter.prototype._maxListeners = undefined; + +EventEmitter.defaultMaxListeners = 10; + +EventEmitter.prototype.setMaxListeners = function(n) { + if (!isNumber(n) || n < 0 || isNaN(n)) + throw TypeError('n must be a positive number'); + this._maxListeners = n; + return this; +}; + +EventEmitter.prototype.emit = function(type) { + var er, handler, len, args, i, listeners; + + if (!this._events) + this._events = {}; + + if (type === 'error') { + if (!this._events.error || + (isObject(this._events.error) && !this._events.error.length)) { + er = arguments[1]; + if (er instanceof Error) { + throw er; // Unhandled 'error' event + } else { + var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); + err.context = er; + throw err; + } + } + } + + handler = this._events[type]; + + if (isUndefined(handler)) + return false; + + if (isFunction(handler)) { + switch (arguments.length) { + case 1: + handler.call(this); + break; + case 2: + handler.call(this, arguments[1]); + break; + case 3: + handler.call(this, arguments[1], arguments[2]); + break; + default: + args = Array.prototype.slice.call(arguments, 1); + handler.apply(this, args); + } + } else if (isObject(handler)) { + args = Array.prototype.slice.call(arguments, 1); + listeners = handler.slice(); + len = listeners.length; + for (i = 0; i < len; i++) + listeners[i].apply(this, args); + } + + return true; +}; + +EventEmitter.prototype.addListener = function(type, listener) { + var m; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events) + this._events = {}; + + if (this._events.newListener) + this.emit('newListener', type, + isFunction(listener.listener) ? + listener.listener : listener); + + if (!this._events[type]) + this._events[type] = listener; + else if (isObject(this._events[type])) + this._events[type].push(listener); + else + this._events[type] = [this._events[type], listener]; + + if (isObject(this._events[type]) && !this._events[type].warned) { + if (!isUndefined(this._maxListeners)) { + m = this._maxListeners; + } else { + m = EventEmitter.defaultMaxListeners; + } + + if (m && m > 0 && this._events[type].length > m) { + this._events[type].warned = true; + console.error('(node) warning: possible EventEmitter memory ' + + 'leak detected. %d listeners added. ' + + 'Use emitter.setMaxListeners() to increase limit.', + this._events[type].length); + if (typeof console.trace === 'function') { + console.trace(); + } + } + } + + return this; +}; + +EventEmitter.prototype.on = EventEmitter.prototype.addListener; + +EventEmitter.prototype.once = function(type, listener) { + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + var fired = false; + + function g() { + this.removeListener(type, g); + + if (!fired) { + fired = true; + listener.apply(this, arguments); + } + } + + g.listener = listener; + this.on(type, g); + + return this; +}; + +EventEmitter.prototype.removeListener = function(type, listener) { + var list, position, length, i; + + if (!isFunction(listener)) + throw TypeError('listener must be a function'); + + if (!this._events || !this._events[type]) + return this; + + list = this._events[type]; + length = list.length; + position = -1; + + if (list === listener || + (isFunction(list.listener) && list.listener === listener)) { + delete this._events[type]; + if (this._events.removeListener) + this.emit('removeListener', type, listener); + + } else if (isObject(list)) { + for (i = length; i-- > 0;) { + if (list[i] === listener || + (list[i].listener && list[i].listener === listener)) { + position = i; + break; + } + } + + if (position < 0) + return this; + + if (list.length === 1) { + list.length = 0; + delete this._events[type]; + } else { + list.splice(position, 1); + } + + if (this._events.removeListener) + this.emit('removeListener', type, listener); + } + + return this; +}; + +EventEmitter.prototype.removeAllListeners = function(type) { + var key, listeners; + + if (!this._events) + return this; + + if (!this._events.removeListener) { + if (arguments.length === 0) + this._events = {}; + else if (this._events[type]) + delete this._events[type]; + return this; + } + + if (arguments.length === 0) { + for (key in this._events) { + if (key === 'removeListener') continue; + this.removeAllListeners(key); + } + this.removeAllListeners('removeListener'); + this._events = {}; + return this; + } + + listeners = this._events[type]; + + if (isFunction(listeners)) { + this.removeListener(type, listeners); + } else if (listeners) { + while (listeners.length) + this.removeListener(type, listeners[listeners.length - 1]); + } + delete this._events[type]; + + return this; +}; + +EventEmitter.prototype.listeners = function(type) { + var ret; + if (!this._events || !this._events[type]) + ret = []; + else if (isFunction(this._events[type])) + ret = [this._events[type]]; + else + ret = this._events[type].slice(); + return ret; +}; + +EventEmitter.prototype.listenerCount = function(type) { + if (this._events) { + var evlistener = this._events[type]; + + if (isFunction(evlistener)) + return 1; + else if (evlistener) + return evlistener.length; + } + return 0; +}; + +EventEmitter.listenerCount = function(emitter, type) { + return emitter.listenerCount(type); +}; + +function isFunction(arg) { + return typeof arg === 'function'; +} + +function isNumber(arg) { + return typeof arg === 'number'; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isUndefined(arg) { + return arg === void 0; +} + +},{}],250:[function(require,module,exports){ +var process = module.exports = {}; + + +var cachedSetTimeout; +var cachedClearTimeout; + +function defaultSetTimout() { + throw new Error('setTimeout has not been defined'); +} +function defaultClearTimeout () { + throw new Error('clearTimeout has not been defined'); +} +(function () { + try { + if (typeof setTimeout === 'function') { + cachedSetTimeout = setTimeout; + } else { + cachedSetTimeout = defaultSetTimout; + } + } catch (e) { + cachedSetTimeout = defaultSetTimout; + } + try { + if (typeof clearTimeout === 'function') { + cachedClearTimeout = clearTimeout; + } else { + cachedClearTimeout = defaultClearTimeout; + } + } catch (e) { + cachedClearTimeout = defaultClearTimeout; + } +} ()) +function runTimeout(fun) { + if (cachedSetTimeout === setTimeout) { + return setTimeout(fun, 0); + } + if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { + cachedSetTimeout = setTimeout; + return setTimeout(fun, 0); + } + try { + return cachedSetTimeout(fun, 0); + } catch(e){ + try { + return cachedSetTimeout.call(null, fun, 0); + } catch(e){ + return cachedSetTimeout.call(this, fun, 0); + } + } + + +} +function runClearTimeout(marker) { + if (cachedClearTimeout === clearTimeout) { + return clearTimeout(marker); + } + if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { + cachedClearTimeout = clearTimeout; + return clearTimeout(marker); + } + try { + return cachedClearTimeout(marker); + } catch (e){ + try { + return cachedClearTimeout.call(null, marker); + } catch (e){ + return cachedClearTimeout.call(this, marker); + } + } + + + +} +var queue = []; +var draining = false; +var currentQueue; +var queueIndex = -1; + +function cleanUpNextTick() { + if (!draining || !currentQueue) { + return; + } + draining = false; + if (currentQueue.length) { + queue = currentQueue.concat(queue); + } else { + queueIndex = -1; + } + if (queue.length) { + drainQueue(); + } +} + +function drainQueue() { + if (draining) { + return; + } + var timeout = runTimeout(cleanUpNextTick); + draining = true; + + var len = queue.length; + while(len) { + currentQueue = queue; + queue = []; + while (++queueIndex < len) { + if (currentQueue) { + currentQueue[queueIndex].run(); + } + } + queueIndex = -1; + len = queue.length; + } + currentQueue = null; + draining = false; + runClearTimeout(timeout); +} + +process.nextTick = function (fun) { + var args = new Array(arguments.length - 1); + if (arguments.length > 1) { + for (var i = 1; i < arguments.length; i++) { + args[i - 1] = arguments[i]; + } + } + queue.push(new Item(fun, args)); + if (queue.length === 1 && !draining) { + runTimeout(drainQueue); + } +}; + +function Item(fun, array) { + this.fun = fun; + this.array = array; +} +Item.prototype.run = function () { + this.fun.apply(null, this.array); +}; +process.title = 'browser'; +process.browser = true; +process.env = {}; +process.argv = []; +process.version = ''; // empty string to avoid regexp issues +process.versions = {}; + +function noop() {} + +process.on = noop; +process.addListener = noop; +process.once = noop; +process.off = noop; +process.removeListener = noop; +process.removeAllListeners = noop; +process.emit = noop; + +process.binding = function (name) { + throw new Error('process.binding is not supported'); +}; + +process.cwd = function () { return '/' }; +process.chdir = function (dir) { + throw new Error('process.chdir is not supported'); +}; +process.umask = function() { return 0; }; + +},{}],251:[function(require,module,exports){ +(function (global){ + +;(function(root) { + + + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + + var punycode, + + + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + + key; + + + + + function error(type) { + throw new RangeError(errors[type]); + } + + + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + result = parts[0] + '@'; + string = parts[1]; + } + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + + function digitToBasic(digit, flag) { + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + + function decode(input) { + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + + baseMinusT; + + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + + inputLength, + + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + input = ucs2decode(input); + + inputLength = input.length; + + n = initialN; + delta = 0; + bias = initialBias; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + + if (basicLength) { + output.push(delimiter); + } + + while (handledCPCount < inputLength) { + + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + + + + punycode = { + + 'version': '1.4.1', + + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { + freeModule.exports = punycode; + } else { + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { + root.punycode = punycode; + } + +}(this)); + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{}],252:[function(require,module,exports){ + +'use strict'; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +},{}],253:[function(require,module,exports){ + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return map(objectKeys(obj), function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (isArray(obj[k])) { + return map(obj[k], function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +var isArray = Array.isArray || function (xs) { + return Object.prototype.toString.call(xs) === '[object Array]'; +}; + +function map (xs, f) { + if (xs.map) return xs.map(f); + var res = []; + for (var i = 0; i < xs.length; i++) { + res.push(f(xs[i], i)); + } + return res; +} + +var objectKeys = Object.keys || function (obj) { + var res = []; + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); + } + return res; +}; + +},{}],254:[function(require,module,exports){ +'use strict'; + +exports.decode = exports.parse = require('./decode'); +exports.encode = exports.stringify = require('./encode'); + +},{"./decode":252,"./encode":253}],255:[function(require,module,exports){ +if (typeof Object.create === 'function') { + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + ctor.prototype = Object.create(superCtor.prototype, { + constructor: { + value: ctor, + enumerable: false, + writable: true, + configurable: true + } + }); + }; +} else { + module.exports = function inherits(ctor, superCtor) { + ctor.super_ = superCtor + var TempCtor = function () {} + TempCtor.prototype = superCtor.prototype + ctor.prototype = new TempCtor() + ctor.prototype.constructor = ctor + } +} + +},{}],256:[function(require,module,exports){ +module.exports = function isBuffer(arg) { + return arg && typeof arg === 'object' + && typeof arg.copy === 'function' + && typeof arg.fill === 'function' + && typeof arg.readUInt8 === 'function'; +} +},{}],257:[function(require,module,exports){ +(function (process,global){ + +var formatRegExp = /%[sdj%]/g; +exports.format = function(f) { + if (!isString(f)) { + var objects = []; + for (var i = 0; i < arguments.length; i++) { + objects.push(inspect(arguments[i])); + } + return objects.join(' '); + } + + var i = 1; + var args = arguments; + var len = args.length; + var str = String(f).replace(formatRegExp, function(x) { + if (x === '%') return '%'; + if (i >= len) return x; + switch (x) { + case '%s': return String(args[i++]); + case '%d': return Number(args[i++]); + case '%j': + try { + return JSON.stringify(args[i++]); + } catch (_) { + return '[Circular]'; + } + default: + return x; + } + }); + for (var x = args[i]; i < len; x = args[++i]) { + if (isNull(x) || !isObject(x)) { + str += ' ' + x; + } else { + str += ' ' + inspect(x); + } + } + return str; +}; + + +exports.deprecate = function(fn, msg) { + if (isUndefined(global.process)) { + return function() { + return exports.deprecate(fn, msg).apply(this, arguments); + }; + } + + if (process.noDeprecation === true) { + return fn; + } + + var warned = false; + function deprecated() { + if (!warned) { + if (process.throwDeprecation) { + throw new Error(msg); + } else if (process.traceDeprecation) { + console.trace(msg); + } else { + console.error(msg); + } + warned = true; + } + return fn.apply(this, arguments); + } + + return deprecated; +}; + + +var debugs = {}; +var debugEnviron; +exports.debuglog = function(set) { + if (isUndefined(debugEnviron)) + debugEnviron = process.env.NODE_DEBUG || ''; + set = set.toUpperCase(); + if (!debugs[set]) { + if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { + var pid = process.pid; + debugs[set] = function() { + var msg = exports.format.apply(exports, arguments); + console.error('%s %d: %s', set, pid, msg); + }; + } else { + debugs[set] = function() {}; + } + } + return debugs[set]; +}; + + + + +function inspect(obj, opts) { + var ctx = { + seen: [], + stylize: stylizeNoColor + }; + if (arguments.length >= 3) ctx.depth = arguments[2]; + if (arguments.length >= 4) ctx.colors = arguments[3]; + if (isBoolean(opts)) { + ctx.showHidden = opts; + } else if (opts) { + exports._extend(ctx, opts); + } + if (isUndefined(ctx.showHidden)) ctx.showHidden = false; + if (isUndefined(ctx.depth)) ctx.depth = 2; + if (isUndefined(ctx.colors)) ctx.colors = false; + if (isUndefined(ctx.customInspect)) ctx.customInspect = true; + if (ctx.colors) ctx.stylize = stylizeWithColor; + return formatValue(ctx, obj, ctx.depth); +} +exports.inspect = inspect; + + +inspect.colors = { + 'bold' : [1, 22], + 'italic' : [3, 23], + 'underline' : [4, 24], + 'inverse' : [7, 27], + 'white' : [37, 39], + 'grey' : [90, 39], + 'black' : [30, 39], + 'blue' : [34, 39], + 'cyan' : [36, 39], + 'green' : [32, 39], + 'magenta' : [35, 39], + 'red' : [31, 39], + 'yellow' : [33, 39] +}; + +inspect.styles = { + 'special': 'cyan', + 'number': 'yellow', + 'boolean': 'yellow', + 'undefined': 'grey', + 'null': 'bold', + 'string': 'green', + 'date': 'magenta', + 'regexp': 'red' +}; + + +function stylizeWithColor(str, styleType) { + var style = inspect.styles[styleType]; + + if (style) { + return '\u001b[' + inspect.colors[style][0] + 'm' + str + + '\u001b[' + inspect.colors[style][1] + 'm'; + } else { + return str; + } +} + + +function stylizeNoColor(str, styleType) { + return str; +} + + +function arrayToHash(array) { + var hash = {}; + + array.forEach(function(val, idx) { + hash[val] = true; + }); + + return hash; +} + + +function formatValue(ctx, value, recurseTimes) { + if (ctx.customInspect && + value && + isFunction(value.inspect) && + value.inspect !== exports.inspect && + !(value.constructor && value.constructor.prototype === value)) { + var ret = value.inspect(recurseTimes, ctx); + if (!isString(ret)) { + ret = formatValue(ctx, ret, recurseTimes); + } + return ret; + } + + var primitive = formatPrimitive(ctx, value); + if (primitive) { + return primitive; + } + + var keys = Object.keys(value); + var visibleKeys = arrayToHash(keys); + + if (ctx.showHidden) { + keys = Object.getOwnPropertyNames(value); + } + + if (isError(value) + && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { + return formatError(value); + } + + if (keys.length === 0) { + if (isFunction(value)) { + var name = value.name ? ': ' + value.name : ''; + return ctx.stylize('[Function' + name + ']', 'special'); + } + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } + if (isDate(value)) { + return ctx.stylize(Date.prototype.toString.call(value), 'date'); + } + if (isError(value)) { + return formatError(value); + } + } + + var base = '', array = false, braces = ['{', '}']; + + if (isArray(value)) { + array = true; + braces = ['[', ']']; + } + + if (isFunction(value)) { + var n = value.name ? ': ' + value.name : ''; + base = ' [Function' + n + ']'; + } + + if (isRegExp(value)) { + base = ' ' + RegExp.prototype.toString.call(value); + } + + if (isDate(value)) { + base = ' ' + Date.prototype.toUTCString.call(value); + } + + if (isError(value)) { + base = ' ' + formatError(value); + } + + if (keys.length === 0 && (!array || value.length == 0)) { + return braces[0] + base + braces[1]; + } + + if (recurseTimes < 0) { + if (isRegExp(value)) { + return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); + } else { + return ctx.stylize('[Object]', 'special'); + } + } + + ctx.seen.push(value); + + var output; + if (array) { + output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); + } else { + output = keys.map(function(key) { + return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); + }); + } + + ctx.seen.pop(); + + return reduceToSingleString(output, base, braces); +} + + +function formatPrimitive(ctx, value) { + if (isUndefined(value)) + return ctx.stylize('undefined', 'undefined'); + if (isString(value)) { + var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') + .replace(/'/g, "\\'") + .replace(/\\"/g, '"') + '\''; + return ctx.stylize(simple, 'string'); + } + if (isNumber(value)) + return ctx.stylize('' + value, 'number'); + if (isBoolean(value)) + return ctx.stylize('' + value, 'boolean'); + if (isNull(value)) + return ctx.stylize('null', 'null'); +} + + +function formatError(value) { + return '[' + Error.prototype.toString.call(value) + ']'; +} + + +function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { + var output = []; + for (var i = 0, l = value.length; i < l; ++i) { + if (hasOwnProperty(value, String(i))) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + String(i), true)); + } else { + output.push(''); + } + } + keys.forEach(function(key) { + if (!key.match(/^\d+$/)) { + output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, + key, true)); + } + }); + return output; +} + + +function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { + var name, str, desc; + desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; + if (desc.get) { + if (desc.set) { + str = ctx.stylize('[Getter/Setter]', 'special'); + } else { + str = ctx.stylize('[Getter]', 'special'); + } + } else { + if (desc.set) { + str = ctx.stylize('[Setter]', 'special'); + } + } + if (!hasOwnProperty(visibleKeys, key)) { + name = '[' + key + ']'; + } + if (!str) { + if (ctx.seen.indexOf(desc.value) < 0) { + if (isNull(recurseTimes)) { + str = formatValue(ctx, desc.value, null); + } else { + str = formatValue(ctx, desc.value, recurseTimes - 1); + } + if (str.indexOf('\n') > -1) { + if (array) { + str = str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n').substr(2); + } else { + str = '\n' + str.split('\n').map(function(line) { + return ' ' + line; + }).join('\n'); + } + } + } else { + str = ctx.stylize('[Circular]', 'special'); + } + } + if (isUndefined(name)) { + if (array && key.match(/^\d+$/)) { + return str; + } + name = JSON.stringify('' + key); + if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { + name = name.substr(1, name.length - 2); + name = ctx.stylize(name, 'name'); + } else { + name = name.replace(/'/g, "\\'") + .replace(/\\"/g, '"') + .replace(/(^"|"$)/g, "'"); + name = ctx.stylize(name, 'string'); + } + } + + return name + ': ' + str; +} + + +function reduceToSingleString(output, base, braces) { + var numLinesEst = 0; + var length = output.reduce(function(prev, cur) { + numLinesEst++; + if (cur.indexOf('\n') >= 0) numLinesEst++; + return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; + }, 0); + + if (length > 60) { + return braces[0] + + (base === '' ? '' : base + '\n ') + + ' ' + + output.join(',\n ') + + ' ' + + braces[1]; + } + + return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; +} + + +function isArray(ar) { + return Array.isArray(ar); +} +exports.isArray = isArray; + +function isBoolean(arg) { + return typeof arg === 'boolean'; +} +exports.isBoolean = isBoolean; + +function isNull(arg) { + return arg === null; +} +exports.isNull = isNull; + +function isNullOrUndefined(arg) { + return arg == null; +} +exports.isNullOrUndefined = isNullOrUndefined; + +function isNumber(arg) { + return typeof arg === 'number'; +} +exports.isNumber = isNumber; + +function isString(arg) { + return typeof arg === 'string'; +} +exports.isString = isString; + +function isSymbol(arg) { + return typeof arg === 'symbol'; +} +exports.isSymbol = isSymbol; + +function isUndefined(arg) { + return arg === void 0; +} +exports.isUndefined = isUndefined; + +function isRegExp(re) { + return isObject(re) && objectToString(re) === '[object RegExp]'; +} +exports.isRegExp = isRegExp; + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} +exports.isObject = isObject; + +function isDate(d) { + return isObject(d) && objectToString(d) === '[object Date]'; +} +exports.isDate = isDate; + +function isError(e) { + return isObject(e) && + (objectToString(e) === '[object Error]' || e instanceof Error); +} +exports.isError = isError; + +function isFunction(arg) { + return typeof arg === 'function'; +} +exports.isFunction = isFunction; + +function isPrimitive(arg) { + return arg === null || + typeof arg === 'boolean' || + typeof arg === 'number' || + typeof arg === 'string' || + typeof arg === 'symbol' || // ES6 symbol + typeof arg === 'undefined'; +} +exports.isPrimitive = isPrimitive; + +exports.isBuffer = require('./support/isBuffer'); + +function objectToString(o) { + return Object.prototype.toString.call(o); +} + + +function pad(n) { + return n < 10 ? '0' + n.toString(10) : n.toString(10); +} + + +var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', + 'Oct', 'Nov', 'Dec']; + +function timestamp() { + var d = new Date(); + var time = [pad(d.getHours()), + pad(d.getMinutes()), + pad(d.getSeconds())].join(':'); + return [d.getDate(), months[d.getMonth()], time].join(' '); +} + + +exports.log = function() { + console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); +}; + + + +exports.inherits = require('inherits'); + +exports._extend = function(origin, add) { + if (!add || !isObject(add)) return origin; + + var keys = Object.keys(add); + var i = keys.length; + while (i--) { + origin[keys[i]] = add[keys[i]]; + } + return origin; +}; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./support/isBuffer":256,"_process":250,"inherits":255}],258:[function(require,module,exports){ +(function (global){ + + + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') +var isArray = require('isarray') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + + +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + + +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + + + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + + +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + + +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + + +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} + +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + that = array + that.__proto__ = Buffer.prototype + } else { + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + + if (start === undefined || start < 0) { + start = 0 + } + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + if (buffer.length === 0) return -1 + + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + byteOffset = dir ? 0 : (buffer.length - 1) + } + + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + if (Buffer.isBuffer(val)) { + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + + +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +Buffer.prototype.fill = function fill (val, start, end, encoding) { + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + if (str.length < 2) return '' + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + if (codePoint > 0xD7FF && codePoint < 0xE000) { + if (!leadSurrogate) { + if (codePoint > 0xDBFF) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + leadSurrogate = codePoint + + continue + } + + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"base64-js":259,"ieee754":260,"isarray":261}],259:[function(require,module,exports){ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function placeHoldersCount (b64) { + var len = b64.length + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 +} + +function byteLength (b64) { + return b64.length * 3 / 4 - placeHoldersCount(b64) +} + +function toByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + var len = b64.length + placeHolders = placeHoldersCount(b64) + + arr = new Arr(len * 3 / 4 - placeHolders) + + l = placeHolders > 0 ? len - 4 : len + + var L = 0 + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] + arr[L++] = (tmp >> 16) & 0xFF + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[L++] = tmp & 0xFF + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var output = '' + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + if (extraBytes === 1) { + tmp = uint8[len - 1] + output += lookup[tmp >> 2] + output += lookup[(tmp << 4) & 0x3F] + output += '==' + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) + output += lookup[tmp >> 10] + output += lookup[(tmp >> 4) & 0x3F] + output += lookup[(tmp << 2) & 0x3F] + output += '=' + } + + parts.push(output) + + return parts.join('') +} + +},{}],260:[function(require,module,exports){ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} + +},{}],261:[function(require,module,exports){ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; + +},{}],262:[function(require,module,exports){ +var Buffer = require('buffer').Buffer; +var intSize = 4; +var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); +var chrsz = 8; + +function toArray(buf, bigEndian) { + if ((buf.length % intSize) !== 0) { + var len = buf.length + (intSize - (buf.length % intSize)); + buf = Buffer.concat([buf, zeroBuffer], len); + } + + var arr = []; + var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; + for (var i = 0; i < buf.length; i += intSize) { + arr.push(fn.call(buf, i)); + } + return arr; +} + +function toBuffer(arr, size, bigEndian) { + var buf = new Buffer(size); + var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; + for (var i = 0; i < arr.length; i++) { + fn.call(buf, arr[i], i * 4, true); + } + return buf; +} + +function hash(buf, fn, hashSize, bigEndian) { + if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); + var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); + return toBuffer(arr, hashSize, bigEndian); +} + +module.exports = { hash: hash }; + +},{"buffer":258}],263:[function(require,module,exports){ +var Buffer = require('buffer').Buffer +var sha = require('./sha') +var sha256 = require('./sha256') +var rng = require('./rng') +var md5 = require('./md5') + +var algorithms = { + sha1: sha, + sha256: sha256, + md5: md5 +} + +var blocksize = 64 +var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0) +function hmac(fn, key, data) { + if(!Buffer.isBuffer(key)) key = new Buffer(key) + if(!Buffer.isBuffer(data)) data = new Buffer(data) + + if(key.length > blocksize) { + key = fn(key) + } else if(key.length < blocksize) { + key = Buffer.concat([key, zeroBuffer], blocksize) + } + + var ipad = new Buffer(blocksize), opad = new Buffer(blocksize) + for(var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + var hash = fn(Buffer.concat([ipad, data])) + return fn(Buffer.concat([opad, hash])) +} + +function hash(alg, key) { + alg = alg || 'sha1' + var fn = algorithms[alg] + var bufs = [] + var length = 0 + if(!fn) error('algorithm:', alg, 'is not yet supported') + return { + update: function (data) { + if(!Buffer.isBuffer(data)) data = new Buffer(data) + + bufs.push(data) + length += data.length + return this + }, + digest: function (enc) { + var buf = Buffer.concat(bufs) + var r = key ? hmac(fn, key, buf) : fn(buf) + bufs = null + return enc ? r.toString(enc) : r + } + } +} + +function error () { + var m = [].slice.call(arguments).join(' ') + throw new Error([ + m, + 'we accept pull requests', + 'http://github.com/dominictarr/crypto-browserify' + ].join('\n')) +} + +exports.createHash = function (alg) { return hash(alg) } +exports.createHmac = function (alg, key) { return hash(alg, key) } +exports.randomBytes = function(size, callback) { + if (callback && callback.call) { + try { + callback.call(this, undefined, new Buffer(rng(size))) + } catch (err) { callback(err) } + } else { + return new Buffer(rng(size)) + } +} + +function each(a, f) { + for(var i in a) + f(a[i], i) +} + +each(['createCredentials' +, 'createCipher' +, 'createCipheriv' +, 'createDecipher' +, 'createDecipheriv' +, 'createSign' +, 'createVerify' +, 'createDiffieHellman' +, 'pbkdf2'], function (name) { + exports[name] = function () { + error('sorry,', name, 'is not implemented yet') + } +}) + +},{"./md5":264,"./rng":265,"./sha":266,"./sha256":267,"buffer":258}],264:[function(require,module,exports){ + + +var helpers = require('./helpers'); + + +function md5_vm_test() +{ + return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; +} + + +function core_md5(x, len) +{ + + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); + +} + + +function md5_cmn(q, a, b, x, s, t) +{ + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); +} +function md5_ff(a, b, c, d, x, s, t) +{ + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) +{ + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) +{ + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) +{ + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); +} + + +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + + +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function md5(buf) { + return helpers.hash(buf, core_md5, 16); +}; + +},{"./helpers":262}],265:[function(require,module,exports){ +(function() { + var _global = this; + + var mathRNG, whatwgRNG; + + mathRNG = function(size) { + var bytes = new Array(size); + var r; + + for (var i = 0, r; i < size; i++) { + if ((i & 0x03) == 0) r = Math.random() * 0x100000000; + bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return bytes; + } + + if (_global.crypto && crypto.getRandomValues) { + whatwgRNG = function(size) { + var bytes = new Uint8Array(size); + crypto.getRandomValues(bytes); + return bytes; + } + } + + module.exports = whatwgRNG || mathRNG; + +}()) + +},{}],266:[function(require,module,exports){ + + +var helpers = require('./helpers'); + + +function core_sha1(x, len) +{ + + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + + +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + + +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + + +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + + +function rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function sha1(buf) { + return helpers.hash(buf, core_sha1, 20, true); +}; + +},{"./helpers":262}],267:[function(require,module,exports){ + + + +var helpers = require('./helpers'); + +var safe_add = function(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +}; + +var S = function(X, n) { + return (X >>> n) | (X << (32 - n)); +}; + +var R = function(X, n) { + return (X >>> n); +}; + +var Ch = function(x, y, z) { + return ((x & y) ^ ((~x) & z)); +}; + +var Maj = function(x, y, z) { + return ((x & y) ^ (x & z) ^ (y & z)); +}; + +var Sigma0256 = function(x) { + return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); +}; + +var Sigma1256 = function(x) { + return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); +}; + +var Gamma0256 = function(x) { + return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); +}; + +var Gamma1256 = function(x) { + return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); +}; + +var core_sha256 = function(m, l) { + var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); + var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); + var W = new Array(64); + var a, b, c, d, e, f, g, h, i, j; + var T1, T2; + + m[l >> 5] |= 0x80 << (24 - l % 32); + m[((l + 64 >> 9) << 4) + 15] = l; + for (var i = 0; i < m.length; i += 16) { + a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; + for (var j = 0; j < 64; j++) { + if (j < 16) { + W[j] = m[j + i]; + } else { + W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); + } + T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); + T2 = safe_add(Sigma0256(a), Maj(a, b, c)); + h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); + } + HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); + } + return HASH; +}; + +module.exports = function sha256(buf) { + return helpers.hash(buf, core_sha256, 32, true); +}; + +},{"./helpers":262}],268:[function(require,module,exports){ +(function(exports) { + "use strict"; + + function isArray(obj) { + if (obj !== null) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } else { + return false; + } + } + + function isObject(obj) { + if (obj !== null) { + return Object.prototype.toString.call(obj) === "[object Object]"; + } else { + return false; + } + } + + function strictDeepEqual(first, second) { + if (first === second) { + return true; + } + + var firstType = Object.prototype.toString.call(first); + if (firstType !== Object.prototype.toString.call(second)) { + return false; + } + if (isArray(first) === true) { + if (first.length !== second.length) { + return false; + } + for (var i = 0; i < first.length; i++) { + if (strictDeepEqual(first[i], second[i]) === false) { + return false; + } + } + return true; + } + if (isObject(first) === true) { + var keysSeen = {}; + for (var key in first) { + if (hasOwnProperty.call(first, key)) { + if (strictDeepEqual(first[key], second[key]) === false) { + return false; + } + keysSeen[key] = true; + } + } + for (var key2 in second) { + if (hasOwnProperty.call(second, key2)) { + if (keysSeen[key2] !== true) { + return false; + } + } + } + return true; + } + return false; + } + + function isFalse(obj) { + + if (obj === "" || obj === false || obj === null) { + return true; + } else if (isArray(obj) && obj.length === 0) { + return true; + } else if (isObject(obj)) { + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + return false; + } + } + return true; + } else { + return false; + } + } + + function objValues(obj) { + var keys = Object.keys(obj); + var values = []; + for (var i = 0; i < keys.length; i++) { + values.push(obj[keys[i]]); + } + return values; + } + + function merge(a, b) { + var merged = {}; + for (var key in a) { + merged[key] = a[key]; + } + for (var key2 in b) { + merged[key2] = b[key2]; + } + return merged; + } + + var trimLeft; + if (typeof String.prototype.trimLeft === "function") { + trimLeft = function(str) { + return str.trimLeft(); + }; + } else { + trimLeft = function(str) { + return str.match(/^\s*(.*)/)[1]; + }; + } + + var TYPE_NUMBER = 0; + var TYPE_ANY = 1; + var TYPE_STRING = 2; + var TYPE_ARRAY = 3; + var TYPE_OBJECT = 4; + var TYPE_BOOLEAN = 5; + var TYPE_EXPREF = 6; + var TYPE_NULL = 7; + var TYPE_ARRAY_NUMBER = 8; + var TYPE_ARRAY_STRING = 9; + + var TOK_EOF = "EOF"; + var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier"; + var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier"; + var TOK_RBRACKET = "Rbracket"; + var TOK_RPAREN = "Rparen"; + var TOK_COMMA = "Comma"; + var TOK_COLON = "Colon"; + var TOK_RBRACE = "Rbrace"; + var TOK_NUMBER = "Number"; + var TOK_CURRENT = "Current"; + var TOK_EXPREF = "Expref"; + var TOK_PIPE = "Pipe"; + var TOK_OR = "Or"; + var TOK_AND = "And"; + var TOK_EQ = "EQ"; + var TOK_GT = "GT"; + var TOK_LT = "LT"; + var TOK_GTE = "GTE"; + var TOK_LTE = "LTE"; + var TOK_NE = "NE"; + var TOK_FLATTEN = "Flatten"; + var TOK_STAR = "Star"; + var TOK_FILTER = "Filter"; + var TOK_DOT = "Dot"; + var TOK_NOT = "Not"; + var TOK_LBRACE = "Lbrace"; + var TOK_LBRACKET = "Lbracket"; + var TOK_LPAREN= "Lparen"; + var TOK_LITERAL= "Literal"; + + + var basicTokens = { + ".": TOK_DOT, + "*": TOK_STAR, + ",": TOK_COMMA, + ":": TOK_COLON, + "{": TOK_LBRACE, + "}": TOK_RBRACE, + "]": TOK_RBRACKET, + "(": TOK_LPAREN, + ")": TOK_RPAREN, + "@": TOK_CURRENT + }; + + var operatorStartToken = { + "<": true, + ">": true, + "=": true, + "!": true + }; + + var skipChars = { + " ": true, + "\t": true, + "\n": true + }; + + + function isAlpha(ch) { + return (ch >= "a" && ch <= "z") || + (ch >= "A" && ch <= "Z") || + ch === "_"; + } + + function isNum(ch) { + return (ch >= "0" && ch <= "9") || + ch === "-"; + } + function isAlphaNum(ch) { + return (ch >= "a" && ch <= "z") || + (ch >= "A" && ch <= "Z") || + (ch >= "0" && ch <= "9") || + ch === "_"; + } + + function Lexer() { + } + Lexer.prototype = { + tokenize: function(stream) { + var tokens = []; + this._current = 0; + var start; + var identifier; + var token; + while (this._current < stream.length) { + if (isAlpha(stream[this._current])) { + start = this._current; + identifier = this._consumeUnquotedIdentifier(stream); + tokens.push({type: TOK_UNQUOTEDIDENTIFIER, + value: identifier, + start: start}); + } else if (basicTokens[stream[this._current]] !== undefined) { + tokens.push({type: basicTokens[stream[this._current]], + value: stream[this._current], + start: this._current}); + this._current++; + } else if (isNum(stream[this._current])) { + token = this._consumeNumber(stream); + tokens.push(token); + } else if (stream[this._current] === "[") { + token = this._consumeLBracket(stream); + tokens.push(token); + } else if (stream[this._current] === "\"") { + start = this._current; + identifier = this._consumeQuotedIdentifier(stream); + tokens.push({type: TOK_QUOTEDIDENTIFIER, + value: identifier, + start: start}); + } else if (stream[this._current] === "'") { + start = this._current; + identifier = this._consumeRawStringLiteral(stream); + tokens.push({type: TOK_LITERAL, + value: identifier, + start: start}); + } else if (stream[this._current] === "`") { + start = this._current; + var literal = this._consumeLiteral(stream); + tokens.push({type: TOK_LITERAL, + value: literal, + start: start}); + } else if (operatorStartToken[stream[this._current]] !== undefined) { + tokens.push(this._consumeOperator(stream)); + } else if (skipChars[stream[this._current]] !== undefined) { + this._current++; + } else if (stream[this._current] === "&") { + start = this._current; + this._current++; + if (stream[this._current] === "&") { + this._current++; + tokens.push({type: TOK_AND, value: "&&", start: start}); + } else { + tokens.push({type: TOK_EXPREF, value: "&", start: start}); + } + } else if (stream[this._current] === "|") { + start = this._current; + this._current++; + if (stream[this._current] === "|") { + this._current++; + tokens.push({type: TOK_OR, value: "||", start: start}); + } else { + tokens.push({type: TOK_PIPE, value: "|", start: start}); + } + } else { + var error = new Error("Unknown character:" + stream[this._current]); + error.name = "LexerError"; + throw error; + } + } + return tokens; + }, + + _consumeUnquotedIdentifier: function(stream) { + var start = this._current; + this._current++; + while (this._current < stream.length && isAlphaNum(stream[this._current])) { + this._current++; + } + return stream.slice(start, this._current); + }, + + _consumeQuotedIdentifier: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (stream[this._current] !== "\"" && this._current < maxLength) { + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "\"")) { + current += 2; + } else { + current++; + } + this._current = current; + } + this._current++; + return JSON.parse(stream.slice(start, this._current)); + }, + + _consumeRawStringLiteral: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (stream[this._current] !== "'" && this._current < maxLength) { + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "'")) { + current += 2; + } else { + current++; + } + this._current = current; + } + this._current++; + var literal = stream.slice(start + 1, this._current - 1); + return literal.replace("\\'", "'"); + }, + + _consumeNumber: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (isNum(stream[this._current]) && this._current < maxLength) { + this._current++; + } + var value = parseInt(stream.slice(start, this._current)); + return {type: TOK_NUMBER, value: value, start: start}; + }, + + _consumeLBracket: function(stream) { + var start = this._current; + this._current++; + if (stream[this._current] === "?") { + this._current++; + return {type: TOK_FILTER, value: "[?", start: start}; + } else if (stream[this._current] === "]") { + this._current++; + return {type: TOK_FLATTEN, value: "[]", start: start}; + } else { + return {type: TOK_LBRACKET, value: "[", start: start}; + } + }, + + _consumeOperator: function(stream) { + var start = this._current; + var startingChar = stream[start]; + this._current++; + if (startingChar === "!") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_NE, value: "!=", start: start}; + } else { + return {type: TOK_NOT, value: "!", start: start}; + } + } else if (startingChar === "<") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_LTE, value: "<=", start: start}; + } else { + return {type: TOK_LT, value: "<", start: start}; + } + } else if (startingChar === ">") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_GTE, value: ">=", start: start}; + } else { + return {type: TOK_GT, value: ">", start: start}; + } + } else if (startingChar === "=") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_EQ, value: "==", start: start}; + } + } + }, + + _consumeLiteral: function(stream) { + this._current++; + var start = this._current; + var maxLength = stream.length; + var literal; + while(stream[this._current] !== "`" && this._current < maxLength) { + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "`")) { + current += 2; + } else { + current++; + } + this._current = current; + } + var literalString = trimLeft(stream.slice(start, this._current)); + literalString = literalString.replace("\\`", "`"); + if (this._looksLikeJSON(literalString)) { + literal = JSON.parse(literalString); + } else { + literal = JSON.parse("\"" + literalString + "\""); + } + this._current++; + return literal; + }, + + _looksLikeJSON: function(literalString) { + var startingChars = "[{\""; + var jsonLiterals = ["true", "false", "null"]; + var numberLooking = "-0123456789"; + + if (literalString === "") { + return false; + } else if (startingChars.indexOf(literalString[0]) >= 0) { + return true; + } else if (jsonLiterals.indexOf(literalString) >= 0) { + return true; + } else if (numberLooking.indexOf(literalString[0]) >= 0) { + try { + JSON.parse(literalString); + return true; + } catch (ex) { + return false; + } + } else { + return false; + } + } + }; + + var bindingPower = {}; + bindingPower[TOK_EOF] = 0; + bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0; + bindingPower[TOK_QUOTEDIDENTIFIER] = 0; + bindingPower[TOK_RBRACKET] = 0; + bindingPower[TOK_RPAREN] = 0; + bindingPower[TOK_COMMA] = 0; + bindingPower[TOK_RBRACE] = 0; + bindingPower[TOK_NUMBER] = 0; + bindingPower[TOK_CURRENT] = 0; + bindingPower[TOK_EXPREF] = 0; + bindingPower[TOK_PIPE] = 1; + bindingPower[TOK_OR] = 2; + bindingPower[TOK_AND] = 3; + bindingPower[TOK_EQ] = 5; + bindingPower[TOK_GT] = 5; + bindingPower[TOK_LT] = 5; + bindingPower[TOK_GTE] = 5; + bindingPower[TOK_LTE] = 5; + bindingPower[TOK_NE] = 5; + bindingPower[TOK_FLATTEN] = 9; + bindingPower[TOK_STAR] = 20; + bindingPower[TOK_FILTER] = 21; + bindingPower[TOK_DOT] = 40; + bindingPower[TOK_NOT] = 45; + bindingPower[TOK_LBRACE] = 50; + bindingPower[TOK_LBRACKET] = 55; + bindingPower[TOK_LPAREN] = 60; + + function Parser() { + } + + Parser.prototype = { + parse: function(expression) { + this._loadTokens(expression); + this.index = 0; + var ast = this.expression(0); + if (this._lookahead(0) !== TOK_EOF) { + var t = this._lookaheadToken(0); + var error = new Error( + "Unexpected token type: " + t.type + ", value: " + t.value); + error.name = "ParserError"; + throw error; + } + return ast; + }, + + _loadTokens: function(expression) { + var lexer = new Lexer(); + var tokens = lexer.tokenize(expression); + tokens.push({type: TOK_EOF, value: "", start: expression.length}); + this.tokens = tokens; + }, + + expression: function(rbp) { + var leftToken = this._lookaheadToken(0); + this._advance(); + var left = this.nud(leftToken); + var currentToken = this._lookahead(0); + while (rbp < bindingPower[currentToken]) { + this._advance(); + left = this.led(currentToken, left); + currentToken = this._lookahead(0); + } + return left; + }, + + _lookahead: function(number) { + return this.tokens[this.index + number].type; + }, + + _lookaheadToken: function(number) { + return this.tokens[this.index + number]; + }, + + _advance: function() { + this.index++; + }, + + nud: function(token) { + var left; + var right; + var expression; + switch (token.type) { + case TOK_LITERAL: + return {type: "Literal", value: token.value}; + case TOK_UNQUOTEDIDENTIFIER: + return {type: "Field", name: token.value}; + case TOK_QUOTEDIDENTIFIER: + var node = {type: "Field", name: token.value}; + if (this._lookahead(0) === TOK_LPAREN) { + throw new Error("Quoted identifier not allowed for function names."); + } else { + return node; + } + break; + case TOK_NOT: + right = this.expression(bindingPower.Not); + return {type: "NotExpression", children: [right]}; + case TOK_STAR: + left = {type: "Identity"}; + right = null; + if (this._lookahead(0) === TOK_RBRACKET) { + right = {type: "Identity"}; + } else { + right = this._parseProjectionRHS(bindingPower.Star); + } + return {type: "ValueProjection", children: [left, right]}; + case TOK_FILTER: + return this.led(token.type, {type: "Identity"}); + case TOK_LBRACE: + return this._parseMultiselectHash(); + case TOK_FLATTEN: + left = {type: TOK_FLATTEN, children: [{type: "Identity"}]}; + right = this._parseProjectionRHS(bindingPower.Flatten); + return {type: "Projection", children: [left, right]}; + case TOK_LBRACKET: + if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) { + right = this._parseIndexExpression(); + return this._projectIfSlice({type: "Identity"}, right); + } else if (this._lookahead(0) === TOK_STAR && + this._lookahead(1) === TOK_RBRACKET) { + this._advance(); + this._advance(); + right = this._parseProjectionRHS(bindingPower.Star); + return {type: "Projection", + children: [{type: "Identity"}, right]}; + } else { + return this._parseMultiselectList(); + } + break; + case TOK_CURRENT: + return {type: TOK_CURRENT}; + case TOK_EXPREF: + expression = this.expression(bindingPower.Expref); + return {type: "ExpressionReference", children: [expression]}; + case TOK_LPAREN: + var args = []; + while (this._lookahead(0) !== TOK_RPAREN) { + if (this._lookahead(0) === TOK_CURRENT) { + expression = {type: TOK_CURRENT}; + this._advance(); + } else { + expression = this.expression(0); + } + args.push(expression); + } + this._match(TOK_RPAREN); + return args[0]; + default: + this._errorToken(token); + } + }, + + led: function(tokenName, left) { + var right; + switch(tokenName) { + case TOK_DOT: + var rbp = bindingPower.Dot; + if (this._lookahead(0) !== TOK_STAR) { + right = this._parseDotRHS(rbp); + return {type: "Subexpression", children: [left, right]}; + } else { + this._advance(); + right = this._parseProjectionRHS(rbp); + return {type: "ValueProjection", children: [left, right]}; + } + break; + case TOK_PIPE: + right = this.expression(bindingPower.Pipe); + return {type: TOK_PIPE, children: [left, right]}; + case TOK_OR: + right = this.expression(bindingPower.Or); + return {type: "OrExpression", children: [left, right]}; + case TOK_AND: + right = this.expression(bindingPower.And); + return {type: "AndExpression", children: [left, right]}; + case TOK_LPAREN: + var name = left.name; + var args = []; + var expression, node; + while (this._lookahead(0) !== TOK_RPAREN) { + if (this._lookahead(0) === TOK_CURRENT) { + expression = {type: TOK_CURRENT}; + this._advance(); + } else { + expression = this.expression(0); + } + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + } + args.push(expression); + } + this._match(TOK_RPAREN); + node = {type: "Function", name: name, children: args}; + return node; + case TOK_FILTER: + var condition = this.expression(0); + this._match(TOK_RBRACKET); + if (this._lookahead(0) === TOK_FLATTEN) { + right = {type: "Identity"}; + } else { + right = this._parseProjectionRHS(bindingPower.Filter); + } + return {type: "FilterProjection", children: [left, right, condition]}; + case TOK_FLATTEN: + var leftNode = {type: TOK_FLATTEN, children: [left]}; + var rightNode = this._parseProjectionRHS(bindingPower.Flatten); + return {type: "Projection", children: [leftNode, rightNode]}; + case TOK_EQ: + case TOK_NE: + case TOK_GT: + case TOK_GTE: + case TOK_LT: + case TOK_LTE: + return this._parseComparator(left, tokenName); + case TOK_LBRACKET: + var token = this._lookaheadToken(0); + if (token.type === TOK_NUMBER || token.type === TOK_COLON) { + right = this._parseIndexExpression(); + return this._projectIfSlice(left, right); + } else { + this._match(TOK_STAR); + this._match(TOK_RBRACKET); + right = this._parseProjectionRHS(bindingPower.Star); + return {type: "Projection", children: [left, right]}; + } + break; + default: + this._errorToken(this._lookaheadToken(0)); + } + }, + + _match: function(tokenType) { + if (this._lookahead(0) === tokenType) { + this._advance(); + } else { + var t = this._lookaheadToken(0); + var error = new Error("Expected " + tokenType + ", got: " + t.type); + error.name = "ParserError"; + throw error; + } + }, + + _errorToken: function(token) { + var error = new Error("Invalid token (" + + token.type + "): \"" + + token.value + "\""); + error.name = "ParserError"; + throw error; + }, + + + _parseIndexExpression: function() { + if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) { + return this._parseSliceExpression(); + } else { + var node = { + type: "Index", + value: this._lookaheadToken(0).value}; + this._advance(); + this._match(TOK_RBRACKET); + return node; + } + }, + + _projectIfSlice: function(left, right) { + var indexExpr = {type: "IndexExpression", children: [left, right]}; + if (right.type === "Slice") { + return { + type: "Projection", + children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)] + }; + } else { + return indexExpr; + } + }, + + _parseSliceExpression: function() { + var parts = [null, null, null]; + var index = 0; + var currentToken = this._lookahead(0); + while (currentToken !== TOK_RBRACKET && index < 3) { + if (currentToken === TOK_COLON) { + index++; + this._advance(); + } else if (currentToken === TOK_NUMBER) { + parts[index] = this._lookaheadToken(0).value; + this._advance(); + } else { + var t = this._lookahead(0); + var error = new Error("Syntax error, unexpected token: " + + t.value + "(" + t.type + ")"); + error.name = "Parsererror"; + throw error; + } + currentToken = this._lookahead(0); + } + this._match(TOK_RBRACKET); + return { + type: "Slice", + children: parts + }; + }, + + _parseComparator: function(left, comparator) { + var right = this.expression(bindingPower[comparator]); + return {type: "Comparator", name: comparator, children: [left, right]}; + }, + + _parseDotRHS: function(rbp) { + var lookahead = this._lookahead(0); + var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR]; + if (exprTokens.indexOf(lookahead) >= 0) { + return this.expression(rbp); + } else if (lookahead === TOK_LBRACKET) { + this._match(TOK_LBRACKET); + return this._parseMultiselectList(); + } else if (lookahead === TOK_LBRACE) { + this._match(TOK_LBRACE); + return this._parseMultiselectHash(); + } + }, + + _parseProjectionRHS: function(rbp) { + var right; + if (bindingPower[this._lookahead(0)] < 10) { + right = {type: "Identity"}; + } else if (this._lookahead(0) === TOK_LBRACKET) { + right = this.expression(rbp); + } else if (this._lookahead(0) === TOK_FILTER) { + right = this.expression(rbp); + } else if (this._lookahead(0) === TOK_DOT) { + this._match(TOK_DOT); + right = this._parseDotRHS(rbp); + } else { + var t = this._lookaheadToken(0); + var error = new Error("Sytanx error, unexpected token: " + + t.value + "(" + t.type + ")"); + error.name = "ParserError"; + throw error; + } + return right; + }, + + _parseMultiselectList: function() { + var expressions = []; + while (this._lookahead(0) !== TOK_RBRACKET) { + var expression = this.expression(0); + expressions.push(expression); + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + if (this._lookahead(0) === TOK_RBRACKET) { + throw new Error("Unexpected token Rbracket"); + } + } + } + this._match(TOK_RBRACKET); + return {type: "MultiSelectList", children: expressions}; + }, + + _parseMultiselectHash: function() { + var pairs = []; + var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER]; + var keyToken, keyName, value, node; + for (;;) { + keyToken = this._lookaheadToken(0); + if (identifierTypes.indexOf(keyToken.type) < 0) { + throw new Error("Expecting an identifier token, got: " + + keyToken.type); + } + keyName = keyToken.value; + this._advance(); + this._match(TOK_COLON); + value = this.expression(0); + node = {type: "KeyValuePair", name: keyName, value: value}; + pairs.push(node); + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + } else if (this._lookahead(0) === TOK_RBRACE) { + this._match(TOK_RBRACE); + break; + } + } + return {type: "MultiSelectHash", children: pairs}; + } + }; + + + function TreeInterpreter(runtime) { + this.runtime = runtime; + } + + TreeInterpreter.prototype = { + search: function(node, value) { + return this.visit(node, value); + }, + + visit: function(node, value) { + var matched, current, result, first, second, field, left, right, collected, i; + switch (node.type) { + case "Field": + if (value === null ) { + return null; + } else if (isObject(value)) { + field = value[node.name]; + if (field === undefined) { + return null; + } else { + return field; + } + } else { + return null; + } + break; + case "Subexpression": + result = this.visit(node.children[0], value); + for (i = 1; i < node.children.length; i++) { + result = this.visit(node.children[1], result); + if (result === null) { + return null; + } + } + return result; + case "IndexExpression": + left = this.visit(node.children[0], value); + right = this.visit(node.children[1], left); + return right; + case "Index": + if (!isArray(value)) { + return null; + } + var index = node.value; + if (index < 0) { + index = value.length + index; + } + result = value[index]; + if (result === undefined) { + result = null; + } + return result; + case "Slice": + if (!isArray(value)) { + return null; + } + var sliceParams = node.children.slice(0); + var computed = this.computeSliceParams(value.length, sliceParams); + var start = computed[0]; + var stop = computed[1]; + var step = computed[2]; + result = []; + if (step > 0) { + for (i = start; i < stop; i += step) { + result.push(value[i]); + } + } else { + for (i = start; i > stop; i += step) { + result.push(value[i]); + } + } + return result; + case "Projection": + var base = this.visit(node.children[0], value); + if (!isArray(base)) { + return null; + } + collected = []; + for (i = 0; i < base.length; i++) { + current = this.visit(node.children[1], base[i]); + if (current !== null) { + collected.push(current); + } + } + return collected; + case "ValueProjection": + base = this.visit(node.children[0], value); + if (!isObject(base)) { + return null; + } + collected = []; + var values = objValues(base); + for (i = 0; i < values.length; i++) { + current = this.visit(node.children[1], values[i]); + if (current !== null) { + collected.push(current); + } + } + return collected; + case "FilterProjection": + base = this.visit(node.children[0], value); + if (!isArray(base)) { + return null; + } + var filtered = []; + var finalResults = []; + for (i = 0; i < base.length; i++) { + matched = this.visit(node.children[2], base[i]); + if (!isFalse(matched)) { + filtered.push(base[i]); + } + } + for (var j = 0; j < filtered.length; j++) { + current = this.visit(node.children[1], filtered[j]); + if (current !== null) { + finalResults.push(current); + } + } + return finalResults; + case "Comparator": + first = this.visit(node.children[0], value); + second = this.visit(node.children[1], value); + switch(node.name) { + case TOK_EQ: + result = strictDeepEqual(first, second); + break; + case TOK_NE: + result = !strictDeepEqual(first, second); + break; + case TOK_GT: + result = first > second; + break; + case TOK_GTE: + result = first >= second; + break; + case TOK_LT: + result = first < second; + break; + case TOK_LTE: + result = first <= second; + break; + default: + throw new Error("Unknown comparator: " + node.name); + } + return result; + case TOK_FLATTEN: + var original = this.visit(node.children[0], value); + if (!isArray(original)) { + return null; + } + var merged = []; + for (i = 0; i < original.length; i++) { + current = original[i]; + if (isArray(current)) { + merged.push.apply(merged, current); + } else { + merged.push(current); + } + } + return merged; + case "Identity": + return value; + case "MultiSelectList": + if (value === null) { + return null; + } + collected = []; + for (i = 0; i < node.children.length; i++) { + collected.push(this.visit(node.children[i], value)); + } + return collected; + case "MultiSelectHash": + if (value === null) { + return null; + } + collected = {}; + var child; + for (i = 0; i < node.children.length; i++) { + child = node.children[i]; + collected[child.name] = this.visit(child.value, value); + } + return collected; + case "OrExpression": + matched = this.visit(node.children[0], value); + if (isFalse(matched)) { + matched = this.visit(node.children[1], value); + } + return matched; + case "AndExpression": + first = this.visit(node.children[0], value); + + if (isFalse(first) === true) { + return first; + } + return this.visit(node.children[1], value); + case "NotExpression": + first = this.visit(node.children[0], value); + return isFalse(first); + case "Literal": + return node.value; + case TOK_PIPE: + left = this.visit(node.children[0], value); + return this.visit(node.children[1], left); + case TOK_CURRENT: + return value; + case "Function": + var resolvedArgs = []; + for (i = 0; i < node.children.length; i++) { + resolvedArgs.push(this.visit(node.children[i], value)); + } + return this.runtime.callFunction(node.name, resolvedArgs); + case "ExpressionReference": + var refNode = node.children[0]; + refNode.jmespathType = TOK_EXPREF; + return refNode; + default: + throw new Error("Unknown node type: " + node.type); + } + }, + + computeSliceParams: function(arrayLength, sliceParams) { + var start = sliceParams[0]; + var stop = sliceParams[1]; + var step = sliceParams[2]; + var computed = [null, null, null]; + if (step === null) { + step = 1; + } else if (step === 0) { + var error = new Error("Invalid slice, step cannot be 0"); + error.name = "RuntimeError"; + throw error; + } + var stepValueNegative = step < 0 ? true : false; + + if (start === null) { + start = stepValueNegative ? arrayLength - 1 : 0; + } else { + start = this.capSliceRange(arrayLength, start, step); + } + + if (stop === null) { + stop = stepValueNegative ? -1 : arrayLength; + } else { + stop = this.capSliceRange(arrayLength, stop, step); + } + computed[0] = start; + computed[1] = stop; + computed[2] = step; + return computed; + }, + + capSliceRange: function(arrayLength, actualValue, step) { + if (actualValue < 0) { + actualValue += arrayLength; + if (actualValue < 0) { + actualValue = step < 0 ? -1 : 0; + } + } else if (actualValue >= arrayLength) { + actualValue = step < 0 ? arrayLength - 1 : arrayLength; + } + return actualValue; + } + + }; + + function Runtime(interpreter) { + this._interpreter = interpreter; + this.functionTable = { + abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]}, + avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, + ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]}, + contains: { + _func: this._functionContains, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}, + {types: [TYPE_ANY]}]}, + "ends_with": { + _func: this._functionEndsWith, + _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, + floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]}, + length: { + _func: this._functionLength, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]}, + map: { + _func: this._functionMap, + _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]}, + max: { + _func: this._functionMax, + _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, + "merge": { + _func: this._functionMerge, + _signature: [{types: [TYPE_OBJECT], variadic: true}] + }, + "max_by": { + _func: this._functionMaxBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, + "starts_with": { + _func: this._functionStartsWith, + _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, + min: { + _func: this._functionMin, + _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, + "min_by": { + _func: this._functionMinBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]}, + keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]}, + values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]}, + sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, + "sort_by": { + _func: this._functionSortBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + join: { + _func: this._functionJoin, + _signature: [ + {types: [TYPE_STRING]}, + {types: [TYPE_ARRAY_STRING]} + ] + }, + reverse: { + _func: this._functionReverse, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]}, + "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]}, + "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]}, + "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]}, + "not_null": { + _func: this._functionNotNull, + _signature: [{types: [TYPE_ANY], variadic: true}] + } + }; + } + + Runtime.prototype = { + callFunction: function(name, resolvedArgs) { + var functionEntry = this.functionTable[name]; + if (functionEntry === undefined) { + throw new Error("Unknown function: " + name + "()"); + } + this._validateArgs(name, resolvedArgs, functionEntry._signature); + return functionEntry._func.call(this, resolvedArgs); + }, + + _validateArgs: function(name, args, signature) { + var pluralized; + if (signature[signature.length - 1].variadic) { + if (args.length < signature.length) { + pluralized = signature.length === 1 ? " argument" : " arguments"; + throw new Error("ArgumentError: " + name + "() " + + "takes at least" + signature.length + pluralized + + " but received " + args.length); + } + } else if (args.length !== signature.length) { + pluralized = signature.length === 1 ? " argument" : " arguments"; + throw new Error("ArgumentError: " + name + "() " + + "takes " + signature.length + pluralized + + " but received " + args.length); + } + var currentSpec; + var actualType; + var typeMatched; + for (var i = 0; i < signature.length; i++) { + typeMatched = false; + currentSpec = signature[i].types; + actualType = this._getTypeName(args[i]); + for (var j = 0; j < currentSpec.length; j++) { + if (this._typeMatches(actualType, currentSpec[j], args[i])) { + typeMatched = true; + break; + } + } + if (!typeMatched) { + throw new Error("TypeError: " + name + "() " + + "expected argument " + (i + 1) + + " to be type " + currentSpec + + " but received type " + actualType + + " instead."); + } + } + }, + + _typeMatches: function(actual, expected, argValue) { + if (expected === TYPE_ANY) { + return true; + } + if (expected === TYPE_ARRAY_STRING || + expected === TYPE_ARRAY_NUMBER || + expected === TYPE_ARRAY) { + if (expected === TYPE_ARRAY) { + return actual === TYPE_ARRAY; + } else if (actual === TYPE_ARRAY) { + var subtype; + if (expected === TYPE_ARRAY_NUMBER) { + subtype = TYPE_NUMBER; + } else if (expected === TYPE_ARRAY_STRING) { + subtype = TYPE_STRING; + } + for (var i = 0; i < argValue.length; i++) { + if (!this._typeMatches( + this._getTypeName(argValue[i]), subtype, + argValue[i])) { + return false; + } + } + return true; + } + } else { + return actual === expected; + } + }, + _getTypeName: function(obj) { + switch (Object.prototype.toString.call(obj)) { + case "[object String]": + return TYPE_STRING; + case "[object Number]": + return TYPE_NUMBER; + case "[object Array]": + return TYPE_ARRAY; + case "[object Boolean]": + return TYPE_BOOLEAN; + case "[object Null]": + return TYPE_NULL; + case "[object Object]": + if (obj.jmespathType === TOK_EXPREF) { + return TYPE_EXPREF; + } else { + return TYPE_OBJECT; + } + } + }, + + _functionStartsWith: function(resolvedArgs) { + return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0; + }, + + _functionEndsWith: function(resolvedArgs) { + var searchStr = resolvedArgs[0]; + var suffix = resolvedArgs[1]; + return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1; + }, + + _functionReverse: function(resolvedArgs) { + var typeName = this._getTypeName(resolvedArgs[0]); + if (typeName === TYPE_STRING) { + var originalStr = resolvedArgs[0]; + var reversedStr = ""; + for (var i = originalStr.length - 1; i >= 0; i--) { + reversedStr += originalStr[i]; + } + return reversedStr; + } else { + var reversedArray = resolvedArgs[0].slice(0); + reversedArray.reverse(); + return reversedArray; + } + }, + + _functionAbs: function(resolvedArgs) { + return Math.abs(resolvedArgs[0]); + }, + + _functionCeil: function(resolvedArgs) { + return Math.ceil(resolvedArgs[0]); + }, + + _functionAvg: function(resolvedArgs) { + var sum = 0; + var inputArray = resolvedArgs[0]; + for (var i = 0; i < inputArray.length; i++) { + sum += inputArray[i]; + } + return sum / inputArray.length; + }, + + _functionContains: function(resolvedArgs) { + return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0; + }, + + _functionFloor: function(resolvedArgs) { + return Math.floor(resolvedArgs[0]); + }, + + _functionLength: function(resolvedArgs) { + if (!isObject(resolvedArgs[0])) { + return resolvedArgs[0].length; + } else { + return Object.keys(resolvedArgs[0]).length; + } + }, + + _functionMap: function(resolvedArgs) { + var mapped = []; + var interpreter = this._interpreter; + var exprefNode = resolvedArgs[0]; + var elements = resolvedArgs[1]; + for (var i = 0; i < elements.length; i++) { + mapped.push(interpreter.visit(exprefNode, elements[i])); + } + return mapped; + }, + + _functionMerge: function(resolvedArgs) { + var merged = {}; + for (var i = 0; i < resolvedArgs.length; i++) { + var current = resolvedArgs[i]; + for (var key in current) { + merged[key] = current[key]; + } + } + return merged; + }, + + _functionMax: function(resolvedArgs) { + if (resolvedArgs[0].length > 0) { + var typeName = this._getTypeName(resolvedArgs[0][0]); + if (typeName === TYPE_NUMBER) { + return Math.max.apply(Math, resolvedArgs[0]); + } else { + var elements = resolvedArgs[0]; + var maxElement = elements[0]; + for (var i = 1; i < elements.length; i++) { + if (maxElement.localeCompare(elements[i]) < 0) { + maxElement = elements[i]; + } + } + return maxElement; + } + } else { + return null; + } + }, + + _functionMin: function(resolvedArgs) { + if (resolvedArgs[0].length > 0) { + var typeName = this._getTypeName(resolvedArgs[0][0]); + if (typeName === TYPE_NUMBER) { + return Math.min.apply(Math, resolvedArgs[0]); + } else { + var elements = resolvedArgs[0]; + var minElement = elements[0]; + for (var i = 1; i < elements.length; i++) { + if (elements[i].localeCompare(minElement) < 0) { + minElement = elements[i]; + } + } + return minElement; + } + } else { + return null; + } + }, + + _functionSum: function(resolvedArgs) { + var sum = 0; + var listToSum = resolvedArgs[0]; + for (var i = 0; i < listToSum.length; i++) { + sum += listToSum[i]; + } + return sum; + }, + + _functionType: function(resolvedArgs) { + switch (this._getTypeName(resolvedArgs[0])) { + case TYPE_NUMBER: + return "number"; + case TYPE_STRING: + return "string"; + case TYPE_ARRAY: + return "array"; + case TYPE_OBJECT: + return "object"; + case TYPE_BOOLEAN: + return "boolean"; + case TYPE_EXPREF: + return "expref"; + case TYPE_NULL: + return "null"; + } + }, + + _functionKeys: function(resolvedArgs) { + return Object.keys(resolvedArgs[0]); + }, + + _functionValues: function(resolvedArgs) { + var obj = resolvedArgs[0]; + var keys = Object.keys(obj); + var values = []; + for (var i = 0; i < keys.length; i++) { + values.push(obj[keys[i]]); + } + return values; + }, + + _functionJoin: function(resolvedArgs) { + var joinChar = resolvedArgs[0]; + var listJoin = resolvedArgs[1]; + return listJoin.join(joinChar); + }, + + _functionToArray: function(resolvedArgs) { + if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) { + return resolvedArgs[0]; + } else { + return [resolvedArgs[0]]; + } + }, + + _functionToString: function(resolvedArgs) { + if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) { + return resolvedArgs[0]; + } else { + return JSON.stringify(resolvedArgs[0]); + } + }, + + _functionToNumber: function(resolvedArgs) { + var typeName = this._getTypeName(resolvedArgs[0]); + var convertedValue; + if (typeName === TYPE_NUMBER) { + return resolvedArgs[0]; + } else if (typeName === TYPE_STRING) { + convertedValue = +resolvedArgs[0]; + if (!isNaN(convertedValue)) { + return convertedValue; + } + } + return null; + }, + + _functionNotNull: function(resolvedArgs) { + for (var i = 0; i < resolvedArgs.length; i++) { + if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) { + return resolvedArgs[i]; + } + } + return null; + }, + + _functionSort: function(resolvedArgs) { + var sortedArray = resolvedArgs[0].slice(0); + sortedArray.sort(); + return sortedArray; + }, + + _functionSortBy: function(resolvedArgs) { + var sortedArray = resolvedArgs[0].slice(0); + if (sortedArray.length === 0) { + return sortedArray; + } + var interpreter = this._interpreter; + var exprefNode = resolvedArgs[1]; + var requiredType = this._getTypeName( + interpreter.visit(exprefNode, sortedArray[0])); + if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) { + throw new Error("TypeError"); + } + var that = this; + var decorated = []; + for (var i = 0; i < sortedArray.length; i++) { + decorated.push([i, sortedArray[i]]); + } + decorated.sort(function(a, b) { + var exprA = interpreter.visit(exprefNode, a[1]); + var exprB = interpreter.visit(exprefNode, b[1]); + if (that._getTypeName(exprA) !== requiredType) { + throw new Error( + "TypeError: expected " + requiredType + ", received " + + that._getTypeName(exprA)); + } else if (that._getTypeName(exprB) !== requiredType) { + throw new Error( + "TypeError: expected " + requiredType + ", received " + + that._getTypeName(exprB)); + } + if (exprA > exprB) { + return 1; + } else if (exprA < exprB) { + return -1; + } else { + return a[0] - b[0]; + } + }); + for (var j = 0; j < decorated.length; j++) { + sortedArray[j] = decorated[j][1]; + } + return sortedArray; + }, + + _functionMaxBy: function(resolvedArgs) { + var exprefNode = resolvedArgs[1]; + var resolvedArray = resolvedArgs[0]; + var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); + var maxNumber = -Infinity; + var maxRecord; + var current; + for (var i = 0; i < resolvedArray.length; i++) { + current = keyFunction(resolvedArray[i]); + if (current > maxNumber) { + maxNumber = current; + maxRecord = resolvedArray[i]; + } + } + return maxRecord; + }, + + _functionMinBy: function(resolvedArgs) { + var exprefNode = resolvedArgs[1]; + var resolvedArray = resolvedArgs[0]; + var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); + var minNumber = Infinity; + var minRecord; + var current; + for (var i = 0; i < resolvedArray.length; i++) { + current = keyFunction(resolvedArray[i]); + if (current < minNumber) { + minNumber = current; + minRecord = resolvedArray[i]; + } + } + return minRecord; + }, + + createKeyFunction: function(exprefNode, allowedTypes) { + var that = this; + var interpreter = this._interpreter; + var keyFunc = function(x) { + var current = interpreter.visit(exprefNode, x); + if (allowedTypes.indexOf(that._getTypeName(current)) < 0) { + var msg = "TypeError: expected one of " + allowedTypes + + ", received " + that._getTypeName(current); + throw new Error(msg); + } + return current; + }; + return keyFunc; + } + + }; + + function compile(stream) { + var parser = new Parser(); + var ast = parser.parse(stream); + return ast; + } + + function tokenize(stream) { + var lexer = new Lexer(); + return lexer.tokenize(stream); + } + + function search(data, expression) { + var parser = new Parser(); + var runtime = new Runtime(); + var interpreter = new TreeInterpreter(runtime); + runtime._interpreter = interpreter; + var node = parser.parse(expression); + return interpreter.search(node, data); + } + + exports.tokenize = tokenize; + exports.compile = compile; + exports.search = search; + exports.strictDeepEqual = strictDeepEqual; +})(typeof exports === "undefined" ? this.jmespath = {} : exports); + +},{}],269:[function(require,module,exports){ + +'use strict'; + +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; + +},{}],270:[function(require,module,exports){ + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; + +},{}],271:[function(require,module,exports){ +arguments[4][254][0].apply(exports,arguments) +},{"./decode":269,"./encode":270,"dup":254}],272:[function(require,module,exports){ + +var punycode = require('punycode'); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + + +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + autoEscape = ['\''].concat(unwise), + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + var rest = url; + + rest = rest.trim(); + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + + + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + var auth, atSign; + if (hostEnd === -1) { + atSign = rest.lastIndexOf('@'); + } else { + atSign = rest.lastIndexOf('@', hostEnd); + } + + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + this.parseHost(); + + this.hostname = this.hostname || ''; + + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + newpart += 'x'; + } else { + newpart += part[j]; + } + } + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + var domainArray = this.hostname.split('.'); + var newOut = []; + for (var i = 0; i < domainArray.length; ++i) { + var s = domainArray[i]; + newOut.push(s.match(/[^A-Za-z0-9_-]/) ? + 'xn--' + punycode.encode(s) : s); + } + this.hostname = newOut.join('.'); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + if (!unsafeProtocol[lowerProto]) { + + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + var hash = rest.indexOf('#'); + if (hash !== -1) { + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + this.href = this.format(); + return this; +}; + +function urlFormat(obj) { + if (isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + Object.keys(this).forEach(function(k) { + result[k] = this[k]; + }, this); + + result.hash = relative.hash; + + if (relative.href === '') { + result.href = result.format(); + return result; + } + + if (relative.slashes && !relative.protocol) { + Object.keys(relative).forEach(function(k) { + if (k !== 'protocol') + result[k] = relative[k]; + }); + + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + if (!slashedProtocol[relative.protocol]) { + Object.keys(relative).forEach(function(k) { + result[k] = relative[k]; + }); + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + } else if (relPath.length) { + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + result.pathname = null; + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host) && (last === '.' || last === '..') || + last === ''); + + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last == '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; + +function isString(arg) { + return typeof arg === "string"; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isNull(arg) { + return arg === null; +} +function isNullOrUndefined(arg) { + return arg == null; +} + +},{"punycode":251,"querystring":254}],273:[function(require,module,exports){ +(function() { + var XMLAttribute, create; + + create = require('lodash/object/create'); + + module.exports = XMLAttribute = (function() { + function XMLAttribute(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing attribute name of element " + parent.name); + } + if (value == null) { + throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); + } + this.name = this.stringify.attName(name); + this.value = this.stringify.attValue(value); + } + + XMLAttribute.prototype.clone = function() { + return create(XMLAttribute.prototype, this); + }; + + XMLAttribute.prototype.toString = function(options, level) { + return ' ' + this.name + '="' + this.value + '"'; + }; + + return XMLAttribute; + + })(); + +}).call(this); + +},{"lodash/object/create":332}],274:[function(require,module,exports){ +(function() { + var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; + + XMLStringifier = require('./XMLStringifier'); + + XMLDeclaration = require('./XMLDeclaration'); + + XMLDocType = require('./XMLDocType'); + + XMLElement = require('./XMLElement'); + + module.exports = XMLBuilder = (function() { + function XMLBuilder(name, options) { + var root, temp; + if (name == null) { + throw new Error("Root element needs a name"); + } + if (options == null) { + options = {}; + } + this.options = options; + this.stringify = new XMLStringifier(options); + temp = new XMLElement(this, 'doc'); + root = temp.element(name); + root.isRoot = true; + root.documentObject = this; + this.rootObject = root; + if (!options.headless) { + root.declaration(options); + if ((options.pubID != null) || (options.sysID != null)) { + root.doctype(options); + } + } + } + + XMLBuilder.prototype.root = function() { + return this.rootObject; + }; + + XMLBuilder.prototype.end = function(options) { + return this.toString(options); + }; + + XMLBuilder.prototype.toString = function(options) { + var indent, newline, offset, pretty, r, ref, ref1, ref2; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + r = ''; + if (this.xmldec != null) { + r += this.xmldec.toString(options); + } + if (this.doctype != null) { + r += this.doctype.toString(options); + } + r += this.rootObject.toString(options); + if (pretty && r.slice(-newline.length) === newline) { + r = r.slice(0, -newline.length); + } + return r; + }; + + return XMLBuilder; + + })(); + +}).call(this); + +},{"./XMLDeclaration":281,"./XMLDocType":282,"./XMLElement":283,"./XMLStringifier":287}],275:[function(require,module,exports){ +(function() { + var XMLCData, XMLNode, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLCData = (function(superClass) { + extend(XMLCData, superClass); + + function XMLCData(parent, text) { + XMLCData.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing CDATA text"); + } + this.text = this.stringify.cdata(text); + } + + XMLCData.prototype.clone = function() { + return create(XMLCData.prototype, this); + }; + + XMLCData.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLCData; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":284,"lodash/object/create":332}],276:[function(require,module,exports){ +(function() { + var XMLComment, XMLNode, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLComment = (function(superClass) { + extend(XMLComment, superClass); + + function XMLComment(parent, text) { + XMLComment.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing comment text"); + } + this.text = this.stringify.comment(text); + } + + XMLComment.prototype.clone = function() { + return create(XMLComment.prototype, this); + }; + + XMLComment.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLComment; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":284,"lodash/object/create":332}],277:[function(require,module,exports){ +(function() { + var XMLDTDAttList, create; + + create = require('lodash/object/create'); + + module.exports = XMLDTDAttList = (function() { + function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { + this.stringify = parent.stringify; + if (elementName == null) { + throw new Error("Missing DTD element name"); + } + if (attributeName == null) { + throw new Error("Missing DTD attribute name"); + } + if (!attributeType) { + throw new Error("Missing DTD attribute type"); + } + if (!defaultValueType) { + throw new Error("Missing DTD attribute default"); + } + if (defaultValueType.indexOf('#') !== 0) { + defaultValueType = '#' + defaultValueType; + } + if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { + throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); + } + if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { + throw new Error("Default value only applies to #FIXED or #DEFAULT"); + } + this.elementName = this.stringify.eleName(elementName); + this.attributeName = this.stringify.attName(attributeName); + this.attributeType = this.stringify.dtdAttType(attributeType); + this.defaultValue = this.stringify.dtdAttDefault(defaultValue); + this.defaultValueType = defaultValueType; + } + + XMLDTDAttList.prototype.clone = function() { + return create(XMLDTDAttList.prototype, this); + }; + + XMLDTDAttList.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDAttList; + + })(); + +}).call(this); + +},{"lodash/object/create":332}],278:[function(require,module,exports){ +(function() { + var XMLDTDElement, create, isArray; + + create = require('lodash/object/create'); + + isArray = require('lodash/lang/isArray'); + + module.exports = XMLDTDElement = (function() { + function XMLDTDElement(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing DTD element name"); + } + if (!value) { + value = '(#PCDATA)'; + } + if (isArray(value)) { + value = '(' + value.join(',') + ')'; + } + this.name = this.stringify.eleName(name); + this.value = this.stringify.dtdElementValue(value); + } + + XMLDTDElement.prototype.clone = function() { + return create(XMLDTDElement.prototype, this); + }; + + XMLDTDElement.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDElement; + + })(); + +}).call(this); + +},{"lodash/lang/isArray":324,"lodash/object/create":332}],279:[function(require,module,exports){ +(function() { + var XMLDTDEntity, create, isObject; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + module.exports = XMLDTDEntity = (function() { + function XMLDTDEntity(parent, pe, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing entity name"); + } + if (value == null) { + throw new Error("Missing entity value"); + } + this.pe = !!pe; + this.name = this.stringify.eleName(name); + if (!isObject(value)) { + this.value = this.stringify.dtdEntityValue(value); + } else { + if (!value.pubID && !value.sysID) { + throw new Error("Public and/or system identifiers are required for an external entity"); + } + if (value.pubID && !value.sysID) { + throw new Error("System identifier is required for a public external entity"); + } + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + if (value.nData != null) { + this.nData = this.stringify.dtdNData(value.nData); + } + if (this.pe && this.nData) { + throw new Error("Notation declaration is not allowed in a parameter entity"); + } + } + } + + XMLDTDEntity.prototype.clone = function() { + return create(XMLDTDEntity.prototype, this); + }; + + XMLDTDEntity.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDEntity; + + })(); + +}).call(this); + +},{"lodash/lang/isObject":328,"lodash/object/create":332}],280:[function(require,module,exports){ +(function() { + var XMLDTDNotation, create; + + create = require('lodash/object/create'); + + module.exports = XMLDTDNotation = (function() { + function XMLDTDNotation(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing notation name"); + } + if (!value.pubID && !value.sysID) { + throw new Error("Public or system identifiers are required for an external entity"); + } + this.name = this.stringify.eleName(name); + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + } + + XMLDTDNotation.prototype.clone = function() { + return create(XMLDTDNotation.prototype, this); + }; + + XMLDTDNotation.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDNotation; + + })(); + +}).call(this); + +},{"lodash/object/create":332}],281:[function(require,module,exports){ +(function() { + var XMLDeclaration, XMLNode, create, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLDeclaration = (function(superClass) { + extend(XMLDeclaration, superClass); + + function XMLDeclaration(parent, version, encoding, standalone) { + var ref; + XMLDeclaration.__super__.constructor.call(this, parent); + if (isObject(version)) { + ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; + } + if (!version) { + version = '1.0'; + } + if (version != null) { + this.version = this.stringify.xmlVersion(version); + } + if (encoding != null) { + this.encoding = this.stringify.xmlEncoding(encoding); + } + if (standalone != null) { + this.standalone = this.stringify.xmlStandalone(standalone); + } + } + + XMLDeclaration.prototype.clone = function() { + return create(XMLDeclaration.prototype, this); + }; + + XMLDeclaration.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDeclaration; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":284,"lodash/lang/isObject":328,"lodash/object/create":332}],282:[function(require,module,exports){ +(function() { + var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + XMLCData = require('./XMLCData'); + + XMLComment = require('./XMLComment'); + + XMLDTDAttList = require('./XMLDTDAttList'); + + XMLDTDEntity = require('./XMLDTDEntity'); + + XMLDTDElement = require('./XMLDTDElement'); + + XMLDTDNotation = require('./XMLDTDNotation'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + module.exports = XMLDocType = (function() { + function XMLDocType(parent, pubID, sysID) { + var ref, ref1; + this.documentObject = parent; + this.stringify = this.documentObject.stringify; + this.children = []; + if (isObject(pubID)) { + ref = pubID, pubID = ref.pubID, sysID = ref.sysID; + } + if (sysID == null) { + ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; + } + if (pubID != null) { + this.pubID = this.stringify.dtdPubID(pubID); + } + if (sysID != null) { + this.sysID = this.stringify.dtdSysID(sysID); + } + } + + XMLDocType.prototype.clone = function() { + return create(XMLDocType.prototype, this); + }; + + XMLDocType.prototype.element = function(name, value) { + var child; + child = new XMLDTDElement(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + var child; + child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.entity = function(name, value) { + var child; + child = new XMLDTDEntity(this, false, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.pEntity = function(name, value) { + var child; + child = new XMLDTDEntity(this, true, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.notation = function(name, value) { + var child; + child = new XMLDTDNotation(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.instruction = function(target, value) { + var child; + child = new XMLProcessingInstruction(this, target, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.root = function() { + return this.documentObject.root(); + }; + + XMLDocType.prototype.document = function() { + return this.documentObject; + }; + + XMLDocType.prototype.toString = function(options, level) { + var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ' 0) { + r += ' ['; + if (pretty) { + r += newline; + } + ref3 = this.children; + for (i = 0, len = ref3.length; i < len; i++) { + child = ref3[i]; + r += child.toString(options, level + 1); + } + r += ']'; + } + r += '>'; + if (pretty) { + r += newline; + } + return r; + }; + + XMLDocType.prototype.ele = function(name, value) { + return this.element(name, value); + }; + + XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); + }; + + XMLDocType.prototype.ent = function(name, value) { + return this.entity(name, value); + }; + + XMLDocType.prototype.pent = function(name, value) { + return this.pEntity(name, value); + }; + + XMLDocType.prototype.not = function(name, value) { + return this.notation(name, value); + }; + + XMLDocType.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLDocType.prototype.com = function(value) { + return this.comment(value); + }; + + XMLDocType.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLDocType.prototype.up = function() { + return this.root(); + }; + + XMLDocType.prototype.doc = function() { + return this.document(); + }; + + return XMLDocType; + + })(); + +}).call(this); + +},{"./XMLCData":275,"./XMLComment":276,"./XMLDTDAttList":277,"./XMLDTDElement":278,"./XMLDTDEntity":279,"./XMLDTDNotation":280,"./XMLProcessingInstruction":285,"lodash/lang/isObject":328,"lodash/object/create":332}],283:[function(require,module,exports){ +(function() { + var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isArray, isFunction, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + isArray = require('lodash/lang/isArray'); + + isFunction = require('lodash/lang/isFunction'); + + every = require('lodash/collection/every'); + + XMLNode = require('./XMLNode'); + + XMLAttribute = require('./XMLAttribute'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + module.exports = XMLElement = (function(superClass) { + extend(XMLElement, superClass); + + function XMLElement(parent, name, attributes) { + XMLElement.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing element name"); + } + this.name = this.stringify.eleName(name); + this.children = []; + this.instructions = []; + this.attributes = {}; + if (attributes != null) { + this.attribute(attributes); + } + } + + XMLElement.prototype.clone = function() { + var att, attName, clonedSelf, i, len, pi, ref, ref1; + clonedSelf = create(XMLElement.prototype, this); + if (clonedSelf.isRoot) { + clonedSelf.documentObject = null; + } + clonedSelf.attributes = {}; + ref = this.attributes; + for (attName in ref) { + if (!hasProp.call(ref, attName)) continue; + att = ref[attName]; + clonedSelf.attributes[attName] = att.clone(); + } + clonedSelf.instructions = []; + ref1 = this.instructions; + for (i = 0, len = ref1.length; i < len; i++) { + pi = ref1[i]; + clonedSelf.instructions.push(pi.clone()); + } + clonedSelf.children = []; + this.children.forEach(function(child) { + var clonedChild; + clonedChild = child.clone(); + clonedChild.parent = clonedSelf; + return clonedSelf.children.push(clonedChild); + }); + return clonedSelf; + }; + + XMLElement.prototype.attribute = function(name, value) { + var attName, attValue; + if (name != null) { + name = name.valueOf(); + } + if (isObject(name)) { + for (attName in name) { + if (!hasProp.call(name, attName)) continue; + attValue = name[attName]; + this.attribute(attName, attValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + if (!this.options.skipNullAttributes || (value != null)) { + this.attributes[name] = new XMLAttribute(this, name, value); + } + } + return this; + }; + + XMLElement.prototype.removeAttribute = function(name) { + var attName, i, len; + if (name == null) { + throw new Error("Missing attribute name"); + } + name = name.valueOf(); + if (isArray(name)) { + for (i = 0, len = name.length; i < len; i++) { + attName = name[i]; + delete this.attributes[attName]; + } + } else { + delete this.attributes[name]; + } + return this; + }; + + XMLElement.prototype.instruction = function(target, value) { + var i, insTarget, insValue, instruction, len; + if (target != null) { + target = target.valueOf(); + } + if (value != null) { + value = value.valueOf(); + } + if (isArray(target)) { + for (i = 0, len = target.length; i < len; i++) { + insTarget = target[i]; + this.instruction(insTarget); + } + } else if (isObject(target)) { + for (insTarget in target) { + if (!hasProp.call(target, insTarget)) continue; + insValue = target[insTarget]; + this.instruction(insTarget, insValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + instruction = new XMLProcessingInstruction(this, target, value); + this.instructions.push(instruction); + } + return this; + }; + + XMLElement.prototype.toString = function(options, level) { + var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + ref3 = this.instructions; + for (i = 0, len = ref3.length; i < len; i++) { + instruction = ref3[i]; + r += instruction.toString(options, level + 1); + } + if (pretty) { + r += space; + } + r += '<' + this.name; + ref4 = this.attributes; + for (name in ref4) { + if (!hasProp.call(ref4, name)) continue; + att = ref4[name]; + r += att.toString(options); + } + if (this.children.length === 0 || every(this.children, function(e) { + return e.value === ''; + })) { + r += '/>'; + if (pretty) { + r += newline; + } + } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) { + r += '>'; + r += this.children[0].value; + r += ''; + r += newline; + } else { + r += '>'; + if (pretty) { + r += newline; + } + ref5 = this.children; + for (j = 0, len1 = ref5.length; j < len1; j++) { + child = ref5[j]; + r += child.toString(options, level + 1); + } + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + } + return r; + }; + + XMLElement.prototype.att = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLElement.prototype.a = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.i = function(target, value) { + return this.instruction(target, value); + }; + + return XMLElement; + + })(XMLNode); + +}).call(this); + +},{"./XMLAttribute":273,"./XMLNode":284,"./XMLProcessingInstruction":285,"lodash/collection/every":290,"lodash/lang/isArray":324,"lodash/lang/isFunction":326,"lodash/lang/isObject":328,"lodash/object/create":332}],284:[function(require,module,exports){ +(function() { + var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isArray, isEmpty, isFunction, isObject, + hasProp = {}.hasOwnProperty; + + isObject = require('lodash/lang/isObject'); + + isArray = require('lodash/lang/isArray'); + + isFunction = require('lodash/lang/isFunction'); + + isEmpty = require('lodash/lang/isEmpty'); + + XMLElement = null; + + XMLCData = null; + + XMLComment = null; + + XMLDeclaration = null; + + XMLDocType = null; + + XMLRaw = null; + + XMLText = null; + + module.exports = XMLNode = (function() { + function XMLNode(parent) { + this.parent = parent; + this.options = this.parent.options; + this.stringify = this.parent.stringify; + if (XMLElement === null) { + XMLElement = require('./XMLElement'); + XMLCData = require('./XMLCData'); + XMLComment = require('./XMLComment'); + XMLDeclaration = require('./XMLDeclaration'); + XMLDocType = require('./XMLDocType'); + XMLRaw = require('./XMLRaw'); + XMLText = require('./XMLText'); + } + } + + XMLNode.prototype.clone = function() { + throw new Error("Cannot clone generic XMLNode"); + }; + + XMLNode.prototype.element = function(name, attributes, text) { + var item, j, key, lastChild, len, ref, val; + lastChild = null; + if (attributes == null) { + attributes = {}; + } + attributes = attributes.valueOf(); + if (!isObject(attributes)) { + ref = [attributes, text], text = ref[0], attributes = ref[1]; + } + if (name != null) { + name = name.valueOf(); + } + if (isArray(name)) { + for (j = 0, len = name.length; j < len; j++) { + item = name[j]; + lastChild = this.element(item); + } + } else if (isFunction(name)) { + lastChild = this.element(name.apply()); + } else if (isObject(name)) { + for (key in name) { + if (!hasProp.call(name, key)) continue; + val = name[key]; + if (isFunction(val)) { + val = val.apply(); + } + if ((isObject(val)) && (isEmpty(val))) { + val = null; + } + if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { + lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); + } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) { + lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val); + } else if (isObject(val)) { + if (!this.options.ignoreDecorators && this.stringify.convertListKey && key.indexOf(this.stringify.convertListKey) === 0 && isArray(val)) { + lastChild = this.element(val); + } else { + lastChild = this.element(key); + lastChild.element(val); + } + } else { + lastChild = this.element(key, val); + } + } + } else { + if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { + lastChild = this.text(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { + lastChild = this.cdata(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { + lastChild = this.comment(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { + lastChild = this.raw(text); + } else { + lastChild = this.node(name, attributes, text); + } + } + if (lastChild == null) { + throw new Error("Could not create any elements with: " + name); + } + return lastChild; + }; + + XMLNode.prototype.insertBefore = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level"); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.insertAfter = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level"); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i + 1); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.remove = function() { + var i, ref; + if (this.isRoot) { + throw new Error("Cannot remove the root element"); + } + i = this.parent.children.indexOf(this); + [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref; + return this.parent; + }; + + XMLNode.prototype.node = function(name, attributes, text) { + var child, ref; + if (name != null) { + name = name.valueOf(); + } + if (attributes == null) { + attributes = {}; + } + attributes = attributes.valueOf(); + if (!isObject(attributes)) { + ref = [attributes, text], text = ref[0], attributes = ref[1]; + } + child = new XMLElement(this, name, attributes); + if (text != null) { + child.text(text); + } + this.children.push(child); + return child; + }; + + XMLNode.prototype.text = function(value) { + var child; + child = new XMLText(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.raw = function(value) { + var child; + child = new XMLRaw(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.declaration = function(version, encoding, standalone) { + var doc, xmldec; + doc = this.document(); + xmldec = new XMLDeclaration(doc, version, encoding, standalone); + doc.xmldec = xmldec; + return doc.root(); + }; + + XMLNode.prototype.doctype = function(pubID, sysID) { + var doc, doctype; + doc = this.document(); + doctype = new XMLDocType(doc, pubID, sysID); + doc.doctype = doctype; + return doctype; + }; + + XMLNode.prototype.up = function() { + if (this.isRoot) { + throw new Error("The root node has no parent. Use doc() if you need to get the document object."); + } + return this.parent; + }; + + XMLNode.prototype.root = function() { + var child; + if (this.isRoot) { + return this; + } + child = this.parent; + while (!child.isRoot) { + child = child.parent; + } + return child; + }; + + XMLNode.prototype.document = function() { + return this.root().documentObject; + }; + + XMLNode.prototype.end = function(options) { + return this.document().toString(options); + }; + + XMLNode.prototype.prev = function() { + var i; + if (this.isRoot) { + throw new Error("Root node has no siblings"); + } + i = this.parent.children.indexOf(this); + if (i < 1) { + throw new Error("Already at the first node"); + } + return this.parent.children[i - 1]; + }; + + XMLNode.prototype.next = function() { + var i; + if (this.isRoot) { + throw new Error("Root node has no siblings"); + } + i = this.parent.children.indexOf(this); + if (i === -1 || i === this.parent.children.length - 1) { + throw new Error("Already at the last node"); + } + return this.parent.children[i + 1]; + }; + + XMLNode.prototype.importXMLBuilder = function(xmlbuilder) { + var clonedRoot; + clonedRoot = xmlbuilder.root().clone(); + clonedRoot.parent = this; + clonedRoot.isRoot = false; + this.children.push(clonedRoot); + return this; + }; + + XMLNode.prototype.ele = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.nod = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.txt = function(value) { + return this.text(value); + }; + + XMLNode.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.com = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.doc = function() { + return this.document(); + }; + + XMLNode.prototype.dec = function(version, encoding, standalone) { + return this.declaration(version, encoding, standalone); + }; + + XMLNode.prototype.dtd = function(pubID, sysID) { + return this.doctype(pubID, sysID); + }; + + XMLNode.prototype.e = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.n = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.t = function(value) { + return this.text(value); + }; + + XMLNode.prototype.d = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.c = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.r = function(value) { + return this.raw(value); + }; + + XMLNode.prototype.u = function() { + return this.up(); + }; + + return XMLNode; + + })(); + +}).call(this); + +},{"./XMLCData":275,"./XMLComment":276,"./XMLDeclaration":281,"./XMLDocType":282,"./XMLElement":283,"./XMLRaw":286,"./XMLText":288,"lodash/lang/isArray":324,"lodash/lang/isEmpty":325,"lodash/lang/isFunction":326,"lodash/lang/isObject":328}],285:[function(require,module,exports){ +(function() { + var XMLProcessingInstruction, create; + + create = require('lodash/object/create'); + + module.exports = XMLProcessingInstruction = (function() { + function XMLProcessingInstruction(parent, target, value) { + this.stringify = parent.stringify; + if (target == null) { + throw new Error("Missing instruction target"); + } + this.target = this.stringify.insTarget(target); + if (value) { + this.value = this.stringify.insValue(value); + } + } + + XMLProcessingInstruction.prototype.clone = function() { + return create(XMLProcessingInstruction.prototype, this); + }; + + XMLProcessingInstruction.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLProcessingInstruction; + + })(); + +}).call(this); + +},{"lodash/object/create":332}],286:[function(require,module,exports){ +(function() { + var XMLNode, XMLRaw, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLRaw = (function(superClass) { + extend(XMLRaw, superClass); + + function XMLRaw(parent, text) { + XMLRaw.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing raw text"); + } + this.value = this.stringify.raw(text); + } + + XMLRaw.prototype.clone = function() { + return create(XMLRaw.prototype, this); + }; + + XMLRaw.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += this.value; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLRaw; + + })(XMLNode); + +}).call(this); + +},{"./XMLNode":284,"lodash/object/create":332}],287:[function(require,module,exports){ +(function() { + var XMLStringifier, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + hasProp = {}.hasOwnProperty; + + module.exports = XMLStringifier = (function() { + function XMLStringifier(options) { + this.assertLegalChar = bind(this.assertLegalChar, this); + var key, ref, value; + this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0; + ref = (options != null ? options.stringify : void 0) || {}; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this[key] = value; + } + } + + XMLStringifier.prototype.eleName = function(val) { + val = '' + val || ''; + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.eleText = function(val) { + val = '' + val || ''; + return this.assertLegalChar(this.elEscape(val)); + }; + + XMLStringifier.prototype.cdata = function(val) { + val = '' + val || ''; + if (val.match(/]]>/)) { + throw new Error("Invalid CDATA text: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.comment = function(val) { + val = '' + val || ''; + if (val.match(/--/)) { + throw new Error("Comment text cannot contain double-hypen: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.raw = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.attName = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.attValue = function(val) { + val = '' + val || ''; + return this.attEscape(val); + }; + + XMLStringifier.prototype.insTarget = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.insValue = function(val) { + val = '' + val || ''; + if (val.match(/\?>/)) { + throw new Error("Invalid processing instruction value: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlVersion = function(val) { + val = '' + val || ''; + if (!val.match(/1\.[0-9]+/)) { + throw new Error("Invalid version number: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlEncoding = function(val) { + val = '' + val || ''; + if (!val.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) { + throw new Error("Invalid encoding: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlStandalone = function(val) { + if (val) { + return "yes"; + } else { + return "no"; + } + }; + + XMLStringifier.prototype.dtdPubID = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdSysID = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdElementValue = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdAttType = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdAttDefault = function(val) { + if (val != null) { + return '' + val || ''; + } else { + return val; + } + }; + + XMLStringifier.prototype.dtdEntityValue = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdNData = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.convertAttKey = '@'; + + XMLStringifier.prototype.convertPIKey = '?'; + + XMLStringifier.prototype.convertTextKey = '#text'; + + XMLStringifier.prototype.convertCDataKey = '#cdata'; + + XMLStringifier.prototype.convertCommentKey = '#comment'; + + XMLStringifier.prototype.convertRawKey = '#raw'; + + XMLStringifier.prototype.convertListKey = '#list'; + + XMLStringifier.prototype.assertLegalChar = function(str) { + var chars, chr; + if (this.allowSurrogateChars) { + chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/; + } else { + chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/; + } + chr = str.match(chars); + if (chr) { + throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index); + } + return str; + }; + + XMLStringifier.prototype.elEscape = function(str) { + return str.replace(/&/g, '&').replace(//g, '>').replace(/\r/g, ' '); + }; + + XMLStringifier.prototype.attEscape = function(str) { + return str.replace(/&/g, '&').replace(/ 3 && typeof customizer == 'function') { + customizer = bindCallback(customizer, thisArg, 5); + length -= 2; + } else { + customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null; + length -= (customizer ? 1 : 0); + } + if (guard && isIterateeCall(args[1], args[2], guard)) { + customizer = length == 3 ? null : customizer; + length = 2; + } + var index = 0; + while (++index < length) { + var source = args[index]; + if (source) { + assigner(object, source, customizer); + } + } + return object; + }; +} + +module.exports = createAssigner; + +},{"./bindCallback":309,"./isIterateeCall":316}],311:[function(require,module,exports){ + +function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) { + var index = -1, + arrLength = array.length, + othLength = other.length, + result = true; + + if (arrLength != othLength && !(isWhere && othLength > arrLength)) { + return false; + } + while (result && ++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + result = undefined; + if (customizer) { + result = isWhere + ? customizer(othValue, arrValue, index) + : customizer(arrValue, othValue, index); + } + if (typeof result == 'undefined') { + if (isWhere) { + var othIndex = othLength; + while (othIndex--) { + othValue = other[othIndex]; + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); + if (result) { + break; + } + } + } else { + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); + } + } + } + return !!result; +} + +module.exports = equalArrays; + +},{}],312:[function(require,module,exports){ + +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + stringTag = '[object String]'; + + +function equalByTag(object, other, tag) { + switch (tag) { + case boolTag: + case dateTag: + return +object == +other; + + case errorTag: + return object.name == other.name && object.message == other.message; + + case numberTag: + return (object != +object) + ? other != +other + : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); + + case regexpTag: + case stringTag: + return object == (other + ''); + } + return false; +} + +module.exports = equalByTag; + +},{}],313:[function(require,module,exports){ +var keys = require('../object/keys'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) { + var objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isWhere) { + return false; + } + var hasCtor, + index = -1; + + while (++index < objLength) { + var key = objProps[index], + result = hasOwnProperty.call(other, key); + + if (result) { + var objValue = object[key], + othValue = other[key]; + + result = undefined; + if (customizer) { + result = isWhere + ? customizer(othValue, objValue, key) + : customizer(objValue, othValue, key); + } + if (typeof result == 'undefined') { + result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB); + } + } + if (!result) { + return false; + } + hasCtor || (hasCtor = key == 'constructor'); + } + if (!hasCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + return false; + } + } + return true; +} + +module.exports = equalObjects; + +},{"../object/keys":333}],314:[function(require,module,exports){ +var baseSetData = require('./baseSetData'), + isNative = require('../lang/isNative'), + support = require('../support'); + + +var reFuncName = /^\s*function[ \n\r\t]+\w/; + + +var reThis = /\bthis\b/; + + +var fnToString = Function.prototype.toString; + + +function isBindable(func) { + var result = !(support.funcNames ? func.name : support.funcDecomp); + + if (!result) { + var source = fnToString.call(func); + if (!support.funcNames) { + result = !reFuncName.test(source); + } + if (!result) { + result = reThis.test(source) || isNative(func); + baseSetData(func, result); + } + } + return result; +} + +module.exports = isBindable; + +},{"../lang/isNative":327,"../support":336,"./baseSetData":307}],315:[function(require,module,exports){ + +var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + +function isIndex(value, length) { + value = +value; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; +} + +module.exports = isIndex; + +},{}],316:[function(require,module,exports){ +var isIndex = require('./isIndex'), + isLength = require('./isLength'), + isObject = require('../lang/isObject'); + + +function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number') { + var length = object.length, + prereq = isLength(length) && isIndex(index, length); + } else { + prereq = type == 'string' && index in object; + } + if (prereq) { + var other = object[index]; + return value === value ? (value === other) : (other !== other); + } + return false; +} + +module.exports = isIterateeCall; + +},{"../lang/isObject":328,"./isIndex":315,"./isLength":317}],317:[function(require,module,exports){ + +var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + +function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; +} + +module.exports = isLength; + +},{}],318:[function(require,module,exports){ + +function isObjectLike(value) { + return (value && typeof value == 'object') || false; +} + +module.exports = isObjectLike; + +},{}],319:[function(require,module,exports){ +var isObject = require('../lang/isObject'); + + +function isStrictComparable(value) { + return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); +} + +module.exports = isStrictComparable; + +},{"../lang/isObject":328}],320:[function(require,module,exports){ +(function (global){ +var isNative = require('../lang/isNative'); + + +var WeakMap = isNative(WeakMap = global.WeakMap) && WeakMap; + + +var metaMap = WeakMap && new WeakMap; + +module.exports = metaMap; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../lang/isNative":327}],321:[function(require,module,exports){ +var isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'), + isIndex = require('./isIndex'), + isLength = require('./isLength'), + keysIn = require('../object/keysIn'), + support = require('../support'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length; + + var allowIndexes = length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; +} + +module.exports = shimKeys; + +},{"../lang/isArguments":323,"../lang/isArray":324,"../object/keysIn":334,"../support":336,"./isIndex":315,"./isLength":317}],322:[function(require,module,exports){ +var isObject = require('../lang/isObject'); + + +function toObject(value) { + return isObject(value) ? value : Object(value); +} + +module.exports = toObject; + +},{"../lang/isObject":328}],323:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isObjectLike = require('../internal/isObjectLike'); + + +var argsTag = '[object Arguments]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +function isArguments(value) { + var length = isObjectLike(value) ? value.length : undefined; + return (isLength(length) && objToString.call(value) == argsTag) || false; +} + +module.exports = isArguments; + +},{"../internal/isLength":317,"../internal/isObjectLike":318}],324:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isNative = require('./isNative'), + isObjectLike = require('../internal/isObjectLike'); + + +var arrayTag = '[object Array]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray; + + +var isArray = nativeIsArray || function(value) { + return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false; +}; + +module.exports = isArray; + +},{"../internal/isLength":317,"../internal/isObjectLike":318,"./isNative":327}],325:[function(require,module,exports){ +var isArguments = require('./isArguments'), + isArray = require('./isArray'), + isFunction = require('./isFunction'), + isLength = require('../internal/isLength'), + isObjectLike = require('../internal/isObjectLike'), + isString = require('./isString'), + keys = require('../object/keys'); + + +function isEmpty(value) { + if (value == null) { + return true; + } + var length = value.length; + if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || + (isObjectLike(value) && isFunction(value.splice)))) { + return !length; + } + return !keys(value).length; +} + +module.exports = isEmpty; + +},{"../internal/isLength":317,"../internal/isObjectLike":318,"../object/keys":333,"./isArguments":323,"./isArray":324,"./isFunction":326,"./isString":329}],326:[function(require,module,exports){ +(function (global){ +var baseIsFunction = require('../internal/baseIsFunction'), + isNative = require('./isNative'); + + +var funcTag = '[object Function]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +var Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array; + + +var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { + return objToString.call(value) == funcTag; +}; + +module.exports = isFunction; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"../internal/baseIsFunction":302,"./isNative":327}],327:[function(require,module,exports){ +var escapeRegExp = require('../string/escapeRegExp'), + isObjectLike = require('../internal/isObjectLike'); + + +var funcTag = '[object Function]'; + + +var reHostCtor = /^\[object .+?Constructor\]$/; + + +var objectProto = Object.prototype; + + +var fnToString = Function.prototype.toString; + + +var objToString = objectProto.toString; + + +var reNative = RegExp('^' + + escapeRegExp(objToString) + .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' +); + + +function isNative(value) { + if (value == null) { + return false; + } + if (objToString.call(value) == funcTag) { + return reNative.test(fnToString.call(value)); + } + return (isObjectLike(value) && reHostCtor.test(value)) || false; +} + +module.exports = isNative; + +},{"../internal/isObjectLike":318,"../string/escapeRegExp":335}],328:[function(require,module,exports){ + +function isObject(value) { + var type = typeof value; + return type == 'function' || (value && type == 'object') || false; +} + +module.exports = isObject; + +},{}],329:[function(require,module,exports){ +var isObjectLike = require('../internal/isObjectLike'); + + +var stringTag = '[object String]'; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +function isString(value) { + return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; +} + +module.exports = isString; + +},{"../internal/isObjectLike":318}],330:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isObjectLike = require('../internal/isObjectLike'); + + +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + +var arrayBufferTag = '[object ArrayBuffer]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + +var typedArrayTags = {}; +typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = +typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = +typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = +typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = +typedArrayTags[uint32Tag] = true; +typedArrayTags[argsTag] = typedArrayTags[arrayTag] = +typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = +typedArrayTags[dateTag] = typedArrayTags[errorTag] = +typedArrayTags[funcTag] = typedArrayTags[mapTag] = +typedArrayTags[numberTag] = typedArrayTags[objectTag] = +typedArrayTags[regexpTag] = typedArrayTags[setTag] = +typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + +var objectProto = Object.prototype; + + +var objToString = objectProto.toString; + + +function isTypedArray(value) { + return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false; +} + +module.exports = isTypedArray; + +},{"../internal/isLength":317,"../internal/isObjectLike":318}],331:[function(require,module,exports){ +var baseAssign = require('../internal/baseAssign'), + createAssigner = require('../internal/createAssigner'); + + +var assign = createAssigner(baseAssign); + +module.exports = assign; + +},{"../internal/baseAssign":292,"../internal/createAssigner":310}],332:[function(require,module,exports){ +var baseCopy = require('../internal/baseCopy'), + baseCreate = require('../internal/baseCreate'), + isIterateeCall = require('../internal/isIterateeCall'), + keys = require('./keys'); + + +function create(prototype, properties, guard) { + var result = baseCreate(prototype); + if (guard && isIterateeCall(prototype, properties, guard)) { + properties = null; + } + return properties ? baseCopy(properties, result, keys(properties)) : result; +} + +module.exports = create; + +},{"../internal/baseCopy":294,"../internal/baseCreate":295,"../internal/isIterateeCall":316,"./keys":333}],333:[function(require,module,exports){ +var isLength = require('../internal/isLength'), + isNative = require('../lang/isNative'), + isObject = require('../lang/isObject'), + shimKeys = require('../internal/shimKeys'); + + +var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; + + +var keys = !nativeKeys ? shimKeys : function(object) { + if (object) { + var Ctor = object.constructor, + length = object.length; + } + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && (length && isLength(length)))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; +}; + +module.exports = keys; + +},{"../internal/isLength":317,"../internal/shimKeys":321,"../lang/isNative":327,"../lang/isObject":328}],334:[function(require,module,exports){ +var isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'), + isIndex = require('../internal/isIndex'), + isLength = require('../internal/isLength'), + isObject = require('../lang/isObject'), + support = require('../support'); + + +var objectProto = Object.prototype; + + +var hasOwnProperty = objectProto.hasOwnProperty; + + +function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; +} + +module.exports = keysIn; + +},{"../internal/isIndex":315,"../internal/isLength":317,"../lang/isArguments":323,"../lang/isArray":324,"../lang/isObject":328,"../support":336}],335:[function(require,module,exports){ +var baseToString = require('../internal/baseToString'); + + +var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, + reHasRegExpChars = RegExp(reRegExpChars.source); + + +function escapeRegExp(string) { + string = baseToString(string); + return (string && reHasRegExpChars.test(string)) + ? string.replace(reRegExpChars, '\\$&') + : string; +} + +module.exports = escapeRegExp; + +},{"../internal/baseToString":308}],336:[function(require,module,exports){ +(function (global){ +var isNative = require('./lang/isNative'); + + +var reThis = /\bthis\b/; + + +var objectProto = Object.prototype; + + +var document = (document = global.window) && document.document; + + +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + + +var support = {}; + +(function(x) { + + + support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); + + + support.funcNames = typeof Function.name == 'string'; + + + try { + support.dom = document.createDocumentFragment().nodeType === 11; + } catch(e) { + support.dom = false; + } + + + try { + support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); + } catch(e) { + support.nonEnumArgs = true; + } +}(0, 0)); + +module.exports = support; + +}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) +},{"./lang/isNative":327}],337:[function(require,module,exports){ + +function identity(value) { + return value; +} + +module.exports = identity; + +},{}],338:[function(require,module,exports){ +require('./browser_loader'); + +var AWS = require('./core'); + +if (typeof window !== 'undefined') window.AWS = AWS; +if (typeof module !== 'undefined') module.exports = AWS; +if (typeof self !== 'undefined') self.AWS = AWS; + + +require('../clients/browser_default'); +},{"../clients/browser_default":131,"./browser_loader":185,"./core":188}]},{},[338]); + diff --git a/node_modules/aws-sdk/dist/aws-sdk.min.js b/node_modules/aws-sdk/dist/aws-sdk.min.js new file mode 100644 index 0000000..6a3e233 --- /dev/null +++ b/node_modules/aws-sdk/dist/aws-sdk.min.js @@ -0,0 +1,40 @@ +// AWS SDK for JavaScript v2.6.8 +// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. +// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt +!function e(t,r,a){function s(n,o){if(!r[n]){if(!t[n]){var u="function"==typeof require&&require;if(!o&&u)return u(n,!0);if(i)return i(n,!0);var p=new Error("Cannot find module '"+n+"'");throw p.code="MODULE_NOT_FOUND",p}var c=r[n]={exports:{}};t[n][0].call(c.exports,function(e){var r=t[n][1][e];return s(r?r:e)},c,c.exports,e,t,r,a)}return r[n].exports}for(var i="function"==typeof require&&require,n=0;n `0`",state:"success"},{matcher:"error",expected:"InvalidInstanceID.NotFound",state:"retry"}]},BundleTaskComplete:{delay:15,operation:"DescribeBundleTasks",maxAttempts:40,acceptors:[{expected:"complete",matcher:"pathAll",state:"success",argument:"BundleTasks[].State"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"BundleTasks[].State"}]},ConversionTaskCancelled:{delay:15,operation:"DescribeConversionTasks",maxAttempts:40,acceptors:[{expected:"cancelled",matcher:"pathAll",state:"success",argument:"ConversionTasks[].State"}]},ConversionTaskCompleted:{delay:15,operation:"DescribeConversionTasks",maxAttempts:40,acceptors:[{expected:"completed",matcher:"pathAll",state:"success",argument:"ConversionTasks[].State"},{expected:"cancelled",matcher:"pathAny",state:"failure",argument:"ConversionTasks[].State"},{expected:"cancelling",matcher:"pathAny",state:"failure",argument:"ConversionTasks[].State"}]},ConversionTaskDeleted:{delay:15,operation:"DescribeConversionTasks",maxAttempts:40,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"ConversionTasks[].State"}]},CustomerGatewayAvailable:{delay:15,operation:"DescribeCustomerGateways",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"CustomerGateways[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"CustomerGateways[].State"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"CustomerGateways[].State"}]},ExportTaskCancelled:{delay:15,operation:"DescribeExportTasks",maxAttempts:40,acceptors:[{expected:"cancelled",matcher:"pathAll",state:"success",argument:"ExportTasks[].State"}]},ExportTaskCompleted:{delay:15,operation:"DescribeExportTasks",maxAttempts:40,acceptors:[{expected:"completed",matcher:"pathAll",state:"success",argument:"ExportTasks[].State"}]},ImageExists:{operation:"DescribeImages",maxAttempts:40,delay:15,acceptors:[{matcher:"path",expected:!0,argument:"length(Images[]) > `0`",state:"success"},{matcher:"error",expected:"InvalidAMIID.NotFound",state:"retry"}]},ImageAvailable:{operation:"DescribeImages",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"Images[].State",expected:"available"},{state:"failure",matcher:"pathAny",argument:"Images[].State",expected:"failed"}]},InstanceRunning:{delay:15,operation:"DescribeInstances",maxAttempts:40,acceptors:[{expected:"running",matcher:"pathAll",state:"success",argument:"Reservations[].Instances[].State.Name"},{expected:"shutting-down",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{matcher:"error",expected:"InvalidInstanceID.NotFound",state:"retry"}]},InstanceStatusOk:{operation:"DescribeInstanceStatus",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"InstanceStatuses[].InstanceStatus.Status",expected:"ok"},{matcher:"error",expected:"InvalidInstanceID.NotFound",state:"retry"}]},InstanceStopped:{delay:15,operation:"DescribeInstances",maxAttempts:40,acceptors:[{expected:"stopped",matcher:"pathAll",state:"success",argument:"Reservations[].Instances[].State.Name"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"}]},InstanceTerminated:{delay:15,operation:"DescribeInstances",maxAttempts:40,acceptors:[{expected:"terminated",matcher:"pathAll",state:"success",argument:"Reservations[].Instances[].State.Name"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"}]},KeyPairExists:{operation:"DescribeKeyPairs",delay:5,maxAttempts:6,acceptors:[{expected:!0,matcher:"pathAll",state:"success",argument:"length(KeyPairs[].KeyName) > `0`"},{expected:"InvalidKeyPair.NotFound",matcher:"error",state:"retry"}]},NatGatewayAvailable:{operation:"DescribeNatGateways",delay:15,maxAttempts:40,acceptors:[{state:"success",matcher:"pathAll",argument:"NatGateways[].State",expected:"available"},{state:"failure",matcher:"pathAny",argument:"NatGateways[].State",expected:"failed"},{state:"failure",matcher:"pathAny",argument:"NatGateways[].State",expected:"deleting"},{state:"failure",matcher:"pathAny",argument:"NatGateways[].State",expected:"deleted"},{state:"retry",matcher:"error",expected:"NatGatewayNotFound"}]},NetworkInterfaceAvailable:{operation:"DescribeNetworkInterfaces",delay:20,maxAttempts:10,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"NetworkInterfaces[].Status"},{expected:"InvalidNetworkInterfaceID.NotFound",matcher:"error",state:"failure"}]},PasswordDataAvailable:{operation:"GetPasswordData",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"path",argument:"length(PasswordData) > `0`",expected:!0}]},SnapshotCompleted:{delay:15,operation:"DescribeSnapshots",maxAttempts:40,acceptors:[{expected:"completed",matcher:"pathAll",state:"success",argument:"Snapshots[].State"}]},SpotInstanceRequestFulfilled:{operation:"DescribeSpotInstanceRequests",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"SpotInstanceRequests[].Status.Code",expected:"fulfilled"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"schedule-expired"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"canceled-before-fulfillment"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"bad-parameters"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"system-error"}]},SubnetAvailable:{delay:15,operation:"DescribeSubnets",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Subnets[].State"}]},SystemStatusOk:{operation:"DescribeInstanceStatus",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"InstanceStatuses[].SystemStatus.Status",expected:"ok"}]},VolumeAvailable:{delay:15,operation:"DescribeVolumes",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Volumes[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"Volumes[].State"}]},VolumeDeleted:{delay:15,operation:"DescribeVolumes",maxAttempts:40,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"Volumes[].State"},{matcher:"error",expected:"InvalidVolume.NotFound",state:"success"}]},VolumeInUse:{delay:15,operation:"DescribeVolumes",maxAttempts:40,acceptors:[{expected:"in-use",matcher:"pathAll",state:"success",argument:"Volumes[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"Volumes[].State"}]},VpcAvailable:{delay:15,operation:"DescribeVpcs",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Vpcs[].State"}]},VpcExists:{operation:"DescribeVpcs",delay:1,maxAttempts:5,acceptors:[{matcher:"status",expected:200,state:"success"},{matcher:"error",expected:"InvalidVpcID.NotFound",state:"retry"}]},VpnConnectionAvailable:{delay:15,operation:"DescribeVpnConnections",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"VpnConnections[].State"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"VpnConnections[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"VpnConnections[].State"}]},VpnConnectionDeleted:{delay:15,operation:"DescribeVpnConnections",maxAttempts:40,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"VpnConnections[].State"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"VpnConnections[].State"}]},VpcPeeringConnectionExists:{delay:15,operation:"DescribeVpcPeeringConnections",maxAttempts:40,acceptors:[{matcher:"status",expected:200,state:"success"},{matcher:"error",expected:"InvalidVpcPeeringConnectionID.NotFound",state:"retry"}]}}}},{}],42:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-09-21",endpointPrefix:"ecr",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon ECR",serviceFullName:"Amazon EC2 Container Registry",signatureVersion:"v4",targetPrefix:"AmazonEC2ContainerRegistry_V20150921"},operations:{BatchCheckLayerAvailability:{input:{type:"structure",required:["repositoryName","layerDigests"],members:{registryId:{},repositoryName:{},layerDigests:{type:"list",member:{}}}},output:{type:"structure",members:{layers:{type:"list",member:{type:"structure",members:{layerDigest:{},layerAvailability:{},layerSize:{type:"long"}}}},failures:{type:"list",member:{type:"structure",members:{layerDigest:{},failureCode:{},failureReason:{}}}}}}},BatchDeleteImage:{input:{type:"structure",required:["repositoryName","imageIds"],members:{registryId:{},repositoryName:{},imageIds:{shape:"Sh"}}},output:{type:"structure",members:{imageIds:{shape:"Sh"},failures:{shape:"Sm"}}}},BatchGetImage:{input:{type:"structure",required:["repositoryName","imageIds"],members:{registryId:{},repositoryName:{},imageIds:{shape:"Sh"}}},output:{type:"structure",members:{images:{type:"list",member:{shape:"St"}},failures:{shape:"Sm"}}}},CompleteLayerUpload:{input:{type:"structure",required:["repositoryName","uploadId","layerDigests"],members:{registryId:{},repositoryName:{},uploadId:{},layerDigests:{type:"list",member:{}}}},output:{type:"structure",members:{registryId:{},repositoryName:{},uploadId:{},layerDigest:{}}}},CreateRepository:{input:{type:"structure",required:["repositoryName"],members:{repositoryName:{}}},output:{type:"structure",members:{repository:{shape:"S11"}}}},DeleteRepository:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{},force:{type:"boolean"}}},output:{type:"structure",members:{repository:{shape:"S11"}}}},DeleteRepositoryPolicy:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{}}},output:{type:"structure",members:{registryId:{},repositoryName:{},policyText:{}}}},DescribeImages:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{},imageIds:{shape:"Sh"},nextToken:{},maxResults:{type:"integer"},filter:{type:"structure",members:{tagStatus:{}}}}},output:{type:"structure",members:{imageDetails:{type:"list",member:{type:"structure",members:{registryId:{},repositoryName:{},imageDigest:{},imageTags:{type:"list",member:{}},imageSizeInBytes:{type:"long"},imagePushedAt:{type:"timestamp"}}}},nextToken:{}}}},DescribeRepositories:{input:{type:"structure",members:{registryId:{},repositoryNames:{type:"list",member:{}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{repositories:{type:"list",member:{shape:"S11"}},nextToken:{}}}},GetAuthorizationToken:{input:{type:"structure",members:{registryIds:{type:"list",member:{}}}},output:{type:"structure",members:{authorizationData:{type:"list",member:{type:"structure",members:{authorizationToken:{},expiresAt:{type:"timestamp"},proxyEndpoint:{}}}}}}},GetDownloadUrlForLayer:{input:{type:"structure",required:["repositoryName","layerDigest"],members:{registryId:{},repositoryName:{},layerDigest:{}}},output:{type:"structure",members:{downloadUrl:{},layerDigest:{}}}},GetRepositoryPolicy:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{}}},output:{type:"structure",members:{registryId:{},repositoryName:{},policyText:{}}}},InitiateLayerUpload:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{}}},output:{type:"structure",members:{uploadId:{},partSize:{type:"long"}}}},ListImages:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{},nextToken:{},maxResults:{type:"integer"},filter:{type:"structure",members:{tagStatus:{}}}}},output:{type:"structure",members:{imageIds:{shape:"Sh"},nextToken:{}}}},PutImage:{input:{type:"structure",required:["repositoryName","imageManifest"],members:{registryId:{},repositoryName:{},imageManifest:{}}},output:{type:"structure",members:{image:{shape:"St"}}}},SetRepositoryPolicy:{input:{type:"structure",required:["repositoryName","policyText"],members:{registryId:{},repositoryName:{},policyText:{},force:{type:"boolean"}}},output:{type:"structure",members:{registryId:{},repositoryName:{},policyText:{}}}},UploadLayerPart:{input:{type:"structure",required:["repositoryName","uploadId","partFirstByte","partLastByte","layerPartBlob"],members:{registryId:{},repositoryName:{},uploadId:{},partFirstByte:{type:"long"},partLastByte:{type:"long"},layerPartBlob:{type:"blob"}}},output:{type:"structure",members:{registryId:{},repositoryName:{},uploadId:{},lastByteReceived:{type:"long"}}}}},shapes:{Sh:{type:"list",member:{shape:"Si"}},Si:{type:"structure",members:{imageDigest:{},imageTag:{}}},Sm:{type:"list",member:{type:"structure",members:{imageId:{shape:"Si"},failureCode:{},failureReason:{}}}},St:{type:"structure",members:{registryId:{},repositoryName:{},imageId:{shape:"Si"},imageManifest:{}}},S11:{type:"structure",members:{repositoryArn:{},registryId:{},repositoryName:{},repositoryUri:{},createdAt:{type:"timestamp"}}}}}},{}],43:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-11-13",endpointPrefix:"ecs",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon ECS",serviceFullName:"Amazon EC2 Container Service",signatureVersion:"v4",targetPrefix:"AmazonEC2ContainerServiceV20141113"},operations:{ +CreateCluster:{input:{type:"structure",members:{clusterName:{}}},output:{type:"structure",members:{cluster:{shape:"S4"}}}},CreateService:{input:{type:"structure",required:["serviceName","taskDefinition","desiredCount"],members:{cluster:{},serviceName:{},taskDefinition:{},loadBalancers:{shape:"S7"},desiredCount:{type:"integer"},clientToken:{},role:{},deploymentConfiguration:{shape:"Sa"}}},output:{type:"structure",members:{service:{shape:"Sc"}}}},DeleteCluster:{input:{type:"structure",required:["cluster"],members:{cluster:{}}},output:{type:"structure",members:{cluster:{shape:"S4"}}}},DeleteService:{input:{type:"structure",required:["service"],members:{cluster:{},service:{}}},output:{type:"structure",members:{service:{shape:"Sc"}}}},DeregisterContainerInstance:{input:{type:"structure",required:["containerInstance"],members:{cluster:{},containerInstance:{},force:{type:"boolean"}}},output:{type:"structure",members:{containerInstance:{shape:"Sp"}}}},DeregisterTaskDefinition:{input:{type:"structure",required:["taskDefinition"],members:{taskDefinition:{}}},output:{type:"structure",members:{taskDefinition:{shape:"S12"}}}},DescribeClusters:{input:{type:"structure",members:{clusters:{shape:"Sv"}}},output:{type:"structure",members:{clusters:{type:"list",member:{shape:"S4"}},failures:{shape:"S1w"}}}},DescribeContainerInstances:{input:{type:"structure",required:["containerInstances"],members:{cluster:{},containerInstances:{shape:"Sv"}}},output:{type:"structure",members:{containerInstances:{type:"list",member:{shape:"Sp"}},failures:{shape:"S1w"}}}},DescribeServices:{input:{type:"structure",required:["services"],members:{cluster:{},services:{shape:"Sv"}}},output:{type:"structure",members:{services:{type:"list",member:{shape:"Sc"}},failures:{shape:"S1w"}}}},DescribeTaskDefinition:{input:{type:"structure",required:["taskDefinition"],members:{taskDefinition:{}}},output:{type:"structure",members:{taskDefinition:{shape:"S12"}}}},DescribeTasks:{input:{type:"structure",required:["tasks"],members:{cluster:{},tasks:{shape:"Sv"}}},output:{type:"structure",members:{tasks:{shape:"S28"},failures:{shape:"S1w"}}}},DiscoverPollEndpoint:{input:{type:"structure",members:{containerInstance:{},cluster:{}}},output:{type:"structure",members:{endpoint:{},telemetryEndpoint:{}}}},ListClusters:{input:{type:"structure",members:{nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{clusterArns:{shape:"Sv"},nextToken:{}}}},ListContainerInstances:{input:{type:"structure",members:{cluster:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{containerInstanceArns:{shape:"Sv"},nextToken:{}}}},ListServices:{input:{type:"structure",members:{cluster:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{serviceArns:{shape:"Sv"},nextToken:{}}}},ListTaskDefinitionFamilies:{input:{type:"structure",members:{familyPrefix:{},status:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{families:{shape:"Sv"},nextToken:{}}}},ListTaskDefinitions:{input:{type:"structure",members:{familyPrefix:{},status:{},sort:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{taskDefinitionArns:{shape:"Sv"},nextToken:{}}}},ListTasks:{input:{type:"structure",members:{cluster:{},containerInstance:{},family:{},nextToken:{},maxResults:{type:"integer"},startedBy:{},serviceName:{},desiredStatus:{}}},output:{type:"structure",members:{taskArns:{shape:"Sv"},nextToken:{}}}},RegisterContainerInstance:{input:{type:"structure",members:{cluster:{},instanceIdentityDocument:{},instanceIdentityDocumentSignature:{},totalResources:{shape:"Sr"},versionInfo:{shape:"Sq"},containerInstanceArn:{},attributes:{shape:"Sy"}}},output:{type:"structure",members:{containerInstance:{shape:"Sp"}}}},RegisterTaskDefinition:{input:{type:"structure",required:["family","containerDefinitions"],members:{family:{},taskRoleArn:{},networkMode:{},containerDefinitions:{shape:"S13"},volumes:{shape:"S1o"}}},output:{type:"structure",members:{taskDefinition:{shape:"S12"}}}},RunTask:{input:{type:"structure",required:["taskDefinition"],members:{cluster:{},taskDefinition:{},overrides:{shape:"S2a"},count:{type:"integer"},startedBy:{}}},output:{type:"structure",members:{tasks:{shape:"S28"},failures:{shape:"S1w"}}}},StartTask:{input:{type:"structure",required:["taskDefinition","containerInstances"],members:{cluster:{},taskDefinition:{},overrides:{shape:"S2a"},containerInstances:{shape:"Sv"},startedBy:{}}},output:{type:"structure",members:{tasks:{shape:"S28"},failures:{shape:"S1w"}}}},StopTask:{input:{type:"structure",required:["task"],members:{cluster:{},task:{},reason:{}}},output:{type:"structure",members:{task:{shape:"S29"}}}},SubmitContainerStateChange:{input:{type:"structure",members:{cluster:{},task:{},containerName:{},status:{},exitCode:{type:"integer"},reason:{},networkBindings:{shape:"S2f"}}},output:{type:"structure",members:{acknowledgment:{}}}},SubmitTaskStateChange:{input:{type:"structure",members:{cluster:{},task:{},status:{},reason:{}}},output:{type:"structure",members:{acknowledgment:{}}}},UpdateContainerAgent:{input:{type:"structure",required:["containerInstance"],members:{cluster:{},containerInstance:{}}},output:{type:"structure",members:{containerInstance:{shape:"Sp"}}}},UpdateService:{input:{type:"structure",required:["service"],members:{cluster:{},service:{},desiredCount:{type:"integer"},taskDefinition:{},deploymentConfiguration:{shape:"Sa"}}},output:{type:"structure",members:{service:{shape:"Sc"}}}}},shapes:{S4:{type:"structure",members:{clusterArn:{},clusterName:{},status:{},registeredContainerInstancesCount:{type:"integer"},runningTasksCount:{type:"integer"},pendingTasksCount:{type:"integer"},activeServicesCount:{type:"integer"}}},S7:{type:"list",member:{type:"structure",members:{targetGroupArn:{},loadBalancerName:{},containerName:{},containerPort:{type:"integer"}}}},Sa:{type:"structure",members:{maximumPercent:{type:"integer"},minimumHealthyPercent:{type:"integer"}}},Sc:{type:"structure",members:{serviceArn:{},serviceName:{},clusterArn:{},loadBalancers:{shape:"S7"},status:{},desiredCount:{type:"integer"},runningCount:{type:"integer"},pendingCount:{type:"integer"},taskDefinition:{},deploymentConfiguration:{shape:"Sa"},deployments:{type:"list",member:{type:"structure",members:{id:{},status:{},taskDefinition:{},desiredCount:{type:"integer"},pendingCount:{type:"integer"},runningCount:{type:"integer"},createdAt:{type:"timestamp"},updatedAt:{type:"timestamp"}}}},roleArn:{},events:{type:"list",member:{type:"structure",members:{id:{},createdAt:{type:"timestamp"},message:{}}}},createdAt:{type:"timestamp"}}},Sp:{type:"structure",members:{containerInstanceArn:{},ec2InstanceId:{},versionInfo:{shape:"Sq"},remainingResources:{shape:"Sr"},registeredResources:{shape:"Sr"},status:{},agentConnected:{type:"boolean"},runningTasksCount:{type:"integer"},pendingTasksCount:{type:"integer"},agentUpdateStatus:{},attributes:{shape:"Sy"}}},Sq:{type:"structure",members:{agentVersion:{},agentHash:{},dockerVersion:{}}},Sr:{type:"list",member:{type:"structure",members:{name:{},type:{},doubleValue:{type:"double"},longValue:{type:"long"},integerValue:{type:"integer"},stringSetValue:{shape:"Sv"}}}},Sv:{type:"list",member:{}},Sy:{type:"list",member:{shape:"Sz"}},Sz:{type:"structure",required:["name"],members:{name:{},value:{}}},S12:{type:"structure",members:{taskDefinitionArn:{},containerDefinitions:{shape:"S13"},family:{},taskRoleArn:{},networkMode:{},revision:{type:"integer"},volumes:{shape:"S1o"},status:{},requiresAttributes:{type:"list",member:{shape:"Sz"}}}},S13:{type:"list",member:{type:"structure",members:{name:{},image:{},cpu:{type:"integer"},memory:{type:"integer"},memoryReservation:{type:"integer"},links:{shape:"Sv"},portMappings:{type:"list",member:{type:"structure",members:{containerPort:{type:"integer"},hostPort:{type:"integer"},protocol:{}}}},essential:{type:"boolean"},entryPoint:{shape:"Sv"},command:{shape:"Sv"},environment:{shape:"S18"},mountPoints:{type:"list",member:{type:"structure",members:{sourceVolume:{},containerPath:{},readOnly:{type:"boolean"}}}},volumesFrom:{type:"list",member:{type:"structure",members:{sourceContainer:{},readOnly:{type:"boolean"}}}},hostname:{},user:{},workingDirectory:{},disableNetworking:{type:"boolean"},privileged:{type:"boolean"},readonlyRootFilesystem:{type:"boolean"},dnsServers:{shape:"Sv"},dnsSearchDomains:{shape:"Sv"},extraHosts:{type:"list",member:{type:"structure",required:["hostname","ipAddress"],members:{hostname:{},ipAddress:{}}}},dockerSecurityOptions:{shape:"Sv"},dockerLabels:{type:"map",key:{},value:{}},ulimits:{type:"list",member:{type:"structure",required:["name","softLimit","hardLimit"],members:{name:{},softLimit:{type:"integer"},hardLimit:{type:"integer"}}}},logConfiguration:{type:"structure",required:["logDriver"],members:{logDriver:{},options:{type:"map",key:{},value:{}}}}}}},S18:{type:"list",member:{type:"structure",members:{name:{},value:{}}}},S1o:{type:"list",member:{type:"structure",members:{name:{},host:{type:"structure",members:{sourcePath:{}}}}}},S1w:{type:"list",member:{type:"structure",members:{arn:{},reason:{}}}},S28:{type:"list",member:{shape:"S29"}},S29:{type:"structure",members:{taskArn:{},clusterArn:{},taskDefinitionArn:{},containerInstanceArn:{},overrides:{shape:"S2a"},lastStatus:{},desiredStatus:{},containers:{type:"list",member:{type:"structure",members:{containerArn:{},taskArn:{},name:{},lastStatus:{},exitCode:{type:"integer"},reason:{},networkBindings:{shape:"S2f"}}}},startedBy:{},stoppedReason:{},createdAt:{type:"timestamp"},startedAt:{type:"timestamp"},stoppedAt:{type:"timestamp"}}},S2a:{type:"structure",members:{containerOverrides:{type:"list",member:{type:"structure",members:{name:{},command:{shape:"Sv"},environment:{shape:"S18"}}}},taskRoleArn:{}}},S2f:{type:"list",member:{type:"structure",members:{bindIP:{},containerPort:{type:"integer"},hostPort:{type:"integer"},protocol:{}}}}}}},{}],44:[function(e,t,r){t.exports={pagination:{ListClusters:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"clusterArns"},ListContainerInstances:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"containerInstanceArns"},ListTaskDefinitions:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"taskDefinitionArns"},ListTaskDefinitionFamilies:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"families"},ListTasks:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"taskArns"},ListServices:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"serviceArns"}}}},{}],45:[function(e,t,r){t.exports={version:2,waiters:{TasksRunning:{delay:6,operation:"DescribeTasks",maxAttempts:100,acceptors:[{expected:"STOPPED",matcher:"pathAny",state:"failure",argument:"tasks[].lastStatus"},{expected:"MISSING",matcher:"pathAny",state:"failure",argument:"failures[].reason"},{expected:"RUNNING",matcher:"pathAll",state:"success",argument:"tasks[].lastStatus"}]},TasksStopped:{delay:6,operation:"DescribeTasks",maxAttempts:100,acceptors:[{expected:"STOPPED",matcher:"pathAll",state:"success",argument:"tasks[].lastStatus"}]},ServicesStable:{delay:15,operation:"DescribeServices",maxAttempts:40,acceptors:[{expected:"MISSING",matcher:"pathAny",state:"failure",argument:"failures[].reason"},{expected:"DRAINING",matcher:"pathAny",state:"failure",argument:"services[].status"},{expected:"INACTIVE",matcher:"pathAny",state:"failure",argument:"services[].status"},{expected:!0,matcher:"path",state:"success",argument:"length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`"}]},ServicesInactive:{delay:15,operation:"DescribeServices",maxAttempts:40,acceptors:[{expected:"MISSING",matcher:"pathAny",state:"failure",argument:"failures[].reason"},{expected:"INACTIVE",matcher:"pathAny",state:"success",argument:"services[].status"}]}}}},{}],46:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-02-02",endpointPrefix:"elasticache",protocol:"query",serviceFullName:"Amazon ElastiCache",signatureVersion:"v4",xmlNamespace:"http://elasticache.amazonaws.com/doc/2015-02-02/"},operations:{AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S3"}}},output:{shape:"S5",resultWrapper:"AddTagsToResourceResult"}},AuthorizeCacheSecurityGroupIngress:{input:{type:"structure",required:["CacheSecurityGroupName","EC2SecurityGroupName","EC2SecurityGroupOwnerId"],members:{CacheSecurityGroupName:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeCacheSecurityGroupIngressResult",type:"structure",members:{CacheSecurityGroup:{shape:"S8"}}}},CopySnapshot:{input:{type:"structure",required:["SourceSnapshotName","TargetSnapshotName"],members:{SourceSnapshotName:{},TargetSnapshotName:{},TargetBucket:{}}},output:{resultWrapper:"CopySnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CreateCacheCluster:{input:{type:"structure",required:["CacheClusterId"],members:{CacheClusterId:{},ReplicationGroupId:{},AZMode:{},PreferredAvailabilityZone:{},PreferredAvailabilityZones:{shape:"So"},NumCacheNodes:{type:"integer"},CacheNodeType:{},Engine:{},EngineVersion:{},CacheParameterGroupName:{},CacheSubnetGroupName:{},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},Tags:{shape:"S3"},SnapshotArns:{shape:"Sr"},SnapshotName:{},PreferredMaintenanceWindow:{},Port:{type:"integer"},NotificationTopicArn:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}}},output:{resultWrapper:"CreateCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},CreateCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName","CacheParameterGroupFamily","Description"],members:{CacheParameterGroupName:{},CacheParameterGroupFamily:{},Description:{}}},output:{resultWrapper:"CreateCacheParameterGroupResult",type:"structure",members:{CacheParameterGroup:{shape:"S19"}}}},CreateCacheSecurityGroup:{input:{type:"structure",required:["CacheSecurityGroupName","Description"],members:{CacheSecurityGroupName:{},Description:{}}},output:{resultWrapper:"CreateCacheSecurityGroupResult",type:"structure",members:{CacheSecurityGroup:{shape:"S8"}}}},CreateCacheSubnetGroup:{input:{type:"structure",required:["CacheSubnetGroupName","CacheSubnetGroupDescription","SubnetIds"],members:{CacheSubnetGroupName:{},CacheSubnetGroupDescription:{},SubnetIds:{shape:"S1d"}}},output:{resultWrapper:"CreateCacheSubnetGroupResult",type:"structure",members:{CacheSubnetGroup:{shape:"S1f"}}}},CreateReplicationGroup:{input:{type:"structure",required:["ReplicationGroupId","ReplicationGroupDescription"],members:{ReplicationGroupId:{},ReplicationGroupDescription:{},PrimaryClusterId:{},AutomaticFailoverEnabled:{type:"boolean"},NumCacheClusters:{type:"integer"},PreferredCacheClusterAZs:{shape:"Sl"},NumNodeGroups:{type:"integer"},ReplicasPerNodeGroup:{type:"integer"},NodeGroupConfiguration:{type:"list",member:{shape:"Sk",locationName:"NodeGroupConfiguration"}},CacheNodeType:{},Engine:{},EngineVersion:{},CacheParameterGroupName:{},CacheSubnetGroupName:{},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},Tags:{shape:"S3"},SnapshotArns:{shape:"Sr"},SnapshotName:{},PreferredMaintenanceWindow:{},Port:{type:"integer"},NotificationTopicArn:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}}},output:{resultWrapper:"CreateReplicationGroupResult",type:"structure",members:{ReplicationGroup:{shape:"S1m"}}}},CreateSnapshot:{input:{type:"structure",required:["SnapshotName"],members:{ReplicationGroupId:{},CacheClusterId:{},SnapshotName:{}}},output:{resultWrapper:"CreateSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},DeleteCacheCluster:{input:{type:"structure",required:["CacheClusterId"],members:{CacheClusterId:{},FinalSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},DeleteCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName"],members:{CacheParameterGroupName:{}}}},DeleteCacheSecurityGroup:{input:{type:"structure",required:["CacheSecurityGroupName"],members:{CacheSecurityGroupName:{}}}},DeleteCacheSubnetGroup:{input:{type:"structure",required:["CacheSubnetGroupName"],members:{CacheSubnetGroupName:{}}}},DeleteReplicationGroup:{input:{type:"structure",required:["ReplicationGroupId"],members:{ReplicationGroupId:{},RetainPrimaryCluster:{type:"boolean"},FinalSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteReplicationGroupResult",type:"structure",members:{ReplicationGroup:{shape:"S1m"}}}},DeleteSnapshot:{input:{type:"structure",required:["SnapshotName"],members:{SnapshotName:{}}},output:{resultWrapper:"DeleteSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},DescribeCacheClusters:{input:{type:"structure",members:{CacheClusterId:{},MaxRecords:{type:"integer"},Marker:{},ShowCacheNodeInfo:{type:"boolean"}}},output:{resultWrapper:"DescribeCacheClustersResult",type:"structure",members:{Marker:{},CacheClusters:{type:"list",member:{shape:"Su",locationName:"CacheCluster"}}}}},DescribeCacheEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},CacheParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"}}},output:{resultWrapper:"DescribeCacheEngineVersionsResult",type:"structure",members:{Marker:{},CacheEngineVersions:{type:"list",member:{locationName:"CacheEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},CacheParameterGroupFamily:{},CacheEngineDescription:{},CacheEngineVersionDescription:{}}}}}}},DescribeCacheParameterGroups:{input:{type:"structure",members:{CacheParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheParameterGroupsResult",type:"structure",members:{Marker:{},CacheParameterGroups:{type:"list",member:{shape:"S19",locationName:"CacheParameterGroup"}}}}},DescribeCacheParameters:{input:{type:"structure",required:["CacheParameterGroupName"],members:{CacheParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheParametersResult",type:"structure",members:{Marker:{},Parameters:{shape:"S2h"},CacheNodeTypeSpecificParameters:{shape:"S2k"}}}},DescribeCacheSecurityGroups:{input:{type:"structure",members:{CacheSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheSecurityGroupsResult",type:"structure",members:{Marker:{},CacheSecurityGroups:{type:"list",member:{shape:"S8",locationName:"CacheSecurityGroup"}}}}},DescribeCacheSubnetGroups:{input:{type:"structure",members:{CacheSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheSubnetGroupsResult",type:"structure",members:{Marker:{},CacheSubnetGroups:{type:"list",member:{shape:"S1f",locationName:"CacheSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["CacheParameterGroupFamily"],members:{CacheParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{CacheParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2h"},CacheNodeTypeSpecificParameters:{shape:"S2k"}},wrapper:!0}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},Date:{type:"timestamp"}}}}}}},DescribeReplicationGroups:{input:{type:"structure",members:{ReplicationGroupId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReplicationGroupsResult",type:"structure",members:{Marker:{},ReplicationGroups:{type:"list",member:{shape:"S1m",locationName:"ReplicationGroup"}}}}},DescribeReservedCacheNodes:{input:{type:"structure",members:{ReservedCacheNodeId:{},ReservedCacheNodesOfferingId:{},CacheNodeType:{},Duration:{},ProductDescription:{},OfferingType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedCacheNodesResult",type:"structure",members:{Marker:{},ReservedCacheNodes:{type:"list",member:{shape:"S38",locationName:"ReservedCacheNode"}}}}},DescribeReservedCacheNodesOfferings:{input:{type:"structure",members:{ReservedCacheNodesOfferingId:{},CacheNodeType:{},Duration:{},ProductDescription:{},OfferingType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedCacheNodesOfferingsResult",type:"structure",members:{Marker:{},ReservedCacheNodesOfferings:{type:"list",member:{locationName:"ReservedCacheNodesOffering",type:"structure",members:{ReservedCacheNodesOfferingId:{},CacheNodeType:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},ProductDescription:{},OfferingType:{},RecurringCharges:{shape:"S3a"}},wrapper:!0}}}}},DescribeSnapshots:{input:{type:"structure",members:{ReplicationGroupId:{},CacheClusterId:{},SnapshotName:{},SnapshotSource:{},Marker:{},MaxRecords:{type:"integer"},ShowNodeGroupConfig:{type:"boolean"}}},output:{resultWrapper:"DescribeSnapshotsResult",type:"structure",members:{Marker:{},Snapshots:{type:"list",member:{shape:"Sd",locationName:"Snapshot"}}}}},ListAllowedNodeTypeModifications:{input:{type:"structure",members:{CacheClusterId:{},ReplicationGroupId:{}}},output:{resultWrapper:"ListAllowedNodeTypeModificationsResult",type:"structure",members:{ScaleUpModifications:{type:"list",member:{}}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{}}},output:{shape:"S5",resultWrapper:"ListTagsForResourceResult"}},ModifyCacheCluster:{input:{type:"structure",required:["CacheClusterId"],members:{CacheClusterId:{},NumCacheNodes:{type:"integer"},CacheNodeIdsToRemove:{shape:"Sy"},AZMode:{},NewAvailabilityZones:{shape:"So"},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},PreferredMaintenanceWindow:{},NotificationTopicArn:{},CacheParameterGroupName:{},NotificationTopicStatus:{},ApplyImmediately:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{},CacheNodeType:{}}},output:{resultWrapper:"ModifyCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},ModifyCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName","ParameterNameValues"],members:{CacheParameterGroupName:{},ParameterNameValues:{shape:"S3q"}}},output:{shape:"S3s",resultWrapper:"ModifyCacheParameterGroupResult"}},ModifyCacheSubnetGroup:{input:{type:"structure",required:["CacheSubnetGroupName"],members:{CacheSubnetGroupName:{},CacheSubnetGroupDescription:{},SubnetIds:{shape:"S1d"}}},output:{resultWrapper:"ModifyCacheSubnetGroupResult",type:"structure",members:{CacheSubnetGroup:{shape:"S1f"}}}},ModifyReplicationGroup:{input:{type:"structure",required:["ReplicationGroupId"],members:{ReplicationGroupId:{},ReplicationGroupDescription:{},PrimaryClusterId:{},SnapshottingClusterId:{},AutomaticFailoverEnabled:{type:"boolean"},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},PreferredMaintenanceWindow:{},NotificationTopicArn:{},CacheParameterGroupName:{},NotificationTopicStatus:{},ApplyImmediately:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{},CacheNodeType:{}}},output:{resultWrapper:"ModifyReplicationGroupResult",type:"structure",members:{ReplicationGroup:{shape:"S1m"}}}},PurchaseReservedCacheNodesOffering:{input:{type:"structure",required:["ReservedCacheNodesOfferingId"],members:{ReservedCacheNodesOfferingId:{},ReservedCacheNodeId:{},CacheNodeCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedCacheNodesOfferingResult",type:"structure",members:{ReservedCacheNode:{shape:"S38"}}}},RebootCacheCluster:{input:{type:"structure",required:["CacheClusterId","CacheNodeIdsToReboot"],members:{CacheClusterId:{},CacheNodeIdsToReboot:{shape:"Sy"}}},output:{resultWrapper:"RebootCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}},output:{shape:"S5",resultWrapper:"RemoveTagsFromResourceResult"}},ResetCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName"],members:{CacheParameterGroupName:{},ResetAllParameters:{type:"boolean"},ParameterNameValues:{shape:"S3q"}}},output:{shape:"S3s",resultWrapper:"ResetCacheParameterGroupResult"}},RevokeCacheSecurityGroupIngress:{input:{type:"structure",required:["CacheSecurityGroupName","EC2SecurityGroupName","EC2SecurityGroupOwnerId"],members:{CacheSecurityGroupName:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeCacheSecurityGroupIngressResult",type:"structure",members:{CacheSecurityGroup:{shape:"S8"}}}}},shapes:{S3:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},S5:{type:"structure",members:{TagList:{shape:"S3"}}},S8:{type:"structure",members:{OwnerId:{},CacheSecurityGroupName:{},Description:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}}}},wrapper:!0},Sd:{type:"structure",members:{SnapshotName:{},ReplicationGroupId:{},ReplicationGroupDescription:{},CacheClusterId:{},SnapshotStatus:{},SnapshotSource:{},CacheNodeType:{},Engine:{},EngineVersion:{},NumCacheNodes:{type:"integer"},PreferredAvailabilityZone:{},CacheClusterCreateTime:{type:"timestamp"},PreferredMaintenanceWindow:{},TopicArn:{},Port:{type:"integer"},CacheParameterGroupName:{},CacheSubnetGroupName:{},VpcId:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{},NumNodeGroups:{type:"integer"},AutomaticFailover:{},NodeSnapshots:{type:"list",member:{locationName:"NodeSnapshot",type:"structure",members:{CacheClusterId:{},NodeGroupId:{},CacheNodeId:{},NodeGroupConfiguration:{shape:"Sk"},CacheSize:{},CacheNodeCreateTime:{type:"timestamp"},SnapshotCreateTime:{type:"timestamp"}},wrapper:!0}}},wrapper:!0},Sk:{type:"structure",members:{Slots:{},ReplicaCount:{type:"integer"},PrimaryAvailabilityZone:{},ReplicaAvailabilityZones:{shape:"Sl"}}},Sl:{type:"list",member:{locationName:"AvailabilityZone"}},So:{type:"list",member:{locationName:"PreferredAvailabilityZone"}},Sp:{type:"list",member:{locationName:"CacheSecurityGroupName"}},Sq:{type:"list",member:{locationName:"SecurityGroupId"}},Sr:{type:"list",member:{locationName:"SnapshotArn"}},Su:{type:"structure",members:{CacheClusterId:{},ConfigurationEndpoint:{shape:"Sv"},ClientDownloadLandingPage:{},CacheNodeType:{},Engine:{},EngineVersion:{},CacheClusterStatus:{},NumCacheNodes:{type:"integer"},PreferredAvailabilityZone:{},CacheClusterCreateTime:{type:"timestamp"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{NumCacheNodes:{type:"integer"},CacheNodeIdsToRemove:{shape:"Sy"},EngineVersion:{},CacheNodeType:{}}},NotificationConfiguration:{type:"structure",members:{TopicArn:{},TopicStatus:{}}},CacheSecurityGroups:{type:"list",member:{locationName:"CacheSecurityGroup",type:"structure",members:{CacheSecurityGroupName:{},Status:{}}}},CacheParameterGroup:{type:"structure",members:{CacheParameterGroupName:{},ParameterApplyStatus:{},CacheNodeIdsToReboot:{shape:"Sy"}}},CacheSubnetGroupName:{},CacheNodes:{type:"list",member:{locationName:"CacheNode",type:"structure",members:{CacheNodeId:{},CacheNodeStatus:{},CacheNodeCreateTime:{type:"timestamp"},Endpoint:{shape:"Sv"},ParameterGroupStatus:{},SourceCacheNodeId:{},CustomerAvailabilityZone:{}}}},AutoMinorVersionUpgrade:{type:"boolean"},SecurityGroups:{type:"list",member:{type:"structure",members:{SecurityGroupId:{},Status:{}}}},ReplicationGroupId:{},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}},wrapper:!0},Sv:{type:"structure",members:{Address:{},Port:{type:"integer"}}},Sy:{type:"list",member:{locationName:"CacheNodeId"}},S19:{type:"structure",members:{CacheParameterGroupName:{},CacheParameterGroupFamily:{},Description:{}},wrapper:!0},S1d:{type:"list",member:{locationName:"SubnetIdentifier"}},S1f:{type:"structure",members:{CacheSubnetGroupName:{},CacheSubnetGroupDescription:{},VpcId:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{type:"structure",members:{Name:{}},wrapper:!0}}}}},wrapper:!0},S1m:{type:"structure",members:{ReplicationGroupId:{},Description:{},Status:{},PendingModifiedValues:{type:"structure",members:{PrimaryClusterId:{},AutomaticFailoverStatus:{}}},MemberClusters:{type:"list",member:{locationName:"ClusterId"}},NodeGroups:{type:"list",member:{locationName:"NodeGroup",type:"structure",members:{NodeGroupId:{},Status:{},PrimaryEndpoint:{shape:"Sv"},Slots:{},NodeGroupMembers:{type:"list",member:{locationName:"NodeGroupMember",type:"structure",members:{CacheClusterId:{},CacheNodeId:{},ReadEndpoint:{shape:"Sv"},PreferredAvailabilityZone:{},CurrentRole:{}}}}}}},SnapshottingClusterId:{},AutomaticFailover:{},ConfigurationEndpoint:{shape:"Sv"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}},wrapper:!0},S2h:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ChangeType:{}}}},S2k:{type:"list",member:{locationName:"CacheNodeTypeSpecificParameter",type:"structure",members:{ParameterName:{},Description:{},Source:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},CacheNodeTypeSpecificValues:{type:"list",member:{locationName:"CacheNodeTypeSpecificValue",type:"structure",members:{CacheNodeType:{},Value:{}}}},ChangeType:{}}}},S38:{type:"structure",members:{ReservedCacheNodeId:{},ReservedCacheNodesOfferingId:{},CacheNodeType:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CacheNodeCount:{type:"integer"},ProductDescription:{},OfferingType:{},State:{},RecurringCharges:{shape:"S3a"}},wrapper:!0},S3a:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S3q:{type:"list",member:{locationName:"ParameterNameValue",type:"structure",members:{ParameterName:{},ParameterValue:{}}}},S3s:{type:"structure",members:{CacheParameterGroupName:{}}}}}},{}],47:[function(e,t,r){t.exports={pagination:{DescribeCacheClusters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheClusters"},DescribeCacheEngineVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheEngineVersions"},DescribeCacheParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheParameterGroups"},DescribeCacheParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeCacheSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheSecurityGroups"},DescribeCacheSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheSubnetGroups"},DescribeEngineDefaultParameters:{input_token:"Marker",output_token:"EngineDefaults.Marker",limit_key:"MaxRecords",result_key:"EngineDefaults.Parameters"},DescribeEvents:{input_token:"Marker",output_token:"Marker", +limit_key:"MaxRecords",result_key:"Events"},DescribeReservedCacheNodes:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedCacheNodes"},DescribeReservedCacheNodesOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedCacheNodesOfferings"},DescribeReplicationGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReplicationGroups"},DescribeSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Snapshots"}}}},{}],48:[function(e,t,r){t.exports={version:2,waiters:{CacheClusterAvailable:{acceptors:[{argument:"CacheClusters[].CacheClusterStatus",expected:"available",matcher:"pathAll",state:"success"},{argument:"CacheClusters[].CacheClusterStatus",expected:"deleted",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"deleting",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"incompatible-network",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"restore-failed",matcher:"pathAny",state:"failure"}],delay:15,description:"Wait until ElastiCache cluster is available.",maxAttempts:40,operation:"DescribeCacheClusters"},CacheClusterDeleted:{acceptors:[{argument:"CacheClusters[].CacheClusterStatus",expected:"deleted",matcher:"pathAll",state:"success"},{expected:"CacheClusterNotFound",matcher:"error",state:"success"},{argument:"CacheClusters[].CacheClusterStatus",expected:"available",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"creating",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"incompatible-network",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"modifying",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"restore-failed",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"snapshotting",matcher:"pathAny",state:"failure"}],delay:15,description:"Wait until ElastiCache cluster is deleted.",maxAttempts:40,operation:"DescribeCacheClusters"},ReplicationGroupAvailable:{acceptors:[{argument:"ReplicationGroups[].Status",expected:"available",matcher:"pathAll",state:"success"},{argument:"ReplicationGroups[].Status",expected:"deleted",matcher:"pathAny",state:"failure"}],delay:15,description:"Wait until ElastiCache replication group is available.",maxAttempts:40,operation:"DescribeReplicationGroups"},ReplicationGroupDeleted:{acceptors:[{argument:"ReplicationGroups[].Status",expected:"deleted",matcher:"pathAll",state:"success"},{argument:"ReplicationGroups[].Status",expected:"available",matcher:"pathAny",state:"failure"},{expected:"ReplicationGroupNotFoundFault",matcher:"error",state:"success"}],delay:15,description:"Wait until ElastiCache replication group is deleted.",maxAttempts:40,operation:"DescribeReplicationGroups"}}}},{}],49:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-12-01",endpointPrefix:"elasticbeanstalk",protocol:"query",serviceAbbreviation:"Elastic Beanstalk",serviceFullName:"AWS Elastic Beanstalk",signatureVersion:"v4",xmlNamespace:"http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/"},operations:{AbortEnvironmentUpdate:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}}},ApplyEnvironmentManagedAction:{input:{type:"structure",required:["ActionId"],members:{EnvironmentName:{},EnvironmentId:{},ActionId:{}}},output:{resultWrapper:"ApplyEnvironmentManagedActionResult",type:"structure",members:{ActionId:{},ActionDescription:{},ActionType:{},Status:{}}}},CheckDNSAvailability:{input:{type:"structure",required:["CNAMEPrefix"],members:{CNAMEPrefix:{}}},output:{resultWrapper:"CheckDNSAvailabilityResult",type:"structure",members:{Available:{type:"boolean"},FullyQualifiedCNAME:{}}}},ComposeEnvironments:{input:{type:"structure",members:{ApplicationName:{},GroupName:{},VersionLabels:{type:"list",member:{}}}},output:{shape:"Si",resultWrapper:"ComposeEnvironmentsResult"}},CreateApplication:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},Description:{}}},output:{shape:"S14",resultWrapper:"CreateApplicationResult"}},CreateApplicationVersion:{input:{type:"structure",required:["ApplicationName","VersionLabel"],members:{ApplicationName:{},VersionLabel:{},Description:{},SourceBundle:{shape:"S19"},AutoCreateApplication:{type:"boolean"},Process:{type:"boolean"}}},output:{shape:"S1e",resultWrapper:"CreateApplicationVersionResult"}},CreateConfigurationTemplate:{input:{type:"structure",required:["ApplicationName","TemplateName"],members:{ApplicationName:{},TemplateName:{},SolutionStackName:{},SourceConfiguration:{type:"structure",members:{ApplicationName:{},TemplateName:{}}},EnvironmentId:{},Description:{},OptionSettings:{shape:"S1j"}}},output:{shape:"S1p",resultWrapper:"CreateConfigurationTemplateResult"}},CreateEnvironment:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},EnvironmentName:{},GroupName:{},Description:{},CNAMEPrefix:{},Tier:{shape:"S10"},Tags:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},VersionLabel:{},TemplateName:{},SolutionStackName:{},OptionSettings:{shape:"S1j"},OptionsToRemove:{shape:"S1w"}}},output:{shape:"Sk",resultWrapper:"CreateEnvironmentResult"}},CreateStorageLocation:{output:{resultWrapper:"CreateStorageLocationResult",type:"structure",members:{S3Bucket:{}}}},DeleteApplication:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},TerminateEnvByForce:{type:"boolean"}}}},DeleteApplicationVersion:{input:{type:"structure",required:["ApplicationName","VersionLabel"],members:{ApplicationName:{},VersionLabel:{},DeleteSourceBundle:{type:"boolean"}}}},DeleteConfigurationTemplate:{input:{type:"structure",required:["ApplicationName","TemplateName"],members:{ApplicationName:{},TemplateName:{}}}},DeleteEnvironmentConfiguration:{input:{type:"structure",required:["ApplicationName","EnvironmentName"],members:{ApplicationName:{},EnvironmentName:{}}}},DescribeApplicationVersions:{input:{type:"structure",members:{ApplicationName:{},VersionLabels:{shape:"S16"}}},output:{resultWrapper:"DescribeApplicationVersionsResult",type:"structure",members:{ApplicationVersions:{type:"list",member:{shape:"S1f"}}}}},DescribeApplications:{input:{type:"structure",members:{ApplicationNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeApplicationsResult",type:"structure",members:{Applications:{type:"list",member:{shape:"S15"}}}}},DescribeConfigurationOptions:{input:{type:"structure",members:{ApplicationName:{},TemplateName:{},EnvironmentName:{},SolutionStackName:{},Options:{shape:"S1w"}}},output:{resultWrapper:"DescribeConfigurationOptionsResult",type:"structure",members:{SolutionStackName:{},Options:{type:"list",member:{type:"structure",members:{Namespace:{},Name:{},DefaultValue:{},ChangeSeverity:{},UserDefined:{type:"boolean"},ValueType:{},ValueOptions:{type:"list",member:{}},MinValue:{type:"integer"},MaxValue:{type:"integer"},MaxLength:{type:"integer"},Regex:{type:"structure",members:{Pattern:{},Label:{}}}}}}}}},DescribeConfigurationSettings:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},TemplateName:{},EnvironmentName:{}}},output:{resultWrapper:"DescribeConfigurationSettingsResult",type:"structure",members:{ConfigurationSettings:{type:"list",member:{shape:"S1p"}}}}},DescribeEnvironmentHealth:{input:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},AttributeNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeEnvironmentHealthResult",type:"structure",members:{EnvironmentName:{},HealthStatus:{},Status:{},Color:{},Causes:{shape:"S2z"},ApplicationMetrics:{shape:"S31"},InstancesHealth:{type:"structure",members:{NoData:{type:"integer"},Unknown:{type:"integer"},Pending:{type:"integer"},Ok:{type:"integer"},Info:{type:"integer"},Warning:{type:"integer"},Degraded:{type:"integer"},Severe:{type:"integer"}}},RefreshedAt:{type:"timestamp"}}}},DescribeEnvironmentManagedActionHistory:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{},NextToken:{},MaxItems:{type:"integer"}}},output:{resultWrapper:"DescribeEnvironmentManagedActionHistoryResult",type:"structure",members:{ManagedActionHistoryItems:{type:"list",member:{type:"structure",members:{ActionId:{},ActionType:{},ActionDescription:{},FailureType:{},Status:{},FailureDescription:{},ExecutedTime:{type:"timestamp"},FinishedTime:{type:"timestamp"}}}},NextToken:{}}}},DescribeEnvironmentManagedActions:{input:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},Status:{}}},output:{resultWrapper:"DescribeEnvironmentManagedActionsResult",type:"structure",members:{ManagedActions:{type:"list",member:{type:"structure",members:{ActionId:{},ActionDescription:{},ActionType:{},Status:{},WindowStartTime:{type:"timestamp"}}}}}}},DescribeEnvironmentResources:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}},output:{resultWrapper:"DescribeEnvironmentResourcesResult",type:"structure",members:{EnvironmentResources:{type:"structure",members:{EnvironmentName:{},AutoScalingGroups:{type:"list",member:{type:"structure",members:{Name:{}}}},Instances:{type:"list",member:{type:"structure",members:{Id:{}}}},LaunchConfigurations:{type:"list",member:{type:"structure",members:{Name:{}}}},LoadBalancers:{type:"list",member:{type:"structure",members:{Name:{}}}},Triggers:{type:"list",member:{type:"structure",members:{Name:{}}}},Queues:{type:"list",member:{type:"structure",members:{Name:{},URL:{}}}}}}}}},DescribeEnvironments:{input:{type:"structure",members:{ApplicationName:{},VersionLabel:{},EnvironmentIds:{type:"list",member:{}},EnvironmentNames:{type:"list",member:{}},IncludeDeleted:{type:"boolean"},IncludedDeletedBackTo:{type:"timestamp"}}},output:{shape:"Si",resultWrapper:"DescribeEnvironmentsResult"}},DescribeEvents:{input:{type:"structure",members:{ApplicationName:{},VersionLabel:{},TemplateName:{},EnvironmentId:{},EnvironmentName:{},RequestId:{},Severity:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},MaxRecords:{type:"integer"},NextToken:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Events:{type:"list",member:{type:"structure",members:{EventDate:{type:"timestamp"},Message:{},ApplicationName:{},VersionLabel:{},TemplateName:{},EnvironmentName:{},RequestId:{},Severity:{}}}},NextToken:{}}}},DescribeInstancesHealth:{input:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},AttributeNames:{type:"list",member:{}},NextToken:{}}},output:{resultWrapper:"DescribeInstancesHealthResult",type:"structure",members:{InstanceHealthList:{type:"list",member:{type:"structure",members:{InstanceId:{},HealthStatus:{},Color:{},Causes:{shape:"S2z"},LaunchedAt:{type:"timestamp"},ApplicationMetrics:{shape:"S31"},System:{type:"structure",members:{CPUUtilization:{type:"structure",members:{User:{type:"double"},Nice:{type:"double"},System:{type:"double"},Idle:{type:"double"},IOWait:{type:"double"},IRQ:{type:"double"},SoftIRQ:{type:"double"}}},LoadAverage:{type:"list",member:{type:"double"}}}},Deployment:{type:"structure",members:{VersionLabel:{},DeploymentId:{type:"long"},Status:{},DeploymentTime:{type:"timestamp"}}},AvailabilityZone:{},InstanceType:{}}}},RefreshedAt:{type:"timestamp"},NextToken:{}}}},ListAvailableSolutionStacks:{output:{resultWrapper:"ListAvailableSolutionStacksResult",type:"structure",members:{SolutionStacks:{type:"list",member:{}},SolutionStackDetails:{type:"list",member:{type:"structure",members:{SolutionStackName:{},PermittedFileTypes:{type:"list",member:{}}}}}}}},RebuildEnvironment:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}}},RequestEnvironmentInfo:{input:{type:"structure",required:["InfoType"],members:{EnvironmentId:{},EnvironmentName:{},InfoType:{}}}},RestartAppServer:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}}},RetrieveEnvironmentInfo:{input:{type:"structure",required:["InfoType"],members:{EnvironmentId:{},EnvironmentName:{},InfoType:{}}},output:{resultWrapper:"RetrieveEnvironmentInfoResult",type:"structure",members:{EnvironmentInfo:{type:"list",member:{type:"structure",members:{InfoType:{},Ec2InstanceId:{},SampleTimestamp:{type:"timestamp"},Message:{}}}}}}},SwapEnvironmentCNAMEs:{input:{type:"structure",members:{SourceEnvironmentId:{},SourceEnvironmentName:{},DestinationEnvironmentId:{},DestinationEnvironmentName:{}}}},TerminateEnvironment:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{},TerminateResources:{type:"boolean"},ForceTerminate:{type:"boolean"}}},output:{shape:"Sk",resultWrapper:"TerminateEnvironmentResult"}},UpdateApplication:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},Description:{}}},output:{shape:"S14",resultWrapper:"UpdateApplicationResult"}},UpdateApplicationVersion:{input:{type:"structure",required:["ApplicationName","VersionLabel"],members:{ApplicationName:{},VersionLabel:{},Description:{}}},output:{shape:"S1e",resultWrapper:"UpdateApplicationVersionResult"}},UpdateConfigurationTemplate:{input:{type:"structure",required:["ApplicationName","TemplateName"],members:{ApplicationName:{},TemplateName:{},Description:{},OptionSettings:{shape:"S1j"},OptionsToRemove:{shape:"S1w"}}},output:{shape:"S1p",resultWrapper:"UpdateConfigurationTemplateResult"}},UpdateEnvironment:{input:{type:"structure",members:{ApplicationName:{},EnvironmentId:{},EnvironmentName:{},GroupName:{},Description:{},Tier:{shape:"S10"},VersionLabel:{},TemplateName:{},SolutionStackName:{},OptionSettings:{shape:"S1j"},OptionsToRemove:{shape:"S1w"}}},output:{shape:"Sk",resultWrapper:"UpdateEnvironmentResult"}},ValidateConfigurationSettings:{input:{type:"structure",required:["ApplicationName","OptionSettings"],members:{ApplicationName:{},TemplateName:{},EnvironmentName:{},OptionSettings:{shape:"S1j"}}},output:{resultWrapper:"ValidateConfigurationSettingsResult",type:"structure",members:{Messages:{type:"list",member:{type:"structure",members:{Message:{},Severity:{},Namespace:{},OptionName:{}}}}}}}},shapes:{Si:{type:"structure",members:{Environments:{type:"list",member:{shape:"Sk"}}}},Sk:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},ApplicationName:{},VersionLabel:{},SolutionStackName:{},TemplateName:{},Description:{},EndpointURL:{},CNAME:{},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},Status:{},AbortableOperationInProgress:{type:"boolean"},Health:{},HealthStatus:{},Resources:{type:"structure",members:{LoadBalancer:{type:"structure",members:{LoadBalancerName:{},Domain:{},Listeners:{type:"list",member:{type:"structure",members:{Protocol:{},Port:{type:"integer"}}}}}}}},Tier:{shape:"S10"},EnvironmentLinks:{type:"list",member:{type:"structure",members:{LinkName:{},EnvironmentName:{}}}}}},S10:{type:"structure",members:{Name:{},Type:{},Version:{}}},S14:{type:"structure",members:{Application:{shape:"S15"}}},S15:{type:"structure",members:{ApplicationName:{},Description:{},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},Versions:{shape:"S16"},ConfigurationTemplates:{type:"list",member:{}}}},S16:{type:"list",member:{}},S19:{type:"structure",members:{S3Bucket:{},S3Key:{}}},S1e:{type:"structure",members:{ApplicationVersion:{shape:"S1f"}}},S1f:{type:"structure",members:{ApplicationName:{},Description:{},VersionLabel:{},SourceBundle:{shape:"S19"},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},Status:{}}},S1j:{type:"list",member:{type:"structure",members:{ResourceName:{},Namespace:{},OptionName:{},Value:{}}}},S1p:{type:"structure",members:{SolutionStackName:{},ApplicationName:{},TemplateName:{},Description:{},EnvironmentName:{},DeploymentStatus:{},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},OptionSettings:{shape:"S1j"}}},S1w:{type:"list",member:{type:"structure",members:{ResourceName:{},Namespace:{},OptionName:{}}}},S2z:{type:"list",member:{}},S31:{type:"structure",members:{Duration:{type:"integer"},RequestCount:{type:"integer"},StatusCodes:{type:"structure",members:{Status2xx:{type:"integer"},Status3xx:{type:"integer"},Status4xx:{type:"integer"},Status5xx:{type:"integer"}}},Latency:{type:"structure",members:{P999:{type:"double"},P99:{type:"double"},P95:{type:"double"},P90:{type:"double"},P85:{type:"double"},P75:{type:"double"},P50:{type:"double"},P10:{type:"double"}}}}}}}},{}],50:[function(e,t,r){t.exports={pagination:{DescribeApplicationVersions:{result_key:"ApplicationVersions"},DescribeApplications:{result_key:"Applications"},DescribeConfigurationOptions:{result_key:"Options"},DescribeEnvironments:{result_key:"Environments"},DescribeEvents:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxRecords",result_key:"Events"},ListAvailableSolutionStacks:{result_key:"SolutionStacks"}}}},{}],51:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-06-01",endpointPrefix:"elasticloadbalancing",protocol:"query",serviceFullName:"Elastic Load Balancing",signatureVersion:"v4",xmlNamespace:"http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"},operations:{AddTags:{input:{type:"structure",required:["LoadBalancerNames","Tags"],members:{LoadBalancerNames:{shape:"S2"},Tags:{shape:"S4"}}},output:{resultWrapper:"AddTagsResult",type:"structure",members:{}}},ApplySecurityGroupsToLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","SecurityGroups"],members:{LoadBalancerName:{},SecurityGroups:{shape:"Sa"}}},output:{resultWrapper:"ApplySecurityGroupsToLoadBalancerResult",type:"structure",members:{SecurityGroups:{shape:"Sa"}}}},AttachLoadBalancerToSubnets:{input:{type:"structure",required:["LoadBalancerName","Subnets"],members:{LoadBalancerName:{},Subnets:{shape:"Se"}}},output:{resultWrapper:"AttachLoadBalancerToSubnetsResult",type:"structure",members:{Subnets:{shape:"Se"}}}},ConfigureHealthCheck:{input:{type:"structure",required:["LoadBalancerName","HealthCheck"],members:{LoadBalancerName:{},HealthCheck:{shape:"Si"}}},output:{resultWrapper:"ConfigureHealthCheckResult",type:"structure",members:{HealthCheck:{shape:"Si"}}}},CreateAppCookieStickinessPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName","CookieName"],members:{LoadBalancerName:{},PolicyName:{},CookieName:{}}},output:{resultWrapper:"CreateAppCookieStickinessPolicyResult",type:"structure",members:{}}},CreateLBCookieStickinessPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName"],members:{LoadBalancerName:{},PolicyName:{},CookieExpirationPeriod:{type:"long"}}},output:{resultWrapper:"CreateLBCookieStickinessPolicyResult",type:"structure",members:{}}},CreateLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","Listeners"],members:{LoadBalancerName:{},Listeners:{shape:"Sx"},AvailabilityZones:{shape:"S13"},Subnets:{shape:"Se"},SecurityGroups:{shape:"Sa"},Scheme:{},Tags:{shape:"S4"}}},output:{resultWrapper:"CreateLoadBalancerResult",type:"structure",members:{DNSName:{}}}},CreateLoadBalancerListeners:{input:{type:"structure",required:["LoadBalancerName","Listeners"],members:{LoadBalancerName:{},Listeners:{shape:"Sx"}}},output:{resultWrapper:"CreateLoadBalancerListenersResult",type:"structure",members:{}}},CreateLoadBalancerPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName","PolicyTypeName"],members:{LoadBalancerName:{},PolicyName:{},PolicyTypeName:{},PolicyAttributes:{type:"list",member:{type:"structure",members:{AttributeName:{},AttributeValue:{}}}}}},output:{resultWrapper:"CreateLoadBalancerPolicyResult",type:"structure",members:{}}},DeleteLoadBalancer:{input:{type:"structure",required:["LoadBalancerName"],members:{LoadBalancerName:{}}},output:{resultWrapper:"DeleteLoadBalancerResult",type:"structure",members:{}}},DeleteLoadBalancerListeners:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerPorts"],members:{LoadBalancerName:{},LoadBalancerPorts:{type:"list",member:{type:"integer"}}}},output:{resultWrapper:"DeleteLoadBalancerListenersResult",type:"structure",members:{}}},DeleteLoadBalancerPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName"],members:{LoadBalancerName:{},PolicyName:{}}},output:{resultWrapper:"DeleteLoadBalancerPolicyResult",type:"structure",members:{}}},DeregisterInstancesFromLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","Instances"],members:{LoadBalancerName:{},Instances:{shape:"S1p"}}},output:{resultWrapper:"DeregisterInstancesFromLoadBalancerResult",type:"structure",members:{Instances:{shape:"S1p"}}}},DescribeInstanceHealth:{input:{type:"structure",required:["LoadBalancerName"],members:{LoadBalancerName:{},Instances:{shape:"S1p"}}},output:{resultWrapper:"DescribeInstanceHealthResult",type:"structure",members:{InstanceStates:{type:"list",member:{type:"structure",members:{InstanceId:{},State:{},ReasonCode:{},Description:{}}}}}}},DescribeLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerName"],members:{LoadBalancerName:{}}},output:{resultWrapper:"DescribeLoadBalancerAttributesResult",type:"structure",members:{LoadBalancerAttributes:{shape:"S22"}}}},DescribeLoadBalancerPolicies:{input:{type:"structure",members:{LoadBalancerName:{},PolicyNames:{shape:"S2k"}}},output:{resultWrapper:"DescribeLoadBalancerPoliciesResult",type:"structure",members:{PolicyDescriptions:{type:"list",member:{type:"structure",members:{PolicyName:{},PolicyTypeName:{},PolicyAttributeDescriptions:{type:"list",member:{type:"structure",members:{AttributeName:{},AttributeValue:{}}}}}}}}}},DescribeLoadBalancerPolicyTypes:{input:{type:"structure",members:{PolicyTypeNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeLoadBalancerPolicyTypesResult",type:"structure",members:{PolicyTypeDescriptions:{type:"list",member:{type:"structure",members:{PolicyTypeName:{},Description:{},PolicyAttributeTypeDescriptions:{type:"list",member:{type:"structure",members:{AttributeName:{},AttributeType:{},Description:{},DefaultValue:{},Cardinality:{}}}}}}}}}},DescribeLoadBalancers:{input:{type:"structure",members:{LoadBalancerNames:{shape:"S2"},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeLoadBalancersResult",type:"structure",members:{LoadBalancerDescriptions:{type:"list",member:{type:"structure",members:{LoadBalancerName:{},DNSName:{},CanonicalHostedZoneName:{},CanonicalHostedZoneNameID:{},ListenerDescriptions:{type:"list",member:{type:"structure",members:{Listener:{shape:"Sy"},PolicyNames:{shape:"S2k"}}}},Policies:{type:"structure",members:{AppCookieStickinessPolicies:{type:"list",member:{type:"structure",members:{PolicyName:{},CookieName:{}}}},LBCookieStickinessPolicies:{type:"list",member:{type:"structure",members:{PolicyName:{},CookieExpirationPeriod:{type:"long"}}}},OtherPolicies:{shape:"S2k"}}},BackendServerDescriptions:{type:"list",member:{type:"structure",members:{InstancePort:{type:"integer"},PolicyNames:{shape:"S2k"}}}},AvailabilityZones:{shape:"S13"},Subnets:{shape:"Se"},VPCId:{},Instances:{shape:"S1p"},HealthCheck:{shape:"Si"},SourceSecurityGroup:{type:"structure",members:{OwnerAlias:{},GroupName:{}}},SecurityGroups:{shape:"Sa"},CreatedTime:{type:"timestamp"},Scheme:{}}}},NextMarker:{}}}},DescribeTags:{input:{type:"structure",required:["LoadBalancerNames"],members:{LoadBalancerNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeTagsResult",type:"structure",members:{TagDescriptions:{type:"list",member:{type:"structure",members:{LoadBalancerName:{},Tags:{shape:"S4"}}}}}}},DetachLoadBalancerFromSubnets:{input:{type:"structure",required:["LoadBalancerName","Subnets"],members:{LoadBalancerName:{},Subnets:{shape:"Se"}}},output:{resultWrapper:"DetachLoadBalancerFromSubnetsResult",type:"structure",members:{Subnets:{shape:"Se"}}}},DisableAvailabilityZonesForLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","AvailabilityZones"],members:{LoadBalancerName:{},AvailabilityZones:{shape:"S13"}}},output:{resultWrapper:"DisableAvailabilityZonesForLoadBalancerResult",type:"structure",members:{AvailabilityZones:{shape:"S13"}}}},EnableAvailabilityZonesForLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","AvailabilityZones"],members:{LoadBalancerName:{},AvailabilityZones:{shape:"S13"}}},output:{resultWrapper:"EnableAvailabilityZonesForLoadBalancerResult",type:"structure",members:{AvailabilityZones:{shape:"S13"}}}},ModifyLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerAttributes"],members:{LoadBalancerName:{},LoadBalancerAttributes:{shape:"S22"}}},output:{resultWrapper:"ModifyLoadBalancerAttributesResult",type:"structure",members:{LoadBalancerName:{},LoadBalancerAttributes:{shape:"S22"}}}},RegisterInstancesWithLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","Instances"],members:{LoadBalancerName:{},Instances:{shape:"S1p"}}},output:{resultWrapper:"RegisterInstancesWithLoadBalancerResult",type:"structure",members:{Instances:{shape:"S1p"}}}},RemoveTags:{input:{type:"structure",required:["LoadBalancerNames","Tags"],members:{LoadBalancerNames:{shape:"S2"},Tags:{type:"list",member:{type:"structure",members:{Key:{}}}}}},output:{resultWrapper:"RemoveTagsResult",type:"structure",members:{}}},SetLoadBalancerListenerSSLCertificate:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerPort","SSLCertificateId"],members:{LoadBalancerName:{},LoadBalancerPort:{type:"integer"},SSLCertificateId:{}}},output:{resultWrapper:"SetLoadBalancerListenerSSLCertificateResult",type:"structure",members:{}}},SetLoadBalancerPoliciesForBackendServer:{input:{type:"structure",required:["LoadBalancerName","InstancePort","PolicyNames"],members:{LoadBalancerName:{},InstancePort:{type:"integer"},PolicyNames:{shape:"S2k"}}},output:{resultWrapper:"SetLoadBalancerPoliciesForBackendServerResult",type:"structure",members:{}}},SetLoadBalancerPoliciesOfListener:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerPort","PolicyNames"],members:{LoadBalancerName:{},LoadBalancerPort:{type:"integer"},PolicyNames:{shape:"S2k"}}},output:{resultWrapper:"SetLoadBalancerPoliciesOfListenerResult",type:"structure",members:{}}}},shapes:{S2:{type:"list",member:{}},S4:{type:"list",member:{type:"structure",required:["Key"],members:{Key:{},Value:{}}}},Sa:{type:"list",member:{}},Se:{type:"list",member:{}},Si:{type:"structure",required:["Target","Interval","Timeout","UnhealthyThreshold","HealthyThreshold"],members:{Target:{},Interval:{type:"integer"},Timeout:{type:"integer"},UnhealthyThreshold:{type:"integer"},HealthyThreshold:{type:"integer"}}},Sx:{type:"list",member:{shape:"Sy"}},Sy:{type:"structure",required:["Protocol","LoadBalancerPort","InstancePort"],members:{Protocol:{},LoadBalancerPort:{type:"integer"},InstanceProtocol:{},InstancePort:{type:"integer"},SSLCertificateId:{}}},S13:{type:"list",member:{}},S1p:{type:"list",member:{type:"structure",members:{InstanceId:{}}}},S22:{type:"structure",members:{CrossZoneLoadBalancing:{type:"structure",required:["Enabled"],members:{Enabled:{type:"boolean"}}},AccessLog:{type:"structure",required:["Enabled"],members:{Enabled:{type:"boolean"},S3BucketName:{},EmitInterval:{type:"integer"},S3BucketPrefix:{}}},ConnectionDraining:{type:"structure",required:["Enabled"],members:{Enabled:{type:"boolean"},Timeout:{type:"integer"}}},ConnectionSettings:{type:"structure",required:["IdleTimeout"],members:{IdleTimeout:{type:"integer"}}},AdditionalAttributes:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}}}},S2k:{type:"list",member:{}}}}},{}],52:[function(e,t,r){t.exports={pagination:{DescribeInstanceHealth:{result_key:"InstanceStates"},DescribeLoadBalancerPolicies:{result_key:"PolicyDescriptions"},DescribeLoadBalancerPolicyTypes:{result_key:"PolicyTypeDescriptions"},DescribeLoadBalancers:{input_token:"Marker",output_token:"NextMarker",result_key:"LoadBalancerDescriptions"}}}},{}],53:[function(e,t,r){t.exports={version:2,waiters:{InstanceDeregistered:{delay:15,operation:"DescribeInstanceHealth",maxAttempts:40,acceptors:[{expected:"OutOfService",matcher:"pathAll",state:"success",argument:"InstanceStates[].State"},{matcher:"error",expected:"InvalidInstance",state:"success"}]},AnyInstanceInService:{acceptors:[{argument:"InstanceStates[].State",expected:"InService",matcher:"pathAny",state:"success"}],delay:15,maxAttempts:40,operation:"DescribeInstanceHealth"},InstanceInService:{acceptors:[{argument:"InstanceStates[].State",expected:"InService",matcher:"pathAll",state:"success"}],delay:15,maxAttempts:40,operation:"DescribeInstanceHealth"}}}},{}],54:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-12-01",endpointPrefix:"elasticloadbalancing",protocol:"query",serviceAbbreviation:"Elastic Load Balancing v2",serviceFullName:"Elastic Load Balancing",signatureVersion:"v4",xmlNamespace:"http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/"},operations:{AddTags:{input:{type:"structure",required:["ResourceArns","Tags"],members:{ResourceArns:{shape:"S2"},Tags:{shape:"S4"}}},output:{resultWrapper:"AddTagsResult",type:"structure",members:{}}},CreateListener:{input:{type:"structure",required:["LoadBalancerArn","Protocol","Port","DefaultActions"],members:{LoadBalancerArn:{},Protocol:{},Port:{type:"integer"},SslPolicy:{},Certificates:{shape:"Se"},DefaultActions:{shape:"Sh"}}},output:{resultWrapper:"CreateListenerResult",type:"structure",members:{Listeners:{shape:"Sm"}}}},CreateLoadBalancer:{input:{type:"structure",required:["Name","Subnets"],members:{Name:{},Subnets:{shape:"Sr"},SecurityGroups:{shape:"St"},Scheme:{},Tags:{shape:"S4"}}},output:{resultWrapper:"CreateLoadBalancerResult",type:"structure",members:{LoadBalancers:{shape:"Sx"}}}},CreateRule:{input:{type:"structure",required:["ListenerArn","Conditions","Priority","Actions"],members:{ListenerArn:{},Conditions:{shape:"S1b"},Priority:{type:"integer"},Actions:{shape:"Sh"}}},output:{resultWrapper:"CreateRuleResult",type:"structure",members:{Rules:{shape:"S1i"}}}},CreateTargetGroup:{input:{type:"structure",required:["Name","Protocol","Port","VpcId"],members:{Name:{},Protocol:{},Port:{type:"integer"},VpcId:{},HealthCheckProtocol:{},HealthCheckPort:{},HealthCheckPath:{},HealthCheckIntervalSeconds:{type:"integer"},HealthCheckTimeoutSeconds:{type:"integer"},HealthyThresholdCount:{type:"integer"},UnhealthyThresholdCount:{type:"integer"},Matcher:{shape:"S1u"}}},output:{resultWrapper:"CreateTargetGroupResult",type:"structure",members:{TargetGroups:{shape:"S1x"}}}},DeleteListener:{input:{type:"structure",required:["ListenerArn"],members:{ListenerArn:{}}},output:{resultWrapper:"DeleteListenerResult",type:"structure",members:{}}},DeleteLoadBalancer:{input:{type:"structure",required:["LoadBalancerArn"],members:{LoadBalancerArn:{}}},output:{resultWrapper:"DeleteLoadBalancerResult",type:"structure",members:{}}},DeleteRule:{input:{type:"structure",required:["RuleArn"],members:{RuleArn:{}}},output:{resultWrapper:"DeleteRuleResult",type:"structure",members:{}}},DeleteTargetGroup:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{}}},output:{resultWrapper:"DeleteTargetGroupResult",type:"structure",members:{}}},DeregisterTargets:{input:{type:"structure",required:["TargetGroupArn","Targets"],members:{TargetGroupArn:{},Targets:{shape:"S29"}}},output:{resultWrapper:"DeregisterTargetsResult",type:"structure",members:{}}},DescribeListeners:{input:{type:"structure",members:{LoadBalancerArn:{},ListenerArns:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeListenersResult",type:"structure",members:{Listeners:{shape:"Sm"},NextMarker:{}}}},DescribeLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerArn"],members:{LoadBalancerArn:{}}},output:{resultWrapper:"DescribeLoadBalancerAttributesResult",type:"structure",members:{Attributes:{shape:"S2k"}}}},DescribeLoadBalancers:{input:{type:"structure",members:{LoadBalancerArns:{shape:"S1z" +},Names:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeLoadBalancersResult",type:"structure",members:{LoadBalancers:{shape:"Sx"},NextMarker:{}}}},DescribeRules:{input:{type:"structure",members:{ListenerArn:{},RuleArns:{type:"list",member:{}}}},output:{resultWrapper:"DescribeRulesResult",type:"structure",members:{Rules:{shape:"S1i"}}}},DescribeSSLPolicies:{input:{type:"structure",members:{Names:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeSSLPoliciesResult",type:"structure",members:{SslPolicies:{type:"list",member:{type:"structure",members:{SslProtocols:{type:"list",member:{}},Ciphers:{type:"list",member:{type:"structure",members:{Name:{},Priority:{type:"integer"}}}},Name:{}}}},NextMarker:{}}}},DescribeTags:{input:{type:"structure",required:["ResourceArns"],members:{ResourceArns:{shape:"S2"}}},output:{resultWrapper:"DescribeTagsResult",type:"structure",members:{TagDescriptions:{type:"list",member:{type:"structure",members:{ResourceArn:{},Tags:{shape:"S4"}}}}}}},DescribeTargetGroupAttributes:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{}}},output:{resultWrapper:"DescribeTargetGroupAttributesResult",type:"structure",members:{Attributes:{shape:"S3b"}}}},DescribeTargetGroups:{input:{type:"structure",members:{LoadBalancerArn:{},TargetGroupArns:{type:"list",member:{}},Names:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeTargetGroupsResult",type:"structure",members:{TargetGroups:{shape:"S1x"},NextMarker:{}}}},DescribeTargetHealth:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{},Targets:{shape:"S29"}}},output:{resultWrapper:"DescribeTargetHealthResult",type:"structure",members:{TargetHealthDescriptions:{type:"list",member:{type:"structure",members:{Target:{shape:"S2a"},HealthCheckPort:{},TargetHealth:{type:"structure",members:{State:{},Reason:{},Description:{}}}}}}}}},ModifyListener:{input:{type:"structure",required:["ListenerArn"],members:{ListenerArn:{},Port:{type:"integer"},Protocol:{},SslPolicy:{},Certificates:{shape:"Se"},DefaultActions:{shape:"Sh"}}},output:{resultWrapper:"ModifyListenerResult",type:"structure",members:{Listeners:{shape:"Sm"}}}},ModifyLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerArn","Attributes"],members:{LoadBalancerArn:{},Attributes:{shape:"S2k"}}},output:{resultWrapper:"ModifyLoadBalancerAttributesResult",type:"structure",members:{Attributes:{shape:"S2k"}}}},ModifyRule:{input:{type:"structure",required:["RuleArn"],members:{RuleArn:{},Conditions:{shape:"S1b"},Actions:{shape:"Sh"}}},output:{resultWrapper:"ModifyRuleResult",type:"structure",members:{Rules:{shape:"S1i"}}}},ModifyTargetGroup:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{},HealthCheckProtocol:{},HealthCheckPort:{},HealthCheckPath:{},HealthCheckIntervalSeconds:{type:"integer"},HealthCheckTimeoutSeconds:{type:"integer"},HealthyThresholdCount:{type:"integer"},UnhealthyThresholdCount:{type:"integer"},Matcher:{shape:"S1u"}}},output:{resultWrapper:"ModifyTargetGroupResult",type:"structure",members:{TargetGroups:{shape:"S1x"}}}},ModifyTargetGroupAttributes:{input:{type:"structure",required:["TargetGroupArn","Attributes"],members:{TargetGroupArn:{},Attributes:{shape:"S3b"}}},output:{resultWrapper:"ModifyTargetGroupAttributesResult",type:"structure",members:{Attributes:{shape:"S3b"}}}},RegisterTargets:{input:{type:"structure",required:["TargetGroupArn","Targets"],members:{TargetGroupArn:{},Targets:{shape:"S29"}}},output:{resultWrapper:"RegisterTargetsResult",type:"structure",members:{}}},RemoveTags:{input:{type:"structure",required:["ResourceArns","TagKeys"],members:{ResourceArns:{shape:"S2"},TagKeys:{type:"list",member:{}}}},output:{resultWrapper:"RemoveTagsResult",type:"structure",members:{}}},SetRulePriorities:{input:{type:"structure",required:["RulePriorities"],members:{RulePriorities:{type:"list",member:{type:"structure",members:{RuleArn:{},Priority:{type:"integer"}}}}}},output:{resultWrapper:"SetRulePrioritiesResult",type:"structure",members:{Rules:{shape:"S1i"}}}},SetSecurityGroups:{input:{type:"structure",required:["LoadBalancerArn","SecurityGroups"],members:{LoadBalancerArn:{},SecurityGroups:{shape:"St"}}},output:{resultWrapper:"SetSecurityGroupsResult",type:"structure",members:{SecurityGroupIds:{shape:"St"}}}},SetSubnets:{input:{type:"structure",required:["LoadBalancerArn","Subnets"],members:{LoadBalancerArn:{},Subnets:{shape:"Sr"}}},output:{resultWrapper:"SetSubnetsResult",type:"structure",members:{AvailabilityZones:{shape:"S17"}}}}},shapes:{S2:{type:"list",member:{}},S4:{type:"list",member:{type:"structure",required:["Key"],members:{Key:{},Value:{}}}},Se:{type:"list",member:{type:"structure",members:{CertificateArn:{}}}},Sh:{type:"list",member:{type:"structure",required:["Type","TargetGroupArn"],members:{Type:{},TargetGroupArn:{}}}},Sm:{type:"list",member:{type:"structure",members:{ListenerArn:{},LoadBalancerArn:{},Port:{type:"integer"},Protocol:{},Certificates:{shape:"Se"},SslPolicy:{},DefaultActions:{shape:"Sh"}}}},Sr:{type:"list",member:{}},St:{type:"list",member:{}},Sx:{type:"list",member:{type:"structure",members:{LoadBalancerArn:{},DNSName:{},CanonicalHostedZoneId:{},CreatedTime:{type:"timestamp"},LoadBalancerName:{},Scheme:{},VpcId:{},State:{type:"structure",members:{Code:{},Reason:{}}},Type:{},AvailabilityZones:{shape:"S17"},SecurityGroups:{shape:"St"}}}},S17:{type:"list",member:{type:"structure",members:{ZoneName:{},SubnetId:{}}}},S1b:{type:"list",member:{type:"structure",members:{Field:{},Values:{type:"list",member:{}}}}},S1i:{type:"list",member:{type:"structure",members:{RuleArn:{},Priority:{},Conditions:{shape:"S1b"},Actions:{shape:"Sh"},IsDefault:{type:"boolean"}}}},S1u:{type:"structure",required:["HttpCode"],members:{HttpCode:{}}},S1x:{type:"list",member:{type:"structure",members:{TargetGroupArn:{},TargetGroupName:{},Protocol:{},Port:{type:"integer"},VpcId:{},HealthCheckProtocol:{},HealthCheckPort:{},HealthCheckIntervalSeconds:{type:"integer"},HealthCheckTimeoutSeconds:{type:"integer"},HealthyThresholdCount:{type:"integer"},UnhealthyThresholdCount:{type:"integer"},HealthCheckPath:{},Matcher:{shape:"S1u"},LoadBalancerArns:{shape:"S1z"}}}},S1z:{type:"list",member:{}},S29:{type:"list",member:{shape:"S2a"}},S2a:{type:"structure",required:["Id"],members:{Id:{},Port:{type:"integer"}}},S2k:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S3b:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}}}}},{}],55:[function(e,t,r){t.exports={pagination:{DescribeTargetGroups:{input_token:"Marker",output_token:"NextMarker",result_key:"TargetGroups"},DescribeListeners:{input_token:"Marker",output_token:"NextMarker",result_key:"Listeners"},DescribeLoadBalancers:{input_token:"Marker",output_token:"NextMarker",result_key:"LoadBalancers"}}}},{}],56:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2009-03-31",endpointPrefix:"elasticmapreduce",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon EMR",serviceFullName:"Amazon Elastic MapReduce",signatureVersion:"v4",targetPrefix:"ElasticMapReduce",timestampFormat:"unixTimestamp"},operations:{AddInstanceGroups:{input:{type:"structure",required:["InstanceGroups","JobFlowId"],members:{InstanceGroups:{shape:"S2"},JobFlowId:{}}},output:{type:"structure",members:{JobFlowId:{},InstanceGroupIds:{type:"list",member:{}}}}},AddJobFlowSteps:{input:{type:"structure",required:["JobFlowId","Steps"],members:{JobFlowId:{},Steps:{shape:"Sl"}}},output:{type:"structure",members:{StepIds:{type:"list",member:{}}}}},AddTags:{input:{type:"structure",required:["ResourceId","Tags"],members:{ResourceId:{},Tags:{shape:"Sx"}}},output:{type:"structure",members:{}}},CreateSecurityConfiguration:{input:{type:"structure",required:["Name","SecurityConfiguration"],members:{Name:{},SecurityConfiguration:{}}},output:{type:"structure",required:["Name","CreationDateTime"],members:{Name:{},CreationDateTime:{type:"timestamp"}}}},DeleteSecurityConfiguration:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{}}},DescribeCluster:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{}}},output:{type:"structure",members:{Cluster:{type:"structure",members:{Id:{},Name:{},Status:{shape:"S19"},Ec2InstanceAttributes:{type:"structure",members:{Ec2KeyName:{},Ec2SubnetId:{},Ec2AvailabilityZone:{},IamInstanceProfile:{},EmrManagedMasterSecurityGroup:{},EmrManagedSlaveSecurityGroup:{},ServiceAccessSecurityGroup:{},AdditionalMasterSecurityGroups:{shape:"S1f"},AdditionalSlaveSecurityGroups:{shape:"S1f"}}},LogUri:{},RequestedAmiVersion:{},RunningAmiVersion:{},ReleaseLabel:{},AutoTerminate:{type:"boolean"},TerminationProtected:{type:"boolean"},VisibleToAllUsers:{type:"boolean"},Applications:{shape:"S1h"},Tags:{shape:"Sx"},ServiceRole:{},NormalizedInstanceHours:{type:"integer"},MasterPublicDnsName:{},Configurations:{shape:"S9"},SecurityConfiguration:{}}}}}},DescribeJobFlows:{input:{type:"structure",members:{CreatedAfter:{type:"timestamp"},CreatedBefore:{type:"timestamp"},JobFlowIds:{shape:"Ss"},JobFlowStates:{type:"list",member:{}}}},output:{type:"structure",members:{JobFlows:{type:"list",member:{type:"structure",required:["JobFlowId","Name","ExecutionStatusDetail","Instances"],members:{JobFlowId:{},Name:{},LogUri:{},AmiVersion:{},ExecutionStatusDetail:{type:"structure",required:["State","CreationDateTime"],members:{State:{},CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"},LastStateChangeReason:{}}},Instances:{type:"structure",required:["MasterInstanceType","SlaveInstanceType","InstanceCount"],members:{MasterInstanceType:{},MasterPublicDnsName:{},MasterInstanceId:{},SlaveInstanceType:{},InstanceCount:{type:"integer"},InstanceGroups:{type:"list",member:{type:"structure",required:["Market","InstanceRole","InstanceType","InstanceRequestCount","InstanceRunningCount","State","CreationDateTime"],members:{InstanceGroupId:{},Name:{},Market:{},InstanceRole:{},BidPrice:{},InstanceType:{},InstanceRequestCount:{type:"integer"},InstanceRunningCount:{type:"integer"},State:{},LastStateChangeReason:{},CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}},NormalizedInstanceHours:{type:"integer"},Ec2KeyName:{},Ec2SubnetId:{},Placement:{shape:"S1u"},KeepJobFlowAliveWhenNoSteps:{type:"boolean"},TerminationProtected:{type:"boolean"},HadoopVersion:{}}},Steps:{type:"list",member:{type:"structure",required:["StepConfig","ExecutionStatusDetail"],members:{StepConfig:{shape:"Sm"},ExecutionStatusDetail:{type:"structure",required:["State","CreationDateTime"],members:{State:{},CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"},LastStateChangeReason:{}}}}}},BootstrapActions:{type:"list",member:{type:"structure",members:{BootstrapActionConfig:{shape:"S21"}}}},SupportedProducts:{shape:"S23"},VisibleToAllUsers:{type:"boolean"},JobFlowRole:{},ServiceRole:{}}}}}},deprecated:!0},DescribeSecurityConfiguration:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Name:{},SecurityConfiguration:{},CreationDateTime:{type:"timestamp"}}}},DescribeStep:{input:{type:"structure",required:["ClusterId","StepId"],members:{ClusterId:{},StepId:{}}},output:{type:"structure",members:{Step:{type:"structure",members:{Id:{},Name:{},Config:{shape:"S2a"},ActionOnFailure:{},Status:{shape:"S2b"}}}}}},ListBootstrapActions:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},Marker:{}}},output:{type:"structure",members:{BootstrapActions:{type:"list",member:{type:"structure",members:{Name:{},ScriptPath:{},Args:{shape:"S1f"}}}},Marker:{}}}},ListClusters:{input:{type:"structure",members:{CreatedAfter:{type:"timestamp"},CreatedBefore:{type:"timestamp"},ClusterStates:{type:"list",member:{}},Marker:{}}},output:{type:"structure",members:{Clusters:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Status:{shape:"S19"},NormalizedInstanceHours:{type:"integer"}}}},Marker:{}}}},ListInstanceGroups:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},Marker:{}}},output:{type:"structure",members:{InstanceGroups:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Market:{},InstanceGroupType:{},BidPrice:{},InstanceType:{},RequestedInstanceCount:{type:"integer"},RunningInstanceCount:{type:"integer"},Status:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},Configurations:{shape:"S9"},EbsBlockDevices:{type:"list",member:{type:"structure",members:{VolumeSpecification:{shape:"Sg"},Device:{}}}},EbsOptimized:{type:"boolean"},ShrinkPolicy:{shape:"S33"}}}},Marker:{}}}},ListInstances:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},InstanceGroupId:{},InstanceGroupTypes:{type:"list",member:{}},InstanceStates:{type:"list",member:{}},Marker:{}}},output:{type:"structure",members:{Instances:{type:"list",member:{type:"structure",members:{Id:{},Ec2InstanceId:{},PublicDnsName:{},PublicIpAddress:{},PrivateDnsName:{},PrivateIpAddress:{},Status:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},InstanceGroupId:{},EbsVolumes:{type:"list",member:{type:"structure",members:{Device:{},VolumeId:{}}}}}}},Marker:{}}}},ListSecurityConfigurations:{input:{type:"structure",members:{Marker:{}}},output:{type:"structure",members:{SecurityConfigurations:{type:"list",member:{type:"structure",members:{Name:{},CreationDateTime:{type:"timestamp"}}}},Marker:{}}}},ListSteps:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},StepStates:{type:"list",member:{}},StepIds:{shape:"Ss"},Marker:{}}},output:{type:"structure",members:{Steps:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Config:{shape:"S2a"},ActionOnFailure:{},Status:{shape:"S2b"}}}},Marker:{}}}},ModifyInstanceGroups:{input:{type:"structure",members:{InstanceGroups:{type:"list",member:{type:"structure",required:["InstanceGroupId"],members:{InstanceGroupId:{},InstanceCount:{type:"integer"},EC2InstanceIdsToTerminate:{type:"list",member:{}},ShrinkPolicy:{shape:"S33"}}}}}}},RemoveTags:{input:{type:"structure",required:["ResourceId","TagKeys"],members:{ResourceId:{},TagKeys:{shape:"S1f"}}},output:{type:"structure",members:{}}},RunJobFlow:{input:{type:"structure",required:["Name","Instances"],members:{Name:{},LogUri:{},AdditionalInfo:{},AmiVersion:{},ReleaseLabel:{},Instances:{type:"structure",members:{MasterInstanceType:{},SlaveInstanceType:{},InstanceCount:{type:"integer"},InstanceGroups:{shape:"S2"},Ec2KeyName:{},Placement:{shape:"S1u"},KeepJobFlowAliveWhenNoSteps:{type:"boolean"},TerminationProtected:{type:"boolean"},HadoopVersion:{},Ec2SubnetId:{},EmrManagedMasterSecurityGroup:{},EmrManagedSlaveSecurityGroup:{},ServiceAccessSecurityGroup:{},AdditionalMasterSecurityGroups:{shape:"S41"},AdditionalSlaveSecurityGroups:{shape:"S41"}}},Steps:{shape:"Sl"},BootstrapActions:{type:"list",member:{shape:"S21"}},SupportedProducts:{shape:"S23"},NewSupportedProducts:{type:"list",member:{type:"structure",members:{Name:{},Args:{shape:"Ss"}}}},Applications:{shape:"S1h"},Configurations:{shape:"S9"},VisibleToAllUsers:{type:"boolean"},JobFlowRole:{},ServiceRole:{},Tags:{shape:"Sx"},SecurityConfiguration:{}}},output:{type:"structure",members:{JobFlowId:{}}}},SetTerminationProtection:{input:{type:"structure",required:["JobFlowIds","TerminationProtected"],members:{JobFlowIds:{shape:"Ss"},TerminationProtected:{type:"boolean"}}}},SetVisibleToAllUsers:{input:{type:"structure",required:["JobFlowIds","VisibleToAllUsers"],members:{JobFlowIds:{shape:"Ss"},VisibleToAllUsers:{type:"boolean"}}}},TerminateJobFlows:{input:{type:"structure",required:["JobFlowIds"],members:{JobFlowIds:{shape:"Ss"}}}}},shapes:{S2:{type:"list",member:{type:"structure",required:["InstanceRole","InstanceType","InstanceCount"],members:{Name:{},Market:{},InstanceRole:{},BidPrice:{},InstanceType:{},InstanceCount:{type:"integer"},Configurations:{shape:"S9"},EbsConfiguration:{type:"structure",members:{EbsBlockDeviceConfigs:{type:"list",member:{type:"structure",required:["VolumeSpecification"],members:{VolumeSpecification:{shape:"Sg"},VolumesPerInstance:{type:"integer"}}}},EbsOptimized:{type:"boolean"}}}}}},S9:{type:"list",member:{type:"structure",members:{Classification:{},Configurations:{shape:"S9"},Properties:{shape:"Sc"}}}},Sc:{type:"map",key:{},value:{}},Sg:{type:"structure",required:["VolumeType","SizeInGB"],members:{VolumeType:{},Iops:{type:"integer"},SizeInGB:{type:"integer"}}},Sl:{type:"list",member:{shape:"Sm"}},Sm:{type:"structure",required:["Name","HadoopJarStep"],members:{Name:{},ActionOnFailure:{},HadoopJarStep:{type:"structure",required:["Jar"],members:{Properties:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},Jar:{},MainClass:{},Args:{shape:"Ss"}}}}},Ss:{type:"list",member:{}},Sx:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S19:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},S1f:{type:"list",member:{}},S1h:{type:"list",member:{type:"structure",members:{Name:{},Version:{},Args:{shape:"S1f"},AdditionalInfo:{shape:"Sc"}}}},S1u:{type:"structure",required:["AvailabilityZone"],members:{AvailabilityZone:{}}},S21:{type:"structure",required:["Name","ScriptBootstrapAction"],members:{Name:{},ScriptBootstrapAction:{type:"structure",required:["Path"],members:{Path:{},Args:{shape:"Ss"}}}}},S23:{type:"list",member:{}},S2a:{type:"structure",members:{Jar:{},Properties:{shape:"Sc"},MainClass:{},Args:{shape:"S1f"}}},S2b:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},FailureDetails:{type:"structure",members:{Reason:{},Message:{},LogFile:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},S33:{type:"structure",members:{DecommissionTimeout:{type:"integer"},InstanceResizePolicy:{type:"structure",members:{InstancesToTerminate:{shape:"S35"},InstancesToProtect:{shape:"S35"},InstanceTerminationTimeout:{type:"integer"}}}}},S35:{type:"list",member:{}},S41:{type:"list",member:{}}}}},{}],57:[function(e,t,r){t.exports={pagination:{DescribeJobFlows:{result_key:"JobFlows"},ListBootstrapActions:{input_token:"Marker",output_token:"Marker",result_key:"BootstrapActions"},ListClusters:{input_token:"Marker",output_token:"Marker",result_key:"Clusters"},ListInstanceGroups:{input_token:"Marker",output_token:"Marker",result_key:"InstanceGroups"},ListInstances:{input_token:"Marker",output_token:"Marker",result_key:"Instances"},ListSteps:{input_token:"Marker",output_token:"Marker",result_key:"Steps"}}}},{}],58:[function(e,t,r){t.exports={version:2,waiters:{ClusterRunning:{delay:30,operation:"DescribeCluster",maxAttempts:60,acceptors:[{state:"success",matcher:"path",argument:"Cluster.Status.State",expected:"RUNNING"},{state:"success",matcher:"path",argument:"Cluster.Status.State",expected:"WAITING"},{state:"failure",matcher:"path",argument:"Cluster.Status.State",expected:"TERMINATING"},{state:"failure",matcher:"path",argument:"Cluster.Status.State",expected:"TERMINATED"},{state:"failure",matcher:"path",argument:"Cluster.Status.State",expected:"TERMINATED_WITH_ERRORS"}]},StepComplete:{delay:30,operation:"DescribeStep",maxAttempts:60,acceptors:[{state:"success",matcher:"path",argument:"Step.Status.State",expected:"COMPLETED"},{state:"failure",matcher:"path",argument:"Step.Status.State",expected:"FAILED"},{state:"failure",matcher:"path",argument:"Step.Status.State",expected:"CANCELLED"}]}}}},{}],59:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-09-25",endpointPrefix:"elastictranscoder",protocol:"rest-json",serviceFullName:"Amazon Elastic Transcoder",signatureVersion:"v4"},operations:{CancelJob:{http:{method:"DELETE",requestUri:"/2012-09-25/jobs/{Id}",responseCode:202},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},CreateJob:{http:{requestUri:"/2012-09-25/jobs",responseCode:201},input:{type:"structure",required:["PipelineId","Input"],members:{PipelineId:{},Input:{shape:"S5"},Output:{shape:"Sk"},Outputs:{type:"list",member:{shape:"Sk"}},OutputKeyPrefix:{},Playlists:{type:"list",member:{type:"structure",members:{Name:{},Format:{},OutputKeys:{shape:"S1j"},HlsContentProtection:{shape:"S1k"},PlayReadyDrm:{shape:"S1o"}}}},UserMetadata:{shape:"S1t"}}},output:{type:"structure",members:{Job:{shape:"S1w"}}}},CreatePipeline:{http:{requestUri:"/2012-09-25/pipelines",responseCode:201},input:{type:"structure",required:["Name","InputBucket","Role"],members:{Name:{},InputBucket:{},OutputBucket:{},Role:{},AwsKmsKeyArn:{},Notifications:{shape:"S28"},ContentConfig:{shape:"S2a"},ThumbnailConfig:{shape:"S2a"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"},Warnings:{shape:"S2l"}}}},CreatePreset:{http:{requestUri:"/2012-09-25/presets",responseCode:201},input:{type:"structure",required:["Name","Container"],members:{Name:{},Description:{},Container:{},Video:{shape:"S2p"},Audio:{shape:"S35"},Thumbnails:{shape:"S3g"}}},output:{type:"structure",members:{Preset:{shape:"S3k"},Warning:{}}}},DeletePipeline:{http:{method:"DELETE",requestUri:"/2012-09-25/pipelines/{Id}",responseCode:202},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},DeletePreset:{http:{method:"DELETE",requestUri:"/2012-09-25/presets/{Id}",responseCode:202},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},ListJobsByPipeline:{http:{method:"GET",requestUri:"/2012-09-25/jobsByPipeline/{PipelineId}"},input:{type:"structure",required:["PipelineId"],members:{PipelineId:{location:"uri",locationName:"PipelineId"},Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Jobs:{shape:"S3t"},NextPageToken:{}}}},ListJobsByStatus:{http:{method:"GET",requestUri:"/2012-09-25/jobsByStatus/{Status}"},input:{type:"structure",required:["Status"],members:{Status:{location:"uri",locationName:"Status"},Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Jobs:{shape:"S3t"},NextPageToken:{}}}},ListPipelines:{http:{method:"GET",requestUri:"/2012-09-25/pipelines"},input:{type:"structure",members:{Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Pipelines:{type:"list",member:{shape:"S2j"}},NextPageToken:{}}}},ListPresets:{http:{method:"GET",requestUri:"/2012-09-25/presets"},input:{type:"structure",members:{Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Presets:{type:"list",member:{shape:"S3k"}},NextPageToken:{}}}},ReadJob:{http:{method:"GET",requestUri:"/2012-09-25/jobs/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{Job:{shape:"S1w"}}}},ReadPipeline:{http:{method:"GET",requestUri:"/2012-09-25/pipelines/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"},Warnings:{shape:"S2l"}}}},ReadPreset:{http:{method:"GET",requestUri:"/2012-09-25/presets/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{Preset:{shape:"S3k"}}}},TestRole:{http:{requestUri:"/2012-09-25/roleTests",responseCode:200},input:{type:"structure",required:["Role","InputBucket","OutputBucket","Topics"],members:{Role:{},InputBucket:{},OutputBucket:{},Topics:{type:"list",member:{}}}},output:{type:"structure",members:{Success:{},Messages:{type:"list",member:{}}}}},UpdatePipeline:{http:{method:"PUT",requestUri:"/2012-09-25/pipelines/{Id}",responseCode:200},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"},Name:{},InputBucket:{},Role:{},AwsKmsKeyArn:{},Notifications:{shape:"S28"},ContentConfig:{shape:"S2a"},ThumbnailConfig:{shape:"S2a"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"},Warnings:{shape:"S2l"}}}},UpdatePipelineNotifications:{http:{requestUri:"/2012-09-25/pipelines/{Id}/notifications"},input:{type:"structure",required:["Id","Notifications"],members:{Id:{location:"uri",locationName:"Id"},Notifications:{shape:"S28"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"}}}},UpdatePipelineStatus:{http:{requestUri:"/2012-09-25/pipelines/{Id}/status"},input:{type:"structure",required:["Id","Status"],members:{Id:{location:"uri",locationName:"Id"},Status:{}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"}}}}},shapes:{S5:{type:"structure",members:{Key:{},FrameRate:{},Resolution:{},AspectRatio:{},Interlaced:{},Container:{},Encryption:{shape:"Sc"},DetectedProperties:{type:"structure",members:{Width:{type:"integer"},Height:{type:"integer"},FrameRate:{},FileSize:{type:"long"},DurationMillis:{type:"long"}}}}},Sc:{type:"structure",members:{Mode:{},Key:{},KeyMd5:{},InitializationVector:{}}},Sk:{type:"structure",members:{Key:{},ThumbnailPattern:{},ThumbnailEncryption:{shape:"Sc"},Rotate:{},PresetId:{},SegmentDuration:{},Watermarks:{shape:"So"},AlbumArt:{shape:"Ss"},Composition:{shape:"S10"},Captions:{shape:"S14"},Encryption:{shape:"Sc"}}},So:{type:"list",member:{type:"structure",members:{PresetWatermarkId:{},InputKey:{},Encryption:{shape:"Sc"}}}},Ss:{type:"structure",members:{MergePolicy:{},Artwork:{type:"list",member:{type:"structure",members:{InputKey:{},MaxWidth:{},MaxHeight:{},SizingPolicy:{},PaddingPolicy:{},AlbumArtFormat:{},Encryption:{shape:"Sc"}}}}}},S10:{type:"list",member:{type:"structure",members:{TimeSpan:{type:"structure",members:{StartTime:{},Duration:{}}}}}},S14:{type:"structure",members:{MergePolicy:{},CaptionSources:{type:"list",member:{type:"structure",members:{Key:{},Language:{},TimeOffset:{},Label:{},Encryption:{shape:"Sc"}}}},CaptionFormats:{type:"list",member:{type:"structure",members:{Format:{},Pattern:{},Encryption:{shape:"Sc"}}}}}},S1j:{type:"list",member:{}},S1k:{type:"structure",members:{Method:{},Key:{},KeyMd5:{},InitializationVector:{},LicenseAcquisitionUrl:{},KeyStoragePolicy:{}}},S1o:{type:"structure",members:{Format:{},Key:{},KeyMd5:{},KeyId:{},InitializationVector:{},LicenseAcquisitionUrl:{}}},S1t:{type:"map",key:{},value:{}},S1w:{type:"structure",members:{Id:{},Arn:{},PipelineId:{},Input:{shape:"S5"},Output:{shape:"S1x"},Outputs:{type:"list",member:{shape:"S1x"}},OutputKeyPrefix:{},Playlists:{type:"list",member:{type:"structure",members:{Name:{},Format:{},OutputKeys:{shape:"S1j"},HlsContentProtection:{shape:"S1k"},PlayReadyDrm:{shape:"S1o"},Status:{},StatusDetail:{}}}},Status:{},UserMetadata:{shape:"S1t"},Timing:{type:"structure",members:{SubmitTimeMillis:{type:"long"},StartTimeMillis:{type:"long"},FinishTimeMillis:{type:"long"}}}}},S1x:{type:"structure",members:{Id:{},Key:{},ThumbnailPattern:{},ThumbnailEncryption:{shape:"Sc"},Rotate:{},PresetId:{},SegmentDuration:{},Status:{},StatusDetail:{},Duration:{type:"long"},Width:{type:"integer"},Height:{type:"integer"},FrameRate:{},FileSize:{type:"long"},DurationMillis:{type:"long"},Watermarks:{shape:"So"},AlbumArt:{shape:"Ss"},Composition:{shape:"S10"},Captions:{shape:"S14"},Encryption:{shape:"Sc"},AppliedColorSpaceConversion:{}}},S28:{type:"structure",members:{Progressing:{},Completed:{},Warning:{},Error:{}}},S2a:{type:"structure",members:{Bucket:{},StorageClass:{},Permissions:{type:"list",member:{type:"structure",members:{GranteeType:{},Grantee:{},Access:{type:"list",member:{}}}}}}},S2j:{type:"structure",members:{Id:{},Arn:{},Name:{},Status:{},InputBucket:{},OutputBucket:{},Role:{},AwsKmsKeyArn:{},Notifications:{shape:"S28"},ContentConfig:{shape:"S2a"},ThumbnailConfig:{shape:"S2a"}}},S2l:{type:"list",member:{type:"structure",members:{Code:{},Message:{}}}},S2p:{type:"structure",members:{Codec:{},CodecOptions:{type:"map",key:{},value:{}},KeyframesMaxDist:{},FixedGOP:{},BitRate:{},FrameRate:{},MaxFrameRate:{},Resolution:{},AspectRatio:{},MaxWidth:{},MaxHeight:{},DisplayAspectRatio:{},SizingPolicy:{},PaddingPolicy:{},Watermarks:{type:"list",member:{type:"structure",members:{Id:{},MaxWidth:{},MaxHeight:{},SizingPolicy:{},HorizontalAlign:{},HorizontalOffset:{},VerticalAlign:{},VerticalOffset:{},Opacity:{},Target:{}}}}}},S35:{type:"structure",members:{Codec:{},SampleRate:{},BitRate:{},Channels:{},AudioPackingMode:{},CodecOptions:{type:"structure",members:{Profile:{},BitDepth:{},BitOrder:{},Signed:{}}}}},S3g:{type:"structure",members:{Format:{},Interval:{},Resolution:{},AspectRatio:{},MaxWidth:{},MaxHeight:{},SizingPolicy:{},PaddingPolicy:{}}},S3k:{type:"structure",members:{Id:{},Arn:{},Name:{},Description:{},Container:{},Audio:{shape:"S35"},Video:{shape:"S2p"},Thumbnails:{shape:"S3g"},Type:{}}},S3t:{type:"list",member:{shape:"S1w"}}}}},{}],60:[function(e,t,r){t.exports={pagination:{ListJobsByPipeline:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Jobs"},ListJobsByStatus:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Jobs"},ListPipelines:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Pipelines"},ListPresets:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Presets"}}}},{}],61:[function(e,t,r){t.exports={version:2,waiters:{JobComplete:{delay:30,operation:"ReadJob",maxAttempts:120,acceptors:[{expected:"Complete",matcher:"path",state:"success",argument:"Job.Status"},{expected:"Canceled",matcher:"path",state:"failure",argument:"Job.Status"},{expected:"Error",matcher:"path",state:"failure",argument:"Job.Status"}]}}}},{}],62:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-12-01",endpointPrefix:"email",protocol:"query",serviceAbbreviation:"Amazon SES",serviceFullName:"Amazon Simple Email Service",signatureVersion:"v4",signingName:"ses",xmlNamespace:"http://ses.amazonaws.com/doc/2010-12-01/"},operations:{CloneReceiptRuleSet:{input:{type:"structure",required:["RuleSetName","OriginalRuleSetName"],members:{RuleSetName:{},OriginalRuleSetName:{}}},output:{resultWrapper:"CloneReceiptRuleSetResult",type:"structure",members:{}}},CreateReceiptFilter:{input:{type:"structure",required:["Filter"],members:{Filter:{shape:"S5"}}},output:{resultWrapper:"CreateReceiptFilterResult",type:"structure",members:{}}},CreateReceiptRule:{input:{type:"structure",required:["RuleSetName","Rule"],members:{RuleSetName:{},After:{},Rule:{shape:"Sd"}}},output:{resultWrapper:"CreateReceiptRuleResult",type:"structure",members:{}}},CreateReceiptRuleSet:{input:{type:"structure",required:["RuleSetName"],members:{RuleSetName:{}}},output:{resultWrapper:"CreateReceiptRuleSetResult",type:"structure",members:{}}},DeleteIdentity:{input:{type:"structure",required:["Identity"],members:{Identity:{}}},output:{resultWrapper:"DeleteIdentityResult",type:"structure",members:{}}},DeleteIdentityPolicy:{input:{type:"structure",required:["Identity","PolicyName"],members:{Identity:{},PolicyName:{}}},output:{resultWrapper:"DeleteIdentityPolicyResult",type:"structure", +members:{}}},DeleteReceiptFilter:{input:{type:"structure",required:["FilterName"],members:{FilterName:{}}},output:{resultWrapper:"DeleteReceiptFilterResult",type:"structure",members:{}}},DeleteReceiptRule:{input:{type:"structure",required:["RuleSetName","RuleName"],members:{RuleSetName:{},RuleName:{}}},output:{resultWrapper:"DeleteReceiptRuleResult",type:"structure",members:{}}},DeleteReceiptRuleSet:{input:{type:"structure",required:["RuleSetName"],members:{RuleSetName:{}}},output:{resultWrapper:"DeleteReceiptRuleSetResult",type:"structure",members:{}}},DeleteVerifiedEmailAddress:{input:{type:"structure",required:["EmailAddress"],members:{EmailAddress:{}}}},DescribeActiveReceiptRuleSet:{input:{type:"structure",members:{}},output:{resultWrapper:"DescribeActiveReceiptRuleSetResult",type:"structure",members:{Metadata:{shape:"S1l"},Rules:{shape:"S1n"}}}},DescribeReceiptRule:{input:{type:"structure",required:["RuleSetName","RuleName"],members:{RuleSetName:{},RuleName:{}}},output:{resultWrapper:"DescribeReceiptRuleResult",type:"structure",members:{Rule:{shape:"Sd"}}}},DescribeReceiptRuleSet:{input:{type:"structure",required:["RuleSetName"],members:{RuleSetName:{}}},output:{resultWrapper:"DescribeReceiptRuleSetResult",type:"structure",members:{Metadata:{shape:"S1l"},Rules:{shape:"S1n"}}}},GetIdentityDkimAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityDkimAttributesResult",type:"structure",required:["DkimAttributes"],members:{DkimAttributes:{type:"map",key:{},value:{type:"structure",required:["DkimEnabled","DkimVerificationStatus"],members:{DkimEnabled:{type:"boolean"},DkimVerificationStatus:{},DkimTokens:{shape:"S1y"}}}}}}},GetIdentityMailFromDomainAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityMailFromDomainAttributesResult",type:"structure",required:["MailFromDomainAttributes"],members:{MailFromDomainAttributes:{type:"map",key:{},value:{type:"structure",required:["MailFromDomain","MailFromDomainStatus","BehaviorOnMXFailure"],members:{MailFromDomain:{},MailFromDomainStatus:{},BehaviorOnMXFailure:{}}}}}}},GetIdentityNotificationAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityNotificationAttributesResult",type:"structure",required:["NotificationAttributes"],members:{NotificationAttributes:{type:"map",key:{},value:{type:"structure",required:["BounceTopic","ComplaintTopic","DeliveryTopic","ForwardingEnabled"],members:{BounceTopic:{},ComplaintTopic:{},DeliveryTopic:{},ForwardingEnabled:{type:"boolean"},HeadersInBounceNotificationsEnabled:{type:"boolean"},HeadersInComplaintNotificationsEnabled:{type:"boolean"},HeadersInDeliveryNotificationsEnabled:{type:"boolean"}}}}}}},GetIdentityPolicies:{input:{type:"structure",required:["Identity","PolicyNames"],members:{Identity:{},PolicyNames:{shape:"S2d"}}},output:{resultWrapper:"GetIdentityPoliciesResult",type:"structure",required:["Policies"],members:{Policies:{type:"map",key:{},value:{}}}}},GetIdentityVerificationAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityVerificationAttributesResult",type:"structure",required:["VerificationAttributes"],members:{VerificationAttributes:{type:"map",key:{},value:{type:"structure",required:["VerificationStatus"],members:{VerificationStatus:{},VerificationToken:{}}}}}}},GetSendQuota:{output:{resultWrapper:"GetSendQuotaResult",type:"structure",members:{Max24HourSend:{type:"double"},MaxSendRate:{type:"double"},SentLast24Hours:{type:"double"}}}},GetSendStatistics:{output:{resultWrapper:"GetSendStatisticsResult",type:"structure",members:{SendDataPoints:{type:"list",member:{type:"structure",members:{Timestamp:{type:"timestamp"},DeliveryAttempts:{type:"long"},Bounces:{type:"long"},Complaints:{type:"long"},Rejects:{type:"long"}}}}}}},ListIdentities:{input:{type:"structure",members:{IdentityType:{},NextToken:{},MaxItems:{type:"integer"}}},output:{resultWrapper:"ListIdentitiesResult",type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"},NextToken:{}}}},ListIdentityPolicies:{input:{type:"structure",required:["Identity"],members:{Identity:{}}},output:{resultWrapper:"ListIdentityPoliciesResult",type:"structure",required:["PolicyNames"],members:{PolicyNames:{shape:"S2d"}}}},ListReceiptFilters:{input:{type:"structure",members:{}},output:{resultWrapper:"ListReceiptFiltersResult",type:"structure",members:{Filters:{type:"list",member:{shape:"S5"}}}}},ListReceiptRuleSets:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListReceiptRuleSetsResult",type:"structure",members:{RuleSets:{type:"list",member:{shape:"S1l"}},NextToken:{}}}},ListVerifiedEmailAddresses:{output:{resultWrapper:"ListVerifiedEmailAddressesResult",type:"structure",members:{VerifiedEmailAddresses:{shape:"S37"}}}},PutIdentityPolicy:{input:{type:"structure",required:["Identity","PolicyName","Policy"],members:{Identity:{},PolicyName:{},Policy:{}}},output:{resultWrapper:"PutIdentityPolicyResult",type:"structure",members:{}}},ReorderReceiptRuleSet:{input:{type:"structure",required:["RuleSetName","RuleNames"],members:{RuleSetName:{},RuleNames:{type:"list",member:{}}}},output:{resultWrapper:"ReorderReceiptRuleSetResult",type:"structure",members:{}}},SendBounce:{input:{type:"structure",required:["OriginalMessageId","BounceSender","BouncedRecipientInfoList"],members:{OriginalMessageId:{},BounceSender:{},Explanation:{},MessageDsn:{type:"structure",required:["ReportingMta"],members:{ReportingMta:{},ArrivalDate:{type:"timestamp"},ExtensionFields:{shape:"S3j"}}},BouncedRecipientInfoList:{type:"list",member:{type:"structure",required:["Recipient"],members:{Recipient:{},RecipientArn:{},BounceType:{},RecipientDsnFields:{type:"structure",required:["Action","Status"],members:{FinalRecipient:{},Action:{},RemoteMta:{},Status:{},DiagnosticCode:{},LastAttemptDate:{type:"timestamp"},ExtensionFields:{shape:"S3j"}}}}}},BounceSenderArn:{}}},output:{resultWrapper:"SendBounceResult",type:"structure",members:{MessageId:{}}}},SendEmail:{input:{type:"structure",required:["Source","Destination","Message"],members:{Source:{},Destination:{type:"structure",members:{ToAddresses:{shape:"S37"},CcAddresses:{shape:"S37"},BccAddresses:{shape:"S37"}}},Message:{type:"structure",required:["Subject","Body"],members:{Subject:{shape:"S40"},Body:{type:"structure",members:{Text:{shape:"S40"},Html:{shape:"S40"}}}}},ReplyToAddresses:{shape:"S37"},ReturnPath:{},SourceArn:{},ReturnPathArn:{}}},output:{resultWrapper:"SendEmailResult",type:"structure",required:["MessageId"],members:{MessageId:{}}}},SendRawEmail:{input:{type:"structure",required:["RawMessage"],members:{Source:{},Destinations:{shape:"S37"},RawMessage:{type:"structure",required:["Data"],members:{Data:{type:"blob"}}},FromArn:{},SourceArn:{},ReturnPathArn:{}}},output:{resultWrapper:"SendRawEmailResult",type:"structure",required:["MessageId"],members:{MessageId:{}}}},SetActiveReceiptRuleSet:{input:{type:"structure",members:{RuleSetName:{}}},output:{resultWrapper:"SetActiveReceiptRuleSetResult",type:"structure",members:{}}},SetIdentityDkimEnabled:{input:{type:"structure",required:["Identity","DkimEnabled"],members:{Identity:{},DkimEnabled:{type:"boolean"}}},output:{resultWrapper:"SetIdentityDkimEnabledResult",type:"structure",members:{}}},SetIdentityFeedbackForwardingEnabled:{input:{type:"structure",required:["Identity","ForwardingEnabled"],members:{Identity:{},ForwardingEnabled:{type:"boolean"}}},output:{resultWrapper:"SetIdentityFeedbackForwardingEnabledResult",type:"structure",members:{}}},SetIdentityHeadersInNotificationsEnabled:{input:{type:"structure",required:["Identity","NotificationType","Enabled"],members:{Identity:{},NotificationType:{},Enabled:{type:"boolean"}}},output:{resultWrapper:"SetIdentityHeadersInNotificationsEnabledResult",type:"structure",members:{}}},SetIdentityMailFromDomain:{input:{type:"structure",required:["Identity"],members:{Identity:{},MailFromDomain:{},BehaviorOnMXFailure:{}}},output:{resultWrapper:"SetIdentityMailFromDomainResult",type:"structure",members:{}}},SetIdentityNotificationTopic:{input:{type:"structure",required:["Identity","NotificationType"],members:{Identity:{},NotificationType:{},SnsTopic:{}}},output:{resultWrapper:"SetIdentityNotificationTopicResult",type:"structure",members:{}}},SetReceiptRulePosition:{input:{type:"structure",required:["RuleSetName","RuleName"],members:{RuleSetName:{},RuleName:{},After:{}}},output:{resultWrapper:"SetReceiptRulePositionResult",type:"structure",members:{}}},UpdateReceiptRule:{input:{type:"structure",required:["RuleSetName","Rule"],members:{RuleSetName:{},Rule:{shape:"Sd"}}},output:{resultWrapper:"UpdateReceiptRuleResult",type:"structure",members:{}}},VerifyDomainDkim:{input:{type:"structure",required:["Domain"],members:{Domain:{}}},output:{resultWrapper:"VerifyDomainDkimResult",type:"structure",required:["DkimTokens"],members:{DkimTokens:{shape:"S1y"}}}},VerifyDomainIdentity:{input:{type:"structure",required:["Domain"],members:{Domain:{}}},output:{resultWrapper:"VerifyDomainIdentityResult",type:"structure",required:["VerificationToken"],members:{VerificationToken:{}}}},VerifyEmailAddress:{input:{type:"structure",required:["EmailAddress"],members:{EmailAddress:{}}}},VerifyEmailIdentity:{input:{type:"structure",required:["EmailAddress"],members:{EmailAddress:{}}},output:{resultWrapper:"VerifyEmailIdentityResult",type:"structure",members:{}}}},shapes:{S5:{type:"structure",required:["Name","IpFilter"],members:{Name:{},IpFilter:{type:"structure",required:["Policy","Cidr"],members:{Policy:{},Cidr:{}}}}},Sd:{type:"structure",required:["Name"],members:{Name:{},Enabled:{type:"boolean"},TlsPolicy:{},Recipients:{type:"list",member:{}},Actions:{type:"list",member:{type:"structure",members:{S3Action:{type:"structure",required:["BucketName"],members:{TopicArn:{},BucketName:{},ObjectKeyPrefix:{},KmsKeyArn:{}}},BounceAction:{type:"structure",required:["SmtpReplyCode","Message","Sender"],members:{TopicArn:{},SmtpReplyCode:{},StatusCode:{},Message:{},Sender:{}}},WorkmailAction:{type:"structure",required:["OrganizationArn"],members:{TopicArn:{},OrganizationArn:{}}},LambdaAction:{type:"structure",required:["FunctionArn"],members:{TopicArn:{},FunctionArn:{},InvocationType:{}}},StopAction:{type:"structure",required:["Scope"],members:{Scope:{},TopicArn:{}}},AddHeaderAction:{type:"structure",required:["HeaderName","HeaderValue"],members:{HeaderName:{},HeaderValue:{}}},SNSAction:{type:"structure",required:["TopicArn"],members:{TopicArn:{},Encoding:{}}}}}},ScanEnabled:{type:"boolean"}}},S1l:{type:"structure",members:{Name:{},CreatedTimestamp:{type:"timestamp"}}},S1n:{type:"list",member:{shape:"Sd"}},S1t:{type:"list",member:{}},S1y:{type:"list",member:{}},S2d:{type:"list",member:{}},S37:{type:"list",member:{}},S3j:{type:"list",member:{type:"structure",required:["Name","Value"],members:{Name:{},Value:{}}}},S40:{type:"structure",required:["Data"],members:{Data:{},Charset:{}}}}}},{}],63:[function(e,t,r){t.exports={pagination:{ListIdentities:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxItems",result_key:"Identities"},ListVerifiedEmailAddresses:{result_key:"VerifiedEmailAddresses"}}}},{}],64:[function(e,t,r){t.exports={version:2,waiters:{IdentityExists:{delay:3,operation:"GetIdentityVerificationAttributes",maxAttempts:20,acceptors:[{expected:"Success",matcher:"pathAll",state:"success",argument:"VerificationAttributes.*.VerificationStatus"}]}}}},{}],65:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-10-07",endpointPrefix:"events",jsonVersion:"1.1",serviceFullName:"Amazon CloudWatch Events",signatureVersion:"v4",targetPrefix:"AWSEvents",protocol:"json"},operations:{DeleteRule:{input:{type:"structure",required:["Name"],members:{Name:{}}}},DescribeRule:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Name:{},Arn:{},EventPattern:{},ScheduleExpression:{},State:{},Description:{},RoleArn:{}}}},DisableRule:{input:{type:"structure",required:["Name"],members:{Name:{}}}},EnableRule:{input:{type:"structure",required:["Name"],members:{Name:{}}}},ListRuleNamesByTarget:{input:{type:"structure",required:["TargetArn"],members:{TargetArn:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{RuleNames:{type:"list",member:{}},NextToken:{}}}},ListRules:{input:{type:"structure",members:{NamePrefix:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Rules:{type:"list",member:{type:"structure",members:{Name:{},Arn:{},EventPattern:{},State:{},Description:{},ScheduleExpression:{},RoleArn:{}}}},NextToken:{}}}},ListTargetsByRule:{input:{type:"structure",required:["Rule"],members:{Rule:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Targets:{shape:"Sp"},NextToken:{}}}},PutEvents:{input:{type:"structure",required:["Entries"],members:{Entries:{type:"list",member:{type:"structure",members:{Time:{type:"timestamp"},Source:{},Resources:{type:"list",member:{}},DetailType:{},Detail:{}}}}}},output:{type:"structure",members:{FailedEntryCount:{type:"integer"},Entries:{type:"list",member:{type:"structure",members:{EventId:{},ErrorCode:{},ErrorMessage:{}}}}}}},PutRule:{input:{type:"structure",required:["Name"],members:{Name:{},ScheduleExpression:{},EventPattern:{},State:{},Description:{},RoleArn:{}}},output:{type:"structure",members:{RuleArn:{}}}},PutTargets:{input:{type:"structure",required:["Rule","Targets"],members:{Rule:{},Targets:{shape:"Sp"}}},output:{type:"structure",members:{FailedEntryCount:{type:"integer"},FailedEntries:{type:"list",member:{type:"structure",members:{TargetId:{},ErrorCode:{},ErrorMessage:{}}}}}}},RemoveTargets:{input:{type:"structure",required:["Rule","Ids"],members:{Rule:{},Ids:{type:"list",member:{}}}},output:{type:"structure",members:{FailedEntryCount:{type:"integer"},FailedEntries:{type:"list",member:{type:"structure",members:{TargetId:{},ErrorCode:{},ErrorMessage:{}}}}}}},TestEventPattern:{input:{type:"structure",required:["EventPattern","Event"],members:{EventPattern:{},Event:{}}},output:{type:"structure",members:{Result:{type:"boolean"}}}}},shapes:{Sp:{type:"list",member:{type:"structure",required:["Id","Arn"],members:{Id:{},Arn:{},Input:{},InputPath:{}}}}},examples:{}}},{}],66:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-08-04",endpointPrefix:"firehose",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Firehose",serviceFullName:"Amazon Kinesis Firehose",signatureVersion:"v4",targetPrefix:"Firehose_20150804"},operations:{CreateDeliveryStream:{input:{type:"structure",required:["DeliveryStreamName"],members:{DeliveryStreamName:{},S3DestinationConfiguration:{shape:"S3"},RedshiftDestinationConfiguration:{type:"structure",required:["RoleARN","ClusterJDBCURL","CopyCommand","Username","Password","S3Configuration"],members:{RoleARN:{},ClusterJDBCURL:{},CopyCommand:{shape:"Sl"},Username:{shape:"Sp"},Password:{shape:"Sq"},RetryOptions:{shape:"Sr"},S3Configuration:{shape:"S3"},CloudWatchLoggingOptions:{shape:"Sf"}}},ElasticsearchDestinationConfiguration:{type:"structure",required:["RoleARN","DomainARN","IndexName","TypeName","S3Configuration"],members:{RoleARN:{},DomainARN:{},IndexName:{},TypeName:{},IndexRotationPeriod:{},BufferingHints:{shape:"Sy"},RetryOptions:{shape:"S11"},S3BackupMode:{},S3Configuration:{shape:"S3"},CloudWatchLoggingOptions:{shape:"Sf"}}}}},output:{type:"structure",members:{DeliveryStreamARN:{}}}},DeleteDeliveryStream:{input:{type:"structure",required:["DeliveryStreamName"],members:{DeliveryStreamName:{}}},output:{type:"structure",members:{}}},DescribeDeliveryStream:{input:{type:"structure",required:["DeliveryStreamName"],members:{DeliveryStreamName:{},Limit:{type:"integer"},ExclusiveStartDestinationId:{}}},output:{type:"structure",required:["DeliveryStreamDescription"],members:{DeliveryStreamDescription:{type:"structure",required:["DeliveryStreamName","DeliveryStreamARN","DeliveryStreamStatus","VersionId","Destinations","HasMoreDestinations"],members:{DeliveryStreamName:{},DeliveryStreamARN:{},DeliveryStreamStatus:{},VersionId:{},CreateTimestamp:{type:"timestamp"},LastUpdateTimestamp:{type:"timestamp"},Destinations:{type:"list",member:{type:"structure",required:["DestinationId"],members:{DestinationId:{},S3DestinationDescription:{shape:"S1i"},RedshiftDestinationDescription:{type:"structure",required:["RoleARN","ClusterJDBCURL","CopyCommand","Username","S3DestinationDescription"],members:{RoleARN:{},ClusterJDBCURL:{},CopyCommand:{shape:"Sl"},Username:{shape:"Sp"},RetryOptions:{shape:"Sr"},S3DestinationDescription:{shape:"S1i"},CloudWatchLoggingOptions:{shape:"Sf"}}},ElasticsearchDestinationDescription:{type:"structure",members:{RoleARN:{},DomainARN:{},IndexName:{},TypeName:{},IndexRotationPeriod:{},BufferingHints:{shape:"Sy"},RetryOptions:{shape:"S11"},S3BackupMode:{},S3DestinationDescription:{shape:"S1i"},CloudWatchLoggingOptions:{shape:"Sf"}}}}}},HasMoreDestinations:{type:"boolean"}}}}}},ListDeliveryStreams:{input:{type:"structure",members:{Limit:{type:"integer"},ExclusiveStartDeliveryStreamName:{}}},output:{type:"structure",required:["DeliveryStreamNames","HasMoreDeliveryStreams"],members:{DeliveryStreamNames:{type:"list",member:{}},HasMoreDeliveryStreams:{type:"boolean"}}}},PutRecord:{input:{type:"structure",required:["DeliveryStreamName","Record"],members:{DeliveryStreamName:{},Record:{shape:"S1q"}}},output:{type:"structure",required:["RecordId"],members:{RecordId:{}}}},PutRecordBatch:{input:{type:"structure",required:["DeliveryStreamName","Records"],members:{DeliveryStreamName:{},Records:{type:"list",member:{shape:"S1q"}}}},output:{type:"structure",required:["FailedPutCount","RequestResponses"],members:{FailedPutCount:{type:"integer"},RequestResponses:{type:"list",member:{type:"structure",members:{RecordId:{},ErrorCode:{},ErrorMessage:{}}}}}}},UpdateDestination:{input:{type:"structure",required:["DeliveryStreamName","CurrentDeliveryStreamVersionId","DestinationId"],members:{DeliveryStreamName:{},CurrentDeliveryStreamVersionId:{},DestinationId:{},S3DestinationUpdate:{shape:"S23"},RedshiftDestinationUpdate:{type:"structure",members:{RoleARN:{},ClusterJDBCURL:{},CopyCommand:{shape:"Sl"},Username:{shape:"Sp"},Password:{shape:"Sq"},RetryOptions:{shape:"Sr"},S3Update:{shape:"S23"},CloudWatchLoggingOptions:{shape:"Sf"}}},ElasticsearchDestinationUpdate:{type:"structure",members:{RoleARN:{},DomainARN:{},IndexName:{},TypeName:{},IndexRotationPeriod:{},BufferingHints:{shape:"Sy"},RetryOptions:{shape:"S11"},S3Update:{shape:"S23"},CloudWatchLoggingOptions:{shape:"Sf"}}}}},output:{type:"structure",members:{}}}},shapes:{S3:{type:"structure",required:["RoleARN","BucketARN"],members:{RoleARN:{},BucketARN:{},Prefix:{},BufferingHints:{shape:"S7"},CompressionFormat:{},EncryptionConfiguration:{shape:"Sb"},CloudWatchLoggingOptions:{shape:"Sf"}}},S7:{type:"structure",members:{SizeInMBs:{type:"integer"},IntervalInSeconds:{type:"integer"}}},Sb:{type:"structure",members:{NoEncryptionConfig:{},KMSEncryptionConfig:{type:"structure",required:["AWSKMSKeyARN"],members:{AWSKMSKeyARN:{}}}}},Sf:{type:"structure",members:{Enabled:{type:"boolean"},LogGroupName:{},LogStreamName:{}}},Sl:{type:"structure",required:["DataTableName"],members:{DataTableName:{},DataTableColumns:{},CopyOptions:{}}},Sp:{type:"string",sensitive:!0},Sq:{type:"string",sensitive:!0},Sr:{type:"structure",members:{DurationInSeconds:{type:"integer"}}},Sy:{type:"structure",members:{IntervalInSeconds:{type:"integer"},SizeInMBs:{type:"integer"}}},S11:{type:"structure",members:{DurationInSeconds:{type:"integer"}}},S1i:{type:"structure",required:["RoleARN","BucketARN","BufferingHints","CompressionFormat","EncryptionConfiguration"],members:{RoleARN:{},BucketARN:{},Prefix:{},BufferingHints:{shape:"S7"},CompressionFormat:{},EncryptionConfiguration:{shape:"Sb"},CloudWatchLoggingOptions:{shape:"Sf"}}},S1q:{type:"structure",required:["Data"],members:{Data:{type:"blob"}}},S23:{type:"structure",members:{RoleARN:{},BucketARN:{},Prefix:{},BufferingHints:{shape:"S7"},CompressionFormat:{},EncryptionConfiguration:{shape:"Sb"},CloudWatchLoggingOptions:{shape:"Sf"}}}}}},{}],67:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-10-01",endpointPrefix:"gamelift",jsonVersion:"1.1",serviceFullName:"Amazon GameLift",signatureVersion:"v4",targetPrefix:"GameLift",protocol:"json"},operations:{CreateAlias:{input:{type:"structure",required:["Name","RoutingStrategy"],members:{Name:{},Description:{},RoutingStrategy:{shape:"S3"}}},output:{type:"structure",members:{Alias:{shape:"S8"}}}},CreateBuild:{input:{type:"structure",members:{Name:{},Version:{},StorageLocation:{shape:"Sc"},OperatingSystem:{}}},output:{type:"structure",members:{Build:{shape:"Sg"},UploadCredentials:{shape:"Sk"},StorageLocation:{shape:"Sc"}}}},CreateFleet:{input:{type:"structure",required:["Name","BuildId","EC2InstanceType"],members:{Name:{},Description:{},BuildId:{},ServerLaunchPath:{},ServerLaunchParameters:{},LogPaths:{shape:"Sm"},EC2InstanceType:{},EC2InboundPermissions:{shape:"So"},NewGameSessionProtectionPolicy:{},RuntimeConfiguration:{shape:"Su"}}},output:{type:"structure",members:{FleetAttributes:{shape:"Sz"}}}},CreateGameSession:{input:{type:"structure",required:["MaximumPlayerSessionCount"],members:{FleetId:{},AliasId:{},MaximumPlayerSessionCount:{type:"integer"},Name:{},GameProperties:{shape:"S13"}}},output:{type:"structure",members:{GameSession:{shape:"S18"}}}},CreatePlayerSession:{input:{type:"structure",required:["GameSessionId","PlayerId"],members:{GameSessionId:{},PlayerId:{}}},output:{type:"structure",members:{PlayerSession:{shape:"S1f"}}}},CreatePlayerSessions:{input:{type:"structure",required:["GameSessionId","PlayerIds"],members:{GameSessionId:{},PlayerIds:{type:"list",member:{}}}},output:{type:"structure",members:{PlayerSessions:{shape:"S1l"}}}},DeleteAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{}}}},DeleteBuild:{input:{type:"structure",required:["BuildId"],members:{BuildId:{}}}},DeleteFleet:{input:{type:"structure",required:["FleetId"],members:{FleetId:{}}}},DeleteScalingPolicy:{input:{type:"structure",required:["Name","FleetId"],members:{Name:{},FleetId:{}}}},DescribeAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{}}},output:{type:"structure",members:{Alias:{shape:"S8"}}}},DescribeBuild:{input:{type:"structure",required:["BuildId"],members:{BuildId:{}}},output:{type:"structure",members:{Build:{shape:"Sg"}}}},DescribeEC2InstanceLimits:{input:{type:"structure",members:{EC2InstanceType:{}}},output:{type:"structure",members:{EC2InstanceLimits:{type:"list",member:{type:"structure",members:{EC2InstanceType:{},CurrentInstances:{type:"integer"},InstanceLimit:{type:"integer"}}}}}}},DescribeFleetAttributes:{input:{type:"structure",members:{FleetIds:{shape:"S1z"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetAttributes:{type:"list",member:{shape:"Sz"}},NextToken:{}}}},DescribeFleetCapacity:{input:{type:"structure",members:{FleetIds:{shape:"S1z"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetCapacity:{type:"list",member:{type:"structure",members:{FleetId:{},InstanceType:{},InstanceCounts:{type:"structure",members:{DESIRED:{type:"integer"},MINIMUM:{type:"integer"},MAXIMUM:{type:"integer"},PENDING:{type:"integer"},ACTIVE:{type:"integer"},IDLE:{type:"integer"},TERMINATING:{type:"integer"}}}}}},NextToken:{}}}},DescribeFleetEvents:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Events:{type:"list",member:{type:"structure",members:{EventId:{},ResourceId:{},EventCode:{},Message:{},EventTime:{type:"timestamp"}}}},NextToken:{}}}},DescribeFleetPortSettings:{input:{type:"structure",required:["FleetId"],members:{FleetId:{}}},output:{type:"structure",members:{InboundPermissions:{shape:"So"}}}},DescribeFleetUtilization:{input:{type:"structure",members:{FleetIds:{shape:"S1z"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetUtilization:{type:"list",member:{type:"structure",members:{FleetId:{},ActiveServerProcessCount:{type:"integer"},ActiveGameSessionCount:{type:"integer"},CurrentPlayerSessionCount:{type:"integer"},MaximumPlayerSessionCount:{type:"integer"}}}},NextToken:{}}}},DescribeGameSessionDetails:{input:{type:"structure",members:{FleetId:{},GameSessionId:{},AliasId:{},StatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{GameSessionDetails:{type:"list",member:{type:"structure",members:{GameSession:{shape:"S18"},ProtectionPolicy:{}}}},NextToken:{}}}},DescribeGameSessions:{input:{type:"structure",members:{FleetId:{},GameSessionId:{},AliasId:{},StatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{GameSessions:{shape:"S2o"},NextToken:{}}}},DescribePlayerSessions:{input:{type:"structure",members:{GameSessionId:{},PlayerId:{},PlayerSessionId:{},PlayerSessionStatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{PlayerSessions:{shape:"S1l"},NextToken:{}}}},DescribeRuntimeConfiguration:{input:{type:"structure",required:["FleetId"],members:{FleetId:{}}},output:{type:"structure",members:{RuntimeConfiguration:{shape:"Su"}}}},DescribeScalingPolicies:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},StatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{ScalingPolicies:{type:"list",member:{type:"structure",members:{FleetId:{},Name:{},Status:{},ScalingAdjustment:{type:"integer"},ScalingAdjustmentType:{},ComparisonOperator:{},Threshold:{type:"double"},EvaluationPeriods:{type:"integer"},MetricName:{}}}},NextToken:{}}}},GetGameSessionLogUrl:{input:{type:"structure",required:["GameSessionId"],members:{GameSessionId:{}}},output:{type:"structure",members:{PreSignedUrl:{}}}},ListAliases:{input:{type:"structure",members:{RoutingStrategyType:{},Name:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Aliases:{type:"list",member:{shape:"S8"}},NextToken:{}}}},ListBuilds:{input:{type:"structure",members:{Status:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Builds:{type:"list",member:{shape:"Sg"}},NextToken:{}}}},ListFleets:{input:{type:"structure",members:{BuildId:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetIds:{shape:"S1z"},NextToken:{}}}},PutScalingPolicy:{input:{type:"structure",required:["Name","FleetId","ScalingAdjustment","ScalingAdjustmentType","Threshold","ComparisonOperator","EvaluationPeriods","MetricName"],members:{Name:{},FleetId:{},ScalingAdjustment:{type:"integer"},ScalingAdjustmentType:{},Threshold:{type:"double"},ComparisonOperator:{},EvaluationPeriods:{type:"integer"},MetricName:{}}},output:{type:"structure",members:{Name:{}}}},RequestUploadCredentials:{input:{type:"structure",required:["BuildId"],members:{BuildId:{}}},output:{type:"structure",members:{UploadCredentials:{shape:"Sk"},StorageLocation:{shape:"Sc"}}}},ResolveAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{}}},output:{type:"structure",members:{FleetId:{}}}},SearchGameSessions:{input:{type:"structure",members:{FleetId:{},AliasId:{},FilterExpression:{},SortExpression:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{GameSessions:{shape:"S2o"},NextToken:{}}}},UpdateAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{},Name:{},Description:{},RoutingStrategy:{shape:"S3"}}},output:{type:"structure",members:{Alias:{shape:"S8"}}}},UpdateBuild:{input:{type:"structure",required:["BuildId"],members:{BuildId:{},Name:{},Version:{}}},output:{type:"structure",members:{Build:{shape:"Sg"}}}},UpdateFleetAttributes:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},Name:{},Description:{},NewGameSessionProtectionPolicy:{}}},output:{type:"structure",members:{FleetId:{}}}},UpdateFleetCapacity:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},DesiredInstances:{type:"integer"},MinSize:{type:"integer"},MaxSize:{type:"integer"}}},output:{type:"structure",members:{FleetId:{}}}},UpdateFleetPortSettings:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},InboundPermissionAuthorizations:{shape:"So"},InboundPermissionRevocations:{shape:"So"}}},output:{type:"structure",members:{FleetId:{}}}},UpdateGameSession:{input:{type:"structure",required:["GameSessionId"],members:{GameSessionId:{},MaximumPlayerSessionCount:{type:"integer"},Name:{},PlayerSessionCreationPolicy:{},ProtectionPolicy:{}}},output:{type:"structure",members:{GameSession:{shape:"S18"}}}},UpdateRuntimeConfiguration:{input:{type:"structure",required:["FleetId","RuntimeConfiguration"],members:{FleetId:{},RuntimeConfiguration:{shape:"Su"}}},output:{type:"structure",members:{RuntimeConfiguration:{shape:"Su"}}}}},shapes:{S3:{type:"structure",members:{Type:{},FleetId:{},Message:{}}},S8:{type:"structure",members:{AliasId:{},Name:{},Description:{},RoutingStrategy:{shape:"S3"},CreationTime:{type:"timestamp"},LastUpdatedTime:{type:"timestamp"}}},Sc:{type:"structure",members:{Bucket:{},Key:{},RoleArn:{}}},Sg:{type:"structure",members:{BuildId:{},Name:{},Version:{},Status:{},SizeOnDisk:{type:"long"},OperatingSystem:{},CreationTime:{type:"timestamp"}}},Sk:{type:"structure",members:{AccessKeyId:{},SecretAccessKey:{},SessionToken:{}},sensitive:!0},Sm:{type:"list",member:{}},So:{type:"list",member:{type:"structure",required:["FromPort","ToPort","IpRange","Protocol"],members:{FromPort:{type:"integer"},ToPort:{type:"integer"},IpRange:{},Protocol:{}}}},Su:{type:"structure",members:{ServerProcesses:{type:"list",member:{type:"structure",required:["LaunchPath","ConcurrentExecutions"],members:{LaunchPath:{},Parameters:{},ConcurrentExecutions:{type:"integer"}}}}}},Sz:{type:"structure",members:{FleetId:{},Description:{},Name:{},CreationTime:{type:"timestamp"},TerminationTime:{type:"timestamp"},Status:{},BuildId:{},ServerLaunchPath:{},ServerLaunchParameters:{},LogPaths:{shape:"Sm"},NewGameSessionProtectionPolicy:{},OperatingSystem:{}}},S13:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},S18:{type:"structure",members:{GameSessionId:{},Name:{},FleetId:{},CreationTime:{type:"timestamp"},TerminationTime:{type:"timestamp"},CurrentPlayerSessionCount:{type:"integer"},MaximumPlayerSessionCount:{type:"integer"},Status:{},GameProperties:{shape:"S13"},IpAddress:{},Port:{type:"integer"},PlayerSessionCreationPolicy:{}}},S1f:{type:"structure",members:{PlayerSessionId:{},PlayerId:{},GameSessionId:{},FleetId:{},CreationTime:{type:"timestamp"},TerminationTime:{type:"timestamp"},Status:{},IpAddress:{},Port:{type:"integer"}}},S1l:{type:"list",member:{shape:"S1f"}},S1z:{type:"list",member:{}},S2o:{type:"list",member:{shape:"S18"}}},examples:{}}},{}],68:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2016-02-16",endpointPrefix:"inspector",jsonVersion:"1.1",protocol:"json",serviceFullName:"Amazon Inspector",signatureVersion:"v4",targetPrefix:"InspectorService"},operations:{AddAttributesToFindings:{input:{type:"structure",required:["findingArns","attributes"],members:{findingArns:{shape:"S2"},attributes:{shape:"S4"}}},output:{type:"structure",required:["failedItems"],members:{failedItems:{shape:"S9"}}}},CreateAssessmentTarget:{input:{type:"structure",required:["assessmentTargetName","resourceGroupArn"],members:{assessmentTargetName:{},resourceGroupArn:{}}},output:{type:"structure",required:["assessmentTargetArn"],members:{assessmentTargetArn:{}}}},CreateAssessmentTemplate:{input:{type:"structure",required:["assessmentTargetArn","assessmentTemplateName","durationInSeconds","rulesPackageArns"],members:{assessmentTargetArn:{},assessmentTemplateName:{},durationInSeconds:{ +type:"integer"},rulesPackageArns:{shape:"Sj"},userAttributesForFindings:{shape:"S4"}}},output:{type:"structure",required:["assessmentTemplateArn"],members:{assessmentTemplateArn:{}}}},CreateResourceGroup:{input:{type:"structure",required:["resourceGroupTags"],members:{resourceGroupTags:{shape:"Sm"}}},output:{type:"structure",required:["resourceGroupArn"],members:{resourceGroupArn:{}}}},DeleteAssessmentRun:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}}},DeleteAssessmentTarget:{input:{type:"structure",required:["assessmentTargetArn"],members:{assessmentTargetArn:{}}}},DeleteAssessmentTemplate:{input:{type:"structure",required:["assessmentTemplateArn"],members:{assessmentTemplateArn:{}}}},DescribeAssessmentRuns:{input:{type:"structure",required:["assessmentRunArns"],members:{assessmentRunArns:{shape:"Sv"}}},output:{type:"structure",required:["assessmentRuns","failedItems"],members:{assessmentRuns:{type:"list",member:{type:"structure",required:["arn","name","assessmentTemplateArn","state","durationInSeconds","rulesPackageArns","userAttributesForFindings","createdAt","stateChangedAt","dataCollected","stateChanges","notifications"],members:{arn:{},name:{},assessmentTemplateArn:{},state:{},durationInSeconds:{type:"integer"},rulesPackageArns:{type:"list",member:{}},userAttributesForFindings:{shape:"S4"},createdAt:{type:"timestamp"},startedAt:{type:"timestamp"},completedAt:{type:"timestamp"},stateChangedAt:{type:"timestamp"},dataCollected:{type:"boolean"},stateChanges:{type:"list",member:{type:"structure",required:["stateChangedAt","state"],members:{stateChangedAt:{type:"timestamp"},state:{}}}},notifications:{type:"list",member:{type:"structure",required:["date","event","error"],members:{date:{type:"timestamp"},event:{},message:{},error:{type:"boolean"},snsTopicArn:{},snsPublishStatusCode:{}}}}}}},failedItems:{shape:"S9"}}}},DescribeAssessmentTargets:{input:{type:"structure",required:["assessmentTargetArns"],members:{assessmentTargetArns:{shape:"Sv"}}},output:{type:"structure",required:["assessmentTargets","failedItems"],members:{assessmentTargets:{type:"list",member:{type:"structure",required:["arn","name","resourceGroupArn","createdAt","updatedAt"],members:{arn:{},name:{},resourceGroupArn:{},createdAt:{type:"timestamp"},updatedAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeAssessmentTemplates:{input:{type:"structure",required:["assessmentTemplateArns"],members:{assessmentTemplateArns:{shape:"Sv"}}},output:{type:"structure",required:["assessmentTemplates","failedItems"],members:{assessmentTemplates:{type:"list",member:{type:"structure",required:["arn","name","assessmentTargetArn","durationInSeconds","rulesPackageArns","userAttributesForFindings","createdAt"],members:{arn:{},name:{},assessmentTargetArn:{},durationInSeconds:{type:"integer"},rulesPackageArns:{shape:"Sj"},userAttributesForFindings:{shape:"S4"},createdAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeCrossAccountAccessRole:{output:{type:"structure",required:["roleArn","valid","registeredAt"],members:{roleArn:{},valid:{type:"boolean"},registeredAt:{type:"timestamp"}}}},DescribeFindings:{input:{type:"structure",required:["findingArns"],members:{findingArns:{shape:"Sv"},locale:{}}},output:{type:"structure",required:["findings","failedItems"],members:{findings:{type:"list",member:{type:"structure",required:["arn","attributes","userAttributes","createdAt","updatedAt"],members:{arn:{},schemaVersion:{type:"integer"},service:{},serviceAttributes:{type:"structure",required:["schemaVersion"],members:{schemaVersion:{type:"integer"},assessmentRunArn:{},rulesPackageArn:{}}},assetType:{},assetAttributes:{type:"structure",required:["schemaVersion"],members:{schemaVersion:{type:"integer"},agentId:{},autoScalingGroup:{},amiId:{},hostname:{},ipv4Addresses:{type:"list",member:{}}}},id:{},title:{},description:{},recommendation:{},severity:{},numericSeverity:{type:"double"},confidence:{type:"integer"},indicatorOfCompromise:{type:"boolean"},attributes:{shape:"S24"},userAttributes:{shape:"S4"},createdAt:{type:"timestamp"},updatedAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeResourceGroups:{input:{type:"structure",required:["resourceGroupArns"],members:{resourceGroupArns:{shape:"Sv"}}},output:{type:"structure",required:["resourceGroups","failedItems"],members:{resourceGroups:{type:"list",member:{type:"structure",required:["arn","tags","createdAt"],members:{arn:{},tags:{shape:"Sm"},createdAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeRulesPackages:{input:{type:"structure",required:["rulesPackageArns"],members:{rulesPackageArns:{shape:"Sv"},locale:{}}},output:{type:"structure",required:["rulesPackages","failedItems"],members:{rulesPackages:{type:"list",member:{type:"structure",required:["arn","name","version","provider"],members:{arn:{},name:{},version:{},provider:{},description:{}}}},failedItems:{shape:"S9"}}}},GetTelemetryMetadata:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}},output:{type:"structure",required:["telemetryMetadata"],members:{telemetryMetadata:{shape:"S2i"}}}},ListAssessmentRunAgents:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{},filter:{type:"structure",required:["agentHealths","agentHealthCodes"],members:{agentHealths:{type:"list",member:{}},agentHealthCodes:{type:"list",member:{}}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentRunAgents"],members:{assessmentRunAgents:{type:"list",member:{type:"structure",required:["agentId","assessmentRunArn","agentHealth","agentHealthCode","telemetryMetadata"],members:{agentId:{},assessmentRunArn:{},agentHealth:{},agentHealthCode:{},agentHealthDetails:{},autoScalingGroup:{},telemetryMetadata:{shape:"S2i"}}}},nextToken:{}}}},ListAssessmentRuns:{input:{type:"structure",members:{assessmentTemplateArns:{shape:"S2y"},filter:{type:"structure",members:{namePattern:{},states:{type:"list",member:{}},durationRange:{shape:"S32"},rulesPackageArns:{shape:"S33"},startTimeRange:{shape:"S34"},completionTimeRange:{shape:"S34"},stateChangeTimeRange:{shape:"S34"}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentRunArns"],members:{assessmentRunArns:{shape:"S36"},nextToken:{}}}},ListAssessmentTargets:{input:{type:"structure",members:{filter:{type:"structure",members:{assessmentTargetNamePattern:{}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentTargetArns"],members:{assessmentTargetArns:{shape:"S36"},nextToken:{}}}},ListAssessmentTemplates:{input:{type:"structure",members:{assessmentTargetArns:{shape:"S2y"},filter:{type:"structure",members:{namePattern:{},durationRange:{shape:"S32"},rulesPackageArns:{shape:"S33"}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentTemplateArns"],members:{assessmentTemplateArns:{shape:"S36"},nextToken:{}}}},ListEventSubscriptions:{input:{type:"structure",members:{resourceArn:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["subscriptions"],members:{subscriptions:{type:"list",member:{type:"structure",required:["resourceArn","topicArn","eventSubscriptions"],members:{resourceArn:{},topicArn:{},eventSubscriptions:{type:"list",member:{type:"structure",required:["event","subscribedAt"],members:{event:{},subscribedAt:{type:"timestamp"}}}}}}},nextToken:{}}}},ListFindings:{input:{type:"structure",members:{assessmentRunArns:{shape:"S2y"},filter:{type:"structure",members:{agentIds:{type:"list",member:{}},autoScalingGroups:{type:"list",member:{}},ruleNames:{type:"list",member:{}},severities:{type:"list",member:{}},rulesPackageArns:{shape:"S33"},attributes:{shape:"S24"},userAttributes:{shape:"S24"},creationTimeRange:{shape:"S34"}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["findingArns"],members:{findingArns:{shape:"S36"},nextToken:{}}}},ListRulesPackages:{input:{type:"structure",members:{nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["rulesPackageArns"],members:{rulesPackageArns:{shape:"S36"},nextToken:{}}}},ListTagsForResource:{input:{type:"structure",required:["resourceArn"],members:{resourceArn:{}}},output:{type:"structure",required:["tags"],members:{tags:{shape:"S3w"}}}},PreviewAgents:{input:{type:"structure",required:["previewAgentsArn"],members:{previewAgentsArn:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["agentPreviews"],members:{agentPreviews:{type:"list",member:{type:"structure",required:["agentId"],members:{agentId:{},autoScalingGroup:{}}}},nextToken:{}}}},RegisterCrossAccountAccessRole:{input:{type:"structure",required:["roleArn"],members:{roleArn:{}}}},RemoveAttributesFromFindings:{input:{type:"structure",required:["findingArns","attributeKeys"],members:{findingArns:{shape:"S2"},attributeKeys:{type:"list",member:{}}}},output:{type:"structure",required:["failedItems"],members:{failedItems:{shape:"S9"}}}},SetTagsForResource:{input:{type:"structure",required:["resourceArn"],members:{resourceArn:{},tags:{shape:"S3w"}}}},StartAssessmentRun:{input:{type:"structure",required:["assessmentTemplateArn"],members:{assessmentTemplateArn:{},assessmentRunName:{}}},output:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}}},StopAssessmentRun:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}}},SubscribeToEvent:{input:{type:"structure",required:["resourceArn","event","topicArn"],members:{resourceArn:{},event:{},topicArn:{}}}},UnsubscribeFromEvent:{input:{type:"structure",required:["resourceArn","event","topicArn"],members:{resourceArn:{},event:{},topicArn:{}}}},UpdateAssessmentTarget:{input:{type:"structure",required:["assessmentTargetArn","assessmentTargetName","resourceGroupArn"],members:{assessmentTargetArn:{},assessmentTargetName:{},resourceGroupArn:{}}}}},shapes:{S2:{type:"list",member:{}},S4:{type:"list",member:{shape:"S5"}},S5:{type:"structure",required:["key"],members:{key:{},value:{}}},S9:{type:"map",key:{},value:{type:"structure",required:["failureCode","retryable"],members:{failureCode:{},retryable:{type:"boolean"}}}},Sj:{type:"list",member:{}},Sm:{type:"list",member:{type:"structure",required:["key"],members:{key:{},value:{}}}},Sv:{type:"list",member:{}},S24:{type:"list",member:{shape:"S5"}},S2i:{type:"list",member:{type:"structure",required:["messageType","count"],members:{messageType:{},count:{type:"long"},dataSize:{type:"long"}}}},S2y:{type:"list",member:{}},S32:{type:"structure",members:{minSeconds:{type:"integer"},maxSeconds:{type:"integer"}}},S33:{type:"list",member:{}},S34:{type:"structure",members:{beginDate:{type:"timestamp"},endDate:{type:"timestamp"}}},S36:{type:"list",member:{}},S3w:{type:"list",member:{type:"structure",required:["key"],members:{key:{},value:{}}}}}}},{}],69:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-05-28",endpointPrefix:"iot",serviceFullName:"AWS IoT",signatureVersion:"v4",signingName:"execute-api",protocol:"rest-json"},operations:{AcceptCertificateTransfer:{http:{method:"PATCH",requestUri:"/accept-certificate-transfer/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"},setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"}}}},AttachPrincipalPolicy:{http:{method:"PUT",requestUri:"/principal-policies/{policyName}"},input:{type:"structure",required:["policyName","principal"],members:{policyName:{location:"uri",locationName:"policyName"},principal:{location:"header",locationName:"x-amzn-iot-principal"}}}},AttachThingPrincipal:{http:{method:"PUT",requestUri:"/things/{thingName}/principals"},input:{type:"structure",required:["thingName","principal"],members:{thingName:{location:"uri",locationName:"thingName"},principal:{location:"header",locationName:"x-amzn-principal"}}},output:{type:"structure",members:{}}},CancelCertificateTransfer:{http:{method:"PATCH",requestUri:"/cancel-certificate-transfer/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"}}}},CreateCertificateFromCsr:{http:{requestUri:"/certificates"},input:{type:"structure",required:["certificateSigningRequest"],members:{certificateSigningRequest:{},setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"}}},output:{type:"structure",members:{certificateArn:{},certificateId:{},certificatePem:{}}}},CreateKeysAndCertificate:{http:{requestUri:"/keys-and-certificate"},input:{type:"structure",members:{setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"}}},output:{type:"structure",members:{certificateArn:{},certificateId:{},certificatePem:{},keyPair:{type:"structure",members:{PublicKey:{},PrivateKey:{type:"string",sensitive:!0}}}}}},CreatePolicy:{http:{requestUri:"/policies/{policyName}"},input:{type:"structure",required:["policyName","policyDocument"],members:{policyName:{location:"uri",locationName:"policyName"},policyDocument:{}}},output:{type:"structure",members:{policyName:{},policyArn:{},policyDocument:{},policyVersionId:{}}}},CreatePolicyVersion:{http:{requestUri:"/policies/{policyName}/version"},input:{type:"structure",required:["policyName","policyDocument"],members:{policyName:{location:"uri",locationName:"policyName"},policyDocument:{},setAsDefault:{location:"querystring",locationName:"setAsDefault",type:"boolean"}}},output:{type:"structure",members:{policyArn:{},policyDocument:{},policyVersionId:{},isDefaultVersion:{type:"boolean"}}}},CreateThing:{http:{requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"},thingTypeName:{},attributePayload:{shape:"Sw"}}},output:{type:"structure",members:{thingName:{},thingArn:{}}}},CreateThingType:{http:{requestUri:"/thing-types/{thingTypeName}"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"},thingTypeProperties:{shape:"S14"}}},output:{type:"structure",members:{thingTypeName:{},thingTypeArn:{}}}},CreateTopicRule:{http:{requestUri:"/rules/{ruleName}"},input:{type:"structure",required:["ruleName","topicRulePayload"],members:{ruleName:{location:"uri",locationName:"ruleName"},topicRulePayload:{shape:"S1b"}},payload:"topicRulePayload"}},DeleteCACertificate:{http:{method:"DELETE",requestUri:"/cacertificate/{caCertificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"caCertificateId"}}},output:{type:"structure",members:{}}},DeleteCertificate:{http:{method:"DELETE",requestUri:"/certificates/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"}}}},DeletePolicy:{http:{method:"DELETE",requestUri:"/policies/{policyName}"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"uri",locationName:"policyName"}}}},DeletePolicyVersion:{http:{method:"DELETE",requestUri:"/policies/{policyName}/version/{policyVersionId}"},input:{type:"structure",required:["policyName","policyVersionId"],members:{policyName:{location:"uri",locationName:"policyName"},policyVersionId:{location:"uri",locationName:"policyVersionId"}}}},DeleteRegistrationCode:{http:{method:"DELETE",requestUri:"/registrationcode"},input:{type:"structure",members:{}},output:{type:"structure",members:{}}},DeleteThing:{http:{method:"DELETE",requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"},expectedVersion:{location:"querystring",locationName:"expectedVersion",type:"long"}}},output:{type:"structure",members:{}}},DeleteThingType:{http:{method:"DELETE",requestUri:"/thing-types/{thingTypeName}"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"}}},output:{type:"structure",members:{}}},DeleteTopicRule:{http:{method:"DELETE",requestUri:"/rules/{ruleName}"},input:{type:"structure",members:{ruleName:{location:"uri",locationName:"ruleName"}},required:["ruleName"]}},DeprecateThingType:{http:{requestUri:"/thing-types/{thingTypeName}/deprecate"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"},undoDeprecate:{type:"boolean"}}},output:{type:"structure",members:{}}},DescribeCACertificate:{http:{method:"GET",requestUri:"/cacertificate/{caCertificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"caCertificateId"}}},output:{type:"structure",members:{certificateDescription:{type:"structure",members:{certificateArn:{},certificateId:{},status:{},certificatePem:{},ownedBy:{},creationDate:{type:"timestamp"},autoRegistrationStatus:{}}}}}},DescribeCertificate:{http:{method:"GET",requestUri:"/certificates/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"}}},output:{type:"structure",members:{certificateDescription:{type:"structure",members:{certificateArn:{},certificateId:{},caCertificateId:{},status:{},certificatePem:{},ownedBy:{},previousOwnedBy:{},creationDate:{type:"timestamp"},lastModifiedDate:{type:"timestamp"},transferData:{type:"structure",members:{transferMessage:{},rejectReason:{},transferDate:{type:"timestamp"},acceptDate:{type:"timestamp"},rejectDate:{type:"timestamp"}}}}}}}},DescribeEndpoint:{http:{method:"GET",requestUri:"/endpoint"},input:{type:"structure",members:{}},output:{type:"structure",members:{endpointAddress:{}}}},DescribeThing:{http:{method:"GET",requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",members:{defaultClientId:{},thingName:{},thingTypeName:{},attributes:{shape:"Sx"},version:{type:"long"}}}},DescribeThingType:{http:{method:"GET",requestUri:"/thing-types/{thingTypeName}"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"}}},output:{type:"structure",members:{thingTypeName:{},thingTypeProperties:{shape:"S14"},thingTypeMetadata:{shape:"S3s"}}}},DetachPrincipalPolicy:{http:{method:"DELETE",requestUri:"/principal-policies/{policyName}"},input:{type:"structure",required:["policyName","principal"],members:{policyName:{location:"uri",locationName:"policyName"},principal:{location:"header",locationName:"x-amzn-iot-principal"}}}},DetachThingPrincipal:{http:{method:"DELETE",requestUri:"/things/{thingName}/principals"},input:{type:"structure",required:["thingName","principal"],members:{thingName:{location:"uri",locationName:"thingName"},principal:{location:"header",locationName:"x-amzn-principal"}}},output:{type:"structure",members:{}}},DisableTopicRule:{http:{requestUri:"/rules/{ruleName}/disable"},input:{type:"structure",required:["ruleName"],members:{ruleName:{location:"uri",locationName:"ruleName"}}}},EnableTopicRule:{http:{requestUri:"/rules/{ruleName}/enable"},input:{type:"structure",required:["ruleName"],members:{ruleName:{location:"uri",locationName:"ruleName"}}}},GetLoggingOptions:{http:{method:"GET",requestUri:"/loggingOptions"},input:{type:"structure",members:{}},output:{type:"structure",members:{roleArn:{},logLevel:{}}}},GetPolicy:{http:{method:"GET",requestUri:"/policies/{policyName}"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"uri",locationName:"policyName"}}},output:{type:"structure",members:{policyName:{},policyArn:{},policyDocument:{},defaultVersionId:{}}}},GetPolicyVersion:{http:{method:"GET",requestUri:"/policies/{policyName}/version/{policyVersionId}"},input:{type:"structure",required:["policyName","policyVersionId"],members:{policyName:{location:"uri",locationName:"policyName"},policyVersionId:{location:"uri",locationName:"policyVersionId"}}},output:{type:"structure",members:{policyArn:{},policyName:{},policyDocument:{},policyVersionId:{},isDefaultVersion:{type:"boolean"}}}},GetRegistrationCode:{http:{method:"GET",requestUri:"/registrationcode"},input:{type:"structure",members:{}},output:{type:"structure",members:{registrationCode:{}}}},GetTopicRule:{http:{method:"GET",requestUri:"/rules/{ruleName}"},input:{type:"structure",required:["ruleName"],members:{ruleName:{location:"uri",locationName:"ruleName"}}},output:{type:"structure",members:{ruleArn:{},rule:{type:"structure",members:{ruleName:{},sql:{},description:{},createdAt:{type:"timestamp"},actions:{shape:"S1e"},ruleDisabled:{type:"boolean"},awsIotSqlVersion:{}}}}}},ListCACertificates:{http:{method:"GET",requestUri:"/cacertificates"},input:{type:"structure",members:{pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{certificates:{type:"list",member:{type:"structure",members:{certificateArn:{},certificateId:{},status:{},creationDate:{type:"timestamp"}}}},nextMarker:{}}}},ListCertificates:{http:{method:"GET",requestUri:"/certificates"},input:{type:"structure",members:{pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{certificates:{shape:"S4p"},nextMarker:{}}}},ListCertificatesByCA:{http:{method:"GET",requestUri:"/certificates-by-ca/{caCertificateId}"},input:{type:"structure",required:["caCertificateId"],members:{caCertificateId:{location:"uri",locationName:"caCertificateId"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{certificates:{shape:"S4p"},nextMarker:{}}}},ListOutgoingCertificates:{http:{method:"GET",requestUri:"/certificates-out-going"},input:{type:"structure",members:{pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{outgoingCertificates:{type:"list",member:{type:"structure",members:{certificateArn:{},certificateId:{},transferredTo:{},transferDate:{type:"timestamp"},transferMessage:{},creationDate:{type:"timestamp"}}}},nextMarker:{}}}},ListPolicies:{http:{method:"GET",requestUri:"/policies"},input:{type:"structure",members:{marker:{location:"querystring",locationName:"marker"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{policies:{shape:"S4z"},nextMarker:{}}}},ListPolicyPrincipals:{http:{method:"GET",requestUri:"/policy-principals"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"header",locationName:"x-amzn-iot-policy"},marker:{location:"querystring",locationName:"marker"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{principals:{shape:"S53"},nextMarker:{}}}},ListPolicyVersions:{http:{method:"GET",requestUri:"/policies/{policyName}/version"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"uri",locationName:"policyName"}}},output:{type:"structure",members:{policyVersions:{type:"list",member:{type:"structure",members:{versionId:{},isDefaultVersion:{type:"boolean"},createDate:{type:"timestamp"}}}}}}},ListPrincipalPolicies:{http:{method:"GET",requestUri:"/principal-policies"},input:{type:"structure",required:["principal"],members:{principal:{location:"header",locationName:"x-amzn-iot-principal"},marker:{location:"querystring",locationName:"marker"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{policies:{shape:"S4z"},nextMarker:{}}}},ListPrincipalThings:{http:{method:"GET",requestUri:"/principals/things"},input:{type:"structure",required:["principal"],members:{nextToken:{location:"querystring",locationName:"nextToken"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},principal:{location:"header",locationName:"x-amzn-principal"}}},output:{type:"structure",members:{things:{type:"list",member:{}},nextToken:{}}}},ListThingPrincipals:{http:{method:"GET",requestUri:"/things/{thingName}/principals"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",members:{principals:{shape:"S53"}}}},ListThingTypes:{http:{method:"GET",requestUri:"/thing-types"},input:{type:"structure",members:{nextToken:{location:"querystring",locationName:"nextToken"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},thingTypeName:{location:"querystring",locationName:"thingTypeName"}}},output:{type:"structure",members:{thingTypes:{type:"list",member:{type:"structure",members:{thingTypeName:{},thingTypeProperties:{shape:"S14"},thingTypeMetadata:{shape:"S3s"}}}},nextToken:{}}}},ListThings:{http:{method:"GET",requestUri:"/things"},input:{type:"structure",members:{nextToken:{location:"querystring",locationName:"nextToken"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},attributeName:{location:"querystring",locationName:"attributeName"},attributeValue:{location:"querystring",locationName:"attributeValue"},thingTypeName:{location:"querystring",locationName:"thingTypeName"}}},output:{type:"structure",members:{things:{type:"list",member:{type:"structure",members:{thingName:{},thingTypeName:{},attributes:{shape:"Sx"},version:{type:"long"}}}},nextToken:{}}}},ListTopicRules:{http:{method:"GET",requestUri:"/rules"},input:{type:"structure",members:{topic:{location:"querystring",locationName:"topic"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},nextToken:{location:"querystring",locationName:"nextToken"},ruleDisabled:{location:"querystring",locationName:"ruleDisabled",type:"boolean"}}},output:{type:"structure",members:{rules:{type:"list",member:{type:"structure",members:{ruleArn:{},ruleName:{},topicPattern:{},createdAt:{type:"timestamp"},ruleDisabled:{type:"boolean"}}}},nextToken:{}}}},RegisterCACertificate:{http:{requestUri:"/cacertificate"},input:{type:"structure",required:["caCertificate","verificationCertificate"],members:{caCertificate:{},verificationCertificate:{},setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"},allowAutoRegistration:{location:"querystring",locationName:"allowAutoRegistration",type:"boolean"}}},output:{type:"structure",members:{certificateArn:{},certificateId:{}}}},RegisterCertificate:{http:{requestUri:"/certificate/register"},input:{type:"structure",required:["certificatePem"],members:{certificatePem:{},caCertificatePem:{},setAsActive:{deprecated:!0,location:"querystring",locationName:"setAsActive",type:"boolean"},status:{}}},output:{type:"structure",members:{certificateArn:{},certificateId:{}}}},RejectCertificateTransfer:{http:{method:"PATCH",requestUri:"/reject-certificate-transfer/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"},rejectReason:{}}}},ReplaceTopicRule:{http:{method:"PATCH",requestUri:"/rules/{ruleName}"},input:{type:"structure",required:["ruleName","topicRulePayload"],members:{ruleName:{location:"uri",locationName:"ruleName"},topicRulePayload:{shape:"S1b"}},payload:"topicRulePayload"}},SetDefaultPolicyVersion:{http:{method:"PATCH",requestUri:"/policies/{policyName}/version/{policyVersionId}"},input:{type:"structure",required:["policyName","policyVersionId"],members:{policyName:{location:"uri",locationName:"policyName"},policyVersionId:{location:"uri",locationName:"policyVersionId"}}}},SetLoggingOptions:{http:{requestUri:"/loggingOptions"},input:{type:"structure",required:["loggingOptionsPayload"],members:{loggingOptionsPayload:{type:"structure",required:["roleArn"],members:{roleArn:{},logLevel:{}}}},payload:"loggingOptionsPayload"}},TransferCertificate:{http:{method:"PATCH",requestUri:"/transfer-certificate/{certificateId}"},input:{type:"structure",required:["certificateId","targetAwsAccount"],members:{certificateId:{location:"uri",locationName:"certificateId"},targetAwsAccount:{location:"querystring",locationName:"targetAwsAccount"},transferMessage:{}}},output:{type:"structure",members:{transferredCertificateArn:{}}}},UpdateCACertificate:{http:{method:"PUT",requestUri:"/cacertificate/{caCertificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"caCertificateId"},newStatus:{location:"querystring",locationName:"newStatus"},newAutoRegistrationStatus:{location:"querystring",locationName:"newAutoRegistrationStatus"}}}},UpdateCertificate:{http:{method:"PUT",requestUri:"/certificates/{certificateId}"},input:{type:"structure",required:["certificateId","newStatus"],members:{certificateId:{location:"uri",locationName:"certificateId"},newStatus:{location:"querystring",locationName:"newStatus"}}}},UpdateThing:{http:{method:"PATCH",requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"},thingTypeName:{},attributePayload:{shape:"Sw"},expectedVersion:{type:"long"},removeThingType:{type:"boolean"}}},output:{type:"structure",members:{}}}},shapes:{Sw:{type:"structure",members:{attributes:{shape:"Sx"},merge:{type:"boolean"}}},Sx:{type:"map",key:{},value:{}},S14:{type:"structure",members:{thingTypeDescription:{},searchableAttributes:{type:"list",member:{}}}},S1b:{type:"structure",required:["sql","actions"],members:{sql:{},description:{},actions:{shape:"S1e"},ruleDisabled:{type:"boolean"},awsIotSqlVersion:{}}},S1e:{type:"list",member:{type:"structure",members:{dynamoDB:{type:"structure",required:["tableName","roleArn","hashKeyField","hashKeyValue"],members:{tableName:{},roleArn:{},operation:{},hashKeyField:{},hashKeyValue:{},hashKeyType:{},rangeKeyField:{},rangeKeyValue:{},rangeKeyType:{},payloadField:{}}},lambda:{type:"structure",required:["functionArn"],members:{functionArn:{}}},sns:{type:"structure",required:["targetArn","roleArn"],members:{targetArn:{},roleArn:{},messageFormat:{}}},sqs:{type:"structure",required:["roleArn","queueUrl"],members:{roleArn:{},queueUrl:{},useBase64:{type:"boolean"}}},kinesis:{type:"structure",required:["roleArn","streamName"],members:{roleArn:{},streamName:{},partitionKey:{}}},republish:{type:"structure",required:["roleArn","topic"],members:{roleArn:{},topic:{}}},s3:{type:"structure",required:["roleArn","bucketName","key"],members:{roleArn:{},bucketName:{},key:{},cannedAcl:{}}},firehose:{type:"structure",required:["roleArn","deliveryStreamName"],members:{roleArn:{},deliveryStreamName:{},separator:{}}},cloudwatchMetric:{type:"structure",required:["roleArn","metricNamespace","metricName","metricValue","metricUnit"],members:{roleArn:{},metricNamespace:{},metricName:{},metricValue:{},metricUnit:{},metricTimestamp:{}}},cloudwatchAlarm:{type:"structure",required:["roleArn","alarmName","stateReason","stateValue"],members:{roleArn:{},alarmName:{},stateReason:{},stateValue:{}}},elasticsearch:{type:"structure",required:["roleArn","endpoint","index","type","id"],members:{roleArn:{},endpoint:{},index:{},type:{},id:{} +}}}}},S3s:{type:"structure",members:{deprecated:{type:"boolean"},deprecationDate:{type:"timestamp"},creationDate:{type:"timestamp"}}},S4p:{type:"list",member:{type:"structure",members:{certificateArn:{},certificateId:{},status:{},creationDate:{type:"timestamp"}}}},S4z:{type:"list",member:{type:"structure",members:{policyName:{},policyArn:{}}}},S53:{type:"list",member:{}}},examples:{}}},{}],70:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-05-28",endpointPrefix:"data.iot",protocol:"rest-json",serviceFullName:"AWS IoT Data Plane",signatureVersion:"v4",signingName:"iotdata"},operations:{DeleteThingShadow:{http:{method:"DELETE",requestUri:"/things/{thingName}/shadow"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",required:["payload"],members:{payload:{type:"blob"}},payload:"payload"}},GetThingShadow:{http:{method:"GET",requestUri:"/things/{thingName}/shadow"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",members:{payload:{type:"blob"}},payload:"payload"}},Publish:{http:{requestUri:"/topics/{topic}"},input:{type:"structure",required:["topic"],members:{topic:{location:"uri",locationName:"topic"},qos:{location:"querystring",locationName:"qos",type:"integer"},payload:{type:"blob"}},payload:"payload"}},UpdateThingShadow:{http:{requestUri:"/things/{thingName}/shadow"},input:{type:"structure",required:["thingName","payload"],members:{thingName:{location:"uri",locationName:"thingName"},payload:{type:"blob"}},payload:"payload"},output:{type:"structure",members:{payload:{type:"blob"}},payload:"payload"}}},shapes:{}}},{}],71:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-12-02",endpointPrefix:"kinesis",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Kinesis",serviceFullName:"Amazon Kinesis",signatureVersion:"v4",targetPrefix:"Kinesis_20131202"},operations:{AddTagsToStream:{input:{type:"structure",required:["StreamName","Tags"],members:{StreamName:{},Tags:{type:"map",key:{},value:{}}}}},CreateStream:{input:{type:"structure",required:["StreamName","ShardCount"],members:{StreamName:{},ShardCount:{type:"integer"}}}},DecreaseStreamRetentionPeriod:{input:{type:"structure",required:["StreamName","RetentionPeriodHours"],members:{StreamName:{},RetentionPeriodHours:{type:"integer"}}}},DeleteStream:{input:{type:"structure",required:["StreamName"],members:{StreamName:{}}}},DescribeStream:{input:{type:"structure",required:["StreamName"],members:{StreamName:{},Limit:{type:"integer"},ExclusiveStartShardId:{}}},output:{type:"structure",required:["StreamDescription"],members:{StreamDescription:{type:"structure",required:["StreamName","StreamARN","StreamStatus","Shards","HasMoreShards","RetentionPeriodHours","EnhancedMonitoring"],members:{StreamName:{},StreamARN:{},StreamStatus:{},Shards:{type:"list",member:{type:"structure",required:["ShardId","HashKeyRange","SequenceNumberRange"],members:{ShardId:{},ParentShardId:{},AdjacentParentShardId:{},HashKeyRange:{type:"structure",required:["StartingHashKey","EndingHashKey"],members:{StartingHashKey:{},EndingHashKey:{}}},SequenceNumberRange:{type:"structure",required:["StartingSequenceNumber"],members:{StartingSequenceNumber:{},EndingSequenceNumber:{}}}}}},HasMoreShards:{type:"boolean"},RetentionPeriodHours:{type:"integer"},EnhancedMonitoring:{type:"list",member:{type:"structure",members:{ShardLevelMetrics:{shape:"Sr"}}}}}}}}},DisableEnhancedMonitoring:{input:{type:"structure",required:["StreamName","ShardLevelMetrics"],members:{StreamName:{},ShardLevelMetrics:{shape:"Sr"}}},output:{shape:"Su"}},EnableEnhancedMonitoring:{input:{type:"structure",required:["StreamName","ShardLevelMetrics"],members:{StreamName:{},ShardLevelMetrics:{shape:"Sr"}}},output:{shape:"Su"}},GetRecords:{input:{type:"structure",required:["ShardIterator"],members:{ShardIterator:{},Limit:{type:"integer"}}},output:{type:"structure",required:["Records"],members:{Records:{type:"list",member:{type:"structure",required:["SequenceNumber","Data","PartitionKey"],members:{SequenceNumber:{},ApproximateArrivalTimestamp:{type:"timestamp"},Data:{type:"blob"},PartitionKey:{}}}},NextShardIterator:{},MillisBehindLatest:{type:"long"}}}},GetShardIterator:{input:{type:"structure",required:["StreamName","ShardId","ShardIteratorType"],members:{StreamName:{},ShardId:{},ShardIteratorType:{},StartingSequenceNumber:{},Timestamp:{type:"timestamp"}}},output:{type:"structure",members:{ShardIterator:{}}}},IncreaseStreamRetentionPeriod:{input:{type:"structure",required:["StreamName","RetentionPeriodHours"],members:{StreamName:{},RetentionPeriodHours:{type:"integer"}}}},ListStreams:{input:{type:"structure",members:{Limit:{type:"integer"},ExclusiveStartStreamName:{}}},output:{type:"structure",required:["StreamNames","HasMoreStreams"],members:{StreamNames:{type:"list",member:{}},HasMoreStreams:{type:"boolean"}}}},ListTagsForStream:{input:{type:"structure",required:["StreamName"],members:{StreamName:{},ExclusiveStartTagKey:{},Limit:{type:"integer"}}},output:{type:"structure",required:["Tags","HasMoreTags"],members:{Tags:{type:"list",member:{type:"structure",required:["Key"],members:{Key:{},Value:{}}}},HasMoreTags:{type:"boolean"}}}},MergeShards:{input:{type:"structure",required:["StreamName","ShardToMerge","AdjacentShardToMerge"],members:{StreamName:{},ShardToMerge:{},AdjacentShardToMerge:{}}}},PutRecord:{input:{type:"structure",required:["StreamName","Data","PartitionKey"],members:{StreamName:{},Data:{type:"blob"},PartitionKey:{},ExplicitHashKey:{},SequenceNumberForOrdering:{}}},output:{type:"structure",required:["ShardId","SequenceNumber"],members:{ShardId:{},SequenceNumber:{}}}},PutRecords:{input:{type:"structure",required:["Records","StreamName"],members:{Records:{type:"list",member:{type:"structure",required:["Data","PartitionKey"],members:{Data:{type:"blob"},ExplicitHashKey:{},PartitionKey:{}}}},StreamName:{}}},output:{type:"structure",required:["Records"],members:{FailedRecordCount:{type:"integer"},Records:{type:"list",member:{type:"structure",members:{SequenceNumber:{},ShardId:{},ErrorCode:{},ErrorMessage:{}}}}}}},RemoveTagsFromStream:{input:{type:"structure",required:["StreamName","TagKeys"],members:{StreamName:{},TagKeys:{type:"list",member:{}}}}},SplitShard:{input:{type:"structure",required:["StreamName","ShardToSplit","NewStartingHashKey"],members:{StreamName:{},ShardToSplit:{},NewStartingHashKey:{}}}}},shapes:{Sr:{type:"list",member:{}},Su:{type:"structure",members:{StreamName:{},CurrentShardLevelMetrics:{shape:"Sr"},DesiredShardLevelMetrics:{shape:"Sr"}}}}}},{}],72:[function(e,t,r){t.exports={pagination:{DescribeStream:{input_token:"ExclusiveStartShardId",limit_key:"Limit",more_results:"StreamDescription.HasMoreShards",output_token:"StreamDescription.Shards[-1].ShardId",result_key:"StreamDescription.Shards"},ListStreams:{input_token:"ExclusiveStartStreamName",limit_key:"Limit",more_results:"HasMoreStreams",output_token:"StreamNames[-1]",result_key:"StreamNames"}}}},{}],73:[function(e,t,r){t.exports={version:2,waiters:{StreamExists:{delay:10,operation:"DescribeStream",maxAttempts:18,acceptors:[{expected:"ACTIVE",matcher:"path",state:"success",argument:"StreamDescription.StreamStatus"}]}}}},{}],74:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-11-01",endpointPrefix:"kms",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"KMS",serviceFullName:"AWS Key Management Service",signatureVersion:"v4",targetPrefix:"TrentService"},operations:{CancelKeyDeletion:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}},output:{type:"structure",members:{KeyId:{}}}},CreateAlias:{input:{type:"structure",required:["AliasName","TargetKeyId"],members:{AliasName:{},TargetKeyId:{}}}},CreateGrant:{input:{type:"structure",required:["KeyId","GranteePrincipal"],members:{KeyId:{},GranteePrincipal:{},RetiringPrincipal:{},Operations:{shape:"S8"},Constraints:{shape:"Sa"},GrantTokens:{shape:"Se"},Name:{}}},output:{type:"structure",members:{GrantToken:{},GrantId:{}}}},CreateKey:{input:{type:"structure",members:{Policy:{},Description:{},KeyUsage:{},Origin:{},BypassPolicyLockoutSafetyCheck:{type:"boolean"}}},output:{type:"structure",members:{KeyMetadata:{shape:"Sq"}}}},Decrypt:{input:{type:"structure",required:["CiphertextBlob"],members:{CiphertextBlob:{type:"blob"},EncryptionContext:{shape:"Sb"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{KeyId:{},Plaintext:{shape:"Sz"}}}},DeleteAlias:{input:{type:"structure",required:["AliasName"],members:{AliasName:{}}}},DeleteImportedKeyMaterial:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},DescribeKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{KeyMetadata:{shape:"Sq"}}}},DisableKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},DisableKeyRotation:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},EnableKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},EnableKeyRotation:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},Encrypt:{input:{type:"structure",required:["KeyId","Plaintext"],members:{KeyId:{},Plaintext:{shape:"Sz"},EncryptionContext:{shape:"Sb"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},KeyId:{}}}},GenerateDataKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},EncryptionContext:{shape:"Sb"},NumberOfBytes:{type:"integer"},KeySpec:{},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},Plaintext:{shape:"Sz"},KeyId:{}}}},GenerateDataKeyWithoutPlaintext:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},EncryptionContext:{shape:"Sb"},KeySpec:{},NumberOfBytes:{type:"integer"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},KeyId:{}}}},GenerateRandom:{input:{type:"structure",members:{NumberOfBytes:{type:"integer"}}},output:{type:"structure",members:{Plaintext:{shape:"Sz"}}}},GetKeyPolicy:{input:{type:"structure",required:["KeyId","PolicyName"],members:{KeyId:{},PolicyName:{}}},output:{type:"structure",members:{Policy:{}}}},GetKeyRotationStatus:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}},output:{type:"structure",members:{KeyRotationEnabled:{type:"boolean"}}}},GetParametersForImport:{input:{type:"structure",required:["KeyId","WrappingAlgorithm","WrappingKeySpec"],members:{KeyId:{},WrappingAlgorithm:{},WrappingKeySpec:{}}},output:{type:"structure",members:{KeyId:{},ImportToken:{type:"blob"},PublicKey:{shape:"Sz"},ParametersValidTo:{type:"timestamp"}}}},ImportKeyMaterial:{input:{type:"structure",required:["KeyId","ImportToken","EncryptedKeyMaterial"],members:{KeyId:{},ImportToken:{type:"blob"},EncryptedKeyMaterial:{type:"blob"},ValidTo:{type:"timestamp"},ExpirationModel:{}}},output:{type:"structure",members:{}}},ListAliases:{input:{type:"structure",members:{Limit:{type:"integer"},Marker:{}}},output:{type:"structure",members:{Aliases:{type:"list",member:{type:"structure",members:{AliasName:{},AliasArn:{},TargetKeyId:{}}}},NextMarker:{},Truncated:{type:"boolean"}}}},ListGrants:{input:{type:"structure",required:["KeyId"],members:{Limit:{type:"integer"},Marker:{},KeyId:{}}},output:{shape:"S20"}},ListKeyPolicies:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},Limit:{type:"integer"},Marker:{}}},output:{type:"structure",members:{PolicyNames:{type:"list",member:{}},NextMarker:{},Truncated:{type:"boolean"}}}},ListKeys:{input:{type:"structure",members:{Limit:{type:"integer"},Marker:{}}},output:{type:"structure",members:{Keys:{type:"list",member:{type:"structure",members:{KeyId:{},KeyArn:{}}}},NextMarker:{},Truncated:{type:"boolean"}}}},ListRetirableGrants:{input:{type:"structure",required:["RetiringPrincipal"],members:{Limit:{type:"integer"},Marker:{},RetiringPrincipal:{}}},output:{shape:"S20"}},PutKeyPolicy:{input:{type:"structure",required:["KeyId","PolicyName","Policy"],members:{KeyId:{},PolicyName:{},Policy:{},BypassPolicyLockoutSafetyCheck:{type:"boolean"}}}},ReEncrypt:{input:{type:"structure",required:["CiphertextBlob","DestinationKeyId"],members:{CiphertextBlob:{type:"blob"},SourceEncryptionContext:{shape:"Sb"},DestinationKeyId:{},DestinationEncryptionContext:{shape:"Sb"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},SourceKeyId:{},KeyId:{}}}},RetireGrant:{input:{type:"structure",members:{GrantToken:{},KeyId:{},GrantId:{}}}},RevokeGrant:{input:{type:"structure",required:["KeyId","GrantId"],members:{KeyId:{},GrantId:{}}}},ScheduleKeyDeletion:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},PendingWindowInDays:{type:"integer"}}},output:{type:"structure",members:{KeyId:{},DeletionDate:{type:"timestamp"}}}},UpdateAlias:{input:{type:"structure",required:["AliasName","TargetKeyId"],members:{AliasName:{},TargetKeyId:{}}}},UpdateKeyDescription:{input:{type:"structure",required:["KeyId","Description"],members:{KeyId:{},Description:{}}}}},shapes:{S8:{type:"list",member:{}},Sa:{type:"structure",members:{EncryptionContextSubset:{shape:"Sb"},EncryptionContextEquals:{shape:"Sb"}}},Sb:{type:"map",key:{},value:{}},Se:{type:"list",member:{}},Sq:{type:"structure",required:["KeyId"],members:{AWSAccountId:{},KeyId:{},Arn:{},CreationDate:{type:"timestamp"},Enabled:{type:"boolean"},Description:{},KeyUsage:{},KeyState:{},DeletionDate:{type:"timestamp"},ValidTo:{type:"timestamp"},Origin:{},ExpirationModel:{}}},Sz:{type:"blob",sensitive:!0},S20:{type:"structure",members:{Grants:{type:"list",member:{type:"structure",members:{KeyId:{},GrantId:{},Name:{},CreationDate:{type:"timestamp"},GranteePrincipal:{},RetiringPrincipal:{},IssuingAccount:{},Operations:{shape:"S8"},Constraints:{shape:"Sa"}}}},NextMarker:{},Truncated:{type:"boolean"}}}}}},{}],75:[function(e,t,r){t.exports={pagination:{ListAliases:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"Aliases"},ListGrants:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"Grants"},ListKeyPolicies:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"PolicyNames"},ListKeys:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"Keys"}}}},{}],76:[function(e,t,r){t.exports={metadata:{apiVersion:"2014-11-11",endpointPrefix:"lambda",serviceFullName:"AWS Lambda",signatureVersion:"v4",protocol:"rest-json"},operations:{AddEventSource:{http:{requestUri:"/2014-11-13/event-source-mappings/"},input:{type:"structure",required:["EventSource","FunctionName","Role"],members:{EventSource:{},FunctionName:{},Role:{},BatchSize:{type:"integer"},Parameters:{shape:"S6"}}},output:{shape:"S7"}},DeleteFunction:{http:{method:"DELETE",requestUri:"/2014-11-13/functions/{FunctionName}",responseCode:204},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"}}}},GetEventSource:{http:{method:"GET",requestUri:"/2014-11-13/event-source-mappings/{UUID}",responseCode:200},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}},output:{shape:"S7"}},GetFunction:{http:{method:"GET",requestUri:"/2014-11-13/functions/{FunctionName}",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"}}},output:{type:"structure",members:{Configuration:{shape:"Se"},Code:{type:"structure",members:{RepositoryType:{},Location:{}}}}}},GetFunctionConfiguration:{http:{method:"GET",requestUri:"/2014-11-13/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"}}},output:{shape:"Se"}},InvokeAsync:{http:{requestUri:"/2014-11-13/functions/{FunctionName}/invoke-async/",responseCode:202},input:{type:"structure",required:["FunctionName","InvokeArgs"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},InvokeArgs:{shape:"Sq"}},payload:"InvokeArgs"},output:{type:"structure",members:{Status:{location:"statusCode",type:"integer"}}}},ListEventSources:{http:{method:"GET",requestUri:"/2014-11-13/event-source-mappings/",responseCode:200},input:{type:"structure",members:{EventSourceArn:{location:"querystring",locationName:"EventSource"},FunctionName:{location:"querystring",locationName:"FunctionName"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},EventSources:{type:"list",member:{shape:"S7"}}}}},ListFunctions:{http:{method:"GET",requestUri:"/2014-11-13/functions/",responseCode:200},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Functions:{type:"list",member:{shape:"Se"}}}}},RemoveEventSource:{http:{method:"DELETE",requestUri:"/2014-11-13/event-source-mappings/{UUID}",responseCode:204},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}}},UpdateFunctionConfiguration:{http:{method:"PUT",requestUri:"/2014-11-13/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Role:{location:"querystring",locationName:"Role"},Handler:{location:"querystring",locationName:"Handler"},Description:{location:"querystring",locationName:"Description"},Timeout:{location:"querystring",locationName:"Timeout",type:"integer"},MemorySize:{location:"querystring",locationName:"MemorySize",type:"integer"}}},output:{shape:"Se"}},UploadFunction:{http:{method:"PUT",requestUri:"/2014-11-13/functions/{FunctionName}",responseCode:201},input:{type:"structure",required:["FunctionName","FunctionZip","Runtime","Role","Handler","Mode"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},FunctionZip:{shape:"Sq"},Runtime:{location:"querystring",locationName:"Runtime"},Role:{location:"querystring",locationName:"Role"},Handler:{location:"querystring",locationName:"Handler"},Mode:{location:"querystring",locationName:"Mode"},Description:{location:"querystring",locationName:"Description"},Timeout:{location:"querystring",locationName:"Timeout",type:"integer"},MemorySize:{location:"querystring",locationName:"MemorySize",type:"integer"}},payload:"FunctionZip"},output:{shape:"Se"}}},shapes:{S6:{type:"map",key:{},value:{}},S7:{type:"structure",members:{UUID:{},BatchSize:{type:"integer"},EventSource:{},FunctionName:{},Parameters:{shape:"S6"},Role:{},LastModified:{type:"timestamp"},IsActive:{type:"boolean"},Status:{}}},Se:{type:"structure",members:{FunctionName:{},FunctionARN:{},ConfigurationId:{},Runtime:{},Role:{},Handler:{},Mode:{},CodeSize:{type:"long"},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},LastModified:{type:"timestamp"}}},Sq:{type:"blob",streaming:!0}}}},{}],77:[function(e,t,r){t.exports={pagination:{ListEventSources:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"EventSources"},ListFunctions:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"Functions"}}}},{}],78:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-03-31",endpointPrefix:"lambda",protocol:"rest-json",serviceFullName:"AWS Lambda",signatureVersion:"v4"},operations:{AddPermission:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/policy",responseCode:201},input:{type:"structure",required:["FunctionName","StatementId","Action","Principal"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},StatementId:{},Action:{},Principal:{},SourceArn:{},SourceAccount:{},EventSourceToken:{},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{type:"structure",members:{Statement:{}}}},CreateAlias:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/aliases",responseCode:201},input:{type:"structure",required:["FunctionName","Name","FunctionVersion"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{},FunctionVersion:{},Description:{}}},output:{shape:"Sg"}},CreateEventSourceMapping:{http:{requestUri:"/2015-03-31/event-source-mappings/",responseCode:202},input:{type:"structure",required:["EventSourceArn","FunctionName","StartingPosition"],members:{EventSourceArn:{},FunctionName:{},Enabled:{type:"boolean"},BatchSize:{type:"integer"},StartingPosition:{}}},output:{shape:"Sm"}},CreateFunction:{http:{requestUri:"/2015-03-31/functions",responseCode:201},input:{type:"structure",required:["FunctionName","Runtime","Role","Handler","Code"],members:{FunctionName:{},Runtime:{},Role:{},Handler:{},Code:{type:"structure",members:{ZipFile:{type:"blob"},S3Bucket:{},S3Key:{},S3ObjectVersion:{}}},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},Publish:{type:"boolean"},VpcConfig:{shape:"S10"}}},output:{shape:"S15"}},DeleteAlias:{http:{method:"DELETE",requestUri:"/2015-03-31/functions/{FunctionName}/aliases/{Name}",responseCode:204},input:{type:"structure",required:["FunctionName","Name"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{location:"uri",locationName:"Name"}}}},DeleteEventSourceMapping:{http:{method:"DELETE",requestUri:"/2015-03-31/event-source-mappings/{UUID}",responseCode:202},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}},output:{shape:"Sm"}},DeleteFunction:{http:{method:"DELETE",requestUri:"/2015-03-31/functions/{FunctionName}",responseCode:204},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}}},GetAlias:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/aliases/{Name}",responseCode:200},input:{type:"structure",required:["FunctionName","Name"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{location:"uri",locationName:"Name"}}},output:{shape:"Sg"}},GetEventSourceMapping:{http:{method:"GET",requestUri:"/2015-03-31/event-source-mappings/{UUID}",responseCode:200},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}},output:{shape:"Sm"}},GetFunction:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{type:"structure",members:{Configuration:{shape:"S15"},Code:{type:"structure",members:{RepositoryType:{},Location:{}}}}}},GetFunctionConfiguration:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{shape:"S15"}},GetPolicy:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/policy",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{type:"structure",members:{Policy:{}}}},Invoke:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/invocations"},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},InvocationType:{location:"header",locationName:"X-Amz-Invocation-Type"},LogType:{location:"header",locationName:"X-Amz-Log-Type"},ClientContext:{location:"header",locationName:"X-Amz-Client-Context"},Payload:{type:"blob"},Qualifier:{location:"querystring",locationName:"Qualifier"}},payload:"Payload"},output:{type:"structure",members:{StatusCode:{location:"statusCode",type:"integer"},FunctionError:{location:"header",locationName:"X-Amz-Function-Error"},LogResult:{location:"header",locationName:"X-Amz-Log-Result"},Payload:{type:"blob"}},payload:"Payload"}},InvokeAsync:{http:{requestUri:"/2014-11-13/functions/{FunctionName}/invoke-async/",responseCode:202},input:{type:"structure",required:["FunctionName","InvokeArgs"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},InvokeArgs:{type:"blob",streaming:!0}},deprecated:!0,payload:"InvokeArgs"},output:{type:"structure",members:{Status:{location:"statusCode",type:"integer"}},deprecated:!0},deprecated:!0},ListAliases:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/aliases",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},FunctionVersion:{location:"querystring",locationName:"FunctionVersion"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Aliases:{type:"list",member:{shape:"Sg"}}}}},ListEventSourceMappings:{http:{method:"GET",requestUri:"/2015-03-31/event-source-mappings/",responseCode:200},input:{type:"structure",members:{EventSourceArn:{location:"querystring",locationName:"EventSourceArn"},FunctionName:{location:"querystring",locationName:"FunctionName"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},EventSourceMappings:{type:"list",member:{shape:"Sm"}}}}},ListFunctions:{http:{method:"GET",requestUri:"/2015-03-31/functions/",responseCode:200},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Functions:{shape:"S23"}}}},ListVersionsByFunction:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/versions",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Versions:{shape:"S23"}}}},PublishVersion:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/versions",responseCode:201},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},CodeSha256:{},Description:{}}},output:{shape:"S15"}},RemovePermission:{http:{method:"DELETE",requestUri:"/2015-03-31/functions/{FunctionName}/policy/{StatementId}",responseCode:204},input:{type:"structure",required:["FunctionName","StatementId"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},StatementId:{location:"uri",locationName:"StatementId"},Qualifier:{location:"querystring",locationName:"Qualifier"}}}},UpdateAlias:{http:{method:"PUT",requestUri:"/2015-03-31/functions/{FunctionName}/aliases/{Name}",responseCode:200},input:{type:"structure",required:["FunctionName","Name"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{location:"uri",locationName:"Name"},FunctionVersion:{},Description:{}}},output:{shape:"Sg"}},UpdateEventSourceMapping:{http:{method:"PUT",requestUri:"/2015-03-31/event-source-mappings/{UUID}",responseCode:202},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"},FunctionName:{},Enabled:{type:"boolean"},BatchSize:{type:"integer"}}},output:{shape:"Sm"}},UpdateFunctionCode:{http:{method:"PUT",requestUri:"/2015-03-31/functions/{FunctionName}/code",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},ZipFile:{type:"blob"},S3Bucket:{},S3Key:{},S3ObjectVersion:{},Publish:{type:"boolean"}}},output:{shape:"S15"}},UpdateFunctionConfiguration:{http:{method:"PUT",requestUri:"/2015-03-31/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Role:{},Handler:{},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},VpcConfig:{shape:"S10"},Runtime:{}}},output:{shape:"S15"}}},shapes:{Sg:{type:"structure",members:{AliasArn:{},Name:{},FunctionVersion:{},Description:{}}},Sm:{type:"structure",members:{UUID:{},BatchSize:{type:"integer"},EventSourceArn:{},FunctionArn:{},LastModified:{type:"timestamp"},LastProcessingResult:{},State:{},StateTransitionReason:{}}},S10:{type:"structure",members:{SubnetIds:{shape:"S11"},SecurityGroupIds:{shape:"S13"}}},S11:{type:"list",member:{}},S13:{type:"list",member:{}},S15:{type:"structure",members:{FunctionName:{},FunctionArn:{},Runtime:{},Role:{},Handler:{},CodeSize:{type:"long"},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},LastModified:{},CodeSha256:{},Version:{},VpcConfig:{type:"structure",members:{SubnetIds:{shape:"S11"},SecurityGroupIds:{shape:"S13"},VpcId:{}}}}},S23:{type:"list",member:{shape:"S15"}}}}},{}],79:[function(e,t,r){t.exports={pagination:{ListEventSourceMappings:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"EventSourceMappings"},ListFunctions:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"Functions"}}}},{}],80:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-03-28",endpointPrefix:"logs",jsonVersion:"1.1",protocol:"json",serviceFullName:"Amazon CloudWatch Logs",signatureVersion:"v4",targetPrefix:"Logs_20140328"},operations:{CancelExportTask:{input:{type:"structure",required:["taskId"],members:{taskId:{}}}},CreateExportTask:{input:{type:"structure",required:["logGroupName","from","to","destination"],members:{taskName:{},logGroupName:{},logStreamNamePrefix:{},from:{type:"long"},to:{type:"long"},destination:{},destinationPrefix:{}}},output:{type:"structure",members:{taskId:{}}}},CreateLogGroup:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{}}}},CreateLogStream:{input:{type:"structure",required:["logGroupName","logStreamName"],members:{logGroupName:{},logStreamName:{}}}},DeleteDestination:{input:{type:"structure",required:["destinationName"],members:{destinationName:{}}}},DeleteLogGroup:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{}}}},DeleteLogStream:{input:{type:"structure",required:["logGroupName","logStreamName"],members:{logGroupName:{},logStreamName:{}}}},DeleteMetricFilter:{input:{type:"structure",required:["logGroupName","filterName"],members:{logGroupName:{},filterName:{}}}},DeleteRetentionPolicy:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{}}}},DeleteSubscriptionFilter:{input:{type:"structure",required:["logGroupName","filterName"],members:{logGroupName:{},filterName:{}}}},DescribeDestinations:{input:{type:"structure",members:{DestinationNamePrefix:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{destinations:{type:"list",member:{shape:"Sq"}},nextToken:{}}}},DescribeExportTasks:{input:{type:"structure",members:{taskId:{},statusCode:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{exportTasks:{type:"list",member:{type:"structure",members:{taskId:{},taskName:{},logGroupName:{},from:{type:"long"},to:{type:"long"},destination:{},destinationPrefix:{},status:{type:"structure",members:{code:{},message:{}}},executionInfo:{type:"structure",members:{creationTime:{type:"long"},completionTime:{type:"long"}}}}}},nextToken:{}}}},DescribeLogGroups:{input:{type:"structure",members:{logGroupNamePrefix:{},nextToken:{}, +limit:{type:"integer"}}},output:{type:"structure",members:{logGroups:{type:"list",member:{type:"structure",members:{logGroupName:{},creationTime:{type:"long"},retentionInDays:{type:"integer"},metricFilterCount:{type:"integer"},arn:{},storedBytes:{type:"long"}}}},nextToken:{}}}},DescribeLogStreams:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},logStreamNamePrefix:{},orderBy:{},descending:{type:"boolean"},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{logStreams:{type:"list",member:{type:"structure",members:{logStreamName:{},creationTime:{type:"long"},firstEventTimestamp:{type:"long"},lastEventTimestamp:{type:"long"},lastIngestionTime:{type:"long"},uploadSequenceToken:{},arn:{},storedBytes:{type:"long"}}}},nextToken:{}}}},DescribeMetricFilters:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},filterNamePrefix:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{metricFilters:{type:"list",member:{type:"structure",members:{filterName:{},filterPattern:{},metricTransformations:{shape:"S1m"},creationTime:{type:"long"}}}},nextToken:{}}}},DescribeSubscriptionFilters:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},filterNamePrefix:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{subscriptionFilters:{type:"list",member:{type:"structure",members:{filterName:{},logGroupName:{},filterPattern:{},destinationArn:{},roleArn:{},creationTime:{type:"long"}}}},nextToken:{}}}},FilterLogEvents:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},logStreamNames:{type:"list",member:{}},startTime:{type:"long"},endTime:{type:"long"},filterPattern:{},nextToken:{},limit:{type:"integer"},interleaved:{type:"boolean"}}},output:{type:"structure",members:{events:{type:"list",member:{type:"structure",members:{logStreamName:{},timestamp:{type:"long"},message:{},ingestionTime:{type:"long"},eventId:{}}}},searchedLogStreams:{type:"list",member:{type:"structure",members:{logStreamName:{},searchedCompletely:{type:"boolean"}}}},nextToken:{}}}},GetLogEvents:{input:{type:"structure",required:["logGroupName","logStreamName"],members:{logGroupName:{},logStreamName:{},startTime:{type:"long"},endTime:{type:"long"},nextToken:{},limit:{type:"integer"},startFromHead:{type:"boolean"}}},output:{type:"structure",members:{events:{type:"list",member:{type:"structure",members:{timestamp:{type:"long"},message:{},ingestionTime:{type:"long"}}}},nextForwardToken:{},nextBackwardToken:{}}}},PutDestination:{input:{type:"structure",required:["destinationName","targetArn","roleArn"],members:{destinationName:{},targetArn:{},roleArn:{}}},output:{type:"structure",members:{destination:{shape:"Sq"}}}},PutDestinationPolicy:{input:{type:"structure",required:["destinationName","accessPolicy"],members:{destinationName:{},accessPolicy:{}}}},PutLogEvents:{input:{type:"structure",required:["logGroupName","logStreamName","logEvents"],members:{logGroupName:{},logStreamName:{},logEvents:{type:"list",member:{type:"structure",required:["timestamp","message"],members:{timestamp:{type:"long"},message:{}}}},sequenceToken:{}}},output:{type:"structure",members:{nextSequenceToken:{},rejectedLogEventsInfo:{type:"structure",members:{tooNewLogEventStartIndex:{type:"integer"},tooOldLogEventEndIndex:{type:"integer"},expiredLogEventEndIndex:{type:"integer"}}}}}},PutMetricFilter:{input:{type:"structure",required:["logGroupName","filterName","filterPattern","metricTransformations"],members:{logGroupName:{},filterName:{},filterPattern:{},metricTransformations:{shape:"S1m"}}}},PutRetentionPolicy:{input:{type:"structure",required:["logGroupName","retentionInDays"],members:{logGroupName:{},retentionInDays:{type:"integer"}}}},PutSubscriptionFilter:{input:{type:"structure",required:["logGroupName","filterName","filterPattern","destinationArn"],members:{logGroupName:{},filterName:{},filterPattern:{},destinationArn:{},roleArn:{}}}},TestMetricFilter:{input:{type:"structure",required:["filterPattern","logEventMessages"],members:{filterPattern:{},logEventMessages:{type:"list",member:{}}}},output:{type:"structure",members:{matches:{type:"list",member:{type:"structure",members:{eventNumber:{type:"long"},eventMessage:{},extractedValues:{type:"map",key:{},value:{}}}}}}}}},shapes:{Sq:{type:"structure",members:{destinationName:{},targetArn:{},roleArn:{},accessPolicy:{},arn:{},creationTime:{type:"long"}}},S1m:{type:"list",member:{type:"structure",required:["metricName","metricNamespace","metricValue"],members:{metricName:{},metricNamespace:{},metricValue:{},defaultValue:{type:"double"}}}}}}},{}],81:[function(e,t,r){t.exports={pagination:{DescribeDestinations:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"destinations"},DescribeLogGroups:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"logGroups"},DescribeLogStreams:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"logStreams"},DescribeMetricFilters:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"metricFilters"},DescribeSubscriptionFilters:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"subscriptionFilters"},FilterLogEvents:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:["events","searchedLogStreams"]},GetLogEvents:{input_token:"nextToken",output_token:"nextForwardToken",limit_key:"limit",result_key:"events"}}}},{}],82:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-12-12",endpointPrefix:"machinelearning",jsonVersion:"1.1",serviceFullName:"Amazon Machine Learning",signatureVersion:"v4",targetPrefix:"AmazonML_20141212",protocol:"json"},operations:{AddTags:{input:{type:"structure",required:["Tags","ResourceId","ResourceType"],members:{Tags:{shape:"S2"},ResourceId:{},ResourceType:{}}},output:{type:"structure",members:{ResourceId:{},ResourceType:{}}}},CreateBatchPrediction:{input:{type:"structure",required:["BatchPredictionId","MLModelId","BatchPredictionDataSourceId","OutputUri"],members:{BatchPredictionId:{},BatchPredictionName:{},MLModelId:{},BatchPredictionDataSourceId:{},OutputUri:{}}},output:{type:"structure",members:{BatchPredictionId:{}}}},CreateDataSourceFromRDS:{input:{type:"structure",required:["DataSourceId","RDSData","RoleARN"],members:{DataSourceId:{},DataSourceName:{},RDSData:{type:"structure",required:["DatabaseInformation","SelectSqlQuery","DatabaseCredentials","S3StagingLocation","ResourceRole","ServiceRole","SubnetId","SecurityGroupIds"],members:{DatabaseInformation:{shape:"Sf"},SelectSqlQuery:{},DatabaseCredentials:{type:"structure",required:["Username","Password"],members:{Username:{},Password:{}}},S3StagingLocation:{},DataRearrangement:{},DataSchema:{},DataSchemaUri:{},ResourceRole:{},ServiceRole:{},SubnetId:{},SecurityGroupIds:{type:"list",member:{}}}},RoleARN:{},ComputeStatistics:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{}}}},CreateDataSourceFromRedshift:{input:{type:"structure",required:["DataSourceId","DataSpec","RoleARN"],members:{DataSourceId:{},DataSourceName:{},DataSpec:{type:"structure",required:["DatabaseInformation","SelectSqlQuery","DatabaseCredentials","S3StagingLocation"],members:{DatabaseInformation:{shape:"Sy"},SelectSqlQuery:{},DatabaseCredentials:{type:"structure",required:["Username","Password"],members:{Username:{},Password:{}}},S3StagingLocation:{},DataRearrangement:{},DataSchema:{},DataSchemaUri:{}}},RoleARN:{},ComputeStatistics:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{}}}},CreateDataSourceFromS3:{input:{type:"structure",required:["DataSourceId","DataSpec"],members:{DataSourceId:{},DataSourceName:{},DataSpec:{type:"structure",required:["DataLocationS3"],members:{DataLocationS3:{},DataRearrangement:{},DataSchema:{},DataSchemaLocationS3:{}}},ComputeStatistics:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{}}}},CreateEvaluation:{input:{type:"structure",required:["EvaluationId","MLModelId","EvaluationDataSourceId"],members:{EvaluationId:{},EvaluationName:{},MLModelId:{},EvaluationDataSourceId:{}}},output:{type:"structure",members:{EvaluationId:{}}}},CreateMLModel:{input:{type:"structure",required:["MLModelId","MLModelType","TrainingDataSourceId"],members:{MLModelId:{},MLModelName:{},MLModelType:{},Parameters:{shape:"S1d"},TrainingDataSourceId:{},Recipe:{},RecipeUri:{}}},output:{type:"structure",members:{MLModelId:{}}}},CreateRealtimeEndpoint:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{}}},output:{type:"structure",members:{MLModelId:{},RealtimeEndpointInfo:{shape:"S1j"}}}},DeleteBatchPrediction:{input:{type:"structure",required:["BatchPredictionId"],members:{BatchPredictionId:{}}},output:{type:"structure",members:{BatchPredictionId:{}}}},DeleteDataSource:{input:{type:"structure",required:["DataSourceId"],members:{DataSourceId:{}}},output:{type:"structure",members:{DataSourceId:{}}}},DeleteEvaluation:{input:{type:"structure",required:["EvaluationId"],members:{EvaluationId:{}}},output:{type:"structure",members:{EvaluationId:{}}}},DeleteMLModel:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{}}},output:{type:"structure",members:{MLModelId:{}}}},DeleteRealtimeEndpoint:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{}}},output:{type:"structure",members:{MLModelId:{},RealtimeEndpointInfo:{shape:"S1j"}}}},DeleteTags:{input:{type:"structure",required:["TagKeys","ResourceId","ResourceType"],members:{TagKeys:{type:"list",member:{}},ResourceId:{},ResourceType:{}}},output:{type:"structure",members:{ResourceId:{},ResourceType:{}}}},DescribeBatchPredictions:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{BatchPredictionId:{},MLModelId:{},BatchPredictionDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},OutputUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},TotalRecordCount:{type:"long"},InvalidRecordCount:{type:"long"}}}},NextToken:{}}}},DescribeDataSources:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{DataSourceId:{},DataLocationS3:{},DataRearrangement:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},DataSizeInBytes:{type:"long"},NumberOfFiles:{type:"long"},Name:{},Status:{},Message:{},RedshiftMetadata:{shape:"S2i"},RDSMetadata:{shape:"S2j"},RoleARN:{},ComputeStatistics:{type:"boolean"},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},NextToken:{}}}},DescribeEvaluations:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{EvaluationId:{},MLModelId:{},EvaluationDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},PerformanceMetrics:{shape:"S2q"},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},NextToken:{}}}},DescribeMLModels:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{MLModelId:{},TrainingDataSourceId:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},SizeInBytes:{type:"long"},EndpointInfo:{shape:"S1j"},TrainingParameters:{shape:"S1d"},InputDataLocationS3:{},Algorithm:{},MLModelType:{},ScoreThreshold:{type:"float"},ScoreThresholdLastUpdatedAt:{type:"timestamp"},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},NextToken:{}}}},DescribeTags:{input:{type:"structure",required:["ResourceId","ResourceType"],members:{ResourceId:{},ResourceType:{}}},output:{type:"structure",members:{ResourceId:{},ResourceType:{},Tags:{shape:"S2"}}}},GetBatchPrediction:{input:{type:"structure",required:["BatchPredictionId"],members:{BatchPredictionId:{}}},output:{type:"structure",members:{BatchPredictionId:{},MLModelId:{},BatchPredictionDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},OutputUri:{},LogUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},TotalRecordCount:{type:"long"},InvalidRecordCount:{type:"long"}}}},GetDataSource:{input:{type:"structure",required:["DataSourceId"],members:{DataSourceId:{},Verbose:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{},DataLocationS3:{},DataRearrangement:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},DataSizeInBytes:{type:"long"},NumberOfFiles:{type:"long"},Name:{},Status:{},LogUri:{},Message:{},RedshiftMetadata:{shape:"S2i"},RDSMetadata:{shape:"S2j"},RoleARN:{},ComputeStatistics:{type:"boolean"},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},DataSourceSchema:{}}}},GetEvaluation:{input:{type:"structure",required:["EvaluationId"],members:{EvaluationId:{}}},output:{type:"structure",members:{EvaluationId:{},MLModelId:{},EvaluationDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},PerformanceMetrics:{shape:"S2q"},LogUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},GetMLModel:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{},Verbose:{type:"boolean"}}},output:{type:"structure",members:{MLModelId:{},TrainingDataSourceId:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},SizeInBytes:{type:"long"},EndpointInfo:{shape:"S1j"},TrainingParameters:{shape:"S1d"},InputDataLocationS3:{},MLModelType:{},ScoreThreshold:{type:"float"},ScoreThresholdLastUpdatedAt:{type:"timestamp"},LogUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},Recipe:{},Schema:{}}}},Predict:{input:{type:"structure",required:["MLModelId","Record","PredictEndpoint"],members:{MLModelId:{},Record:{type:"map",key:{},value:{}},PredictEndpoint:{}}},output:{type:"structure",members:{Prediction:{type:"structure",members:{predictedLabel:{},predictedValue:{type:"float"},predictedScores:{type:"map",key:{},value:{type:"float"}},details:{type:"map",key:{},value:{}}}}}}},UpdateBatchPrediction:{input:{type:"structure",required:["BatchPredictionId","BatchPredictionName"],members:{BatchPredictionId:{},BatchPredictionName:{}}},output:{type:"structure",members:{BatchPredictionId:{}}}},UpdateDataSource:{input:{type:"structure",required:["DataSourceId","DataSourceName"],members:{DataSourceId:{},DataSourceName:{}}},output:{type:"structure",members:{DataSourceId:{}}}},UpdateEvaluation:{input:{type:"structure",required:["EvaluationId","EvaluationName"],members:{EvaluationId:{},EvaluationName:{}}},output:{type:"structure",members:{EvaluationId:{}}}},UpdateMLModel:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{},MLModelName:{},ScoreThreshold:{type:"float"}}},output:{type:"structure",members:{MLModelId:{}}}}},shapes:{S2:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},Sf:{type:"structure",required:["InstanceIdentifier","DatabaseName"],members:{InstanceIdentifier:{},DatabaseName:{}}},Sy:{type:"structure",required:["DatabaseName","ClusterIdentifier"],members:{DatabaseName:{},ClusterIdentifier:{}}},S1d:{type:"map",key:{},value:{}},S1j:{type:"structure",members:{PeakRequestsPerSecond:{type:"integer"},CreatedAt:{type:"timestamp"},EndpointUrl:{},EndpointStatus:{}}},S2i:{type:"structure",members:{RedshiftDatabase:{shape:"Sy"},DatabaseUserName:{},SelectSqlQuery:{}}},S2j:{type:"structure",members:{Database:{shape:"Sf"},DatabaseUserName:{},SelectSqlQuery:{},ResourceRole:{},ServiceRole:{},DataPipelineId:{}}},S2q:{type:"structure",members:{Properties:{type:"map",key:{},value:{}}}}},examples:{}}},{}],83:[function(e,t,r){t.exports={pagination:{DescribeBatchPredictions:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"},DescribeDataSources:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"},DescribeEvaluations:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"},DescribeMLModels:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"}}}},{}],84:[function(e,t,r){t.exports={version:2,waiters:{DataSourceAvailable:{delay:30,operation:"DescribeDataSources",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]},MLModelAvailable:{delay:30,operation:"DescribeMLModels",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]},EvaluationAvailable:{delay:30,operation:"DescribeEvaluations",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]},BatchPredictionAvailable:{delay:30,operation:"DescribeBatchPredictions",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]}}}},{}],85:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-07-01",endpointPrefix:"marketplacecommerceanalytics",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS Marketplace Commerce Analytics",signatureVersion:"v4",signingName:"marketplacecommerceanalytics",targetPrefix:"MarketplaceCommerceAnalytics20150701"},operations:{GenerateDataSet:{input:{type:"structure",required:["dataSetType","dataSetPublicationDate","roleNameArn","destinationS3BucketName","snsTopicArn"],members:{dataSetType:{},dataSetPublicationDate:{type:"timestamp"},roleNameArn:{},destinationS3BucketName:{},destinationS3Prefix:{},snsTopicArn:{},customerDefinedValues:{shape:"S8"}}},output:{type:"structure",members:{dataSetRequestId:{}}}},StartSupportDataExport:{input:{type:"structure",required:["dataSetType","fromDate","roleNameArn","destinationS3BucketName","snsTopicArn"],members:{dataSetType:{},fromDate:{type:"timestamp"},roleNameArn:{},destinationS3BucketName:{},destinationS3Prefix:{},snsTopicArn:{},customerDefinedValues:{shape:"S8"}}},output:{type:"structure",members:{dataSetRequestId:{}}}}},shapes:{S8:{type:"map",key:{},value:{}}}}},{}],86:[function(e,t,r){t.exports={acm:{name:"ACM",cors:!0},apigateway:{name:"APIGateway",cors:!0},applicationautoscaling:{prefix:"application-autoscaling",name:"ApplicationAutoScaling",cors:!0},autoscaling:{name:"AutoScaling",cors:!0},cloudformation:{name:"CloudFormation",cors:!0},cloudfront:{name:"CloudFront",versions:["2013-05-12*","2013-11-11*","2014-05-31*","2014-10-21*","2014-11-06*","2015-04-17*","2015-07-27*","2015-09-17*","2016-01-13*","2016-01-28*","2016-08-01*","2016-08-20*"],cors:!0},cloudhsm:{name:"CloudHSM",cors:!0},cloudsearch:{name:"CloudSearch"},cloudsearchdomain:{name:"CloudSearchDomain"},cloudtrail:{name:"CloudTrail",cors:!0},cloudwatch:{prefix:"monitoring",name:"CloudWatch",cors:!0},cloudwatchevents:{prefix:"events",name:"CloudWatchEvents",versions:["2014-02-03*"],cors:!0},cloudwatchlogs:{prefix:"logs",name:"CloudWatchLogs",cors:!0},codecommit:{name:"CodeCommit",cors:!0},codedeploy:{name:"CodeDeploy",cors:!0},codepipeline:{name:"CodePipeline",cors:!0},cognitoidentity:{prefix:"cognito-identity",name:"CognitoIdentity",cors:!0},cognitoidentityserviceprovider:{prefix:"cognito-idp",name:"CognitoIdentityServiceProvider",cors:!0},cognitosync:{prefix:"cognito-sync",name:"CognitoSync",cors:!0},configservice:{prefix:"config",name:"ConfigService",cors:!0},datapipeline:{name:"DataPipeline"},devicefarm:{name:"DeviceFarm",cors:!0},directconnect:{name:"DirectConnect",cors:!0},directoryservice:{prefix:"ds",name:"DirectoryService"},discovery:{name:"Discovery"},dms:{name:"DMS"},dynamodb:{name:"DynamoDB",cors:!0},dynamodbstreams:{prefix:"streams.dynamodb",name:"DynamoDBStreams",cors:!0},ec2:{name:"EC2",versions:["2013-06-15*","2013-10-15*","2014-02-01*","2014-05-01*","2014-06-15*","2014-09-01*","2014-10-01*","2015-03-01*","2015-04-15*","2015-10-01*","2016-04-01*"],cors:!0},ecr:{name:"ECR",cors:!0},ecs:{name:"ECS",cors:!0},efs:{prefix:"elasticfilesystem",name:"EFS"},elasticache:{name:"ElastiCache",versions:["2012-11-15*","2014-03-24*","2014-07-15*","2014-09-30*"],cors:!0},elasticbeanstalk:{name:"ElasticBeanstalk",cors:!0},elb:{prefix:"elasticloadbalancing",name:"ELB",cors:!0},elbv2:{prefix:"elasticloadbalancingv2",name:"ELBv2",cors:!0},emr:{prefix:"elasticmapreduce",name:"EMR",cors:!0},es:{name:"ES"},elastictranscoder:{name:"ElasticTranscoder",cors:!0},firehose:{name:"Firehose",cors:!0},gamelift:{name:"GameLift",cors:!0},glacier:{name:"Glacier"},iam:{name:"IAM"},importexport:{name:"ImportExport"},inspector:{name:"Inspector",versions:["2015-08-18*"],cors:!0},iot:{name:"Iot",cors:!0},iotdata:{prefix:"iot-data",name:"IotData",cors:!0},kinesis:{name:"Kinesis",cors:!0},kinesisanalytics:{name:"KinesisAnalytics"},kms:{name:"KMS",cors:!0},lambda:{name:"Lambda",cors:!0},machinelearning:{name:"MachineLearning",cors:!0},marketplacecommerceanalytics:{name:"MarketplaceCommerceAnalytics",cors:!0},marketplacemetering:{prefix:"meteringmarketplace",name:"MarketplaceMetering"},mobileanalytics:{name:"MobileAnalytics",cors:!0},opsworks:{name:"OpsWorks",cors:!0},rds:{name:"RDS",versions:["2014-09-01*"],cors:!0},redshift:{name:"Redshift",cors:!0},route53:{name:"Route53",cors:!0},route53domains:{name:"Route53Domains",cors:!0},s3:{name:"S3",dualstackAvailable:!0,cors:!0},servicecatalog:{name:"ServiceCatalog",cors:!0},ses:{prefix:"email",name:"SES",cors:!0},simpledb:{prefix:"sdb",name:"SimpleDB"},snowball:{name:"Snowball"},sns:{name:"SNS",cors:!0},sqs:{name:"SQS",cors:!0},ssm:{name:"SSM",cors:!0},storagegateway:{name:"StorageGateway",cors:!0},sts:{name:"STS",cors:!0},support:{name:"Support"},swf:{name:"SWF"},waf:{name:"WAF",cors:!0},workspaces:{name:"WorkSpaces"}}},{}],87:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-06-05",endpointPrefix:"mobileanalytics",serviceFullName:"Amazon Mobile Analytics",signatureVersion:"v4",protocol:"rest-json"},operations:{PutEvents:{http:{requestUri:"/2014-06-05/events",responseCode:202},input:{type:"structure",required:["events","clientContext"],members:{events:{type:"list",member:{type:"structure",required:["eventType","timestamp"],members:{eventType:{},timestamp:{},session:{type:"structure",members:{id:{},duration:{type:"long"},startTimestamp:{},stopTimestamp:{}}},version:{},attributes:{type:"map",key:{},value:{}},metrics:{type:"map",key:{},value:{type:"double"}}}}},clientContext:{location:"header",locationName:"x-amz-Client-Context"},clientContextEncoding:{location:"header",locationName:"x-amz-Client-Context-Encoding"}}}}},shapes:{}}},{}],88:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-08-01",endpointPrefix:"monitoring",protocol:"query",serviceAbbreviation:"CloudWatch",serviceFullName:"Amazon CloudWatch",signatureVersion:"v4",xmlNamespace:"http://monitoring.amazonaws.com/doc/2010-08-01/"},operations:{DeleteAlarms:{input:{type:"structure",required:["AlarmNames"],members:{AlarmNames:{shape:"S2"}}}},DescribeAlarmHistory:{input:{type:"structure",members:{AlarmName:{},HistoryItemType:{},StartDate:{type:"timestamp"},EndDate:{type:"timestamp"},MaxRecords:{type:"integer"},NextToken:{}}},output:{resultWrapper:"DescribeAlarmHistoryResult",type:"structure",members:{AlarmHistoryItems:{type:"list",member:{type:"structure",members:{AlarmName:{},Timestamp:{type:"timestamp"},HistoryItemType:{},HistorySummary:{},HistoryData:{}}}},NextToken:{}}}},DescribeAlarms:{input:{type:"structure",members:{AlarmNames:{shape:"S2"},AlarmNamePrefix:{},StateValue:{},ActionPrefix:{},MaxRecords:{type:"integer"},NextToken:{}}},output:{resultWrapper:"DescribeAlarmsResult",type:"structure",members:{MetricAlarms:{shape:"Sj"},NextToken:{}}}},DescribeAlarmsForMetric:{input:{type:"structure",required:["MetricName","Namespace"],members:{MetricName:{},Namespace:{},Statistic:{},Dimensions:{shape:"Sv"},Period:{type:"integer"},Unit:{}}},output:{resultWrapper:"DescribeAlarmsForMetricResult",type:"structure",members:{MetricAlarms:{shape:"Sj"}}}},DisableAlarmActions:{input:{type:"structure",required:["AlarmNames"],members:{AlarmNames:{shape:"S2"}}}},EnableAlarmActions:{input:{type:"structure",required:["AlarmNames"],members:{AlarmNames:{shape:"S2"}}}},GetMetricStatistics:{input:{type:"structure",required:["Namespace","MetricName","StartTime","EndTime","Period","Statistics"],members:{Namespace:{},MetricName:{},Dimensions:{shape:"Sv"},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Period:{type:"integer"},Statistics:{type:"list",member:{}},Unit:{}}},output:{resultWrapper:"GetMetricStatisticsResult",type:"structure",members:{Label:{},Datapoints:{type:"list",member:{type:"structure",members:{Timestamp:{type:"timestamp"},SampleCount:{type:"double"},Average:{type:"double"},Sum:{type:"double"},Minimum:{type:"double"},Maximum:{type:"double"},Unit:{}},xmlOrder:["Timestamp","SampleCount","Average","Sum","Minimum","Maximum","Unit"]}}}}},ListMetrics:{input:{type:"structure",members:{Namespace:{},MetricName:{},Dimensions:{type:"list",member:{type:"structure",required:["Name"],members:{Name:{},Value:{}}}},NextToken:{}}},output:{resultWrapper:"ListMetricsResult",type:"structure",members:{Metrics:{type:"list",member:{type:"structure",members:{Namespace:{},MetricName:{},Dimensions:{shape:"Sv"}},xmlOrder:["Namespace","MetricName","Dimensions"]}},NextToken:{}},xmlOrder:["Metrics","NextToken"]}},PutMetricAlarm:{input:{type:"structure",required:["AlarmName","MetricName","Namespace","Statistic","Period","EvaluationPeriods","Threshold","ComparisonOperator"],members:{AlarmName:{},AlarmDescription:{},ActionsEnabled:{type:"boolean"},OKActions:{shape:"So"},AlarmActions:{shape:"So"},InsufficientDataActions:{shape:"So"},MetricName:{},Namespace:{},Statistic:{},Dimensions:{shape:"Sv"},Period:{type:"integer"},Unit:{},EvaluationPeriods:{type:"integer"},Threshold:{type:"double"},ComparisonOperator:{}}}},PutMetricData:{input:{type:"structure",required:["Namespace","MetricData"],members:{Namespace:{},MetricData:{type:"list",member:{type:"structure",required:["MetricName"],members:{MetricName:{},Dimensions:{shape:"Sv"},Timestamp:{type:"timestamp"},Value:{type:"double"},StatisticValues:{type:"structure",required:["SampleCount","Sum","Minimum","Maximum"],members:{SampleCount:{type:"double"},Sum:{type:"double"},Minimum:{type:"double"},Maximum:{type:"double"}}},Unit:{}}}}}}},SetAlarmState:{input:{type:"structure",required:["AlarmName","StateValue","StateReason"],members:{AlarmName:{},StateValue:{},StateReason:{},StateReasonData:{}}}}},shapes:{S2:{type:"list",member:{}},Sj:{type:"list",member:{type:"structure",members:{AlarmName:{},AlarmArn:{},AlarmDescription:{},AlarmConfigurationUpdatedTimestamp:{type:"timestamp"},ActionsEnabled:{type:"boolean"},OKActions:{shape:"So"},AlarmActions:{shape:"So"},InsufficientDataActions:{shape:"So"},StateValue:{},StateReason:{},StateReasonData:{},StateUpdatedTimestamp:{type:"timestamp"},MetricName:{},Namespace:{},Statistic:{},Dimensions:{shape:"Sv"},Period:{type:"integer"},Unit:{},EvaluationPeriods:{type:"integer"},Threshold:{type:"double"},ComparisonOperator:{}},xmlOrder:["AlarmName","AlarmArn","AlarmDescription","AlarmConfigurationUpdatedTimestamp","ActionsEnabled","OKActions","AlarmActions","InsufficientDataActions","StateValue","StateReason","StateReasonData","StateUpdatedTimestamp","MetricName","Namespace","Statistic","Dimensions","Period","Unit","EvaluationPeriods","Threshold","ComparisonOperator"]}},So:{type:"list",member:{}},Sv:{type:"list",member:{type:"structure",required:["Name","Value"],members:{Name:{},Value:{}},xmlOrder:["Name","Value"]}}}}},{}],89:[function(e,t,r){t.exports={pagination:{DescribeAlarmHistory:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxRecords",result_key:"AlarmHistoryItems"},DescribeAlarms:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxRecords",result_key:"MetricAlarms"},DescribeAlarmsForMetric:{result_key:"MetricAlarms"},ListMetrics:{input_token:"NextToken",output_token:"NextToken",result_key:"Metrics"}}}},{}],90:[function(e,t,r){t.exports={version:2,waiters:{AlarmExists:{delay:5,maxAttempts:40,operation:"DescribeAlarms",acceptors:[{matcher:"path",expected:!0,argument:"length(MetricAlarms[]) > `0`",state:"success"}]}}}},{}],91:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-02-18",endpointPrefix:"opsworks",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS OpsWorks",signatureVersion:"v4",targetPrefix:"OpsWorks_20130218"},operations:{AssignInstance:{input:{type:"structure",required:["InstanceId","LayerIds"],members:{InstanceId:{},LayerIds:{shape:"S3"}}}},AssignVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{},InstanceId:{}}}},AssociateElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{},InstanceId:{}}}},AttachElasticLoadBalancer:{input:{type:"structure",required:["ElasticLoadBalancerName","LayerId"],members:{ElasticLoadBalancerName:{},LayerId:{}}}},CloneStack:{input:{type:"structure",required:["SourceStackId","ServiceRoleArn"],members:{SourceStackId:{},Name:{},Region:{},VpcId:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},UseOpsworksSecurityGroups:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},ClonePermissions:{type:"boolean"},CloneAppIds:{shape:"S3"},DefaultRootDeviceType:{},AgentVersion:{}}},output:{type:"structure",members:{StackId:{}}}},CreateApp:{input:{type:"structure",required:["StackId","Name","Type"],members:{StackId:{},Shortname:{},Name:{},Description:{},DataSources:{shape:"Si"},Type:{},AppSource:{shape:"Sd"},Domains:{shape:"S3"},EnableSsl:{type:"boolean"},SslConfiguration:{shape:"Sl"},Attributes:{shape:"Sm"},Environment:{shape:"So"}}},output:{type:"structure",members:{AppId:{}}}},CreateDeployment:{input:{type:"structure",required:["StackId","Command"],members:{StackId:{},AppId:{},InstanceIds:{shape:"S3"},LayerIds:{shape:"S3"},Command:{shape:"Ss"},Comment:{},CustomJson:{}}},output:{type:"structure",members:{DeploymentId:{}}}},CreateInstance:{input:{type:"structure",required:["StackId","LayerIds","InstanceType"],members:{StackId:{},LayerIds:{shape:"S3"},InstanceType:{},AutoScalingType:{},Hostname:{},Os:{},AmiId:{},SshKeyName:{},AvailabilityZone:{},VirtualizationType:{},SubnetId:{},Architecture:{},RootDeviceType:{},BlockDeviceMappings:{shape:"Sz"},InstallUpdatesOnBoot:{type:"boolean"},EbsOptimized:{type:"boolean"},AgentVersion:{},Tenancy:{}}},output:{type:"structure",members:{InstanceId:{}}}},CreateLayer:{input:{type:"structure",required:["StackId","Type","Name","Shortname"],members:{StackId:{},Type:{}, +Name:{},Shortname:{},Attributes:{shape:"S17"},CustomInstanceProfileArn:{},CustomJson:{},CustomSecurityGroupIds:{shape:"S3"},Packages:{shape:"S3"},VolumeConfigurations:{shape:"S19"},EnableAutoHealing:{type:"boolean"},AutoAssignElasticIps:{type:"boolean"},AutoAssignPublicIps:{type:"boolean"},CustomRecipes:{shape:"S1b"},InstallUpdatesOnBoot:{type:"boolean"},UseEbsOptimizedInstances:{type:"boolean"},LifecycleEventConfiguration:{shape:"S1c"}}},output:{type:"structure",members:{LayerId:{}}}},CreateStack:{input:{type:"structure",required:["Name","Region","ServiceRoleArn","DefaultInstanceProfileArn"],members:{Name:{},Region:{},VpcId:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},UseOpsworksSecurityGroups:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},DefaultRootDeviceType:{},AgentVersion:{}}},output:{type:"structure",members:{StackId:{}}}},CreateUserProfile:{input:{type:"structure",required:["IamUserArn"],members:{IamUserArn:{},SshUsername:{},SshPublicKey:{},AllowSelfManagement:{type:"boolean"}}},output:{type:"structure",members:{IamUserArn:{}}}},DeleteApp:{input:{type:"structure",required:["AppId"],members:{AppId:{}}}},DeleteInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},DeleteElasticIp:{type:"boolean"},DeleteVolumes:{type:"boolean"}}}},DeleteLayer:{input:{type:"structure",required:["LayerId"],members:{LayerId:{}}}},DeleteStack:{input:{type:"structure",required:["StackId"],members:{StackId:{}}}},DeleteUserProfile:{input:{type:"structure",required:["IamUserArn"],members:{IamUserArn:{}}}},DeregisterEcsCluster:{input:{type:"structure",required:["EcsClusterArn"],members:{EcsClusterArn:{}}}},DeregisterElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{}}}},DeregisterInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},DeregisterRdsDbInstance:{input:{type:"structure",required:["RdsDbInstanceArn"],members:{RdsDbInstanceArn:{}}}},DeregisterVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{}}}},DescribeAgentVersions:{input:{type:"structure",members:{StackId:{},ConfigurationManager:{shape:"Sa"}}},output:{type:"structure",members:{AgentVersions:{type:"list",member:{type:"structure",members:{Version:{},ConfigurationManager:{shape:"Sa"}}}}}}},DescribeApps:{input:{type:"structure",members:{StackId:{},AppIds:{shape:"S3"}}},output:{type:"structure",members:{Apps:{type:"list",member:{type:"structure",members:{AppId:{},StackId:{},Shortname:{},Name:{},Description:{},DataSources:{shape:"Si"},Type:{},AppSource:{shape:"Sd"},Domains:{shape:"S3"},EnableSsl:{type:"boolean"},SslConfiguration:{shape:"Sl"},Attributes:{shape:"Sm"},CreatedAt:{},Environment:{shape:"So"}}}}}}},DescribeCommands:{input:{type:"structure",members:{DeploymentId:{},InstanceId:{},CommandIds:{shape:"S3"}}},output:{type:"structure",members:{Commands:{type:"list",member:{type:"structure",members:{CommandId:{},InstanceId:{},DeploymentId:{},CreatedAt:{},AcknowledgedAt:{},CompletedAt:{},Status:{},ExitCode:{type:"integer"},LogUrl:{},Type:{}}}}}}},DescribeDeployments:{input:{type:"structure",members:{StackId:{},AppId:{},DeploymentIds:{shape:"S3"}}},output:{type:"structure",members:{Deployments:{type:"list",member:{type:"structure",members:{DeploymentId:{},StackId:{},AppId:{},CreatedAt:{},CompletedAt:{},Duration:{type:"integer"},IamUserArn:{},Comment:{},Command:{shape:"Ss"},Status:{},CustomJson:{},InstanceIds:{shape:"S3"}}}}}}},DescribeEcsClusters:{input:{type:"structure",members:{EcsClusterArns:{shape:"S3"},StackId:{},NextToken:{},MaxResults:{type:"integer"}}},output:{type:"structure",members:{EcsClusters:{type:"list",member:{type:"structure",members:{EcsClusterArn:{},EcsClusterName:{},StackId:{},RegisteredAt:{}}}},NextToken:{}}}},DescribeElasticIps:{input:{type:"structure",members:{InstanceId:{},StackId:{},Ips:{shape:"S3"}}},output:{type:"structure",members:{ElasticIps:{type:"list",member:{type:"structure",members:{Ip:{},Name:{},Domain:{},Region:{},InstanceId:{}}}}}}},DescribeElasticLoadBalancers:{input:{type:"structure",members:{StackId:{},LayerIds:{shape:"S3"}}},output:{type:"structure",members:{ElasticLoadBalancers:{type:"list",member:{type:"structure",members:{ElasticLoadBalancerName:{},Region:{},DnsName:{},StackId:{},LayerId:{},VpcId:{},AvailabilityZones:{shape:"S3"},SubnetIds:{shape:"S3"},Ec2InstanceIds:{shape:"S3"}}}}}}},DescribeInstances:{input:{type:"structure",members:{StackId:{},LayerId:{},InstanceIds:{shape:"S3"}}},output:{type:"structure",members:{Instances:{type:"list",member:{type:"structure",members:{AgentVersion:{},AmiId:{},Architecture:{},AutoScalingType:{},AvailabilityZone:{},BlockDeviceMappings:{shape:"Sz"},CreatedAt:{},EbsOptimized:{type:"boolean"},Ec2InstanceId:{},EcsClusterArn:{},EcsContainerInstanceArn:{},ElasticIp:{},Hostname:{},InfrastructureClass:{},InstallUpdatesOnBoot:{type:"boolean"},InstanceId:{},InstanceProfileArn:{},InstanceType:{},LastServiceErrorId:{},LayerIds:{shape:"S3"},Os:{},Platform:{},PrivateDns:{},PrivateIp:{},PublicDns:{},PublicIp:{},RegisteredBy:{},ReportedAgentVersion:{},ReportedOs:{type:"structure",members:{Family:{},Name:{},Version:{}}},RootDeviceType:{},RootDeviceVolumeId:{},SecurityGroupIds:{shape:"S3"},SshHostDsaKeyFingerprint:{},SshHostRsaKeyFingerprint:{},SshKeyName:{},StackId:{},Status:{},SubnetId:{},Tenancy:{},VirtualizationType:{}}}}}}},DescribeLayers:{input:{type:"structure",members:{StackId:{},LayerIds:{shape:"S3"}}},output:{type:"structure",members:{Layers:{type:"list",member:{type:"structure",members:{StackId:{},LayerId:{},Type:{},Name:{},Shortname:{},Attributes:{shape:"S17"},CustomInstanceProfileArn:{},CustomJson:{},CustomSecurityGroupIds:{shape:"S3"},DefaultSecurityGroupNames:{shape:"S3"},Packages:{shape:"S3"},VolumeConfigurations:{shape:"S19"},EnableAutoHealing:{type:"boolean"},AutoAssignElasticIps:{type:"boolean"},AutoAssignPublicIps:{type:"boolean"},DefaultRecipes:{shape:"S1b"},CustomRecipes:{shape:"S1b"},CreatedAt:{},InstallUpdatesOnBoot:{type:"boolean"},UseEbsOptimizedInstances:{type:"boolean"},LifecycleEventConfiguration:{shape:"S1c"}}}}}}},DescribeLoadBasedAutoScaling:{input:{type:"structure",required:["LayerIds"],members:{LayerIds:{shape:"S3"}}},output:{type:"structure",members:{LoadBasedAutoScalingConfigurations:{type:"list",member:{type:"structure",members:{LayerId:{},Enable:{type:"boolean"},UpScaling:{shape:"S30"},DownScaling:{shape:"S30"}}}}}}},DescribeMyUserProfile:{output:{type:"structure",members:{UserProfile:{type:"structure",members:{IamUserArn:{},Name:{},SshUsername:{},SshPublicKey:{}}}}}},DescribePermissions:{input:{type:"structure",members:{IamUserArn:{},StackId:{}}},output:{type:"structure",members:{Permissions:{type:"list",member:{type:"structure",members:{StackId:{},IamUserArn:{},AllowSsh:{type:"boolean"},AllowSudo:{type:"boolean"},Level:{}}}}}}},DescribeRaidArrays:{input:{type:"structure",members:{InstanceId:{},StackId:{},RaidArrayIds:{shape:"S3"}}},output:{type:"structure",members:{RaidArrays:{type:"list",member:{type:"structure",members:{RaidArrayId:{},InstanceId:{},Name:{},RaidLevel:{type:"integer"},NumberOfDisks:{type:"integer"},Size:{type:"integer"},Device:{},MountPoint:{},AvailabilityZone:{},CreatedAt:{},StackId:{},VolumeType:{},Iops:{type:"integer"}}}}}}},DescribeRdsDbInstances:{input:{type:"structure",required:["StackId"],members:{StackId:{},RdsDbInstanceArns:{shape:"S3"}}},output:{type:"structure",members:{RdsDbInstances:{type:"list",member:{type:"structure",members:{RdsDbInstanceArn:{},DbInstanceIdentifier:{},DbUser:{},DbPassword:{},Region:{},Address:{},Engine:{},StackId:{},MissingOnRds:{type:"boolean"}}}}}}},DescribeServiceErrors:{input:{type:"structure",members:{StackId:{},InstanceId:{},ServiceErrorIds:{shape:"S3"}}},output:{type:"structure",members:{ServiceErrors:{type:"list",member:{type:"structure",members:{ServiceErrorId:{},StackId:{},InstanceId:{},Type:{},Message:{},CreatedAt:{}}}}}}},DescribeStackProvisioningParameters:{input:{type:"structure",required:["StackId"],members:{StackId:{}}},output:{type:"structure",members:{AgentInstallerUrl:{},Parameters:{type:"map",key:{},value:{}}}}},DescribeStackSummary:{input:{type:"structure",required:["StackId"],members:{StackId:{}}},output:{type:"structure",members:{StackSummary:{type:"structure",members:{StackId:{},Name:{},Arn:{},LayersCount:{type:"integer"},AppsCount:{type:"integer"},InstancesCount:{type:"structure",members:{Assigning:{type:"integer"},Booting:{type:"integer"},ConnectionLost:{type:"integer"},Deregistering:{type:"integer"},Online:{type:"integer"},Pending:{type:"integer"},Rebooting:{type:"integer"},Registered:{type:"integer"},Registering:{type:"integer"},Requested:{type:"integer"},RunningSetup:{type:"integer"},SetupFailed:{type:"integer"},ShuttingDown:{type:"integer"},StartFailed:{type:"integer"},Stopped:{type:"integer"},Stopping:{type:"integer"},Terminated:{type:"integer"},Terminating:{type:"integer"},Unassigning:{type:"integer"}}}}}}}},DescribeStacks:{input:{type:"structure",members:{StackIds:{shape:"S3"}}},output:{type:"structure",members:{Stacks:{type:"list",member:{type:"structure",members:{StackId:{},Name:{},Arn:{},Region:{},VpcId:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},UseOpsworksSecurityGroups:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},CreatedAt:{},DefaultRootDeviceType:{},AgentVersion:{}}}}}}},DescribeTimeBasedAutoScaling:{input:{type:"structure",required:["InstanceIds"],members:{InstanceIds:{shape:"S3"}}},output:{type:"structure",members:{TimeBasedAutoScalingConfigurations:{type:"list",member:{type:"structure",members:{InstanceId:{},AutoScalingSchedule:{shape:"S40"}}}}}}},DescribeUserProfiles:{input:{type:"structure",members:{IamUserArns:{shape:"S3"}}},output:{type:"structure",members:{UserProfiles:{type:"list",member:{type:"structure",members:{IamUserArn:{},Name:{},SshUsername:{},SshPublicKey:{},AllowSelfManagement:{type:"boolean"}}}}}}},DescribeVolumes:{input:{type:"structure",members:{InstanceId:{},StackId:{},RaidArrayId:{},VolumeIds:{shape:"S3"}}},output:{type:"structure",members:{Volumes:{type:"list",member:{type:"structure",members:{VolumeId:{},Ec2VolumeId:{},Name:{},RaidArrayId:{},InstanceId:{},Status:{},Size:{type:"integer"},Device:{},MountPoint:{},Region:{},AvailabilityZone:{},VolumeType:{},Iops:{type:"integer"}}}}}}},DetachElasticLoadBalancer:{input:{type:"structure",required:["ElasticLoadBalancerName","LayerId"],members:{ElasticLoadBalancerName:{},LayerId:{}}}},DisassociateElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{}}}},GetHostnameSuggestion:{input:{type:"structure",required:["LayerId"],members:{LayerId:{}}},output:{type:"structure",members:{LayerId:{},Hostname:{}}}},GrantAccess:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},ValidForInMinutes:{type:"integer"}}},output:{type:"structure",members:{TemporaryCredential:{type:"structure",members:{Username:{},Password:{},ValidForInMinutes:{type:"integer"},InstanceId:{}}}}}},RebootInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},RegisterEcsCluster:{input:{type:"structure",required:["EcsClusterArn","StackId"],members:{EcsClusterArn:{},StackId:{}}},output:{type:"structure",members:{EcsClusterArn:{}}}},RegisterElasticIp:{input:{type:"structure",required:["ElasticIp","StackId"],members:{ElasticIp:{},StackId:{}}},output:{type:"structure",members:{ElasticIp:{}}}},RegisterInstance:{input:{type:"structure",required:["StackId"],members:{StackId:{},Hostname:{},PublicIp:{},PrivateIp:{},RsaPublicKey:{},RsaPublicKeyFingerprint:{},InstanceIdentity:{type:"structure",members:{Document:{},Signature:{}}}}},output:{type:"structure",members:{InstanceId:{}}}},RegisterRdsDbInstance:{input:{type:"structure",required:["StackId","RdsDbInstanceArn","DbUser","DbPassword"],members:{StackId:{},RdsDbInstanceArn:{},DbUser:{},DbPassword:{}}}},RegisterVolume:{input:{type:"structure",required:["StackId"],members:{Ec2VolumeId:{},StackId:{}}},output:{type:"structure",members:{VolumeId:{}}}},SetLoadBasedAutoScaling:{input:{type:"structure",required:["LayerId"],members:{LayerId:{},Enable:{type:"boolean"},UpScaling:{shape:"S30"},DownScaling:{shape:"S30"}}}},SetPermission:{input:{type:"structure",required:["StackId","IamUserArn"],members:{StackId:{},IamUserArn:{},AllowSsh:{type:"boolean"},AllowSudo:{type:"boolean"},Level:{}}}},SetTimeBasedAutoScaling:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},AutoScalingSchedule:{shape:"S40"}}}},StartInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},StartStack:{input:{type:"structure",required:["StackId"],members:{StackId:{}}}},StopInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},StopStack:{input:{type:"structure",required:["StackId"],members:{StackId:{}}}},UnassignInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},UnassignVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{}}}},UpdateApp:{input:{type:"structure",required:["AppId"],members:{AppId:{},Name:{},Description:{},DataSources:{shape:"Si"},Type:{},AppSource:{shape:"Sd"},Domains:{shape:"S3"},EnableSsl:{type:"boolean"},SslConfiguration:{shape:"Sl"},Attributes:{shape:"Sm"},Environment:{shape:"So"}}}},UpdateElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{},Name:{}}}},UpdateInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},LayerIds:{shape:"S3"},InstanceType:{},AutoScalingType:{},Hostname:{},Os:{},AmiId:{},SshKeyName:{},Architecture:{},InstallUpdatesOnBoot:{type:"boolean"},EbsOptimized:{type:"boolean"},AgentVersion:{}}}},UpdateLayer:{input:{type:"structure",required:["LayerId"],members:{LayerId:{},Name:{},Shortname:{},Attributes:{shape:"S17"},CustomInstanceProfileArn:{},CustomJson:{},CustomSecurityGroupIds:{shape:"S3"},Packages:{shape:"S3"},VolumeConfigurations:{shape:"S19"},EnableAutoHealing:{type:"boolean"},AutoAssignElasticIps:{type:"boolean"},AutoAssignPublicIps:{type:"boolean"},CustomRecipes:{shape:"S1b"},InstallUpdatesOnBoot:{type:"boolean"},UseEbsOptimizedInstances:{type:"boolean"},LifecycleEventConfiguration:{shape:"S1c"}}}},UpdateMyUserProfile:{input:{type:"structure",members:{SshPublicKey:{}}}},UpdateRdsDbInstance:{input:{type:"structure",required:["RdsDbInstanceArn"],members:{RdsDbInstanceArn:{},DbUser:{},DbPassword:{}}}},UpdateStack:{input:{type:"structure",required:["StackId"],members:{StackId:{},Name:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},DefaultRootDeviceType:{},UseOpsworksSecurityGroups:{type:"boolean"},AgentVersion:{}}}},UpdateUserProfile:{input:{type:"structure",required:["IamUserArn"],members:{IamUserArn:{},SshUsername:{},SshPublicKey:{},AllowSelfManagement:{type:"boolean"}}}},UpdateVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{},Name:{},MountPoint:{}}}}},shapes:{S3:{type:"list",member:{}},S8:{type:"map",key:{},value:{}},Sa:{type:"structure",members:{Name:{},Version:{}}},Sb:{type:"structure",members:{ManageBerkshelf:{type:"boolean"},BerkshelfVersion:{}}},Sd:{type:"structure",members:{Type:{},Url:{},Username:{},Password:{},SshKey:{},Revision:{}}},Si:{type:"list",member:{type:"structure",members:{Type:{},Arn:{},DatabaseName:{}}}},Sl:{type:"structure",required:["Certificate","PrivateKey"],members:{Certificate:{},PrivateKey:{},Chain:{}}},Sm:{type:"map",key:{},value:{}},So:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{},Secure:{type:"boolean"}}}},Ss:{type:"structure",required:["Name"],members:{Name:{},Args:{type:"map",key:{},value:{shape:"S3"}}}},Sz:{type:"list",member:{type:"structure",members:{DeviceName:{},NoDevice:{},VirtualName:{},Ebs:{type:"structure",members:{SnapshotId:{},Iops:{type:"integer"},VolumeSize:{type:"integer"},VolumeType:{},DeleteOnTermination:{type:"boolean"}}}}}},S17:{type:"map",key:{},value:{}},S19:{type:"list",member:{type:"structure",required:["MountPoint","NumberOfDisks","Size"],members:{MountPoint:{},RaidLevel:{type:"integer"},NumberOfDisks:{type:"integer"},Size:{type:"integer"},VolumeType:{},Iops:{type:"integer"}}}},S1b:{type:"structure",members:{Setup:{shape:"S3"},Configure:{shape:"S3"},Deploy:{shape:"S3"},Undeploy:{shape:"S3"},Shutdown:{shape:"S3"}}},S1c:{type:"structure",members:{Shutdown:{type:"structure",members:{ExecutionTimeout:{type:"integer"},DelayUntilElbConnectionsDrained:{type:"boolean"}}}}},S30:{type:"structure",members:{InstanceCount:{type:"integer"},ThresholdsWaitTime:{type:"integer"},IgnoreMetricsTime:{type:"integer"},CpuThreshold:{type:"double"},MemoryThreshold:{type:"double"},LoadThreshold:{type:"double"},Alarms:{shape:"S3"}}},S40:{type:"structure",members:{Monday:{shape:"S41"},Tuesday:{shape:"S41"},Wednesday:{shape:"S41"},Thursday:{shape:"S41"},Friday:{shape:"S41"},Saturday:{shape:"S41"},Sunday:{shape:"S41"}}},S41:{type:"map",key:{},value:{}}}}},{}],92:[function(e,t,r){t.exports={pagination:{DescribeApps:{result_key:"Apps"},DescribeCommands:{result_key:"Commands"},DescribeDeployments:{result_key:"Deployments"},DescribeEcsClusters:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"EcsClusters"},DescribeElasticIps:{result_key:"ElasticIps"},DescribeElasticLoadBalancers:{result_key:"ElasticLoadBalancers"},DescribeInstances:{result_key:"Instances"},DescribeLayers:{result_key:"Layers"},DescribeLoadBasedAutoScaling:{result_key:"LoadBasedAutoScalingConfigurations"},DescribePermissions:{result_key:"Permissions"},DescribeRaidArrays:{result_key:"RaidArrays"},DescribeServiceErrors:{result_key:"ServiceErrors"},DescribeStacks:{result_key:"Stacks"},DescribeTimeBasedAutoScaling:{result_key:"TimeBasedAutoScalingConfigurations"},DescribeUserProfiles:{result_key:"UserProfiles"},DescribeVolumes:{result_key:"Volumes"}}}},{}],93:[function(e,t,r){t.exports={version:2,waiters:{AppExists:{delay:1,operation:"DescribeApps",maxAttempts:40,acceptors:[{expected:200,matcher:"status",state:"success"},{matcher:"status",expected:400,state:"failure"}]},DeploymentSuccessful:{delay:15,operation:"DescribeDeployments",maxAttempts:40,description:"Wait until a deployment has completed successfully",acceptors:[{expected:"successful",matcher:"pathAll",state:"success",argument:"Deployments[].Status"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"Deployments[].Status"}]},InstanceOnline:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is online.",acceptors:[{expected:"online",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"shutting_down",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"start_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopped",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminating",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stop_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]},InstanceRegistered:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is registered.",acceptors:[{expected:"registered",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"shutting_down",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopped",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminating",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stop_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]},InstanceStopped:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is stopped.",acceptors:[{expected:"stopped",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"booting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"online",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"requested",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"running_setup",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"start_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stop_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]},InstanceTerminated:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is terminated.",acceptors:[{expected:"terminated",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"ResourceNotFoundException",matcher:"error",state:"success"},{expected:"booting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"online",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"requested",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"running_setup",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"start_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]}}}},{}],94:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-01-10",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2013-01-10/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","AllocatedStorage","DBInstanceClass","Engine","MasterUsername","MasterUserPassword"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"S1c"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1i"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1o"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S25"},SupportedCharacterSets:{type:"list",member:{shape:"S25",locationName:"CharacterSet"}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"St",locationName:"DBInstance"}}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"S1c",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S2f"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sd",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"Sk",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S11",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2f"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{ +type:"integer"},EventCategories:{shape:"S6"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S1o",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S14",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S3m",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S3o"}},wrapper:!0}}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S2f"}}},output:{shape:"S3z",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1i"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sp"},VpcSecurityGroupMemberships:{shape:"Sq"}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1o"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S3m"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RemoveSourceIdentifierFromSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2f"}}},output:{shape:"S3z",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}}},shapes:{S4:{type:"structure",members:{Id:{},CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}}},wrapper:!0},Sk:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"}},wrapper:!0},Sp:{type:"list",member:{locationName:"DBSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"Sv"},VpcSecurityGroups:{shape:"Sx"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S11"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},Iops:{type:"integer"},DBInstanceIdentifier:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMembership:{type:"structure",members:{OptionGroupName:{},Status:{}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"}},wrapper:!0},Sv:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},Sx:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S11:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S14"},SubnetStatus:{}}}}},wrapper:!0},S14:{type:"structure",members:{Name:{},ProvisionedIopsCapable:{type:"boolean"}},wrapper:!0},S1c:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}},wrapper:!0},S1i:{type:"list",member:{locationName:"SubnetIdentifier"}},S1o:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sv"},VpcSecurityGroupMemberships:{shape:"Sx"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{}},wrapper:!0},S25:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S2f:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S3m:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S3o"}},wrapper:!0},S3o:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S3z:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],95:[function(e,t,r){t.exports={pagination:{DescribeDBEngineVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBEngineVersions"},DescribeDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBInstances"},DescribeDBParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBParameterGroups"},DescribeDBParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeDBSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSecurityGroups"},DescribeDBSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSnapshots"},DescribeDBSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSubnetGroups"},DescribeEngineDefaultParameters:{input_token:"Marker",output_token:"EngineDefaults.Marker",limit_key:"MaxRecords",result_key:"EngineDefaults.Parameters"},DescribeEventSubscriptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"EventSubscriptionsList"},DescribeEvents:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Events"},DescribeOptionGroupOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupOptions"},DescribeOptionGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupsList"},DescribeOrderableDBInstanceOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OrderableDBInstanceOptions"},DescribeReservedDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstances"},DescribeReservedDBInstancesOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstancesOfferings"},ListTagsForResource:{result_key:"TagList"}}}},{}],96:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-02-12",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2013-02-12/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","AllocatedStorage","DBInstanceClass","Engine","MasterUsername","MasterUserPassword"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"S1d"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1j"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1p"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S28"},SupportedCharacterSets:{type:"list",member:{shape:"S28",locationName:"CharacterSet"}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"St",locationName:"DBInstance"}}}}},DescribeDBLogFiles:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},FilenameContains:{},FileLastWritten:{type:"long"},FileSize:{type:"long"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBLogFilesResult",type:"structure",members:{DescribeDBLogFiles:{type:"list",member:{locationName:"DescribeDBLogFilesDetails",type:"structure",members:{LogFileName:{},LastWritten:{type:"long"},Size:{type:"long"}}}},Marker:{}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"S1d",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S2n"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sd",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"Sk",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S11",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2n"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},EventCategories:{shape:"S6"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}},Persistent:{type:"boolean"},OptionGroupOptionSettings:{type:"list",member:{locationName:"OptionGroupOptionSetting",type:"structure",members:{SettingName:{},SettingDescription:{},DefaultValue:{},ApplyType:{},AllowedValues:{},IsModifiable:{type:"boolean"}}}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S1p",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S14",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S3w",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S3y"}},wrapper:!0}}}}},DownloadDBLogFilePortion:{input:{type:"structure",required:["DBInstanceIdentifier","LogFileName"],members:{DBInstanceIdentifier:{},LogFileName:{},Marker:{},NumberOfLines:{type:"integer"}}},output:{resultWrapper:"DownloadDBLogFilePortionResult",type:"structure",members:{LogFileData:{},Marker:{},AdditionalDataPending:{type:"boolean"}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S2n"}}},output:{shape:"S4b",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1j"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sp"},VpcSecurityGroupMemberships:{shape:"Sq"},OptionSettings:{type:"list",member:{shape:"S1t",locationName:"OptionSetting"}}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1p"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S3w"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RemoveSourceIdentifierFromSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"], +members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2n"}}},output:{shape:"S4b",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}}},shapes:{S4:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}}},wrapper:!0},Sk:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"},OptionGroupName:{}},wrapper:!0},Sp:{type:"list",member:{locationName:"DBSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"Sv"},VpcSecurityGroups:{shape:"Sx"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S11"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},Iops:{type:"integer"},DBInstanceIdentifier:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMemberships:{type:"list",member:{locationName:"OptionGroupMembership",type:"structure",members:{OptionGroupName:{},Status:{}}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"}},wrapper:!0},Sv:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},Sx:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S11:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S14"},SubnetStatus:{}}}}},wrapper:!0},S14:{type:"structure",members:{Name:{},ProvisionedIopsCapable:{type:"boolean"}},wrapper:!0},S1d:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}},wrapper:!0},S1j:{type:"list",member:{locationName:"SubnetIdentifier"}},S1p:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Persistent:{type:"boolean"},Port:{type:"integer"},OptionSettings:{type:"list",member:{shape:"S1t",locationName:"OptionSetting"}},DBSecurityGroupMemberships:{shape:"Sv"},VpcSecurityGroupMemberships:{shape:"Sx"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{}},wrapper:!0},S1t:{type:"structure",members:{Name:{},Value:{},DefaultValue:{},Description:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},IsCollection:{type:"boolean"}}},S28:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S2n:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S3w:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S3y"}},wrapper:!0},S3y:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S4b:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],97:[function(e,t,r){t.exports={pagination:{DescribeDBEngineVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBEngineVersions"},DescribeDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBInstances"},DescribeDBLogFiles:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DescribeDBLogFiles"},DescribeDBParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBParameterGroups"},DescribeDBParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeDBSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSecurityGroups"},DescribeDBSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSnapshots"},DescribeDBSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSubnetGroups"},DescribeEngineDefaultParameters:{input_token:"Marker",output_token:"EngineDefaults.Marker",limit_key:"MaxRecords",result_key:"EngineDefaults.Parameters"},DescribeEventSubscriptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"EventSubscriptionsList"},DescribeEvents:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Events"},DescribeOptionGroupOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupOptions"},DescribeOptionGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupsList"},DescribeOrderableDBInstanceOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OrderableDBInstanceOptions"},DescribeReservedDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstances"},DescribeReservedDBInstancesOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstancesOfferings"},DownloadDBLogFilePortion:{input_token:"Marker",output_token:"Marker",limit_key:"NumberOfLines",more_results:"AdditionalDataPending",result_key:"LogFileData"},ListTagsForResource:{result_key:"TagList"}}}},{}],98:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-09-09",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2013-09-09/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","AllocatedStorage","DBInstanceClass","Engine","MasterUsername","MasterUserPassword"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"},DBSubnetGroupName:{}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"S1f"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1l"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1r"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S2d"},SupportedCharacterSets:{type:"list",member:{shape:"S2d",locationName:"CharacterSet"}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"St",locationName:"DBInstance"}}}}},DescribeDBLogFiles:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},FilenameContains:{},FileLastWritten:{type:"long"},FileSize:{type:"long"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBLogFilesResult",type:"structure",members:{DescribeDBLogFiles:{type:"list",member:{locationName:"DescribeDBLogFilesDetails",type:"structure",members:{LogFileName:{},LastWritten:{type:"long"},Size:{type:"long"}}}},Marker:{}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"S1f",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S2s"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sd",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"Sk",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S11",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2s"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{},Filters:{shape:"S27"}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},EventCategories:{shape:"S6"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}},Persistent:{type:"boolean"},Permanent:{type:"boolean"},OptionGroupOptionSettings:{type:"list",member:{locationName:"OptionGroupOptionSetting",type:"structure",members:{SettingName:{},SettingDescription:{},DefaultValue:{},ApplyType:{},AllowedValues:{},IsModifiable:{type:"boolean"}}}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Filters:{shape:"S27"},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S1r",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S14",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S41",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S43"}},wrapper:!0}}}}},DownloadDBLogFilePortion:{input:{type:"structure",required:["DBInstanceIdentifier","LogFileName"],members:{DBInstanceIdentifier:{},LogFileName:{},Marker:{},NumberOfLines:{type:"integer"}}},output:{resultWrapper:"DownloadDBLogFilePortionResult",type:"structure",members:{LogFileData:{},Marker:{},AdditionalDataPending:{type:"boolean"}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{},Filters:{shape:"S27"}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S2s"}}},output:{shape:"S4g",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1l"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sp"},VpcSecurityGroupMemberships:{shape:"Sq"},OptionSettings:{type:"list",member:{shape:"S1v",locationName:"OptionSetting"}}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1r"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"},Tags:{shape:"S9"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S41"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RemoveSourceIdentifierFromSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2s"}}},output:{shape:"S4g",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},Tags:{shape:"S9"}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},Tags:{shape:"S9"}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}}},shapes:{S4:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}}},wrapper:!0},Sk:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"},OptionGroupName:{},PercentProgress:{type:"integer"},SourceRegion:{}},wrapper:!0},Sp:{type:"list",member:{locationName:"DBSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"Sv"},VpcSecurityGroups:{shape:"Sx"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S11"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},Iops:{type:"integer"},DBInstanceIdentifier:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMemberships:{type:"list",member:{locationName:"OptionGroupMembership",type:"structure",members:{OptionGroupName:{},Status:{}}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"},StatusInfos:{type:"list",member:{locationName:"DBInstanceStatusInfo",type:"structure",members:{StatusType:{},Normal:{type:"boolean"},Status:{},Message:{}}}}},wrapper:!0},Sv:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},Sx:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S11:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure", +members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S14"},SubnetStatus:{}}}}},wrapper:!0},S14:{type:"structure",members:{Name:{},ProvisionedIopsCapable:{type:"boolean"}},wrapper:!0},S1f:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}},wrapper:!0},S1l:{type:"list",member:{locationName:"SubnetIdentifier"}},S1r:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Persistent:{type:"boolean"},Permanent:{type:"boolean"},Port:{type:"integer"},OptionSettings:{type:"list",member:{shape:"S1v",locationName:"OptionSetting"}},DBSecurityGroupMemberships:{shape:"Sv"},VpcSecurityGroupMemberships:{shape:"Sx"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{}},wrapper:!0},S1v:{type:"structure",members:{Name:{},Value:{},DefaultValue:{},Description:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},IsCollection:{type:"boolean"}}},S27:{type:"list",member:{locationName:"Filter",type:"structure",required:["Name","Values"],members:{Name:{},Values:{type:"list",member:{locationName:"Value"}}}}},S2d:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S2s:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S41:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S43"}},wrapper:!0},S43:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S4g:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],99:[function(e,t,r){arguments[4][97][0].apply(r,arguments)},{dup:97}],100:[function(e,t,r){t.exports={version:2,waiters:{DBInstanceAvailable:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-restore",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-parameters",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-parameters",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-restore",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]},DBInstanceDeleted:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"creating",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"modifying",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"resetting-master-credentials",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]}}}},{}],101:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-10-31",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2014-10-31/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},ApplyPendingMaintenanceAction:{input:{type:"structure",required:["ResourceIdentifier","ApplyAction","OptInType"],members:{ResourceIdentifier:{},ApplyAction:{},OptInType:{}}},output:{resultWrapper:"ApplyPendingMaintenanceActionResult",type:"structure",members:{ResourcePendingMaintenanceActions:{shape:"Sd"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sj"}}}},CopyDBClusterParameterGroup:{input:{type:"structure",required:["SourceDBClusterParameterGroupIdentifier","TargetDBClusterParameterGroupIdentifier","TargetDBClusterParameterGroupDescription"],members:{SourceDBClusterParameterGroupIdentifier:{},TargetDBClusterParameterGroupIdentifier:{},TargetDBClusterParameterGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBClusterParameterGroupResult",type:"structure",members:{DBClusterParameterGroup:{shape:"Sq"}}}},CopyDBClusterSnapshot:{input:{type:"structure",required:["SourceDBClusterSnapshotIdentifier","TargetDBClusterSnapshotIdentifier"],members:{SourceDBClusterSnapshotIdentifier:{},TargetDBClusterSnapshotIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBClusterSnapshotResult",type:"structure",members:{DBClusterSnapshot:{shape:"St"}}}},CopyDBParameterGroup:{input:{type:"structure",required:["SourceDBParameterGroupIdentifier","TargetDBParameterGroupIdentifier","TargetDBParameterGroupDescription"],members:{SourceDBParameterGroupIdentifier:{},TargetDBParameterGroupIdentifier:{},TargetDBParameterGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"Sy"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{},KmsKeyId:{},Tags:{shape:"S9"},CopyTags:{type:"boolean"}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"S12"}}}},CopyOptionGroup:{input:{type:"structure",required:["SourceOptionGroupIdentifier","TargetOptionGroupIdentifier","TargetOptionGroupDescription"],members:{SourceOptionGroupIdentifier:{},TargetOptionGroupIdentifier:{},TargetOptionGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S16"}}}},CreateDBCluster:{input:{type:"structure",required:["DBClusterIdentifier","Engine"],members:{AvailabilityZones:{shape:"Su"},BackupRetentionPeriod:{type:"integer"},CharacterSetName:{},DatabaseName:{},DBClusterIdentifier:{},DBClusterParameterGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},DBSubnetGroupName:{},Engine:{},EngineVersion:{},Port:{type:"integer"},MasterUsername:{},MasterUserPassword:{},OptionGroupName:{},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},ReplicationSourceIdentifier:{},Tags:{shape:"S9"},StorageEncrypted:{type:"boolean"},KmsKeyId:{}}},output:{resultWrapper:"CreateDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},CreateDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName","DBParameterGroupFamily","Description"],members:{DBClusterParameterGroupName:{},DBParameterGroupFamily:{},Description:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBClusterParameterGroupResult",type:"structure",members:{DBClusterParameterGroup:{shape:"Sq"}}}},CreateDBClusterSnapshot:{input:{type:"structure",required:["DBClusterSnapshotIdentifier","DBClusterIdentifier"],members:{DBClusterSnapshotIdentifier:{},DBClusterIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBClusterSnapshotResult",type:"structure",members:{DBClusterSnapshot:{shape:"St"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","DBInstanceClass","Engine"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"S1t"},VpcSecurityGroupIds:{shape:"S1g"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"},DBClusterIdentifier:{},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},StorageEncrypted:{type:"boolean"},KmsKeyId:{},Domain:{},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},MonitoringRoleArn:{},DomainIAMRoleName:{},PromotionTier:{type:"integer"},Timezone:{}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"},DBSubnetGroupName:{},StorageType:{},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},MonitoringRoleArn:{}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"Sy"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sj"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"S12"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S2k"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S1z"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S16"}}}},DeleteDBCluster:{input:{type:"structure",required:["DBClusterIdentifier"],members:{DBClusterIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},DeleteDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName"],members:{DBClusterParameterGroupName:{}}}},DeleteDBClusterSnapshot:{input:{type:"structure",required:["DBClusterSnapshotIdentifier"],members:{DBClusterSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBClusterSnapshotResult",type:"structure",members:{DBClusterSnapshot:{shape:"St"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"S12"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeAccountAttributes:{input:{type:"structure",members:{}},output:{resultWrapper:"DescribeAccountAttributesResult",type:"structure",members:{AccountQuotas:{type:"list",member:{locationName:"AccountQuota",type:"structure",members:{AccountQuotaName:{},Used:{type:"long"},Max:{type:"long"}},wrapper:!0}}}}},DescribeCertificates:{input:{type:"structure",members:{CertificateIdentifier:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCertificatesResult",type:"structure",members:{Certificates:{type:"list",member:{locationName:"Certificate",type:"structure",members:{CertificateIdentifier:{},CertificateType:{},Thumbprint:{},ValidFrom:{type:"timestamp"},ValidTill:{type:"timestamp"},CertificateArn:{}},wrapper:!0}},Marker:{}}}},DescribeDBClusterParameterGroups:{input:{type:"structure",members:{DBClusterParameterGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBClusterParameterGroupsResult",type:"structure",members:{Marker:{},DBClusterParameterGroups:{type:"list",member:{shape:"Sq",locationName:"DBClusterParameterGroup"}}}}},DescribeDBClusterParameters:{input:{type:"structure",required:["DBClusterParameterGroupName"],members:{DBClusterParameterGroupName:{},Source:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBClusterParametersResult",type:"structure",members:{Parameters:{shape:"S3m"},Marker:{}}}},DescribeDBClusterSnapshotAttributes:{input:{type:"structure",required:["DBClusterSnapshotIdentifier"],members:{DBClusterSnapshotIdentifier:{}}},output:{resultWrapper:"DescribeDBClusterSnapshotAttributesResult",type:"structure",members:{DBClusterSnapshotAttributesResult:{shape:"S3r"}}}},DescribeDBClusterSnapshots:{input:{type:"structure",members:{DBClusterIdentifier:{},DBClusterSnapshotIdentifier:{},SnapshotType:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{},IncludeShared:{type:"boolean"},IncludePublic:{type:"boolean"}}},output:{resultWrapper:"DescribeDBClusterSnapshotsResult",type:"structure",members:{Marker:{},DBClusterSnapshots:{type:"list",member:{shape:"St",locationName:"DBClusterSnapshot"}}}}},DescribeDBClusters:{input:{type:"structure",members:{DBClusterIdentifier:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBClustersResult",type:"structure",members:{Marker:{},DBClusters:{type:"list",member:{shape:"S1i",locationName:"DBCluster"}}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"},ListSupportedTimezones:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S45"},SupportedCharacterSets:{type:"list",member:{shape:"S45",locationName:"CharacterSet"}},ValidUpgradeTarget:{type:"list",member:{locationName:"UpgradeTarget",type:"structure",members:{Engine:{},EngineVersion:{},Description:{},AutoUpgrade:{type:"boolean"},IsMajorVersionUpgrade:{type:"boolean"}}}},SupportedTimezones:{type:"list",member:{locationName:"Timezone",type:"structure",members:{TimezoneName:{}}}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"S1v",locationName:"DBInstance"}}}}},DescribeDBLogFiles:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},FilenameContains:{},FileLastWritten:{type:"long"},FileSize:{type:"long"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBLogFilesResult",type:"structure",members:{DescribeDBLogFiles:{type:"list",member:{locationName:"DescribeDBLogFilesDetails",type:"structure",members:{LogFileName:{},LastWritten:{type:"long"},Size:{type:"long"}}}},Marker:{}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"Sy",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S3m"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sj",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshotAttributes:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DescribeDBSnapshotAttributesResult",type:"structure",members:{DBSnapshotAttributesResult:{shape:"S4s"}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{},IncludeShared:{type:"boolean"},IncludePublic:{type:"boolean"}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"S12",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S1z",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultClusterParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultClusterParametersResult",type:"structure",members:{EngineDefaults:{shape:"S53"}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{shape:"S53"}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{},Filters:{shape:"S3b"}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},EventCategories:{shape:"S6"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"},SourceArn:{}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}},OptionsConflictsWith:{type:"list",member:{locationName:"OptionConflictName"}},Persistent:{type:"boolean"},Permanent:{type:"boolean"},OptionGroupOptionSettings:{type:"list",member:{locationName:"OptionGroupOptionSetting",type:"structure",members:{SettingName:{},SettingDescription:{},DefaultValue:{},ApplyType:{},AllowedValues:{},IsModifiable:{type:"boolean"}}}},OptionGroupOptionVersions:{type:"list",member:{locationName:"OptionVersion",type:"structure",members:{Version:{},IsDefault:{type:"boolean"}}}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Filters:{shape:"S3b"},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S16",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S22",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"},SupportsStorageEncryption:{type:"boolean"},StorageType:{},SupportsIops:{type:"boolean"},SupportsEnhancedMonitoring:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribePendingMaintenanceActions:{input:{type:"structure",members:{ResourceIdentifier:{},Filters:{shape:"S3b"},Marker:{},MaxRecords:{type:"integer"}}},output:{resultWrapper:"DescribePendingMaintenanceActionsResult",type:"structure",members:{PendingMaintenanceActions:{type:"list",member:{shape:"Sd",locationName:"ResourcePendingMaintenanceActions"}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S66",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S68"}},wrapper:!0}}}}},DescribeSourceRegions:{input:{type:"structure",members:{RegionName:{},MaxRecords:{type:"integer"},Marker:{},Filters:{shape:"S3b"}}},output:{resultWrapper:"DescribeSourceRegionsResult",type:"structure",members:{Marker:{},SourceRegions:{type:"list",member:{locationName:"SourceRegion",type:"structure",members:{RegionName:{},Endpoint:{},Status:{}}}}}}},DownloadDBLogFilePortion:{input:{type:"structure",required:["DBInstanceIdentifier","LogFileName"],members:{DBInstanceIdentifier:{},LogFileName:{},Marker:{},NumberOfLines:{type:"integer"}}},output:{resultWrapper:"DownloadDBLogFilePortionResult",type:"structure",members:{LogFileData:{},Marker:{},AdditionalDataPending:{type:"boolean"}}}},FailoverDBCluster:{input:{type:"structure",members:{DBClusterIdentifier:{},TargetDBInstanceIdentifier:{}}},output:{resultWrapper:"FailoverDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{},Filters:{shape:"S3b"}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBCluster:{input:{type:"structure",required:["DBClusterIdentifier"],members:{DBClusterIdentifier:{},NewDBClusterIdentifier:{},ApplyImmediately:{type:"boolean"},BackupRetentionPeriod:{type:"integer"},DBClusterParameterGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},Port:{type:"integer"},MasterUserPassword:{},OptionGroupName:{},PreferredBackupWindow:{},PreferredMaintenanceWindow:{}}},output:{resultWrapper:"ModifyDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},ModifyDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName","Parameters"],members:{DBClusterParameterGroupName:{},Parameters:{shape:"S3m"}}},output:{shape:"S6r",resultWrapper:"ModifyDBClusterParameterGroupResult"}},ModifyDBClusterSnapshotAttribute:{input:{type:"structure",required:["DBClusterSnapshotIdentifier","AttributeName"],members:{DBClusterSnapshotIdentifier:{},AttributeName:{},ValuesToAdd:{shape:"S3u"},ValuesToRemove:{shape:"S3u"}}},output:{resultWrapper:"ModifyDBClusterSnapshotAttributeResult",type:"structure",members:{DBClusterSnapshotAttributesResult:{shape:"S3r"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSubnetGroupName:{},DBSecurityGroups:{shape:"S1t"},VpcSecurityGroupIds:{shape:"S1g"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},CACertificateIdentifier:{},Domain:{},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},DBPortNumber:{type:"integer"},PubliclyAccessible:{type:"boolean"},MonitoringRoleArn:{},DomainIAMRoleName:{},PromotionTier:{type:"integer"}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S3m"}}},output:{shape:"S6x",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSnapshotAttribute:{input:{type:"structure",required:["DBSnapshotIdentifier","AttributeName"],members:{DBSnapshotIdentifier:{},AttributeName:{},ValuesToAdd:{shape:"S3u"},ValuesToRemove:{shape:"S3u"}}},output:{resultWrapper:"ModifyDBSnapshotAttributeResult",type:"structure",members:{DBSnapshotAttributesResult:{shape:"S4s"}}}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S2k"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S1z"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},OptionVersion:{},DBSecurityGroupMemberships:{shape:"S1t"},VpcSecurityGroupMemberships:{shape:"S1g"},OptionSettings:{type:"list",member:{shape:"S1a",locationName:"OptionSetting"}}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S16"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},PromoteReadReplicaDBCluster:{input:{type:"structure",required:["DBClusterIdentifier"],members:{DBClusterIdentifier:{}}},output:{resultWrapper:"PromoteReadReplicaDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"},Tags:{shape:"S9"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S66"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},RemoveSourceIdentifierFromSubscription:{input:{ +type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName"],members:{DBClusterParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S3m"}}},output:{shape:"S6r",resultWrapper:"ResetDBClusterParameterGroupResult"}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S3m"}}},output:{shape:"S6x",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBClusterFromS3:{input:{type:"structure",required:["DBClusterIdentifier","Engine","MasterUsername","MasterUserPassword","SourceEngine","SourceEngineVersion","S3BucketName","S3IngestionRoleArn"],members:{AvailabilityZones:{shape:"Su"},BackupRetentionPeriod:{type:"integer"},CharacterSetName:{},DatabaseName:{},DBClusterIdentifier:{},DBClusterParameterGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},DBSubnetGroupName:{},Engine:{},EngineVersion:{},Port:{type:"integer"},MasterUsername:{},MasterUserPassword:{},OptionGroupName:{},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},Tags:{shape:"S9"},StorageEncrypted:{type:"boolean"},KmsKeyId:{},SourceEngine:{},SourceEngineVersion:{},S3BucketName:{},S3Prefix:{},S3IngestionRoleArn:{}}},output:{resultWrapper:"RestoreDBClusterFromS3Result",type:"structure",members:{DBCluster:{shape:"S1i"}}}},RestoreDBClusterFromSnapshot:{input:{type:"structure",required:["DBClusterIdentifier","SnapshotIdentifier","Engine"],members:{AvailabilityZones:{shape:"Su"},DBClusterIdentifier:{},SnapshotIdentifier:{},Engine:{},EngineVersion:{},Port:{type:"integer"},DBSubnetGroupName:{},DatabaseName:{},OptionGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},Tags:{shape:"S9"},KmsKeyId:{}}},output:{resultWrapper:"RestoreDBClusterFromSnapshotResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},RestoreDBClusterToPointInTime:{input:{type:"structure",required:["DBClusterIdentifier","SourceDBClusterIdentifier"],members:{DBClusterIdentifier:{},SourceDBClusterIdentifier:{},RestoreToTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},Port:{type:"integer"},DBSubnetGroupName:{},OptionGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},Tags:{shape:"S9"},KmsKeyId:{}}},output:{resultWrapper:"RestoreDBClusterToPointInTimeResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},Tags:{shape:"S9"},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},Domain:{},CopyTagsToSnapshot:{type:"boolean"},DomainIAMRoleName:{}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},CopyTagsToSnapshot:{type:"boolean"},Tags:{shape:"S9"},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},Domain:{},DomainIAMRoleName:{}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sj"}}}}},shapes:{S4:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"},EventSubscriptionArn:{}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{ResourceIdentifier:{},PendingMaintenanceActionDetails:{type:"list",member:{locationName:"PendingMaintenanceAction",type:"structure",members:{Action:{},AutoAppliedAfterDate:{type:"timestamp"},ForcedApplyDate:{type:"timestamp"},OptInStatus:{},CurrentApplyDate:{type:"timestamp"},Description:{}}}}},wrapper:!0},Sj:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}},DBSecurityGroupArn:{}},wrapper:!0},Sq:{type:"structure",members:{DBClusterParameterGroupName:{},DBParameterGroupFamily:{},Description:{},DBClusterParameterGroupArn:{}},wrapper:!0},St:{type:"structure",members:{AvailabilityZones:{shape:"Su"},DBClusterSnapshotIdentifier:{},DBClusterIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},VpcId:{},ClusterCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},PercentProgress:{type:"integer"},StorageEncrypted:{type:"boolean"},KmsKeyId:{},DBClusterSnapshotArn:{}},wrapper:!0},Su:{type:"list",member:{locationName:"AvailabilityZone"}},Sy:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{},DBParameterGroupArn:{}},wrapper:!0},S12:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"},OptionGroupName:{},PercentProgress:{type:"integer"},SourceRegion:{},SourceDBSnapshotIdentifier:{},StorageType:{},TdeCredentialArn:{},Encrypted:{type:"boolean"},KmsKeyId:{},DBSnapshotArn:{},Timezone:{}},wrapper:!0},S16:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Persistent:{type:"boolean"},Permanent:{type:"boolean"},Port:{type:"integer"},OptionVersion:{},OptionSettings:{type:"list",member:{shape:"S1a",locationName:"OptionSetting"}},DBSecurityGroupMemberships:{shape:"S1b"},VpcSecurityGroupMemberships:{shape:"S1d"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{},OptionGroupArn:{}},wrapper:!0},S1a:{type:"structure",members:{Name:{},Value:{},DefaultValue:{},Description:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},IsCollection:{type:"boolean"}}},S1b:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},S1d:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S1g:{type:"list",member:{locationName:"VpcSecurityGroupId"}},S1i:{type:"structure",members:{AllocatedStorage:{type:"integer"},AvailabilityZones:{shape:"Su"},BackupRetentionPeriod:{type:"integer"},CharacterSetName:{},DatabaseName:{},DBClusterIdentifier:{},DBClusterParameterGroup:{},DBSubnetGroup:{},Status:{},PercentProgress:{},EarliestRestorableTime:{type:"timestamp"},Endpoint:{},ReaderEndpoint:{},Engine:{},EngineVersion:{},LatestRestorableTime:{type:"timestamp"},Port:{type:"integer"},MasterUsername:{},DBClusterOptionGroupMemberships:{type:"list",member:{locationName:"DBClusterOptionGroup",type:"structure",members:{DBClusterOptionGroupName:{},Status:{}}}},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},ReplicationSourceIdentifier:{},ReadReplicaIdentifiers:{type:"list",member:{locationName:"ReadReplicaIdentifier"}},DBClusterMembers:{type:"list",member:{locationName:"DBClusterMember",type:"structure",members:{DBInstanceIdentifier:{},IsClusterWriter:{type:"boolean"},DBClusterParameterGroupStatus:{},PromotionTier:{type:"integer"}},wrapper:!0}},VpcSecurityGroups:{shape:"S1d"},HostedZoneId:{},StorageEncrypted:{type:"boolean"},KmsKeyId:{},DbClusterResourceId:{},DBClusterArn:{}},wrapper:!0},S1t:{type:"list",member:{locationName:"DBSecurityGroupName"}},S1v:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"},HostedZoneId:{}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"S1b"},VpcSecurityGroups:{shape:"S1d"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S1z"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},LicenseModel:{},Iops:{type:"integer"},DBInstanceIdentifier:{},StorageType:{},CACertificateIdentifier:{},DBSubnetGroupName:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMemberships:{type:"list",member:{locationName:"OptionGroupMembership",type:"structure",members:{OptionGroupName:{},Status:{}}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"},StatusInfos:{type:"list",member:{locationName:"DBInstanceStatusInfo",type:"structure",members:{StatusType:{},Normal:{type:"boolean"},Status:{},Message:{}}}},StorageType:{},TdeCredentialArn:{},DbInstancePort:{type:"integer"},DBClusterIdentifier:{},StorageEncrypted:{type:"boolean"},KmsKeyId:{},DbiResourceId:{},CACertificateIdentifier:{},DomainMemberships:{type:"list",member:{locationName:"DomainMembership",type:"structure",members:{Domain:{},Status:{},FQDN:{},IAMRoleName:{}}}},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},EnhancedMonitoringResourceArn:{},MonitoringRoleArn:{},PromotionTier:{type:"integer"},DBInstanceArn:{},Timezone:{}},wrapper:!0},S1z:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S22"},SubnetStatus:{}}}},DBSubnetGroupArn:{}},wrapper:!0},S22:{type:"structure",members:{Name:{}},wrapper:!0},S2k:{type:"list",member:{locationName:"SubnetIdentifier"}},S3b:{type:"list",member:{locationName:"Filter",type:"structure",required:["Name","Values"],members:{Name:{},Values:{type:"list",member:{locationName:"Value"}}}}},S3m:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S3r:{type:"structure",members:{DBClusterSnapshotIdentifier:{},DBClusterSnapshotAttributes:{type:"list",member:{locationName:"DBClusterSnapshotAttribute",type:"structure",members:{AttributeName:{},AttributeValues:{shape:"S3u"}}}}},wrapper:!0},S3u:{type:"list",member:{locationName:"AttributeValue"}},S45:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S4s:{type:"structure",members:{DBSnapshotIdentifier:{},DBSnapshotAttributes:{type:"list",member:{locationName:"DBSnapshotAttribute",type:"structure",members:{AttributeName:{},AttributeValues:{shape:"S3u"}},wrapper:!0}}},wrapper:!0},S53:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S3m"}},wrapper:!0},S66:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S68"},ReservedDBInstanceArn:{}},wrapper:!0},S68:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S6r:{type:"structure",members:{DBClusterParameterGroupName:{}}},S6x:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],102:[function(e,t,r){arguments[4][97][0].apply(r,arguments)},{dup:97}],103:[function(e,t,r){t.exports={version:2,waiters:{DBInstanceAvailable:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-restore",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-parameters",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]},DBInstanceDeleted:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"DBInstanceNotFound",matcher:"error",state:"success"},{expected:"creating",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"modifying",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"resetting-master-credentials",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]}}}},{}],104:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-12-01",endpointPrefix:"redshift",protocol:"query",serviceFullName:"Amazon Redshift",signatureVersion:"v4",xmlNamespace:"http://redshift.amazonaws.com/doc/2012-12-01/"},operations:{AuthorizeClusterSecurityGroupIngress:{input:{type:"structure",required:["ClusterSecurityGroupName"],members:{ClusterSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeClusterSecurityGroupIngressResult",type:"structure",members:{ClusterSecurityGroup:{shape:"S4"}}}},AuthorizeSnapshotAccess:{input:{type:"structure",required:["SnapshotIdentifier","AccountWithRestoreAccess"],members:{SnapshotIdentifier:{},SnapshotClusterIdentifier:{},AccountWithRestoreAccess:{}}},output:{resultWrapper:"AuthorizeSnapshotAccessResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CopyClusterSnapshot:{input:{type:"structure",required:["SourceSnapshotIdentifier","TargetSnapshotIdentifier"],members:{SourceSnapshotIdentifier:{},SourceSnapshotClusterIdentifier:{},TargetSnapshotIdentifier:{}}},output:{resultWrapper:"CopyClusterSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CreateCluster:{input:{type:"structure",required:["ClusterIdentifier","NodeType","MasterUsername","MasterUserPassword"],members:{DBName:{},ClusterIdentifier:{},ClusterType:{},NodeType:{},MasterUsername:{},MasterUserPassword:{},ClusterSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ClusterSubnetGroupName:{},AvailabilityZone:{},PreferredMaintenanceWindow:{},ClusterParameterGroupName:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},Port:{type:"integer"},ClusterVersion:{},AllowVersionUpgrade:{type:"boolean"},NumberOfNodes:{type:"integer"},PubliclyAccessible:{type:"boolean"},Encrypted:{type:"boolean"},HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},ElasticIp:{},Tags:{shape:"S7"},KmsKeyId:{},EnhancedVpcRouting:{type:"boolean"},AdditionalInfo:{},IamRoles:{shape:"St"}}},output:{resultWrapper:"CreateClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},CreateClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName","ParameterGroupFamily","Description"],members:{ParameterGroupName:{},ParameterGroupFamily:{},Description:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterParameterGroupResult",type:"structure",members:{ClusterParameterGroup:{shape:"S1g"}}}},CreateClusterSecurityGroup:{input:{type:"structure",required:["ClusterSecurityGroupName","Description"],members:{ClusterSecurityGroupName:{},Description:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterSecurityGroupResult",type:"structure",members:{ClusterSecurityGroup:{shape:"S4"}}}},CreateClusterSnapshot:{input:{type:"structure",required:["SnapshotIdentifier","ClusterIdentifier"],members:{SnapshotIdentifier:{},ClusterIdentifier:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CreateClusterSubnetGroup:{input:{type:"structure",required:["ClusterSubnetGroupName","Description","SubnetIds"],members:{ClusterSubnetGroupName:{},Description:{},SubnetIds:{shape:"S1m"},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterSubnetGroupResult",type:"structure",members:{ClusterSubnetGroup:{shape:"S1o"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},SourceIds:{shape:"S1t"},EventCategories:{shape:"S1u"},Severity:{},Enabled:{type:"boolean"},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S1w"}}}},CreateHsmClientCertificate:{input:{type:"structure",required:["HsmClientCertificateIdentifier"],members:{HsmClientCertificateIdentifier:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateHsmClientCertificateResult",type:"structure",members:{HsmClientCertificate:{shape:"S1z"}}}},CreateHsmConfiguration:{input:{type:"structure",required:["HsmConfigurationIdentifier","Description","HsmIpAddress","HsmPartitionName","HsmPartitionPassword","HsmServerPublicCertificate"],members:{HsmConfigurationIdentifier:{},Description:{},HsmIpAddress:{},HsmPartitionName:{},HsmPartitionPassword:{},HsmServerPublicCertificate:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateHsmConfigurationResult",type:"structure",members:{HsmConfiguration:{shape:"S22"}}}},CreateSnapshotCopyGrant:{input:{type:"structure",required:["SnapshotCopyGrantName"],members:{SnapshotCopyGrantName:{},KmsKeyId:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateSnapshotCopyGrantResult",type:"structure",members:{SnapshotCopyGrant:{shape:"S25"}}}},CreateTags:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S7"}}}},DeleteCluster:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{},SkipFinalClusterSnapshot:{type:"boolean"},FinalClusterSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},DeleteClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName"],members:{ParameterGroupName:{}}}},DeleteClusterSecurityGroup:{input:{type:"structure",required:["ClusterSecurityGroupName"],members:{ClusterSecurityGroupName:{}}}},DeleteClusterSnapshot:{input:{type:"structure",required:["SnapshotIdentifier"],members:{SnapshotIdentifier:{},SnapshotClusterIdentifier:{}}},output:{resultWrapper:"DeleteClusterSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},DeleteClusterSubnetGroup:{input:{type:"structure",required:["ClusterSubnetGroupName"],members:{ClusterSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}}},DeleteHsmClientCertificate:{input:{type:"structure",required:["HsmClientCertificateIdentifier"],members:{HsmClientCertificateIdentifier:{}}}},DeleteHsmConfiguration:{input:{type:"structure",required:["HsmConfigurationIdentifier"],members:{HsmConfigurationIdentifier:{}}}},DeleteSnapshotCopyGrant:{input:{type:"structure",required:["SnapshotCopyGrantName"],members:{SnapshotCopyGrantName:{}}}},DeleteTags:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{shape:"S2j"}}}},DescribeClusterParameterGroups:{input:{type:"structure",members:{ParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterParameterGroupsResult",type:"structure",members:{Marker:{},ParameterGroups:{type:"list",member:{shape:"S1g",locationName:"ClusterParameterGroup"}}}}},DescribeClusterParameters:{input:{type:"structure",required:["ParameterGroupName"],members:{ParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeClusterParametersResult",type:"structure",members:{Parameters:{shape:"S2q"},Marker:{}}}},DescribeClusterSecurityGroups:{input:{type:"structure",members:{ClusterSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterSecurityGroupsResult",type:"structure",members:{Marker:{},ClusterSecurityGroups:{type:"list",member:{shape:"S4",locationName:"ClusterSecurityGroup"}}}}},DescribeClusterSnapshots:{input:{type:"structure",members:{ClusterIdentifier:{},SnapshotIdentifier:{},SnapshotType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},MaxRecords:{type:"integer"},Marker:{},OwnerAccount:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterSnapshotsResult",type:"structure",members:{Marker:{},Snapshots:{type:"list",member:{shape:"Sd",locationName:"Snapshot"}}}}},DescribeClusterSubnetGroups:{input:{type:"structure",members:{ClusterSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterSubnetGroupsResult",type:"structure",members:{Marker:{},ClusterSubnetGroups:{type:"list",member:{shape:"S1o",locationName:"ClusterSubnetGroup"}}}}},DescribeClusterVersions:{input:{type:"structure",members:{ClusterVersion:{},ClusterParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeClusterVersionsResult",type:"structure",members:{Marker:{},ClusterVersions:{type:"list",member:{locationName:"ClusterVersion",type:"structure",members:{ClusterVersion:{},ClusterParameterGroupFamily:{},Description:{}}}}}}},DescribeClusters:{input:{type:"structure",members:{ClusterIdentifier:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClustersResult",type:"structure",members:{Marker:{},Clusters:{type:"list",member:{shape:"Sv",locationName:"Cluster"}}}}},DescribeDefaultClusterParameters:{input:{type:"structure",required:["ParameterGroupFamily"],members:{ParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDefaultClusterParametersResult",type:"structure",members:{DefaultClusterParameters:{type:"structure",members:{ParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2q"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},Events:{type:"list",member:{locationName:"EventInfoMap",type:"structure",members:{EventId:{},EventCategories:{shape:"S1u"},EventDescription:{},Severity:{}},wrapper:!0}}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S1w",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S1u"},Severity:{},Date:{type:"timestamp"},EventId:{}}}}}}},DescribeHsmClientCertificates:{input:{type:"structure",members:{HsmClientCertificateIdentifier:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeHsmClientCertificatesResult",type:"structure",members:{Marker:{},HsmClientCertificates:{type:"list",member:{shape:"S1z",locationName:"HsmClientCertificate"}}}}},DescribeHsmConfigurations:{input:{type:"structure",members:{HsmConfigurationIdentifier:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeHsmConfigurationsResult",type:"structure",members:{Marker:{},HsmConfigurations:{type:"list",member:{shape:"S22",locationName:"HsmConfiguration"}}}}},DescribeLoggingStatus:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{shape:"S3x",resultWrapper:"DescribeLoggingStatusResult"}},DescribeOrderableClusterOptions:{input:{type:"structure",members:{ClusterVersion:{},NodeType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableClusterOptionsResult",type:"structure",members:{OrderableClusterOptions:{type:"list",member:{locationName:"OrderableClusterOption",type:"structure",members:{ClusterVersion:{},ClusterType:{},NodeType:{},AvailabilityZones:{type:"list",member:{shape:"S1r",locationName:"AvailabilityZone"}}},wrapper:!0}},Marker:{}}}},DescribeReservedNodeOfferings:{input:{type:"structure",members:{ReservedNodeOfferingId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedNodeOfferingsResult",type:"structure",members:{Marker:{},ReservedNodeOfferings:{type:"list",member:{locationName:"ReservedNodeOffering",type:"structure",members:{ReservedNodeOfferingId:{},NodeType:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},OfferingType:{},RecurringCharges:{shape:"S47"}},wrapper:!0}}}}},DescribeReservedNodes:{input:{type:"structure",members:{ReservedNodeId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedNodesResult",type:"structure",members:{Marker:{},ReservedNodes:{type:"list",member:{shape:"S4c",locationName:"ReservedNode"}}}}},DescribeResize:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"DescribeResizeResult",type:"structure",members:{TargetNodeType:{},TargetNumberOfNodes:{type:"integer"},TargetClusterType:{},Status:{},ImportTablesCompleted:{type:"list",member:{}},ImportTablesInProgress:{type:"list",member:{}},ImportTablesNotStarted:{type:"list",member:{}},AvgResizeRateInMegaBytesPerSecond:{type:"double"},TotalResizeDataInMegaBytes:{type:"long"},ProgressInMegaBytes:{type:"long"},ElapsedTimeInSeconds:{type:"long"},EstimatedTimeToCompletionInSeconds:{type:"long"}}}},DescribeSnapshotCopyGrants:{input:{type:"structure",members:{SnapshotCopyGrantName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeSnapshotCopyGrantsResult",type:"structure",members:{Marker:{},SnapshotCopyGrants:{type:"list",member:{shape:"S25",locationName:"SnapshotCopyGrant"}}}}},DescribeTableRestoreStatus:{input:{type:"structure",members:{ClusterIdentifier:{},TableRestoreRequestId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeTableRestoreStatusResult",type:"structure",members:{TableRestoreStatusDetails:{type:"list",member:{shape:"S4q",locationName:"TableRestoreStatus"}},Marker:{}}}},DescribeTags:{input:{type:"structure",members:{ResourceName:{},ResourceType:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeTagsResult",type:"structure",members:{TaggedResources:{type:"list",member:{locationName:"TaggedResource",type:"structure",members:{Tag:{shape:"S8"},ResourceName:{},ResourceType:{}}}},Marker:{}}}},DisableLogging:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{shape:"S3x",resultWrapper:"DisableLoggingResult"}},DisableSnapshotCopy:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"DisableSnapshotCopyResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},EnableLogging:{input:{type:"structure",required:["ClusterIdentifier","BucketName"],members:{ClusterIdentifier:{},BucketName:{},S3KeyPrefix:{}}},output:{shape:"S3x",resultWrapper:"EnableLoggingResult"}},EnableSnapshotCopy:{input:{type:"structure",required:["ClusterIdentifier","DestinationRegion"],members:{ClusterIdentifier:{},DestinationRegion:{},RetentionPeriod:{type:"integer"},SnapshotCopyGrantName:{}}},output:{resultWrapper:"EnableSnapshotCopyResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ModifyCluster:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{},ClusterType:{},NodeType:{},NumberOfNodes:{type:"integer"},ClusterSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},MasterUserPassword:{},ClusterParameterGroupName:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},PreferredMaintenanceWindow:{},ClusterVersion:{},AllowVersionUpgrade:{type:"boolean"},HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},NewClusterIdentifier:{},PubliclyAccessible:{type:"boolean"},ElasticIp:{},EnhancedVpcRouting:{type:"boolean"}}},output:{resultWrapper:"ModifyClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ModifyClusterIamRoles:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{},AddIamRoles:{shape:"St"},RemoveIamRoles:{shape:"St"}}},output:{resultWrapper:"ModifyClusterIamRolesResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ModifyClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName","Parameters"],members:{ParameterGroupName:{},Parameters:{shape:"S2q"}}},output:{shape:"S57",resultWrapper:"ModifyClusterParameterGroupResult"}},ModifyClusterSubnetGroup:{input:{type:"structure",required:["ClusterSubnetGroupName","SubnetIds"],members:{ClusterSubnetGroupName:{},Description:{},SubnetIds:{shape:"S1m"}}},output:{resultWrapper:"ModifyClusterSubnetGroupResult", +type:"structure",members:{ClusterSubnetGroup:{shape:"S1o"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},SourceIds:{shape:"S1t"},EventCategories:{shape:"S1u"},Severity:{},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S1w"}}}},ModifySnapshotCopyRetentionPeriod:{input:{type:"structure",required:["ClusterIdentifier","RetentionPeriod"],members:{ClusterIdentifier:{},RetentionPeriod:{type:"integer"}}},output:{resultWrapper:"ModifySnapshotCopyRetentionPeriodResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},PurchaseReservedNodeOffering:{input:{type:"structure",required:["ReservedNodeOfferingId"],members:{ReservedNodeOfferingId:{},NodeCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedNodeOfferingResult",type:"structure",members:{ReservedNode:{shape:"S4c"}}}},RebootCluster:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"RebootClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ResetClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName"],members:{ParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2q"}}},output:{shape:"S57",resultWrapper:"ResetClusterParameterGroupResult"}},RestoreFromClusterSnapshot:{input:{type:"structure",required:["ClusterIdentifier","SnapshotIdentifier"],members:{ClusterIdentifier:{},SnapshotIdentifier:{},SnapshotClusterIdentifier:{},Port:{type:"integer"},AvailabilityZone:{},AllowVersionUpgrade:{type:"boolean"},ClusterSubnetGroupName:{},PubliclyAccessible:{type:"boolean"},OwnerAccount:{},HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},ElasticIp:{},ClusterParameterGroupName:{},ClusterSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},PreferredMaintenanceWindow:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},KmsKeyId:{},NodeType:{},EnhancedVpcRouting:{type:"boolean"},AdditionalInfo:{},IamRoles:{shape:"St"}}},output:{resultWrapper:"RestoreFromClusterSnapshotResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},RestoreTableFromClusterSnapshot:{input:{type:"structure",required:["ClusterIdentifier","SnapshotIdentifier","SourceDatabaseName","SourceTableName","NewTableName"],members:{ClusterIdentifier:{},SnapshotIdentifier:{},SourceDatabaseName:{},SourceSchemaName:{},SourceTableName:{},TargetDatabaseName:{},TargetSchemaName:{},NewTableName:{}}},output:{resultWrapper:"RestoreTableFromClusterSnapshotResult",type:"structure",members:{TableRestoreStatus:{shape:"S4q"}}}},RevokeClusterSecurityGroupIngress:{input:{type:"structure",required:["ClusterSecurityGroupName"],members:{ClusterSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeClusterSecurityGroupIngressResult",type:"structure",members:{ClusterSecurityGroup:{shape:"S4"}}}},RevokeSnapshotAccess:{input:{type:"structure",required:["SnapshotIdentifier","AccountWithRestoreAccess"],members:{SnapshotIdentifier:{},SnapshotClusterIdentifier:{},AccountWithRestoreAccess:{}}},output:{resultWrapper:"RevokeSnapshotAccessResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},RotateEncryptionKey:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"RotateEncryptionKeyResult",type:"structure",members:{Cluster:{shape:"Sv"}}}}},shapes:{S4:{type:"structure",members:{ClusterSecurityGroupName:{},Description:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{},Tags:{shape:"S7"}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{},Tags:{shape:"S7"}}}},Tags:{shape:"S7"}},wrapper:!0},S7:{type:"list",member:{shape:"S8",locationName:"Tag"}},S8:{type:"structure",members:{Key:{},Value:{}}},Sd:{type:"structure",members:{SnapshotIdentifier:{},ClusterIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Status:{},Port:{type:"integer"},AvailabilityZone:{},ClusterCreateTime:{type:"timestamp"},MasterUsername:{},ClusterVersion:{},SnapshotType:{},NodeType:{},NumberOfNodes:{type:"integer"},DBName:{},VpcId:{},Encrypted:{type:"boolean"},KmsKeyId:{},EncryptedWithHSM:{type:"boolean"},AccountsWithRestoreAccess:{type:"list",member:{locationName:"AccountWithRestoreAccess",type:"structure",members:{AccountId:{}}}},OwnerAccount:{},TotalBackupSizeInMegaBytes:{type:"double"},ActualIncrementalBackupSizeInMegaBytes:{type:"double"},BackupProgressInMegaBytes:{type:"double"},CurrentBackupRateInMegaBytesPerSecond:{type:"double"},EstimatedSecondsToCompletion:{type:"long"},ElapsedTimeInSeconds:{type:"long"},SourceRegion:{},Tags:{shape:"S7"},RestorableNodeTypes:{type:"list",member:{locationName:"NodeType"}},EnhancedVpcRouting:{type:"boolean"}},wrapper:!0},Sp:{type:"list",member:{locationName:"ClusterSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"list",member:{locationName:"IamRoleArn"}},Sv:{type:"structure",members:{ClusterIdentifier:{},NodeType:{},ClusterStatus:{},ModifyStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},ClusterCreateTime:{type:"timestamp"},AutomatedSnapshotRetentionPeriod:{type:"integer"},ClusterSecurityGroups:{type:"list",member:{locationName:"ClusterSecurityGroup",type:"structure",members:{ClusterSecurityGroupName:{},Status:{}}}},VpcSecurityGroups:{type:"list",member:{locationName:"VpcSecurityGroup",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},ClusterParameterGroups:{type:"list",member:{locationName:"ClusterParameterGroup",type:"structure",members:{ParameterGroupName:{},ParameterApplyStatus:{},ClusterParameterStatusList:{type:"list",member:{type:"structure",members:{ParameterName:{},ParameterApplyStatus:{},ParameterApplyErrorDescription:{}}}}}}},ClusterSubnetGroupName:{},VpcId:{},AvailabilityZone:{},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{MasterUserPassword:{},NodeType:{},NumberOfNodes:{type:"integer"},ClusterType:{},ClusterVersion:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},ClusterIdentifier:{},PubliclyAccessible:{type:"boolean"},EnhancedVpcRouting:{type:"boolean"}}},ClusterVersion:{},AllowVersionUpgrade:{type:"boolean"},NumberOfNodes:{type:"integer"},PubliclyAccessible:{type:"boolean"},Encrypted:{type:"boolean"},RestoreStatus:{type:"structure",members:{Status:{},CurrentRestoreRateInMegaBytesPerSecond:{type:"double"},SnapshotSizeInMegaBytes:{type:"long"},ProgressInMegaBytes:{type:"long"},ElapsedTimeInSeconds:{type:"long"},EstimatedTimeToCompletionInSeconds:{type:"long"}}},HsmStatus:{type:"structure",members:{HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},Status:{}}},ClusterSnapshotCopyStatus:{type:"structure",members:{DestinationRegion:{},RetentionPeriod:{type:"long"},SnapshotCopyGrantName:{}}},ClusterPublicKey:{},ClusterNodes:{type:"list",member:{type:"structure",members:{NodeRole:{},PrivateIPAddress:{},PublicIPAddress:{}}}},ElasticIpStatus:{type:"structure",members:{ElasticIp:{},Status:{}}},ClusterRevisionNumber:{},Tags:{shape:"S7"},KmsKeyId:{},EnhancedVpcRouting:{type:"boolean"},IamRoles:{type:"list",member:{locationName:"ClusterIamRole",type:"structure",members:{IamRoleArn:{},ApplyStatus:{}}}}},wrapper:!0},S1g:{type:"structure",members:{ParameterGroupName:{},ParameterGroupFamily:{},Description:{},Tags:{shape:"S7"}},wrapper:!0},S1m:{type:"list",member:{locationName:"SubnetIdentifier"}},S1o:{type:"structure",members:{ClusterSubnetGroupName:{},Description:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S1r"},SubnetStatus:{}}}},Tags:{shape:"S7"}},wrapper:!0},S1r:{type:"structure",members:{Name:{}},wrapper:!0},S1t:{type:"list",member:{locationName:"SourceId"}},S1u:{type:"list",member:{locationName:"EventCategory"}},S1w:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{type:"timestamp"},SourceType:{},SourceIdsList:{shape:"S1t"},EventCategoriesList:{shape:"S1u"},Severity:{},Enabled:{type:"boolean"},Tags:{shape:"S7"}},wrapper:!0},S1z:{type:"structure",members:{HsmClientCertificateIdentifier:{},HsmClientCertificatePublicKey:{},Tags:{shape:"S7"}},wrapper:!0},S22:{type:"structure",members:{HsmConfigurationIdentifier:{},Description:{},HsmIpAddress:{},HsmPartitionName:{},Tags:{shape:"S7"}},wrapper:!0},S25:{type:"structure",members:{SnapshotCopyGrantName:{},KmsKeyId:{},Tags:{shape:"S7"}},wrapper:!0},S2j:{type:"list",member:{locationName:"TagKey"}},S2l:{type:"list",member:{locationName:"TagValue"}},S2q:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},DataType:{},AllowedValues:{},ApplyType:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{}}}},S3x:{type:"structure",members:{LoggingEnabled:{type:"boolean"},BucketName:{},S3KeyPrefix:{},LastSuccessfulDeliveryTime:{type:"timestamp"},LastFailureTime:{type:"timestamp"},LastFailureMessage:{}}},S47:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S4c:{type:"structure",members:{ReservedNodeId:{},ReservedNodeOfferingId:{},NodeType:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},NodeCount:{type:"integer"},State:{},OfferingType:{},RecurringCharges:{shape:"S47"}},wrapper:!0},S4q:{type:"structure",members:{TableRestoreRequestId:{},Status:{},Message:{},RequestTime:{type:"timestamp"},ProgressInMegaBytes:{type:"long"},TotalDataInMegaBytes:{type:"long"},ClusterIdentifier:{},SnapshotIdentifier:{},SourceDatabaseName:{},SourceSchemaName:{},SourceTableName:{},TargetDatabaseName:{},TargetSchemaName:{},NewTableName:{}},wrapper:!0},S57:{type:"structure",members:{ParameterGroupName:{},ParameterGroupStatus:{}}}}}},{}],105:[function(e,t,r){t.exports={pagination:{DescribeClusterParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ParameterGroups"},DescribeClusterParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeClusterSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ClusterSecurityGroups"},DescribeClusterSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Snapshots"},DescribeClusterSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ClusterSubnetGroups"},DescribeClusterVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ClusterVersions"},DescribeClusters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Clusters"},DescribeDefaultClusterParameters:{input_token:"Marker",output_token:"DefaultClusterParameters.Marker",limit_key:"MaxRecords",result_key:"DefaultClusterParameters.Parameters"},DescribeEventSubscriptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"EventSubscriptionsList"},DescribeEvents:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Events"},DescribeHsmClientCertificates:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"HsmClientCertificates"},DescribeHsmConfigurations:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"HsmConfigurations"},DescribeOrderableClusterOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OrderableClusterOptions"},DescribeReservedNodeOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedNodeOfferings"},DescribeReservedNodes:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedNodes"}}}},{}],106:[function(e,t,r){t.exports={version:2,waiters:{ClusterAvailable:{delay:60,operation:"DescribeClusters",maxAttempts:30,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Clusters[].ClusterStatus"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"Clusters[].ClusterStatus"},{expected:"ClusterNotFound",matcher:"error",state:"retry"}]},ClusterDeleted:{delay:60,operation:"DescribeClusters",maxAttempts:30,acceptors:[{expected:"ClusterNotFound",matcher:"error",state:"success"},{expected:"creating",matcher:"pathAny",state:"failure",argument:"Clusters[].ClusterStatus"},{expected:"modifying",matcher:"pathAny",state:"failure",argument:"Clusters[].ClusterStatus"}]},ClusterRestored:{operation:"DescribeClusters",maxAttempts:30,delay:60,acceptors:[{state:"success",matcher:"pathAll",argument:"Clusters[].RestoreStatus.Status",expected:"completed"},{state:"failure",matcher:"pathAny",argument:"Clusters[].ClusterStatus",expected:"deleting"}]},SnapshotAvailable:{delay:15,operation:"DescribeClusterSnapshots",maxAttempts:20,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Snapshots[].Status"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"Snapshots[].Status"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"Snapshots[].Status"}]}}}},{}],107:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-04-01",endpointPrefix:"route53",globalEndpoint:"route53.amazonaws.com",protocol:"rest-xml",serviceAbbreviation:"Route 53",serviceFullName:"Amazon Route 53",signatureVersion:"v4"},operations:{AssociateVPCWithHostedZone:{http:{requestUri:"/2013-04-01/hostedzone/{Id}/associatevpc"},input:{locationName:"AssociateVPCWithHostedZoneRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","VPC"],members:{HostedZoneId:{location:"uri",locationName:"Id"},VPC:{shape:"S3"},Comment:{}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},ChangeResourceRecordSets:{http:{requestUri:"/2013-04-01/hostedzone/{Id}/rrset/"},input:{locationName:"ChangeResourceRecordSetsRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","ChangeBatch"],members:{HostedZoneId:{location:"uri",locationName:"Id"},ChangeBatch:{type:"structure",required:["Changes"],members:{Comment:{},Changes:{shape:"Se"}}}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},ChangeTagsForResource:{http:{requestUri:"/2013-04-01/tags/{ResourceType}/{ResourceId}"},input:{locationName:"ChangeTagsForResourceRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["ResourceType","ResourceId"],members:{ResourceType:{location:"uri",locationName:"ResourceType"},ResourceId:{location:"uri",locationName:"ResourceId"},AddTags:{shape:"S14"},RemoveTagKeys:{type:"list",member:{locationName:"Key"}}}},output:{type:"structure",members:{}}},CreateHealthCheck:{http:{requestUri:"/2013-04-01/healthcheck",responseCode:201},input:{locationName:"CreateHealthCheckRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["CallerReference","HealthCheckConfig"],members:{CallerReference:{},HealthCheckConfig:{shape:"S1c"}}},output:{type:"structure",required:["HealthCheck","Location"],members:{HealthCheck:{shape:"S1x"},Location:{location:"header",locationName:"Location"}}}},CreateHostedZone:{http:{requestUri:"/2013-04-01/hostedzone",responseCode:201},input:{locationName:"CreateHostedZoneRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Name","CallerReference"],members:{Name:{},VPC:{shape:"S3"},CallerReference:{},HostedZoneConfig:{shape:"S2d"},DelegationSetId:{}}},output:{type:"structure",required:["HostedZone","ChangeInfo","DelegationSet","Location"],members:{HostedZone:{shape:"S2g"},ChangeInfo:{shape:"S8"},DelegationSet:{shape:"S2i"},VPC:{shape:"S3"},Location:{location:"header",locationName:"Location"}}}},CreateReusableDelegationSet:{http:{requestUri:"/2013-04-01/delegationset",responseCode:201},input:{locationName:"CreateReusableDelegationSetRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["CallerReference"],members:{CallerReference:{},HostedZoneId:{}}},output:{type:"structure",required:["DelegationSet","Location"],members:{DelegationSet:{shape:"S2i"},Location:{location:"header",locationName:"Location"}}}},CreateTrafficPolicy:{http:{requestUri:"/2013-04-01/trafficpolicy",responseCode:201},input:{locationName:"CreateTrafficPolicyRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Name","Document"],members:{Name:{},Document:{},Comment:{}}},output:{type:"structure",required:["TrafficPolicy","Location"],members:{TrafficPolicy:{shape:"S2r"},Location:{location:"header",locationName:"Location"}}}},CreateTrafficPolicyInstance:{http:{requestUri:"/2013-04-01/trafficpolicyinstance",responseCode:201},input:{locationName:"CreateTrafficPolicyInstanceRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","Name","TTL","TrafficPolicyId","TrafficPolicyVersion"],members:{HostedZoneId:{},Name:{},TTL:{type:"long"},TrafficPolicyId:{},TrafficPolicyVersion:{type:"integer"}}},output:{type:"structure",required:["TrafficPolicyInstance","Location"],members:{TrafficPolicyInstance:{shape:"S2w"},Location:{location:"header",locationName:"Location"}}}},CreateTrafficPolicyVersion:{http:{requestUri:"/2013-04-01/trafficpolicy/{Id}",responseCode:201},input:{locationName:"CreateTrafficPolicyVersionRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id","Document"],members:{Id:{location:"uri",locationName:"Id"},Document:{},Comment:{}}},output:{type:"structure",required:["TrafficPolicy","Location"],members:{TrafficPolicy:{shape:"S2r"},Location:{location:"header",locationName:"Location"}}}},DeleteHealthCheck:{http:{method:"DELETE",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",members:{}}},DeleteHostedZone:{http:{method:"DELETE",requestUri:"/2013-04-01/hostedzone/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},DeleteReusableDelegationSet:{http:{method:"DELETE",requestUri:"/2013-04-01/delegationset/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},DeleteTrafficPolicy:{http:{method:"DELETE",requestUri:"/2013-04-01/trafficpolicy/{Id}/{Version}"},input:{type:"structure",required:["Id","Version"],members:{Id:{location:"uri",locationName:"Id"},Version:{location:"uri",locationName:"Version",type:"integer"}}},output:{type:"structure",members:{}}},DeleteTrafficPolicyInstance:{http:{method:"DELETE",requestUri:"/2013-04-01/trafficpolicyinstance/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},DisassociateVPCFromHostedZone:{http:{requestUri:"/2013-04-01/hostedzone/{Id}/disassociatevpc"},input:{locationName:"DisassociateVPCFromHostedZoneRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","VPC"],members:{HostedZoneId:{location:"uri",locationName:"Id"},VPC:{shape:"S3"},Comment:{}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},GetChange:{http:{method:"GET",requestUri:"/2013-04-01/change/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},GetChangeDetails:{http:{method:"GET",requestUri:"/2013-04-01/changedetails/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}},deprecated:!0},output:{type:"structure",required:["ChangeBatchRecord"],members:{ChangeBatchRecord:{shape:"S3i"}},deprecated:!0},deprecated:!0},GetCheckerIpRanges:{http:{method:"GET",requestUri:"/2013-04-01/checkeripranges"},input:{type:"structure",members:{}},output:{type:"structure",required:["CheckerIpRanges"],members:{CheckerIpRanges:{type:"list",member:{}}}}},GetGeoLocation:{http:{method:"GET",requestUri:"/2013-04-01/geolocation"},input:{type:"structure",members:{ContinentCode:{location:"querystring",locationName:"continentcode"},CountryCode:{location:"querystring",locationName:"countrycode"},SubdivisionCode:{location:"querystring",locationName:"subdivisioncode"}}},output:{type:"structure",required:["GeoLocationDetails"],members:{GeoLocationDetails:{shape:"S3q"}}}},GetHealthCheck:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",required:["HealthCheck"],members:{HealthCheck:{shape:"S1x"}}}},GetHealthCheckCount:{http:{method:"GET",requestUri:"/2013-04-01/healthcheckcount"},input:{type:"structure",members:{}},output:{type:"structure",required:["HealthCheckCount"],members:{HealthCheckCount:{type:"long"}}}},GetHealthCheckLastFailureReason:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",required:["HealthCheckObservations"],members:{HealthCheckObservations:{shape:"S41"}}}},GetHealthCheckStatus:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}/status"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",required:["HealthCheckObservations"],members:{HealthCheckObservations:{shape:"S41"}}}},GetHostedZone:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["HostedZone"],members:{HostedZone:{shape:"S2g"},DelegationSet:{shape:"S2i"},VPCs:{type:"list",member:{shape:"S3",locationName:"VPC"}}}}},GetHostedZoneCount:{http:{method:"GET",requestUri:"/2013-04-01/hostedzonecount"},input:{type:"structure",members:{}},output:{type:"structure",required:["HostedZoneCount"],members:{HostedZoneCount:{type:"long"}}}},GetReusableDelegationSet:{http:{method:"GET",requestUri:"/2013-04-01/delegationset/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["DelegationSet"],members:{DelegationSet:{shape:"S2i"}}}},GetTrafficPolicy:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicy/{Id}/{Version}"},input:{type:"structure",required:["Id","Version"],members:{Id:{location:"uri",locationName:"Id"},Version:{location:"uri",locationName:"Version",type:"integer"}}},output:{type:"structure",required:["TrafficPolicy"],members:{TrafficPolicy:{shape:"S2r"}}}},GetTrafficPolicyInstance:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstance/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["TrafficPolicyInstance"],members:{TrafficPolicyInstance:{shape:"S2w"}}}},GetTrafficPolicyInstanceCount:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstancecount"},input:{type:"structure",members:{}},output:{type:"structure",required:["TrafficPolicyInstanceCount"],members:{TrafficPolicyInstanceCount:{type:"integer"}}}},ListChangeBatchesByHostedZone:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}/changes"},input:{type:"structure",required:["HostedZoneId","StartDate","EndDate"],members:{HostedZoneId:{location:"uri",locationName:"Id"},StartDate:{shape:"S4n",location:"querystring",locationName:"startDate"},EndDate:{shape:"S4n",location:"querystring",locationName:"endDate"},MaxItems:{location:"querystring",locationName:"maxItems"},Marker:{location:"querystring",locationName:"marker"}},deprecated:!0},output:{type:"structure",required:["MaxItems","Marker","ChangeBatchRecords"],members:{MaxItems:{},Marker:{},IsTruncated:{type:"boolean"},ChangeBatchRecords:{shape:"S4s"},NextMarker:{}},deprecated:!0},deprecated:!0},ListChangeBatchesByRRSet:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}/rrsChanges"},input:{type:"structure",required:["HostedZoneId","Name","Type","StartDate","EndDate"],members:{HostedZoneId:{location:"uri",locationName:"Id"},Name:{location:"querystring",locationName:"rrSet_name"},Type:{location:"querystring",locationName:"type"},SetIdentifier:{location:"querystring",locationName:"identifier"},StartDate:{shape:"S4n",location:"querystring",locationName:"startDate"},EndDate:{shape:"S4n",location:"querystring",locationName:"endDate"},MaxItems:{location:"querystring",locationName:"maxItems"},Marker:{location:"querystring",locationName:"marker"}},deprecated:!0},output:{type:"structure",required:["MaxItems","Marker","ChangeBatchRecords"],members:{MaxItems:{},Marker:{},IsTruncated:{type:"boolean"},ChangeBatchRecords:{shape:"S4s"},NextMarker:{}},deprecated:!0},deprecated:!0},ListGeoLocations:{http:{method:"GET",requestUri:"/2013-04-01/geolocations"},input:{type:"structure",members:{StartContinentCode:{location:"querystring",locationName:"startcontinentcode"},StartCountryCode:{location:"querystring",locationName:"startcountrycode"},StartSubdivisionCode:{location:"querystring",locationName:"startsubdivisioncode"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["GeoLocationDetailsList","IsTruncated","MaxItems"],members:{GeoLocationDetailsList:{type:"list",member:{shape:"S3q",locationName:"GeoLocationDetails"}},IsTruncated:{type:"boolean"},NextContinentCode:{},NextCountryCode:{},NextSubdivisionCode:{},MaxItems:{}}}},ListHealthChecks:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck"},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"marker"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["HealthChecks","Marker","IsTruncated","MaxItems"],members:{HealthChecks:{type:"list",member:{shape:"S1x",locationName:"HealthCheck"}},Marker:{},IsTruncated:{type:"boolean"},NextMarker:{},MaxItems:{}}}},ListHostedZones:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone"},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"marker"},MaxItems:{location:"querystring",locationName:"maxitems"},DelegationSetId:{location:"querystring",locationName:"delegationsetid"}}},output:{type:"structure",required:["HostedZones","Marker","IsTruncated","MaxItems"],members:{HostedZones:{shape:"S53"},Marker:{},IsTruncated:{type:"boolean"},NextMarker:{},MaxItems:{}}}},ListHostedZonesByName:{http:{method:"GET",requestUri:"/2013-04-01/hostedzonesbyname"},input:{type:"structure",members:{DNSName:{location:"querystring",locationName:"dnsname"},HostedZoneId:{location:"querystring",locationName:"hostedzoneid"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["HostedZones","IsTruncated","MaxItems"],members:{HostedZones:{shape:"S53"},DNSName:{},HostedZoneId:{},IsTruncated:{type:"boolean"},NextDNSName:{},NextHostedZoneId:{},MaxItems:{}}}},ListResourceRecordSets:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}/rrset"},input:{type:"structure",required:["HostedZoneId"],members:{HostedZoneId:{location:"uri",locationName:"Id"},StartRecordName:{location:"querystring",locationName:"name"},StartRecordType:{location:"querystring",locationName:"type"},StartRecordIdentifier:{location:"querystring",locationName:"identifier"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["ResourceRecordSets","IsTruncated","MaxItems"],members:{ResourceRecordSets:{type:"list",member:{shape:"Sh",locationName:"ResourceRecordSet"}},IsTruncated:{type:"boolean"},NextRecordName:{},NextRecordType:{},NextRecordIdentifier:{},MaxItems:{}}}},ListReusableDelegationSets:{http:{method:"GET",requestUri:"/2013-04-01/delegationset"},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"marker"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["DelegationSets","Marker","IsTruncated","MaxItems"],members:{DelegationSets:{type:"list",member:{shape:"S2i",locationName:"DelegationSet"}},Marker:{},IsTruncated:{type:"boolean"},NextMarker:{},MaxItems:{}}}},ListTagsForResource:{http:{method:"GET",requestUri:"/2013-04-01/tags/{ResourceType}/{ResourceId}"},input:{type:"structure",required:["ResourceType","ResourceId"],members:{ResourceType:{location:"uri",locationName:"ResourceType"},ResourceId:{location:"uri",locationName:"ResourceId"}}},output:{type:"structure",required:["ResourceTagSet"],members:{ResourceTagSet:{shape:"S5e"}}}},ListTagsForResources:{http:{requestUri:"/2013-04-01/tags/{ResourceType}"},input:{locationName:"ListTagsForResourcesRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["ResourceType","ResourceIds"],members:{ResourceType:{location:"uri",locationName:"ResourceType"},ResourceIds:{type:"list",member:{locationName:"ResourceId"}}}},output:{type:"structure",required:["ResourceTagSets"],members:{ResourceTagSets:{type:"list",member:{shape:"S5e",locationName:"ResourceTagSet"}}}}},ListTrafficPolicies:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicies"},input:{type:"structure",members:{TrafficPolicyIdMarker:{location:"querystring",locationName:"trafficpolicyid"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicySummaries","IsTruncated","TrafficPolicyIdMarker","MaxItems"],members:{TrafficPolicySummaries:{type:"list",member:{locationName:"TrafficPolicySummary",type:"structure",required:["Id","Name","Type","LatestVersion","TrafficPolicyCount"],members:{Id:{},Name:{},Type:{},LatestVersion:{type:"integer"},TrafficPolicyCount:{type:"integer"}}}},IsTruncated:{type:"boolean"},TrafficPolicyIdMarker:{},MaxItems:{}}}},ListTrafficPolicyInstances:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstances"},input:{type:"structure",members:{HostedZoneIdMarker:{location:"querystring",locationName:"hostedzoneid"},TrafficPolicyInstanceNameMarker:{location:"querystring",locationName:"trafficpolicyinstancename"},TrafficPolicyInstanceTypeMarker:{location:"querystring",locationName:"trafficpolicyinstancetype"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicyInstances","IsTruncated","MaxItems"],members:{TrafficPolicyInstances:{shape:"S5p"},HostedZoneIdMarker:{},TrafficPolicyInstanceNameMarker:{},TrafficPolicyInstanceTypeMarker:{},IsTruncated:{type:"boolean"},MaxItems:{}}}},ListTrafficPolicyInstancesByHostedZone:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstances/hostedzone"},input:{type:"structure",required:["HostedZoneId"],members:{HostedZoneId:{location:"querystring",locationName:"id"},TrafficPolicyInstanceNameMarker:{location:"querystring",locationName:"trafficpolicyinstancename"},TrafficPolicyInstanceTypeMarker:{location:"querystring",locationName:"trafficpolicyinstancetype"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicyInstances","IsTruncated","MaxItems"],members:{TrafficPolicyInstances:{ +shape:"S5p"},TrafficPolicyInstanceNameMarker:{},TrafficPolicyInstanceTypeMarker:{},IsTruncated:{type:"boolean"},MaxItems:{}}}},ListTrafficPolicyInstancesByPolicy:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstances/trafficpolicy"},input:{type:"structure",required:["TrafficPolicyId","TrafficPolicyVersion"],members:{TrafficPolicyId:{location:"querystring",locationName:"id"},TrafficPolicyVersion:{location:"querystring",locationName:"version",type:"integer"},HostedZoneIdMarker:{location:"querystring",locationName:"hostedzoneid"},TrafficPolicyInstanceNameMarker:{location:"querystring",locationName:"trafficpolicyinstancename"},TrafficPolicyInstanceTypeMarker:{location:"querystring",locationName:"trafficpolicyinstancetype"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicyInstances","IsTruncated","MaxItems"],members:{TrafficPolicyInstances:{shape:"S5p"},HostedZoneIdMarker:{},TrafficPolicyInstanceNameMarker:{},TrafficPolicyInstanceTypeMarker:{},IsTruncated:{type:"boolean"},MaxItems:{}}}},ListTrafficPolicyVersions:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicies/{Id}/versions"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"},TrafficPolicyVersionMarker:{location:"querystring",locationName:"trafficpolicyversion"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicies","IsTruncated","TrafficPolicyVersionMarker","MaxItems"],members:{TrafficPolicies:{type:"list",member:{shape:"S2r",locationName:"TrafficPolicy"}},IsTruncated:{type:"boolean"},TrafficPolicyVersionMarker:{},MaxItems:{}}}},TestDNSAnswer:{http:{method:"GET",requestUri:"/2013-04-01/testdnsanswer"},input:{type:"structure",required:["HostedZoneId","RecordName","RecordType"],members:{HostedZoneId:{location:"querystring",locationName:"hostedzoneid"},RecordName:{location:"querystring",locationName:"recordname"},RecordType:{location:"querystring",locationName:"recordtype"},ResolverIP:{location:"querystring",locationName:"resolverip"},EDNS0ClientSubnetIP:{location:"querystring",locationName:"edns0clientsubnetip"},EDNS0ClientSubnetMask:{location:"querystring",locationName:"edns0clientsubnetmask"}}},output:{type:"structure",required:["Nameserver","RecordName","RecordType","RecordData","ResponseCode","Protocol"],members:{Nameserver:{},RecordName:{},RecordType:{},RecordData:{type:"list",member:{locationName:"RecordDataEntry"}},ResponseCode:{},Protocol:{}}}},UpdateHealthCheck:{http:{requestUri:"/2013-04-01/healthcheck/{HealthCheckId}"},input:{locationName:"UpdateHealthCheckRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"},HealthCheckVersion:{type:"long"},IPAddress:{},Port:{type:"integer"},ResourcePath:{},FullyQualifiedDomainName:{},SearchString:{},FailureThreshold:{type:"integer"},Inverted:{type:"boolean"},HealthThreshold:{type:"integer"},ChildHealthChecks:{shape:"S1o"},EnableSNI:{type:"boolean"},Regions:{shape:"S1q"},AlarmIdentifier:{shape:"S1s"},InsufficientDataHealthStatus:{}}},output:{type:"structure",required:["HealthCheck"],members:{HealthCheck:{shape:"S1x"}}}},UpdateHostedZoneComment:{http:{requestUri:"/2013-04-01/hostedzone/{Id}"},input:{locationName:"UpdateHostedZoneCommentRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"},Comment:{}}},output:{type:"structure",required:["HostedZone"],members:{HostedZone:{shape:"S2g"}}}},UpdateTrafficPolicyComment:{http:{requestUri:"/2013-04-01/trafficpolicy/{Id}/{Version}"},input:{locationName:"UpdateTrafficPolicyCommentRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id","Version","Comment"],members:{Id:{location:"uri",locationName:"Id"},Version:{location:"uri",locationName:"Version",type:"integer"},Comment:{}}},output:{type:"structure",required:["TrafficPolicy"],members:{TrafficPolicy:{shape:"S2r"}}}},UpdateTrafficPolicyInstance:{http:{requestUri:"/2013-04-01/trafficpolicyinstance/{Id}"},input:{locationName:"UpdateTrafficPolicyInstanceRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id","TTL","TrafficPolicyId","TrafficPolicyVersion"],members:{Id:{location:"uri",locationName:"Id"},TTL:{type:"long"},TrafficPolicyId:{},TrafficPolicyVersion:{type:"integer"}}},output:{type:"structure",required:["TrafficPolicyInstance"],members:{TrafficPolicyInstance:{shape:"S2w"}}}}},shapes:{S3:{type:"structure",members:{VPCRegion:{},VPCId:{}}},S8:{type:"structure",required:["Id","Status","SubmittedAt"],members:{Id:{},Status:{},SubmittedAt:{type:"timestamp"},Comment:{}}},Se:{type:"list",member:{locationName:"Change",type:"structure",required:["Action","ResourceRecordSet"],members:{Action:{},ResourceRecordSet:{shape:"Sh"}}}},Sh:{type:"structure",required:["Name","Type"],members:{Name:{},Type:{},SetIdentifier:{},Weight:{type:"long"},Region:{},GeoLocation:{type:"structure",members:{ContinentCode:{},CountryCode:{},SubdivisionCode:{}}},Failover:{},TTL:{type:"long"},ResourceRecords:{type:"list",member:{locationName:"ResourceRecord",type:"structure",required:["Value"],members:{Value:{}}}},AliasTarget:{type:"structure",required:["HostedZoneId","DNSName","EvaluateTargetHealth"],members:{HostedZoneId:{},DNSName:{},EvaluateTargetHealth:{type:"boolean"}}},HealthCheckId:{},TrafficPolicyInstanceId:{}}},S14:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},S1c:{type:"structure",required:["Type"],members:{IPAddress:{},Port:{type:"integer"},Type:{},ResourcePath:{},FullyQualifiedDomainName:{},SearchString:{},RequestInterval:{type:"integer"},FailureThreshold:{type:"integer"},MeasureLatency:{type:"boolean"},Inverted:{type:"boolean"},HealthThreshold:{type:"integer"},ChildHealthChecks:{shape:"S1o"},EnableSNI:{type:"boolean"},Regions:{shape:"S1q"},AlarmIdentifier:{shape:"S1s"},InsufficientDataHealthStatus:{}}},S1o:{type:"list",member:{locationName:"ChildHealthCheck"}},S1q:{type:"list",member:{locationName:"Region"}},S1s:{type:"structure",required:["Region","Name"],members:{Region:{},Name:{}}},S1x:{type:"structure",required:["Id","CallerReference","HealthCheckConfig","HealthCheckVersion"],members:{Id:{},CallerReference:{},HealthCheckConfig:{shape:"S1c"},HealthCheckVersion:{type:"long"},CloudWatchAlarmConfiguration:{type:"structure",required:["EvaluationPeriods","Threshold","ComparisonOperator","Period","MetricName","Namespace","Statistic"],members:{EvaluationPeriods:{type:"integer"},Threshold:{type:"double"},ComparisonOperator:{},Period:{type:"integer"},MetricName:{},Namespace:{},Statistic:{},Dimensions:{type:"list",member:{locationName:"Dimension",type:"structure",required:["Name","Value"],members:{Name:{},Value:{}}}}}}}},S2d:{type:"structure",members:{Comment:{},PrivateZone:{type:"boolean"}}},S2g:{type:"structure",required:["Id","Name","CallerReference"],members:{Id:{},Name:{},CallerReference:{},Config:{shape:"S2d"},ResourceRecordSetCount:{type:"long"}}},S2i:{type:"structure",required:["NameServers"],members:{Id:{},CallerReference:{},NameServers:{type:"list",member:{locationName:"NameServer"}}}},S2r:{type:"structure",required:["Id","Version","Name","Type","Document"],members:{Id:{},Version:{type:"integer"},Name:{},Type:{},Document:{},Comment:{}}},S2w:{type:"structure",required:["Id","HostedZoneId","Name","TTL","State","Message","TrafficPolicyId","TrafficPolicyVersion","TrafficPolicyType"],members:{Id:{},HostedZoneId:{},Name:{},TTL:{type:"long"},State:{},Message:{},TrafficPolicyId:{},TrafficPolicyVersion:{type:"integer"},TrafficPolicyType:{}}},S3i:{type:"structure",required:["Id","Status"],members:{Id:{},SubmittedAt:{type:"timestamp"},Status:{},Comment:{},Submitter:{},Changes:{shape:"Se"}},deprecated:!0},S3q:{type:"structure",members:{ContinentCode:{},ContinentName:{},CountryCode:{},CountryName:{},SubdivisionCode:{},SubdivisionName:{}}},S41:{type:"list",member:{locationName:"HealthCheckObservation",type:"structure",members:{Region:{},IPAddress:{},StatusReport:{type:"structure",members:{Status:{},CheckedTime:{type:"timestamp"}}}}}},S4n:{type:"string",deprecated:!0},S4s:{type:"list",member:{shape:"S3i",locationName:"ChangeBatchRecord"},deprecated:!0},S53:{type:"list",member:{shape:"S2g",locationName:"HostedZone"}},S5e:{type:"structure",members:{ResourceType:{},ResourceId:{},Tags:{shape:"S14"}}},S5p:{type:"list",member:{shape:"S2w",locationName:"TrafficPolicyInstance"}}}}},{}],108:[function(e,t,r){t.exports={pagination:{ListHealthChecks:{input_token:"Marker",output_token:"NextMarker",more_results:"IsTruncated",limit_key:"MaxItems",result_key:"HealthChecks"},ListHostedZones:{input_token:"Marker",output_token:"NextMarker",more_results:"IsTruncated",limit_key:"MaxItems",result_key:"HostedZones"},ListResourceRecordSets:{more_results:"IsTruncated",limit_key:"MaxItems",result_key:"ResourceRecordSets",input_token:["StartRecordName","StartRecordType","StartRecordIdentifier"],output_token:["NextRecordName","NextRecordType","NextRecordIdentifier"]}}}},{}],109:[function(e,t,r){t.exports={version:2,waiters:{ResourceRecordSetsChanged:{delay:30,maxAttempts:60,operation:"GetChange",acceptors:[{matcher:"path",expected:"INSYNC",argument:"ChangeInfo.Status",state:"success"}]}}}},{}],110:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-05-15",endpointPrefix:"route53domains",jsonVersion:"1.1",protocol:"json",serviceFullName:"Amazon Route 53 Domains",signatureVersion:"v4",targetPrefix:"Route53Domains_v20140515"},operations:{CheckDomainAvailability:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},IdnLangCode:{}}},output:{type:"structure",required:["Availability"],members:{Availability:{}}}},DeleteTagsForDomain:{input:{type:"structure",required:["DomainName","TagsToDelete"],members:{DomainName:{},TagsToDelete:{type:"list",member:{}}}},output:{type:"structure",members:{}}},DisableDomainAutoRenew:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",members:{}}},DisableDomainTransferLock:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},EnableDomainAutoRenew:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",members:{}}},EnableDomainTransferLock:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},GetContactReachabilityStatus:{input:{type:"structure",members:{domainName:{}}},output:{type:"structure",members:{domainName:{},status:{}}}},GetDomainDetail:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["DomainName","Nameservers","AdminContact","RegistrantContact","TechContact"],members:{DomainName:{},Nameservers:{shape:"So"},AutoRenew:{type:"boolean"},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"},AdminPrivacy:{type:"boolean"},RegistrantPrivacy:{type:"boolean"},TechPrivacy:{type:"boolean"},RegistrarName:{},WhoIsServer:{},RegistrarUrl:{},AbuseContactEmail:{},AbuseContactPhone:{},RegistryDomainId:{},CreationDate:{type:"timestamp"},UpdatedDate:{type:"timestamp"},ExpirationDate:{type:"timestamp"},Reseller:{},DnsSec:{},StatusList:{type:"list",member:{}}}}},GetDomainSuggestions:{input:{type:"structure",required:["DomainName","SuggestionCount","OnlyAvailable"],members:{DomainName:{},SuggestionCount:{type:"integer"},OnlyAvailable:{type:"boolean"}}},output:{type:"structure",members:{SuggestionsList:{type:"list",member:{type:"structure",members:{DomainName:{},Availability:{}}}}}}},GetOperationDetail:{input:{type:"structure",required:["OperationId"],members:{OperationId:{}}},output:{type:"structure",members:{OperationId:{},Status:{},Message:{},DomainName:{},Type:{},SubmittedDate:{type:"timestamp"}}}},ListDomains:{input:{type:"structure",members:{Marker:{},MaxItems:{type:"integer"}}},output:{type:"structure",required:["Domains"],members:{Domains:{type:"list",member:{type:"structure",required:["DomainName"],members:{DomainName:{},AutoRenew:{type:"boolean"},TransferLock:{type:"boolean"},Expiry:{type:"timestamp"}}}},NextPageMarker:{}}}},ListOperations:{input:{type:"structure",members:{Marker:{},MaxItems:{type:"integer"}}},output:{type:"structure",required:["Operations"],members:{Operations:{type:"list",member:{type:"structure",required:["OperationId","Status","Type","SubmittedDate"],members:{OperationId:{},Status:{},Type:{},SubmittedDate:{type:"timestamp"}}}},NextPageMarker:{}}}},ListTagsForDomain:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["TagList"],members:{TagList:{shape:"S24"}}}},RegisterDomain:{input:{type:"structure",required:["DomainName","DurationInYears","AdminContact","RegistrantContact","TechContact"],members:{DomainName:{},IdnLangCode:{},DurationInYears:{type:"integer"},AutoRenew:{type:"boolean"},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"},PrivacyProtectAdminContact:{type:"boolean"},PrivacyProtectRegistrantContact:{type:"boolean"},PrivacyProtectTechContact:{type:"boolean"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},RenewDomain:{input:{type:"structure",required:["DomainName","CurrentExpiryYear"],members:{DomainName:{},DurationInYears:{type:"integer"},CurrentExpiryYear:{type:"integer"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},ResendContactReachabilityEmail:{input:{type:"structure",members:{domainName:{}}},output:{type:"structure",members:{domainName:{},emailAddress:{},isAlreadyVerified:{type:"boolean"}}}},RetrieveDomainAuthCode:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["AuthCode"],members:{AuthCode:{shape:"S2h"}}}},TransferDomain:{input:{type:"structure",required:["DomainName","DurationInYears","AdminContact","RegistrantContact","TechContact"],members:{DomainName:{},IdnLangCode:{},DurationInYears:{type:"integer"},Nameservers:{shape:"So"},AuthCode:{shape:"S2h"},AutoRenew:{type:"boolean"},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"},PrivacyProtectAdminContact:{type:"boolean"},PrivacyProtectRegistrantContact:{type:"boolean"},PrivacyProtectTechContact:{type:"boolean"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateDomainContact:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateDomainContactPrivacy:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},AdminPrivacy:{type:"boolean"},RegistrantPrivacy:{type:"boolean"},TechPrivacy:{type:"boolean"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateDomainNameservers:{input:{type:"structure",required:["DomainName","Nameservers"],members:{DomainName:{},FIAuthKey:{},Nameservers:{shape:"So"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateTagsForDomain:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},TagsToUpdate:{shape:"S24"}}},output:{type:"structure",members:{}}},ViewBilling:{input:{type:"structure",members:{Start:{type:"timestamp"},End:{type:"timestamp"},Marker:{},MaxItems:{type:"integer"}}},output:{type:"structure",members:{NextPageMarker:{},BillingRecords:{type:"list",member:{type:"structure",members:{DomainName:{},Operation:{},InvoiceId:{},BillDate:{type:"timestamp"},Price:{type:"double"}}}}}}}},shapes:{So:{type:"list",member:{type:"structure",required:["Name"],members:{Name:{},GlueIps:{type:"list",member:{}}}}},Su:{type:"structure",members:{FirstName:{},LastName:{},ContactType:{},OrganizationName:{},AddressLine1:{},AddressLine2:{},City:{},State:{},CountryCode:{},ZipCode:{},PhoneNumber:{},Email:{},Fax:{},ExtraParams:{type:"list",member:{type:"structure",required:["Name","Value"],members:{Name:{},Value:{}}}}},sensitive:!0},S24:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S2h:{type:"string",sensitive:!0}}}},{}],111:[function(e,t,r){t.exports={version:"1.0",pagination:{ListDomains:{limit_key:"MaxItems",input_token:"Marker",output_token:"NextPageMarker",result_key:"Domains"},ListOperations:{limit_key:"MaxItems",input_token:"Marker",output_token:"NextPageMarker",result_key:"Operations"}}}},{}],112:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2006-03-01",checksumFormat:"md5",endpointPrefix:"s3",globalEndpoint:"s3.amazonaws.com",protocol:"rest-xml",serviceAbbreviation:"Amazon S3",serviceFullName:"Amazon Simple Storage Service",signatureVersion:"s3",timestampFormat:"rfc822"},operations:{AbortMultipartUpload:{http:{method:"DELETE",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},UploadId:{location:"querystring",locationName:"uploadId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},CompleteMultipartUpload:{http:{requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},MultipartUpload:{locationName:"CompleteMultipartUpload",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{Parts:{locationName:"Part",type:"list",member:{type:"structure",members:{ETag:{},PartNumber:{type:"integer"}}},flattened:!0}}},UploadId:{location:"querystring",locationName:"uploadId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"MultipartUpload"},output:{type:"structure",members:{Location:{},Bucket:{},Key:{},Expiration:{location:"header",locationName:"x-amz-expiration"},ETag:{},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},VersionId:{location:"header",locationName:"x-amz-version-id"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},CopyObject:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","CopySource","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Bucket:{location:"uri",locationName:"Bucket"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentType:{location:"header",locationName:"Content-Type"},CopySource:{location:"header",locationName:"x-amz-copy-source"},CopySourceIfMatch:{location:"header",locationName:"x-amz-copy-source-if-match"},CopySourceIfModifiedSince:{location:"header",locationName:"x-amz-copy-source-if-modified-since",type:"timestamp"},CopySourceIfNoneMatch:{location:"header",locationName:"x-amz-copy-source-if-none-match"},CopySourceIfUnmodifiedSince:{location:"header",locationName:"x-amz-copy-source-if-unmodified-since",type:"timestamp"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},MetadataDirective:{location:"header",locationName:"x-amz-metadata-directive"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},CopySourceSSECustomerAlgorithm:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm"},CopySourceSSECustomerKey:{shape:"S1b",location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key"},CopySourceSSECustomerKeyMD5:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{CopyObjectResult:{type:"structure",members:{ETag:{},LastModified:{type:"timestamp"}}},Expiration:{location:"header",locationName:"x-amz-expiration"},CopySourceVersionId:{location:"header",locationName:"x-amz-copy-source-version-id"},VersionId:{location:"header",locationName:"x-amz-version-id"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}},payload:"CopyObjectResult"},alias:"PutObjectCopy"},CreateBucket:{http:{method:"PUT",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Bucket:{location:"uri",locationName:"Bucket"},CreateBucketConfiguration:{locationName:"CreateBucketConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{LocationConstraint:{}}},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWrite:{location:"header",locationName:"x-amz-grant-write"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"}},payload:"CreateBucketConfiguration"},output:{type:"structure",members:{Location:{location:"header",locationName:"Location"}}},alias:"PutBucket"},CreateMultipartUpload:{http:{requestUri:"/{Bucket}/{Key+}?uploads"},input:{type:"structure",required:["Bucket","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Bucket:{location:"uri",locationName:"Bucket"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{AbortDate:{location:"header",locationName:"x-amz-abort-date",type:"timestamp"},AbortRuleId:{location:"header",locationName:"x-amz-abort-rule-id"},Bucket:{locationName:"Bucket"},Key:{},UploadId:{},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}},alias:"InitiateMultipartUpload"},DeleteBucket:{http:{method:"DELETE",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketCors:{http:{method:"DELETE",requestUri:"/{Bucket}?cors"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketLifecycle:{http:{method:"DELETE",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketPolicy:{http:{method:"DELETE",requestUri:"/{Bucket}?policy"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketReplication:{http:{method:"DELETE",requestUri:"/{Bucket}?replication"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketTagging:{http:{method:"DELETE",requestUri:"/{Bucket}?tagging"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketWebsite:{http:{method:"DELETE",requestUri:"/{Bucket}?website"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteObject:{http:{method:"DELETE",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},MFA:{location:"header",locationName:"x-amz-mfa"},VersionId:{location:"querystring",locationName:"versionId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{DeleteMarker:{location:"header",locationName:"x-amz-delete-marker",type:"boolean"},VersionId:{location:"header",locationName:"x-amz-version-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},DeleteObjects:{http:{requestUri:"/{Bucket}?delete"},input:{type:"structure",required:["Bucket","Delete"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delete:{locationName:"Delete",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Objects"],members:{Objects:{locationName:"Object",type:"list",member:{type:"structure",required:["Key"],members:{Key:{},VersionId:{}}},flattened:!0},Quiet:{type:"boolean"}}},MFA:{location:"header",locationName:"x-amz-mfa"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"Delete"},output:{type:"structure",members:{Deleted:{type:"list",member:{type:"structure",members:{Key:{},VersionId:{},DeleteMarker:{type:"boolean"},DeleteMarkerVersionId:{}}},flattened:!0},RequestCharged:{location:"header",locationName:"x-amz-request-charged"},Errors:{locationName:"Error",type:"list",member:{type:"structure",members:{Key:{},VersionId:{},Code:{},Message:{}}},flattened:!0}}},alias:"DeleteMultipleObjects"},GetBucketAccelerateConfiguration:{http:{method:"GET",requestUri:"/{Bucket}?accelerate"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Status:{}}}},GetBucketAcl:{http:{method:"GET",requestUri:"/{Bucket}?acl"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Owner:{shape:"S2k"},Grants:{shape:"S2n",locationName:"AccessControlList"}}}},GetBucketCors:{http:{method:"GET",requestUri:"/{Bucket}?cors"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{CORSRules:{shape:"S2w",locationName:"CORSRule"}}}},GetBucketLifecycle:{http:{method:"GET",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Rules:{shape:"S39",locationName:"Rule"}}},deprecated:!0},GetBucketLifecycleConfiguration:{http:{method:"GET",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Rules:{shape:"S3p",locationName:"Rule"}}}},GetBucketLocation:{http:{method:"GET",requestUri:"/{Bucket}?location"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{LocationConstraint:{}}}},GetBucketLogging:{http:{method:"GET",requestUri:"/{Bucket}?logging"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{LoggingEnabled:{shape:"S3x"}}}},GetBucketNotification:{http:{method:"GET",requestUri:"/{Bucket}?notification"},input:{shape:"S43"},output:{shape:"S44"},deprecated:!0},GetBucketNotificationConfiguration:{http:{method:"GET",requestUri:"/{Bucket}?notification"},input:{shape:"S43"},output:{shape:"S4f"}},GetBucketPolicy:{http:{method:"GET",requestUri:"/{Bucket}?policy"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Policy:{}},payload:"Policy"}},GetBucketReplication:{http:{method:"GET",requestUri:"/{Bucket}?replication"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{ReplicationConfiguration:{shape:"S4y"}},payload:"ReplicationConfiguration"}},GetBucketRequestPayment:{http:{method:"GET",requestUri:"/{Bucket}?requestPayment"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Payer:{}}}},GetBucketTagging:{http:{method:"GET",requestUri:"/{Bucket}?tagging"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",required:["TagSet"],members:{TagSet:{shape:"S59"}}}},GetBucketVersioning:{http:{method:"GET",requestUri:"/{Bucket}?versioning"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Status:{},MFADelete:{locationName:"MfaDelete"}}}},GetBucketWebsite:{http:{method:"GET",requestUri:"/{Bucket}?website"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{RedirectAllRequestsTo:{shape:"S5i"},IndexDocument:{shape:"S5l"},ErrorDocument:{shape:"S5n"},RoutingRules:{shape:"S5o"}}}},GetObject:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}" +},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},IfMatch:{location:"header",locationName:"If-Match"},IfModifiedSince:{location:"header",locationName:"If-Modified-Since",type:"timestamp"},IfNoneMatch:{location:"header",locationName:"If-None-Match"},IfUnmodifiedSince:{location:"header",locationName:"If-Unmodified-Since",type:"timestamp"},Key:{location:"uri",locationName:"Key"},Range:{location:"header",locationName:"Range"},ResponseCacheControl:{location:"querystring",locationName:"response-cache-control"},ResponseContentDisposition:{location:"querystring",locationName:"response-content-disposition"},ResponseContentEncoding:{location:"querystring",locationName:"response-content-encoding"},ResponseContentLanguage:{location:"querystring",locationName:"response-content-language"},ResponseContentType:{location:"querystring",locationName:"response-content-type"},ResponseExpires:{location:"querystring",locationName:"response-expires",type:"timestamp"},VersionId:{location:"querystring",locationName:"versionId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"}}},output:{type:"structure",members:{Body:{streaming:!0,type:"blob"},DeleteMarker:{location:"header",locationName:"x-amz-delete-marker",type:"boolean"},AcceptRanges:{location:"header",locationName:"accept-ranges"},Expiration:{location:"header",locationName:"x-amz-expiration"},Restore:{location:"header",locationName:"x-amz-restore"},LastModified:{location:"header",locationName:"Last-Modified",type:"timestamp"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ETag:{location:"header",locationName:"ETag"},MissingMeta:{location:"header",locationName:"x-amz-missing-meta",type:"integer"},VersionId:{location:"header",locationName:"x-amz-version-id"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentRange:{location:"header",locationName:"Content-Range"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"},ReplicationStatus:{location:"header",locationName:"x-amz-replication-status"},PartsCount:{location:"header",locationName:"x-amz-mp-parts-count",type:"integer"}},payload:"Body"}},GetObjectAcl:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}?acl"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},VersionId:{location:"querystring",locationName:"versionId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{Owner:{shape:"S2k"},Grants:{shape:"S2n",locationName:"AccessControlList"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},GetObjectTorrent:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}?torrent"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{Body:{streaming:!0,type:"blob"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}},payload:"Body"}},HeadBucket:{http:{method:"HEAD",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},HeadObject:{http:{method:"HEAD",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},IfMatch:{location:"header",locationName:"If-Match"},IfModifiedSince:{location:"header",locationName:"If-Modified-Since",type:"timestamp"},IfNoneMatch:{location:"header",locationName:"If-None-Match"},IfUnmodifiedSince:{location:"header",locationName:"If-Unmodified-Since",type:"timestamp"},Key:{location:"uri",locationName:"Key"},Range:{location:"header",locationName:"Range"},VersionId:{location:"querystring",locationName:"versionId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"}}},output:{type:"structure",members:{DeleteMarker:{location:"header",locationName:"x-amz-delete-marker",type:"boolean"},AcceptRanges:{location:"header",locationName:"accept-ranges"},Expiration:{location:"header",locationName:"x-amz-expiration"},Restore:{location:"header",locationName:"x-amz-restore"},LastModified:{location:"header",locationName:"Last-Modified",type:"timestamp"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ETag:{location:"header",locationName:"ETag"},MissingMeta:{location:"header",locationName:"x-amz-missing-meta",type:"integer"},VersionId:{location:"header",locationName:"x-amz-version-id"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"},ReplicationStatus:{location:"header",locationName:"x-amz-replication-status"},PartsCount:{location:"header",locationName:"x-amz-mp-parts-count",type:"integer"}}}},ListBuckets:{http:{method:"GET"},output:{type:"structure",members:{Buckets:{type:"list",member:{locationName:"Bucket",type:"structure",members:{Name:{},CreationDate:{type:"timestamp"}}}},Owner:{shape:"S2k"}}},alias:"GetService"},ListMultipartUploads:{http:{method:"GET",requestUri:"/{Bucket}?uploads"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},KeyMarker:{location:"querystring",locationName:"key-marker"},MaxUploads:{location:"querystring",locationName:"max-uploads",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},UploadIdMarker:{location:"querystring",locationName:"upload-id-marker"}}},output:{type:"structure",members:{Bucket:{},KeyMarker:{},UploadIdMarker:{},NextKeyMarker:{},Prefix:{},Delimiter:{},NextUploadIdMarker:{},MaxUploads:{type:"integer"},IsTruncated:{type:"boolean"},Uploads:{locationName:"Upload",type:"list",member:{type:"structure",members:{UploadId:{},Key:{},Initiated:{type:"timestamp"},StorageClass:{},Owner:{shape:"S2k"},Initiator:{shape:"S76"}}},flattened:!0},CommonPrefixes:{shape:"S77"},EncodingType:{}}}},ListObjectVersions:{http:{method:"GET",requestUri:"/{Bucket}?versions"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},KeyMarker:{location:"querystring",locationName:"key-marker"},MaxKeys:{location:"querystring",locationName:"max-keys",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},VersionIdMarker:{location:"querystring",locationName:"version-id-marker"}}},output:{type:"structure",members:{IsTruncated:{type:"boolean"},KeyMarker:{},VersionIdMarker:{},NextKeyMarker:{},NextVersionIdMarker:{},Versions:{locationName:"Version",type:"list",member:{type:"structure",members:{ETag:{},Size:{type:"integer"},StorageClass:{},Key:{},VersionId:{},IsLatest:{type:"boolean"},LastModified:{type:"timestamp"},Owner:{shape:"S2k"}}},flattened:!0},DeleteMarkers:{locationName:"DeleteMarker",type:"list",member:{type:"structure",members:{Owner:{shape:"S2k"},Key:{},VersionId:{},IsLatest:{type:"boolean"},LastModified:{type:"timestamp"}}},flattened:!0},Name:{},Prefix:{},Delimiter:{},MaxKeys:{type:"integer"},CommonPrefixes:{shape:"S77"},EncodingType:{}}},alias:"GetBucketObjectVersions"},ListObjects:{http:{method:"GET",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},Marker:{location:"querystring",locationName:"marker"},MaxKeys:{location:"querystring",locationName:"max-keys",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{IsTruncated:{type:"boolean"},Marker:{},NextMarker:{},Contents:{shape:"S7p"},Name:{},Prefix:{},Delimiter:{},MaxKeys:{type:"integer"},CommonPrefixes:{shape:"S77"},EncodingType:{}}},alias:"GetBucket"},ListObjectsV2:{http:{method:"GET",requestUri:"/{Bucket}?list-type=2"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},MaxKeys:{location:"querystring",locationName:"max-keys",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},ContinuationToken:{location:"querystring",locationName:"continuation-token"},FetchOwner:{location:"querystring",locationName:"fetch-owner",type:"boolean"},StartAfter:{location:"querystring",locationName:"start-after"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{IsTruncated:{type:"boolean"},Contents:{shape:"S7p"},Name:{},Prefix:{},Delimiter:{},MaxKeys:{type:"integer"},CommonPrefixes:{shape:"S77"},EncodingType:{},KeyCount:{type:"integer"},ContinuationToken:{},NextContinuationToken:{},StartAfter:{}}}},ListParts:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},MaxParts:{location:"querystring",locationName:"max-parts",type:"integer"},PartNumberMarker:{location:"querystring",locationName:"part-number-marker",type:"integer"},UploadId:{location:"querystring",locationName:"uploadId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{AbortDate:{location:"header",locationName:"x-amz-abort-date",type:"timestamp"},AbortRuleId:{location:"header",locationName:"x-amz-abort-rule-id"},Bucket:{},Key:{},UploadId:{},PartNumberMarker:{type:"integer"},NextPartNumberMarker:{type:"integer"},MaxParts:{type:"integer"},IsTruncated:{type:"boolean"},Parts:{locationName:"Part",type:"list",member:{type:"structure",members:{PartNumber:{type:"integer"},LastModified:{type:"timestamp"},ETag:{},Size:{type:"integer"}}},flattened:!0},Initiator:{shape:"S76"},Owner:{shape:"S2k"},StorageClass:{},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},PutBucketAccelerateConfiguration:{http:{method:"PUT",requestUri:"/{Bucket}?accelerate"},input:{type:"structure",required:["Bucket","AccelerateConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},AccelerateConfiguration:{locationName:"AccelerateConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{Status:{}}}},payload:"AccelerateConfiguration"}},PutBucketAcl:{http:{method:"PUT",requestUri:"/{Bucket}?acl"},input:{type:"structure",required:["Bucket"],members:{ACL:{location:"header",locationName:"x-amz-acl"},AccessControlPolicy:{shape:"S89",locationName:"AccessControlPolicy",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}},Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWrite:{location:"header",locationName:"x-amz-grant-write"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"}},payload:"AccessControlPolicy"}},PutBucketCors:{http:{method:"PUT",requestUri:"/{Bucket}?cors"},input:{type:"structure",required:["Bucket","CORSConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},CORSConfiguration:{locationName:"CORSConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["CORSRules"],members:{CORSRules:{shape:"S2w",locationName:"CORSRule"}}},ContentMD5:{location:"header",locationName:"Content-MD5"}},payload:"CORSConfiguration"}},PutBucketLifecycle:{http:{method:"PUT",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},LifecycleConfiguration:{locationName:"LifecycleConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Rules"],members:{Rules:{shape:"S39",locationName:"Rule"}}}},payload:"LifecycleConfiguration"},deprecated:!0},PutBucketLifecycleConfiguration:{http:{method:"PUT",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},LifecycleConfiguration:{locationName:"LifecycleConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Rules"],members:{Rules:{shape:"S3p",locationName:"Rule"}}}},payload:"LifecycleConfiguration"}},PutBucketLogging:{http:{method:"PUT",requestUri:"/{Bucket}?logging"},input:{type:"structure",required:["Bucket","BucketLoggingStatus"],members:{Bucket:{location:"uri",locationName:"Bucket"},BucketLoggingStatus:{locationName:"BucketLoggingStatus",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{LoggingEnabled:{shape:"S3x"}}},ContentMD5:{location:"header",locationName:"Content-MD5"}},payload:"BucketLoggingStatus"}},PutBucketNotification:{http:{method:"PUT",requestUri:"/{Bucket}?notification"},input:{type:"structure",required:["Bucket","NotificationConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},NotificationConfiguration:{shape:"S44",locationName:"NotificationConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}}},payload:"NotificationConfiguration"},deprecated:!0},PutBucketNotificationConfiguration:{http:{method:"PUT",requestUri:"/{Bucket}?notification"},input:{type:"structure",required:["Bucket","NotificationConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},NotificationConfiguration:{shape:"S4f",locationName:"NotificationConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}}},payload:"NotificationConfiguration"}},PutBucketPolicy:{http:{method:"PUT",requestUri:"/{Bucket}?policy"},input:{type:"structure",required:["Bucket","Policy"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},Policy:{}},payload:"Policy"}},PutBucketReplication:{http:{method:"PUT",requestUri:"/{Bucket}?replication"},input:{type:"structure",required:["Bucket","ReplicationConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},ReplicationConfiguration:{shape:"S4y",locationName:"ReplicationConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}}},payload:"ReplicationConfiguration"}},PutBucketRequestPayment:{http:{method:"PUT",requestUri:"/{Bucket}?requestPayment"},input:{type:"structure",required:["Bucket","RequestPaymentConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},RequestPaymentConfiguration:{locationName:"RequestPaymentConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Payer"],members:{Payer:{}}}},payload:"RequestPaymentConfiguration"}},PutBucketTagging:{http:{method:"PUT",requestUri:"/{Bucket}?tagging"},input:{type:"structure",required:["Bucket","Tagging"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},Tagging:{locationName:"Tagging",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["TagSet"],members:{TagSet:{shape:"S59"}}}},payload:"Tagging"}},PutBucketVersioning:{http:{method:"PUT",requestUri:"/{Bucket}?versioning"},input:{type:"structure",required:["Bucket","VersioningConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},MFA:{location:"header",locationName:"x-amz-mfa"},VersioningConfiguration:{locationName:"VersioningConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{MFADelete:{locationName:"MfaDelete"},Status:{}}}},payload:"VersioningConfiguration"}},PutBucketWebsite:{http:{method:"PUT",requestUri:"/{Bucket}?website"},input:{type:"structure",required:["Bucket","WebsiteConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},WebsiteConfiguration:{locationName:"WebsiteConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{ErrorDocument:{shape:"S5n"},IndexDocument:{shape:"S5l"},RedirectAllRequestsTo:{shape:"S5i"},RoutingRules:{shape:"S5o"}}}},payload:"WebsiteConfiguration"}},PutObject:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Body:{streaming:!0,type:"blob"},Bucket:{location:"uri",locationName:"Bucket"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ContentMD5:{location:"header",locationName:"Content-MD5"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"Body"},output:{type:"structure",members:{Expiration:{location:"header",locationName:"x-amz-expiration"},ETag:{location:"header",locationName:"ETag"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},VersionId:{location:"header",locationName:"x-amz-version-id"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},PutObjectAcl:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}?acl"},input:{type:"structure",required:["Bucket","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},AccessControlPolicy:{shape:"S89",locationName:"AccessControlPolicy",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}},Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWrite:{location:"header",locationName:"x-amz-grant-write"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"},VersionId:{location:"querystring",locationName:"versionId"}},payload:"AccessControlPolicy"},output:{type:"structure",members:{RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},RestoreObject:{http:{requestUri:"/{Bucket}/{Key+}?restore"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},VersionId:{location:"querystring",locationName:"versionId"},RestoreRequest:{locationName:"RestoreRequest",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Days"],members:{Days:{type:"integer"}}},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"RestoreRequest"},output:{type:"structure",members:{RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}},alias:"PostObjectRestore"},UploadPart:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","PartNumber","UploadId"],members:{Body:{streaming:!0,type:"blob"},Bucket:{location:"uri",locationName:"Bucket"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ContentMD5:{location:"header",locationName:"Content-MD5"},Key:{location:"uri",locationName:"Key"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"},UploadId:{location:"querystring",locationName:"uploadId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"Body"},output:{type:"structure",members:{ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},ETag:{location:"header",locationName:"ETag"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},UploadPartCopy:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","CopySource","Key","PartNumber","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},CopySource:{location:"header",locationName:"x-amz-copy-source"},CopySourceIfMatch:{location:"header",locationName:"x-amz-copy-source-if-match"},CopySourceIfModifiedSince:{location:"header",locationName:"x-amz-copy-source-if-modified-since",type:"timestamp"},CopySourceIfNoneMatch:{location:"header",locationName:"x-amz-copy-source-if-none-match"},CopySourceIfUnmodifiedSince:{location:"header",locationName:"x-amz-copy-source-if-unmodified-since",type:"timestamp"},CopySourceRange:{location:"header",locationName:"x-amz-copy-source-range"},Key:{location:"uri",locationName:"Key"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"},UploadId:{location:"querystring",locationName:"uploadId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},CopySourceSSECustomerAlgorithm:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm"},CopySourceSSECustomerKey:{shape:"S1b",location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key"},CopySourceSSECustomerKeyMD5:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{CopySourceVersionId:{location:"header",locationName:"x-amz-copy-source-version-id"},CopyPartResult:{type:"structure",members:{ETag:{},LastModified:{type:"timestamp"}}},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}},payload:"CopyPartResult"}}},shapes:{Sj:{type:"string",sensitive:!0},S11:{type:"map",key:{},value:{}},S18:{type:"blob",sensitive:!0},S1b:{type:"blob",sensitive:!0},S2k:{type:"structure",members:{DisplayName:{},ID:{}}},S2n:{type:"list",member:{locationName:"Grant",type:"structure",members:{Grantee:{shape:"S2p"},Permission:{}}}},S2p:{type:"structure",required:["Type"],members:{DisplayName:{},EmailAddress:{},ID:{},Type:{locationName:"xsi:type",xmlAttribute:!0},URI:{}},xmlNamespace:{prefix:"xsi",uri:"http://www.w3.org/2001/XMLSchema-instance"}},S2w:{type:"list",member:{type:"structure",required:["AllowedMethods","AllowedOrigins"],members:{AllowedHeaders:{locationName:"AllowedHeader",type:"list",member:{},flattened:!0},AllowedMethods:{locationName:"AllowedMethod",type:"list",member:{},flattened:!0},AllowedOrigins:{locationName:"AllowedOrigin",type:"list",member:{},flattened:!0},ExposeHeaders:{locationName:"ExposeHeader",type:"list",member:{},flattened:!0},MaxAgeSeconds:{type:"integer"}}},flattened:!0},S39:{type:"list",member:{type:"structure",required:["Prefix","Status"],members:{Expiration:{shape:"S3b"},ID:{},Prefix:{},Status:{},Transition:{shape:"S3h"},NoncurrentVersionTransition:{shape:"S3j"},NoncurrentVersionExpiration:{shape:"S3k"},AbortIncompleteMultipartUpload:{shape:"S3l"}}},flattened:!0},S3b:{type:"structure",members:{Date:{shape:"S3c"},Days:{type:"integer"},ExpiredObjectDeleteMarker:{type:"boolean"}}},S3c:{type:"timestamp",timestampFormat:"iso8601"},S3h:{type:"structure",members:{Date:{shape:"S3c"},Days:{type:"integer"},StorageClass:{}}},S3j:{type:"structure",members:{NoncurrentDays:{type:"integer"},StorageClass:{}}},S3k:{type:"structure",members:{NoncurrentDays:{type:"integer"}}},S3l:{type:"structure",members:{DaysAfterInitiation:{type:"integer"}}},S3p:{type:"list",member:{type:"structure",required:["Prefix","Status"],members:{Expiration:{shape:"S3b"},ID:{},Prefix:{},Status:{},Transitions:{locationName:"Transition",type:"list",member:{shape:"S3h"},flattened:!0},NoncurrentVersionTransitions:{locationName:"NoncurrentVersionTransition",type:"list",member:{shape:"S3j"},flattened:!0},NoncurrentVersionExpiration:{shape:"S3k"},AbortIncompleteMultipartUpload:{shape:"S3l"}}},flattened:!0},S3x:{type:"structure",members:{TargetBucket:{},TargetGrants:{type:"list",member:{locationName:"Grant",type:"structure",members:{Grantee:{shape:"S2p"},Permission:{}}}},TargetPrefix:{}}},S43:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},S44:{type:"structure",members:{TopicConfiguration:{type:"structure",members:{Id:{},Events:{shape:"S47",locationName:"Event"},Event:{deprecated:!0},Topic:{}}},QueueConfiguration:{type:"structure",members:{Id:{},Event:{deprecated:!0},Events:{shape:"S47",locationName:"Event"},Queue:{}}},CloudFunctionConfiguration:{type:"structure",members:{Id:{},Event:{deprecated:!0},Events:{shape:"S47",locationName:"Event"},CloudFunction:{},InvocationRole:{}}}}},S47:{type:"list",member:{},flattened:!0},S4f:{type:"structure",members:{TopicConfigurations:{locationName:"TopicConfiguration",type:"list",member:{type:"structure",required:["TopicArn","Events"],members:{Id:{},TopicArn:{locationName:"Topic"},Events:{shape:"S47",locationName:"Event"},Filter:{shape:"S4i"}}},flattened:!0},QueueConfigurations:{locationName:"QueueConfiguration",type:"list",member:{type:"structure",required:["QueueArn","Events"],members:{Id:{},QueueArn:{locationName:"Queue"},Events:{shape:"S47",locationName:"Event"},Filter:{shape:"S4i"}}},flattened:!0},LambdaFunctionConfigurations:{locationName:"CloudFunctionConfiguration",type:"list",member:{type:"structure",required:["LambdaFunctionArn","Events"],members:{Id:{},LambdaFunctionArn:{locationName:"CloudFunction"},Events:{shape:"S47",locationName:"Event"},Filter:{shape:"S4i"}}},flattened:!0}}},S4i:{type:"structure",members:{Key:{locationName:"S3Key",type:"structure",members:{FilterRules:{locationName:"FilterRule",type:"list",member:{type:"structure",members:{Name:{},Value:{}}},flattened:!0}}}}},S4y:{type:"structure",required:["Role","Rules"],members:{Role:{},Rules:{locationName:"Rule",type:"list",member:{type:"structure",required:["Prefix","Status","Destination"],members:{ID:{},Prefix:{},Status:{}, +Destination:{type:"structure",required:["Bucket"],members:{Bucket:{},StorageClass:{}}}}},flattened:!0}}},S59:{type:"list",member:{locationName:"Tag",type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},S5i:{type:"structure",required:["HostName"],members:{HostName:{},Protocol:{}}},S5l:{type:"structure",required:["Suffix"],members:{Suffix:{}}},S5n:{type:"structure",required:["Key"],members:{Key:{}}},S5o:{type:"list",member:{locationName:"RoutingRule",type:"structure",required:["Redirect"],members:{Condition:{type:"structure",members:{HttpErrorCodeReturnedEquals:{},KeyPrefixEquals:{}}},Redirect:{type:"structure",members:{HostName:{},HttpRedirectCode:{},Protocol:{},ReplaceKeyPrefixWith:{},ReplaceKeyWith:{}}}}}},S76:{type:"structure",members:{ID:{},DisplayName:{}}},S77:{type:"list",member:{type:"structure",members:{Prefix:{}}},flattened:!0},S7p:{type:"list",member:{type:"structure",members:{Key:{},LastModified:{type:"timestamp"},ETag:{},Size:{type:"integer"},StorageClass:{},Owner:{shape:"S2k"}}},flattened:!0},S89:{type:"structure",members:{Grants:{shape:"S2n",locationName:"AccessControlList"},Owner:{shape:"S2k"}}}}}},{}],113:[function(e,t,r){t.exports={pagination:{ListBuckets:{result_key:"Buckets"},ListMultipartUploads:{limit_key:"MaxUploads",more_results:"IsTruncated",output_token:["NextKeyMarker","NextUploadIdMarker"],input_token:["KeyMarker","UploadIdMarker"],result_key:["Uploads","CommonPrefixes"]},ListObjectVersions:{more_results:"IsTruncated",limit_key:"MaxKeys",output_token:["NextKeyMarker","NextVersionIdMarker"],input_token:["KeyMarker","VersionIdMarker"],result_key:["Versions","DeleteMarkers","CommonPrefixes"]},ListObjects:{more_results:"IsTruncated",limit_key:"MaxKeys",output_token:"NextMarker || Contents[-1].Key",input_token:"Marker",result_key:["Contents","CommonPrefixes"]},ListObjectsV2:{limit_key:"MaxKeys",output_token:"NextContinuationToken",input_token:"ContinuationToken",result_key:["Contents","CommonPrefixes"]},ListParts:{more_results:"IsTruncated",limit_key:"MaxParts",output_token:"NextPartNumberMarker",input_token:"PartNumberMarker",result_key:"Parts"}}}},{}],114:[function(e,t,r){t.exports={version:2,waiters:{BucketExists:{delay:5,operation:"HeadBucket",maxAttempts:20,acceptors:[{expected:200,matcher:"status",state:"success"},{expected:301,matcher:"status",state:"success"},{expected:403,matcher:"status",state:"success"},{expected:404,matcher:"status",state:"retry"}]},BucketNotExists:{delay:5,operation:"HeadBucket",maxAttempts:20,acceptors:[{expected:404,matcher:"status",state:"success"}]},ObjectExists:{delay:5,operation:"HeadObject",maxAttempts:20,acceptors:[{expected:200,matcher:"status",state:"success"},{expected:404,matcher:"status",state:"retry"}]},ObjectNotExists:{delay:5,operation:"HeadObject",maxAttempts:20,acceptors:[{expected:404,matcher:"status",state:"success"}]}}}},{}],115:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-12-10",endpointPrefix:"servicecatalog",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS Service Catalog",signatureVersion:"v4",targetPrefix:"AWS242ServiceCatalogService"},operations:{DescribeProduct:{input:{type:"structure",required:["Id"],members:{AcceptLanguage:{},Id:{}}},output:{type:"structure",members:{ProductViewSummary:{shape:"S5"},ProvisioningArtifacts:{shape:"Sf"}}}},DescribeProductView:{input:{type:"structure",required:["Id"],members:{AcceptLanguage:{},Id:{}}},output:{type:"structure",members:{ProductViewSummary:{shape:"S5"},ProvisioningArtifacts:{shape:"Sf"}}}},DescribeProvisioningParameters:{input:{type:"structure",required:["ProductId","ProvisioningArtifactId"],members:{AcceptLanguage:{},ProductId:{},ProvisioningArtifactId:{},PathId:{}}},output:{type:"structure",members:{ProvisioningArtifactParameters:{type:"list",member:{type:"structure",members:{ParameterKey:{},DefaultValue:{},ParameterType:{},IsNoEcho:{type:"boolean"},Description:{},ParameterConstraints:{type:"structure",members:{AllowedValues:{type:"list",member:{}}}}}}},ConstraintSummaries:{shape:"Sy"},UsageInstructions:{type:"list",member:{type:"structure",members:{Type:{},Value:{}}}}}}},DescribeRecord:{input:{type:"structure",required:["Id"],members:{AcceptLanguage:{},Id:{},PageToken:{},PageSize:{type:"integer"}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"},RecordOutputs:{type:"list",member:{type:"structure",members:{OutputKey:{},OutputValue:{},Description:{}}}},NextPageToken:{}}}},ListLaunchPaths:{input:{type:"structure",required:["ProductId"],members:{AcceptLanguage:{},ProductId:{},PageSize:{type:"integer"},PageToken:{}}},output:{type:"structure",members:{LaunchPathSummaries:{type:"list",member:{type:"structure",members:{Id:{},ConstraintSummaries:{shape:"Sy"},Tags:{shape:"S1x"},Name:{}}}},NextPageToken:{}}}},ListRecordHistory:{input:{type:"structure",members:{AcceptLanguage:{},AccessLevelFilter:{shape:"S23"},SearchFilter:{type:"structure",members:{Key:{},Value:{}}},PageSize:{type:"integer"},PageToken:{}}},output:{type:"structure",members:{RecordDetails:{type:"list",member:{shape:"S1a"}},NextPageToken:{}}}},ProvisionProduct:{input:{type:"structure",required:["ProductId","ProvisioningArtifactId","ProvisionedProductName","ProvisionToken"],members:{AcceptLanguage:{},ProductId:{},ProvisioningArtifactId:{},PathId:{},ProvisionedProductName:{},ProvisioningParameters:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},Tags:{shape:"S1x"},NotificationArns:{type:"list",member:{}},ProvisionToken:{idempotencyToken:!0}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"}}}},ScanProvisionedProducts:{input:{type:"structure",members:{AcceptLanguage:{},AccessLevelFilter:{shape:"S23"},PageSize:{type:"integer"},PageToken:{}}},output:{type:"structure",members:{ProvisionedProducts:{type:"list",member:{type:"structure",members:{Name:{},Arn:{},Type:{},Id:{},Status:{},StatusMessage:{},CreatedTime:{type:"timestamp"},IdempotencyToken:{},LastRecordId:{}}}},NextPageToken:{}}}},SearchProducts:{input:{type:"structure",members:{AcceptLanguage:{},Filters:{type:"map",key:{},value:{type:"list",member:{}}},PageSize:{type:"integer"},SortBy:{},SortOrder:{},PageToken:{}}},output:{type:"structure",members:{ProductViewSummaries:{type:"list",member:{shape:"S5"}},ProductViewAggregations:{type:"map",key:{},value:{type:"list",member:{type:"structure",members:{Value:{},ApproximateCount:{type:"integer"}}}}},NextPageToken:{}}}},TerminateProvisionedProduct:{input:{type:"structure",required:["TerminateToken"],members:{ProvisionedProductName:{},ProvisionedProductId:{},TerminateToken:{idempotencyToken:!0},IgnoreErrors:{type:"boolean"},AcceptLanguage:{}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"}}}},UpdateProvisionedProduct:{input:{type:"structure",required:["UpdateToken"],members:{AcceptLanguage:{},ProvisionedProductName:{},ProvisionedProductId:{},ProductId:{},ProvisioningArtifactId:{},PathId:{},ProvisioningParameters:{type:"list",member:{type:"structure",members:{Key:{},Value:{},UsePreviousValue:{type:"boolean"}}}},UpdateToken:{idempotencyToken:!0}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"}}}}},shapes:{S5:{type:"structure",members:{Id:{},ProductId:{},Name:{},Owner:{},ShortDescription:{},Type:{},Distributor:{},HasDefaultPath:{type:"boolean"},SupportEmail:{},SupportDescription:{},SupportUrl:{}}},Sf:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Description:{},CreatedTime:{type:"timestamp"}}}},Sy:{type:"list",member:{type:"structure",members:{Type:{},Description:{}}}},S1a:{type:"structure",members:{RecordId:{},ProvisionedProductName:{},Status:{},CreatedTime:{type:"timestamp"},UpdatedTime:{type:"timestamp"},ProvisionedProductType:{},RecordType:{},ProvisionedProductId:{},ProductId:{},ProvisioningArtifactId:{},PathId:{},RecordErrors:{type:"list",member:{type:"structure",members:{Code:{},Description:{}}}},RecordTags:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}}}},S1x:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S23:{type:"structure",members:{Key:{},Value:{}}}}}},{}],116:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-03-31",endpointPrefix:"sns",protocol:"query",serviceAbbreviation:"Amazon SNS",serviceFullName:"Amazon Simple Notification Service",signatureVersion:"v4",xmlNamespace:"http://sns.amazonaws.com/doc/2010-03-31/"},operations:{AddPermission:{input:{type:"structure",required:["TopicArn","Label","AWSAccountId","ActionName"],members:{TopicArn:{},Label:{},AWSAccountId:{type:"list",member:{}},ActionName:{type:"list",member:{}}}}},CheckIfPhoneNumberIsOptedOut:{input:{type:"structure",required:["phoneNumber"],members:{phoneNumber:{}}},output:{resultWrapper:"CheckIfPhoneNumberIsOptedOutResult",type:"structure",members:{isOptedOut:{type:"boolean"}}}},ConfirmSubscription:{input:{type:"structure",required:["TopicArn","Token"],members:{TopicArn:{},Token:{},AuthenticateOnUnsubscribe:{}}},output:{resultWrapper:"ConfirmSubscriptionResult",type:"structure",members:{SubscriptionArn:{}}}},CreatePlatformApplication:{input:{type:"structure",required:["Name","Platform","Attributes"],members:{Name:{},Platform:{},Attributes:{shape:"Sj"}}},output:{resultWrapper:"CreatePlatformApplicationResult",type:"structure",members:{PlatformApplicationArn:{}}}},CreatePlatformEndpoint:{input:{type:"structure",required:["PlatformApplicationArn","Token"],members:{PlatformApplicationArn:{},Token:{},CustomUserData:{},Attributes:{shape:"Sj"}}},output:{resultWrapper:"CreatePlatformEndpointResult",type:"structure",members:{EndpointArn:{}}}},CreateTopic:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{resultWrapper:"CreateTopicResult",type:"structure",members:{TopicArn:{}}}},DeleteEndpoint:{input:{type:"structure",required:["EndpointArn"],members:{EndpointArn:{}}}},DeletePlatformApplication:{input:{type:"structure",required:["PlatformApplicationArn"],members:{PlatformApplicationArn:{}}}},DeleteTopic:{input:{type:"structure",required:["TopicArn"],members:{TopicArn:{}}}},GetEndpointAttributes:{input:{type:"structure",required:["EndpointArn"],members:{EndpointArn:{}}},output:{resultWrapper:"GetEndpointAttributesResult",type:"structure",members:{Attributes:{shape:"Sj"}}}},GetPlatformApplicationAttributes:{input:{type:"structure",required:["PlatformApplicationArn"],members:{PlatformApplicationArn:{}}},output:{resultWrapper:"GetPlatformApplicationAttributesResult",type:"structure",members:{Attributes:{shape:"Sj"}}}},GetSMSAttributes:{input:{type:"structure",members:{attributes:{type:"list",member:{}}}},output:{resultWrapper:"GetSMSAttributesResult",type:"structure",members:{attributes:{shape:"Sj"}}}},GetSubscriptionAttributes:{input:{type:"structure",required:["SubscriptionArn"],members:{SubscriptionArn:{}}},output:{resultWrapper:"GetSubscriptionAttributesResult",type:"structure",members:{Attributes:{type:"map",key:{},value:{}}}}},GetTopicAttributes:{input:{type:"structure",required:["TopicArn"],members:{TopicArn:{}}},output:{resultWrapper:"GetTopicAttributesResult",type:"structure",members:{Attributes:{type:"map",key:{},value:{}}}}},ListEndpointsByPlatformApplication:{input:{type:"structure",required:["PlatformApplicationArn"],members:{PlatformApplicationArn:{},NextToken:{}}},output:{resultWrapper:"ListEndpointsByPlatformApplicationResult",type:"structure",members:{Endpoints:{type:"list",member:{type:"structure",members:{EndpointArn:{},Attributes:{shape:"Sj"}}}},NextToken:{}}}},ListPhoneNumbersOptedOut:{input:{type:"structure",members:{nextToken:{}}},output:{resultWrapper:"ListPhoneNumbersOptedOutResult",type:"structure",members:{phoneNumbers:{type:"list",member:{}},nextToken:{}}}},ListPlatformApplications:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListPlatformApplicationsResult",type:"structure",members:{PlatformApplications:{type:"list",member:{type:"structure",members:{PlatformApplicationArn:{},Attributes:{shape:"Sj"}}}},NextToken:{}}}},ListSubscriptions:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListSubscriptionsResult",type:"structure",members:{Subscriptions:{shape:"S1n"},NextToken:{}}}},ListSubscriptionsByTopic:{input:{type:"structure",required:["TopicArn"],members:{TopicArn:{},NextToken:{}}},output:{resultWrapper:"ListSubscriptionsByTopicResult",type:"structure",members:{Subscriptions:{shape:"S1n"},NextToken:{}}}},ListTopics:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListTopicsResult",type:"structure",members:{Topics:{type:"list",member:{type:"structure",members:{TopicArn:{}}}},NextToken:{}}}},OptInPhoneNumber:{input:{type:"structure",required:["phoneNumber"],members:{phoneNumber:{}}},output:{resultWrapper:"OptInPhoneNumberResult",type:"structure",members:{}}},Publish:{input:{type:"structure",required:["Message"],members:{TopicArn:{},TargetArn:{},PhoneNumber:{},Message:{},Subject:{},MessageStructure:{},MessageAttributes:{type:"map",key:{locationName:"Name"},value:{locationName:"Value",type:"structure",required:["DataType"],members:{DataType:{},StringValue:{},BinaryValue:{type:"blob"}}}}}},output:{resultWrapper:"PublishResult",type:"structure",members:{MessageId:{}}}},RemovePermission:{input:{type:"structure",required:["TopicArn","Label"],members:{TopicArn:{},Label:{}}}},SetEndpointAttributes:{input:{type:"structure",required:["EndpointArn","Attributes"],members:{EndpointArn:{},Attributes:{shape:"Sj"}}}},SetPlatformApplicationAttributes:{input:{type:"structure",required:["PlatformApplicationArn","Attributes"],members:{PlatformApplicationArn:{},Attributes:{shape:"Sj"}}}},SetSMSAttributes:{input:{type:"structure",required:["attributes"],members:{attributes:{shape:"Sj"}}},output:{resultWrapper:"SetSMSAttributesResult",type:"structure",members:{}}},SetSubscriptionAttributes:{input:{type:"structure",required:["SubscriptionArn","AttributeName"],members:{SubscriptionArn:{},AttributeName:{},AttributeValue:{}}}},SetTopicAttributes:{input:{type:"structure",required:["TopicArn","AttributeName"],members:{TopicArn:{},AttributeName:{},AttributeValue:{}}}},Subscribe:{input:{type:"structure",required:["TopicArn","Protocol"],members:{TopicArn:{},Protocol:{},Endpoint:{}}},output:{resultWrapper:"SubscribeResult",type:"structure",members:{SubscriptionArn:{}}}},Unsubscribe:{input:{type:"structure",required:["SubscriptionArn"],members:{SubscriptionArn:{}}}}},shapes:{Sj:{type:"map",key:{},value:{}},S1n:{type:"list",member:{type:"structure",members:{SubscriptionArn:{},Owner:{},Protocol:{},Endpoint:{},TopicArn:{}}}}}}},{}],117:[function(e,t,r){t.exports={pagination:{ListEndpointsByPlatformApplication:{input_token:"NextToken",output_token:"NextToken",result_key:"Endpoints"},ListPlatformApplications:{input_token:"NextToken",output_token:"NextToken",result_key:"PlatformApplications"},ListSubscriptions:{input_token:"NextToken",output_token:"NextToken",result_key:"Subscriptions"},ListSubscriptionsByTopic:{input_token:"NextToken",output_token:"NextToken",result_key:"Subscriptions"},ListTopics:{input_token:"NextToken",output_token:"NextToken",result_key:"Topics"}}}},{}],118:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-11-05",endpointPrefix:"sqs",protocol:"query",serviceAbbreviation:"Amazon SQS",serviceFullName:"Amazon Simple Queue Service",signatureVersion:"v4",xmlNamespace:"http://queue.amazonaws.com/doc/2012-11-05/"},operations:{AddPermission:{input:{type:"structure",required:["QueueUrl","Label","AWSAccountIds","Actions"],members:{QueueUrl:{},Label:{},AWSAccountIds:{type:"list",member:{locationName:"AWSAccountId"},flattened:!0},Actions:{type:"list",member:{locationName:"ActionName"},flattened:!0}}}},ChangeMessageVisibility:{input:{type:"structure",required:["QueueUrl","ReceiptHandle","VisibilityTimeout"],members:{QueueUrl:{},ReceiptHandle:{},VisibilityTimeout:{type:"integer"}}}},ChangeMessageVisibilityBatch:{input:{type:"structure",required:["QueueUrl","Entries"],members:{QueueUrl:{},Entries:{type:"list",member:{locationName:"ChangeMessageVisibilityBatchRequestEntry",type:"structure",required:["Id","ReceiptHandle"],members:{Id:{},ReceiptHandle:{},VisibilityTimeout:{type:"integer"}}},flattened:!0}}},output:{resultWrapper:"ChangeMessageVisibilityBatchResult",type:"structure",required:["Successful","Failed"],members:{Successful:{type:"list",member:{locationName:"ChangeMessageVisibilityBatchResultEntry",type:"structure",required:["Id"],members:{Id:{}}},flattened:!0},Failed:{shape:"Sd"}}}},CreateQueue:{input:{type:"structure",required:["QueueName"],members:{QueueName:{},Attributes:{shape:"Sh",locationName:"Attribute"}}},output:{resultWrapper:"CreateQueueResult",type:"structure",members:{QueueUrl:{}}}},DeleteMessage:{input:{type:"structure",required:["QueueUrl","ReceiptHandle"],members:{QueueUrl:{},ReceiptHandle:{}}}},DeleteMessageBatch:{input:{type:"structure",required:["QueueUrl","Entries"],members:{QueueUrl:{},Entries:{type:"list",member:{locationName:"DeleteMessageBatchRequestEntry",type:"structure",required:["Id","ReceiptHandle"],members:{Id:{},ReceiptHandle:{}}},flattened:!0}}},output:{resultWrapper:"DeleteMessageBatchResult",type:"structure",required:["Successful","Failed"],members:{Successful:{type:"list",member:{locationName:"DeleteMessageBatchResultEntry",type:"structure",required:["Id"],members:{Id:{}}},flattened:!0},Failed:{shape:"Sd"}}}},DeleteQueue:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{}}}},GetQueueAttributes:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{},AttributeNames:{shape:"St"}}},output:{resultWrapper:"GetQueueAttributesResult",type:"structure",members:{Attributes:{shape:"Sh",locationName:"Attribute"}}}},GetQueueUrl:{input:{type:"structure",required:["QueueName"],members:{QueueName:{},QueueOwnerAWSAccountId:{}}},output:{resultWrapper:"GetQueueUrlResult",type:"structure",members:{QueueUrl:{}}}},ListDeadLetterSourceQueues:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{}}},output:{resultWrapper:"ListDeadLetterSourceQueuesResult",type:"structure",required:["queueUrls"],members:{queueUrls:{shape:"Sz"}}}},ListQueues:{input:{type:"structure",members:{QueueNamePrefix:{}}},output:{resultWrapper:"ListQueuesResult",type:"structure",members:{QueueUrls:{shape:"Sz"}}}},PurgeQueue:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{}}}},ReceiveMessage:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{},AttributeNames:{shape:"St"},MessageAttributeNames:{type:"list",member:{locationName:"MessageAttributeName"},flattened:!0},MaxNumberOfMessages:{type:"integer"},VisibilityTimeout:{type:"integer"},WaitTimeSeconds:{type:"integer"}}},output:{resultWrapper:"ReceiveMessageResult",type:"structure",members:{Messages:{type:"list",member:{locationName:"Message",type:"structure",members:{MessageId:{},ReceiptHandle:{},MD5OfBody:{},Body:{},Attributes:{shape:"Sh",locationName:"Attribute"},MD5OfMessageAttributes:{},MessageAttributes:{shape:"S19",locationName:"MessageAttribute"}}},flattened:!0}}}},RemovePermission:{input:{type:"structure",required:["QueueUrl","Label"],members:{QueueUrl:{},Label:{}}}},SendMessage:{input:{type:"structure",required:["QueueUrl","MessageBody"],members:{QueueUrl:{},MessageBody:{},DelaySeconds:{type:"integer"},MessageAttributes:{shape:"S19",locationName:"MessageAttribute"}}},output:{resultWrapper:"SendMessageResult",type:"structure",members:{MD5OfMessageBody:{},MD5OfMessageAttributes:{},MessageId:{}}}},SendMessageBatch:{input:{type:"structure",required:["QueueUrl","Entries"],members:{QueueUrl:{},Entries:{type:"list",member:{locationName:"SendMessageBatchRequestEntry",type:"structure",required:["Id","MessageBody"],members:{Id:{},MessageBody:{},DelaySeconds:{type:"integer"},MessageAttributes:{shape:"S19",locationName:"MessageAttribute"}}},flattened:!0}}},output:{resultWrapper:"SendMessageBatchResult",type:"structure",required:["Successful","Failed"],members:{Successful:{type:"list",member:{locationName:"SendMessageBatchResultEntry",type:"structure",required:["Id","MessageId","MD5OfMessageBody"],members:{Id:{},MessageId:{},MD5OfMessageBody:{},MD5OfMessageAttributes:{}}},flattened:!0},Failed:{shape:"Sd"}}}},SetQueueAttributes:{input:{type:"structure",required:["QueueUrl","Attributes"],members:{QueueUrl:{},Attributes:{shape:"Sh",locationName:"Attribute"}}}}},shapes:{Sd:{type:"list",member:{locationName:"BatchResultErrorEntry",type:"structure",required:["Id","SenderFault","Code"],members:{Id:{},SenderFault:{type:"boolean"},Code:{},Message:{}}},flattened:!0},Sh:{type:"map",key:{locationName:"Name"},value:{locationName:"Value"},flattened:!0,locationName:"Attribute"},St:{type:"list",member:{locationName:"AttributeName"},flattened:!0},Sz:{type:"list",member:{locationName:"QueueUrl"},flattened:!0},S19:{type:"map",key:{locationName:"Name"},value:{locationName:"Value",type:"structure",required:["DataType"],members:{StringValue:{},BinaryValue:{type:"blob"},StringListValues:{flattened:!0,locationName:"StringListValue",type:"list",member:{locationName:"StringListValue"}},BinaryListValues:{flattened:!0,locationName:"BinaryListValue",type:"list",member:{locationName:"BinaryListValue",type:"blob"}},DataType:{}}},flattened:!0}}}},{}],119:[function(e,t,r){t.exports={pagination:{ListQueues:{result_key:"QueueUrls"}}}},{}],120:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-11-06",endpointPrefix:"ssm",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon SSM",serviceFullName:"Amazon Simple Systems Management Service",signatureVersion:"v4",targetPrefix:"AmazonSSM"},operations:{AddTagsToResource:{input:{type:"structure",required:["ResourceType","ResourceId","Tags"],members:{ResourceType:{},ResourceId:{},Tags:{shape:"S4"}}},output:{type:"structure",members:{}}},CancelCommand:{input:{type:"structure",required:["CommandId"],members:{CommandId:{},InstanceIds:{shape:"Sb"}}},output:{type:"structure",members:{}}},CreateActivation:{input:{type:"structure",required:["IamRole"],members:{Description:{},DefaultInstanceName:{},IamRole:{},RegistrationLimit:{type:"integer"},ExpirationDate:{type:"timestamp"}}},output:{type:"structure",members:{ActivationId:{},ActivationCode:{}}}},CreateAssociation:{input:{type:"structure",required:["Name","InstanceId"],members:{Name:{},InstanceId:{},Parameters:{shape:"Sp"}}},output:{type:"structure",members:{AssociationDescription:{shape:"Su"}}}},CreateAssociationBatch:{input:{type:"structure",required:["Entries"],members:{Entries:{type:"list",member:{shape:"S12",locationName:"entries"}}}},output:{type:"structure",members:{Successful:{type:"list",member:{shape:"Su",locationName:"AssociationDescription"}},Failed:{type:"list",member:{locationName:"FailedCreateAssociationEntry",type:"structure",members:{Entry:{shape:"S12"},Message:{},Fault:{}}}}}}},CreateDocument:{input:{type:"structure",required:["Content","Name"],members:{Content:{},Name:{}}},output:{type:"structure",members:{DocumentDescription:{shape:"S1c"}}}},DeleteActivation:{input:{type:"structure",required:["ActivationId"],members:{ActivationId:{}}},output:{type:"structure",members:{}}},DeleteAssociation:{input:{type:"structure",required:["Name","InstanceId"],members:{Name:{},InstanceId:{}}},output:{type:"structure",members:{}}},DeleteDocument:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{}}},DeregisterManagedInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}},output:{type:"structure",members:{}}},DescribeActivations:{input:{type:"structure",members:{Filters:{type:"list",member:{type:"structure",members:{FilterKey:{},FilterValues:{type:"list",member:{}}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{ActivationList:{type:"list",member:{type:"structure",members:{ActivationId:{},Description:{},DefaultInstanceName:{},IamRole:{},RegistrationLimit:{type:"integer"},RegistrationsCount:{type:"integer"},ExpirationDate:{type:"timestamp"},Expired:{type:"boolean"},CreatedDate:{type:"timestamp"}}}},NextToken:{}}}},DescribeAssociation:{input:{type:"structure",required:["Name","InstanceId"],members:{Name:{},InstanceId:{}}},output:{type:"structure",members:{AssociationDescription:{shape:"Su"}}}},DescribeDocument:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Document:{shape:"S1c"}}}},DescribeDocumentPermission:{input:{type:"structure",required:["Name","PermissionType"],members:{Name:{},PermissionType:{}}},output:{type:"structure",members:{AccountIds:{shape:"S2m"}}}},DescribeInstanceInformation:{input:{type:"structure",members:{InstanceInformationFilterList:{type:"list",member:{locationName:"InstanceInformationFilter",type:"structure",required:["key","valueSet"],members:{key:{},valueSet:{type:"list",member:{locationName:"InstanceInformationFilterValue"}}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{InstanceInformationList:{type:"list",member:{locationName:"InstanceInformation",type:"structure",members:{InstanceId:{},PingStatus:{},LastPingDateTime:{type:"timestamp"},AgentVersion:{},IsLatestVersion:{type:"boolean"},PlatformType:{},PlatformName:{},PlatformVersion:{},ActivationId:{},IamRole:{},RegistrationDate:{type:"timestamp"},ResourceType:{},Name:{},IPAddress:{},ComputerName:{}}}},NextToken:{}}}},GetDocument:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Name:{},Content:{}}}},ListAssociations:{input:{type:"structure",required:["AssociationFilterList"],members:{AssociationFilterList:{type:"list",member:{locationName:"AssociationFilter",type:"structure",required:["key","value"],members:{key:{},value:{}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Associations:{type:"list",member:{locationName:"Association",type:"structure",members:{Name:{},InstanceId:{}}}},NextToken:{}}}},ListCommandInvocations:{input:{type:"structure",members:{CommandId:{},InstanceId:{},MaxResults:{type:"integer"},NextToken:{},Filters:{shape:"S3f"},Details:{type:"boolean"}}},output:{type:"structure",members:{CommandInvocations:{type:"list",member:{type:"structure",members:{CommandId:{},InstanceId:{},Comment:{},DocumentName:{},RequestedDateTime:{type:"timestamp"},Status:{},TraceOutput:{},CommandPlugins:{type:"list",member:{type:"structure",members:{Name:{},Status:{},ResponseCode:{type:"integer"},ResponseStartDateTime:{type:"timestamp"},ResponseFinishDateTime:{type:"timestamp"},Output:{},OutputS3BucketName:{},OutputS3KeyPrefix:{}}}},ServiceRole:{},NotificationConfig:{shape:"S3y"}}}},NextToken:{}}}},ListCommands:{input:{type:"structure",members:{CommandId:{},InstanceId:{},MaxResults:{type:"integer"},NextToken:{},Filters:{shape:"S3f"}}},output:{type:"structure",members:{Commands:{type:"list",member:{shape:"S46"}},NextToken:{}}}},ListDocuments:{input:{type:"structure",members:{DocumentFilterList:{type:"list",member:{locationName:"DocumentFilter",type:"structure",required:["key","value"],members:{key:{},value:{}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{DocumentIdentifiers:{type:"list",member:{locationName:"DocumentIdentifier",type:"structure",members:{Name:{},Owner:{},PlatformTypes:{shape:"S1q"}}}},NextToken:{}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceType","ResourceId"],members:{ResourceType:{},ResourceId:{}}},output:{type:"structure",members:{TagList:{shape:"S4"}}}},ModifyDocumentPermission:{input:{type:"structure",required:["Name","PermissionType"],members:{Name:{},PermissionType:{},AccountIdsToAdd:{shape:"S2m"},AccountIdsToRemove:{shape:"S2m"}}},output:{type:"structure",members:{}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceType","ResourceId","TagKeys"],members:{ResourceType:{},ResourceId:{},TagKeys:{type:"list",member:{}}}},output:{type:"structure",members:{}}},SendCommand:{input:{type:"structure",required:["InstanceIds","DocumentName"],members:{InstanceIds:{shape:"Sb"},DocumentName:{},DocumentHash:{},DocumentHashType:{},TimeoutSeconds:{type:"integer"},Comment:{},Parameters:{shape:"Sp"},OutputS3BucketName:{},OutputS3KeyPrefix:{},ServiceRoleArn:{},NotificationConfig:{shape:"S3y"}}},output:{type:"structure",members:{Command:{shape:"S46"}}}},UpdateAssociationStatus:{input:{type:"structure",required:["Name","InstanceId","AssociationStatus"],members:{Name:{},InstanceId:{},AssociationStatus:{shape:"Sw"}}},output:{type:"structure",members:{AssociationDescription:{shape:"Su"}}}},UpdateManagedInstanceRole:{input:{type:"structure",required:["InstanceId","IamRole"],members:{InstanceId:{},IamRole:{}}},output:{type:"structure",members:{}}}},shapes:{S4:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},Sb:{type:"list",member:{}},Sp:{type:"map",key:{},value:{type:"list",member:{}}},Su:{type:"structure",members:{Name:{},InstanceId:{},Date:{type:"timestamp"},Status:{shape:"Sw"},Parameters:{shape:"Sp"}}},Sw:{type:"structure",required:["Date","Name","Message"],members:{Date:{type:"timestamp"},Name:{},Message:{},AdditionalInfo:{}}},S12:{type:"structure",members:{Name:{},InstanceId:{},Parameters:{shape:"Sp"}}},S1c:{type:"structure",members:{Sha1:{},Hash:{},HashType:{},Name:{},Owner:{},CreatedDate:{type:"timestamp"},Status:{},Description:{},Parameters:{type:"list",member:{locationName:"DocumentParameter",type:"structure",members:{Name:{},Type:{},Description:{},DefaultValue:{}}}},PlatformTypes:{shape:"S1q"}}},S1q:{type:"list",member:{locationName:"PlatformType"}},S2m:{type:"list",member:{locationName:"AccountId"}},S3f:{type:"list",member:{type:"structure",required:["key","value"],members:{key:{},value:{}}}},S3y:{type:"structure",members:{NotificationArn:{},NotificationEvents:{type:"list",member:{}},NotificationType:{}}},S46:{type:"structure",members:{CommandId:{},DocumentName:{},Comment:{},ExpiresAfter:{type:"timestamp"},Parameters:{shape:"Sp"},InstanceIds:{shape:"Sb"},RequestedDateTime:{type:"timestamp"},Status:{},OutputS3BucketName:{},OutputS3KeyPrefix:{},ServiceRole:{},NotificationConfig:{shape:"S3y"}}}}}},{}],121:[function(e,t,r){t.exports={pagination:{DescribeInstanceInformation:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"InstanceInformationList"},ListAssociations:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"Associations"},ListCommandInvocations:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"CommandInvocations"},ListCommands:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"Commands"},ListDocuments:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"DocumentIdentifiers"},DescribeActivations:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"ActivationList"}}}},{}],122:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-06-30",endpointPrefix:"storagegateway",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS Storage Gateway",signatureVersion:"v4",targetPrefix:"StorageGateway_20130630"},operations:{ActivateGateway:{input:{type:"structure",required:["ActivationKey","GatewayName","GatewayTimezone","GatewayRegion"],members:{ActivationKey:{},GatewayName:{},GatewayTimezone:{},GatewayRegion:{},GatewayType:{},TapeDriveType:{},MediumChangerType:{}}},output:{type:"structure",members:{GatewayARN:{}}}},AddCache:{input:{type:"structure",required:["GatewayARN","DiskIds"],members:{GatewayARN:{},DiskIds:{shape:"Sc"}}},output:{type:"structure",members:{GatewayARN:{}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceARN","Tags"],members:{ResourceARN:{},Tags:{shape:"Sh"}}},output:{type:"structure",members:{ResourceARN:{}}}},AddUploadBuffer:{input:{type:"structure",required:["GatewayARN","DiskIds"],members:{GatewayARN:{},DiskIds:{shape:"Sc"}}},output:{type:"structure",members:{GatewayARN:{}}}},AddWorkingStorage:{input:{type:"structure",required:["GatewayARN","DiskIds"],members:{GatewayARN:{},DiskIds:{shape:"Sc"}}},output:{ +type:"structure",members:{GatewayARN:{}}}},CancelArchival:{input:{type:"structure",required:["GatewayARN","TapeARN"],members:{GatewayARN:{},TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},CancelRetrieval:{input:{type:"structure",required:["GatewayARN","TapeARN"],members:{GatewayARN:{},TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},CreateCachediSCSIVolume:{input:{type:"structure",required:["GatewayARN","VolumeSizeInBytes","TargetName","NetworkInterfaceId","ClientToken"],members:{GatewayARN:{},VolumeSizeInBytes:{type:"long"},SnapshotId:{},TargetName:{},NetworkInterfaceId:{},ClientToken:{}}},output:{type:"structure",members:{VolumeARN:{},TargetARN:{}}}},CreateSnapshot:{input:{type:"structure",required:["VolumeARN","SnapshotDescription"],members:{VolumeARN:{},SnapshotDescription:{}}},output:{type:"structure",members:{VolumeARN:{},SnapshotId:{}}}},CreateSnapshotFromVolumeRecoveryPoint:{input:{type:"structure",required:["VolumeARN","SnapshotDescription"],members:{VolumeARN:{},SnapshotDescription:{}}},output:{type:"structure",members:{SnapshotId:{},VolumeARN:{},VolumeRecoveryPointTime:{}}}},CreateStorediSCSIVolume:{input:{type:"structure",required:["GatewayARN","DiskId","PreserveExistingData","TargetName","NetworkInterfaceId"],members:{GatewayARN:{},DiskId:{},SnapshotId:{},PreserveExistingData:{type:"boolean"},TargetName:{},NetworkInterfaceId:{}}},output:{type:"structure",members:{VolumeARN:{},VolumeSizeInBytes:{type:"long"},TargetARN:{}}}},CreateTapeWithBarcode:{input:{type:"structure",required:["GatewayARN","TapeSizeInBytes","TapeBarcode"],members:{GatewayARN:{},TapeSizeInBytes:{type:"long"},TapeBarcode:{}}},output:{type:"structure",members:{TapeARN:{}}}},CreateTapes:{input:{type:"structure",required:["GatewayARN","TapeSizeInBytes","ClientToken","NumTapesToCreate","TapeBarcodePrefix"],members:{GatewayARN:{},TapeSizeInBytes:{type:"long"},ClientToken:{},NumTapesToCreate:{type:"integer"},TapeBarcodePrefix:{}}},output:{type:"structure",members:{TapeARNs:{shape:"S1l"}}}},DeleteBandwidthRateLimit:{input:{type:"structure",required:["GatewayARN","BandwidthType"],members:{GatewayARN:{},BandwidthType:{}}},output:{type:"structure",members:{GatewayARN:{}}}},DeleteChapCredentials:{input:{type:"structure",required:["TargetARN","InitiatorName"],members:{TargetARN:{},InitiatorName:{}}},output:{type:"structure",members:{TargetARN:{},InitiatorName:{}}}},DeleteGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},DeleteSnapshotSchedule:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{VolumeARN:{}}}},DeleteTape:{input:{type:"structure",required:["GatewayARN","TapeARN"],members:{GatewayARN:{},TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},DeleteTapeArchive:{input:{type:"structure",required:["TapeARN"],members:{TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},DeleteVolume:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{VolumeARN:{}}}},DescribeBandwidthRateLimit:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},AverageUploadRateLimitInBitsPerSec:{type:"long"},AverageDownloadRateLimitInBitsPerSec:{type:"long"}}}},DescribeCache:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},DiskIds:{shape:"Sc"},CacheAllocatedInBytes:{type:"long"},CacheUsedPercentage:{type:"double"},CacheDirtyPercentage:{type:"double"},CacheHitPercentage:{type:"double"},CacheMissPercentage:{type:"double"}}}},DescribeCachediSCSIVolumes:{input:{type:"structure",required:["VolumeARNs"],members:{VolumeARNs:{shape:"S2a"}}},output:{type:"structure",members:{CachediSCSIVolumes:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeId:{},VolumeType:{},VolumeStatus:{},VolumeSizeInBytes:{type:"long"},VolumeProgress:{type:"double"},SourceSnapshotId:{},VolumeiSCSIAttributes:{shape:"S2i"}}}}}}},DescribeChapCredentials:{input:{type:"structure",required:["TargetARN"],members:{TargetARN:{}}},output:{type:"structure",members:{ChapCredentials:{type:"list",member:{type:"structure",members:{TargetARN:{},SecretToAuthenticateInitiator:{},InitiatorName:{},SecretToAuthenticateTarget:{}}}}}}},DescribeGatewayInformation:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},GatewayId:{},GatewayName:{},GatewayTimezone:{},GatewayState:{},GatewayNetworkInterfaces:{type:"list",member:{type:"structure",members:{Ipv4Address:{},MacAddress:{},Ipv6Address:{}}}},GatewayType:{},NextUpdateAvailabilityDate:{},LastSoftwareUpdate:{}}}},DescribeMaintenanceStartTime:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},HourOfDay:{type:"integer"},MinuteOfHour:{type:"integer"},DayOfWeek:{type:"integer"},Timezone:{}}}},DescribeSnapshotSchedule:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{VolumeARN:{},StartAt:{type:"integer"},RecurrenceInHours:{type:"integer"},Description:{},Timezone:{}}}},DescribeStorediSCSIVolumes:{input:{type:"structure",required:["VolumeARNs"],members:{VolumeARNs:{shape:"S2a"}}},output:{type:"structure",members:{StorediSCSIVolumes:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeId:{},VolumeType:{},VolumeStatus:{},VolumeSizeInBytes:{type:"long"},VolumeProgress:{type:"double"},VolumeDiskId:{},SourceSnapshotId:{},PreservedExistingData:{type:"boolean"},VolumeiSCSIAttributes:{shape:"S2i"}}}}}}},DescribeTapeArchives:{input:{type:"structure",members:{TapeARNs:{shape:"S1l"},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{TapeArchives:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeBarcode:{},TapeSizeInBytes:{type:"long"},CompletionTime:{type:"timestamp"},RetrievedTo:{},TapeStatus:{}}}},Marker:{}}}},DescribeTapeRecoveryPoints:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{},TapeRecoveryPointInfos:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeRecoveryPointTime:{type:"timestamp"},TapeSizeInBytes:{type:"long"},TapeStatus:{}}}},Marker:{}}}},DescribeTapes:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},TapeARNs:{shape:"S1l"},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Tapes:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeBarcode:{},TapeSizeInBytes:{type:"long"},TapeStatus:{},VTLDevice:{},Progress:{type:"double"}}}},Marker:{}}}},DescribeUploadBuffer:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},DiskIds:{shape:"Sc"},UploadBufferUsedInBytes:{type:"long"},UploadBufferAllocatedInBytes:{type:"long"}}}},DescribeVTLDevices:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},VTLDeviceARNs:{type:"list",member:{}},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{},VTLDevices:{type:"list",member:{type:"structure",members:{VTLDeviceARN:{},VTLDeviceType:{},VTLDeviceVendor:{},VTLDeviceProductIdentifier:{},DeviceiSCSIAttributes:{type:"structure",members:{TargetARN:{},NetworkInterfaceId:{},NetworkInterfacePort:{type:"integer"},ChapEnabled:{type:"boolean"}}}}}},Marker:{}}}},DescribeWorkingStorage:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},DiskIds:{shape:"Sc"},WorkingStorageUsedInBytes:{type:"long"},WorkingStorageAllocatedInBytes:{type:"long"}}}},DisableGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},ListGateways:{input:{type:"structure",members:{Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Gateways:{type:"list",member:{type:"structure",members:{GatewayId:{},GatewayARN:{},GatewayType:{},GatewayOperationalState:{},GatewayName:{}}}},Marker:{}}}},ListLocalDisks:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},Disks:{type:"list",member:{type:"structure",members:{DiskId:{},DiskPath:{},DiskNode:{},DiskStatus:{},DiskSizeInBytes:{type:"long"},DiskAllocationType:{},DiskAllocationResource:{}}}}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceARN"],members:{ResourceARN:{},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{ResourceARN:{},Marker:{},Tags:{shape:"Sh"}}}},ListTapes:{input:{type:"structure",members:{TapeARNs:{shape:"S1l"},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{TapeInfos:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeBarcode:{},TapeSizeInBytes:{type:"long"},TapeStatus:{},GatewayARN:{}}}},Marker:{}}}},ListVolumeInitiators:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{Initiators:{type:"list",member:{}}}}},ListVolumeRecoveryPoints:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},VolumeRecoveryPointInfos:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeSizeInBytes:{type:"long"},VolumeUsageInBytes:{type:"long"},VolumeRecoveryPointTime:{}}}}}}},ListVolumes:{input:{type:"structure",members:{GatewayARN:{},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{},Marker:{},VolumeInfos:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeId:{},GatewayARN:{},GatewayId:{},VolumeType:{},VolumeSizeInBytes:{type:"long"}}}}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceARN","TagKeys"],members:{ResourceARN:{},TagKeys:{type:"list",member:{}}}},output:{type:"structure",members:{ResourceARN:{}}}},ResetCache:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},RetrieveTapeArchive:{input:{type:"structure",required:["TapeARN","GatewayARN"],members:{TapeARN:{},GatewayARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},RetrieveTapeRecoveryPoint:{input:{type:"structure",required:["TapeARN","GatewayARN"],members:{TapeARN:{},GatewayARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},SetLocalConsolePassword:{input:{type:"structure",required:["GatewayARN","LocalConsolePassword"],members:{GatewayARN:{},LocalConsolePassword:{type:"string",sensitive:!0}}},output:{type:"structure",members:{GatewayARN:{}}}},ShutdownGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},StartGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateBandwidthRateLimit:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},AverageUploadRateLimitInBitsPerSec:{type:"long"},AverageDownloadRateLimitInBitsPerSec:{type:"long"}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateChapCredentials:{input:{type:"structure",required:["TargetARN","SecretToAuthenticateInitiator","InitiatorName"],members:{TargetARN:{},SecretToAuthenticateInitiator:{},InitiatorName:{},SecretToAuthenticateTarget:{}}},output:{type:"structure",members:{TargetARN:{},InitiatorName:{}}}},UpdateGatewayInformation:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},GatewayName:{},GatewayTimezone:{}}},output:{type:"structure",members:{GatewayARN:{},GatewayName:{}}}},UpdateGatewaySoftwareNow:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateMaintenanceStartTime:{input:{type:"structure",required:["GatewayARN","HourOfDay","MinuteOfHour","DayOfWeek"],members:{GatewayARN:{},HourOfDay:{type:"integer"},MinuteOfHour:{type:"integer"},DayOfWeek:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateSnapshotSchedule:{input:{type:"structure",required:["VolumeARN","StartAt","RecurrenceInHours"],members:{VolumeARN:{},StartAt:{type:"integer"},RecurrenceInHours:{type:"integer"},Description:{}}},output:{type:"structure",members:{VolumeARN:{}}}},UpdateVTLDeviceType:{input:{type:"structure",required:["VTLDeviceARN","DeviceType"],members:{VTLDeviceARN:{},DeviceType:{}}},output:{type:"structure",members:{VTLDeviceARN:{}}}}},shapes:{Sc:{type:"list",member:{}},Sh:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},S1l:{type:"list",member:{}},S2a:{type:"list",member:{}},S2i:{type:"structure",members:{TargetARN:{},NetworkInterfaceId:{},NetworkInterfacePort:{type:"integer"},LunNumber:{type:"integer"},ChapEnabled:{type:"boolean"}}}}}},{}],123:[function(e,t,r){t.exports={pagination:{DescribeCachediSCSIVolumes:{result_key:"CachediSCSIVolumes"},DescribeStorediSCSIVolumes:{result_key:"StorediSCSIVolumes"},DescribeTapeArchives:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"TapeArchives"},DescribeTapeRecoveryPoints:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"TapeRecoveryPointInfos"},DescribeTapes:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"Tapes"},DescribeVTLDevices:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"VTLDevices"},ListGateways:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"Gateways"},ListLocalDisks:{result_key:"Disks"},ListVolumeRecoveryPoints:{result_key:"VolumeRecoveryPointInfos"},ListVolumes:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"VolumeInfos"}}}},{}],124:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-08-10",endpointPrefix:"streams.dynamodb",jsonVersion:"1.0",protocol:"json",serviceFullName:"Amazon DynamoDB Streams",signatureVersion:"v4",signingName:"dynamodb",targetPrefix:"DynamoDBStreams_20120810"},operations:{DescribeStream:{input:{type:"structure",required:["StreamArn"],members:{StreamArn:{},Limit:{type:"integer"},ExclusiveStartShardId:{}}},output:{type:"structure",members:{StreamDescription:{type:"structure",members:{StreamArn:{},StreamLabel:{},StreamStatus:{},StreamViewType:{},CreationRequestDateTime:{type:"timestamp"},TableName:{},KeySchema:{type:"list",member:{type:"structure",required:["AttributeName","KeyType"],members:{AttributeName:{},KeyType:{}}}},Shards:{type:"list",member:{type:"structure",members:{ShardId:{},SequenceNumberRange:{type:"structure",members:{StartingSequenceNumber:{},EndingSequenceNumber:{}}},ParentShardId:{}}}},LastEvaluatedShardId:{}}}}}},GetRecords:{input:{type:"structure",required:["ShardIterator"],members:{ShardIterator:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Records:{type:"list",member:{type:"structure",members:{eventID:{},eventName:{},eventVersion:{},eventSource:{},awsRegion:{},dynamodb:{type:"structure",members:{ApproximateCreationDateTime:{type:"timestamp"},Keys:{shape:"Sr"},NewImage:{shape:"Sr"},OldImage:{shape:"Sr"},SequenceNumber:{},SizeBytes:{type:"long"},StreamViewType:{}}}}}},NextShardIterator:{}}}},GetShardIterator:{input:{type:"structure",required:["StreamArn","ShardId","ShardIteratorType"],members:{StreamArn:{},ShardId:{},ShardIteratorType:{},SequenceNumber:{}}},output:{type:"structure",members:{ShardIterator:{}}}},ListStreams:{input:{type:"structure",members:{TableName:{},Limit:{type:"integer"},ExclusiveStartStreamArn:{}}},output:{type:"structure",members:{Streams:{type:"list",member:{type:"structure",members:{StreamArn:{},TableName:{},StreamLabel:{}}}},LastEvaluatedStreamArn:{}}}}},shapes:{Sr:{type:"map",key:{},value:{shape:"St"}},St:{type:"structure",members:{S:{},N:{},B:{type:"blob"},SS:{type:"list",member:{}},NS:{type:"list",member:{}},BS:{type:"list",member:{type:"blob"}},M:{type:"map",key:{},value:{shape:"St"}},L:{type:"list",member:{shape:"St"}},NULL:{type:"boolean"},BOOL:{type:"boolean"}}}}}},{}],125:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2011-06-15",endpointPrefix:"sts",globalEndpoint:"sts.amazonaws.com",protocol:"query",serviceAbbreviation:"AWS STS",serviceFullName:"AWS Security Token Service",signatureVersion:"v4",xmlNamespace:"https://sts.amazonaws.com/doc/2011-06-15/"},operations:{AssumeRole:{input:{type:"structure",required:["RoleArn","RoleSessionName"],members:{RoleArn:{},RoleSessionName:{},Policy:{},DurationSeconds:{type:"integer"},ExternalId:{},SerialNumber:{},TokenCode:{}}},output:{resultWrapper:"AssumeRoleResult",type:"structure",members:{Credentials:{shape:"Sa"},AssumedRoleUser:{shape:"Sf"},PackedPolicySize:{type:"integer"}}}},AssumeRoleWithSAML:{input:{type:"structure",required:["RoleArn","PrincipalArn","SAMLAssertion"],members:{RoleArn:{},PrincipalArn:{},SAMLAssertion:{},Policy:{},DurationSeconds:{type:"integer"}}},output:{resultWrapper:"AssumeRoleWithSAMLResult",type:"structure",members:{Credentials:{shape:"Sa"},AssumedRoleUser:{shape:"Sf"},PackedPolicySize:{type:"integer"},Subject:{},SubjectType:{},Issuer:{},Audience:{},NameQualifier:{}}}},AssumeRoleWithWebIdentity:{input:{type:"structure",required:["RoleArn","RoleSessionName","WebIdentityToken"],members:{RoleArn:{},RoleSessionName:{},WebIdentityToken:{},ProviderId:{},Policy:{},DurationSeconds:{type:"integer"}}},output:{resultWrapper:"AssumeRoleWithWebIdentityResult",type:"structure",members:{Credentials:{shape:"Sa"},SubjectFromWebIdentityToken:{},AssumedRoleUser:{shape:"Sf"},PackedPolicySize:{type:"integer"},Provider:{},Audience:{}}}},DecodeAuthorizationMessage:{input:{type:"structure",required:["EncodedMessage"],members:{EncodedMessage:{}}},output:{resultWrapper:"DecodeAuthorizationMessageResult",type:"structure",members:{DecodedMessage:{}}}},GetCallerIdentity:{input:{type:"structure",members:{}},output:{resultWrapper:"GetCallerIdentityResult",type:"structure",members:{UserId:{},Account:{},Arn:{}}}},GetFederationToken:{input:{type:"structure",required:["Name"],members:{Name:{},Policy:{},DurationSeconds:{type:"integer"}}},output:{resultWrapper:"GetFederationTokenResult",type:"structure",members:{Credentials:{shape:"Sa"},FederatedUser:{type:"structure",required:["FederatedUserId","Arn"],members:{FederatedUserId:{},Arn:{}}},PackedPolicySize:{type:"integer"}}}},GetSessionToken:{input:{type:"structure",members:{DurationSeconds:{type:"integer"},SerialNumber:{},TokenCode:{}}},output:{resultWrapper:"GetSessionTokenResult",type:"structure",members:{Credentials:{shape:"Sa"}}}}},shapes:{Sa:{type:"structure",required:["AccessKeyId","SecretAccessKey","SessionToken","Expiration"],members:{AccessKeyId:{},SecretAccessKey:{},SessionToken:{},Expiration:{type:"timestamp"}}},Sf:{type:"structure",required:["AssumedRoleId","Arn"],members:{AssumedRoleId:{},Arn:{}}}}}},{}],126:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-08-24",endpointPrefix:"waf",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"WAF",serviceFullName:"AWS WAF",signatureVersion:"v4",targetPrefix:"AWSWAF_20150824"},operations:{CreateByteMatchSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{ByteMatchSet:{shape:"S5"},ChangeToken:{}}}},CreateIPSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{IPSet:{shape:"Sh"},ChangeToken:{}}}},CreateRule:{input:{type:"structure",required:["Name","MetricName","ChangeToken"],members:{Name:{},MetricName:{},ChangeToken:{}}},output:{type:"structure",members:{Rule:{shape:"Sp"},ChangeToken:{}}}},CreateSizeConstraintSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{SizeConstraintSet:{shape:"Sw"},ChangeToken:{}}}},CreateSqlInjectionMatchSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{SqlInjectionMatchSet:{shape:"S13"},ChangeToken:{}}}},CreateWebACL:{input:{type:"structure",required:["Name","MetricName","DefaultAction","ChangeToken"],members:{Name:{},MetricName:{},DefaultAction:{shape:"S17"},ChangeToken:{}}},output:{type:"structure",members:{WebACL:{shape:"S1a"},ChangeToken:{}}}},CreateXssMatchSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{XssMatchSet:{shape:"S1g"},ChangeToken:{}}}},DeleteByteMatchSet:{input:{type:"structure",required:["ByteMatchSetId","ChangeToken"],members:{ByteMatchSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteIPSet:{input:{type:"structure",required:["IPSetId","ChangeToken"],members:{IPSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteRule:{input:{type:"structure",required:["RuleId","ChangeToken"],members:{RuleId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteSizeConstraintSet:{input:{type:"structure",required:["SizeConstraintSetId","ChangeToken"],members:{SizeConstraintSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteSqlInjectionMatchSet:{input:{type:"structure",required:["SqlInjectionMatchSetId","ChangeToken"],members:{SqlInjectionMatchSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteWebACL:{input:{type:"structure",required:["WebACLId","ChangeToken"],members:{WebACLId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteXssMatchSet:{input:{type:"structure",required:["XssMatchSetId","ChangeToken"],members:{XssMatchSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},GetByteMatchSet:{input:{type:"structure",required:["ByteMatchSetId"],members:{ByteMatchSetId:{}}},output:{type:"structure",members:{ByteMatchSet:{shape:"S5"}}}},GetChangeToken:{input:{type:"structure",members:{}},output:{type:"structure",members:{ChangeToken:{}}}},GetChangeTokenStatus:{input:{type:"structure",required:["ChangeToken"],members:{ChangeToken:{}}},output:{type:"structure",members:{ChangeTokenStatus:{}}}},GetIPSet:{input:{type:"structure",required:["IPSetId"],members:{IPSetId:{}}},output:{type:"structure",members:{IPSet:{shape:"Sh"}}}},GetRule:{input:{type:"structure",required:["RuleId"],members:{RuleId:{}}},output:{type:"structure",members:{Rule:{shape:"Sp"}}}},GetSampledRequests:{input:{type:"structure",required:["WebAclId","RuleId","TimeWindow","MaxItems"],members:{WebAclId:{},RuleId:{},TimeWindow:{shape:"S29"},MaxItems:{type:"long"}}},output:{type:"structure",members:{SampledRequests:{type:"list",member:{type:"structure",required:["Request","Weight"],members:{Request:{type:"structure",members:{ClientIP:{},Country:{},URI:{},Method:{},HTTPVersion:{},Headers:{type:"list",member:{type:"structure",members:{Name:{},Value:{}}}}}},Weight:{type:"long"},Timestamp:{type:"timestamp"},Action:{}}}},PopulationSize:{type:"long"},TimeWindow:{shape:"S29"}}}},GetSizeConstraintSet:{input:{type:"structure",required:["SizeConstraintSetId"],members:{SizeConstraintSetId:{}}},output:{type:"structure",members:{SizeConstraintSet:{shape:"Sw"}}}},GetSqlInjectionMatchSet:{input:{type:"structure",required:["SqlInjectionMatchSetId"],members:{SqlInjectionMatchSetId:{}}},output:{type:"structure",members:{SqlInjectionMatchSet:{shape:"S13"}}}},GetWebACL:{input:{type:"structure",required:["WebACLId"],members:{WebACLId:{}}},output:{type:"structure",members:{WebACL:{shape:"S1a"}}}},GetXssMatchSet:{input:{type:"structure",required:["XssMatchSetId"],members:{XssMatchSetId:{}}},output:{type:"structure",members:{XssMatchSet:{shape:"S1g"}}}},ListByteMatchSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},ByteMatchSets:{type:"list",member:{type:"structure",required:["ByteMatchSetId","Name"],members:{ByteMatchSetId:{},Name:{}}}}}}},ListIPSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},IPSets:{type:"list",member:{type:"structure",required:["IPSetId","Name"],members:{IPSetId:{},Name:{}}}}}}},ListRules:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Rules:{type:"list",member:{type:"structure",required:["RuleId","Name"],members:{RuleId:{},Name:{}}}}}}},ListSizeConstraintSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},SizeConstraintSets:{type:"list",member:{type:"structure",required:["SizeConstraintSetId","Name"],members:{SizeConstraintSetId:{},Name:{}}}}}}},ListSqlInjectionMatchSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},SqlInjectionMatchSets:{type:"list",member:{type:"structure",required:["SqlInjectionMatchSetId","Name"],members:{SqlInjectionMatchSetId:{},Name:{}}}}}}},ListWebACLs:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},WebACLs:{type:"list",member:{type:"structure",required:["WebACLId","Name"],members:{WebACLId:{},Name:{}}}}}}},ListXssMatchSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},XssMatchSets:{type:"list",member:{type:"structure",required:["XssMatchSetId","Name"],members:{XssMatchSetId:{},Name:{}}}}}}},UpdateByteMatchSet:{input:{type:"structure",required:["ByteMatchSetId","ChangeToken","Updates"],members:{ByteMatchSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","ByteMatchTuple"],members:{Action:{},ByteMatchTuple:{shape:"S8"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateIPSet:{input:{type:"structure",required:["IPSetId","ChangeToken","Updates"],members:{IPSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","IPSetDescriptor"],members:{Action:{},IPSetDescriptor:{shape:"Sj"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateRule:{input:{type:"structure",required:["RuleId","ChangeToken","Updates"],members:{RuleId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","Predicate"],members:{Action:{},Predicate:{shape:"Sr"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateSizeConstraintSet:{input:{type:"structure",required:["SizeConstraintSetId","ChangeToken","Updates"],members:{SizeConstraintSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","SizeConstraint"],members:{Action:{},SizeConstraint:{shape:"Sy"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateSqlInjectionMatchSet:{input:{type:"structure",required:["SqlInjectionMatchSetId","ChangeToken","Updates"],members:{SqlInjectionMatchSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","SqlInjectionMatchTuple"],members:{Action:{},SqlInjectionMatchTuple:{shape:"S15"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateWebACL:{input:{type:"structure",required:["WebACLId","ChangeToken"],members:{WebACLId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","ActivatedRule"],members:{Action:{},ActivatedRule:{shape:"S1c"}}}},DefaultAction:{shape:"S17"}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateXssMatchSet:{input:{type:"structure",required:["XssMatchSetId","ChangeToken","Updates"],members:{XssMatchSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","XssMatchTuple"],members:{Action:{},XssMatchTuple:{shape:"S1i"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}}},shapes:{S5:{type:"structure",required:["ByteMatchSetId","ByteMatchTuples"],members:{ByteMatchSetId:{},Name:{},ByteMatchTuples:{type:"list",member:{shape:"S8"}}}},S8:{type:"structure",required:["FieldToMatch","TargetString","TextTransformation","PositionalConstraint"],members:{FieldToMatch:{shape:"S9"},TargetString:{type:"blob"},TextTransformation:{},PositionalConstraint:{}}},S9:{type:"structure",required:["Type"],members:{Type:{},Data:{}}},Sh:{type:"structure",required:["IPSetId","IPSetDescriptors"],members:{IPSetId:{},Name:{},IPSetDescriptors:{type:"list",member:{shape:"Sj"}}}},Sj:{type:"structure",required:["Type","Value"],members:{Type:{},Value:{}}},Sp:{type:"structure",required:["RuleId","Predicates"],members:{RuleId:{},Name:{},MetricName:{},Predicates:{type:"list",member:{shape:"Sr"}}}},Sr:{type:"structure",required:["Negated","Type","DataId"],members:{Negated:{type:"boolean"},Type:{},DataId:{}}},Sw:{type:"structure",required:["SizeConstraintSetId","SizeConstraints"],members:{SizeConstraintSetId:{},Name:{},SizeConstraints:{type:"list",member:{shape:"Sy"}}}},Sy:{type:"structure",required:["FieldToMatch","TextTransformation","ComparisonOperator","Size"],members:{FieldToMatch:{shape:"S9"},TextTransformation:{},ComparisonOperator:{},Size:{type:"long"}}},S13:{type:"structure",required:["SqlInjectionMatchSetId","SqlInjectionMatchTuples"],members:{SqlInjectionMatchSetId:{},Name:{},SqlInjectionMatchTuples:{type:"list",member:{shape:"S15"}}}},S15:{type:"structure",required:["FieldToMatch","TextTransformation"],members:{FieldToMatch:{shape:"S9"},TextTransformation:{}}},S17:{type:"structure",required:["Type"],members:{Type:{}}},S1a:{type:"structure",required:["WebACLId","DefaultAction","Rules"],members:{WebACLId:{},Name:{},MetricName:{},DefaultAction:{shape:"S17"},Rules:{type:"list",member:{shape:"S1c"}}}},S1c:{type:"structure",required:["Priority","RuleId","Action"],members:{Priority:{type:"integer"},RuleId:{},Action:{shape:"S17"}}},S1g:{type:"structure",required:["XssMatchSetId","XssMatchTuples"],members:{XssMatchSetId:{},Name:{},XssMatchTuples:{type:"list",member:{shape:"S1i"}}}},S1i:{type:"structure",required:["FieldToMatch","TextTransformation"],members:{FieldToMatch:{shape:"S9"},TextTransformation:{}}},S29:{type:"structure",required:["StartTime","EndTime"],members:{StartTime:{type:"timestamp"},EndTime:{type:"timestamp"}}}}}},{}],127:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.acm={},a.ACM=s.defineService("acm",["2015-12-08"]),Object.defineProperty(i.services.acm,"2015-12-08",{get:function(){var t=e("../apis/acm-2015-12-08.min.json");return t.paginators=e("../apis/acm-2015-12-08.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ACM},{"../apis/acm-2015-12-08.min.json":1,"../apis/acm-2015-12-08.paginators.json":2,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],128:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.apigateway={},a.APIGateway=s.defineService("apigateway",["2015-07-09"]),e("../lib/services/apigateway"),Object.defineProperty(i.services.apigateway,"2015-07-09",{get:function(){var t=e("../apis/apigateway-2015-07-09.min.json");return t.paginators=e("../apis/apigateway-2015-07-09.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.APIGateway},{"../apis/apigateway-2015-07-09.min.json":3,"../apis/apigateway-2015-07-09.paginators.json":4,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/apigateway":226}],129:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.applicationautoscaling={},a.ApplicationAutoScaling=s.defineService("applicationautoscaling",["2016-02-06"]),Object.defineProperty(i.services.applicationautoscaling,"2016-02-06",{get:function(){var t=e("../apis/application-autoscaling-2016-02-06.min.json");return t.paginators=e("../apis/application-autoscaling-2016-02-06.paginators.json").pagination, +t},enumerable:!0,configurable:!0}),t.exports=a.ApplicationAutoScaling},{"../apis/application-autoscaling-2016-02-06.min.json":5,"../apis/application-autoscaling-2016-02-06.paginators.json":6,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],130:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.autoscaling={},a.AutoScaling=s.defineService("autoscaling",["2011-01-01"]),Object.defineProperty(i.services.autoscaling,"2011-01-01",{get:function(){var t=e("../apis/autoscaling-2011-01-01.min.json");return t.paginators=e("../apis/autoscaling-2011-01-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.AutoScaling},{"../apis/autoscaling-2011-01-01.min.json":7,"../apis/autoscaling-2011-01-01.paginators.json":8,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],131:[function(e,t,r){e("../lib/node_loader");e("../lib/core");t.exports={ACM:e("./acm"),APIGateway:e("./apigateway"),ApplicationAutoScaling:e("./applicationautoscaling"),AutoScaling:e("./autoscaling"),CloudFormation:e("./cloudformation"),CloudFront:e("./cloudfront"),CloudHSM:e("./cloudhsm"),CloudTrail:e("./cloudtrail"),CloudWatch:e("./cloudwatch"),CloudWatchEvents:e("./cloudwatchevents"),CloudWatchLogs:e("./cloudwatchlogs"),CodeCommit:e("./codecommit"),CodeDeploy:e("./codedeploy"),CodePipeline:e("./codepipeline"),CognitoIdentity:e("./cognitoidentity"),CognitoIdentityServiceProvider:e("./cognitoidentityserviceprovider"),CognitoSync:e("./cognitosync"),ConfigService:e("./configservice"),DeviceFarm:e("./devicefarm"),DirectConnect:e("./directconnect"),DynamoDB:e("./dynamodb"),DynamoDBStreams:e("./dynamodbstreams"),EC2:e("./ec2"),ECR:e("./ecr"),ECS:e("./ecs"),ElastiCache:e("./elasticache"),ElasticBeanstalk:e("./elasticbeanstalk"),ELB:e("./elb"),ELBv2:e("./elbv2"),EMR:e("./emr"),ElasticTranscoder:e("./elastictranscoder"),Firehose:e("./firehose"),GameLift:e("./gamelift"),Inspector:e("./inspector"),Iot:e("./iot"),IotData:e("./iotdata"),Kinesis:e("./kinesis"),KMS:e("./kms"),Lambda:e("./lambda"),MachineLearning:e("./machinelearning"),MarketplaceCommerceAnalytics:e("./marketplacecommerceanalytics"),MobileAnalytics:e("./mobileanalytics"),OpsWorks:e("./opsworks"),RDS:e("./rds"),Redshift:e("./redshift"),Route53:e("./route53"),Route53Domains:e("./route53domains"),S3:e("./s3"),ServiceCatalog:e("./servicecatalog"),SES:e("./ses"),SNS:e("./sns"),SQS:e("./sqs"),SSM:e("./ssm"),StorageGateway:e("./storagegateway"),STS:e("./sts"),WAF:e("./waf")}},{"../lib/core":188,"../lib/node_loader":185,"./acm":127,"./apigateway":128,"./applicationautoscaling":129,"./autoscaling":130,"./cloudformation":132,"./cloudfront":133,"./cloudhsm":134,"./cloudtrail":135,"./cloudwatch":136,"./cloudwatchevents":137,"./cloudwatchlogs":138,"./codecommit":139,"./codedeploy":140,"./codepipeline":141,"./cognitoidentity":142,"./cognitoidentityserviceprovider":143,"./cognitosync":144,"./configservice":145,"./devicefarm":146,"./directconnect":147,"./dynamodb":148,"./dynamodbstreams":149,"./ec2":150,"./ecr":151,"./ecs":152,"./elasticache":153,"./elasticbeanstalk":154,"./elastictranscoder":155,"./elb":156,"./elbv2":157,"./emr":158,"./firehose":159,"./gamelift":160,"./inspector":161,"./iot":162,"./iotdata":163,"./kinesis":164,"./kms":165,"./lambda":166,"./machinelearning":167,"./marketplacecommerceanalytics":168,"./mobileanalytics":169,"./opsworks":170,"./rds":171,"./redshift":172,"./route53":173,"./route53domains":174,"./s3":175,"./servicecatalog":176,"./ses":177,"./sns":178,"./sqs":179,"./ssm":180,"./storagegateway":181,"./sts":182,"./waf":183}],132:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudformation={},a.CloudFormation=s.defineService("cloudformation",["2010-05-15"]),Object.defineProperty(i.services.cloudformation,"2010-05-15",{get:function(){var t=e("../apis/cloudformation-2010-05-15.min.json");return t.paginators=e("../apis/cloudformation-2010-05-15.paginators.json").pagination,t.waiters=e("../apis/cloudformation-2010-05-15.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CloudFormation},{"../apis/cloudformation-2010-05-15.min.json":9,"../apis/cloudformation-2010-05-15.paginators.json":10,"../apis/cloudformation-2010-05-15.waiters2.json":11,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],133:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudfront={},a.CloudFront=s.defineService("cloudfront",["2013-05-12*","2013-11-11*","2014-05-31*","2014-10-21*","2014-11-06*","2015-04-17*","2015-07-27*","2015-09-17*","2016-01-13*","2016-01-28*","2016-08-01*","2016-08-20*","2016-09-07"]),e("../lib/services/cloudfront"),Object.defineProperty(i.services.cloudfront,"2016-09-07",{get:function(){var t=e("../apis/cloudfront-2016-09-07.min.json");return t.paginators=e("../apis/cloudfront-2016-09-07.paginators.json").pagination,t.waiters=e("../apis/cloudfront-2016-09-07.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CloudFront},{"../apis/cloudfront-2016-09-07.min.json":12,"../apis/cloudfront-2016-09-07.paginators.json":13,"../apis/cloudfront-2016-09-07.waiters2.json":14,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cloudfront":227}],134:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudhsm={},a.CloudHSM=s.defineService("cloudhsm",["2014-05-30"]),Object.defineProperty(i.services.cloudhsm,"2014-05-30",{get:function(){var t=e("../apis/cloudhsm-2014-05-30.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CloudHSM},{"../apis/cloudhsm-2014-05-30.min.json":15,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],135:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudtrail={},a.CloudTrail=s.defineService("cloudtrail",["2013-11-01"]),Object.defineProperty(i.services.cloudtrail,"2013-11-01",{get:function(){var t=e("../apis/cloudtrail-2013-11-01.min.json");return t.paginators=e("../apis/cloudtrail-2013-11-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.CloudTrail},{"../apis/cloudtrail-2013-11-01.min.json":16,"../apis/cloudtrail-2013-11-01.paginators.json":17,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],136:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudwatch={},a.CloudWatch=s.defineService("cloudwatch",["2010-08-01"]),Object.defineProperty(i.services.cloudwatch,"2010-08-01",{get:function(){var t=e("../apis/monitoring-2010-08-01.min.json");return t.paginators=e("../apis/monitoring-2010-08-01.paginators.json").pagination,t.waiters=e("../apis/monitoring-2010-08-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CloudWatch},{"../apis/monitoring-2010-08-01.min.json":88,"../apis/monitoring-2010-08-01.paginators.json":89,"../apis/monitoring-2010-08-01.waiters2.json":90,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],137:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudwatchevents={},a.CloudWatchEvents=s.defineService("cloudwatchevents",["2014-02-03*","2015-10-07"]),Object.defineProperty(i.services.cloudwatchevents,"2015-10-07",{get:function(){var t=e("../apis/events-2015-10-07.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CloudWatchEvents},{"../apis/events-2015-10-07.min.json":65,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],138:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudwatchlogs={},a.CloudWatchLogs=s.defineService("cloudwatchlogs",["2014-03-28"]),Object.defineProperty(i.services.cloudwatchlogs,"2014-03-28",{get:function(){var t=e("../apis/logs-2014-03-28.min.json");return t.paginators=e("../apis/logs-2014-03-28.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.CloudWatchLogs},{"../apis/logs-2014-03-28.min.json":80,"../apis/logs-2014-03-28.paginators.json":81,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],139:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.codecommit={},a.CodeCommit=s.defineService("codecommit",["2015-04-13"]),Object.defineProperty(i.services.codecommit,"2015-04-13",{get:function(){var t=e("../apis/codecommit-2015-04-13.min.json");return t.paginators=e("../apis/codecommit-2015-04-13.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.CodeCommit},{"../apis/codecommit-2015-04-13.min.json":18,"../apis/codecommit-2015-04-13.paginators.json":19,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],140:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.codedeploy={},a.CodeDeploy=s.defineService("codedeploy",["2014-10-06"]),Object.defineProperty(i.services.codedeploy,"2014-10-06",{get:function(){var t=e("../apis/codedeploy-2014-10-06.min.json");return t.paginators=e("../apis/codedeploy-2014-10-06.paginators.json").pagination,t.waiters=e("../apis/codedeploy-2014-10-06.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CodeDeploy},{"../apis/codedeploy-2014-10-06.min.json":20,"../apis/codedeploy-2014-10-06.paginators.json":21,"../apis/codedeploy-2014-10-06.waiters2.json":22,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],141:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.codepipeline={},a.CodePipeline=s.defineService("codepipeline",["2015-07-09"]),Object.defineProperty(i.services.codepipeline,"2015-07-09",{get:function(){var t=e("../apis/codepipeline-2015-07-09.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CodePipeline},{"../apis/codepipeline-2015-07-09.min.json":23,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],142:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cognitoidentity={},a.CognitoIdentity=s.defineService("cognitoidentity",["2014-06-30"]),e("../lib/services/cognitoidentity"),Object.defineProperty(i.services.cognitoidentity,"2014-06-30",{get:function(){var t=e("../apis/cognito-identity-2014-06-30.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CognitoIdentity},{"../apis/cognito-identity-2014-06-30.min.json":24,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cognitoidentity":228}],143:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cognitoidentityserviceprovider={},a.CognitoIdentityServiceProvider=s.defineService("cognitoidentityserviceprovider",["2016-04-18"]),Object.defineProperty(i.services.cognitoidentityserviceprovider,"2016-04-18",{get:function(){var t=e("../apis/cognito-idp-2016-04-18.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CognitoIdentityServiceProvider},{"../apis/cognito-idp-2016-04-18.min.json":25,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],144:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cognitosync={},a.CognitoSync=s.defineService("cognitosync",["2014-06-30"]),Object.defineProperty(i.services.cognitosync,"2014-06-30",{get:function(){var t=e("../apis/cognito-sync-2014-06-30.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CognitoSync},{"../apis/cognito-sync-2014-06-30.min.json":26,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],145:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.configservice={},a.ConfigService=s.defineService("configservice",["2014-11-12"]),Object.defineProperty(i.services.configservice,"2014-11-12",{get:function(){var t=e("../apis/config-2014-11-12.min.json");return t.paginators=e("../apis/config-2014-11-12.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ConfigService},{"../apis/config-2014-11-12.min.json":27,"../apis/config-2014-11-12.paginators.json":28,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],146:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.devicefarm={},a.DeviceFarm=s.defineService("devicefarm",["2015-06-23"]),Object.defineProperty(i.services.devicefarm,"2015-06-23",{get:function(){var t=e("../apis/devicefarm-2015-06-23.min.json");return t.paginators=e("../apis/devicefarm-2015-06-23.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.DeviceFarm},{"../apis/devicefarm-2015-06-23.min.json":29,"../apis/devicefarm-2015-06-23.paginators.json":30,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],147:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.directconnect={},a.DirectConnect=s.defineService("directconnect",["2012-10-25"]),Object.defineProperty(i.services.directconnect,"2012-10-25",{get:function(){var t=e("../apis/directconnect-2012-10-25.min.json");return t.paginators=e("../apis/directconnect-2012-10-25.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.DirectConnect},{"../apis/directconnect-2012-10-25.min.json":31,"../apis/directconnect-2012-10-25.paginators.json":32,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],148:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.dynamodb={},a.DynamoDB=s.defineService("dynamodb",["2011-12-05","2012-08-10"]),e("../lib/services/dynamodb"),Object.defineProperty(i.services.dynamodb,"2011-12-05",{get:function(){var t=e("../apis/dynamodb-2011-12-05.min.json");return t.paginators=e("../apis/dynamodb-2011-12-05.paginators.json").pagination,t.waiters=e("../apis/dynamodb-2011-12-05.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.dynamodb,"2012-08-10",{get:function(){var t=e("../apis/dynamodb-2012-08-10.min.json");return t.paginators=e("../apis/dynamodb-2012-08-10.paginators.json").pagination,t.waiters=e("../apis/dynamodb-2012-08-10.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.DynamoDB},{"../apis/dynamodb-2011-12-05.min.json":33,"../apis/dynamodb-2011-12-05.paginators.json":34,"../apis/dynamodb-2011-12-05.waiters2.json":35,"../apis/dynamodb-2012-08-10.min.json":36,"../apis/dynamodb-2012-08-10.paginators.json":37,"../apis/dynamodb-2012-08-10.waiters2.json":38,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/dynamodb":229}],149:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.dynamodbstreams={},a.DynamoDBStreams=s.defineService("dynamodbstreams",["2012-08-10"]),Object.defineProperty(i.services.dynamodbstreams,"2012-08-10",{get:function(){var t=e("../apis/streams.dynamodb-2012-08-10.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.DynamoDBStreams},{"../apis/streams.dynamodb-2012-08-10.min.json":124,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],150:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ec2={},a.EC2=s.defineService("ec2",["2013-06-15*","2013-10-15*","2014-02-01*","2014-05-01*","2014-06-15*","2014-09-01*","2014-10-01*","2015-03-01*","2015-04-15*","2015-10-01*","2016-04-01*","2016-09-15"]),e("../lib/services/ec2"),Object.defineProperty(i.services.ec2,"2016-09-15",{get:function(){var t=e("../apis/ec2-2016-09-15.min.json");return t.paginators=e("../apis/ec2-2016-09-15.paginators.json").pagination,t.waiters=e("../apis/ec2-2016-09-15.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.EC2},{"../apis/ec2-2016-09-15.min.json":39,"../apis/ec2-2016-09-15.paginators.json":40,"../apis/ec2-2016-09-15.waiters2.json":41,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/ec2":230}],151:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ecr={},a.ECR=s.defineService("ecr",["2015-09-21"]),Object.defineProperty(i.services.ecr,"2015-09-21",{get:function(){var t=e("../apis/ecr-2015-09-21.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.ECR},{"../apis/ecr-2015-09-21.min.json":42,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],152:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ecs={},a.ECS=s.defineService("ecs",["2014-11-13"]),Object.defineProperty(i.services.ecs,"2014-11-13",{get:function(){var t=e("../apis/ecs-2014-11-13.min.json");return t.paginators=e("../apis/ecs-2014-11-13.paginators.json").pagination,t.waiters=e("../apis/ecs-2014-11-13.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ECS},{"../apis/ecs-2014-11-13.min.json":43,"../apis/ecs-2014-11-13.paginators.json":44,"../apis/ecs-2014-11-13.waiters2.json":45,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],153:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elasticache={},a.ElastiCache=s.defineService("elasticache",["2012-11-15*","2014-03-24*","2014-07-15*","2014-09-30*","2015-02-02"]),Object.defineProperty(i.services.elasticache,"2015-02-02",{get:function(){var t=e("../apis/elasticache-2015-02-02.min.json");return t.paginators=e("../apis/elasticache-2015-02-02.paginators.json").pagination,t.waiters=e("../apis/elasticache-2015-02-02.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ElastiCache},{"../apis/elasticache-2015-02-02.min.json":46,"../apis/elasticache-2015-02-02.paginators.json":47,"../apis/elasticache-2015-02-02.waiters2.json":48,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],154:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elasticbeanstalk={},a.ElasticBeanstalk=s.defineService("elasticbeanstalk",["2010-12-01"]),Object.defineProperty(i.services.elasticbeanstalk,"2010-12-01",{get:function(){var t=e("../apis/elasticbeanstalk-2010-12-01.min.json");return t.paginators=e("../apis/elasticbeanstalk-2010-12-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ElasticBeanstalk},{"../apis/elasticbeanstalk-2010-12-01.min.json":49,"../apis/elasticbeanstalk-2010-12-01.paginators.json":50,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],155:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elastictranscoder={},a.ElasticTranscoder=s.defineService("elastictranscoder",["2012-09-25"]),Object.defineProperty(i.services.elastictranscoder,"2012-09-25",{get:function(){var t=e("../apis/elastictranscoder-2012-09-25.min.json");return t.paginators=e("../apis/elastictranscoder-2012-09-25.paginators.json").pagination,t.waiters=e("../apis/elastictranscoder-2012-09-25.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ElasticTranscoder},{"../apis/elastictranscoder-2012-09-25.min.json":59,"../apis/elastictranscoder-2012-09-25.paginators.json":60,"../apis/elastictranscoder-2012-09-25.waiters2.json":61,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],156:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elb={},a.ELB=s.defineService("elb",["2012-06-01"]),Object.defineProperty(i.services.elb,"2012-06-01",{get:function(){var t=e("../apis/elasticloadbalancing-2012-06-01.min.json");return t.paginators=e("../apis/elasticloadbalancing-2012-06-01.paginators.json").pagination,t.waiters=e("../apis/elasticloadbalancing-2012-06-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ELB},{"../apis/elasticloadbalancing-2012-06-01.min.json":51,"../apis/elasticloadbalancing-2012-06-01.paginators.json":52,"../apis/elasticloadbalancing-2012-06-01.waiters2.json":53,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],157:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elbv2={},a.ELBv2=s.defineService("elbv2",["2015-12-01"]),Object.defineProperty(i.services.elbv2,"2015-12-01",{get:function(){var t=e("../apis/elasticloadbalancingv2-2015-12-01.min.json");return t.paginators=e("../apis/elasticloadbalancingv2-2015-12-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ELBv2},{"../apis/elasticloadbalancingv2-2015-12-01.min.json":54,"../apis/elasticloadbalancingv2-2015-12-01.paginators.json":55,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],158:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.emr={},a.EMR=s.defineService("emr",["2009-03-31"]),Object.defineProperty(i.services.emr,"2009-03-31",{get:function(){var t=e("../apis/elasticmapreduce-2009-03-31.min.json");return t.paginators=e("../apis/elasticmapreduce-2009-03-31.paginators.json").pagination,t.waiters=e("../apis/elasticmapreduce-2009-03-31.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.EMR},{"../apis/elasticmapreduce-2009-03-31.min.json":56,"../apis/elasticmapreduce-2009-03-31.paginators.json":57,"../apis/elasticmapreduce-2009-03-31.waiters2.json":58,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],159:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.firehose={},a.Firehose=s.defineService("firehose",["2015-08-04"]),Object.defineProperty(i.services.firehose,"2015-08-04",{get:function(){var t=e("../apis/firehose-2015-08-04.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.Firehose},{"../apis/firehose-2015-08-04.min.json":66,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],160:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.gamelift={},a.GameLift=s.defineService("gamelift",["2015-10-01"]),Object.defineProperty(i.services.gamelift,"2015-10-01",{get:function(){var t=e("../apis/gamelift-2015-10-01.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.GameLift},{"../apis/gamelift-2015-10-01.min.json":67,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],161:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.inspector={},a.Inspector=s.defineService("inspector",["2015-08-18*","2016-02-16"]),Object.defineProperty(i.services.inspector,"2016-02-16",{get:function(){var t=e("../apis/inspector-2016-02-16.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.Inspector},{"../apis/inspector-2016-02-16.min.json":68,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],162:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.iot={},a.Iot=s.defineService("iot",["2015-05-28"]),Object.defineProperty(i.services.iot,"2015-05-28",{get:function(){var t=e("../apis/iot-2015-05-28.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.Iot},{"../apis/iot-2015-05-28.min.json":69,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],163:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.iotdata={},a.IotData=s.defineService("iotdata",["2015-05-28"]),e("../lib/services/iotdata"),Object.defineProperty(i.services.iotdata,"2015-05-28",{get:function(){var t=e("../apis/iot-data-2015-05-28.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.IotData},{"../apis/iot-data-2015-05-28.min.json":70,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/iotdata":231}],164:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.kinesis={},a.Kinesis=s.defineService("kinesis",["2013-12-02"]),Object.defineProperty(i.services.kinesis,"2013-12-02",{get:function(){var t=e("../apis/kinesis-2013-12-02.min.json");return t.paginators=e("../apis/kinesis-2013-12-02.paginators.json").pagination,t.waiters=e("../apis/kinesis-2013-12-02.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.Kinesis},{"../apis/kinesis-2013-12-02.min.json":71,"../apis/kinesis-2013-12-02.paginators.json":72,"../apis/kinesis-2013-12-02.waiters2.json":73,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],165:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.kms={},a.KMS=s.defineService("kms",["2014-11-01"]),Object.defineProperty(i.services.kms,"2014-11-01",{get:function(){var t=e("../apis/kms-2014-11-01.min.json");return t.paginators=e("../apis/kms-2014-11-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.KMS},{"../apis/kms-2014-11-01.min.json":74,"../apis/kms-2014-11-01.paginators.json":75,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],166:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.lambda={},a.Lambda=s.defineService("lambda",["2014-11-11","2015-03-31"]),Object.defineProperty(i.services.lambda,"2014-11-11",{get:function(){var t=e("../apis/lambda-2014-11-11.min.json");return t.paginators=e("../apis/lambda-2014-11-11.paginators.json").pagination,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.lambda,"2015-03-31",{get:function(){var t=e("../apis/lambda-2015-03-31.min.json");return t.paginators=e("../apis/lambda-2015-03-31.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.Lambda},{"../apis/lambda-2014-11-11.min.json":76,"../apis/lambda-2014-11-11.paginators.json":77,"../apis/lambda-2015-03-31.min.json":78,"../apis/lambda-2015-03-31.paginators.json":79,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],167:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.machinelearning={},a.MachineLearning=s.defineService("machinelearning",["2014-12-12"]),e("../lib/services/machinelearning"),Object.defineProperty(i.services.machinelearning,"2014-12-12",{get:function(){var t=e("../apis/machinelearning-2014-12-12.min.json");return t.paginators=e("../apis/machinelearning-2014-12-12.paginators.json").pagination,t.waiters=e("../apis/machinelearning-2014-12-12.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.MachineLearning},{"../apis/machinelearning-2014-12-12.min.json":82,"../apis/machinelearning-2014-12-12.paginators.json":83,"../apis/machinelearning-2014-12-12.waiters2.json":84,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/machinelearning":232}],168:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.marketplacecommerceanalytics={},a.MarketplaceCommerceAnalytics=s.defineService("marketplacecommerceanalytics",["2015-07-01"]),Object.defineProperty(i.services.marketplacecommerceanalytics,"2015-07-01",{get:function(){var t=e("../apis/marketplacecommerceanalytics-2015-07-01.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.MarketplaceCommerceAnalytics},{"../apis/marketplacecommerceanalytics-2015-07-01.min.json":85,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],169:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.mobileanalytics={},a.MobileAnalytics=s.defineService("mobileanalytics",["2014-06-05"]),Object.defineProperty(i.services.mobileanalytics,"2014-06-05",{get:function(){var t=e("../apis/mobileanalytics-2014-06-05.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.MobileAnalytics},{"../apis/mobileanalytics-2014-06-05.min.json":87,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],170:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.opsworks={},a.OpsWorks=s.defineService("opsworks",["2013-02-18"]),Object.defineProperty(i.services.opsworks,"2013-02-18",{get:function(){var t=e("../apis/opsworks-2013-02-18.min.json");return t.paginators=e("../apis/opsworks-2013-02-18.paginators.json").pagination,t.waiters=e("../apis/opsworks-2013-02-18.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.OpsWorks},{"../apis/opsworks-2013-02-18.min.json":91,"../apis/opsworks-2013-02-18.paginators.json":92,"../apis/opsworks-2013-02-18.waiters2.json":93,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],171:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.rds={},a.RDS=s.defineService("rds",["2013-01-10","2013-02-12","2013-09-09","2014-09-01*","2014-10-31"]),Object.defineProperty(i.services.rds,"2013-01-10",{get:function(){var t=e("../apis/rds-2013-01-10.min.json");return t.paginators=e("../apis/rds-2013-01-10.paginators.json").pagination,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.rds,"2013-02-12",{get:function(){var t=e("../apis/rds-2013-02-12.min.json");return t.paginators=e("../apis/rds-2013-02-12.paginators.json").pagination,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.rds,"2013-09-09",{get:function(){var t=e("../apis/rds-2013-09-09.min.json");return t.paginators=e("../apis/rds-2013-09-09.paginators.json").pagination,t.waiters=e("../apis/rds-2013-09-09.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.rds,"2014-10-31",{get:function(){var t=e("../apis/rds-2014-10-31.min.json");return t.paginators=e("../apis/rds-2014-10-31.paginators.json").pagination,t.waiters=e("../apis/rds-2014-10-31.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.RDS},{"../apis/rds-2013-01-10.min.json":94,"../apis/rds-2013-01-10.paginators.json":95,"../apis/rds-2013-02-12.min.json":96,"../apis/rds-2013-02-12.paginators.json":97,"../apis/rds-2013-09-09.min.json":98,"../apis/rds-2013-09-09.paginators.json":99,"../apis/rds-2013-09-09.waiters2.json":100,"../apis/rds-2014-10-31.min.json":101, +"../apis/rds-2014-10-31.paginators.json":102,"../apis/rds-2014-10-31.waiters2.json":103,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],172:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.redshift={},a.Redshift=s.defineService("redshift",["2012-12-01"]),Object.defineProperty(i.services.redshift,"2012-12-01",{get:function(){var t=e("../apis/redshift-2012-12-01.min.json");return t.paginators=e("../apis/redshift-2012-12-01.paginators.json").pagination,t.waiters=e("../apis/redshift-2012-12-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.Redshift},{"../apis/redshift-2012-12-01.min.json":104,"../apis/redshift-2012-12-01.paginators.json":105,"../apis/redshift-2012-12-01.waiters2.json":106,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],173:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.route53={},a.Route53=s.defineService("route53",["2013-04-01"]),e("../lib/services/route53"),Object.defineProperty(i.services.route53,"2013-04-01",{get:function(){var t=e("../apis/route53-2013-04-01.min.json");return t.paginators=e("../apis/route53-2013-04-01.paginators.json").pagination,t.waiters=e("../apis/route53-2013-04-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.Route53},{"../apis/route53-2013-04-01.min.json":107,"../apis/route53-2013-04-01.paginators.json":108,"../apis/route53-2013-04-01.waiters2.json":109,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/route53":233}],174:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.route53domains={},a.Route53Domains=s.defineService("route53domains",["2014-05-15"]),Object.defineProperty(i.services.route53domains,"2014-05-15",{get:function(){var t=e("../apis/route53domains-2014-05-15.min.json");return t.paginators=e("../apis/route53domains-2014-05-15.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.Route53Domains},{"../apis/route53domains-2014-05-15.min.json":110,"../apis/route53domains-2014-05-15.paginators.json":111,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],175:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.s3={},a.S3=s.defineService("s3",["2006-03-01"]),e("../lib/services/s3"),Object.defineProperty(i.services.s3,"2006-03-01",{get:function(){var t=e("../apis/s3-2006-03-01.min.json");return t.paginators=e("../apis/s3-2006-03-01.paginators.json").pagination,t.waiters=e("../apis/s3-2006-03-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.S3},{"../apis/s3-2006-03-01.min.json":112,"../apis/s3-2006-03-01.paginators.json":113,"../apis/s3-2006-03-01.waiters2.json":114,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/s3":234}],176:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.servicecatalog={},a.ServiceCatalog=s.defineService("servicecatalog",["2015-12-10"]),Object.defineProperty(i.services.servicecatalog,"2015-12-10",{get:function(){var t=e("../apis/servicecatalog-2015-12-10.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.ServiceCatalog},{"../apis/servicecatalog-2015-12-10.min.json":115,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],177:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ses={},a.SES=s.defineService("ses",["2010-12-01"]),Object.defineProperty(i.services.ses,"2010-12-01",{get:function(){var t=e("../apis/email-2010-12-01.min.json");return t.paginators=e("../apis/email-2010-12-01.paginators.json").pagination,t.waiters=e("../apis/email-2010-12-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.SES},{"../apis/email-2010-12-01.min.json":62,"../apis/email-2010-12-01.paginators.json":63,"../apis/email-2010-12-01.waiters2.json":64,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],178:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.sns={},a.SNS=s.defineService("sns",["2010-03-31"]),Object.defineProperty(i.services.sns,"2010-03-31",{get:function(){var t=e("../apis/sns-2010-03-31.min.json");return t.paginators=e("../apis/sns-2010-03-31.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.SNS},{"../apis/sns-2010-03-31.min.json":116,"../apis/sns-2010-03-31.paginators.json":117,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],179:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.sqs={},a.SQS=s.defineService("sqs",["2012-11-05"]),e("../lib/services/sqs"),Object.defineProperty(i.services.sqs,"2012-11-05",{get:function(){var t=e("../apis/sqs-2012-11-05.min.json");return t.paginators=e("../apis/sqs-2012-11-05.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.SQS},{"../apis/sqs-2012-11-05.min.json":118,"../apis/sqs-2012-11-05.paginators.json":119,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sqs":235}],180:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ssm={},a.SSM=s.defineService("ssm",["2014-11-06"]),Object.defineProperty(i.services.ssm,"2014-11-06",{get:function(){var t=e("../apis/ssm-2014-11-06.min.json");return t.paginators=e("../apis/ssm-2014-11-06.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.SSM},{"../apis/ssm-2014-11-06.min.json":120,"../apis/ssm-2014-11-06.paginators.json":121,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],181:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.storagegateway={},a.StorageGateway=s.defineService("storagegateway",["2013-06-30"]),Object.defineProperty(i.services.storagegateway,"2013-06-30",{get:function(){var t=e("../apis/storagegateway-2013-06-30.min.json");return t.paginators=e("../apis/storagegateway-2013-06-30.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.StorageGateway},{"../apis/storagegateway-2013-06-30.min.json":122,"../apis/storagegateway-2013-06-30.paginators.json":123,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],182:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.sts={},a.STS=s.defineService("sts",["2011-06-15"]),e("../lib/services/sts"),Object.defineProperty(i.services.sts,"2011-06-15",{get:function(){var t=e("../apis/sts-2011-06-15.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.STS},{"../apis/sts-2011-06-15.min.json":125,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sts":236}],183:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.waf={},a.WAF=s.defineService("waf",["2015-08-24"]),Object.defineProperty(i.services.waf,"2015-08-24",{get:function(){var t=e("../apis/waf-2015-08-24.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.WAF},{"../apis/waf-2015-08-24.min.json":126,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],184:[function(e,t,r){var a=e("./core");a.apiLoader=function(e,t){if(!a.apiLoader.services.hasOwnProperty(e))throw new Error("InvalidService: Failed to load api for "+e);return a.apiLoader.services[e][t]},a.apiLoader.services={},t.exports=a.apiLoader},{"./core":188}],185:[function(e,t,r){(function(t){var r=e("./util");r.crypto.lib=e("crypto-browserify"),r.Buffer=e("buffer/").Buffer,r.url=e("url/"),r.querystring=e("querystring/");var a=e("./core");e("./api_loader"),a.XML.Parser=e("./xml/browser_parser"),e("./http/xhr"),"undefined"==typeof t&&(t={browser:!0})}).call(this,e("_process"))},{"./api_loader":184,"./core":188,"./http/xhr":202,"./util":245,"./xml/browser_parser":246,_process:250,"buffer/":258,"crypto-browserify":263,"querystring/":271,"url/":272}],186:[function(e,t,r){var a=e("../core"),s=a.util.url,i=a.util.crypto.lib,n=a.util.base64.encode,o=a.util.inherit,u=function(e){var t={"+":"-","=":"_","/":"~"};return e.replace(/[\+=\/]/g,function(e){return t[e]})},p=function(e,t){var r=i.createSign("RSA-SHA1");return r.write(e),u(r.sign(t,"base64"))},c=function(e,t,r,a){var s=JSON.stringify({Statement:[{Resource:e,Condition:{DateLessThan:{"AWS:EpochTime":t}}}]});return{Expires:t,"Key-Pair-Id":r,Signature:p(s.toString(),a)}},m=function(e,t,r){return e=e.replace(/\s/gm,e),{Policy:u(n(e)),"Key-Pair-Id":t,Signature:p(e,r)}},l=function(e){var t=e.split("://");if(t.length<2)throw new Error("Invalid URL.");return t[0].replace("*","")},d=function(e){var t=s.parse(e);return t.path.replace(/^\//,"")+(t.hash||"")},y=function(e){switch(l(e)){case"http":case"https":return e;case"rtmp":return d(e);default:throw new Error("Invalid URI scheme. Scheme must be one of http, https, or rtmp")}},b=function(e,t){if(!t||"function"!=typeof t)throw e;t(e)},h=function(e,t){return t&&"function"==typeof t?void t(null,e):e};a.CloudFront.Signer=o({constructor:function(e,t){if(void 0===e||void 0===t)throw new Error("A key pair ID and private key are required");this.keyPairId=e,this.privateKey=t},getSignedCookie:function(e,t){var r="policy"in e?m(e.policy,this.keyPairId,this.privateKey):c(e.url,e.expires,this.keyPairId,this.privateKey),a={};for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(a["CloudFront-"+s]=r[s]);return h(a,t)},getSignedUrl:function(e,t){try{var r=y(e.url)}catch(e){return b(e,t)}var a=s.parse(e.url,!0),i=Object.prototype.hasOwnProperty.call(e,"policy")?m(e.policy,this.keyPairId,this.privateKey):c(r,e.expires,this.keyPairId,this.privateKey);a.search=null;for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(a.query[n]=i[n]);try{var o="rtmp"===l(e.url)?d(s.format(a)):s.format(a)}catch(e){return b(e,t)}return h(o,t)}}),t.exports=a.CloudFront.Signer},{"../core":188}],187:[function(e,t,r){var a=e("./core");e("./credentials"),e("./credentials/credential_provider_chain"),a.Config=a.util.inherit({constructor:function(e){void 0===e&&(e={}),e=this.extractCredentials(e),a.util.each.call(this,this.keys,function(t,r){this.set(t,e[t],r)})},getCredentials:function(e){function t(t){e(t,t?null:n.credentials)}function r(e,t){return new a.util.error(t||new Error,{code:"CredentialsError",message:e})}function s(){n.credentials.get(function(e){if(e){var a="Could not load credentials from "+n.credentials.constructor.name;e=r(a,e)}t(e)})}function i(){var e=null;n.credentials.accessKeyId&&n.credentials.secretAccessKey||(e=r("Missing credentials")),t(e)}var n=this;n.credentials?"function"==typeof n.credentials.get?s():i():n.credentialProvider?n.credentialProvider.resolve(function(e,a){e&&(e=r("Could not load credentials from any providers",e)),n.credentials=a,t(e)}):t(r("No credentials to load"))},update:function(e,t){t=t||!1,e=this.extractCredentials(e),a.util.each.call(this,e,function(e,r){(t||Object.prototype.hasOwnProperty.call(this.keys,e)||a.Service.hasService(e))&&this.set(e,r)})},loadFromPath:function(e){this.clear();var t=JSON.parse(a.util.readFileSync(e)),r=new a.FileSystemCredentials(e),s=new a.CredentialProviderChain;return s.providers.unshift(r),s.resolve(function(e,r){if(e)throw e;t.credentials=r}),this.constructor(t),this},clear:function(){a.util.each.call(this,this.keys,function(e){delete this[e]}),this.set("credentials",void 0),this.set("credentialProvider",void 0)},set:function(e,t,r){void 0===t?(void 0===r&&(r=this.keys[e]),"function"==typeof r?this[e]=r.call(this):this[e]=r):"httpOptions"===e&&this[e]?this[e]=a.util.merge(this[e],t):this[e]=t},keys:{credentials:null,credentialProvider:null,region:null,logger:null,apiVersions:{},apiVersion:null,endpoint:void 0,httpOptions:{timeout:12e4},maxRetries:void 0,maxRedirects:10,paramValidation:!0,sslEnabled:!0,s3ForcePathStyle:!1,s3BucketEndpoint:!1,s3DisableBodySigning:!0,computeChecksums:!0,convertResponseTypes:!0,correctClockSkew:!1,customUserAgent:null,dynamoDbCrc32:!0,systemClockOffset:0,signatureVersion:null,signatureCache:!0,retryDelayOptions:{base:100},useAccelerateEndpoint:!1},extractCredentials:function(e){return e.accessKeyId&&e.secretAccessKey&&(e=a.util.copy(e),e.credentials=new a.Credentials(e)),e},setPromisesDependency:function(e){a.util.addPromisesToRequests(a.Request,e)}}),a.config=new a.Config},{"./core":188,"./credentials":189,"./credentials/credential_provider_chain":191}],188:[function(e,t,r){var a={util:e("./util")},s={};s.toString(),t.exports=a,a.util.update(a,{VERSION:"2.6.8",Signers:{},Protocol:{Json:e("./protocol/json"),Query:e("./protocol/query"),Rest:e("./protocol/rest"),RestJson:e("./protocol/rest_json"),RestXml:e("./protocol/rest_xml")},XML:{Builder:e("./xml/builder"),Parser:null},JSON:{Builder:e("./json/builder"),Parser:e("./json/parser")},Model:{Api:e("./model/api"),Operation:e("./model/operation"),Shape:e("./model/shape"),Paginator:e("./model/paginator"),ResourceWaiter:e("./model/resource_waiter")},util:e("./util"),apiLoader:function(){throw new Error("No API loader set")}}),e("./service"),e("./credentials"),e("./credentials/credential_provider_chain"),e("./credentials/temporary_credentials"),e("./credentials/web_identity_credentials"),e("./credentials/cognito_identity_credentials"),e("./credentials/saml_credentials"),e("./config"),e("./http"),e("./sequential_executor"),e("./event_listeners"),e("./request"),e("./response"),e("./resource_waiter"),e("./signers/request_signer"),e("./param_validator"),a.events=new a.SequentialExecutor},{"./config":187,"./credentials":189,"./credentials/cognito_identity_credentials":190,"./credentials/credential_provider_chain":191,"./credentials/saml_credentials":192,"./credentials/temporary_credentials":193,"./credentials/web_identity_credentials":194,"./event_listeners":200,"./http":201,"./json/builder":203,"./json/parser":204,"./model/api":205,"./model/operation":207,"./model/paginator":208,"./model/resource_waiter":209,"./model/shape":210,"./param_validator":211,"./protocol/json":212,"./protocol/query":213,"./protocol/rest":214,"./protocol/rest_json":215,"./protocol/rest_xml":216,"./request":220,"./resource_waiter":221,"./response":222,"./sequential_executor":224,"./service":225,"./signers/request_signer":238,"./util":245,"./xml/builder":247}],189:[function(e,t,r){var a=e("./core");a.Credentials=a.util.inherit({constructor:function(){if(a.util.hideProperties(this,["secretAccessKey"]),this.expired=!1,this.expireTime=null,1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0].credentials||arguments[0];this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}else this.accessKeyId=arguments[0],this.secretAccessKey=arguments[1],this.sessionToken=arguments[2]},expiryWindow:15,needsRefresh:function(){var e=a.util.date.getDate().getTime(),t=new Date(e+1e3*this.expiryWindow);return!!(this.expireTime&&t>this.expireTime)||(this.expired||!this.accessKeyId||!this.secretAccessKey)},get:function(e){var t=this;this.needsRefresh()?this.refresh(function(r){r||(t.expired=!1),e&&e(r)}):e&&e()},refresh:function(e){this.expired=!1,e()}})},{"./core":188}],190:[function(e,t,r){var a=e("../core"),s=e("../../clients/cognitoidentity"),i=e("../../clients/sts");a.CognitoIdentityCredentials=a.util.inherit(a.Credentials,{localStorageKey:{id:"aws.cognito.identity-id.",providers:"aws.cognito.identity-providers."},constructor:function(e){a.Credentials.call(this),this.expired=!0,this.params=e,this.data=null,this.identityId=null,this.loadCachedId()},refresh:function(e){var t=this;t.createClients(),t.data=null,t.identityId=null,t.getId(function(r){r?(t.clearIdOnNotAuthorized(r),e(r)):t.params.RoleArn?t.getCredentialsFromSTS(e):t.getCredentialsForIdentity(e)})},clearCachedId:function(){this.identityId=null,delete this.params.IdentityId;var e=this.params.IdentityPoolId,t=this.params.LoginId||"";delete this.storage[this.localStorageKey.id+e+t],delete this.storage[this.localStorageKey.providers+e+t]},clearIdOnNotAuthorized:function(e){var t=this;"NotAuthorizedException"==e.code&&t.clearCachedId()},getId:function(e){var t=this;return"string"==typeof t.params.IdentityId?e(null,t.params.IdentityId):void t.cognito.getId(function(r,a){!r&&a.IdentityId?(t.params.IdentityId=a.IdentityId,e(null,a.IdentityId)):e(r)})},loadCredentials:function(e,t){e&&t&&(t.expired=!1,t.accessKeyId=e.Credentials.AccessKeyId,t.secretAccessKey=e.Credentials.SecretKey,t.sessionToken=e.Credentials.SessionToken,t.expireTime=e.Credentials.Expiration)},getCredentialsForIdentity:function(e){var t=this;t.cognito.getCredentialsForIdentity(function(r,a){r?t.clearIdOnNotAuthorized(r):(t.cacheId(a),t.data=a,t.loadCredentials(t.data,t)),e(r)})},getCredentialsFromSTS:function(e){var t=this;t.cognito.getOpenIdToken(function(r,a){r?(t.clearIdOnNotAuthorized(r),e(r)):(t.cacheId(a),t.params.WebIdentityToken=a.Token,t.webIdentityCredentials.refresh(function(r){r||(t.data=t.webIdentityCredentials.data,t.sts.credentialsFrom(t.data,t)),e(r)}))})},loadCachedId:function(){var e=this;if(a.util.isBrowser()&&!e.params.IdentityId){var t=e.getStorage("id");if(t&&e.params.Logins){var r=Object.keys(e.params.Logins),s=(e.getStorage("providers")||"").split(","),i=s.filter(function(e){return r.indexOf(e)!==-1});0!==i.length&&(e.params.IdentityId=t)}else t&&(e.params.IdentityId=t)}},createClients:function(){this.webIdentityCredentials=this.webIdentityCredentials||new a.WebIdentityCredentials(this.params),this.cognito=this.cognito||new s({params:this.params}),this.sts=this.sts||new i},cacheId:function(e){this.identityId=e.IdentityId,this.params.IdentityId=this.identityId,a.util.isBrowser()&&(this.setStorage("id",e.IdentityId),this.params.Logins&&this.setStorage("providers",Object.keys(this.params.Logins).join(",")))},getStorage:function(e){return this.storage[this.localStorageKey[e]+this.params.IdentityPoolId+(this.params.LoginId||"")]},setStorage:function(e,t){try{this.storage[this.localStorageKey[e]+this.params.IdentityPoolId+(this.params.LoginId||"")]=t}catch(e){}},storage:function(){try{return a.util.isBrowser()&&null!==window.localStorage&&"object"==typeof window.localStorage?window.localStorage:{}}catch(e){return{}}}()})},{"../../clients/cognitoidentity":142,"../../clients/sts":182,"../core":188}],191:[function(e,t,r){var a=e("../core");a.CredentialProviderChain=a.util.inherit(a.Credentials,{constructor:function(e){e?this.providers=e:this.providers=a.CredentialProviderChain.defaultProviders.slice(0)},resolve:function(e){function t(s,i){if(!s&&i||r===a.length)return void e(s,i);var n=a[r++];i="function"==typeof n?n.call():n,i.get?i.get(function(e){t(e,e?null:i)}):t(null,i)}if(0===this.providers.length)return e(new Error("No providers")),this;var r=0,a=this.providers.slice(0);return t(),this}}),a.CredentialProviderChain.defaultProviders=[]},{"../core":188}],192:[function(e,t,r){var a=e("../core"),s=e("../../clients/sts");a.SAMLCredentials=a.util.inherit(a.Credentials,{constructor:function(e){a.Credentials.call(this),this.expired=!0,this.params=e},refresh:function(e){var t=this;t.createClients(),e||(e=function(e){if(e)throw e}),t.service.assumeRoleWithSAML(function(r,a){r||t.service.credentialsFrom(a,t),e(r)})},createClients:function(){this.service=this.service||new s({params:this.params})}})},{"../../clients/sts":182,"../core":188}],193:[function(e,t,r){var a=e("../core"),s=e("../../clients/sts");a.TemporaryCredentials=a.util.inherit(a.Credentials,{constructor:function(e){a.Credentials.call(this),this.loadMasterCredentials(),this.expired=!0,this.params=e||{},this.params.RoleArn&&(this.params.RoleSessionName=this.params.RoleSessionName||"temporary-credentials")},refresh:function(e){var t=this;t.createClients(),e||(e=function(e){if(e)throw e}),t.service.config.credentials=t.masterCredentials;var r=t.params.RoleArn?t.service.assumeRole:t.service.getSessionToken;r.call(t.service,function(r,a){r||t.service.credentialsFrom(a,t),e(r)})},loadMasterCredentials:function(){for(this.masterCredentials=a.config.credentials;this.masterCredentials.masterCredentials;)this.masterCredentials=this.masterCredentials.masterCredentials},createClients:function(){this.service=this.service||new s({params:this.params})}})},{"../../clients/sts":182,"../core":188}],194:[function(e,t,r){var a=e("../core"),s=e("../../clients/sts");a.WebIdentityCredentials=a.util.inherit(a.Credentials,{constructor:function(e){a.Credentials.call(this),this.expired=!0,this.params=e,this.params.RoleSessionName=this.params.RoleSessionName||"web-identity",this.data=null},refresh:function(e){var t=this;t.createClients(),e||(e=function(e){if(e)throw e}),t.service.assumeRoleWithWebIdentity(function(r,a){t.data=null,r||(t.data=a,t.service.credentialsFrom(a,t)),e(r)})},createClients:function(){this.service=this.service||new s({params:this.params})}})},{"../../clients/sts":182,"../core":188}],195:[function(e,t,r){function a(e){if("Object"===o(e)){var t={M:{}};for(var r in e)t.M[r]=a(e[r]);return t}if("Array"===o(e)){for(var i={L:[]},n=0;n=600?this.emit("sign",[this],function(e){e?t(e):n()}):n()}),e("HTTP_HEADERS","httpHeaders",function(e,t,r){r.httpResponse.statusCode=e,r.httpResponse.headers=t,r.httpResponse.body=new a.util.Buffer(""),r.httpResponse.buffers=[],r.httpResponse.numBytes=0;var s=t.date||t.Date;if(s){ +var i=Date.parse(s);r.request.service.config.correctClockSkew&&a.util.isClockSkewed(i)&&a.util.applyClockOffset(i)}}),e("HTTP_DATA","httpData",function(e,t){if(e){if(a.util.isNode()){t.httpResponse.numBytes+=e.length;var r=t.httpResponse.headers["content-length"],s={loaded:t.httpResponse.numBytes,total:r};t.request.emit("httpDownloadProgress",[s,t])}t.httpResponse.buffers.push(new a.util.Buffer(e))}}),e("HTTP_DONE","httpDone",function(e){if(e.httpResponse.buffers&&e.httpResponse.buffers.length>0){var t=a.util.buffer.concat(e.httpResponse.buffers);e.httpResponse.body=t}delete e.httpResponse.numBytes,delete e.httpResponse.buffers}),e("FINALIZE_ERROR","retry",function(e){e.httpResponse.statusCode&&(e.error.statusCode=e.httpResponse.statusCode,void 0===e.error.retryable&&(e.error.retryable=this.service.retryableError(e.error,this)))}),e("INVALIDATE_CREDENTIALS","retry",function(e){if(e.error)switch(e.error.code){case"RequestExpired":case"ExpiredTokenException":case"ExpiredToken":e.error.retryable=!0,e.request.service.config.credentials.expired=!0}}),e("EXPIRED_SIGNATURE","retry",function(e){var t=e.error;t&&"string"==typeof t.code&&"string"==typeof t.message&&t.code.match(/Signature/)&&t.message.match(/expired/)&&(e.error.retryable=!0)}),e("CLOCK_SKEWED","retry",function(e){e.error&&this.service.clockSkewError(e.error)&&this.service.config.correctClockSkew&&a.config.isClockSkewed&&(e.error.retryable=!0)}),e("REDIRECT","retry",function(e){e.error&&e.error.statusCode>=300&&e.error.statusCode<400&&e.httpResponse.headers.location&&(this.httpRequest.endpoint=new a.Endpoint(e.httpResponse.headers.location),this.httpRequest.headers.Host=this.httpRequest.endpoint.host,e.error.redirect=!0,e.error.retryable=!0)}),e("RETRY_CHECK","retry",function(e){e.error&&(e.error.redirect&&e.redirectCount=this.HEADERS_RECEIVED&&!m){try{c.responseType="arraybuffer"}catch(e){}u.statusCode=c.status,u.headers=n.parseHeaders(c.getAllResponseHeaders()),u.emit("headers",u.statusCode,u.headers),m=!0}this.readyState===this.DONE&&n.finishRequest(c,u)},!1),c.upload.addEventListener("progress",function(e){u.emit("sendProgress",e)}),c.addEventListener("progress",function(e){u.emit("receiveProgress",e)},!1),c.addEventListener("timeout",function(){i(a.util.error(new Error("Timeout"),{code:"TimeoutError"}))},!1),c.addEventListener("error",function(){i(a.util.error(new Error("Network Failure"),{code:"NetworkingError"}))},!1),r(u),c.open(e.method,p,t.xhrAsync!==!1),a.util.each(e.headers,function(e,t){"Content-Length"!==e&&"User-Agent"!==e&&"Host"!==e&&c.setRequestHeader(e,t)}),t.timeout&&t.xhrAsync!==!1&&(c.timeout=t.timeout),t.xhrWithCredentials&&(c.withCredentials=!0);try{c.send(e.body)}catch(t){if(!e.body||"object"!=typeof e.body.buffer)throw t;c.send(e.body.buffer)}return u},parseHeaders:function(e){var t={};return a.util.arrayEach(e.split(/\r?\n/),function(e){var r=e.split(":",1)[0],a=e.substring(r.length+2);r.length>0&&(t[r.toLowerCase()]=a)}),t},finishRequest:function(e,t){var r;if("arraybuffer"===e.responseType&&e.response){var s=e.response;r=new a.util.Buffer(s.byteLength);for(var i=new Uint8Array(s),n=0;n1){var s=this.errors.join("\n* ");throw s="There were "+this.errors.length+" validation errors:\n* "+s,a.util.error(new Error(s),{code:"MultipleValidationErrors",errors:this.errors})}if(1===this.errors.length)throw this.errors[0];return!0},fail:function(e,t){this.errors.push(a.util.error(new Error(t),{code:e}))},validateStructure:function(e,t,r){this.validateType(t,r,["object"],"structure");for(var a,s=0;e.required&&s= "+e.min+", but found "+t+" for "+r),this.validation.max&&void 0!==e.max&&t>e.max&&this.fail("MaxRangeError","Expected "+a+" <= "+e.max+", but found "+t+" for "+r)},validateEnum:function(e,t,r){this.validation.enum&&void 0!==e.enum&&e.enum.indexOf(t)===-1&&this.fail("EnumError","Found string value of "+t+", but expected "+e.enum.join("|")+" for "+r)},validateType:function(e,t,r,s){if(null===e||void 0===e)return!1;for(var i=!1,n=0;n0){var a=JSON.parse(r.body.toString());(a.__type||a.code)&&(t.code=(a.__type||a.code).split("#").pop()),"RequestEntityTooLarge"===t.code?t.message="Request body must be less than 1 MB":t.message=a.message||a.Message||null}else t.statusCode=r.statusCode,t.message=r.statusCode.toString();e.error=n.error(new Error,t)}function i(e){var t=e.httpResponse.body.toString()||"{}";if(e.request.service.config.convertResponseTypes===!1)e.data=JSON.parse(t);else{var r=e.request.service.api.operations[e.request.operation],a=r.output||{},s=new u;e.data=s.parse(t,a)}}var n=e("../util"),o=e("../json/builder"),u=e("../json/parser");t.exports={buildRequest:a,extractError:s,extractData:i}},{"../json/builder":203,"../json/parser":204,"../util":245}],213:[function(e,t,r){function a(e){var t=e.service.api.operations[e.operation],r=e.httpRequest;r.headers["Content-Type"]="application/x-www-form-urlencoded; charset=utf-8",r.params={Version:e.service.api.apiVersion,Action:t.name};var a=new u;a.serialize(e.params,t.input,function(e,t){r.params[e]=t}),r.body=o.queryParamsToString(r.params)}function s(e){var t,r=e.httpResponse.body.toString();t=r.match("=0?"&":"?";var n=[];p.arrayEach(Object.keys(s).sort(),function(e){Array.isArray(s[e])||(s[e]=[s[e]]);for(var t=0;t0){t=new o.XML.Parser;var m=t.parse(a.toString(),i);u.update(e.data,m)}}var o=e("../core"),u=e("../util"),p=e("./rest");t.exports={buildRequest:s,extractError:i,extractData:n}},{"../core":188,"../util":245,"./rest":214}],217:[function(e,t,r){function a(){}function s(e){return e.isQueryName||"ec2"!==e.api.protocol?e.name:e.name[0].toUpperCase()+e.name.substr(1)}function i(e,t,r,a){p.each(r.members,function(r,i){var n=t[r];if(null!==n&&void 0!==n){var o=s(i);o=e?e+"."+o:o,u(o,n,i,a)}})}function n(e,t,r,a){var s=1;p.each(t,function(t,i){var n=r.flattened?".":".entry.",o=n+s++ +".",p=o+(r.key.name||"key"),c=o+(r.value.name||"value");u(e+p,t,r.key,a),u(e+c,i,r.value,a)})}function o(e,t,r,a){var i=r.member||{};return 0===t.length?void a.call(this,e,null):void p.arrayEach(t,function(t,n){var o="."+(n+1);if("ec2"===r.api.protocol)o+="";else if(r.flattened){if(i.name){var p=e.split(".");p.pop(),p.push(s(i)),e=p.join(".")}}else o=".member"+o;u(e+o,t,i,a)})}function u(e,t,r,a){null!==t&&void 0!==t&&("structure"===r.type?i(e,t,r,a):"list"===r.type?o(e,t,r,a):"map"===r.type?n(e,t,r,a):a(e,r.toWireFormat(t).toString()))}var p=e("../util");a.prototype.serialize=function(e,t,r){i("",e,t,r)},t.exports=a},{"../util":245}],218:[function(e,t,r){t.exports={rules:{"*/*":{endpoint:"{service}.{region}.amazonaws.com"},"cn-*/*":{endpoint:"{service}.{region}.amazonaws.com.cn"},"*/cloudfront":"globalSSL","*/iam":"globalSSL","*/sts":"globalSSL","*/importexport":{endpoint:"{service}.amazonaws.com",signatureVersion:"v2",globalEndpoint:!0},"*/route53":{endpoint:"https://{service}.amazonaws.com",signatureVersion:"v3https",globalEndpoint:!0},"*/waf":"globalSSL","us-gov-*/iam":"globalGovCloud","us-gov-*/sts":{endpoint:"{service}.{region}.amazonaws.com"},"us-gov-west-1/s3":"s3dash","us-west-1/s3":"s3dash","us-west-2/s3":"s3dash","eu-west-1/s3":"s3dash","ap-southeast-1/s3":"s3dash","ap-southeast-2/s3":"s3dash","ap-northeast-1/s3":"s3dash","sa-east-1/s3":"s3dash","us-east-1/s3":{endpoint:"{service}.amazonaws.com",signatureVersion:"s3"},"us-east-1/sdb":{endpoint:"{service}.amazonaws.com",signatureVersion:"v2"},"*/sdb":{endpoint:"{service}.{region}.amazonaws.com",signatureVersion:"v2"}},patterns:{globalSSL:{endpoint:"https://{service}.amazonaws.com",globalEndpoint:!0},globalGovCloud:{endpoint:"{service}.us-gov.amazonaws.com"},s3dash:{endpoint:"{service}-{region}.amazonaws.com",signatureVersion:"s3"}}}},{}],219:[function(e,t,r){function a(e){if(!e)return null;var t=e.split("-");return t.length<3?null:t.slice(0,t.length-2).join("-")+"-*"}function s(e){var t=e.config.region,r=a(t),s=e.api.endpointPrefix;return[[t,s],[r,s],[t,"*"],[r,"*"],["*",s],["*","*"]].map(function(e){return e[0]&&e[1]?e.join("/"):null})}function i(e,t){o.each(t,function(t,r){"globalEndpoint"!==t&&(void 0!==e.config[t]&&null!==e.config[t]||(e.config[t]=r))})}function n(e){ +for(var t=s(e),r=0;r=0){u=!0;var p=0}var c=function(){u&&p!==o?s.emit("error",a.util.error(new Error("Stream content length mismatch. Received "+p+" of "+o+" bytes."),{code:"StreamContentLengthMismatch"})):2===a.HttpClient.streamsApiVersion?s.end():s.emit("end")},m=n.httpResponse.createUnbufferedStream();if(2===a.HttpClient.streamsApiVersion)if(u){var l=new e.PassThrough;l._write=function(t){return t&&t.length&&(p+=t.length),e.PassThrough.prototype._write.apply(this,arguments)},l.on("end",c),m.pipe(l).pipe(s,{end:!1})}else m.pipe(s);else u&&m.on("data",function(e){e&&e.length&&(p+=e.length)}),m.on("data",function(e){s.emit("data",e)}),m.on("end",c);m.on("error",function(e){u=!1,s.emit("error",e)})}}),this.on("error",function(e){s.emit("error",e)}),s},emitEvent:function(e,t,r){"function"==typeof t&&(r=t,t=null),r||(r=function(){}),t||(t=this.eventParameters(e,this.response));var s=a.SequentialExecutor.prototype.emit;s.call(this,e,t,function(e){e&&(this.response.error=e),r.call(this,e)})},eventParameters:function(e){switch(e){case"restart":case"validate":case"sign":case"build":case"afterValidate":case"afterBuild":return[this];case"error":return[this.response.error,this.response];default:return[this.response]}},presign:function(e,t){return t||"function"!=typeof e||(t=e,e=null),(new a.Signers.Presign).sign(this.toGet(),e,t)},isPresigned:function(){return Object.prototype.hasOwnProperty.call(this.httpRequest.headers,"presigned-expires")},toUnauthenticated:function(){return this.removeListener("validate",a.EventListeners.Core.VALIDATE_CREDENTIALS),this.removeListener("sign",a.EventListeners.Core.SIGN),this},toGet:function(){return"query"!==this.service.api.protocol&&"ec2"!==this.service.api.protocol||(this.removeListener("build",this.buildAsGet),this.addListener("build",this.buildAsGet)),this},buildAsGet:function(e){e.httpRequest.method="GET",e.httpRequest.path=e.service.endpoint.path+"?"+e.httpRequest.body,e.httpRequest.body="",delete e.httpRequest.headers["Content-Length"],delete e.httpRequest.headers["Content-Type"]},haltHandlersOnError:function(){this._haltHandlersOnError=!0}}),a.util.addPromisesToRequests(a.Request),a.util.mixin(a.Request,a.SequentialExecutor)}).call(this,e("_process"))},{"./core":188,"./state_machine":244,_process:250,jmespath:268}],221:[function(e,t,r){function a(e){var t=e.request._waiter,r=t.config.acceptors,a=!1,s="retry";r.forEach(function(r){if(!a){var i=t.matchers[r.matcher];i&&i(e,r.expected,r.argument)&&(a=!0,s=r.state)}}),!a&&e.error&&(s="failure"),"success"===s?t.setSuccess(e):t.setError(e,"retry"===s)}var s=e("./core"),i=s.util.inherit,n=e("jmespath");s.ResourceWaiter=i({constructor:function(e,t){this.service=e,this.state=t,this.loadWaiterConfig(this.state)},service:null,state:null,config:null,matchers:{path:function(e,t,r){var a=n.search(e.data,r);return n.strictDeepEqual(a,t)},pathAll:function(e,t,r){var a=n.search(e.data,r);Array.isArray(a)||(a=[a]);var s=a.length;if(!s)return!1;for(var i=0;ie.partSize&&(e.partSize=t)}else e.totalBytes=void 0},isDoneChunking:!1,partPos:0,totalChunkedBytes:0,totalUploadedBytes:0,totalBytes:void 0,numParts:0,totalPartNumbers:0,activeParts:0,doneParts:0,parts:null,completeInfo:null,failed:!1,multipartReq:null,partBuffers:null,partBufferLength:0,fillBuffer:function(){var e=this,t=s(e.body);if(0===t)return e.isDoneChunking=!0,e.numParts=1,void e.nextChunk(e.body);for(;e.activeParts=e.queueSize)){var t=e.body.read(e.partSize-e.partBufferLength)||e.body.read();if(t&&(e.partBuffers.push(t),e.partBufferLength+=t.length,e.totalChunkedBytes+=t.length),e.partBufferLength>=e.partSize){var r=1===e.partBuffers.length?e.partBuffers[0]:i.concat(e.partBuffers);if(e.partBuffers=[],e.partBufferLength=0,r.length>e.partSize){var a=r.slice(e.partSize);e.partBuffers.push(a),e.partBufferLength+=a.length,r=r.slice(0,e.partSize)}e.nextChunk(r)}e.isDoneChunking&&!e.isDoneSending&&(r=1===e.partBuffers.length?e.partBuffers[0]:i.concat(e.partBuffers),e.partBuffers=[],e.partBufferLength=0,e.totalBytes=e.totalChunkedBytes,e.isDoneSending=!0,(0===e.numParts||r.length>0)&&(e.numParts++,e.nextChunk(r))),e.body.read(0)}},nextChunk:function(e){var t=this;if(t.failed)return null;var r=++t.totalPartNumbers;if(t.isDoneChunking&&1===r){var s=t.service.putObject({Body:e});return s._managedUpload=t,s.on("httpUploadProgress",t.progress).send(t.finishSinglePart),null}if(t.service.config.params.ContentMD5){var i=a.util.error(new Error("The Content-MD5 you specified is invalid for multi-part uploads."),{code:"InvalidDigest",retryable:!1});return t.cleanup(i),null}return t.completeInfo[r]&&null!==t.completeInfo[r].ETag?null:(t.activeParts++,void(t.service.config.params.UploadId?t.uploadPart(e,r):t.multipartReq?t.queueChunks(e,r):(t.multipartReq=t.service.createMultipartUpload(),t.multipartReq.on("success",function(e){t.service.config.params.UploadId=e.data.UploadId,t.multipartReq=null}),t.queueChunks(e,r),t.multipartReq.on("error",function(e){t.cleanup(e)}),t.multipartReq.send())))},uploadPart:function(e,t){var r=this,s={Body:e,ContentLength:a.util.string.byteLength(e),PartNumber:t},i={ETag:null,PartNumber:t};r.completeInfo[t]=i;var n=r.service.uploadPart(s);r.parts[t]=n,n._lastUploadedBytes=0,n._managedUpload=r,n.on("httpUploadProgress",r.progress),n.send(function(e,t){if(delete r.parts[s.PartNumber],r.activeParts--,!(e||t&&t.ETag)){var n="No access to ETag property on response.";a.util.isBrowser()&&(n+=" Check CORS configuration to expose ETag header."),e=a.util.error(new Error(n),{code:"ETagMissing",retryable:!1})}return e?r.cleanup(e):(i.ETag=t.ETag,r.doneParts++,void(r.isDoneChunking&&r.doneParts===r.numParts?r.finishMultiPart():r.fillQueue.call(r)))})},queueChunks:function(e,t){var r=this;r.multipartReq.on("success",function(){r.uploadPart(e,t)})},cleanup:function(e){var t=this;t.failed||("function"==typeof t.body.removeAllListeners&&"function"==typeof t.body.resume&&(t.body.removeAllListeners("readable"),t.body.removeAllListeners("end"),t.body.resume()),t.service.config.params.UploadId&&!t.leavePartsOnError&&t.service.abortMultipartUpload().send(),a.util.each(t.parts,function(e,t){t.removeAllListeners("complete"),t.abort()}),t.activeParts=0,t.partPos=0,t.numParts=0,t.totalPartNumbers=0,t.parts={},t.failed=!0,t.callback(e))},finishMultiPart:function(){var e=this,t={MultipartUpload:{Parts:e.completeInfo.slice(1)}};e.service.completeMultipartUpload(t,function(t,r){return t?e.cleanup(t):void e.callback(t,r)})},finishSinglePart:function(e,t){var r=this.request._managedUpload,a=this.request.httpRequest,s=a.endpoint;return e?r.callback(e):(t.Location=[s.protocol,"//",s.host,a.path].join(""),t.key=this.request.params.Key,t.Key=this.request.params.Key,t.Bucket=this.request.params.Bucket,void r.callback(e,t))},progress:function(e){var t=this._managedUpload;"putObject"===this.operation?(e.part=1,e.key=this.params.Key):(t.totalUploadedBytes+=e.loaded-this._lastUploadedBytes,this._lastUploadedBytes=e.loaded,e={loaded:t.totalUploadedBytes,total:t.totalBytes,part:this.params.PartNumber,key:this.params.Key}),t.emit("httpUploadProgress",[e])}}),a.util.mixin(a.S3.ManagedUpload,a.SequentialExecutor),t.exports=a.S3.ManagedUpload},{"../core":188}],224:[function(e,t,r){var a=e("./core");a.SequentialExecutor=a.util.inherit({constructor:function(){this._events={}},listeners:function(e){return this._events[e]?this._events[e].slice(0):[]},on:function(e,t){return this._events[e]?this._events[e].push(t):this._events[e]=[t],this},onAsync:function(e,t){return t._isAsync=!0,this.on(e,t)},removeListener:function(e,t){var r=this._events[e];if(r){for(var a=r.length,s=-1,i=0;i-1&&r.splice(s,1)}return this},removeAllListeners:function(e){return e?delete this._events[e]:this._events={},this},emit:function(e,t,r){r||(r=function(){});var a=this.listeners(e),s=a.length;return this.callListeners(a,t,r),s>0},callListeners:function(e,t,r,s){function i(s){return s&&(o=a.util.error(o||new Error,s),n._haltHandlersOnError)?r.call(n,o):void n.callListeners(e,t,r,o)}for(var n=this,o=s||null;e.length>0;){var u=e.shift();if(u._isAsync)return void u.apply(n,t.concat([i]));try{u.apply(n,t)}catch(e){o=a.util.error(o||new Error,e)}if(o&&n._haltHandlersOnError)return void r.call(n,o)}r.call(n,o)},addListeners:function(e){var t=this;return e._events&&(e=e._events),a.util.each(e,function(e,r){"function"==typeof r&&(r=[r]),a.util.arrayEach(r,function(r){t.on(e,r)})}),t},addNamedListener:function(e,t,r){return this[e]=r,this.addListener(t,r),this},addNamedAsyncListener:function(e,t,r){return r._isAsync=!0,this.addNamedListener(e,t,r)},addNamedListeners:function(e){var t=this;return e(function(){t.addNamedListener.apply(t,arguments)},function(){t.addNamedAsyncListener.apply(t,arguments)}),this}}),a.SequentialExecutor.prototype.addListener=a.SequentialExecutor.prototype.on,t.exports=a.SequentialExecutor},{"./core":188}],225:[function(e,t,r){var a=e("./core"),s=e("./model/api"),i=e("./region_config"),n=a.util.inherit,o=0;a.Service=n({constructor:function(e){if(!this.loadServiceClass)throw a.util.error(new Error,"Service must be constructed with `new' operator");var t=this.loadServiceClass(e||{});if(t){var r=a.util.copy(e),s=new t(e);return Object.defineProperty(s,"_originalConfig",{get:function(){return r},enumerable:!1,configurable:!0}),s._clientId=++o,s}this.initialize(e)},initialize:function(e){var t=a.config[this.serviceIdentifier];this.config=new a.Config(a.config),t&&this.config.update(t,!0),e&&this.config.update(e,!0),this.validateService(),this.config.endpoint||i(this),this.config.endpoint=this.endpointFromTemplate(this.config.endpoint),this.setEndpoint(this.config.endpoint)},validateService:function(){},loadServiceClass:function(e){var t=e;if(a.util.isEmpty(this.api)){if(t.apiConfig)return a.Service.defineServiceApi(this.constructor,t.apiConfig);if(this.constructor.services){t=new a.Config(a.config),t.update(e,!0);var r=t.apiVersions[this.constructor.serviceIdentifier];return r=r||t.apiVersion,this.getLatestServiceClass(r)}return null}return null},getLatestServiceClass:function(e){return e=this.getLatestServiceVersion(e),null===this.constructor.services[e]&&a.Service.defineServiceApi(this.constructor,e),this.constructor.services[e]},getLatestServiceVersion:function(e){if(!this.constructor.services||0===this.constructor.services.length)throw new Error("No services defined on "+this.constructor.serviceIdentifier);if(e?a.util.isType(e,Date)&&(e=a.util.date.iso8601(e).split("T")[0]):e="latest",Object.hasOwnProperty(this.constructor.services,e))return e;for(var t=Object.keys(this.constructor.services).sort(),r=null,s=t.length-1;s>=0;s--)if("*"!==t[s][t[s].length-1]&&(r=t[s]),t[s].substr(0,10)<=e)return r;throw new Error("Could not find "+this.constructor.serviceIdentifier+" API to satisfy version constraint `"+e+"'")},api:{},defaultRetryCount:3,makeRequest:function(e,t,r){if("function"==typeof t&&(r=t,t=null),t=t||{},this.config.params){var s=this.api.operations[e];s&&(t=a.util.copy(t),a.util.each(this.config.params,function(e,r){s.input.members[e]&&(void 0!==t[e]&&null!==t[e]||(t[e]=r))}))}var i=new a.Request(this,e,t);return this.addAllRequestListeners(i),r&&i.send(r),i},makeUnauthenticatedRequest:function(e,t,r){"function"==typeof t&&(r=t,t={});var a=this.makeRequest(e,t).toUnauthenticated();return r?a.send(r):a},waitFor:function(e,t,r){var s=new a.ResourceWaiter(this,e);return s.wait(t,r)},addAllRequestListeners:function(e){for(var t=[a.events,a.EventListeners.Core,this.serviceInterface(),a.EventListeners.CorePost],r=0;r=500))},networkingError:function(e){return"NetworkingError"===e.code},expiredCredentialsError:function(e){return"ExpiredTokenException"===e.code},clockSkewError:function(e){switch(e.code){case"RequestTimeTooSkewed":case"RequestExpired":case"InvalidSignatureException":case"SignatureDoesNotMatch":case"AuthFailure":case"RequestInTheFuture":return!0;default:return!1}},throttledError:function(e){switch(e.code){case"ProvisionedThroughputExceededException":case"Throttling":case"ThrottlingException":case"RequestLimitExceeded":case"RequestThrottled":return!0;default:return!1}},endpointFromTemplate:function(e){if("string"!=typeof e)return e;var t=e;return t=t.replace(/\{service\}/g,this.api.endpointPrefix),t=t.replace(/\{region\}/g,this.config.region),t=t.replace(/\{scheme\}/g,this.config.sslEnabled?"https":"http")},setEndpoint:function(e){this.endpoint=new a.Endpoint(e,this.config)},paginationConfig:function(e,t){var r=this.api.operations[e].paginator;if(!r){if(t){var s=new Error;throw a.util.error(s,"No pagination configuration for "+e)}return null}return r}}),a.util.update(a.Service,{defineMethods:function(e){a.util.each(e.prototype.api.operations,function(t){if(!e.prototype[t]){var r=e.prototype.api.operations[t];"none"===r.authtype?e.prototype[t]=function(e,r){return this.makeUnauthenticatedRequest(t,e,r)}:e.prototype[t]=function(e,r){return this.makeRequest(t,e,r)}}})},defineService:function(e,t,r){a.Service._serviceMap[e]=!0,Array.isArray(t)||(r=t,t=[]);var s=n(a.Service,r||{});if("string"==typeof e){a.Service.addVersions(s,t);var i=s.serviceIdentifier||e;s.serviceIdentifier=i}else s.prototype.api=e,a.Service.defineMethods(s);return s},addVersions:function(e,t){Array.isArray(t)||(t=[t]),e.services=e.services||{};for(var r=0;r0?50*Math.pow(2,e-1):0;return t}})},{"../core":188,"../dynamodb/document_client":196}],230:[function(e,t,r){var a=e("../core");a.util.update(a.EC2.prototype,{setupRequestListeners:function(e){e.removeListener("extractError",a.EventListeners.Query.EXTRACT_ERROR),e.addListener("extractError",this.extractError),"copySnapshot"===e.operation&&e.onAsync("validate",this.buildCopySnapshotPresignedUrl)},buildCopySnapshotPresignedUrl:function(e,t){if(e.params.PresignedUrl||e._subRequest)return t();e.params=a.util.copy(e.params),e.params.DestinationRegion=e.service.config.region;var r=a.util.copy(e.service.config);delete r.endpoint,r.region=e.params.SourceRegion;var s=new e.service.constructor(r),i=s[e.operation](e.params);i._subRequest=!0,i.presign(function(r,a){r?t(r):(e.params.PresignedUrl=a,t())})},extractError:function(e){var t=e.httpResponse,r=(new a.XML.Parser).parse(t.body.toString()||"");r.Errors?e.error=a.util.error(new Error,{code:r.Errors.Error.Code,message:r.Errors.Error.Message}):e.error=a.util.error(new Error,{code:t.statusCode,message:null}),e.error.requestId=r.RequestID||null}})},{"../core":188}],231:[function(e,t,r){var a=e("../core");a.util.update(a.IotData.prototype,{validateService:function(){if(!this.config.endpoint||this.config.endpoint.indexOf("{")>=0){var e="AWS.IotData requires an explicit `endpoint' configuration option.";throw a.util.error(new Error,{name:"InvalidEndpoint",message:e})}},setupRequestListeners:function(e){e.addListener("validateResponse",this.validateResponseBody)},validateResponseBody:function(e){var t=e.httpResponse.body.toString()||"{}",r=t.trim();r&&"{"===r.charAt(0)||(e.httpResponse.body="")}})},{"../core":188}],232:[function(e,t,r){var a=e("../core");a.util.update(a.MachineLearning.prototype,{setupRequestListeners:function(e){"predict"===e.operation&&e.addListener("build",this.buildEndpoint)},buildEndpoint:function(e){var t=e.params.PredictEndpoint;t&&(e.httpRequest.endpoint=new a.Endpoint(t))}})},{"../core":188}],233:[function(e,t,r){var a=e("../core");a.util.update(a.Route53.prototype,{setupRequestListeners:function(e){e.on("build",this.sanitizeUrl)},sanitizeUrl:function(e){var t=e.httpRequest.path;e.httpRequest.path=t.replace(/\/%2F\w+%2F/,"/")},retryableError:function(e){if("PriorRequestNotComplete"===e.code&&400===e.statusCode)return!0;var t=a.Service.prototype.retryableError;return t.call(this,e)}})},{"../core":188}],234:[function(e,t,r){var a=e("../core");e("../s3/managed_upload");var s={completeMultipartUpload:!0,copyObject:!0,uploadPartCopy:!0},i=["AuthorizationHeaderMalformed","BadRequest","PermanentRedirect",301];a.util.update(a.S3.prototype,{getSignerClass:function(e){var t=this.api.signatureVersion,r=this._originalConfig?this._originalConfig.signatureVersion:null,s=this.config.signatureVersion;!!e&&e.isPresigned();return r?(r="v2"===r?"s3":r,a.Signers.RequestSigner.getVersion(r)):(s&&(t=s),a.Signers.RequestSigner.getVersion(t))},validateService:function(){var e,t=[];if(this.config.region||(this.config.region="us-east-1"),!this.config.endpoint&&this.config.s3BucketEndpoint&&t.push("An endpoint must be provided when configuring `s3BucketEndpoint` to true."),this.config.useAccelerateEndpoint&&this.config.useDualstack&&t.push("`useAccelerateEndpoint` and `useDualstack` cannot both be configured to true."),1===t.length?e=t[0]:t.length>1&&(e="Multiple configuration errors:\n"+t.join("\n")),e)throw a.util.error(new Error,{name:"InvalidEndpoint",message:e})},shouldDisableBodySigning:function(e){var t=this.getSignerClass();return this.config.s3DisableBodySigning===!0&&t===a.Signers.V4&&"https:"===e.httpRequest.endpoint.protocol},setupRequestListeners:function(e){e.addListener("validate",this.validateScheme),e.addListener("validate",this.validateBucketEndpoint),e.addListener("validate",this.correctBucketRegionFromCache),e.addListener("build",this.addContentType),e.addListener("build",this.populateURI),e.addListener("build",this.computeContentMd5),e.addListener("build",this.computeSseCustomerKeyMd5),e.addListener("afterBuild",this.addExpect100Continue),e.removeListener("validate",a.EventListeners.Core.VALIDATE_REGION),e.addListener("extractError",this.extractError),e.onAsync("extractError",this.requestBucketRegion),e.addListener("extractData",this.extractData),e.addListener("extractData",a.util.hoistPayloadMember),e.addListener("beforePresign",this.prepareSignedUrl),a.util.isBrowser()&&e.onAsync("retry",this.reqRegionForNetworkingError),this.shouldDisableBodySigning(e)&&(e.removeListener("afterBuild",a.EventListeners.Core.COMPUTE_SHA256),e.addListener("afterBuild",this.disableBodySigning))},validateScheme:function(e){var t=e.params,r=e.httpRequest.endpoint.protocol,s=t.SSECustomerKey||t.CopySourceSSECustomerKey;if(s&&"https:"!==r){var i="Cannot send SSE keys over HTTP. Set 'sslEnabled'to 'true' in your configuration";throw a.util.error(new Error,{code:"ConfigError",message:i})}},validateBucketEndpoint:function(e){if(!e.params.Bucket&&e.service.config.s3BucketEndpoint){var t="Cannot send requests to root API with `s3BucketEndpoint` set.";throw a.util.error(new Error,{code:"ConfigError",message:t})}},isValidAccelerateOperation:function(e){var t=["createBucket","deleteBucket","listBuckets"];return t.indexOf(e)===-1},populateURI:function(e){var t=e.httpRequest,r=e.params.Bucket,a=e.service,s=t.endpoint;if(r&&!a.pathStyleBucketName(r)){a.config.useAccelerateEndpoint&&a.isValidAccelerateOperation(e.operation)?s.hostname=r+".s3-accelerate.amazonaws.com":a.config.s3BucketEndpoint||(s.hostname=r+"."+s.hostname);var i=s.port;80!==i&&443!==i?s.host=s.hostname+":"+s.port:s.host=s.hostname, +t.virtualHostedBucket=r,a.removeVirtualHostedBucketFromPath(e)}},removeVirtualHostedBucketFromPath:function(e){var t=e.httpRequest,r=t.virtualHostedBucket;r&&t.path&&(t.path=t.path.replace(new RegExp("/"+r),""),"/"!==t.path[0]&&(t.path="/"+t.path))},addExpect100Continue:function(e){var t=e.httpRequest.headers["Content-Length"];a.util.isNode()&&t>=1048576&&(e.httpRequest.headers.Expect="100-continue")},addContentType:function(e){var t=e.httpRequest;if("GET"===t.method||"HEAD"===t.method)return void delete t.headers["Content-Type"];t.headers["Content-Type"]||(t.headers["Content-Type"]="application/octet-stream");var r=t.headers["Content-Type"];if(a.util.isBrowser())if("string"!=typeof t.body||r.match(/;\s*charset=/)){var s=function(e,t,r){return t+r.toUpperCase()};t.headers["Content-Type"]=r.replace(/(;\s*charset=)(.+)$/,s)}else{var i="; charset=UTF-8";t.headers["Content-Type"]+=i}},computableChecksumOperations:{putBucketCors:!0,putBucketLifecycle:!0,putBucketLifecycleConfiguration:!0,putBucketTagging:!0,deleteObjects:!0,putBucketReplication:!0},willComputeChecksums:function(e){if(this.computableChecksumOperations[e.operation])return!0;if(!this.config.computeChecksums)return!1;if(!a.util.Buffer.isBuffer(e.httpRequest.body)&&"string"!=typeof e.httpRequest.body)return!1;var t=e.service.api.operations[e.operation].input.members;return!(!e.service.shouldDisableBodySigning(e)||Object.prototype.hasOwnProperty.call(e.httpRequest.headers,"presigned-expires")||!t.ContentMD5||e.params.ContentMD5)||!(e.service.getSignerClass(e)===a.Signers.V4&&t.ContentMD5&&!t.ContentMD5.required)&&(!(!t.ContentMD5||e.params.ContentMD5)||void 0)},computeContentMd5:function(e){if(e.service.willComputeChecksums(e)){var t=a.util.crypto.md5(e.httpRequest.body,"base64");e.httpRequest.headers["Content-MD5"]=t}},computeSseCustomerKeyMd5:function(e){var t={SSECustomerKey:"x-amz-server-side-encryption-customer-key-MD5",CopySourceSSECustomerKey:"x-amz-copy-source-server-side-encryption-customer-key-MD5"};a.util.each(t,function(t,r){if(e.params[t]){var s=a.util.crypto.md5(e.params[t],"base64");e.httpRequest.headers[r]=s}})},pathStyleBucketName:function(e){return!!this.config.s3ForcePathStyle||!this.config.s3BucketEndpoint&&(!this.dnsCompatibleBucketName(e)||!(!this.config.sslEnabled||!e.match(/\./)))},dnsCompatibleBucketName:function(e){var t=e,r=new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/),a=new RegExp(/(\d+\.){3}\d+/),s=new RegExp(/\.\./);return!(!t.match(r)||t.match(a)||t.match(s))},successfulResponse:function(e){var t=e.request,r=e.httpResponse;return(!s[t.operation]||!r.body.toString().match(""))&&r.statusCode<300},retryableError:function(e,t){if(s[t.operation]&&200===e.statusCode)return!0;if(t._requestRegionForBucket&&t.service.bucketRegionCache[t._requestRegionForBucket])return!1;if(e&&"RequestTimeout"===e.code)return!0;if(e&&i.indexOf(e.code)!=-1&&e.region&&e.region!=t.httpRequest.region)return t.httpRequest.region=e.region,301===e.statusCode&&t.service.updateReqBucketRegion(t),!0;var r=a.Service.prototype.retryableError;return r.call(this,e,t)},updateReqBucketRegion:function(e,t){var r=e.httpRequest;if("string"==typeof t&&t.length&&(r.region=t),r.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)){var s=e.service,i=s.config,n=i.s3BucketEndpoint;n&&delete i.s3BucketEndpoint;var o=a.util.copy(i);delete o.endpoint,o.region=r.region,r.endpoint=new a.S3(o).endpoint,s.populateURI(e),i.s3BucketEndpoint=n,r.headers.Host=r.endpoint.host,"validate"===e._asm.currentState&&(e.removeListener("build",s.populateURI),e.addListener("build",s.removeVirtualHostedBucketFromPath))}},extractData:function(e){var t=e.request;if("getBucketLocation"===t.operation){var r=e.httpResponse.body.toString().match(/>(.+)<\/Location/);delete e.data._,r?e.data.LocationConstraint=r[1]:e.data.LocationConstraint=""}var a=t.params.Bucket||null;if("deleteBucket"!==t.operation||"string"!=typeof a||e.error){var s=e.httpResponse.headers||{},i=s["x-amz-bucket-region"]||null;if(!i&&"createBucket"===t.operation&&!e.error){var n=t.params.CreateBucketConfiguration;i=n?"EU"===n.LocationConstraint?"eu-west-1":n.LocationConstraint:"us-east-1"}i&&a&&i!==t.service.bucketRegionCache[a]&&(t.service.bucketRegionCache[a]=i)}else t.service.clearBucketRegionCache(a);t.service.extractRequestIds(e)},extractError:function(e){var t={304:"NotModified",403:"Forbidden",400:"BadRequest",404:"NotFound"},r=e.request,s=e.httpResponse.statusCode,i=e.httpResponse.body||"",n=e.httpResponse.headers||{},o=n["x-amz-bucket-region"]||null,u=r.params.Bucket||null,p=r.service.bucketRegionCache;o&&u&&o!==p[u]&&(p[u]=o);var c;if(t[s]&&0===i.length)u&&!o&&(c=p[u]||null,c!==r.httpRequest.region&&(o=c)),e.error=a.util.error(new Error,{code:t[s],message:null,region:o});else{var m=(new a.XML.Parser).parse(i.toString());m.Region&&!o?(o=m.Region,u&&o!==p[u]&&(p[u]=o)):!u||o||m.Region||(c=p[u]||null,c!==r.httpRequest.region&&(o=c)),e.error=a.util.error(new Error,{code:m.Code||s,message:m.Message||null,region:o})}r.service.extractRequestIds(e)},requestBucketRegion:function(e,t){var r=e.error,s=e.request,n=s.params.Bucket||null;if(!r||!n||r.region||"listObjects"===s.operation||a.util.isNode()&&"headBucket"===s.operation||400===r.statusCode&&"headObject"!==s.operation||i.indexOf(r.code)===-1)return t();var o=a.util.isNode()?"headBucket":"listObjects",u={Bucket:n};"listObjects"===o&&(u.MaxKeys=0);var p=s.service[o](u);p._requestRegionForBucket=n,p.send(function(){var e=s.service.bucketRegionCache[n]||null;r.region=e,t()})},reqRegionForNetworkingError:function(e,t){if(!a.util.isBrowser())return t();var r=e.error,s=e.request,i=s.params.Bucket;if(!r||"NetworkingError"!==r.code||!i||"us-east-1"===s.httpRequest.region)return t();var n=s.service,o=n.bucketRegionCache,u=o[i]||null;if(u&&u!==s.httpRequest.region)n.updateReqBucketRegion(s,u),t();else if(n.dnsCompatibleBucketName(i))if(s.httpRequest.virtualHostedBucket){var p=n.listObjects({Bucket:i,MaxKeys:0});n.updateReqBucketRegion(p,"us-east-1"),p._requestRegionForBucket=i,p.send(function(){var e=n.bucketRegionCache[i]||null;e&&e!==s.httpRequest.region&&n.updateReqBucketRegion(s,e),t()})}else t();else n.updateReqBucketRegion(s,"us-east-1"),"us-east-1"!==o[i]&&(o[i]="us-east-1"),t()},bucketRegionCache:{},clearBucketRegionCache:function(e){var t=this.bucketRegionCache;e?"string"==typeof e&&(e=[e]):e=Object.keys(t);for(var r=0;r0&&t.throwInvalidChecksumError(e,i,"Invalid messages: "+s.join(", "))}},verifyReceiveMessageChecksum:function(e){if(e.data){var t=this.service,r=[];a.util.arrayEach(e.data.Messages,function(e){var a=e.MD5OfBody,s=e.Body;t.isChecksumValid(a,s)||r.push(e.MessageId)}),r.length>0&&t.throwInvalidChecksumError(e,r,"Invalid messages: "+r.join(", "))}},throwInvalidChecksumError:function(e,t,r){e.error=a.util.error(new Error,{retryable:!0,code:"InvalidChecksum",messageIds:t,message:e.request.operation+" returned an invalid MD5 response. "+r})},isChecksumValid:function(e,t){return this.calculateChecksum(t)===e},calculateChecksum:function(e){return a.util.crypto.md5(e,"hex")},buildEndpoint:function(e){var t=e.httpRequest.params.QueueUrl;if(t){e.httpRequest.endpoint=new a.Endpoint(t);var r=e.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./);r&&(e.httpRequest.region=r[1])}}})},{"../core":188}],236:[function(e,t,r){var a=e("../core");a.util.update(a.STS.prototype,{credentialsFrom:function(e,t){return e?(t||(t=new a.TemporaryCredentials),t.expired=!1,t.accessKeyId=e.Credentials.AccessKeyId,t.secretAccessKey=e.Credentials.SecretAccessKey,t.sessionToken=e.Credentials.SessionToken,t.expireTime=e.Credentials.Expiration,t):null},assumeRoleWithWebIdentity:function(e,t){return this.makeUnauthenticatedRequest("assumeRoleWithWebIdentity",e,t)},assumeRoleWithSAML:function(e,t){return this.makeUnauthenticatedRequest("assumeRoleWithSAML",e,t)}})},{"../core":188}],237:[function(e,t,r){function a(e){var t=e.httpRequest.headers[o],r=e.service.getSignerClass(e);if(delete e.httpRequest.headers["User-Agent"],delete e.httpRequest.headers["X-Amz-User-Agent"],r===i.Signers.V4){if(t>604800){var a="Presigning does not support expiry time greater than a week with SigV4 signing.";throw i.util.error(new Error,{code:"InvalidExpiryTime",message:a,retryable:!1})}e.httpRequest.headers[o]=t}else{if(r!==i.Signers.S3)throw i.util.error(new Error,{message:"Presigning only supports S3 or SigV4 signing.",code:"UnsupportedSigner",retryable:!1});e.httpRequest.headers[o]=parseInt(i.util.date.unixTimestamp()+t,10).toString()}}function s(e){var t=e.httpRequest.endpoint,r=i.util.urlParse(e.httpRequest.path),a={};r.search&&(a=i.util.queryStringParse(r.search.substr(1))),i.util.each(e.httpRequest.headers,function(e,t){e===o&&(e="Expires"),0===e.indexOf("x-amz-meta-")&&(delete a[e],e=e.toLowerCase()),a[e]=t}),delete e.httpRequest.headers[o];var s=a.Authorization.split(" ");if("AWS"===s[0])s=s[1].split(":"),a.AWSAccessKeyId=s[0],a.Signature=s[1];else if("AWS4-HMAC-SHA256"===s[0]){s.shift();var n=s.join(" "),u=n.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1];a["X-Amz-Signature"]=u,delete a.Expires}delete a.Authorization,delete a.Host,t.pathname=r.pathname,t.search=i.util.queryParamsToString(a)}var i=e("../core"),n=i.util.inherit,o="presigned-expires";i.Signers.Presign=n({sign:function(e,t,r){if(e.httpRequest.headers[o]=t||3600,e.on("build",a),e.on("sign",s),e.removeListener("afterBuild",i.EventListeners.Core.SET_CONTENT_LENGTH),e.removeListener("afterBuild",i.EventListeners.Core.COMPUTE_SHA256),e.emit("beforePresign",[e]),!r){if(e.build(),e.response.error)throw e.response.error;return i.util.urlFormat(e.httpRequest.endpoint)}e.build(function(){this.response.error?r(this.response.error):r(null,i.util.urlFormat(e.httpRequest.endpoint))})}}),t.exports=i.Signers.Presign},{"../core":188}],238:[function(e,t,r){var a=e("../core"),s=a.util.inherit;a.Signers.RequestSigner=s({constructor:function(e){this.request=e},setServiceClientId:function(e){this.serviceClientId=e},getServiceClientId:function(){return this.serviceClientId}}),a.Signers.RequestSigner.getVersion=function(e){switch(e){case"v2":return a.Signers.V2;case"v3":return a.Signers.V3;case"v4":return a.Signers.V4;case"s3":return a.Signers.S3;case"v3https":return a.Signers.V3Https}throw new Error("Unknown signing version "+e)},e("./v2"),e("./v3"),e("./v3https"),e("./v4"),e("./s3"),e("./presign")},{"../core":188,"./presign":237,"./s3":239,"./v2":240,"./v3":241,"./v3https":242,"./v4":243}],239:[function(e,t,r){var a=e("../core"),s=a.util.inherit;a.Signers.S3=s(a.Signers.RequestSigner,{subResources:{acl:1,accelerate:1,cors:1,lifecycle:1,delete:1,location:1,logging:1,notification:1,partNumber:1,policy:1,requestPayment:1,replication:1,restore:1,tagging:1,torrent:1,uploadId:1,uploads:1,versionId:1,versioning:1,versions:1,website:1},responseHeaders:{"response-content-type":1,"response-content-language":1,"response-expires":1,"response-cache-control":1,"response-content-disposition":1,"response-content-encoding":1},addAuthorization:function(e,t){this.request.headers["presigned-expires"]||(this.request.headers["X-Amz-Date"]=a.util.date.rfc822(t)),e.sessionToken&&(this.request.headers["x-amz-security-token"]=e.sessionToken);var r=this.sign(e.secretAccessKey,this.stringToSign()),s="AWS "+e.accessKeyId+":"+r;this.request.headers.Authorization=s},stringToSign:function(){var e=this.request,t=[];t.push(e.method),t.push(e.headers["Content-MD5"]||""),t.push(e.headers["Content-Type"]||""),t.push(e.headers["presigned-expires"]||"");var r=this.canonicalizedAmzHeaders();return r&&t.push(r),t.push(this.canonicalizedResource()),t.join("\n")},canonicalizedAmzHeaders:function(){var e=[];a.util.each(this.request.headers,function(t){t.match(/^x-amz-/i)&&e.push(t)}),e.sort(function(e,t){return e.toLowerCase()=0?"&":"?";this.request.path+=i+a.util.queryParamsToString(s)},authorization:function(e,t){var r=[],a=this.credentialString(t);return r.push(this.algorithm+" Credential="+e.accessKeyId+"/"+a),r.push("SignedHeaders="+this.signedHeaders()),r.push("Signature="+this.signature(e,t)),r.join(", ")},signature:function(e,t){var r=null,s=this.serviceName+(this.getServiceClientId()?"_"+this.getServiceClientId():"");if(this.signatureCache){var r=i[s];r||(n.push(s),n.length>o&&delete i[n.shift()])}var u=t.substr(0,8);if(!r||r.akid!==e.accessKeyId||r.region!==this.request.region||r.date!==u){var p=e.secretAccessKey,c=a.util.crypto.hmac("AWS4"+p,u,"buffer"),m=a.util.crypto.hmac(c,this.request.region,"buffer"),l=a.util.crypto.hmac(m,this.serviceName,"buffer"),d=a.util.crypto.hmac(l,"aws4_request","buffer");if(!this.signatureCache)return a.util.crypto.hmac(d,this.stringToSign(t),"hex");i[s]={region:this.request.region,date:u,key:d,akid:e.accessKeyId}}var y=i[s].key;return a.util.crypto.hmac(y,this.stringToSign(t),"hex")},stringToSign:function(e){var t=[];return t.push("AWS4-HMAC-SHA256"),t.push(e),t.push(this.credentialString(e)),t.push(this.hexEncodedHash(this.canonicalString())),t.join("\n")},canonicalString:function(){var e=[],t=this.request.pathname();return"s3"!==this.serviceName&&(t=a.util.uriEscapePath(t)),e.push(this.request.method),e.push(t),e.push(this.request.search()),e.push(this.canonicalHeaders()+"\n"),e.push(this.signedHeaders()),e.push(this.hexEncodedBodyHash()),e.join("\n")},canonicalHeaders:function(){var e=[];a.util.each.call(this,this.request.headers,function(t,r){e.push([t,r])}),e.sort(function(e,t){return e[0].toLowerCase()=e.length)return t.push(null);var s=r+a;s>e.length&&(s=e.length),t.push(e.slice(r,s)),r=s},t},concat:function(e){var t,r=0,a=0,i=null;for(t=0;t>>8^t[255&(r^i)]}return(r^-1)>>>0},hmac:function(e,t,r,a){return r||(r="binary"),"buffer"===r&&(r=void 0),a||(a="sha256"),"string"==typeof t&&(t=new s.Buffer(t)),s.crypto.lib.createHmac(a,e).update(t).digest(r)},md5:function(e,t,r){return s.crypto.hash("md5",e,t,r)},sha256:function(e,t,r){return s.crypto.hash("sha256",e,t,r)},hash:function(e,t,r,a){var i=s.crypto.createHash(e);r||(r="binary"),"buffer"===r&&(r=void 0),"string"==typeof t&&(t=new s.Buffer(t));var n=s.arraySliceFn(t),o=s.Buffer.isBuffer(t);if(s.isBrowser()&&"undefined"!=typeof ArrayBuffer&&t&&t.buffer instanceof ArrayBuffer&&(o=!0),a&&"object"==typeof t&&"function"==typeof t.on&&!o)t.on("data",function(e){i.update(e)}),t.on("error",function(e){a(e)}),t.on("end",function(){a(null,i.digest(r))});else{if(!a||!n||o||"undefined"==typeof FileReader){s.isBrowser()&&"object"==typeof t&&!o&&(t=new s.Buffer(new Uint8Array(t)));var u=i.update(t).digest(r);return a&&a(null,u),u}var p=0,c=524288,m=new FileReader;m.onerror=function(){a(new Error("Failed to read data."))},m.onload=function(){var e=new s.Buffer(new Uint8Array(m.result));i.update(e),p+=e.length,m._continueReading()},m._continueReading=function(){if(p>=t.size)return void a(null,i.digest(r));var e=p+c;e>t.size&&(e=t.size),m.readAsArrayBuffer(n.call(t,p,e))},m._continueReading()}},toHex:function(e){for(var t=[],r=0;r=3e5,!1),a.config.isClockSkewed},applyClockOffset:function(e){e&&(a.config.systemClockOffset=e-(new Date).getTime())},extractRequestId:function(e){var t=e.httpResponse.headers["x-amz-request-id"]||e.httpResponse.headers["x-amzn-requestid"];!t&&e.data&&e.data.ResponseMetadata&&(t=e.data.ResponseMetadata.RequestId),t&&(e.requestId=t),e.error&&(e.error.requestId=t)},addPromisesToRequests:function(e,t){return t=t||null,t||"undefined"==typeof Promise||(t=Promise),"function"!=typeof t?void delete e.prototype.promise:void(e.prototype.promise=function(){var e=this;return new t(function(t,r){e.on("complete",function(e){e.error?r(e.error):t(e.data)}),e.runTo()})})},isDualstackAvailable:function(t){if(!t)return!1;var r=e("../apis/metadata.json");return"string"!=typeof t&&(t=t.serviceIdentifier),!("string"!=typeof t||!r.hasOwnProperty(t))&&!!r[t].dualstackAvailable},calculateRetryDelay:function(e,t){t||(t={});var r=t.customBackoff||null;if("function"==typeof r)return r(e);var a=t.base||100,s=Math.random()*(Math.pow(2,e)*a);return s},handleRequestWithRetries:function(e,t,i){t||(t={});var n=a.HttpClient.getInstance(),o=t.httpOptions||{},u=0,p=function(e){var r=t.maxRetries||0;if(e&&"TimeoutError"===e.code&&(e.retryable=!0),e&&e.retryable&&u=500||429===r});a&&n.retryable&&(n.retryAfter=a),p(n)}})},p)};r.nextTick(c)}};t.exports=s}).call(this,e("_process"))},{"../apis/metadata.json":86,"./core":188,_process:250,fs:248}],246:[function(e,t,r){function a(){}function s(e,t){switch(t||(t={}),t.type){case"structure":return i(e,t);case"map":return n(e,t);case"list":return o(e,t);case void 0:case null:return p(e);default:return u(e,t)}}function i(e,t){var r={};return null===e?r:(c.each(t.members,function(t,a){if(a.isXmlAttribute){if(Object.prototype.hasOwnProperty.call(e.attributes,a.name)){var i=e.attributes[a.name].value;r[t]=s({textContent:i},a)}}else{var n=a.flattened?e:e.getElementsByTagName(a.name)[0];n?r[t]=s(n,a):a.flattened||"list"!==a.type||(r[t]=a.defaultValue)}}),r)}function n(e,t){for(var r={},a=t.key.name||"key",i=t.value.name||"value",n=t.flattened?t.name:"entry",o=e.firstElementChild;o;){if(o.nodeName===n){var u=o.getElementsByTagName(a)[0].textContent,p=o.getElementsByTagName(i)[0];r[u]=s(p,t.value)}o=o.nextElementSibling}return r}function o(e,t){for(var r=[],a=t.flattened?t.name:t.member.name||"member",i=e.firstElementChild;i;)i.nodeName===a&&r.push(s(i,t.member)),i=i.nextElementSibling;return r}function u(e,t){if(e.getAttribute){var r=e.getAttribute("encoding");"base64"===r&&(t=new m.create({type:r}))}var a=e.textContent;return""===a&&(a=null),"function"==typeof t.toType?t.toType(a):a}function p(e){if(void 0===e||null===e)return"";if(!e.firstElementChild)return null===e.parentNode.parentNode?{}:0===e.childNodes.length?"":e.textContent;for(var t={type:"structure",members:{}},r=e.firstElementChild;r;){var a=r.nodeName;Object.prototype.hasOwnProperty.call(t.members,a)?t.members[a].type="list":t.members[a]={name:a},r=r.nextElementSibling}return i(e,t)}var c=e("../util"),m=e("../model/shape");a.prototype.parse=function(e,t){if(""===e.replace(/^\s+/,""))return{};var r,a;try{if(window.DOMParser){try{var i=new DOMParser;r=i.parseFromString(e,"text/xml")}catch(e){throw c.error(new Error("Parse error in document"),{originalError:e,code:"XMLParserError",retryable:!0})}if(null===r.documentElement)throw c.error(new Error("Cannot parse empty document."),{code:"XMLParserError",retryable:!0});var n=r.getElementsByTagName("parsererror")[0];if(n&&(n.parentNode===r||"body"===n.parentNode.nodeName||n.parentNode.parentNode===r||"body"===n.parentNode.parentNode.nodeName)){var o=n.getElementsByTagName("div")[0]||n;throw c.error(new Error(o.textContent||"Parser error in document"),{code:"XMLParserError",retryable:!0})}}else{if(!window.ActiveXObject)throw new Error("Cannot load XML parser");if(r=new window.ActiveXObject("Microsoft.XMLDOM"),r.async=!1,!r.loadXML(e))throw c.error(new Error("Parse error in document"),{code:"XMLParserError",retryable:!0})}}catch(e){a=e}if(r&&r.documentElement&&!a){var u=s(r.documentElement,t),p=r.getElementsByTagName("ResponseMetadata")[0];return p&&(u.ResponseMetadata=s(p,{})),u}if(a)throw c.error(a||new Error,{code:"XMLParserError",retryable:!0});return{}},t.exports=a},{"../model/shape":210,"../util":245}],247:[function(e,t,r){function a(){}function s(e,t,r){switch(r.type){case"structure":return i(e,t,r);case"map":return n(e,t,r);case"list":return o(e,t,r);default:return u(e,t,r)}}function i(e,t,r){c.arrayEach(r.memberNames,function(a){var i=r.members[a];if("body"===i.location){var n=t[a],o=i.name;if(void 0!==n&&null!==n)if(i.isXmlAttribute)e.att(o,n);else if(i.flattened)s(e,n,i);else{var u=e.ele(o);p(u,i),s(u,n,i)}}})}function n(e,t,r){var a=r.key.name||"key",i=r.value.name||"value";c.each(t,function(t,n){var o=e.ele(r.flattened?r.name:"entry");s(o.ele(a),t,r.key),s(o.ele(i),n,r.value)})}function o(e,t,r){r.flattened?c.arrayEach(t,function(t){var a=r.member.name||r.name,i=e.ele(a);s(i,t,r.member)}):c.arrayEach(t,function(t){var a=r.member.name||"member",i=e.ele(a);s(i,t,r.member)})}function u(e,t,r){e.txt(r.toWireFormat(t))}function p(e,t){var r,a="xmlns";t.xmlNamespaceUri?(r=t.xmlNamespaceUri,t.xmlNamespacePrefix&&(a+=":"+t.xmlNamespacePrefix)):e.isRoot&&t.api.xmlNamespaceUri&&(r=t.api.xmlNamespaceUri),r&&e.att(a,r)}var c=e("../util"),m=e("xmlbuilder");a.prototype.toXML=function(e,t,r,a){var i=m.create(r);return p(i,t),s(i,e,t),i.children.length>0||a?i.root().toString():""},t.exports=a},{"../util":245,xmlbuilder:289}],248:[function(e,t,r){},{}],249:[function(e,t,r){function a(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function s(e){return"function"==typeof e}function i(e){return"number"==typeof e}function n(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._maxListeners=void 0,a.defaultMaxListeners=10,a.prototype.setMaxListeners=function(e){if(!i(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},a.prototype.emit=function(e){var t,r,a,i,u,p;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(r=this._events[e],o(r))return!1;if(s(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:i=Array.prototype.slice.call(arguments,1),r.apply(this,i)}else if(n(r))for(i=Array.prototype.slice.call(arguments,1),p=r.slice(),a=p.length,u=0;u0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},a.prototype.on=a.prototype.addListener,a.prototype.once=function(e,t){function r(){this.removeListener(e,r),a||(a=!0,t.apply(this,arguments))}if(!s(t))throw TypeError("listener must be a function");var a=!1;return r.listener=t,this.on(e,r),this},a.prototype.removeListener=function(e,t){var r,a,i,o;if(!s(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],i=r.length,a=-1,r===t||s(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(r)){for(o=i;o-- >0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=o;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},a.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],s(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},a.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?s(this._events[e])?[this._events[e]]:this._events[e].slice():[]},a.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(s(t))return 1;if(t)return t.length}return 0},a.listenerCount=function(e,t){return e.listenerCount(t)}},{}],250:[function(e,t,r){function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function i(e){if(m===setTimeout)return setTimeout(e,0);if((m===a||!m)&&setTimeout)return m=setTimeout,setTimeout(e,0);try{return m(e,0)}catch(t){try{return m.call(null,e,0)}catch(t){return m.call(this,e,0)}}}function n(e){if(l===clearTimeout)return clearTimeout(e);if((l===s||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function o(){h&&y&&(h=!1,y.length?b=y.concat(b):S=-1,b.length&&u())}function u(){if(!h){var e=i(o);h=!0;for(var t=b.length;t;){for(y=b,b=[];++S1)for(var r=1;r1&&(a=r[0]+"@",e=r[1]),e=e.replace(E,".");var s=e.split("."),n=i(s,t).join(".");return a+n}function o(e){for(var t,r,a=[],s=0,i=e.length;s=55296&&t<=56319&&s65535&&(e-=65536,t+=G(e>>>10&1023|55296),e=56320|1023&e),t+=G(e)}).join("")}function p(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:v}function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function m(e,t,r){var a=0;for(e=r?w(e/T):e>>1,e+=w(e/t);e>B*C>>1;a+=v)e=w(e/B);return w(a+(B+1)*e/(e+R))}function l(e){var t,r,a,i,n,o,c,l,d,y,b=[],h=e.length,S=0,g=A,f=k;for(r=e.lastIndexOf(P),r<0&&(r=0),a=0;a=128&&s("not-basic"),b.push(e.charCodeAt(a));for(i=r>0?r+1:0;i=h&&s("invalid-input"),l=p(e.charCodeAt(i++)),(l>=v||l>w((I-S)/o))&&s("overflow"),S+=l*o,d=c<=f?D:c>=f+C?C:c-f,!(lw(I/y)&&s("overflow"),o*=y;t=b.length+1,f=m(S-n,t,0==n),w(S/t)>I-g&&s("overflow"),g+=w(S/t),S%=t,b.splice(S++,0,g)}return u(b)}function d(e){var t,r,a,i,n,u,p,l,d,y,b,h,S,g,f,N=[];for(e=o(e),h=e.length,t=A,r=0,n=k,u=0;u=t&&bw((I-r)/S)&&s("overflow"),r+=(p-t)*S,t=p,u=0;uI&&s("overflow"),b==t){for(l=r,d=v;y=d<=n?D:d>=n+C?C:d-n,!(l= 0x80 (not a basic code point)","invalid-input":"Invalid input"},B=v-D,w=Math.floor,G=String.fromCharCode;if(f={version:"1.4.1",ucs2:{decode:o,encode:u},decode:l,encode:d,toASCII:b,toUnicode:y},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return f});else if(h&&S)if(t.exports==h)S.exports=f;else for(N in f)f.hasOwnProperty(N)&&(h[N]=f[N]);else a.punycode=f}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],252:[function(e,t,r){"use strict";function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,r,i){t=t||"&",r=r||"=";var n={};if("string"!=typeof e||0===e.length)return n;var o=/\+/g;e=e.split(t);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var p=e.length;u>0&&p>u&&(p=u);for(var c=0;c=0?(m=b.substr(0,h),l=b.substr(h+1)):(m=b,l=""),d=decodeURIComponent(m),y=decodeURIComponent(l),a(n,d)?s(n[d])?n[d].push(y):n[d]=[n[d],y]:n[d]=y}return n};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],253:[function(e,t,r){"use strict";function a(e,t){if(e.map)return e.map(t);for(var r=[],a=0;a=3&&(a.depth=arguments[2]),arguments.length>=4&&(a.colors=arguments[3]),b(t)?a.showHidden=t:t&&r._extend(a,t),I(a.showHidden)&&(a.showHidden=!1),I(a.depth)&&(a.depth=2),I(a.colors)&&(a.colors=!1),I(a.customInspect)&&(a.customInspect=!0),a.colors&&(a.stylize=i),u(a,e,a.depth)}function i(e,t){var r=s.styles[t];return r?"["+s.colors[r][0]+"m"+e+"["+s.colors[r][1]+"m":e}function n(e,t){return e}function o(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}function u(e,t,a){if(e.customInspect&&t&&T(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var s=t.inspect(a,e);return f(s)||(s=u(e,s,a)),s}var i=p(e,t);if(i)return i;var n=Object.keys(t),b=o(n);if(e.showHidden&&(n=Object.getOwnPropertyNames(t)),R(t)&&(n.indexOf("message")>=0||n.indexOf("description")>=0))return c(t);if(0===n.length){if(T(t)){var h=t.name?": "+t.name:"";return e.stylize("[Function"+h+"]","special")}if(v(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(C(t))return e.stylize(Date.prototype.toString.call(t),"date");if(R(t))return c(t)}var S="",g=!1,N=["{","}"];if(y(t)&&(g=!0,N=["[","]"]),T(t)){var I=t.name?": "+t.name:"";S=" [Function"+I+"]"}if(v(t)&&(S=" "+RegExp.prototype.toString.call(t)),C(t)&&(S=" "+Date.prototype.toUTCString.call(t)),R(t)&&(S=" "+c(t)),0===n.length&&(!g||0==t.length))return N[0]+S+N[1];if(a<0)return v(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var D;return D=g?m(e,t,a,b,n):n.map(function(r){return l(e,t,a,b,r,g)}),e.seen.pop(),d(D,S,N)}function p(e,t){if(I(t))return e.stylize("undefined","undefined");if(f(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return g(t)?e.stylize(""+t,"number"):b(t)?e.stylize(""+t,"boolean"):h(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function m(e,t,r,a,s){for(var i=[],n=0,o=t.length;n-1&&(o=i?o.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return" "+e}).join("\n"))):o=e.stylize("[Circular]","special")),I(n)){if(i&&s.match(/^\d+$/))return o;n=JSON.stringify(""+s),n.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(n=n.substr(1,n.length-2),n=e.stylize(n,"name")):(n=n.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),n=e.stylize(n,"string"))}return n+": "+o}function d(e,t,r){var a=0,s=e.reduce(function(e,t){return a++,t.indexOf("\n")>=0&&a++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return s>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function y(e){return Array.isArray(e)}function b(e){return"boolean"==typeof e}function h(e){return null===e}function S(e){return null==e}function g(e){return"number"==typeof e}function f(e){return"string"==typeof e}function N(e){return"symbol"==typeof e}function I(e){return void 0===e}function v(e){return D(e)&&"[object RegExp]"===A(e)}function D(e){return"object"==typeof e&&null!==e}function C(e){return D(e)&&"[object Date]"===A(e)}function R(e){return D(e)&&("[object Error]"===A(e)||e instanceof Error)}function T(e){return"function"==typeof e}function k(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function A(e){return Object.prototype.toString.call(e)}function P(e){return e<10?"0"+e.toString(10):e.toString(10)}function q(){var e=new Date,t=[P(e.getHours()),P(e.getMinutes()),P(e.getSeconds())].join(":");return[e.getDate(),w[e.getMonth()],t].join(" ")}function x(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var E=/%[sdj%]/g;r.format=function(e){if(!f(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(a[r++]);case"%d":return Number(a[r++]);case"%j":try{return JSON.stringify(a[r++])}catch(e){return"[Circular]"}default:return e}}),o=a[r];r=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e){return+e!=e&&(e=0),n.alloc(+e)}function S(e,t){if(n.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Z(e).length;default:if(a)return z(e).length;t=(""+t).toLowerCase(),a=!0}}function g(e,t,r){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,r);case"utf8":case"utf-8":return P(this,t,r);case"ascii":return x(this,t,r);case"latin1":case"binary":return E(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function f(e,t,r){var a=e[t];e[t]=e[r],e[r]=a}function N(e,t,r,a,s){if(0===e.length)return-1;if("string"==typeof r?(a=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if("string"==typeof t&&(t=n.from(t,a)),n.isBuffer(t))return 0===t.length?-1:I(e,t,r,a,s);if("number"==typeof t)return t=255&t,n.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):I(e,[t],r,a,s);throw new TypeError("val must be string, number or Buffer")}function I(e,t,r,a,s){function i(e,t){return 1===n?e[t]:e.readUInt16BE(t*n)}var n=1,o=e.length,u=t.length;if(void 0!==a&&(a=String(a).toLowerCase(),"ucs2"===a||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;n=2,o/=2,u/=2,r/=2}var p;if(s){var c=-1;for(p=r;po&&(r=o-u),p=r;p>=0;p--){for(var m=!0,l=0;ls&&(a=s)):a=s;var i=t.length;if(i%2!==0)throw new TypeError("Invalid hex string");a>i/2&&(a=i/2);for(var n=0;n239?4:i>223?3:i>191?2:1;if(s+o<=r){var u,p,c,m;switch(o){case 1:i<128&&(n=i);break;case 2:u=e[s+1],128===(192&u)&&(m=(31&i)<<6|63&u,m>127&&(n=m));break;case 3:u=e[s+1],p=e[s+2],128===(192&u)&&128===(192&p)&&(m=(15&i)<<12|(63&u)<<6|63&p,m>2047&&(m<55296||m>57343)&&(n=m));break;case 4:u=e[s+1],p=e[s+2],c=e[s+3],128===(192&u)&&128===(192&p)&&128===(192&c)&&(m=(15&i)<<18|(63&u)<<12|(63&p)<<6|63&c,m>65535&&m<1114112&&(n=m))}}null===n?(n=65533,o=1):n>65535&&(n-=65536,a.push(n>>>10&1023|55296),n=56320|1023&n),a.push(n),s+=o}return q(a)}function q(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var r="",a=0;aa)&&(r=a);for(var s="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function G(e,t,r,a,s,i){if(!n.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function L(e,t,r,a){t<0&&(t=65535+t+1);for(var s=0,i=Math.min(e.length-r,2);s>>8*(a?s:1-s)}function _(e,t,r,a){t<0&&(t=4294967295+t+1);for(var s=0,i=Math.min(e.length-r,4);s>>8*(a?s:3-s)&255}function U(e,t,r,a,s,i){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function V(e,t,r,a,s){return s||U(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38), +Y.write(e,t,r,a,23,4),r+4}function O(e,t,r,a,s){return s||U(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),Y.write(e,t,r,a,52,8),r+8}function F(e){if(e=j(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function j(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function W(e){return e<16?"0"+e.toString(16):e.toString(16)}function z(e,t){t=t||1/0;for(var r,a=e.length,s=null,i=[],n=0;n55295&&r<57344){if(!s){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(n+1===a){(t-=3)>-1&&i.push(239,191,189);continue}s=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),s=r;continue}r=(s-55296<<10|r-56320)+65536}else s&&(t-=3)>-1&&i.push(239,191,189);if(s=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function K(e){for(var t=[],r=0;r>8,s=r%256,i.push(s),i.push(a);return i}function Z(e){return J.toByteArray(F(e))}function Q(e,t,r,a){for(var s=0;s=t.length||s>=e.length);++s)t[s+r]=e[s];return s}function X(e){return e!==e}var J=e("base64-js"),Y=e("ieee754"),$=e("isarray");r.Buffer=n,r.SlowBuffer=h,r.INSPECT_MAX_BYTES=50,n.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:a(),r.kMaxLength=s(),n.poolSize=8192,n._augment=function(e){return e.__proto__=n.prototype,e},n.from=function(e,t,r){return o(null,e,t,r)},n.TYPED_ARRAY_SUPPORT&&(n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0})),n.alloc=function(e,t,r){return p(null,e,t,r)},n.allocUnsafe=function(e){return c(null,e)},n.allocUnsafeSlow=function(e){return c(null,e)},n.isBuffer=function(e){return!(null==e||!e._isBuffer)},n.compare=function(e,t){if(!n.isBuffer(e)||!n.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,a=t.length,s=0,i=Math.min(r,a);s0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},n.prototype.compare=function(e,t,r,a,s){if(!n.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===a&&(a=0),void 0===s&&(s=this.length),t<0||r>e.length||a<0||s>this.length)throw new RangeError("out of range index");if(a>=s&&t>=r)return 0;if(a>=s)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,a>>>=0,s>>>=0,this===e)return 0;for(var i=s-a,o=r-t,u=Math.min(i,o),p=this.slice(a,s),c=e.slice(t,r),m=0;ms)&&(r=s),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i=!1;;)switch(a){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return D(this,e,t,r);case"ascii":return C(this,e,t,r);case"latin1":case"binary":return R(this,e,t,r);case"base64":return T(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;n.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r,e<0&&(e=0)):e>r&&(e=r),t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),t0&&(s*=256);)a+=this[e+--t]*s;return a},n.prototype.readUInt8=function(e,t){return t||w(e,1,this.length),this[e]},n.prototype.readUInt16LE=function(e,t){return t||w(e,2,this.length),this[e]|this[e+1]<<8},n.prototype.readUInt16BE=function(e,t){return t||w(e,2,this.length),this[e]<<8|this[e+1]},n.prototype.readUInt32LE=function(e,t){return t||w(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},n.prototype.readUInt32BE=function(e,t){return t||w(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},n.prototype.readIntLE=function(e,t,r){e=0|e,t=0|t,r||w(e,t,this.length);for(var a=this[e],s=1,i=0;++i=s&&(a-=Math.pow(2,8*t)),a},n.prototype.readIntBE=function(e,t,r){e=0|e,t=0|t,r||w(e,t,this.length);for(var a=t,s=1,i=this[e+--a];a>0&&(s*=256);)i+=this[e+--a]*s;return s*=128,i>=s&&(i-=Math.pow(2,8*t)),i},n.prototype.readInt8=function(e,t){return t||w(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},n.prototype.readInt16LE=function(e,t){t||w(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},n.prototype.readInt16BE=function(e,t){t||w(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},n.prototype.readInt32LE=function(e,t){return t||w(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},n.prototype.readInt32BE=function(e,t){return t||w(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},n.prototype.readFloatLE=function(e,t){return t||w(e,4,this.length),Y.read(this,e,!0,23,4)},n.prototype.readFloatBE=function(e,t){return t||w(e,4,this.length),Y.read(this,e,!1,23,4)},n.prototype.readDoubleLE=function(e,t){return t||w(e,8,this.length),Y.read(this,e,!0,52,8)},n.prototype.readDoubleBE=function(e,t){return t||w(e,8,this.length),Y.read(this,e,!1,52,8)},n.prototype.writeUIntLE=function(e,t,r,a){if(e=+e,t=0|t,r=0|r,!a){var s=Math.pow(2,8*r)-1;G(this,e,t,r,s,0)}var i=1,n=0;for(this[t]=255&e;++n=0&&(n*=256);)this[t+i]=e/n&255;return t+r},n.prototype.writeUInt8=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,1,255,0),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},n.prototype.writeUInt16LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},n.prototype.writeUInt16BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},n.prototype.writeUInt32LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):_(this,e,t,!0),t+4},n.prototype.writeUInt32BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):_(this,e,t,!1),t+4},n.prototype.writeIntLE=function(e,t,r,a){if(e=+e,t=0|t,!a){var s=Math.pow(2,8*r-1);G(this,e,t,r,s-1,-s)}var i=0,n=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+r},n.prototype.writeIntBE=function(e,t,r,a){if(e=+e,t=0|t,!a){var s=Math.pow(2,8*r-1);G(this,e,t,r,s-1,-s)}var i=r-1,n=1,o=0;for(this[t+i]=255&e;--i>=0&&(n*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/n>>0)-o&255;return t+r},n.prototype.writeInt8=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,1,127,-128),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},n.prototype.writeInt16LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},n.prototype.writeInt16BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},n.prototype.writeInt32LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,2147483647,-2147483648),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):_(this,e,t,!0),t+4},n.prototype.writeInt32BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):_(this,e,t,!1),t+4},n.prototype.writeFloatLE=function(e,t,r){return V(this,e,t,!0,r)},n.prototype.writeFloatBE=function(e,t,r){return V(this,e,t,!1,r)},n.prototype.writeDoubleLE=function(e,t,r){return O(this,e,t,!0,r)},n.prototype.writeDoubleBE=function(e,t,r){return O(this,e,t,!1,r)},n.prototype.copy=function(e,t,r,a){if(r||(r=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a=this.length)throw new RangeError("sourceStart out of bounds");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t=0;--s)e[s+t]=this[s+r];else if(i<1e3||!n.TYPED_ARRAY_SUPPORT)for(s=0;s>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var i;if("number"==typeof e)for(i=t;i0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function s(e){return 3*e.length/4-a(e)}function i(e){var t,r,s,i,n,o,u=e.length;n=a(e),o=new m(3*u/4-n),s=n>0?u-4:u;var p=0;for(t=0,r=0;t>16&255,o[p++]=i>>8&255,o[p++]=255&i;return 2===n?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,o[p++]=255&i):1===n&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,o[p++]=i>>8&255,o[p++]=255&i),o}function n(e){return p[e>>18&63]+p[e>>12&63]+p[e>>6&63]+p[63&e]}function o(e,t,r){for(var a,s=[],i=t;ic?c:u+n));return 1===a?(t=e[r-1],s+=p[t>>2],s+=p[t<<4&63],s+="=="):2===a&&(t=(e[r-2]<<8)+e[r-1],s+=p[t>>10],s+=p[t>>4&63],s+=p[t<<2&63],s+="="),i.push(s),i.join("")}r.byteLength=s,r.toByteArray=i,r.fromByteArray=u;for(var p=[],c=[],m="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,y=l.length;d>1,c=-7,m=r?s-1:0,l=r?-1:1,d=e[t+m];for(m+=l,i=d&(1<<-c)-1,d>>=-c,c+=o;c>0;i=256*i+e[t+m],m+=l,c-=8);for(n=i&(1<<-c)-1,i>>=-c,c+=a;c>0;n=256*n+e[t+m],m+=l,c-=8);if(0===i)i=1-p;else{if(i===u)return n?NaN:(d?-1:1)*(1/0);n+=Math.pow(2,a),i-=p}return(d?-1:1)*n*Math.pow(2,i-a)},r.write=function(e,t,r,a,s,i){var n,o,u,p=8*i-s-1,c=(1<>1,l=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?0:i-1,y=a?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,n=c):(n=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-n))<1&&(n--,u*=2),t+=n+m>=1?l/u:l*Math.pow(2,1-m),t*u>=2&&(n++,u/=2),n+m>=c?(o=0,n=c):n+m>=1?(o=(t*u-1)*Math.pow(2,s),n+=m):(o=t*Math.pow(2,m-1)*Math.pow(2,s),n=0));s>=8;e[r+d]=255&o,d+=y,o/=256,s-=8);for(n=n<0;e[r+d]=255&n,d+=y,n/=256,p-=8);e[r+d-y]|=128*b}},{}],261:[function(e,t,r){var a={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==a.call(e)}},{}],262:[function(e,t,r){function a(e,t){if(e.length%o!==0){var r=e.length+(o-e.length%o);e=n.concat([e,u],r)}for(var a=[],s=t?e.readInt32BE:e.readInt32LE,i=0;id?t=e(t):t.length>5]|=128<>>9<<4)+14]=t;for(var r=1732584193,a=-271733879,s=-1732584194,c=271733878,m=0;m>16)+(t>>16)+(r>>16);return a<<16|65535&r}function c(e,t){return e<>>32-t}var m=e("./helpers");t.exports=function(e){return m.hash(e,a,16)}},{"./helpers":262}],265:[function(e,t,r){!function(){var e,r,a=this;e=function(e){for(var t,t,r=new Array(e),a=0;a>>((3&a)<<3)&255;return r},a.crypto&&crypto.getRandomValues&&(r=function(e){var t=new Uint8Array(e);return crypto.getRandomValues(t),t}),t.exports=r||e}()},{}],266:[function(e,t,r){function a(e,t){e[t>>5]|=128<<24-t%32,e[(t+64>>9<<4)+15]=t;for(var r=Array(80),a=1732584193,u=-271733879,p=-1732584194,c=271733878,m=-1009589776,l=0;l>16)+(t>>16)+(r>>16);return a<<16|65535&r}function o(e,t){return e<>>32-t}var u=e("./helpers");t.exports=function(e){return u.hash(e,a,20,!0)}},{"./helpers":262}],267:[function(e,t,r){var a=e("./helpers"),s=function(e,t){var r=(65535&e)+(65535&t),a=(e>>16)+(t>>16)+(r>>16);return a<<16|65535&r},i=function(e,t){return e>>>t|e<<32-t},n=function(e,t){return e>>>t},o=function(e,t,r){return e&t^~e&r},u=function(e,t,r){return e&t^e&r^t&r},p=function(e){return i(e,2)^i(e,13)^i(e,22)},c=function(e){return i(e,6)^i(e,11)^i(e,25)},m=function(e){return i(e,7)^i(e,18)^n(e,3)},l=function(e){return i(e,17)^i(e,19)^n(e,10)},d=function(e,t){var r,a,i,n,d,y,b,h,S,g,f,N,I=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),v=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),D=new Array(64);e[t>>5]|=128<<24-t%32,e[(t+64>>9<<4)+15]=t;for(var S=0;S="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e}function o(e){return e>="0"&&e<="9"||"-"===e}function u(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e}function p(){}function c(){}function m(e){this.runtime=e}function l(e){this._interpreter=e,this.functionTable={abs:{_func:this._functionAbs,_signature:[{types:[S]}]},avg:{_func:this._functionAvg,_signature:[{types:[R]}]},ceil:{_func:this._functionCeil,_signature:[{types:[S]}]},contains:{_func:this._functionContains,_signature:[{types:[f,N]},{types:[g]}]},ends_with:{_func:this._functionEndsWith,_signature:[{types:[f]},{types:[f]}]},floor:{_func:this._functionFloor,_signature:[{types:[S]}]},length:{_func:this._functionLength,_signature:[{types:[f,N,I]}]},map:{_func:this._functionMap,_signature:[{types:[D]},{types:[N]}]},max:{_func:this._functionMax,_signature:[{types:[R,T]}]},merge:{_func:this._functionMerge,_signature:[{types:[I],variadic:!0}]},max_by:{_func:this._functionMaxBy,_signature:[{types:[N]},{types:[D]}]},sum:{_func:this._functionSum,_signature:[{types:[R]}]},starts_with:{_func:this._functionStartsWith,_signature:[{types:[f]},{types:[f]}]},min:{_func:this._functionMin,_signature:[{types:[R,T]}]},min_by:{_func:this._functionMinBy,_signature:[{types:[N]},{types:[D]}]},type:{_func:this._functionType,_signature:[{types:[g]}]},keys:{_func:this._functionKeys,_signature:[{types:[I]}]},values:{_func:this._functionValues,_signature:[{types:[I]}]},sort:{_func:this._functionSort,_signature:[{types:[T,R]}]},sort_by:{_func:this._functionSortBy,_signature:[{types:[N]},{types:[D]}]},join:{_func:this._functionJoin,_signature:[{types:[f]},{types:[T]}]},reverse:{_func:this._functionReverse,_signature:[{types:[f,N]}]},to_array:{_func:this._functionToArray,_signature:[{types:[g]}]},to_string:{_func:this._functionToString,_signature:[{types:[g]}]},to_number:{_func:this._functionToNumber,_signature:[{types:[g]}]},not_null:{_func:this._functionNotNull,_signature:[{types:[g],variadic:!0}]}}}function d(e){var t=new c,r=t.parse(e);return r}function y(e){var t=new p;return t.tokenize(e)}function b(e,t){var r=new c,a=new l,s=new m(a);a._interpreter=s;var i=r.parse(t);return s.search(i,e)}var h;h="function"==typeof String.prototype.trimLeft?function(e){return e.trimLeft()}:function(e){return e.match(/^\s*(.*)/)[1]};var S=0,g=1,f=2,N=3,I=4,v=5,D=6,C=7,R=8,T=9,k="EOF",A="UnquotedIdentifier",P="QuotedIdentifier",q="Rbracket",x="Rparen",E="Comma",M="Colon",B="Rbrace",w="Number",G="Current",L="Expref",_="Pipe",U="Or",V="And",O="EQ",F="GT",j="LT",W="GTE",z="LTE",K="NE",H="Flatten",Z="Star",Q="Filter",X="Dot",J="Not",Y="Lbrace",$="Lbracket",ee="Lparen",te="Literal",re={".":X,"*":Z,",":E,":":M,"{":Y,"}":B,"]":q,"(":ee,")":x,"@":G},ae={"<":!0,">":!0,"=":!0,"!":!0},se={" ":!0,"\t":!0,"\n":!0};p.prototype={tokenize:function(e){var t=[];this._current=0;for(var r,a,s;this._current"===r?"="===e[this._current]?(this._current++,{type:W,value:">=",start:t}):{type:F,value:">",start:t}:"="===r&&"="===e[this._current]?(this._current++,{type:O,value:"==",start:t}):void 0},_consumeLiteral:function(e){this._current++;for(var t,r=this._current,a=e.length;"`"!==e[this._current]&&this._current=0)return!0;if(r.indexOf(e)>=0)return!0;if(!(a.indexOf(e[0])>=0))return!1;try{return JSON.parse(e),!0}catch(e){return!1}}};var ie={};ie[k]=0,ie[A]=0,ie[P]=0,ie[q]=0,ie[x]=0,ie[E]=0,ie[B]=0,ie[w]=0,ie[G]=0,ie[L]=0,ie[_]=1,ie[U]=2,ie[V]=3,ie[O]=5,ie[F]=5,ie[j]=5,ie[W]=5,ie[z]=5,ie[K]=5,ie[H]=9,ie[Z]=20,ie[Q]=21,ie[X]=40,ie[J]=45,ie[Y]=50,ie[$]=55,ie[ee]=60,c.prototype={parse:function(e){this._loadTokens(e),this.index=0;var t=this.expression(0);if(this._lookahead(0)!==k){var r=this._lookaheadToken(0),a=new Error("Unexpected token type: "+r.type+", value: "+r.value);throw a.name="ParserError",a}return t},_loadTokens:function(e){var t=new p,r=t.tokenize(e);r.push({type:k,value:"",start:e.length}),this.tokens=r},expression:function(e){var t=this._lookaheadToken(0);this._advance();for(var r=this.nud(t),a=this._lookahead(0);e=0?this.expression(e):t===$?(this._match($),this._parseMultiselectList()):t===Y?(this._match(Y),this._parseMultiselectHash()):void 0},_parseProjectionRHS:function(e){var t;if(ie[this._lookahead(0)]<10)t={type:"Identity"};else if(this._lookahead(0)===$)t=this.expression(e);else if(this._lookahead(0)===Q)t=this.expression(e);else{if(this._lookahead(0)!==X){var r=this._lookaheadToken(0),a=new Error("Sytanx error, unexpected token: "+r.value+"("+r.type+")");throw a.name="ParserError",a}this._match(X),t=this._parseDotRHS(e)}return t},_parseMultiselectList:function(){for(var e=[];this._lookahead(0)!==q;){var t=this.expression(0);if(e.push(t),this._lookahead(0)===E&&(this._match(E),this._lookahead(0)===q))throw new Error("Unexpected token Rbracket")}return this._match(q),{type:"MultiSelectList",children:e}},_parseMultiselectHash:function(){for(var e,t,r,a,s=[],i=[A,P];;){if(e=this._lookaheadToken(0),i.indexOf(e.type)<0)throw new Error("Expecting an identifier token, got: "+e.type);if(t=e.value,this._advance(),this._match(M),r=this.expression(0),a={type:"KeyValuePair",name:t,value:r},s.push(a),this._lookahead(0)===E)this._match(E);else if(this._lookahead(0)===B){this._match(B);break}}return{type:"MultiSelectHash",children:s}}},m.prototype={search:function(e,t){return this.visit(e,t)},visit:function(e,n){var o,u,p,c,m,l,d,y,b,h;switch(e.type){case"Field":return null===n?null:r(n)?(l=n[e.name],void 0===l?null:l):null;case"Subexpression":for(p=this.visit(e.children[0],n),h=1;h0)for(h=N;hI;h+=v)p.push(n[h]);return p;case"Projection":var D=this.visit(e.children[0],n);if(!t(D))return null;for(b=[],h=0;hm;break;case W:p=c>=m;break;case j:p=c=e&&(t=r<0?e-1:e),t}},l.prototype={callFunction:function(e,t){var r=this.functionTable[e];if(void 0===r)throw new Error("Unknown function: "+e+"()");return this._validateArgs(e,t,r._signature),r._func.call(this,t)},_validateArgs:function(e,t,r){var a;if(r[r.length-1].variadic){if(t.length=0;s--)a+=r[s];return a}var i=e[0].slice(0);return i.reverse(),i},_functionAbs:function(e){return Math.abs(e[0])},_functionCeil:function(e){return Math.ceil(e[0])},_functionAvg:function(e){for(var t=0,r=e[0],a=0;a=0},_functionFloor:function(e){return Math.floor(e[0])},_functionLength:function(e){return r(e[0])?Object.keys(e[0]).length:e[0].length},_functionMap:function(e){for(var t=[],r=this._interpreter,a=e[0],s=e[1],i=0;i0){var t=this._getTypeName(e[0][0]);if(t===S)return Math.max.apply(Math,e[0]);for(var r=e[0],a=r[0],s=1;s0){var t=this._getTypeName(e[0][0]);if(t===S)return Math.min.apply(Math,e[0]);for(var r=e[0],a=r[0],s=1;so?1:nn&&(n=r,t=s[o]);return t},_functionMinBy:function(e){for(var t,r,a=e[1],s=e[0],i=this.createKeyFunction(a,[S,f]),n=1/0,o=0;o0&&u>o&&(u=o);for(var p=0;p=0?(c=y.substr(0,b),m=y.substr(b+1)):(c=y,m=""),l=decodeURIComponent(c),d=decodeURIComponent(m),a(i,l)?Array.isArray(i[l])?i[l].push(d):i[l]=[i[l],d]:i[l]=d}return i}},{}],270:[function(e,t,r){"use strict";var a=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,r,s){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(s){var i=encodeURIComponent(a(s))+r;return Array.isArray(e[s])?e[s].map(function(e){return i+encodeURIComponent(a(e))}).join(t):i+encodeURIComponent(a(e[s]))}).join(t):s?encodeURIComponent(a(s))+r+encodeURIComponent(a(e)):""}},{}],271:[function(e,t,r){arguments[4][254][0].apply(r,arguments)},{"./decode":269,"./encode":270,dup:254}],272:[function(e,t,r){function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function s(e,t,r){if(e&&p(e)&&e instanceof a)return e;var s=new a;return s.parse(e,t,r),s}function i(e){return u(e)&&(e=s(e)),e instanceof a?e.format():a.prototype.format.call(e)}function n(e,t){return s(e,!1,!0).resolve(t)}function o(e,t){return e?s(e,!1,!0).resolveObject(t):t}function u(e){return"string"==typeof e}function p(e){return"object"==typeof e&&null!==e}function c(e){return null===e}function m(e){return null==e}var l=e("punycode");r.parse=s,r.resolve=n,r.resolveObject=o,r.format=i,r.Url=a;var d=/^([a-z0-9.+-]+:)/i,y=/:[0-9]*$/,b=["<",">",'"',"`"," ","\r","\n","\t"],h=["{","}","|","\\","^","`"].concat(b),S=["'"].concat(h),g=["%","/","?",";","#"].concat(S),f=["/","?","#"],N=255,I=/^[a-z0-9A-Z_-]{0,63}$/,v=/^([a-z0-9A-Z_-]{0,63})(.*)$/,D={javascript:!0,"javascript:":!0},C={javascript:!0,"javascript:":!0},R={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},T=e("querystring");a.prototype.parse=function(e,t,r){if(!u(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e;a=a.trim();var s=d.exec(a);if(s){s=s[0];var i=s.toLowerCase();this.protocol=i,a=a.substr(s.length)}if(r||s||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var n="//"===a.substr(0,2);!n||s&&C[s]||(a=a.substr(2),this.slashes=!0)}if(!C[s]&&(n||s&&!R[s])){for(var o=-1,p=0;p127?"x":A[q];if(!P.match(I)){var E=h.slice(0,p),M=h.slice(p+1),B=A.match(v);B&&(E.push(B[1]),M.unshift(B[2])),M.length&&(a="/"+M.join(".")+a),this.hostname=E.join(".");break}}}if(this.hostname.length>N?this.hostname="":this.hostname=this.hostname.toLowerCase(),!b){for(var w=this.hostname.split("."),G=[],p=0;p0)&&r.host.split("@");h&&(r.auth=h.shift(),r.host=r.hostname=h.shift())}return r.search=e.search,r.query=e.query,c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!y.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var S=y.slice(-1)[0],g=(r.host||e.host)&&("."===S||".."===S)||""===S,f=0,N=y.length;N>=0;N--)S=y[N],"."==S?y.splice(N,1):".."===S?(y.splice(N,1),f++):f&&(y.splice(N,1),f--);if(!l&&!d)for(;f--;f)y.unshift("..");!l||""===y[0]||y[0]&&"/"===y[0].charAt(0)||y.unshift(""),g&&"/"!==y.join("/").substr(-1)&&y.push("");var I=""===y[0]||y[0]&&"/"===y[0].charAt(0);if(b){r.hostname=r.host=I?"":y.length?y.shift():"";var h=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");h&&(r.auth=h.shift(),r.host=r.hostname=h.shift())}return l=l||r.host&&y.length,l&&!I&&y.unshift(""),y.length?r.pathname=y.join("/"):(r.pathname=null,r.path=null),c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=y.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{punycode:251,querystring:254}],273:[function(e,t,r){(function(){var r,a;a=e("lodash/object/create"),t.exports=r=function(){function e(e,t,r){if(this.stringify=e.stringify,null==t)throw new Error("Missing attribute name of element "+e.name);if(null==r)throw new Error("Missing attribute value for attribute "+t+" of element "+e.name);this.name=this.stringify.attName(t),this.value=this.stringify.attValue(r)}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){return" "+this.name+'="'+this.value+'"'},e}()}).call(this)},{"lodash/object/create":332}],274:[function(e,t,r){(function(){var r,a,s,i,n;n=e("./XMLStringifier"),a=e("./XMLDeclaration"),s=e("./XMLDocType"),i=e("./XMLElement"),t.exports=r=function(){function e(e,t){var r,a;if(null==e)throw new Error("Root element needs a name");null==t&&(t={}),this.options=t,this.stringify=new n(t),a=new i(this,"doc"),r=a.element(e),r.isRoot=!0,r.documentObject=this,this.rootObject=r,t.headless||(r.declaration(t),null==t.pubID&&null==t.sysID||r.doctype(t))}return e.prototype.root=function(){return this.rootObject},e.prototype.end=function(e){return this.toString(e)},e.prototype.toString=function(e){var t,r,a,s,i,n,o,u;return s=(null!=e?e.pretty:void 0)||!1,t=null!=(n=null!=e?e.indent:void 0)?n:" ",a=null!=(o=null!=e?e.offset:void 0)?o:0,r=null!=(u=null!=e?e.newline:void 0)?u:"\n",i="",null!=this.xmldec&&(i+=this.xmldec.toString(e)),null!=this.doctype&&(i+=this.doctype.toString(e)),i+=this.rootObject.toString(e),s&&i.slice(-r.length)===r&&(i=i.slice(0,-r.length)),i},e}()}).call(this)},{"./XMLDeclaration":281,"./XMLDocType":282,"./XMLElement":283,"./XMLStringifier":287}],275:[function(e,t,r){(function(){var r,a,s,i=function(e,t){function r(){this.constructor=e}for(var a in t)n.call(t,a)&&(e[a]=t[a]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},n={}.hasOwnProperty;s=e("lodash/object/create"),a=e("./XMLNode"),t.exports=r=function(e){function t(e,r){if(t.__super__.constructor.call(this,e),null==r)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(r)}return i(t,e),t.prototype.clone=function(){return s(t.prototype,this)},t.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},t}(a)}).call(this)},{"./XMLNode":284,"lodash/object/create":332}],276:[function(e,t,r){(function(){var r,a,s,i=function(e,t){function r(){this.constructor=e}for(var a in t)n.call(t,a)&&(e[a]=t[a]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},n={}.hasOwnProperty;s=e("lodash/object/create"),a=e("./XMLNode"),t.exports=r=function(e){function t(e,r){if(t.__super__.constructor.call(this,e),null==r)throw new Error("Missing comment text");this.text=this.stringify.comment(r)}return i(t,e),t.prototype.clone=function(){return s(t.prototype,this)},t.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},t}(a)}).call(this)},{"./XMLNode":284,"lodash/object/create":332}],277:[function(e,t,r){(function(){var r,a;a=e("lodash/object/create"),t.exports=r=function(){function e(e,t,r,a,s,i){if(this.stringify=e.stringify,null==t)throw new Error("Missing DTD element name");if(null==r)throw new Error("Missing DTD attribute name");if(!a)throw new Error("Missing DTD attribute type");if(!s)throw new Error("Missing DTD attribute default");if(0!==s.indexOf("#")&&(s="#"+s),!s.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");if(i&&!s.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT");this.elementName=this.stringify.eleName(t),this.attributeName=this.stringify.attName(r),this.attributeType=this.stringify.dtdAttType(a),this.defaultValue=this.stringify.dtdAttDefault(i),this.defaultValueType=s}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/object/create":332}],278:[function(e,t,r){(function(){var r,a,s;a=e("lodash/object/create"),s=e("lodash/lang/isArray"),t.exports=r=function(){function e(e,t,r){if(this.stringify=e.stringify,null==t)throw new Error("Missing DTD element name");r||(r="(#PCDATA)"),s(r)&&(r="("+r.join(",")+")"),this.name=this.stringify.eleName(t),this.value=this.stringify.dtdElementValue(r)}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/lang/isArray":324,"lodash/object/create":332}],279:[function(e,t,r){(function(){var r,a,s;a=e("lodash/object/create"),s=e("lodash/lang/isObject"),t.exports=r=function(){function e(e,t,r,a){if(this.stringify=e.stringify,null==r)throw new Error("Missing entity name");if(null==a)throw new Error("Missing entity value");if(this.pe=!!t,this.name=this.stringify.eleName(r),s(a)){if(!a.pubID&&!a.sysID)throw new Error("Public and/or system identifiers are required for an external entity");if(a.pubID&&!a.sysID)throw new Error("System identifier is required for a public external entity");if(null!=a.pubID&&(this.pubID=this.stringify.dtdPubID(a.pubID)),null!=a.sysID&&(this.sysID=this.stringify.dtdSysID(a.sysID)),null!=a.nData&&(this.nData=this.stringify.dtdNData(a.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity")}else this.value=this.stringify.dtdEntityValue(a)}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/lang/isObject":328,"lodash/object/create":332}],280:[function(e,t,r){(function(){var r,a;a=e("lodash/object/create"),t.exports=r=function(){function e(e,t,r){if(this.stringify=e.stringify,null==t)throw new Error("Missing notation name");if(!r.pubID&&!r.sysID)throw new Error("Public or system identifiers are required for an external entity");this.name=this.stringify.eleName(t),null!=r.pubID&&(this.pubID=this.stringify.dtdPubID(r.pubID)),null!=r.sysID&&(this.sysID=this.stringify.dtdSysID(r.sysID))}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/object/create":332}],281:[function(e,t,r){(function(){var r,a,s,i,n=function(e,t){function r(){this.constructor=e}for(var a in t)o.call(t,a)&&(e[a]=t[a]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},o={}.hasOwnProperty;s=e("lodash/object/create"),i=e("lodash/lang/isObject"),a=e("./XMLNode"),t.exports=r=function(e){function t(e,r,a,s){var n;t.__super__.constructor.call(this,e),i(r)&&(n=r,r=n.version,a=n.encoding,s=n.standalone),r||(r="1.0"),null!=r&&(this.version=this.stringify.xmlVersion(r)),null!=a&&(this.encoding=this.stringify.xmlEncoding(a)),null!=s&&(this.standalone=this.stringify.xmlStandalone(s))}return n(t,e),t.prototype.clone=function(){return s(t.prototype,this)},t.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},t}(a)}).call(this)},{"./XMLNode":284,"lodash/lang/isObject":328,"lodash/object/create":332}],282:[function(e,t,r){(function(){var r,a,s,i,n,o,u,p,c,m;c=e("lodash/object/create"),m=e("lodash/lang/isObject"),r=e("./XMLCData"),a=e("./XMLComment"),s=e("./XMLDTDAttList"),n=e("./XMLDTDEntity"),i=e("./XMLDTDElement"),o=e("./XMLDTDNotation"),p=e("./XMLProcessingInstruction"),t.exports=u=function(){function e(e,t,r){var a,s;this.documentObject=e,this.stringify=this.documentObject.stringify,this.children=[],m(t)&&(a=t,t=a.pubID,r=a.sysID),null==r&&(s=[t,r],r=s[0],t=s[1]),null!=t&&(this.pubID=this.stringify.dtdPubID(t)),null!=r&&(this.sysID=this.stringify.dtdSysID(r))}return e.prototype.clone=function(){return c(e.prototype,this)},e.prototype.element=function(e,t){var r;return r=new i(this,e,t),this.children.push(r),this},e.prototype.attList=function(e,t,r,a,i){var n;return n=new s(this,e,t,r,a,i),this.children.push(n),this},e.prototype.entity=function(e,t){var r;return r=new n(this,!1,e,t),this.children.push(r),this},e.prototype.pEntity=function(e,t){var r;return r=new n(this,!0,e,t),this.children.push(r),this},e.prototype.notation=function(e,t){var r;return r=new o(this,e,t),this.children.push(r),this},e.prototype.cdata=function(e){var t;return t=new r(this,e),this.children.push(t),this},e.prototype.comment=function(e){var t;return t=new a(this,e),this.children.push(t),this},e.prototype.instruction=function(e,t){var r;return r=new p(this,e,t),this.children.push(r),this},e.prototype.root=function(){return this.documentObject.root()},e.prototype.document=function(){return this.documentObject},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c,m,l,d,y;if(u=(null!=e?e.pretty:void 0)||!1,s=null!=(c=null!=e?e.indent:void 0)?c:" ",o=null!=(m=null!=e?e.offset:void 0)?m:0,n=null!=(l=null!=e?e.newline:void 0)?l:"\n",t||(t=0),y=new Array(t+o+1).join(s),p="",u&&(p+=y),p+="0){for(p+=" [",u&&(p+=n),d=this.children,a=0,i=d.length;a",b&&(h+=d);else if(b&&1===this.children.length&&null!=this.children[0].value)h+=">",h+=this.children[0].value,h+="",h+=d;else{for(h+=">",b&&(h+=d),v=this.children,u=0,c=v.length;u",b&&(h+=d)}return h},t.prototype.att=function(e,t){return this.attribute(e,t)},t.prototype.ins=function(e,t){return this.instruction(e,t)},t.prototype.a=function(e,t){return this.attribute(e,t)},t.prototype.i=function(e,t){return this.instruction(e,t)},t}(s)}).call(this)},{"./XMLAttribute":273,"./XMLNode":284,"./XMLProcessingInstruction":285,"lodash/collection/every":290,"lodash/lang/isArray":324,"lodash/lang/isFunction":326,"lodash/lang/isObject":328,"lodash/object/create":332}],284:[function(e,t,r){(function(){var r,a,s,i,n,o,u,p,c,m,l,d,y={}.hasOwnProperty;d=e("lodash/lang/isObject"),c=e("lodash/lang/isArray"),l=e("lodash/lang/isFunction"),m=e("lodash/lang/isEmpty"),n=null,r=null,a=null,s=null,i=null,u=null,p=null,t.exports=o=function(){function t(t){this.parent=t,this.options=this.parent.options,this.stringify=this.parent.stringify,null===n&&(n=e("./XMLElement"),r=e("./XMLCData"),a=e("./XMLComment"),s=e("./XMLDeclaration"),i=e("./XMLDocType"),u=e("./XMLRaw"),p=e("./XMLText"))}return t.prototype.clone=function(){throw new Error("Cannot clone generic XMLNode")},t.prototype.element=function(e,t,r){var a,s,i,n,o,u,p;if(n=null,null==t&&(t={}),t=t.valueOf(),d(t)||(u=[t,r],r=u[0],t=u[1]),null!=e&&(e=e.valueOf()),c(e))for(s=0,o=e.length;s/))throw new Error("Invalid CDATA text: "+e);return this.assertLegalChar(e)},e.prototype.comment=function(e){if(e=""+e||"",e.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+e);return this.assertLegalChar(e)},e.prototype.raw=function(e){return""+e||""},e.prototype.attName=function(e){return""+e||""},e.prototype.attValue=function(e){return e=""+e||"",this.attEscape(e)},e.prototype.insTarget=function(e){return""+e||""},e.prototype.insValue=function(e){if(e=""+e||"",e.match(/\?>/))throw new Error("Invalid processing instruction value: "+e);return e},e.prototype.xmlVersion=function(e){if(e=""+e||"",!e.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+e);return e},e.prototype.xmlEncoding=function(e){if(e=""+e||"",!e.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/))throw new Error("Invalid encoding: "+e);return e},e.prototype.xmlStandalone=function(e){return e?"yes":"no"},e.prototype.dtdPubID=function(e){return""+e||""},e.prototype.dtdSysID=function(e){return""+e||""},e.prototype.dtdElementValue=function(e){return""+e||""},e.prototype.dtdAttType=function(e){return""+e||""},e.prototype.dtdAttDefault=function(e){return null!=e?""+e||"":e},e.prototype.dtdEntityValue=function(e){return""+e||""},e.prototype.dtdNData=function(e){return""+e||""},e.prototype.convertAttKey="@",e.prototype.convertPIKey="?",e.prototype.convertTextKey="#text",e.prototype.convertCDataKey="#cdata",e.prototype.convertCommentKey="#comment",e.prototype.convertRawKey="#raw",e.prototype.convertListKey="#list",e.prototype.assertLegalChar=function(e){var t,r;if(t=this.allowSurrogateChars?/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/:/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/,r=e.match(t))throw new Error("Invalid character ("+r+") in string: "+e+" at index "+r.index);return e},e.prototype.elEscape=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/\r/g," ")},e.prototype.attEscape=function(e){return e.replace(/&/g,"&").replace(/3&&"function"==typeof n?(n=s(n,o,5),r-=2):(n=r>2&&"function"==typeof o?o:null,r-=n?1:0),u&&i(t[1],t[2],u)&&(n=3==r?null:n,r=2);for(var p=0;++pu))return!1;for(;c&&++o-1&&e%1==0&&e-1&&e%1==0&&e<=s}var s=Math.pow(2,53)-1;t.exports=a},{}],318:[function(e,t,r){function a(e){return e&&"object"==typeof e||!1}t.exports=a},{}],319:[function(e,t,r){function a(e){return e===e&&(0===e?1/e>0:!s(e))}var s=e("../lang/isObject");t.exports=a},{"../lang/isObject":328}],320:[function(e,t,r){(function(r){var a=e("../lang/isNative"),s=a(s=r.WeakMap)&&s,i=s&&new s;t.exports=i}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../lang/isNative":327}],321:[function(e,t,r){function a(e){for(var t=u(e),r=t.length,a=r&&e.length,c=a&&o(a)&&(i(e)||p.nonEnumArgs&&s(e)),l=-1,d=[];++l0;++a, some require you to add "/cfx/st" into your URL). + * + * @param options [Object] The options to create a signed URL. + * @option options url [String] The URL to which the signature will grant + * access. Required. + * @option options expires [Number] A Unix UTC timestamp indicating when the + * signature should expire. Required unless you + * pass in a full policy. + * @option options policy [String] A CloudFront JSON policy. Required unless + * you pass in a url and an expiry time. + * + * @param cb [Function] if a callback is provided, this function will + * pass the URL as the second parameter (after the error parameter) to + * the callback function. + * + * @return [String] if called synchronously (with no callback), returns the + * signed URL. + * @return [null] nothing is returned if a callback is provided. + */ + getSignedUrl: function (options, cb) { + try { + var resource = getResource(options.url); + } catch (err) { + return handleError(err, cb); + } + + var parsedUrl = url.parse(options.url, true), + signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy') + ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) + : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey); + + parsedUrl.search = null; + for (var key in signatureHash) { + if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { + parsedUrl.query[key] = signatureHash[key]; + } + } + + try { + var signedUrl = determineScheme(options.url) === 'rtmp' + ? getRtmpUrl(url.format(parsedUrl)) + : url.format(parsedUrl); + } catch (err) { + return handleError(err, cb); + } + + return handleSuccess(signedUrl, cb); + } +}); + +module.exports = AWS.CloudFront.Signer; diff --git a/node_modules/aws-sdk/lib/config.js b/node_modules/aws-sdk/lib/config.js new file mode 100644 index 0000000..856b5ad --- /dev/null +++ b/node_modules/aws-sdk/lib/config.js @@ -0,0 +1,511 @@ +var AWS = require('./core'); +require('./credentials'); +require('./credentials/credential_provider_chain'); + +/** + * The main configuration class used by all service objects to set + * the region, credentials, and other options for requests. + * + * By default, credentials and region settings are left unconfigured. + * This should be configured by the application before using any + * AWS service APIs. + * + * In order to set global configuration options, properties should + * be assigned to the global {AWS.config} object. + * + * @see AWS.config + * + * @!group General Configuration Options + * + * @!attribute credentials + * @return [AWS.Credentials] the AWS credentials to sign requests with. + * + * @!attribute region + * @example Set the global region setting to us-west-2 + * AWS.config.update({region: 'us-west-2'}); + * @return [AWS.Credentials] The region to send service requests to. + * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html + * A list of available endpoints for each AWS service + * + * @!attribute maxRetries + * @return [Integer] the maximum amount of retries to perform for a + * service request. By default this value is calculated by the specific + * service object that the request is being made to. + * + * @!attribute maxRedirects + * @return [Integer] the maximum amount of redirects to follow for a + * service request. Defaults to 10. + * + * @!attribute paramValidation + * @return [Boolean|map] whether input parameters should be validated against + * the operation description before sending the request. Defaults to true. + * Pass a map to enable any of the following specific validation features: + * + * * **min** [Boolean] — Validates that a value meets the min + * constraint. This is enabled by default when paramValidation is set + * to `true`. + * * **max** [Boolean] — Validates that a value meets the max + * constraint. + * * **pattern** [Boolean] — Validates that a string value matches a + * regular expression. + * * **enum** [Boolean] — Validates that a string value matches one + * of the allowable enum values. + * + * @!attribute computeChecksums + * @return [Boolean] whether to compute checksums for payload bodies when + * the service accepts it (currently supported in S3 only). + * + * @!attribute convertResponseTypes + * @return [Boolean] whether types are converted when parsing response data. + * Currently only supported for JSON based services. Turning this off may + * improve performance on large response payloads. Defaults to `true`. + * + * @!attribute correctClockSkew + * @return [Boolean] whether to apply a clock skew correction and retry + * requests that fail because of an skewed client clock. Defaults to + * `false`. + * + * @!attribute sslEnabled + * @return [Boolean] whether SSL is enabled for requests + * + * @!attribute s3ForcePathStyle + * @return [Boolean] whether to force path style URLs for S3 objects + * + * @!attribute s3BucketEndpoint + * @note Setting this configuration option requires an `endpoint` to be + * provided explicitly to the service constructor. + * @return [Boolean] whether the provided endpoint addresses an individual + * bucket (false if it addresses the root API endpoint). + * + * @!attribute s3DisableBodySigning + * @return [Boolean] whether to disable S3 body signing when using signature version `v4`. + * Body signing can only be disabled when using https. Defaults to `true`. + * + * @!attribute useAccelerateEndpoint + * @note This configuration option is only compatible with S3 while accessing + * dns-compatible buckets. + * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service. + * Defaults to `false`. + * + * @!attribute retryDelayOptions + * @example Set the base retry delay for all services to 300 ms + * AWS.config.update({retryDelayOptions: {base: 300}}); + * // Delays with maxRetries = 3: 300, 600, 1200 + * @example Set a custom backoff function to provide delay values on retries + * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount) { + * // returns delay in ms + * }}}); + * @note This works with all services except DynamoDB. + * @return [map] A set of options to configure the retry delay on retryable errors. + * Currently supported options are: + * + * * **base** [Integer] — The base number of milliseconds to use in the + * exponential backoff for operation retries. Defaults to 100 ms. + * * **customBackoff ** [function] — A custom function that accepts a retry count + * and returns the amount of time to delay in milliseconds. The `base` option will be + * ignored if this option is supplied. + * + * @!attribute httpOptions + * @return [map] A set of options to pass to the low-level HTTP request. + * Currently supported options are: + * + * * **proxy** [String] — the URL to proxy requests through + * * **agent** [http.Agent, https.Agent] — the Agent object to perform + * HTTP requests with. Used for connection pooling. Defaults to the global + * agent (`http.globalAgent`) for non-SSL connections. Note that for + * SSL connections, a special Agent object is used in order to enable + * peer certificate verification. This feature is only supported in the + * Node.js environment. + * * **timeout** [Integer] — The number of milliseconds to wait before + * giving up on a connection attempt. Defaults to two minutes (120000). + * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous + * HTTP requests. Used in the browser environment only. Set to false to + * send requests synchronously. Defaults to true (async on). + * * **xhrWithCredentials** [Boolean] — Sets the "withCredentials" + * property of an XMLHttpRequest object. Used in the browser environment + * only. Defaults to false. + * @!attribute logger + * @return [#write,#log] an object that responds to .write() (like a stream) + * or .log() (like the console object) in order to log information about + * requests + * + * @!attribute systemClockOffset + * @return [Number] an offset value in milliseconds to apply to all signing + * times. Use this to compensate for clock skew when your system may be + * out of sync with the service time. Note that this configuration option + * can only be applied to the global `AWS.config` object and cannot be + * overridden in service-specific configuration. Defaults to 0 milliseconds. + * + * @!attribute signatureVersion + * @return [String] the signature version to sign requests with (overriding + * the API configuration). Possible values are: 'v2', 'v3', 'v4'. + * + * @!attribute signatureCache + * @return [Boolean] whether the signature to sign requests with (overriding + * the API configuration) is cached. Only applies to the signature version 'v4'. + * Defaults to `true`. + */ +AWS.Config = AWS.util.inherit({ + /** + * @!endgroup + */ + + /** + * Creates a new configuration object. This is the object that passes + * option data along to service requests, including credentials, security, + * region information, and some service specific settings. + * + * @example Creating a new configuration object with credentials and region + * var config = new AWS.Config({ + * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2' + * }); + * @option options accessKeyId [String] your AWS access key ID. + * @option options secretAccessKey [String] your AWS secret access key. + * @option options sessionToken [AWS.Credentials] the optional AWS + * session token to sign requests with. + * @option options credentials [AWS.Credentials] the AWS credentials + * to sign requests with. You can either specify this object, or + * specify the accessKeyId and secretAccessKey options directly. + * @option options credentialProvider [AWS.CredentialProviderChain] the + * provider chain used to resolve credentials if no static `credentials` + * property is set. + * @option options region [String] the region to send service requests to. + * See {region} for more information. + * @option options maxRetries [Integer] the maximum amount of retries to + * attempt with a request. See {maxRetries} for more information. + * @option options maxRedirects [Integer] the maximum amount of redirects to + * follow with a request. See {maxRedirects} for more information. + * @option options sslEnabled [Boolean] whether to enable SSL for + * requests. + * @option options paramValidation [Boolean|map] whether input parameters + * should be validated against the operation description before sending + * the request. Defaults to true. Pass a map to enable any of the + * following specific validation features: + * + * * **min** [Boolean] — Validates that a value meets the min + * constraint. This is enabled by default when paramValidation is set + * to `true`. + * * **max** [Boolean] — Validates that a value meets the max + * constraint. + * * **pattern** [Boolean] — Validates that a string value matches a + * regular expression. + * * **enum** [Boolean] — Validates that a string value matches one + * of the allowable enum values. + * @option options computeChecksums [Boolean] whether to compute checksums + * for payload bodies when the service accepts it (currently supported + * in S3 only) + * @option options convertResponseTypes [Boolean] whether types are converted + * when parsing response data. Currently only supported for JSON based + * services. Turning this off may improve performance on large response + * payloads. Defaults to `true`. + * @option options correctClockSkew [Boolean] whether to apply a clock skew + * correction and retry requests that fail because of an skewed client + * clock. Defaults to `false`. + * @option options s3ForcePathStyle [Boolean] whether to force path + * style URLs for S3 objects. + * @option options s3BucketEndpoint [Boolean] whether the provided endpoint + * addresses an individual bucket (false if it addresses the root API + * endpoint). Note that setting this configuration option requires an + * `endpoint` to be provided explicitly to the service constructor. + * @option options s3DisableBodySigning [Boolean] whether S3 body signing + * should be disabled when using signature version `v4`. Body signing + * can only be disabled when using https. Defaults to `true`. + * + * @option options retryDelayOptions [map] A set of options to configure + * the retry delay on retryable errors. Currently supported options are: + * + * * **base** [Integer] — The base number of milliseconds to use in the + * exponential backoff for operation retries. Defaults to 100 ms. + * * **customBackoff ** [function] — A custom function that accepts a retry count + * and returns the amount of time to delay in milliseconds. The `base` option will be + * ignored if this option is supplied. + * @option options httpOptions [map] A set of options to pass to the low-level + * HTTP request. Currently supported options are: + * + * * **proxy** [String] — the URL to proxy requests through + * * **agent** [http.Agent, https.Agent] — the Agent object to perform + * HTTP requests with. Used for connection pooling. Defaults to the global + * agent (`http.globalAgent`) for non-SSL connections. Note that for + * SSL connections, a special Agent object is used in order to enable + * peer certificate verification. This feature is only available in the + * Node.js environment. + * * **timeout** [Integer] — Sets the socket to timeout after timeout + * milliseconds of inactivity on the socket. Defaults to two minutes + * (120000). + * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous + * HTTP requests. Used in the browser environment only. Set to false to + * send requests synchronously. Defaults to true (async on). + * * **xhrWithCredentials** [Boolean] — Sets the "withCredentials" + * property of an XMLHttpRequest object. Used in the browser environment + * only. Defaults to false. + * @option options apiVersion [String, Date] a String in YYYY-MM-DD format + * (or a date) that represents the latest possible API version that can be + * used in all services (unless overridden by `apiVersions`). Specify + * 'latest' to use the latest possible version. + * @option options apiVersions [map] a map of service + * identifiers (the lowercase service class name) with the API version to + * use when instantiating a service. Specify 'latest' for each individual + * that can use the latest available version. + * @option options logger [#write,#log] an object that responds to .write() + * (like a stream) or .log() (like the console object) in order to log + * information about requests + * @option options systemClockOffset [Number] an offset value in milliseconds + * to apply to all signing times. Use this to compensate for clock skew + * when your system may be out of sync with the service time. Note that + * this configuration option can only be applied to the global `AWS.config` + * object and cannot be overridden in service-specific configuration. + * Defaults to 0 milliseconds. + * @option options signatureVersion [String] the signature version to sign + * requests with (overriding the API configuration). Possible values are: + * 'v2', 'v3', 'v4'. + * @option options signatureCache [Boolean] whether the signature to sign + * requests with (overriding the API configuration) is cached. Only applies + * to the signature version 'v4'. Defaults to `true`. + */ + constructor: function Config(options) { + if (options === undefined) options = {}; + options = this.extractCredentials(options); + + AWS.util.each.call(this, this.keys, function (key, value) { + this.set(key, options[key], value); + }); + }, + + /** + * @!group Managing Credentials + */ + + /** + * Loads credentials from the configuration object. This is used internally + * by the SDK to ensure that refreshable {Credentials} objects are properly + * refreshed and loaded when sending a request. If you want to ensure that + * your credentials are loaded prior to a request, you can use this method + * directly to provide accurate credential data stored in the object. + * + * @note If you configure the SDK with static or environment credentials, + * the credential data should already be present in {credentials} attribute. + * This method is primarily necessary to load credentials from asynchronous + * sources, or sources that can refresh credentials periodically. + * @example Getting your access key + * AWS.config.getCredentials(function(err) { + * if (err) console.log(err.stack); // credentials not loaded + * else console.log("Access Key:", AWS.config.credentials.accessKeyId); + * }) + * @callback callback function(err) + * Called when the {credentials} have been properly set on the configuration + * object. + * + * @param err [Error] if this is set, credentials were not successfuly + * loaded and this error provides information why. + * @see credentials + * @see Credentials + */ + getCredentials: function getCredentials(callback) { + var self = this; + + function finish(err) { + callback(err, err ? null : self.credentials); + } + + function credError(msg, err) { + return new AWS.util.error(err || new Error(), { + code: 'CredentialsError', message: msg + }); + } + + function getAsyncCredentials() { + self.credentials.get(function(err) { + if (err) { + var msg = 'Could not load credentials from ' + + self.credentials.constructor.name; + err = credError(msg, err); + } + finish(err); + }); + } + + function getStaticCredentials() { + var err = null; + if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) { + err = credError('Missing credentials'); + } + finish(err); + } + + if (self.credentials) { + if (typeof self.credentials.get === 'function') { + getAsyncCredentials(); + } else { // static credentials + getStaticCredentials(); + } + } else if (self.credentialProvider) { + self.credentialProvider.resolve(function(err, creds) { + if (err) { + err = credError('Could not load credentials from any providers', err); + } + self.credentials = creds; + finish(err); + }); + } else { + finish(credError('No credentials to load')); + } + }, + + /** + * @!group Loading and Setting Configuration Options + */ + + /** + * @overload update(options, allowUnknownKeys = false) + * Updates the current configuration object with new options. + * + * @example Update maxRetries property of a configuration object + * config.update({maxRetries: 10}); + * @param [Object] options a map of option keys and values. + * @param [Boolean] allowUnknownKeys whether unknown keys can be set on + * the configuration object. Defaults to `false`. + * @see constructor + */ + update: function update(options, allowUnknownKeys) { + allowUnknownKeys = allowUnknownKeys || false; + options = this.extractCredentials(options); + AWS.util.each.call(this, options, function (key, value) { + if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) || + AWS.Service.hasService(key)) { + this.set(key, value); + } + }); + }, + + /** + * Loads configuration data from a JSON file into this config object. + * @note Loading configuration will reset all existing configuration + * on the object. + * @!macro nobrowser + * @param path [String] the path relative to your process's current + * working directory to load configuration from. + * @return [AWS.Config] the same configuration object + */ + loadFromPath: function loadFromPath(path) { + this.clear(); + + var options = JSON.parse(AWS.util.readFileSync(path)); + var fileSystemCreds = new AWS.FileSystemCredentials(path); + var chain = new AWS.CredentialProviderChain(); + chain.providers.unshift(fileSystemCreds); + chain.resolve(function (err, creds) { + if (err) throw err; + else options.credentials = creds; + }); + + this.constructor(options); + + return this; + }, + + /** + * Clears configuration data on this object + * + * @api private + */ + clear: function clear() { + /*jshint forin:false */ + AWS.util.each.call(this, this.keys, function (key) { + delete this[key]; + }); + + // reset credential provider + this.set('credentials', undefined); + this.set('credentialProvider', undefined); + }, + + /** + * Sets a property on the configuration object, allowing for a + * default value + * @api private + */ + set: function set(property, value, defaultValue) { + if (value === undefined) { + if (defaultValue === undefined) { + defaultValue = this.keys[property]; + } + if (typeof defaultValue === 'function') { + this[property] = defaultValue.call(this); + } else { + this[property] = defaultValue; + } + } else if (property === 'httpOptions' && this[property]) { + // deep merge httpOptions + this[property] = AWS.util.merge(this[property], value); + } else { + this[property] = value; + } + }, + + /** + * All of the keys with their default values. + * + * @constant + * @api private + */ + keys: { + credentials: null, + credentialProvider: null, + region: null, + logger: null, + apiVersions: {}, + apiVersion: null, + endpoint: undefined, + httpOptions: { + timeout: 120000 + }, + maxRetries: undefined, + maxRedirects: 10, + paramValidation: true, + sslEnabled: true, + s3ForcePathStyle: false, + s3BucketEndpoint: false, + s3DisableBodySigning: true, + computeChecksums: true, + convertResponseTypes: true, + correctClockSkew: false, + customUserAgent: null, + dynamoDbCrc32: true, + systemClockOffset: 0, + signatureVersion: null, + signatureCache: true, + retryDelayOptions: { + base: 100 + }, + useAccelerateEndpoint: false + }, + + /** + * Extracts accessKeyId, secretAccessKey and sessionToken + * from a configuration hash. + * + * @api private + */ + extractCredentials: function extractCredentials(options) { + if (options.accessKeyId && options.secretAccessKey) { + options = AWS.util.copy(options); + options.credentials = new AWS.Credentials(options); + } + return options; + }, + + /** + * Sets the promise dependency the SDK will use wherever Promises are returned. + * @param [Constructor] dep A reference to a Promise constructor + */ + setPromisesDependency: function setPromisesDependency(dep) { + AWS.util.addPromisesToRequests(AWS.Request, dep); + } +}); + +/** + * @return [AWS.Config] The global configuration object singleton instance + * @readonly + * @see AWS.Config + */ +AWS.config = new AWS.Config(); diff --git a/node_modules/aws-sdk/lib/core.js b/node_modules/aws-sdk/lib/core.js new file mode 100644 index 0000000..a1d5c7b --- /dev/null +++ b/node_modules/aws-sdk/lib/core.js @@ -0,0 +1,107 @@ +/** + * The main AWS namespace + */ +var AWS = { util: require('./util') }; + +/** + * @api private + * @!macro [new] nobrowser + * @note This feature is not supported in the browser environment of the SDK. + */ +var _hidden = {}; _hidden.toString(); // hack to parse macro + +module.exports = AWS; + +AWS.util.update(AWS, { + + /** + * @constant + */ + VERSION: '2.6.8', + + /** + * @api private + */ + Signers: {}, + + /** + * @api private + */ + Protocol: { + Json: require('./protocol/json'), + Query: require('./protocol/query'), + Rest: require('./protocol/rest'), + RestJson: require('./protocol/rest_json'), + RestXml: require('./protocol/rest_xml') + }, + + /** + * @api private + */ + XML: { + Builder: require('./xml/builder'), + Parser: null // conditionally set based on environment + }, + + /** + * @api private + */ + JSON: { + Builder: require('./json/builder'), + Parser: require('./json/parser') + }, + + /** + * @api private + */ + Model: { + Api: require('./model/api'), + Operation: require('./model/operation'), + Shape: require('./model/shape'), + Paginator: require('./model/paginator'), + ResourceWaiter: require('./model/resource_waiter') + }, + + util: require('./util'), + + /** + * @api private + */ + apiLoader: function() { throw new Error('No API loader set'); } +}); + +require('./service'); + +require('./credentials'); +require('./credentials/credential_provider_chain'); +require('./credentials/temporary_credentials'); +require('./credentials/web_identity_credentials'); +require('./credentials/cognito_identity_credentials'); +require('./credentials/saml_credentials'); + +require('./config'); +require('./http'); +require('./sequential_executor'); +require('./event_listeners'); +require('./request'); +require('./response'); +require('./resource_waiter'); +require('./signers/request_signer'); +require('./param_validator'); + +/** + * @readonly + * @return [AWS.SequentialExecutor] a collection of global event listeners that + * are attached to every sent request. + * @see AWS.Request AWS.Request for a list of events to listen for + * @example Logging the time taken to send a request + * AWS.events.on('send', function startSend(resp) { + * resp.startTime = new Date().getTime(); + * }).on('complete', function calculateTime(resp) { + * var time = (new Date().getTime() - resp.startTime) / 1000; + * console.log('Request took ' + time + ' seconds'); + * }); + * + * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds' + */ +AWS.events = new AWS.SequentialExecutor(); diff --git a/node_modules/aws-sdk/lib/credentials.js b/node_modules/aws-sdk/lib/credentials.js new file mode 100644 index 0000000..43ecdcf --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials.js @@ -0,0 +1,150 @@ +var AWS = require('./core'); + +/** + * Represents your AWS security credentials, specifically the + * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}. + * Creating a `Credentials` object allows you to pass around your + * security information to configuration and service objects. + * + * Note that this class typically does not need to be constructed manually, + * as the {AWS.Config} and {AWS.Service} classes both accept simple + * options hashes with the three keys. These structures will be converted + * into Credentials objects automatically. + * + * ## Expiring and Refreshing Credentials + * + * Occasionally credentials can expire in the middle of a long-running + * application. In this case, the SDK will automatically attempt to + * refresh the credentials from the storage location if the Credentials + * class implements the {refresh} method. + * + * If you are implementing a credential storage location, you + * will want to create a subclass of the `Credentials` class and + * override the {refresh} method. This method allows credentials to be + * retrieved from the backing store, be it a file system, database, or + * some network storage. The method should reset the credential attributes + * on the object. + * + * @!attribute expired + * @return [Boolean] whether the credentials have been expired and + * require a refresh. Used in conjunction with {expireTime}. + * @!attribute expireTime + * @return [Date] a time when credentials should be considered expired. Used + * in conjunction with {expired}. + * @!attribute accessKeyId + * @return [String] the AWS access key ID + * @!attribute secretAccessKey + * @return [String] the AWS secret access key + * @!attribute sessionToken + * @return [String] an optional AWS session token + */ +AWS.Credentials = AWS.util.inherit({ + /** + * A credentials object can be created using positional arguments or an options + * hash. + * + * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null) + * Creates a Credentials object with a given set of credential information + * as positional arguments. + * @param accessKeyId [String] the AWS access key ID + * @param secretAccessKey [String] the AWS secret access key + * @param sessionToken [String] the optional AWS session token + * @example Create a credentials object with AWS credentials + * var creds = new AWS.Credentials('akid', 'secret', 'session'); + * @overload AWS.Credentials(options) + * Creates a Credentials object with a given set of credential information + * as an options hash. + * @option options accessKeyId [String] the AWS access key ID + * @option options secretAccessKey [String] the AWS secret access key + * @option options sessionToken [String] the optional AWS session token + * @example Create a credentials object with AWS credentials + * var creds = new AWS.Credentials({ + * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session' + * }); + */ + constructor: function Credentials() { + // hide secretAccessKey from being displayed with util.inspect + AWS.util.hideProperties(this, ['secretAccessKey']); + + this.expired = false; + this.expireTime = null; + if (arguments.length === 1 && typeof arguments[0] === 'object') { + var creds = arguments[0].credentials || arguments[0]; + this.accessKeyId = creds.accessKeyId; + this.secretAccessKey = creds.secretAccessKey; + this.sessionToken = creds.sessionToken; + } else { + this.accessKeyId = arguments[0]; + this.secretAccessKey = arguments[1]; + this.sessionToken = arguments[2]; + } + }, + + /** + * @return [Integer] the window size in seconds to attempt refreshing of + * credentials before the expireTime occurs. + */ + expiryWindow: 15, + + /** + * @return [Boolean] whether the credentials object should call {refresh} + * @note Subclasses should override this method to provide custom refresh + * logic. + */ + needsRefresh: function needsRefresh() { + var currentTime = AWS.util.date.getDate().getTime(); + var adjustedTime = new Date(currentTime + this.expiryWindow * 1000); + + if (this.expireTime && adjustedTime > this.expireTime) { + return true; + } else { + return this.expired || !this.accessKeyId || !this.secretAccessKey; + } + }, + + /** + * Gets the existing credentials, refreshing them if they are not yet loaded + * or have expired. Users should call this method before using {refresh}, + * as this will not attempt to reload credentials when they are already + * loaded into the object. + * + * @callback callback function(err) + * Called when the instance metadata service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + */ + get: function get(callback) { + var self = this; + if (this.needsRefresh()) { + this.refresh(function(err) { + if (!err) self.expired = false; // reset expired flag + if (callback) callback(err); + }); + } else if (callback) { + callback(); + } + }, + + /** + * Refreshes the credentials. Users should call {get} before attempting + * to forcibly refresh credentials. + * + * @callback callback function(err) + * Called when the instance metadata service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @note Subclasses should override this class to reset the + * {accessKeyId}, {secretAccessKey} and optional {sessionToken} + * on the credentials object and then call the callback with + * any error information. + * @see get + */ + refresh: function refresh(callback) { + this.expired = false; + callback(); + } +}); diff --git a/node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js b/node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js new file mode 100644 index 0000000..aa59b87 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js @@ -0,0 +1,340 @@ +var AWS = require('../core'); +var CognitoIdentity = require('../../clients/cognitoidentity'); +var STS = require('../../clients/sts'); + +/** + * Represents credentials retrieved from STS Web Identity Federation using + * the Amazon Cognito Identity service. + * + * By default this provider gets credentials using the + * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which + * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito + * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to + * obtain an `IdentityId`. If the identity or identity pool is not configured in + * the Amazon Cognito Console to use IAM roles with the appropriate permissions, + * then additionally a `RoleArn` is required containing the ARN of the IAM trust + * policy for the Amazon Cognito role that the user will log into. If a `RoleArn` + * is provided, then this provider gets credentials using the + * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an + * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}. + * + * In addition, if this credential provider is used to provide authenticated + * login, the `Logins` map may be set to the tokens provided by the respective + * identity providers. See {constructor} for an example on creating a credentials + * object with proper property values. + * + * ## Refreshing Credentials from Identity Service + * + * In addition to AWS credentials expiring after a given amount of time, the + * login token from the identity provider will also expire. Once this token + * expires, it will not be usable to refresh AWS credentials, and another + * token will be needed. The SDK does not manage refreshing of the token value, + * but this can be done through a "refresh token" supported by most identity + * providers. Consult the documentation for the identity provider for refreshing + * tokens. Once the refreshed token is acquired, you should make sure to update + * this new token in the credentials object's {params} property. The following + * code will update the WebIdentityToken, assuming you have retrieved an updated + * token from the identity provider: + * + * ```javascript + * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken; + * ``` + * + * Future calls to `credentials.refresh()` will now use the new token. + * + * @!attribute params + * @return [map] the map of params passed to + * {AWS.CognitoIdentity.getId}, + * {AWS.CognitoIdentity.getOpenIdToken}, and + * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the + * `params.WebIdentityToken` property. + * @!attribute data + * @return [map] the raw data response from the call to + * {AWS.CognitoIdentity.getCredentialsForIdentity}, or + * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get + * access to other properties from the response. + * @!attribute identityId + * @return [String] the Cognito ID returned by the last call to + * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual + * final resolved identity ID from Amazon Cognito. + */ +AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { + /** + * @api private + */ + localStorageKey: { + id: 'aws.cognito.identity-id.', + providers: 'aws.cognito.identity-providers.' + }, + + /** + * Creates a new credentials object. + * @example Creating a new credentials object + * AWS.config.credentials = new AWS.CognitoIdentityCredentials({ + * + * // either IdentityPoolId or IdentityId is required + * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below) + * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity + * // or AWS.CognitoIdentity.getOpenIdToken (linked below) + * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', + * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f' + * + * // optional, only necessary when the identity pool is not configured + * // to use IAM roles in the Amazon Cognito Console + * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below) + * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity', + * + * // optional tokens, used for authenticated login + * // See the Logins param for AWS.CognitoIdentity.getID (linked below) + * Logins: { + * 'graph.facebook.com': 'FBTOKEN', + * 'www.amazon.com': 'AMAZONTOKEN', + * 'accounts.google.com': 'GOOGLETOKEN', + * 'api.twitter.com': 'TWITTERTOKEN', + * 'www.digits.com': 'DIGITSTOKEN' + * }, + * + * // optional name, defaults to web-identity + * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below) + * RoleSessionName: 'web', + * + * // optional, only necessary when application runs in a browser + * // and multiple users are signed in at once, used for caching + * LoginId: 'example@gmail.com' + * + * }); + * @see AWS.CognitoIdentity.getId + * @see AWS.CognitoIdentity.getCredentialsForIdentity + * @see AWS.STS.assumeRoleWithWebIdentity + * @see AWS.CognitoIdentity.getOpenIdToken + */ + constructor: function CognitoIdentityCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + this.data = null; + this.identityId = null; + this.loadCachedId(); + }, + + /** + * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity}, + * or {AWS.STS.assumeRoleWithWebIdentity}. + * + * @callback callback function(err) + * Called when the STS service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + var self = this; + self.createClients(); + self.data = null; + self.identityId = null; + self.getId(function(err) { + if (!err) { + if (!self.params.RoleArn) { + self.getCredentialsForIdentity(callback); + } else { + self.getCredentialsFromSTS(callback); + } + } else { + self.clearIdOnNotAuthorized(err); + callback(err); + } + }); + }, + + /** + * Clears the cached Cognito ID associated with the currently configured + * identity pool ID. Use this to manually invalidate your cache if + * the identity pool ID was deleted. + */ + clearCachedId: function clearCache() { + this.identityId = null; + delete this.params.IdentityId; + + var poolId = this.params.IdentityPoolId; + var loginId = this.params.LoginId || ''; + delete this.storage[this.localStorageKey.id + poolId + loginId]; + delete this.storage[this.localStorageKey.providers + poolId + loginId]; + }, + + /** + * @api private + */ + clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) { + var self = this; + if (err.code == 'NotAuthorizedException') { + self.clearCachedId(); + } + }, + + /** + * Retrieves a Cognito ID, loading from cache if it was already retrieved + * on this device. + * + * @callback callback function(err, identityId) + * @param err [Error, null] an error object if the call failed or null if + * it succeeded. + * @param identityId [String, null] if successful, the callback will return + * the Cognito ID. + * @note If not loaded explicitly, the Cognito ID is loaded and stored in + * localStorage in the browser environment of a device. + * @api private + */ + getId: function getId(callback) { + var self = this; + if (typeof self.params.IdentityId === 'string') { + return callback(null, self.params.IdentityId); + } + + self.cognito.getId(function(err, data) { + if (!err && data.IdentityId) { + self.params.IdentityId = data.IdentityId; + callback(null, data.IdentityId); + } else { + callback(err); + } + }); + }, + + + /** + * @api private + */ + loadCredentials: function loadCredentials(data, credentials) { + if (!data || !credentials) return; + credentials.expired = false; + credentials.accessKeyId = data.Credentials.AccessKeyId; + credentials.secretAccessKey = data.Credentials.SecretKey; + credentials.sessionToken = data.Credentials.SessionToken; + credentials.expireTime = data.Credentials.Expiration; + }, + + /** + * @api private + */ + getCredentialsForIdentity: function getCredentialsForIdentity(callback) { + var self = this; + self.cognito.getCredentialsForIdentity(function(err, data) { + if (!err) { + self.cacheId(data); + self.data = data; + self.loadCredentials(self.data, self); + } else { + self.clearIdOnNotAuthorized(err); + } + callback(err); + }); + }, + + /** + * @api private + */ + getCredentialsFromSTS: function getCredentialsFromSTS(callback) { + var self = this; + self.cognito.getOpenIdToken(function(err, data) { + if (!err) { + self.cacheId(data); + self.params.WebIdentityToken = data.Token; + self.webIdentityCredentials.refresh(function(webErr) { + if (!webErr) { + self.data = self.webIdentityCredentials.data; + self.sts.credentialsFrom(self.data, self); + } + callback(webErr); + }); + } else { + self.clearIdOnNotAuthorized(err); + callback(err); + } + }); + }, + + /** + * @api private + */ + loadCachedId: function loadCachedId() { + var self = this; + + // in the browser we source default IdentityId from localStorage + if (AWS.util.isBrowser() && !self.params.IdentityId) { + var id = self.getStorage('id'); + if (id && self.params.Logins) { + var actualProviders = Object.keys(self.params.Logins); + var cachedProviders = + (self.getStorage('providers') || '').split(','); + + // only load ID if at least one provider used this ID before + var intersect = cachedProviders.filter(function(n) { + return actualProviders.indexOf(n) !== -1; + }); + if (intersect.length !== 0) { + self.params.IdentityId = id; + } + } else if (id) { + self.params.IdentityId = id; + } + } + }, + + /** + * @api private + */ + createClients: function() { + this.webIdentityCredentials = this.webIdentityCredentials || + new AWS.WebIdentityCredentials(this.params); + this.cognito = this.cognito || + new CognitoIdentity({params: this.params}); + this.sts = this.sts || new STS(); + }, + + /** + * @api private + */ + cacheId: function cacheId(data) { + this.identityId = data.IdentityId; + this.params.IdentityId = this.identityId; + + // cache this IdentityId in browser localStorage if possible + if (AWS.util.isBrowser()) { + this.setStorage('id', data.IdentityId); + + if (this.params.Logins) { + this.setStorage('providers', Object.keys(this.params.Logins).join(',')); + } + } + }, + + /** + * @api private + */ + getStorage: function getStorage(key) { + return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')]; + }, + + /** + * @api private + */ + setStorage: function setStorage(key, val) { + try { + this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val; + } catch (_) {} + }, + + /** + * @api private + */ + storage: (function() { + try { + return AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ? + window.localStorage : {}; + } catch (_) { + return {}; + } + })() +}); diff --git a/node_modules/aws-sdk/lib/credentials/credential_provider_chain.js b/node_modules/aws-sdk/lib/credentials/credential_provider_chain.js new file mode 100644 index 0000000..79bed3d --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/credential_provider_chain.js @@ -0,0 +1,135 @@ +var AWS = require('../core'); + +/** + * Creates a credential provider chain that searches for AWS credentials + * in a list of credential providers specified by the {providers} property. + * + * By default, the chain will use the {defaultProviders} to resolve credentials. + * These providers will look in the environment using the + * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes. + * + * ## Setting Providers + * + * Each provider in the {providers} list should be a function that returns + * a {AWS.Credentials} object, or a hardcoded credentials object. The function + * form allows for delayed execution of the credential construction. + * + * ## Resolving Credentials from a Chain + * + * Call {resolve} to return the first valid credential object that can be + * loaded by the provider chain. + * + * For example, to resolve a chain with a custom provider that checks a file + * on disk after the set of {defaultProviders}: + * + * ```javascript + * var diskProvider = new AWS.FileSystemCredentials('./creds.json'); + * var chain = new AWS.CredentialProviderChain(); + * chain.providers.push(diskProvider); + * chain.resolve(); + * ``` + * + * The above code will return the `diskProvider` object if the + * file contains credentials and the `defaultProviders` do not contain + * any credential settings. + * + * @!attribute providers + * @return [Array] + * a list of credentials objects or functions that return credentials + * objects. If the provider is a function, the function will be + * executed lazily when the provider needs to be checked for valid + * credentials. By default, this object will be set to the + * {defaultProviders}. + * @see defaultProviders + */ +AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, { + + /** + * Creates a new CredentialProviderChain with a default set of providers + * specified by {defaultProviders}. + */ + constructor: function CredentialProviderChain(providers) { + if (providers) { + this.providers = providers; + } else { + this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0); + } + }, + + /** + * Resolves the provider chain by searching for the first set of + * credentials in {providers}. + * + * @callback callback function(err, credentials) + * Called when the provider resolves the chain to a credentials object + * or null if no credentials can be found. + * + * @param err [Error] the error object returned if no credentials are + * found. + * @param credentials [AWS.Credentials] the credentials object resolved + * by the provider chain. + * @return [AWS.CredentialProviderChain] the provider, for chaining. + */ + resolve: function resolve(callback) { + if (this.providers.length === 0) { + callback(new Error('No providers')); + return this; + } + + var index = 0; + var providers = this.providers.slice(0); + + function resolveNext(err, creds) { + if ((!err && creds) || index === providers.length) { + callback(err, creds); + return; + } + + var provider = providers[index++]; + if (typeof provider === 'function') { + creds = provider.call(); + } else { + creds = provider; + } + + if (creds.get) { + creds.get(function(getErr) { + resolveNext(getErr, getErr ? null : creds); + }); + } else { + resolveNext(null, creds); + } + } + + resolveNext(); + return this; + } + +}); + +/** + * The default set of providers used by a vanilla CredentialProviderChain. + * + * In the browser: + * + * ```javascript + * AWS.CredentialProviderChain.defaultProviders = [] + * ``` + * + * In Node.js: + * + * ```javascript + * AWS.CredentialProviderChain.defaultProviders = [ + * function () { return new AWS.EnvironmentCredentials('AWS'); }, + * function () { return new AWS.EnvironmentCredentials('AMAZON'); }, + * function () { return new AWS.SharedIniFileCredentials(); }, + * function () { + * // if AWS_CONTAINER_CREDENTIALS_RELATIVE_URI is set + * return new AWS.ECSCredentials(); + * // else + * return new AWS.EC2MetadataCredentials(); + * } + * ] + * ``` + */ +AWS.CredentialProviderChain.defaultProviders = []; diff --git a/node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js b/node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js new file mode 100644 index 0000000..42e1f7e --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js @@ -0,0 +1,81 @@ +var AWS = require('../core'); +require('../metadata_service'); + +/** + * Represents credentials received from the metadata service on an EC2 instance. + * + * By default, this class will connect to the metadata service using + * {AWS.MetadataService} and attempt to load any available credentials. If it + * can connect, and credentials are available, these will be used with zero + * configuration. + * + * This credentials class will by default timeout after 1 second of inactivity + * and retry 3 times. + * If your requests to the EC2 metadata service are timing out, you can increase + * these values by configuring them directly: + * + * ```javascript + * AWS.config.credentials = new AWS.EC2MetadataCredentials({ + * httpOptions: { timeout: 5000 }, // 5 second timeout + * maxRetries: 10, // retry 10 times + * retryDelayOptions: { base: 200 } // see AWS.Config for information + * }); + * ``` + * + * @see AWS.Config.retryDelayOptions + * + * @!macro nobrowser + */ +AWS.EC2MetadataCredentials = AWS.util.inherit(AWS.Credentials, { + constructor: function EC2MetadataCredentials(options) { + AWS.Credentials.call(this); + + options = options ? AWS.util.copy(options) : {}; + options = AWS.util.merge( + {maxRetries: this.defaultMaxRetries}, options); + if (!options.httpOptions) options.httpOptions = {}; + options.httpOptions = AWS.util.merge( + {timeout: this.defaultTimeout}, options.httpOptions); + + this.metadataService = new AWS.MetadataService(options); + this.metadata = {}; + }, + + /** + * @api private + */ + defaultTimeout: 1000, + + /** + * @api private + */ + defaultMaxRetries: 3, + + /** + * Loads the credentials from the instance metadata service + * + * @callback callback function(err) + * Called when the instance metadata service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + var self = this; + if (!callback) callback = function(err) { if (err) throw err; }; + + self.metadataService.loadCredentials(function (err, creds) { + if (!err) { + self.expired = false; + self.metadata = creds; + self.accessKeyId = creds.AccessKeyId; + self.secretAccessKey = creds.SecretAccessKey; + self.sessionToken = creds.Token; + self.expireTime = new Date(creds.Expiration); + } + callback(err); + }); + } +}); diff --git a/node_modules/aws-sdk/lib/credentials/ecs_credentials.js b/node_modules/aws-sdk/lib/credentials/ecs_credentials.js new file mode 100644 index 0000000..7eab957 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/ecs_credentials.js @@ -0,0 +1,164 @@ +var AWS = require('../core'); + +/** + * Represents credentials received from relative URI specified in the ECS container. + * + * This class will request refreshable credentials from the relative URI + * specified by the AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variable + * in the container. If valid credentials are returned in the response, these + * will be used with zero configuration. + * + * This credentials class will by default timeout after 1 second of inactivity + * and retry 3 times. + * If your requests to the relative URI are timing out, you can increase + * the value by configuring them directly: + * + * ```javascript + * AWS.config.credentials = new AWS.ECSCredentials({ + * httpOptions: { timeout: 5000 }, // 5 second timeout + * maxRetries: 10, // retry 10 times + * retryDelayOptions: { base: 200 } // see AWS.Config for information + * }); + * ``` + * + * @see AWS.Config.retryDelayOptions + * + * @!macro nobrowser + */ +AWS.ECSCredentials = AWS.util.inherit(AWS.Credentials, { + constructor: function ECSCredentials(options) { + AWS.Credentials.call(this); + options = options ? AWS.util.copy(options) : {}; + if (!options.httpOptions) options.httpOptions = {}; + options.httpOptions = AWS.util.merge( + this.httpOptions, options.httpOptions); + AWS.util.update(this, options); + }, + + /** + * @api private + */ + httpOptions: { timeout: 1000 }, + + /** + * @api private + */ + host: '169.254.170.2', + + /** + * @api private + */ + maxRetries: 3, + + /** + * Sets the name of the ECS environment variable to check for relative URI + * If changed, please change the name in the documentation for defaultProvider + * in credential_provider_chain.js and in all tests in test/credentials.spec.coffee + * + * @api private + */ + environmentVar: 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI', + + /** + * @api private + */ + getECSRelativeUri: function getECSRelativeUri() { + if (process && process.env) return process.env[this.environmentVar]; + }, + + /** + * @api private + */ + credsFormatIsValid: function credsFormatIsValid(credData) { + return (!!credData.AccessKeyId && !!credData.SecretAccessKey && + !!credData.Token && !!credData.Expiration); + }, + + /** + * @api private + */ + request: function request(path, callback) { + path = path || '/'; + var httpRequest = new AWS.HttpRequest('http://' + this.host + path); + httpRequest.method = 'GET'; + httpRequest.headers.Accept = 'application/json'; + AWS.util.handleRequestWithRetries(httpRequest, this, callback); + }, + + /** + * @api private + */ + refreshQueue: [], + + /** + * Loads the credentials from the relative URI specified by container + * + * @callback callback function(err) + * Called when the request to the relative URI responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, `sessionToken`, and `expireTime` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + var self = this; + var refreshQueue = self.refreshQueue; + if (!callback) callback = function(err) { if (err) throw err; }; + refreshQueue.push({ + provider: self, + errCallback: callback + }); + if (refreshQueue.length > 1) { return; } + + function callbacks(err, creds) { + var call, cb; + while ((call = refreshQueue.shift()) !== undefined) { + cb = call.errCallback; + if (!err) AWS.util.update(call.provider, creds); + cb(err); + } + } + + if (process === undefined) { + callbacks(AWS.util.error( + new Error('No process info available'), + { code: 'ECSCredentialsProviderFailure' } + )); + return; + } + var relativeUri = this.getECSRelativeUri(); + if (relativeUri === undefined) { + callbacks(AWS.util.error( + new Error('Variable ' + this.environmentVar + ' not set.'), + { code: 'ECSCredentialsProviderFailure' } + )); + return; + } + + this.request(relativeUri, function(err, data) { + if (!err) { + try { + data = JSON.parse(data); + if (self.credsFormatIsValid(data)) { + var creds = { + expired: false, + accessKeyId: data.AccessKeyId, + secretAccessKey: data.SecretAccessKey, + sessionToken: data.Token, + expireTime: new Date(data.Expiration) + }; + } else { + throw AWS.util.error( + new Error('Response data is not in valid format'), + { code: 'ECSCredentialsProviderFailure' } + ); + } + } catch (dataError) { + err = dataError; + } + } + callbacks(err, creds); + }); + } +}); diff --git a/node_modules/aws-sdk/lib/credentials/environment_credentials.js b/node_modules/aws-sdk/lib/credentials/environment_credentials.js new file mode 100644 index 0000000..b406518 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/environment_credentials.js @@ -0,0 +1,91 @@ +var AWS = require('../core'); + +/** + * Represents credentials from the environment. + * + * By default, this class will look for the matching environment variables + * prefixed by a given {envPrefix}. The un-prefixed environment variable names + * for each credential value is listed below: + * + * ```javascript + * accessKeyId: ACCESS_KEY_ID + * secretAccessKey: SECRET_ACCESS_KEY + * sessionToken: SESSION_TOKEN + * ``` + * + * With the default prefix of 'AWS', the environment variables would be: + * + * AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN + * + * @!attribute envPrefix + * @readonly + * @return [String] the prefix for the environment variable names excluding + * the separating underscore ('_'). + */ +AWS.EnvironmentCredentials = AWS.util.inherit(AWS.Credentials, { + + /** + * Creates a new EnvironmentCredentials class with a given variable + * prefix {envPrefix}. For example, to load credentials using the 'AWS' + * prefix: + * + * ```javascript + * var creds = new AWS.EnvironmentCredentials('AWS'); + * creds.accessKeyId == 'AKID' // from AWS_ACCESS_KEY_ID env var + * ``` + * + * @param envPrefix [String] the prefix to use (e.g., 'AWS') for environment + * variables. Do not include the separating underscore. + */ + constructor: function EnvironmentCredentials(envPrefix) { + AWS.Credentials.call(this); + this.envPrefix = envPrefix; + this.get(function() {}); + }, + + /** + * Loads credentials from the environment using the prefixed + * environment variables. + * + * @callback callback function(err) + * Called after the (prefixed) ACCESS_KEY_ID, SECRET_ACCESS_KEY, and + * SESSION_TOKEN environment variables are read. When this callback is + * called with no error, it means that the credentials information has + * been loaded into the object (as the `accessKeyId`, `secretAccessKey`, + * and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + if (!callback) callback = function(err) { if (err) throw err; }; + + if (!process || !process.env) { + callback(AWS.util.error( + new Error('No process info or environment variables available'), + { code: 'EnvironmentCredentialsProviderFailure' } + )); + return; + } + + var keys = ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY', 'SESSION_TOKEN']; + var values = []; + + for (var i = 0; i < keys.length; i++) { + var prefix = ''; + if (this.envPrefix) prefix = this.envPrefix + '_'; + values[i] = process.env[prefix + keys[i]]; + if (!values[i] && keys[i] !== 'SESSION_TOKEN') { + callback(AWS.util.error( + new Error('Variable ' + prefix + keys[i] + ' not set.'), + { code: 'EnvironmentCredentialsProviderFailure' } + )); + return; + } + } + + this.expired = false; + AWS.Credentials.apply(this, values); + callback(); + } + +}); diff --git a/node_modules/aws-sdk/lib/credentials/file_system_credentials.js b/node_modules/aws-sdk/lib/credentials/file_system_credentials.js new file mode 100644 index 0000000..f6d6fc1 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/file_system_credentials.js @@ -0,0 +1,68 @@ +var AWS = require('../core'); + +/** + * Represents credentials from a JSON file on disk. + * If the credentials expire, the SDK can {refresh} the credentials + * from the file. + * + * The format of the file should be similar to the options passed to + * {AWS.Config}: + * + * ```javascript + * {accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'optional'} + * ``` + * + * @example Loading credentials from disk + * var creds = new AWS.FileSystemCredentials('./configuration.json'); + * creds.accessKeyId == 'AKID' + * + * @!attribute filename + * @readonly + * @return [String] the path to the JSON file on disk containing the + * credentials. + * @!macro nobrowser + */ +AWS.FileSystemCredentials = AWS.util.inherit(AWS.Credentials, { + + /** + * @overload AWS.FileSystemCredentials(filename) + * Creates a new FileSystemCredentials object from a filename + * + * @param filename [String] the path on disk to the JSON file to load. + */ + constructor: function FileSystemCredentials(filename) { + AWS.Credentials.call(this); + this.filename = filename; + this.get(function() {}); + }, + + /** + * Loads the credentials from the {filename} on disk. + * + * @callback callback function(err) + * Called after the JSON file on disk is read and parsed. When this callback + * is called with no error, it means that the credentials information + * has been loaded into the object (as the `accessKeyId`, `secretAccessKey`, + * and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + if (!callback) callback = function(err) { if (err) throw err; }; + try { + var creds = JSON.parse(AWS.util.readFileSync(this.filename)); + AWS.Credentials.call(this, creds); + if (!this.accessKeyId || !this.secretAccessKey) { + throw AWS.util.error( + new Error('Credentials not set in ' + this.filename), + { code: 'FileSystemCredentialsProviderFailure' } + ); + } + this.expired = false; + callback(); + } catch (err) { + callback(err); + } + } + +}); diff --git a/node_modules/aws-sdk/lib/credentials/saml_credentials.js b/node_modules/aws-sdk/lib/credentials/saml_credentials.js new file mode 100644 index 0000000..0034384 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/saml_credentials.js @@ -0,0 +1,89 @@ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + +/** + * Represents credentials retrieved from STS SAML support. + * + * By default this provider gets credentials using the + * {AWS.STS.assumeRoleWithSAML} service operation. This operation + * requires a `RoleArn` containing the ARN of the IAM trust policy for the + * application for which credentials will be given, as well as a `PrincipalArn` + * representing the ARN for the SAML identity provider. In addition, the + * `SAMLAssertion` must be set to the token provided by the identity + * provider. See {constructor} for an example on creating a credentials + * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values. + * + * ## Refreshing Credentials from Identity Service + * + * In addition to AWS credentials expiring after a given amount of time, the + * login token from the identity provider will also expire. Once this token + * expires, it will not be usable to refresh AWS credentials, and another + * token will be needed. The SDK does not manage refreshing of the token value, + * but this can be done through a "refresh token" supported by most identity + * providers. Consult the documentation for the identity provider for refreshing + * tokens. Once the refreshed token is acquired, you should make sure to update + * this new token in the credentials object's {params} property. The following + * code will update the SAMLAssertion, assuming you have retrieved an updated + * token from the identity provider: + * + * ```javascript + * AWS.config.credentials.params.SAMLAssertion = updatedToken; + * ``` + * + * Future calls to `credentials.refresh()` will now use the new token. + * + * @!attribute params + * @return [map] the map of params passed to + * {AWS.STS.assumeRoleWithSAML}. To update the token, set the + * `params.SAMLAssertion` property. + */ +AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { + /** + * Creates a new credentials object. + * @param (see AWS.STS.assumeRoleWithSAML) + * @example Creating a new credentials object + * AWS.config.credentials = new AWS.SAMLCredentials({ + * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole', + * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal', + * SAMLAssertion: 'base64-token', // base64-encoded token from IdP + * }); + * @see AWS.STS.assumeRoleWithSAML + */ + constructor: function SAMLCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + }, + + /** + * Refreshes credentials using {AWS.STS.assumeRoleWithSAML} + * + * @callback callback function(err) + * Called when the STS service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.assumeRoleWithSAML(function (err, data) { + if (!err) { + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + /** + * @api private + */ + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); diff --git a/node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js b/node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js new file mode 100644 index 0000000..4e958fb --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js @@ -0,0 +1,204 @@ +var AWS = require('../core'); +var path = require('path'); +var STS = require('../../clients/sts'); + +/** + * Represents credentials loaded from shared credentials file + * (defaulting to ~/.aws/credentials). + * + * ## Using the shared credentials file + * + * This provider is checked by default in the Node.js environment. To use the + * credentials file provider, simply add your access and secret keys to the + * ~/.aws/credentials file in the following format: + * + * [default] + * aws_access_key_id = AKID... + * aws_secret_access_key = YOUR_SECRET_KEY + * + * ## Using custom profiles + * + * The SDK supports loading credentials for separate profiles. This can be done + * in two ways: + * + * 1. Set the `AWS_PROFILE` environment variable in your process prior to + * loading the SDK. + * 2. Directly load the AWS.SharedIniFileCredentials provider: + * + * ```javascript + * var creds = new AWS.SharedIniFileCredentials({profile: 'myprofile'}); + * AWS.config.credentials = creds; + * ``` + * + * @!macro nobrowser + */ +AWS.SharedIniFileCredentials = AWS.util.inherit(AWS.Credentials, { + /** + * Creates a new SharedIniFileCredentials object. + * + * @param options [map] a set of options + * @option options profile [String] (AWS_PROFILE env var or 'default') + * the name of the profile to load. + * @option options filename [String] ('~/.aws/credentials') the filename + * to use when loading credentials. + * @option options disableAssumeRole [Boolean] (false) True to disable + * support for profiles that assume an IAM role. If true, and an assume + * role profile is selected, an error is raised. + */ + constructor: function SharedIniFileCredentials(options) { + AWS.Credentials.call(this); + + options = options || {}; + + this.filename = options.filename; + this.profile = options.profile || process.env.AWS_PROFILE || 'default'; + this.disableAssumeRole = !!options.disableAssumeRole; + this.get(function() {}); + }, + + /** + * Loads the credentials from the shared credentials file + * + * @callback callback function(err) + * Called after the shared INI file on disk is read and parsed. When this + * callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + if (!callback) callback = function(err) { if (err) throw err; }; + try { + if (!this.filename) this.loadDefaultFilename(); + var creds = AWS.util.ini.parse(AWS.util.readFileSync(this.filename)); + var profile = creds[this.profile]; + + if (typeof profile !== 'object') { + throw AWS.util.error( + new Error('Profile ' + this.profile + ' not found in ' + this.filename), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + + if (profile['role_arn']) { + this.loadRoleProfile(creds, profile, callback); + return; + } + + this.accessKeyId = profile['aws_access_key_id']; + this.secretAccessKey = profile['aws_secret_access_key']; + this.sessionToken = profile['aws_session_token']; + + if (!this.accessKeyId || !this.secretAccessKey) { + throw AWS.util.error( + new Error('Credentials not set in ' + this.filename + + ' using profile ' + this.profile), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + this.expired = false; + callback(); + } catch (err) { + callback(err); + } + }, + + /** + * @api private + */ + loadRoleProfile: function loadRoleProfile(creds, roleProfile, callback) { + if (this.disableAssumeRole) { + throw AWS.util.error( + new Error('Role assumption profiles are disabled. ' + + 'Failed to load profile ' + this.profile + ' from ' + + this.filename), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + + var self = this; + var roleArn = roleProfile['role_arn']; + var roleSessionName = roleProfile['role_session_name']; + var externalId = roleProfile['external_id']; + var sourceProfileName = roleProfile['source_profile']; + + if (!sourceProfileName) { + throw AWS.util.error( + new Error('source_profile is not set in ' + this.filename + + ' using profile ' + this.profile), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + + var sourceProfile = creds[sourceProfileName]; + + if (typeof sourceProfile !== 'object') { + throw AWS.util.error( + new Error('source_profile ' + sourceProfileName + ' set in ' + + this.filename + ' using profile ' + this.profile + + ' does not exist'), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + + var sourceCredentials = { + accessKeyId: sourceProfile['aws_access_key_id'], + secretAccessKey: sourceProfile['aws_secret_access_key'], + sessionToken: sourceProfile['aws_session_token'] + }; + + if (!sourceCredentials.accessKeyId || !sourceCredentials.secretAccessKey) { + throw AWS.util.error( + new Error('Credentials not set in source_profile ' + + sourceProfileName + ' set in ' + this.filename + + ' using profile ' + this.profile), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + + var sts = new STS({ + credentials: new AWS.Credentials(sourceCredentials) + }); + + var roleParams = { + RoleArn: roleArn, + RoleSessionName: roleSessionName || 'aws-sdk-js-' + Date.now() + }; + + if (externalId) { + roleParams.ExternalId = externalId; + } + + sts.assumeRole(roleParams, function (err, data) { + if (err) { + callback(err); + return; + } + + self.accessKeyId = data.Credentials.AccessKeyId; + self.secretAccessKey = data.Credentials.SecretAccessKey; + self.sessionToken = data.Credentials.SessionToken; + self.expireTime = data.Credentials.Expiration; + callback(); + }); + }, + + /** + * @api private + */ + loadDefaultFilename: function loadDefaultFilename() { + var env = process.env; + var home = env.HOME || + env.USERPROFILE || + (env.HOMEPATH ? ((env.HOMEDRIVE || 'C:/') + env.HOMEPATH) : null); + if (!home) { + throw AWS.util.error( + new Error('Cannot load credentials, HOME path not set'), + { code: 'SharedIniFileCredentialsProviderFailure' } + ); + } + + this.filename = path.join(home, '.aws', 'credentials'); + } +}); diff --git a/node_modules/aws-sdk/lib/credentials/temporary_credentials.js b/node_modules/aws-sdk/lib/credentials/temporary_credentials.js new file mode 100644 index 0000000..a3e78a1 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/temporary_credentials.js @@ -0,0 +1,112 @@ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + +/** + * Represents temporary credentials retrieved from {AWS.STS}. Without any + * extra parameters, credentials will be fetched from the + * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the + * {AWS.STS.assumeRole} operation will be used to fetch credentials for the + * role instead. + * + * To setup temporary credentials, configure a set of master credentials + * using the standard credentials providers (environment, EC2 instance metadata, + * or from the filesystem), then set the global credentials to a new + * temporary credentials object: + * + * ```javascript + * // Note that environment credentials are loaded by default, + * // the following line is shown for clarity: + * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS'); + * + * // Now set temporary credentials seeded from the master credentials + * AWS.config.credentials = new AWS.TemporaryCredentials(); + * + * // subsequent requests will now use temporary credentials from AWS STS. + * new AWS.S3().listBucket(function(err, data) { ... }); + * ``` + * + * @!attribute masterCredentials + * @return [AWS.Credentials] the master (non-temporary) credentials used to + * get and refresh temporary credentials from AWS STS. + * @note (see constructor) + */ +AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { + /** + * Creates a new temporary credentials object. + * + * @note In order to create temporary credentials, you first need to have + * "master" credentials configured in {AWS.Config.credentials}. These + * master credentials are necessary to retrieve the temporary credentials, + * as well as refresh the credentials when they expire. + * @param params [map] a map of options that are passed to the + * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations. + * If a `RoleArn` parameter is passed in, credentials will be based on the + * IAM role. + * @example Creating a new credentials object for generic temporary credentials + * AWS.config.credentials = new AWS.TemporaryCredentials(); + * @example Creating a new credentials object for an IAM role + * AWS.config.credentials = new AWS.TemporaryCredentials({ + * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials', + * }); + * @see AWS.STS.assumeRole + * @see AWS.STS.getSessionToken + */ + constructor: function TemporaryCredentials(params) { + AWS.Credentials.call(this); + this.loadMasterCredentials(); + this.expired = true; + + this.params = params || {}; + if (this.params.RoleArn) { + this.params.RoleSessionName = + this.params.RoleSessionName || 'temporary-credentials'; + } + }, + + /** + * Refreshes credentials using {AWS.STS.assumeRole} or + * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed + * to the credentials {constructor}. + * + * @callback callback function(err) + * Called when the STS service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.config.credentials = self.masterCredentials; + var operation = self.params.RoleArn ? + self.service.assumeRole : self.service.getSessionToken; + operation.call(self.service, function (err, data) { + if (!err) { + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + /** + * @api private + */ + loadMasterCredentials: function loadMasterCredentials() { + this.masterCredentials = AWS.config.credentials; + while (this.masterCredentials.masterCredentials) { + this.masterCredentials = this.masterCredentials.masterCredentials; + } + }, + + /** + * @api private + */ + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); diff --git a/node_modules/aws-sdk/lib/credentials/web_identity_credentials.js b/node_modules/aws-sdk/lib/credentials/web_identity_credentials.js new file mode 100644 index 0000000..e4f6907 --- /dev/null +++ b/node_modules/aws-sdk/lib/credentials/web_identity_credentials.js @@ -0,0 +1,96 @@ +var AWS = require('../core'); +var STS = require('../../clients/sts'); + +/** + * Represents credentials retrieved from STS Web Identity Federation support. + * + * By default this provider gets credentials using the + * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation + * requires a `RoleArn` containing the ARN of the IAM trust policy for the + * application for which credentials will be given. In addition, the + * `WebIdentityToken` must be set to the token provided by the identity + * provider. See {constructor} for an example on creating a credentials + * object with proper `RoleArn` and `WebIdentityToken` values. + * + * ## Refreshing Credentials from Identity Service + * + * In addition to AWS credentials expiring after a given amount of time, the + * login token from the identity provider will also expire. Once this token + * expires, it will not be usable to refresh AWS credentials, and another + * token will be needed. The SDK does not manage refreshing of the token value, + * but this can be done through a "refresh token" supported by most identity + * providers. Consult the documentation for the identity provider for refreshing + * tokens. Once the refreshed token is acquired, you should make sure to update + * this new token in the credentials object's {params} property. The following + * code will update the WebIdentityToken, assuming you have retrieved an updated + * token from the identity provider: + * + * ```javascript + * AWS.config.credentials.params.WebIdentityToken = updatedToken; + * ``` + * + * Future calls to `credentials.refresh()` will now use the new token. + * + * @!attribute params + * @return [map] the map of params passed to + * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the + * `params.WebIdentityToken` property. + * @!attribute data + * @return [map] the raw data response from the call to + * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get + * access to other properties from the response. + */ +AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { + /** + * Creates a new credentials object. + * @param (see AWS.STS.assumeRoleWithWebIdentity) + * @example Creating a new credentials object + * AWS.config.credentials = new AWS.WebIdentityCredentials({ + * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity', + * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service + * RoleSessionName: 'web' // optional name, defaults to web-identity + * }); + * @see AWS.STS.assumeRoleWithWebIdentity + */ + constructor: function WebIdentityCredentials(params) { + AWS.Credentials.call(this); + this.expired = true; + this.params = params; + this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity'; + this.data = null; + }, + + /** + * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity} + * + * @callback callback function(err) + * Called when the STS service responds (or fails). When + * this callback is called with no error, it means that the credentials + * information has been loaded into the object (as the `accessKeyId`, + * `secretAccessKey`, and `sessionToken` properties). + * @param err [Error] if an error occurred, this value will be filled + * @see get + */ + refresh: function refresh(callback) { + var self = this; + self.createClients(); + if (!callback) callback = function(err) { if (err) throw err; }; + + self.service.assumeRoleWithWebIdentity(function (err, data) { + self.data = null; + if (!err) { + self.data = data; + self.service.credentialsFrom(data, self); + } + callback(err); + }); + }, + + /** + * @api private + */ + createClients: function() { + this.service = this.service || new STS({params: this.params}); + } + +}); diff --git a/node_modules/aws-sdk/lib/dynamodb/converter.js b/node_modules/aws-sdk/lib/dynamodb/converter.js new file mode 100644 index 0000000..a5e35e3 --- /dev/null +++ b/node_modules/aws-sdk/lib/dynamodb/converter.js @@ -0,0 +1,96 @@ +var util = require('../core').util; +var typeOf = require('./types').typeOf; +var DynamoDBSet = require('./set'); + +function convertInput(data) { + if (typeOf(data) === 'Object') { + var map = {M: {}}; + for (var key in data) { + map['M'][key] = convertInput(data[key]); + } + return map; + } else if (typeOf(data) === 'Array') { + var list = {L: []}; + for (var i = 0; i < data.length; i++) { + list['L'].push(convertInput(data[i])); + } + return list; + } else if (typeOf(data) === 'Set') { + return formatSet(data); + } else if (typeOf(data) === 'String') { + return { 'S': data }; + } else if (typeOf(data) === 'Number') { + return { 'N': data.toString() }; + } else if (typeOf(data) === 'Binary') { + return { 'B': data }; + } else if (typeOf(data) === 'Boolean') { + return {'BOOL': data}; + } else if (typeOf(data) === 'null') { + return {'NULL': true}; + } +} + +function formatSet(data) { + var map = {}; + switch (data.type) { + case 'String': map['SS'] = data.values; break; + case 'Binary': map['BS'] = data.values; break; + case 'Number': map['NS'] = data.values.map(function (value) { + return value.toString(); + }); + } + return map; +} + +function convertOutput(data) { + var list, map, i; + for (var type in data) { + var values = data[type]; + if (type === 'M') { + map = {}; + for (var key in values) { + map[key] = convertOutput(values[key]); + } + return map; + } else if (type === 'L') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(convertOutput(values[i])); + } + return list; + } else if (type === 'SS') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(values[i] + ''); + } + return new DynamoDBSet(list); + } else if (type === 'NS') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(Number(values[i])); + } + return new DynamoDBSet(list); + } else if (type === 'BS') { + list = []; + for (i = 0; i < values.length; i++) { + list.push(new util.Buffer(values[i])); + } + return new DynamoDBSet(list); + } else if (type === 'S') { + return values + ''; + } else if (type === 'N') { + return Number(values); + } else if (type === 'B') { + return new util.Buffer(values); + } else if (type === 'BOOL') { + return (values === 'true' || values === 'TRUE' || values === true); + } else if (type === 'NULL') { + return null; + } + } +} + +module.exports = { + input: convertInput, + output: convertOutput +}; diff --git a/node_modules/aws-sdk/lib/dynamodb/document_client.js b/node_modules/aws-sdk/lib/dynamodb/document_client.js new file mode 100644 index 0000000..f3f9756 --- /dev/null +++ b/node_modules/aws-sdk/lib/dynamodb/document_client.js @@ -0,0 +1,519 @@ +var AWS = require('../core'); +var Translator = require('./translator'); +var DynamoDBSet = require('./set'); + +/** + * The document client simplifies working with items in Amazon DynamoDB + * by abstracting away the notion of attribute values. This abstraction + * annotates native JavaScript types supplied as input parameters, as well + * as converts annotated response data to native JavaScript types. + * + * ## Marshalling Input and Unmarshalling Response Data + * + * The document client affords developers the use of native JavaScript types + * instead of `AttributeValue`s to simplify the JavaScript development + * experience with Amazon DynamoDB. JavaScript objects passed in as parameters + * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB. + * Responses from DynamoDB are unmarshalled into plain JavaScript objects + * by the `DocumentClient`. The `DocumentClient`, does not accept + * `AttributeValue`s in favor of native JavaScript types. + * + * | JavaScript Type | DynamoDB AttributeValue | + * |:----------------------------------------------------------------------:|-------------------------| + * | String | S | + * | Number | N | + * | Boolean | BOOL | + * | null | NULL | + * | Array | L | + * | Object | M | + * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B | + * + * ## Support for Sets + * + * The `DocumentClient` offers a convenient way to create sets from + * JavaScript Arrays. The type of set is inferred from the first element + * in the array. DynamoDB supports string, number, and binary sets. To + * learn more about supported types see the + * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html) + * For more information see {AWS.DynamoDB.DocumentClient.createSet} + * + */ +AWS.DynamoDB.DocumentClient = AWS.util.inherit({ + + /** + * @api private + */ + operations: { + batchGetItem: 'batchGet', + batchWriteItem: 'batchWrite', + putItem: 'put', + getItem: 'get', + deleteItem: 'delete', + updateItem: 'update', + scan: 'scan', + query: 'query' + }, + + /** + * Creates a DynamoDB document client with a set of configuration options. + * + * @option options params [map] An optional map of parameters to bind to every + * request sent by this service object. + * @option options service [AWS.DynamoDB] An optional pre-configured instance + * of the AWS.DynamoDB service object to use for requests. The object may + * bound parameters used by the document client. + * @see AWS.DynamoDB.constructor + * + */ + constructor: function DocumentClient(options) { + var self = this; + self.options = options || {}; + self.configure(self.options); + }, + + /** + * @api private + */ + configure: function configure(options) { + var self = this; + self.service = options.service; + self.bindServiceObject(options); + self.attrValue = + self.service.api.operations.putItem.input.members.Item.value.shape; + }, + + /** + * @api private + */ + bindServiceObject: function bindServiceObject(options) { + var self = this; + options = options || {}; + + if (!self.service) { + self.service = new AWS.DynamoDB(options); + } else { + var config = AWS.util.copy(self.service.config); + self.service = new self.service.constructor.__super__(config); + self.service.config.params = + AWS.util.merge(self.service.config.params || {}, options.params); + } + }, + + /** + * Returns the attributes of one or more items from one or more tables + * by delegating to `AWS.DynamoDB.batchGetItem()`. + * + * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.batchGetItem + * @example Get items from multiple tables + * var params = { + * RequestItems: { + * 'Table-1': { + * Keys: [ + * { + * HashKey: 'haskey', + * NumberRangeKey: 1 + * } + * ] + * }, + * 'Table-2': { + * Keys: [ + * { foo: 'bar' }, + * ] + * } + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.batchGet(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + batchGet: function(params, callback) { + var self = this; + var request = self.service.batchGetItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Puts or deletes multiple items in one or more tables by delegating + * to `AWS.DynamoDB.batchWriteItem()`. + * + * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.batchWriteItem + * @example Write to and delete from a table + * var params = { + * RequestItems: { + * 'Table-1': [ + * { + * DeleteRequest: { + * Key: { HashKey: 'someKey' } + * } + * }, + * { + * PutRequest: { + * Item: { + * HashKey: 'anotherKey', + * NumAttribute: 1, + * BoolAttribute: true, + * ListAttribute: [1, 'two', false], + * MapAttribute: { foo: 'bar' } + * } + * } + * } + * ] + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.batchWrite(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + batchWrite: function(params, callback) { + var self = this; + var request = self.service.batchWriteItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Deletes a single item in a table by primary key by delegating to + * `AWS.DynamoDB.deleteItem()` + * + * Supply the same parameters as {AWS.DynamoDB.deleteItem} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.deleteItem + * @example Delete an item from a table + * var params = { + * TableName : 'Table', + * Key: { + * HashKey: 'hashkey', + * NumberRangeKey: 1 + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.delete(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + delete: function(params, callback) { + var self = this; + var request = self.service.deleteItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Returns a set of attributes for the item with the given primary key + * by delegating to `AWS.DynamoDB.getItem()`. + * + * Supply the same parameters as {AWS.DynamoDB.getItem} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.getItem + * @example Get an item from a table + * var params = { + * TableName : 'Table', + * Key: { + * HashKey: 'hashkey' + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.get(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + get: function(params, callback) { + var self = this; + var request = self.service.getItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Creates a new item, or replaces an old item with a new item by + * delegating to `AWS.DynamoDB.putItem()`. + * + * Supply the same parameters as {AWS.DynamoDB.putItem} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.putItem + * @example Create a new item in a table + * var params = { + * TableName : 'Table', + * Item: { + * HashKey: 'haskey', + * NumAttribute: 1, + * BoolAttribute: true, + * ListAttribute: [1, 'two', false], + * MapAttribute: { foo: 'bar'}, + * NullAttribute: null + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.put(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + put: function put(params, callback) { + var self = this; + var request = self.service.putItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Edits an existing item's attributes, or adds a new item to the table if + * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`. + * + * Supply the same parameters as {AWS.DynamoDB.updateItem} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.updateItem + * @example Update an item with expressions + * var params = { + * TableName: 'Table', + * Key: { HashKey : 'hashkey' }, + * UpdateExpression: 'set #a = :x + :y', + * ConditionExpression: '#a < :MAX', + * ExpressionAttributeNames: {'#a' : 'Sum'}, + * ExpressionAttributeValues: { + * ':x' : 20, + * ':y' : 45, + * ':MAX' : 100, + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.update(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + update: function(params, callback) { + var self = this; + var request = self.service.updateItem(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Returns one or more items and item attributes by accessing every item + * in a table or a secondary index. + * + * Supply the same parameters as {AWS.DynamoDB.scan} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.scan + * @example Scan the table with a filter expression + * var params = { + * TableName : 'Table', + * FilterExpression : 'Year = :this_year', + * ExpressionAttributeValues : {':this_year' : 2015} + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.scan(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + scan: function(params, callback) { + var self = this; + var request = self.service.scan(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Directly access items from a table by primary key or a secondary index. + * + * Supply the same parameters as {AWS.DynamoDB.query} with + * `AttributeValue`s substituted by native JavaScript types. + * + * @see AWS.DynamoDB.query + * @example Query an index + * var params = { + * TableName: 'Table', + * IndexName: 'Index', + * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey', + * ExpressionAttributeValues: { + * ':hkey': 'key', + * ':rkey': 2015 + * } + * }; + * + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * docClient.query(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + query: function(params, callback) { + var self = this; + var request = self.service.query(params); + self.setupRequest(request); + self.setupResponse(request); + if (typeof callback === 'function') { + request.send(callback); + } + return request; + }, + + /** + * Creates a set of elements inferring the type of set from + * the type of the first element. Amazon DynamoDB currently supports + * the number sets, string sets, and binary sets. For more information + * about DynamoDB data types see the documentation on the + * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes). + * + * @param list [Array] Collection to represent your DynamoDB Set + * @param options [map] + * * **validate** [Boolean] set to true if you want to validate the type + * of each element in the set. Defaults to `false`. + * @example Creating a number set + * var docClient = new AWS.DynamoDB.DocumentClient(); + * + * var params = { + * Item: { + * hashkey: 'hashkey' + * numbers: docClient.createSet([1, 2, 3]); + * } + * }; + * + * docClient.put(params, function(err, data) { + * if (err) console.log(err); + * else console.log(data); + * }); + * + */ + createSet: function(list, options) { + options = options || {}; + return new DynamoDBSet(list, options); + }, + + /** + * @api private + */ + getTranslator: function() { + return new Translator({attrValue: this.attrValue}); + }, + + /** + * @api private + */ + setupRequest: function setupRequest(request) { + var self = this; + var translator = self.getTranslator(); + var operation = request.operation; + var inputShape = request.service.api.operations[operation].input; + request._events.validate.unshift(function(req) { + req.rawParams = AWS.util.copy(req.params); + req.params = translator.translateInput(req.rawParams, inputShape); + }); + }, + + /** + * @api private + */ + setupResponse: function setupResponse(request) { + var self = this; + var translator = self.getTranslator(); + var outputShape = self.service.api.operations[request.operation].output; + request.on('extractData', function(response) { + response.data = translator.translateOutput(response.data, outputShape); + }); + + var response = request.response; + response.nextPage = function(cb) { + var resp = this; + var req = resp.request; + var config; + var service = req.service; + var operation = req.operation; + try { + config = service.paginationConfig(operation, true); + } catch (e) { resp.error = e; } + + if (!resp.hasNextPage()) { + if (cb) cb(resp.error, null); + else if (resp.error) throw resp.error; + return null; + } + + var params = AWS.util.copy(req.rawParams); + if (!resp.nextPageTokens) { + return cb ? cb(null, null) : null; + } else { + var inputTokens = config.inputToken; + if (typeof inputTokens === 'string') inputTokens = [inputTokens]; + for (var i = 0; i < inputTokens.length; i++) { + params[inputTokens[i]] = resp.nextPageTokens[i]; + } + return self[operation](params, cb); + } + }; + } + +}); + +module.exports = AWS.DynamoDB.DocumentClient; diff --git a/node_modules/aws-sdk/lib/dynamodb/set.js b/node_modules/aws-sdk/lib/dynamodb/set.js new file mode 100644 index 0000000..e07d555 --- /dev/null +++ b/node_modules/aws-sdk/lib/dynamodb/set.js @@ -0,0 +1,53 @@ +var util = require('../core').util; +var typeOf = require('./types').typeOf; + +var DynamoDBSet = util.inherit({ + + constructor: function Set(list, options) { + options = options || {}; + this.initialize(list, options.validate); + }, + + initialize: function(list, validate) { + var self = this; + self.values = [].concat(list); + self.detectType(); + if (validate) { + self.validate(); + } + }, + + detectType: function() { + var self = this; + var value = self.values[0]; + if (typeOf(value) === 'String') { + self.type = 'String'; + } else if (typeOf(value) === 'Number') { + self.type = 'Number'; + } else if (typeOf(value) === 'Binary') { + self.type = 'Binary'; + } else { + throw util.error(new Error(), { + code: 'InvalidSetType', + message: 'Sets can contain string, number, or binary values' + }); + } + }, + + validate: function() { + var self = this; + var length = self.values.length; + var values = self.values; + for (var i = 0; i < length; i++) { + if (typeOf(values[i]) !== self.type) { + throw util.error(new Error(), { + code: 'InvalidType', + message: self.type + ' Set contains ' + typeOf(values[i]) + ' value' + }); + } + } + } + +}); + +module.exports = DynamoDBSet; diff --git a/node_modules/aws-sdk/lib/dynamodb/translator.js b/node_modules/aws-sdk/lib/dynamodb/translator.js new file mode 100644 index 0000000..116c095 --- /dev/null +++ b/node_modules/aws-sdk/lib/dynamodb/translator.js @@ -0,0 +1,79 @@ +var util = require('../core').util; +var convert = require('./converter'); + +var Translator = function(options) { + options = options || {}; + this.attrValue = options.attrValue; +}; + +Translator.prototype.translateInput = function(value, shape) { + this.mode = 'input'; + return this.translate(value, shape); +}; + +Translator.prototype.translateOutput = function(value, shape) { + this.mode = 'output'; + return this.translate(value, shape); +}; + +Translator.prototype.translate = function(value, shape) { + var self = this; + if (!shape || value === undefined) return undefined; + + if (shape.shape === self.attrValue) { + return convert[self.mode](value); + } + switch (shape.type) { + case 'structure': return self.translateStructure(value, shape); + case 'map': return self.translateMap(value, shape); + case 'list': return self.translateList(value, shape); + default: return self.translateScalar(value, shape); + } +}; + +Translator.prototype.translateStructure = function(structure, shape) { + var self = this; + if (structure == null) return undefined; + + var struct = {}; + util.each(structure, function(name, value) { + var memberShape = shape.members[name]; + if (memberShape) { + var result = self.translate(value, memberShape); + if (result !== undefined) struct[name] = result; + } + }); + return struct; +}; + +Translator.prototype.translateList = function(list, shape) { + var self = this; + if (list == null) return undefined; + + var out = []; + util.arrayEach(list, function(value) { + var result = self.translate(value, shape.member); + if (result === undefined) out.push(null); + else out.push(result); + }); + return out; +}; + +Translator.prototype.translateMap = function(map, shape) { + var self = this; + if (map == null) return undefined; + + var out = {}; + util.each(map, function(key, value) { + var result = self.translate(value, shape.value); + if (result === undefined) out[key] = null; + else out[key] = result; + }); + return out; +}; + +Translator.prototype.translateScalar = function(value, shape) { + return shape.toType(value); +}; + +module.exports = Translator; diff --git a/node_modules/aws-sdk/lib/dynamodb/types.js b/node_modules/aws-sdk/lib/dynamodb/types.js new file mode 100644 index 0000000..0a0b1d3 --- /dev/null +++ b/node_modules/aws-sdk/lib/dynamodb/types.js @@ -0,0 +1,40 @@ +var util = require('../core').util; + +function typeOf(data) { + if (data === null && typeof data === 'object') { + return 'null'; + } else if (data !== undefined && isBinary(data)) { + return 'Binary'; + } else if (data !== undefined && data.constructor) { + return util.typeName(data.constructor); + } else { + return 'undefined'; + } +} + +function isBinary(data) { + var types = [ + 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView', + 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', + 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', + 'Float32Array', 'Float64Array' + ]; + if (util.isNode()) { + var Stream = util.stream.Stream; + if (util.Buffer.isBuffer(data) || data instanceof Stream) + return true; + } else { + for (var i = 0; i < types.length; i++) { + if (data !== undefined && data.constructor) { + if (util.isType(data, types[i])) return true; + if (util.typeName(data.constructor) === types[i]) return true; + } + } + } + return false; +} + +module.exports = { + typeOf: typeOf, + isBinary: isBinary +}; diff --git a/node_modules/aws-sdk/lib/event_listeners.js b/node_modules/aws-sdk/lib/event_listeners.js new file mode 100644 index 0000000..8b23891 --- /dev/null +++ b/node_modules/aws-sdk/lib/event_listeners.js @@ -0,0 +1,471 @@ +var AWS = require('./core'); +var SequentialExecutor = require('./sequential_executor'); + +/** + * The namespace used to register global event listeners for request building + * and sending. + */ +AWS.EventListeners = { + /** + * @!attribute VALIDATE_CREDENTIALS + * A request listener that validates whether the request is being + * sent with credentials. + * Handles the {AWS.Request~validate 'validate' Request event} + * @example Sending a request without validating credentials + * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS; + * request.removeListener('validate', listener); + * @readonly + * @return [Function] + * @!attribute VALIDATE_REGION + * A request listener that validates whether the region is set + * for a request. + * Handles the {AWS.Request~validate 'validate' Request event} + * @example Sending a request without validating region configuration + * var listener = AWS.EventListeners.Core.VALIDATE_REGION; + * request.removeListener('validate', listener); + * @readonly + * @return [Function] + * @!attribute VALIDATE_PARAMETERS + * A request listener that validates input parameters in a request. + * Handles the {AWS.Request~validate 'validate' Request event} + * @example Sending a request without validating parameters + * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS; + * request.removeListener('validate', listener); + * @example Disable parameter validation globally + * AWS.EventListeners.Core.removeListener('validate', + * AWS.EventListeners.Core.VALIDATE_REGION); + * @readonly + * @return [Function] + * @!attribute SEND + * A request listener that initiates the HTTP connection for a + * request being sent. Handles the {AWS.Request~send 'send' Request event} + * @example Replacing the HTTP handler + * var listener = AWS.EventListeners.Core.SEND; + * request.removeListener('send', listener); + * request.on('send', function(response) { + * customHandler.send(response); + * }); + * @return [Function] + * @readonly + * @!attribute HTTP_DATA + * A request listener that reads data from the HTTP connection in order + * to build the response data. + * Handles the {AWS.Request~httpData 'httpData' Request event}. + * Remove this handler if you are overriding the 'httpData' event and + * do not want extra data processing and buffering overhead. + * @example Disabling default data processing + * var listener = AWS.EventListeners.Core.HTTP_DATA; + * request.removeListener('httpData', listener); + * @return [Function] + * @readonly + */ + Core: {} /* doc hack */ +}; + +AWS.EventListeners = { + Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) { + addAsync('VALIDATE_CREDENTIALS', 'validate', + function VALIDATE_CREDENTIALS(req, done) { + if (!req.service.api.signatureVersion) return done(); // none + req.service.config.getCredentials(function(err) { + if (err) { + req.response.error = AWS.util.error(err, + {code: 'CredentialsError', message: 'Missing credentials in config'}); + } + done(); + }); + }); + + add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) { + if (!req.service.config.region && !req.service.isGlobalEndpoint) { + req.response.error = AWS.util.error(new Error(), + {code: 'ConfigError', message: 'Missing region in config'}); + } + }); + + add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) { + var rules = req.service.api.operations[req.operation].input; + var validation = req.service.config.paramValidation; + new AWS.ParamValidator(validation).validate(rules, req.params); + }); + + addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) { + req.haltHandlersOnError(); + if (!req.service.api.signatureVersion) return done(); // none + if (req.service.getSignerClass(req) === AWS.Signers.V4) { + var body = req.httpRequest.body || ''; + AWS.util.computeSha256(body, function(err, sha) { + if (err) { + done(err); + } + else { + req.httpRequest.headers['X-Amz-Content-Sha256'] = sha; + done(); + } + }); + } else { + done(); + } + }); + + add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) { + if (req.httpRequest.headers['Content-Length'] === undefined) { + var length = AWS.util.string.byteLength(req.httpRequest.body); + req.httpRequest.headers['Content-Length'] = length; + } + }); + + add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) { + req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host; + }); + + add('RESTART', 'restart', function RESTART() { + var err = this.response.error; + if (!err || !err.retryable) return; + + this.httpRequest = new AWS.HttpRequest( + this.service.endpoint, + this.service.region + ); + + if (this.response.retryCount < this.service.config.maxRetries) { + this.response.retryCount++; + } else { + this.response.error = null; + } + }); + + addAsync('SIGN', 'sign', function SIGN(req, done) { + var service = req.service; + if (!service.api.signatureVersion) return done(); // none + + service.config.getCredentials(function (err, credentials) { + if (err) { + req.response.error = err; + return done(); + } + + try { + var date = AWS.util.date.getDate(); + var SignerClass = service.getSignerClass(req); + var signer = new SignerClass(req.httpRequest, + service.api.signingName || service.api.endpointPrefix, + service.config.signatureCache); + signer.setServiceClientId(service._clientId); + + // clear old authorization headers + delete req.httpRequest.headers['Authorization']; + delete req.httpRequest.headers['Date']; + delete req.httpRequest.headers['X-Amz-Date']; + + // add new authorization + signer.addAuthorization(credentials, date); + req.signedAt = date; + } catch (e) { + req.response.error = e; + } + done(); + }); + }); + + add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) { + if (this.service.successfulResponse(resp, this)) { + resp.data = {}; + resp.error = null; + } else { + resp.data = null; + resp.error = AWS.util.error(new Error(), + {code: 'UnknownError', message: 'An unknown error occurred.'}); + } + }); + + addAsync('SEND', 'send', function SEND(resp, done) { + resp.httpResponse._abortCallback = done; + resp.error = null; + resp.data = null; + + function callback(httpResp) { + resp.httpResponse.stream = httpResp; + + httpResp.on('headers', function onHeaders(statusCode, headers) { + resp.request.emit('httpHeaders', [statusCode, headers, resp]); + + if (!resp.httpResponse.streaming) { + if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check + httpResp.on('readable', function onReadable() { + var data = httpResp.read(); + if (data !== null) { + resp.request.emit('httpData', [data, resp]); + } + }); + } else { // legacy streams API + httpResp.on('data', function onData(data) { + resp.request.emit('httpData', [data, resp]); + }); + } + } + }); + + httpResp.on('end', function onEnd() { + resp.request.emit('httpDone'); + done(); + }); + } + + function progress(httpResp) { + httpResp.on('sendProgress', function onSendProgress(value) { + resp.request.emit('httpUploadProgress', [value, resp]); + }); + + httpResp.on('receiveProgress', function onReceiveProgress(value) { + resp.request.emit('httpDownloadProgress', [value, resp]); + }); + } + + function error(err) { + resp.error = AWS.util.error(err, { + code: 'NetworkingError', + region: resp.request.httpRequest.region, + hostname: resp.request.httpRequest.endpoint.hostname, + retryable: true + }); + resp.request.emit('httpError', [resp.error, resp], function() { + done(); + }); + } + + function executeSend() { + var http = AWS.HttpClient.getInstance(); + var httpOptions = resp.request.service.config.httpOptions || {}; + try { + var stream = http.handleRequest(resp.request.httpRequest, httpOptions, + callback, error); + progress(stream); + } catch (err) { + error(err); + } + } + + var timeDiff = (AWS.util.date.getDate() - this.signedAt) / 1000; + if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign + this.emit('sign', [this], function(err) { + if (err) done(err); + else executeSend(); + }); + } else { + executeSend(); + } + }); + + add('HTTP_HEADERS', 'httpHeaders', + function HTTP_HEADERS(statusCode, headers, resp) { + resp.httpResponse.statusCode = statusCode; + resp.httpResponse.headers = headers; + resp.httpResponse.body = new AWS.util.Buffer(''); + resp.httpResponse.buffers = []; + resp.httpResponse.numBytes = 0; + var dateHeader = headers.date || headers.Date; + if (dateHeader) { + var serverTime = Date.parse(dateHeader); + if (resp.request.service.config.correctClockSkew + && AWS.util.isClockSkewed(serverTime)) { + AWS.util.applyClockOffset(serverTime); + } + } + }); + + add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) { + if (chunk) { + if (AWS.util.isNode()) { + resp.httpResponse.numBytes += chunk.length; + + var total = resp.httpResponse.headers['content-length']; + var progress = { loaded: resp.httpResponse.numBytes, total: total }; + resp.request.emit('httpDownloadProgress', [progress, resp]); + } + + resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk)); + } + }); + + add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) { + // convert buffers array into single buffer + if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) { + var body = AWS.util.buffer.concat(resp.httpResponse.buffers); + resp.httpResponse.body = body; + } + delete resp.httpResponse.numBytes; + delete resp.httpResponse.buffers; + }); + + add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) { + if (resp.httpResponse.statusCode) { + resp.error.statusCode = resp.httpResponse.statusCode; + if (resp.error.retryable === undefined) { + resp.error.retryable = this.service.retryableError(resp.error, this); + } + } + }); + + add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) { + if (!resp.error) return; + switch (resp.error.code) { + case 'RequestExpired': // EC2 only + case 'ExpiredTokenException': + case 'ExpiredToken': + resp.error.retryable = true; + resp.request.service.config.credentials.expired = true; + } + }); + + add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) { + var err = resp.error; + if (!err) return; + if (typeof err.code === 'string' && typeof err.message === 'string') { + if (err.code.match(/Signature/) && err.message.match(/expired/)) { + resp.error.retryable = true; + } + } + }); + + add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) { + if (!resp.error) return; + if (this.service.clockSkewError(resp.error) + && this.service.config.correctClockSkew + && AWS.config.isClockSkewed) { + resp.error.retryable = true; + } + }); + + add('REDIRECT', 'retry', function REDIRECT(resp) { + if (resp.error && resp.error.statusCode >= 300 && + resp.error.statusCode < 400 && resp.httpResponse.headers['location']) { + this.httpRequest.endpoint = + new AWS.Endpoint(resp.httpResponse.headers['location']); + this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host; + resp.error.redirect = true; + resp.error.retryable = true; + } + }); + + add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) { + if (resp.error) { + if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { + resp.error.retryDelay = 0; + } else if (resp.retryCount < resp.maxRetries) { + resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0; + } + } + }); + + addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) { + var delay, willRetry = false; + + if (resp.error) { + delay = resp.error.retryDelay || 0; + if (resp.error.retryable && resp.retryCount < resp.maxRetries) { + resp.retryCount++; + willRetry = true; + } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { + resp.redirectCount++; + willRetry = true; + } + } + + if (willRetry) { + resp.error = null; + setTimeout(done, delay); + } else { + done(); + } + }); + }), + + CorePost: new SequentialExecutor().addNamedListeners(function(add) { + add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId); + add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId); + + add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) { + if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') { + var message = 'Inaccessible host: `' + err.hostname + + '\'. This service may not be available in the `' + err.region + + '\' region.'; + this.response.error = AWS.util.error(new Error(message), { + code: 'UnknownEndpoint', + region: err.region, + hostname: err.hostname, + retryable: true, + originalError: err + }); + } + }); + }), + + Logger: new SequentialExecutor().addNamedListeners(function(add) { + add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) { + var req = resp.request; + var logger = req.service.config.logger; + if (!logger) return; + + function buildMessage() { + var time = AWS.util.date.getDate().getTime(); + var delta = (time - req.startTime.getTime()) / 1000; + var ansi = logger.isTTY ? true : false; + var status = resp.httpResponse.statusCode; + var params = require('util').inspect(req.params, true, null); + + var message = ''; + if (ansi) message += '\x1B[33m'; + message += '[AWS ' + req.service.serviceIdentifier + ' ' + status; + message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]'; + if (ansi) message += '\x1B[0;1m'; + message += ' ' + AWS.util.string.lowerFirst(req.operation); + message += '(' + params + ')'; + if (ansi) message += '\x1B[0m'; + return message; + } + + var line = buildMessage(); + if (typeof logger.log === 'function') { + logger.log(line); + } else if (typeof logger.write === 'function') { + logger.write(line + '\n'); + } + }); + }), + + Json: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/json'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + Rest: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + RestJson: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest_json'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + RestXml: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/rest_xml'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }), + + Query: new SequentialExecutor().addNamedListeners(function(add) { + var svc = require('./protocol/query'); + add('BUILD', 'build', svc.buildRequest); + add('EXTRACT_DATA', 'extractData', svc.extractData); + add('EXTRACT_ERROR', 'extractError', svc.extractError); + }) +}; diff --git a/node_modules/aws-sdk/lib/http.js b/node_modules/aws-sdk/lib/http.js new file mode 100644 index 0000000..394088f --- /dev/null +++ b/node_modules/aws-sdk/lib/http.js @@ -0,0 +1,208 @@ +var AWS = require('./core'); +var inherit = AWS.util.inherit; + +/** + * The endpoint that a service will talk to, for example, + * `'https://ec2.ap-southeast-1.amazonaws.com'`. If + * you need to override an endpoint for a service, you can + * set the endpoint on a service by passing the endpoint + * object with the `endpoint` option key: + * + * ```javascript + * var ep = new AWS.Endpoint('awsproxy.example.com'); + * var s3 = new AWS.S3({endpoint: ep}); + * s3.service.endpoint.hostname == 'awsproxy.example.com' + * ``` + * + * Note that if you do not specify a protocol, the protocol will + * be selected based on your current {AWS.config} configuration. + * + * @!attribute protocol + * @return [String] the protocol (http or https) of the endpoint + * URL + * @!attribute hostname + * @return [String] the host portion of the endpoint, e.g., + * example.com + * @!attribute host + * @return [String] the host portion of the endpoint including + * the port, e.g., example.com:80 + * @!attribute port + * @return [Integer] the port of the endpoint + * @!attribute href + * @return [String] the full URL of the endpoint + */ +AWS.Endpoint = inherit({ + + /** + * @overload Endpoint(endpoint) + * Constructs a new endpoint given an endpoint URL. If the + * URL omits a protocol (http or https), the default protocol + * set in the global {AWS.config} will be used. + * @param endpoint [String] the URL to construct an endpoint from + */ + constructor: function Endpoint(endpoint, config) { + AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']); + + if (typeof endpoint === 'undefined' || endpoint === null) { + throw new Error('Invalid endpoint: ' + endpoint); + } else if (typeof endpoint !== 'string') { + return AWS.util.copy(endpoint); + } + + if (!endpoint.match(/^http/)) { + var useSSL = config && config.sslEnabled !== undefined ? + config.sslEnabled : AWS.config.sslEnabled; + endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint; + } + + AWS.util.update(this, AWS.util.urlParse(endpoint)); + + // Ensure the port property is set as an integer + if (this.port) { + this.port = parseInt(this.port, 10); + } else { + this.port = this.protocol === 'https:' ? 443 : 80; + } + } + +}); + +/** + * The low level HTTP request object, encapsulating all HTTP header + * and body data sent by a service request. + * + * @!attribute method + * @return [String] the HTTP method of the request + * @!attribute path + * @return [String] the path portion of the URI, e.g., + * "/list/?start=5&num=10" + * @!attribute headers + * @return [map] + * a map of header keys and their respective values + * @!attribute body + * @return [String] the request body payload + * @!attribute endpoint + * @return [AWS.Endpoint] the endpoint for the request + * @!attribute region + * @api private + * @return [String] the region, for signing purposes only. + */ +AWS.HttpRequest = inherit({ + + /** + * @api private + */ + constructor: function HttpRequest(endpoint, region, customUserAgent) { + endpoint = new AWS.Endpoint(endpoint); + this.method = 'POST'; + this.path = endpoint.path || '/'; + this.headers = {}; + this.body = ''; + this.endpoint = endpoint; + this.region = region; + this.setUserAgent(customUserAgent); + }, + + /** + * @api private + */ + setUserAgent: function setUserAgent(customUserAgent) { + var prefix = AWS.util.isBrowser() ? 'X-Amz-' : ''; + var customSuffix = ''; + if (typeof customUserAgent === 'string' && customUserAgent) { + customSuffix += ' ' + customUserAgent; + } + this.headers[prefix + 'User-Agent'] = AWS.util.userAgent() + customSuffix; + }, + + /** + * @return [String] the part of the {path} excluding the + * query string + */ + pathname: function pathname() { + return this.path.split('?', 1)[0]; + }, + + /** + * @return [String] the query string portion of the {path} + */ + search: function search() { + var query = this.path.split('?', 2)[1]; + if (query) { + query = AWS.util.queryStringParse(query); + return AWS.util.queryParamsToString(query); + } + return ''; + } + +}); + +/** + * The low level HTTP response object, encapsulating all HTTP header + * and body data returned from the request. + * + * @!attribute statusCode + * @return [Integer] the HTTP status code of the response (e.g., 200, 404) + * @!attribute headers + * @return [map] + * a map of response header keys and their respective values + * @!attribute body + * @return [String] the response body payload + * @!attribute [r] streaming + * @return [Boolean] whether this response is being streamed at a low-level. + * Defaults to `false` (buffered reads). Do not modify this manually, use + * {createUnbufferedStream} to convert the stream to unbuffered mode + * instead. + */ +AWS.HttpResponse = inherit({ + + /** + * @api private + */ + constructor: function HttpResponse() { + this.statusCode = undefined; + this.headers = {}; + this.body = undefined; + this.streaming = false; + this.stream = null; + }, + + /** + * Disables buffering on the HTTP response and returns the stream for reading. + * @return [Stream, XMLHttpRequest, null] the underlying stream object. + * Use this object to directly read data off of the stream. + * @note This object is only available after the {AWS.Request~httpHeaders} + * event has fired. This method must be called prior to + * {AWS.Request~httpData}. + * @example Taking control of a stream + * request.on('httpHeaders', function(statusCode, headers) { + * if (statusCode < 300) { + * if (headers.etag === 'xyz') { + * // pipe the stream, disabling buffering + * var stream = this.response.httpResponse.createUnbufferedStream(); + * stream.pipe(process.stdout); + * } else { // abort this request and set a better error message + * this.abort(); + * this.response.error = new Error('Invalid ETag'); + * } + * } + * }).send(console.log); + */ + createUnbufferedStream: function createUnbufferedStream() { + this.streaming = true; + return this.stream; + } +}); + + +AWS.HttpClient = inherit({}); + +/** + * @api private + */ +AWS.HttpClient.getInstance = function getInstance() { + if (this.singleton === undefined) { + this.singleton = new this(); + } + return this.singleton; +}; diff --git a/node_modules/aws-sdk/lib/http/node.js b/node_modules/aws-sdk/lib/http/node.js new file mode 100644 index 0000000..644f993 --- /dev/null +++ b/node_modules/aws-sdk/lib/http/node.js @@ -0,0 +1,169 @@ +var AWS = require('../core'); +var Stream = AWS.util.stream.Stream; +var TransformStream = AWS.util.stream.Transform; +var ReadableStream = AWS.util.stream.Readable; +require('../http'); + +/** + * @api private + */ +AWS.NodeHttpClient = AWS.util.inherit({ + handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { + var self = this; + var cbAlreadyCalled = false; + var endpoint = httpRequest.endpoint; + var pathPrefix = ''; + if (!httpOptions) httpOptions = {}; + if (httpOptions.proxy) { + pathPrefix = endpoint.protocol + '//' + endpoint.hostname; + if (endpoint.port !== 80 && endpoint.port !== 443) { + pathPrefix += ':' + endpoint.port; + } + endpoint = new AWS.Endpoint(httpOptions.proxy); + } + + var useSSL = endpoint.protocol === 'https:'; + var http = useSSL ? require('https') : require('http'); + var options = { + host: endpoint.hostname, + port: endpoint.port, + method: httpRequest.method, + headers: httpRequest.headers, + path: pathPrefix + httpRequest.path + }; + + if (useSSL && !httpOptions.agent) { + options.agent = this.sslAgent(); + } + + AWS.util.update(options, httpOptions); + delete options.proxy; // proxy isn't an HTTP option + delete options.timeout; // timeout isn't an HTTP option + + var stream = http.request(options, function (httpResp) { + if (cbAlreadyCalled) return; cbAlreadyCalled = true; + + callback(httpResp); + httpResp.emit('headers', httpResp.statusCode, httpResp.headers); + }); + httpRequest.stream = stream; // attach stream to httpRequest + + // timeout support + stream.setTimeout(httpOptions.timeout || 0, function() { + if (cbAlreadyCalled) return; cbAlreadyCalled = true; + + var msg = 'Connection timed out after ' + httpOptions.timeout + 'ms'; + errCallback(AWS.util.error(new Error(msg), {code: 'TimeoutError'})); + stream.abort(); + }); + + stream.on('error', function() { + if (cbAlreadyCalled) return; cbAlreadyCalled = true; + errCallback.apply(this, arguments); + }); + + var expect = httpRequest.headers.Expect || httpRequest.headers.expect; + if (expect === '100-continue') { + stream.on('continue', function() { + self.writeBody(stream, httpRequest); + }); + } else { + this.writeBody(stream, httpRequest); + } + + return stream; + }, + + writeBody: function writeBody(stream, httpRequest) { + var body = httpRequest.body; + var totalBytes = parseInt(httpRequest.headers['Content-Length'], 10); + + if (body instanceof Stream) { + // For progress support of streaming content - + // pipe the data through a transform stream to emit 'sendProgress' events + var progressStream = this.progressStream(stream, totalBytes); + if (progressStream) { + body.pipe(progressStream).pipe(stream); + } else { + body.pipe(stream); + } + } else if (body) { + // The provided body is a buffer/string and is already fully available in memory - + // For performance it's best to send it as a whole by calling stream.end(body), + // Callers expect a 'sendProgress' event which is best emitted once + // the http request stream has been fully written and all data flushed. + // The use of totalBytes is important over body.length for strings where + // length is char length and not byte length. + stream.once('finish', function() { + stream.emit('sendProgress', { + loaded: totalBytes, + total: totalBytes + }); + }); + stream.end(body); + } else { + // no request body + stream.end(); + } + }, + + sslAgent: function sslAgent() { + var https = require('https'); + + if (!AWS.NodeHttpClient.sslAgent) { + AWS.NodeHttpClient.sslAgent = new https.Agent({rejectUnauthorized: true}); + AWS.NodeHttpClient.sslAgent.setMaxListeners(0); + + // delegate maxSockets to globalAgent, set a default limit of 50 if current value is Infinity. + // Users can bypass this default by supplying their own Agent as part of SDK configuration. + Object.defineProperty(AWS.NodeHttpClient.sslAgent, 'maxSockets', { + enumerable: true, + get: function() { + var defaultMaxSockets = 50; + var globalAgent = https.globalAgent; + if (globalAgent && globalAgent.maxSockets !== Infinity && typeof globalAgent.maxSockets === 'number') { + return globalAgent.maxSockets; + } + return defaultMaxSockets; + } + }); + } + return AWS.NodeHttpClient.sslAgent; + }, + + progressStream: function progressStream(stream, totalBytes) { + if (typeof TransformStream === 'undefined') { + // for node 0.8 there is no streaming progress + return; + } + var loadedBytes = 0; + var reporter = new TransformStream(); + reporter._transform = function(chunk, encoding, callback) { + if (chunk) { + loadedBytes += chunk.length; + stream.emit('sendProgress', { + loaded: loadedBytes, + total: totalBytes + }); + } + callback(null, chunk); + }; + return reporter; + }, + + emitter: null +}); + +/** + * @!ignore + */ + +/** + * @api private + */ +AWS.HttpClient.prototype = AWS.NodeHttpClient.prototype; + +/** + * @api private + */ +AWS.HttpClient.streamsApiVersion = ReadableStream ? 2 : 1; diff --git a/node_modules/aws-sdk/lib/http/xhr.js b/node_modules/aws-sdk/lib/http/xhr.js new file mode 100644 index 0000000..9fc80a7 --- /dev/null +++ b/node_modules/aws-sdk/lib/http/xhr.js @@ -0,0 +1,122 @@ +var AWS = require('../core'); +var EventEmitter = require('events').EventEmitter; +require('../http'); + +/** + * @api private + */ +AWS.XHRClient = AWS.util.inherit({ + handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { + var self = this; + var endpoint = httpRequest.endpoint; + var emitter = new EventEmitter(); + var href = endpoint.protocol + '//' + endpoint.hostname; + if (endpoint.port !== 80 && endpoint.port !== 443) { + href += ':' + endpoint.port; + } + href += httpRequest.path; + + var xhr = new XMLHttpRequest(), headersEmitted = false; + httpRequest.stream = xhr; + + xhr.addEventListener('readystatechange', function() { + try { + if (xhr.status === 0) return; // 0 code is invalid + } catch (e) { return; } + + if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) { + try { xhr.responseType = 'arraybuffer'; } catch (e) {} + emitter.statusCode = xhr.status; + emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders()); + emitter.emit('headers', emitter.statusCode, emitter.headers); + headersEmitted = true; + } + if (this.readyState === this.DONE) { + self.finishRequest(xhr, emitter); + } + }, false); + xhr.upload.addEventListener('progress', function (evt) { + emitter.emit('sendProgress', evt); + }); + xhr.addEventListener('progress', function (evt) { + emitter.emit('receiveProgress', evt); + }, false); + xhr.addEventListener('timeout', function () { + errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'})); + }, false); + xhr.addEventListener('error', function () { + errCallback(AWS.util.error(new Error('Network Failure'), { + code: 'NetworkingError' + })); + }, false); + + callback(emitter); + xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false); + AWS.util.each(httpRequest.headers, function (key, value) { + if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') { + xhr.setRequestHeader(key, value); + } + }); + + if (httpOptions.timeout && httpOptions.xhrAsync !== false) { + xhr.timeout = httpOptions.timeout; + } + + if (httpOptions.xhrWithCredentials) { + xhr.withCredentials = true; + } + + try { + xhr.send(httpRequest.body); + } catch (err) { + if (httpRequest.body && typeof httpRequest.body.buffer === 'object') { + xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly + } else { + throw err; + } + } + + return emitter; + }, + + parseHeaders: function parseHeaders(rawHeaders) { + var headers = {}; + AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) { + var key = line.split(':', 1)[0]; + var value = line.substring(key.length + 2); + if (key.length > 0) headers[key.toLowerCase()] = value; + }); + return headers; + }, + + finishRequest: function finishRequest(xhr, emitter) { + var buffer; + if (xhr.responseType === 'arraybuffer' && xhr.response) { + var ab = xhr.response; + buffer = new AWS.util.Buffer(ab.byteLength); + var view = new Uint8Array(ab); + for (var i = 0; i < buffer.length; ++i) { + buffer[i] = view[i]; + } + } + + try { + if (!buffer && typeof xhr.responseText === 'string') { + buffer = new AWS.util.Buffer(xhr.responseText); + } + } catch (e) {} + + if (buffer) emitter.emit('data', buffer); + emitter.emit('end'); + } +}); + +/** + * @api private + */ +AWS.HttpClient.prototype = AWS.XHRClient.prototype; + +/** + * @api private + */ +AWS.HttpClient.streamsApiVersion = 1; diff --git a/node_modules/aws-sdk/lib/json/builder.js b/node_modules/aws-sdk/lib/json/builder.js new file mode 100644 index 0000000..53cb9eb --- /dev/null +++ b/node_modules/aws-sdk/lib/json/builder.js @@ -0,0 +1,56 @@ +var util = require('../util'); + +function JsonBuilder() { } + +JsonBuilder.prototype.build = function(value, shape) { + return JSON.stringify(translate(value, shape)); +}; + +function translate(value, shape) { + if (!shape || value === undefined || value === null) return undefined; + + switch (shape.type) { + case 'structure': return translateStructure(value, shape); + case 'map': return translateMap(value, shape); + case 'list': return translateList(value, shape); + default: return translateScalar(value, shape); + } +} + +function translateStructure(structure, shape) { + var struct = {}; + util.each(structure, function(name, value) { + var memberShape = shape.members[name]; + if (memberShape) { + if (memberShape.location !== 'body') return; + var locationName = memberShape.isLocationName ? memberShape.name : name; + var result = translate(value, memberShape); + if (result !== undefined) struct[locationName] = result; + } + }); + return struct; +} + +function translateList(list, shape) { + var out = []; + util.arrayEach(list, function(value) { + var result = translate(value, shape.member); + if (result !== undefined) out.push(result); + }); + return out; +} + +function translateMap(map, shape) { + var out = {}; + util.each(map, function(key, value) { + var result = translate(value, shape.value); + if (result !== undefined) out[key] = result; + }); + return out; +} + +function translateScalar(value, shape) { + return shape.toWireFormat(value); +} + +module.exports = JsonBuilder; diff --git a/node_modules/aws-sdk/lib/json/parser.js b/node_modules/aws-sdk/lib/json/parser.js new file mode 100644 index 0000000..dc3b33f --- /dev/null +++ b/node_modules/aws-sdk/lib/json/parser.js @@ -0,0 +1,64 @@ +var util = require('../util'); + +function JsonParser() { } + +JsonParser.prototype.parse = function(value, shape) { + return translate(JSON.parse(value), shape); +}; + +function translate(value, shape) { + if (!shape || value === undefined) return undefined; + + switch (shape.type) { + case 'structure': return translateStructure(value, shape); + case 'map': return translateMap(value, shape); + case 'list': return translateList(value, shape); + default: return translateScalar(value, shape); + } +} + +function translateStructure(structure, shape) { + if (structure == null) return undefined; + + var struct = {}; + var shapeMembers = shape.members; + util.each(shapeMembers, function(name, memberShape) { + var locationName = memberShape.isLocationName ? memberShape.name : name; + if (Object.prototype.hasOwnProperty.call(structure, locationName)) { + var value = structure[locationName]; + var result = translate(value, memberShape); + if (result !== undefined) struct[name] = result; + } + }); + return struct; +} + +function translateList(list, shape) { + if (list == null) return undefined; + + var out = []; + util.arrayEach(list, function(value) { + var result = translate(value, shape.member); + if (result === undefined) out.push(null); + else out.push(result); + }); + return out; +} + +function translateMap(map, shape) { + if (map == null) return undefined; + + var out = {}; + util.each(map, function(key, value) { + var result = translate(value, shape.value); + if (result === undefined) out[key] = null; + else out[key] = result; + }); + return out; +} + +function translateScalar(value, shape) { + return shape.toType(value); +} + +module.exports = JsonParser; diff --git a/node_modules/aws-sdk/lib/metadata_service.js b/node_modules/aws-sdk/lib/metadata_service.js new file mode 100644 index 0000000..08f5081 --- /dev/null +++ b/node_modules/aws-sdk/lib/metadata_service.js @@ -0,0 +1,121 @@ +var AWS = require('./core'); +require('./http'); +var inherit = AWS.util.inherit; + +/** + * Represents a metadata service available on EC2 instances. Using the + * {request} method, you can receieve metadata about any available resource + * on the metadata service. + * + * @!attribute [r] httpOptions + * @return [map] a map of options to pass to the underlying HTTP request: + * + * * **timeout** (Number) — a timeout value in milliseconds to wait + * before aborting the connection. Set to 0 for no timeout. + * + * @!macro nobrowser + */ +AWS.MetadataService = inherit({ + /** + * @return [String] the hostname of the instance metadata service + */ + host: '169.254.169.254', + + /** + * @!ignore + */ + + /** + * Default HTTP options. By default, the metadata service is set to not + * timeout on long requests. This means that on non-EC2 machines, this + * request will never return. If you are calling this operation from an + * environment that may not always run on EC2, set a `timeout` value so + * the SDK will abort the request after a given number of milliseconds. + */ + httpOptions: { timeout: 0 }, + + /** + * Creates a new MetadataService object with a given set of options. + * + * @option options host [String] the hostname of the instance metadata + * service + * @option options httpOptions [map] a map of options to pass to the + * underlying HTTP request: + * + * * **timeout** (Number) — a timeout value in milliseconds to wait + * before aborting the connection. Set to 0 for no timeout. + * @option options maxRetries [Integer] the maximum number of retries to + * perform for timeout errors + * @option options retryDelayOptions [map] A set of options to configure the + * retry delay on retryable errors. See AWS.Config for details. + */ + constructor: function MetadataService(options) { + AWS.util.update(this, options); + }, + + /** + * Sends a request to the instance metadata service for a given resource. + * + * @param path [String] the path of the resource to get + * @callback callback function(err, data) + * Called when a response is available from the service. + * @param err [Error, null] if an error occurred, this value will be set + * @param data [String, null] if the request was successful, the body of + * the response + */ + request: function request(path, callback) { + path = path || '/'; + var httpRequest = new AWS.HttpRequest('http://' + this.host + path); + httpRequest.method = 'GET'; + AWS.util.handleRequestWithRetries(httpRequest, this, callback); + }, + + /** + * @api private + */ + loadCredentialsCallbacks: [], + + /** + * Loads a set of credentials stored in the instance metadata service + * + * @api private + * @callback callback function(err, credentials) + * Called when credentials are loaded from the resource + * @param err [Error] if an error occurred, this value will be set + * @param credentials [Object] the raw JSON object containing all + * metadata from the credentials resource + */ + loadCredentials: function loadCredentials(callback) { + var self = this; + var basePath = '/latest/meta-data/iam/security-credentials/'; + self.loadCredentialsCallbacks.push(callback); + if (self.loadCredentialsCallbacks.length > 1) { return; } + + function callbacks(err, creds) { + var cb; + while ((cb = self.loadCredentialsCallbacks.shift()) !== undefined) { + cb(err, creds); + } + } + + self.request(basePath, function (err, roleName) { + if (err) callbacks(err); + else { + roleName = roleName.split('\n')[0]; // grab first (and only) role + self.request(basePath + roleName, function (credErr, credData) { + if (credErr) callbacks(credErr); + else { + try { + var credentials = JSON.parse(credData); + callbacks(null, credentials); + } catch (parseError) { + callbacks(parseError); + } + } + }); + } + }); + } +}); + +module.exports = AWS.MetadataService; diff --git a/node_modules/aws-sdk/lib/model/api.js b/node_modules/aws-sdk/lib/model/api.js new file mode 100644 index 0000000..53c7384 --- /dev/null +++ b/node_modules/aws-sdk/lib/model/api.js @@ -0,0 +1,63 @@ +var Collection = require('./collection'); +var Operation = require('./operation'); +var Shape = require('./shape'); +var Paginator = require('./paginator'); +var ResourceWaiter = require('./resource_waiter'); + +var util = require('../util'); +var property = util.property; +var memoizedProperty = util.memoizedProperty; + +function Api(api, options) { + api = api || {}; + options = options || {}; + options.api = this; + + api.metadata = api.metadata || {}; + + property(this, 'isApi', true, false); + property(this, 'apiVersion', api.metadata.apiVersion); + property(this, 'endpointPrefix', api.metadata.endpointPrefix); + property(this, 'signingName', api.metadata.signingName); + property(this, 'globalEndpoint', api.metadata.globalEndpoint); + property(this, 'signatureVersion', api.metadata.signatureVersion); + property(this, 'jsonVersion', api.metadata.jsonVersion); + property(this, 'targetPrefix', api.metadata.targetPrefix); + property(this, 'protocol', api.metadata.protocol); + property(this, 'timestampFormat', api.metadata.timestampFormat); + property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace); + property(this, 'abbreviation', api.metadata.serviceAbbreviation); + property(this, 'fullName', api.metadata.serviceFullName); + + memoizedProperty(this, 'className', function() { + var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName; + if (!name) return null; + + name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, ''); + if (name === 'ElasticLoadBalancing') name = 'ELB'; + return name; + }); + + property(this, 'operations', new Collection(api.operations, options, function(name, operation) { + return new Operation(name, operation, options); + }, util.string.lowerFirst)); + + property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) { + return Shape.create(shape, options); + })); + + property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) { + return new Paginator(name, paginator, options); + })); + + property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) { + return new ResourceWaiter(name, waiter, options); + }, util.string.lowerFirst)); + + if (options.documentation) { + property(this, 'documentation', api.documentation); + property(this, 'documentationUrl', api.documentationUrl); + } +} + +module.exports = Api; diff --git a/node_modules/aws-sdk/lib/model/collection.js b/node_modules/aws-sdk/lib/model/collection.js new file mode 100644 index 0000000..439103f --- /dev/null +++ b/node_modules/aws-sdk/lib/model/collection.js @@ -0,0 +1,20 @@ +var memoizedProperty = require('../util').memoizedProperty; + +function memoize(name, value, fn, nameTr) { + memoizedProperty(this, nameTr(name), function() { + return fn(name, value); + }); +} + +function Collection(iterable, options, fn, nameTr) { + nameTr = nameTr || String; + var self = this; + + for (var id in iterable) { + if (Object.prototype.hasOwnProperty.call(iterable, id)) { + memoize.call(self, id, iterable[id], fn, nameTr); + } + } +} + +module.exports = Collection; diff --git a/node_modules/aws-sdk/lib/model/operation.js b/node_modules/aws-sdk/lib/model/operation.js new file mode 100644 index 0000000..616d5fe --- /dev/null +++ b/node_modules/aws-sdk/lib/model/operation.js @@ -0,0 +1,53 @@ +var Shape = require('./shape'); + +var util = require('../util'); +var property = util.property; +var memoizedProperty = util.memoizedProperty; + +function Operation(name, operation, options) { + options = options || {}; + + property(this, 'name', operation.name || name); + property(this, 'api', options.api, false); + + operation.http = operation.http || {}; + property(this, 'httpMethod', operation.http.method || 'POST'); + property(this, 'httpPath', operation.http.requestUri || '/'); + property(this, 'authtype', operation.authtype || ''); + + memoizedProperty(this, 'input', function() { + if (!operation.input) { + return new Shape.create({type: 'structure'}, options); + } + return Shape.create(operation.input, options); + }); + + memoizedProperty(this, 'output', function() { + if (!operation.output) { + return new Shape.create({type: 'structure'}, options); + } + return Shape.create(operation.output, options); + }); + + memoizedProperty(this, 'errors', function() { + var list = []; + if (!operation.errors) return null; + + for (var i = 0; i < operation.errors.length; i++) { + list.push(Shape.create(operation.errors[i], options)); + } + + return list; + }); + + memoizedProperty(this, 'paginator', function() { + return options.api.paginators[name]; + }); + + if (options.documentation) { + property(this, 'documentation', operation.documentation); + property(this, 'documentationUrl', operation.documentationUrl); + } +} + +module.exports = Operation; diff --git a/node_modules/aws-sdk/lib/model/paginator.js b/node_modules/aws-sdk/lib/model/paginator.js new file mode 100644 index 0000000..1fad68e --- /dev/null +++ b/node_modules/aws-sdk/lib/model/paginator.js @@ -0,0 +1,11 @@ +var property = require('../util').property; + +function Paginator(name, paginator) { + property(this, 'inputToken', paginator.input_token); + property(this, 'limitKey', paginator.limit_key); + property(this, 'moreResults', paginator.more_results); + property(this, 'outputToken', paginator.output_token); + property(this, 'resultKey', paginator.result_key); +} + +module.exports = Paginator; diff --git a/node_modules/aws-sdk/lib/model/resource_waiter.js b/node_modules/aws-sdk/lib/model/resource_waiter.js new file mode 100644 index 0000000..110482b --- /dev/null +++ b/node_modules/aws-sdk/lib/model/resource_waiter.js @@ -0,0 +1,30 @@ +var util = require('../util'); +var property = util.property; + +function ResourceWaiter(name, waiter, options) { + options = options || {}; + property(this, 'name', name); + property(this, 'api', options.api, false); + + if (waiter.operation) { + property(this, 'operation', util.string.lowerFirst(waiter.operation)); + } + + var self = this; + var keys = [ + 'type', + 'description', + 'delay', + 'maxAttempts', + 'acceptors' + ]; + + keys.forEach(function(key) { + var value = waiter[key]; + if (value) { + property(self, key, value); + } + }); +} + +module.exports = ResourceWaiter; diff --git a/node_modules/aws-sdk/lib/model/shape.js b/node_modules/aws-sdk/lib/model/shape.js new file mode 100644 index 0000000..44ac3d7 --- /dev/null +++ b/node_modules/aws-sdk/lib/model/shape.js @@ -0,0 +1,346 @@ +var Collection = require('./collection'); + +var util = require('../util'); + +function property(obj, name, value) { + if (value !== null && value !== undefined) { + util.property.apply(this, arguments); + } +} + +function memoizedProperty(obj, name) { + if (!obj.constructor.prototype[name]) { + util.memoizedProperty.apply(this, arguments); + } +} + +function Shape(shape, options, memberName) { + options = options || {}; + + property(this, 'shape', shape.shape); + property(this, 'api', options.api, false); + property(this, 'type', shape.type); + property(this, 'enum', shape.enum); + property(this, 'min', shape.min); + property(this, 'max', shape.max); + property(this, 'pattern', shape.pattern); + property(this, 'location', shape.location || this.location || 'body'); + property(this, 'name', this.name || shape.xmlName || shape.queryName || + shape.locationName || memberName); + property(this, 'isStreaming', shape.streaming || this.isStreaming || false); + property(this, 'isComposite', shape.isComposite || false); + property(this, 'isShape', true, false); + property(this, 'isQueryName', shape.queryName ? true : false, false); + property(this, 'isLocationName', shape.locationName ? true : false, false); + + if (options.documentation) { + property(this, 'documentation', shape.documentation); + property(this, 'documentationUrl', shape.documentationUrl); + } + + if (shape.xmlAttribute) { + property(this, 'isXmlAttribute', shape.xmlAttribute || false); + } + + // type conversion and parsing + property(this, 'defaultValue', null); + this.toWireFormat = function(value) { + if (value === null || value === undefined) return ''; + return value; + }; + this.toType = function(value) { return value; }; +} + +/** + * @api private + */ +Shape.normalizedTypes = { + character: 'string', + double: 'float', + long: 'integer', + short: 'integer', + biginteger: 'integer', + bigdecimal: 'float', + blob: 'binary' +}; + +/** + * @api private + */ +Shape.types = { + 'structure': StructureShape, + 'list': ListShape, + 'map': MapShape, + 'boolean': BooleanShape, + 'timestamp': TimestampShape, + 'float': FloatShape, + 'integer': IntegerShape, + 'string': StringShape, + 'base64': Base64Shape, + 'binary': BinaryShape +}; + +Shape.resolve = function resolve(shape, options) { + if (shape.shape) { + var refShape = options.api.shapes[shape.shape]; + if (!refShape) { + throw new Error('Cannot find shape reference: ' + shape.shape); + } + + return refShape; + } else { + return null; + } +}; + +Shape.create = function create(shape, options, memberName) { + if (shape.isShape) return shape; + + var refShape = Shape.resolve(shape, options); + if (refShape) { + var filteredKeys = Object.keys(shape); + if (!options.documentation) { + filteredKeys = filteredKeys.filter(function(name) { + return !name.match(/documentation/); + }); + } + if (filteredKeys === ['shape']) { // no inline customizations + return refShape; + } + + // create an inline shape with extra members + var InlineShape = function() { + refShape.constructor.call(this, shape, options, memberName); + }; + InlineShape.prototype = refShape; + return new InlineShape(); + } else { + // set type if not set + if (!shape.type) { + if (shape.members) shape.type = 'structure'; + else if (shape.member) shape.type = 'list'; + else if (shape.key) shape.type = 'map'; + else shape.type = 'string'; + } + + // normalize types + var origType = shape.type; + if (Shape.normalizedTypes[shape.type]) { + shape.type = Shape.normalizedTypes[shape.type]; + } + + if (Shape.types[shape.type]) { + return new Shape.types[shape.type](shape, options, memberName); + } else { + throw new Error('Unrecognized shape type: ' + origType); + } + } +}; + +function CompositeShape(shape) { + Shape.apply(this, arguments); + property(this, 'isComposite', true); + + if (shape.flattened) { + property(this, 'flattened', shape.flattened || false); + } +} + +function StructureShape(shape, options) { + var requiredMap = null, firstInit = !this.isShape; + + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return {}; }); + property(this, 'members', {}); + property(this, 'memberNames', []); + property(this, 'required', []); + property(this, 'isRequired', function() { return false; }); + } + + if (shape.members) { + property(this, 'members', new Collection(shape.members, options, function(name, member) { + return Shape.create(member, options, name); + })); + memoizedProperty(this, 'memberNames', function() { + return shape.xmlOrder || Object.keys(shape.members); + }); + } + + if (shape.required) { + property(this, 'required', shape.required); + property(this, 'isRequired', function(name) { + if (!requiredMap) { + requiredMap = {}; + for (var i = 0; i < shape.required.length; i++) { + requiredMap[shape.required[i]] = true; + } + } + + return requiredMap[name]; + }, false, true); + } + + property(this, 'resultWrapper', shape.resultWrapper || null); + + if (shape.payload) { + property(this, 'payload', shape.payload); + } + + if (typeof shape.xmlNamespace === 'string') { + property(this, 'xmlNamespaceUri', shape.xmlNamespace); + } else if (typeof shape.xmlNamespace === 'object') { + property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix); + property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri); + } +} + +function ListShape(shape, options) { + var self = this, firstInit = !this.isShape; + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return []; }); + } + + if (shape.member) { + memoizedProperty(this, 'member', function() { + return Shape.create(shape.member, options); + }); + } + + if (this.flattened) { + var oldName = this.name; + memoizedProperty(this, 'name', function() { + return self.member.name || oldName; + }); + } +} + +function MapShape(shape, options) { + var firstInit = !this.isShape; + CompositeShape.apply(this, arguments); + + if (firstInit) { + property(this, 'defaultValue', function() { return {}; }); + property(this, 'key', Shape.create({type: 'string'}, options)); + property(this, 'value', Shape.create({type: 'string'}, options)); + } + + if (shape.key) { + memoizedProperty(this, 'key', function() { + return Shape.create(shape.key, options); + }); + } + if (shape.value) { + memoizedProperty(this, 'value', function() { + return Shape.create(shape.value, options); + }); + } +} + +function TimestampShape(shape) { + var self = this; + Shape.apply(this, arguments); + + if (this.location === 'header') { + property(this, 'timestampFormat', 'rfc822'); + } else if (shape.timestampFormat) { + property(this, 'timestampFormat', shape.timestampFormat); + } else if (this.api) { + if (this.api.timestampFormat) { + property(this, 'timestampFormat', this.api.timestampFormat); + } else { + switch (this.api.protocol) { + case 'json': + case 'rest-json': + property(this, 'timestampFormat', 'unixTimestamp'); + break; + case 'rest-xml': + case 'query': + case 'ec2': + property(this, 'timestampFormat', 'iso8601'); + break; + } + } + } + + this.toType = function(value) { + if (value === null || value === undefined) return null; + if (typeof value.toUTCString === 'function') return value; + return typeof value === 'string' || typeof value === 'number' ? + util.date.parseTimestamp(value) : null; + }; + + this.toWireFormat = function(value) { + return util.date.format(value, self.timestampFormat); + }; +} + +function StringShape() { + Shape.apply(this, arguments); + + if (this.api) { + switch (this.api.protocol) { + case 'rest-xml': + case 'query': + case 'ec2': + this.toType = function(value) { return value || ''; }; + } + } +} + +function FloatShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (value === null || value === undefined) return null; + return parseFloat(value); + }; + this.toWireFormat = this.toType; +} + +function IntegerShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (value === null || value === undefined) return null; + return parseInt(value, 10); + }; + this.toWireFormat = this.toType; +} + +function BinaryShape() { + Shape.apply(this, arguments); + this.toType = util.base64.decode; + this.toWireFormat = util.base64.encode; +} + +function Base64Shape() { + BinaryShape.apply(this, arguments); +} + +function BooleanShape() { + Shape.apply(this, arguments); + + this.toType = function(value) { + if (typeof value === 'boolean') return value; + if (value === null || value === undefined) return null; + return value === 'true'; + }; +} + +/** + * @api private + */ +Shape.shapes = { + StructureShape: StructureShape, + ListShape: ListShape, + MapShape: MapShape, + StringShape: StringShape, + BooleanShape: BooleanShape, + Base64Shape: Base64Shape +}; + +module.exports = Shape; diff --git a/node_modules/aws-sdk/lib/node_loader.js b/node_modules/aws-sdk/lib/node_loader.js new file mode 100644 index 0000000..adb25a2 --- /dev/null +++ b/node_modules/aws-sdk/lib/node_loader.js @@ -0,0 +1,67 @@ +var util = require('./util'); + +// node.js specific modules +util.crypto.lib = require('crypto'); +util.Buffer = require('buffer').Buffer; +util.domain = require('domain'); +util.stream = require('stream'); +util.url = require('url'); +util.querystring = require('querystring'); + +var AWS = require('./core'); + +// Use default API loader function +require('./api_loader'); + +// Load the xml2js XML parser +AWS.XML.Parser = require('./xml/node_parser'); + +// Load Node HTTP client +require('./http/node'); + +// Load custom credential providers +require('./credentials/ec2_metadata_credentials'); +require('./credentials/ecs_credentials'); +require('./credentials/environment_credentials'); +require('./credentials/file_system_credentials'); +require('./credentials/shared_ini_file_credentials'); + +// Setup default chain providers +// If this changes, please update documentation for +// AWS.CredentialProviderChain.defaultProviders in +// credentials/credential_provider_chain.js +AWS.CredentialProviderChain.defaultProviders = [ + function () { return new AWS.EnvironmentCredentials('AWS'); }, + function () { return new AWS.EnvironmentCredentials('AMAZON'); }, + function () { return new AWS.SharedIniFileCredentials(); }, + function () { + if (AWS.ECSCredentials.prototype.getECSRelativeUri() !== undefined) { + return new AWS.ECSCredentials(); + } + return new AWS.EC2MetadataCredentials(); + } +]; + +// Update configuration keys +AWS.util.update(AWS.Config.prototype.keys, { + credentials: function () { + var credentials = null; + new AWS.CredentialProviderChain([ + function () { return new AWS.EnvironmentCredentials('AWS'); }, + function () { return new AWS.EnvironmentCredentials('AMAZON'); }, + function () { return new AWS.SharedIniFileCredentials({ disableAssumeRole: true }); } + ]).resolve(function(err, creds) { + if (!err) credentials = creds; + }); + return credentials; + }, + credentialProvider: function() { + return new AWS.CredentialProviderChain(); + }, + region: function() { + return process.env.AWS_REGION || process.env.AMAZON_REGION; + } +}); + +// Reset configuration +AWS.config = new AWS.Config(); diff --git a/node_modules/aws-sdk/lib/param_validator.js b/node_modules/aws-sdk/lib/param_validator.js new file mode 100644 index 0000000..cc42698 --- /dev/null +++ b/node_modules/aws-sdk/lib/param_validator.js @@ -0,0 +1,254 @@ +var AWS = require('./core'); + +/** + * @api private + */ +AWS.ParamValidator = AWS.util.inherit({ + /** + * Create a new validator object. + * + * @param validation [Boolean|map] whether input parameters should be + * validated against the operation description before sending the + * request. Pass a map to enable any of the following specific + * validation features: + * + * * **min** [Boolean] — Validates that a value meets the min + * constraint. This is enabled by default when paramValidation is set + * to `true`. + * * **max** [Boolean] — Validates that a value meets the max + * constraint. + * * **pattern** [Boolean] — Validates that a string value matches a + * regular expression. + * * **enum** [Boolean] — Validates that a string value matches one + * of the allowable enum values. + */ + constructor: function ParamValidator(validation) { + if (validation === true || validation === undefined) { + validation = {'min': true}; + } + this.validation = validation; + }, + + validate: function validate(shape, params, context) { + this.errors = []; + this.validateMember(shape, params || {}, context || 'params'); + + if (this.errors.length > 1) { + var msg = this.errors.join('\n* '); + msg = 'There were ' + this.errors.length + + ' validation errors:\n* ' + msg; + throw AWS.util.error(new Error(msg), + {code: 'MultipleValidationErrors', errors: this.errors}); + } else if (this.errors.length === 1) { + throw this.errors[0]; + } else { + return true; + } + }, + + fail: function fail(code, message) { + this.errors.push(AWS.util.error(new Error(message), {code: code})); + }, + + validateStructure: function validateStructure(shape, params, context) { + this.validateType(params, context, ['object'], 'structure'); + + var paramName; + for (var i = 0; shape.required && i < shape.required.length; i++) { + paramName = shape.required[i]; + var value = params[paramName]; + if (value === undefined || value === null) { + this.fail('MissingRequiredParameter', + 'Missing required key \'' + paramName + '\' in ' + context); + } + } + + // validate hash members + for (paramName in params) { + if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue; + + var paramValue = params[paramName], + memberShape = shape.members[paramName]; + + if (memberShape !== undefined) { + var memberContext = [context, paramName].join('.'); + this.validateMember(memberShape, paramValue, memberContext); + } else { + this.fail('UnexpectedParameter', + 'Unexpected key \'' + paramName + '\' found in ' + context); + } + } + + return true; + }, + + validateMember: function validateMember(shape, param, context) { + switch (shape.type) { + case 'structure': + return this.validateStructure(shape, param, context); + case 'list': + return this.validateList(shape, param, context); + case 'map': + return this.validateMap(shape, param, context); + default: + return this.validateScalar(shape, param, context); + } + }, + + validateList: function validateList(shape, params, context) { + if (this.validateType(params, context, [Array])) { + this.validateRange(shape, params.length, context, 'list member count'); + // validate array members + for (var i = 0; i < params.length; i++) { + this.validateMember(shape.member, params[i], context + '[' + i + ']'); + } + } + }, + + validateMap: function validateMap(shape, params, context) { + if (this.validateType(params, context, ['object'], 'map')) { + // Build up a count of map members to validate range traits. + var mapCount = 0; + for (var param in params) { + if (!Object.prototype.hasOwnProperty.call(params, param)) continue; + // Validate any map key trait constraints + this.validateMember(shape.key, param, + context + '[key=\'' + param + '\']') + this.validateMember(shape.value, params[param], + context + '[\'' + param + '\']'); + mapCount++; + } + this.validateRange(shape, mapCount, context, 'map member count'); + } + }, + + validateScalar: function validateScalar(shape, value, context) { + switch (shape.type) { + case null: + case undefined: + case 'string': + return this.validateString(shape, value, context); + case 'base64': + case 'binary': + return this.validatePayload(value, context); + case 'integer': + case 'float': + return this.validateNumber(shape, value, context); + case 'boolean': + return this.validateType(value, context, ['boolean']); + case 'timestamp': + return this.validateType(value, context, [Date, + /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'], + 'Date object, ISO-8601 string, or a UNIX timestamp'); + default: + return this.fail('UnkownType', 'Unhandled type ' + + shape.type + ' for ' + context); + } + }, + + validateString: function validateString(shape, value, context) { + if (this.validateType(value, context, ['string'])) { + this.validateEnum(shape, value, context); + this.validateRange(shape, value.length, context, 'string length'); + this.validatePattern(shape, value, context); + } + }, + + validatePattern: function validatePattern(shape, value, context) { + if (this.validation['pattern'] && shape['pattern'] !== undefined) { + if (!(new RegExp(shape['pattern'])).test(value)) { + this.fail('PatternMatchError', 'Provided value "' + value + '" ' + + 'does not match regex pattern /' + shape['pattern'] + '/ for ' + + context); + } + } + }, + + validateRange: function validateRange(shape, value, context, descriptor) { + if (this.validation['min']) { + if (shape['min'] !== undefined && value < shape['min']) { + this.fail('MinRangeError', 'Expected ' + descriptor + ' >= ' + + shape['min'] + ', but found ' + value + ' for ' + context); + } + } + if (this.validation['max']) { + if (shape['max'] !== undefined && value > shape['max']) { + this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= ' + + shape['max'] + ', but found ' + value + ' for ' + context); + } + } + }, + + validateEnum: function validateRange(shape, value, context) { + if (this.validation['enum'] && shape['enum'] !== undefined) { + // Fail if the string value is not present in the enum list + if (shape['enum'].indexOf(value) === -1) { + this.fail('EnumError', 'Found string value of ' + value + ', but ' + + 'expected ' + shape['enum'].join('|') + ' for ' + context); + } + } + }, + + validateType: function validateType(value, context, acceptedTypes, type) { + // We will not log an error for null or undefined, but we will return + // false so that callers know that the expected type was not strictly met. + if (value === null || value === undefined) return false; + + var foundInvalidType = false; + for (var i = 0; i < acceptedTypes.length; i++) { + if (typeof acceptedTypes[i] === 'string') { + if (typeof value === acceptedTypes[i]) return true; + } else if (acceptedTypes[i] instanceof RegExp) { + if ((value || '').toString().match(acceptedTypes[i])) return true; + } else { + if (value instanceof acceptedTypes[i]) return true; + if (AWS.util.isType(value, acceptedTypes[i])) return true; + if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice(); + acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]); + } + foundInvalidType = true; + } + + var acceptedType = type; + if (!acceptedType) { + acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1'); + } + + var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : ''; + this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' + + vowel + ' ' + acceptedType); + return false; + }, + + validateNumber: function validateNumber(shape, value, context) { + if (value === null || value === undefined) return; + if (typeof value === 'string') { + var castedValue = parseFloat(value); + if (castedValue.toString() === value) value = castedValue; + } + if (this.validateType(value, context, ['number'])) { + this.validateRange(shape, value, context, 'numeric value'); + } + }, + + validatePayload: function validatePayload(value, context) { + if (value === null || value === undefined) return; + if (typeof value === 'string') return; + if (value && typeof value.byteLength === 'number') return; // typed arrays + if (AWS.util.isNode()) { // special check for buffer/stream in Node.js + var Stream = AWS.util.stream.Stream; + if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; + } + + var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView']; + if (value) { + for (var i = 0; i < types.length; i++) { + if (AWS.util.isType(value, types[i])) return; + if (AWS.util.typeName(value.constructor) === types[i]) return; + } + } + + this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' + + 'string, Buffer, Stream, Blob, or typed array object'); + } +}); diff --git a/node_modules/aws-sdk/lib/protocol/json.js b/node_modules/aws-sdk/lib/protocol/json.js new file mode 100644 index 0000000..b9c9d8c --- /dev/null +++ b/node_modules/aws-sdk/lib/protocol/json.js @@ -0,0 +1,62 @@ +var util = require('../util'); +var JsonBuilder = require('../json/builder'); +var JsonParser = require('../json/parser'); + +function buildRequest(req) { + var httpRequest = req.httpRequest; + var api = req.service.api; + var target = api.targetPrefix + '.' + api.operations[req.operation].name; + var version = api.jsonVersion || '1.0'; + var input = api.operations[req.operation].input; + var builder = new JsonBuilder(); + + if (version === 1) version = '1.0'; + httpRequest.body = builder.build(req.params || {}, input); + httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; + httpRequest.headers['X-Amz-Target'] = target; +} + +function extractError(resp) { + var error = {}; + var httpResponse = resp.httpResponse; + + error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError'; + if (typeof error.code === 'string') { + error.code = error.code.split(':')[0]; + } + + if (httpResponse.body.length > 0) { + var e = JSON.parse(httpResponse.body.toString()); + if (e.__type || e.code) { + error.code = (e.__type || e.code).split('#').pop(); + } + if (error.code === 'RequestEntityTooLarge') { + error.message = 'Request body must be less than 1 MB'; + } else { + error.message = (e.message || e.Message || null); + } + } else { + error.statusCode = httpResponse.statusCode; + error.message = httpResponse.statusCode.toString(); + } + + resp.error = util.error(new Error(), error); +} + +function extractData(resp) { + var body = resp.httpResponse.body.toString() || '{}'; + if (resp.request.service.config.convertResponseTypes === false) { + resp.data = JSON.parse(body); + } else { + var operation = resp.request.service.api.operations[resp.request.operation]; + var shape = operation.output || {}; + var parser = new JsonParser(); + resp.data = parser.parse(body, shape); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; diff --git a/node_modules/aws-sdk/lib/protocol/query.js b/node_modules/aws-sdk/lib/protocol/query.js new file mode 100644 index 0000000..2e1adcb --- /dev/null +++ b/node_modules/aws-sdk/lib/protocol/query.js @@ -0,0 +1,97 @@ +var AWS = require('../core'); +var util = require('../util'); +var QueryParamSerializer = require('../query/query_param_serializer'); +var Shape = require('../model/shape'); + +function buildRequest(req) { + var operation = req.service.api.operations[req.operation]; + var httpRequest = req.httpRequest; + httpRequest.headers['Content-Type'] = + 'application/x-www-form-urlencoded; charset=utf-8'; + httpRequest.params = { + Version: req.service.api.apiVersion, + Action: operation.name + }; + + // convert the request parameters into a list of query params, + // e.g. Deeply.NestedParam.0.Name=value + var builder = new QueryParamSerializer(); + builder.serialize(req.params, operation.input, function(name, value) { + httpRequest.params[name] = value; + }); + httpRequest.body = util.queryParamsToString(httpRequest.params); +} + +function extractError(resp) { + var data, body = resp.httpResponse.body.toString(); + if (body.match('= 0 ? '&' : '?'); + var parts = []; + util.arrayEach(Object.keys(queryString).sort(), function(key) { + if (!Array.isArray(queryString[key])) { + queryString[key] = [queryString[key]]; + } + for (var i = 0; i < queryString[key].length; i++) { + parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]); + } + }); + uri += parts.join('&'); + } + + req.httpRequest.path = uri; +} + +function populateHeaders(req) { + var operation = req.service.api.operations[req.operation]; + util.each(operation.input.members, function (name, member) { + var value = req.params[name]; + if (value === null || value === undefined) return; + + if (member.location === 'headers' && member.type === 'map') { + util.each(value, function(key, memberValue) { + req.httpRequest.headers[member.name + key] = memberValue; + }); + } else if (member.location === 'header') { + value = member.toWireFormat(value).toString(); + req.httpRequest.headers[member.name] = value; + } + }); +} + +function buildRequest(req) { + populateMethod(req); + populateURI(req); + populateHeaders(req); +} + +function extractError() { +} + +function extractData(resp) { + var req = resp.request; + var data = {}; + var r = resp.httpResponse; + var operation = req.service.api.operations[req.operation]; + var output = operation.output; + + // normalize headers names to lower-cased keys for matching + var headers = {}; + util.each(r.headers, function (k, v) { + headers[k.toLowerCase()] = v; + }); + + util.each(output.members, function(name, member) { + var header = (member.name || name).toLowerCase(); + if (member.location === 'headers' && member.type === 'map') { + data[name] = {}; + var location = member.isLocationName ? member.name : ''; + var pattern = new RegExp('^' + location + '(.+)', 'i'); + util.each(r.headers, function (k, v) { + var result = k.match(pattern); + if (result !== null) { + data[name][result[1]] = v; + } + }); + } else if (member.location === 'header') { + if (headers[header] !== undefined) { + data[name] = headers[header]; + } + } else if (member.location === 'statusCode') { + data[name] = parseInt(r.statusCode, 10); + } + }); + + resp.data = data; +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; diff --git a/node_modules/aws-sdk/lib/protocol/rest_json.js b/node_modules/aws-sdk/lib/protocol/rest_json.js new file mode 100644 index 0000000..992bbb5 --- /dev/null +++ b/node_modules/aws-sdk/lib/protocol/rest_json.js @@ -0,0 +1,67 @@ +var util = require('../util'); +var Rest = require('./rest'); +var Json = require('./json'); +var JsonBuilder = require('../json/builder'); +var JsonParser = require('../json/parser'); + +function populateBody(req) { + var builder = new JsonBuilder(); + var input = req.service.api.operations[req.operation].input; + + if (input.payload) { + var params = {}; + var payloadShape = input.members[input.payload]; + params = req.params[input.payload]; + if (params === undefined) return; + + if (payloadShape.type === 'structure') { + req.httpRequest.body = builder.build(params, payloadShape); + } else { // non-JSON payload + req.httpRequest.body = params; + } + } else { + req.httpRequest.body = builder.build(req.params, input); + } +} + +function buildRequest(req) { + Rest.buildRequest(req); + + // never send body payload on GET/HEAD/DELETE + if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) { + populateBody(req); + } +} + +function extractError(resp) { + Json.extractError(resp); +} + +function extractData(resp) { + Rest.extractData(resp); + + var req = resp.request; + var rules = req.service.api.operations[req.operation].output || {}; + if (rules.payload) { + var payloadMember = rules.members[rules.payload]; + var body = resp.httpResponse.body; + if (payloadMember.isStreaming) { + resp.data[rules.payload] = body; + } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') { + var parser = new JsonParser(); + resp.data[rules.payload] = parser.parse(body, payloadMember); + } else { + resp.data[rules.payload] = body.toString(); + } + } else { + var data = resp.data; + Json.extractData(resp); + resp.data = util.merge(data, resp.data); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; diff --git a/node_modules/aws-sdk/lib/protocol/rest_xml.js b/node_modules/aws-sdk/lib/protocol/rest_xml.js new file mode 100644 index 0000000..ebfd1b6 --- /dev/null +++ b/node_modules/aws-sdk/lib/protocol/rest_xml.js @@ -0,0 +1,87 @@ +var AWS = require('../core'); +var util = require('../util'); +var Rest = require('./rest'); + +function populateBody(req) { + var input = req.service.api.operations[req.operation].input; + var builder = new AWS.XML.Builder(); + var params = req.params; + + var payload = input.payload; + if (payload) { + var payloadMember = input.members[payload]; + params = params[payload]; + if (params === undefined) return; + + if (payloadMember.type === 'structure') { + var rootElement = payloadMember.name; + req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true); + } else { // non-xml payload + req.httpRequest.body = params; + } + } else { + req.httpRequest.body = builder.toXML(params, input, input.name || + input.shape || util.string.upperFirst(req.operation) + 'Request'); + } +} + +function buildRequest(req) { + Rest.buildRequest(req); + + // never send body payload on GET/HEAD + if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) { + populateBody(req); + } +} + +function extractError(resp) { + Rest.extractError(resp); + + var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString()); + if (data.Errors) data = data.Errors; + if (data.Error) data = data.Error; + if (data.Code) { + resp.error = util.error(new Error(), { + code: data.Code, + message: data.Message + }); + } else { + resp.error = util.error(new Error(), { + code: resp.httpResponse.statusCode, + message: null + }); + } +} + +function extractData(resp) { + Rest.extractData(resp); + + var parser; + var req = resp.request; + var body = resp.httpResponse.body; + var operation = req.service.api.operations[req.operation]; + var output = operation.output; + + var payload = output.payload; + if (payload) { + var payloadMember = output.members[payload]; + if (payloadMember.isStreaming) { + resp.data[payload] = body; + } else if (payloadMember.type === 'structure') { + parser = new AWS.XML.Parser(); + resp.data[payload] = parser.parse(body.toString(), payloadMember); + } else { + resp.data[payload] = body.toString(); + } + } else if (body.length > 0) { + parser = new AWS.XML.Parser(); + var data = parser.parse(body.toString(), output); + util.update(resp.data, data); + } +} + +module.exports = { + buildRequest: buildRequest, + extractError: extractError, + extractData: extractData +}; diff --git a/node_modules/aws-sdk/lib/query/query_param_serializer.js b/node_modules/aws-sdk/lib/query/query_param_serializer.js new file mode 100644 index 0000000..169acf2 --- /dev/null +++ b/node_modules/aws-sdk/lib/query/query_param_serializer.js @@ -0,0 +1,81 @@ +var util = require('../util'); + +function QueryParamSerializer() { +} + +QueryParamSerializer.prototype.serialize = function(params, shape, fn) { + serializeStructure('', params, shape, fn); +}; + +function ucfirst(shape) { + if (shape.isQueryName || shape.api.protocol !== 'ec2') { + return shape.name; + } else { + return shape.name[0].toUpperCase() + shape.name.substr(1); + } +} + +function serializeStructure(prefix, struct, rules, fn) { + util.each(rules.members, function(name, member) { + var value = struct[name]; + if (value === null || value === undefined) return; + + var memberName = ucfirst(member); + memberName = prefix ? prefix + '.' + memberName : memberName; + serializeMember(memberName, value, member, fn); + }); +} + +function serializeMap(name, map, rules, fn) { + var i = 1; + util.each(map, function (key, value) { + var prefix = rules.flattened ? '.' : '.entry.'; + var position = prefix + (i++) + '.'; + var keyName = position + (rules.key.name || 'key'); + var valueName = position + (rules.value.name || 'value'); + serializeMember(name + keyName, key, rules.key, fn); + serializeMember(name + valueName, value, rules.value, fn); + }); +} + +function serializeList(name, list, rules, fn) { + var memberRules = rules.member || {}; + + if (list.length === 0) { + fn.call(this, name, null); + return; + } + + util.arrayEach(list, function (v, n) { + var suffix = '.' + (n + 1); + if (rules.api.protocol === 'ec2') { + // Do nothing for EC2 + suffix = suffix + ''; // make linter happy + } else if (rules.flattened) { + if (memberRules.name) { + var parts = name.split('.'); + parts.pop(); + parts.push(ucfirst(memberRules)); + name = parts.join('.'); + } + } else { + suffix = '.member' + suffix; + } + serializeMember(name + suffix, v, memberRules, fn); + }); +} + +function serializeMember(name, value, rules, fn) { + if (value === null || value === undefined) return; + if (rules.type === 'structure') { + serializeStructure(name, value, rules, fn); + } else if (rules.type === 'list') { + serializeList(name, value, rules, fn); + } else if (rules.type === 'map') { + serializeMap(name, value, rules, fn); + } else { + fn(name, rules.toWireFormat(value).toString()); + } +} + +module.exports = QueryParamSerializer; diff --git a/node_modules/aws-sdk/lib/region_config.js b/node_modules/aws-sdk/lib/region_config.js new file mode 100644 index 0000000..68d63fa --- /dev/null +++ b/node_modules/aws-sdk/lib/region_config.js @@ -0,0 +1,69 @@ +var util = require('./util'); +var regionConfig = require('./region_config.json'); + +function generateRegionPrefix(region) { + if (!region) return null; + + var parts = region.split('-'); + if (parts.length < 3) return null; + return parts.slice(0, parts.length - 2).join('-') + '-*'; +} + +function derivedKeys(service) { + var region = service.config.region; + var regionPrefix = generateRegionPrefix(region); + var endpointPrefix = service.api.endpointPrefix; + + return [ + [region, endpointPrefix], + [regionPrefix, endpointPrefix], + [region, '*'], + [regionPrefix, '*'], + ['*', endpointPrefix], + ['*', '*'] + ].map(function(item) { + return item[0] && item[1] ? item.join('/') : null; + }); +} + +function applyConfig(service, config) { + util.each(config, function(key, value) { + if (key === 'globalEndpoint') return; + if (service.config[key] === undefined || service.config[key] === null) { + service.config[key] = value; + } + }); +} + +function configureEndpoint(service) { + var keys = derivedKeys(service); + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!key) continue; + + if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) { + var config = regionConfig.rules[key]; + if (typeof config === 'string') { + config = regionConfig.patterns[config]; + } + + // set dualstack endpoint + if (service.config.useDualstack && util.isDualstackAvailable(service)) { + config = util.copy(config); + config.endpoint = '{service}.dualstack.{region}.amazonaws.com'; + } + + // set global endpoint + service.isGlobalEndpoint = !!config.globalEndpoint; + + // signature version + if (!config.signatureVersion) config.signatureVersion = 'v4'; + + // merge config + applyConfig(service, config); + return; + } + } +} + +module.exports = configureEndpoint; diff --git a/node_modules/aws-sdk/lib/region_config.json b/node_modules/aws-sdk/lib/region_config.json new file mode 100644 index 0000000..38a614a --- /dev/null +++ b/node_modules/aws-sdk/lib/region_config.json @@ -0,0 +1,62 @@ +{ + "rules": { + "*/*": { + "endpoint": "{service}.{region}.amazonaws.com" + }, + "cn-*/*": { + "endpoint": "{service}.{region}.amazonaws.com.cn" + }, + "*/cloudfront": "globalSSL", + "*/iam": "globalSSL", + "*/sts": "globalSSL", + "*/importexport": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "v2", + "globalEndpoint": true + }, + "*/route53": { + "endpoint": "https://{service}.amazonaws.com", + "signatureVersion": "v3https", + "globalEndpoint": true + }, + "*/waf": "globalSSL", + "us-gov-*/iam": "globalGovCloud", + "us-gov-*/sts": { + "endpoint": "{service}.{region}.amazonaws.com" + }, + "us-gov-west-1/s3": "s3dash", + "us-west-1/s3": "s3dash", + "us-west-2/s3": "s3dash", + "eu-west-1/s3": "s3dash", + "ap-southeast-1/s3": "s3dash", + "ap-southeast-2/s3": "s3dash", + "ap-northeast-1/s3": "s3dash", + "sa-east-1/s3": "s3dash", + "us-east-1/s3": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "s3" + }, + "us-east-1/sdb": { + "endpoint": "{service}.amazonaws.com", + "signatureVersion": "v2" + }, + "*/sdb": { + "endpoint": "{service}.{region}.amazonaws.com", + "signatureVersion": "v2" + } + }, + + "patterns": { + "globalSSL": { + "endpoint": "https://{service}.amazonaws.com", + "globalEndpoint": true + }, + "globalGovCloud": { + "endpoint": "{service}.us-gov.amazonaws.com" + }, + "s3dash": { + "endpoint": "{service}-{region}.amazonaws.com", + "signatureVersion": "s3" + } + } +} diff --git a/node_modules/aws-sdk/lib/request.js b/node_modules/aws-sdk/lib/request.js new file mode 100644 index 0000000..9282e8c --- /dev/null +++ b/node_modules/aws-sdk/lib/request.js @@ -0,0 +1,756 @@ +var AWS = require('./core'); +var AcceptorStateMachine = require('./state_machine'); +var inherit = AWS.util.inherit; +var domain = AWS.util.domain; +var jmespath = require('jmespath'); + +/** + * @api private + */ +var hardErrorStates = {success: 1, error: 1, complete: 1}; + +function isTerminalState(machine) { + return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState); +} + +var fsm = new AcceptorStateMachine(); +fsm.setupStates = function() { + var transition = function(_, done) { + var self = this; + self._haltHandlersOnError = false; + + self.emit(self._asm.currentState, function(err) { + if (err) { + if (isTerminalState(self)) { + if (domain && self.domain instanceof domain.Domain) { + err.domainEmitter = self; + err.domain = self.domain; + err.domainThrown = false; + self.domain.emit('error', err); + } else { + throw err; + } + } else { + self.response.error = err; + done(err); + } + } else { + done(self.response.error); + } + }); + + }; + + this.addState('validate', 'build', 'error', transition); + this.addState('build', 'afterBuild', 'restart', transition); + this.addState('afterBuild', 'sign', 'restart', transition); + this.addState('sign', 'send', 'retry', transition); + this.addState('retry', 'afterRetry', 'afterRetry', transition); + this.addState('afterRetry', 'sign', 'error', transition); + this.addState('send', 'validateResponse', 'retry', transition); + this.addState('validateResponse', 'extractData', 'extractError', transition); + this.addState('extractError', 'extractData', 'retry', transition); + this.addState('extractData', 'success', 'retry', transition); + this.addState('restart', 'build', 'error', transition); + this.addState('success', 'complete', 'complete', transition); + this.addState('error', 'complete', 'complete', transition); + this.addState('complete', null, null, transition); +}; +fsm.setupStates(); + +/** + * ## Asynchronous Requests + * + * All requests made through the SDK are asynchronous and use a + * callback interface. Each service method that kicks off a request + * returns an `AWS.Request` object that you can use to register + * callbacks. + * + * For example, the following service method returns the request + * object as "request", which can be used to register callbacks: + * + * ```javascript + * // request is an AWS.Request object + * var request = ec2.describeInstances(); + * + * // register callbacks on request to retrieve response data + * request.on('success', function(response) { + * console.log(response.data); + * }); + * ``` + * + * When a request is ready to be sent, the {send} method should + * be called: + * + * ```javascript + * request.send(); + * ``` + * + * ## Removing Default Listeners for Events + * + * Request objects are built with default listeners for the various events, + * depending on the service type. In some cases, you may want to remove + * some built-in listeners to customize behaviour. Doing this requires + * access to the built-in listener functions, which are exposed through + * the {AWS.EventListeners.Core} namespace. For instance, you may + * want to customize the HTTP handler used when sending a request. In this + * case, you can remove the built-in listener associated with the 'send' + * event, the {AWS.EventListeners.Core.SEND} listener and add your own. + * + * ## Multiple Callbacks and Chaining + * + * You can register multiple callbacks on any request object. The + * callbacks can be registered for different events, or all for the + * same event. In addition, you can chain callback registration, for + * example: + * + * ```javascript + * request. + * on('success', function(response) { + * console.log("Success!"); + * }). + * on('error', function(response) { + * console.log("Error!"); + * }). + * on('complete', function(response) { + * console.log("Always!"); + * }). + * send(); + * ``` + * + * The above example will print either "Success! Always!", or "Error! Always!", + * depending on whether the request succeeded or not. + * + * @!attribute httpRequest + * @readonly + * @!group HTTP Properties + * @return [AWS.HttpRequest] the raw HTTP request object + * containing request headers and body information + * sent by the service. + * + * @!attribute startTime + * @readonly + * @!group Operation Properties + * @return [Date] the time that the request started + * + * @!group Request Building Events + * + * @!event validate(request) + * Triggered when a request is being validated. Listeners + * should throw an error if the request should not be sent. + * @param request [Request] the request object being sent + * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS + * @see AWS.EventListeners.Core.VALIDATE_REGION + * @example Ensuring that a certain parameter is set before sending a request + * var req = s3.putObject(params); + * req.on('validate', function() { + * if (!req.params.Body.match(/^Hello\s/)) { + * throw new Error('Body must start with "Hello "'); + * } + * }); + * req.send(function(err, data) { ... }); + * + * @!event build(request) + * Triggered when the request payload is being built. Listeners + * should fill the necessary information to send the request + * over HTTP. + * @param (see AWS.Request~validate) + * @example Add a custom HTTP header to a request + * var req = s3.putObject(params); + * req.on('build', function() { + * req.httpRequest.headers['Custom-Header'] = 'value'; + * }); + * req.send(function(err, data) { ... }); + * + * @!event sign(request) + * Triggered when the request is being signed. Listeners should + * add the correct authentication headers and/or adjust the body, + * depending on the authentication mechanism being used. + * @param (see AWS.Request~validate) + * + * @!group Request Sending Events + * + * @!event send(response) + * Triggered when the request is ready to be sent. Listeners + * should call the underlying transport layer to initiate + * the sending of the request. + * @param response [Response] the response object + * @context [Request] the request object that was sent + * @see AWS.EventListeners.Core.SEND + * + * @!event retry(response) + * Triggered when a request failed and might need to be retried or redirected. + * If the response is retryable, the listener should set the + * `response.error.retryable` property to `true`, and optionally set + * `response.error.retryCount` to the millisecond delay for the next attempt. + * In the case of a redirect, `response.error.redirect` should be set to + * `true` with `retryCount` set to an optional delay on the next request. + * + * If a listener decides that a request should not be retried, + * it should set both `retryable` and `redirect` to false. + * + * Note that a retryable error will be retried at most + * {AWS.Config.maxRetries} times (based on the service object's config). + * Similarly, a request that is redirected will only redirect at most + * {AWS.Config.maxRedirects} times. + * + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * @example Adding a custom retry for a 404 response + * request.on('retry', function(response) { + * // this resource is not yet available, wait 10 seconds to get it again + * if (response.httpResponse.statusCode === 404 && response.error) { + * response.error.retryable = true; // retry this error + * response.error.retryCount = 10000; // wait 10 seconds + * } + * }); + * + * @!group Data Parsing Events + * + * @!event extractError(response) + * Triggered on all non-2xx requests so that listeners can extract + * error details from the response body. Listeners to this event + * should set the `response.error` property. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!event extractData(response) + * Triggered in successful requests to allow listeners to + * de-serialize the response body into `response.data`. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!group Completion Events + * + * @!event success(response) + * Triggered when the request completed successfully. + * `response.data` will contain the response data and + * `response.error` will be null. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!event error(error, response) + * Triggered when an error occurs at any point during the + * request. `response.error` will contain details about the error + * that occurred. `response.data` will be null. + * @param error [Error] the error object containing details about + * the error that occurred. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!event complete(response) + * Triggered whenever a request cycle completes. `response.error` + * should be checked, since the request may have failed. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!group HTTP Events + * + * @!event httpHeaders(statusCode, headers, response) + * Triggered when headers are sent by the remote server + * @param statusCode [Integer] the HTTP response code + * @param headers [map] the response headers + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!event httpData(chunk, response) + * Triggered when data is sent by the remote server + * @param chunk [Buffer] the buffer data containing the next data chunk + * from the server + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * @see AWS.EventListeners.Core.HTTP_DATA + * + * @!event httpUploadProgress(progress, response) + * Triggered when the HTTP request has uploaded more data + * @param progress [map] An object containing the `loaded` and `total` bytes + * of the request. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * @note This event will not be emitted in Node.js 0.8.x. + * + * @!event httpDownloadProgress(progress, response) + * Triggered when the HTTP request has downloaded more data + * @param progress [map] An object containing the `loaded` and `total` bytes + * of the request. + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * @note This event will not be emitted in Node.js 0.8.x. + * + * @!event httpError(error, response) + * Triggered when the HTTP request failed + * @param error [Error] the error object that was thrown + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @!event httpDone(response) + * Triggered when the server is finished sending data + * @param (see AWS.Request~send) + * @context (see AWS.Request~send) + * + * @see AWS.Response + */ +AWS.Request = inherit({ + + /** + * Creates a request for an operation on a given service with + * a set of input parameters. + * + * @param service [AWS.Service] the service to perform the operation on + * @param operation [String] the operation to perform on the service + * @param params [Object] parameters to send to the operation. + * See the operation's documentation for the format of the + * parameters. + */ + constructor: function Request(service, operation, params) { + var endpoint = service.endpoint; + var region = service.config.region; + var customUserAgent = service.config.customUserAgent; + + // global endpoints sign as us-east-1 + if (service.isGlobalEndpoint) region = 'us-east-1'; + + this.domain = domain && domain.active; + this.service = service; + this.operation = operation; + this.params = params || {}; + this.httpRequest = new AWS.HttpRequest(endpoint, region, customUserAgent); + this.startTime = AWS.util.date.getDate(); + + this.response = new AWS.Response(this); + this._asm = new AcceptorStateMachine(fsm.states, 'validate'); + this._haltHandlersOnError = false; + + AWS.SequentialExecutor.call(this); + this.emit = this.emitEvent; + }, + + /** + * @!group Sending a Request + */ + + /** + * @overload send(callback = null) + * Sends the request object. + * + * @callback callback function(err, data) + * If a callback is supplied, it is called when a response is returned + * from the service. + * @context [AWS.Request] the request object being sent. + * @param err [Error] the error object returned from the request. + * Set to `null` if the request is successful. + * @param data [Object] the de-serialized data returned from + * the request. Set to `null` if a request error occurs. + * @example Sending a request with a callback + * request = s3.putObject({Bucket: 'bucket', Key: 'key'}); + * request.send(function(err, data) { console.log(err, data); }); + * @example Sending a request with no callback (using event handlers) + * request = s3.putObject({Bucket: 'bucket', Key: 'key'}); + * request.on('complete', function(response) { ... }); // register a callback + * request.send(); + */ + send: function send(callback) { + if (callback) { + this.on('complete', function (resp) { + callback.call(resp, resp.error, resp.data); + }); + } + this.runTo(); + + return this.response; + }, + + /** + * @!method promise() + * Returns a 'thenable' promise. + * + * Two callbacks can be provided to the `then` method on the returned promise. + * The first callback will be called if the promise is fulfilled, and the second + * callback will be called if the promise is rejected. + * @callback fulfilledCallback function(data) + * Called if the promise is fulfilled. + * @param data [Object] the de-serialized data returned from the request. + * @callback rejectedCallback function(error) + * Called if the promise is rejected. + * @param error [Error] the error object returned from the request. + * @return [Promise] A promise that represents the state of the request. + * @example Sending a request using promises. + * var request = s3.putObject({Bucket: 'bucket', Key: 'key'}); + * var result = request.promise(); + * result.then(function(data) { ... }, function(error) { ... }); + */ + + /** + * @api private + */ + build: function build(callback) { + return this.runTo('send', callback); + }, + + /** + * @api private + */ + runTo: function runTo(state, done) { + this._asm.runTo(state, done, this); + return this; + }, + + /** + * Aborts a request, emitting the error and complete events. + * + * @!macro nobrowser + * @example Aborting a request after sending + * var params = { + * Bucket: 'bucket', Key: 'key', + * Body: new Buffer(1024 * 1024 * 5) // 5MB payload + * }; + * var request = s3.putObject(params); + * request.send(function (err, data) { + * if (err) console.log("Error:", err.code, err.message); + * else console.log(data); + * }); + * + * // abort request in 1 second + * setTimeout(request.abort.bind(request), 1000); + * + * // prints "Error: RequestAbortedError Request aborted by user" + * @return [AWS.Request] the same request object, for chaining. + * @since v1.4.0 + */ + abort: function abort() { + this.removeAllListeners('validateResponse'); + this.removeAllListeners('extractError'); + this.on('validateResponse', function addAbortedError(resp) { + resp.error = AWS.util.error(new Error('Request aborted by user'), { + code: 'RequestAbortedError', retryable: false + }); + }); + + if (this.httpRequest.stream) { // abort HTTP stream + this.httpRequest.stream.abort(); + if (this.httpRequest._abortCallback) { + this.httpRequest._abortCallback(); + } else { + this.removeAllListeners('send'); // haven't sent yet, so let's not + } + } + + return this; + }, + + /** + * Iterates over each page of results given a pageable request, calling + * the provided callback with each page of data. After all pages have been + * retrieved, the callback is called with `null` data. + * + * @note This operation can generate multiple requests to a service. + * @example Iterating over multiple pages of objects in an S3 bucket + * var pages = 1; + * s3.listObjects().eachPage(function(err, data) { + * if (err) return; + * console.log("Page", pages++); + * console.log(data); + * }); + * @example Iterating over multiple pages with an asynchronous callback + * s3.listObjects(params).eachPage(function(err, data, done) { + * doSomethingAsyncAndOrExpensive(function() { + * // The next page of results isn't fetched until done is called + * done(); + * }); + * }); + * @callback callback function(err, data, [doneCallback]) + * Called with each page of resulting data from the request. If the + * optional `doneCallback` is provided in the function, it must be called + * when the callback is complete. + * + * @param err [Error] an error object, if an error occurred. + * @param data [Object] a single page of response data. If there is no + * more data, this object will be `null`. + * @param doneCallback [Function] an optional done callback. If this + * argument is defined in the function declaration, it should be called + * when the next page is ready to be retrieved. This is useful for + * controlling serial pagination across asynchronous operations. + * @return [Boolean] if the callback returns `false`, pagination will + * stop. + * + * @see AWS.Request.eachItem + * @see AWS.Response.nextPage + * @since v1.4.0 + */ + eachPage: function eachPage(callback) { + // Make all callbacks async-ish + callback = AWS.util.fn.makeAsync(callback, 3); + + function wrappedCallback(response) { + callback.call(response, response.error, response.data, function (result) { + if (result === false) return; + + if (response.hasNextPage()) { + response.nextPage().on('complete', wrappedCallback).send(); + } else { + callback.call(response, null, null, AWS.util.fn.noop); + } + }); + } + + this.on('complete', wrappedCallback).send(); + }, + + /** + * Enumerates over individual items of a request, paging the responses if + * necessary. + * + * @api experimental + * @since v1.4.0 + */ + eachItem: function eachItem(callback) { + var self = this; + function wrappedCallback(err, data) { + if (err) return callback(err, null); + if (data === null) return callback(null, null); + + var config = self.service.paginationConfig(self.operation); + var resultKey = config.resultKey; + if (Array.isArray(resultKey)) resultKey = resultKey[0]; + var items = jmespath.search(data, resultKey); + var continueIteration = true; + AWS.util.arrayEach(items, function(item) { + continueIteration = callback(null, item); + if (continueIteration === false) { + return AWS.util.abort; + } + }); + return continueIteration; + } + + this.eachPage(wrappedCallback); + }, + + /** + * @return [Boolean] whether the operation can return multiple pages of + * response data. + * @see AWS.Response.eachPage + * @since v1.4.0 + */ + isPageable: function isPageable() { + return this.service.paginationConfig(this.operation) ? true : false; + }, + + /** + * Converts the request object into a readable stream that + * can be read from or piped into a writable stream. + * + * @note The data read from a readable stream contains only + * the raw HTTP body contents. + * @example Manually reading from a stream + * request.createReadStream().on('data', function(data) { + * console.log("Got data:", data.toString()); + * }); + * @example Piping a request body into a file + * var out = fs.createWriteStream('/path/to/outfile.jpg'); + * s3.service.getObject(params).createReadStream().pipe(out); + * @return [Stream] the readable stream object that can be piped + * or read from (by registering 'data' event listeners). + * @!macro nobrowser + */ + createReadStream: function createReadStream() { + var streams = AWS.util.stream; + var req = this; + var stream = null; + + if (AWS.HttpClient.streamsApiVersion === 2) { + stream = new streams.PassThrough(); + req.send(); + } else { + stream = new streams.Stream(); + stream.readable = true; + + stream.sent = false; + stream.on('newListener', function(event) { + if (!stream.sent && event === 'data') { + stream.sent = true; + process.nextTick(function() { req.send(); }); + } + }); + } + + this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) { + if (statusCode < 300) { + req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA); + req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR); + req.on('httpError', function streamHttpError(error) { + resp.error = error; + resp.error.retryable = false; + }); + + var shouldCheckContentLength = false; + var expectedLen; + if (req.httpRequest.method !== 'HEAD') { + expectedLen = parseInt(headers['content-length'], 10); + } + if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) { + shouldCheckContentLength = true; + var receivedLen = 0; + } + + var checkContentLengthAndEmit = function checkContentLengthAndEmit() { + if (shouldCheckContentLength && receivedLen !== expectedLen) { + stream.emit('error', AWS.util.error( + new Error('Stream content length mismatch. Received ' + + receivedLen + ' of ' + expectedLen + ' bytes.'), + { code: 'StreamContentLengthMismatch' } + )); + } else if (AWS.HttpClient.streamsApiVersion === 2) { + stream.end(); + } else { + stream.emit('end') + } + } + + var httpStream = resp.httpResponse.createUnbufferedStream(); + + if (AWS.HttpClient.streamsApiVersion === 2) { + if (shouldCheckContentLength) { + var lengthAccumulator = new streams.PassThrough(); + lengthAccumulator._write = function(chunk) { + if (chunk && chunk.length) { + receivedLen += chunk.length; + } + return streams.PassThrough.prototype._write.apply(this, arguments); + }; + + lengthAccumulator.on('end', checkContentLengthAndEmit); + httpStream.pipe(lengthAccumulator).pipe(stream, { end: false }); + } else { + httpStream.pipe(stream); + } + } else { + + if (shouldCheckContentLength) { + httpStream.on('data', function(arg) { + if (arg && arg.length) { + receivedLen += arg.length; + } + }); + } + + httpStream.on('data', function(arg) { + stream.emit('data', arg); + }); + httpStream.on('end', checkContentLengthAndEmit); + } + + httpStream.on('error', function(err) { + shouldCheckContentLength = false; + stream.emit('error', err); + }); + } + }); + + this.on('error', function(err) { + stream.emit('error', err); + }); + + return stream; + }, + + /** + * @param [Array,Response] args This should be the response object, + * or an array of args to send to the event. + * @api private + */ + emitEvent: function emit(eventName, args, done) { + if (typeof args === 'function') { done = args; args = null; } + if (!done) done = function() { }; + if (!args) args = this.eventParameters(eventName, this.response); + + var origEmit = AWS.SequentialExecutor.prototype.emit; + origEmit.call(this, eventName, args, function (err) { + if (err) this.response.error = err; + done.call(this, err); + }); + }, + + /** + * @api private + */ + eventParameters: function eventParameters(eventName) { + switch (eventName) { + case 'restart': + case 'validate': + case 'sign': + case 'build': + case 'afterValidate': + case 'afterBuild': + return [this]; + case 'error': + return [this.response.error, this.response]; + default: + return [this.response]; + } + }, + + /** + * @api private + */ + presign: function presign(expires, callback) { + if (!callback && typeof expires === 'function') { + callback = expires; + expires = null; + } + return new AWS.Signers.Presign().sign(this.toGet(), expires, callback); + }, + + /** + * @api private + */ + isPresigned: function isPresigned() { + return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires'); + }, + + /** + * @api private + */ + toUnauthenticated: function toUnauthenticated() { + this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS); + this.removeListener('sign', AWS.EventListeners.Core.SIGN); + return this; + }, + + /** + * @api private + */ + toGet: function toGet() { + if (this.service.api.protocol === 'query' || + this.service.api.protocol === 'ec2') { + this.removeListener('build', this.buildAsGet); + this.addListener('build', this.buildAsGet); + } + return this; + }, + + /** + * @api private + */ + buildAsGet: function buildAsGet(request) { + request.httpRequest.method = 'GET'; + request.httpRequest.path = request.service.endpoint.path + + '?' + request.httpRequest.body; + request.httpRequest.body = ''; + + // don't need these headers on a GET request + delete request.httpRequest.headers['Content-Length']; + delete request.httpRequest.headers['Content-Type']; + }, + + /** + * @api private + */ + haltHandlersOnError: function haltHandlersOnError() { + this._haltHandlersOnError = true; + } +}); + +AWS.util.addPromisesToRequests(AWS.Request); + +AWS.util.mixin(AWS.Request, AWS.SequentialExecutor); diff --git a/node_modules/aws-sdk/lib/resource_waiter.js b/node_modules/aws-sdk/lib/resource_waiter.js new file mode 100644 index 0000000..a2fe364 --- /dev/null +++ b/node_modules/aws-sdk/lib/resource_waiter.js @@ -0,0 +1,178 @@ +/** + * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You + * may not use this file except in compliance with the License. A copy of + * the License is located at + * + * http://aws.amazon.com/apache2.0/ + * + * or in the "license" file accompanying this file. This file is + * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF + * ANY KIND, either express or implied. See the License for the specific + * language governing permissions and limitations under the License. + */ + +var AWS = require('./core'); +var inherit = AWS.util.inherit; +var jmespath = require('jmespath'); + +/** + * @api private + */ +function CHECK_ACCEPTORS(resp) { + var waiter = resp.request._waiter; + var acceptors = waiter.config.acceptors; + var acceptorMatched = false; + var state = 'retry'; + + acceptors.forEach(function(acceptor) { + if (!acceptorMatched) { + var matcher = waiter.matchers[acceptor.matcher]; + if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) { + acceptorMatched = true; + state = acceptor.state; + } + } + }); + + if (!acceptorMatched && resp.error) state = 'failure'; + + if (state === 'success') { + waiter.setSuccess(resp); + } else { + waiter.setError(resp, state === 'retry'); + } +} + +/** + * @api private + */ +AWS.ResourceWaiter = inherit({ + /** + * Waits for a given state on a service object + * @param service [Service] the service object to wait on + * @param state [String] the state (defined in waiter configuration) to wait + * for. + * @example Create a waiter for running EC2 instances + * var ec2 = new AWS.EC2; + * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning'); + */ + constructor: function constructor(service, state) { + this.service = service; + this.state = state; + this.loadWaiterConfig(this.state); + }, + + service: null, + + state: null, + + config: null, + + matchers: { + path: function(resp, expected, argument) { + var result = jmespath.search(resp.data, argument); + return jmespath.strictDeepEqual(result,expected); + }, + + pathAll: function(resp, expected, argument) { + var results = jmespath.search(resp.data, argument); + if (!Array.isArray(results)) results = [results]; + var numResults = results.length; + if (!numResults) return false; + for (var ind = 0 ; ind < numResults; ind++) { + if (!jmespath.strictDeepEqual(results[ind], expected)) { + return false; + } + } + return true; + }, + + pathAny: function(resp, expected, argument) { + var results = jmespath.search(resp.data, argument); + if (!Array.isArray(results)) results = [results]; + var numResults = results.length; + for (var ind = 0 ; ind < numResults; ind++) { + if (jmespath.strictDeepEqual(results[ind], expected)) { + return true; + } + } + return false; + }, + + status: function(resp, expected) { + var statusCode = resp.httpResponse.statusCode; + return (typeof statusCode === 'number') && (statusCode === expected); + }, + + error: function(resp, expected) { + if (typeof expected === 'string' && resp.error) { + return expected === resp.error.code; + } + // if expected is not string, can be boolean indicating presence of error + return expected === !!resp.error; + } + }, + + listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) { + add('RETRY_CHECK', 'retry', function(resp) { + var waiter = resp.request._waiter; + if (resp.error && resp.error.code === 'ResourceNotReady') { + resp.error.retryDelay = (waiter.config.delay || 0) * 1000; + } + }); + + add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS); + + add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS); + }), + + /** + * @return [AWS.Request] + */ + wait: function wait(params, callback) { + if (typeof params === 'function') { + callback = params; params = undefined; + } + + var request = this.service.makeRequest(this.config.operation, params); + request._waiter = this; + request.response.maxRetries = this.config.maxAttempts; + request.addListeners(this.listeners); + + if (callback) request.send(callback); + return request; + }, + + setSuccess: function setSuccess(resp) { + resp.error = null; + resp.data = resp.data || {}; + resp.request.removeAllListeners('extractData'); + }, + + setError: function setError(resp, retryable) { + resp.data = null; + resp.error = AWS.util.error(resp.error || new Error(), { + code: 'ResourceNotReady', + message: 'Resource is not in the state ' + this.state, + retryable: retryable + }); + }, + + /** + * Loads waiter configuration from API configuration + * + * @api private + */ + loadWaiterConfig: function loadWaiterConfig(state) { + if (!this.service.api.waiters[state]) { + throw new AWS.util.error(new Error(), { + code: 'StateNotFoundError', + message: 'State ' + state + ' not found.' + }); + } + + this.config = this.service.api.waiters[state]; + } +}); diff --git a/node_modules/aws-sdk/lib/response.js b/node_modules/aws-sdk/lib/response.js new file mode 100644 index 0000000..568f831 --- /dev/null +++ b/node_modules/aws-sdk/lib/response.js @@ -0,0 +1,201 @@ +var AWS = require('./core'); +var inherit = AWS.util.inherit; +var jmespath = require('jmespath'); + +/** + * This class encapsulates the response information + * from a service request operation sent through {AWS.Request}. + * The response object has two main properties for getting information + * back from a request: + * + * ## The `data` property + * + * The `response.data` property contains the serialized object data + * retrieved from the service request. For instance, for an + * Amazon DynamoDB `listTables` method call, the response data might + * look like: + * + * ``` + * > resp.data + * { TableNames: + * [ 'table1', 'table2', ... ] } + * ``` + * + * The `data` property can be null if an error occurs (see below). + * + * ## The `error` property + * + * In the event of a service error (or transfer error), the + * `response.error` property will be filled with the given + * error data in the form: + * + * ``` + * { code: 'SHORT_UNIQUE_ERROR_CODE', + * message: 'Some human readable error message' } + * ``` + * + * In the case of an error, the `data` property will be `null`. + * Note that if you handle events that can be in a failure state, + * you should always check whether `response.error` is set + * before attempting to access the `response.data` property. + * + * @!attribute data + * @readonly + * @!group Data Properties + * @note Inside of a {AWS.Request~httpData} event, this + * property contains a single raw packet instead of the + * full de-serialized service response. + * @return [Object] the de-serialized response data + * from the service. + * + * @!attribute error + * An structure containing information about a service + * or networking error. + * @readonly + * @!group Data Properties + * @note This attribute is only filled if a service or + * networking error occurs. + * @return [Error] + * * code [String] a unique short code representing the + * error that was emitted. + * * message [String] a longer human readable error message + * * retryable [Boolean] whether the error message is + * retryable. + * * statusCode [Numeric] in the case of a request that reached the service, + * this value contains the response status code. + * * time [Date] the date time object when the error occurred. + * * hostname [String] set when a networking error occurs to easily + * identify the endpoint of the request. + * * region [String] set when a networking error occurs to easily + * identify the region of the request. + * + * @!attribute requestId + * @readonly + * @!group Data Properties + * @return [String] the unique request ID associated with the response. + * Log this value when debugging requests for AWS support. + * + * @!attribute retryCount + * @readonly + * @!group Operation Properties + * @return [Integer] the number of retries that were + * attempted before the request was completed. + * + * @!attribute redirectCount + * @readonly + * @!group Operation Properties + * @return [Integer] the number of redirects that were + * followed before the request was completed. + * + * @!attribute httpResponse + * @readonly + * @!group HTTP Properties + * @return [AWS.HttpResponse] the raw HTTP response object + * containing the response headers and body information + * from the server. + * + * @see AWS.Request + */ +AWS.Response = inherit({ + + /** + * @api private + */ + constructor: function Response(request) { + this.request = request; + this.data = null; + this.error = null; + this.retryCount = 0; + this.redirectCount = 0; + this.httpResponse = new AWS.HttpResponse(); + if (request) { + this.maxRetries = request.service.numRetries(); + this.maxRedirects = request.service.config.maxRedirects; + } + }, + + /** + * Creates a new request for the next page of response data, calling the + * callback with the page data if a callback is provided. + * + * @callback callback function(err, data) + * Called when a page of data is returned from the next request. + * + * @param err [Error] an error object, if an error occurred in the request + * @param data [Object] the next page of data, or null, if there are no + * more pages left. + * @return [AWS.Request] the request object for the next page of data + * @return [null] if no callback is provided and there are no pages left + * to retrieve. + * @since v1.4.0 + */ + nextPage: function nextPage(callback) { + var config; + var service = this.request.service; + var operation = this.request.operation; + try { + config = service.paginationConfig(operation, true); + } catch (e) { this.error = e; } + + if (!this.hasNextPage()) { + if (callback) callback(this.error, null); + else if (this.error) throw this.error; + return null; + } + + var params = AWS.util.copy(this.request.params); + if (!this.nextPageTokens) { + return callback ? callback(null, null) : null; + } else { + var inputTokens = config.inputToken; + if (typeof inputTokens === 'string') inputTokens = [inputTokens]; + for (var i = 0; i < inputTokens.length; i++) { + params[inputTokens[i]] = this.nextPageTokens[i]; + } + return service.makeRequest(this.request.operation, params, callback); + } + }, + + /** + * @return [Boolean] whether more pages of data can be returned by further + * requests + * @since v1.4.0 + */ + hasNextPage: function hasNextPage() { + this.cacheNextPageTokens(); + if (this.nextPageTokens) return true; + if (this.nextPageTokens === undefined) return undefined; + else return false; + }, + + /** + * @api private + */ + cacheNextPageTokens: function cacheNextPageTokens() { + if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens; + this.nextPageTokens = undefined; + + var config = this.request.service.paginationConfig(this.request.operation); + if (!config) return this.nextPageTokens; + + this.nextPageTokens = null; + if (config.moreResults) { + if (!jmespath.search(this.data, config.moreResults)) { + return this.nextPageTokens; + } + } + + var exprs = config.outputToken; + if (typeof exprs === 'string') exprs = [exprs]; + AWS.util.arrayEach.call(this, exprs, function (expr) { + var output = jmespath.search(this.data, expr); + if (output) { + this.nextPageTokens = this.nextPageTokens || []; + this.nextPageTokens.push(output); + } + }); + + return this.nextPageTokens; + } + +}); diff --git a/node_modules/aws-sdk/lib/s3/managed_upload.js b/node_modules/aws-sdk/lib/s3/managed_upload.js new file mode 100644 index 0000000..1dcb1e6 --- /dev/null +++ b/node_modules/aws-sdk/lib/s3/managed_upload.js @@ -0,0 +1,601 @@ +var AWS = require('../core'); +var byteLength = AWS.util.string.byteLength; +var Buffer = AWS.util.Buffer; + +/** + * The managed uploader allows for easy and efficient uploading of buffers, + * blobs, or streams, using a configurable amount of concurrency to perform + * multipart uploads where possible. This abstraction also enables uploading + * streams of unknown size due to the use of multipart uploads. + * + * To construct a managed upload object, see the {constructor} function. + * + * ## Tracking upload progress + * + * The managed upload object can also track progress by attaching an + * 'httpUploadProgress' listener to the upload manager. This event is similar + * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress + * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more + * information. + * + * ## Handling Multipart Cleanup + * + * By default, this class will automatically clean up any multipart uploads + * when an individual part upload fails. This behavior can be disabled in order + * to manually handle failures by setting the `leavePartsOnError` configuration + * option to `true` when initializing the upload object. + * + * @!event httpUploadProgress(progress) + * Triggered when the uploader has uploaded more data. + * @note The `total` property may not be set if the stream being uploaded has + * not yet finished chunking. In this case the `total` will be undefined + * until the total stream size is known. + * @note This event will not be emitted in Node.js 0.8.x. + * @param progress [map] An object containing the `loaded` and `total` bytes + * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload + * size is known. + * @context (see AWS.Request~send) + */ +AWS.S3.ManagedUpload = AWS.util.inherit({ + /** + * Creates a managed upload object with a set of configuration options. + * + * @note A "Body" parameter is required to be set prior to calling {send}. + * @option options params [map] a map of parameters to pass to the upload + * requests. The "Body" parameter is required to be specified either on + * the service or in the params option. + * @note ContentMD5 should not be provided when using the managed upload object. + * Instead, setting "computeChecksums" to true will enable automatic ContentMD5 generation + * by the managed upload object. + * @option options queueSize [Number] (4) the size of the concurrent queue + * manager to upload parts in parallel. Set to 1 for synchronous uploading + * of parts. Note that the uploader will buffer at most queueSize * partSize + * bytes into memory at any given time. + * @option options partSize [Number] (5mb) the size in bytes for each + * individual part to be uploaded. Adjust the part size to ensure the number + * of parts does not exceed {maxTotalParts}. See {minPartSize} for the + * minimum allowed part size. + * @option options leavePartsOnError [Boolean] (false) whether to abort the + * multipart upload if an error occurs. Set to true if you want to handle + * failures manually. + * @option options service [AWS.S3] an optional S3 service object to use for + * requests. This object might have bound parameters used by the uploader. + * @example Creating a default uploader for a stream object + * var upload = new AWS.S3.ManagedUpload({ + * params: {Bucket: 'bucket', Key: 'key', Body: stream} + * }); + * @example Creating an uploader with concurrency of 1 and partSize of 10mb + * var upload = new AWS.S3.ManagedUpload({ + * partSize: 10 * 1024 * 1024, queueSize: 1, + * params: {Bucket: 'bucket', Key: 'key', Body: stream} + * }); + * @see send + */ + constructor: function ManagedUpload(options) { + var self = this; + AWS.SequentialExecutor.call(self); + self.body = null; + self.sliceFn = null; + self.callback = null; + self.parts = {}; + self.completeInfo = []; + self.fillQueue = function() { + self.callback(new Error('Unsupported body payload ' + typeof self.body)); + }; + + self.configure(options); + }, + + /** + * @api private + */ + configure: function configure(options) { + options = options || {}; + this.partSize = this.minPartSize; + + if (options.queueSize) this.queueSize = options.queueSize; + if (options.partSize) this.partSize = options.partSize; + if (options.leavePartsOnError) this.leavePartsOnError = true; + + if (this.partSize < this.minPartSize) { + throw new Error('partSize must be greater than ' + + this.minPartSize); + } + + this.service = options.service; + this.bindServiceObject(options.params); + this.validateBody(); + this.adjustTotalBytes(); + }, + + /** + * @api private + */ + leavePartsOnError: false, + + /** + * @api private + */ + queueSize: 4, + + /** + * @api private + */ + partSize: null, + + /** + * @readonly + * @return [Number] the minimum number of bytes for an individual part + * upload. + */ + minPartSize: 1024 * 1024 * 5, + + /** + * @readonly + * @return [Number] the maximum allowed number of parts in a multipart upload. + */ + maxTotalParts: 10000, + + /** + * Initiates the managed upload for the payload. + * + * @callback callback function(err, data) + * @param err [Error] an error or null if no error occurred. + * @param data [map] The response data from the successful upload: + * * `Location` (String) the URL of the uploaded object + * * `ETag` (String) the ETag of the uploaded object + * * `Bucket` (String) the bucket to which the object was uploaded + * * `Key` (String) the key to which the object was uploaded + * @example Sending a managed upload object + * var params = {Bucket: 'bucket', Key: 'key', Body: stream}; + * var upload = new AWS.S3.ManagedUpload({params: params}); + * upload.send(function(err, data) { + * console.log(err, data); + * }); + */ + send: function(callback) { + var self = this; + self.failed = false; + self.callback = callback || function(err) { if (err) throw err; }; + + var runFill = true; + if (self.sliceFn) { + self.fillQueue = self.fillBuffer; + } else if (AWS.util.isNode()) { + var Stream = AWS.util.stream.Stream; + if (self.body instanceof Stream) { + runFill = false; + self.fillQueue = self.fillStream; + self.partBuffers = []; + self.body. + on('readable', function() { self.fillQueue(); }). + on('end', function() { + self.isDoneChunking = true; + self.numParts = self.totalPartNumbers; + self.fillQueue.call(self); + }); + } + } + + if (runFill) self.fillQueue.call(self); + }, + + /** + * Aborts a managed upload, including all concurrent upload requests. + * @note By default, calling this function will cleanup a multipart upload + * if one was created. To leave the multipart upload around after aborting + * a request, configure `leavePartsOnError` to `true` in the {constructor}. + * @note Calling {abort} in the browser environment will not abort any requests + * that are already in flight. If a multipart upload was created, any parts + * not yet uploaded will not be sent, and the multipart upload will be cleaned up. + * @example Aborting an upload + * var params = { + * Bucket: 'bucket', Key: 'key', + * Body: new Buffer(1024 * 1024 * 25) // 25MB payload + * }; + * var upload = s3.upload(params); + * upload.send(function (err, data) { + * if (err) console.log("Error:", err.code, err.message); + * else console.log(data); + * }); + * + * // abort request in 1 second + * setTimeout(upload.abort.bind(upload), 1000); + */ + abort: function() { + this.cleanup(AWS.util.error(new Error('Request aborted by user'), { + code: 'RequestAbortedError', retryable: false + })); + }, + + /** + * @api private + */ + validateBody: function validateBody() { + var self = this; + self.body = self.service.config.params.Body; + if (!self.body) throw new Error('params.Body is required'); + if (typeof self.body === 'string') { + self.body = new AWS.util.Buffer(self.body); + } + self.sliceFn = AWS.util.arraySliceFn(self.body); + }, + + /** + * @api private + */ + bindServiceObject: function bindServiceObject(params) { + params = params || {}; + var self = this; + + // bind parameters to new service object + if (!self.service) { + self.service = new AWS.S3({params: params}); + } else { + var config = AWS.util.copy(self.service.config); + self.service = new self.service.constructor.__super__(config); + self.service.config.params = + AWS.util.merge(self.service.config.params || {}, params); + } + }, + + /** + * @api private + */ + adjustTotalBytes: function adjustTotalBytes() { + var self = this; + try { // try to get totalBytes + self.totalBytes = byteLength(self.body); + } catch (e) { } + + // try to adjust partSize if we know payload length + if (self.totalBytes) { + var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts); + if (newPartSize > self.partSize) self.partSize = newPartSize; + } else { + self.totalBytes = undefined; + } + }, + + /** + * @api private + */ + isDoneChunking: false, + + /** + * @api private + */ + partPos: 0, + + /** + * @api private + */ + totalChunkedBytes: 0, + + /** + * @api private + */ + totalUploadedBytes: 0, + + /** + * @api private + */ + totalBytes: undefined, + + /** + * @api private + */ + numParts: 0, + + /** + * @api private + */ + totalPartNumbers: 0, + + /** + * @api private + */ + activeParts: 0, + + /** + * @api private + */ + doneParts: 0, + + /** + * @api private + */ + parts: null, + + /** + * @api private + */ + completeInfo: null, + + /** + * @api private + */ + failed: false, + + /** + * @api private + */ + multipartReq: null, + + /** + * @api private + */ + partBuffers: null, + + /** + * @api private + */ + partBufferLength: 0, + + /** + * @api private + */ + fillBuffer: function fillBuffer() { + var self = this; + var bodyLen = byteLength(self.body); + + if (bodyLen === 0) { + self.isDoneChunking = true; + self.numParts = 1; + self.nextChunk(self.body); + return; + } + + while (self.activeParts < self.queueSize && self.partPos < bodyLen) { + var endPos = Math.min(self.partPos + self.partSize, bodyLen); + var buf = self.sliceFn.call(self.body, self.partPos, endPos); + self.partPos += self.partSize; + + if (byteLength(buf) < self.partSize || self.partPos === bodyLen) { + self.isDoneChunking = true; + self.numParts = self.totalPartNumbers + 1; + } + self.nextChunk(buf); + } + }, + + /** + * @api private + */ + fillStream: function fillStream() { + var self = this; + if (self.activeParts >= self.queueSize) return; + + var buf = self.body.read(self.partSize - self.partBufferLength) || + self.body.read(); + if (buf) { + self.partBuffers.push(buf); + self.partBufferLength += buf.length; + self.totalChunkedBytes += buf.length; + } + + if (self.partBufferLength >= self.partSize) { + // if we have single buffer we avoid copyfull concat + var pbuf = self.partBuffers.length === 1 ? + self.partBuffers[0] : Buffer.concat(self.partBuffers); + self.partBuffers = []; + self.partBufferLength = 0; + + // if we have more than partSize, push the rest back on the queue + if (pbuf.length > self.partSize) { + var rest = pbuf.slice(self.partSize); + self.partBuffers.push(rest); + self.partBufferLength += rest.length; + pbuf = pbuf.slice(0, self.partSize); + } + + self.nextChunk(pbuf); + } + + if (self.isDoneChunking && !self.isDoneSending) { + // if we have single buffer we avoid copyfull concat + pbuf = self.partBuffers.length === 1 ? + self.partBuffers[0] : Buffer.concat(self.partBuffers); + self.partBuffers = []; + self.partBufferLength = 0; + self.totalBytes = self.totalChunkedBytes; + self.isDoneSending = true; + + if (self.numParts === 0 || pbuf.length > 0) { + self.numParts++; + self.nextChunk(pbuf); + } + } + + self.body.read(0); + }, + + /** + * @api private + */ + nextChunk: function nextChunk(chunk) { + var self = this; + if (self.failed) return null; + + var partNumber = ++self.totalPartNumbers; + if (self.isDoneChunking && partNumber === 1) { + var req = self.service.putObject({Body: chunk}); + req._managedUpload = self; + req.on('httpUploadProgress', self.progress).send(self.finishSinglePart); + return null; + } else if (self.service.config.params.ContentMD5) { + var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), { + code: 'InvalidDigest', retryable: false + }); + + self.cleanup(err); + return null; + } + + if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) { + return null; // Already uploaded this part. + } + + self.activeParts++; + if (!self.service.config.params.UploadId) { + + if (!self.multipartReq) { // create multipart + self.multipartReq = self.service.createMultipartUpload(); + self.multipartReq.on('success', function(resp) { + self.service.config.params.UploadId = resp.data.UploadId; + self.multipartReq = null; + }); + self.queueChunks(chunk, partNumber); + self.multipartReq.on('error', function(err) { + self.cleanup(err); + }); + self.multipartReq.send(); + } else { + self.queueChunks(chunk, partNumber); + } + } else { // multipart is created, just send + self.uploadPart(chunk, partNumber); + } + }, + + /** + * @api private + */ + uploadPart: function uploadPart(chunk, partNumber) { + var self = this; + + var partParams = { + Body: chunk, + ContentLength: AWS.util.string.byteLength(chunk), + PartNumber: partNumber + }; + + var partInfo = {ETag: null, PartNumber: partNumber}; + self.completeInfo[partNumber] = partInfo; + + var req = self.service.uploadPart(partParams); + self.parts[partNumber] = req; + req._lastUploadedBytes = 0; + req._managedUpload = self; + req.on('httpUploadProgress', self.progress); + req.send(function(err, data) { + delete self.parts[partParams.PartNumber]; + self.activeParts--; + + if (!err && (!data || !data.ETag)) { + var message = 'No access to ETag property on response.'; + if (AWS.util.isBrowser()) { + message += ' Check CORS configuration to expose ETag header.'; + } + + err = AWS.util.error(new Error(message), { + code: 'ETagMissing', retryable: false + }); + } + if (err) return self.cleanup(err); + + partInfo.ETag = data.ETag; + self.doneParts++; + if (self.isDoneChunking && self.doneParts === self.numParts) { + self.finishMultiPart(); + } else { + self.fillQueue.call(self); + } + }); + }, + + /** + * @api private + */ + queueChunks: function queueChunks(chunk, partNumber) { + var self = this; + self.multipartReq.on('success', function() { + self.uploadPart(chunk, partNumber); + }); + }, + + /** + * @api private + */ + cleanup: function cleanup(err) { + var self = this; + if (self.failed) return; + + // clean up stream + if (typeof self.body.removeAllListeners === 'function' && + typeof self.body.resume === 'function') { + self.body.removeAllListeners('readable'); + self.body.removeAllListeners('end'); + self.body.resume(); + } + + if (self.service.config.params.UploadId && !self.leavePartsOnError) { + self.service.abortMultipartUpload().send(); + } + + AWS.util.each(self.parts, function(partNumber, part) { + part.removeAllListeners('complete'); + part.abort(); + }); + + self.activeParts = 0; + self.partPos = 0; + self.numParts = 0; + self.totalPartNumbers = 0; + self.parts = {}; + self.failed = true; + self.callback(err); + }, + + /** + * @api private + */ + finishMultiPart: function finishMultiPart() { + var self = this; + var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } }; + self.service.completeMultipartUpload(completeParams, function(err, data) { + if (err) return self.cleanup(err); + else self.callback(err, data); + }); + }, + + /** + * @api private + */ + finishSinglePart: function finishSinglePart(err, data) { + var upload = this.request._managedUpload; + var httpReq = this.request.httpRequest; + var endpoint = httpReq.endpoint; + if (err) return upload.callback(err); + data.Location = + [endpoint.protocol, '//', endpoint.host, httpReq.path].join(''); + data.key = this.request.params.Key; // will stay undocumented + data.Key = this.request.params.Key; + data.Bucket = this.request.params.Bucket; + upload.callback(err, data); + }, + + /** + * @api private + */ + progress: function progress(info) { + var upload = this._managedUpload; + if (this.operation === 'putObject') { + info.part = 1; + info.key = this.params.Key; + } else { + upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes; + this._lastUploadedBytes = info.loaded; + info = { + loaded: upload.totalUploadedBytes, + total: upload.totalBytes, + part: this.params.PartNumber, + key: this.params.Key + }; + } + upload.emit('httpUploadProgress', [info]); + } +}); + +AWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor); +module.exports = AWS.S3.ManagedUpload; diff --git a/node_modules/aws-sdk/lib/sequential_executor.js b/node_modules/aws-sdk/lib/sequential_executor.js new file mode 100644 index 0000000..88c002b --- /dev/null +++ b/node_modules/aws-sdk/lib/sequential_executor.js @@ -0,0 +1,231 @@ +var AWS = require('./core'); + +/** + * @api private + * @!method on(eventName, callback) + * Registers an event listener callback for the event given by `eventName`. + * Parameters passed to the callback function depend on the individual event + * being triggered. See the event documentation for those parameters. + * + * @param eventName [String] the event name to register the listener for + * @param callback [Function] the listener callback function + * @return [AWS.SequentialExecutor] the same object for chaining + */ +AWS.SequentialExecutor = AWS.util.inherit({ + + constructor: function SequentialExecutor() { + this._events = {}; + }, + + /** + * @api private + */ + listeners: function listeners(eventName) { + return this._events[eventName] ? this._events[eventName].slice(0) : []; + }, + + on: function on(eventName, listener) { + if (this._events[eventName]) { + this._events[eventName].push(listener); + } else { + this._events[eventName] = [listener]; + } + return this; + }, + + /** + * @api private + */ + onAsync: function onAsync(eventName, listener) { + listener._isAsync = true; + return this.on(eventName, listener); + }, + + removeListener: function removeListener(eventName, listener) { + var listeners = this._events[eventName]; + if (listeners) { + var length = listeners.length; + var position = -1; + for (var i = 0; i < length; ++i) { + if (listeners[i] === listener) { + position = i; + } + } + if (position > -1) { + listeners.splice(position, 1); + } + } + return this; + }, + + removeAllListeners: function removeAllListeners(eventName) { + if (eventName) { + delete this._events[eventName]; + } else { + this._events = {}; + } + return this; + }, + + /** + * @api private + */ + emit: function emit(eventName, eventArgs, doneCallback) { + if (!doneCallback) doneCallback = function() { }; + var listeners = this.listeners(eventName); + var count = listeners.length; + this.callListeners(listeners, eventArgs, doneCallback); + return count > 0; + }, + + /** + * @api private + */ + callListeners: function callListeners(listeners, args, doneCallback, prevError) { + var self = this; + var error = prevError || null; + + function callNextListener(err) { + if (err) { + error = AWS.util.error(error || new Error(), err); + if (self._haltHandlersOnError) { + return doneCallback.call(self, error); + } + } + self.callListeners(listeners, args, doneCallback, error); + } + + while (listeners.length > 0) { + var listener = listeners.shift(); + if (listener._isAsync) { // asynchronous listener + listener.apply(self, args.concat([callNextListener])); + return; // stop here, callNextListener will continue + } else { // synchronous listener + try { + listener.apply(self, args); + } catch (err) { + error = AWS.util.error(error || new Error(), err); + } + if (error && self._haltHandlersOnError) { + doneCallback.call(self, error); + return; + } + } + } + doneCallback.call(self, error); + }, + + /** + * Adds or copies a set of listeners from another list of + * listeners or SequentialExecutor object. + * + * @param listeners [map>, AWS.SequentialExecutor] + * a list of events and callbacks, or an event emitter object + * containing listeners to add to this emitter object. + * @return [AWS.SequentialExecutor] the emitter object, for chaining. + * @example Adding listeners from a map of listeners + * emitter.addListeners({ + * event1: [function() { ... }, function() { ... }], + * event2: [function() { ... }] + * }); + * emitter.emit('event1'); // emitter has event1 + * emitter.emit('event2'); // emitter has event2 + * @example Adding listeners from another emitter object + * var emitter1 = new AWS.SequentialExecutor(); + * emitter1.on('event1', function() { ... }); + * emitter1.on('event2', function() { ... }); + * var emitter2 = new AWS.SequentialExecutor(); + * emitter2.addListeners(emitter1); + * emitter2.emit('event1'); // emitter2 has event1 + * emitter2.emit('event2'); // emitter2 has event2 + */ + addListeners: function addListeners(listeners) { + var self = this; + + // extract listeners if parameter is an SequentialExecutor object + if (listeners._events) listeners = listeners._events; + + AWS.util.each(listeners, function(event, callbacks) { + if (typeof callbacks === 'function') callbacks = [callbacks]; + AWS.util.arrayEach(callbacks, function(callback) { + self.on(event, callback); + }); + }); + + return self; + }, + + /** + * Registers an event with {on} and saves the callback handle function + * as a property on the emitter object using a given `name`. + * + * @param name [String] the property name to set on this object containing + * the callback function handle so that the listener can be removed in + * the future. + * @param (see on) + * @return (see on) + * @example Adding a named listener DATA_CALLBACK + * var listener = function() { doSomething(); }; + * emitter.addNamedListener('DATA_CALLBACK', 'data', listener); + * + * // the following prints: true + * console.log(emitter.DATA_CALLBACK == listener); + */ + addNamedListener: function addNamedListener(name, eventName, callback) { + this[name] = callback; + this.addListener(eventName, callback); + return this; + }, + + /** + * @api private + */ + addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) { + callback._isAsync = true; + return this.addNamedListener(name, eventName, callback); + }, + + /** + * Helper method to add a set of named listeners using + * {addNamedListener}. The callback contains a parameter + * with a handle to the `addNamedListener` method. + * + * @callback callback function(add) + * The callback function is called immediately in order to provide + * the `add` function to the block. This simplifies the addition of + * a large group of named listeners. + * @param add [Function] the {addNamedListener} function to call + * when registering listeners. + * @example Adding a set of named listeners + * emitter.addNamedListeners(function(add) { + * add('DATA_CALLBACK', 'data', function() { ... }); + * add('OTHER', 'otherEvent', function() { ... }); + * add('LAST', 'lastEvent', function() { ... }); + * }); + * + * // these properties are now set: + * emitter.DATA_CALLBACK; + * emitter.OTHER; + * emitter.LAST; + */ + addNamedListeners: function addNamedListeners(callback) { + var self = this; + callback( + function() { + self.addNamedListener.apply(self, arguments); + }, + function() { + self.addNamedAsyncListener.apply(self, arguments); + } + ); + return this; + } +}); + +/** + * {on} is the prefered method. + * @api private + */ +AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on; + +module.exports = AWS.SequentialExecutor; diff --git a/node_modules/aws-sdk/lib/service.js b/node_modules/aws-sdk/lib/service.js new file mode 100644 index 0000000..43aaa3e --- /dev/null +++ b/node_modules/aws-sdk/lib/service.js @@ -0,0 +1,539 @@ +var AWS = require('./core'); +var Api = require('./model/api'); +var regionConfig = require('./region_config'); +var inherit = AWS.util.inherit; +var clientCount = 0; + +/** + * The service class representing an AWS service. + * + * @abstract + * + * @!attribute apiVersions + * @return [Array] the list of API versions supported by this service. + * @readonly + */ +AWS.Service = inherit({ + /** + * Create a new service object with a configuration object + * + * @param config [map] a map of configuration options + */ + constructor: function Service(config) { + if (!this.loadServiceClass) { + throw AWS.util.error(new Error(), + 'Service must be constructed with `new\' operator'); + } + var ServiceClass = this.loadServiceClass(config || {}); + if (ServiceClass) { + var originalConfig = AWS.util.copy(config); + var svc = new ServiceClass(config); + Object.defineProperty(svc, '_originalConfig', { + get: function() { return originalConfig; }, + enumerable: false, + configurable: true + }); + svc._clientId = ++clientCount; + return svc; + } + this.initialize(config); + }, + + /** + * @api private + */ + initialize: function initialize(config) { + var svcConfig = AWS.config[this.serviceIdentifier]; + + this.config = new AWS.Config(AWS.config); + if (svcConfig) this.config.update(svcConfig, true); + if (config) this.config.update(config, true); + + this.validateService(); + if (!this.config.endpoint) regionConfig(this); + + this.config.endpoint = this.endpointFromTemplate(this.config.endpoint); + this.setEndpoint(this.config.endpoint); + }, + + /** + * @api private + */ + validateService: function validateService() { + }, + + /** + * @api private + */ + loadServiceClass: function loadServiceClass(serviceConfig) { + var config = serviceConfig; + if (!AWS.util.isEmpty(this.api)) { + return null; + } else if (config.apiConfig) { + return AWS.Service.defineServiceApi(this.constructor, config.apiConfig); + } else if (!this.constructor.services) { + return null; + } else { + config = new AWS.Config(AWS.config); + config.update(serviceConfig, true); + var version = config.apiVersions[this.constructor.serviceIdentifier]; + version = version || config.apiVersion; + return this.getLatestServiceClass(version); + } + }, + + /** + * @api private + */ + getLatestServiceClass: function getLatestServiceClass(version) { + version = this.getLatestServiceVersion(version); + if (this.constructor.services[version] === null) { + AWS.Service.defineServiceApi(this.constructor, version); + } + + return this.constructor.services[version]; + }, + + /** + * @api private + */ + getLatestServiceVersion: function getLatestServiceVersion(version) { + if (!this.constructor.services || this.constructor.services.length === 0) { + throw new Error('No services defined on ' + + this.constructor.serviceIdentifier); + } + + if (!version) { + version = 'latest'; + } else if (AWS.util.isType(version, Date)) { + version = AWS.util.date.iso8601(version).split('T')[0]; + } + + if (Object.hasOwnProperty(this.constructor.services, version)) { + return version; + } + + var keys = Object.keys(this.constructor.services).sort(); + var selectedVersion = null; + for (var i = keys.length - 1; i >= 0; i--) { + // versions that end in "*" are not available on disk and can be + // skipped, so do not choose these as selectedVersions + if (keys[i][keys[i].length - 1] !== '*') { + selectedVersion = keys[i]; + } + if (keys[i].substr(0, 10) <= version) { + return selectedVersion; + } + } + + throw new Error('Could not find ' + this.constructor.serviceIdentifier + + ' API to satisfy version constraint `' + version + '\''); + }, + + /** + * @api private + */ + api: {}, + + /** + * @api private + */ + defaultRetryCount: 3, + + /** + * Calls an operation on a service with the given input parameters. + * + * @param operation [String] the name of the operation to call on the service. + * @param params [map] a map of input options for the operation + * @callback callback function(err, data) + * If a callback is supplied, it is called when a response is returned + * from the service. + * @param err [Error] the error object returned from the request. + * Set to `null` if the request is successful. + * @param data [Object] the de-serialized data returned from + * the request. Set to `null` if a request error occurs. + */ + makeRequest: function makeRequest(operation, params, callback) { + if (typeof params === 'function') { + callback = params; + params = null; + } + + params = params || {}; + if (this.config.params) { // copy only toplevel bound params + var rules = this.api.operations[operation]; + if (rules) { + params = AWS.util.copy(params); + AWS.util.each(this.config.params, function(key, value) { + if (rules.input.members[key]) { + if (params[key] === undefined || params[key] === null) { + params[key] = value; + } + } + }); + } + } + + var request = new AWS.Request(this, operation, params); + this.addAllRequestListeners(request); + + if (callback) request.send(callback); + return request; + }, + + /** + * Calls an operation on a service with the given input parameters, without + * any authentication data. This method is useful for "public" API operations. + * + * @param operation [String] the name of the operation to call on the service. + * @param params [map] a map of input options for the operation + * @callback callback function(err, data) + * If a callback is supplied, it is called when a response is returned + * from the service. + * @param err [Error] the error object returned from the request. + * Set to `null` if the request is successful. + * @param data [Object] the de-serialized data returned from + * the request. Set to `null` if a request error occurs. + */ + makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) { + if (typeof params === 'function') { + callback = params; + params = {}; + } + + var request = this.makeRequest(operation, params).toUnauthenticated(); + return callback ? request.send(callback) : request; + }, + + /** + * Waits for a given state + * + * @param state [String] the state on the service to wait for + * @param params [map] a map of parameters to pass with each request + * @callback callback function(err, data) + * If a callback is supplied, it is called when a response is returned + * from the service. + * @param err [Error] the error object returned from the request. + * Set to `null` if the request is successful. + * @param data [Object] the de-serialized data returned from + * the request. Set to `null` if a request error occurs. + */ + waitFor: function waitFor(state, params, callback) { + var waiter = new AWS.ResourceWaiter(this, state); + return waiter.wait(params, callback); + }, + + /** + * @api private + */ + addAllRequestListeners: function addAllRequestListeners(request) { + var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(), + AWS.EventListeners.CorePost]; + for (var i = 0; i < list.length; i++) { + if (list[i]) request.addListeners(list[i]); + } + + // disable parameter validation + if (!this.config.paramValidation) { + request.removeListener('validate', + AWS.EventListeners.Core.VALIDATE_PARAMETERS); + } + + if (this.config.logger) { // add logging events + request.addListeners(AWS.EventListeners.Logger); + } + + this.setupRequestListeners(request); + }, + + /** + * Override this method to setup any custom request listeners for each + * new request to the service. + * + * @abstract + */ + setupRequestListeners: function setupRequestListeners() { + }, + + /** + * Gets the signer class for a given request + * @api private + */ + getSignerClass: function getSignerClass() { + var version; + if (this.config.signatureVersion) { + version = this.config.signatureVersion; + } else { + version = this.api.signatureVersion; + } + return AWS.Signers.RequestSigner.getVersion(version); + }, + + /** + * @api private + */ + serviceInterface: function serviceInterface() { + switch (this.api.protocol) { + case 'ec2': return AWS.EventListeners.Query; + case 'query': return AWS.EventListeners.Query; + case 'json': return AWS.EventListeners.Json; + case 'rest-json': return AWS.EventListeners.RestJson; + case 'rest-xml': return AWS.EventListeners.RestXml; + } + if (this.api.protocol) { + throw new Error('Invalid service `protocol\' ' + + this.api.protocol + ' in API config'); + } + }, + + /** + * @api private + */ + successfulResponse: function successfulResponse(resp) { + return resp.httpResponse.statusCode < 300; + }, + + /** + * How many times a failed request should be retried before giving up. + * the defaultRetryCount can be overriden by service classes. + * + * @api private + */ + numRetries: function numRetries() { + if (this.config.maxRetries !== undefined) { + return this.config.maxRetries; + } else { + return this.defaultRetryCount; + } + }, + + /** + * @api private + */ + retryDelays: function retryDelays(retryCount) { + return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions); + }, + + /** + * @api private + */ + retryableError: function retryableError(error) { + if (this.networkingError(error)) return true; + if (this.expiredCredentialsError(error)) return true; + if (this.throttledError(error)) return true; + if (error.statusCode >= 500) return true; + return false; + }, + + /** + * @api private + */ + networkingError: function networkingError(error) { + return error.code === 'NetworkingError'; + }, + + /** + * @api private + */ + expiredCredentialsError: function expiredCredentialsError(error) { + // TODO : this only handles *one* of the expired credential codes + return (error.code === 'ExpiredTokenException'); + }, + + /** + * @api private + */ + clockSkewError: function clockSkewError(error) { + switch (error.code) { + case 'RequestTimeTooSkewed': + case 'RequestExpired': + case 'InvalidSignatureException': + case 'SignatureDoesNotMatch': + case 'AuthFailure': + case 'RequestInTheFuture': + return true; + default: return false; + } + }, + + /** + * @api private + */ + throttledError: function throttledError(error) { + // this logic varies between services + switch (error.code) { + case 'ProvisionedThroughputExceededException': + case 'Throttling': + case 'ThrottlingException': + case 'RequestLimitExceeded': + case 'RequestThrottled': + return true; + default: + return false; + } + }, + + /** + * @api private + */ + endpointFromTemplate: function endpointFromTemplate(endpoint) { + if (typeof endpoint !== 'string') return endpoint; + + var e = endpoint; + e = e.replace(/\{service\}/g, this.api.endpointPrefix); + e = e.replace(/\{region\}/g, this.config.region); + e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http'); + return e; + }, + + /** + * @api private + */ + setEndpoint: function setEndpoint(endpoint) { + this.endpoint = new AWS.Endpoint(endpoint, this.config); + }, + + /** + * @api private + */ + paginationConfig: function paginationConfig(operation, throwException) { + var paginator = this.api.operations[operation].paginator; + if (!paginator) { + if (throwException) { + var e = new Error(); + throw AWS.util.error(e, 'No pagination configuration for ' + operation); + } + return null; + } + + return paginator; + } +}); + +AWS.util.update(AWS.Service, { + + /** + * Adds one method for each operation described in the api configuration + * + * @api private + */ + defineMethods: function defineMethods(svc) { + AWS.util.each(svc.prototype.api.operations, function iterator(method) { + if (svc.prototype[method]) return; + var operation = svc.prototype.api.operations[method]; + if (operation.authtype === 'none') { + svc.prototype[method] = function (params, callback) { + return this.makeUnauthenticatedRequest(method, params, callback); + }; + } else { + svc.prototype[method] = function (params, callback) { + return this.makeRequest(method, params, callback); + }; + } + }); + }, + + /** + * Defines a new Service class using a service identifier and list of versions + * including an optional set of features (functions) to apply to the class + * prototype. + * + * @param serviceIdentifier [String] the identifier for the service + * @param versions [Array] a list of versions that work with this + * service + * @param features [Object] an object to attach to the prototype + * @return [Class] the service class defined by this function. + */ + defineService: function defineService(serviceIdentifier, versions, features) { + AWS.Service._serviceMap[serviceIdentifier] = true; + if (!Array.isArray(versions)) { + features = versions; + versions = []; + } + + var svc = inherit(AWS.Service, features || {}); + + if (typeof serviceIdentifier === 'string') { + AWS.Service.addVersions(svc, versions); + + var identifier = svc.serviceIdentifier || serviceIdentifier; + svc.serviceIdentifier = identifier; + } else { // defineService called with an API + svc.prototype.api = serviceIdentifier; + AWS.Service.defineMethods(svc); + } + + return svc; + }, + + /** + * @api private + */ + addVersions: function addVersions(svc, versions) { + if (!Array.isArray(versions)) versions = [versions]; + + svc.services = svc.services || {}; + for (var i = 0; i < versions.length; i++) { + if (svc.services[versions[i]] === undefined) { + svc.services[versions[i]] = null; + } + } + + svc.apiVersions = Object.keys(svc.services).sort(); + }, + + /** + * @api private + */ + defineServiceApi: function defineServiceApi(superclass, version, apiConfig) { + var svc = inherit(superclass, { + serviceIdentifier: superclass.serviceIdentifier + }); + + function setApi(api) { + if (api.isApi) { + svc.prototype.api = api; + } else { + svc.prototype.api = new Api(api); + } + } + + if (typeof version === 'string') { + if (apiConfig) { + setApi(apiConfig); + } else { + try { + setApi(AWS.apiLoader(superclass.serviceIdentifier, version)); + } catch (err) { + throw AWS.util.error(err, { + message: 'Could not find API configuration ' + + superclass.serviceIdentifier + '-' + version + }); + } + } + if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) { + superclass.apiVersions = superclass.apiVersions.concat(version).sort(); + } + superclass.services[version] = svc; + } else { + setApi(version); + } + + AWS.Service.defineMethods(svc); + return svc; + }, + + /** + * @api private + */ + hasService: function(identifier) { + return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier); + }, + + /** + * @api private + */ + _serviceMap: {} +}); + +module.exports = AWS.Service; \ No newline at end of file diff --git a/node_modules/aws-sdk/lib/services/apigateway.js b/node_modules/aws-sdk/lib/services/apigateway.js new file mode 100644 index 0000000..feceff0 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/apigateway.js @@ -0,0 +1,34 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.APIGateway.prototype, { +/** + * Sets the Accept header to application/json. + * + * @api private + */ + setAcceptHeader: function setAcceptHeader(req) { + var httpRequest = req.httpRequest; + httpRequest.headers['Accept'] = 'application/json'; + }, + + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('build', this.setAcceptHeader); + if (request.operation === 'getSdk') { + request.addListener('extractData', this.useRawPayload); + } + }, + + useRawPayload: function useRawPayload(resp) { + var req = resp.request; + var operation = req.operation; + var rules = req.service.api.operations[operation].output || {}; + if (rules.payload) { + var body = resp.httpResponse.body; + resp.data[rules.payload] = body; + } + } +}); + diff --git a/node_modules/aws-sdk/lib/services/cloudfront.js b/node_modules/aws-sdk/lib/services/cloudfront.js new file mode 100644 index 0000000..3a918c2 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/cloudfront.js @@ -0,0 +1,12 @@ +var AWS = require('../core'); + +// pull in CloudFront signer +require('../cloudfront/signer'); + +AWS.util.update(AWS.CloudFront.prototype, { + + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('extractData', AWS.util.hoistPayloadMember); + } + +}); diff --git a/node_modules/aws-sdk/lib/services/cloudsearchdomain.js b/node_modules/aws-sdk/lib/services/cloudsearchdomain.js new file mode 100644 index 0000000..e9c9431 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/cloudsearchdomain.js @@ -0,0 +1,120 @@ +var AWS = require('../core'); + +/** + * Constructs a service interface object. Each API operation is exposed as a + * function on service. + * + * ### Sending a Request Using CloudSearchDomain + * + * ```javascript + * var csd = new AWS.CloudSearchDomain({endpoint: 'my.host.tld'}); + * csd.search(params, function (err, data) { + * if (err) console.log(err, err.stack); // an error occurred + * else console.log(data); // successful response + * }); + * ``` + * + * ### Locking the API Version + * + * In order to ensure that the CloudSearchDomain object uses this specific API, + * you can construct the object by passing the `apiVersion` option to the + * constructor: + * + * ```javascript + * var csd = new AWS.CloudSearchDomain({ + * endpoint: 'my.host.tld', + * apiVersion: '2013-01-01' + * }); + * ``` + * + * You can also set the API version globally in `AWS.config.apiVersions` using + * the **cloudsearchdomain** service identifier: + * + * ```javascript + * AWS.config.apiVersions = { + * cloudsearchdomain: '2013-01-01', + * // other service API versions + * }; + * + * var csd = new AWS.CloudSearchDomain({endpoint: 'my.host.tld'}); + * ``` + * + * @note You *must* provide an `endpoint` configuration parameter when + * constructing this service. See {constructor} for more information. + * + * @!method constructor(options = {}) + * Constructs a service object. This object has one method for each + * API operation. + * + * @example Constructing a CloudSearchDomain object + * var csd = new AWS.CloudSearchDomain({endpoint: 'my.host.tld'}); + * @note You *must* provide an `endpoint` when constructing this service. + * @option (see AWS.Config.constructor) + * + * @service cloudsearchdomain + * @version 2013-01-01 + */ +AWS.util.update(AWS.CloudSearchDomain.prototype, { + /** + * @api private + */ + validateService: function validateService() { + if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { + var msg = 'AWS.CloudSearchDomain requires an explicit ' + + '`endpoint\' configuration option.'; + throw AWS.util.error(new Error(), + {name: 'InvalidEndpoint', message: msg}); + } + }, + + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.removeListener('validate', + AWS.EventListeners.Core.VALIDATE_CREDENTIALS + ); + request.onAsync('validate', this.validateCredentials); + request.addListener('validate', this.updateRegion); + if (request.operation === 'search') { + request.addListener('build', this.convertGetToPost); + } + }, + + /** + * @api private + */ + validateCredentials: function(req, done) { + if (!req.service.api.signatureVersion) return done(); // none + req.service.config.getCredentials(function(err) { + if (err) { + req.removeListener('sign', AWS.EventListeners.Core.SIGN); + } + done(); + }); + }, + + /** + * @api private + */ + convertGetToPost: function(request) { + var httpRequest = request.httpRequest + // convert queries to POST to avoid length restrictions + var path = httpRequest.path.split('?') + httpRequest.method = 'POST' + httpRequest.path = path[0] + httpRequest.body = path[1] + httpRequest.headers['Content-Length'] = httpRequest.body.length + httpRequest.headers['Content-Type'] = 'application/x-www-form-urlencoded' + }, + + /** + * @api private + */ + updateRegion: function updateRegion(request) { + var endpoint = request.httpRequest.endpoint.hostname; + var zones = endpoint.split('.'); + request.httpRequest.region = zones[1] || request.httpRequest.region; + } + +}); diff --git a/node_modules/aws-sdk/lib/services/cognitoidentity.js b/node_modules/aws-sdk/lib/services/cognitoidentity.js new file mode 100644 index 0000000..7fa7048 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/cognitoidentity.js @@ -0,0 +1,15 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.CognitoIdentity.prototype, { + getOpenIdToken: function getOpenIdToken(params, callback) { + return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback); + }, + + getId: function getId(params, callback) { + return this.makeUnauthenticatedRequest('getId', params, callback); + }, + + getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) { + return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback); + } +}); diff --git a/node_modules/aws-sdk/lib/services/dynamodb.js b/node_modules/aws-sdk/lib/services/dynamodb.js new file mode 100644 index 0000000..a95bd97 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/dynamodb.js @@ -0,0 +1,53 @@ +var AWS = require('../core'); +require('../dynamodb/document_client'); + +AWS.util.update(AWS.DynamoDB.prototype, { + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + if (request.service.config.dynamoDbCrc32) { + request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); + request.addListener('extractData', this.checkCrc32); + request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); + } + }, + + /** + * @api private + */ + checkCrc32: function checkCrc32(resp) { + if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) { + resp.data = null; + resp.error = AWS.util.error(new Error(), { + code: 'CRC32CheckFailed', + message: 'CRC32 integrity check failed', + retryable: true + }); + resp.request.haltHandlersOnError(); + throw (resp.error); + } + }, + + /** + * @api private + */ + crc32IsValid: function crc32IsValid(resp) { + var crc = resp.httpResponse.headers['x-amz-crc32']; + if (!crc) return true; // no (valid) CRC32 header + return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body); + }, + + /** + * @api private + */ + defaultRetryCount: 10, + + /** + * @api private + */ + retryDelays: function retryDelays(retryCount) { + var delay = retryCount > 0 ? (50 * Math.pow(2, retryCount - 1)) : 0; + return delay; + } +}); diff --git a/node_modules/aws-sdk/lib/services/ec2.js b/node_modules/aws-sdk/lib/services/ec2.js new file mode 100644 index 0000000..94122bd --- /dev/null +++ b/node_modules/aws-sdk/lib/services/ec2.js @@ -0,0 +1,62 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.EC2.prototype, { + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR); + request.addListener('extractError', this.extractError); + + if (request.operation === 'copySnapshot') { + request.onAsync('validate', this.buildCopySnapshotPresignedUrl); + } + }, + + /** + * @api private + */ + buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) { + if (req.params.PresignedUrl || req._subRequest) { + return done(); + } + + req.params = AWS.util.copy(req.params); + req.params.DestinationRegion = req.service.config.region; + + var config = AWS.util.copy(req.service.config); + delete config.endpoint; + config.region = req.params.SourceRegion; + var svc = new req.service.constructor(config); + var newReq = svc[req.operation](req.params); + newReq._subRequest = true; + newReq.presign(function(err, url) { + if (err) done(err); + else { + req.params.PresignedUrl = url; + done(); + } + }); + }, + + /** + * @api private + */ + extractError: function extractError(resp) { + // EC2 nests the error code and message deeper than other AWS Query services. + var httpResponse = resp.httpResponse; + var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || ''); + if (data.Errors) { + resp.error = AWS.util.error(new Error(), { + code: data.Errors.Error.Code, + message: data.Errors.Error.Message + }); + } else { + resp.error = AWS.util.error(new Error(), { + code: httpResponse.statusCode, + message: null + }); + } + resp.error.requestId = data.RequestID || null; + } +}); diff --git a/node_modules/aws-sdk/lib/services/glacier.js b/node_modules/aws-sdk/lib/services/glacier.js new file mode 100644 index 0000000..115cff4 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/glacier.js @@ -0,0 +1,114 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.Glacier.prototype, { + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + if (Array.isArray(request._events.validate)) { + request._events.validate.unshift(this.validateAccountId); + } else { + request.on('validate', this.validateAccountId); + } + request.removeListener('afterBuild', + AWS.EventListeners.Core.COMPUTE_SHA256); + request.on('build', this.addGlacierApiVersion); + request.on('build', this.addTreeHashHeaders); + }, + + /** + * @api private + */ + validateAccountId: function validateAccountId(request) { + if (request.params.accountId !== undefined) return; + request.params = AWS.util.copy(request.params); + request.params.accountId = '-'; + }, + + /** + * @api private + */ + addGlacierApiVersion: function addGlacierApiVersion(request) { + var version = request.service.api.apiVersion; + request.httpRequest.headers['x-amz-glacier-version'] = version; + }, + + /** + * @api private + */ + addTreeHashHeaders: function addTreeHashHeaders(request) { + if (request.params.body === undefined) return; + + var hashes = request.service.computeChecksums(request.params.body); + request.httpRequest.headers['X-Amz-Content-Sha256'] = hashes.linearHash; + + if (!request.httpRequest.headers['x-amz-sha256-tree-hash']) { + request.httpRequest.headers['x-amz-sha256-tree-hash'] = hashes.treeHash; + } + }, + + /** + * @!group Computing Checksums + */ + + /** + * Computes the SHA-256 linear and tree hash checksums for a given + * block of Buffer data. Pass the tree hash of the computed checksums + * as the checksum input to the {completeMultipartUpload} when performing + * a multi-part upload. + * + * @example Calculate checksum of 5.5MB data chunk + * var glacier = new AWS.Glacier(); + * var data = new Buffer(5.5 * 1024 * 1024); + * data.fill('0'); // fill with zeros + * var results = glacier.computeChecksums(data); + * // Result: { linearHash: '68aff0c5a9...', treeHash: '154e26c78f...' } + * @param data [Buffer, String] data to calculate the checksum for + * @return [map] a map containing + * the linearHash and treeHash properties representing hex based digests + * of the respective checksums. + * @see completeMultipartUpload + */ + computeChecksums: function computeChecksums(data) { + if (!AWS.util.Buffer.isBuffer(data)) data = new AWS.util.Buffer(data); + + var mb = 1024 * 1024; + var hashes = []; + var hash = AWS.util.crypto.createHash('sha256'); + + // build leaf nodes in 1mb chunks + for (var i = 0; i < data.length; i += mb) { + var chunk = data.slice(i, Math.min(i + mb, data.length)); + hash.update(chunk); + hashes.push(AWS.util.crypto.sha256(chunk)); + } + + return { + linearHash: hash.digest('hex'), + treeHash: this.buildHashTree(hashes) + }; + }, + + /** + * @api private + */ + buildHashTree: function buildHashTree(hashes) { + // merge leaf nodes + while (hashes.length > 1) { + var tmpHashes = []; + for (var i = 0; i < hashes.length; i += 2) { + if (hashes[i + 1]) { + var tmpHash = new AWS.util.Buffer(64); + tmpHash.write(hashes[i], 0, 32, 'binary'); + tmpHash.write(hashes[i + 1], 32, 32, 'binary'); + tmpHashes.push(AWS.util.crypto.sha256(tmpHash)); + } else { + tmpHashes.push(hashes[i]); + } + } + hashes = tmpHashes; + } + + return AWS.util.crypto.toHex(hashes[0]); + } +}); diff --git a/node_modules/aws-sdk/lib/services/iotdata.js b/node_modules/aws-sdk/lib/services/iotdata.js new file mode 100644 index 0000000..1f09b40 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/iotdata.js @@ -0,0 +1,88 @@ +var AWS = require('../core'); + +/** + * Constructs a service interface object. Each API operation is exposed as a + * function on service. + * + * ### Sending a Request Using IotData + * + * ```javascript + * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'}); + * iotdata.getThingShadow(params, function (err, data) { + * if (err) console.log(err, err.stack); // an error occurred + * else console.log(data); // successful response + * }); + * ``` + * + * ### Locking the API Version + * + * In order to ensure that the IotData object uses this specific API, + * you can construct the object by passing the `apiVersion` option to the + * constructor: + * + * ```javascript + * var iotdata = new AWS.IotData({ + * endpoint: 'my.host.tld', + * apiVersion: '2015-05-28' + * }); + * ``` + * + * You can also set the API version globally in `AWS.config.apiVersions` using + * the **iotdata** service identifier: + * + * ```javascript + * AWS.config.apiVersions = { + * iotdata: '2015-05-28', + * // other service API versions + * }; + * + * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'}); + * ``` + * + * @note You *must* provide an `endpoint` configuration parameter when + * constructing this service. See {constructor} for more information. + * + * @!method constructor(options = {}) + * Constructs a service object. This object has one method for each + * API operation. + * + * @example Constructing a IotData object + * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'}); + * @note You *must* provide an `endpoint` when constructing this service. + * @option (see AWS.Config.constructor) + * + * @service iotdata + * @version 2015-05-28 + */ +AWS.util.update(AWS.IotData.prototype, { + /** + * @api private + */ + validateService: function validateService() { + if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { + var msg = 'AWS.IotData requires an explicit ' + + '`endpoint\' configuration option.'; + throw AWS.util.error(new Error(), + {name: 'InvalidEndpoint', message: msg}); + } + }, + + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('validateResponse', this.validateResponseBody) + }, + + /** + * @api private + */ + validateResponseBody: function validateResponseBody(resp) { + var body = resp.httpResponse.body.toString() || '{}'; + var bodyCheck = body.trim(); + if (!bodyCheck || bodyCheck.charAt(0) !== '{') { + resp.httpResponse.body = ''; + } + } + +}); diff --git a/node_modules/aws-sdk/lib/services/machinelearning.js b/node_modules/aws-sdk/lib/services/machinelearning.js new file mode 100644 index 0000000..e2808f4 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/machinelearning.js @@ -0,0 +1,24 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.MachineLearning.prototype, { + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + if (request.operation === 'predict') { + request.addListener('build', this.buildEndpoint); + } + }, + + /** + * Updates request endpoint from PredictEndpoint + * @api private + */ + buildEndpoint: function buildEndpoint(request) { + var url = request.params.PredictEndpoint; + if (url) { + request.httpRequest.endpoint = new AWS.Endpoint(url); + } + } + +}); diff --git a/node_modules/aws-sdk/lib/services/route53.js b/node_modules/aws-sdk/lib/services/route53.js new file mode 100644 index 0000000..fe6a721 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/route53.js @@ -0,0 +1,32 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.Route53.prototype, { + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.on('build', this.sanitizeUrl); + }, + + /** + * @api private + */ + sanitizeUrl: function sanitizeUrl(request) { + var path = request.httpRequest.path; + request.httpRequest.path = path.replace(/\/%2F\w+%2F/, '/'); + }, + + /** + * @return [Boolean] whether the error can be retried + * @api private + */ + retryableError: function retryableError(error) { + if (error.code === 'PriorRequestNotComplete' && + error.statusCode === 400) { + return true; + } else { + var _super = AWS.Service.prototype.retryableError; + return _super.call(this, error); + } + } +}); diff --git a/node_modules/aws-sdk/lib/services/s3.js b/node_modules/aws-sdk/lib/services/s3.js new file mode 100644 index 0000000..1ebd3c8 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/s3.js @@ -0,0 +1,832 @@ +var AWS = require('../core'); + +// Pull in managed upload extension +require('../s3/managed_upload'); + +/** + * @api private + */ +var operationsWith200StatusCodeError = { + 'completeMultipartUpload': true, + 'copyObject': true, + 'uploadPartCopy': true +}; + +/** + * @api private + */ + var regionRedirectErrorCodes = [ + 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints + 'BadRequest', // head operations on virtual-hosted global bucket endpoints + 'PermanentRedirect', // non-head operations on path-style or regional endpoints + 301 // head operations on path-style or regional endpoints + ]; + +AWS.util.update(AWS.S3.prototype, { + /** + * @api private + */ + getSignerClass: function getSignerClass(request) { + var defaultApiVersion = this.api.signatureVersion; + var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null; + var regionDefinedVersion = this.config.signatureVersion; + var isPresigned = request ? request.isPresigned() : false; + /* + 1) User defined version specified: + a) always return user defined version + 2) No user defined version specified: + a) default to lowest version the region supports + */ + if (userDefinedVersion) { + userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion; + return AWS.Signers.RequestSigner.getVersion(userDefinedVersion); + } + if (regionDefinedVersion) { + defaultApiVersion = regionDefinedVersion; + } + + return AWS.Signers.RequestSigner.getVersion(defaultApiVersion); + }, + + /** + * @api private + */ + validateService: function validateService() { + var msg; + var messages = []; + + // default to us-east-1 when no region is provided + if (!this.config.region) this.config.region = 'us-east-1'; + + if (!this.config.endpoint && this.config.s3BucketEndpoint) { + messages.push('An endpoint must be provided when configuring ' + + '`s3BucketEndpoint` to true.'); + } + if (this.config.useAccelerateEndpoint && this.config.useDualstack) { + messages.push('`useAccelerateEndpoint` and `useDualstack` ' + + 'cannot both be configured to true.'); + } + if (messages.length === 1) { + msg = messages[0]; + } else if (messages.length > 1) { + msg = 'Multiple configuration errors:\n' + messages.join('\n'); + } + if (msg) { + throw AWS.util.error(new Error(), + {name: 'InvalidEndpoint', message: msg}); + } + }, + + /** + * @api private + */ + shouldDisableBodySigning: function shouldDisableBodySigning(request) { + var signerClass = this.getSignerClass(); + if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4 + && request.httpRequest.endpoint.protocol === 'https:') { + return true; + } + return false; + }, + + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('validate', this.validateScheme); + request.addListener('validate', this.validateBucketEndpoint); + request.addListener('validate', this.correctBucketRegionFromCache); + request.addListener('build', this.addContentType); + request.addListener('build', this.populateURI); + request.addListener('build', this.computeContentMd5); + request.addListener('build', this.computeSseCustomerKeyMd5); + request.addListener('afterBuild', this.addExpect100Continue); + request.removeListener('validate', + AWS.EventListeners.Core.VALIDATE_REGION); + request.addListener('extractError', this.extractError); + request.onAsync('extractError', this.requestBucketRegion); + request.addListener('extractData', this.extractData); + request.addListener('extractData', AWS.util.hoistPayloadMember); + request.addListener('beforePresign', this.prepareSignedUrl); + if (AWS.util.isBrowser()) { + request.onAsync('retry', this.reqRegionForNetworkingError); + } + if (this.shouldDisableBodySigning(request)) { + request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); + request.addListener('afterBuild', this.disableBodySigning); + } + }, + + /** + * @api private + */ + validateScheme: function(req) { + var params = req.params, + scheme = req.httpRequest.endpoint.protocol, + sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey; + if (sensitive && scheme !== 'https:') { + var msg = 'Cannot send SSE keys over HTTP. Set \'sslEnabled\'' + + 'to \'true\' in your configuration'; + throw AWS.util.error(new Error(), + { code: 'ConfigError', message: msg }); + } + }, + + /** + * @api private + */ + validateBucketEndpoint: function(req) { + if (!req.params.Bucket && req.service.config.s3BucketEndpoint) { + var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.'; + throw AWS.util.error(new Error(), + { code: 'ConfigError', message: msg }); + } + }, + + /** + * @api private + */ + isValidAccelerateOperation: function isValidAccelerateOperation(operation) { + var invalidOperations = [ + 'createBucket', + 'deleteBucket', + 'listBuckets' + ]; + return invalidOperations.indexOf(operation) === -1; + }, + + + /** + * S3 prefers dns-compatible bucket names to be moved from the uri path + * to the hostname as a sub-domain. This is not possible, even for dns-compat + * buckets when using SSL and the bucket name contains a dot ('.'). The + * ssl wildcard certificate is only 1-level deep. + * + * @api private + */ + populateURI: function populateURI(req) { + var httpRequest = req.httpRequest; + var b = req.params.Bucket; + var service = req.service; + var endpoint = httpRequest.endpoint; + + if (b) { + if (!service.pathStyleBucketName(b)) { + if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) { + endpoint.hostname = b + '.s3-accelerate.amazonaws.com'; + } else if (!service.config.s3BucketEndpoint) { + endpoint.hostname = + b + '.' + endpoint.hostname; + } + + var port = endpoint.port; + if (port !== 80 && port !== 443) { + endpoint.host = endpoint.hostname + ':' + + endpoint.port; + } else { + endpoint.host = endpoint.hostname; + } + + httpRequest.virtualHostedBucket = b; // needed for signing the request + service.removeVirtualHostedBucketFromPath(req); + } + } + }, + + /** + * Takes the bucket name out of the path if bucket is virtual-hosted + * + * @api private + */ + removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) { + var httpRequest = req.httpRequest; + var bucket = httpRequest.virtualHostedBucket; + if (bucket && httpRequest.path) { + httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), ''); + if (httpRequest.path[0] !== '/') { + httpRequest.path = '/' + httpRequest.path; + } + } + }, + + /** + * Adds Expect: 100-continue header if payload is greater-or-equal 1MB + * @api private + */ + addExpect100Continue: function addExpect100Continue(req) { + var len = req.httpRequest.headers['Content-Length']; + if (AWS.util.isNode() && len >= 1024 * 1024) { + req.httpRequest.headers['Expect'] = '100-continue'; + } + }, + + /** + * Adds a default content type if none is supplied. + * + * @api private + */ + addContentType: function addContentType(req) { + var httpRequest = req.httpRequest; + if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') { + // Content-Type is not set in GET/HEAD requests + delete httpRequest.headers['Content-Type']; + return; + } + + if (!httpRequest.headers['Content-Type']) { // always have a Content-Type + httpRequest.headers['Content-Type'] = 'application/octet-stream'; + } + + var contentType = httpRequest.headers['Content-Type']; + if (AWS.util.isBrowser()) { + if (typeof httpRequest.body === 'string' && !contentType.match(/;\s*charset=/)) { + var charset = '; charset=UTF-8'; + httpRequest.headers['Content-Type'] += charset; + } else { + var replaceFn = function(_, prefix, charsetName) { + return prefix + charsetName.toUpperCase(); + }; + + httpRequest.headers['Content-Type'] = + contentType.replace(/(;\s*charset=)(.+)$/, replaceFn); + } + } + }, + + /** + * @api private + */ + computableChecksumOperations: { + putBucketCors: true, + putBucketLifecycle: true, + putBucketLifecycleConfiguration: true, + putBucketTagging: true, + deleteObjects: true, + putBucketReplication: true + }, + + /** + * Checks whether checksums should be computed for the request. + * If the request requires checksums to be computed, this will always + * return true, otherwise it depends on whether {AWS.Config.computeChecksums} + * is set. + * + * @param req [AWS.Request] the request to check against + * @return [Boolean] whether to compute checksums for a request. + * @api private + */ + willComputeChecksums: function willComputeChecksums(req) { + if (this.computableChecksumOperations[req.operation]) return true; + if (!this.config.computeChecksums) return false; + + // TODO: compute checksums for Stream objects + if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) && + typeof req.httpRequest.body !== 'string') { + return false; + } + + var rules = req.service.api.operations[req.operation].input.members; + + // Sha256 signing disabled, and not a presigned url + if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) { + if (rules.ContentMD5 && !req.params.ContentMD5) { + return true; + } + } + + // V4 signer uses SHA256 signatures so only compute MD5 if it is required + if (req.service.getSignerClass(req) === AWS.Signers.V4) { + if (rules.ContentMD5 && !rules.ContentMD5.required) return false; + } + + if (rules.ContentMD5 && !req.params.ContentMD5) return true; + }, + + /** + * A listener that computes the Content-MD5 and sets it in the header. + * @see AWS.S3.willComputeChecksums + * @api private + */ + computeContentMd5: function computeContentMd5(req) { + if (req.service.willComputeChecksums(req)) { + var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64'); + req.httpRequest.headers['Content-MD5'] = md5; + } + }, + + /** + * @api private + */ + computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) { + var keys = { + SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5', + CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5' + }; + AWS.util.each(keys, function(key, header) { + if (req.params[key]) { + var value = AWS.util.crypto.md5(req.params[key], 'base64'); + req.httpRequest.headers[header] = value; + } + }); + }, + + /** + * Returns true if the bucket name should be left in the URI path for + * a request to S3. This function takes into account the current + * endpoint protocol (e.g. http or https). + * + * @api private + */ + pathStyleBucketName: function pathStyleBucketName(bucketName) { + // user can force path style requests via the configuration + if (this.config.s3ForcePathStyle) return true; + if (this.config.s3BucketEndpoint) return false; + + if (this.dnsCompatibleBucketName(bucketName)) { + return (this.config.sslEnabled && bucketName.match(/\./)) ? true : false; + } else { + return true; // not dns compatible names must always use path style + } + }, + + /** + * Returns true if the bucket name is DNS compatible. Buckets created + * outside of the classic region MUST be DNS compatible. + * + * @api private + */ + dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) { + var b = bucketName; + var domain = new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/); + var ipAddress = new RegExp(/(\d+\.){3}\d+/); + var dots = new RegExp(/\.\./); + return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false; + }, + + /** + * @return [Boolean] whether response contains an error + * @api private + */ + successfulResponse: function successfulResponse(resp) { + var req = resp.request; + var httpResponse = resp.httpResponse; + if (operationsWith200StatusCodeError[req.operation] && + httpResponse.body.toString().match('')) { + return false; + } else { + return httpResponse.statusCode < 300; + } + }, + + /** + * @return [Boolean] whether the error can be retried + * @api private + */ + retryableError: function retryableError(error, request) { + if (operationsWith200StatusCodeError[request.operation] && + error.statusCode === 200) { + return true; + } else if (request._requestRegionForBucket && + request.service.bucketRegionCache[request._requestRegionForBucket]) { + return false; + } else if (error && error.code === 'RequestTimeout') { + return true; + } else if (error && + regionRedirectErrorCodes.indexOf(error.code) != -1 && + error.region && error.region != request.httpRequest.region) { + request.httpRequest.region = error.region; + if (error.statusCode === 301) { + request.service.updateReqBucketRegion(request); + } + return true; + } else { + var _super = AWS.Service.prototype.retryableError; + return _super.call(this, error, request); + } + }, + + /** + * Updates httpRequest with region. If region is not provided, then + * the httpRequest will be updated based on httpRequest.region + * + * @api private + */ + updateReqBucketRegion: function updateReqBucketRegion(request, region) { + var httpRequest = request.httpRequest; + if (typeof region === 'string' && region.length) { + httpRequest.region = region; + } + if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)) { + return; + } + var service = request.service; + var s3Config = service.config; + var s3BucketEndpoint = s3Config.s3BucketEndpoint; + if (s3BucketEndpoint) { + delete s3Config.s3BucketEndpoint; + } + var newConfig = AWS.util.copy(s3Config); + delete newConfig.endpoint; + newConfig.region = httpRequest.region; + + httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint; + service.populateURI(request); + s3Config.s3BucketEndpoint = s3BucketEndpoint; + httpRequest.headers.Host = httpRequest.endpoint.host; + + if (request._asm.currentState === 'validate') { + request.removeListener('build', service.populateURI); + request.addListener('build', service.removeVirtualHostedBucketFromPath); + } + }, + + /** + * Provides a specialized parser for getBucketLocation -- all other + * operations are parsed by the super class. + * + * @api private + */ + extractData: function extractData(resp) { + var req = resp.request; + if (req.operation === 'getBucketLocation') { + var match = resp.httpResponse.body.toString().match(/>(.+)<\/Location/); + delete resp.data['_']; + if (match) { + resp.data.LocationConstraint = match[1]; + } else { + resp.data.LocationConstraint = ''; + } + } + var bucket = req.params.Bucket || null; + if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) { + req.service.clearBucketRegionCache(bucket); + } else { + var headers = resp.httpResponse.headers || {}; + var region = headers['x-amz-bucket-region'] || null; + if (!region && req.operation === 'createBucket' && !resp.error) { + var createBucketConfiguration = req.params.CreateBucketConfiguration; + if (!createBucketConfiguration) { + region = 'us-east-1'; + } else if (createBucketConfiguration.LocationConstraint === 'EU') { + region = 'eu-west-1'; + } else { + region = createBucketConfiguration.LocationConstraint; + } + } + if (region) { + if (bucket && region !== req.service.bucketRegionCache[bucket]) { + req.service.bucketRegionCache[bucket] = region; + } + } + } + req.service.extractRequestIds(resp); + }, + + /** + * Extracts an error object from the http response. + * + * @api private + */ + extractError: function extractError(resp) { + var codes = { + 304: 'NotModified', + 403: 'Forbidden', + 400: 'BadRequest', + 404: 'NotFound' + }; + + var req = resp.request; + var code = resp.httpResponse.statusCode; + var body = resp.httpResponse.body || ''; + + var headers = resp.httpResponse.headers || {}; + var region = headers['x-amz-bucket-region'] || null; + var bucket = req.params.Bucket || null; + var bucketRegionCache = req.service.bucketRegionCache; + if (region && bucket && region !== bucketRegionCache[bucket]) { + bucketRegionCache[bucket] = region; + } + + var cachedRegion; + if (codes[code] && body.length === 0) { + if (bucket && !region) { + cachedRegion = bucketRegionCache[bucket] || null; + if (cachedRegion !== req.httpRequest.region) { + region = cachedRegion; + } + } + resp.error = AWS.util.error(new Error(), { + code: codes[code], + message: null, + region: region + }); + } else { + var data = new AWS.XML.Parser().parse(body.toString()); + + if (data.Region && !region) { + region = data.Region; + if (bucket && region !== bucketRegionCache[bucket]) { + bucketRegionCache[bucket] = region; + } + } else if (bucket && !region && !data.Region) { + cachedRegion = bucketRegionCache[bucket] || null; + if (cachedRegion !== req.httpRequest.region) { + region = cachedRegion; + } + } + + resp.error = AWS.util.error(new Error(), { + code: data.Code || code, + message: data.Message || null, + region: region + }); + } + req.service.extractRequestIds(resp); + }, + + /** + * If region was not obtained synchronously, then send async request + * to get bucket region for errors resulting from wrong region. + * + * @api private + */ + requestBucketRegion: function requestBucketRegion(resp, done) { + var error = resp.error; + var req = resp.request; + var bucket = req.params.Bucket || null; + + if (!error || !bucket || error.region || req.operation === 'listObjects' || + (AWS.util.isNode() && req.operation === 'headBucket') || + (error.statusCode === 400 && req.operation !== 'headObject') || + regionRedirectErrorCodes.indexOf(error.code) === -1) { + return done(); + } + var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects'; + var reqParams = {Bucket: bucket}; + if (reqOperation === 'listObjects') reqParams.MaxKeys = 0; + var regionReq = req.service[reqOperation](reqParams); + regionReq._requestRegionForBucket = bucket; + regionReq.send(function() { + var region = req.service.bucketRegionCache[bucket] || null; + error.region = region; + done(); + }); + }, + + /** + * For browser only. If NetworkingError received, will attempt to obtain + * the bucket region. + * + * @api private + */ + reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) { + if (!AWS.util.isBrowser()) { + return done(); + } + var error = resp.error; + var request = resp.request; + var bucket = request.params.Bucket; + if (!error || error.code !== 'NetworkingError' || !bucket || + request.httpRequest.region === 'us-east-1') { + return done(); + } + var service = request.service; + var bucketRegionCache = service.bucketRegionCache; + var cachedRegion = bucketRegionCache[bucket] || null; + + if (cachedRegion && cachedRegion !== request.httpRequest.region) { + service.updateReqBucketRegion(request, cachedRegion); + done(); + } else if (!service.dnsCompatibleBucketName(bucket)) { + service.updateReqBucketRegion(request, 'us-east-1'); + if (bucketRegionCache[bucket] !== 'us-east-1') { + bucketRegionCache[bucket] = 'us-east-1'; + } + done(); + } else if (request.httpRequest.virtualHostedBucket) { + var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0}); + service.updateReqBucketRegion(getRegionReq, 'us-east-1'); + getRegionReq._requestRegionForBucket = bucket; + + getRegionReq.send(function() { + var region = service.bucketRegionCache[bucket] || null; + if (region && region !== request.httpRequest.region) { + service.updateReqBucketRegion(request, region); + } + done(); + }); + } else { + // DNS-compatible path-style + // (s3ForcePathStyle or bucket name with dot over https) + // Cannot obtain region information for this case + done(); + } + }, + + /** + * Cache for bucket region. + * + * @api private + */ + bucketRegionCache: {}, + + /** + * Clears bucket region cache. + * + * @api private + */ + clearBucketRegionCache: function(buckets) { + var bucketRegionCache = this.bucketRegionCache; + if (!buckets) { + buckets = Object.keys(bucketRegionCache); + } else if (typeof buckets === 'string') { + buckets = [buckets]; + } + for (var i = 0; i < buckets.length; i++) { + delete bucketRegionCache[buckets[i]]; + } + return bucketRegionCache; + }, + + /** + * Corrects request region if bucket's cached region is different + * + * @api private + */ + correctBucketRegionFromCache: function correctBucketRegionFromCache(req) { + var bucket = req.params.Bucket || null; + if (bucket) { + var service = req.service; + var requestRegion = req.httpRequest.region; + var cachedRegion = service.bucketRegionCache[bucket]; + if (cachedRegion && cachedRegion !== requestRegion) { + service.updateReqBucketRegion(req, cachedRegion); + } + } + }, + + /** + * Extracts S3 specific request ids from the http response. + * + * @api private + */ + extractRequestIds: function extractRequestIds(resp) { + var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null; + var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null; + resp.extendedRequestId = extendedRequestId; + resp.cfId = cfId; + + if (resp.error) { + resp.error.requestId = resp.requestId || null; + resp.error.extendedRequestId = extendedRequestId; + resp.error.cfId = cfId; + } + }, + + /** + * Get a pre-signed URL for a given operation name. + * + * @note You must ensure that you have static or previously resolved + * credentials if you call this method synchronously (with no callback), + * otherwise it may not properly sign the request. If you cannot guarantee + * this (you are using an asynchronous credential provider, i.e., EC2 + * IAM roles), you should always call this method with an asynchronous + * callback. + * @param operation [String] the name of the operation to call + * @param params [map] parameters to pass to the operation. See the given + * operation for the expected operation parameters. In addition, you can + * also pass the "Expires" parameter to inform S3 how long the URL should + * work for. + * @option params Expires [Integer] (900) the number of seconds to expire + * the pre-signed URL operation in. Defaults to 15 minutes. + * @param callback [Function] if a callback is provided, this function will + * pass the URL as the second parameter (after the error parameter) to + * the callback function. + * @return [String] if called synchronously (with no callback), returns the + * signed URL. + * @return [null] nothing is returned if a callback is provided. + * @example Pre-signing a getObject operation (synchronously) + * var params = {Bucket: 'bucket', Key: 'key'}; + * var url = s3.getSignedUrl('getObject', params); + * console.log('The URL is', url); + * @example Pre-signing a putObject (asynchronously) + * var params = {Bucket: 'bucket', Key: 'key'}; + * s3.getSignedUrl('putObject', params, function (err, url) { + * console.log('The URL is', url); + * }); + * @example Pre-signing a putObject operation with a specific payload + * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'}; + * var url = s3.getSignedUrl('putObject', params); + * console.log('The URL is', url); + * @example Passing in a 1-minute expiry time for a pre-signed URL + * var params = {Bucket: 'bucket', Key: 'key', Expires: 60}; + * var url = s3.getSignedUrl('getObject', params); + * console.log('The URL is', url); // expires in 60 seconds + */ + getSignedUrl: function getSignedUrl(operation, params, callback) { + params = AWS.util.copy(params || {}); + var expires = params.Expires || 900; + delete params.Expires; // we can't validate this + var request = this.makeRequest(operation, params); + return request.presign(expires, callback); + }, + + /** + * @api private + */ + prepareSignedUrl: function prepareSignedUrl(request) { + request.addListener('validate', request.service.noPresignedContentLength); + request.removeListener('build', request.service.addContentType); + if (!request.params.Body) { + // no Content-MD5/SHA-256 if body is not provided + request.removeListener('build', request.service.computeContentMd5); + } else { + request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); + } + }, + + /** + * @api private + * @param request + */ + disableBodySigning: function disableBodySigning(request) { + var headers = request.httpRequest.headers; + // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined + if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) { + headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD'; + } + }, + + /** + * @api private + */ + noPresignedContentLength: function noPresignedContentLength(request) { + if (request.params.ContentLength !== undefined) { + throw AWS.util.error(new Error(), {code: 'UnexpectedParameter', + message: 'ContentLength is not supported in pre-signed URLs.'}); + } + }, + + createBucket: function createBucket(params, callback) { + // When creating a bucket *outside* the classic region, the location + // constraint must be set for the bucket and it must match the endpoint. + // This chunk of code will set the location constraint param based + // on the region (when possible), but it will not override a passed-in + // location constraint. + if (typeof params === 'function' || !params) { + callback = callback || params; + params = {}; + } + var hostname = this.endpoint.hostname; + if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) { + params.CreateBucketConfiguration = { LocationConstraint: this.config.region }; + } + return this.makeRequest('createBucket', params, callback); + }, + + /** + * @overload upload(params = {}, [options], [callback]) + * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent + * concurrent handling of parts if the payload is large enough. You can + * configure the concurrent queue size by setting `options`. Note that this + * is the only operation for which the SDK can retry requests with stream + * bodies. + * + * @param (see AWS.S3.putObject) + * @option (see AWS.S3.ManagedUpload.constructor) + * @return [AWS.S3.ManagedUpload] the managed upload object that can call + * `send()` or track progress. + * @example Uploading a stream object + * var params = {Bucket: 'bucket', Key: 'key', Body: stream}; + * s3.upload(params, function(err, data) { + * console.log(err, data); + * }); + * @example Uploading a stream with concurrency of 1 and partSize of 10mb + * var params = {Bucket: 'bucket', Key: 'key', Body: stream}; + * var options = {partSize: 10 * 1024 * 1024, queueSize: 1}; + * s3.upload(params, options, function(err, data) { + * console.log(err, data); + * }); + * @callback callback function(err, data) + * @param err [Error] an error or null if no error occurred. + * @param data [map] The response data from the successful upload: + * * `Location` (String) the URL of the uploaded object + * * `ETag` (String) the ETag of the uploaded object + * * `Bucket` (String) the bucket to which the object was uploaded + * * `Key` (String) the key to which the object was uploaded + * @see AWS.S3.ManagedUpload + */ + upload: function upload(params, options, callback) { + if (typeof options === 'function' && callback === undefined) { + callback = options; + options = null; + } + + options = options || {}; + options = AWS.util.merge(options || {}, {service: this, params: params}); + + var uploader = new AWS.S3.ManagedUpload(options); + if (typeof callback === 'function') uploader.send(callback); + return uploader; + } +}); diff --git a/node_modules/aws-sdk/lib/services/sqs.js b/node_modules/aws-sdk/lib/services/sqs.js new file mode 100644 index 0000000..42aaf2e --- /dev/null +++ b/node_modules/aws-sdk/lib/services/sqs.js @@ -0,0 +1,131 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.SQS.prototype, { + /** + * @api private + */ + setupRequestListeners: function setupRequestListeners(request) { + request.addListener('build', this.buildEndpoint); + + if (request.service.config.computeChecksums) { + if (request.operation === 'sendMessage') { + request.addListener('extractData', this.verifySendMessageChecksum); + } else if (request.operation === 'sendMessageBatch') { + request.addListener('extractData', this.verifySendMessageBatchChecksum); + } else if (request.operation === 'receiveMessage') { + request.addListener('extractData', this.verifyReceiveMessageChecksum); + } + } + }, + + /** + * @api private + */ + verifySendMessageChecksum: function verifySendMessageChecksum(response) { + if (!response.data) return; + + var md5 = response.data.MD5OfMessageBody; + var body = this.params.MessageBody; + var calculatedMd5 = this.service.calculateChecksum(body); + if (calculatedMd5 !== md5) { + var msg = 'Got "' + response.data.MD5OfMessageBody + + '", expecting "' + calculatedMd5 + '".'; + this.service.throwInvalidChecksumError(response, + [response.data.MessageId], msg); + } + }, + + /** + * @api private + */ + verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) { + if (!response.data) return; + + var service = this.service; + var entries = {}; + var errors = []; + var messageIds = []; + AWS.util.arrayEach(response.data.Successful, function (entry) { + entries[entry.Id] = entry; + }); + AWS.util.arrayEach(this.params.Entries, function (entry) { + if (entries[entry.Id]) { + var md5 = entries[entry.Id].MD5OfMessageBody; + var body = entry.MessageBody; + if (!service.isChecksumValid(md5, body)) { + errors.push(entry.Id); + messageIds.push(entries[entry.Id].MessageId); + } + } + }); + + if (errors.length > 0) { + service.throwInvalidChecksumError(response, messageIds, + 'Invalid messages: ' + errors.join(', ')); + } + }, + + /** + * @api private + */ + verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) { + if (!response.data) return; + + var service = this.service; + var messageIds = []; + AWS.util.arrayEach(response.data.Messages, function(message) { + var md5 = message.MD5OfBody; + var body = message.Body; + if (!service.isChecksumValid(md5, body)) { + messageIds.push(message.MessageId); + } + }); + + if (messageIds.length > 0) { + service.throwInvalidChecksumError(response, messageIds, + 'Invalid messages: ' + messageIds.join(', ')); + } + }, + + /** + * @api private + */ + throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) { + response.error = AWS.util.error(new Error(), { + retryable: true, + code: 'InvalidChecksum', + messageIds: ids, + message: response.request.operation + + ' returned an invalid MD5 response. ' + message + }); + }, + + /** + * @api private + */ + isChecksumValid: function isChecksumValid(checksum, data) { + return this.calculateChecksum(data) === checksum; + }, + + /** + * @api private + */ + calculateChecksum: function calculateChecksum(data) { + return AWS.util.crypto.md5(data, 'hex'); + }, + + /** + * @api private + */ + buildEndpoint: function buildEndpoint(request) { + var url = request.httpRequest.params.QueueUrl; + if (url) { + request.httpRequest.endpoint = new AWS.Endpoint(url); + + // signature version 4 requires the region name to be set, + // sqs queue urls contain the region name + var matches = request.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./); + if (matches) request.httpRequest.region = matches[1]; + } + } +}); diff --git a/node_modules/aws-sdk/lib/services/sts.js b/node_modules/aws-sdk/lib/services/sts.js new file mode 100644 index 0000000..6e9fd00 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/sts.js @@ -0,0 +1,47 @@ +var AWS = require('../core'); + +AWS.util.update(AWS.STS.prototype, { + /** + * @overload credentialsFrom(data, credentials = null) + * Creates a credentials object from STS response data containing + * credentials information. Useful for quickly setting AWS credentials. + * + * @note This is a low-level utility function. If you want to load temporary + * credentials into your process for subsequent requests to AWS resources, + * you should use {AWS.TemporaryCredentials} instead. + * @param data [map] data retrieved from a call to {getFederatedToken}, + * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}. + * @param credentials [AWS.Credentials] an optional credentials object to + * fill instead of creating a new object. Useful when modifying an + * existing credentials object from a refresh call. + * @return [AWS.TemporaryCredentials] the set of temporary credentials + * loaded from a raw STS operation response. + * @example Using credentialsFrom to load global AWS credentials + * var sts = new AWS.STS(); + * sts.getSessionToken(function (err, data) { + * if (err) console.log("Error getting credentials"); + * else { + * AWS.config.credentials = sts.credentialsFrom(data); + * } + * }); + * @see AWS.TemporaryCredentials + */ + credentialsFrom: function credentialsFrom(data, credentials) { + if (!data) return null; + if (!credentials) credentials = new AWS.TemporaryCredentials(); + credentials.expired = false; + credentials.accessKeyId = data.Credentials.AccessKeyId; + credentials.secretAccessKey = data.Credentials.SecretAccessKey; + credentials.sessionToken = data.Credentials.SessionToken; + credentials.expireTime = data.Credentials.Expiration; + return credentials; + }, + + assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) { + return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback); + }, + + assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) { + return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback); + } +}); diff --git a/node_modules/aws-sdk/lib/services/swf.js b/node_modules/aws-sdk/lib/services/swf.js new file mode 100644 index 0000000..d252087 --- /dev/null +++ b/node_modules/aws-sdk/lib/services/swf.js @@ -0,0 +1,10 @@ +var AWS = require('../core'); + +AWS.util.hideProperties(AWS, ['SimpleWorkflow']); + +/** + * @constant + * @readonly + * Backwards compatibility for access to the {AWS.SWF} service class. + */ +AWS.SimpleWorkflow = AWS.SWF; diff --git a/node_modules/aws-sdk/lib/signers/presign.js b/node_modules/aws-sdk/lib/signers/presign.js new file mode 100644 index 0000000..cb3f53a --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/presign.js @@ -0,0 +1,115 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +/** + * @api private + */ +var expiresHeader = 'presigned-expires'; + +/** + * @api private + */ +function signedUrlBuilder(request) { + var expires = request.httpRequest.headers[expiresHeader]; + var signerClass = request.service.getSignerClass(request); + + delete request.httpRequest.headers['User-Agent']; + delete request.httpRequest.headers['X-Amz-User-Agent']; + + if (signerClass === AWS.Signers.V4) { + if (expires > 604800) { // one week expiry is invalid + var message = 'Presigning does not support expiry time greater ' + + 'than a week with SigV4 signing.'; + throw AWS.util.error(new Error(), { + code: 'InvalidExpiryTime', message: message, retryable: false + }); + } + request.httpRequest.headers[expiresHeader] = expires; + } else if (signerClass === AWS.Signers.S3) { + request.httpRequest.headers[expiresHeader] = parseInt( + AWS.util.date.unixTimestamp() + expires, 10).toString(); + } else { + throw AWS.util.error(new Error(), { + message: 'Presigning only supports S3 or SigV4 signing.', + code: 'UnsupportedSigner', retryable: false + }); + } +} + +/** + * @api private + */ +function signedUrlSigner(request) { + var endpoint = request.httpRequest.endpoint; + var parsedUrl = AWS.util.urlParse(request.httpRequest.path); + var queryParams = {}; + + if (parsedUrl.search) { + queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1)); + } + + AWS.util.each(request.httpRequest.headers, function (key, value) { + if (key === expiresHeader) key = 'Expires'; + if (key.indexOf('x-amz-meta-') === 0) { + // Delete existing, potentially not normalized key + delete queryParams[key]; + key = key.toLowerCase(); + } + queryParams[key] = value; + }); + delete request.httpRequest.headers[expiresHeader]; + + var auth = queryParams['Authorization'].split(' '); + if (auth[0] === 'AWS') { + auth = auth[1].split(':'); + queryParams['AWSAccessKeyId'] = auth[0]; + queryParams['Signature'] = auth[1]; + } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing + auth.shift(); + var rest = auth.join(' '); + var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1]; + queryParams['X-Amz-Signature'] = signature; + delete queryParams['Expires']; + } + delete queryParams['Authorization']; + delete queryParams['Host']; + + // build URL + endpoint.pathname = parsedUrl.pathname; + endpoint.search = AWS.util.queryParamsToString(queryParams); +} + +/** + * @api private + */ +AWS.Signers.Presign = inherit({ + /** + * @api private + */ + sign: function sign(request, expireTime, callback) { + request.httpRequest.headers[expiresHeader] = expireTime || 3600; + request.on('build', signedUrlBuilder); + request.on('sign', signedUrlSigner); + request.removeListener('afterBuild', + AWS.EventListeners.Core.SET_CONTENT_LENGTH); + request.removeListener('afterBuild', + AWS.EventListeners.Core.COMPUTE_SHA256); + + request.emit('beforePresign', [request]); + + if (callback) { + request.build(function() { + if (this.response.error) callback(this.response.error); + else { + callback(null, AWS.util.urlFormat(request.httpRequest.endpoint)); + } + }); + } else { + request.build(); + if (request.response.error) throw request.response.error; + return AWS.util.urlFormat(request.httpRequest.endpoint); + } + } +}); + +module.exports = AWS.Signers.Presign; diff --git a/node_modules/aws-sdk/lib/signers/request_signer.js b/node_modules/aws-sdk/lib/signers/request_signer.js new file mode 100644 index 0000000..6f869dd --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/request_signer.js @@ -0,0 +1,37 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +/** + * @api private + */ +AWS.Signers.RequestSigner = inherit({ + constructor: function RequestSigner(request) { + this.request = request; + }, + + setServiceClientId: function setServiceClientId(id) { + this.serviceClientId = id; + }, + + getServiceClientId: function getServiceClientId() { + return this.serviceClientId; + } +}); + +AWS.Signers.RequestSigner.getVersion = function getVersion(version) { + switch (version) { + case 'v2': return AWS.Signers.V2; + case 'v3': return AWS.Signers.V3; + case 'v4': return AWS.Signers.V4; + case 's3': return AWS.Signers.S3; + case 'v3https': return AWS.Signers.V3Https; + } + throw new Error('Unknown signing version ' + version); +}; + +require('./v2'); +require('./v3'); +require('./v3https'); +require('./v4'); +require('./s3'); +require('./presign'); diff --git a/node_modules/aws-sdk/lib/signers/s3.js b/node_modules/aws-sdk/lib/signers/s3.js new file mode 100644 index 0000000..632e2f1 --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/s3.js @@ -0,0 +1,169 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +/** + * @api private + */ +AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, { + /** + * When building the stringToSign, these sub resource params should be + * part of the canonical resource string with their NON-decoded values + */ + subResources: { + 'acl': 1, + 'accelerate': 1, + 'cors': 1, + 'lifecycle': 1, + 'delete': 1, + 'location': 1, + 'logging': 1, + 'notification': 1, + 'partNumber': 1, + 'policy': 1, + 'requestPayment': 1, + 'replication': 1, + 'restore': 1, + 'tagging': 1, + 'torrent': 1, + 'uploadId': 1, + 'uploads': 1, + 'versionId': 1, + 'versioning': 1, + 'versions': 1, + 'website': 1 + }, + + // when building the stringToSign, these querystring params should be + // part of the canonical resource string with their NON-encoded values + responseHeaders: { + 'response-content-type': 1, + 'response-content-language': 1, + 'response-expires': 1, + 'response-cache-control': 1, + 'response-content-disposition': 1, + 'response-content-encoding': 1 + }, + + addAuthorization: function addAuthorization(credentials, date) { + if (!this.request.headers['presigned-expires']) { + this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date); + } + + if (credentials.sessionToken) { + // presigned URLs require this header to be lowercased + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + + var signature = this.sign(credentials.secretAccessKey, this.stringToSign()); + var auth = 'AWS ' + credentials.accessKeyId + ':' + signature; + + this.request.headers['Authorization'] = auth; + }, + + stringToSign: function stringToSign() { + var r = this.request; + + var parts = []; + parts.push(r.method); + parts.push(r.headers['Content-MD5'] || ''); + parts.push(r.headers['Content-Type'] || ''); + + // This is the "Date" header, but we use X-Amz-Date. + // The S3 signing mechanism requires us to pass an empty + // string for this Date header regardless. + parts.push(r.headers['presigned-expires'] || ''); + + var headers = this.canonicalizedAmzHeaders(); + if (headers) parts.push(headers); + parts.push(this.canonicalizedResource()); + + return parts.join('\n'); + + }, + + canonicalizedAmzHeaders: function canonicalizedAmzHeaders() { + + var amzHeaders = []; + + AWS.util.each(this.request.headers, function (name) { + if (name.match(/^x-amz-/i)) + amzHeaders.push(name); + }); + + amzHeaders.sort(function (a, b) { + return a.toLowerCase() < b.toLowerCase() ? -1 : 1; + }); + + var parts = []; + AWS.util.arrayEach.call(this, amzHeaders, function (name) { + parts.push(name.toLowerCase() + ':' + String(this.request.headers[name])); + }); + + return parts.join('\n'); + + }, + + canonicalizedResource: function canonicalizedResource() { + + var r = this.request; + + var parts = r.path.split('?'); + var path = parts[0]; + var querystring = parts[1]; + + var resource = ''; + + if (r.virtualHostedBucket) + resource += '/' + r.virtualHostedBucket; + + resource += path; + + if (querystring) { + + // collect a list of sub resources and query params that need to be signed + var resources = []; + + AWS.util.arrayEach.call(this, querystring.split('&'), function (param) { + var name = param.split('=')[0]; + var value = param.split('=')[1]; + if (this.subResources[name] || this.responseHeaders[name]) { + var subresource = { name: name }; + if (value !== undefined) { + if (this.subResources[name]) { + subresource.value = value; + } else { + subresource.value = decodeURIComponent(value); + } + } + resources.push(subresource); + } + }); + + resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); + + if (resources.length) { + + querystring = []; + AWS.util.arrayEach(resources, function (res) { + if (res.value === undefined) { + querystring.push(res.name); + } else { + querystring.push(res.name + '=' + res.value); + } + }); + + resource += '?' + querystring.join('&'); + } + + } + + return resource; + + }, + + sign: function sign(secret, string) { + return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1'); + } +}); + +module.exports = AWS.Signers.S3; diff --git a/node_modules/aws-sdk/lib/signers/v2.js b/node_modules/aws-sdk/lib/signers/v2.js new file mode 100644 index 0000000..9c7d03f --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/v2.js @@ -0,0 +1,45 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +/** + * @api private + */ +AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, { + addAuthorization: function addAuthorization(credentials, date) { + + if (!date) date = AWS.util.date.getDate(); + + var r = this.request; + + r.params.Timestamp = AWS.util.date.iso8601(date); + r.params.SignatureVersion = '2'; + r.params.SignatureMethod = 'HmacSHA256'; + r.params.AWSAccessKeyId = credentials.accessKeyId; + + if (credentials.sessionToken) { + r.params.SecurityToken = credentials.sessionToken; + } + + delete r.params.Signature; // delete old Signature for re-signing + r.params.Signature = this.signature(credentials); + + r.body = AWS.util.queryParamsToString(r.params); + r.headers['Content-Length'] = r.body.length; + }, + + signature: function signature(credentials) { + return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); + }, + + stringToSign: function stringToSign() { + var parts = []; + parts.push(this.request.method); + parts.push(this.request.endpoint.host.toLowerCase()); + parts.push(this.request.pathname()); + parts.push(AWS.util.queryParamsToString(this.request.params)); + return parts.join('\n'); + } + +}); + +module.exports = AWS.Signers.V2; diff --git a/node_modules/aws-sdk/lib/signers/v3.js b/node_modules/aws-sdk/lib/signers/v3.js new file mode 100644 index 0000000..40f342d --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/v3.js @@ -0,0 +1,74 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +/** + * @api private + */ +AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, { + addAuthorization: function addAuthorization(credentials, date) { + + var datetime = AWS.util.date.rfc822(date); + + this.request.headers['X-Amz-Date'] = datetime; + + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + + this.request.headers['X-Amzn-Authorization'] = + this.authorization(credentials, datetime); + + }, + + authorization: function authorization(credentials) { + return 'AWS3 ' + + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + + 'Algorithm=HmacSHA256,' + + 'SignedHeaders=' + this.signedHeaders() + ',' + + 'Signature=' + this.signature(credentials); + }, + + signedHeaders: function signedHeaders() { + var headers = []; + AWS.util.arrayEach(this.headersToSign(), function iterator(h) { + headers.push(h.toLowerCase()); + }); + return headers.sort().join(';'); + }, + + canonicalHeaders: function canonicalHeaders() { + var headers = this.request.headers; + var parts = []; + AWS.util.arrayEach(this.headersToSign(), function iterator(h) { + parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim()); + }); + return parts.sort().join('\n') + '\n'; + }, + + headersToSign: function headersToSign() { + var headers = []; + AWS.util.each(this.request.headers, function iterator(k) { + if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) { + headers.push(k); + } + }); + return headers; + }, + + signature: function signature(credentials) { + return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); + }, + + stringToSign: function stringToSign() { + var parts = []; + parts.push(this.request.method); + parts.push('/'); + parts.push(''); + parts.push(this.canonicalHeaders()); + parts.push(this.request.body); + return AWS.util.crypto.sha256(parts.join('\n')); + } + +}); + +module.exports = AWS.Signers.V3; diff --git a/node_modules/aws-sdk/lib/signers/v3https.js b/node_modules/aws-sdk/lib/signers/v3https.js new file mode 100644 index 0000000..b70a930 --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/v3https.js @@ -0,0 +1,22 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +require('./v3'); + +/** + * @api private + */ +AWS.Signers.V3Https = inherit(AWS.Signers.V3, { + authorization: function authorization(credentials) { + return 'AWS3-HTTPS ' + + 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + + 'Algorithm=HmacSHA256,' + + 'Signature=' + this.signature(credentials); + }, + + stringToSign: function stringToSign() { + return this.request.headers['X-Amz-Date']; + } +}); + +module.exports = AWS.Signers.V3Https; diff --git a/node_modules/aws-sdk/lib/signers/v4.js b/node_modules/aws-sdk/lib/signers/v4.js new file mode 100644 index 0000000..a1f8e63 --- /dev/null +++ b/node_modules/aws-sdk/lib/signers/v4.js @@ -0,0 +1,241 @@ +var AWS = require('../core'); +var inherit = AWS.util.inherit; + +/** + * @api private + */ +var cachedSecret = {}; + +/** + * @api private + */ +var cacheQueue = []; + +/** + * @api private + */ +var maxCacheEntries = 50; + +/** + * @api private + */ +var expiresHeader = 'presigned-expires'; + +/** + * @api private + */ +AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, { + constructor: function V4(request, serviceName, signatureCache) { + AWS.Signers.RequestSigner.call(this, request); + this.serviceName = serviceName; + this.signatureCache = signatureCache; + }, + + algorithm: 'AWS4-HMAC-SHA256', + + addAuthorization: function addAuthorization(credentials, date) { + var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, ''); + + if (this.isPresigned()) { + this.updateForPresigned(credentials, datetime); + } else { + this.addHeaders(credentials, datetime); + } + + this.request.headers['Authorization'] = + this.authorization(credentials, datetime); + }, + + addHeaders: function addHeaders(credentials, datetime) { + this.request.headers['X-Amz-Date'] = datetime; + if (credentials.sessionToken) { + this.request.headers['x-amz-security-token'] = credentials.sessionToken; + } + }, + + updateForPresigned: function updateForPresigned(credentials, datetime) { + var credString = this.credentialString(datetime); + var qs = { + 'X-Amz-Date': datetime, + 'X-Amz-Algorithm': this.algorithm, + 'X-Amz-Credential': credentials.accessKeyId + '/' + credString, + 'X-Amz-Expires': this.request.headers[expiresHeader], + 'X-Amz-SignedHeaders': this.signedHeaders() + }; + + if (credentials.sessionToken) { + qs['X-Amz-Security-Token'] = credentials.sessionToken; + } + + if (this.request.headers['Content-Type']) { + qs['Content-Type'] = this.request.headers['Content-Type']; + } + if (this.request.headers['Content-MD5']) { + qs['Content-MD5'] = this.request.headers['Content-MD5']; + } + if (this.request.headers['Cache-Control']) { + qs['Cache-Control'] = this.request.headers['Cache-Control']; + } + + // need to pull in any other X-Amz-* headers + AWS.util.each.call(this, this.request.headers, function(key, value) { + if (key === expiresHeader) return; + if (this.isSignableHeader(key)) { + var lowerKey = key.toLowerCase(); + // Metadata should be normalized + if (lowerKey.indexOf('x-amz-meta-') === 0) { + qs[lowerKey] = value; + } else if (lowerKey.indexOf('x-amz-') === 0) { + qs[key] = value; + } + } + }); + + var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?'; + this.request.path += sep + AWS.util.queryParamsToString(qs); + }, + + authorization: function authorization(credentials, datetime) { + var parts = []; + var credString = this.credentialString(datetime); + parts.push(this.algorithm + ' Credential=' + + credentials.accessKeyId + '/' + credString); + parts.push('SignedHeaders=' + this.signedHeaders()); + parts.push('Signature=' + this.signature(credentials, datetime)); + return parts.join(', '); + }, + + signature: function signature(credentials, datetime) { + var cache = null; + var cacheIdentifier = this.serviceName + (this.getServiceClientId() ? '_' + this.getServiceClientId() : ''); + if (this.signatureCache) { + var cache = cachedSecret[cacheIdentifier]; + // If there isn't already a cache entry, we'll be adding one + if (!cache) { + cacheQueue.push(cacheIdentifier); + if (cacheQueue.length > maxCacheEntries) { + // remove the oldest entry (may not be last one used) + delete cachedSecret[cacheQueue.shift()]; + } + } + + } + var date = datetime.substr(0, 8); + + if (!cache || + cache.akid !== credentials.accessKeyId || + cache.region !== this.request.region || + cache.date !== date) { + + var kSecret = credentials.secretAccessKey; + var kDate = AWS.util.crypto.hmac('AWS4' + kSecret, date, 'buffer'); + var kRegion = AWS.util.crypto.hmac(kDate, this.request.region, 'buffer'); + var kService = AWS.util.crypto.hmac(kRegion, this.serviceName, 'buffer'); + var kCredentials = AWS.util.crypto.hmac(kService, 'aws4_request', 'buffer'); + + if (!this.signatureCache) { + return AWS.util.crypto.hmac(kCredentials, this.stringToSign(datetime), 'hex'); + } + + cachedSecret[cacheIdentifier] = { + region: this.request.region, date: date, + key: kCredentials, akid: credentials.accessKeyId + }; + } + + var key = cachedSecret[cacheIdentifier].key; + return AWS.util.crypto.hmac(key, this.stringToSign(datetime), 'hex'); + }, + + stringToSign: function stringToSign(datetime) { + var parts = []; + parts.push('AWS4-HMAC-SHA256'); + parts.push(datetime); + parts.push(this.credentialString(datetime)); + parts.push(this.hexEncodedHash(this.canonicalString())); + return parts.join('\n'); + }, + + canonicalString: function canonicalString() { + var parts = [], pathname = this.request.pathname(); + if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname); + + parts.push(this.request.method); + parts.push(pathname); + parts.push(this.request.search()); + parts.push(this.canonicalHeaders() + '\n'); + parts.push(this.signedHeaders()); + parts.push(this.hexEncodedBodyHash()); + return parts.join('\n'); + }, + + canonicalHeaders: function canonicalHeaders() { + var headers = []; + AWS.util.each.call(this, this.request.headers, function (key, item) { + headers.push([key, item]); + }); + headers.sort(function (a, b) { + return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1; + }); + var parts = []; + AWS.util.arrayEach.call(this, headers, function (item) { + var key = item[0].toLowerCase(); + if (this.isSignableHeader(key)) { + parts.push(key + ':' + + this.canonicalHeaderValues(item[1].toString())); + } + }); + return parts.join('\n'); + }, + + canonicalHeaderValues: function canonicalHeaderValues(values) { + return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); + }, + + signedHeaders: function signedHeaders() { + var keys = []; + AWS.util.each.call(this, this.request.headers, function (key) { + key = key.toLowerCase(); + if (this.isSignableHeader(key)) keys.push(key); + }); + return keys.sort().join(';'); + }, + + credentialString: function credentialString(datetime) { + var parts = []; + parts.push(datetime.substr(0, 8)); + parts.push(this.request.region); + parts.push(this.serviceName); + parts.push('aws4_request'); + return parts.join('/'); + }, + + hexEncodedHash: function hash(string) { + return AWS.util.crypto.sha256(string, 'hex'); + }, + + hexEncodedBodyHash: function hexEncodedBodyHash() { + if (this.isPresigned() && this.serviceName === 's3' && !this.request.body) { + return 'UNSIGNED-PAYLOAD'; + } else if (this.request.headers['X-Amz-Content-Sha256']) { + return this.request.headers['X-Amz-Content-Sha256']; + } else { + return this.hexEncodedHash(this.request.body || ''); + } + }, + + unsignableHeaders: ['authorization', 'content-type', 'content-length', + 'user-agent', expiresHeader, 'expect'], + + isSignableHeader: function isSignableHeader(key) { + if (key.toLowerCase().indexOf('x-amz-') === 0) return true; + return this.unsignableHeaders.indexOf(key) < 0; + }, + + isPresigned: function isPresigned() { + return this.request.headers[expiresHeader] ? true : false; + } + +}); + +module.exports = AWS.Signers.V4; diff --git a/node_modules/aws-sdk/lib/state_machine.js b/node_modules/aws-sdk/lib/state_machine.js new file mode 100644 index 0000000..0be8922 --- /dev/null +++ b/node_modules/aws-sdk/lib/state_machine.js @@ -0,0 +1,42 @@ +function AcceptorStateMachine(states, state) { + this.currentState = state || null; + this.states = states || {}; +} + +AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) { + if (typeof finalState === 'function') { + inputError = bindObject; bindObject = done; + done = finalState; finalState = null; + } + + var self = this; + var state = self.states[self.currentState]; + state.fn.call(bindObject || self, inputError, function(err) { + if (err) { + if (state.fail) self.currentState = state.fail; + else return done ? done.call(bindObject, err) : null; + } else { + if (state.accept) self.currentState = state.accept; + else return done ? done.call(bindObject) : null; + } + if (self.currentState === finalState) { + return done ? done.call(bindObject, err) : null; + } + + self.runTo(finalState, done, bindObject, err); + }); +}; + +AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) { + if (typeof acceptState === 'function') { + fn = acceptState; acceptState = null; failState = null; + } else if (typeof failState === 'function') { + fn = failState; failState = null; + } + + if (!this.currentState) this.currentState = name; + this.states[name] = { accept: acceptState, fail: failState, fn: fn }; + return this; +}; + +module.exports = AcceptorStateMachine; diff --git a/node_modules/aws-sdk/lib/util.js b/node_modules/aws-sdk/lib/util.js new file mode 100644 index 0000000..df20d25 --- /dev/null +++ b/node_modules/aws-sdk/lib/util.js @@ -0,0 +1,846 @@ +/* eslint guard-for-in:0 */ +var AWS; + +/** + * A set of utility methods for use with the AWS SDK. + * + * @!attribute abort + * Return this value from an iterator function {each} or {arrayEach} + * to break out of the iteration. + * @example Breaking out of an iterator function + * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) { + * if (key == 'b') return AWS.util.abort; + * }); + * @see each + * @see arrayEach + * @api private + */ +var util = { + engine: function engine() { + if (util.isBrowser() && typeof navigator !== 'undefined') { + return navigator.userAgent; + } else { + return process.platform + '/' + process.version; + } + }, + + userAgent: function userAgent() { + var name = util.isBrowser() ? 'js' : 'nodejs'; + var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION; + if (name === 'nodejs') agent += ' ' + util.engine(); + return agent; + }, + + isBrowser: function isBrowser() { return process && process.browser; }, + isNode: function isNode() { return !util.isBrowser(); }, + uriEscape: function uriEscape(string) { + var output = encodeURIComponent(string); + output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); + + // AWS percent-encodes some extra non-standard characters in a URI + output = output.replace(/[*]/g, function(ch) { + return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); + }); + + return output; + }, + + uriEscapePath: function uriEscapePath(string) { + var parts = []; + util.arrayEach(string.split('/'), function (part) { + parts.push(util.uriEscape(part)); + }); + return parts.join('/'); + }, + + urlParse: function urlParse(url) { + return util.url.parse(url); + }, + + urlFormat: function urlFormat(url) { + return util.url.format(url); + }, + + queryStringParse: function queryStringParse(qs) { + return util.querystring.parse(qs); + }, + + queryParamsToString: function queryParamsToString(params) { + var items = []; + var escape = util.uriEscape; + var sortedKeys = Object.keys(params).sort(); + + util.arrayEach(sortedKeys, function(name) { + var value = params[name]; + var ename = escape(name); + var result = ename + '='; + if (Array.isArray(value)) { + var vals = []; + util.arrayEach(value, function(item) { vals.push(escape(item)); }); + result = ename + '=' + vals.sort().join('&' + ename + '='); + } else if (value !== undefined && value !== null) { + result = ename + '=' + escape(value); + } + items.push(result); + }); + + return items.join('&'); + }, + + readFileSync: function readFileSync(path) { + if (util.isBrowser()) return null; + return require('fs').readFileSync(path, 'utf-8'); + }, + + base64: { + + encode: function encode64(string) { + return new util.Buffer(string).toString('base64'); + }, + + decode: function decode64(string) { + return new util.Buffer(string, 'base64'); + } + + }, + + buffer: { + toStream: function toStream(buffer) { + if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); + + var readable = new (util.stream.Readable)(); + var pos = 0; + readable._read = function(size) { + if (pos >= buffer.length) return readable.push(null); + + var end = pos + size; + if (end > buffer.length) end = buffer.length; + readable.push(buffer.slice(pos, end)); + pos = end; + }; + + return readable; + }, + + /** + * Concatenates a list of Buffer objects. + */ + concat: function(buffers) { + var length = 0, + offset = 0, + buffer = null, i; + + for (i = 0; i < buffers.length; i++) { + length += buffers[i].length; + } + + buffer = new util.Buffer(length); + + for (i = 0; i < buffers.length; i++) { + buffers[i].copy(buffer, offset); + offset += buffers[i].length; + } + + return buffer; + } + }, + + string: { + byteLength: function byteLength(string) { + if (string === null || string === undefined) return 0; + if (typeof string === 'string') string = new util.Buffer(string); + + if (typeof string.byteLength === 'number') { + return string.byteLength; + } else if (typeof string.length === 'number') { + return string.length; + } else if (typeof string.size === 'number') { + return string.size; + } else if (typeof string.path === 'string') { + return require('fs').lstatSync(string.path).size; + } else { + throw util.error(new Error('Cannot determine length of ' + string), + { object: string }); + } + }, + + upperFirst: function upperFirst(string) { + return string[0].toUpperCase() + string.substr(1); + }, + + lowerFirst: function lowerFirst(string) { + return string[0].toLowerCase() + string.substr(1); + } + }, + + ini: { + parse: function string(ini) { + var currentSection, map = {}; + util.arrayEach(ini.split(/\r?\n/), function(line) { + line = line.split(/(^|\s)[;#]/)[0]; // remove comments + var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); + if (section) { + currentSection = section[1]; + } else if (currentSection) { + var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); + if (item) { + map[currentSection] = map[currentSection] || {}; + map[currentSection][item[1]] = item[2]; + } + } + }); + + return map; + } + }, + + fn: { + noop: function() {}, + + /** + * Turn a synchronous function into as "async" function by making it call + * a callback. The underlying function is called with all but the last argument, + * which is treated as the callback. The callback is passed passed a first argument + * of null on success to mimick standard node callbacks. + */ + makeAsync: function makeAsync(fn, expectedArgs) { + if (expectedArgs && expectedArgs <= fn.length) { + return fn; + } + + return function() { + var args = Array.prototype.slice.call(arguments, 0); + var callback = args.pop(); + var result = fn.apply(null, args); + callback(result); + }; + } + }, + + /** + * Date and time utility functions. + */ + date: { + + /** + * @return [Date] the current JavaScript date object. Since all + * AWS services rely on this date object, you can override + * this function to provide a special time value to AWS service + * requests. + */ + getDate: function getDate() { + if (!AWS) AWS = require('./core'); + if (AWS.config.systemClockOffset) { // use offset when non-zero + return new Date(new Date().getTime() + AWS.config.systemClockOffset); + } else { + return new Date(); + } + }, + + /** + * @return [String] the date in ISO-8601 format + */ + iso8601: function iso8601(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); + }, + + /** + * @return [String] the date in RFC 822 format + */ + rfc822: function rfc822(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.toUTCString(); + }, + + /** + * @return [Integer] the UNIX timestamp value for the current time + */ + unixTimestamp: function unixTimestamp(date) { + if (date === undefined) { date = util.date.getDate(); } + return date.getTime() / 1000; + }, + + /** + * @param [String,number,Date] date + * @return [Date] + */ + from: function format(date) { + if (typeof date === 'number') { + return new Date(date * 1000); // unix timestamp + } else { + return new Date(date); + } + }, + + /** + * Given a Date or date-like value, this function formats the + * date into a string of the requested value. + * @param [String,number,Date] date + * @param [String] formatter Valid formats are: + # * 'iso8601' + # * 'rfc822' + # * 'unixTimestamp' + * @return [String] + */ + format: function format(date, formatter) { + if (!formatter) formatter = 'iso8601'; + return util.date[formatter](util.date.from(date)); + }, + + parseTimestamp: function parseTimestamp(value) { + if (typeof value === 'number') { // unix timestamp (number) + return new Date(value * 1000); + } else if (value.match(/^\d+$/)) { // unix timestamp + return new Date(value * 1000); + } else if (value.match(/^\d{4}/)) { // iso8601 + return new Date(value); + } else if (value.match(/^\w{3},/)) { // rfc822 + return new Date(value); + } else { + throw util.error( + new Error('unhandled timestamp format: ' + value), + {code: 'TimestampParserError'}); + } + } + + }, + + crypto: { + crc32Table: [ + 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, + 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, + 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, + 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, + 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, + 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, + 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, + 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, + 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, + 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, + 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, + 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, + 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, + 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, + 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, + 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, + 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, + 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, + 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, + 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, + 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, + 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, + 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, + 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, + 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, + 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, + 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, + 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, + 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, + 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, + 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, + 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, + 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, + 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, + 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, + 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, + 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, + 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, + 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, + 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, + 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, + 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, + 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, + 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, + 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, + 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, + 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, + 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, + 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, + 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, + 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, + 0x2D02EF8D], + + crc32: function crc32(data) { + var tbl = util.crypto.crc32Table; + var crc = 0 ^ -1; + + if (typeof data === 'string') { + data = new util.Buffer(data); + } + + for (var i = 0; i < data.length; i++) { + var code = data.readUInt8(i); + crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; + } + return (crc ^ -1) >>> 0; + }, + + hmac: function hmac(key, string, digest, fn) { + if (!digest) digest = 'binary'; + if (digest === 'buffer') { digest = undefined; } + if (!fn) fn = 'sha256'; + if (typeof string === 'string') string = new util.Buffer(string); + return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); + }, + + md5: function md5(data, digest, callback) { + return util.crypto.hash('md5', data, digest, callback); + }, + + sha256: function sha256(data, digest, callback) { + return util.crypto.hash('sha256', data, digest, callback); + }, + + hash: function(algorithm, data, digest, callback) { + var hash = util.crypto.createHash(algorithm); + if (!digest) { digest = 'binary'; } + if (digest === 'buffer') { digest = undefined; } + if (typeof data === 'string') data = new util.Buffer(data); + var sliceFn = util.arraySliceFn(data); + var isBuffer = util.Buffer.isBuffer(data); + //Identifying objects with an ArrayBuffer as buffers + if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; + + if (callback && typeof data === 'object' && + typeof data.on === 'function' && !isBuffer) { + data.on('data', function(chunk) { hash.update(chunk); }); + data.on('error', function(err) { callback(err); }); + data.on('end', function() { callback(null, hash.digest(digest)); }); + } else if (callback && sliceFn && !isBuffer && + typeof FileReader !== 'undefined') { + // this might be a File/Blob + var index = 0, size = 1024 * 512; + var reader = new FileReader(); + reader.onerror = function() { + callback(new Error('Failed to read data.')); + }; + reader.onload = function() { + var buf = new util.Buffer(new Uint8Array(reader.result)); + hash.update(buf); + index += buf.length; + reader._continueReading(); + }; + reader._continueReading = function() { + if (index >= data.size) { + callback(null, hash.digest(digest)); + return; + } + + var back = index + size; + if (back > data.size) back = data.size; + reader.readAsArrayBuffer(sliceFn.call(data, index, back)); + }; + + reader._continueReading(); + } else { + if (util.isBrowser() && typeof data === 'object' && !isBuffer) { + data = new util.Buffer(new Uint8Array(data)); + } + var out = hash.update(data).digest(digest); + if (callback) callback(null, out); + return out; + } + }, + + toHex: function toHex(data) { + var out = []; + for (var i = 0; i < data.length; i++) { + out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); + } + return out.join(''); + }, + + createHash: function createHash(algorithm) { + return util.crypto.lib.createHash(algorithm); + } + + }, + + /** @!ignore */ + + /* Abort constant */ + abort: {}, + + each: function each(object, iterFunction) { + for (var key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + var ret = iterFunction.call(this, key, object[key]); + if (ret === util.abort) break; + } + } + }, + + arrayEach: function arrayEach(array, iterFunction) { + for (var idx in array) { + if (Object.prototype.hasOwnProperty.call(array, idx)) { + var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); + if (ret === util.abort) break; + } + } + }, + + update: function update(obj1, obj2) { + util.each(obj2, function iterator(key, item) { + obj1[key] = item; + }); + return obj1; + }, + + merge: function merge(obj1, obj2) { + return util.update(util.copy(obj1), obj2); + }, + + copy: function copy(object) { + if (object === null || object === undefined) return object; + var dupe = {}; + // jshint forin:false + for (var key in object) { + dupe[key] = object[key]; + } + return dupe; + }, + + isEmpty: function isEmpty(obj) { + for (var prop in obj) { + if (Object.prototype.hasOwnProperty.call(obj, prop)) { + return false; + } + } + return true; + }, + + arraySliceFn: function arraySliceFn(obj) { + var fn = obj.slice || obj.webkitSlice || obj.mozSlice; + return typeof fn === 'function' ? fn : null; + }, + + isType: function isType(obj, type) { + // handle cross-"frame" objects + if (typeof type === 'function') type = util.typeName(type); + return Object.prototype.toString.call(obj) === '[object ' + type + ']'; + }, + + typeName: function typeName(type) { + if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; + var str = type.toString(); + var match = str.match(/^\s*function (.+)\(/); + return match ? match[1] : str; + }, + + error: function error(err, options) { + var originalError = null; + if (typeof err.message === 'string' && err.message !== '') { + if (typeof options === 'string' || (options && options.message)) { + originalError = util.copy(err); + originalError.message = err.message; + } + } + err.message = err.message || null; + + if (typeof options === 'string') { + err.message = options; + } else if (typeof options === 'object' && options !== null) { + util.update(err, options); + if (options.message) + err.message = options.message; + if (options.code || options.name) + err.code = options.code || options.name; + if (options.stack) + err.stack = options.stack; + } + + if (typeof Object.defineProperty === 'function') { + Object.defineProperty(err, 'name', {writable: true, enumerable: false}); + Object.defineProperty(err, 'message', {enumerable: true}); + } + + err.name = options && options.name || err.name || err.code || 'Error'; + err.time = new Date(); + + if (originalError) err.originalError = originalError; + + return err; + }, + + /** + * @api private + */ + inherit: function inherit(klass, features) { + var newObject = null; + if (features === undefined) { + features = klass; + klass = Object; + newObject = {}; + } else { + var ctor = function ConstructorWrapper() {}; + ctor.prototype = klass.prototype; + newObject = new ctor(); + } + + // constructor not supplied, create pass-through ctor + if (features.constructor === Object) { + features.constructor = function() { + if (klass !== Object) { + return klass.apply(this, arguments); + } + }; + } + + features.constructor.prototype = newObject; + util.update(features.constructor.prototype, features); + features.constructor.__super__ = klass; + return features.constructor; + }, + + /** + * @api private + */ + mixin: function mixin() { + var klass = arguments[0]; + for (var i = 1; i < arguments.length; i++) { + // jshint forin:false + for (var prop in arguments[i].prototype) { + var fn = arguments[i].prototype[prop]; + if (prop !== 'constructor') { + klass.prototype[prop] = fn; + } + } + } + return klass; + }, + + /** + * @api private + */ + hideProperties: function hideProperties(obj, props) { + if (typeof Object.defineProperty !== 'function') return; + + util.arrayEach(props, function (key) { + Object.defineProperty(obj, key, { + enumerable: false, writable: true, configurable: true }); + }); + }, + + /** + * @api private + */ + property: function property(obj, name, value, enumerable, isValue) { + var opts = { + configurable: true, + enumerable: enumerable !== undefined ? enumerable : true + }; + if (typeof value === 'function' && !isValue) { + opts.get = value; + } + else { + opts.value = value; opts.writable = true; + } + + Object.defineProperty(obj, name, opts); + }, + + /** + * @api private + */ + memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { + var cachedValue = null; + + // build enumerable attribute for each value with lazy accessor. + util.property(obj, name, function() { + if (cachedValue === null) { + cachedValue = get(); + } + return cachedValue; + }, enumerable); + }, + + /** + * TODO Remove in major version revision + * This backfill populates response data without the + * top-level payload name. + * + * @api private + */ + hoistPayloadMember: function hoistPayloadMember(resp) { + var req = resp.request; + var operation = req.operation; + var output = req.service.api.operations[operation].output; + if (output.payload) { + var payloadMember = output.members[output.payload]; + var responsePayload = resp.data[output.payload]; + if (payloadMember.type === 'structure') { + util.each(responsePayload, function(key, value) { + util.property(resp.data, key, value, false); + }); + } + } + }, + + /** + * Compute SHA-256 checksums of streams + * + * @api private + */ + computeSha256: function computeSha256(body, done) { + if (util.isNode()) { + var Stream = util.stream.Stream; + var fs = require('fs'); + if (body instanceof Stream) { + if (typeof body.path === 'string') { // assume file object + var settings = {}; + if (typeof body.start === 'number') { + settings.start = body.start; + } + if (typeof body.end === 'number') { + settings.end = body.end; + } + body = fs.createReadStream(body.path, settings); + } else { // TODO support other stream types + return done(new Error('Non-file stream objects are ' + + 'not supported with SigV4')); + } + } + } + + util.crypto.sha256(body, 'hex', function(err, sha) { + if (err) done(err); + else done(null, sha); + }); + }, + + /** + * @api private + */ + isClockSkewed: function isClockSkewed(serverTime) { + if (serverTime) { + util.property(AWS.config, 'isClockSkewed', + Math.abs(new Date().getTime() - serverTime) >= 300000, false); + return AWS.config.isClockSkewed; + } + }, + + applyClockOffset: function applyClockOffset(serverTime) { + if (serverTime) + AWS.config.systemClockOffset = serverTime - new Date().getTime(); + }, + + /** + * @api private + */ + extractRequestId: function extractRequestId(resp) { + var requestId = resp.httpResponse.headers['x-amz-request-id'] || + resp.httpResponse.headers['x-amzn-requestid']; + + if (!requestId && resp.data && resp.data.ResponseMetadata) { + requestId = resp.data.ResponseMetadata.RequestId; + } + + if (requestId) { + resp.requestId = requestId; + } + + if (resp.error) { + resp.error.requestId = requestId; + } + }, + + /** + * @api private + */ + addPromisesToRequests: function addPromisesToRequests(constructor, PromiseDependency) { + PromiseDependency = PromiseDependency || null; + if (!PromiseDependency && typeof Promise !== 'undefined') { + PromiseDependency = Promise; + } + if (typeof PromiseDependency !== 'function') { + delete constructor.prototype.promise; + return; + } + constructor.prototype.promise = function promise() { + var self = this; + return new PromiseDependency(function(resolve, reject) { + self.on('complete', function(resp) { + if (resp.error) { + reject(resp.error); + } else { + resolve(resp.data); + } + }); + self.runTo(); + }); + } + }, + + /** + * @api private + */ + isDualstackAvailable: function isDualstackAvailable(service) { + if (!service) return false; + var metadata = require('../apis/metadata.json'); + if (typeof service !== 'string') service = service.serviceIdentifier; + if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; + return !!metadata[service].dualstackAvailable; + }, + + /** + * @api private + */ + calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { + if (!retryDelayOptions) retryDelayOptions = {}; + var customBackoff = retryDelayOptions.customBackoff || null; + if (typeof customBackoff === 'function') { + return customBackoff(retryCount); + } + var base = retryDelayOptions.base || 100; + var delay = Math.random() * (Math.pow(2, retryCount) * base); + return delay; + }, + + /** + * @api private + */ + handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { + if (!options) options = {}; + var http = AWS.HttpClient.getInstance(); + var httpOptions = options.httpOptions || {}; + var retryCount = 0; + + var errCallback = function(err) { + var maxRetries = options.maxRetries || 0; + if (err && err.code === 'TimeoutError') err.retryable = true; + if (err && err.retryable && retryCount < maxRetries) { + retryCount++; + var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); + setTimeout(sendRequest, delay + (err.retryAfter || 0)); + } else { + cb(err); + } + }; + + var sendRequest = function() { + var data = ''; + http.handleRequest(httpRequest, httpOptions, function(httpResponse) { + httpResponse.on('data', function(chunk) { data += chunk.toString(); }); + httpResponse.on('end', function() { + var statusCode = httpResponse.statusCode; + if (statusCode < 300) { + cb(null, data); + } else { + var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; + var err = util.error(new Error(), + { retryable: statusCode >= 500 || statusCode === 429 } + ); + if (retryAfter && err.retryable) err.retryAfter = retryAfter; + errCallback(err); + } + }); + }, errCallback); + }; + + process.nextTick(sendRequest); + } + +}; + +module.exports = util; diff --git a/node_modules/aws-sdk/lib/xml/browser_parser.js b/node_modules/aws-sdk/lib/xml/browser_parser.js new file mode 100644 index 0000000..951ed74 --- /dev/null +++ b/node_modules/aws-sdk/lib/xml/browser_parser.js @@ -0,0 +1,186 @@ +var util = require('../util'); +var Shape = require('../model/shape'); + +function DomXmlParser() { } + +DomXmlParser.prototype.parse = function(xml, shape) { + if (xml.replace(/^\s+/, '') === '') return {}; + + var result, error; + try { + if (window.DOMParser) { + try { + var parser = new DOMParser(); + result = parser.parseFromString(xml, 'text/xml'); + } catch (syntaxError) { + throw util.error(new Error('Parse error in document'), + { + originalError: syntaxError, + code: 'XMLParserError', + retryable: true + }); + } + + if (result.documentElement === null) { + throw util.error(new Error('Cannot parse empty document.'), + { + code: 'XMLParserError', + retryable: true + }); + } + + var isError = result.getElementsByTagName('parsererror')[0]; + if (isError && (isError.parentNode === result || + isError.parentNode.nodeName === 'body' || + isError.parentNode.parentNode === result || + isError.parentNode.parentNode.nodeName === 'body')) { + var errorElement = isError.getElementsByTagName('div')[0] || isError; + throw util.error(new Error(errorElement.textContent || 'Parser error in document'), + { + code: 'XMLParserError', + retryable: true + }); + } + } else if (window.ActiveXObject) { + result = new window.ActiveXObject('Microsoft.XMLDOM'); + result.async = false; + + if (!result.loadXML(xml)) { + throw util.error(new Error('Parse error in document'), + { + code: 'XMLParserError', + retryable: true + }); + } + } else { + throw new Error('Cannot load XML parser'); + } + } catch (e) { + error = e; + } + + if (result && result.documentElement && !error) { + var data = parseXml(result.documentElement, shape); + var metadata = result.getElementsByTagName('ResponseMetadata')[0]; + if (metadata) { + data.ResponseMetadata = parseXml(metadata, {}); + } + return data; + } else if (error) { + throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true}); + } else { // empty xml document + return {}; + } +}; + +function parseXml(xml, shape) { + if (!shape) shape = {}; + switch (shape.type) { + case 'structure': return parseStructure(xml, shape); + case 'map': return parseMap(xml, shape); + case 'list': return parseList(xml, shape); + case undefined: case null: return parseUnknown(xml); + default: return parseScalar(xml, shape); + } +} + +function parseStructure(xml, shape) { + var data = {}; + if (xml === null) return data; + + util.each(shape.members, function(memberName, memberShape) { + if (memberShape.isXmlAttribute) { + if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) { + var value = xml.attributes[memberShape.name].value; + data[memberName] = parseXml({textContent: value}, memberShape); + } + } else { + var xmlChild = memberShape.flattened ? xml : + xml.getElementsByTagName(memberShape.name)[0]; + if (xmlChild) { + data[memberName] = parseXml(xmlChild, memberShape); + } else if (!memberShape.flattened && memberShape.type === 'list') { + data[memberName] = memberShape.defaultValue; + } + } + }); + + return data; +} + +function parseMap(xml, shape) { + var data = {}; + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + var tagName = shape.flattened ? shape.name : 'entry'; + + var child = xml.firstElementChild; + while (child) { + if (child.nodeName === tagName) { + var key = child.getElementsByTagName(xmlKey)[0].textContent; + var value = child.getElementsByTagName(xmlValue)[0]; + data[key] = parseXml(value, shape.value); + } + child = child.nextElementSibling; + } + return data; +} + +function parseList(xml, shape) { + var data = []; + var tagName = shape.flattened ? shape.name : (shape.member.name || 'member'); + + var child = xml.firstElementChild; + while (child) { + if (child.nodeName === tagName) { + data.push(parseXml(child, shape.member)); + } + child = child.nextElementSibling; + } + return data; +} + +function parseScalar(xml, shape) { + if (xml.getAttribute) { + var encoding = xml.getAttribute('encoding'); + if (encoding === 'base64') { + shape = new Shape.create({type: encoding}); + } + } + + var text = xml.textContent; + if (text === '') text = null; + if (typeof shape.toType === 'function') { + return shape.toType(text); + } else { + return text; + } +} + +function parseUnknown(xml) { + if (xml === undefined || xml === null) return ''; + + // empty object + if (!xml.firstElementChild) { + if (xml.parentNode.parentNode === null) return {}; + if (xml.childNodes.length === 0) return ''; + else return xml.textContent; + } + + // object, parse as structure + var shape = {type: 'structure', members: {}}; + var child = xml.firstElementChild; + while (child) { + var tag = child.nodeName; + if (Object.prototype.hasOwnProperty.call(shape.members, tag)) { + // multiple tags of the same name makes it a list + shape.members[tag].type = 'list'; + } else { + shape.members[tag] = {name: tag}; + } + child = child.nextElementSibling; + } + return parseStructure(xml, shape); +} + +module.exports = DomXmlParser; diff --git a/node_modules/aws-sdk/lib/xml/builder.js b/node_modules/aws-sdk/lib/xml/builder.js new file mode 100644 index 0000000..400deeb --- /dev/null +++ b/node_modules/aws-sdk/lib/xml/builder.js @@ -0,0 +1,86 @@ +var util = require('../util'); +var builder = require('xmlbuilder'); + +function XmlBuilder() { } + +XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) { + var xml = builder.create(rootElement); + applyNamespaces(xml, shape); + serialize(xml, params, shape); + return xml.children.length > 0 || noEmpty ? xml.root().toString() : ''; +}; + +function serialize(xml, value, shape) { + switch (shape.type) { + case 'structure': return serializeStructure(xml, value, shape); + case 'map': return serializeMap(xml, value, shape); + case 'list': return serializeList(xml, value, shape); + default: return serializeScalar(xml, value, shape); + } +} + +function serializeStructure(xml, params, shape) { + util.arrayEach(shape.memberNames, function(memberName) { + var memberShape = shape.members[memberName]; + if (memberShape.location !== 'body') return; + + var value = params[memberName]; + var name = memberShape.name; + if (value !== undefined && value !== null) { + if (memberShape.isXmlAttribute) { + xml.att(name, value); + } else if (memberShape.flattened) { + serialize(xml, value, memberShape); + } else { + var element = xml.ele(name); + applyNamespaces(element, memberShape); + serialize(element, value, memberShape); + } + } + }); +} + +function serializeMap(xml, map, shape) { + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + + util.each(map, function(key, value) { + var entry = xml.ele(shape.flattened ? shape.name : 'entry'); + serialize(entry.ele(xmlKey), key, shape.key); + serialize(entry.ele(xmlValue), value, shape.value); + }); +} + +function serializeList(xml, list, shape) { + if (shape.flattened) { + util.arrayEach(list, function(value) { + var name = shape.member.name || shape.name; + var element = xml.ele(name); + serialize(element, value, shape.member); + }); + } else { + util.arrayEach(list, function(value) { + var name = shape.member.name || 'member'; + var element = xml.ele(name); + serialize(element, value, shape.member); + }); + } +} + +function serializeScalar(xml, value, shape) { + xml.txt(shape.toWireFormat(value)); +} + +function applyNamespaces(xml, shape) { + var uri, prefix = 'xmlns'; + if (shape.xmlNamespaceUri) { + uri = shape.xmlNamespaceUri; + if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix; + } else if (xml.isRoot && shape.api.xmlNamespaceUri) { + uri = shape.api.xmlNamespaceUri; + } + + if (uri) xml.att(prefix, uri); +} + +module.exports = XmlBuilder; diff --git a/node_modules/aws-sdk/lib/xml/node_parser.js b/node_modules/aws-sdk/lib/xml/node_parser.js new file mode 100644 index 0000000..876a1a0 --- /dev/null +++ b/node_modules/aws-sdk/lib/xml/node_parser.js @@ -0,0 +1,159 @@ +var util = require('../util'); +var Shape = require('../model/shape'); + +var xml2js = require('xml2js'); + +/** + * @api private + */ +var options = { // options passed to xml2js parser + explicitCharkey: false, // undocumented + trim: false, // trim the leading/trailing whitespace from text nodes + normalize: false, // trim interior whitespace inside text nodes + explicitRoot: false, // return the root node in the resulting object? + emptyTag: null, // the default value for empty nodes + explicitArray: true, // always put child nodes in an array + ignoreAttrs: false, // ignore attributes, only create text nodes + mergeAttrs: false, // merge attributes and child elements + validator: null // a callable validator +}; + +function NodeXmlParser() { } + +NodeXmlParser.prototype.parse = function(xml, shape) { + shape = shape || {}; + + var result = null; + var error = null; + + var parser = new xml2js.Parser(options); + parser.parseString(xml, function (e, r) { + error = e; + result = r; + }); + + if (result) { + var data = parseXml(result, shape); + if (result.ResponseMetadata) { + data.ResponseMetadata = parseXml(result.ResponseMetadata[0], {}); + } + return data; + } else if (error) { + throw util.error(error, {code: 'XMLParserError', retryable: true}); + } else { // empty xml document + return parseXml({}, shape); + } +}; + +function parseXml(xml, shape) { + switch (shape.type) { + case 'structure': return parseStructure(xml, shape); + case 'map': return parseMap(xml, shape); + case 'list': return parseList(xml, shape); + case undefined: case null: return parseUnknown(xml); + default: return parseScalar(xml, shape); + } +} + +function parseStructure(xml, shape) { + var data = {}; + if (xml === null) return data; + + util.each(shape.members, function(memberName, memberShape) { + var xmlName = memberShape.name; + if (Object.prototype.hasOwnProperty.call(xml, xmlName) && Array.isArray(xml[xmlName])) { + var xmlChild = xml[xmlName]; + if (!memberShape.flattened) xmlChild = xmlChild[0]; + + data[memberName] = parseXml(xmlChild, memberShape); + } else if (memberShape.isXmlAttribute && + xml.$ && Object.prototype.hasOwnProperty.call(xml.$, xmlName)) { + data[memberName] = parseScalar(xml.$[xmlName], memberShape); + } else if (memberShape.type === 'list') { + data[memberName] = memberShape.defaultValue; + } + }); + + return data; +} + +function parseMap(xml, shape) { + var data = {}; + if (xml === null) return data; + + var xmlKey = shape.key.name || 'key'; + var xmlValue = shape.value.name || 'value'; + var iterable = shape.flattened ? xml : xml.entry; + + if (Array.isArray(iterable)) { + util.arrayEach(iterable, function(child) { + data[child[xmlKey][0]] = parseXml(child[xmlValue][0], shape.value); + }); + } + + return data; +} + +function parseList(xml, shape) { + var data = []; + var name = shape.member.name || 'member'; + if (shape.flattened) { + util.arrayEach(xml, function(xmlChild) { + data.push(parseXml(xmlChild, shape.member)); + }); + } else if (xml && Array.isArray(xml[name])) { + util.arrayEach(xml[name], function(child) { + data.push(parseXml(child, shape.member)); + }); + } + + return data; +} + +function parseScalar(text, shape) { + if (text && text.$ && text.$.encoding === 'base64') { + shape = new Shape.create({type: text.$.encoding}); + } + if (text && text._) text = text._; + + if (typeof shape.toType === 'function') { + return shape.toType(text); + } else { + return text; + } +} + +function parseUnknown(xml) { + if (xml === undefined || xml === null) return ''; + if (typeof xml === 'string') return xml; + + // parse a list + if (Array.isArray(xml)) { + var arr = []; + for (i = 0; i < xml.length; i++) { + arr.push(parseXml(xml[i], {})); + } + return arr; + } + + // empty object + var keys = Object.keys(xml), i; + if (keys.length === 0 || keys === ['$']) { + return {}; + } + + // object, parse as structure + var data = {}; + for (i = 0; i < keys.length; i++) { + var key = keys[i], value = xml[key]; + if (key === '$') continue; + if (value.length > 1) { // this member is a list + data[key] = parseList(value, {member: {}}); + } else { // this member is a single item + data[key] = parseXml(value[0], {}); + } + } + return data; +} + +module.exports = NodeXmlParser; diff --git a/node_modules/aws-sdk/node_modules/buffer/.npmignore b/node_modules/aws-sdk/node_modules/buffer/.npmignore new file mode 100644 index 0000000..a274035 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/.npmignore @@ -0,0 +1,2 @@ +.zuul.yml +perf/ diff --git a/node_modules/aws-sdk/node_modules/buffer/.travis.yml b/node_modules/aws-sdk/node_modules/buffer/.travis.yml new file mode 100644 index 0000000..6789094 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/.travis.yml @@ -0,0 +1,8 @@ +language: node_js +node_js: +- 'node' +sudo: false +env: + global: + - secure: AUsK+8fYSpwIMHcVt8Mu9SpG9RPHp4XDAwCQfpU3d5U65q8OVVC6C+XjvnNmEd2PoEJRHem8ZXEyRVfGM1sttKZLZP70TEKZOpOiRQnZiTQCAJ92TfGsDj/F4LoWSjUZUpfeg9b3iSp8G5dVw3+q9QZPIu6eykASK6bfcg//Cyg= + - secure: eQBKJWu7XbhAN4ZvOOhMenC0IPpoYj+wZVVzzsLwUppfJqlrHV0CUW8rJdvZNiaGhYhoyHTnAcynpTE5kZfg3XjevOvF8PGY5wUYCki9BI+rp+pvVPZE/DNUAQpFR2gd2nxMJ4kYv7GVb6i/DfuqJa0h8IuY4zcMuKWwbQd3Az8= diff --git a/node_modules/aws-sdk/node_modules/buffer/AUTHORS.md b/node_modules/aws-sdk/node_modules/buffer/AUTHORS.md new file mode 100644 index 0000000..8df343a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/AUTHORS.md @@ -0,0 +1,44 @@ +# Authors + +#### Ordered by first contribution. + +- Romain Beauxis (toots@rastageeks.org) +- Tobias Koppers (tobias.koppers@googlemail.com) +- Janus (ysangkok@gmail.com) +- Rainer Dreyer (rdrey1@gmail.com) +- Tõnis Tiigi (tonistiigi@gmail.com) +- James Halliday (mail@substack.net) +- Michael Williamson (mike@zwobble.org) +- elliottcable (github@elliottcable.name) +- rafael (rvalle@livelens.net) +- Andrew Kelley (superjoe30@gmail.com) +- Andreas Madsen (amwebdk@gmail.com) +- Mike Brevoort (mike.brevoort@pearson.com) +- Brian White (mscdex@mscdex.net) +- Feross Aboukhadijeh (feross@feross.org) +- Ruben Verborgh (ruben@verborgh.org) +- eliang (eliang.cs@gmail.com) +- Jesse Tane (jesse.tane@gmail.com) +- Alfonso Boza (alfonso@cloud.com) +- Mathias Buus (mathiasbuus@gmail.com) +- Devon Govett (devongovett@gmail.com) +- Daniel Cousens (github@dcousens.com) +- Joseph Dykstra (josephdykstra@gmail.com) +- Parsha Pourkhomami (parshap+git@gmail.com) +- Damjan KoÅ¡ir (damjan.kosir@gmail.com) +- daverayment (dave.rayment@gmail.com) +- kawanet (u-suke@kawa.net) +- Linus Unnebäck (linus@folkdatorn.se) +- Nolan Lawson (nolan.lawson@gmail.com) +- Calvin Metcalf (calvin.metcalf@gmail.com) +- Koki Takahashi (hakatasiloving@gmail.com) +- Guy Bedford (guybedford@gmail.com) +- Jan Schär (jscissr@gmail.com) +- RaulTsc (tomescu.raul@gmail.com) +- Matthieu Monsch (monsch@alum.mit.edu) +- Dan Ehrenberg (littledan@chromium.org) +- Kirill Fomichev (fanatid@ya.ru) +- Yusuke Kawasaki (u-suke@kawa.net) +- DC (dcposch@dcpos.ch) + +#### Generated by bin/update-authors.sh. diff --git a/node_modules/aws-sdk/node_modules/buffer/LICENSE b/node_modules/aws-sdk/node_modules/buffer/LICENSE new file mode 100644 index 0000000..d6bf75d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh, and other contributors. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/buffer/README.md b/node_modules/aws-sdk/node_modules/buffer/README.md new file mode 100644 index 0000000..d3b82f6 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/README.md @@ -0,0 +1,378 @@ +# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url] + +#### The buffer module from [node.js](https://nodejs.org/), for the browser. + +[![saucelabs][saucelabs-image]][saucelabs-url] + +[travis-image]: https://img.shields.io/travis/feross/buffer/master.svg +[travis-url]: https://travis-ci.org/feross/buffer +[npm-image]: https://img.shields.io/npm/v/buffer.svg +[npm-url]: https://npmjs.org/package/buffer +[downloads-image]: https://img.shields.io/npm/dm/buffer.svg +[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg +[saucelabs-url]: https://saucelabs.com/u/buffer + +With [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module. + +The goal is to provide an API that is 100% identical to +[node's Buffer API](https://nodejs.org/api/buffer.html). Read the +[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, +instance methods, and class methods that are supported. + +## features + +- Manipulate binary data like a boss, in all browsers -- even IE6! +- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`) +- Extremely small bundle size (**5.04KB minified + gzipped**, 35.5KB with comments) +- Excellent browser support (IE 6+, Chrome 4+, Firefox 3+, Safari 5.1+, Opera 11+, iOS, etc.) +- Preserves Node API exactly, with one minor difference (see below) +- Square-bracket `buf[4]` notation works, even in old browsers like IE6! +- Does not modify any browser prototypes or put anything on `window` +- Comprehensive test suite (including all buffer tests from node.js core) + + +## install + +To use this module directly (without browserify), install it: + +```bash +npm install buffer +``` + +This module was previously called **native-buffer-browserify**, but please use **buffer** +from now on. + +A standalone bundle is available [here](https://wzrd.in/standalone/buffer), for non-browserify users. + + +## usage + +The module's API is identical to node's `Buffer` API. Read the +[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, +instance methods, and class methods that are supported. + +As mentioned above, `require('buffer')` or use the `Buffer` global with +[browserify](http://browserify.org) and this module will automatically be included +in your bundle. Almost any npm module will work in the browser, even if it assumes that +the node `Buffer` API will be available. + +To depend on this module explicitly (without browserify), require it like this: + +```js +var Buffer = require('buffer/').Buffer // note: the trailing slash is important! +``` + +To require this module explicitly, use `require('buffer/')` which tells the node.js module +lookup algorithm (also used by browserify) to use the **npm module** named `buffer` +instead of the **node.js core** module named `buffer`! + + +## how does it work? + +The Buffer constructor returns instances of `Uint8Array` that have their prototype +changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of `Uint8Array`, +so the returned instances will have all the node `Buffer` methods and the +`Uint8Array` methods. Square bracket notation works as expected -- it returns a +single octet. + +The `Uint8Array` prototype remains unmodified. + + +## one minor difference + +#### In old browsers, `buf.slice()` does not modify parent buffer's memory + +If you only support modern browsers (specifically, those with typed array support), +then this issue does not affect you. If you support super old browsers, then read on. + +In node, the `slice()` method returns a new `Buffer` that shares underlying memory +with the original Buffer. When you modify one buffer, you modify the other. +[Read more.](https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end) + +In browsers with typed array support, this `Buffer` implementation supports this +behavior. In browsers without typed arrays, an alternate buffer implementation is +used that is based on `Object` which has no mechanism to point separate +`Buffer`s to the same underlying slab of memory. + +You can see which browser versions lack typed array support +[here](https://github.com/feross/buffer/blob/master/index.js#L22-L48). + + +## tracking the latest node api + +This module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer +API is considered **stable** in the +[node stability index](https://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index), +so it is unlikely that there will ever be breaking changes. +Nonetheless, when/if the Buffer API changes in node, this module's API will change +accordingly. + +## related packages + +- [`buffer-equals`](https://www.npmjs.com/package/buffer-equals) - Node.js 0.12 buffer.equals() ponyfill +- [`buffer-reverse`](https://www.npmjs.com/package/buffer-reverse) - A lite module for reverse-operations on buffers +- [`buffer-xor`](https://www.npmjs.com/package/buffer-xor) - A simple module for bitwise-xor on buffers +- [`is-buffer`](https://www.npmjs.com/package/is-buffer) - Determine if an object is a Buffer without including the whole `Buffer` package +- [`typedarray-to-buffer`](https://www.npmjs.com/package/typedarray-to-buffer) - Convert a typed array to a Buffer without a copy + +## performance + +See perf tests in `/perf`. + +`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a +sanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will +always be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module, +which is included to compare against. + +NOTE: Performance has improved since these benchmarks were taken. PR welcoem to update the README. + +### Chrome 38 + +| Method | Operations | Accuracy | Sampled | Fastest | +|:-------|:-----------|:---------|:--------|:-------:| +| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ | +| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | | +| | | | | +| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | | +| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ | +| | | | | +| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | | +| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ | +| | | | | +| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | | +| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ | +| | | | | +| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | | +| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ | +| | | | | +| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | | +| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ | +| | | | | +| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ | +| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | | +| | | | | +| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ | +| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | | +| | | | | +| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ | +| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | | +| | | | | +| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | | +| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ | +| | | | | +| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | | +| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ | + + +### Firefox 33 + +| Method | Operations | Accuracy | Sampled | Fastest | +|:-------|:-----------|:---------|:--------|:-------:| +| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | | +| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ | +| | | | | +| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | | +| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ | +| | | | | +| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | | +| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ | +| | | | | +| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | | +| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ | +| | | | | +| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | | +| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ | +| | | | | +| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | | +| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ | +| | | | | +| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | | +| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ | +| | | | | +| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | | +| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ | +| | | | | +| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ | +| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | | +| | | | | +| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | | +| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ | +| | | | | +| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | | +| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ | + +### Safari 8 + +| Method | Operations | Accuracy | Sampled | Fastest | +|:-------|:-----------|:---------|:--------|:-------:| +| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ | +| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | | +| | | | | +| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | | +| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ | +| | | | | +| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | | +| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ | +| | | | | +| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | | +| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ | +| | | | | +| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | | +| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ | +| | | | | +| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | | +| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ | +| | | | | +| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | | +| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ | +| | | | | +| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | | +| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ | +| | | | | +| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | | +| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ | +| | | | | +| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | | +| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ | +| | | | | +| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | | +| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ | + + +### Node 0.11.14 + +| Method | Operations | Accuracy | Sampled | Fastest | +|:-------|:-----------|:---------|:--------|:-------:| +| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | | +| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ | +| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | | +| | | | | +| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | | +| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ | +| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | | +| | | | | +| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | | +| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ | +| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | | +| | | | | +| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | | +| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ | +| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | | +| | | | | +| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | | +| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | | +| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ | +| | | | | +| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | | +| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ | +| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | | +| | | | | +| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ | +| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | | +| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | | +| | | | | +| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ | +| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | | +| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | | +| | | | | +| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | | +| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | | +| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ | +| | | | | +| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | | +| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ | +| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | | +| | | | | +| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | | +| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ | +| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | | + +### iojs 1.8.1 + +| Method | Operations | Accuracy | Sampled | Fastest | +|:-------|:-----------|:---------|:--------|:-------:| +| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | | +| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | | +| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ | +| | | | | +| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | | +| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | | +| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ | +| | | | | +| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | | +| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | | +| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ | +| | | | | +| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | | +| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ | +| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | | +| | | | | +| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | | +| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | | +| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ | +| | | | | +| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | | +| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ | +| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | | +| | | | | +| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ | +| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | | +| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | | +| | | | | +| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ | +| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | | +| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | | +| | | | | +| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | | +| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | | +| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ | +| | | | | +| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | | +| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | | +| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ | +| | | | | +| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | | +| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ | +| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | | +| | | | | + +## Testing the project + +First, install the project: + + npm install + +Then, to run tests in Node.js, run: + + npm run test-node + +To test locally in a browser, you can run: + + npm run test-browser-local + +This will print out a URL that you can then open in a browser to run the tests, using [Zuul](https://github.com/defunctzombie/zuul). + +To run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run: + + npm test + +This is what's run in Travis, to check against various browsers. The list of browsers is kept in the `.zuul.yml` file. + +## JavaScript Standard Style + +This module uses [JavaScript Standard Style](https://github.com/feross/standard). + +[![JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) + +To test that the code conforms to the style, `npm install` and run: + + ./node_modules/.bin/standard + +## credit + +This was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify). + + +## license + +MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis. diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js b/node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js new file mode 100755 index 0000000..97efde0 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js @@ -0,0 +1,106 @@ +#!/usr/bin/env node + +var concat = require('concat-stream') +var cp = require('child_process') +var fs = require('fs') +var hyperquest = require('hyperquest') +var path = require('path') +var split = require('split') +var through = require('through2') + +var url = 'https://api.github.com/repos/nodejs/node/contents' +var dirs = [ + '/test/parallel', + '/test/pummel' +] + +cp.execSync('rm -rf node/*.js', { cwd: path.join(__dirname, '../test') }) + +var httpOpts = { + headers: { + 'User-Agent': null + // auth if github rate-limits you... + // 'Authorization': 'Basic ' + Buffer('username:password').toString('base64'), + } +} + +dirs.forEach(function (dir) { + var req = hyperquest(url + dir, httpOpts) + req.pipe(concat(function (data) { + if (req.response.statusCode !== 200) { + throw new Error(url + dir + ': ' + data.toString()) + } + downloadBufferTests(dir, JSON.parse(data)) + })) +}) + +function downloadBufferTests (dir, files) { + files.forEach(function (file) { + if (!/test-buffer.*/.test(file.name)) return + + if (file.name === 'test-buffer-fakes.js') { + // These teses only apply to node, where they're calling into C++ and need to + // ensure the prototype can't be faked, or else there will be a segfault. + return + } + + console.log(file.download_url) + + var out = path.join(__dirname, '../test/node', file.name) + hyperquest(file.download_url, httpOpts) + .pipe(split()) + .pipe(testfixer(file.name)) + .pipe(fs.createWriteStream(out)) + .on('finish', function () { + console.log('wrote ' + file.name) + }) + }) +} + +function testfixer (filename) { + var firstline = true + + return through(function (line, enc, cb) { + line = line.toString() + + if (firstline) { + // require buffer explicitly + var preamble = 'var Buffer = require(\'../../\').Buffer;\n' + if (/use strict/.test(line)) line += '\n' + preamble + else line + preamble + '\n' + line + firstline = false + } + + // use `var` instead of `const`/`let` + line = line.replace(/(const|let) /g, 'var ') + + // make `var common = require('common')` work + line = line.replace(/(var common = require.*)/g, 'var common = { skip: function () {} };') + + // make `require('../common')` work + line = line.replace(/require\('\.\.\/common'\);/g, '') + + // require browser buffer + line = line.replace(/(.*)require\('buffer'\)(.*)/g, '$1require(\'../../\')$2') + + // comment out console logs + line = line.replace(/(.*console\..*)/g, '// $1') + + // we can't reliably test typed array max-sizes in the browser + if (filename === 'test-buffer-big.js') { + line = line.replace(/(.*new Int8Array.*RangeError.*)/, '// $1') + line = line.replace(/(.*new ArrayBuffer.*RangeError.*)/, '// $1') + line = line.replace(/(.*new Float64Array.*RangeError.*)/, '// $1') + } + + // https://github.com/nodejs/node/blob/v0.12/test/parallel/test-buffer.js#L1138 + // unfortunately we can't run this because crypto-browserify doesn't work in old + // versions of ie + if (filename === 'test-buffer.js') { + line = line.replace(/^(\s*)(var crypto = require.*)/, '$1// $2') + line = line.replace(/(crypto.createHash.*\))/, '1 /*$1*/') + } + + cb(null, line + '\n') + }) +} diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/test.js b/node_modules/aws-sdk/node_modules/buffer/bin/test.js new file mode 100644 index 0000000..5a86f1b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/bin/test.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +var cp = require('child_process') +var fs = require('fs') +var path = require('path') + +var shouldRunBrowserTests = !process.env.TRAVIS_PULL_REQUEST || + process.env.TRAVIS_PULL_REQUEST === 'false' + +var node = cp.spawn('npm', ['run', 'test-node'], { stdio: 'inherit' }) +node.on('close', function (code) { + if (code === 0 && shouldRunBrowserTests) { + runBrowserTests() + } else { + process.exit(code) + } +}) + +function runBrowserTests () { + var zuulYmlPath = path.join(__dirname, '..', '.zuul.yml') + + writeES5ZuulYml() + cp.spawn('npm', ['run', 'test-browser-es5'], { stdio: 'inherit' }) + .on('close', function (code) { + if (code !== 0) process.exit(code) + writeES6ZuulYml() + cp.spawn('npm', ['run', 'test-browser-es6'], { stdio: 'inherit' }) + .on('close', function (code) { + process.exit(code) + }) + }) + + function writeES5ZuulYml () { + fs.writeFileSync(zuulYmlPath, fs.readFileSync(path.join(__dirname, 'zuul-es5.yml'))) + } + + function writeES6ZuulYml () { + fs.writeFileSync(zuulYmlPath, fs.readFileSync(path.join(__dirname, 'zuul-es6.yml'))) + } +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh b/node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh new file mode 100755 index 0000000..efcbc78 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh @@ -0,0 +1,21 @@ +#!/bin/sh +# Update AUTHORS.md based on git history. + +git log --reverse --format='%aN (%aE)' | perl -we ' +BEGIN { + %seen = (), @authors = (); +} +while (<>) { + next if $seen{$_}; + next if /(support\@greenkeeper.io)/; + next if /(dcousens\@users.noreply.github.com)/; + next if /(cmetcalf\@appgeo.com)/; + $seen{$_} = push @authors, "- ", $_; +} +END { + print "# Authors\n\n"; + print "#### Ordered by first contribution.\n\n"; + print @authors, "\n"; + print "#### Generated by bin/update-authors.sh.\n"; +} +' > AUTHORS.md diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml b/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml new file mode 100644 index 0000000..3673bcc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml @@ -0,0 +1,14 @@ +ui: tape +scripts: + - ./test/_polyfill.js +browsers: + - name: safari + version: latest + - name: ie + version: 8..latest + - name: microsoftedge + version: 13..latest + - name: android + version: 4.4..latest + - name: iphone + version: latest diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml b/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml new file mode 100644 index 0000000..8054ad6 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml @@ -0,0 +1,6 @@ +ui: tape +browsers: + - name: chrome + version: '-1..latest' + - name: firefox + version: '-1..latest' diff --git a/node_modules/aws-sdk/node_modules/buffer/index.js b/node_modules/aws-sdk/node_modules/buffer/index.js new file mode 100644 index 0000000..0fcd80a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/index.js @@ -0,0 +1,1789 @@ +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ +/* eslint-disable no-proto */ + +'use strict' + +var base64 = require('base64-js') +var ieee754 = require('ieee754') +var isArray = require('isarray') + +exports.Buffer = Buffer +exports.SlowBuffer = SlowBuffer +exports.INSPECT_MAX_BYTES = 50 + +/** + * If `Buffer.TYPED_ARRAY_SUPPORT`: + * === true Use Uint8Array implementation (fastest) + * === false Use Object implementation (most compatible, even IE6) + * + * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, + * Opera 11.6+, iOS 4.2+. + * + * Due to various browser bugs, sometimes the Object implementation will be used even + * when the browser supports typed arrays. + * + * Note: + * + * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, + * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. + * + * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. + * + * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of + * incorrect length in some situations. + + * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they + * get the Object implementation, which is slower but behaves correctly. + */ +Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined + ? global.TYPED_ARRAY_SUPPORT + : typedArraySupport() + +/* + * Export kMaxLength after typed array support is determined. + */ +exports.kMaxLength = kMaxLength() + +function typedArraySupport () { + try { + var arr = new Uint8Array(1) + arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} + return arr.foo() === 42 && // typed array instances can be augmented + typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` + arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` + } catch (e) { + return false + } +} + +function kMaxLength () { + return Buffer.TYPED_ARRAY_SUPPORT + ? 0x7fffffff + : 0x3fffffff +} + +function createBuffer (that, length) { + if (kMaxLength() < length) { + throw new RangeError('Invalid typed array length') + } + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = new Uint8Array(length) + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + if (that === null) { + that = new Buffer(length) + } + that.length = length + } + + return that +} + +/** + * The Buffer constructor returns instances of `Uint8Array` that have their + * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of + * `Uint8Array`, so the returned instances will have all the node `Buffer` methods + * and the `Uint8Array` methods. Square bracket notation works as expected -- it + * returns a single octet. + * + * The `Uint8Array` prototype remains unmodified. + */ + +function Buffer (arg, encodingOrOffset, length) { + if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { + return new Buffer(arg, encodingOrOffset, length) + } + + // Common case. + if (typeof arg === 'number') { + if (typeof encodingOrOffset === 'string') { + throw new Error( + 'If encoding is specified then the first argument must be a string' + ) + } + return allocUnsafe(this, arg) + } + return from(this, arg, encodingOrOffset, length) +} + +Buffer.poolSize = 8192 // not used by this implementation + +// TODO: Legacy, not needed anymore. Remove in next major version. +Buffer._augment = function (arr) { + arr.__proto__ = Buffer.prototype + return arr +} + +function from (that, value, encodingOrOffset, length) { + if (typeof value === 'number') { + throw new TypeError('"value" argument must not be a number') + } + + if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { + return fromArrayBuffer(that, value, encodingOrOffset, length) + } + + if (typeof value === 'string') { + return fromString(that, value, encodingOrOffset) + } + + return fromObject(that, value) +} + +/** + * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError + * if value is a number. + * Buffer.from(str[, encoding]) + * Buffer.from(array) + * Buffer.from(buffer) + * Buffer.from(arrayBuffer[, byteOffset[, length]]) + **/ +Buffer.from = function (value, encodingOrOffset, length) { + return from(null, value, encodingOrOffset, length) +} + +if (Buffer.TYPED_ARRAY_SUPPORT) { + Buffer.prototype.__proto__ = Uint8Array.prototype + Buffer.__proto__ = Uint8Array + if (typeof Symbol !== 'undefined' && Symbol.species && + Buffer[Symbol.species] === Buffer) { + // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 + Object.defineProperty(Buffer, Symbol.species, { + value: null, + configurable: true + }) + } +} + +function assertSize (size) { + if (typeof size !== 'number') { + throw new TypeError('"size" argument must be a number') + } else if (size < 0) { + throw new RangeError('"size" argument must not be negative') + } +} + +function alloc (that, size, fill, encoding) { + assertSize(size) + if (size <= 0) { + return createBuffer(that, size) + } + if (fill !== undefined) { + // Only pay attention to encoding if it's a string. This + // prevents accidentally sending in a number that would + // be interpretted as a start offset. + return typeof encoding === 'string' + ? createBuffer(that, size).fill(fill, encoding) + : createBuffer(that, size).fill(fill) + } + return createBuffer(that, size) +} + +/** + * Creates a new filled Buffer instance. + * alloc(size[, fill[, encoding]]) + **/ +Buffer.alloc = function (size, fill, encoding) { + return alloc(null, size, fill, encoding) +} + +function allocUnsafe (that, size) { + assertSize(size) + that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) { + for (var i = 0; i < size; ++i) { + that[i] = 0 + } + } + return that +} + +/** + * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. + * */ +Buffer.allocUnsafe = function (size) { + return allocUnsafe(null, size) +} +/** + * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. + */ +Buffer.allocUnsafeSlow = function (size) { + return allocUnsafe(null, size) +} + +function fromString (that, string, encoding) { + if (typeof encoding !== 'string' || encoding === '') { + encoding = 'utf8' + } + + if (!Buffer.isEncoding(encoding)) { + throw new TypeError('"encoding" must be a valid string encoding') + } + + var length = byteLength(string, encoding) | 0 + that = createBuffer(that, length) + + var actual = that.write(string, encoding) + + if (actual !== length) { + // Writing a hex string, for example, that contains invalid characters will + // cause everything after the first invalid character to be ignored. (e.g. + // 'abxxcd' will be treated as 'ab') + that = that.slice(0, actual) + } + + return that +} + +function fromArrayLike (that, array) { + var length = array.length < 0 ? 0 : checked(array.length) | 0 + that = createBuffer(that, length) + for (var i = 0; i < length; i += 1) { + that[i] = array[i] & 255 + } + return that +} + +function fromArrayBuffer (that, array, byteOffset, length) { + array.byteLength // this throws if `array` is not a valid ArrayBuffer + + if (byteOffset < 0 || array.byteLength < byteOffset) { + throw new RangeError('\'offset\' is out of bounds') + } + + if (array.byteLength < byteOffset + (length || 0)) { + throw new RangeError('\'length\' is out of bounds') + } + + if (byteOffset === undefined && length === undefined) { + array = new Uint8Array(array) + } else if (length === undefined) { + array = new Uint8Array(array, byteOffset) + } else { + array = new Uint8Array(array, byteOffset, length) + } + + if (Buffer.TYPED_ARRAY_SUPPORT) { + // Return an augmented `Uint8Array` instance, for best performance + that = array + that.__proto__ = Buffer.prototype + } else { + // Fallback: Return an object instance of the Buffer class + that = fromArrayLike(that, array) + } + return that +} + +function fromObject (that, obj) { + if (Buffer.isBuffer(obj)) { + var len = checked(obj.length) | 0 + that = createBuffer(that, len) + + if (that.length === 0) { + return that + } + + obj.copy(that, 0, 0, len) + return that + } + + if (obj) { + if ((typeof ArrayBuffer !== 'undefined' && + obj.buffer instanceof ArrayBuffer) || 'length' in obj) { + if (typeof obj.length !== 'number' || isnan(obj.length)) { + return createBuffer(that, 0) + } + return fromArrayLike(that, obj) + } + + if (obj.type === 'Buffer' && isArray(obj.data)) { + return fromArrayLike(that, obj.data) + } + } + + throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') +} + +function checked (length) { + // Note: cannot use `length < kMaxLength()` here because that fails when + // length is NaN (which is otherwise coerced to zero.) + if (length >= kMaxLength()) { + throw new RangeError('Attempt to allocate Buffer larger than maximum ' + + 'size: 0x' + kMaxLength().toString(16) + ' bytes') + } + return length | 0 +} + +function SlowBuffer (length) { + if (+length != length) { // eslint-disable-line eqeqeq + length = 0 + } + return Buffer.alloc(+length) +} + +Buffer.isBuffer = function isBuffer (b) { + return !!(b != null && b._isBuffer) +} + +Buffer.compare = function compare (a, b) { + if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { + throw new TypeError('Arguments must be Buffers') + } + + if (a === b) return 0 + + var x = a.length + var y = b.length + + for (var i = 0, len = Math.min(x, y); i < len; ++i) { + if (a[i] !== b[i]) { + x = a[i] + y = b[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +Buffer.isEncoding = function isEncoding (encoding) { + switch (String(encoding).toLowerCase()) { + case 'hex': + case 'utf8': + case 'utf-8': + case 'ascii': + case 'latin1': + case 'binary': + case 'base64': + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return true + default: + return false + } +} + +Buffer.concat = function concat (list, length) { + if (!isArray(list)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + + if (list.length === 0) { + return Buffer.alloc(0) + } + + var i + if (length === undefined) { + length = 0 + for (i = 0; i < list.length; ++i) { + length += list[i].length + } + } + + var buffer = Buffer.allocUnsafe(length) + var pos = 0 + for (i = 0; i < list.length; ++i) { + var buf = list[i] + if (!Buffer.isBuffer(buf)) { + throw new TypeError('"list" argument must be an Array of Buffers') + } + buf.copy(buffer, pos) + pos += buf.length + } + return buffer +} + +function byteLength (string, encoding) { + if (Buffer.isBuffer(string)) { + return string.length + } + if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && + (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { + return string.byteLength + } + if (typeof string !== 'string') { + string = '' + string + } + + var len = string.length + if (len === 0) return 0 + + // Use a for loop to avoid recursion + var loweredCase = false + for (;;) { + switch (encoding) { + case 'ascii': + case 'latin1': + case 'binary': + return len + case 'utf8': + case 'utf-8': + case undefined: + return utf8ToBytes(string).length + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return len * 2 + case 'hex': + return len >>> 1 + case 'base64': + return base64ToBytes(string).length + default: + if (loweredCase) return utf8ToBytes(string).length // assume utf8 + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} +Buffer.byteLength = byteLength + +function slowToString (encoding, start, end) { + var loweredCase = false + + // No need to verify that "this.length <= MAX_UINT32" since it's a read-only + // property of a typed array. + + // This behaves neither like String nor Uint8Array in that we set start/end + // to their upper/lower bounds if the value passed is out of range. + // undefined is handled specially as per ECMA-262 6th Edition, + // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. + if (start === undefined || start < 0) { + start = 0 + } + // Return early if start > this.length. Done here to prevent potential uint32 + // coercion fail below. + if (start > this.length) { + return '' + } + + if (end === undefined || end > this.length) { + end = this.length + } + + if (end <= 0) { + return '' + } + + // Force coersion to uint32. This will also coerce falsey/NaN values to 0. + end >>>= 0 + start >>>= 0 + + if (end <= start) { + return '' + } + + if (!encoding) encoding = 'utf8' + + while (true) { + switch (encoding) { + case 'hex': + return hexSlice(this, start, end) + + case 'utf8': + case 'utf-8': + return utf8Slice(this, start, end) + + case 'ascii': + return asciiSlice(this, start, end) + + case 'latin1': + case 'binary': + return latin1Slice(this, start, end) + + case 'base64': + return base64Slice(this, start, end) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return utf16leSlice(this, start, end) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = (encoding + '').toLowerCase() + loweredCase = true + } + } +} + +// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect +// Buffer instances. +Buffer.prototype._isBuffer = true + +function swap (b, n, m) { + var i = b[n] + b[n] = b[m] + b[m] = i +} + +Buffer.prototype.swap16 = function swap16 () { + var len = this.length + if (len % 2 !== 0) { + throw new RangeError('Buffer size must be a multiple of 16-bits') + } + for (var i = 0; i < len; i += 2) { + swap(this, i, i + 1) + } + return this +} + +Buffer.prototype.swap32 = function swap32 () { + var len = this.length + if (len % 4 !== 0) { + throw new RangeError('Buffer size must be a multiple of 32-bits') + } + for (var i = 0; i < len; i += 4) { + swap(this, i, i + 3) + swap(this, i + 1, i + 2) + } + return this +} + +Buffer.prototype.swap64 = function swap64 () { + var len = this.length + if (len % 8 !== 0) { + throw new RangeError('Buffer size must be a multiple of 64-bits') + } + for (var i = 0; i < len; i += 8) { + swap(this, i, i + 7) + swap(this, i + 1, i + 6) + swap(this, i + 2, i + 5) + swap(this, i + 3, i + 4) + } + return this +} + +Buffer.prototype.toString = function toString () { + var length = this.length | 0 + if (length === 0) return '' + if (arguments.length === 0) return utf8Slice(this, 0, length) + return slowToString.apply(this, arguments) +} + +Buffer.prototype.equals = function equals (b) { + if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') + if (this === b) return true + return Buffer.compare(this, b) === 0 +} + +Buffer.prototype.inspect = function inspect () { + var str = '' + var max = exports.INSPECT_MAX_BYTES + if (this.length > 0) { + str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') + if (this.length > max) str += ' ... ' + } + return '' +} + +Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { + if (!Buffer.isBuffer(target)) { + throw new TypeError('Argument must be a Buffer') + } + + if (start === undefined) { + start = 0 + } + if (end === undefined) { + end = target ? target.length : 0 + } + if (thisStart === undefined) { + thisStart = 0 + } + if (thisEnd === undefined) { + thisEnd = this.length + } + + if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { + throw new RangeError('out of range index') + } + + if (thisStart >= thisEnd && start >= end) { + return 0 + } + if (thisStart >= thisEnd) { + return -1 + } + if (start >= end) { + return 1 + } + + start >>>= 0 + end >>>= 0 + thisStart >>>= 0 + thisEnd >>>= 0 + + if (this === target) return 0 + + var x = thisEnd - thisStart + var y = end - start + var len = Math.min(x, y) + + var thisCopy = this.slice(thisStart, thisEnd) + var targetCopy = target.slice(start, end) + + for (var i = 0; i < len; ++i) { + if (thisCopy[i] !== targetCopy[i]) { + x = thisCopy[i] + y = targetCopy[i] + break + } + } + + if (x < y) return -1 + if (y < x) return 1 + return 0 +} + +// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, +// OR the last index of `val` in `buffer` at offset <= `byteOffset`. +// +// Arguments: +// - buffer - a Buffer to search +// - val - a string, Buffer, or number +// - byteOffset - an index into `buffer`; will be clamped to an int32 +// - encoding - an optional encoding, relevant is val is a string +// - dir - true for indexOf, false for lastIndexOf +function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { + // Empty buffer means no match + if (buffer.length === 0) return -1 + + // Normalize byteOffset + if (typeof byteOffset === 'string') { + encoding = byteOffset + byteOffset = 0 + } else if (byteOffset > 0x7fffffff) { + byteOffset = 0x7fffffff + } else if (byteOffset < -0x80000000) { + byteOffset = -0x80000000 + } + byteOffset = +byteOffset // Coerce to Number. + if (isNaN(byteOffset)) { + // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer + byteOffset = dir ? 0 : (buffer.length - 1) + } + + // Normalize byteOffset: negative offsets start from the end of the buffer + if (byteOffset < 0) byteOffset = buffer.length + byteOffset + if (byteOffset >= buffer.length) { + if (dir) return -1 + else byteOffset = buffer.length - 1 + } else if (byteOffset < 0) { + if (dir) byteOffset = 0 + else return -1 + } + + // Normalize val + if (typeof val === 'string') { + val = Buffer.from(val, encoding) + } + + // Finally, search either indexOf (if dir is true) or lastIndexOf + if (Buffer.isBuffer(val)) { + // Special case: looking for empty string/buffer always fails + if (val.length === 0) { + return -1 + } + return arrayIndexOf(buffer, val, byteOffset, encoding, dir) + } else if (typeof val === 'number') { + val = val & 0xFF // Search for a byte value [0-255] + if (Buffer.TYPED_ARRAY_SUPPORT && + typeof Uint8Array.prototype.indexOf === 'function') { + if (dir) { + return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) + } else { + return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) + } + } + return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) + } + + throw new TypeError('val must be string, number or Buffer') +} + +function arrayIndexOf (arr, val, byteOffset, encoding, dir) { + var indexSize = 1 + var arrLength = arr.length + var valLength = val.length + + if (encoding !== undefined) { + encoding = String(encoding).toLowerCase() + if (encoding === 'ucs2' || encoding === 'ucs-2' || + encoding === 'utf16le' || encoding === 'utf-16le') { + if (arr.length < 2 || val.length < 2) { + return -1 + } + indexSize = 2 + arrLength /= 2 + valLength /= 2 + byteOffset /= 2 + } + } + + function read (buf, i) { + if (indexSize === 1) { + return buf[i] + } else { + return buf.readUInt16BE(i * indexSize) + } + } + + var i + if (dir) { + var foundIndex = -1 + for (i = byteOffset; i < arrLength; i++) { + if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { + if (foundIndex === -1) foundIndex = i + if (i - foundIndex + 1 === valLength) return foundIndex * indexSize + } else { + if (foundIndex !== -1) i -= i - foundIndex + foundIndex = -1 + } + } + } else { + if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength + for (i = byteOffset; i >= 0; i--) { + var found = true + for (var j = 0; j < valLength; j++) { + if (read(arr, i + j) !== read(val, j)) { + found = false + break + } + } + if (found) return i + } + } + + return -1 +} + +Buffer.prototype.includes = function includes (val, byteOffset, encoding) { + return this.indexOf(val, byteOffset, encoding) !== -1 +} + +Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, true) +} + +Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { + return bidirectionalIndexOf(this, val, byteOffset, encoding, false) +} + +function hexWrite (buf, string, offset, length) { + offset = Number(offset) || 0 + var remaining = buf.length - offset + if (!length) { + length = remaining + } else { + length = Number(length) + if (length > remaining) { + length = remaining + } + } + + // must be an even number of digits + var strLen = string.length + if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') + + if (length > strLen / 2) { + length = strLen / 2 + } + for (var i = 0; i < length; ++i) { + var parsed = parseInt(string.substr(i * 2, 2), 16) + if (isNaN(parsed)) return i + buf[offset + i] = parsed + } + return i +} + +function utf8Write (buf, string, offset, length) { + return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) +} + +function asciiWrite (buf, string, offset, length) { + return blitBuffer(asciiToBytes(string), buf, offset, length) +} + +function latin1Write (buf, string, offset, length) { + return asciiWrite(buf, string, offset, length) +} + +function base64Write (buf, string, offset, length) { + return blitBuffer(base64ToBytes(string), buf, offset, length) +} + +function ucs2Write (buf, string, offset, length) { + return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) +} + +Buffer.prototype.write = function write (string, offset, length, encoding) { + // Buffer#write(string) + if (offset === undefined) { + encoding = 'utf8' + length = this.length + offset = 0 + // Buffer#write(string, encoding) + } else if (length === undefined && typeof offset === 'string') { + encoding = offset + length = this.length + offset = 0 + // Buffer#write(string, offset[, length][, encoding]) + } else if (isFinite(offset)) { + offset = offset | 0 + if (isFinite(length)) { + length = length | 0 + if (encoding === undefined) encoding = 'utf8' + } else { + encoding = length + length = undefined + } + // legacy write(string, encoding, offset, length) - remove in v0.13 + } else { + throw new Error( + 'Buffer.write(string, encoding, offset[, length]) is no longer supported' + ) + } + + var remaining = this.length - offset + if (length === undefined || length > remaining) length = remaining + + if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { + throw new RangeError('Attempt to write outside buffer bounds') + } + + if (!encoding) encoding = 'utf8' + + var loweredCase = false + for (;;) { + switch (encoding) { + case 'hex': + return hexWrite(this, string, offset, length) + + case 'utf8': + case 'utf-8': + return utf8Write(this, string, offset, length) + + case 'ascii': + return asciiWrite(this, string, offset, length) + + case 'latin1': + case 'binary': + return latin1Write(this, string, offset, length) + + case 'base64': + // Warning: maxLength not taken into account in base64Write + return base64Write(this, string, offset, length) + + case 'ucs2': + case 'ucs-2': + case 'utf16le': + case 'utf-16le': + return ucs2Write(this, string, offset, length) + + default: + if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) + encoding = ('' + encoding).toLowerCase() + loweredCase = true + } + } +} + +Buffer.prototype.toJSON = function toJSON () { + return { + type: 'Buffer', + data: Array.prototype.slice.call(this._arr || this, 0) + } +} + +function base64Slice (buf, start, end) { + if (start === 0 && end === buf.length) { + return base64.fromByteArray(buf) + } else { + return base64.fromByteArray(buf.slice(start, end)) + } +} + +function utf8Slice (buf, start, end) { + end = Math.min(buf.length, end) + var res = [] + + var i = start + while (i < end) { + var firstByte = buf[i] + var codePoint = null + var bytesPerSequence = (firstByte > 0xEF) ? 4 + : (firstByte > 0xDF) ? 3 + : (firstByte > 0xBF) ? 2 + : 1 + + if (i + bytesPerSequence <= end) { + var secondByte, thirdByte, fourthByte, tempCodePoint + + switch (bytesPerSequence) { + case 1: + if (firstByte < 0x80) { + codePoint = firstByte + } + break + case 2: + secondByte = buf[i + 1] + if ((secondByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) + if (tempCodePoint > 0x7F) { + codePoint = tempCodePoint + } + } + break + case 3: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) + if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { + codePoint = tempCodePoint + } + } + break + case 4: + secondByte = buf[i + 1] + thirdByte = buf[i + 2] + fourthByte = buf[i + 3] + if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { + tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) + if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { + codePoint = tempCodePoint + } + } + } + } + + if (codePoint === null) { + // we did not generate a valid codePoint so insert a + // replacement char (U+FFFD) and advance only 1 byte + codePoint = 0xFFFD + bytesPerSequence = 1 + } else if (codePoint > 0xFFFF) { + // encode to utf16 (surrogate pair dance) + codePoint -= 0x10000 + res.push(codePoint >>> 10 & 0x3FF | 0xD800) + codePoint = 0xDC00 | codePoint & 0x3FF + } + + res.push(codePoint) + i += bytesPerSequence + } + + return decodeCodePointsArray(res) +} + +// Based on http://stackoverflow.com/a/22747272/680742, the browser with +// the lowest limit is Chrome, with 0x10000 args. +// We go 1 magnitude less, for safety +var MAX_ARGUMENTS_LENGTH = 0x1000 + +function decodeCodePointsArray (codePoints) { + var len = codePoints.length + if (len <= MAX_ARGUMENTS_LENGTH) { + return String.fromCharCode.apply(String, codePoints) // avoid extra slice() + } + + // Decode in chunks to avoid "call stack size exceeded". + var res = '' + var i = 0 + while (i < len) { + res += String.fromCharCode.apply( + String, + codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) + ) + } + return res +} + +function asciiSlice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i] & 0x7F) + } + return ret +} + +function latin1Slice (buf, start, end) { + var ret = '' + end = Math.min(buf.length, end) + + for (var i = start; i < end; ++i) { + ret += String.fromCharCode(buf[i]) + } + return ret +} + +function hexSlice (buf, start, end) { + var len = buf.length + + if (!start || start < 0) start = 0 + if (!end || end < 0 || end > len) end = len + + var out = '' + for (var i = start; i < end; ++i) { + out += toHex(buf[i]) + } + return out +} + +function utf16leSlice (buf, start, end) { + var bytes = buf.slice(start, end) + var res = '' + for (var i = 0; i < bytes.length; i += 2) { + res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) + } + return res +} + +Buffer.prototype.slice = function slice (start, end) { + var len = this.length + start = ~~start + end = end === undefined ? len : ~~end + + if (start < 0) { + start += len + if (start < 0) start = 0 + } else if (start > len) { + start = len + } + + if (end < 0) { + end += len + if (end < 0) end = 0 + } else if (end > len) { + end = len + } + + if (end < start) end = start + + var newBuf + if (Buffer.TYPED_ARRAY_SUPPORT) { + newBuf = this.subarray(start, end) + newBuf.__proto__ = Buffer.prototype + } else { + var sliceLen = end - start + newBuf = new Buffer(sliceLen, undefined) + for (var i = 0; i < sliceLen; ++i) { + newBuf[i] = this[i + start] + } + } + + return newBuf +} + +/* + * Need to make sure that buffer isn't trying to write out of bounds. + */ +function checkOffset (offset, ext, length) { + if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') + if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') +} + +Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + + return val +} + +Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + checkOffset(offset, byteLength, this.length) + } + + var val = this[offset + --byteLength] + var mul = 1 + while (byteLength > 0 && (mul *= 0x100)) { + val += this[offset + --byteLength] * mul + } + + return val +} + +Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + return this[offset] +} + +Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return this[offset] | (this[offset + 1] << 8) +} + +Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + return (this[offset] << 8) | this[offset + 1] +} + +Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return ((this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16)) + + (this[offset + 3] * 0x1000000) +} + +Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] * 0x1000000) + + ((this[offset + 1] << 16) | + (this[offset + 2] << 8) | + this[offset + 3]) +} + +Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var val = this[offset] + var mul = 1 + var i = 0 + while (++i < byteLength && (mul *= 0x100)) { + val += this[offset + i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) checkOffset(offset, byteLength, this.length) + + var i = byteLength + var mul = 1 + var val = this[offset + --i] + while (i > 0 && (mul *= 0x100)) { + val += this[offset + --i] * mul + } + mul *= 0x80 + + if (val >= mul) val -= Math.pow(2, 8 * byteLength) + + return val +} + +Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { + if (!noAssert) checkOffset(offset, 1, this.length) + if (!(this[offset] & 0x80)) return (this[offset]) + return ((0xff - this[offset] + 1) * -1) +} + +Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset] | (this[offset + 1] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 2, this.length) + var val = this[offset + 1] | (this[offset] << 8) + return (val & 0x8000) ? val | 0xFFFF0000 : val +} + +Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset]) | + (this[offset + 1] << 8) | + (this[offset + 2] << 16) | + (this[offset + 3] << 24) +} + +Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + + return (this[offset] << 24) | + (this[offset + 1] << 16) | + (this[offset + 2] << 8) | + (this[offset + 3]) +} + +Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, true, 23, 4) +} + +Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 4, this.length) + return ieee754.read(this, offset, false, 23, 4) +} + +Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, true, 52, 8) +} + +Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { + if (!noAssert) checkOffset(offset, 8, this.length) + return ieee754.read(this, offset, false, 52, 8) +} + +function checkInt (buf, value, offset, ext, max, min) { + if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') + if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') + if (offset + ext > buf.length) throw new RangeError('Index out of range') +} + +Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var mul = 1 + var i = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + byteLength = byteLength | 0 + if (!noAssert) { + var maxBytes = Math.pow(2, 8 * byteLength) - 1 + checkInt(this, value, offset, byteLength, maxBytes, 0) + } + + var i = byteLength - 1 + var mul = 1 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + this[offset + i] = (value / mul) & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + this[offset] = (value & 0xff) + return offset + 1 +} + +function objectWriteUInt16 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { + buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> + (littleEndian ? i : 1 - i) * 8 + } +} + +Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +function objectWriteUInt32 (buf, value, offset, littleEndian) { + if (value < 0) value = 0xffffffff + value + 1 + for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { + buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff + } +} + +Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset + 3] = (value >>> 24) + this[offset + 2] = (value >>> 16) + this[offset + 1] = (value >>> 8) + this[offset] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = 0 + var mul = 1 + var sub = 0 + this[offset] = value & 0xFF + while (++i < byteLength && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) { + var limit = Math.pow(2, 8 * byteLength - 1) + + checkInt(this, value, offset, byteLength, limit - 1, -limit) + } + + var i = byteLength - 1 + var mul = 1 + var sub = 0 + this[offset + i] = value & 0xFF + while (--i >= 0 && (mul *= 0x100)) { + if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { + sub = 1 + } + this[offset + i] = ((value / mul) >> 0) - sub & 0xFF + } + + return offset + byteLength +} + +Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) + if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) + if (value < 0) value = 0xff + value + 1 + this[offset] = (value & 0xff) + return offset + 1 +} + +Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + } else { + objectWriteUInt16(this, value, offset, true) + } + return offset + 2 +} + +Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 8) + this[offset + 1] = (value & 0xff) + } else { + objectWriteUInt16(this, value, offset, false) + } + return offset + 2 +} + +Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value & 0xff) + this[offset + 1] = (value >>> 8) + this[offset + 2] = (value >>> 16) + this[offset + 3] = (value >>> 24) + } else { + objectWriteUInt32(this, value, offset, true) + } + return offset + 4 +} + +Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { + value = +value + offset = offset | 0 + if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) + if (value < 0) value = 0xffffffff + value + 1 + if (Buffer.TYPED_ARRAY_SUPPORT) { + this[offset] = (value >>> 24) + this[offset + 1] = (value >>> 16) + this[offset + 2] = (value >>> 8) + this[offset + 3] = (value & 0xff) + } else { + objectWriteUInt32(this, value, offset, false) + } + return offset + 4 +} + +function checkIEEE754 (buf, value, offset, ext, max, min) { + if (offset + ext > buf.length) throw new RangeError('Index out of range') + if (offset < 0) throw new RangeError('Index out of range') +} + +function writeFloat (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) + } + ieee754.write(buf, value, offset, littleEndian, 23, 4) + return offset + 4 +} + +Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { + return writeFloat(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { + return writeFloat(this, value, offset, false, noAssert) +} + +function writeDouble (buf, value, offset, littleEndian, noAssert) { + if (!noAssert) { + checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) + } + ieee754.write(buf, value, offset, littleEndian, 52, 8) + return offset + 8 +} + +Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { + return writeDouble(this, value, offset, true, noAssert) +} + +Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { + return writeDouble(this, value, offset, false, noAssert) +} + +// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) +Buffer.prototype.copy = function copy (target, targetStart, start, end) { + if (!start) start = 0 + if (!end && end !== 0) end = this.length + if (targetStart >= target.length) targetStart = target.length + if (!targetStart) targetStart = 0 + if (end > 0 && end < start) end = start + + // Copy 0 bytes; we're done + if (end === start) return 0 + if (target.length === 0 || this.length === 0) return 0 + + // Fatal error conditions + if (targetStart < 0) { + throw new RangeError('targetStart out of bounds') + } + if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') + if (end < 0) throw new RangeError('sourceEnd out of bounds') + + // Are we oob? + if (end > this.length) end = this.length + if (target.length - targetStart < end - start) { + end = target.length - targetStart + start + } + + var len = end - start + var i + + if (this === target && start < targetStart && targetStart < end) { + // descending copy from end + for (i = len - 1; i >= 0; --i) { + target[i + targetStart] = this[i + start] + } + } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { + // ascending copy from start + for (i = 0; i < len; ++i) { + target[i + targetStart] = this[i + start] + } + } else { + Uint8Array.prototype.set.call( + target, + this.subarray(start, start + len), + targetStart + ) + } + + return len +} + +// Usage: +// buffer.fill(number[, offset[, end]]) +// buffer.fill(buffer[, offset[, end]]) +// buffer.fill(string[, offset[, end]][, encoding]) +Buffer.prototype.fill = function fill (val, start, end, encoding) { + // Handle string cases: + if (typeof val === 'string') { + if (typeof start === 'string') { + encoding = start + start = 0 + end = this.length + } else if (typeof end === 'string') { + encoding = end + end = this.length + } + if (val.length === 1) { + var code = val.charCodeAt(0) + if (code < 256) { + val = code + } + } + if (encoding !== undefined && typeof encoding !== 'string') { + throw new TypeError('encoding must be a string') + } + if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { + throw new TypeError('Unknown encoding: ' + encoding) + } + } else if (typeof val === 'number') { + val = val & 255 + } + + // Invalid ranges are not set to a default, so can range check early. + if (start < 0 || this.length < start || this.length < end) { + throw new RangeError('Out of range index') + } + + if (end <= start) { + return this + } + + start = start >>> 0 + end = end === undefined ? this.length : end >>> 0 + + if (!val) val = 0 + + var i + if (typeof val === 'number') { + for (i = start; i < end; ++i) { + this[i] = val + } + } else { + var bytes = Buffer.isBuffer(val) + ? val + : utf8ToBytes(new Buffer(val, encoding).toString()) + var len = bytes.length + for (i = 0; i < end - start; ++i) { + this[i + start] = bytes[i % len] + } + } + + return this +} + +// HELPER FUNCTIONS +// ================ + +var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g + +function base64clean (str) { + // Node strips out invalid characters like \n and \t from the string, base64-js does not + str = stringtrim(str).replace(INVALID_BASE64_RE, '') + // Node converts strings with length < 2 to '' + if (str.length < 2) return '' + // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not + while (str.length % 4 !== 0) { + str = str + '=' + } + return str +} + +function stringtrim (str) { + if (str.trim) return str.trim() + return str.replace(/^\s+|\s+$/g, '') +} + +function toHex (n) { + if (n < 16) return '0' + n.toString(16) + return n.toString(16) +} + +function utf8ToBytes (string, units) { + units = units || Infinity + var codePoint + var length = string.length + var leadSurrogate = null + var bytes = [] + + for (var i = 0; i < length; ++i) { + codePoint = string.charCodeAt(i) + + // is surrogate component + if (codePoint > 0xD7FF && codePoint < 0xE000) { + // last char was a lead + if (!leadSurrogate) { + // no lead yet + if (codePoint > 0xDBFF) { + // unexpected trail + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } else if (i + 1 === length) { + // unpaired lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + continue + } + + // valid lead + leadSurrogate = codePoint + + continue + } + + // 2 leads in a row + if (codePoint < 0xDC00) { + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + leadSurrogate = codePoint + continue + } + + // valid surrogate pair + codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 + } else if (leadSurrogate) { + // valid bmp char, but last char was a lead + if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) + } + + leadSurrogate = null + + // encode utf8 + if (codePoint < 0x80) { + if ((units -= 1) < 0) break + bytes.push(codePoint) + } else if (codePoint < 0x800) { + if ((units -= 2) < 0) break + bytes.push( + codePoint >> 0x6 | 0xC0, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x10000) { + if ((units -= 3) < 0) break + bytes.push( + codePoint >> 0xC | 0xE0, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else if (codePoint < 0x110000) { + if ((units -= 4) < 0) break + bytes.push( + codePoint >> 0x12 | 0xF0, + codePoint >> 0xC & 0x3F | 0x80, + codePoint >> 0x6 & 0x3F | 0x80, + codePoint & 0x3F | 0x80 + ) + } else { + throw new Error('Invalid code point') + } + } + + return bytes +} + +function asciiToBytes (str) { + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + // Node's code seems to be doing this and not & 0x7F.. + byteArray.push(str.charCodeAt(i) & 0xFF) + } + return byteArray +} + +function utf16leToBytes (str, units) { + var c, hi, lo + var byteArray = [] + for (var i = 0; i < str.length; ++i) { + if ((units -= 2) < 0) break + + c = str.charCodeAt(i) + hi = c >> 8 + lo = c % 256 + byteArray.push(lo) + byteArray.push(hi) + } + + return byteArray +} + +function base64ToBytes (str) { + return base64.toByteArray(base64clean(str)) +} + +function blitBuffer (src, dst, offset, length) { + for (var i = 0; i < length; ++i) { + if ((i + offset >= dst.length) || (i >= src.length)) break + dst[i + offset] = src[i] + } + return i +} + +function isnan (val) { + return val !== val // eslint-disable-line no-self-compare +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE new file mode 100644 index 0000000..96d3f68 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md new file mode 100644 index 0000000..e546d86 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md @@ -0,0 +1,32 @@ +base64-js +========= + +`base64-js` does basic base64 encoding/decoding in pure JS. + +[![build status](https://secure.travis-ci.org/beatgammit/base64-js.png)](http://travis-ci.org/beatgammit/base64-js) + +[![testling badge](https://ci.testling.com/beatgammit/base64-js.png)](https://ci.testling.com/beatgammit/base64-js) + +Many browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data. + +Sometimes encoding/decoding binary data in the browser is useful, and that is what this module does. + +## install + +With [npm](https://npmjs.org) do: + +`npm install base64-js` + +## methods + +`var base64 = require('base64-js')` + +`base64` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument. + +* `byteLength` - Takes a base64 string and returns length of byte array +* `toByteArray` - Takes a base64 string and returns a byte array +* `fromByteArray` - Takes a byte array and returns a base64 string + +## license + +MIT diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js new file mode 100644 index 0000000..22ad807 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js @@ -0,0 +1 @@ +(function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,t;return function r(e,t,n){function o(i,a){if(!t[i]){if(!e[i]){var u=typeof require=="function"&&require;if(!a&&u)return u(i,!0);if(f)return f(i,!0);var d=new Error("Cannot find module '"+i+"'");throw d.code="MODULE_NOT_FOUND",d}var c=t[i]={exports:{}};e[i][0].call(c.exports,function(r){var t=e[i][1][r];return o(t?t:r)},c,c.exports,r,e,t,n)}return t[i].exports}var f=typeof require=="function"&&require;for(var i=0;i0){throw new Error("Invalid string. Length must be a multiple of 4")}return r[e-2]==="="?2:r[e-1]==="="?1:0}function c(r){return r.length*3/4-d(r)}function v(r){var e,t,n,i,a,u;var c=r.length;a=d(r);u=new f(c*3/4-a);n=a>0?c-4:c;var v=0;for(e=0,t=0;e>16&255;u[v++]=i>>8&255;u[v++]=i&255}if(a===2){i=o[r.charCodeAt(e)]<<2|o[r.charCodeAt(e+1)]>>4;u[v++]=i&255}else if(a===1){i=o[r.charCodeAt(e)]<<10|o[r.charCodeAt(e+1)]<<4|o[r.charCodeAt(e+2)]>>2;u[v++]=i>>8&255;u[v++]=i&255}return u}function l(r){return n[r>>18&63]+n[r>>12&63]+n[r>>6&63]+n[r&63]}function h(r,e,t){var n;var o=[];for(var f=e;fd?d:u+a))}if(o===1){e=r[t-1];f+=n[e>>2];f+=n[e<<4&63];f+="=="}else if(o===2){e=(r[t-2]<<8)+r[t-1];f+=n[e>>10];f+=n[e>>4&63];f+=n[e<<2&63];f+="="}i.push(f);return i.join("")}},{}]},{},[])("/")}); diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js new file mode 100644 index 0000000..8e806ac --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js @@ -0,0 +1,114 @@ +'use strict' + +exports.byteLength = byteLength +exports.toByteArray = toByteArray +exports.fromByteArray = fromByteArray + +var lookup = [] +var revLookup = [] +var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array + +var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' +for (var i = 0, len = code.length; i < len; ++i) { + lookup[i] = code[i] + revLookup[code.charCodeAt(i)] = i +} + +revLookup['-'.charCodeAt(0)] = 62 +revLookup['_'.charCodeAt(0)] = 63 + +function placeHoldersCount (b64) { + var len = b64.length + if (len % 4 > 0) { + throw new Error('Invalid string. Length must be a multiple of 4') + } + + // the number of equal signs (place holders) + // if there are two placeholders, than the two characters before it + // represent one byte + // if there is only one, then the three characters before it represent 2 bytes + // this is just a cheap hack to not do indexOf twice + return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 +} + +function byteLength (b64) { + // base64 is 4/3 + up to two characters of the original data + return b64.length * 3 / 4 - placeHoldersCount(b64) +} + +function toByteArray (b64) { + var i, j, l, tmp, placeHolders, arr + var len = b64.length + placeHolders = placeHoldersCount(b64) + + arr = new Arr(len * 3 / 4 - placeHolders) + + // if there are placeholders, only get up to the last complete 4 chars + l = placeHolders > 0 ? len - 4 : len + + var L = 0 + + for (i = 0, j = 0; i < l; i += 4, j += 3) { + tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] + arr[L++] = (tmp >> 16) & 0xFF + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + if (placeHolders === 2) { + tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) + arr[L++] = tmp & 0xFF + } else if (placeHolders === 1) { + tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) + arr[L++] = (tmp >> 8) & 0xFF + arr[L++] = tmp & 0xFF + } + + return arr +} + +function tripletToBase64 (num) { + return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] +} + +function encodeChunk (uint8, start, end) { + var tmp + var output = [] + for (var i = start; i < end; i += 3) { + tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) + output.push(tripletToBase64(tmp)) + } + return output.join('') +} + +function fromByteArray (uint8) { + var tmp + var len = uint8.length + var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes + var output = '' + var parts = [] + var maxChunkLength = 16383 // must be multiple of 3 + + // go through the array every three bytes, we'll deal with trailing stuff later + for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { + parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) + } + + // pad the end with zeros, but make sure to not forget the extra bytes + if (extraBytes === 1) { + tmp = uint8[len - 1] + output += lookup[tmp >> 2] + output += lookup[(tmp << 4) & 0x3F] + output += '==' + } else if (extraBytes === 2) { + tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) + output += lookup[tmp >> 10] + output += lookup[(tmp >> 4) & 0x3F] + output += lookup[(tmp << 2) & 0x3F] + output += '=' + } + + parts.push(output) + + return parts.join('') +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json new file mode 100644 index 0000000..acb6736 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json @@ -0,0 +1,46 @@ +{ + "name": "base64-js", + "version": "1.2.0", + "description": "Base64 encoding/decoding in pure JS", + "keywords": [ + "base64" + ], + "homepage": "https://github.com/beatgammit/base64-js", + "bugs": { + "url": "https://github.com/beatgammit/base64-js/issues" + }, + "license": "MIT", + "author": { + "name": "T. Jameson Little", + "email": "t.jameson.little@gmail.com" + }, + "files": [ + "test", + "index.js", + "base64js.min.js" + ], + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/beatgammit/base64-js.git" + }, + "scripts": { + "build": "browserify -s base64js -r ./ | uglifyjs -m > base64js.min.js", + "lint": "standard", + "test": "npm run lint && npm run unit", + "unit": "tape test/*.js" + }, + "devDependencies": { + "benchmark": "^2.1.0", + "browserify": "^13.0.0", + "standard": "*", + "tape": "4.x", + "uglify-js": "^2.6.2" + }, + "readme": "base64-js\n=========\n\n`base64-js` does basic base64 encoding/decoding in pure JS.\n\n[![build status](https://secure.travis-ci.org/beatgammit/base64-js.png)](http://travis-ci.org/beatgammit/base64-js)\n\n[![testling badge](https://ci.testling.com/beatgammit/base64-js.png)](https://ci.testling.com/beatgammit/base64-js)\n\nMany browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data.\n\nSometimes encoding/decoding binary data in the browser is useful, and that is what this module does.\n\n## install\n\nWith [npm](https://npmjs.org) do:\n\n`npm install base64-js`\n\n## methods\n\n`var base64 = require('base64-js')`\n\n`base64` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument.\n\n* `byteLength` - Takes a base64 string and returns length of byte array\n* `toByteArray` - Takes a base64 string and returns a byte array\n* `fromByteArray` - Takes a byte array and returns a base64 string\n\n## license\n\nMIT\n", + "readmeFilename": "README.md", + "_id": "base64-js@1.2.0", + "_shasum": "a39992d723584811982be5e290bb6a53d86700f1", + "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", + "_from": "base64-js@>=1.0.2 <2.0.0" +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js new file mode 100644 index 0000000..be16ebe --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js @@ -0,0 +1,24 @@ +var test = require('tape') +var b64 = require('../') + +test('convert big data to base64', function (t) { + var b64str, arr, i, length + var big = new Uint8Array(64 * 1024 * 1024) + for (i = 0, length = big.length; i < length; ++i) { + big[i] = i % 256 + } + b64str = b64.fromByteArray(big) + arr = b64.toByteArray(b64str) + t.ok(equal(arr, big)) + t.end() +}) + +function equal (a, b) { + var i + var length = a.length + if (length !== b.length) return false + for (i = 0; i < length; ++i) { + if (a[i] !== b[i]) return false + } + return true +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js new file mode 100644 index 0000000..d68e105 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js @@ -0,0 +1,48 @@ +var test = require('tape') +var b64 = require('../') +var checks = [ + 'a', + 'aa', + 'aaa', + 'hi', + 'hi!', + 'hi!!', + 'sup', + 'sup?', + 'sup?!' +] + +test('convert to base64 and back', function (t) { + t.plan(checks.length * 2) + + for (var i = 0; i < checks.length; i++) { + var check = checks[i] + var b64Str, arr, str + + b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0) })) + + arr = b64.toByteArray(b64Str) + str = map(arr, function (byte) { return String.fromCharCode(byte) }).join('') + + t.equal(check, str, 'Checked ' + check) + t.equal(b64.byteLength(b64Str), arr.length, 'Checked length for ' + check) + } +}) + +function map (arr, callback) { + var res = [] + var kValue, mappedValue + + for (var k = 0, len = arr.length; k < len; k++) { + if ((typeof arr === 'string' && !!arr.charAt(k))) { + kValue = arr.charAt(k) + mappedValue = callback(kValue, k, arr) + res[k] = mappedValue + } else if (typeof arr !== 'string' && k in arr) { + kValue = arr[k] + mappedValue = callback(kValue, k, arr) + res[k] = mappedValue + } + } + return res +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js new file mode 100644 index 0000000..3203b33 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js @@ -0,0 +1,18 @@ +var test = require('tape') +var b64 = require('../') + +test('decode url-safe style base64 strings', function (t) { + var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff] + + var actual = b64.toByteArray('//++/++/++//') + for (var i = 0; i < actual.length; i++) { + t.equal(actual[i], expected[i]) + } + + actual = b64.toByteArray('__--_--_--__') + for (i = 0; i < actual.length; i++) { + t.equal(actual[i], expected[i]) + } + + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml new file mode 100644 index 0000000..6c45b34 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml @@ -0,0 +1,7 @@ +language: node_js +node_js: +- 'node' +env: + global: + - secure: f3NrmOV/A7oACn47J1mkIpH8Sn/LINtluZvo/9pGo3Ss4+D2lyt7UawpedHtnYgU9WEyjPSi7pDWopUrIzusQ2trLYRJr8WAOEyHlgaepDyy4BW3ghGMKHMsS05kilYLP8nu1sRd6y1AcUYKw+kUrrSPanI7kViWVQ5d5DuwXO8= + - secure: a6teILh33z5fbGQbh5/EkFfAyXfa2fPJG1upy9K+jLAbG4WZxXD+YmXG9Tz33/2NJm6UplGfTJ8IQEXgxEfAFk3ao3xfKxzm3i64XxtroSlXIFNSiQKogxDfLEtWDoNNCodPHaV3ATEqxGJ5rkkUeU1+ROWW0sjG5JR26k8/Hfg= diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml new file mode 100644 index 0000000..b5ba0c4 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml @@ -0,0 +1,20 @@ +ui: tape +scripts: + - "./test/_polyfill.js" +browsers: + - name: chrome + version: latest + - name: firefox + version: latest + - name: safari + version: latest + - name: ie + version: 11 + - name: microsoftedge + version: latest + - name: opera + version: latest + - name: android + version: latest + - name: iphone + version: latest diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE new file mode 100644 index 0000000..f37a2eb --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE @@ -0,0 +1,28 @@ +Copyright (c) 2008, Fair Oaks Labs, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md new file mode 100644 index 0000000..11f4d40 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md @@ -0,0 +1,47 @@ +# ieee754 [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url] + +[![saucelabs][saucelabs-image]][saucelabs-url] + +[travis-image]: https://img.shields.io/travis/feross/ieee754/master.svg +[travis-url]: https://travis-ci.org/feross/ieee754 +[npm-image]: https://img.shields.io/npm/v/ieee754.svg +[npm-url]: https://npmjs.org/package/ieee754 +[downloads-image]: https://img.shields.io/npm/dm/ieee754.svg +[saucelabs-image]: https://saucelabs.com/browser-matrix/ieee754.svg +[saucelabs-url]: https://saucelabs.com/u/ieee754 + +### Read/write IEEE754 floating point numbers from/to a Buffer or array-like object. + +## install + +``` +npm install ieee754 +``` + +## methods + +`var ieee754 = require('ieee754')` + +The `ieee754` object has the following functions: + +``` +ieee754.read = function (buffer, offset, isLE, mLen, nBytes) +ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) +``` + +The arguments mean the following: + +- buffer = the buffer +- offset = offset into the buffer +- value = value to set (only for `write`) +- isLe = is little endian? +- mLen = mantissa length +- nBytes = number of bytes + +## what is ieee754? + +The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point computation. [Read more](http://en.wikipedia.org/wiki/IEEE_floating_point). + +## license + +BSD 3 Clause. Copyright (c) 2008, Fair Oaks Labs, Inc. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js new file mode 100644 index 0000000..95e190c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js @@ -0,0 +1,84 @@ +exports.read = function (buffer, offset, isLE, mLen, nBytes) { + var e, m + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var nBits = -7 + var i = isLE ? (nBytes - 1) : 0 + var d = isLE ? -1 : 1 + var s = buffer[offset + i] + + i += d + + e = s & ((1 << (-nBits)) - 1) + s >>= (-nBits) + nBits += eLen + for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + m = e & ((1 << (-nBits)) - 1) + e >>= (-nBits) + nBits += mLen + for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} + + if (e === 0) { + e = 1 - eBias + } else if (e === eMax) { + return m ? NaN : ((s ? -1 : 1) * Infinity) + } else { + m = m + Math.pow(2, mLen) + e = e - eBias + } + return (s ? -1 : 1) * m * Math.pow(2, e - mLen) +} + +exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { + var e, m, c + var eLen = nBytes * 8 - mLen - 1 + var eMax = (1 << eLen) - 1 + var eBias = eMax >> 1 + var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) + var i = isLE ? 0 : (nBytes - 1) + var d = isLE ? 1 : -1 + var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 + + value = Math.abs(value) + + if (isNaN(value) || value === Infinity) { + m = isNaN(value) ? 1 : 0 + e = eMax + } else { + e = Math.floor(Math.log(value) / Math.LN2) + if (value * (c = Math.pow(2, -e)) < 1) { + e-- + c *= 2 + } + if (e + eBias >= 1) { + value += rt / c + } else { + value += rt * Math.pow(2, 1 - eBias) + } + if (value * c >= 2) { + e++ + c /= 2 + } + + if (e + eBias >= eMax) { + m = 0 + e = eMax + } else if (e + eBias >= 1) { + m = (value * c - 1) * Math.pow(2, mLen) + e = e + eBias + } else { + m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) + e = 0 + } + } + + for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} + + e = (e << mLen) | m + eLen += mLen + for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} + + buffer[offset + i - d] |= s * 128 +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json new file mode 100644 index 0000000..7c35993 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json @@ -0,0 +1,71 @@ +{ + "name": "ieee754", + "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object", + "version": "1.1.8", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "http://feross.org" + }, + "contributors": [ + { + "name": "Romain Beauxis", + "email": "toots@rastageeks.org" + } + ], + "devDependencies": { + "standard": "*", + "tape": "^4.0.0", + "zuul": "^3.0.0" + }, + "keywords": [ + "IEEE 754", + "buffer", + "convert", + "floating point", + "ieee754" + ], + "license": "BSD-3-Clause", + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/feross/ieee754.git" + }, + "scripts": { + "test": "standard && npm run test-node && npm run test-browser", + "test-browser": "zuul -- test/*.js", + "test-browser-local": "zuul --local -- test/*.js", + "test-node": "tape test/*.js" + }, + "gitHead": "53d3f869cc527852156b8307353c55addc3e03ae", + "bugs": { + "url": "https://github.com/feross/ieee754/issues" + }, + "homepage": "https://github.com/feross/ieee754#readme", + "_id": "ieee754@1.1.8", + "_shasum": "be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4", + "_from": "ieee754@>=1.1.4 <2.0.0", + "_npmVersion": "3.10.3", + "_nodeVersion": "6.7.0", + "_npmUser": { + "name": "feross", + "email": "feross@feross.org" + }, + "dist": { + "shasum": "be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4", + "tarball": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" + }, + "maintainers": [ + { + "name": "feross", + "email": "feross@feross.org" + } + ], + "_npmOperationalInternal": { + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/ieee754-1.1.8.tgz_1475481601035_0.6688473029062152" + }, + "directories": {}, + "_resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js new file mode 100644 index 0000000..58fae2b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js @@ -0,0 +1,23 @@ +var ieee754 = require('../') +var test = require('tape') + +var EPSILON = 0.00001 + +test('read float', function (t) { + var buf = new Buffer(4) + buf.writeFloatLE(42.42, 0) + var num = ieee754.read(buf, 0, true, 23, 4) + t.ok(Math.abs(num - 42.42) < EPSILON) + + t.end() +}) + +test('write float', function (t) { + var buf = new Buffer(4) + ieee754.write(buf, 42.42, 0, true, 23, 4) + + var num = buf.readFloatLE(0) + t.ok(Math.abs(num - 42.42) < EPSILON) + + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml new file mode 100644 index 0000000..cc4dba2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - "0.8" + - "0.10" diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile new file mode 100644 index 0000000..787d56e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile @@ -0,0 +1,6 @@ + +test: + @node_modules/.bin/tape test.js + +.PHONY: test + diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md new file mode 100644 index 0000000..16d2c59 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md @@ -0,0 +1,60 @@ + +# isarray + +`Array#isArray` for older browsers. + +[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray) +[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray) + +[![browser support](https://ci.testling.com/juliangruber/isarray.png) +](https://ci.testling.com/juliangruber/isarray) + +## Usage + +```js +var isArray = require('isarray'); + +console.log(isArray([])); // => true +console.log(isArray({})); // => false +``` + +## Installation + +With [npm](http://npmjs.org) do + +```bash +$ npm install isarray +``` + +Then bundle for the browser with +[browserify](https://github.com/substack/browserify). + +With [component](http://component.io) do + +```bash +$ component install juliangruber/isarray +``` + +## License + +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json new file mode 100644 index 0000000..9e31b68 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json @@ -0,0 +1,19 @@ +{ + "name" : "isarray", + "description" : "Array#isArray for older browsers", + "version" : "0.0.1", + "repository" : "juliangruber/isarray", + "homepage": "https://github.com/juliangruber/isarray", + "main" : "index.js", + "scripts" : [ + "index.js" + ], + "dependencies" : {}, + "keywords": ["browser","isarray","array"], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT" +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js new file mode 100644 index 0000000..a57f634 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js @@ -0,0 +1,5 @@ +var toString = {}.toString; + +module.exports = Array.isArray || function (arr) { + return toString.call(arr) == '[object Array]'; +}; diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json new file mode 100644 index 0000000..92bed21 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json @@ -0,0 +1,54 @@ +{ + "name": "isarray", + "description": "Array#isArray for older browsers", + "version": "1.0.0", + "repository": { + "type": "git", + "url": "git://github.com/juliangruber/isarray.git" + }, + "homepage": "https://github.com/juliangruber/isarray", + "main": "index.js", + "dependencies": {}, + "devDependencies": { + "tape": "~2.13.4" + }, + "keywords": [ + "browser", + "isarray", + "array" + ], + "author": { + "name": "Julian Gruber", + "email": "mail@juliangruber.com", + "url": "http://juliangruber.com" + }, + "license": "MIT", + "testling": { + "files": "test.js", + "browsers": [ + "ie/8..latest", + "firefox/17..latest", + "firefox/nightly", + "chrome/22..latest", + "chrome/canary", + "opera/12..latest", + "opera/next", + "safari/5.1..latest", + "ipad/6.0..latest", + "iphone/6.0..latest", + "android-browser/4.2..latest" + ] + }, + "scripts": { + "test": "tape test.js" + }, + "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray)\n[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray)\n\n[![browser support](https://ci.testling.com/juliangruber/isarray.png)\n](https://ci.testling.com/juliangruber/isarray)\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/juliangruber/isarray/issues" + }, + "_id": "isarray@1.0.0", + "_shasum": "bb935d48582cba168c06834957a54a3e07124f11", + "_resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "_from": "isarray@>=1.0.0 <2.0.0" +} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js new file mode 100644 index 0000000..e0c3444 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js @@ -0,0 +1,20 @@ +var isArray = require('./'); +var test = require('tape'); + +test('is array', function(t){ + t.ok(isArray([])); + t.notOk(isArray({})); + t.notOk(isArray(null)); + t.notOk(isArray(false)); + + var obj = {}; + obj[0] = true; + t.notOk(isArray(obj)); + + var arr = []; + arr.foo = 'bar'; + t.ok(isArray(arr)); + + t.end(); +}); + diff --git a/node_modules/aws-sdk/node_modules/buffer/package.json b/node_modules/aws-sdk/node_modules/buffer/package.json new file mode 100644 index 0000000..e1f6a33 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/package.json @@ -0,0 +1,89 @@ +{ + "name": "buffer", + "description": "Node.js Buffer API, for the browser", + "version": "4.9.1", + "author": { + "name": "Feross Aboukhadijeh", + "email": "feross@feross.org", + "url": "http://feross.org" + }, + "bugs": { + "url": "https://github.com/feross/buffer/issues" + }, + "contributors": [ + { + "name": "Romain Beauxis", + "email": "toots@rastageeks.org" + }, + { + "name": "James Halliday", + "email": "mail@substack.net" + } + ], + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + }, + "devDependencies": { + "benchmark": "^2.0.0", + "browserify": "^13.0.0", + "concat-stream": "^1.4.7", + "hyperquest": "^2.0.0", + "is-buffer": "^1.1.1", + "is-nan": "^1.0.1", + "split": "^1.0.0", + "standard": "^7.0.0", + "tape": "^4.0.0", + "through2": "^2.0.0", + "zuul": "^3.0.0" + }, + "homepage": "https://github.com/feross/buffer", + "jspm": { + "map": { + "./index.js": { + "node": "@node/buffer" + } + } + }, + "keywords": [ + "arraybuffer", + "browser", + "browserify", + "buffer", + "compatible", + "dataview", + "uint8array" + ], + "license": "MIT", + "main": "index.js", + "repository": { + "type": "git", + "url": "git://github.com/feross/buffer.git" + }, + "scripts": { + "perf": "browserify --debug perf/bracket-notation.js > perf/bundle.js && open perf/index.html", + "perf-node": "node perf/bracket-notation.js && node perf/concat.js && node perf/copy-big.js && node perf/copy.js && node perf/new-big.js && node perf/new.js && node perf/readDoubleBE.js && node perf/readFloatBE.js && node perf/readUInt32LE.js && node perf/slice.js && node perf/writeFloatBE.js", + "size": "browserify -r ./ | uglifyjs -c -m | gzip | wc -c", + "test": "standard && node ./bin/test.js", + "test-browser-es5": "zuul --ui tape -- test/*.js", + "test-browser-es5-local": "zuul --ui tape --local -- test/*.js", + "test-browser-es6": "zuul --ui tape -- test/*.js test/node/*.js", + "test-browser-es6-local": "zuul --ui tape --local -- test/*.js test/node/*.js", + "test-node": "tape test/*.js test/node/*.js && OBJECT_IMPL=true tape test/*.js", + "update-authors": "./bin/update-authors.sh" + }, + "standard": { + "ignore": [ + "test/node/*.js", + "test/_polyfill.js", + "perf/*.js" + ] + }, + "readme": "# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url]\n\n#### The buffer module from [node.js](https://nodejs.org/), for the browser.\n\n[![saucelabs][saucelabs-image]][saucelabs-url]\n\n[travis-image]: https://img.shields.io/travis/feross/buffer/master.svg\n[travis-url]: https://travis-ci.org/feross/buffer\n[npm-image]: https://img.shields.io/npm/v/buffer.svg\n[npm-url]: https://npmjs.org/package/buffer\n[downloads-image]: https://img.shields.io/npm/dm/buffer.svg\n[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg\n[saucelabs-url]: https://saucelabs.com/u/buffer\n\nWith [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module.\n\nThe goal is to provide an API that is 100% identical to\n[node's Buffer API](https://nodejs.org/api/buffer.html). Read the\n[official docs](https://nodejs.org/api/buffer.html) for the full list of properties,\ninstance methods, and class methods that are supported.\n\n## features\n\n- Manipulate binary data like a boss, in all browsers -- even IE6!\n- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`)\n- Extremely small bundle size (**5.04KB minified + gzipped**, 35.5KB with comments)\n- Excellent browser support (IE 6+, Chrome 4+, Firefox 3+, Safari 5.1+, Opera 11+, iOS, etc.)\n- Preserves Node API exactly, with one minor difference (see below)\n- Square-bracket `buf[4]` notation works, even in old browsers like IE6!\n- Does not modify any browser prototypes or put anything on `window`\n- Comprehensive test suite (including all buffer tests from node.js core)\n\n\n## install\n\nTo use this module directly (without browserify), install it:\n\n```bash\nnpm install buffer\n```\n\nThis module was previously called **native-buffer-browserify**, but please use **buffer**\nfrom now on.\n\nA standalone bundle is available [here](https://wzrd.in/standalone/buffer), for non-browserify users.\n\n\n## usage\n\nThe module's API is identical to node's `Buffer` API. Read the\n[official docs](https://nodejs.org/api/buffer.html) for the full list of properties,\ninstance methods, and class methods that are supported.\n\nAs mentioned above, `require('buffer')` or use the `Buffer` global with\n[browserify](http://browserify.org) and this module will automatically be included\nin your bundle. Almost any npm module will work in the browser, even if it assumes that\nthe node `Buffer` API will be available.\n\nTo depend on this module explicitly (without browserify), require it like this:\n\n```js\nvar Buffer = require('buffer/').Buffer // note: the trailing slash is important!\n```\n\nTo require this module explicitly, use `require('buffer/')` which tells the node.js module\nlookup algorithm (also used by browserify) to use the **npm module** named `buffer`\ninstead of the **node.js core** module named `buffer`!\n\n\n## how does it work?\n\nThe Buffer constructor returns instances of `Uint8Array` that have their prototype\nchanged to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of `Uint8Array`,\nso the returned instances will have all the node `Buffer` methods and the\n`Uint8Array` methods. Square bracket notation works as expected -- it returns a\nsingle octet.\n\nThe `Uint8Array` prototype remains unmodified.\n\n\n## one minor difference\n\n#### In old browsers, `buf.slice()` does not modify parent buffer's memory\n\nIf you only support modern browsers (specifically, those with typed array support),\nthen this issue does not affect you. If you support super old browsers, then read on.\n\nIn node, the `slice()` method returns a new `Buffer` that shares underlying memory\nwith the original Buffer. When you modify one buffer, you modify the other.\n[Read more.](https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end)\n\nIn browsers with typed array support, this `Buffer` implementation supports this\nbehavior. In browsers without typed arrays, an alternate buffer implementation is\nused that is based on `Object` which has no mechanism to point separate\n`Buffer`s to the same underlying slab of memory.\n\nYou can see which browser versions lack typed array support\n[here](https://github.com/feross/buffer/blob/master/index.js#L22-L48).\n\n\n## tracking the latest node api\n\nThis module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer\nAPI is considered **stable** in the\n[node stability index](https://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index),\nso it is unlikely that there will ever be breaking changes.\nNonetheless, when/if the Buffer API changes in node, this module's API will change\naccordingly.\n\n## related packages\n\n- [`buffer-equals`](https://www.npmjs.com/package/buffer-equals) - Node.js 0.12 buffer.equals() ponyfill\n- [`buffer-reverse`](https://www.npmjs.com/package/buffer-reverse) - A lite module for reverse-operations on buffers\n- [`buffer-xor`](https://www.npmjs.com/package/buffer-xor) - A simple module for bitwise-xor on buffers\n- [`is-buffer`](https://www.npmjs.com/package/is-buffer) - Determine if an object is a Buffer without including the whole `Buffer` package\n- [`typedarray-to-buffer`](https://www.npmjs.com/package/typedarray-to-buffer) - Convert a typed array to a Buffer without a copy\n\n## performance\n\nSee perf tests in `/perf`.\n\n`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a\nsanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will\nalways be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module,\nwhich is included to compare against.\n\nNOTE: Performance has improved since these benchmarks were taken. PR welcoem to update the README.\n\n### Chrome 38\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ |\n| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | |\n| | | | |\n| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | |\n| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | |\n| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | |\n| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | |\n| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | |\n| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ |\n| | | | |\n| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ |\n| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | |\n| | | | |\n| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ |\n| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | |\n| | | | |\n| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ |\n| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | |\n| | | | |\n| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | |\n| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | |\n| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ |\n\n\n### Firefox 33\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | |\n| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ |\n| | | | |\n| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | |\n| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | |\n| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | |\n| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | |\n| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | |\n| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | |\n| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | |\n| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ |\n| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | |\n| | | | |\n| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | |\n| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | |\n| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ |\n\n### Safari 8\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ |\n| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | |\n| | | | |\n| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | |\n| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | |\n| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | |\n| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ |\n| | | | |\n| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | |\n| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | |\n| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ |\n| | | | |\n| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | |\n| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | |\n| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ |\n| | | | |\n| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | |\n| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ |\n| | | | |\n| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | |\n| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | |\n| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ |\n\n\n### Node 0.11.14\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | |\n| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ |\n| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | |\n| | | | |\n| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | |\n| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ |\n| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | |\n| | | | |\n| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | |\n| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ |\n| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | |\n| | | | |\n| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | |\n| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ |\n| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | |\n| | | | |\n| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | |\n| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | |\n| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | |\n| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ |\n| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | |\n| | | | |\n| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ |\n| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | |\n| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | |\n| | | | |\n| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ |\n| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | |\n| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | |\n| | | | |\n| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | |\n| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | |\n| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ |\n| | | | |\n| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | |\n| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ |\n| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | |\n| | | | |\n| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | |\n| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ |\n| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | |\n\n### iojs 1.8.1\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | |\n| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | |\n| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ |\n| | | | |\n| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | |\n| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | |\n| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | |\n| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | |\n| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | |\n| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ |\n| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | |\n| | | | |\n| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | |\n| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | |\n| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | |\n| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ |\n| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | |\n| | | | |\n| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ |\n| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | |\n| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | |\n| | | | |\n| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ |\n| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | |\n| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | |\n| | | | |\n| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | |\n| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | |\n| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ |\n| | | | |\n| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | |\n| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | |\n| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | |\n| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ |\n| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | |\n| | | | |\n\n## Testing the project\n\nFirst, install the project:\n\n npm install\n\nThen, to run tests in Node.js, run:\n\n npm run test-node\n\nTo test locally in a browser, you can run:\n\n npm run test-browser-local\n\nThis will print out a URL that you can then open in a browser to run the tests, using [Zuul](https://github.com/defunctzombie/zuul).\n\nTo run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run:\n\n npm test\n\nThis is what's run in Travis, to check against various browsers. The list of browsers is kept in the `.zuul.yml` file.\n\n## JavaScript Standard Style\n\nThis module uses [JavaScript Standard Style](https://github.com/feross/standard).\n\n[![JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nTo test that the code conforms to the style, `npm install` and run:\n\n ./node_modules/.bin/standard\n\n## credit\n\nThis was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify).\n\n\n## license\n\nMIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis.\n", + "readmeFilename": "README.md", + "_id": "buffer@4.9.1", + "_shasum": "6d1bb601b07a4efced97094132093027c95bc298", + "_resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", + "_from": "buffer@4.9.1" +} diff --git a/node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js b/node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js new file mode 100644 index 0000000..61f9c18 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js @@ -0,0 +1,150 @@ +if (!Array.prototype.forEach) { + + Array.prototype.forEach = function(callback, thisArg) { + + var T, k; + + if (this == null) { + throw new TypeError(' this is null or not defined'); + } + + // 1. Let O be the result of calling ToObject passing the |this| value as the argument. + var O = Object(this); + + // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length". + // 3. Let len be ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. If IsCallable(callback) is false, throw a TypeError exception. + // See: http://es5.github.com/#x9.11 + if (typeof callback !== "function") { + throw new TypeError(callback + ' is not a function'); + } + + // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. + if (arguments.length > 1) { + T = thisArg; + } + + // 6. Let k be 0 + k = 0; + + // 7. Repeat, while k < len + while (k < len) { + + var kValue; + + // a. Let Pk be ToString(k). + // This is implicit for LHS operands of the in operator + // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk. + // This step can be combined with c + // c. If kPresent is true, then + if (k in O) { + + // i. Let kValue be the result of calling the Get internal method of O with argument Pk. + kValue = O[k]; + + // ii. Call the Call internal method of callback with T as the this value and + // argument list containing kValue, k, and O. + callback.call(T, kValue, k, O); + } + // d. Increase k by 1. + k++; + } + // 8. return undefined + }; +} + +if (!Array.isArray) { + Array.isArray = function(arg) { + return Object.prototype.toString.call(arg) === '[object Array]'; + }; +} + +if (!Array.prototype.map) { + + Array.prototype.map = function(callback, thisArg) { + + var T, A, k; + + if (this == null) { + throw new TypeError(' this is null or not defined'); + } + + // 1. Let O be the result of calling ToObject passing the |this| + // value as the argument. + var O = Object(this); + + // 2. Let lenValue be the result of calling the Get internal + // method of O with the argument "length". + // 3. Let len be ToUint32(lenValue). + var len = O.length >>> 0; + + // 4. If IsCallable(callback) is false, throw a TypeError exception. + // See: http://es5.github.com/#x9.11 + if (typeof callback !== 'function') { + throw new TypeError(callback + ' is not a function'); + } + + // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. + if (arguments.length > 1) { + T = thisArg; + } + + // 6. Let A be a new array created as if by the expression new Array(len) + // where Array is the standard built-in constructor with that name and + // len is the value of len. + A = new Array(len); + + // 7. Let k be 0 + k = 0; + + // 8. Repeat, while k < len + while (k < len) { + + var kValue, mappedValue; + + // a. Let Pk be ToString(k). + // This is implicit for LHS operands of the in operator + // b. Let kPresent be the result of calling the HasProperty internal + // method of O with argument Pk. + // This step can be combined with c + // c. If kPresent is true, then + if (k in O) { + + // i. Let kValue be the result of calling the Get internal + // method of O with argument Pk. + kValue = O[k]; + + // ii. Let mappedValue be the result of calling the Call internal + // method of callback with T as the this value and argument + // list containing kValue, k, and O. + mappedValue = callback.call(T, kValue, k, O); + + // iii. Call the DefineOwnProperty internal method of A with arguments + // Pk, Property Descriptor + // { Value: mappedValue, + // Writable: true, + // Enumerable: true, + // Configurable: true }, + // and false. + + // In browsers that support Object.defineProperty, use the following: + // Object.defineProperty(A, k, { + // value: mappedValue, + // writable: true, + // enumerable: true, + // configurable: true + // }); + + // For best browser support, use the following: + A[k] = mappedValue; + } + // d. Increase k by 1. + k++; + } + + // 9. return A + return A; + }; +} diff --git a/node_modules/aws-sdk/node_modules/buffer/test/base64.js b/node_modules/aws-sdk/node_modules/buffer/test/base64.js new file mode 100644 index 0000000..e4ecc56 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/base64.js @@ -0,0 +1,47 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('base64: ignore whitespace', function (t) { + var text = '\n YW9ldQ== ' + var buf = new B(text, 'base64') + t.equal(buf.toString(), 'aoeu') + t.end() +}) + +test('base64: strings without padding', function (t) { + t.equal((new B('YW9ldQ', 'base64').toString()), 'aoeu') + t.end() +}) + +test('base64: newline in utf8 -- should not be an issue', function (t) { + t.equal( + new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK', 'base64').toString('utf8'), + '---\ntitle: Three dashes marks the spot\ntags:\n' + ) + t.end() +}) + +test('base64: newline in base64 -- should get stripped', function (t) { + t.equal( + new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\nICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'), + '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-' + ) + t.end() +}) + +test('base64: tab characters in base64 - should get stripped', function (t) { + t.equal( + new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\t\t\t\tICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'), + '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-' + ) + t.end() +}) + +test('base64: invalid non-alphanumeric characters -- should be stripped', function (t) { + t.equal( + new B('!"#$%&\'()*,.:;<=>?@[\\]^`{|}~', 'base64').toString('utf8'), + '' + ) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/basic.js b/node_modules/aws-sdk/node_modules/buffer/test/basic.js new file mode 100644 index 0000000..0368ed9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/basic.js @@ -0,0 +1,85 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('instanceof Buffer', function (t) { + var buf = new B([1, 2]) + t.ok(buf instanceof B) + t.end() +}) + +test('convert to Uint8Array in modern browsers', function (t) { + if (B.TYPED_ARRAY_SUPPORT) { + var buf = new B([1, 2]) + var uint8array = new Uint8Array(buf.buffer) + t.ok(uint8array instanceof Uint8Array) + t.equal(uint8array[0], 1) + t.equal(uint8array[1], 2) + } else { + t.pass('object impl: skipping test') + } + t.end() +}) + +test('indexes from a string', function (t) { + var buf = new B('abc') + t.equal(buf[0], 97) + t.equal(buf[1], 98) + t.equal(buf[2], 99) + t.end() +}) + +test('indexes from an array', function (t) { + var buf = new B([ 97, 98, 99 ]) + t.equal(buf[0], 97) + t.equal(buf[1], 98) + t.equal(buf[2], 99) + t.end() +}) + +test('setting index value should modify buffer contents', function (t) { + var buf = new B([ 97, 98, 99 ]) + t.equal(buf[2], 99) + t.equal(buf.toString(), 'abc') + + buf[2] += 10 + t.equal(buf[2], 109) + t.equal(buf.toString(), 'abm') + t.end() +}) + +test('storing negative number should cast to unsigned', function (t) { + var buf = new B(1) + + if (B.TYPED_ARRAY_SUPPORT) { + // This does not work with the object implementation -- nothing we can do! + buf[0] = -3 + t.equal(buf[0], 253) + } + + buf = new B(1) + buf.writeInt8(-3, 0) + t.equal(buf[0], 253) + + t.end() +}) + +test('test that memory is copied from array-like', function (t) { + if (B.TYPED_ARRAY_SUPPORT) { + var u = new Uint8Array(4) + var b = new B(u) + b[0] = 1 + b[1] = 2 + b[2] = 3 + b[3] = 4 + + t.equal(u[0], 0) + t.equal(u[1], 0) + t.equal(u[2], 0) + t.equal(u[3], 0) + } else { + t.pass('object impl: skipping test') + } + + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/compare.js b/node_modules/aws-sdk/node_modules/buffer/test/compare.js new file mode 100644 index 0000000..62b478c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/compare.js @@ -0,0 +1,59 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('buffer.compare', function (t) { + var b = new B(1).fill('a') + var c = new B(1).fill('c') + var d = new B(2).fill('aa') + + t.equal(b.compare(c), -1) + t.equal(c.compare(d), 1) + t.equal(d.compare(b), 1) + t.equal(b.compare(d), -1) + + // static method + t.equal(B.compare(b, c), -1) + t.equal(B.compare(c, d), 1) + t.equal(B.compare(d, b), 1) + t.equal(B.compare(b, d), -1) + t.end() +}) + +test('buffer.compare argument validation', function (t) { + t.throws(function () { + var b = new B(1) + B.compare(b, 'abc') + }) + + t.throws(function () { + var b = new B(1) + B.compare('abc', b) + }) + + t.throws(function () { + var b = new B(1) + b.compare('abc') + }) + t.end() +}) + +test('buffer.equals', function (t) { + var b = new B(5).fill('abcdf') + var c = new B(5).fill('abcdf') + var d = new B(5).fill('abcde') + var e = new B(6).fill('abcdef') + + t.ok(b.equals(c)) + t.ok(!c.equals(d)) + t.ok(!d.equals(e)) + t.end() +}) + +test('buffer.equals argument validation', function (t) { + t.throws(function () { + var b = new B(1) + b.equals('abc') + }) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/constructor.js b/node_modules/aws-sdk/node_modules/buffer/test/constructor.js new file mode 100644 index 0000000..cec5cdc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/constructor.js @@ -0,0 +1,193 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('new buffer from array', function (t) { + t.equal( + new B([1, 2, 3]).toString(), + '\u0001\u0002\u0003' + ) + t.end() +}) + +test('new buffer from array w/ negatives', function (t) { + t.equal( + new B([-1, -2, -3]).toString('hex'), + 'fffefd' + ) + t.end() +}) + +test('new buffer from array with mixed signed input', function (t) { + t.equal( + new B([-255, 255, -128, 128, 512, -512, 511, -511]).toString('hex'), + '01ff80800000ff01' + ) + t.end() +}) + +test('new buffer from string', function (t) { + t.equal( + new B('hey', 'utf8').toString(), + 'hey' + ) + t.end() +}) + +test('new buffer from buffer', function (t) { + var b1 = new B('asdf') + var b2 = new B(b1) + t.equal(b1.toString('hex'), b2.toString('hex')) + t.end() +}) + +test('new buffer from ArrayBuffer', function (t) { + if (typeof ArrayBuffer !== 'undefined') { + var arraybuffer = new Uint8Array([0, 1, 2, 3]).buffer + var b = new B(arraybuffer) + t.equal(b.length, 4) + t.equal(b[0], 0) + t.equal(b[1], 1) + t.equal(b[2], 2) + t.equal(b[3], 3) + t.equal(b[4], undefined) + } + t.end() +}) + +test('new buffer from ArrayBuffer, shares memory', function (t) { + if (Buffer.TYPED_ARRAY_SUPPORT) { + var u = new Uint8Array([0, 1, 2, 3]) + var arraybuffer = u.buffer + var b = new B(arraybuffer) + t.equal(b.length, 4) + t.equal(b[0], 0) + t.equal(b[1], 1) + t.equal(b[2], 2) + t.equal(b[3], 3) + t.equal(b[4], undefined) + + // changing the Uint8Array (and thus the ArrayBuffer), changes the Buffer + u[0] = 10 + t.equal(b[0], 10) + u[1] = 11 + t.equal(b[1], 11) + u[2] = 12 + t.equal(b[2], 12) + u[3] = 13 + t.equal(b[3], 13) + } + t.end() +}) + +test('new buffer from Uint8Array', function (t) { + if (typeof Uint8Array !== 'undefined') { + var b1 = new Uint8Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from Uint16Array', function (t) { + if (typeof Uint16Array !== 'undefined') { + var b1 = new Uint16Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from Uint32Array', function (t) { + if (typeof Uint32Array !== 'undefined') { + var b1 = new Uint32Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from Int16Array', function (t) { + if (typeof Int16Array !== 'undefined') { + var b1 = new Int16Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from Int32Array', function (t) { + if (typeof Int32Array !== 'undefined') { + var b1 = new Int32Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from Float32Array', function (t) { + if (typeof Float32Array !== 'undefined') { + var b1 = new Float32Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from Float64Array', function (t) { + if (typeof Float64Array !== 'undefined') { + var b1 = new Float64Array([0, 1, 2, 3]) + var b2 = new B(b1) + t.equal(b1.length, b2.length) + t.equal(b1[0], 0) + t.equal(b1[1], 1) + t.equal(b1[2], 2) + t.equal(b1[3], 3) + t.equal(b1[4], undefined) + } + t.end() +}) + +test('new buffer from buffer.toJSON() output', function (t) { + if (typeof JSON === 'undefined') { + // ie6, ie7 lack support + t.end() + return + } + var buf = new B('test') + var json = JSON.stringify(buf) + var obj = JSON.parse(json) + var copy = new B(obj) + t.ok(buf.equals(copy)) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/from-string.js b/node_modules/aws-sdk/node_modules/buffer/test/from-string.js new file mode 100644 index 0000000..e25db26 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/from-string.js @@ -0,0 +1,132 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('detect utf16 surrogate pairs', function (t) { + var text = '\uD83D\uDE38' + '\uD83D\uDCAD' + '\uD83D\uDC4D' + var buf = new B(text) + t.equal(text, buf.toString()) + t.end() +}) + +test('detect utf16 surrogate pairs over U+20000 until U+10FFFF', function (t) { + var text = '\uD842\uDFB7' + '\uD93D\uDCAD' + '\uDBFF\uDFFF' + var buf = new B(text) + t.equal(text, buf.toString()) + t.end() +}) + +test('replace orphaned utf16 surrogate lead code point', function (t) { + var text = '\uD83D\uDE38' + '\uD83D' + '\uD83D\uDC4D' + var buf = new B(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ])) + t.end() +}) + +test('replace orphaned utf16 surrogate trail code point', function (t) { + var text = '\uD83D\uDE38' + '\uDCAD' + '\uD83D\uDC4D' + var buf = new B(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ])) + t.end() +}) + +test('do not write partial utf16 code units', function (t) { + var f = new B([0, 0, 0, 0, 0]) + t.equal(f.length, 5) + var size = f.write('ã‚ã„ã†ãˆãŠ', 'utf16le') + t.equal(size, 4) + t.deepEqual(f, new B([0x42, 0x30, 0x44, 0x30, 0x00])) + t.end() +}) + +test('handle partial utf16 code points when encoding to utf8 the way node does', function (t) { + var text = '\uD83D\uDE38' + '\uD83D\uDC4D' + + var buf = new B(8) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xf0, 0x9f, 0x91, 0x8d ])) + + buf = new B(7) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00, 0x00 ])) + + buf = new B(6) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00 ])) + + buf = new B(5) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00 ])) + + buf = new B(4) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8 ])) + + buf = new B(3) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x00, 0x00, 0x00 ])) + + buf = new B(2) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x00, 0x00 ])) + + buf = new B(1) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x00 ])) + + t.end() +}) + +test('handle invalid utf16 code points when encoding to utf8 the way node does', function (t) { + var text = 'a' + '\uDE38\uD83D' + 'b' + + var buf = new B(8) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd, 0x62 ])) + + buf = new B(7) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd ])) + + buf = new B(6) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00, 0x00 ])) + + buf = new B(5) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00 ])) + + buf = new B(4) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd ])) + + buf = new B(3) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0x00, 0x00 ])) + + buf = new B(2) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61, 0x00 ])) + + buf = new B(1) + buf.fill(0) + buf.write(text) + t.deepEqual(buf, new B([ 0x61 ])) + + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js b/node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js new file mode 100644 index 0000000..3744b23 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js @@ -0,0 +1,22 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var isBuffer = require('is-buffer') +var test = require('tape') + +test('is-buffer tests', function (t) { + t.ok(isBuffer(new B(4)), 'new Buffer(4)') + + t.notOk(isBuffer(undefined), 'undefined') + t.notOk(isBuffer(null), 'null') + t.notOk(isBuffer(''), 'empty string') + t.notOk(isBuffer(true), 'true') + t.notOk(isBuffer(false), 'false') + t.notOk(isBuffer(0), '0') + t.notOk(isBuffer(1), '1') + t.notOk(isBuffer(1.0), '1.0') + t.notOk(isBuffer('string'), 'string') + t.notOk(isBuffer({}), '{}') + t.notOk(isBuffer(function foo () {}), 'function foo () {}') + + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/methods.js b/node_modules/aws-sdk/node_modules/buffer/test/methods.js new file mode 100644 index 0000000..f4bd3f2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/methods.js @@ -0,0 +1,127 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('buffer.toJSON', function (t) { + var data = [1, 2, 3, 4] + t.deepEqual( + new B(data).toJSON(), + { type: 'Buffer', data: [ 1, 2, 3, 4 ] } + ) + t.end() +}) + +test('buffer.copy', function (t) { + // copied from nodejs.org example + var buf1 = new B(26) + var buf2 = new B(26) + + for (var i = 0; i < 26; i++) { + buf1[i] = i + 97 // 97 is ASCII a + buf2[i] = 33 // ASCII ! + } + + buf1.copy(buf2, 8, 16, 20) + + t.equal( + buf2.toString('ascii', 0, 25), + '!!!!!!!!qrst!!!!!!!!!!!!!' + ) + t.end() +}) + +test('test offset returns are correct', function (t) { + var b = new B(16) + t.equal(4, b.writeUInt32LE(0, 0)) + t.equal(6, b.writeUInt16LE(0, 4)) + t.equal(7, b.writeUInt8(0, 6)) + t.equal(8, b.writeInt8(0, 7)) + t.equal(16, b.writeDoubleLE(0, 8)) + t.end() +}) + +test('concat() a varying number of buffers', function (t) { + var zero = [] + var one = [ new B('asdf') ] + var long = [] + for (var i = 0; i < 10; i++) { + long.push(new B('asdf')) + } + + var flatZero = B.concat(zero) + var flatOne = B.concat(one) + var flatLong = B.concat(long) + var flatLongLen = B.concat(long, 40) + + t.equal(flatZero.length, 0) + t.equal(flatOne.toString(), 'asdf') + t.deepEqual(flatOne, one[0]) + t.equal(flatLong.toString(), (new Array(10 + 1).join('asdf'))) + t.equal(flatLongLen.toString(), (new Array(10 + 1).join('asdf'))) + t.end() +}) + +test('fill', function (t) { + var b = new B(10) + b.fill(2) + t.equal(b.toString('hex'), '02020202020202020202') + t.end() +}) + +test('fill (string)', function (t) { + var b = new B(10) + b.fill('abc') + t.equal(b.toString(), 'abcabcabca') + b.fill('Õ§') + t.equal(b.toString(), 'Õ§Õ§Õ§Õ§Õ§') + t.end() +}) + +test('copy() empty buffer with sourceEnd=0', function (t) { + var source = new B([42]) + var destination = new B([43]) + source.copy(destination, 0, 0, 0) + t.equal(destination.readUInt8(0), 43) + t.end() +}) + +test('copy() after slice()', function (t) { + var source = new B(200) + var dest = new B(200) + var expected = new B(200) + for (var i = 0; i < 200; i++) { + source[i] = i + dest[i] = 0 + } + + source.slice(2).copy(dest) + source.copy(expected, 0, 2) + t.deepEqual(dest, expected) + t.end() +}) + +test('copy() ascending', function (t) { + var b = new B('abcdefghij') + b.copy(b, 0, 3, 10) + t.equal(b.toString(), 'defghijhij') + t.end() +}) + +test('copy() descending', function (t) { + var b = new B('abcdefghij') + b.copy(b, 3, 0, 7) + t.equal(b.toString(), 'abcabcdefg') + t.end() +}) + +test('buffer.slice sets indexes', function (t) { + t.equal((new B('hallo')).slice(0, 5).toString(), 'hallo') + t.end() +}) + +test('buffer.slice out of range', function (t) { + t.plan(2) + t.equal((new B('hallo')).slice(0, 10).toString(), 'hallo') + t.equal((new B('hallo')).slice(10, 2).toString(), '') + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js new file mode 100644 index 0000000..b524f51 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js @@ -0,0 +1,1501 @@ +'use strict'; +var Buffer = require('../../').Buffer; + +var common = { skip: function () {} }; +var assert = require('assert'); + +var Buffer = require('../../').Buffer; + +// counter to ensure unique value is always copied +var cntr = 0; + +var b = Buffer.allocUnsafe(1024); + +// console.log('b.length == %d', b.length); +assert.strictEqual(1024, b.length); + +b[0] = -1; +assert.strictEqual(b[0], 255); + +for (var i = 0; i < 1024; i++) { + b[i] = i % 256; +} + +for (var i = 0; i < 1024; i++) { + assert.strictEqual(i % 256, b[i]); +} + +var c = Buffer.allocUnsafe(512); +// console.log('c.length == %d', c.length); +assert.strictEqual(512, c.length); + +var d = Buffer.from([]); +assert.strictEqual(0, d.length); + +var ui32 = new Uint32Array(4).fill(42); +var e = Buffer.from(ui32); +for (var [index, value] of e.entries()) { + assert.strictEqual(value, ui32[index]); +} + +// First check Buffer#fill() works as expected. + +assert.throws(function() { + Buffer.allocUnsafe(8).fill('a', -1); +}); + +assert.throws(function() { + Buffer.allocUnsafe(8).fill('a', 0, 9); +}); + +// Make sure this doesn't hang indefinitely. +Buffer.allocUnsafe(8).fill(''); +Buffer.alloc(8, ''); + +{ + var buf = Buffer.alloc(64, 10); + for (var i = 0; i < buf.length; i++) + assert.equal(buf[i], 10); + + buf.fill(11, 0, buf.length >> 1); + for (var i = 0; i < buf.length >> 1; i++) + assert.equal(buf[i], 11); + for (var i = (buf.length >> 1) + 1; i < buf.length; i++) + assert.equal(buf[i], 10); + + buf.fill('h'); + for (var i = 0; i < buf.length; i++) + assert.equal('h'.charCodeAt(0), buf[i]); + + buf.fill(0); + for (var i = 0; i < buf.length; i++) + assert.equal(0, buf[i]); + + buf.fill(null); + for (var i = 0; i < buf.length; i++) + assert.equal(0, buf[i]); + + buf.fill(1, 16, 32); + for (var i = 0; i < 16; i++) + assert.equal(0, buf[i]); + for (var i = 16; i < 32; i++) + assert.equal(1, buf[i]); + for (var i = 32; i < buf.length; i++) + assert.equal(0, buf[i]); +} + +{ + var buf = Buffer.alloc(10, 'abc'); + assert.equal(buf.toString(), 'abcabcabca'); + buf.fill('Õ§'); + assert.equal(buf.toString(), 'Õ§Õ§Õ§Õ§Õ§'); +} + +{ + // copy 512 bytes, from 0 to 512. + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, 0, 512); +// console.log('copied %d bytes from b into c', copied); + assert.strictEqual(512, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +{ + // copy c into b, without specifying sourceEnd + b.fill(++cntr); + c.fill(++cntr); + var copied = c.copy(b, 0, 0); +// console.log('copied %d bytes from c into b w/o sourceEnd', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(c[i], b[i]); + } +} + +{ + // copy c into b, without specifying sourceStart + b.fill(++cntr); + c.fill(++cntr); + var copied = c.copy(b, 0); +// console.log('copied %d bytes from c into b w/o sourceStart', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(c[i], b[i]); + } +} + +{ + // copy longer buffer b to shorter c without targetStart + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c); +// console.log('copied %d bytes from b into c w/o targetStart', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +{ + // copy starting near end of b to c + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2)); +// console.log('copied %d bytes from end of b into beginning of c', copied); + assert.strictEqual(Math.floor(c.length / 2), copied); + for (var i = 0; i < Math.floor(c.length / 2); i++) { + assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]); + } + for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) { + assert.strictEqual(c[c.length - 1], c[i]); + } +} + +{ + // try to copy 513 bytes, and check we don't overrun c + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, 0, 513); +// console.log('copied %d bytes from b trying to overrun c', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +{ + // copy 768 bytes from b into b + b.fill(++cntr); + b.fill(++cntr, 256); + var copied = b.copy(b, 0, 256, 1024); +// console.log('copied %d bytes from b into b', copied); + assert.strictEqual(768, copied); + for (var i = 0; i < b.length; i++) { + assert.strictEqual(cntr, b[i]); + } +} + +// copy string longer than buffer length (failure will segfault) +var bb = Buffer.allocUnsafe(10); +bb.fill('hello crazy world'); + + +// try to copy from before the beginning of b +assert.doesNotThrow(() => { b.copy(c, 0, 100, 10); }); + +// copy throws at negative sourceStart +assert.throws(function() { + Buffer.allocUnsafe(5).copy(Buffer.allocUnsafe(5), 0, -1); +}, RangeError); + +{ + // check sourceEnd resets to targetEnd if former is greater than the latter + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, 0, 1025); +// console.log('copied %d bytes from b into c', copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +// throw with negative sourceEnd +// console.log('test copy at negative sourceEnd'); +assert.throws(function() { + b.copy(c, 0, 0, -1); +}, RangeError); + +// when sourceStart is greater than sourceEnd, zero copied +assert.equal(b.copy(c, 0, 100, 10), 0); + +// when targetStart > targetLength, zero copied +assert.equal(b.copy(c, 512, 0, 10), 0); + +var caught_error; + +// invalid encoding for Buffer.toString +caught_error = null; +try { + b.toString('invalid'); +} catch (err) { + caught_error = err; +} +assert.strictEqual('Unknown encoding: invalid', caught_error.message); + +// invalid encoding for Buffer.write +caught_error = null; +try { + b.write('test string', 0, 5, 'invalid'); +} catch (err) { + caught_error = err; +} +assert.strictEqual('Unknown encoding: invalid', caught_error.message); + +// try to create 0-length buffers +Buffer.from(''); +Buffer.from('', 'ascii'); +Buffer.from('', 'latin1'); +Buffer.alloc(0); +Buffer.allocUnsafe(0); + +// try to write a 0-length string beyond the end of b +assert.throws(function() { + b.write('', 2048); +}, RangeError); + +// throw when writing to negative offset +assert.throws(function() { + b.write('a', -1); +}, RangeError); + +// throw when writing past bounds from the pool +assert.throws(function() { + b.write('a', 2048); +}, RangeError); + +// throw when writing to negative offset +assert.throws(function() { + b.write('a', -1); +}, RangeError); + +// try to copy 0 bytes worth of data into an empty buffer +b.copy(Buffer.alloc(0), 0, 0, 0); + +// try to copy 0 bytes past the end of the target buffer +b.copy(Buffer.alloc(0), 1, 1, 1); +b.copy(Buffer.alloc(1), 1, 1, 1); + +// try to copy 0 bytes from past the end of the source buffer +b.copy(Buffer.alloc(1), 0, 2048, 2048); + +var rangeBuffer = Buffer.from('abc'); + +// if start >= buffer's length, empty string will be returned +assert.equal(rangeBuffer.toString('ascii', 3), ''); +assert.equal(rangeBuffer.toString('ascii', +Infinity), ''); +assert.equal(rangeBuffer.toString('ascii', 3.14, 3), ''); +assert.equal(rangeBuffer.toString('ascii', 'Infinity', 3), ''); + +// if end <= 0, empty string will be returned +assert.equal(rangeBuffer.toString('ascii', 1, 0), ''); +assert.equal(rangeBuffer.toString('ascii', 1, -1.2), ''); +assert.equal(rangeBuffer.toString('ascii', 1, -100), ''); +assert.equal(rangeBuffer.toString('ascii', 1, -Infinity), ''); + +// if start < 0, start will be taken as zero +assert.equal(rangeBuffer.toString('ascii', -1, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', -1.99, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', -Infinity, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); + +// if start is an invalid integer, start will be taken as zero +assert.equal(rangeBuffer.toString('ascii', 'node.js', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', {}, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', [], 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', NaN, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', null, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', undefined, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', false, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '', 3), 'abc'); + +// but, if start is an integer when coerced, then it will be coerced and used. +assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '1', 3), 'bc'); +assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '3', 3), ''); +assert.equal(rangeBuffer.toString('ascii', Number(3), 3), ''); +assert.equal(rangeBuffer.toString('ascii', '3.14', 3), ''); +assert.equal(rangeBuffer.toString('ascii', '1.99', 3), 'bc'); +assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 1.99, 3), 'bc'); +assert.equal(rangeBuffer.toString('ascii', true, 3), 'bc'); + +// if end > buffer's length, end will be taken as buffer's length +assert.equal(rangeBuffer.toString('ascii', 0, 5), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, 6.99), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, Infinity), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '5'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '6.99'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, 'Infinity'), 'abc'); + +// if end is an invalid integer, end will be taken as buffer's length +assert.equal(rangeBuffer.toString('ascii', 0, 'node.js'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, {}), ''); +assert.equal(rangeBuffer.toString('ascii', 0, NaN), ''); +assert.equal(rangeBuffer.toString('ascii', 0, undefined), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, null), ''); +assert.equal(rangeBuffer.toString('ascii', 0, []), ''); +assert.equal(rangeBuffer.toString('ascii', 0, false), ''); +assert.equal(rangeBuffer.toString('ascii', 0, ''), ''); + +// but, if end is an integer when coerced, then it will be coerced and used. +assert.equal(rangeBuffer.toString('ascii', 0, '-1'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, '1'), 'a'); +assert.equal(rangeBuffer.toString('ascii', 0, '-Infinity'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, '3'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, Number(3)), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '3.14'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '1.99'), 'a'); +assert.equal(rangeBuffer.toString('ascii', 0, '-1.99'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, 1.99), 'a'); +assert.equal(rangeBuffer.toString('ascii', 0, true), 'a'); + +// try toString() with a object as a encoding +assert.equal(rangeBuffer.toString({toString: function() { + return 'ascii'; +}}), 'abc'); + +// testing for smart defaults and ability to pass string values as offset +var writeTest = Buffer.from('abcdes'); +writeTest.write('n', 'ascii'); +writeTest.write('o', '1', 'ascii'); +writeTest.write('d', '2', 'ascii'); +writeTest.write('e', 3, 'ascii'); +writeTest.write('j', 4, 'ascii'); +assert.equal(writeTest.toString(), 'nodejs'); + +// ASCII slice test +{ + var asciiString = 'hello world'; + + for (var i = 0; i < asciiString.length; i++) { + b[i] = asciiString.charCodeAt(i); + } + var asciiSlice = b.toString('ascii', 0, asciiString.length); + assert.equal(asciiString, asciiSlice); +} + +{ + var asciiString = 'hello world'; + var offset = 100; + + var written = b.write(asciiString, offset, 'ascii'); + assert.equal(asciiString.length, written); + var asciiSlice = b.toString('ascii', offset, offset + asciiString.length); + assert.equal(asciiString, asciiSlice); +} + +{ + var asciiString = 'hello world'; + var offset = 100; + + var sliceA = b.slice(offset, offset + asciiString.length); + var sliceB = b.slice(offset, offset + asciiString.length); + for (var i = 0; i < asciiString.length; i++) { + assert.equal(sliceA[i], sliceB[i]); + } +} + +// UTF-8 slice test + +var utf8String = '¡hέlló wôrld!'; +var offset = 100; + +b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8'); +var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String)); +assert.equal(utf8String, utf8Slice); + +var written = b.write(utf8String, offset, 'utf8'); +assert.equal(Buffer.byteLength(utf8String), written); +utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String)); +assert.equal(utf8String, utf8Slice); + +var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String)); +var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String)); +for (var i = 0; i < Buffer.byteLength(utf8String); i++) { + assert.equal(sliceA[i], sliceB[i]); +} + +{ + var slice = b.slice(100, 150); + assert.equal(50, slice.length); + for (var i = 0; i < 50; i++) { + assert.equal(b[100 + i], slice[i]); + } +} + +{ + // make sure only top level parent propagates from allocPool + var b = Buffer.allocUnsafe(5); + var c = b.slice(0, 4); + var d = c.slice(0, 2); + assert.equal(b.parent, c.parent); + assert.equal(b.parent, d.parent); +} + +{ + // also from a non-pooled instance + var b = Buffer.allocUnsafeSlow(5); + var c = b.slice(0, 4); + var d = c.slice(0, 2); + assert.equal(c.parent, d.parent); +} + +{ + // Bug regression test + var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語 + var buffer = Buffer.allocUnsafe(32); + var size = buffer.write(testValue, 0, 'utf8'); +// console.log('bytes written to buffer: ' + size); + var slice = buffer.toString('utf8', 0, size); + assert.equal(slice, testValue); +} + +{ + // Test triple slice + var a = Buffer.allocUnsafe(8); + for (var i = 0; i < 8; i++) a[i] = i; + var b = a.slice(4, 8); + assert.equal(4, b[0]); + assert.equal(5, b[1]); + assert.equal(6, b[2]); + assert.equal(7, b[3]); + var c = b.slice(2, 4); + assert.equal(6, c[0]); + assert.equal(7, c[1]); +} + +{ + var d = Buffer.from([23, 42, 255]); + assert.equal(d.length, 3); + assert.equal(d[0], 23); + assert.equal(d[1], 42); + assert.equal(d[2], 255); + assert.deepStrictEqual(d, Buffer.from(d)); +} + +{ + var e = Buffer.from('über'); +// console.error('uber: \'%s\'', e.toString()); + assert.deepStrictEqual(e, Buffer.from([195, 188, 98, 101, 114])); +} + +{ + var f = Buffer.from('über', 'ascii'); +// console.error('f.length: %d (should be 4)', f.length); + assert.deepStrictEqual(f, Buffer.from([252, 98, 101, 114])); +} + +['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + { + var f = Buffer.from('über', encoding); +// console.error('f.length: %d (should be 8)', f.length); + assert.deepStrictEqual(f, Buffer.from([252, 0, 98, 0, 101, 0, 114, 0])); + } + + { + var f = Buffer.from('привет', encoding); +// console.error('f.length: %d (should be 12)', f.length); + assert.deepStrictEqual(f, + Buffer.from([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4])); + assert.equal(f.toString(encoding), 'привет'); + } + + { + var f = Buffer.from([0, 0, 0, 0, 0]); + assert.equal(f.length, 5); + var size = f.write('ã‚ã„ã†ãˆãŠ', encoding); +// console.error('bytes written to buffer: %d (should be 4)', size); + assert.equal(size, 4); + assert.deepStrictEqual(f, Buffer.from([0x42, 0x30, 0x44, 0x30, 0x00])); + } +}); + +{ + var f = Buffer.from('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D) + assert.equal(f.length, 4); + assert.deepStrictEqual(f, Buffer.from('3DD84DDC', 'hex')); +} + + +var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4}; +var g = Buffer.from(arrayIsh); +assert.deepStrictEqual(g, Buffer.from([0, 1, 2, 3])); +var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4}; +g = Buffer.from(strArrayIsh); +assert.deepStrictEqual(g, Buffer.from([0, 1, 2, 3])); + + +// +// Test toString('base64') +// +assert.equal('TWFu', (Buffer.from('Man')).toString('base64')); + +{ + // test that regular and URL-safe base64 both work + var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]; + assert.deepStrictEqual(Buffer.from('//++/++/++//', 'base64'), + Buffer.from(expected)); + assert.deepStrictEqual(Buffer.from('__--_--_--__', 'base64'), + Buffer.from(expected)); +} + +{ + // big example + var quote = 'Man is distinguished, not only by his reason, but by this ' + + 'singular passion from other animals, which is a lust ' + + 'of the mind, that by a perseverance of delight in the ' + + 'continued and indefatigable generation of knowledge, ' + + 'exceeds the short vehemence of any carnal pleasure.'; + var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb' + + '24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci' + + 'BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQ' + + 'gYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' + + 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ' + + 'GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm' + + '5hbCBwbGVhc3VyZS4='; + assert.equal(expected, (Buffer.from(quote)).toString('base64')); + + var b = Buffer.allocUnsafe(1024); + var bytesWritten = b.write(expected, 0, 'base64'); + assert.equal(quote.length, bytesWritten); + assert.equal(quote, b.toString('ascii', 0, quote.length)); + + // check that the base64 decoder ignores whitespace + var expectedWhite = expected.slice(0, 60) + ' \n' + + expected.slice(60, 120) + ' \n' + + expected.slice(120, 180) + ' \n' + + expected.slice(180, 240) + ' \n' + + expected.slice(240, 300) + '\n' + + expected.slice(300, 360) + '\n'; + b = Buffer.allocUnsafe(1024); + bytesWritten = b.write(expectedWhite, 0, 'base64'); + assert.equal(quote.length, bytesWritten); + assert.equal(quote, b.toString('ascii', 0, quote.length)); + + // check that the base64 decoder on the constructor works + // even in the presence of whitespace. + b = Buffer.from(expectedWhite, 'base64'); + assert.equal(quote.length, b.length); + assert.equal(quote, b.toString('ascii', 0, quote.length)); + + // check that the base64 decoder ignores illegal chars + var expectedIllegal = expected.slice(0, 60) + ' \x80' + + expected.slice(60, 120) + ' \xff' + + expected.slice(120, 180) + ' \x00' + + expected.slice(180, 240) + ' \x98' + + expected.slice(240, 300) + '\x03' + + expected.slice(300, 360); + b = Buffer.from(expectedIllegal, 'base64'); + assert.equal(quote.length, b.length); + assert.equal(quote, b.toString('ascii', 0, quote.length)); +} + +assert.equal(Buffer.from('', 'base64').toString(), ''); +assert.equal(Buffer.from('K', 'base64').toString(), ''); + +// multiple-of-4 with padding +assert.equal(Buffer.from('Kg==', 'base64').toString(), '*'); +assert.equal(Buffer.from('Kio=', 'base64').toString(), '**'); +assert.equal(Buffer.from('Kioq', 'base64').toString(), '***'); +assert.equal(Buffer.from('KioqKg==', 'base64').toString(), '****'); +assert.equal(Buffer.from('KioqKio=', 'base64').toString(), '*****'); +assert.equal(Buffer.from('KioqKioq', 'base64').toString(), '******'); +assert.equal(Buffer.from('KioqKioqKg==', 'base64').toString(), '*******'); +assert.equal(Buffer.from('KioqKioqKio=', 'base64').toString(), '********'); +assert.equal(Buffer.from('KioqKioqKioq', 'base64').toString(), '*********'); +assert.equal(Buffer.from('KioqKioqKioqKg==', 'base64').toString(), + '**********'); +assert.equal(Buffer.from('KioqKioqKioqKio=', 'base64').toString(), + '***********'); +assert.equal(Buffer.from('KioqKioqKioqKioq', 'base64').toString(), + '************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKg==', 'base64').toString(), + '*************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKio=', 'base64').toString(), + '**************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioq', 'base64').toString(), + '***************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKg==', 'base64').toString(), + '****************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKio=', 'base64').toString(), + '*****************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioq', 'base64').toString(), + '******************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(), + '*******************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(), + '********************'); + +// no padding, not a multiple of 4 +assert.equal(Buffer.from('Kg', 'base64').toString(), '*'); +assert.equal(Buffer.from('Kio', 'base64').toString(), '**'); +assert.equal(Buffer.from('KioqKg', 'base64').toString(), '****'); +assert.equal(Buffer.from('KioqKio', 'base64').toString(), '*****'); +assert.equal(Buffer.from('KioqKioqKg', 'base64').toString(), '*******'); +assert.equal(Buffer.from('KioqKioqKio', 'base64').toString(), '********'); +assert.equal(Buffer.from('KioqKioqKioqKg', 'base64').toString(), '**********'); +assert.equal(Buffer.from('KioqKioqKioqKio', 'base64').toString(), + '***********'); +assert.equal(Buffer.from('KioqKioqKioqKioqKg', 'base64').toString(), + '*************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKio', 'base64').toString(), + '**************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKg', 'base64').toString(), + '****************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKio', 'base64').toString(), + '*****************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(), + '*******************'); +assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(), + '********************'); + +// handle padding graciously, multiple-of-4 or not +assert.equal( + Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==', 'base64').length, + 32 +); +assert.equal( + Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=', 'base64').length, + 32 +); +assert.equal( + Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw', 'base64').length, + 32 +); +assert.equal( + Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==', 'base64').length, + 31 +); +assert.equal( + Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=', 'base64').length, + 31 +); +assert.equal( + Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg', 'base64').length, + 31 +); + +// This string encodes single '.' character in UTF-16 +var dot = Buffer.from('//4uAA==', 'base64'); +assert.equal(dot[0], 0xff); +assert.equal(dot[1], 0xfe); +assert.equal(dot[2], 0x2e); +assert.equal(dot[3], 0x00); +assert.equal(dot.toString('base64'), '//4uAA=='); + +{ + // Writing base64 at a position > 0 should not mangle the result. + // + // https://github.com/joyent/node/issues/402 + var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh']; + var b = Buffer.allocUnsafe(64); + var pos = 0; + + for (var i = 0; i < segments.length; ++i) { + pos += b.write(segments[i], pos, 'base64'); + } + assert.equal(b.toString('latin1', 0, pos), 'Madness?! This is node.js!'); +} + +// Regression test for https://github.com/nodejs/node/issues/3496. +// assert.equal(Buffer.from('=bad'.repeat(1e4), 'base64').length, 0); + +{ + // Creating buffers larger than pool size. + var l = Buffer.poolSize + 5; + var s = ''; + for (var i = 0; i < l; i++) { + s += 'h'; + } + + var b = Buffer.from(s); + + for (var i = 0; i < l; i++) { + assert.equal('h'.charCodeAt(0), b[i]); + } + + var sb = b.toString(); + assert.equal(sb.length, s.length); + assert.equal(sb, s); +} + +{ + // Single argument slice + var b = Buffer.from('abcde'); + assert.equal('bcde', b.slice(1).toString()); +} + +// slice(0,0).length === 0 +assert.equal(0, Buffer.from('hello').slice(0, 0).length); + +// test hex toString +// console.log('Create hex string from buffer'); +var hexb = Buffer.allocUnsafe(256); +for (var i = 0; i < 256; i++) { + hexb[i] = i; +} +var hexStr = hexb.toString('hex'); +assert.equal(hexStr, + '000102030405060708090a0b0c0d0e0f' + + '101112131415161718191a1b1c1d1e1f' + + '202122232425262728292a2b2c2d2e2f' + + '303132333435363738393a3b3c3d3e3f' + + '404142434445464748494a4b4c4d4e4f' + + '505152535455565758595a5b5c5d5e5f' + + '606162636465666768696a6b6c6d6e6f' + + '707172737475767778797a7b7c7d7e7f' + + '808182838485868788898a8b8c8d8e8f' + + '909192939495969798999a9b9c9d9e9f' + + 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' + + 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + + 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + + 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + + 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + + 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); + +// console.log('Create buffer from hex string'); +var hexb2 = Buffer.from(hexStr, 'hex'); +for (var i = 0; i < 256; i++) { + assert.equal(hexb2[i], hexb[i]); +} + +{ + // test an invalid slice end. +// console.log('Try to slice off the end of the buffer'); + var b = Buffer.from([1, 2, 3, 4, 5]); + var b2 = b.toString('hex', 1, 10000); + var b3 = b.toString('hex', 1, 5); + var b4 = b.toString('hex', 1); + assert.equal(b2, b3); + assert.equal(b2, b4); +} + +function buildBuffer(data) { + if (Array.isArray(data)) { + var buffer = Buffer.allocUnsafe(data.length); + data.forEach(function(v, k) { + buffer[k] = v; + }); + return buffer; + } + return null; +} + +var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]); + +// console.log(x.inspect()); +assert.equal('', x.inspect()); + +{ + var z = x.slice(4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(5, z.length); + assert.equal(0x6f, z[0]); + assert.equal(0xa3, z[1]); + assert.equal(0x62, z[2]); + assert.equal(0x61, z[3]); + assert.equal(0x72, z[4]); +} + +{ + var z = x.slice(0); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(z.length, x.length); +} + +{ + var z = x.slice(0, 4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(4, z.length); + assert.equal(0x81, z[0]); + assert.equal(0xa3, z[1]); +} + +{ + var z = x.slice(0, 9); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(9, z.length); +} + +{ + var z = x.slice(1, 4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(3, z.length); + assert.equal(0xa3, z[0]); +} + +{ + var z = x.slice(2, 4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(2, z.length); + assert.equal(0x66, z[0]); + assert.equal(0x6f, z[1]); +} + +assert.equal(0, Buffer.from('hello').slice(0, 0).length); + +['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + var b = Buffer.allocUnsafe(10); + b.write('ã‚ã„ã†ãˆãŠ', encoding); + assert.equal(b.toString(encoding), 'ã‚ã„ã†ãˆãŠ'); +}); + +{ + // Binary encoding should write only one byte per character. + var b = Buffer.from([0xde, 0xad, 0xbe, 0xef]); + var s = String.fromCharCode(0xffff); + b.write(s, 0, 'latin1'); + assert.equal(0xff, b[0]); + assert.equal(0xad, b[1]); + assert.equal(0xbe, b[2]); + assert.equal(0xef, b[3]); + s = String.fromCharCode(0xaaee); + b.write(s, 0, 'latin1'); + assert.equal(0xee, b[0]); + assert.equal(0xad, b[1]); + assert.equal(0xbe, b[2]); + assert.equal(0xef, b[3]); +} + +{ + // #1210 Test UTF-8 string includes null character + var buf = Buffer.from('\0'); + assert.equal(buf.length, 1); + buf = Buffer.from('\0\0'); + assert.equal(buf.length, 2); +} + +{ + var buf = Buffer.allocUnsafe(2); + var written = buf.write(''); // 0byte + assert.equal(written, 0); + written = buf.write('\0'); // 1byte (v8 adds null terminator) + assert.equal(written, 1); + written = buf.write('a\0'); // 1byte * 2 + assert.equal(written, 2); + written = buf.write('ã‚'); // 3bytes + assert.equal(written, 0); + written = buf.write('\0ã‚'); // 1byte + 3bytes + assert.equal(written, 1); + written = buf.write('\0\0ã‚'); // 1byte * 2 + 3bytes + assert.equal(written, 2); +} + +{ + var buf = Buffer.allocUnsafe(10); + written = buf.write('ã‚ã„ã†'); // 3bytes * 3 (v8 adds null terminator) + assert.equal(written, 9); + written = buf.write('ã‚ã„ã†\0'); // 3bytes * 3 + 1byte + assert.equal(written, 10); +} + +{ + // #243 Test write() with maxLength + var buf = Buffer.allocUnsafe(4); + buf.fill(0xFF); + var written = buf.write('abcd', 1, 2, 'utf8'); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0x61); + assert.equal(buf[2], 0x62); + assert.equal(buf[3], 0xFF); + + buf.fill(0xFF); + written = buf.write('abcd', 1, 4); +// console.log(buf); + assert.equal(written, 3); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0x61); + assert.equal(buf[2], 0x62); + assert.equal(buf[3], 0x63); + + buf.fill(0xFF); + written = buf.write('abcd', 1, 2, 'utf8'); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0x61); + assert.equal(buf[2], 0x62); + assert.equal(buf[3], 0xFF); + + buf.fill(0xFF); + written = buf.write('abcdef', 1, 2, 'hex'); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0xAB); + assert.equal(buf[2], 0xCD); + assert.equal(buf[3], 0xFF); + + ['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + buf.fill(0xFF); + written = buf.write('abcd', 0, 2, encoding); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0x61); + assert.equal(buf[1], 0x00); + assert.equal(buf[2], 0xFF); + assert.equal(buf[3], 0xFF); + }); +} + +{ + // test offset returns are correct + var b = Buffer.allocUnsafe(16); + assert.equal(4, b.writeUInt32LE(0, 0)); + assert.equal(6, b.writeUInt16LE(0, 4)); + assert.equal(7, b.writeUInt8(0, 6)); + assert.equal(8, b.writeInt8(0, 7)); + assert.equal(16, b.writeDoubleLE(0, 8)); +} + +{ + // test unmatched surrogates not producing invalid utf8 output + // ef bf bd = utf-8 representation of unicode replacement character + // see https://codereview.chromium.org/121173009/ + var buf = Buffer.from('ab\ud800cd', 'utf8'); + assert.equal(buf[0], 0x61); + assert.equal(buf[1], 0x62); + assert.equal(buf[2], 0xef); + assert.equal(buf[3], 0xbf); + assert.equal(buf[4], 0xbd); + assert.equal(buf[5], 0x63); + assert.equal(buf[6], 0x64); +} + +{ + // test for buffer overrun + var buf = Buffer.from([0, 0, 0, 0, 0]); // length: 5 + var sub = buf.slice(0, 4); // length: 4 + written = sub.write('12345', 'latin1'); + assert.equal(written, 4); + assert.equal(buf[4], 0); +} + +// Check for fractional length args, junk length args, etc. +// https://github.com/joyent/node/issues/1758 + +// Call .fill() first, stops valgrind warning about uninitialized memory reads. +Buffer.allocUnsafe(3.3).fill().toString(); + // throws bad argument error in commit 43cb4ec +Buffer.alloc(3.3).fill().toString(); +assert.equal(Buffer.allocUnsafe(NaN).length, 0); +assert.equal(Buffer.allocUnsafe(3.3).length, 3); +assert.equal(Buffer.from({length: 3.3}).length, 3); +assert.equal(Buffer.from({length: 'BAM'}).length, 0); + +// Make sure that strings are not coerced to numbers. +assert.equal(Buffer.from('99').length, 2); +assert.equal(Buffer.from('13.37').length, 5); + +// Ensure that the length argument is respected. +'ascii utf8 hex base64 latin1'.split(' ').forEach(function(enc) { + assert.equal(Buffer.allocUnsafe(1).write('aaaaaa', 0, 1, enc), 1); +}); + +{ + // Regression test, guard against buffer overrun in the base64 decoder. + var a = Buffer.allocUnsafe(3); + var b = Buffer.from('xxx'); + a.write('aaaaaaaa', 'base64'); + assert.equal(b.toString(), 'xxx'); +} + +// issue GH-3416 +Buffer.from(Buffer.allocUnsafe(0), 0, 0); + +[ 'hex', + 'utf8', + 'utf-8', + 'ascii', + 'latin1', + 'binary', + 'base64', + 'ucs2', + 'ucs-2', + 'utf16le', + 'utf-16le' ].forEach(function(enc) { + assert.equal(Buffer.isEncoding(enc), true); + }); + +[ 'utf9', + 'utf-7', + 'Unicode-FTW', + 'new gnu gun', + false, + NaN, + {}, + Infinity, + [], + 1, + 0, + -1 ].forEach(function(enc) { + assert.equal(Buffer.isEncoding(enc), false); + }); + + +// GH-5110 +{ + var buffer = Buffer.from('test'); + var string = JSON.stringify(buffer); + + assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}'); + + assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) { + return value && value.type === 'Buffer' + ? Buffer.from(value.data) + : value; + })); +} + +// issue GH-7849 +{ + var buf = Buffer.from('test'); + var json = JSON.stringify(buf); + var obj = JSON.parse(json); + var copy = Buffer.from(obj); + + assert(buf.equals(copy)); +} + +// issue GH-4331 +assert.throws(function() { + Buffer.allocUnsafe(0xFFFFFFFF); +}, RangeError); +assert.throws(function() { + Buffer.allocUnsafe(0xFFFFFFFFF); +}, RangeError); + + +// attempt to overflow buffers, similar to previous bug in array buffers +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.readFloatLE(0xffffffff); +}, RangeError); + +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.writeFloatLE(0.0, 0xffffffff); +}, RangeError); + +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.readFloatLE(0xffffffff); +}, RangeError); + +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.writeFloatLE(0.0, 0xffffffff); +}, RangeError); + + +// ensure negative values can't get past offset +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.readFloatLE(-1); +}, RangeError); + +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.writeFloatLE(0.0, -1); +}, RangeError); + +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.readFloatLE(-1); +}, RangeError); + +assert.throws(function() { + var buf = Buffer.allocUnsafe(8); + buf.writeFloatLE(0.0, -1); +}, RangeError); + +// offset checks +{ + var buf = Buffer.allocUnsafe(0); + + assert.throws(function() { buf.readUInt8(0); }, RangeError); + assert.throws(function() { buf.readInt8(0); }, RangeError); +} + +{ + var buf = Buffer.from([0xFF]); + + assert.equal(buf.readUInt8(0), 255); + assert.equal(buf.readInt8(0), -1); +} + +[16, 32].forEach(function(bits) { + var buf = Buffer.allocUnsafe(bits / 8 - 1); + + assert.throws(function() { buf['readUInt' + bits + 'BE'](0); }, + RangeError, + 'readUInt' + bits + 'BE'); + + assert.throws(function() { buf['readUInt' + bits + 'LE'](0); }, + RangeError, + 'readUInt' + bits + 'LE'); + + assert.throws(function() { buf['readInt' + bits + 'BE'](0); }, + RangeError, + 'readInt' + bits + 'BE()'); + + assert.throws(function() { buf['readInt' + bits + 'LE'](0); }, + RangeError, + 'readInt' + bits + 'LE()'); +}); + +[16, 32].forEach(function(bits) { + var buf = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); + + assert.equal(buf['readUInt' + bits + 'BE'](0), + (0xFFFFFFFF >>> (32 - bits))); + + assert.equal(buf['readUInt' + bits + 'LE'](0), + (0xFFFFFFFF >>> (32 - bits))); + + assert.equal(buf['readInt' + bits + 'BE'](0), + (0xFFFFFFFF >> (32 - bits))); + + assert.equal(buf['readInt' + bits + 'LE'](0), + (0xFFFFFFFF >> (32 - bits))); +}); + +// test for common read(U)IntLE/BE +{ + var buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]); + + assert.strictEqual(buf.readUIntLE(0, 1), 0x01); + assert.strictEqual(buf.readUIntBE(0, 1), 0x01); + assert.strictEqual(buf.readUIntLE(0, 3), 0x030201); + assert.strictEqual(buf.readUIntBE(0, 3), 0x010203); + assert.strictEqual(buf.readUIntLE(0, 5), 0x0504030201); + assert.strictEqual(buf.readUIntBE(0, 5), 0x0102030405); + assert.strictEqual(buf.readUIntLE(0, 6), 0x060504030201); + assert.strictEqual(buf.readUIntBE(0, 6), 0x010203040506); + assert.strictEqual(buf.readIntLE(0, 1), 0x01); + assert.strictEqual(buf.readIntBE(0, 1), 0x01); + assert.strictEqual(buf.readIntLE(0, 3), 0x030201); + assert.strictEqual(buf.readIntBE(0, 3), 0x010203); + assert.strictEqual(buf.readIntLE(0, 5), 0x0504030201); + assert.strictEqual(buf.readIntBE(0, 5), 0x0102030405); + assert.strictEqual(buf.readIntLE(0, 6), 0x060504030201); + assert.strictEqual(buf.readIntBE(0, 6), 0x010203040506); +} + +// test for common write(U)IntLE/BE +{ + var buf = Buffer.allocUnsafe(3); + buf.writeUIntLE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); + assert.equal(buf.readUIntLE(0, 3), 0x123456); + + buf = Buffer.allocUnsafe(3); + buf.writeUIntBE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); + assert.equal(buf.readUIntBE(0, 3), 0x123456); + + buf = Buffer.allocUnsafe(3); + buf.writeIntLE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); + assert.equal(buf.readIntLE(0, 3), 0x123456); + + buf = Buffer.allocUnsafe(3); + buf.writeIntBE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); + assert.equal(buf.readIntBE(0, 3), 0x123456); + + buf = Buffer.allocUnsafe(3); + buf.writeIntLE(-0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]); + assert.equal(buf.readIntLE(0, 3), -0x123456); + + buf = Buffer.allocUnsafe(3); + buf.writeIntBE(-0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]); + assert.equal(buf.readIntBE(0, 3), -0x123456); + + buf = Buffer.allocUnsafe(3); + buf.writeIntLE(-0x123400, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x00, 0xcc, 0xed]); + assert.equal(buf.readIntLE(0, 3), -0x123400); + + buf = Buffer.allocUnsafe(3); + buf.writeIntBE(-0x123400, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcc, 0x00]); + assert.equal(buf.readIntBE(0, 3), -0x123400); + + buf = Buffer.allocUnsafe(3); + buf.writeIntLE(-0x120000, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0xee]); + assert.equal(buf.readIntLE(0, 3), -0x120000); + + buf = Buffer.allocUnsafe(3); + buf.writeIntBE(-0x120000, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xee, 0x00, 0x00]); + assert.equal(buf.readIntBE(0, 3), -0x120000); + + buf = Buffer.allocUnsafe(5); + buf.writeUIntLE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); + assert.equal(buf.readUIntLE(0, 5), 0x1234567890); + + buf = Buffer.allocUnsafe(5); + buf.writeUIntBE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); + assert.equal(buf.readUIntBE(0, 5), 0x1234567890); + + buf = Buffer.allocUnsafe(5); + buf.writeIntLE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); + assert.equal(buf.readIntLE(0, 5), 0x1234567890); + + buf = Buffer.allocUnsafe(5); + buf.writeIntBE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); + assert.equal(buf.readIntBE(0, 5), 0x1234567890); + + buf = Buffer.allocUnsafe(5); + buf.writeIntLE(-0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]); + assert.equal(buf.readIntLE(0, 5), -0x1234567890); + + buf = Buffer.allocUnsafe(5); + buf.writeIntBE(-0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]); + assert.equal(buf.readIntBE(0, 5), -0x1234567890); + + buf = Buffer.allocUnsafe(5); + buf.writeIntLE(-0x0012000000, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0x00, 0xee, 0xff]); + assert.equal(buf.readIntLE(0, 5), -0x0012000000); + + buf = Buffer.allocUnsafe(5); + buf.writeIntBE(-0x0012000000, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0xff, 0xee, 0x00, 0x00, 0x00]); + assert.equal(buf.readIntBE(0, 5), -0x0012000000); +} + +// test Buffer slice +{ + var buf = Buffer.from('0123456789'); + assert.equal(buf.slice(-10, 10), '0123456789'); + assert.equal(buf.slice(-20, 10), '0123456789'); + assert.equal(buf.slice(-20, -10), ''); + assert.equal(buf.slice(), '0123456789'); + assert.equal(buf.slice(0), '0123456789'); + assert.equal(buf.slice(0, 0), ''); + assert.equal(buf.slice(undefined), '0123456789'); + assert.equal(buf.slice('foobar'), '0123456789'); + assert.equal(buf.slice(undefined, undefined), '0123456789'); + + assert.equal(buf.slice(2), '23456789'); + assert.equal(buf.slice(5), '56789'); + assert.equal(buf.slice(10), ''); + assert.equal(buf.slice(5, 8), '567'); + assert.equal(buf.slice(8, -1), '8'); + assert.equal(buf.slice(-10), '0123456789'); + assert.equal(buf.slice(0, -9), '0'); + assert.equal(buf.slice(0, -10), ''); + assert.equal(buf.slice(0, -1), '012345678'); + assert.equal(buf.slice(2, -2), '234567'); + assert.equal(buf.slice(0, 65536), '0123456789'); + assert.equal(buf.slice(65536, 0), ''); + assert.equal(buf.slice(-5, -8), ''); + assert.equal(buf.slice(-5, -3), '56'); + assert.equal(buf.slice(-10, 10), '0123456789'); + for (var i = 0, s = buf.toString(); i < buf.length; ++i) { + assert.equal(buf.slice(i), s.slice(i)); + assert.equal(buf.slice(0, i), s.slice(0, i)); + assert.equal(buf.slice(-i), s.slice(-i)); + assert.equal(buf.slice(0, -i), s.slice(0, -i)); + } + + var utf16Buf = Buffer.from('0123456789', 'utf16le'); + // assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer.from('012', 'utf16le')); + + assert.equal(buf.slice('0', '1'), '0'); + assert.equal(buf.slice('-5', '10'), '56789'); + assert.equal(buf.slice('-10', '10'), '0123456789'); + assert.equal(buf.slice('-10', '-5'), '01234'); + assert.equal(buf.slice('-10', '-0'), ''); + assert.equal(buf.slice('111'), ''); + assert.equal(buf.slice('0', '-111'), ''); + + // try to slice a zero length Buffer + // see https://github.com/joyent/node/issues/5881 + Buffer.alloc(0).slice(0, 1); +} + +// Regression test for #5482: should throw but not assert in C++ land. +assert.throws(function() { + Buffer.from('', 'buffer'); +}, TypeError); + +// Regression test for #6111. Constructing a buffer from another buffer +// should a) work, and b) not corrupt the source buffer. +{ + var a = [0]; + for (var i = 0; i < 7; ++i) a = a.concat(a); + a = a.map(function(_, i) { return i; }); + var b = Buffer.from(a); + var c = Buffer.from(b); + assert.strictEqual(b.length, a.length); + assert.strictEqual(c.length, a.length); + for (var i = 0, k = a.length; i < k; ++i) { + assert.strictEqual(a[i], i); + assert.strictEqual(b[i], i); + assert.strictEqual(c[i], i); + } +} + + +assert.throws(function() { + Buffer.allocUnsafe((-1 >>> 0) + 1); +}, RangeError); + +assert.throws(function() { + Buffer.allocUnsafeSlow((-1 >>> 0) + 1); +}, RangeError); + +if (common.hasCrypto) { + // Test truncation after decode + var crypto = require('crypto'); + + var b1 = Buffer.from('YW55=======', 'base64'); + var b2 = Buffer.from('YW55', 'base64'); + + assert.equal( + crypto.createHash('sha1').update(b1).digest('hex'), + crypto.createHash('sha1').update(b2).digest('hex') + ); +} else { + common.skip('missing crypto'); +} + +// Test Compare +{ + var b = Buffer.alloc(1, 'a'); + var c = Buffer.alloc(1, 'c'); + var d = Buffer.alloc(2, 'aa'); + + assert.equal(b.compare(c), -1); + assert.equal(c.compare(d), 1); + assert.equal(d.compare(b), 1); + assert.equal(b.compare(d), -1); + assert.equal(b.compare(b), 0); + + assert.equal(Buffer.compare(b, c), -1); + assert.equal(Buffer.compare(c, d), 1); + assert.equal(Buffer.compare(d, b), 1); + assert.equal(Buffer.compare(b, d), -1); + assert.equal(Buffer.compare(c, c), 0); + + assert.equal(Buffer.compare(Buffer.alloc(0), Buffer.alloc(0)), 0); + assert.equal(Buffer.compare(Buffer.alloc(0), Buffer.alloc(1)), -1); + assert.equal(Buffer.compare(Buffer.alloc(1), Buffer.alloc(0)), 1); +} + +assert.throws(function() { + var b = Buffer.allocUnsafe(1); + Buffer.compare(b, 'abc'); +}); + +assert.throws(function() { + var b = Buffer.allocUnsafe(1); + Buffer.compare('abc', b); +}); + +assert.throws(function() { + var b = Buffer.allocUnsafe(1); + b.compare('abc'); +}); + +// Test Equals +{ + var b = Buffer.alloc(5, 'abcdf'); + var c = Buffer.alloc(5, 'abcdf'); + var d = Buffer.alloc(5, 'abcde'); + var e = Buffer.alloc(6, 'abcdef'); + + assert.ok(b.equals(c)); + assert.ok(!c.equals(d)); + assert.ok(!d.equals(e)); + assert.ok(d.equals(d)); +} + +assert.throws(function() { + var b = Buffer.allocUnsafe(1); + b.equals('abc'); +}); + +// Regression test for https://github.com/nodejs/node/issues/649. +assert.throws(() => { Buffer.allocUnsafe(1422561062959).toString('utf8');}); + +var ps = Buffer.poolSize; +Buffer.poolSize = 0; +assert.equal(Buffer.allocUnsafe(1).parent, undefined); +Buffer.poolSize = ps; + +// Test Buffer.copy() segfault +assert.throws(function() { + Buffer.allocUnsafe(10).copy(); +}); + +var regErrorMsg = new RegExp('First argument must be a string, Buffer, ' + + 'ArrayBuffer, Array, or array-like object.'); + +assert.throws(function() { + Buffer.from(); +}, regErrorMsg); + +assert.throws(function() { + Buffer.from(null); +}, regErrorMsg); + + +// Test that ParseArrayIndex handles full uint32 +assert.throws(function() { + Buffer.from(new ArrayBuffer(0), -1 >>> 0); +}, /RangeError: 'offset' is out of bounds/); + +// ParseArrayIndex() should reject values that don't fit in a 32 bits size_t. +assert.throws(() => { + var a = Buffer(1).fill(0); + var b = Buffer(1).fill(0); + a.copy(b, 0, 0x100000000, 0x100000001); +}), /out of range index/; + +// Unpooled buffer (replaces SlowBuffer) +var ubuf = Buffer.allocUnsafeSlow(10); +assert(ubuf); +assert(ubuf.buffer); +assert.equal(ubuf.buffer.byteLength, 10); + +// Regression test +assert.doesNotThrow(() => { + Buffer.from(new ArrayBuffer()); +}); + +assert.throws(() => Buffer.alloc(-Buffer.poolSize), + '"size" argument must not be negative'); +assert.throws(() => Buffer.alloc(-100), + '"size" argument must not be negative'); +assert.throws(() => Buffer.allocUnsafe(-Buffer.poolSize), + '"size" argument must not be negative'); +assert.throws(() => Buffer.allocUnsafe(-100), + '"size" argument must not be negative'); +assert.throws(() => Buffer.allocUnsafeSlow(-Buffer.poolSize), + '"size" argument must not be negative'); +assert.throws(() => Buffer.allocUnsafeSlow(-100), + '"size" argument must not be negative'); + +assert.throws(() => Buffer.alloc({ valueOf: () => 1 }), + /"size" argument must be a number/); +assert.throws(() => Buffer.alloc({ valueOf: () => -1 }), + /"size" argument must be a number/); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js new file mode 100644 index 0000000..a418752 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js @@ -0,0 +1,112 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); + +var Buffer = require('../../').Buffer; +var LENGTH = 16; + +var ab = new ArrayBuffer(LENGTH); +var dv = new DataView(ab); +var ui = new Uint8Array(ab); +var buf = Buffer.from(ab); + + +assert.ok(buf instanceof Buffer); +// For backwards compatibility of old .parent property test that if buf is not +// a slice then .parent should be undefined. +assert.equal(buf.parent, undefined); +assert.equal(buf.buffer, ab); +assert.equal(buf.length, ab.byteLength); + + +buf.fill(0xC); +for (var i = 0; i < LENGTH; i++) { + assert.equal(ui[i], 0xC); + ui[i] = 0xF; + assert.equal(buf[i], 0xF); +} + +buf.writeUInt32LE(0xF00, 0); +buf.writeUInt32BE(0xB47, 4); +buf.writeDoubleLE(3.1415, 8); + +assert.equal(dv.getUint32(0, true), 0xF00); +assert.equal(dv.getUint32(4), 0xB47); +assert.equal(dv.getFloat64(8, true), 3.1415); + + +// Now test protecting users from doing stupid things + +assert.throws(function() { + function AB() { } + Object.setPrototypeOf(AB, ArrayBuffer); + Object.setPrototypeOf(AB.prototype, ArrayBuffer.prototype); + Buffer.from(new AB()); +}, TypeError); + +// write{Double,Float}{LE,BE} with noAssert should not crash, cf. #3766 +var b = Buffer.allocUnsafe(1); +b.writeFloatLE(11.11, 0, true); +b.writeFloatBE(11.11, 0, true); +b.writeDoubleLE(11.11, 0, true); +b.writeDoubleBE(11.11, 0, true); + +// Test the byteOffset and length arguments +{ + var ab = new Uint8Array(5); + ab[0] = 1; + ab[1] = 2; + ab[2] = 3; + ab[3] = 4; + ab[4] = 5; + var buf = Buffer.from(ab.buffer, 1, 3); + assert.equal(buf.length, 3); + assert.equal(buf[0], 2); + assert.equal(buf[1], 3); + assert.equal(buf[2], 4); + buf[0] = 9; + assert.equal(ab[1], 9); + + assert.throws(() => Buffer.from(ab.buffer, 6), (err) => { + assert(err instanceof RangeError); + assert(/'offset' is out of bounds/.test(err.message)); + return true; + }); + assert.throws(() => Buffer.from(ab.buffer, 3, 6), (err) => { + assert(err instanceof RangeError); + assert(/'length' is out of bounds/.test(err.message)); + return true; + }); +} + +// Test the deprecated Buffer() version also +{ + var ab = new Uint8Array(5); + ab[0] = 1; + ab[1] = 2; + ab[2] = 3; + ab[3] = 4; + ab[4] = 5; + var buf = Buffer(ab.buffer, 1, 3); + assert.equal(buf.length, 3); + assert.equal(buf[0], 2); + assert.equal(buf[1], 3); + assert.equal(buf[2], 4); + buf[0] = 9; + assert.equal(ab[1], 9); + + assert.throws(() => Buffer(ab.buffer, 6), (err) => { + assert(err instanceof RangeError); + assert(/'offset' is out of bounds/.test(err.message)); + return true; + }); + assert.throws(() => Buffer(ab.buffer, 3, 6), (err) => { + assert(err instanceof RangeError); + assert(/'length' is out of bounds/.test(err.message)); + return true; + }); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js new file mode 100644 index 0000000..4a06098 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js @@ -0,0 +1,28 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +// ASCII conversion in node.js simply masks off the high bits, +// it doesn't do transliteration. +assert.equal(Buffer.from('hérité').toString('ascii'), 'hC)ritC)'); + +// 71 characters, 78 bytes. The ’ character is a triple-byte sequence. +var input = 'C’est, graphiquement, la réunion d’un accent aigu ' + + 'et d’un accent grave.'; + +var expected = 'Cb\u0000\u0019est, graphiquement, la rC)union ' + + 'db\u0000\u0019un accent aigu et db\u0000\u0019un ' + + 'accent grave.'; + +var buf = Buffer.from(input); + +for (var i = 0; i < expected.length; ++i) { + assert.equal(buf.slice(i).toString('ascii'), expected.slice(i)); + + // Skip remainder of multi-byte sequence. + if (input.charCodeAt(i) > 65535) ++i; + if (input.charCodeAt(i) > 127) ++i; +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js new file mode 100644 index 0000000..282227d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js @@ -0,0 +1,18 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +assert.doesNotThrow(function() { + Buffer.allocUnsafe(10); +}); + +assert.throws(function() { + Buffer.from(10, 'hex'); +}); + +assert.doesNotThrow(function() { + Buffer.from('deadbeaf', 'hex'); +}); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js new file mode 100644 index 0000000..fd7851d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js @@ -0,0 +1,46 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); +var Buffer = require('../../').Buffer; + +// Test hex strings and bad hex strings +{ + var buf1 = Buffer.alloc(4); + assert.strictEqual(buf1.length, 4); + assert.deepStrictEqual(buf1, new Buffer([0, 0, 0, 0])); + assert.strictEqual(buf1.write('abcdxx', 0, 'hex'), 2); + assert.deepStrictEqual(buf1, new Buffer([0xab, 0xcd, 0x00, 0x00])); + assert.strictEqual(buf1.toString('hex'), 'abcd0000'); + assert.strictEqual(buf1.write('abcdef01', 0, 'hex'), 4); + assert.deepStrictEqual(buf1, new Buffer([0xab, 0xcd, 0xef, 0x01])); + assert.strictEqual(buf1.toString('hex'), 'abcdef01'); + + var buf2 = Buffer.from(buf1.toString('hex'), 'hex'); + assert.strictEqual(buf1.toString('hex'), buf2.toString('hex')); + + var buf3 = Buffer.alloc(5); + assert.strictEqual(buf3.write('abcdxx', 1, 'hex'), 2); + assert.strictEqual(buf3.toString('hex'), '00abcd0000'); + + var buf4 = Buffer.alloc(4); + assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); + assert.strictEqual(buf4.write('xxabcd', 0, 'hex'), 0); + assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); + assert.strictEqual(buf4.write('xxab', 1, 'hex'), 0); + assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); + assert.strictEqual(buf4.write('cdxxab', 0, 'hex'), 1); + assert.deepStrictEqual(buf4, new Buffer([0xcd, 0, 0, 0])); + + var buf5 = Buffer.alloc(256); + for (var i = 0; i < 256; i++) + buf5[i] = i; + + var hex = buf5.toString('hex'); + assert.deepStrictEqual(Buffer.from(hex, 'hex'), buf5); + + var badHex = hex.slice(0, 256) + 'xx' + hex.slice(256, 510); + assert.deepStrictEqual(Buffer.from(badHex, 'hex'), buf5.slice(0, 128)); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js new file mode 100644 index 0000000..8d7dc35 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js @@ -0,0 +1,90 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); +var Buffer = require('../../').Buffer; +var SlowBuffer = require('../../').SlowBuffer; + +// coerce values to string +assert.equal(Buffer.byteLength(32, 'latin1'), 2); +assert.equal(Buffer.byteLength(NaN, 'utf8'), 3); +assert.equal(Buffer.byteLength({}, 'latin1'), 15); +assert.equal(Buffer.byteLength(), 9); + +var buff = new Buffer(10); +assert(ArrayBuffer.isView(buff)); +var slowbuff = new SlowBuffer(10); +assert(ArrayBuffer.isView(slowbuff)); + +// buffer +var incomplete = Buffer.from([0xe4, 0xb8, 0xad, 0xe6, 0x96]); +assert.equal(Buffer.byteLength(incomplete), 5); +var ascii = Buffer.from('abc'); +assert.equal(Buffer.byteLength(ascii), 3); + +// ArrayBuffer +var buffer = new ArrayBuffer(8); +assert.equal(Buffer.byteLength(buffer), 8); + +// TypedArray +var int8 = new Int8Array(8); +assert.equal(Buffer.byteLength(int8), 8); +var uint8 = new Uint8Array(8); +assert.equal(Buffer.byteLength(uint8), 8); +var uintc8 = new Uint8ClampedArray(2); +assert.equal(Buffer.byteLength(uintc8), 2); +var int16 = new Int16Array(8); +assert.equal(Buffer.byteLength(int16), 16); +var uint16 = new Uint16Array(8); +assert.equal(Buffer.byteLength(uint16), 16); +var int32 = new Int32Array(8); +assert.equal(Buffer.byteLength(int32), 32); +var uint32 = new Uint32Array(8); +assert.equal(Buffer.byteLength(uint32), 32); +var float32 = new Float32Array(8); +assert.equal(Buffer.byteLength(float32), 32); +var float64 = new Float64Array(8); +assert.equal(Buffer.byteLength(float64), 64); + +// DataView +var dv = new DataView(new ArrayBuffer(2)); +assert.equal(Buffer.byteLength(dv), 2); + +// special case: zero length string +assert.equal(Buffer.byteLength('', 'ascii'), 0); +assert.equal(Buffer.byteLength('', 'HeX'), 0); + +// utf8 +assert.equal(Buffer.byteLength('∑éllö wørl∂!', 'utf-8'), 19); +assert.equal(Buffer.byteLength('κλμνξο', 'utf8'), 12); +assert.equal(Buffer.byteLength('挵挶挷挸挹', 'utf-8'), 15); +assert.equal(Buffer.byteLength('ð ¹ð ±“𠱸', 'UTF8'), 12); +// without an encoding, utf8 should be assumed +assert.equal(Buffer.byteLength('hey there'), 9); +assert.equal(Buffer.byteLength('𠱸挶νξ#xx :)'), 17); +assert.equal(Buffer.byteLength('hello world', ''), 11); +// it should also be assumed with unrecognized encoding +assert.equal(Buffer.byteLength('hello world', 'abc'), 11); +assert.equal(Buffer.byteLength('ßœ∑≈', 'unkn0wn enc0ding'), 10); + +// base64 +assert.equal(Buffer.byteLength('aGVsbG8gd29ybGQ=', 'base64'), 11); +assert.equal(Buffer.byteLength('bm9kZS5qcyByb2NrcyE=', 'base64'), 14); +assert.equal(Buffer.byteLength('aGkk', 'base64'), 3); +assert.equal(Buffer.byteLength('bHNrZGZsa3NqZmtsc2xrZmFqc2RsZmtqcw==', + 'base64'), 25); +// special padding +assert.equal(Buffer.byteLength('aaa=', 'base64'), 2); +assert.equal(Buffer.byteLength('aaaa==', 'base64'), 3); + +assert.equal(Buffer.byteLength('Il était tué'), 14); +assert.equal(Buffer.byteLength('Il était tué', 'utf8'), 14); +assert.equal(Buffer.byteLength('Il était tué', 'ascii'), 12); +assert.equal(Buffer.byteLength('Il était tué', 'latin1'), 12); +assert.equal(Buffer.byteLength('Il était tué', 'binary'), 12); +['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + assert.equal(24, Buffer.byteLength('Il était tué', encoding)); +}); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js new file mode 100644 index 0000000..f1984ed --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js @@ -0,0 +1,66 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); + +var a = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]); +var b = Buffer.from([5, 6, 7, 8, 9, 0, 1, 2, 3, 4]); + +assert.equal(-1, a.compare(b)); + +// Equivalent to a.compare(b). +assert.equal(-1, a.compare(b, 0)); +assert.equal(-1, a.compare(b, '0')); + +// Equivalent to a.compare(b). +assert.equal(-1, a.compare(b, 0, undefined, 0)); + +// Zero-length targer, return 1 +assert.equal(1, a.compare(b, 0, 0, 0)); +assert.equal(1, a.compare(b, '0', '0', '0')); + +// Equivalent to Buffer.compare(a, b.slice(6, 10)) +assert.equal(1, a.compare(b, 6, 10)); + +// Zero-length source, return -1 +assert.equal(-1, a.compare(b, 6, 10, 0, 0)); + +// Equivalent to Buffer.compare(a.slice(4), b.slice(0, 5)) +assert.equal(1, a.compare(b, 0, 5, 4)); + +// Equivalent to Buffer.compare(a.slice(1), b.slice(5)) +assert.equal(1, a.compare(b, 5, undefined, 1)); + +// Equivalent to Buffer.compare(a.slice(2), b.slice(2, 4)) +assert.equal(-1, a.compare(b, 2, 4, 2)); + +// Equivalent to Buffer.compare(a.slice(4), b.slice(0, 7)) +assert.equal(-1, a.compare(b, 0, 7, 4)); + +// Equivalent to Buffer.compare(a.slice(4, 6), b.slice(0, 7)); +assert.equal(-1, a.compare(b, 0, 7, 4, 6)); + +// zero length target +assert.equal(1, a.compare(b, 0, null)); + +// coerces to targetEnd == 5 +assert.equal(-1, a.compare(b, 0, {valueOf: () => 5})); + +// zero length target +assert.equal(1, a.compare(b, Infinity, -Infinity)); + +// zero length target because default for targetEnd <= targetSource +assert.equal(1, a.compare(b, '0xff')); + +var oor = /out of range index/; + +assert.throws(() => a.compare(b, 0, 100, 0), oor); +assert.throws(() => a.compare(b, 0, 1, 0, 100), oor); +assert.throws(() => a.compare(b, -1), oor); +assert.throws(() => a.compare(b, 0, '0xff'), oor); +assert.throws(() => a.compare(b, 0, Infinity), oor); +assert.throws(() => a.compare(b, -Infinity, Infinity), oor); +assert.throws(() => a.compare(), /Argument must be a Buffer/); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js new file mode 100644 index 0000000..c0dc4da --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js @@ -0,0 +1,40 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +var zero = []; +var one = [ Buffer.from('asdf') ]; +var long = []; +for (var i = 0; i < 10; i++) long.push(Buffer.from('asdf')); + +var flatZero = Buffer.concat(zero); +var flatOne = Buffer.concat(one); +var flatLong = Buffer.concat(long); +var flatLongLen = Buffer.concat(long, 40); + +assert(flatZero.length === 0); +assert(flatOne.toString() === 'asdf'); +// A special case where concat used to return the first item, +// if the length is one. This check is to make sure that we don't do that. +assert(flatOne !== one[0]); +assert(flatLong.toString() === (new Array(10 + 1).join('asdf'))); +assert(flatLongLen.toString() === (new Array(10 + 1).join('asdf'))); + +assertWrongList(); +assertWrongList(null); +assertWrongList(Buffer.from('hello')); +assertWrongList([42]); +assertWrongList(['hello', 'world']); +assertWrongList(['hello', Buffer.from('world')]); + +function assertWrongList(value) { + assert.throws(function() { + Buffer.concat(value); + }, function(err) { + return err instanceof TypeError && + err.message === '"list" argument must be an Array of Buffers'; + }); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js new file mode 100644 index 0000000..7138094 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js @@ -0,0 +1,272 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); +var os = require('os'); +var SIZE = 28; + +var buf1 = Buffer.allocUnsafe(SIZE); +var buf2 = Buffer.allocUnsafe(SIZE); + + +// Default encoding +testBufs('abc'); +testBufs('\u0222aa'); +testBufs('a\u0234b\u0235c\u0236'); +testBufs('abc', 4); +testBufs('abc', 5); +testBufs('abc', SIZE); +testBufs('\u0222aa', 2); +testBufs('\u0222aa', 8); +testBufs('a\u0234b\u0235c\u0236', 4); +testBufs('a\u0234b\u0235c\u0236', 12); +testBufs('abc', 4, -1); +testBufs('abc', 4, 1); +testBufs('abc', 5, 1); +testBufs('\u0222aa', 2, -1); +testBufs('\u0222aa', 8, 1); +testBufs('a\u0234b\u0235c\u0236', 4, -1); +testBufs('a\u0234b\u0235c\u0236', 4, 1); +testBufs('a\u0234b\u0235c\u0236', 12, 1); + + +// UTF8 +testBufs('abc', 'utf8'); +testBufs('\u0222aa', 'utf8'); +testBufs('a\u0234b\u0235c\u0236', 'utf8'); +testBufs('abc', 4, 'utf8'); +testBufs('abc', 5, 'utf8'); +testBufs('abc', SIZE, 'utf8'); +testBufs('\u0222aa', 2, 'utf8'); +testBufs('\u0222aa', 8, 'utf8'); +testBufs('a\u0234b\u0235c\u0236', 4, 'utf8'); +testBufs('a\u0234b\u0235c\u0236', 12, 'utf8'); +testBufs('abc', 4, -1, 'utf8'); +testBufs('abc', 4, 1, 'utf8'); +testBufs('abc', 5, 1, 'utf8'); +testBufs('\u0222aa', 2, -1, 'utf8'); +testBufs('\u0222aa', 8, 1, 'utf8'); +testBufs('a\u0234b\u0235c\u0236', 4, -1, 'utf8'); +testBufs('a\u0234b\u0235c\u0236', 4, 1, 'utf8'); +testBufs('a\u0234b\u0235c\u0236', 12, 1, 'utf8'); +assert.equal(Buffer.allocUnsafe(1).fill(0).fill('\u0222')[0], 0xc8); + + +// BINARY +testBufs('abc', 'binary'); +testBufs('\u0222aa', 'binary'); +testBufs('a\u0234b\u0235c\u0236', 'binary'); +testBufs('abc', 4, 'binary'); +testBufs('abc', 5, 'binary'); +testBufs('abc', SIZE, 'binary'); +testBufs('\u0222aa', 2, 'binary'); +testBufs('\u0222aa', 8, 'binary'); +testBufs('a\u0234b\u0235c\u0236', 4, 'binary'); +testBufs('a\u0234b\u0235c\u0236', 12, 'binary'); +testBufs('abc', 4, -1, 'binary'); +testBufs('abc', 4, 1, 'binary'); +testBufs('abc', 5, 1, 'binary'); +testBufs('\u0222aa', 2, -1, 'binary'); +testBufs('\u0222aa', 8, 1, 'binary'); +testBufs('a\u0234b\u0235c\u0236', 4, -1, 'binary'); +testBufs('a\u0234b\u0235c\u0236', 4, 1, 'binary'); +testBufs('a\u0234b\u0235c\u0236', 12, 1, 'binary'); + + +// LATIN1 +testBufs('abc', 'latin1'); +testBufs('\u0222aa', 'latin1'); +testBufs('a\u0234b\u0235c\u0236', 'latin1'); +testBufs('abc', 4, 'latin1'); +testBufs('abc', 5, 'latin1'); +testBufs('abc', SIZE, 'latin1'); +testBufs('\u0222aa', 2, 'latin1'); +testBufs('\u0222aa', 8, 'latin1'); +testBufs('a\u0234b\u0235c\u0236', 4, 'latin1'); +testBufs('a\u0234b\u0235c\u0236', 12, 'latin1'); +testBufs('abc', 4, -1, 'latin1'); +testBufs('abc', 4, 1, 'latin1'); +testBufs('abc', 5, 1, 'latin1'); +testBufs('\u0222aa', 2, -1, 'latin1'); +testBufs('\u0222aa', 8, 1, 'latin1'); +testBufs('a\u0234b\u0235c\u0236', 4, -1, 'latin1'); +testBufs('a\u0234b\u0235c\u0236', 4, 1, 'latin1'); +testBufs('a\u0234b\u0235c\u0236', 12, 1, 'latin1'); + + +// UCS2 +testBufs('abc', 'ucs2'); +testBufs('\u0222aa', 'ucs2'); +testBufs('a\u0234b\u0235c\u0236', 'ucs2'); +testBufs('abc', 4, 'ucs2'); +testBufs('abc', SIZE, 'ucs2'); +testBufs('\u0222aa', 2, 'ucs2'); +testBufs('\u0222aa', 8, 'ucs2'); +testBufs('a\u0234b\u0235c\u0236', 4, 'ucs2'); +testBufs('a\u0234b\u0235c\u0236', 12, 'ucs2'); +testBufs('abc', 4, -1, 'ucs2'); +testBufs('abc', 4, 1, 'ucs2'); +testBufs('abc', 5, 1, 'ucs2'); +testBufs('\u0222aa', 2, -1, 'ucs2'); +testBufs('\u0222aa', 8, 1, 'ucs2'); +testBufs('a\u0234b\u0235c\u0236', 4, -1, 'ucs2'); +testBufs('a\u0234b\u0235c\u0236', 4, 1, 'ucs2'); +testBufs('a\u0234b\u0235c\u0236', 12, 1, 'ucs2'); +assert.equal(Buffer.allocUnsafe(1).fill('\u0222', 'ucs2')[0], + os.endianness() === 'LE' ? 0x22 : 0x02); + + +// HEX +testBufs('616263', 'hex'); +testBufs('c8a26161', 'hex'); +testBufs('61c8b462c8b563c8b6', 'hex'); +testBufs('616263', 4, 'hex'); +testBufs('616263', 5, 'hex'); +testBufs('616263', SIZE, 'hex'); +testBufs('c8a26161', 2, 'hex'); +testBufs('c8a26161', 8, 'hex'); +testBufs('61c8b462c8b563c8b6', 4, 'hex'); +testBufs('61c8b462c8b563c8b6', 12, 'hex'); +testBufs('616263', 4, -1, 'hex'); +testBufs('616263', 4, 1, 'hex'); +testBufs('616263', 5, 1, 'hex'); +testBufs('c8a26161', 2, -1, 'hex'); +testBufs('c8a26161', 8, 1, 'hex'); +testBufs('61c8b462c8b563c8b6', 4, -1, 'hex'); +testBufs('61c8b462c8b563c8b6', 4, 1, 'hex'); +testBufs('61c8b462c8b563c8b6', 12, 1, 'hex'); +// Make sure this operation doesn't go on forever +buf1.fill('yKJh', 'hex'); +assert.throws(() => buf1.fill('\u0222', 'hex')); + + +// BASE64 +testBufs('YWJj', 'ucs2'); +testBufs('yKJhYQ==', 'ucs2'); +testBufs('Yci0Ysi1Y8i2', 'ucs2'); +testBufs('YWJj', 4, 'ucs2'); +testBufs('YWJj', SIZE, 'ucs2'); +testBufs('yKJhYQ==', 2, 'ucs2'); +testBufs('yKJhYQ==', 8, 'ucs2'); +testBufs('Yci0Ysi1Y8i2', 4, 'ucs2'); +testBufs('Yci0Ysi1Y8i2', 12, 'ucs2'); +testBufs('YWJj', 4, -1, 'ucs2'); +testBufs('YWJj', 4, 1, 'ucs2'); +testBufs('YWJj', 5, 1, 'ucs2'); +testBufs('yKJhYQ==', 2, -1, 'ucs2'); +testBufs('yKJhYQ==', 8, 1, 'ucs2'); +testBufs('Yci0Ysi1Y8i2', 4, -1, 'ucs2'); +testBufs('Yci0Ysi1Y8i2', 4, 1, 'ucs2'); +testBufs('Yci0Ysi1Y8i2', 12, 1, 'ucs2'); + + +// Buffer +function deepStrictEqualValues(buf, arr) { + for (var [index, value] of buf.entries()) { + assert.deepStrictEqual(value, arr[index]); + } +} + + +var buf2Fill = Buffer.allocUnsafe(1).fill(2); +deepStrictEqualValues(genBuffer(4, [buf2Fill]), [2, 2, 2, 2]); +deepStrictEqualValues(genBuffer(4, [buf2Fill, 1]), [0, 2, 2, 2]); +deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, 3]), [0, 2, 2, 0]); +deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, 1]), [0, 0, 0, 0]); +deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, -1]), [0, 0, 0, 0]); +var hexBufFill = Buffer.allocUnsafe(2).fill(0).fill('0102', 'hex'); +deepStrictEqualValues(genBuffer(4, [hexBufFill]), [1, 2, 1, 2]); +deepStrictEqualValues(genBuffer(4, [hexBufFill, 1]), [0, 1, 2, 1]); +deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, 3]), [0, 1, 2, 0]); +deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, 1]), [0, 0, 0, 0]); +deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, -1]), [0, 0, 0, 0]); + + +// Check exceptions +assert.throws(() => buf1.fill(0, -1)); +assert.throws(() => buf1.fill(0, 0, buf1.length + 1)); +assert.throws(() => buf1.fill('', -1)); +assert.throws(() => buf1.fill('', 0, buf1.length + 1)); +assert.throws(() => buf1.fill('a', 0, buf1.length, 'node rocks!')); +assert.throws(() => buf1.fill('a', 0, 0, NaN)); +assert.throws(() => buf1.fill('a', 0, 0, null)); +assert.throws(() => buf1.fill('a', 0, 0, 'foo')); + + +function genBuffer(size, args) { + var b = Buffer.allocUnsafe(size); + return b.fill(0).fill.apply(b, args); +} + + +function bufReset() { + buf1.fill(0); + buf2.fill(0); +} + + +// This is mostly accurate. Except write() won't write partial bytes to the +// string while fill() blindly copies bytes into memory. To account for that an +// error will be thrown if not all the data can be written, and the SIZE has +// been massaged to work with the input characters. +function writeToFill(string, offset, end, encoding) { + if (typeof offset === 'string') { + encoding = offset; + offset = 0; + end = buf2.length; + } else if (typeof end === 'string') { + encoding = end; + end = buf2.length; + } else if (end === undefined) { + end = buf2.length; + } + + if (offset < 0 || end > buf2.length) + throw new RangeError('Out of range index'); + + if (end <= offset) + return buf2; + + offset >>>= 0; + end >>>= 0; + assert(offset <= buf2.length); + + // Convert "end" to "length" (which write understands). + var length = end - offset < 0 ? 0 : end - offset; + + var wasZero = false; + do { + var written = buf2.write(string, offset, length, encoding); + offset += written; + // Safety check in case write falls into infinite loop. + if (written === 0) { + if (wasZero) + throw new Error('Could not write all data to Buffer'); + else + wasZero = true; + } + } while (offset < buf2.length); + + // Correction for UCS2 operations. + if (os.endianness() === 'BE' && encoding === 'ucs2') { + for (var i = 0; i < buf2.length; i += 2) { + var tmp = buf2[i]; + buf2[i] = buf2[i + 1]; + buf2[i + 1] = tmp; + } + } + + return buf2; +} + + +function testBufs(string, offset, length, encoding) { + bufReset(); + buf1.fill.apply(buf1, arguments); + // Swap bytes on BE archs for ucs2 encoding. + assert.deepStrictEqual(buf1.fill.apply(buf1, arguments), + writeToFill.apply(null, arguments)); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js new file mode 100644 index 0000000..2096a34 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js @@ -0,0 +1,305 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +var Buffer = require('../../').Buffer; + +var b = Buffer.from('abcdef'); +var buf_a = Buffer.from('a'); +var buf_bc = Buffer.from('bc'); +var buf_f = Buffer.from('f'); +var buf_z = Buffer.from('z'); +var buf_empty = Buffer.from(''); + +assert(b.includes('a')); +assert(!b.includes('a', 1)); +assert(!b.includes('a', -1)); +assert(!b.includes('a', -4)); +assert(b.includes('a', -b.length)); +assert(b.includes('a', NaN)); +assert(b.includes('a', -Infinity)); +assert(!b.includes('a', Infinity)); +assert(b.includes('bc')); +assert(!b.includes('bc', 2)); +assert(!b.includes('bc', -1)); +assert(!b.includes('bc', -3)); +assert(b.includes('bc', -5)); +assert(b.includes('bc', NaN)); +assert(b.includes('bc', -Infinity)); +assert(!b.includes('bc', Infinity)); +assert(b.includes('f'), b.length - 1); +assert(!b.includes('z')); +assert(!b.includes('')); +assert(!b.includes('', 1)); +assert(!b.includes('', b.length + 1)); +assert(!b.includes('', Infinity)); +assert(b.includes(buf_a)); +assert(!b.includes(buf_a, 1)); +assert(!b.includes(buf_a, -1)); +assert(!b.includes(buf_a, -4)); +assert(b.includes(buf_a, -b.length)); +assert(b.includes(buf_a, NaN)); +assert(b.includes(buf_a, -Infinity)); +assert(!b.includes(buf_a, Infinity)); +assert(b.includes(buf_bc)); +assert(!b.includes(buf_bc, 2)); +assert(!b.includes(buf_bc, -1)); +assert(!b.includes(buf_bc, -3)); +assert(b.includes(buf_bc, -5)); +assert(b.includes(buf_bc, NaN)); +assert(b.includes(buf_bc, -Infinity)); +assert(!b.includes(buf_bc, Infinity)); +assert(b.includes(buf_f), b.length - 1); +assert(!b.includes(buf_z)); +assert(!b.includes(buf_empty)); +assert(!b.includes(buf_empty, 1)); +assert(!b.includes(buf_empty, b.length + 1)); +assert(!b.includes(buf_empty, Infinity)); +assert(b.includes(0x61)); +assert(!b.includes(0x61, 1)); +assert(!b.includes(0x61, -1)); +assert(!b.includes(0x61, -4)); +assert(b.includes(0x61, -b.length)); +assert(b.includes(0x61, NaN)); +assert(b.includes(0x61, -Infinity)); +assert(!b.includes(0x61, Infinity)); +assert(!b.includes(0x0)); + +// test offsets +assert(b.includes('d', 2)); +assert(b.includes('f', 5)); +assert(b.includes('f', -1)); +assert(!b.includes('f', 6)); + +assert(b.includes(Buffer.from('d'), 2)); +assert(b.includes(Buffer.from('f'), 5)); +assert(b.includes(Buffer.from('f'), -1)); +assert(!b.includes(Buffer.from('f'), 6)); + +assert(!Buffer.from('ff').includes(Buffer.from('f'), 1, 'ucs2')); + +// test hex encoding +assert.strictEqual( + Buffer.from(b.toString('hex'), 'hex') + .includes('64', 0, 'hex'), + true +); +assert.strictEqual( + Buffer.from(b.toString('hex'), 'hex') + .includes(Buffer.from('64', 'hex'), 0, 'hex'), + true +); + +// test base64 encoding +assert.strictEqual( + Buffer.from(b.toString('base64'), 'base64') + .includes('ZA==', 0, 'base64'), + true +); +assert.strictEqual( + Buffer.from(b.toString('base64'), 'base64') + .includes(Buffer.from('ZA==', 'base64'), 0, 'base64'), + true +); + +// test ascii encoding +assert.strictEqual( + Buffer.from(b.toString('ascii'), 'ascii') + .includes('d', 0, 'ascii'), + true +); +assert.strictEqual( + Buffer.from(b.toString('ascii'), 'ascii') + .includes(Buffer.from('d', 'ascii'), 0, 'ascii'), + true +); + +// test latin1 encoding +assert.strictEqual( + Buffer.from(b.toString('latin1'), 'latin1') + .includes('d', 0, 'latin1'), + true +); +assert.strictEqual( + Buffer.from(b.toString('latin1'), 'latin1') + .includes(Buffer.from('d', 'latin1'), 0, 'latin1'), + true +); + +// test binary encoding +assert.strictEqual( + Buffer.from(b.toString('binary'), 'binary') + .includes('d', 0, 'binary'), + true +); +assert.strictEqual( + Buffer.from(b.toString('binary'), 'binary') + .includes(Buffer.from('d', 'binary'), 0, 'binary'), + true +); + + +// test usc2 encoding +var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); + +assert(twoByteString.includes('\u0395', 4, 'ucs2')); +assert(twoByteString.includes('\u03a3', -4, 'ucs2')); +assert(twoByteString.includes('\u03a3', -6, 'ucs2')); +assert(twoByteString.includes( + Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')); +assert(!twoByteString.includes('\u03a3', -2, 'ucs2')); + +var mixedByteStringUcs2 = + Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2'); +assert(mixedByteStringUcs2.includes('bc', 0, 'ucs2')); +assert(mixedByteStringUcs2.includes('\u03a3', 0, 'ucs2')); +assert(!mixedByteStringUcs2.includes('\u0396', 0, 'ucs2')); + +assert( + 6, mixedByteStringUcs2.includes(Buffer.from('bc', 'ucs2'), 0, 'ucs2')); +assert( + 10, mixedByteStringUcs2.includes(Buffer.from('\u03a3', 'ucs2'), + 0, 'ucs2')); +assert( + -1, mixedByteStringUcs2.includes(Buffer.from('\u0396', 'ucs2'), + 0, 'ucs2')); + +twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); + +// Test single char pattern +assert(twoByteString.includes('\u039a', 0, 'ucs2')); +assert(twoByteString.includes('\u0391', 0, 'ucs2'), 'Alpha'); +assert(twoByteString.includes('\u03a3', 0, 'ucs2'), 'First Sigma'); +assert(twoByteString.includes('\u03a3', 6, 'ucs2'), 'Second Sigma'); +assert(twoByteString.includes('\u0395', 0, 'ucs2'), 'Epsilon'); +assert(!twoByteString.includes('\u0392', 0, 'ucs2'), 'Not beta'); + +// Test multi-char pattern +assert(twoByteString.includes('\u039a\u0391', 0, 'ucs2'), 'Lambda Alpha'); +assert(twoByteString.includes('\u0391\u03a3', 0, 'ucs2'), 'Alpha Sigma'); +assert(twoByteString.includes('\u03a3\u03a3', 0, 'ucs2'), 'Sigma Sigma'); +assert(twoByteString.includes('\u03a3\u0395', 0, 'ucs2'), 'Sigma Epsilon'); + +var mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395'); +assert(mixedByteStringUtf8.includes('bc')); +assert(mixedByteStringUtf8.includes('bc', 5)); +assert(mixedByteStringUtf8.includes('bc', -8)); +assert(mixedByteStringUtf8.includes('\u03a3')); +assert(!mixedByteStringUtf8.includes('\u0396')); + + +// Test complex string includes algorithms. Only trigger for long strings. +// Long string that isn't a simple repeat of a shorter string. +var longString = 'A'; +for (var i = 66; i < 76; i++) { // from 'B' to 'K' + longString = longString + String.fromCharCode(i) + longString; +} + +var longBufferString = Buffer.from(longString); + +// pattern of 15 chars, repeated every 16 chars in long +var pattern = 'ABACABADABACABA'; +for (var i = 0; i < longBufferString.length - pattern.length; i += 7) { + var includes = longBufferString.includes(pattern, i); + assert(includes, 'Long ABACABA...-string at index ' + i); +} +assert(longBufferString.includes('AJABACA'), 'Long AJABACA, First J'); +assert(longBufferString.includes('AJABACA', 511), 'Long AJABACA, Second J'); + +pattern = 'JABACABADABACABA'; +assert(longBufferString.includes(pattern), 'Long JABACABA..., First J'); +assert(longBufferString.includes(pattern, 512), 'Long JABACABA..., Second J'); + +// Search for a non-ASCII string in a pure ASCII string. +var asciiString = Buffer.from( + 'arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf'); +assert(!asciiString.includes('\x2061')); +assert(asciiString.includes('leb', 0)); + +// Search in string containing many non-ASCII chars. +var allCodePoints = []; +for (var i = 0; i < 65536; i++) allCodePoints[i] = i; +var allCharsString = String.fromCharCode.apply(String, allCodePoints); +var allCharsBufferUtf8 = Buffer.from(allCharsString); +var allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2'); + +// Search for string long enough to trigger complex search with ASCII pattern +// and UC16 subject. +assert(!allCharsBufferUtf8.includes('notfound')); +assert(!allCharsBufferUcs2.includes('notfound')); + +// Find substrings in Utf8. +var lengths = [1, 3, 15]; // Single char, simple and complex. +var indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b]; +for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { + for (var i = 0; i < indices.length; i++) { + var index = indices[i]; + var length = lengths[lengthIndex]; + + if (index + length > 0x7F) { + length = 2 * length; + } + + if (index + length > 0x7FF) { + length = 3 * length; + } + + if (index + length > 0xFFFF) { + length = 4 * length; + } + + var patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length); + assert(index, allCharsBufferUtf8.includes(patternBufferUtf8)); + + var patternStringUtf8 = patternBufferUtf8.toString(); + assert(index, allCharsBufferUtf8.includes(patternStringUtf8)); + } +} + +// Find substrings in Usc2. +lengths = [2, 4, 16]; // Single char, simple and complex. +indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; +for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { + for (var i = 0; i < indices.length; i++) { + var index = indices[i] * 2; + var length = lengths[lengthIndex]; + + var patternBufferUcs2 = + allCharsBufferUcs2.slice(index, index + length); + assert( + index, allCharsBufferUcs2.includes(patternBufferUcs2, 0, 'ucs2')); + + var patternStringUcs2 = patternBufferUcs2.toString('ucs2'); + assert( + index, allCharsBufferUcs2.includes(patternStringUcs2, 0, 'ucs2')); + } +} + +assert.throws(function() { + b.includes(function() { }); +}); +assert.throws(function() { + b.includes({}); +}); +assert.throws(function() { + b.includes([]); +}); + +// test truncation of Number arguments to uint8 +{ + var buf = Buffer.from('this is a test'); + assert.ok(buf.includes(0x6973)); + assert.ok(buf.includes(0x697320)); + assert.ok(buf.includes(0x69732069)); + assert.ok(buf.includes(0x697374657374)); + assert.ok(buf.includes(0x69737374)); + assert.ok(buf.includes(0x69737465)); + assert.ok(buf.includes(0x69737465)); + assert.ok(buf.includes(-140)); + assert.ok(buf.includes(-152)); + assert.ok(!buf.includes(0xff)); + assert.ok(!buf.includes(0xffff)); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js new file mode 100644 index 0000000..24502c3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js @@ -0,0 +1,523 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +var Buffer = require('../../').Buffer; + +var b = Buffer.from('abcdef'); +var buf_a = Buffer.from('a'); +var buf_bc = Buffer.from('bc'); +var buf_f = Buffer.from('f'); +var buf_z = Buffer.from('z'); +var buf_empty = Buffer.from(''); + +assert.equal(b.indexOf('a'), 0); +assert.equal(b.indexOf('a', 1), -1); +assert.equal(b.indexOf('a', -1), -1); +assert.equal(b.indexOf('a', -4), -1); +assert.equal(b.indexOf('a', -b.length), 0); +assert.equal(b.indexOf('a', NaN), 0); +assert.equal(b.indexOf('a', -Infinity), 0); +assert.equal(b.indexOf('a', Infinity), -1); +assert.equal(b.indexOf('bc'), 1); +assert.equal(b.indexOf('bc', 2), -1); +assert.equal(b.indexOf('bc', -1), -1); +assert.equal(b.indexOf('bc', -3), -1); +assert.equal(b.indexOf('bc', -5), 1); +assert.equal(b.indexOf('bc', NaN), 1); +assert.equal(b.indexOf('bc', -Infinity), 1); +assert.equal(b.indexOf('bc', Infinity), -1); +assert.equal(b.indexOf('f'), b.length - 1); +assert.equal(b.indexOf('z'), -1); +assert.equal(b.indexOf(''), -1); +assert.equal(b.indexOf('', 1), -1); +assert.equal(b.indexOf('', b.length + 1), -1); +assert.equal(b.indexOf('', Infinity), -1); +assert.equal(b.indexOf(buf_a), 0); +assert.equal(b.indexOf(buf_a, 1), -1); +assert.equal(b.indexOf(buf_a, -1), -1); +assert.equal(b.indexOf(buf_a, -4), -1); +assert.equal(b.indexOf(buf_a, -b.length), 0); +assert.equal(b.indexOf(buf_a, NaN), 0); +assert.equal(b.indexOf(buf_a, -Infinity), 0); +assert.equal(b.indexOf(buf_a, Infinity), -1); +assert.equal(b.indexOf(buf_bc), 1); +assert.equal(b.indexOf(buf_bc, 2), -1); +assert.equal(b.indexOf(buf_bc, -1), -1); +assert.equal(b.indexOf(buf_bc, -3), -1); +assert.equal(b.indexOf(buf_bc, -5), 1); +assert.equal(b.indexOf(buf_bc, NaN), 1); +assert.equal(b.indexOf(buf_bc, -Infinity), 1); +assert.equal(b.indexOf(buf_bc, Infinity), -1); +assert.equal(b.indexOf(buf_f), b.length - 1); +assert.equal(b.indexOf(buf_z), -1); +assert.equal(b.indexOf(buf_empty), -1); +assert.equal(b.indexOf(buf_empty, 1), -1); +assert.equal(b.indexOf(buf_empty, b.length + 1), -1); +assert.equal(b.indexOf(buf_empty, Infinity), -1); +assert.equal(b.indexOf(0x61), 0); +assert.equal(b.indexOf(0x61, 1), -1); +assert.equal(b.indexOf(0x61, -1), -1); +assert.equal(b.indexOf(0x61, -4), -1); +assert.equal(b.indexOf(0x61, -b.length), 0); +assert.equal(b.indexOf(0x61, NaN), 0); +assert.equal(b.indexOf(0x61, -Infinity), 0); +assert.equal(b.indexOf(0x61, Infinity), -1); +assert.equal(b.indexOf(0x0), -1); + +// test offsets +assert.equal(b.indexOf('d', 2), 3); +assert.equal(b.indexOf('f', 5), 5); +assert.equal(b.indexOf('f', -1), 5); +assert.equal(b.indexOf('f', 6), -1); + +assert.equal(b.indexOf(Buffer.from('d'), 2), 3); +assert.equal(b.indexOf(Buffer.from('f'), 5), 5); +assert.equal(b.indexOf(Buffer.from('f'), -1), 5); +assert.equal(b.indexOf(Buffer.from('f'), 6), -1); + +assert.equal(Buffer.from('ff').indexOf(Buffer.from('f'), 1, 'ucs2'), -1); + +// test hex encoding +assert.strictEqual( + Buffer.from(b.toString('hex'), 'hex') + .indexOf('64', 0, 'hex'), + 3 +); +assert.strictEqual( + Buffer.from(b.toString('hex'), 'hex') + .indexOf(Buffer.from('64', 'hex'), 0, 'hex'), + 3 +); + +// test base64 encoding +assert.strictEqual( + Buffer.from(b.toString('base64'), 'base64') + .indexOf('ZA==', 0, 'base64'), + 3 +); +assert.strictEqual( + Buffer.from(b.toString('base64'), 'base64') + .indexOf(Buffer.from('ZA==', 'base64'), 0, 'base64'), + 3 +); + +// test ascii encoding +assert.strictEqual( + Buffer.from(b.toString('ascii'), 'ascii') + .indexOf('d', 0, 'ascii'), + 3 +); +assert.strictEqual( + Buffer.from(b.toString('ascii'), 'ascii') + .indexOf(Buffer.from('d', 'ascii'), 0, 'ascii'), + 3 +); + +// test latin1 encoding +assert.strictEqual( + Buffer.from(b.toString('latin1'), 'latin1') + .indexOf('d', 0, 'latin1'), + 3 +); +assert.strictEqual( + Buffer.from(b.toString('latin1'), 'latin1') + .indexOf(Buffer.from('d', 'latin1'), 0, 'latin1'), + 3 +); +assert.strictEqual( + Buffer.from('aa\u00e8aa', 'latin1') + .indexOf('\u00e8', 'latin1'), + 2 +); +assert.strictEqual( + Buffer.from('\u00e8', 'latin1') + .indexOf('\u00e8', 'latin1'), + 0 +); +assert.strictEqual( + Buffer.from('\u00e8', 'latin1') + .indexOf(Buffer.from('\u00e8', 'latin1'), 'latin1'), + 0 +); + +// test binary encoding +assert.strictEqual( + Buffer.from(b.toString('binary'), 'binary') + .indexOf('d', 0, 'binary'), + 3 +); +assert.strictEqual( + Buffer.from(b.toString('binary'), 'binary') + .indexOf(Buffer.from('d', 'binary'), 0, 'binary'), + 3 +); +assert.strictEqual( + Buffer.from('aa\u00e8aa', 'binary') + .indexOf('\u00e8', 'binary'), + 2 +); +assert.strictEqual( + Buffer.from('\u00e8', 'binary') + .indexOf('\u00e8', 'binary'), + 0 +); +assert.strictEqual( + Buffer.from('\u00e8', 'binary') + .indexOf(Buffer.from('\u00e8', 'binary'), 'binary'), + 0 +); + + +// test optional offset with passed encoding +assert.equal(Buffer.from('aaaa0').indexOf('30', 'hex'), 4); +assert.equal(Buffer.from('aaaa00a').indexOf('3030', 'hex'), 4); + +{ + // test usc2 encoding + var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); + + assert.equal(8, twoByteString.indexOf('\u0395', 4, 'ucs2')); + assert.equal(6, twoByteString.indexOf('\u03a3', -4, 'ucs2')); + assert.equal(4, twoByteString.indexOf('\u03a3', -6, 'ucs2')); + assert.equal(4, twoByteString.indexOf( + Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')); + assert.equal(-1, twoByteString.indexOf('\u03a3', -2, 'ucs2')); +} + +var mixedByteStringUcs2 = + Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2'); +assert.equal(6, mixedByteStringUcs2.indexOf('bc', 0, 'ucs2')); +assert.equal(10, mixedByteStringUcs2.indexOf('\u03a3', 0, 'ucs2')); +assert.equal(-1, mixedByteStringUcs2.indexOf('\u0396', 0, 'ucs2')); + +assert.equal( + 6, mixedByteStringUcs2.indexOf(Buffer.from('bc', 'ucs2'), 0, 'ucs2')); +assert.equal( + 10, mixedByteStringUcs2.indexOf(Buffer.from('\u03a3', 'ucs2'), 0, 'ucs2')); +assert.equal( + -1, mixedByteStringUcs2.indexOf(Buffer.from('\u0396', 'ucs2'), 0, 'ucs2')); + +{ + var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); + + // Test single char pattern + assert.equal(0, twoByteString.indexOf('\u039a', 0, 'ucs2')); + assert.equal(2, twoByteString.indexOf('\u0391', 0, 'ucs2'), 'Alpha'); + assert.equal(4, twoByteString.indexOf('\u03a3', 0, 'ucs2'), 'First Sigma'); + assert.equal(6, twoByteString.indexOf('\u03a3', 6, 'ucs2'), 'Second Sigma'); + assert.equal(8, twoByteString.indexOf('\u0395', 0, 'ucs2'), 'Epsilon'); + assert.equal(-1, twoByteString.indexOf('\u0392', 0, 'ucs2'), 'Not beta'); + + // Test multi-char pattern + assert.equal( + 0, twoByteString.indexOf('\u039a\u0391', 0, 'ucs2'), 'Lambda Alpha'); + assert.equal( + 2, twoByteString.indexOf('\u0391\u03a3', 0, 'ucs2'), 'Alpha Sigma'); + assert.equal( + 4, twoByteString.indexOf('\u03a3\u03a3', 0, 'ucs2'), 'Sigma Sigma'); + assert.equal( + 6, twoByteString.indexOf('\u03a3\u0395', 0, 'ucs2'), 'Sigma Epsilon'); +} + +var mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395'); +assert.equal(5, mixedByteStringUtf8.indexOf('bc')); +assert.equal(5, mixedByteStringUtf8.indexOf('bc', 5)); +assert.equal(5, mixedByteStringUtf8.indexOf('bc', -8)); +assert.equal(7, mixedByteStringUtf8.indexOf('\u03a3')); +assert.equal(-1, mixedByteStringUtf8.indexOf('\u0396')); + + +// Test complex string indexOf algorithms. Only trigger for long strings. +// Long string that isn't a simple repeat of a shorter string. +var longString = 'A'; +for (var i = 66; i < 76; i++) { // from 'B' to 'K' + longString = longString + String.fromCharCode(i) + longString; +} + +var longBufferString = Buffer.from(longString); + +// pattern of 15 chars, repeated every 16 chars in long +var pattern = 'ABACABADABACABA'; +for (var i = 0; i < longBufferString.length - pattern.length; i += 7) { + var index = longBufferString.indexOf(pattern, i); + assert.equal((i + 15) & ~0xf, index, 'Long ABACABA...-string at index ' + i); +} +assert.equal(510, longBufferString.indexOf('AJABACA'), 'Long AJABACA, First J'); +assert.equal( + 1534, longBufferString.indexOf('AJABACA', 511), 'Long AJABACA, Second J'); + +pattern = 'JABACABADABACABA'; +assert.equal( + 511, longBufferString.indexOf(pattern), 'Long JABACABA..., First J'); +assert.equal( + 1535, longBufferString.indexOf(pattern, 512), 'Long JABACABA..., Second J'); + +// Search for a non-ASCII string in a pure ASCII string. +var asciiString = Buffer.from( + 'arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf'); +assert.equal(-1, asciiString.indexOf('\x2061')); +assert.equal(3, asciiString.indexOf('leb', 0)); + +// Search in string containing many non-ASCII chars. +var allCodePoints = []; +for (var i = 0; i < 65536; i++) allCodePoints[i] = i; +var allCharsString = String.fromCharCode.apply(String, allCodePoints); +var allCharsBufferUtf8 = Buffer.from(allCharsString); +var allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2'); + +// Search for string long enough to trigger complex search with ASCII pattern +// and UC16 subject. +assert.equal(-1, allCharsBufferUtf8.indexOf('notfound')); +assert.equal(-1, allCharsBufferUcs2.indexOf('notfound')); + +// Needle is longer than haystack, but only because it's encoded as UTF-16 +assert.strictEqual(Buffer.from('aaaa').indexOf('a'.repeat(4), 'ucs2'), -1); + +assert.strictEqual(Buffer.from('aaaa').indexOf('a'.repeat(4), 'utf8'), 0); +assert.strictEqual(Buffer.from('aaaa').indexOf('你好', 'ucs2'), -1); + +// Haystack has odd length, but the needle is UCS2. +// assert.strictEqual(Buffer.from('aaaaa').indexOf('b', 'ucs2'), -1); + +{ + // Find substrings in Utf8. + var lengths = [1, 3, 15]; // Single char, simple and complex. + var indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b]; + for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { + for (var i = 0; i < indices.length; i++) { + var index = indices[i]; + var length = lengths[lengthIndex]; + + if (index + length > 0x7F) { + length = 2 * length; + } + + if (index + length > 0x7FF) { + length = 3 * length; + } + + if (index + length > 0xFFFF) { + length = 4 * length; + } + + var patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length); + assert.equal(index, allCharsBufferUtf8.indexOf(patternBufferUtf8)); + + var patternStringUtf8 = patternBufferUtf8.toString(); + assert.equal(index, allCharsBufferUtf8.indexOf(patternStringUtf8)); + } + } +} + +{ + // Find substrings in Usc2. + var lengths = [2, 4, 16]; // Single char, simple and complex. + var indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; + for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { + for (var i = 0; i < indices.length; i++) { + var index = indices[i] * 2; + var length = lengths[lengthIndex]; + + var patternBufferUcs2 = + allCharsBufferUcs2.slice(index, index + length); + assert.equal( + index, allCharsBufferUcs2.indexOf(patternBufferUcs2, 0, 'ucs2')); + + var patternStringUcs2 = patternBufferUcs2.toString('ucs2'); + assert.equal( + index, allCharsBufferUcs2.indexOf(patternStringUcs2, 0, 'ucs2')); + } + } +} + +assert.throws(function() { + b.indexOf(function() { }); +}); +assert.throws(function() { + b.indexOf({}); +}); +assert.throws(function() { + b.indexOf([]); +}); + +// All code for handling encodings is shared between Buffer.indexOf and +// Buffer.lastIndexOf, so only testing the separate lastIndexOf semantics. + +// Test lastIndexOf basic functionality; Buffer b contains 'abcdef'. +// lastIndexOf string: +assert.equal(b.lastIndexOf('a'), 0); +assert.equal(b.lastIndexOf('a', 1), 0); +assert.equal(b.lastIndexOf('b', 1), 1); +assert.equal(b.lastIndexOf('c', 1), -1); +assert.equal(b.lastIndexOf('a', -1), 0); +assert.equal(b.lastIndexOf('a', -4), 0); +assert.equal(b.lastIndexOf('a', -b.length), 0); +assert.equal(b.lastIndexOf('a', -b.length - 1), -1); +assert.equal(b.lastIndexOf('a', NaN), 0); +assert.equal(b.lastIndexOf('a', -Infinity), -1); +assert.equal(b.lastIndexOf('a', Infinity), 0); +// lastIndexOf Buffer: +assert.equal(b.lastIndexOf(buf_a), 0); +assert.equal(b.lastIndexOf(buf_a, 1), 0); +assert.equal(b.lastIndexOf(buf_a, -1), 0); +assert.equal(b.lastIndexOf(buf_a, -4), 0); +assert.equal(b.lastIndexOf(buf_a, -b.length), 0); +assert.equal(b.lastIndexOf(buf_a, -b.length - 1), -1); +assert.equal(b.lastIndexOf(buf_a, NaN), 0); +assert.equal(b.lastIndexOf(buf_a, -Infinity), -1); +assert.equal(b.lastIndexOf(buf_a, Infinity), 0); +assert.equal(b.lastIndexOf(buf_bc), 1); +assert.equal(b.lastIndexOf(buf_bc, 2), 1); +assert.equal(b.lastIndexOf(buf_bc, -1), 1); +assert.equal(b.lastIndexOf(buf_bc, -3), 1); +assert.equal(b.lastIndexOf(buf_bc, -5), 1); +assert.equal(b.lastIndexOf(buf_bc, -6), -1); +assert.equal(b.lastIndexOf(buf_bc, NaN), 1); +assert.equal(b.lastIndexOf(buf_bc, -Infinity), -1); +assert.equal(b.lastIndexOf(buf_bc, Infinity), 1); +assert.equal(b.lastIndexOf(buf_f), b.length - 1); +assert.equal(b.lastIndexOf(buf_z), -1); +assert.equal(b.lastIndexOf(buf_empty), -1); +assert.equal(b.lastIndexOf(buf_empty, 1), -1); +assert.equal(b.lastIndexOf(buf_empty, b.length + 1), -1); +assert.equal(b.lastIndexOf(buf_empty, Infinity), -1); +// lastIndexOf number: +assert.equal(b.lastIndexOf(0x61), 0); +assert.equal(b.lastIndexOf(0x61, 1), 0); +assert.equal(b.lastIndexOf(0x61, -1), 0); +assert.equal(b.lastIndexOf(0x61, -4), 0); +assert.equal(b.lastIndexOf(0x61, -b.length), 0); +assert.equal(b.lastIndexOf(0x61, -b.length - 1), -1); +assert.equal(b.lastIndexOf(0x61, NaN), 0); +assert.equal(b.lastIndexOf(0x61, -Infinity), -1); +assert.equal(b.lastIndexOf(0x61, Infinity), 0); +assert.equal(b.lastIndexOf(0x0), -1); + +// Test weird offset arguments. +// Behaviour should match String.lastIndexOf: +assert.equal(b.lastIndexOf('b', 0), -1); +assert.equal(b.lastIndexOf('b', undefined), 1); +assert.equal(b.lastIndexOf('b', null), -1); +assert.equal(b.lastIndexOf('b', {}), 1); +assert.equal(b.lastIndexOf('b', []), -1); +assert.equal(b.lastIndexOf('b', [2]), 1); + +// Test needles longer than the haystack. +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'ucs2'), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'utf8'), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'latin1'), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'binary'), -1); +assert.strictEqual(b.lastIndexOf(Buffer.from('aaaaaaaaaaaaaaa')), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 2, 'ucs2'), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 3, 'utf8'), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 5, 'latin1'), -1); +assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 5, 'binary'), -1); +assert.strictEqual(b.lastIndexOf(Buffer.from('aaaaaaaaaaaaaaa'), 7), -1); + +// 你好 expands to a total of 6 bytes using UTF-8 and 4 bytes using UTF-16 +assert.strictEqual(buf_bc.lastIndexOf('你好', 'ucs2'), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 'utf8'), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 'latin1'), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 'binary'), -1); +assert.strictEqual(buf_bc.lastIndexOf(Buffer.from('你好')), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 2, 'ucs2'), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 3, 'utf8'), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 5, 'latin1'), -1); +assert.strictEqual(buf_bc.lastIndexOf('你好', 5, 'binary'), -1); +assert.strictEqual(buf_bc.lastIndexOf(Buffer.from('你好'), 7), -1); + +// Test lastIndexOf on a longer buffer: +var bufferString = new Buffer('a man a plan a canal panama'); +assert.equal(15, bufferString.lastIndexOf('canal')); +assert.equal(21, bufferString.lastIndexOf('panama')); +assert.equal(0, bufferString.lastIndexOf('a man a plan a canal panama')); +assert.equal(-1, bufferString.lastIndexOf('a man a plan a canal mexico')); +assert.equal(-1, bufferString.lastIndexOf('a man a plan a canal mexico city')); +assert.equal(-1, bufferString.lastIndexOf(Buffer.from('a'.repeat(1000)))); +assert.equal(0, bufferString.lastIndexOf('a man a plan', 4)); +assert.equal(13, bufferString.lastIndexOf('a ')); +assert.equal(13, bufferString.lastIndexOf('a ', 13)); +assert.equal(6, bufferString.lastIndexOf('a ', 12)); +assert.equal(0, bufferString.lastIndexOf('a ', 5)); +assert.equal(13, bufferString.lastIndexOf('a ', -1)); +assert.equal(0, bufferString.lastIndexOf('a ', -27)); +assert.equal(-1, bufferString.lastIndexOf('a ', -28)); + +// Test lastIndexOf for the case that the first character can be found, +// but in a part of the buffer that does not make search to search +// due do length constraints. +var abInUCS2 = Buffer.from('ab', 'ucs2'); +assert.strictEqual(-1, Buffer.from('µaaaa¶bbbb', 'latin1').lastIndexOf('µ')); +assert.strictEqual(-1, Buffer.from('µaaaa¶bbbb', 'binary').lastIndexOf('µ')); +assert.strictEqual(-1, Buffer.from('bc').lastIndexOf('ab')); +assert.strictEqual(-1, Buffer.from('abc').lastIndexOf('qa')); +assert.strictEqual(-1, Buffer.from('abcdef').lastIndexOf('qabc')); +assert.strictEqual(-1, Buffer.from('bc').lastIndexOf(Buffer.from('ab'))); +assert.strictEqual(-1, Buffer.from('bc', 'ucs2').lastIndexOf('ab', 'ucs2')); +assert.strictEqual(-1, Buffer.from('bc', 'ucs2').lastIndexOf(abInUCS2)); + +assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab')); +assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 1)); +assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 2)); +assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 3)); + +// The above tests test the LINEAR and SINGLE-CHAR strategies. +// Now, we test the BOYER-MOORE-HORSPOOL strategy. +// Test lastIndexOf on a long buffer w multiple matches: +pattern = 'JABACABADABACABA'; +assert.equal(1535, longBufferString.lastIndexOf(pattern)); +assert.equal(1535, longBufferString.lastIndexOf(pattern, 1535)); +assert.equal(511, longBufferString.lastIndexOf(pattern, 1534)); + +// Finally, give it a really long input to trigger fallback from BMH to +// regular BOYER-MOORE (which has better worst-case complexity). + +// Generate a really long Thue-Morse sequence of 'yolo' and 'swag', +// "yolo swag swag yolo swag yolo yolo swag" ..., goes on for about 5MB. +// This is hard to search because it all looks similar, but never repeats. + +// countBits returns the number of bits in the binary reprsentation of n. +function countBits(n) { + for (var count = 0; n > 0; count++) { + n = n & (n - 1); // remove top bit + } + return count; +} +var parts = []; +for (var i = 0; i < 1000000; i++) { + parts.push((countBits(i) % 2 === 0) ? 'yolo' : 'swag'); +} +var reallyLong = new Buffer(parts.join(' ')); +assert.equal('yolo swag swag yolo', reallyLong.slice(0, 19).toString()); + +// Expensive reverse searches. Stress test lastIndexOf: +pattern = reallyLong.slice(0, 100000); // First 1/50th of the pattern. +assert.equal(4751360, reallyLong.lastIndexOf(pattern)); +assert.equal(3932160, reallyLong.lastIndexOf(pattern, 4000000)); +assert.equal(2949120, reallyLong.lastIndexOf(pattern, 3000000)); +pattern = reallyLong.slice(100000, 200000); // Second 1/50th. +assert.equal(4728480, reallyLong.lastIndexOf(pattern)); +pattern = reallyLong.slice(0, 1000000); // First 1/5th. +assert.equal(3932160, reallyLong.lastIndexOf(pattern)); +pattern = reallyLong.slice(0, 2000000); // first 2/5ths. +assert.equal(0, reallyLong.lastIndexOf(pattern)); + +// test truncation of Number arguments to uint8 +{ + var buf = Buffer.from('this is a test'); + assert.strictEqual(buf.indexOf(0x6973), 3); + assert.strictEqual(buf.indexOf(0x697320), 4); + assert.strictEqual(buf.indexOf(0x69732069), 2); + assert.strictEqual(buf.indexOf(0x697374657374), 0); + assert.strictEqual(buf.indexOf(0x69737374), 0); + assert.strictEqual(buf.indexOf(0x69737465), 11); + assert.strictEqual(buf.indexOf(0x69737465), 11); + assert.strictEqual(buf.indexOf(-140), 0); + assert.strictEqual(buf.indexOf(-152), 1); + assert.strictEqual(buf.indexOf(0xff), -1); + assert.strictEqual(buf.indexOf(0xffff), -1); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js new file mode 100644 index 0000000..711d9f2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js @@ -0,0 +1,42 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); + + +function T(n) { + var ui8 = new Uint8Array(n); + Object.setPrototypeOf(ui8, T.prototype); + return ui8; +} +Object.setPrototypeOf(T.prototype, Buffer.prototype); +Object.setPrototypeOf(T, Buffer); + +T.prototype.sum = function sum() { + var cntr = 0; + for (var i = 0; i < this.length; i++) + cntr += this[i]; + return cntr; +}; + + +var vals = [new T(4), T(4)]; + +vals.forEach(function(t) { + assert.equal(t.constructor, T); + assert.equal(Object.getPrototypeOf(t), T.prototype); + assert.equal(Object.getPrototypeOf(Object.getPrototypeOf(t)), + Buffer.prototype); + + t.fill(5); + var cntr = 0; + for (var i = 0; i < t.length; i++) + cntr += t[i]; + assert.equal(t.length * 5, cntr); + + // Check this does not throw + t.toString(); +}); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js new file mode 100644 index 0000000..d0ed590 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js @@ -0,0 +1,41 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +var util = require('util'); + +var buffer = require('../../'); + +buffer.INSPECT_MAX_BYTES = 2; + +var b = Buffer.allocUnsafe(4); +b.fill('1234'); + +var s = buffer.SlowBuffer(4); +s.fill('1234'); + +var expected = ''; + +assert.strictEqual(util.inspect(b), expected); +assert.strictEqual(util.inspect(s), expected); + +b = Buffer.allocUnsafe(2); +b.fill('12'); + +s = buffer.SlowBuffer(2); +s.fill('12'); + +expected = ''; + +assert.strictEqual(util.inspect(b), expected); +assert.strictEqual(util.inspect(s), expected); + +buffer.INSPECT_MAX_BYTES = Infinity; + +assert.doesNotThrow(function() { + assert.strictEqual(util.inspect(b), expected); + assert.strictEqual(util.inspect(s), expected); +}); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js new file mode 100644 index 0000000..f27709f --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js @@ -0,0 +1,65 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + +var assert = require('assert'); + +var buffer = Buffer.from([1, 2, 3, 4, 5]); +var arr; +var b; + +// buffers should be iterable + +arr = []; + +for (b of buffer) + arr.push(b); + +assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); + + +// buffer iterators should be iterable + +arr = []; + +for (b of buffer[Symbol.iterator]()) + arr.push(b); + +assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); + + +// buffer#values() should return iterator for values + +arr = []; + +for (b of buffer.values()) + arr.push(b); + +assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); + + +// buffer#keys() should return iterator for keys + +arr = []; + +for (b of buffer.keys()) + arr.push(b); + +assert.deepStrictEqual(arr, [0, 1, 2, 3, 4]); + + +// buffer#entries() should return iterator for entries + +arr = []; + +for (b of buffer.entries()) + arr.push(b); + +assert.deepStrictEqual(arr, [ + [0, 1], + [1, 2], + [2, 3], + [3, 4], + [4, 5] +]); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js new file mode 100644 index 0000000..22ba29e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js @@ -0,0 +1,27 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); + +var safe = Buffer.alloc(10); + +function isZeroFilled(buf) { + for (var n = 0; n < buf.length; n++) + if (buf[n] !== 0) return false; + return true; +} + +assert(isZeroFilled(safe)); + +// Test that unsafe allocations doesn't affect subsequent safe allocations +Buffer.allocUnsafe(10); +assert(isZeroFilled(new Float64Array(10))); + +new Buffer(10); +assert(isZeroFilled(new Float64Array(10))); + +Buffer.allocUnsafe(10); +assert(isZeroFilled(Buffer.alloc(10))); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js new file mode 100644 index 0000000..65cea21 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js @@ -0,0 +1,63 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); +var buffer = require('../../'); +var Buffer = buffer.Buffer; +var SlowBuffer = buffer.SlowBuffer; + +var ones = [1, 1, 1, 1]; + +// should create a Buffer +var sb = SlowBuffer(4); +assert(sb instanceof Buffer); +assert.strictEqual(sb.length, 4); +sb.fill(1); +for (var [key, value] of sb.entries()) { + assert.deepStrictEqual(value, ones[key]); +} + +// underlying ArrayBuffer should have the same length +assert.strictEqual(sb.buffer.byteLength, 4); + +// should work without new +sb = SlowBuffer(4); +assert(sb instanceof Buffer); +assert.strictEqual(sb.length, 4); +sb.fill(1); +for (var [key, value] of sb.entries()) { + assert.deepStrictEqual(value, ones[key]); +} + +// should work with edge cases +assert.strictEqual(SlowBuffer(0).length, 0); +try { + assert.strictEqual( + SlowBuffer(buffer.kMaxLength).length, buffer.kMaxLength); +} catch (e) { + assert.equal(e.message, 'Array buffer allocation failed'); +} + +// should work with number-coercible values +assert.strictEqual(SlowBuffer('6').length, 6); +assert.strictEqual(SlowBuffer(true).length, 1); + +// should create zero-length buffer if parameter is not a number +assert.strictEqual(SlowBuffer().length, 0); +assert.strictEqual(SlowBuffer(NaN).length, 0); +assert.strictEqual(SlowBuffer({}).length, 0); +assert.strictEqual(SlowBuffer('string').length, 0); + +// should throw with invalid length +assert.throws(function() { + SlowBuffer(Infinity); +}, 'invalid Buffer length'); +assert.throws(function() { + SlowBuffer(-1); +}, 'invalid Buffer length'); +assert.throws(function() { + SlowBuffer(buffer.kMaxLength + 1); +}, 'invalid Buffer length'); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js new file mode 100644 index 0000000..2ec1a7a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js @@ -0,0 +1,141 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); + +// Test buffers small enough to use the JS implementation +var buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, + 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10]); + +assert.strictEqual(buf, buf.swap16()); +assert.deepStrictEqual(buf, Buffer.from([0x02, 0x01, 0x04, 0x03, 0x06, 0x05, + 0x08, 0x07, 0x0a, 0x09, 0x0c, 0x0b, + 0x0e, 0x0d, 0x10, 0x0f])); +buf.swap16(); // restore + +assert.strictEqual(buf, buf.swap32()); +assert.deepStrictEqual(buf, Buffer.from([0x04, 0x03, 0x02, 0x01, 0x08, 0x07, + 0x06, 0x05, 0x0c, 0x0b, 0x0a, 0x09, + 0x10, 0x0f, 0x0e, 0x0d])); +buf.swap32(); // restore + +assert.strictEqual(buf, buf.swap64()); +assert.deepStrictEqual(buf, Buffer.from([0x08, 0x07, 0x06, 0x05, 0x04, 0x03, + 0x02, 0x01, 0x10, 0x0f, 0x0e, 0x0d, + 0x0c, 0x0b, 0x0a, 0x09])); + +// Operates in-place +var buf3 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7]); +buf3.slice(1, 5).swap32(); +assert.deepStrictEqual(buf3, Buffer.from([0x1, 0x5, 0x4, 0x3, 0x2, 0x6, 0x7])); + +buf3.slice(1, 5).swap16(); +assert.deepStrictEqual(buf3, Buffer.from([0x1, 0x4, 0x5, 0x2, 0x3, 0x6, 0x7])); + +var buf3_64 = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, + 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10]); +buf3_64.slice(2, 18).swap64(); +assert.deepStrictEqual(buf3_64, Buffer.from([0x01, 0x02, 0x0a, 0x09, 0x08, 0x07, + 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, + 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, + 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, + 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, + 0x0f, 0x10])); + +// Force use of native code (Buffer size above threshold limit for js impl) +var buf4A = new Uint32Array(256).fill(0x04030201); +var buf4 = Buffer.from(buf4A.buffer, buf4A.byteOffset); +var buf5A = new Uint32Array(256).fill(0x03040102); +var buf5 = Buffer.from(buf5A.buffer, buf5A.byteOffset); + +buf4.swap16(); +assert.deepStrictEqual(buf4, buf5); + +var buf6A = new Uint32Array(256).fill(0x04030201); +var buf6 = Buffer.from(buf6A.buffer); +var bu7A = new Uint32Array(256).fill(0x01020304); +var buf7 = Buffer.from(bu7A.buffer, bu7A.byteOffset); + +buf6.swap32(); +assert.deepStrictEqual(buf6, buf7); + +var buf8A = new Uint8Array(256 * 8); +var buf9A = new Uint8Array(256 * 8); +for (var i = 0; i < buf8A.length; i++) { + buf8A[i] = i % 8; + buf9A[buf9A.length - i - 1] = i % 8; +} +var buf8 = Buffer.from(buf8A.buffer, buf8A.byteOffset); +var buf9 = Buffer.from(buf9A.buffer, buf9A.byteOffset); + +buf8.swap64(); +assert.deepStrictEqual(buf8, buf9); + +// Test native code with buffers that are not memory-aligned +var buf10A = new Uint8Array(256 * 8); +var buf11A = new Uint8Array(256 * 8 - 2); +for (var i = 0; i < buf10A.length; i++) { + buf10A[i] = i % 2; +} +for (var i = 1; i < buf11A.length; i++) { + buf11A[buf11A.length - i] = (i + 1) % 2; +} +var buf10 = Buffer.from(buf10A.buffer, buf10A.byteOffset); +// 0|1 0|1 0|1... +var buf11 = Buffer.from(buf11A.buffer, buf11A.byteOffset); +// 0|0 1|0 1|0... + +buf10.slice(1, buf10.length - 1).swap16(); +assert.deepStrictEqual(buf10.slice(0, buf11.length), buf11); + + +var buf12A = new Uint8Array(256 * 8); +var buf13A = new Uint8Array(256 * 8 - 4); +for (var i = 0; i < buf12A.length; i++) { + buf12A[i] = i % 4; +} +for (var i = 1; i < buf13A.length; i++) { + buf13A[buf13A.length - i] = (i + 1) % 4; +} +var buf12 = Buffer.from(buf12A.buffer, buf12A.byteOffset); +// 0|1 2 3 0|1 2 3... +var buf13 = Buffer.from(buf13A.buffer, buf13A.byteOffset); +// 0|0 3 2 1|0 3 2... + +buf12.slice(1, buf12.length - 3).swap32(); +assert.deepStrictEqual(buf12.slice(0, buf13.length), buf13); + + +var buf14A = new Uint8Array(256 * 8); +var buf15A = new Uint8Array(256 * 8 - 8); +for (var i = 0; i < buf14A.length; i++) { + buf14A[i] = i % 8; +} +for (var i = 1; i < buf15A.length; i++) { + buf15A[buf15A.length - i] = (i + 1) % 8; +} +var buf14 = Buffer.from(buf14A.buffer, buf14A.byteOffset); +// 0|1 2 3 4 5 6 7 0|1 2 3 4... +var buf15 = Buffer.from(buf15A.buffer, buf15A.byteOffset); +// 0|0 7 6 5 4 3 2 1|0 7 6 5... + +buf14.slice(1, buf14.length - 7).swap64(); +assert.deepStrictEqual(buf14.slice(0, buf15.length), buf15); + +// Length assertions +var re16 = /Buffer size must be a multiple of 16-bits/; +var re32 = /Buffer size must be a multiple of 32-bits/; +var re64 = /Buffer size must be a multiple of 64-bits/; + +assert.throws(() => Buffer.from(buf3).swap16(), re16); +assert.throws(() => Buffer.alloc(1025).swap16(), re16); +assert.throws(() => Buffer.from(buf3).swap32(), re32); +assert.throws(() => buf3.slice(1, 3).swap32(), re32); +assert.throws(() => Buffer.alloc(1025).swap32(), re32); +assert.throws(() => buf3.slice(1, 3).swap64(), re64); +assert.throws(() => Buffer.alloc(1025).swap64(), re64); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js new file mode 100644 index 0000000..744b334 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js @@ -0,0 +1,35 @@ +'use strict'; +var Buffer = require('../../').Buffer; + +// Flags: --zero-fill-buffers + +// when using --zero-fill-buffers, every Buffer and SlowBuffer +// instance must be zero filled upon creation + + +var SlowBuffer = require('../../').SlowBuffer; +var assert = require('assert'); + +function isZeroFilled(buf) { + for (var n = 0; n < buf.length; n++) + if (buf[n] > 0) return false; + return true; +} + +// This can be somewhat unreliable because the +// allocated memory might just already happen to +// contain all zeroes. The test is run multiple +// times to improve the reliability. +for (var i = 0; i < 50; i++) { + var bufs = [ + Buffer.alloc(20), + Buffer.allocUnsafe(20), + SlowBuffer(20), + Buffer(20), + new SlowBuffer(20) + ]; + for (var buf of bufs) { + assert(isZeroFilled(buf)); + } +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js new file mode 100644 index 0000000..b21a6b2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js @@ -0,0 +1,22 @@ +'use strict'; +var Buffer = require('../../').Buffer; + + + +var assert = require('assert'); + + +function testUint8Array(ui) { + var length = ui.length; + for (var i = 0; i < length; i++) + if (ui[i] !== 0) return false; + return true; +} + + +for (var i = 0; i < 100; i++) { + Buffer.alloc(0); + var ui = new Uint8Array(65); + assert.ok(testUint8Array(ui), 'Uint8Array is not zero-filled'); +} + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js new file mode 100644 index 0000000..2e94de2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js @@ -0,0 +1,1534 @@ +'use strict'; +var Buffer = require('../../').Buffer; + +var common = { skip: function () {} }; +var assert = require('assert'); + +var Buffer = require('../../').Buffer; +var SlowBuffer = require('../../').SlowBuffer; + +// counter to ensure unique value is always copied +var cntr = 0; + +var b = Buffer(1024); // safe constructor + +// console.log('b.length == %d', b.length); +assert.strictEqual(1024, b.length); + +b[0] = -1; +assert.strictEqual(b[0], 255); + +for (var i = 0; i < 1024; i++) { + b[i] = i % 256; +} + +for (var i = 0; i < 1024; i++) { + assert.strictEqual(i % 256, b[i]); +} + +var c = Buffer(512); +// console.log('c.length == %d', c.length); +assert.strictEqual(512, c.length); + +var d = new Buffer([]); +assert.strictEqual(0, d.length); + +var ui32 = new Uint32Array(4).fill(42); +var e = Buffer(ui32); +for (var [key, value] of e.entries()) { + assert.deepStrictEqual(value, ui32[key]); +} + +// First check Buffer#fill() works as expected. + +assert.throws(function() { + Buffer(8).fill('a', -1); +}); + +assert.throws(function() { + Buffer(8).fill('a', 0, 9); +}); + +// Make sure this doesn't hang indefinitely. +Buffer(8).fill(''); + +{ + var buf = new Buffer(64); + buf.fill(10); + for (var i = 0; i < buf.length; i++) + assert.equal(buf[i], 10); + + buf.fill(11, 0, buf.length >> 1); + for (var i = 0; i < buf.length >> 1; i++) + assert.equal(buf[i], 11); + for (var i = (buf.length >> 1) + 1; i < buf.length; i++) + assert.equal(buf[i], 10); + + buf.fill('h'); + for (var i = 0; i < buf.length; i++) + assert.equal('h'.charCodeAt(0), buf[i]); + + buf.fill(0); + for (var i = 0; i < buf.length; i++) + assert.equal(0, buf[i]); + + buf.fill(null); + for (var i = 0; i < buf.length; i++) + assert.equal(0, buf[i]); + + buf.fill(1, 16, 32); + for (var i = 0; i < 16; i++) + assert.equal(0, buf[i]); + for (var i = 16; i < 32; i++) + assert.equal(1, buf[i]); + for (var i = 32; i < buf.length; i++) + assert.equal(0, buf[i]); +} + +{ + var buf = new Buffer(10); + buf.fill('abc'); + assert.equal(buf.toString(), 'abcabcabca'); + buf.fill('Õ§'); + assert.equal(buf.toString(), 'Õ§Õ§Õ§Õ§Õ§'); +} + +{ + // copy 512 bytes, from 0 to 512. + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, 0, 512); +// console.log('copied %d bytes from b into c', copied); + assert.strictEqual(512, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +{ + // copy c into b, without specifying sourceEnd + b.fill(++cntr); + c.fill(++cntr); + var copied = c.copy(b, 0, 0); +// console.log('copied %d bytes from c into b w/o sourceEnd', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(c[i], b[i]); + } +} + +{ + // copy c into b, without specifying sourceStart + b.fill(++cntr); + c.fill(++cntr); + var copied = c.copy(b, 0); +// console.log('copied %d bytes from c into b w/o sourceStart', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(c[i], b[i]); + } +} + +{ + // copy longer buffer b to shorter c without targetStart + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c); +// console.log('copied %d bytes from b into c w/o targetStart', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +{ + // copy starting near end of b to c + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2)); +// console.log('copied %d bytes from end of b into beginning of c', copied); + assert.strictEqual(Math.floor(c.length / 2), copied); + for (var i = 0; i < Math.floor(c.length / 2); i++) { + assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]); + } + for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) { + assert.strictEqual(c[c.length - 1], c[i]); + } +} + +{ + // try to copy 513 bytes, and check we don't overrun c + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, 0, 513); +// console.log('copied %d bytes from b trying to overrun c', copied); + assert.strictEqual(c.length, copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +{ + // copy 768 bytes from b into b + b.fill(++cntr); + b.fill(++cntr, 256); + var copied = b.copy(b, 0, 256, 1024); +// console.log('copied %d bytes from b into b', copied); + assert.strictEqual(768, copied); + for (var i = 0; i < b.length; i++) { + assert.strictEqual(cntr, b[i]); + } +} + +// copy string longer than buffer length (failure will segfault) +var bb = Buffer(10); +bb.fill('hello crazy world'); + + +// try to copy from before the beginning of b +assert.doesNotThrow(() => { b.copy(c, 0, 100, 10); }); + +// copy throws at negative sourceStart +assert.throws(function() { + Buffer(5).copy(Buffer(5), 0, -1); +}, RangeError); + +{ + // check sourceEnd resets to targetEnd if former is greater than the latter + b.fill(++cntr); + c.fill(++cntr); + var copied = b.copy(c, 0, 0, 1025); +// console.log('copied %d bytes from b into c', copied); + for (var i = 0; i < c.length; i++) { + assert.strictEqual(b[i], c[i]); + } +} + +// throw with negative sourceEnd +// console.log('test copy at negative sourceEnd'); +assert.throws(function() { + b.copy(c, 0, 0, -1); +}, RangeError); + +// when sourceStart is greater than sourceEnd, zero copied +assert.equal(b.copy(c, 0, 100, 10), 0); + +// when targetStart > targetLength, zero copied +assert.equal(b.copy(c, 512, 0, 10), 0); + +var caught_error; + +// invalid encoding for Buffer.toString +caught_error = null; +try { + b.toString('invalid'); +} catch (err) { + caught_error = err; +} +assert.strictEqual('Unknown encoding: invalid', caught_error.message); + +// invalid encoding for Buffer.write +caught_error = null; +try { + b.write('test string', 0, 5, 'invalid'); +} catch (err) { + caught_error = err; +} +assert.strictEqual('Unknown encoding: invalid', caught_error.message); + +// try to create 0-length buffers +new Buffer(''); +new Buffer('', 'ascii'); +new Buffer('', 'latin1'); +new Buffer('', 'binary'); +Buffer(0); + +// try to write a 0-length string beyond the end of b +assert.throws(function() { + b.write('', 2048); +}, RangeError); + +// throw when writing to negative offset +assert.throws(function() { + b.write('a', -1); +}, RangeError); + +// throw when writing past bounds from the pool +assert.throws(function() { + b.write('a', 2048); +}, RangeError); + +// throw when writing to negative offset +assert.throws(function() { + b.write('a', -1); +}, RangeError); + +// try to copy 0 bytes worth of data into an empty buffer +b.copy(Buffer(0), 0, 0, 0); + +// try to copy 0 bytes past the end of the target buffer +b.copy(Buffer(0), 1, 1, 1); +b.copy(Buffer(1), 1, 1, 1); + +// try to copy 0 bytes from past the end of the source buffer +b.copy(Buffer(1), 0, 2048, 2048); + +var rangeBuffer = new Buffer('abc'); + +// if start >= buffer's length, empty string will be returned +assert.equal(rangeBuffer.toString('ascii', 3), ''); +assert.equal(rangeBuffer.toString('ascii', +Infinity), ''); +assert.equal(rangeBuffer.toString('ascii', 3.14, 3), ''); +assert.equal(rangeBuffer.toString('ascii', 'Infinity', 3), ''); + +// if end <= 0, empty string will be returned +assert.equal(rangeBuffer.toString('ascii', 1, 0), ''); +assert.equal(rangeBuffer.toString('ascii', 1, -1.2), ''); +assert.equal(rangeBuffer.toString('ascii', 1, -100), ''); +assert.equal(rangeBuffer.toString('ascii', 1, -Infinity), ''); + +// if start < 0, start will be taken as zero +assert.equal(rangeBuffer.toString('ascii', -1, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', -1.99, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', -Infinity, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); + +// if start is an invalid integer, start will be taken as zero +assert.equal(rangeBuffer.toString('ascii', 'node.js', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', {}, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', [], 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', NaN, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', null, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', undefined, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', false, 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '', 3), 'abc'); + +// but, if start is an integer when coerced, then it will be coerced and used. +assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '1', 3), 'bc'); +assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', '3', 3), ''); +assert.equal(rangeBuffer.toString('ascii', Number(3), 3), ''); +assert.equal(rangeBuffer.toString('ascii', '3.14', 3), ''); +assert.equal(rangeBuffer.toString('ascii', '1.99', 3), 'bc'); +assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 1.99, 3), 'bc'); +assert.equal(rangeBuffer.toString('ascii', true, 3), 'bc'); + +// if end > buffer's length, end will be taken as buffer's length +assert.equal(rangeBuffer.toString('ascii', 0, 5), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, 6.99), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, Infinity), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '5'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '6.99'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, 'Infinity'), 'abc'); + +// if end is an invalid integer, end will be taken as buffer's length +assert.equal(rangeBuffer.toString('ascii', 0, 'node.js'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, {}), ''); +assert.equal(rangeBuffer.toString('ascii', 0, NaN), ''); +assert.equal(rangeBuffer.toString('ascii', 0, undefined), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, null), ''); +assert.equal(rangeBuffer.toString('ascii', 0, []), ''); +assert.equal(rangeBuffer.toString('ascii', 0, false), ''); +assert.equal(rangeBuffer.toString('ascii', 0, ''), ''); + +// but, if end is an integer when coerced, then it will be coerced and used. +assert.equal(rangeBuffer.toString('ascii', 0, '-1'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, '1'), 'a'); +assert.equal(rangeBuffer.toString('ascii', 0, '-Infinity'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, '3'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, Number(3)), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '3.14'), 'abc'); +assert.equal(rangeBuffer.toString('ascii', 0, '1.99'), 'a'); +assert.equal(rangeBuffer.toString('ascii', 0, '-1.99'), ''); +assert.equal(rangeBuffer.toString('ascii', 0, 1.99), 'a'); +assert.equal(rangeBuffer.toString('ascii', 0, true), 'a'); + +// try toString() with a object as a encoding +assert.equal(rangeBuffer.toString({toString: function() { + return 'ascii'; +}}), 'abc'); + +// testing for smart defaults and ability to pass string values as offset +var writeTest = new Buffer('abcdes'); +writeTest.write('n', 'ascii'); +writeTest.write('o', '1', 'ascii'); +writeTest.write('d', '2', 'ascii'); +writeTest.write('e', 3, 'ascii'); +writeTest.write('j', 4, 'ascii'); +assert.equal(writeTest.toString(), 'nodejs'); + +// ASCII slice test +{ + var asciiString = 'hello world'; + + for (var i = 0; i < asciiString.length; i++) { + b[i] = asciiString.charCodeAt(i); + } + var asciiSlice = b.toString('ascii', 0, asciiString.length); + assert.equal(asciiString, asciiSlice); +} + +{ + var asciiString = 'hello world'; + var offset = 100; + + var written = b.write(asciiString, offset, 'ascii'); + assert.equal(asciiString.length, written); + var asciiSlice = b.toString('ascii', offset, offset + asciiString.length); + assert.equal(asciiString, asciiSlice); +} + +{ + var asciiString = 'hello world'; + var offset = 100; + + var sliceA = b.slice(offset, offset + asciiString.length); + var sliceB = b.slice(offset, offset + asciiString.length); + for (var i = 0; i < asciiString.length; i++) { + assert.equal(sliceA[i], sliceB[i]); + } +} + +// UTF-8 slice test + +var utf8String = '¡hέlló wôrld!'; +var offset = 100; + +b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8'); +var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String)); +assert.equal(utf8String, utf8Slice); + +var written = b.write(utf8String, offset, 'utf8'); +assert.equal(Buffer.byteLength(utf8String), written); +utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String)); +assert.equal(utf8String, utf8Slice); + +var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String)); +var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String)); +for (var i = 0; i < Buffer.byteLength(utf8String); i++) { + assert.equal(sliceA[i], sliceB[i]); +} + +{ + var slice = b.slice(100, 150); + assert.equal(50, slice.length); + for (var i = 0; i < 50; i++) { + assert.equal(b[100 + i], slice[i]); + } +} + +{ + // make sure only top level parent propagates from allocPool + var b = new Buffer(5); + var c = b.slice(0, 4); + var d = c.slice(0, 2); + assert.equal(b.parent, c.parent); + assert.equal(b.parent, d.parent); +} + +{ + // also from a non-pooled instance + var b = new SlowBuffer(5); + var c = b.slice(0, 4); + var d = c.slice(0, 2); + assert.equal(c.parent, d.parent); +} + +{ + // Bug regression test + var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語 + var buffer = new Buffer(32); + var size = buffer.write(testValue, 0, 'utf8'); +// console.log('bytes written to buffer: ' + size); + var slice = buffer.toString('utf8', 0, size); + assert.equal(slice, testValue); +} + +{ + // Test triple slice + var a = new Buffer(8); + for (var i = 0; i < 8; i++) a[i] = i; + var b = a.slice(4, 8); + assert.equal(4, b[0]); + assert.equal(5, b[1]); + assert.equal(6, b[2]); + assert.equal(7, b[3]); + var c = b.slice(2, 4); + assert.equal(6, c[0]); + assert.equal(7, c[1]); +} + +{ + var d = new Buffer([23, 42, 255]); + assert.equal(d.length, 3); + assert.equal(d[0], 23); + assert.equal(d[1], 42); + assert.equal(d[2], 255); + assert.deepStrictEqual(d, new Buffer(d)); +} + +{ + var e = new Buffer('über'); +// console.error('uber: \'%s\'', e.toString()); + assert.deepStrictEqual(e, new Buffer([195, 188, 98, 101, 114])); +} + +{ + var f = new Buffer('über', 'ascii'); +// console.error('f.length: %d (should be 4)', f.length); + assert.deepStrictEqual(f, new Buffer([252, 98, 101, 114])); +} + +['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + { + var f = new Buffer('über', encoding); +// console.error('f.length: %d (should be 8)', f.length); + assert.deepStrictEqual(f, new Buffer([252, 0, 98, 0, 101, 0, 114, 0])); + } + + { + var f = new Buffer('привет', encoding); +// console.error('f.length: %d (should be 12)', f.length); + var expected = new Buffer([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4]); + assert.deepStrictEqual(f, expected); + assert.equal(f.toString(encoding), 'привет'); + } + + { + var f = new Buffer([0, 0, 0, 0, 0]); + assert.equal(f.length, 5); + var size = f.write('ã‚ã„ã†ãˆãŠ', encoding); +// console.error('bytes written to buffer: %d (should be 4)', size); + assert.equal(size, 4); + assert.deepStrictEqual(f, new Buffer([0x42, 0x30, 0x44, 0x30, 0x00])); + } +}); + +{ + var f = new Buffer('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D) + assert.equal(f.length, 4); + assert.deepStrictEqual(f, new Buffer('3DD84DDC', 'hex')); +} + + +var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4}; +var g = new Buffer(arrayIsh); +assert.deepStrictEqual(g, new Buffer([0, 1, 2, 3])); +var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4}; +g = new Buffer(strArrayIsh); +assert.deepStrictEqual(g, new Buffer([0, 1, 2, 3])); + + +// +// Test toString('base64') +// +assert.equal('TWFu', (new Buffer('Man')).toString('base64')); + +{ + // test that regular and URL-safe base64 both work + var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]; + assert.deepStrictEqual(Buffer('//++/++/++//', 'base64'), Buffer(expected)); + assert.deepStrictEqual(Buffer('__--_--_--__', 'base64'), Buffer(expected)); +} + +{ + // big example + var quote = 'Man is distinguished, not only by his reason, but by this ' + + 'singular passion from other animals, which is a lust ' + + 'of the mind, that by a perseverance of delight in the ' + + 'continued and indefatigable generation of knowledge, ' + + 'exceeds the short vehemence of any carnal pleasure.'; + var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb' + + '24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci' + + 'BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQ' + + 'gYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' + + 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ' + + 'GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm' + + '5hbCBwbGVhc3VyZS4='; + assert.equal(expected, (new Buffer(quote)).toString('base64')); + + var b = new Buffer(1024); + var bytesWritten = b.write(expected, 0, 'base64'); + assert.equal(quote.length, bytesWritten); + assert.equal(quote, b.toString('ascii', 0, quote.length)); + + // check that the base64 decoder ignores whitespace + var expectedWhite = expected.slice(0, 60) + ' \n' + + expected.slice(60, 120) + ' \n' + + expected.slice(120, 180) + ' \n' + + expected.slice(180, 240) + ' \n' + + expected.slice(240, 300) + '\n' + + expected.slice(300, 360) + '\n'; + b = new Buffer(1024); + bytesWritten = b.write(expectedWhite, 0, 'base64'); + assert.equal(quote.length, bytesWritten); + assert.equal(quote, b.toString('ascii', 0, quote.length)); + + // check that the base64 decoder on the constructor works + // even in the presence of whitespace. + b = new Buffer(expectedWhite, 'base64'); + assert.equal(quote.length, b.length); + assert.equal(quote, b.toString('ascii', 0, quote.length)); + + // check that the base64 decoder ignores illegal chars + var expectedIllegal = expected.slice(0, 60) + ' \x80' + + expected.slice(60, 120) + ' \xff' + + expected.slice(120, 180) + ' \x00' + + expected.slice(180, 240) + ' \x98' + + expected.slice(240, 300) + '\x03' + + expected.slice(300, 360); + b = new Buffer(expectedIllegal, 'base64'); + assert.equal(quote.length, b.length); + assert.equal(quote, b.toString('ascii', 0, quote.length)); +} + +assert.equal(new Buffer('', 'base64').toString(), ''); +assert.equal(new Buffer('K', 'base64').toString(), ''); + +// multiple-of-4 with padding +assert.equal(new Buffer('Kg==', 'base64').toString(), '*'); +assert.equal(new Buffer('Kio=', 'base64').toString(), '**'); +assert.equal(new Buffer('Kioq', 'base64').toString(), '***'); +assert.equal(new Buffer('KioqKg==', 'base64').toString(), '****'); +assert.equal(new Buffer('KioqKio=', 'base64').toString(), '*****'); +assert.equal(new Buffer('KioqKioq', 'base64').toString(), '******'); +assert.equal(new Buffer('KioqKioqKg==', 'base64').toString(), '*******'); +assert.equal(new Buffer('KioqKioqKio=', 'base64').toString(), '********'); +assert.equal(new Buffer('KioqKioqKioq', 'base64').toString(), '*********'); +assert.equal(new Buffer('KioqKioqKioqKg==', 'base64').toString(), + '**********'); +assert.equal(new Buffer('KioqKioqKioqKio=', 'base64').toString(), + '***********'); +assert.equal(new Buffer('KioqKioqKioqKioq', 'base64').toString(), + '************'); +assert.equal(new Buffer('KioqKioqKioqKioqKg==', 'base64').toString(), + '*************'); +assert.equal(new Buffer('KioqKioqKioqKioqKio=', 'base64').toString(), + '**************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioq', 'base64').toString(), + '***************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKg==', 'base64').toString(), + '****************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKio=', 'base64').toString(), + '*****************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKioq', 'base64').toString(), + '******************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(), + '*******************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(), + '********************'); + +// no padding, not a multiple of 4 +assert.equal(new Buffer('Kg', 'base64').toString(), '*'); +assert.equal(new Buffer('Kio', 'base64').toString(), '**'); +assert.equal(new Buffer('KioqKg', 'base64').toString(), '****'); +assert.equal(new Buffer('KioqKio', 'base64').toString(), '*****'); +assert.equal(new Buffer('KioqKioqKg', 'base64').toString(), '*******'); +assert.equal(new Buffer('KioqKioqKio', 'base64').toString(), '********'); +assert.equal(new Buffer('KioqKioqKioqKg', 'base64').toString(), '**********'); +assert.equal(new Buffer('KioqKioqKioqKio', 'base64').toString(), '***********'); +assert.equal(new Buffer('KioqKioqKioqKioqKg', 'base64').toString(), + '*************'); +assert.equal(new Buffer('KioqKioqKioqKioqKio', 'base64').toString(), + '**************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKg', 'base64').toString(), + '****************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKio', 'base64').toString(), + '*****************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(), + '*******************'); +assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(), + '********************'); + +// handle padding graciously, multiple-of-4 or not +assert.equal( + new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==', 'base64').length, + 32 +); +assert.equal( + new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=', 'base64').length, + 32 +); +assert.equal( + new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw', 'base64').length, + 32 +); +assert.equal( + new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==', 'base64').length, + 31 +); +assert.equal( + new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=', 'base64').length, + 31 +); +assert.equal( + new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg', 'base64').length, + 31 +); + +// This string encodes single '.' character in UTF-16 +var dot = new Buffer('//4uAA==', 'base64'); +assert.equal(dot[0], 0xff); +assert.equal(dot[1], 0xfe); +assert.equal(dot[2], 0x2e); +assert.equal(dot[3], 0x00); +assert.equal(dot.toString('base64'), '//4uAA=='); + +{ + // Writing base64 at a position > 0 should not mangle the result. + // + // https://github.com/joyent/node/issues/402 + var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh']; + var b = new Buffer(64); + var pos = 0; + + for (var i = 0; i < segments.length; ++i) { + pos += b.write(segments[i], pos, 'base64'); + } + assert.equal(b.toString('latin1', 0, pos), 'Madness?! This is node.js!'); + assert.equal(b.toString('binary', 0, pos), 'Madness?! This is node.js!'); +} + +// Regression test for https://github.com/nodejs/node/issues/3496. +// assert.equal(Buffer('=bad'.repeat(1e4), 'base64').length, 0); + +{ + // Creating buffers larger than pool size. + var l = Buffer.poolSize + 5; + var s = 'h'.repeat(l); + + var b = new Buffer(s); + + for (var i = 0; i < l; i++) { + assert.equal('h'.charCodeAt(0), b[i]); + } + + var sb = b.toString(); + assert.equal(sb.length, s.length); + assert.equal(sb, s); +} + +{ + // Single argument slice + var b = new Buffer('abcde'); + assert.equal('bcde', b.slice(1).toString()); +} + +// slice(0,0).length === 0 +assert.equal(0, Buffer('hello').slice(0, 0).length); + +// test hex toString +// console.log('Create hex string from buffer'); +var hexb = new Buffer(256); +for (var i = 0; i < 256; i++) { + hexb[i] = i; +} +var hexStr = hexb.toString('hex'); +assert.equal(hexStr, + '000102030405060708090a0b0c0d0e0f' + + '101112131415161718191a1b1c1d1e1f' + + '202122232425262728292a2b2c2d2e2f' + + '303132333435363738393a3b3c3d3e3f' + + '404142434445464748494a4b4c4d4e4f' + + '505152535455565758595a5b5c5d5e5f' + + '606162636465666768696a6b6c6d6e6f' + + '707172737475767778797a7b7c7d7e7f' + + '808182838485868788898a8b8c8d8e8f' + + '909192939495969798999a9b9c9d9e9f' + + 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' + + 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + + 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + + 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + + 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + + 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); + +// console.log('Create buffer from hex string'); +var hexb2 = new Buffer(hexStr, 'hex'); +for (var i = 0; i < 256; i++) { + assert.equal(hexb2[i], hexb[i]); +} + +// Test single hex character throws TypeError +// - https://github.com/nodejs/node/issues/6770 +assert.throws(function() { + Buffer.from('A', 'hex'); +}, TypeError); + +// Test single base64 char encodes as 0 +// assert.strictEqual(Buffer.from('A', 'base64').length, 0); + +{ + // test an invalid slice end. +// console.log('Try to slice off the end of the buffer'); + var b = new Buffer([1, 2, 3, 4, 5]); + var b2 = b.toString('hex', 1, 10000); + var b3 = b.toString('hex', 1, 5); + var b4 = b.toString('hex', 1); + assert.equal(b2, b3); + assert.equal(b2, b4); +} + +function buildBuffer(data) { + if (Array.isArray(data)) { + var buffer = Buffer(data.length); + data.forEach(function(v, k) { + buffer[k] = v; + }); + return buffer; + } + return null; +} + +var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]); + +// console.log(x.inspect()); +assert.equal('', x.inspect()); + +{ + var z = x.slice(4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(5, z.length); + assert.equal(0x6f, z[0]); + assert.equal(0xa3, z[1]); + assert.equal(0x62, z[2]); + assert.equal(0x61, z[3]); + assert.equal(0x72, z[4]); +} + +{ + var z = x.slice(0); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(z.length, x.length); +} + +{ + var z = x.slice(0, 4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(4, z.length); + assert.equal(0x81, z[0]); + assert.equal(0xa3, z[1]); +} + +{ + var z = x.slice(0, 9); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(9, z.length); +} + +{ + var z = x.slice(1, 4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(3, z.length); + assert.equal(0xa3, z[0]); +} + +{ + var z = x.slice(2, 4); +// console.log(z.inspect()); +// console.log(z.length); + assert.equal(2, z.length); + assert.equal(0x66, z[0]); + assert.equal(0x6f, z[1]); +} + +assert.equal(0, Buffer('hello').slice(0, 0).length); + +['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + var b = new Buffer(10); + b.write('ã‚ã„ã†ãˆãŠ', encoding); + assert.equal(b.toString(encoding), 'ã‚ã„ã†ãˆãŠ'); +}); + +{ + // latin1 encoding should write only one byte per character. + var b = Buffer([0xde, 0xad, 0xbe, 0xef]); + var s = String.fromCharCode(0xffff); + b.write(s, 0, 'latin1'); + assert.equal(0xff, b[0]); + assert.equal(0xad, b[1]); + assert.equal(0xbe, b[2]); + assert.equal(0xef, b[3]); + s = String.fromCharCode(0xaaee); + b.write(s, 0, 'latin1'); + assert.equal(0xee, b[0]); + assert.equal(0xad, b[1]); + assert.equal(0xbe, b[2]); + assert.equal(0xef, b[3]); +} + +{ + // Binary encoding should write only one byte per character. + var b = Buffer([0xde, 0xad, 0xbe, 0xef]); + var s = String.fromCharCode(0xffff); + b.write(s, 0, 'binary'); + assert.equal(0xff, b[0]); + assert.equal(0xad, b[1]); + assert.equal(0xbe, b[2]); + assert.equal(0xef, b[3]); + s = String.fromCharCode(0xaaee); + b.write(s, 0, 'binary'); + assert.equal(0xee, b[0]); + assert.equal(0xad, b[1]); + assert.equal(0xbe, b[2]); + assert.equal(0xef, b[3]); +} + +{ + // #1210 Test UTF-8 string includes null character + var buf = new Buffer('\0'); + assert.equal(buf.length, 1); + buf = new Buffer('\0\0'); + assert.equal(buf.length, 2); +} + +{ + var buf = new Buffer(2); + var written = buf.write(''); // 0byte + assert.equal(written, 0); + written = buf.write('\0'); // 1byte (v8 adds null terminator) + assert.equal(written, 1); + written = buf.write('a\0'); // 1byte * 2 + assert.equal(written, 2); + written = buf.write('ã‚'); // 3bytes + assert.equal(written, 0); + written = buf.write('\0ã‚'); // 1byte + 3bytes + assert.equal(written, 1); + written = buf.write('\0\0ã‚'); // 1byte * 2 + 3bytes + assert.equal(written, 2); +} + +{ + var buf = new Buffer(10); + written = buf.write('ã‚ã„ã†'); // 3bytes * 3 (v8 adds null terminator) + assert.equal(written, 9); + written = buf.write('ã‚ã„ã†\0'); // 3bytes * 3 + 1byte + assert.equal(written, 10); +} + +{ + // #243 Test write() with maxLength + var buf = new Buffer(4); + buf.fill(0xFF); + var written = buf.write('abcd', 1, 2, 'utf8'); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0x61); + assert.equal(buf[2], 0x62); + assert.equal(buf[3], 0xFF); + + buf.fill(0xFF); + written = buf.write('abcd', 1, 4); +// console.log(buf); + assert.equal(written, 3); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0x61); + assert.equal(buf[2], 0x62); + assert.equal(buf[3], 0x63); + + buf.fill(0xFF); + written = buf.write('abcd', 1, 2, 'utf8'); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0x61); + assert.equal(buf[2], 0x62); + assert.equal(buf[3], 0xFF); + + buf.fill(0xFF); + written = buf.write('abcdef', 1, 2, 'hex'); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0xFF); + assert.equal(buf[1], 0xAB); + assert.equal(buf[2], 0xCD); + assert.equal(buf[3], 0xFF); + + ['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { + buf.fill(0xFF); + written = buf.write('abcd', 0, 2, encoding); +// console.log(buf); + assert.equal(written, 2); + assert.equal(buf[0], 0x61); + assert.equal(buf[1], 0x00); + assert.equal(buf[2], 0xFF); + assert.equal(buf[3], 0xFF); + }); +} + +{ + // test offset returns are correct + var b = new Buffer(16); + assert.equal(4, b.writeUInt32LE(0, 0)); + assert.equal(6, b.writeUInt16LE(0, 4)); + assert.equal(7, b.writeUInt8(0, 6)); + assert.equal(8, b.writeInt8(0, 7)); + assert.equal(16, b.writeDoubleLE(0, 8)); +} + +{ + // test unmatched surrogates not producing invalid utf8 output + // ef bf bd = utf-8 representation of unicode replacement character + // see https://codereview.chromium.org/121173009/ + var buf = new Buffer('ab\ud800cd', 'utf8'); + assert.equal(buf[0], 0x61); + assert.equal(buf[1], 0x62); + assert.equal(buf[2], 0xef); + assert.equal(buf[3], 0xbf); + assert.equal(buf[4], 0xbd); + assert.equal(buf[5], 0x63); + assert.equal(buf[6], 0x64); +} + +{ + // test for buffer overrun + var buf = new Buffer([0, 0, 0, 0, 0]); // length: 5 + var sub = buf.slice(0, 4); // length: 4 + written = sub.write('12345', 'latin1'); + assert.equal(written, 4); + assert.equal(buf[4], 0); + written = sub.write('12345', 'binary'); + assert.equal(written, 4); + assert.equal(buf[4], 0); +} + +// Check for fractional length args, junk length args, etc. +// https://github.com/joyent/node/issues/1758 + +// Call .fill() first, stops valgrind warning about uninitialized memory reads. +Buffer(3.3).fill().toString(); // throws bad argument error in commit 43cb4ec +assert.equal(Buffer(NaN).length, 0); +assert.equal(Buffer(3.3).length, 3); +assert.equal(Buffer({length: 3.3}).length, 3); +assert.equal(Buffer({length: 'BAM'}).length, 0); + +// Make sure that strings are not coerced to numbers. +assert.equal(Buffer('99').length, 2); +assert.equal(Buffer('13.37').length, 5); + +// Ensure that the length argument is respected. +'ascii utf8 hex base64 latin1 binary'.split(' ').forEach(function(enc) { + assert.equal(Buffer(1).write('aaaaaa', 0, 1, enc), 1); +}); + +{ + // Regression test, guard against buffer overrun in the base64 decoder. + var a = Buffer(3); + var b = Buffer('xxx'); + a.write('aaaaaaaa', 'base64'); + assert.equal(b.toString(), 'xxx'); +} + +// issue GH-3416 +Buffer(Buffer(0), 0, 0); + +[ 'hex', + 'utf8', + 'utf-8', + 'ascii', + 'latin1', + 'binary', + 'base64', + 'ucs2', + 'ucs-2', + 'utf16le', + 'utf-16le' ].forEach(function(enc) { + assert.equal(Buffer.isEncoding(enc), true); + }); + +[ 'utf9', + 'utf-7', + 'Unicode-FTW', + 'new gnu gun' ].forEach(function(enc) { + assert.equal(Buffer.isEncoding(enc), false); + }); + + +// GH-5110 +{ + var buffer = new Buffer('test'); + var string = JSON.stringify(buffer); + + assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}'); + + assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) { + return value && value.type === 'Buffer' + ? new Buffer(value.data) + : value; + })); +} + +// issue GH-7849 +{ + var buf = new Buffer('test'); + var json = JSON.stringify(buf); + var obj = JSON.parse(json); + var copy = new Buffer(obj); + + assert(buf.equals(copy)); +} + +// issue GH-4331 +assert.throws(function() { + Buffer(0xFFFFFFFF); +}, RangeError); +assert.throws(function() { + Buffer(0xFFFFFFFFF); +}, RangeError); + +// issue GH-5587 +assert.throws(function() { + var buf = new Buffer(8); + buf.writeFloatLE(0, 5); +}, RangeError); +assert.throws(function() { + var buf = new Buffer(16); + buf.writeDoubleLE(0, 9); +}, RangeError); + + +// attempt to overflow buffers, similar to previous bug in array buffers +assert.throws(function() { + var buf = Buffer(8); + buf.readFloatLE(0xffffffff); +}, RangeError); + +assert.throws(function() { + var buf = Buffer(8); + buf.writeFloatLE(0.0, 0xffffffff); +}, RangeError); + +assert.throws(function() { + var buf = Buffer(8); + buf.readFloatLE(0xffffffff); +}, RangeError); + +assert.throws(function() { + var buf = Buffer(8); + buf.writeFloatLE(0.0, 0xffffffff); +}, RangeError); + + +// ensure negative values can't get past offset +assert.throws(function() { + var buf = Buffer(8); + buf.readFloatLE(-1); +}, RangeError); + +assert.throws(function() { + var buf = Buffer(8); + buf.writeFloatLE(0.0, -1); +}, RangeError); + +assert.throws(function() { + var buf = Buffer(8); + buf.readFloatLE(-1); +}, RangeError); + +assert.throws(function() { + var buf = Buffer(8); + buf.writeFloatLE(0.0, -1); +}, RangeError); + +// offset checks +{ + var buf = new Buffer(0); + + assert.throws(function() { buf.readUInt8(0); }, RangeError); + assert.throws(function() { buf.readInt8(0); }, RangeError); +} + +{ + var buf = new Buffer([0xFF]); + + assert.equal(buf.readUInt8(0), 255); + assert.equal(buf.readInt8(0), -1); +} + +[16, 32].forEach(function(bits) { + var buf = new Buffer(bits / 8 - 1); + + assert.throws(function() { buf['readUInt' + bits + 'BE'](0); }, + RangeError, + 'readUInt' + bits + 'BE'); + + assert.throws(function() { buf['readUInt' + bits + 'LE'](0); }, + RangeError, + 'readUInt' + bits + 'LE'); + + assert.throws(function() { buf['readInt' + bits + 'BE'](0); }, + RangeError, + 'readInt' + bits + 'BE()'); + + assert.throws(function() { buf['readInt' + bits + 'LE'](0); }, + RangeError, + 'readInt' + bits + 'LE()'); +}); + +[16, 32].forEach(function(bits) { + var buf = new Buffer([0xFF, 0xFF, 0xFF, 0xFF]); + + assert.equal(buf['readUInt' + bits + 'BE'](0), + (0xFFFFFFFF >>> (32 - bits))); + + assert.equal(buf['readUInt' + bits + 'LE'](0), + (0xFFFFFFFF >>> (32 - bits))); + + assert.equal(buf['readInt' + bits + 'BE'](0), + (0xFFFFFFFF >> (32 - bits))); + + assert.equal(buf['readInt' + bits + 'LE'](0), + (0xFFFFFFFF >> (32 - bits))); +}); + +// test for common read(U)IntLE/BE +{ + var buf = new Buffer([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]); + + assert.strictEqual(buf.readUIntLE(0, 1), 0x01); + assert.strictEqual(buf.readUIntBE(0, 1), 0x01); + assert.strictEqual(buf.readUIntLE(0, 3), 0x030201); + assert.strictEqual(buf.readUIntBE(0, 3), 0x010203); + assert.strictEqual(buf.readUIntLE(0, 5), 0x0504030201); + assert.strictEqual(buf.readUIntBE(0, 5), 0x0102030405); + assert.strictEqual(buf.readUIntLE(0, 6), 0x060504030201); + assert.strictEqual(buf.readUIntBE(0, 6), 0x010203040506); + assert.strictEqual(buf.readIntLE(0, 1), 0x01); + assert.strictEqual(buf.readIntBE(0, 1), 0x01); + assert.strictEqual(buf.readIntLE(0, 3), 0x030201); + assert.strictEqual(buf.readIntBE(0, 3), 0x010203); + assert.strictEqual(buf.readIntLE(0, 5), 0x0504030201); + assert.strictEqual(buf.readIntBE(0, 5), 0x0102030405); + assert.strictEqual(buf.readIntLE(0, 6), 0x060504030201); + assert.strictEqual(buf.readIntBE(0, 6), 0x010203040506); +} + +// test for common write(U)IntLE/BE +{ + var buf = Buffer(3); + buf.writeUIntLE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); + assert.equal(buf.readUIntLE(0, 3), 0x123456); + + buf = Buffer(3); + buf.writeUIntBE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); + assert.equal(buf.readUIntBE(0, 3), 0x123456); + + buf = Buffer(3); + buf.writeIntLE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); + assert.equal(buf.readIntLE(0, 3), 0x123456); + + buf = Buffer(3); + buf.writeIntBE(0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); + assert.equal(buf.readIntBE(0, 3), 0x123456); + + buf = Buffer(3); + buf.writeIntLE(-0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]); + assert.equal(buf.readIntLE(0, 3), -0x123456); + + buf = Buffer(3); + buf.writeIntBE(-0x123456, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]); + assert.equal(buf.readIntBE(0, 3), -0x123456); + + buf = Buffer(3); + buf.writeIntLE(-0x123400, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x00, 0xcc, 0xed]); + assert.equal(buf.readIntLE(0, 3), -0x123400); + + buf = Buffer(3); + buf.writeIntBE(-0x123400, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcc, 0x00]); + assert.equal(buf.readIntBE(0, 3), -0x123400); + + buf = Buffer(3); + buf.writeIntLE(-0x120000, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0xee]); + assert.equal(buf.readIntLE(0, 3), -0x120000); + + buf = Buffer(3); + buf.writeIntBE(-0x120000, 0, 3); + assert.deepStrictEqual(buf.toJSON().data, [0xee, 0x00, 0x00]); + assert.equal(buf.readIntBE(0, 3), -0x120000); + + buf = Buffer(5); + buf.writeUIntLE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); + assert.equal(buf.readUIntLE(0, 5), 0x1234567890); + + buf = Buffer(5); + buf.writeUIntBE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); + assert.equal(buf.readUIntBE(0, 5), 0x1234567890); + + buf = Buffer(5); + buf.writeIntLE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); + assert.equal(buf.readIntLE(0, 5), 0x1234567890); + + buf = Buffer(5); + buf.writeIntBE(0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); + assert.equal(buf.readIntBE(0, 5), 0x1234567890); + + buf = Buffer(5); + buf.writeIntLE(-0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]); + assert.equal(buf.readIntLE(0, 5), -0x1234567890); + + buf = Buffer(5); + buf.writeIntBE(-0x1234567890, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]); + assert.equal(buf.readIntBE(0, 5), -0x1234567890); + + buf = Buffer(5); + buf.writeIntLE(-0x0012000000, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0x00, 0xee, 0xff]); + assert.equal(buf.readIntLE(0, 5), -0x0012000000); + + buf = Buffer(5); + buf.writeIntBE(-0x0012000000, 0, 5); + assert.deepStrictEqual(buf.toJSON().data, [0xff, 0xee, 0x00, 0x00, 0x00]); + assert.equal(buf.readIntBE(0, 5), -0x0012000000); +} + +// test Buffer slice +{ + var buf = new Buffer('0123456789'); + assert.equal(buf.slice(-10, 10), '0123456789'); + assert.equal(buf.slice(-20, 10), '0123456789'); + assert.equal(buf.slice(-20, -10), ''); + assert.equal(buf.slice(), '0123456789'); + assert.equal(buf.slice(0), '0123456789'); + assert.equal(buf.slice(0, 0), ''); + assert.equal(buf.slice(undefined), '0123456789'); + assert.equal(buf.slice('foobar'), '0123456789'); + assert.equal(buf.slice(undefined, undefined), '0123456789'); + + assert.equal(buf.slice(2), '23456789'); + assert.equal(buf.slice(5), '56789'); + assert.equal(buf.slice(10), ''); + assert.equal(buf.slice(5, 8), '567'); + assert.equal(buf.slice(8, -1), '8'); + assert.equal(buf.slice(-10), '0123456789'); + assert.equal(buf.slice(0, -9), '0'); + assert.equal(buf.slice(0, -10), ''); + assert.equal(buf.slice(0, -1), '012345678'); + assert.equal(buf.slice(2, -2), '234567'); + assert.equal(buf.slice(0, 65536), '0123456789'); + assert.equal(buf.slice(65536, 0), ''); + assert.equal(buf.slice(-5, -8), ''); + assert.equal(buf.slice(-5, -3), '56'); + assert.equal(buf.slice(-10, 10), '0123456789'); + for (var i = 0, s = buf.toString(); i < buf.length; ++i) { + assert.equal(buf.slice(i), s.slice(i)); + assert.equal(buf.slice(0, i), s.slice(0, i)); + assert.equal(buf.slice(-i), s.slice(-i)); + assert.equal(buf.slice(0, -i), s.slice(0, -i)); + } + + var utf16Buf = new Buffer('0123456789', 'utf16le'); + assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer('012', 'utf16le')); + + assert.equal(buf.slice('0', '1'), '0'); + assert.equal(buf.slice('-5', '10'), '56789'); + assert.equal(buf.slice('-10', '10'), '0123456789'); + assert.equal(buf.slice('-10', '-5'), '01234'); + assert.equal(buf.slice('-10', '-0'), ''); + assert.equal(buf.slice('111'), ''); + assert.equal(buf.slice('0', '-111'), ''); + + // try to slice a zero length Buffer + // see https://github.com/joyent/node/issues/5881 + SlowBuffer(0).slice(0, 1); +} + +// Regression test for #5482: should throw but not assert in C++ land. +assert.throws(function() { + Buffer('', 'buffer'); +}, TypeError); + +// Regression test for #6111. Constructing a buffer from another buffer +// should a) work, and b) not corrupt the source buffer. +{ + var a = [0]; + for (var i = 0; i < 7; ++i) a = a.concat(a); + a = a.map(function(_, i) { return i; }); + var b = Buffer(a); + var c = Buffer(b); + assert.strictEqual(b.length, a.length); + assert.strictEqual(c.length, a.length); + for (var i = 0, k = a.length; i < k; ++i) { + assert.strictEqual(a[i], i); + assert.strictEqual(b[i], i); + assert.strictEqual(c[i], i); + } +} + + +assert.throws(function() { + new Buffer((-1 >>> 0) + 1); +}, RangeError); + +assert.throws(function() { + SlowBuffer((-1 >>> 0) + 1); +}, RangeError); + +if (common.hasCrypto) { + // Test truncation after decode + // var crypto = require('crypto'); + + var b1 = new Buffer('YW55=======', 'base64'); + var b2 = new Buffer('YW55', 'base64'); + + assert.equal( + 1 /*crypto.createHash('sha1').update(b1).digest('hex')*/, + 1 /*crypto.createHash('sha1').update(b2).digest('hex')*/ + ); +} else { + common.skip('missing crypto'); +} + +// Test Compare +{ + var b = new Buffer(1).fill('a'); + var c = new Buffer(1).fill('c'); + var d = new Buffer(2).fill('aa'); + + assert.equal(b.compare(c), -1); + assert.equal(c.compare(d), 1); + assert.equal(d.compare(b), 1); + assert.equal(b.compare(d), -1); + assert.equal(b.compare(b), 0); + + assert.equal(Buffer.compare(b, c), -1); + assert.equal(Buffer.compare(c, d), 1); + assert.equal(Buffer.compare(d, b), 1); + assert.equal(Buffer.compare(b, d), -1); + assert.equal(Buffer.compare(c, c), 0); + + assert.equal(Buffer.compare(Buffer(0), Buffer(0)), 0); + assert.equal(Buffer.compare(Buffer(0), Buffer(1)), -1); + assert.equal(Buffer.compare(Buffer(1), Buffer(0)), 1); +} + +assert.throws(function() { + var b = Buffer(1); + Buffer.compare(b, 'abc'); +}); + +assert.throws(function() { + var b = Buffer(1); + Buffer.compare('abc', b); +}); + +assert.throws(function() { + var b = Buffer(1); + b.compare('abc'); +}); + +// Test Equals +{ + var b = new Buffer(5).fill('abcdf'); + var c = new Buffer(5).fill('abcdf'); + var d = new Buffer(5).fill('abcde'); + var e = new Buffer(6).fill('abcdef'); + + assert.ok(b.equals(c)); + assert.ok(!c.equals(d)); + assert.ok(!d.equals(e)); + assert.ok(d.equals(d)); +} + +assert.throws(function() { + var b = Buffer(1); + b.equals('abc'); +}); + +// Regression test for https://github.com/nodejs/node/issues/649. +assert.throws(function() { Buffer(1422561062959).toString('utf8'); }); + +var ps = Buffer.poolSize; +Buffer.poolSize = 0; +assert.equal(Buffer(1).parent, undefined); +Buffer.poolSize = ps; + +// Test Buffer.copy() segfault +assert.throws(function() { + Buffer(10).copy(); +}); + +var regErrorMsg = new RegExp('First argument must be a string, Buffer, ' + + 'ArrayBuffer, Array, or array-like object.'); + +assert.throws(function() { + new Buffer(); +}, regErrorMsg); + +assert.throws(function() { + new Buffer(null); +}, regErrorMsg); + + +// Test prototype getters don't throw +assert.equal(Buffer.prototype.parent, undefined); +assert.equal(Buffer.prototype.offset, undefined); +assert.equal(SlowBuffer.prototype.parent, undefined); +assert.equal(SlowBuffer.prototype.offset, undefined); + +{ + // Test that large negative Buffer length inputs don't affect the pool offset. + // Use the fromArrayLike() variant here because it's more lenient + // about its input and passes the length directly to allocate(). + assert.deepStrictEqual(Buffer({ length: -Buffer.poolSize }), Buffer.from('')); + assert.deepStrictEqual(Buffer({ length: -100 }), Buffer.from('')); + + // Check pool offset after that by trying to write string into the pool. + assert.doesNotThrow(() => Buffer.from('abc')); +} + + +// Test failed or zero-sized Buffer allocations not affecting typed arrays +{ + var zeroArray = new Uint32Array(10).fill(0); + var sizes = [1e10, 0, 0.1, -1, 'a', undefined, null, NaN]; + var allocators = [ + Buffer, + SlowBuffer, + Buffer.alloc, + Buffer.allocUnsafe, + Buffer.allocUnsafeSlow + ]; + for (var allocator of allocators) { + for (var size of sizes) { + try { + allocator(size); + } catch (e) { + assert.deepStrictEqual(new Uint32Array(10), zeroArray); + } + } + } +} + +// Test that large negative Buffer length inputs throw errors. +assert.throws(() => Buffer(-Buffer.poolSize), + '"size" argument must not be negative'); +assert.throws(() => Buffer(-100), + '"size" argument must not be negative'); +assert.throws(() => Buffer(-1), + '"size" argument must not be negative'); + diff --git a/node_modules/aws-sdk/node_modules/buffer/test/slice.js b/node_modules/aws-sdk/node_modules/buffer/test/slice.js new file mode 100644 index 0000000..25c111c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/slice.js @@ -0,0 +1,37 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('modifying buffer created by .slice() modifies original memory', function (t) { + if (!B.TYPED_ARRAY_SUPPORT) return t.end() + + var buf1 = new B(26) + for (var i = 0; i < 26; i++) { + buf1[i] = i + 97 // 97 is ASCII a + } + + var buf2 = buf1.slice(0, 3) + t.equal(buf2.toString('ascii', 0, buf2.length), 'abc') + + buf2[0] = '!'.charCodeAt(0) + t.equal(buf1.toString('ascii', 0, buf2.length), '!bc') + + t.end() +}) + +test('modifying parent buffer modifies .slice() buffer\'s memory', function (t) { + if (!B.TYPED_ARRAY_SUPPORT) return t.end() + + var buf1 = new B(26) + for (var i = 0; i < 26; i++) { + buf1[i] = i + 97 // 97 is ASCII a + } + + var buf2 = buf1.slice(0, 3) + t.equal(buf2.toString('ascii', 0, buf2.length), 'abc') + + buf1[0] = '!'.charCodeAt(0) + t.equal(buf2.toString('ascii', 0, buf2.length), '!bc') + + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/static.js b/node_modules/aws-sdk/node_modules/buffer/test/static.js new file mode 100644 index 0000000..4de900b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/static.js @@ -0,0 +1,17 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('Buffer.isEncoding', function (t) { + t.equal(B.isEncoding('HEX'), true) + t.equal(B.isEncoding('hex'), true) + t.equal(B.isEncoding('bad'), false) + t.end() +}) + +test('Buffer.isBuffer', function (t) { + t.equal(B.isBuffer(new B('hey', 'utf8')), true) + t.equal(B.isBuffer(new B([1, 2, 3], 'utf8')), true) + t.equal(B.isBuffer('hey'), false) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/to-string.js b/node_modules/aws-sdk/node_modules/buffer/test/to-string.js new file mode 100644 index 0000000..2950d4d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/to-string.js @@ -0,0 +1,233 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('utf8 buffer to base64', function (t) { + t.equal( + new B('Õ×ab', 'utf8').toString('base64'), + '1YHXkGFi' + ) + t.end() +}) + +test('utf8 buffer to hex', function (t) { + t.equal( + new B('Õ×ab', 'utf8').toString('hex'), + 'd581d7906162' + ) + t.end() +}) + +test('utf8 to utf8', function (t) { + t.equal( + new B('öäüõÖÄÜÕ', 'utf8').toString('utf8'), + 'öäüõÖÄÜÕ' + ) + t.end() +}) + +test('utf16le to utf16', function (t) { + t.equal( + new B(new B('abcd', 'utf8').toString('utf16le'), 'utf16le').toString('utf8'), + 'abcd' + ) + t.end() +}) + +test('utf16le to hex', function (t) { + t.equal( + new B('abcd', 'utf16le').toString('hex'), + '6100620063006400' + ) + t.end() +}) + +test('ascii buffer to base64', function (t) { + t.equal( + new B('123456!@#$%^', 'ascii').toString('base64'), + 'MTIzNDU2IUAjJCVe' + ) + t.end() +}) + +test('ascii buffer to hex', function (t) { + t.equal( + new B('123456!@#$%^', 'ascii').toString('hex'), + '31323334353621402324255e' + ) + t.end() +}) + +test('base64 buffer to utf8', function (t) { + t.equal( + new B('1YHXkGFi', 'base64').toString('utf8'), + 'Õ×ab' + ) + t.end() +}) + +test('hex buffer to utf8', function (t) { + t.equal( + new B('d581d7906162', 'hex').toString('utf8'), + 'Õ×ab' + ) + t.end() +}) + +test('base64 buffer to ascii', function (t) { + t.equal( + new B('MTIzNDU2IUAjJCVe', 'base64').toString('ascii'), + '123456!@#$%^' + ) + t.end() +}) + +test('hex buffer to ascii', function (t) { + t.equal( + new B('31323334353621402324255e', 'hex').toString('ascii'), + '123456!@#$%^' + ) + t.end() +}) + +test('base64 buffer to binary', function (t) { + t.equal( + new B('MTIzNDU2IUAjJCVe', 'base64').toString('binary'), + '123456!@#$%^' + ) + t.end() +}) + +test('hex buffer to binary', function (t) { + t.equal( + new B('31323334353621402324255e', 'hex').toString('binary'), + '123456!@#$%^' + ) + t.end() +}) + +test('utf8 to binary', function (t) { + /* jshint -W100 */ + t.equal( + new B('öäüõÖÄÜÕ', 'utf8').toString('binary'), + 'öäüõÖÄÜÕ' + ) + /* jshint +W100 */ + t.end() +}) + +test('utf8 replacement chars (1 byte sequence)', function (t) { + t.equal( + new B([ 0x80 ]).toString(), + '\uFFFD' + ) + t.equal( + new B([ 0x7F ]).toString(), + '\u007F' + ) + t.end() +}) + +test('utf8 replacement chars (2 byte sequences)', function (t) { + t.equal( + new B([ 0xC7 ]).toString(), + '\uFFFD' + ) + t.equal( + new B([ 0xC7, 0xB1 ]).toString(), + '\u01F1' + ) + t.equal( + new B([ 0xC0, 0xB1 ]).toString(), + '\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xC1, 0xB1 ]).toString(), + '\uFFFD\uFFFD' + ) + t.end() +}) + +test('utf8 replacement chars (3 byte sequences)', function (t) { + t.equal( + new B([ 0xE0 ]).toString(), + '\uFFFD' + ) + t.equal( + new B([ 0xE0, 0xAC ]).toString(), + '\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xE0, 0xAC, 0xB9 ]).toString(), + '\u0B39' + ) + t.end() +}) + +test('utf8 replacement chars (4 byte sequences)', function (t) { + t.equal( + new B([ 0xF4 ]).toString(), + '\uFFFD' + ) + t.equal( + new B([ 0xF4, 0x8F ]).toString(), + '\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xF4, 0x8F, 0x80 ]).toString(), + '\uFFFD\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xF4, 0x8F, 0x80, 0x84 ]).toString(), + '\uDBFC\uDC04' + ) + t.equal( + new B([ 0xFF ]).toString(), + '\uFFFD' + ) + t.equal( + new B([ 0xFF, 0x8F, 0x80, 0x84 ]).toString(), + '\uFFFD\uFFFD\uFFFD\uFFFD' + ) + t.end() +}) + +test('utf8 replacement chars on 256 random bytes', function (t) { + t.equal( + new B([ 152, 130, 206, 23, 243, 238, 197, 44, 27, 86, 208, 36, 163, 184, 164, 21, 94, 242, 178, 46, 25, 26, 253, 178, 72, 147, 207, 112, 236, 68, 179, 190, 29, 83, 239, 147, 125, 55, 143, 19, 157, 68, 157, 58, 212, 224, 150, 39, 128, 24, 94, 225, 120, 121, 75, 192, 112, 19, 184, 142, 203, 36, 43, 85, 26, 147, 227, 139, 242, 186, 57, 78, 11, 102, 136, 117, 180, 210, 241, 92, 3, 215, 54, 167, 249, 1, 44, 225, 146, 86, 2, 42, 68, 21, 47, 238, 204, 153, 216, 252, 183, 66, 222, 255, 15, 202, 16, 51, 134, 1, 17, 19, 209, 76, 238, 38, 76, 19, 7, 103, 249, 5, 107, 137, 64, 62, 170, 57, 16, 85, 179, 193, 97, 86, 166, 196, 36, 148, 138, 193, 210, 69, 187, 38, 242, 97, 195, 219, 252, 244, 38, 1, 197, 18, 31, 246, 53, 47, 134, 52, 105, 72, 43, 239, 128, 203, 73, 93, 199, 75, 222, 220, 166, 34, 63, 236, 11, 212, 76, 243, 171, 110, 78, 39, 205, 204, 6, 177, 233, 212, 243, 0, 33, 41, 122, 118, 92, 252, 0, 157, 108, 120, 70, 137, 100, 223, 243, 171, 232, 66, 126, 111, 142, 33, 3, 39, 117, 27, 107, 54, 1, 217, 227, 132, 13, 166, 3, 73, 53, 127, 225, 236, 134, 219, 98, 214, 125, 148, 24, 64, 142, 111, 231, 194, 42, 150, 185, 10, 182, 163, 244, 19, 4, 59, 135, 16 ]).toString(), + '\uFFFD\uFFFD\uFFFD\u0017\uFFFD\uFFFD\uFFFD\u002C\u001B\u0056\uFFFD\u0024\uFFFD\uFFFD\uFFFD\u0015\u005E\uFFFD\uFFFD\u002E\u0019\u001A\uFFFD\uFFFD\u0048\uFFFD\uFFFD\u0070\uFFFD\u0044\uFFFD\uFFFD\u001D\u0053\uFFFD\uFFFD\u007D\u0037\uFFFD\u0013\uFFFD\u0044\uFFFD\u003A\uFFFD\uFFFD\uFFFD\u0027\uFFFD\u0018\u005E\uFFFD\u0078\u0079\u004B\uFFFD\u0070\u0013\uFFFD\uFFFD\uFFFD\u0024\u002B\u0055\u001A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0039\u004E\u000B\u0066\uFFFD\u0075\uFFFD\uFFFD\uFFFD\u005C\u0003\uFFFD\u0036\uFFFD\uFFFD\u0001\u002C\uFFFD\uFFFD\u0056\u0002\u002A\u0044\u0015\u002F\uFFFD\u0319\uFFFD\uFFFD\uFFFD\u0042\uFFFD\uFFFD\u000F\uFFFD\u0010\u0033\uFFFD\u0001\u0011\u0013\uFFFD\u004C\uFFFD\u0026\u004C\u0013\u0007\u0067\uFFFD\u0005\u006B\uFFFD\u0040\u003E\uFFFD\u0039\u0010\u0055\uFFFD\uFFFD\u0061\u0056\uFFFD\uFFFD\u0024\uFFFD\uFFFD\uFFFD\uFFFD\u0045\uFFFD\u0026\uFFFD\u0061\uFFFD\uFFFD\uFFFD\uFFFD\u0026\u0001\uFFFD\u0012\u001F\uFFFD\u0035\u002F\uFFFD\u0034\u0069\u0048\u002B\uFFFD\uFFFD\uFFFD\u0049\u005D\uFFFD\u004B\uFFFD\u0726\u0022\u003F\uFFFD\u000B\uFFFD\u004C\uFFFD\uFFFD\u006E\u004E\u0027\uFFFD\uFFFD\u0006\uFFFD\uFFFD\uFFFD\uFFFD\u0000\u0021\u0029\u007A\u0076\u005C\uFFFD\u0000\uFFFD\u006C\u0078\u0046\uFFFD\u0064\uFFFD\uFFFD\uFFFD\uFFFD\u0042\u007E\u006F\uFFFD\u0021\u0003\u0027\u0075\u001B\u006B\u0036\u0001\uFFFD\uFFFD\uFFFD\u000D\uFFFD\u0003\u0049\u0035\u007F\uFFFD\uFFFD\uFFFD\uFFFD\u0062\uFFFD\u007D\uFFFD\u0018\u0040\uFFFD\u006F\uFFFD\uFFFD\u002A\uFFFD\uFFFD\u000A\uFFFD\uFFFD\uFFFD\u0013\u0004\u003B\uFFFD\u0010' + ) + t.end() +}) + +test('utf8 replacement chars for anything in the surrogate pair range', function (t) { + t.equal( + new B([ 0xED, 0x9F, 0xBF ]).toString(), + '\uD7FF' + ) + t.equal( + new B([ 0xED, 0xA0, 0x80 ]).toString(), + '\uFFFD\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xED, 0xBE, 0x8B ]).toString(), + '\uFFFD\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xED, 0xBF, 0xBF ]).toString(), + '\uFFFD\uFFFD\uFFFD' + ) + t.equal( + new B([ 0xEE, 0x80, 0x80 ]).toString(), + '\uE000' + ) + t.end() +}) + +test('utf8 don\'t replace the replacement char', function (t) { + t.equal( + new B('\uFFFD').toString(), + '\uFFFD' + ) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/write.js b/node_modules/aws-sdk/node_modules/buffer/test/write.js new file mode 100644 index 0000000..5841806 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/write.js @@ -0,0 +1,131 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') +var isnan = require('is-nan') + +test('buffer.write string should get parsed as number', function (t) { + var b = new B(64) + b.writeUInt16LE('1003', 0) + t.equal(b.readUInt16LE(0), 1003) + t.end() +}) + +test('buffer.writeUInt8 a fractional number will get Math.floored', function (t) { + // Some extra work is necessary to make this test pass with the Object implementation + + var b = new B(1) + b.writeInt8(5.5, 0) + t.equal(b[0], 5) + t.end() +}) + +test('writeUint8 with a negative number throws', function (t) { + var buf = new B(1) + + t.throws(function () { + buf.writeUInt8(-3, 0) + }) + + t.end() +}) + +test('hex of write{Uint,Int}{8,16,32}{LE,BE}', function (t) { + t.plan(2 * (2 * 2 * 2 + 2)) + var hex = [ + '03', '0300', '0003', '03000000', '00000003', + 'fd', 'fdff', 'fffd', 'fdffffff', 'fffffffd' + ] + var reads = [ 3, 3, 3, 3, 3, -3, -3, -3, -3, -3 ] + var xs = ['UInt', 'Int'] + var ys = [8, 16, 32] + for (var i = 0; i < xs.length; i++) { + var x = xs[i] + for (var j = 0; j < ys.length; j++) { + var y = ys[j] + var endianesses = (y === 8) ? [''] : ['LE', 'BE'] + for (var k = 0; k < endianesses.length; k++) { + var z = endianesses[k] + + var v1 = new B(y / 8) + var writefn = 'write' + x + y + z + var val = (x === 'Int') ? -3 : 3 + v1[writefn](val, 0) + t.equal( + v1.toString('hex'), + hex.shift() + ) + var readfn = 'read' + x + y + z + t.equal( + v1[readfn](0), + reads.shift() + ) + } + } + } + t.end() +}) + +test('hex of write{Uint,Int}{8,16,32}{LE,BE} with overflow', function (t) { + if (!B.TYPED_ARRAY_SUPPORT) { + t.pass('object impl: skipping overflow test') + t.end() + return + } + + t.plan(3 * (2 * 2 * 2 + 2)) + var hex = [ + '', '03', '00', '030000', '000000', + '', 'fd', 'ff', 'fdffff', 'ffffff' + ] + var reads = [ + undefined, 3, 0, NaN, 0, + undefined, 253, -256, 16777213, -256 + ] + var xs = ['UInt', 'Int'] + var ys = [8, 16, 32] + for (var i = 0; i < xs.length; i++) { + var x = xs[i] + for (var j = 0; j < ys.length; j++) { + var y = ys[j] + var endianesses = (y === 8) ? [''] : ['LE', 'BE'] + for (var k = 0; k < endianesses.length; k++) { + var z = endianesses[k] + + var v1 = new B(y / 8 - 1) + var next = new B(4) + next.writeUInt32BE(0, 0) + var writefn = 'write' + x + y + z + var val = (x === 'Int') ? -3 : 3 + v1[writefn](val, 0, true) + t.equal( + v1.toString('hex'), + hex.shift() + ) + // check that nothing leaked to next buffer. + t.equal(next.readUInt32BE(0), 0) + // check that no bytes are read from next buffer. + next.writeInt32BE(~0, 0) + var readfn = 'read' + x + y + z + var r = reads.shift() + if (isnan(r)) t.pass('equal') + else t.equal(v1[readfn](0, true), r) + } + } + } + t.end() +}) +test('large values do not improperly roll over (ref #80)', function (t) { + var nums = [-25589992, -633756690, -898146932] + var out = new B(12) + out.fill(0) + out.writeInt32BE(nums[0], 0) + var newNum = out.readInt32BE(0) + t.equal(nums[0], newNum) + out.writeInt32BE(nums[1], 4) + newNum = out.readInt32BE(4) + t.equal(nums[1], newNum) + out.writeInt32BE(nums[2], 8) + newNum = out.readInt32BE(8) + t.equal(nums[2], newNum) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js b/node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js new file mode 100644 index 0000000..17d606a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js @@ -0,0 +1,45 @@ +if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false +var B = require('../').Buffer +var test = require('tape') + +test('write/read Infinity as a float', function (t) { + var buf = new B(4) + t.equal(buf.writeFloatBE(Infinity, 0), 4) + t.equal(buf.readFloatBE(0), Infinity) + t.end() +}) + +test('write/read -Infinity as a float', function (t) { + var buf = new B(4) + t.equal(buf.writeFloatBE(-Infinity, 0), 4) + t.equal(buf.readFloatBE(0), -Infinity) + t.end() +}) + +test('write/read Infinity as a double', function (t) { + var buf = new B(8) + t.equal(buf.writeDoubleBE(Infinity, 0), 8) + t.equal(buf.readDoubleBE(0), Infinity) + t.end() +}) + +test('write/read -Infinity as a double', function (t) { + var buf = new B(8) + t.equal(buf.writeDoubleBE(-Infinity, 0), 8) + t.equal(buf.readDoubleBE(0), -Infinity) + t.end() +}) + +test('write/read float greater than max', function (t) { + var buf = new B(4) + t.equal(buf.writeFloatBE(4e38, 0), 4) + t.equal(buf.readFloatBE(0), Infinity) + t.end() +}) + +test('write/read float less than min', function (t) { + var buf = new B(4) + t.equal(buf.writeFloatBE(-4e40, 0), 4) + t.equal(buf.readFloatBE(0), -Infinity) + t.end() +}) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore b/node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore @@ -0,0 +1 @@ +node_modules diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml b/node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml new file mode 100644 index 0000000..3079f62 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - 0.8 + - "0.10" + diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE b/node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE new file mode 100644 index 0000000..8abb57d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE @@ -0,0 +1,24 @@ +The MIT License + +Copyright (c) 2013 Dominic Tarr + +Permission is hereby granted, free of charge, +to any person obtaining a copy of this software and +associated documentation files (the "Software"), to +deal in the Software without restriction, including +without limitation the rights to use, copy, modify, +merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom +the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice +shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR +ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js b/node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js new file mode 100644 index 0000000..02698cc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js @@ -0,0 +1,637 @@ +var require = function (file, cwd) { + var resolved = require.resolve(file, cwd || '/'); + var mod = require.modules[resolved]; + if (!mod) throw new Error( + 'Failed to resolve module ' + file + ', tried ' + resolved + ); + var res = mod._cached ? mod._cached : mod(); + return res; +} + +require.paths = []; +require.modules = {}; +require.extensions = [".js",".coffee"]; + +require._core = { + 'assert': true, + 'events': true, + 'fs': true, + 'path': true, + 'vm': true +}; + +require.resolve = (function () { + return function (x, cwd) { + if (!cwd) cwd = '/'; + + if (require._core[x]) return x; + var path = require.modules.path(); + cwd = path.resolve('/', cwd); + var y = cwd || '/'; + + if (x.match(/^(?:\.\.?\/|\/)/)) { + var m = loadAsFileSync(path.resolve(y, x)) + || loadAsDirectorySync(path.resolve(y, x)); + if (m) return m; + } + + var n = loadNodeModulesSync(x, y); + if (n) return n; + + throw new Error("Cannot find module '" + x + "'"); + + function loadAsFileSync (x) { + if (require.modules[x]) { + return x; + } + + for (var i = 0; i < require.extensions.length; i++) { + var ext = require.extensions[i]; + if (require.modules[x + ext]) return x + ext; + } + } + + function loadAsDirectorySync (x) { + x = x.replace(/\/+$/, ''); + var pkgfile = x + '/package.json'; + if (require.modules[pkgfile]) { + var pkg = require.modules[pkgfile](); + var b = pkg.browserify; + if (typeof b === 'object' && b.main) { + var m = loadAsFileSync(path.resolve(x, b.main)); + if (m) return m; + } + else if (typeof b === 'string') { + var m = loadAsFileSync(path.resolve(x, b)); + if (m) return m; + } + else if (pkg.main) { + var m = loadAsFileSync(path.resolve(x, pkg.main)); + if (m) return m; + } + } + + return loadAsFileSync(x + '/index'); + } + + function loadNodeModulesSync (x, start) { + var dirs = nodeModulesPathsSync(start); + for (var i = 0; i < dirs.length; i++) { + var dir = dirs[i]; + var m = loadAsFileSync(dir + '/' + x); + if (m) return m; + var n = loadAsDirectorySync(dir + '/' + x); + if (n) return n; + } + + var m = loadAsFileSync(x); + if (m) return m; + } + + function nodeModulesPathsSync (start) { + var parts; + if (start === '/') parts = [ '' ]; + else parts = path.normalize(start).split('/'); + + var dirs = []; + for (var i = parts.length - 1; i >= 0; i--) { + if (parts[i] === 'node_modules') continue; + var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; + dirs.push(dir); + } + + return dirs; + } + }; +})(); + +require.alias = function (from, to) { + var path = require.modules.path(); + var res = null; + try { + res = require.resolve(from + '/package.json', '/'); + } + catch (err) { + res = require.resolve(from, '/'); + } + var basedir = path.dirname(res); + + var keys = (Object.keys || function (obj) { + var res = []; + for (var key in obj) res.push(key) + return res; + })(require.modules); + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (key.slice(0, basedir.length + 1) === basedir + '/') { + var f = key.slice(basedir.length); + require.modules[to + f] = require.modules[basedir + f]; + } + else if (key === basedir) { + require.modules[to] = require.modules[basedir]; + } + } +}; + +require.define = function (filename, fn) { + var dirname = require._core[filename] + ? '' + : require.modules.path().dirname(filename) + ; + + var require_ = function (file) { + return require(file, dirname) + }; + require_.resolve = function (name) { + return require.resolve(name, dirname); + }; + require_.modules = require.modules; + require_.define = require.define; + var module_ = { exports : {} }; + + require.modules[filename] = function () { + require.modules[filename]._cached = module_.exports; + fn.call( + module_.exports, + require_, + module_, + module_.exports, + dirname, + filename + ); + require.modules[filename]._cached = module_.exports; + return module_.exports; + }; +}; + +if (typeof process === 'undefined') process = {}; + +if (!process.nextTick) process.nextTick = (function () { + var queue = []; + var canPost = typeof window !== 'undefined' + && window.postMessage && window.addEventListener + ; + + if (canPost) { + window.addEventListener('message', function (ev) { + if (ev.source === window && ev.data === 'browserify-tick') { + ev.stopPropagation(); + if (queue.length > 0) { + var fn = queue.shift(); + fn(); + } + } + }, true); + } + + return function (fn) { + if (canPost) { + queue.push(fn); + window.postMessage('browserify-tick', '*'); + } + else setTimeout(fn, 0); + }; +})(); + +if (!process.title) process.title = 'browser'; + +if (!process.binding) process.binding = function (name) { + if (name === 'evals') return require('vm') + else throw new Error('No such module') +}; + +if (!process.cwd) process.cwd = function () { return '.' }; + +if (!process.env) process.env = {}; +if (!process.argv) process.argv = []; + +require.define("path", function (require, module, exports, __dirname, __filename) { +function filter (xs, fn) { + var res = []; + for (var i = 0; i < xs.length; i++) { + if (fn(xs[i], i, xs)) res.push(xs[i]); + } + return res; +} + +// resolves . and .. elements in a path array with directory names there +// must be no slashes, empty elements, or device names (c:\) in the array +// (so also no leading and trailing slashes - it does not distinguish +// relative and absolute paths) +function normalizeArray(parts, allowAboveRoot) { + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = parts.length; i >= 0; i--) { + var last = parts[i]; + if (last == '.') { + parts.splice(i, 1); + } else if (last === '..') { + parts.splice(i, 1); + up++; + } else if (up) { + parts.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (allowAboveRoot) { + for (; up--; up) { + parts.unshift('..'); + } + } + + return parts; +} + +// Regex to split a filename into [*, dir, basename, ext] +// posix version +var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; + +// path.resolve([from ...], to) +// posix version +exports.resolve = function() { +var resolvedPath = '', + resolvedAbsolute = false; + +for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { + var path = (i >= 0) + ? arguments[i] + : process.cwd(); + + // Skip empty and invalid entries + if (typeof path !== 'string' || !path) { + continue; + } + + resolvedPath = path + '/' + resolvedPath; + resolvedAbsolute = path.charAt(0) === '/'; +} + +// At this point the path should be resolved to a full absolute path, but +// handle relative paths to be safe (might happen when process.cwd() fails) + +// Normalize the path +resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { + return !!p; + }), !resolvedAbsolute).join('/'); + + return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; +}; + +// path.normalize(path) +// posix version +exports.normalize = function(path) { +var isAbsolute = path.charAt(0) === '/', + trailingSlash = path.slice(-1) === '/'; + +// Normalize the path +path = normalizeArray(filter(path.split('/'), function(p) { + return !!p; + }), !isAbsolute).join('/'); + + if (!path && !isAbsolute) { + path = '.'; + } + if (path && trailingSlash) { + path += '/'; + } + + return (isAbsolute ? '/' : '') + path; +}; + + +// posix version +exports.join = function() { + var paths = Array.prototype.slice.call(arguments, 0); + return exports.normalize(filter(paths, function(p, index) { + return p && typeof p === 'string'; + }).join('/')); +}; + + +exports.dirname = function(path) { + var dir = splitPathRe.exec(path)[1] || ''; + var isWindows = false; + if (!dir) { + // No dirname + return '.'; + } else if (dir.length === 1 || + (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { + // It is just a slash or a drive letter with a slash + return dir; + } else { + // It is a full dirname, strip trailing slash + return dir.substring(0, dir.length - 1); + } +}; + + +exports.basename = function(path, ext) { + var f = splitPathRe.exec(path)[2] || ''; + // TODO: make this comparison case-insensitive on windows? + if (ext && f.substr(-1 * ext.length) === ext) { + f = f.substr(0, f.length - ext.length); + } + return f; +}; + + +exports.extname = function(path) { + return splitPathRe.exec(path)[3] || ''; +}; + +}); + +require.define("crypto", function (require, module, exports, __dirname, __filename) { +module.exports = require("crypto-browserify") +}); + +require.define("/node_modules/crypto-browserify/package.json", function (require, module, exports, __dirname, __filename) { +module.exports = {} +}); + +require.define("/node_modules/crypto-browserify/index.js", function (require, module, exports, __dirname, __filename) { +var sha = require('./sha') + +var algorithms = { + sha1: { + hex: sha.hex_sha1, + binary: sha.b64_sha1, + ascii: sha.str_sha1 + } +} + +function error () { + var m = [].slice.call(arguments).join(' ') + throw new Error([ + m, + 'we accept pull requests', + 'http://github.com/dominictarr/crypto-browserify' + ].join('\n')) +} + +exports.createHash = function (alg) { + alg = alg || 'sha1' + if(!algorithms[alg]) + error('algorithm:', alg, 'is not yet supported') + var s = '' + _alg = algorithms[alg] + return { + update: function (data) { + s += data + return this + }, + digest: function (enc) { + enc = enc || 'binary' + var fn + if(!(fn = _alg[enc])) + error('encoding:', enc , 'is not yet supported for algorithm', alg) + var r = fn(s) + s = null //not meant to use the hash after you've called digest. + return r + } + } +} +// the least I can do is make error messages for the rest of the node.js/crypto api. +;['createCredentials' +, 'createHmac' +, 'createCypher' +, 'createCypheriv' +, 'createDecipher' +, 'createDecipheriv' +, 'createSign' +, 'createVerify' +, 'createDeffieHellman', +, 'pbkdf2', +, 'randomBytes' ].forEach(function (name) { + exports[name] = function () { + error('sorry,', name, 'is not implemented yet') + } +}) + +}); + +require.define("/node_modules/crypto-browserify/sha.js", function (require, module, exports, __dirname, __filename) { +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +exports.hex_sha1 = hex_sha1; +exports.b64_sha1 = b64_sha1; +exports.str_sha1 = str_sha1; +exports.hex_hmac_sha1 = hex_hmac_sha1; +exports.b64_hmac_sha1 = b64_hmac_sha1; +exports.str_hmac_sha1 = str_hmac_sha1; + +/* + * Configurable variables. You may need to tweak these to be compatible with + * the server-side, but the defaults work in most cases. + */ +var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ +var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ +var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ + +/* + * These are the functions you'll usually want to call + * They take string arguments and return either hex or base-64 encoded strings + */ +function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} +function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} +function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} +function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} +function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} +function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} + +/* + * Perform a simple self-test to see if the VM is working + */ +function sha1_vm_test() +{ + return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; +} + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function core_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Calculate the HMAC-SHA1 of a key and some data + */ +function core_hmac_sha1(key, data) +{ + var bkey = str2binb(key); + if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); + + var ipad = Array(16), opad = Array(16); + for(var i = 0; i < 16; i++) + { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5C5C5C5C; + } + + var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); + return core_sha1(opad.concat(hash), 512 + 160); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +/* + * Convert an 8-bit or 16-bit string to an array of big-endian words + * In 8-bit function, characters >255 have their hi-byte silently ignored. + */ +function str2binb(str) +{ + var bin = Array(); + var mask = (1 << chrsz) - 1; + for(var i = 0; i < str.length * chrsz; i += chrsz) + bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); + return bin; +} + +/* + * Convert an array of big-endian words to a string + */ +function binb2str(bin) +{ + var str = ""; + var mask = (1 << chrsz) - 1; + for(var i = 0; i < bin.length * 32; i += chrsz) + str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); + return str; +} + +/* + * Convert an array of big-endian words to a hex string. + */ +function binb2hex(binarray) +{ + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i++) + { + str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + + hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); + } + return str; +} + +/* + * Convert an array of big-endian words to a base-64 string + */ +function binb2b64(binarray) +{ + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var str = ""; + for(var i = 0; i < binarray.length * 4; i += 3) + { + var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) + | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) + | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); + for(var j = 0; j < 4; j++) + { + if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; + else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); + } + } + return str; +} + + +}); + +require.define("/test.js", function (require, module, exports, __dirname, __filename) { + var crypto = require('crypto') +var abc = crypto.createHash('sha1').update('abc').digest('hex') +console.log(abc) +//require('hello').inlineCall().call2() + +}); +require("/test.js"); diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html b/node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html new file mode 100644 index 0000000..9d55c6d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html @@ -0,0 +1,12 @@ + + + + +
+  require('crypto').createHash('sha1').update('abc').digest('hex') == ''
+  
+ + + diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js b/node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js new file mode 100644 index 0000000..f1b0e4a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js @@ -0,0 +1,4 @@ +var crypto = require('crypto') +var abc = crypto.createHash('sha1').update('abc').digest('hex') +console.log(abc) +//require('hello').inlineCall().call2() diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js b/node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js new file mode 100644 index 0000000..4535e64 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js @@ -0,0 +1,35 @@ +var Buffer = require('buffer').Buffer; +var intSize = 4; +var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); +var chrsz = 8; + +function toArray(buf, bigEndian) { + if ((buf.length % intSize) !== 0) { + var len = buf.length + (intSize - (buf.length % intSize)); + buf = Buffer.concat([buf, zeroBuffer], len); + } + + var arr = []; + var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; + for (var i = 0; i < buf.length; i += intSize) { + arr.push(fn.call(buf, i)); + } + return arr; +} + +function toBuffer(arr, size, bigEndian) { + var buf = new Buffer(size); + var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; + for (var i = 0; i < arr.length; i++) { + fn.call(buf, arr[i], i * 4, true); + } + return buf; +} + +function hash(buf, fn, hashSize, bigEndian) { + if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); + var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); + return toBuffer(arr, hashSize, bigEndian); +} + +module.exports = { hash: hash }; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/index.js b/node_modules/aws-sdk/node_modules/crypto-browserify/index.js new file mode 100644 index 0000000..56fa434 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/index.js @@ -0,0 +1,97 @@ +var Buffer = require('buffer').Buffer +var sha = require('./sha') +var sha256 = require('./sha256') +var rng = require('./rng') +var md5 = require('./md5') + +var algorithms = { + sha1: sha, + sha256: sha256, + md5: md5 +} + +var blocksize = 64 +var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0) +function hmac(fn, key, data) { + if(!Buffer.isBuffer(key)) key = new Buffer(key) + if(!Buffer.isBuffer(data)) data = new Buffer(data) + + if(key.length > blocksize) { + key = fn(key) + } else if(key.length < blocksize) { + key = Buffer.concat([key, zeroBuffer], blocksize) + } + + var ipad = new Buffer(blocksize), opad = new Buffer(blocksize) + for(var i = 0; i < blocksize; i++) { + ipad[i] = key[i] ^ 0x36 + opad[i] = key[i] ^ 0x5C + } + + var hash = fn(Buffer.concat([ipad, data])) + return fn(Buffer.concat([opad, hash])) +} + +function hash(alg, key) { + alg = alg || 'sha1' + var fn = algorithms[alg] + var bufs = [] + var length = 0 + if(!fn) error('algorithm:', alg, 'is not yet supported') + return { + update: function (data) { + if(!Buffer.isBuffer(data)) data = new Buffer(data) + + bufs.push(data) + length += data.length + return this + }, + digest: function (enc) { + var buf = Buffer.concat(bufs) + var r = key ? hmac(fn, key, buf) : fn(buf) + bufs = null + return enc ? r.toString(enc) : r + } + } +} + +function error () { + var m = [].slice.call(arguments).join(' ') + throw new Error([ + m, + 'we accept pull requests', + 'http://github.com/dominictarr/crypto-browserify' + ].join('\n')) +} + +exports.createHash = function (alg) { return hash(alg) } +exports.createHmac = function (alg, key) { return hash(alg, key) } +exports.randomBytes = function(size, callback) { + if (callback && callback.call) { + try { + callback.call(this, undefined, new Buffer(rng(size))) + } catch (err) { callback(err) } + } else { + return new Buffer(rng(size)) + } +} + +function each(a, f) { + for(var i in a) + f(a[i], i) +} + +// the least I can do is make error messages for the rest of the node.js/crypto api. +each(['createCredentials' +, 'createCipher' +, 'createCipheriv' +, 'createDecipher' +, 'createDecipheriv' +, 'createSign' +, 'createVerify' +, 'createDiffieHellman' +, 'pbkdf2'], function (name) { + exports[name] = function () { + error('sorry,', name, 'is not implemented yet') + } +}) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/md5.js b/node_modules/aws-sdk/node_modules/crypto-browserify/md5.js new file mode 100644 index 0000000..50eeb89 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/md5.js @@ -0,0 +1,163 @@ +/* + * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message + * Digest Algorithm, as defined in RFC 1321. + * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for more info. + */ + +var helpers = require('./helpers'); + +/* + * Perform a simple self-test to see if the VM is working + */ +function md5_vm_test() +{ + return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; +} + +/* + * Calculate the MD5 of an array of little-endian words, and a bit length + */ +function core_md5(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << ((len) % 32); + x[(((len + 64) >>> 9) << 4) + 14] = len; + + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + + a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); + d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); + c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); + b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); + a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); + d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); + c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); + b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); + a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); + d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); + c = md5_ff(c, d, a, b, x[i+10], 17, -42063); + b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); + a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); + d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); + c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); + b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); + + a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); + d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); + c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); + b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); + a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); + d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); + c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); + b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); + a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); + d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); + c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); + b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); + a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); + d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); + c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); + b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); + + a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); + d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); + c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); + b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); + a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); + d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); + c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); + b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); + a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); + d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); + c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); + b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); + a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); + d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); + c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); + b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); + + a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); + d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); + c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); + b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); + a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); + d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); + c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); + b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); + a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); + d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); + c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); + b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); + a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); + d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); + c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); + b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + } + return Array(a, b, c, d); + +} + +/* + * These functions implement the four basic operations the algorithm uses. + */ +function md5_cmn(q, a, b, x, s, t) +{ + return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); +} +function md5_ff(a, b, c, d, x, s, t) +{ + return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); +} +function md5_gg(a, b, c, d, x, s, t) +{ + return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); +} +function md5_hh(a, b, c, d, x, s, t) +{ + return md5_cmn(b ^ c ^ d, a, b, x, s, t); +} +function md5_ii(a, b, c, d, x, s, t) +{ + return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function bit_rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function md5(buf) { + return helpers.hash(buf, core_md5, 16); +}; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/package.json b/node_modules/aws-sdk/node_modules/crypto-browserify/package.json new file mode 100644 index 0000000..50a90d5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/package.json @@ -0,0 +1,49 @@ +{ + "author": { + "name": "Dominic Tarr", + "email": "dominic.tarr@gmail.com", + "url": "dominictarr.com" + }, + "name": "crypto-browserify", + "description": "partial implementation of crypto for the browser", + "version": "1.0.9", + "homepage": "https://github.com/dominictarr/crypto-browserify", + "repository": { + "type": "git", + "url": "git://github.com/dominictarr/crypto-browserify.git" + }, + "scripts": { + "test": "node test/node.js" + }, + "engines": { + "node": "*" + }, + "dependencies": {}, + "devDependencies": { + "brfs": "~0.0.8", + "tape": "~1.0.4" + }, + "testling": { + "files": "test/browser.js", + "browsers": [ + "ie/8..latest", + "chrome/20..latest", + "firefox/10..latest", + "safari/latest", + "opera/11.0..latest", + "iphone/6", + "ipad/6" + ] + }, + "optionalDependencies": {}, + "license": "MIT", + "readme": "# crypto-browserify\n\nA (partial) port of `crypto` to the browser.\n\n\n[![travis](https://secure.travis-ci.org/dominictarr/crypto-browserify.png?branch=master)](https://travis-ci.org/dominictarr/crypto-browserify)\n\n[![browser support](http://ci.testling.com/dominictarr/crypto-browserify.png)](http://ci.testling.com/dominictarr/crypto-browserify)\n\n\nBasically, I found some crypto implemented in JS lieing on the internet somewhere\nand wrapped it in the part of the `crypto` api that I am currently using.\n\nIn a way that will be compatible with [browserify](https://github.com/substack/node-browserify/).\n\nI will extend this if I need more features, or if anyone else wants to extend this,\nI will add you as a maintainer.\n\nProvided that you agree that it should replicate the [node.js/crypto](http://nodejs.org/api/crypto.html) api exactly, of course.\n\n", + "readmeFilename": "readme.markdown", + "bugs": { + "url": "https://github.com/dominictarr/crypto-browserify/issues" + }, + "_id": "crypto-browserify@1.0.9", + "_shasum": "cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0", + "_resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", + "_from": "crypto-browserify@1.0.9" +} diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown b/node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown new file mode 100644 index 0000000..2ede636 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown @@ -0,0 +1,20 @@ +# crypto-browserify + +A (partial) port of `crypto` to the browser. + + +[![travis](https://secure.travis-ci.org/dominictarr/crypto-browserify.png?branch=master)](https://travis-ci.org/dominictarr/crypto-browserify) + +[![browser support](http://ci.testling.com/dominictarr/crypto-browserify.png)](http://ci.testling.com/dominictarr/crypto-browserify) + + +Basically, I found some crypto implemented in JS lieing on the internet somewhere +and wrapped it in the part of the `crypto` api that I am currently using. + +In a way that will be compatible with [browserify](https://github.com/substack/node-browserify/). + +I will extend this if I need more features, or if anyone else wants to extend this, +I will add you as a maintainer. + +Provided that you agree that it should replicate the [node.js/crypto](http://nodejs.org/api/crypto.html) api exactly, of course. + diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/rng.js b/node_modules/aws-sdk/node_modules/crypto-browserify/rng.js new file mode 100644 index 0000000..bc858e8 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/rng.js @@ -0,0 +1,31 @@ +// Original code adapted from Robert Kieffer. +// details at https://github.com/broofa/node-uuid +(function() { + var _global = this; + + var mathRNG, whatwgRNG; + + // NOTE: Math.random() does not guarantee "cryptographic quality" + mathRNG = function(size) { + var bytes = new Array(size); + var r; + + for (var i = 0, r; i < size; i++) { + if ((i & 0x03) == 0) r = Math.random() * 0x100000000; + bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return bytes; + } + + if (_global.crypto && crypto.getRandomValues) { + whatwgRNG = function(size) { + var bytes = new Uint8Array(size); + crypto.getRandomValues(bytes); + return bytes; + } + } + + module.exports = whatwgRNG || mathRNG; + +}()) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/sha.js b/node_modules/aws-sdk/node_modules/crypto-browserify/sha.js new file mode 100644 index 0000000..8942b62 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/sha.js @@ -0,0 +1,101 @@ +/* + * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined + * in FIPS PUB 180-1 + * Version 2.1a Copyright Paul Johnston 2000 - 2002. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * Distributed under the BSD License + * See http://pajhome.org.uk/crypt/md5 for details. + */ + +var helpers = require('./helpers'); + +/* + * Calculate the SHA-1 of an array of big-endian words, and a bit length + */ +function core_sha1(x, len) +{ + /* append padding */ + x[len >> 5] |= 0x80 << (24 - len % 32); + x[((len + 64 >> 9) << 4) + 15] = len; + + var w = Array(80); + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + var e = -1009589776; + + for(var i = 0; i < x.length; i += 16) + { + var olda = a; + var oldb = b; + var oldc = c; + var oldd = d; + var olde = e; + + for(var j = 0; j < 80; j++) + { + if(j < 16) w[j] = x[i + j]; + else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); + var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), + safe_add(safe_add(e, w[j]), sha1_kt(j))); + e = d; + d = c; + c = rol(b, 30); + b = a; + a = t; + } + + a = safe_add(a, olda); + b = safe_add(b, oldb); + c = safe_add(c, oldc); + d = safe_add(d, oldd); + e = safe_add(e, olde); + } + return Array(a, b, c, d, e); + +} + +/* + * Perform the appropriate triplet combination function for the current + * iteration + */ +function sha1_ft(t, b, c, d) +{ + if(t < 20) return (b & c) | ((~b) & d); + if(t < 40) return b ^ c ^ d; + if(t < 60) return (b & c) | (b & d) | (c & d); + return b ^ c ^ d; +} + +/* + * Determine the appropriate additive constant for the current iteration + */ +function sha1_kt(t) +{ + return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : + (t < 60) ? -1894007588 : -899497514; +} + +/* + * Add integers, wrapping at 2^32. This uses 16-bit operations internally + * to work around bugs in some JS interpreters. + */ +function safe_add(x, y) +{ + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +} + +/* + * Bitwise rotate a 32-bit number to the left. + */ +function rol(num, cnt) +{ + return (num << cnt) | (num >>> (32 - cnt)); +} + +module.exports = function sha1(buf) { + return helpers.hash(buf, core_sha1, 20, true); +}; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js b/node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js new file mode 100644 index 0000000..954d685 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js @@ -0,0 +1,79 @@ + +/** + * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined + * in FIPS 180-2 + * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. + * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet + * + */ + +var helpers = require('./helpers'); + +var safe_add = function(x, y) { + var lsw = (x & 0xFFFF) + (y & 0xFFFF); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xFFFF); +}; + +var S = function(X, n) { + return (X >>> n) | (X << (32 - n)); +}; + +var R = function(X, n) { + return (X >>> n); +}; + +var Ch = function(x, y, z) { + return ((x & y) ^ ((~x) & z)); +}; + +var Maj = function(x, y, z) { + return ((x & y) ^ (x & z) ^ (y & z)); +}; + +var Sigma0256 = function(x) { + return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); +}; + +var Sigma1256 = function(x) { + return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); +}; + +var Gamma0256 = function(x) { + return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); +}; + +var Gamma1256 = function(x) { + return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); +}; + +var core_sha256 = function(m, l) { + var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); + var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); + var W = new Array(64); + var a, b, c, d, e, f, g, h, i, j; + var T1, T2; + /* append padding */ + m[l >> 5] |= 0x80 << (24 - l % 32); + m[((l + 64 >> 9) << 4) + 15] = l; + for (var i = 0; i < m.length; i += 16) { + a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; + for (var j = 0; j < 64; j++) { + if (j < 16) { + W[j] = m[j + i]; + } else { + W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); + } + T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); + T2 = safe_add(Sigma0256(a), Maj(a, b, c)); + h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); + } + HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); + } + return HASH; +}; + +module.exports = function sha256(buf) { + return helpers.hash(buf, core_sha256, 32, true); +}; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js b/node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js new file mode 100644 index 0000000..ccc054b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js @@ -0,0 +1,100 @@ +var test = require('tape'); +var Buffer = require('buffer').Buffer; + +var crypto = require('../'); + +var algorithms = ['sha1', 'sha256', 'md5']; +var encodings = ['binary', 'hex', 'base64']; + + +// We can't compare against node's crypto library directly because when +// using testling we only have another version of crypto-browserify to +// check against. So we'll use a cached version of the expected values +// generated by node crypto. +var EXPECTED = {}; + +EXPECTED['sha1-hash-binary'] = atob('qvTGHdzF6KLavt4PO0gs2a6pQ00='); +EXPECTED['sha1-hash-hex'] = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d'; +EXPECTED['sha1-hash-base64'] = 'qvTGHdzF6KLavt4PO0gs2a6pQ00='; + +EXPECTED['sha256-hash-binary'] = atob('LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ='); +EXPECTED['sha256-hash-hex'] = '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'; +EXPECTED['sha256-hash-base64'] = 'LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ='; + +EXPECTED['md5-hash-binary'] = atob('XUFAKrxLKna5cZ2REBfFkg=='); +EXPECTED['md5-hash-hex'] = '5d41402abc4b2a76b9719d911017c592'; +EXPECTED['md5-hash-base64'] = 'XUFAKrxLKna5cZ2REBfFkg=='; + +EXPECTED['sha1-hmac-binary'] = atob('URIFXAX5RPhXVe/FzYlw4ZTp9Fs='); +EXPECTED['sha1-hmac-hex'] = '5112055c05f944f85755efc5cd8970e194e9f45b'; +EXPECTED['sha1-hmac-base64'] = 'URIFXAX5RPhXVe/FzYlw4ZTp9Fs='; + +EXPECTED['sha256-hmac-binary'] = atob('iKqz7ejTrflNJquQ07r9SiCDBww7zOnAFO4EpEOEfAs='); +EXPECTED['sha256-hmac-hex'] = '88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b'; +EXPECTED['sha256-hmac-base64'] = 'iKqz7ejTrflNJquQ07r9SiCDBww7zOnAFO4EpEOEfAs='; + +EXPECTED['md5-hmac-binary'] = atob('ut5jhjxh7QsxZYBuzWrO/A=='); +EXPECTED['md5-hmac-hex'] = 'bade63863c61ed0b3165806ecd6acefc'; +EXPECTED['md5-hmac-base64'] = 'ut5jhjxh7QsxZYBuzWrO/A=='; + +EXPECTED['md5-with-binary'] = '27549c8ff29ca52f7957f89c328dbb6d'; +EXPECTED['sha1-with-binary'] = '4fa10dda29053b237b5d9703151c852c61e6d8d7'; +EXPECTED['sha256-with-binary'] = '424ff84246aabc1560a2881b9664108dfe26784c762d930c4ff396c085f4183b'; + +EXPECTED['md5-empty-string'] = 'd41d8cd98f00b204e9800998ecf8427e'; +EXPECTED['sha1-empty-string'] = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; +EXPECTED['sha256-empty-string'] = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; + + +algorithms.forEach(function (algorithm) { + encodings.forEach(function (encoding) { + test(algorithm + ' hash using ' + encoding, function (t) { + t.plan(1); + var actual = crypto.createHash(algorithm).update('hello', 'utf-8').digest(encoding); + var expected = EXPECTED[algorithm + '-hash-' + encoding]; + t.equal(actual, expected); + t.end(); + }); + + test(algorithm + ' hmac using ' + encoding, function (t) { + t.plan(1); + var actual = crypto.createHmac(algorithm, 'secret').update('hello', 'utf-8').digest(encoding); + var expected = EXPECTED[algorithm + '-hmac-' + encoding]; + t.equal(actual, expected); + t.end(); + }); + }); + + test(algorithm + ' with empty string', function (t) { + t.plan(1); + var actual = crypto.createHash(algorithm).update('', 'utf-8').digest('hex'); + var expected = EXPECTED[algorithm + '-empty-string']; + t.equal(actual, expected); + t.end(); + }); + + test(algorithm + ' with raw binary', function (t) { + t.plan(1); + var seed = 'hello'; + for (var i = 0; i < 1000; i++) { + seed = crypto.createHash(algorithm).update(seed).digest('binary'); + } + var actual = crypto.createHash(algorithm).update(seed).digest('hex'); + var expected = EXPECTED[algorithm + '-with-binary']; + t.equal(actual, expected); + t.end(); + }); +}); + + +test('randomBytes', function (t) { + t.plan(5); + t.equal(crypto.randomBytes(10).length, 10); + t.ok(crypto.randomBytes(10) instanceof Buffer); + crypto.randomBytes(10, function(ex, bytes) { + t.error(ex); + t.equal(bytes.length, 10); + t.ok(bytes instanceof Buffer); + t.end(); + }); +}); diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js b/node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js new file mode 100644 index 0000000..fb9af5c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js @@ -0,0 +1,77 @@ +var test = require('tape'); + +var crypto = require('crypto'); +var cryptoB = require('../'); +var fs = require('fs'); + +function assertSame(name, fn) { + test(name, function (t) { + t.plan(1); + fn(crypto, function (err, expected) { + fn(cryptoB, function (err, actual) { + t.equal(actual, expected); + t.end(); + }); + }); + }); +} + +var algorithms = ['sha1', 'sha256', 'md5']; +var encodings = ['binary', 'hex', 'base64']; + + +algorithms.forEach(function (algorithm) { + encodings.forEach(function (encoding) { + assertSame(algorithm + ' hash using ' + encoding, function (crypto, cb) { + cb(null, crypto.createHash(algorithm).update('hellø', 'utf-8').digest(encoding)); + }) + + assertSame(algorithm + ' hmac using ' + encoding, function (crypto, cb) { + cb(null, crypto.createHmac(algorithm, 'secret').update('hellø', 'utf-8').digest(encoding)) + }) + }); + + assertSame(algorithm + ' with raw binary', function (crypto, cb) { + var seed = 'hellø'; + for (var i = 0; i < 1000; i++) { + seed = crypto.createHash(algorithm).update(new Buffer(seed)).digest('binary'); + } + cb(null, crypto.createHash(algorithm).update(new Buffer(seed)).digest('hex')); + }); + + assertSame(algorithm + ' empty string', function (crypto, cb) { + cb(null, crypto.createHash(algorithm).update('').digest('hex')); + }); +}); + +function pad(n, w) { + n = n + ''; return new Array(w - n.length + 1).join('0') + n; +} + +var vectors = fs.readdirSync(__dirname + '/vectors').sort(). + filter(function (t) { return t.match(/\.dat$/); }). + map(function (t) { return fs.readFileSync(__dirname + '/vectors/' + t); }); + +['md5', 'sha1', 'sha256'].forEach(function (algorithm) { + test(algorithm, function (t) { + function hash(data) { return cryptoB.createHash(algorithm).update(data).digest('hex'); } + + var hashes = fs.readFileSync(__dirname + '/vectors/byte-hashes.' + algorithm).toString().split(/\r?\n/); + t.plan(vectors.length); + for (var i = 0; i < vectors.length; i++) { + t.equal(hash(vectors[i]), hashes[i], 'byte' + pad(i, 4) + '.dat'); + } + }); +}); + +test('randomBytes', function (t) { + t.plan(5); + t.equal(cryptoB.randomBytes(10).length, 10); + t.ok(cryptoB.randomBytes(10) instanceof Buffer); + cryptoB.randomBytes(10, function(ex, bytes) { + t.error(ex); + t.equal(bytes.length, 10); + t.ok(bytes instanceof Buffer); + t.end(); + }); +}); diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json b/node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json new file mode 100644 index 0000000..4b435b0 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json @@ -0,0 +1,7 @@ +{ + "browserify": { + "transform": [ + "brfs" + ] + } +} diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js b/node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js new file mode 100755 index 0000000..34d96b5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js @@ -0,0 +1,36 @@ +var test = require("tape") + +var crypto = require('crypto') +var cryptoB = require('../') + +function assertSame (fn) { + test(fn.name, function (t) { + t.plan(1) + fn(crypto, function (err, expected) { + fn(cryptoB, function (err, actual) { + t.equal(actual, expected) + t.end() + }) + }) + }) +} + +assertSame(function sha1 (crypto, cb) { + cb(null, crypto.createHash('sha1').update('hello', 'utf-8').digest('hex')) +}) + +assertSame(function md5(crypto, cb) { + cb(null, crypto.createHash('md5').update('hello', 'utf-8').digest('hex')) +}) + +test('randomBytes', function (t) { + t.plan(5) + t.equal(cryptoB.randomBytes(10).length, 10) + t.ok(cryptoB.randomBytes(10) instanceof Buffer) + cryptoB.randomBytes(10, function(ex, bytes) { + t.error(ex) + t.equal(bytes.length, 10) + t.ok(bytes instanceof Buffer) + t.end() + }) +}) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt new file mode 100755 index 0000000..99d14c9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt @@ -0,0 +1,25 @@ + +File formats: + +There are two files included for this byte-oriented test. +One file contains the messages and the other file contains the hashes. + +The message files provided use "compact strings" to store the message values. +Compact strings are used to represented the messages in a compact form. +A compact string has the form + z || b || n(1) || n(2) || ... || n(z) +where z>=0 that represents the number of n, b is either 0 or 1, and +each n(i) is a decimal integer representing a positive number. +The length of the compact string is given by the summation of the n(i). + +The compact string is interpreted as the representation of the bit string +consisting of b repeated n(1) times, followed by 1-b repeated n(2) times, +followed by b repeated n(3) times, and so on. + +Example: + M = 5 1 7 13 5 1 2 + where z = 5 and b = 1. Then the compact string M represents the bit string + 1111111000000000000011111011 + where 1 is repeated 7 times, 0 is repeated 13 times, 1 is repeated 5 times, + 0 is repeated 1 time, and 1 is repeated 2 times. + diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 new file mode 100755 index 0000000..97a913a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 @@ -0,0 +1,196 @@ +d41d8cd98f00b204e9800998ecf8427e +c3e97dd6e97fb5125688c97f36720cbe +038701ca277a9d4de87bff428dd30a12 +bc60c6192e361d99b59d47250668a852 +542c3a0ab6b51bc6a88fa7bb567bca3e +e035f9e748a2a09a4fbdcf18c4f58bf1 +3b4cc9226a236742d72578c5915b6c3c +35950208a022baac90056636827158ce +84cedff2ed1b78b395cc8651094f4ce3 +7badf748f4cb700272a72edfea22e9bf +a1bb6e142739dbdb0925747d95e0a1ad +0cd9b72dfdee8efd2e1515f4c5a62284 +ef07c13e75d50578d09052aa21a7cffb +cf3b261af9344bf83b4dd82b30242c78 +530710f65fb98fff8eb927e2938cb8c5 +4e6d73658b27e19d4bb4500625001e39 +c8e5f2f272b1ef88ec62dd0d9d54e902 +031cbf1fb05b4ec09f3c93235d0f49ac +8c0e1400df02ba8c4809b705e5f5e114 +57ec48278e19f71f54c570a5ab306df7 +ecd3dc346a2337b95389a094a031610f +f11d91eae492225cbd82ef356aa96f9f +26bd8b480216c723ce75da98b9bd430c +80999c2d12f623e4f87e0550a8e3523a +00945c1bd739ce389ac24bb93f6f9a85 +7ab55f0bd5dca5b17ecaa7fef73ed87b +e3cedd606ad51dd18532abd3079a3e0c +df5ecc6732e22cc25836398a10222e97 +863b6d9962ee3761bbb9cd8a8367589e +683c9384e29efe82dd3ac847904c28e8 +b3d948e72159ddc9c600d75512c5f115 +ce8633a6cf189b07e022147bbbd0f350 +8df17372eb32a0afa4fc47837262ff61 +62c63ca91890ce6f78a59c0bdb1e7bab +1eda4bb0259a939548ec4ceb39facde4 +c4f37a2c450f2a23322513b372e668a5 +cab8f06436c5ad45f982490215836f4e +3a43bc720714a2a42a73a76085542f86 +03f2f4033b258e6eb1e101f1ed4c24b4 +2ceb33cec5ecad4a50f6bd3a831ae77c +dd808f695d28f93562cfcb164bc3cce4 +01c6d7a87e94bf685205ec8d7c5196af +ef0e93e8928f8bae1b216da8e661fc9b +c8da55117d7d4b7ee8ddc8dc4ba73aa6 +bbfc64583c6d4c2ef4b0358464d4d028 +3bb5864481f2e66387419dd1a168aadc +0d725d3a1d3d97d7b5ea8293bbbf32ba +915eb22a15f7673f983672b6c353b6c8 +13b51da3e8a1422bfd58b79c4e19de64 +e69d6c03102464f22c395f9fa27108de +132fa4cbedaa7bd965b0b5900211be48 +e37ff5d9f14249f327a19dd5296e6c7e +4881a65cf107b1d034ff3ecd64ab9cb4 +547e92d01c0b699cfdf43f91714cfe2d +aa2b3a055b56845f19109f21d3c783f4 +eb1f01cc647ece73b2192537200bb8b9 +1db274ef41b1ad71f713df2b05207e1a +d8b4ec343b4310345efc6da9cee8a2ec +082ee3b2be7910f7350368e395a63d90 +d247c4070ae1de106bcb438a2dacac23 +f8cbc4f3af45befc792679f2b113f1cb +9031006a437019c5dcd987a31731ebd9 +a6b62759ee3883258fbdeeb8b56e6283 +4933898605b4a1b970b674a2dde92292 +f0684ca20de4607232f3e158e81a37f2 +c0b3fdecb3bb7b4ff0c936f378ccb027 +50652123b5e0e51bb5bc3fdde3c6a750 +ed4526ba8226d969f47edbb27b2f1144 +80e6f61dff9da8673fa16dbbdb14d03d +1d52744bf1450d7c5cfdf1f0bbf967c1 +3438a953124960bcc44611923a8844ee +b2f341296dd7aabbd4fd8e011be68a7d +322dba69658a92e9a9ace4d7177fb97d +b94a434a98efa493fbbc989360671bb9 +cd9ce9a01ed810af70999d8ce4c63811 +4c639abb75a0ae0f22c3384cb9c68441 +fe31ffcced1717988c854c2f3492466e +b56d81337f9bbf0d838df831e9b40216 +0be9161adfeb2dd1c3f20338bfb3ec4b +be7b7c9fa1ab09d6578a3f2a82bfafe3 +f6bdc04b4611ddf0aa8403bcb04292f7 +1c7146a10f3c76b0c1dd4af354b14982 +0d3d987f94aee65f84436696bcf33ea4 +1a5c9ac3ee859361ad5477ea792506a3 +e827d60f27e35d8e5b05af748ba897dd +5b7899bf7a6267d9b3b8c82f241a1d7b +6dc9fe740cf4a4b93cb0953a3c2a6026 +27adf814806fd4a51c1ffc84122c5c8a +f74e94ab992c8f27de264993a09ab429 +5eee0f1591d10c159763749ec86b9ecb +46898964a3889615d9f7c22a81e0a0e7 +8fb58d6770971b0f12e40b31ad65b4a9 +eb4ce130268dc13731dcd16ff492d0a9 +23532a54e8005860ad5e77f4e3392827 +07fedc4dc4891d1a90c501a781a666f2 +83e8341035b37dd70a92a6eed5406927 +6c9f7b3b25734d58f21f5050642874a5 +ef661042e6624f4052ce86d8f233d780 +efe794cdfad5cb86656e29854a1f5c92 +e5f19a0045481443bae165f03598a9ba +b8fe8691321edbf308a9d60bb817c6af +f31fdd0f1aef106005e6d29b72229fa1 +239ed45c3cb734db446adfbbe3dab8a1 +2c2303411c7d25617a54106aca18070d +de179c41aca8bcdc388964024948ff8e +ca335b74d59bd50832267d3bf28f81df +dabda7a1cbaa8ea5104c57c8950b703a +076352a22ecea5ebc876812f62c1cb8d +ee0a2bdec712a9413623d8a920714b96 +a927c3a99f2843de4133377c690db9b7 +1fa98cff485549d49799dc8cf987a8af +74013a076a786a26c7e04217bb51031d +a44ca9661e967bb2e98af65277dac72f +d30897726b635548dbfa5cebffd9cd63 +4ad04a250b8029c9a7bf6529ee8793c3 +de41e337d96fd23619121ea709861e1a +18e070fd32cf732b9f37a0083320eec2 +7dd4b27ca8906182f684d0ee4ddb98c4 +70a440a8bd06ff40f6e9135946eb174d +b8d052366e752ce7c803abd24854e934 +8ab9dfff746ce3e62c6e04feb7b48528 +ecfca8b371616efe78e9916dbf825f5b +5f76da828c37fc4edb4557953539c92a +ecad54f76ce3bc233e02fc6fd7f94628 +e8a1cc06bfec7f677f36a693e1342400 +9ad0fe040e44a8e7146c3dd8582b6752 +4e56f978f94cf72158fd4311831b4f9f +3b95686fe49f50006607d5978aaa3efc +fa354daecc45f14b82b0e7e567d24282 +b7c30cf902e74c10e3d5c3af7e854f6b +e9369a7ec98e63186bdae77025cb5519 +57b441e2f3397d2628657e636cd2fc80 +8ae3a1e880ffb884260ec26e8fcd71a5 +eb7d8f9199945e8a1e5c3708da45e08b +d7dd1997c20a1029f9bd0fd1e2d2ed92 +a986ef62ef378583985cf0d0a34d17d0 +ad5bef0d6ad3434f871983ed09aaa43c +326f662a5c18a14d26c3d35131ea4b4e +ea4bf919aebf4add0024d91ee6f640d0 +9cc49e156084d2c757bd6d502bae8309 +9c18d4c75cc02337c277532ecea4b9fa +4159a65b7db275742e998fb855e7b9f3 +df34d37f6b4ef078bd9570efdd8fd2e2 +84d2c12c4f0c28d288464d33a23f227c +17b55bbd4222066960e54182e1e95f0b +75eb69b22793852bc892ce264c421a1e +de4abe78e28e2718200c76237f2ed42f +1149c8fc988799f43f6e5069355e108b +4129891ff13ddd62820f6f3cdbfa95da +c8758df3c9ad4d311516ea39fe734052 +360ddf0b658fd764ef5ae9bf7a8a1a12 +ad054e0e84e2b8e2b02ce4dee7688226 +cb434f8c5fad9793ed142805afa861a0 +83a3d5436f96cb2cb31d929794425f31 +34dde0f0fe7d4fdb359df1fccbf5fcde +7b77219e9549fad49e97c380f7e1f362 +053f4e89ae2355c5cb259d21e85eb9cd +fc45c5118f642cc479e6a550756f1a4e +0138351089a87a2ddc2d98255ce6b8cc +1f3e42daa4b315f2a0e6a530e0cc6976 +aec4974f238a6e04dcb07e20ad861230 +7a27fedaeec41b5832bda3169d76cd05 +154bd1371ae66ad3ab9a9ee6b1324e36 +a4594c9e974eed1fc159cc306dd7378a +431acd1a4a4d6036057c9906da8add5e +f6afe47bdedf075c7e188b2640152cf7 +8bc3bd8625778f64ed7c29698025f292 +51f6bb4db8e6e61cc4333450c6035139 +0baff1c675866bf259d3ac9417a33464 +6e8a56a9a005c6c6239ccbdf48f59aa8 +6565bceb49f962f797f49084f3f819a1 +2267037a7f3e753c653218fcf67ce9c7 +aca1ae6237f498986991565b0307f0da +785bb09a5f25730a3aed4de12da4d9ea +4eb5472f4e5243fcd4a76533789e829a +7d725ae9a8e569f49c56194226b64dee +7396f5d4491e79ec1ac0ce7a105bb233 +aa64644a4877da34e2197c5f2dc375c5 +2165718fc24bf21f1c4e0623c8e8d811 +e1f45852024724f00ced7935e297983a +deac06cde1f6b18a53a2cf0b03998da2 +8371f0970efbc6099c50afbbd4f0e477 +985d909280bc20607f4cb4941ae535f2 +abcdd18a791546544b52c0587dbd6107 +23e8b5a657c962a3e77979859ae1400e +cc4fab29cc180ffa888be396ce6aa6f5 +b553506daedf701ccdc437fbf3e6bbe4 +d707ae093ab94607010ddda09fc8a5a8 +76bdae04521ba996636c4dc431040031 +556c14fd0f3ff7bd6b435bd630e48811 +b500501957d4b8b412ea0102c842dd5e +d18506a74c66e4d8537269c10c783923 +c9b4b691f4d88b7d2b4d5b770b05c8bf +ba915c678f944fe5a480364ddc3382a8 +78134c91a1ffb2e21594daa2c2a932fc +6fc6c8790dfc301ee38b8b63e18def5c diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 new file mode 100755 index 0000000..f251291 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 @@ -0,0 +1,196 @@ +da39a3ee5e6b4b0d3255bfef95601890afd80709 +3cdf2936da2fc556bfa533ab1eb59ce710ac80e5 +19c1e2048fa7393cfbf2d310ad8209ec11d996e5 +ca775d8c80faa6f87fa62beca6ca6089d63b56e5 +71ac973d0e4b50ae9e5043ff4d615381120a25a0 +a6b5b9f854cfb76701c3bddbf374b3094ea49cba +d87a0ee74e4b9ad72e6847c87bdeeb3d07844380 +1976b8dd509fe66bf09c9a8d33534d4ef4f63bfd +5a78f439b6db845bb8a558e4ceb106cd7b7ff783 +f871bce62436c1e280357416695ee2ef9b83695c +62b243d1b780e1d31cf1ba2de3f01c72aeea0e47 +1698994a273404848e56e7fda4457b5900de1342 +056f4cdc02791da7ed1eb2303314f7667518deef +9fe2da967bd8441eea1c32df68ddaa9dc1fc8e4b +73a31777b4ace9384efa8bbead45c51a71aba6dd +3f9d7c4e2384eddabff5dd8a31e23de3d03f42ac +4814908f72b93ffd011135bee347de9a08da838f +0978374b67a412a3102c5aa0b10e1a6596fc68eb +44ad6cb618bd935460d46d3f921d87b99ab91c1e +02dc989af265b09cf8485640842128dcf95e9f39 +67507b8d497b35d6e99fc01976d73f54aeca75cf +1eae0373c1317cb60c36a42a867b716039d441f5 +9c3834589e5bffac9f50950e0199b3ec2620bec8 +209f7abc7f3b878ee46cdf3a1fbb9c21c3474f32 +05fc054b00d97753a9b3e2da8fbba3ee808cef22 +0c4980ea3a46c757dfbfc5baa38ac6c8e72ddce7 +96a460d2972d276928b69864445bea353bdcffd2 +f3ef04d8fa8c6fa9850f394a4554c080956fa64b +f2a31d875d1d7b30874d416c4d2ea6baf0ffbafe +f4942d3b9e9588dcfdc6312a84df75d05f111c20 +310207df35b014e4676d30806fa34424813734dd +4da1955b2fa7c7e74e3f47d7360ce530bbf57ca3 +74c4bc5b26fb4a08602d40ccec6c6161b6c11478 +0b103ce297338dfc7395f7715ee47539b556ddb6 +efc72d99e3d2311ce14190c0b726bdc68f4b0821 +660edac0a8f4ce33da0d8dbae597650e97687250 +fe0a55a988b3b93946a63eb36b23785a5e6efc3e +0cbdf2a5781c59f907513147a0de3cc774b54bf3 +663e40fee5a44bfcb1c99ea5935a6b5bc9f583b0 +00162134256952dd9ae6b51efb159b35c3c138c7 +ceb88e4736e354416e2010fc1061b3b53b81664b +a6a2c4b6bcc41ddc67278f3df4d8d0b9dd7784ef +c23d083cd8820b57800a869f5f261d45e02dc55d +e8ac31927b78ddec41a31ca7a44eb7177165e7ab +e864ec5dbab0f9ff6984ab6ad43a8c9b81cc9f9c +cfed6269069417a84d6de2347220f4b858bcd530 +d9217bfb46c96348722c3783d29d4b1a3feda38c +dec24e5554f79697218d317315fa986229ce3350 +83a099df7071437ba5495a5b0bfbfefe1c0ef7f3 +aa3198e30891a83e33ce3bfa0587d86a197d4f80 +9b6acbeb4989cbee7015c7d515a75672ffde3442 +b021eb08a436b02658eaa7ba3c88d49f1219c035 +cae36dab8aea29f62e0855d9cb3cd8e7d39094b1 +02de8ba699f3c1b0cb5ad89a01f2346e630459d7 +88021458847dd39b4495368f7254941859fad44b +91a165295c666fe85c2adbc5a10329daf0cb81a0 +4b31312eaf8b506811151a9dbd162961f7548c4b +3fe70971b20558f7e9bac303ed2bc14bde659a62 +93fb769d5bf49d6c563685954e2aecc024dc02d6 +bc8827c3e614d515e83dea503989dea4fda6ea13 +e83868dbe4a389ab48e61cfc4ed894f32ae112ac +55c95459cde4b33791b4b2bcaaf840930af3f3bd +36bb0e2ba438a3e03214d9ed2b28a4d5c578fcaa +3acbf874199763eba20f3789dfc59572aca4cf33 +86be037c4d509c9202020767d860dab039cadace +51b57d7080a87394eec3eb2e0b242e553f2827c9 +1efbfa78866315ce6a71e457f3a750a38facab41 +57d6cb41aeec20236f365b3a490c61d0cfa39611 +c532cb64b4ba826372bccf2b4b5793d5b88bb715 +15833b5631032663e783686a209c6a2b47a1080e +d04f2043c96e10cd83b574b1e1c217052cd4a6b2 +e8882627c64db743f7db8b4413dd033fc63beb20 +cd2d32286b8867bc124a0af2236fc74be3622199 +019b70d745375091ed5c7b218445ec986d0f5a82 +e5ff5fec1dadbaed02bf2dad4026be6a96b3f2af +6f4e23b3f2e2c068d13921fe4e5e053ffed4e146 +25e179602a575c915067566fba6da930e97f8678 +67ded0e68e235c8a523e051e86108eeb757efbfd +af78536ea83c822796745556d62a3ee82c7be098 +64d7ac52e47834be72455f6c64325f9c358b610d +9d4866baa3639c13e541f250ffa3d8bc157a491f +2e258811961d3eb876f30e7019241a01f9517bec +8e0ebc487146f83bc9077a1630e0fb3ab3c89e63 +ce8953741fff3425d2311fbbf4ab481b669def70 +789d1d2dab52086bd90c0e137e2515ed9c6b59b5 +b76ce7472700dd68d6328b7aa8437fb051d15745 +f218669b596c5ffb0b1c14bd03c467fc873230a0 +1ff3bdbe0d504cb0cdfab17e6c37aba6b3cffded +2f3cbacbb14405a4652ed52793c1814fd8c4fce0 +982c8ab6ce164f481915af59aaed9fff2a391752 +5cd92012d488a07ece0e47901d0e083b6bd93e3f +69603fec02920851d4b3b8782e07b92bb2963009 +3e90f76437b1ea44cf98a08d83ea24cecf6e6191 +34c09f107c42d990eb4881d4bf2dddcab01563ae +474be0e5892eb2382109bfc5e3c8249a9283b03d +a04b4f75051786682483252438f6a75bf4705ec6 +be88a6716083eb50ed9416719d6a247661299383 +c67e38717fee1a5f65ec6c7c7c42afc00cd37f04 +959ac4082388e19e9be5de571c047ef10c174a8d +baa7aa7b7753fa0abdc4a541842b5d238d949f0a +351394dcebc08155d100fcd488578e6ae71d0e9c +ab8be94c5af60d9477ef1252d604e58e27b2a9ee +3429ec74a695fdd3228f152564952308afe0680a +907fa46c029bc67eaa8e4f46e3c2a232f85bd122 +2644c87d1fbbbc0fc8d65f64bca2492da15baae4 +110a3eeb408756e2e81abaf4c5dcd4d4c6afcf6d +cd4fdc35fac7e1adb5de40f47f256ef74d584959 +8e6e273208ac256f9eccf296f3f5a37bc8a0f9f7 +fe0606100bdbc268db39b503e0fdfe3766185828 +6c63c3e58047bcdb35a17f74eeba4e9b14420809 +bcc2bd305f0bcda8cf2d478ef9fe080486cb265f +ce5223fd3dd920a3b666481d5625b16457dcb5e8 +948886776e42e4f5fae1b2d0c906ac3759e3f8b0 +4c12a51fcfe242f832e3d7329304b11b75161efb +c54bdd2050504d92f551d378ad5fc72c9ed03932 +8f53e8fa79ea09fd1b682af5ed1515eca965604c +2d7e17f6294524ce78b33eab72cdd08e5ff6e313 +64582b4b57f782c9302bfe7d07f74aa176627a3a +6d88795b71d3e386bbd1eb830fb9f161ba98869f +86ad34a6463f12cee6de9596aba72f0df1397fd1 +7eb46685a57c0d466152dc339c8122548c757ed1 +e7a98fb0692684054407cc221abc60c199d6f52a +34df1306662206fd0a5fc2969a4beec4eb0197f7 +56cf7ebf08d10f0cb9fe7ee3b63a5c3a02bcb450 +3bae5cb8226642088da760a6f78b0cf8eddea9f1 +6475df681e061fa506672c27cbabfa9aa6ddff62 +79d81991fa4e4957c8062753439dbfd47bbb277d +bae224477b20302e881f5249f52ec6c34da8ecef +ede4deb4293cfe4138c2c056b7c46ff821cc0acc +a771fa5c812bd0c9596d869ec99e4f4ac988b13f +e99d566212bbbceee903946f6100c9c96039a8f4 +b48ce6b1d13903e3925ae0c88cb931388c013f9c +e647d5baf670d4bf3afc0a6b72a2424b0c64f194 +65c1cd932a06b05cd0b43afb3bc7891f6bcef45c +70ffae353a5cd0f8a65a8b2746d0f16281b25ec7 +cc8221f2b829b8cf39646bf46888317c3eb378ea +26accc2d6d51ff7bf3e5895588907765111bb69b +01072915b8e868d9b28e759cf2bc1aea4bb92165 +3016115711d74236adf0c371e47992f87a428598 +bf30417999c1368f008c1f19feca4d18a5e1c3c9 +62ba49087185f2742c26e1c1f4844112178bf673 +e1f6b9536f384dd3098285bbfd495a474140dc5a +b522dae1d67726eba7c4136d4e2f6d6d645ac43e +e9a021c3eb0b9f2c710554d4bf21b19f78e09478 +df13573188f3bf705e697a3e1f580145f2183377 +188835cfe52ecfa0c4135c2825f245dc29973970 +41b615a34ee2cec9d84a91b141cfab115821950b +ab3dd6221d2afe6613b815da1c389eec74aa0337 +0706d414b4aa7fb4a9051aa70d6856a7264054fb +3cbf8151f3a00b1d5a809cbb8c4f3135055a6bd1 +da5d6a0319272bbccea63acfa6799756ffda6840 +fb4429c95f6277b346d3b389413758dfffeedc98 +2c6e30d9c895b42dcccfc84c906ec88c09b20de1 +3de3189a5e19f225cdce254dff23dacd22c61363 +93530a9bc9a817f6922518a73a1505c411d05da2 +e31354345f832d31e05c1b842d405d4bd4588ec8 +3ff76957e80b60cf74d015ad431fca147b3af232 +34ae3b806be143a84dce82e4b830eb7d3d2bac69 +d7447e53d66bb5e4c26e8b41f83efd107bf4adda +77dd2a4482705bc2e9dc96ec0a13395771ac850c +eaa1465db1f59de3f25eb8629602b568e693bb57 +9329d5b40e0dc43aa25fed69a0fa9c211a948411 +e94c0b6aa62aa08c625faf817ddf8f51ec645273 +7ff02b909d82ad668e31e547e0fb66cb8e213771 +5bb3570858fa1744123bac2873b0bb9810f53fa1 +905f43940b3591ce39d1145acb1eca80ab5e43cd +336c79fbd82f33e490c577e3f791c3cbfe842aff +5c6d07a6b44f7a75a64f6ce592f3bae91e022210 +7e0d3e9d33127f4a30eb8d9c134a58409fa8695b +9a5f50dfcfb19286206c229019f0abf25283028c +dca737e269f9d8626d488988c996e06b352c0708 +b8ffc1d4972fce63241e0e77850ac46dde75dbfa +e9c9bf41c8549354151b977003ce1d830be667db +0942908960b54f96cb43452e583f4f9cb66e398a +fce34051c34d4b81b85ddc4b543cde8007e284b3 +61e8916532503627f4024d13884640a46f1d61d4 +f008d5d7853b6a17b7466cd9e18bd135e520faf4 +bd8d2e873cf659b5c77aac1616827ef8a3b1a3b3 +b25a04dd425302ed211a1c2412d2410fa10c63b6 +a404e21588123e0893718b4b44e91414a785b91f +a1e13bc55bf6dad83cf3aabda3287ad68681ea64 +d5fd35ffabed6733c92365929df0fb4cae864d15 +c12e9c280ee9c079e0506ff89f9b20536e0a83ef +e22769dc00748a9bbd6c05bbc8e81f2cd1dc4e2d +f29835a93475740e888e8c14318f3ca45a3c8606 +1a1d77c6d0f97c4b620faa90f3f8644408e4b13d +4ec84870e9bdd25f523c6dfb6edd605052ca4eaa +d689513fed08b80c39b67371959bc4e3fecb0537 +c4fed58f209fc3c34ad19f86a6dacadc86c04d33 +051888c6d00029c176de792b84dece2dc1c74b00 +1a3540bee05518505827954f58b751c475aeece0 +dfa19180359d5a7a38e842f172359caf4208fc05 +7b0fa84ebbcff7d7f4500f73d79660c4a3431b67 +9e886081c9acaad0f97b10810d1de6fcdce6b5f4 +a4d46e4ba0ae4b012f75b1b50d0534d578ae9cb6 +6342b199ee64c7b2c9cbcd4f2dcb65acef51516f diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 new file mode 100644 index 0000000..7332dea --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 @@ -0,0 +1,196 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 +09fc96082d34c2dfc1295d92073b5ea1dc8ef8da95f14dfded011ffb96d3e54b +33a633841666a5c291a82bfae65deac5c537d05f9fe926cbb5b7281bf90ad150 +8e2cc699f7e677265069f172d4cba15c146e954d7e4f2a8c176576035275b7a0 +8096d72b968a2dbb7ceee163c1981f7f1ec11ee10051b2dc2a8d7601d4e56971 +2cc06402328f034d1909fa7b95f34cdb5585ce7f9096bc4082c97904921f6304 +99a8d6823b803a8d41ed7c26322b4ac8fdc86ce4457ffaaf8600e99595f1577a +5d73704556bd458af1b90383d98591c1d01894d99b394fb7647d3d0cbd45f9a0 +3b9606c772ea20bf2889732b034f9fd476ceddefe8ec4e3704c5993e38dace1b +b858d7c61b67e1688c267ca83b57dd0947c4e5acc4eb3d130fbd92222b66a9ab +87574390294ef6d212b6d8c44ebd5c88e932036dadd0b827c6cb25cd120bfdf6 +afe90242f095e967523c12333b0093d4e532a0db0f27dcc25d44d23ffb62094b +55731252db2418c49f15d7f0f146c6506589f016a82c72cf8a6276ac6bd123c7 +c2e0ed603bfa67292b78a29264e409a2e0c98482cdb59cf4fe7cafff69853d11 +517f007a8b65d4197411c35b14edb1340490a9be7a6c66b8c827b1e101a05b5c +76c977fdc97261cd0956ce1319476d314bc57d8691c7884cd0a7ff3cf825c31f +f10c26637ea8ca2d0898fa661f087f13f174fe0ca1c91862ce3b6127c3430f51 +679b95521601c0ba63ce882046abd7a8cdb8e78d5c0ee9f38c21dc47ca846195 +af369f2162152e43847b4d0c595dcf2d27059563909425f37928bc01090f2f34 +7e1f6f080a60c402bb9c39578f75afc148a0746c656ca243f75038b82304bdf5 +8d6df02738597d95e2eb9e870d4177339728d9ab8b8d61aa96f0b6d1b5ad6efd +d0a9699291dead3f6fba3b648c28537a04caea4b96b145802c06125a17c3faba +d504026213b322cbcb0dbadd6a1fc6c708825019da9bac7aec973f750cbf2d3d +66c1a2578b41c3a200296e85d4d30a1876f8ca5cb941ffb1420e04d8e37149a5 +b8a87b047350912e4861e4aab7d1046d5372797ecea81d187f8e2c117db535dd +8d2b52d4d4074d471d037cdf9eeb13c18ef9ce4949fce00d106ef0880f2db5ed +3d182e9928b2433c94255452170e59e3f4cca3dd29ea2e9b01e94e89da595393 +17c3f5d88ed7f3f62be0e28913357d65916389c1633db8fb62b92e14230d3611 +93788128441c894247bd9ccd6fc8af146c0ee76cdbe4e1c5a8dfa81dd0c338b4 +c7855ac54d2c5767273eec327efe39fdb3bad74121bdd8d2065484268727539e +d1e1f2aca9cfe8c6460f576661190a8008705ef13207c4c7200a2d6b0605f519 +b1843454b0258016558abdbd899319c1fd12d03e0c3d9e882da03de9cb981777 +2834dcb6957b97fdde61b532d151ee4482bface8714fe36cd072b4783765901d +47d61de59879013f64eb78fa8f6c8b906f7d25b8e1c3ca888f32421749c0d042 +855fc59aa873328501ab0b1ce9c60a7d5582662c725605ebe02b64a13e34b3bc +e05939e8ff4ed77a11522dde249a74841c54970d984e0bb6f77ac64f1fa313b0 +078778fed0e382da5d7dd36f585e1f1aa9b92d4caf20b85c0f6dd346de8d3998 +263140810ae46430e19ac1a4a98b6204b63031b282ecb28594bd837268104308 +ed39f65ea0e6cd8fb39bc5d94a1554dfd0002733e01618161d58a7b7dc8be834 +89830272d1fd54040f9329a39c7f491f15eea851095e0bd2d0bb412baeda7445 +c9b63e8ac2e87494f98c9ece5d74f4540090c286166efdaedc6d59a0f623e5f8 +509e6b7dacb70bfa62f3964eba990b9c576fd2485c1040fefc8eab5f07269f4d +8bb7546f64ce1cab770407de791ab25f7bfbac3e071810310ee674c2824e59ac +ac5bf3cad821e7ad8b2ed7bbfbaaa5e7abb30606afd8ed5d6a18a0d0eba343d3 +f7995f433d17bee25f44c918de82eb147b3bfef24045ff8fb17ffedf559e06b7 +2c465ddc53e88894a2279e30b9e6feb064c66b15dcf5a38722f5c92d65a84bab +b0ced82dc52c4f9b1dec098a80a23a4a711f3a8c9c3684f0761b0e8a29ba560a +f8dce75572495bc241288c07246acf7a157d462a9c01d1491618f073e57f47e2 +46d89d780f178334d19e02c41d5af2e265e2190896dce94822b99c19adc3ff6f +968954bafff8e2a118d3aedffc6283b30efddbac0af2245195c2a32a665a5d54 +33f78a8a6adc466fed41020fa799aa537cc1c1bb4e938c06a1baec97f7b3c26c +5f7f49d1c307363de95d450b558275f8d5a6780ee47246268e6729f7733e535a +9f126c6e07ed2744cef5de1f468b2ed1c51a13ec3c8351935b9656458a3dc40f +b8e3d23621cb02bcae060bdf5b6b7db1f024651f98ec63766c20b7883bc033d2 +689c608602d5e5d37a0285eeb5006d97addd7c2b8e006770fad588eff621c971 +17c6f0073c4f92d5eedda57ca2506aa6002695c6b7bf12e4dbf4dd1a7fbceb08 +504472bf96d0a3da1098dacacac48886d1ab92929187de95c7f42eab9907801d +ad3a49ab7ad5b69182301d9ef971feab72f770f4d9f60f6db308ffea746db005 +5cdcb342f26857e8db5ac97a89da6197759adf384ab241a8112795241983238f +4ec9883c8ad72131c79f14e4f1e75042a61100a5bc290fc344ee3c2adc99c143 +375c64eb3361f34b4d89078fa95d082c74bced92436aa3d50031839375d6473e +8a0a36538da941bea6c614b2c038424588d8d2505039f70cbff291d4f0f9f6a1 +a4dd6338174ebeda6a25b88d754fa5b95cad27902eb0bc8321b76db62efb1abc +a644092a1de8e05e17908ce565d55fcf39e30585565d96bf1c13eeb9f3401803 +7697b1435a5bdc094038469fc5268615cbe94641b2165bee62466426ab414c97 +62f249a85b14b477e764e63e9821d3f44dd2c745293f3586eff976266311a39f +eb2c75aa7330a6589d09f58231d1218e4124ba49b7b0c5245a76a5101d136449 +90c096f9852990cf0fcfbd36ffeb577b4d106d66e9c7a18abdc6f7a3b1ddbab1 +327b0e47ba3bc200579ac67ac38968e0df655e2d22ffe3adf238f7ac9029a1de +bdf4ef8fcafbe13b772ca217eef56a316210e71f69cd943433087c68d9a67bb9 +72c955a5adaf9e49d565342b41b36ee5ab9b5a394d003b804e4e361a46bda571 +cbd287d6a6707e2cdc8e63a29f758facbdab375bb252183d3af877dea8d25260 +7aa856fd19741a16ec634b1f653cfd5ac224278652e0b0a2903e274be20a048f +8410cdb01c659f05741fd29469d0dbb0251b4fd8e708abeec4a879047fba7c37 +b5f811baf9c441d04f010f76bcd7eae80c5bb249a40ce37436f0a0296849b8ab +9be38d9ac8a9c30e8a5e86e3ede291b23bb381ee41dc662421e394f6b8b9881e +ef45cac2d6f325a523c40a989f5554e152f8d65cbd22d35824d1f28378658432 +8e3d126f3a316e0ec49741a3ae6215e29c4acaee364272b7087d9b766579e00c +a43ee360b1dc90c573bef4145e1d4557166d7cce6ea1ed33e0cbd909643c3621 +5396745f9645dad55b732efde57de49c2ae40624fee192579014dc2b79d814d5 +b617be050dedb47be64d82dc19e3d84b6799b5bada18944df5417759a85e445e +17d5520a82dd7c945de6a92200d036cd95bb16330f0f95df802d23e90c8e5c2c +b71e5a677801057ec719ae2655732720644bc8f999a8698876c92e4323d4ae0f +80c6a41efdfe452d1ad6f3b0d5eb31b962c332a9bb7e4f7ee6f4aaa18a3b81d4 +32ae8512b486d4523ca7a630556758655a5cff12aa5cfcb8dc5e65b21a257f4a +0f14c68ffe8c26e9d2ecdd5ea8027b6549b3e8742023ffbdc7547227cc27ec2c +85dff510ebd3f1fa617a2273ed67ef5abe4774cfe95657fe380e75b25090664d +7a852eb3b59ad350c9d47adf1ce0812d06866cca8e1f2c65c893e7952a62eea4 +49cfe8b6302a2d45b866a26c4940d777df4f588ebe1bafeb275a8a03a1eeb0aa +e6e49ebcd83acd3a9ec0b100e26c4d82388eb9378ecfcbf967a31c4951ad0c01 +9edf4d38cdd6e73e857f1ec91132499e7f930d2cdee6b3583a8f062ff7e9d848 +768dbebcd6aa66337810b7457964c63322904e9242229e5d98b808799f7f4cd4 +867a5ab42d15f9843d67438db495a8a581eddd39c3753f3d203225b60eaa9a3e +d7acd8d042b8c6802f6d9262055a6e296f3254674745f18cd1b21244e1acb9f0 +fe781c4d49e73ca9f82389b6d58f3def857cffe624acfb6a2a5a8e9559623f37 +96fb72ddb440bb1f00dbafc97768f9890effcc172fcc395de4f2a19318c46c86 +b63555a77fefcadecfa88a770e70f1d51d46ae68fc672ad4770804495eb1b867 +161d1a609fdeb2fa425761bf0b751dfd25e7a0a02995920921f99f63331b76d9 +c80931a1263d7f192937eea3e453006b19525ed981314ec3fd561d256e8e135d +a3b6ba9a5cba6071a99b1a43454053bfc3e6d1338ccf0063d5d71247a6b57566 +7d057dc07ed5a7c11590262a0a18c8cd614a029ca12fe08bfedc87307b5f65b9 +0b7744d3394c04618e6376cd450cc3fc81586493ab5081a9b3b155938d98563c +e8d1ea7154ec53c175761311295f69037865db32ec22976b6ddb981d226760ad +40aa287bdf661317439fa5ffa77cc9fa9ca3df504aae74b0ba83b2fbebbaac83 +ee2e8fb7206e2e8fdae91afcc3e903d534b304069f232c68f53407cfc6d0bbae +b940c011eaef2b772ba03659581d525e0b6148f9c59cb7120db55ce18bf6d695 +9574545ba02bd75bb1dcf038884bf9d7892bc017215308f01ebba7932c014a62 +da685c53ddf810225507141759e3c74ffeaa1c5eecbe150386a83027e7014077 +5c0769369e4fb9f9d9e599612923554fb2f1e6d87eaeed283f6106845b66b532 +19056a3d33ebe1b84a100c27fc72d0265ceeb9c573d7942a4d44983238d34ea7 +8a5e6e6cae30d4283fd70af96d9c53d8ea45ca48892d313981fe208b1384f0dc +880992dadfeccb31f289522214209eb87f41fea5fd3155ab274e9a6fdc6f9f64 +ea7a2b0e780fc6dc8843643a2bc18a17226a1bb3d9e1467cf0be2201decce2c7 +2077395cd7562dd5e9965ea620cedf32c805f50f748c4ee6e82af960c5ce2d66 +2dbdc632baa5d0831808518beb80e3737de5bbec3dd0438e75dd30b2ea7fbb90 +ced4cf34982e0abbef40e876659544c4ed01f1975351490984aaa429fef321b0 +69339b4534eecca329ef2af397ede2a882d7e315a871dd2b781b8e0f4277ee66 +79cfbb9b52e573e22cd3427ec258d69e2d19fd27de15df96ca9006ccebe7b58e +1203d54626871bccfa8abb8bbd740b9af3c7266bc8490a210074d7f2b0806ae8 +0c15140d3b5e4b180b0b1517a51fa08f82458c02185ef2bc59fae37543ef9011 +ab71b18daceecc7c8fde7cf5f77eacf118262d760bcd383dd7bfa2170895d518 +fa3174d3432fe38241a34a8387811b54c3d0f183468cef5cd6d3fb325b270b66 +c13fd9ed22d33aa45f73748782e4dbb835d180dc0662e160c0a6c445c76f0c72 +b88a842dc14c41c2b5bd74e48fdd2bd0d43cfeea1eb9b154bebfc4f03d8a102d +45ba1056e49828a0385b0b5f9e4933905973f15b2713fee1c1755e2a7a3e8d79 +a0d7d4fda9435ef292b761aed2c9fea576519437a824e96150a4324dcc757605 +7906439843a1c1758c232182eaa66d5e6bd5ad2fbc0157fdc5438e1038966dc4 +35e5a6c17906646cf15c2bed4884129b5134eb2b411400e4d8797126f51a4cb7 +d19ddbd98476519a07cd8917b95eb609e5b50e8088ad68cd7426e8139d5bffc2 +cafea6a1183ca8934867692684194ce9903b375a8036c4c5deb8fb379c3423cb +7e4734ce7e22a515bfe60e296640dec121a089f75034240408fe7be2ed9e5c87 +b09436c29cc3823c434a4689bb67a73a49164bd23ab40c4e04ed99320fd138d2 +d6752f5e2738cbaa2e154b749216babc990297af411dfa2b66c9f942480ff4b9 +0f0cc4994a2a88f58cc38afdf61ff43952473c437d235cec426139c8f43ffb5a +eb9dd875ecf9ec930b1482b8a50c337d48b31590f99cdfb80bbdd160ad4fb49b +ec7435c1c8e3eb1de2871cdc797bff6969b863e5b9fb005b3a7af4ff96680c63 +e5afd502015d80bb43ab7f92f138b35ce5fafa980c5fba78412ffcfa281f9d8d +14e7975021e84497b4daf367f6861c79820308883c4e1254c038a7458a3f2913 +bcefd79629a6d7a8afbf0c8ccfc2c5889f627989e71c3a212d900e3015e460fa +74661206cb19ec00619e1fcdcae443486adfa69a564672c9ee9f48f8ea35d5b2 +341bf4dff841088f3b902c2471b67b49498bda5c045e9befd58af93ade0a8df8 +e5239ecec9ea7737f614ebab502df1248c0a9a0183fc70441fd9ac88040846ce +58e09b4047770bc998b86a4191b7a11eec6fc65bd5e5d0fb6f30d4b7ee0cd683 +9e01666f3284aec585338d0b452aa1712b9d1392c4a265a2ecfc9dc4cadd002b +33aa52b6be6991965ae18124232f108ec7b400528e848e5d8a8d7cf75783ee19 +f854ce37a0821dee06b616d2e86383271c91e09328f884dfef2107712d267601 +a58035c4921e7114b97fde8d4cf04224971d49fc6b23ed5d61a29e133684c809 +4d8963b832c44bab059a206f162890fff4eafd71e535a03609a67fe3c31de9e3 +6ebf98b52fc3c4e77257d176b47d10729baeec4066a9bc78a89d7d02af7ab2cf +366cd811c075198d1749db7075c4c333b6f347b64e44b3744ef28a3957a0feb1 +712157d7d59011c4bf1ee690217f4b0f855816e9bbee6b6aff277b9645340c9a +1dc0a697f2a7c1da301b256e6822879f212beb56fbc7fe1b8e877ccd964c132a +6fb0514a46f06be4bc3798ae82fa6cf14103926f1969b3d70910a9c5d9589e58 +9731a6c8ef6c4d601781f231e5b17c0a5194495d5b01b27aefbb4cd857c0c7d1 +b18a49b7c4114fb94d16ffdce1e1677e6bde99bba443936af10cbedca6eeaf2a +ce197d61ddae42c8b8447aa698b3e7e5d51d9f0cd2034bc64f1a9d1b2b18e3cd +7d9a3aebb470990abb92303f0c2ce5d6c38f9a2198d8f1ae8ab7fbbbf007cc7d +e52d8c79b31f45d4894e0948089da5fc236d33dd79a80d2304043e8c234cf88c +b1870cae9e54cbe8ddd74782c98f6c9ec6eeb835e2765252530d71779685d4ea +69850fe71261572f61d56863a7dc12aeda7931225d0eafb5b7b45aef7b6c8586 +18fdfb38e4f516734cef5de8cba84a54a17cdaf13228621dfcd806c5e822eccd +9db6e6591134181c2c19bbc57f24e11ea161165cde584e1f58c4df2fb5ee8c88 +86eafcaf23edfef66753d664eaa7813b5a16d1abc01a95f74ae88a02e42cadfb +7be29e433c7e17875c71eea08d10ada5a17eea25ead94d41cb1711e8fd204c06 +c1f98aac0cfc98f30c3fa13fb8011b2a1d553e6c03edb8e2a35f47574237fc64 +981571f9393463f49cd5352c024a8998d7b139bc8aec7a512101edb18a7e0954 +8628162a5c9d34c94e60027175f819e98a356832a3d3898a7f11b95e171e2a73 +1c4530860ec79ab73b141a7e64b0de775192a002fa2f3832b6c24972797d5161 +d97097c16c4d0cf169e61cde78e807cd318b8938992066bfe4e266e14146fbba +3a18179cf693d234a8aa913b7362505533b414d60bf7eaf02427157759defaba +8ee61f98cea2659f5ab9d8ec444de3b3e843ab02baa7806e96230a64dee93774 +bc69420ce99aa58de5d5c9ae32c3528b02546347e8f85dca651187142bc2a40b +79b2d4da202168d2c6f7dbff6dba414f71e405731a287a23b58af903f9b1c770 +068c65431e6010461cd77e3d2859fbc978857d1195dc1506ab1b5c9344e1099f +918a1d14de8c5fa363fb3137cf5014020646a1a2235f78ef3ed0d034c74f5761 +ef88b649d012178186dcf0244835232b5b7392e0c1f8f141f5107e9ead559e74 +326f14fc54954b73d704935b213dc797311f7c8fcd88c238c8ab767286dc3f94 +0087e37129b9a2d58b0987a218a3c1be67cb1e08142cbcf889aa617ca3e4640d +93294033c9de9361a3c6cc0df539e2e459f6d2babbbc0623859e18af0d0ccf4e +49640215294d9263bc464538c3c29e42edea637d1427c2f04ebcd828d6fcb480 +ce5cfa5b3b0485805cf5bcc8c24594a6b6fec9249698d317ce20bc84d857eafe +c9ac43870e02c7b36bb1e7ba3ce2e234507c0076f8a77494f268777edf5ebffc +30eb195e3aad4c288af76c66e26c6096f5f7de1b56b43d638ab7119d73cfd214 +338225e3b94025d2b327d72ed3d763a66856e1d1ebcb632bc4d8752000ad9966 +69b6cc0729b2d2877d46a08f3c251ae18f043949a33797c3027668b23c969d68 +3d35c10650a2da8413a2a11b8e7fb891af5da3a9763584caa6cd71bbe68de6ba +baf3bcf323f3e5b91649eeb5f1be977a8bd91915a66297a22fdb1a906d1a7e53 +7fd9b3abc4684e6f8ee591bbac5a36c5060bb09ef7899690416e5300cc14fcd3 +429e454c0cd5d874d7887f8f8def3390a6e54af783c102af6bc3c75c62f3661f +0987d19048e10b925bcf394dfffcf259fc1a15e403673a80bfd4e7fd4f43cef0 +fc774a081d9c93d52bb6a8d99a06ccd7bf32a10154d302524b8c5c5dc1b2969f +6c6afa35f1aad6301dfde6c4ababe2da47d92033a9a41e84ca6f00e5eb29bc60 +1e858dd15069f54478023c4d8518cd5aa814fb15c9eb8df45c44efbb050587ed +5d73820315ebd00f0e419a7fe418ff109664add82a68387daffff4239a2c1b23 +f7f4721be31524d014bacf105b06bacc4bdb953bc04d5a048e1fd4ddc395667e +426cbfa5a10024c4f5deae9146222146c2d75a5bf13e8215c04d7dd17f455743 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0000.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0000.dat new file mode 100755 index 0000000..e69de29 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat new file mode 100755 index 0000000..6f4f765 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat @@ -0,0 +1 @@ +$ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat new file mode 100755 index 0000000..26136c5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat @@ -0,0 +1 @@ +pð \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat new file mode 100755 index 0000000..d3b1468 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat @@ -0,0 +1 @@ +ð \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat new file mode 100755 index 0000000..f00c578 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat @@ -0,0 +1 @@ +8x \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat new file mode 100755 index 0000000..9b3ac32 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat @@ -0,0 +1 @@ +>ü \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat new file mode 100755 index 0000000..611a56b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat @@ -0,0 +1 @@ +çÇï \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat new file mode 100755 index 0000000..0af0f7a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat @@ -0,0 +1 @@ +àûqøùÁü \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat new file mode 100755 index 0000000..90e3f79 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat @@ -0,0 +1 @@ +ÿ|`<€â \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat new file mode 100755 index 0000000..6012eb5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat @@ -0,0 +1 @@ +ð?È`þø \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0010.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0010.dat new file mode 100755 index 0000000000000000000000000000000000000000..ebe52630c8dde36f510b471c69d19443ac0b89f7 GIT binary patch literal 10 ScmbP#{D=I($H$M`GXMZ2yan$7 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0011.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0011.dat new file mode 100755 index 0000000000000000000000000000000000000000..bc046e158990bfb62680d518d7fe4a19edb5900d GIT binary patch literal 11 ScmZRm-+%wWKc+f{AN2qtRRz-k literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat new file mode 100755 index 0000000..3464653 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat @@ -0,0 +1 @@ +Àø0óùÿ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat new file mode 100755 index 0000000..648b68f --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat @@ -0,0 +1 @@ +ÄüøÀðAÿ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat new file mode 100755 index 0000000..b19f410 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat @@ -0,0 +1 @@ +ÿ€GüÀ`0à<ÿ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0015.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0015.dat new file mode 100755 index 0000000000000000000000000000000000000000..1e4de6c147e0adf8399e1d77b2fcefbfdba5e93c GIT binary patch literal 15 WcmZp$Z?XG-z@DF>{($`RKMVjhqz2Fc literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0016.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0016.dat new file mode 100755 index 0000000000000000000000000000000000000000..7c4618363426e188afd40230ae39b42d1e1f4697 GIT binary patch literal 16 XcmezWpq{a@@qgog20I3Y`UZXgO05S? literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0017.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0017.dat new file mode 100755 index 0000000000000000000000000000000000000000..5b4570382eb6a0a55b8e1dff42c098f1ec63a742 GIT binary patch literal 17 ZcmZRuV2LM4K2`m5r literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0018.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0018.dat new file mode 100755 index 0000000000000000000000000000000000000000..47c17ed443dd0eef0162ae4442cf28aea68d69b7 GIT binary patch literal 18 acmb<_e?YG0{{#7d4Dug1{vW9SzyJVaEeZ+% literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0019.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0019.dat new file mode 100755 index 0000000000000000000000000000000000000000..4ed952ace3454a17ac8512cf8337c17e58e96a5e GIT binary patch literal 19 bcmaFB-@wkp`2PX(2mK%R?-?o>|1kgnQ2+=c literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0020.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0020.dat new file mode 100755 index 0000000000000000000000000000000000000000..a7387d70212a852429e82c7554da6e91b128f92d GIT binary patch literal 20 ccmaFPAi(fLg8##RhW`!rhyQ)x|HJqn0AaQYfB*mh literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0021.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0021.dat new file mode 100755 index 0000000000000000000000000000000000000000..a330c33d2f2b29e5a6a2aa5205851966f0987a85 GIT binary patch literal 21 dcmZRO|H1!<;Saw^?w-T|1kgnhR+Hc literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0024.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0024.dat new file mode 100755 index 0000000000000000000000000000000000000000..37ab0ba8597eeefad9bfe1b6b8cd1e67ab7cb77b GIT binary patch literal 24 gcmcC#Z+O7|fZw6ev82Ep%|6%z5hXDYtTnr!p literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0027.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0027.dat new file mode 100755 index 0000000000000000000000000000000000000000..b068ef30a9ff528e6b853fdc31e2890f30404330 GIT binary patch literal 27 jcmZSJ|6zY1fua7#e+K3cHtYxLAK3q3WT<2Qe}Dl1p_mJ* literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0028.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0028.dat new file mode 100755 index 0000000000000000000000000000000000000000..98bc2d9fb11935124cb239f3aaf56eda2322f1c6 GIT binary patch literal 28 kcmZSJ|G~^4|DS>XAA>yu^Zy6z2mUkI)PG?7|HJ-20E>JJ{r~^~ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0029.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0029.dat new file mode 100755 index 0000000000000000000000000000000000000000..97bfc3d26b0629ed401752421bd8067d960f87a1 GIT binary patch literal 29 lcmZQzeDFa29|Q9r2LAsK`2RETG1ULz|Hn|lVE>=tKLD_73?%>n literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0030.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0030.dat new file mode 100755 index 0000000000000000000000000000000000000000..25f09c046a5f98db79ae82f89230ae3eb11af853 GIT binary patch literal 30 ocmV+(0O9|DLI1=403HAj|KR_C58wcQ_x}O@0sr6s00IBt0QhPUE&u=k literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0031.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0031.dat new file mode 100755 index 0000000000000000000000000000000000000000..988f3aceab93215e177bf5ea1ce082c2b13c68c5 GIT binary patch literal 31 ncmeyt&hY<0{XPc%{|wBJKm7l|Am8}Ef&YJl0`mvvhW~#6`5+Jt literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0032.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0032.dat new file mode 100755 index 0000000000000000000000000000000000000000..f31fdcb07327f91ae94f9f639957bc9ab658dfc2 GIT binary patch literal 32 ncmZRuP++M4!1({)`G4&H4=~jKkY`{xz;J;7za2l2XkY*U>YWZ4 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0033.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0033.dat new file mode 100755 index 0000000000000000000000000000000000000000..396509b36f43bf87bcb901d7c5b3c6c3b873ce0c GIT binary patch literal 33 pcmb3D!T$dT^8?2Jf9!uSSjaQj-(ft!^8Y^r{~rz}2F4He{{aZp4y6D9 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0034.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0034.dat new file mode 100755 index 0000000000000000000000000000000000000000..55c11cbf7262028e4b49fbcbb89c1328a074b080 GIT binary patch literal 34 pcmZo*Z)0Ho|A4{%2Lpct{||m3Q@(+r{>K6S{~u~t*#9#y008h54g~-J literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0035.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0035.dat new file mode 100755 index 0000000000000000000000000000000000000000..cedccf77da8fce9db422c99ea5f5fc0ef99f89dc GIT binary patch literal 35 rcmZSl&mdvP&%plw0K*6Qf9wqj{684%|5?Z%V6boe|404-gZ+O1=D-ef literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0036.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0036.dat new file mode 100755 index 0000000000000000000000000000000000000000..f597deb279cff0381a0d2183922399cefc336398 GIT binary patch literal 36 scmexh|Nj6({Ram7|NIZw`Tx{0|NroZfBpgc|L6ZRFaV{VGyeYp0BLg+ApigX literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0037.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0037.dat new file mode 100755 index 0000000000000000000000000000000000000000..6bcc7ebd4c052ac0771f2aa4c2e4cc79401ec18b GIT binary patch literal 37 vcmV+=0NVcm0snv?0Ds^Beh2^f$N2y75B>lE;1A#cAODB{00Hm-f5HF%OVbkB literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0038.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0038.dat new file mode 100755 index 0000000000000000000000000000000000000000..48e731d1b7f924137bfea46da957700f714b1c91 GIT binary patch literal 38 wcmV+>0NMWl0Du3$0sejg|Nj5*fB(<;2mSyL|G)?T`~W@x2mAnkzz2X2|Cgc@*Z=?k literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0039.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0039.dat new file mode 100755 index 0000000000000000000000000000000000000000..5ebdf8c6988241556bf98b27281dd00c749fde5b GIT binary patch literal 39 tcmezWpZP!gkN^K080!E1|Hr`m|A+j4dmv_z|IdG*{sZIx2S64B0|4Ry6~6!g literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0040.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0040.dat new file mode 100755 index 0000000000000000000000000000000000000000..4ee0307884f5c04b5b3a7cdfb06c26a96f23dcf6 GIT binary patch literal 40 ycmV+@0N4Nj{{R60`~U+F|L_6$01x5+{{!GZAOC;=d;kIezyW{$01gNL;Q#-cSQJhG literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0041.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0041.dat new file mode 100755 index 0000000000000000000000000000000000000000..1f7c8259b0b275cb0190a21c6ade7c22f116f06a GIT binary patch literal 41 wcmX@WVE>Q#4-W$ibnEyX8VEoU(U?a!a0Hhu4|1sGAZ>VAX-@s5009xk|aR2}S literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0042.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0042.dat new file mode 100755 index 0000000000000000000000000000000000000000..9c9044f9c048850aaddf8b78ed4eb7c77fe28877 GIT binary patch literal 42 zcmV+_0M-9Lpa2j5f&ah{@PGIK55NF_-~r$O1pfdZ{s000fCvBn06+i01OI>kKb_YT A761SM literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0043.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0043.dat new file mode 100755 index 0000000000000000000000000000000000000000..572186163d02e67472a69f694e75fd0cb19cb27c GIT binary patch literal 43 zcmew$|DW-H!~X*f>>n7I|2Hs5F#i9;@c$3<|Njj22bljK|9^n_15nuh9|Hpb0`(Tn literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0044.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0044.dat new file mode 100755 index 0000000000000000000000000000000000000000..963f6a806db5e7a99bd229dca7f5c6a454f40906 GIT binary patch literal 44 zcmV+{0Mq{m@xTAz0C)fg-~fOF@IUte05|~t0Qe97004kL|H1$K0RR7w@BknG@DKmQ C-WBZt literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0045.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0045.dat new file mode 100755 index 0000000000000000000000000000000000000000..8bd9b41a582449ee1731fffee92450dc1f84d425 GIT binary patch literal 45 zcmZROVPOCNhat}XKLdl!|NjT<|2IA;V37aAzzh_q|9?QfhyVYF{|)R91Q`GS2LQYd B6+Hj| literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0046.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0046.dat new file mode 100755 index 0000000000000000000000000000000000000000..47ecdd2ee905719c00de330be6b9aa78e4748958 GIT binary patch literal 46 zcmX@W!2Z9X{(l2wgZ=;W2mUeqKOp~y@&6Bo|Nr>^e_&%^IAH(3q2m7^1|ScJ0am*i AVE_OC literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0047.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0047.dat new file mode 100755 index 0000000000000000000000000000000000000000..9d1116f69fa516b4b48d8ef29c6c3d2abab02f59 GIT binary patch literal 47 zcmV~$u?+wr3xh` literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0048.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0048.dat new file mode 100755 index 0000000000000000000000000000000000000000..13f3bd74b5b4d298fc57f12d6ca8de77fb4afa1a GIT binary patch literal 48 zcmV-00MGxx_y7a`06+im00aCF|9}AF|M)-t0048~|NIC4!~gyR003|R1ONCB|KI>0 G|M&oE9vKk; literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0049.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0049.dat new file mode 100755 index 0000000000000000000000000000000000000000..5d6a89dbc5bd2c7c911f6d65ff9d1bb1f99cada8 GIT binary patch literal 49 zcmezWf&cjbKMeN&7#QsTH`q4-$pZ`pjQxU=AM@V^`~MFZ4}!S-{}=#^ Ci5c_& literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0050.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0050.dat new file mode 100755 index 0000000000000000000000000000000000000000..1dcf3abc55cc35721d11d961ac7eab050ffe2663 GIT binary patch literal 50 zcmV-20L}mZ`~U<0@DKO^2j7qX_y7U_{s4dg|9~Ix00A5T06+KuKmYIl{sF^)fC2yi IzyJsT|9}7)a{vGU literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0051.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0051.dat new file mode 100755 index 0000000000000000000000000000000000000000..f9c54997159994354805eb5ad8fce080428f456e GIT binary patch literal 51 zcmWm3u@wLi3`NnONis@CqqA0QVhak#Lv@P_X>@3ykbKLio{scnl@-5-WlYYNf(r-T B9q|AF literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0052.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0052.dat new file mode 100755 index 0000000000000000000000000000000000000000..31af0d4cde291e26b1c87f94adf8fd72347ca4b4 GIT binary patch literal 52 zcmZSh-}wIl^AA1-hW|h0|NjG04Gir6e=z=kz`*~3@gIZzhx!K$_5UBp|NjFNV+2Y5 F2LQz$8$$p9 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0053.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0053.dat new file mode 100755 index 0000000000000000000000000000000000000000..79876b8d8566b1a7b54998033f0d2695f20d2573 GIT binary patch literal 53 zcmWN`F%1A93`N18AfOVEQfo+K!$xty*n#lqcFD;&Qdmkb8XG)~73#=eZPP4YC!Fl3 FJU{0E9H;;Q literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0054.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0054.dat new file mode 100755 index 0000000000000000000000000000000000000000..89373a1cb24321270061736038b9ed662840a4eb GIT binary patch literal 54 zcmWN`F%f_;5CFmZp`gP;Y|us8hk0X>f&>I)IM{Y$&_at?u%_wZ4a-_QV{y}k5xG`#v4jzySgY+}+xnErX2Gurz0Egc1lpU^v}$iDa@X)Uj!ANrv8pGwk5&IQ}om Kb*{QtG#@@m%^jlv literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0058.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0058.dat new file mode 100755 index 0000000000000000000000000000000000000000..011f9fc10e3f6d3b107ab4b85933496af53be6ce GIT binary patch literal 58 zcmWl{u?>JQ3;@BGC@3=mqj)nSs*J%ZjN%c}(O7xJ=?Ic$bqh{#9h1Lf5>InTT>6@3 K+_KYabHWEO;vFdf literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0059.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0059.dat new file mode 100755 index 0000000000000000000000000000000000000000..372e4610303803057f838714a2f33e0a9efec2b1 GIT binary patch literal 59 zcmWN`u?@f=3;@AL6e-y#jAllQltmc9B}K%C_HK65aZ{bNkIMxyXsZ||-5qCq74npa IlJZpj0hvV};{X5v literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0060.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0060.dat new file mode 100755 index 0000000000000000000000000000000000000000..48cce5b3605ab2967ec6b100e105ad46141213cd GIT binary patch literal 60 zcmWm4F%f_;5CFl;q)3T`mx46n1S>c|0+En14Sx(JQ5Wql76kjsJZvtzjWYkQ6kZ6#IVxH1I($`6Nfx>!MHP~SHA@yJ>2v2hS Jl7_QZhYxkp93B7w literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0062.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0062.dat new file mode 100755 index 0000000000000000000000000000000000000000..039ee6a5571b2707eb2e3a62cd105f982db03df7 GIT binary patch literal 62 zcmWN`u?>JA5Qfp;T!MD80c+SX+BuqISTX{oCMTa1uX=KZRKtiu_uIO@IJ7CNCHcIa QQ`H#o@@OR%E*Z4x2d=#!82|tP literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0063.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0063.dat new file mode 100755 index 0000000000000000000000000000000000000000..a7f3d9c8cc6417f16cba08e9fd1f89cf69edef56 GIT binary patch literal 63 zcmezWf&c%11~!KO|39$*f55`P%)r3>0Vu-!|M&mHAhG|)8R{E=+#d|`5C8v2{=;B@ PU_Ow;Q2$^4{~rbbQf?x} literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0064.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0064.dat new file mode 100755 index 0000000000000000000000000000000000000000..5f46b83eb162a4181978e162f03525b2ade17914 GIT binary patch literal 64 zcmWN{K@os33^a)a8>V$gS Pw$P9Y-->z)TRr{*LA4yK literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0065.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0065.dat new file mode 100755 index 0000000000000000000000000000000000000000..1bf5eda5faea553b2e2d2d427e15ae0840d4b785 GIT binary patch literal 65 zcmZQz{KvrD{Q3X?2KN7d?En8^{@=jB#=ua)zz!1n!}tTlIKW^5r2g6e|6%|Cy!{`B Q`u_~_Ky?Pp|Nk=p00> literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0068.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0068.dat new file mode 100755 index 0000000000000000000000000000000000000000..2c6732633ec6c19c70e7e33d1412e54a01ddaa79 GIT binary patch literal 68 zcmezWkHP+c{QnR2KNuMQ|B(OxkAdO;{~rwX{~PT8{|8b(7M`2W>0*gue{2TEEn SFxZ0>G5`7h@E=$?`+or5x*_`j literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0069.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0069.dat new file mode 100755 index 0000000000000000000000000000000000000000..5609f91cc2a51be997d414f038faf7463a6f47fd GIT binary patch literal 69 zcmWm4u?@f=5JSJQ3j?XNO^jfu1m=(1v^MDhbNSP(}ziY UYm{gDqOgW_DQDbJ|Ep$)4o QKZwNEA=4SYxgExUAJT{-YybcN literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0073.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0073.dat new file mode 100755 index 0000000000000000000000000000000000000000..2a7b1700bbfb2b9790c09875e29bc2fe769d4e12 GIT binary patch literal 73 zcmWlP!3lsc6vdt*zM~^_l#V7&;wp~P5emI{C_jEL34}nHM|-`y=`{*mWLOp2WNCqr SoG58%ev?ym{M$*>!8Cl8&?kcc literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0074.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0074.dat new file mode 100755 index 0000000000000000000000000000000000000000..516f7e242e607ab26d3a6d596b0591a4f05ea99c GIT binary patch literal 74 zcmWlQF$#b%5WoT*ZuAHG6d&cT{;A-i?CM;xWL~n!IP3N?L Vs2@l-Tk4dZRf=(F_!V*uihkP_B;x=8 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0076.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0076.dat new file mode 100755 index 0000000000000000000000000000000000000000..c311f8908f4a8b969def5617b3c11948ef5bc262 GIT binary patch literal 76 zcmWm5u@QhE6a>+A3bnm7LMU686_jwi#Zd7<2n9di*-IUjRIN-efAo?e{JV! UW_`VUdK(K^8f$< literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0079.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0079.dat new file mode 100755 index 0000000000000000000000000000000000000000..bb83930f1f4724666d2feca18b66eed0c67dc5ac GIT binary patch literal 79 zcmWlPu@QhU48%T1;SNS%1vbcNPDckTWh9p=d?!q&lLR3dDZfFIGo7I==#0zYe9AE! VY3t9a9xAfBcOCV5#dpaX@Bv=*CkX%m literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0080.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0080.dat new file mode 100755 index 0000000000000000000000000000000000000000..cd8620bb1562e7e415b0106f7970710a88870913 GIT binary patch literal 80 zcmWNJp%K6^48-17P?#0EiAQrb=_(y1BLo`stQZJLKupI=0$$QdX*5?UKm%hB))V|# U>Sigj^OR!A)2iEUfltJQ5Ca{hNXY_7VUw&y2csb|04rpKlwSacMPr?9*$;=7^s0q2QVy;YZX1i% b#z^!DSH%g068q26Y^H=%VaO*Nqk8oLVje3} literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0085.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0085.dat new file mode 100755 index 0000000000000000000000000000000000000000..e2f3c4b2ad50229c23536f2bcdf2eddf4827d720 GIT binary patch literal 85 zcmW-Xu?>JQ5X2l&Q2q#E6Gj7x#WG4pprnW}ABvN#vw>Y$bwKIiHHzMmUkY2*&h|4n TmUPtFCbi>4C1OVS;g0WFYNfZux%#?#kMb~4OZ6rm>g)}#P!Nc}Ob d+$J|AT~or}fYfSm${uOU3^z*!4p;m6_b>EPEd>Ao literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0087.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0087.dat new file mode 100755 index 0000000000000000000000000000000000000000..c289f0d871a1e8194230a886d4b64e0da1d094a4 GIT binary patch literal 87 zcmWm5u?>JQ5JS-)QDg-QMAo2VB{sN>!YGMYBpoG`DI%Gpv#n=LjUZjhVH&{j((Qi1 g$}Sa1$}Solu$X#s7M~_nd2+5Zij{xgnEhe;0ATzmy8r+H literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0088.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0088.dat new file mode 100755 index 0000000000000000000000000000000000000000..839cc69567d94bf0372a66019c4857b6114b6518 GIT binary patch literal 88 zcmW-Y!3}^Q6vdj5$dM5kh0%00MsWm>m=Nm6+k0tCaX^*{$r;NVoJAd>iX2EdT%j literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0089.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0089.dat new file mode 100755 index 0000000000000000000000000000000000000000..990cc8ea0f8265ce1b9ac39886de54eccf84455c GIT binary patch literal 89 zcmWlRu?>JQ5X6jV=rRJMWGDt8h{ZAr5(AJ93Ka7cZq6s$m`Intu-bwL-Skj_!f46A aovq0p)6(XSHA{B44|;2X9G}x@q<{~!hcGYz literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0090.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0090.dat new file mode 100755 index 0000000000000000000000000000000000000000..689939ccbb6f9529e98e33070270580a20603f77 GIT binary patch literal 90 zcmWlR%L#xm5JX?_kYg-BuoTe1Xi X;8ia=JQ5Cbowpk#zB!eA7U2%BY;j6fNh93ROi%a-NbDY@;2oScAGB9Mm-A5-+# a?MteVUA%#Pt;6ePPx?8az+4ZpI`jt#x-9en literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0093.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0093.dat new file mode 100755 index 0000000000000000000000000000000000000000..0c4a5ebeecb292ca036b5a38931fd4606dccd7f7 GIT binary patch literal 93 zcmW-Zu?c`c6vZM}*oZfhqj{USisB-I3s_owj9;q8%L-Q#T8~fa{5Ed bqT8C-UBi64pa#E`G^!7jHkmQKKeNFL$;2?H literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0094.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0094.dat new file mode 100755 index 0000000000000000000000000000000000000000..650f3d0088d4902feb9fab56cd83eab4dd4e65aa GIT binary patch literal 94 zcmWlR!3}^g3111+S|KfqWJ0BEe&R^tmS);W Z>w+Ue6o$osjY%(fpo*(;>A@&@#|QhAELQ*k literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0096.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0096.dat new file mode 100755 index 0000000000000000000000000000000000000000..d200428cffeba92c29a6f81cb97f6b7cabb8b7d7 GIT binary patch literal 96 zcmWNJy%B&Q6od25f|3zf!;aB(G&~n!1Ue`@KGP(Z-z{Aeqzpai(qUjLm@K=JP9;|2 bQ-SJQ5X26BkrE~#qc9plES6E|Xj7($Fqh_avh0VZvnIHxTEJJCFRE4;3X|I` dHRB>3@FMGDYF*Lfnc)dPn!P2LebYYMq90T{G&ukO literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0098.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0098.dat new file mode 100755 index 0000000000000000000000000000000000000000..33d8657b875e4e43ca33fb5a48df9487fdc67449 GIT binary patch literal 98 zcmW-Z!3}^Q5CoTyh+S9;rHPf;3U=i49>j6sv&m*Mqr@lagjYIf1!zi)47brPZRQtr am5`|)gsP{;QoHTW>?8wao*By}R{IBF=rHpD literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0099.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0099.dat new file mode 100755 index 0000000000000000000000000000000000000000..4a3331583c7eacec0dcac80ee11e7ce3081e3344 GIT binary patch literal 99 zcmW-Xu?>VU0K|;Gpv(xF;X683VgU4F16Il=Kt&sgh9bhB(A>#)zM<2FpsPfK3AEH9 kGr`z+h99BOo`vR?0X~^;j+%PiYhTYRB;x6zTcv1?Klr~ctN;K2 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0100.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0100.dat new file mode 100755 index 0000000000000000000000000000000000000000..12b6aa46f40d87fddf88a8c7ac067dfdd217111e GIT binary patch literal 100 zcmW;Du?>JQ3`EgGDJZ=FQbzGAjKBtj%{&StP^O6ZI5gMX`wm^wE`xgoB!{O$(;+SS gId5+5BP^{G^DDD+hGZ8}h^$&k$<*7Qr8o)c1JAZG-v9sr literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0101.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0101.dat new file mode 100755 index 0000000000000000000000000000000000000000..620966b19d6b1cbd473837dab296713810322dfc GIT binary patch literal 101 zcmWlRu@S%^3s(5=nrzAXQgI(^&^7X*&|@N!oCkC86R literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0102.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0102.dat new file mode 100755 index 0000000000000000000000000000000000000000..12de2a596d33417dd16105e1a9c92ea6f3f33c2f GIT binary patch literal 102 zcmW-Zxe>rH48y2Pk_sDROT)ZBBvw?aD!(`mDAvYX%Q08CC^wPtY=Qh e2^iA;N;=Y6^R%qmnoFeTqn_=joXMS6CFKuCE<4Wv literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0103.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0103.dat new file mode 100755 index 0000000000000000000000000000000000000000..f1f74fbe1b4435765327878da1374cf02dc02f54 GIT binary patch literal 103 zcmW-Zu?@f=5CacU{0iwy`YED}0+TF}eT% literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0104.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0104.dat new file mode 100755 index 0000000000000000000000000000000000000000..1a7557f727a714bf353d157e0f2f3111127aaf45 GIT binary patch literal 104 zcmW-Zu?>JQ5Ce@;P%=VRU;}1hlK;^dg%Kzzq8xq-Tb56@Vn~fwI%hDY&N#>gxMj=! fDk#2IQ%;K9z{7u`-64xSb#)n~FB(jX7~TB`Jw!J* literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0105.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0105.dat new file mode 100755 index 0000000000000000000000000000000000000000..c021ab7978d175eb4cb08dec263ec660f683a584 GIT binary patch literal 105 zcmW-ZyAgmO5JaC|aG`cUDU=4KQHCKU80rkedYJ9L{iGX;<_;$5a;a}p1#cW`u2@h+H{BYV>yZG$r|Lz2kKBaauDF6Tf literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0106.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0106.dat new file mode 100755 index 0000000000000000000000000000000000000000..db0552b0bd206b31a80874ddfa1d6bd44bfd7073 GIT binary patch literal 106 zcmW-Zu?>JQ5Cac^^d&7_7C~YaHc6;h3o!{Jq)ZWEEIP|~wxk9-AoWolR< literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0108.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0108.dat new file mode 100755 index 0000000000000000000000000000000000000000..cb49945753fcc5852b63010aa9ced77dc1f5dc71 GIT binary patch literal 108 zcmW-Zu?@f=5Ce@Og^~p#F-lg+CSkKM3L~VXK)D!-cj5Cr6p(Z~^U$u;rBGJUP8hmO hKPkfNk*Q$<9;gwM!(voeZ;CRT2R8dum<7#Or60dpGXDSo literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0109.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0109.dat new file mode 100755 index 0000000000000000000000000000000000000000..90bd802c2995bf25bab507a3cf9c69a2fa3fefaa GIT binary patch literal 109 zcmXAh%L#xm5JV>^5fY#e-NvP8qoiv)Axxs$y60Jr@_wbAG(bKO&d!p9DpPk&}Gl3jOkwP gfz1oI_m#PPvH#I3r<8(cu%G^2@&Q#^ ge56d9zb1G1;W~7k$E4KQuyW8#bcP{8p97vt{0I9zJOBUy literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0114.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0114.dat new file mode 100755 index 0000000000000000000000000000000000000000..14cf88e17102fae98ee82d3b74cce0c8783fe992 GIT binary patch literal 114 zcmW-Yu@!(Y5JI_^BBiaJqqv#LXz5%dBg8I6Jmf5Rz~e&>k}XvjkQ5)O=M`lDxTK7e k3)@X93yw_yyS5@okC&=(Bxj-TfDIgUYo>L=Tvq@42Wyf&BLDyZ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0115.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0115.dat new file mode 100755 index 0000000000000000000000000000000000000000..939a09c0a2dcd0a48aa4b85df0e921371ebb950e GIT binary patch literal 115 zcmW-Zu@S%^3JQ3=}0bT=wY|4WL=)8 qQ}JQ5Ca`ir2LiwDWkATM#*Ry1&IZoiWDfupYG3oAIS!i4iuc6=7;ct^}-G$ pwwD8H7C5&1LtX)AOn_Y_hg~`=G8I?()=P_FsLdsP7{nwy@B`|IIqLub literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0121.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0121.dat new file mode 100755 index 0000000000000000000000000000000000000000..c8c5a60f2d0fede024c1d2e19ec74d9475b73228 GIT binary patch literal 121 zcmW-ZyA8k~5JQb9=#mjK3ZsS57=8^<6JZOC9kDl#Ml0B0h>+$1AaobIGb>u^} jOGMJiprbE0mSa))8@5bH*B)#+wkj`f1}6;wm`d>jaePFA literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0122.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0122.dat new file mode 100755 index 0000000000000000000000000000000000000000..d8cae0d0c7a1077c16da27100ae85ff5413f9062 GIT binary patch literal 122 zcmWlR!3}^g3S4txJVmnB62TCVPFOzdZbfQ8Y rkR%mv%^!H;mW)Gny==1D)ofPFE;{8rTDJ_tzSxx>U2IZ2R#X=JHy|{j literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0123.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0123.dat new file mode 100755 index 0000000000000000000000000000000000000000..1c41f9626f1f9e4f7087820967bd1572ae67a8ae GIT binary patch literal 123 zcmXAiu?>JQ3JQ5CaVikOh!_6xO0kBo@mkj6j(p%HgE35&=@OHe m8xHAMsh}$}ub_PzeSUp0tZu-!BnwJZDQAcI@Pd0PYlI(2xIKjc literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0125.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0125.dat new file mode 100755 index 0000000000000000000000000000000000000000..8a426aabb0e21f672edb21a91ee142a0e551ee5e GIT binary patch literal 125 zcmXAhyAgmO5JcCA&=Ry0O2bYpMM@zvHDpGH=Yq-J?HA~hs4F~DfS0V$LXj3IN>HUZ mK+YKQpw8Ov+t7Dgk&6>r{AUhNax;k~*SuW(6u0J9^8EluOGN7c literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0126.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0126.dat new file mode 100755 index 0000000000000000000000000000000000000000..76ff47a4afc97a026a728f7954bb1bf9da1f25b0 GIT binary patch literal 126 zcmW-Z!3}^g3qE9w}O~`0;G)Ae!0z7$CHBKK%Eaz3c|%tVd?C*{E{+Fc}il1VHr13Gx%_zgs3^$Tod+Dz`@B@uaK+*sJ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0129.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0129.dat new file mode 100755 index 0000000000000000000000000000000000000000..4ce3fd497d3e4da89ac6e3d4175c050dbf8266d1 GIT binary patch literal 129 zcmW-Z!3}^g3C3 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0131.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0131.dat new file mode 100755 index 0000000000000000000000000000000000000000..8f74a1064cdfb6684e388ab04b2fbbb0cd1e863a GIT binary patch literal 385 zcmX|7IS#`x3}X?X+1e-QDScY}G(W{#*8p8I7*RHL!ySO@A3`T>lu$JOLlE3%^`^CG Wt5A39F3Z=>uaz`3ulcAU4txPSNyESZ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0132.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0132.dat new file mode 100755 index 0000000000000000000000000000000000000000..34f485842e1b8c69979e870667642a50ba7c668a GIT binary patch literal 513 zcmXw$%MAk|5JM-5lpMDNN})99ESpYJ0>>OynLHb?v|v1*4{U@{GxKW(8EqdTju9xm zvas24hkeW;szrQtX*R57xXe!X7p$&eOgH9$^xg= zDARkp++}B~8HI$hCvIq9UGU|@RkzJYMOXRG7}Hu-NQy933UdSD&;)8Y4wiHB?4D;R z0ic3e8aFWu%|Tx5jzihNfx5>plB89Wd6xqJ$hT5>OQbc|k-tWqo_y;a%dF})%JU%p Hrz`6Zb8!a2 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0133.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0133.dat new file mode 100755 index 0000000000000000000000000000000000000000..a0331397d24422591ec8ff5154163a785ea0e463 GIT binary patch literal 641 zcmXw0IS#@=3^YO_Wj=tkJOpW<#y)K&K9Y`>G6jm6!*LONJob1NA{47rOUA68>&Ap& zw<%qP$D&k>R@fNPf8OWp%9h~G&4{OpmPZ5iCFq%lnkygxLqt=F&m>KtvCw6?son)y z8^J2y{2+EiEOp`Gb#$wcCa7{O;Vm9u`NrwB31D$H;j|-Bfp8!r&RGjzN^dEegPzmD z;Z-zuR(`vTL*~r*<$P4{JPp=EC{|`*=ZhMe>*$a~aL+OTI1%wW3;iGY@yQ}G7kV(o oX-4f&fw+U-TsBA{K)}G^zhY<7A!CpVOTs(7W^QKdSugeS4@pHVNB{r; literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0134.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0134.dat new file mode 100755 index 0000000000000000000000000000000000000000..66cd42d896cc90331ddd2f3d3a2eec62145c1e15 GIT binary patch literal 769 zcmYjPOHRcw4D{1OD!Xpk3BxFOgo4 zdE+6o|A;^0i!q$e>heqLliuz~Yu{~EG+rc&e<&7LP%JLIZ_<2*^md@S@HxWb+#G%{Walgix1uK$_cP1#L~~98z{e zS#-2Jq-m;a-bY7Nwvs#3@iL|_;GS{IkHXBIOMrp!WfHsL3%9mUpLT7!Qu|&6a`7JK zdIi`;LHr%Mc!Pqe%WbK9bhOmyQaqd-r^9V+vB8ZAs>G6G{A>5(KQ`Rs)rI*HIk|w9`rVY GILANE6uu<@ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0136.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0136.dat new file mode 100755 index 0000000000000000000000000000000000000000..6e7cddc95fb387a248c418af1c8a237261328fd2 GIT binary patch literal 1025 zcmY*YNpiz545KH9^p+?1DSDc9>$m(A_XnBj#WVF(1;E8B53vXWBtw1#d0j;y4SRjbPbY2VWN zriu8<(QF=3!=57FdSW-!E8_TsWS=K-PrbQlogOChdxh}2mx^5in3vQPzT#Q5X;&sV bWA?QM4CMUy67i?QawyxsrAEE-b7}qn?ZgfX literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0137.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0137.dat new file mode 100755 index 0000000000000000000000000000000000000000..18dffd1d938f8fd3423bf54ed57536bfcb87ccec GIT binary patch literal 1153 zcmYjR%Z)=J4CEPFQza}rsKhZ*Q}M7JeD0a{9MBS`fSko8Rm1Bv?(yOc_(G1&JRrEzbIrdwn@ z$0xNRfIXP-lHT)>oQa;9I(07&5qu0`HE&5?as!7GnAN%rBv=Hd@h?HAA`3oqS{O!R zl#m0vxZb-mqx;F2A!ux_1d2=Tgki#V6}>29=yRVhzA#%p9v$LJ^i}8l$$%%!DGnB= z3-kVBJ`CbAxE$o9FdsUg-F(hpHQDdd$wnnCZ??Xxc=4-Z3UxoCdnZQQ{hDGqO+ro9 zOmcrF`52*4ukHi~Iy9(A^4)oPp@eOvN;@N2Xgp}kj{Vy L1H}IYGpzUzt1~Hu literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0138.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0138.dat new file mode 100755 index 0000000000000000000000000000000000000000..40797906fe29ba8e364a2ff79d21fb52f1bd8422 GIT binary patch literal 1281 zcmZ8gyLH1b45Xj)UP@&Ht&vWnNu#mL8XCb}RQMS=9KJCN3OpQu13`(1oMYT%?s6@1 z!5%v>U-K3ga9wenJSq3(7CyTi*p1?F#>=C41&Yjo_ehQJbF5e3V{FaSs*QWE{h#(; z3|z0I$z~jVIDyG2wr{Stj|kf%nYsiN^Hd?1+bB58?bhC83>DV z*5?Nh&7v8qRCeC@AjQ>03P4Yb(r_+7zS`VFNQnUVn|$veA9Iv|)8!}^(kyD zl^u!m$T6S2Ck0YGCJ;I_JPLj?mu|3n2rK?^t+s>lp<+&fH{6zretie)@jF@1^zr9uHL zb%7M1ZHC~O4!f3kbAP6P~Qr6;BE4fP7mlq z&Qhlsrm(gKIo!pSG!BuIG@hJ|Szg4bpc+_vMC&zyo8+J((M1D`nF)a5C>k?cbsNdy zKd9gakg}O&C21Sqci~H&hq?K|Nf^h%(P1|gy)9fvVxDopkpH5i_)5=X#1gIFdRi(B z;OwHqw$W5lMW2$W4w*i~>8>$Q7*+w+nl{=2UjyfpwRE0ANyJHL!ETJo!&BKlay2}~ zC-_5lFUvNBOxcTq6a(Y#+$Dk z-R_Lxej9q}nNy0TssFN>S1qDt{A54f?Pe%s?PjHu0!)=!H)*xjS`94AxHE~~@mCxj zBO<|sM|24Yx=9vn`G%TI9^CkE61DL!;#$EP6lS|R6L?k1kxK@@;Ymsi0lh8ZFE@pp AqW}N^ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0140.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0140.dat new file mode 100755 index 0000000000000000000000000000000000000000..07b7bf9a27d1dfe892b7512b85fd74d3f954a788 GIT binary patch literal 1537 zcmY*YyOqN*3{&0}DK8sn6qh%aG@3@y2q|6U*$03hDJ*1?0>O{yQtu^a*=4(#@c%3v zv^P8t_gogW-J3(_6Yie&593S@$Ioz-LM)`0(xlii1kjyDM_yd~3GxBraT|_cI43?{ zadh<@@TFuShkpl2#XeGOA_3M=y8;o623tRk>eFShr7Eu%sRQY!(Q=1!&!W+-^aqf zii?Njn)T+i`ZzZS!C~?)Uy9>faxH5i5FrLTtHYaCI?kDQ3_Fir@}sT_wwMk_kiE1{CjQw(oA7 z>O@Fvth>@ia72rE>a^qBRtX+LxBljror!%YX^S4vwura>MWPMrq%+CiVaPU9gcT%u n(5|=X9dU zkIqm@f4Q&LoFAaOG)MV&ZLgbbWcxG0c?J$zmFHEapgfvXW(-}kOE{c^&>Nj0m?bV! zXChr@!#Fe!1Pv^+Xm6WHh;`55ISqSZ&Os%HCS)Luh#?$A(NH`{NrTNWyA(VYJkS{)xN;r9!Dw5w0FX+{Nh(cIIi;HA_CmcBgF!CU2hOD( z0p}MFVYl1D8z#dSZti;6yzDpBlIDOt`GWx;<#@>JU@JaRX58tuDk{Wfdv-#U>vZg|nME4PxfH}T>wvu4=U<9-l_B^ClK(2Z literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0142.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0142.dat new file mode 100755 index 0000000000000000000000000000000000000000..fa95449caccef7497e72fde2a03c33b1cec47821 GIT binary patch literal 1793 zcmY*Z$!S9|5S7Uxmw-!9BLS5rK^haJ5tZPhA;!vkvuXZ-rCHwW`Yxr^eW617yr}j= zlsvwS>jHQl+_?BGgUO}Xy!9F)8LJT;1(ci%$RiU=BH#=_9hX=NEQzEQ zHQcA(dNu)#ql)a&Ty^6IyUXMWP6@CwKwjZ3RVd?kuf1F(yyh+Ff-G!QG*52PEy{gI zRVP!V*gJKOd5v;yK_-km$S(9_clL_>Vv8EOLFF1y>$WcOYsTz-MB?uYhf`DJbXoUj z!MgV-0c5!3mV$$6-mO*w1n6{9MfM}DsJqU_U^PUP69SgzV7Xs74Q>~^()9r;p7!FQ zzPythYQWjzk~KmA5`v@;Hb3|#_8hf~2FGNK%Cm}!BE!5DAR>$2{w$olj3@?5dn)Pg=WMu}(|+0@ z(|^>mHAgNmh6=A_tFF{LS-?uD#d{`$d2mh20s(5K&kI%kN;ZI&W3{14(P`X{8k+;bFw?N=QQIQhdFiT=!Bg zv~|Cg?nhy;s-LkD6z2VWx&m7legx2<&WHoLX^@oxh!htwLVe(PIVX1ab9D`s(OZyL zCoRBLPdAHE#T08R`}AV!X?oRg4RzbqiukH7TbB#+0Qv2b%P@lhQ{!4-=HecD-Mt5= z#w4Y?W}^>pCy5SUYT+uqvfKh1iW#PPB((*FB+u{nlS^D z$Qlc&?nO{WM|b(81_GiZpeR{RVed|y0mjumq}wa|u;>L%n|)m`Aa#q+3Ve7LHTPDV zGmKb$qH=Hhv+vDYktIfqtzW`>j~s(snY5~XW`1NumMW~TLllzVK7A2-qWDC2xNWW9 zx~8-bCX~{s?aPsXvEum$Akj@V6b8UbEfAh*iDDI;Fl8vb#mFreki-8cIfj#cV^#)L!aZz=rl~tF pNS@^?Ow1V?nb-z-{D{<74NQ%jp9X2&Ki8o zRsmlvQm0)VoptNUZW4q=SMfldJ2SM55jY@i zt5c@9rS>zm_t=QtGJ#(W@*b;#^wA}pGE5y)vnVg$JUB(R{6=;rV`S%AzbStOBYWi! zVj1K!Qtp|I#m4P3g;yWNc1j$&*cUK6M8!!0?a%>X*7yvRa31Czlx+R@Rvt2DBG&qb zbHbmd6wk!jgW|;}jJ{iQhR%~gX2o4O7(OX-I_r^)pvf;n4zN~(g0=gFi=u+@4~%~>@$NxM$oONs&PsNaKEA}WP&uYo zFFJ2QlJtWOnTqX}X>|Gq(i@EU`mIHmwLUZeBfSmtz+5rI=9TYGvDKyGFW)gttfi!> PKad3}p4-#rL)ZEWrw-H0Z#V=tN5J=waVtlF2~$96m6aOhO1hr9ED!jXxko zHv{XN8SL{EggdvsaX*{VW$T6%{FLL$N|I3(YPQ5j_Z%Cpgtn|01^iu{I)~*xh~(`v z9lHl;&Q2y~KRGEe&(m*CJwHbghqzDa%I-?BG3Z2qi3uLdaBn0^9d%u2`XHop(Sw(z zqKikgdr6N>cBxFjU2fu7P>U*%kDq2&$gS9muRFsKFkH32V98FD>4=!ju-ui*iigxQ zopwJ#uU+~G!Gef~{nq&m?3VMs8T)7`6V2r7+!Zozlf~^&&ap-IwGSb3Tu#w}`-|`$ zx$8wm*(ESYt4Pm|m_z^IEuEU5bV_xtu*gt3nogkRG@5ZU`vuFs(o<*h;dW<Nf^075uzIkiGeYv~<#TtUm?gf(XiMARW^sXK z5dC`%OQYcXM>1UPeW}{>X#5-fDc4A>8qfIzQ=#YmGQw29fnUEVAovC)4j@4HIKvyBz&Grtg=SsJQ7$SIpPULruL$%GWRcEc)2;EdTL*DB@IDx zP@;}3$wp#DTsW9>4H`G}-@J8rxk%<3;m*Nkq&xks?!(wPUuP?sM=uB00CtwH_*>86 z&h&a5YL#U#Z+jHK3YZQ=!t>S9pi?MspLA=Qdi6jHGT&PCKgams1C^MSb=J~+Yb#7s zI^*x{29=m3KdbrKIxE~wV{UT+|FitQe6dDLddW|b6g7P%jGXrwmghm1ho-jEM1W(ue^=+*H8v6{N>nXqtKFc(ozp88=)kqlWT)+xm{>RE F`UgvJc02$8 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0147.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0147.dat new file mode 100755 index 0000000000000000000000000000000000000000..3c84c27a871b87e9fc9e56d24d72e8e7cc8f7f87 GIT binary patch literal 2433 zcmZWp%a!CH40ONU_vW~p0TafYme6o$4uuf<*avSjl1g8OgMq5j2O)eMH2y3dlXt(? zx_C}Q=}Vx8?CwM#Z1G`EFh3JN)^fSTnw3nJCo`L?B$g!-P@~h?_Oc~WzGkeY0Bd<> zfhNiSK({h@mDZXT>1Y=(I~lzl+w*@_prpn|+i@>f z)o~+xh%0piTut+^OYKU#hKxHFi*ieI&rif=h?(!j4yTNTs6;B@5aG=w1Pb8ESBE7D z$V>5iN`4300&C;NNy(f8P^tOwkmB3%q|B<2#gDKGQix&jcJ_zDWlqyCRBzC&m5%Rppe&h>*N0 z4sy9IeK;s)@hqzJh#|e|2o5_2P zn<4x~o`ueDRHBWrVo@1AxKoH)JS&p5E;Q-^C9!bfC@MmV@E}%0WK%sf80D;@&fw6q zKWd^5Fl}A$LD|V71Kna`)*z$wv`a3gn{Q>oP`KkAj~=4C#hUXhTQoCU az=uk`JOhC5S!oZ4z^-~sAYBkf?)w{Tk05ja literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0148.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0148.dat new file mode 100755 index 0000000000000000000000000000000000000000..e11058cebfa45e19f8368ee2a8378a2ed872586b GIT binary patch literal 2561 zcmah}%WWMo3|#vid@REk=11(8ZqDFV{K9(^#ZaQK&Af)IGS(#(*eNbb8Xvd7By z1L(R+#<1=TL|v;sI!pvQ@ridi8XB5Hb{5B1o1^J4xmU;=Rxf+Z9Z4Qf4d*m#l395yC#E_)+4$DBkvA#C$z8l7B*vi0;>C@ z$(4eKqg5lkCQrg%bLdM*bQMu}#ey$NBKbB*=OMHY2wZ1QYp%Kq;x2e*Ln#^qUEj_Q z^|TjclQ+-Z6kL_(^|fN`wF$Sm7*T4ir^O*ASzQyEm?Z`m=(4XypMQPUZ*Q3og?M;( zHIRf;kSj6uv7yOS5q*hM6{3kgqY_I z!$d}(Ca&Bpn7+9Tg@fdYV)*zE7zm^0X-q@-Xx=&JlrEHrjEg73jw16bD0#i_ahf|} H(V6@MFUBDf literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0149.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0149.dat new file mode 100755 index 0000000000000000000000000000000000000000..a058ae235bf451661030a91935a50b5eb88ee24d GIT binary patch literal 2689 zcmZuyJC@rp43ys%+pTj0-XuI4d9&y!>e8xAk!LRc7|_dtq6RZVfQ0O|)|wwQ#hAx7 ze(^g{UN!z1%5|3r1lBs9Nz>I?$ozr~vHGo)+DRYa>sD;Ot7B^+QT8oN*|(7u-ED_WlNeB8z8ZM`D* zOXwuuhQKs=)h=+{OBI=uBG@;#ReN9yZ=KUr{ATJYgm+Y|mBy>3k@eprG}D3#fTR&J zkJ?BCc}dg-6Hb(1?+bO>DrBEiwI6OlPb?woYwU37Ec-)N$MFU7OfNwe)3^lL(r2t^ zV+>(R)98xlDMFYeR8lBkpqHfz_laW6=t;Yj1A+~B`P78-ip;3)`@^?S+O0@ZN?&`O z&2!S{-+V=LWCi|+>$Y?|i>JNN_1gy|0NkZEu#j1h3R8NKM=#9s#LVr~+QH)X7gW$PP%jJ6yktfH{0J6AYW2c-=iegF@BO2hX~k=(H#}#^(Xq0oUJ%z z05dq{HxPatqd{S9W3y;zuS{h}2)VsoZ8t%#E&Z)@^PB!LA)Alb##q7CMgYXgk>j@Z z>^^c;>u^`RCeuJaS9OpDR2#lAeo8O(no*C~LeDHRuuQiG-x#H`VbuzPSwU9}WW!Ys z8c&0K1_+C+ja67)fOh!A1!Y)bI;SQANv;O`U}-Va(E$E5|4o!!s{r`P*FTUILs|bx z(*xo-mg_l}6OkOViDbE4;+l_btpU#FMjXldmUB z_D{o@(C0X)lxj*9G*`Kwmf_5*07f!W@I?8C(BqkLz)Ekz1S1N5Eh!4S&^EPi@(um~ zv=h57$x+{v($)CCE$<2*={InTlXFPI6zH4MV)%_!=~ktY=(Aa~c8>k+X~7dC5fGV| z4rN+7nnr={&R0xY0DXuYCW!mg06&U1r$_|aJDb?`xm`VCl^PjjJ|bMK#1;aRiS!F{ ze=7M&NTGFh<0i>397{70w(OA8R1FAUdQm#7s=-*`ryV-0eQJ}8Dwh`OX-(LKvFK* zk*^yg6G$gphs>)oYa_X^6t-=|gm@~06eb+JTaTRqthAz~vnFnwQFtF>JDEk%RXJg_ nW>V!v4f++L)H5Z4FD-V-@e-Vw&{A)rzDiPt;0)}f+dB6jJ=}Pb literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0151.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0151.dat new file mode 100755 index 0000000000000000000000000000000000000000..58b85ad5d08af2399b31af9cfbbcc59d99db6838 GIT binary patch literal 2945 zcmZuyJF*-h44hXRZ1^tVDvmPOat1z`@lD8_zR{1 z<%*H&E=lKnN3o9j%7MpGbFAuP_v;FMeBWIR&#t08KE??R^51bht%cssTn-uxXl|w2 zGFI~a@SK%!p_XxBi6BSywBOs_n}x?jQYy%<-RO!cblplr$E5dp;26Eo>-7lQ9AL-U z%u?lKJmb*yV+Kia#i_$)0W#gLLaHbG1_CI#f%#i@nf&4ChGYZ$%1aG_tm?6b1-@yw zW%6;-y$s%|BA&}86tc?ENE^alLJjfS?ztO-e+grJDT<>88^vF0q9FGfMywfrtM`vqQ36h};&5zWSkML&CGIc{p`@!N zmXCcYmM8NLY(de<7n4$?aa%$oQAQOr#oSq*9JUP zAJ%<eMXjrkuJb<5J#g&a=e3KU`_9w70Z-oY#SZj}OJdvZX{p!?;(YMZx2JPN zqh6UgYWSviHC!S3N`4f7tM*Se0eE@s8m;$8DG)^KnF19+ge11LPJ1z^_PqYF2Lnt& zuGoT#?uaTXD`1cq2N$9gG3dB9w{}Bun+9@QHJ#I*qtFiJt!LqhBA}FrylA230L(zI53lvfsE4-jK%??4>vs z9BafDd9LeN(NcE8#XT{_`N+X+&-+5~JPdE_#)*riEXk(}|nH%ZOZp>8qg@UGa z+KKBoRr1$}h7|!^2tJQnkMCd(C%BO}c71~6!!-E!76DdI_h>fkJ~YtL>Pln`i!l*f z``i+}leea|n8Uebn9jO?*^rzyB>dbcfCQRI`M0a)7LSlUA%7^ti5?3> z1EgaBok!*>3+ZIc;Q8jSKsTz*)pGHi;SDF@WB2=U7a8PT$KiNOkhe}a#U&+sOc>Jv zb~__`NXAPkaPiv#AUk1m5bipne}KoMf|16dexLRPzWfRWo{AJ+_dugWR`FoVrjJc`?SBt>>GcVZAjgWs2n=*&WVA|D}Ccur> zCxc%w<(0~w5LMyJ7o_bL)e8aNjsO~RfP?Kh?IAvVzlX_IbDf?Lky1$CllV?Mckf^= z>6xGSNLqXolLMfrxd?f*l0ROM7!s+VVfg~mjoQDONMNH<40V^4tqQ|nnRUPa0Q-m} Aj{pDw literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0153.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0153.dat new file mode 100755 index 0000000000000000000000000000000000000000..bc2759316c58fa2eb31adb881a424857508c5ac1 GIT binary patch literal 3201 zcmZuz%ds3G3}ova_Ts7+0+|?R2AMb&GBH&z0pGlbEsrIkPm3{!L8x0TA(+`MMMs@x z@%+5*V>#gy!I!(;cmO_bTGMz)qllsY4~U+9FIFkwy{1xO+BLnw!zOB}z{(VqCHrqi zWhIo?b!M#*Iv`W@Bem%#P(1L(EtrzzXa-YA^&J1%&rF;~ajTS0(;g$ig=+epJ+yjc zkA+%k8SM(Yw*{Y5!(d>*T1|F?xAS@r@QRr_s9Lv1X;3v0neig@gshx|K_XY|O4|YC z#$*x~4$M%vuRK=Z+acnSv71*rP-CrisRzrk@aTr6le0Eh<`7J7S+qz-7T)x9tv1k= z{N+It-lhraY0C=$GEK!rxYso5b;Wxk9(u(7oX(Ig2H1`d30e%vNVO2_mowd1O7-dc zw)m5`ESa&r$Q}(#-^MAy$tAJN6ljK<($8&^?%4VFGxs1tEhMEZ+AGD>@cK*jL`AWU z6^AZI4!3N2%-O?;*_30mCtR9Tw9g(A=q;dJ7?BmZXZO6X~q z<9@l<$^As_{3X^N%!&*4^mowkmQa-! z5IX49y{C-&N8sqxP)(m8=GMWApSJSNW5TFV1$+iKfl?2n-n2VJsyU6!v(`P#@W#i6 zkS_KQezqh$*p=jLg?a+N;lNenpOKlr#iz^@wn~Wt*RF9jt`UPFfCd@|$vKYW7_V5Q z#`*}mNIM{w=0y(GbR2Kw`4@4|j=nRps&&HK_Fdo+D6x_9E%0ZUAIBMrORKQ3BDob; z4i5Y0Zc`!VA13-nwyDa){7rR_TUYG&y3AX)cf=-ROgIV=SctFiOo$ zLQ?M%min2_MM5fwyc7ZtH-gX)YkQEbt#D~To>U&nLWJy?>+|?y_P8W6kiz;rjHwhp zijN^3mvHl|M~mRk4Jqwh#P>-b%qlRp;wprdq!>X<&H=o#`4mh3TuK%!4&p9H zHitym4ouc%s3O_hn3VZbWj614JEZC2()ge(Rh$qU9>;IbLc)OE_f;~@ zL=f!OU)js#`_q!M!i0YqVQ1lTyhc{~j0ehyeM$C0ZuQs}t}0d3|JP4`hMqj%n`HFZ zl8<<)&{OHh}{}?CqD%X!GD5t zEwc?)Y{hV)x)h<7SNwWVHv}l>7hpK>b+1-!3 z941w98&9sAN9RM)dh#o36(Vx?-fpe6)06t_^FRWsKHI$kkhi+je0pw&6Ul{G+RGd& zc?$jFXyKfRr$e0Fu1I{*D}y`CkfcT^r!e4i8~p^5_Jvs66XfDv!sWh$bvXN7-+~Lqcv?$-htXKNZ}9r=_mhC-2}wW$2;d!zT0*;yI1L0` XL~=r*ohOjgmd?9k7xGN21c~w=1|3FC literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0155.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0155.dat new file mode 100755 index 0000000000000000000000000000000000000000..eaf5f9685c3627d4793f129872f45256af89f95e GIT binary patch literal 3457 zcmZ`*%aI%*4DBf&=HjXiffSqpY57KHW~!VB8SEVQ(6wzn{g7bH0fh9PzRm33_kH(c zUxoC(uK(GG8h$v`gv5B7Hk@ZfG%{>KilDz8_z(s5;mVJxbm{fHzZ`HJ@50}I9DUzs z03XNic`E^A;*w`IJ)N(~JdPrUPP%rAp^=K|RcyY)-nxLW7q^fAeG7_M8o*d#0D~2} zEv1J97YqDLr)vmxr#_nFFbBn&h0k>&9F)C=@Wx2KF1uNYp{%95DA|1YnNyeCx?5S0 z2+IuF!fDTs?KsR^)B$OF@vjqYc9ZjOx`w*fw!3qLKRJ=Gc`L=@?U)Wx&%8~lby6O8 z$q*#hfpye9aFzAT1V23u5N)}Ygi6X06)G14OE}hwDu7$Z#gQt+5tY>#K1p{o=No~)3IZWASG`%C(?C|XYVy-2M)np2FijO@WRhbiwK zCv*SM2pv8PAlICKio?)JQ3S6LtxuKp*HQSy#(kmF5JImoVQr4rS3a1~7_8f>k~`yQ z^D%YP_*tVDmerJ+@Cw=6H{&jRz)T-gAATn_3Xk%!bu|Cw=Csq2CiK^k>3`m)?^hwRXVd3Bn5& zrzB$feK3`r*(+`(18@u9iQzZY_Xi^G+&6FecuKoAAH?n!z)yXKUo`F9X1de58Xvly zLbGP*)r%U!i42lEks9le*J6BIy)=oySaoA8i4rCZ($Oc#SmNMKqncxL<;?mAwN$7< literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0156.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0156.dat new file mode 100755 index 0000000000000000000000000000000000000000..8ac675fc127d870d52263ce9e2633e5a665d02ed GIT binary patch literal 3585 zcmZuyOL83{3>=piS!SCZxd}JRaFbkRZW4}=UA%BTqF;*!Ou3$f)GY}i#$(v}xNP}m zjON??{Wiwm+>j!6UX5I$mW)##@_c8C=r8!*;Mj8&I69yt-{A}i%ofeJpG1VJhuAZk z4}r5lXZWGXSOGNI5%<~;Iz1bt7Y^LtrpSPL8>XJw|v!c^C2HN&ygd>0$mYTR&2XkkNn`XQSj0w?l0%J%T27xSz zuB&>m^*1ZMVCVeiz2Oo0k91K5i!;j(*~!#reARA2%@&3ahY=qZSB?&~fG^?(!>kdh zACM!bAd>1K0I_tQznbUsx{sFlvAgFx)3v35Jry$Xg$Tpy*@(8C?L56k8l$tvs`ekY zpKWGu1gJ!IwS@v{L%U;dUgEyv|%UNh&!Kq0x(EG=~G=P?!jmzQI!WQlS2K# zRnt_}9d})4e>_srpt`=8g2|!SnSYiC>a<9_oC6{JN)i->Lchv(#o`bXt*+2HD7u~A zy`9l<6s1&MOL1x_t zV{hz|PE-D1G%a7gAb|FA)-Pg@A|VdCe3fD$V8{-8N}kR%sFm3(+@8pPj!- p3*ZkBw%*MVT^;;ta!T@y5iB#30wRZ_f=(s~C{Sdfc>D7N>_0IQqDBA! literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0157.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0157.dat new file mode 100755 index 0000000000000000000000000000000000000000..c742c47ca1b96b228b09cba00ba3f5a4888d63d8 GIT binary patch literal 3713 zcmZuyyK(F=43x)#Lw8`h6P8BKxG{C$7F2>?cEQc*;g1C+1|o=EEI>fI+qSYk&L^DP z>FW{R4|mCagg=b8LXg8AU>NVnn&A%Pi>%M&U{%2xiL*5Ws5M&b`<+IkI18&mEJ*7b z)5PzOzsT9ewafVvYB54HB@4`c67FKM|KjPj6s7Vk*^qX!ob{c-T*}HS6@lglb)X>W zjq?>48(ztTsc?JzxGP(aYr<`Vl%D9=w(jrGcmI$0GDSb^yRm&F~51dRzy;l zSGBM#*akQF_@cI4XX`px9NUdUIH;^4&UozzD;H7jr7{jG)iF<+s`YhKEt{3Dk}<)g z?21JG%ICYrnkM2~55$ebA=vM(0dShD93ie-_F0OumiVjb%w2T-lmm!+5|pXk8XVvU z*c8JK};UQv^Shu*o+O^4tj15#^+Xk2^bSUW4I3fR?7VETATHG5+C{{OV9VX zVWPDI1)L#!^X-TV)p=c`B;dndNH@O?@`F}La=2Xj$JKDQ^|EjHBfeHrQ&hBcv*&A+ zF{1{^NxvaB%eXA42}d8h4@a4R%uIpbxO%^7!`n`E>vMq0+U9NBk;--lx`K5U>SLy- zgx)gsfePn&5OJ_3N5nTm=ZAP1iM6(;1ww{^muWMDkp%X;?}d}c8uFrd%+{CRIpLOz zBfD|dbwwL!5}v9k@JojcKt&Dk8BUMyYm!5eZzuQ+gh!z3-(AOMORQyOm2n4Vcs17g zJW4X54iE6W43&>0Qb~|LJV>#stHC)Jv1TzPm+?(VK}Dy&1|whpdKm(o-hsa zT-Y%7HN%IM6LD_*bEE7cxAub=rY5jG8U!YMy#`_2uB1pjbnv->)B~nW-GkL7Uvy57 z;)@5rnX4Z}K-xnNPGI+~Z!RiLX2FUEQ8jBmE->)vLBkWSNr-UH=IG)4+yiqCbh2J3 RW5OC9bc8F75}od_{sUI=b6NlZ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0158.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0158.dat new file mode 100755 index 0000000000000000000000000000000000000000..2998df4782a5d8ff3665c8137f6233822ccd7184 GIT binary patch literal 3841 zcmZu!Ig%7H5bO;iSabM+zQ7OkEj-D?>$?;sOUxFN2#>r}q zR-tFW`{tY)ECX217-^ug#ZZl98&`!SYd1(*vVYuaXYaE(hP#td-L%#)n=Z78+fMEM zfR-tS*uz|9t=~ZFYGE5`eiN#?Xy(#Fb2E@HE)Nlk;RaK!Ih@{>J=e=J;>+ek$twtU ze}0G$##ldx=rL1!>}^bari;kB-&%=}CK+DYZO;L%;B~yKFU`!rkWig9eF$-k@d%W< z>4OOE3Vcf82B{aQlKsv>BR6)^|6vZ-bJXBsivDhpy_> z2w(2IXP(&N%%|d`843{!p}NM5xn!!#2dudx9(9Cxm(BJ*XLwvn0T60CO50xXVe_5* z=q{Ro7`%qBs#&VB7pWGTISk!ZUQjG!jb@-h79U#HaGiulylTH+a%~aPQ{FCfVV6}W zAs=hX>J$iK)rks@(UYTuIZ4}LvwbM#TO%24w&!6OxMj^J0xST~(@JfLmYdGCY$;kI zin!ec&hizhXs!9qRmLZ0V?DmKQT0q9i2HBe{xG(K0ijXoo(?wZtn5)3=v;&4JrJOGWATii%=b}!uAAy z9!^m+f9sOHnXbTU?9*{Wwm8t;aVtzs!Zrs|=hT+XPQB^p}{n(M;!tzCMLL6+TDE@@hvA zH`iRaHXlG}?1^Bq8VHc&E6!KJToOc1@UiqD6Ni62=cbEdp_0SeR7-k2b_;wLt%etu zLm@}qmPlDMIo?|1R$=tl-o io6x7oH%9s=#_JS3O+zR=Nt4}G6{_J*yLu5Mum1tVjEr0W literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0159.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0159.dat new file mode 100755 index 0000000000000000000000000000000000000000..87d68a41c738ac1b72831042e739d5c47a51e344 GIT binary patch literal 3969 zcmZuzORgg!3}lp%vdj^B4l)u)gQN8c<_sJm%eQ!X4CTKeEWp@RWn<_lbIRyNt@%^- zQ8m^n^3tuYj&JJH)kDkrrQW!H38XHkroJLz&b}az;JSrkONf1ovj(4-9C_02T?!it z8z}>MwHoHtIki;FO9tx{Z=gz2-5GmXOpTraw0q3E1Z1v5@O$-1hQzzL9`6sO&AB=t zLrbBR&X~k+#TCDJ?Xrbh67ic9K;6Q8r^YUzci)1l zIAUD_YdPPo$IME_?3sZ|0IQ_4fTiH=J{z13zdHb5if$W>{Cip{?PVVuvjcUgp06P~ z*W=UY>R$ck^pPqIRRIe>iPw>Nc13ZY{J^o(x{Od1E1YgZm&TK;** z!#IBLK^QEFxyBZ({Ut@&a)-n>7&0U=cRDuVQ}36m7E(=FjIN5dI>KCJb`>2)`ET{*_)RAQee&Smi;pOuyqs?F(QT>f^PkTh`&>5J^u%C;=G@220K@KWA<-fj-0^d!NZ}`!vysy zzmQFo(_d1=^X@0~#Vrpd6rtM9_yxf9mXS)w7_ z;s&B}JcmR9%DPWm*A*XNbgpt~WUc2n12_QaX@#-(J^v~JF~B)SxSu0Sh(TbDNVkLB zdJ&AFc|;`JRl{e9{=92Ap9QR&7^uekoJ5=&tm8P1f-Giqc1B%3m-n+0ZB0W+mpa0_ csaCY=LtE?oalOFocF;vkv@zOdFJ96fd1!9E!4>xrlXUGiWiH>MYtthiMr5~ zz@+Z5sIgP4c#nr*u>%$y+Xh_?3IdOGgg{*v`WGIuz=-}JOqu6_kj^MFqdFj(tl9Di z%r36e9lACgrU(PqE%e^Rg1gM#pOsFy-4tS)Hh>QS19)eF2UV*1{rhW)j^Y+ROR`m;h@@g8= z9)`AA^6+orw!fKZ0|b>^ql8IDQ?b?QMvD^Uba2%4%_S=uE)zIh|9ajz+;3Ri1G1+{?%;BnS1c=`tLzMH_a%eW!7Cz8a)baq~+LpG*oC2 z*_!&^vfxnZT67rIUMAa;|xlXXRCtZWYDz9~?*a3;+NC literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0161.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0161.dat new file mode 100755 index 0000000000000000000000000000000000000000..22968e033d80c4234dde5a2571f7f55bcf796fa7 GIT binary patch literal 4225 zcmZu!OK#mT40Mr2mbpLy-=sR44fJB#^%^dEfw#;eh|52Rl(mpVa%M>V{E}^}?Z<8H zwSD*$$1C6i-7-Hp76LU)v7a2K=7^K#?-h05FGg6Cpc`d0iCLUt3>Cb3c+g4_A$~&l zJ)81gNorjLk{vi3n#`06=1kOZXIWo(JzDF3GqJBhn~}5@Tu(RA8KY8o?Y3_ zE0{iMi(odjZ~aV6L#ea(cCw@U#f}wtqQ?i8L7yE(ja2q@_=PnrL!r7ubldt9^ zvucVJ@0QWEE<^uu*0pWV7m>Est{>h=797rnv1DWrH~j?aJbSDsy)nbEB!DvxP%oik z;@O-`U=f+HVNH{i3o5y^n+_|Za9U^)CPrjev7)hVo(jIf0*Ux_4DkviNq8#LG}>#a&Cj&h$G6*K5UOy zaT}M*4+Q(%gIvGQd3>8<;k#stdL=~N!LHKiI1g|xj?)2#aA6J>zmY`10MrWI7}pmzP$ih^;F=L(o1UAGq(o0_w4D>Sw7>lhu9uj z9M9@{g|H*y6c=;@qduPoPr+m|B7( pV`T4QO{HZYd4mqL6u^VR|Fu*#aH$)!E;lt|L^kqdL#KSm{{x+8WYPct literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0162.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0162.dat new file mode 100755 index 0000000000000000000000000000000000000000..cca9a81861ed138b96def4876c41360905609056 GIT binary patch literal 4353 zcmZ`+Npd713@nEazD$IlfPccz27Wg66rSK?9~|z{f>KLWbD)HjnMeZK;pY?M``F_X zE*OhKH*St|sE#)w&g35Cn=QCL1fM$ROY@6O`+wA1KDeH?FF`$Aa9K?$5$_ISCe zDbm;O15p)j-RN8IT~&7vR@#Ek1|Fr8$A&2h#hl@51wwL2@b}OohubnUDs~JAd9B)= zcd2Q&NL@{-DIq5hoT(r5DPiVK2S#g4s_>$SI4&hoz(t?`6dvY42)J@3{kZLJ$!2zQ zJ?y_y+z%;tU^7&2S9MZyWf1ywmvc$v5ere#eRpEw;XXA5$xM06a_5j33Y)%du`8@u6-A{?*CeZ}b8TnSrOgRSi#CsVrwqp5dBMi0+lz3f!7UpUN?AiEHTc&$dLrIj zR5eC&*h0i@M|0{IQe^Ojz8uO*)2fe=&NpP&LN&H4Sfy*pRO>p&o?J< zRS}S9MZksPE@ zf_Xr70M-(&L4;k-bSgn?1Bq9+)1!bP%0v~)YTDnaJtNQio+kNS4rnZW3IKKS$DvNe z^5#wyzM)bY=dsd3EKfWmhm!Wlrp~bYSOWQm(mENKETq&6=?p3>$7~z5jO1~g$RgT6 zq7BV%geXL&8^{W^c|3aU1VJvzou|Yjpsr?gxNjbqK7$1g;VM!I6mtg0GW8Q^^?czL z_8<|dCRPb~>Zp?a3N$-e#;mO3jJR(Q)Iv4OH^4{5F0J%JNL{gTTys*L69a%l$ASs469XK$b z_+GYxB#)OF;6w<;q~S$)BJ=<)<@RB`+@-=fNq!<1%XbC(H_Q*(B?emmj91(CNC5q! zM?t{pR}#-1)itTYO8M|UoNnit3r)>lOLLqG&Ja1isCI*-nB9yqHP_zWzeu```6Pwq zPJ3Nrg8DUg`}Lbd{4g)?OV?oVxZ=exOq;W$RGOg^*jvX6Eq3WHy8PTTfSU1}^&x67 zZqgmcbThOIhy84Bo$2Txg(mndRQ8L}b?xqSRM6B3Ixi0%@`SW9X8z4PPSD@$Y$$L) zFy3X%h`ryj8q1HU9ilF5fr$>`#Te1|;116FkqnK?XQq3@#CAq?c zMAC?1;bcR&HE3Jwj$hL69CB}V$I2RiLoW##(U#f*W>7y{kRsfUfIJ3t~CaJ~#4Z}n@y73k(j7pTQ#1x%pvKPAI!EjFHP9vqSH zRZMKgr4%>XK(-9J4{(tP55NOt0G)-vx9RMzGfaU3doi)fB|hzS^14Vn^91k9 zvIxclYYru6x-tb`TFA}*x&*WImQgsWf?ASwO<)^vKm8+vodbr4esCd1PR@|ZEBp}4 VF-?=^H=S7xeA;IotI$Z<{sTv@dUyZ; literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0164.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0164.dat new file mode 100755 index 0000000000000000000000000000000000000000..a7f5981c5ee6419c6b562dbb7663205992c28499 GIT binary patch literal 4609 zcmaJ@%aI)+44f?=);EVhD3g*iU_ztHi4em2wpHHpSbw!(o;iS!S}h^Oym#L@u68_( zw5#-Sd`s2k4rl5@3ZsL}@zeLZzLUd8RUL0Z;zB{3uJ!e|3iF36a$T5x%TZ~RTvS!( z0ubl7%Q<{Cu1aRc6X?F&LD%JwXrxLJxZU?e?LnpgI)G5c1;ZYV-C+>ZGM01oYM$w< zS&jhsMV#URz;v;C{3T7e3A!dF2PAzuy0kW;7g$JmTCx|vFpBU+^AP<*Pq6=4@xJpE zY+de1P-2Rdu44&6+|Ai&y^yhkLB(P=s01D8=kk4XQTLH)j@`%_dwR22;|!F_C>Gwp zGl#4reg~zA$KIRU)5e&4Zp8oCkKG7lpn;bF9bz8(;y>Ill?JYK>=A+G+|fgOC4aKCx* zIF9%F3f$(|mB>)&qJLR$$pXCK$ipMS3i&58BAIoR-k9cYLCQtqhs0nlc}*H-(VoMy zv7x{n*^8Dp9M(F^LAJI9OUUh%a+Bu*r0oS@VFI?dhffzE%L&WFv@Zn(;Bd6W5KH4N#PM_D*L{Rb`3K{rFzeDUayOH%C>c#6 zKi7GtdjdUUqV#bz+`8<1uu^LSEA0jtQ`|a8C}#jX!~34K+qACvfWjk$v=Jxd5&#mq zp8(dWfa1>POZ7|H4Xrkxd(b_a@p1#nf;EfM6bo-e-BcqYrHDe$peof(y+6=-a(h|og^ z!hfv)%lxqlC-Y8ad~t#+;(^e&?k1iA01!_y!I)rzABfO;8vJds;*lf-%kjdcvGpoV z@_DlEshd=<^9+g*JiNoyusuvQYfT**l~kXnoB#E)O2<#~>O>`nT(htcLKzR1(Dm2c zP_zt9foI>P(WL2^?=JY7r-cvvi3E<6gt!V~%@%74o{n4A?z~YWK9s*d2=obsNV4z( zB#X}K(VE!PFB*#U&`YoAF5=;w0BX!iEbKAa;bSi^WTmEm>^O{0myQ;fCqTA0XSU|x ztpYtQz(Xw&wC@)hUj9goKrNTFmRxb!K%77{Y>=>!siBm7C#qBKDVmgBSNM;AJn1og literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0165.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0165.dat new file mode 100755 index 0000000000000000000000000000000000000000..eb72edb766cc37486850fef18c8f0964d8e995f6 GIT binary patch literal 4737 zcmZ`+xse<(44f?)XI=uTVj8l<%tVGZnP@W5sbpx4s~zDXzy?Us7~*L(K=9eS`@Z`j zqun+>)iA!(ZhoFmR6ssMEGh5c1o4AhLw)8D)!zV(B1f*HAmo#ib_Z4T-5-`0t$$Eq z`Q_2a{|Y$`QbzD)hB4P+w@LgD({TPg8mNKi3piYa>P9Yx4H2fQ5evMjoxdI6B!WjV zqupO4%(bE@`=0I~rkK_smqVJFeAZ--?vN=|2ay2GMeJ}W#GnjKeCucM^Hx}b1>`BV z8|HBqe;g4vQVh4UkAwbjYVy8AV&B!;yBkxe|bDm1%OJZxqq54=Hn>A z64SQeBPBkkRJN=&9G9{B?Oi8^zN}$Jhu5=8?$FDL6rX=4Rwp6h z6mUaRZW3N@LBmG_Ib(?wu0f&Ffj***^H*njfYLk7WWlcltI3yxhoh!yv$E?BRlSFUgK$42FCGOhaPXc1S};h)Y*&` zUNR&9C?fF&)5XdIYjqM5+UC*8v7*N9WeF2 zKtnNA77CL0JT9n&mtoVY0AIIs*GDMf#L`@T#HcpcsFDMNP$Dc8hQJnaqWLA-IXg!~ z(G(#jHrpsd6F!&ueEuOctDUaO2b`r%=C~;4TqXi7Pc`?czcJ#T~KMwWo z%z9YLtZb7uT`b9fRq^GFP1JbaCx^{UfqW?Qek;3v=SyJLvUET^1vpnK>%=T!{m~r+ zmPh9bv>^6~Lb5BlShd!e5133m8Rw&=br*xh!x^{qwD9U^6s~zx49K%@4`MejDPwIN z0lNJ^rxD~e5-yjuaQuE7v6GClqs-Z5*phuGD}(y*9&bi#JI>xY40de(E+JGnIC-%% Kc1RPDR`?Iv{3$R1 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0166.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0166.dat new file mode 100755 index 0000000000000000000000000000000000000000..c6baf33a18e2c1988a1d6e27e0f85c947eaadd0e GIT binary patch literal 4865 zcma)9J96AG4Bd?jr*oT*S4f#oM-z{x8{`U_$puon@T`Il0X`7WOjt-H@bK^z*S@ZD zeLlu&uKps)JgN9)u+3q-acfgQ-hy5Z8ARx3#m(Qa3RBM9lx0ul6PkxMnDUZO}m zkEv73zIvi_;?z;dVwUuLR~Y5$O9C5^ z)?MB3BrCo_5TbiR^A#-5U2!AhVFY^KlDFG}PiVtA(cy-C%jD8z263?3BS1T)uT&c7qI}(_PwTn=WXF;}sP1(Al!_*+Wt;k+FO(imA<$ z?hZxA=W^o+@&rg?5rm}d^;p6wTwm9J6)Aa#K=S7*Xk+$ZhE!jEF$F31yhV+ktN>UX z42Ad0C0u=x46Ebnq{*HcpT=+P_Cm-^zD6#ejIn?Wf75_9k3m5LX@(>@t502#q>2mb zqBA`i2XG+L)To+j&Y?pc@Y4Wa4feKe?o2i}E@o5I4t$yYVT|_PNVCw9WPvpj;j$hG z3DlD@uZ^EKx#hVHR2G!Ox=V^&QkeI@^iDH25+k=iEe>86s)BdSEhx;A-v?=s;qmyk z6zYs>`lLc1?wE7I8v0Ea(r(&L{+@2F!AJ~v8yNT?FwJU+X#G1xlxvt+9OkeUa2|ze zJxKE(ClJ0p2hirFr1=K;ZoK$j%3pO~AziF)eER(}sGq>Id2nljMTx)gDsV$!!`REe zC=6SW3*V^>lbd#*lQqcYQ1wpBkTq{f6ze;jPj|Fy)1|2Qd7it&O)M`cCQgxvO9~?U zGYOUN!~ab%e&rgcHt}(sJ`5h;zv5BMqiCLh+gc{dU424JNc=voPBc;+J^LiBCxS2s zV7y!?RJ|2fxKEblfmbB_W(m%u!QzF@UE)Po-K=*9@djFK0DkjGohY#V&PH(^ri1rP ziM2mK R*>0vm>NbV8i{m$0{s9+nq&5Hm literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0167.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0167.dat new file mode 100755 index 0000000000000000000000000000000000000000..b10d7461b9a673299af7d55b01c1b61e59448b57 GIT binary patch literal 4993 zcmZ`+y_sAg41DJc99{{O^4f9+uFP~|N?2zO{Oub3kANk32x&A3NpO4D_3>K9-wVbU z8>&PUSkP*kb{69d~+wQ)T#gxiv3zU%&o*S z2S(;LO|x}Q=*36ACDbY{r@uvwJ|-731-#Ny$5!_}3PMI&jFac(2E5}W>^G__wmJ|M zbzG;1w)LCc4;`Tlz#XCmJC9r^E(|1DkNi>wojhsgjG3@hJ>FDR_ApO6L?+i&qy6_$ z$?WB^_|zw+_Qo?1CXGPeqU)gnNsa2pn4$}s9BBuey5>q3C?|gik7KVtlZ5*Z_h-Q} zj2!qo0QEh)@(MzH{YEg$(N?K|R`XDvsENN4&9l%~MSBD~Yy66`UPZ($aRD1Fafcf#1B zF`<6GdNDm-k4 z@g)x^O3M25-yIFDBp0UHf(4TR=sQR&BZo_EXBtDSa}A!h+GHKM%ywfIg0*Ar;0@{F z;e<}5k;!G18%B^^DHhxQljw0z3x*;-_-&_+j=!$WQ!3yA&1~HAxL09%)VM?18DY_G@?r@GBT|IU z6#43)Q?ZJpe@BLJ4cw@2Qhogd72o&S>pgkiftW>&1xqdc@fzruE={s13W$+)766wj zp9m&TJwW4+-jRtsI;MWEvFK}}YzK{6CQ>FvJU?WLdzrGJ8_^Dnvn(Mhx-GUG04_vN zqk%HS!nXA@2ymnJ^gk3PK^f5{&U9OclxdHPUJ-3_pGHYqm7Fs%sB$A?G}W)WM(<6W1b1PI+|>xUC7*iWro_vlQhYZ}bDm_X)BkeL9w z(SYQzR2$cOvxMtwN3ha0$~H1k)wUKpp}k46v+k}H33ZEI2R;_-({ns}E5PdEJso4x zVB0h%Xp(hZhEQilTn|%I*ybFB%)@Mx?H3akCFK;WRA0a2$QME;^OAz$wqrv7V>oCOEC$~g6)Auj=rW#3-#zR3q!xOFP{yac?jHjB7^nkps z)$|6Y4E~io($bu(a^Nv7QZ$x7CPq4ww*!^(pR=!g`~_MeMU`V%)Q z1MN_`tP7&FqQmXR==DMwMxtyYJ zNMIaXs90br*?oU*Il;ehWqhLITB@zf@Y;!F77EiE$<_*bGwVLLI#) z7)wN*RL`py9)o0Cx(F-Hy;10Q1;}!bPbAIbBS!?|HL;n!@=J6}0rHct!!p&=)UO7p zo7%#9esv>QUA#rdY!Q74^%(UiA^cGc#CDDqxLD!y43xRzj@bbtBD7&3C1nSPbs(Lk zG;(vxMz4SP$3jZd-5RADlfu1ET5xK=RJ72kLj!K{)hLVh=_^yyv-`bvRfhHZq7?QL HM4kQzTo$ey literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0169.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0169.dat new file mode 100755 index 0000000000000000000000000000000000000000..caf4906ff11febc8da34082f2d31e22dc0ef2f30 GIT binary patch literal 5249 zcmZ`+$#ESa5FM2cIw}NGa0Vz8XEKB~H>W`e|EPmXUyC1)+M0-cp1pij}qRFtvsc0F4p|>O03? z>S@lUB{<4`DCKS`0j}qF)Q;30=g6QK;h1|y`;q$>V5yd1PvS^iM`g>Y4r~~=Ov$lV zNWmU*^8}H9(IF#vP{e&oo7poInAgT$n6rK9pVou0r4}M71foj!M)G#c8ijE7f=)XC z=;rhoG9jQvE|Fu^$hm>A2?=1x&T^i!L`{OOQ!6-9$BKiyT95=PHdUo7F~oMYx#UZ_ zkIkFuN?ukYCYBbw%h{OkI*x9N3D!X^adKhtL?N4cElz~|5#&&qJG;5er`Y8xQ>TwA3|#M< zzfnSk6ycs-pyHst<;Mb6Y+CAskQDldzbC0$Owu&GthF0@E*KL>x46k>(@hY^aaK-` zz3GVjFzMxROTr_PyaH2NvC0znokE>F{93r+!ofcrR&EhS(c|BTaA+Adi4rHT=TcjS z)_1L_7+NBX$+6+l6L^3@+MSDB?vrrzl0(#*sx7e8w? z40%h+fGfJ=NsEc19*%gjQ)a&B<(V|34!;ZZF_8JbouN2Nm?dIZ-f^i~s9_1UZ1$bb zGj=tzQ))^(tcoIdMwhOD!2$>AjR3*t0a=;{L$g)BUqlrvjwsw#H$%Q-W;S8j>!wiz zUVz8(MRnu}vDxAu%49F)2l|uph3UJmKaonA;iN;BZX{rIMXXmq`p3qN1Os(SgNwp}Lr@%m%=7D$8G z@}6quQlTWXMfYs=vCyBkc3NZ*e0M^lm;UiQxy76ua`7mo5|=Y6iq|D2XI}2fjuW7e ke{e+Y*V0ggEwofbI*zx8PTG5i5YDLc9~ETnyfc~q11!8X7ytkO literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0170.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0170.dat new file mode 100755 index 0000000000000000000000000000000000000000..40beda0c5cebdb07171e9342a833a1f7e4feff22 GIT binary patch literal 5377 zcma)AOK#jS40Rfyv&^(mVVji4dSM-i&C5u z2r})z26}Hf2i?@*qB(Ipe0hr-TQYm6S zb~^GTBwczl$c8taITFVr5JdDuDQeMrmUa6##=?Q)3lvSDSb_Q1LJ54De+V`nrg`Vq z_3*(SdkAv|ig1*cI;1>#7pDnQ9=Luh{frLUj!ef&b*cXh+`E$wKje{BD3%@uq0edE zi8lFmH3?=80P;GwO5Hkl<(*aQtr@`agK!ZHAJ6{+7$hzy(yzX#I0TdG&-KFCK0!mp< zt1Y=dtc?M6l)~*ptOcvXewZ}_04#`oL@IMwyVUOo0lzDgtd%ldU^~g6kDRokDy&bE zAQ(y*}VUGqO3_(!S*ko_|Srfz|nzlV^jW>^!c;QdMhl0?V_%s)V$ zVv3t8hwoezwH?yMeApKo;75BcNfK;!`i!X&;mMhgRq|H}xzaH+BB@Vm!uR8T-?%=; zr6p=aitPD~nuN9@ttJNc1wfU$5hq6h3%-!mpXQ+={T@qkze)3C1N`NoVGK36#tc`Q LEPd6gWr@N+8lcsV literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0171.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0171.dat new file mode 100755 index 0000000000000000000000000000000000000000..a3b06865031189858da367dbe39ca324768db66a GIT binary patch literal 5505 zcmaJ@!I9lC2=$*mK;d;~sXtBS63d+0ns5@OU7EWnWi2eAMe^ zOmlJdx1&}1aO-t-)zbVEEf(nvT3LJ_OWD-_26VmExaRW?#JZu#9|GCZet|0)A=Pg) zMK6F{wi%5R7%XORG1{+CQC5E{kAYBFM$frr&53Z6k7Mcun=;XI8}y2M75?Nj^FEI1 zE=dxfo2TS$Tig)qj3Qk=>lJsgTt+f;3~Bad@nS{Zrk+d~qpTR_K+wp;B~S*LPlI2v zLD2x1E^aTZcmX?$LqN~3me`Mj5euz4ohz^+-tOaW~O0msKCL{+;Jli$fC$z(sMSYT5kK7QIV>p#^3^9@HQP~$lcjI)zVWKUAVW3VOo8%fj^b$j zy!`!Q@Nk4mHM7XNt3AzS!8iNw1jLg}cLF1+=HJS;Nc}<+vb|;t*f5yyacX0?^?=hT z*ZaI4n#j8kN(UrWI2xF;&IwP8_esuZc@-f_ zeX_I~1gxsUxmgAvR7MQYpo_|ACurWnEK42&8T-|&oum#=XCu{Tnyy%^6z2vO#~elT z#<>AN#29(nE8<;VyE|PYx$SkBh@QfLQxX$!E2_ewC7|xH)3(8!rU4Kesoy%$ukht}Q11KAF}8%~w%#hJ71syT-W&9lS);($KqWqX-Qo z8Y%)oW_f7rW~AG{=FHI9bv`5qTe4bGkPJ=?$ne1!eXxCOIZz5rBe~d4g{`YM%&=k8 zR)O2|&d(3v&Pr4%xUn@duCZ8J1h-<~BEVd6VimWP9lv?xV zd7g`&*K>Zxik@B{iEx$O^?CiayB<_b8W>c$J7)hzia*2$0&jpV3}(jQ!WE3N-9g~G zK-r-I5hjj_)*VnfN%b-52&O`m2jj860RT12^L&=)Q>SaE|C^fnXe%o@bRq>B35|SI z?(1rkoSH1GGGq97Eh_u*k6KxLXvoKcYGMQIPe-Z+vK{x<~oIg_)dRMYS+21`MS-6T#T1D2F zw|(i<0K!Q~DmgKkVkKllj z2{lqpO7+vx)wT82-D3TbJbOPh>ut!_Gt3SKLx;A->Xe=60jv}Js##$1ntiCM`iuK1 zx|L{p@HCf<+NV8?e>I8pS1~B5hsRUR;;J*I74Ox_`dgU+ z7AE)4AU{r*d7OcVVlWquXx5u?Q_DI7qEcRh5 z%6@9N4_q0#jp^|KTnmz-GQ*c8ru!{T!+&jq`IFYhL;q_|;M#c6`-L-)CR+Qu43W6%AsY z^w_ip)PZJ+Hxq@jz>SPOy!IFYateF!&B;#GKk$tUee=H*!rHf8c2D<`D2KLDIM!1M znI1_3ecX$sd5gR#d;m=NAa}k7o>5WDDsSe!7tvn0PQ#FqPiAiGBG`E_&Fe2W(c&)P z>e^CBukNgfxIM5eE@}4~s3v7`tiEXU4ZDMcy#qyq!xC(U2B@h!+o8vndpKB9nh5V_ d^^oHOd{(d)uA?0b$mQC&LC0UbEE8d_^gnAWldk{( literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0173.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0173.dat new file mode 100755 index 0000000000000000000000000000000000000000..b9d784e47e96159f5ded4642317657229264809f GIT binary patch literal 5761 zcmZ`+yOrE94BUGcYU; zd_Cm(NZ|dgsI}qzH0beu-!ha=lF~GF800$ zQrHgRX*uD!xD@zWW1M+!&QP;-=_ltenNCVw9Z0&ZzAT1N=;;bg{N(Fe^wJ<1w-8Fdz1LCQ+8ABMI%G z6bnh&9)(HC|G5_I$U!n%NVXXEE~z)Iz65n<*pse-I8@>;bv-O*>3O=gpf$t3Fcgqv zY5z+q5{}p0#p#_cvZGTL0Y9BOjW`RK?HPIcYyp||yx6i+3Q9&mNt!RxaKbcZGDC-^ z=()z$Jwv3syBgSvI7ffA+m-IxU*)o-f%=>9NmvvfNTcx*4 zwqlqv_fH&L>X(_Za=y!y$$+3ReF;Xz6DPFE@YBGcEG##l__{(D1|H@x zu)WBOaHB-7YPm)|BjOJ4ou4b~WT%YMgjNprU`6-uJ&C8vEx(O2YmF|y;3hiQq?~*O zt!z?0FA$$H7u+@6kl@pX2SnfYnc5Q=0}GP=2z-=g{oTv)_ZD{12ZcLstk{u0BBl*_*N7+c~5Yp8xEx>S9|0xf%y2-AX7C zg{J1aeC#(9ikS?teiJL?9}%*>S^d|8JhfGNgyXQuat|lh-!z%Ae0sO!2LYMvC%t%1 zv0mv>I1y4QvBnbXO`Z&9cE$l9nREf#J>ZmNF#R(j`I3wqGz;^nE|z7Kb(vz*F|;M9 z5^r-I2APqU5OdN%CGQ8kB2lGC=!6jJW+lQ_e!ZG_EONT5wi_;9|FeQ4nWqYR z+mqJ^zL$qVn0;3;oi>Js$lAI{LwVZ%#sS!yW7^4mlGZZ848vSx%08sqHOGvx-Lvcr zmVOc3e_eT1bfU(wWlq~jqzVtu`DXW6%Jxw0Xmf>nINUOZ2xCS}z8HWh{~>|C*}v*b zg{nbu%qqniDUt`aT+bwom7I;iKXpJ3WsW#~0NCBIabssA(nCH2TT}LQGugE%2(ia3bMdo|7V0219|G~O>gMdJD&0@*z8No3Dxno&90_=#%9}O;>m0L>=G#JA1!ge>-+vd#Ry|rnbm$faRfa1dFXMw;tkQmNs7z5o=~4n0eaL zLHHn;)}d|ibuau#u{YXh37>}#TQEhgIscjL0Cq&u5`5_tzafFhrPmb- zrO^s&7Plr?Uw-ikOj10#3|_|n9xYu6d)pQ|tpV3*$u*yqz^tjR`Y!2xdV+h(#g#WJIPUbKGIyHH3CnJUnnA0KNkum`o|` zDAHZzSP=CEg!YAOJz?|?!w+1E68`cUsxesZ^d!m<#6`bOeFG-DT9r$iB_w%CMY8-P z3+%Pb{afNqvsI}o=#0}p9mlp2H4;oec2tIEQFVYpjbc(ZeyZE%b_A?i^Yd7fsFJ)p z;?y1xX0rukT8LL;8O^swfE#hqY`Twk(U56|IihF3%`D!`k;X~ki#+_{;;}x)wvpCn zCXcasKpco5dxeTur$7r68rbmX;8F-6Sw~fJ*6qF-*oDfLK5d{DoX~I2WCR^Zs6{#P z#^bvEFkf^%W3?E~x=A;zMr=5sD|Y^4Bt@OG5Kj{IC2;y{@C9?kTK%x2@AamD%cS#o zrz?UnTtxH0R5jbCfP4*;a-aN_K0W=6g54hr-XR48KcUWEU{%6KeF=_&N7eQ-4ahFTg zOe!T_s;9hqarTaVN~boJeaCJnnaqm{n6*YO>VqTOHFdI6zJ%ie C|548X literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0175.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0175.dat new file mode 100755 index 0000000000000000000000000000000000000000..5c37de27f31f5abd0e3d86d4f4dc2d42dbe06b19 GIT binary patch literal 6017 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 W#g%+qIsa!6a@dh-k+@#vGSGjvZ8!G- literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0180.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0180.dat new file mode 100755 index 0000000000000000000000000000000000000000..157703c7fdf4dcb5aa1545b83b7b0dd1f2abbd97 GIT binary patch literal 6657 zcmaJ_OKu%G4D7%_ycxiAg6Jr^*kGiib#9^~%rXnZZ$wfgi-lMh|IDCbt|V+oh$QIQ|Dh}c;3yh^f#|ue=zGZU&pSolF>-0|uO(;|Vf{MBNY+2e zS9>y`S^}*o0|6-iKyWt?TW?cYXb2VGM<`4I!8k+H;D|;bmBjrSobC#xO_W&kyY2DI z@?VCEUZ%UV$XjLM$N4K{)~ligEFpKRSsVNP9M;!Rm#x~OqtvCIl|;>9{lywh_qyH| za9=vcysU`2Bguk8d+K=Y9`cGDihi2QgqDZPbLE<_nwaizru5dmZ#x<4dTs7BJ5JhG zDKjg&wIKHHyT&zEc6O*Y4sw7;MDl+&4%?jzUCGTeJ+&V8&G;ej*7O1ubQH>Qeja+g zO1Eqz;H)Om9h|Ntn4iiCsfPkQd-l4=+2d8cr{h4mOx?l`nC%G1gG3RZ)C#{2@oXBF zVG|-9W&6k@gDqTNt;Lel;XX3a0wg=uP>^GYr=rc|G-a)Oo6lmmq77gcqZ9$l3G&-( z1RWIP0$UXG@k-?faKVc7dQXJ*h;Eg)nNG(Dtfmx=iL3cpIDv*k{KA9L-6U0`pS{|E z%(#R*20@e}ZNm)d$!&@)AJPe?oP7l;Sz5<(>#`<%t1fFzQTykbaCwI%NUK-x@64t8 z@ELVUtM8|6=jQ9Y>I#f&8{s1}3;F3OQVT_^&~hV{?p}}PrcwJEf!8&mBilenCOGhb zU<%B02j^5OdXs!;>uIVS`BVet)SaBbBkW!NB*yaIdem8aC}DW<7S #}*w@o>|rOV>=IF=-LW0lW+&2D z-GkWD9UCOYdzIjZ`P^WRB5s!?9{>Ofa&~jAFzdaLTeM0dJq&Iv(o1V}i(5&uM}d}X z3DpoLz#byH7{CQ9Re(>sNdXOoCa2;!4 zmJj@1EM91jEAx6n)xJM9+5=@tK5~kUi;ATqcH}NyN7(IVm42zPtuydAiiV7Qylb!w zVTwjYoEVEbZCw;vQZok$(;5xkPh9|ZjX$h$ln1~A=V2tV7^~pB>iny zwkdqVQ6sw--AJ`(xFboGF*jS|04$h=FKFKG`F8;m)WSiw#QHs0$5`@&OJ`93{eK?D z0@he7YKOzs(9iNrUfeh={odbgJ``XVY&Phhvhd%@DypYesULA-)bS}+*Fo-g!4x&Z znkU%6hvL&t=zk#ox&D$Q>7Dqx_Ke)R8*#9AVp0`5mAR%INS)3a#tLi}L{AAp`m@M? zyG{2ef^Lqg5Y^d|UIhRoCby}3T@$<=nno1);f=|EOKxJ0d_nf0iS-7NV#;Z z{WR2_M_}Qf2cDKB50NV}&tQuP&^pmEE+5t0^a=|9)&n9D2hkm#Ijmr<1m{8}?)p1nVJ)n=?EpO!iPzfZT%lUyG{Q9 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0181.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0181.dat new file mode 100755 index 0000000000000000000000000000000000000000..2c08362b08efe0f7ec759f1b8c28e62daca86ebf GIT binary patch literal 6785 zcmaJ^%aJ5049$*?m^!Wrn1W*y0j8xViwSj{L&xNR{t}`%6#6_p2@quWb?xKp*~U*q z5#qisK=(wL-lq^>38GE0ujir2omyeI zlSzuUMcs(n>}2?>Br~-R&82{=s2`+md{KNoL{USKsw2i29d_0fk@SudE!-)MS)idu zv@xIvS-3kk@6|LVNda5VfVNx#ZZl+kv6@I1ep~pG>!P#+5YN+>a}ABPDA3Nfr91}UNKD$36Y5T~vTXjqaT5cu&B0O9yVX`YKTzTic@cKlRBrr*Go!TLQxk<#@#k28w@Cj@r!V}@n3s?ulss}Uy*lJGD2>vRw}hy zuWKGBDb%xV2KjEI%Ky63wU31aeJl3lW2d$E4TJMfcY4xWd-~!Xy8e2BL%)}vl#}&oZmjTpd#q?!Y0@Kvs7&DJbjLkpX{#xq z9ZZ64Z`R+$LkbE)Y$ks0=U&hV0aI=4GT*OCHf>YA#M3pBeh`-YnEK3gj*?cu@|uu& zL13~R@GtJu*!J(#50jw!Y@%82eTNs!?$af4Q+PM4q5R_z;%Icpk(TY6(SpQ&kC;^nCkS!Yr=6Agpc%#`NAST$N?A&#(>Kem|>Vu?|% z6ziwqfxkfAnkS$xILYoqL2J^gpxTo%d0pE?7K01osMD}w*UYa$ksYeg2V3ocg`a_` zs#-QF7L&Iu5gBmVn8M{S*eO;E-`Ny=Y|=yDNe@wiu2e3ooPax_iC&cvx7H|!TF@rZ zmL27Vm^3^P55GdfKAz{F4YBO!nXkf(%2#Pfz4-PjY9ETl-MzUG_*%U2aM)N3CEEnA z!iTP-ua+g6oVv1RG8l1?+%*YG)dqX#rz+NtrepHa0Cz(rK>Y!I*wXwfI62*i6mkel z!Ib`YgbGB}j_qQL0+hQqTz;EIj7GirdW?1mSYef6$dUdEW+d*$1ar>(93mv2@cDZE zR~rb6VOg&zH&O?0LUV&7{V55*0AF(GViKX*BIsWUJZ#sxdj7LgdHj(@C^SuRtf;`{ ztM;9eB3RhM#`Kuf;dE+}<#J}Cu;E#U>ZKX~`Yfaq_9`*+aT z{WjRd@By~SP#vC1laQ`h|G*%^xD^NzQ|K$|05g0zgHu9LAF*K zX&g(0rB`8lqu2w=sRCBvb^xQq#@U}m-x^ApH!%8->F6(}!^xOq&gzh|w==@5T>wT% wo+rK?6J-|>kb&(*SL(Ono+6cUgEcVdUUhKWpCZoNnB!?^S45A5PeD-s0M@z2xc~qF literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0182.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0182.dat new file mode 100755 index 0000000000000000000000000000000000000000..935f5740be4277cf66c0ff835d559bf96ed9c71e GIT binary patch literal 6913 zcmai1OLAo=481O=;>_L-!WMc5cWF?SLAJ$G*g<;eL6>iYguVzjgNr^#M*;+Xex5nL zE;BxURWv4_VPGuY&nJs>eo@#@Yjg6Q@N)jL`vwKq-Sa$Ik__ky)MDO&vynxPi)heKH9Es}!XEkI=pl@(RMH^p3+T^!kOfSktAP=dtDlT#^RSG}uGTO77b z2j?r`0^T0n>tc}U=2Nvv%`>n&N>NrNgAI3MNoH!uxHa}Xo@WT!2-OrEL}Yu;x2h}6 z+p}b!kqHg*Dr^jMx?7V~ap}fm;^I3DZSdKSu(K!5`-NWpdu#e#YM#a|KAuG&nvs;$ zzgwLsvGOI8MZOj55cRq|vvH6JS>!HmPB2Wq0|46;cHJ!u(?5LRmQf4IPwHiY6ubCz zvXmlkN2&OSuAV@Bi^X$bSiFL|1=Uh7Sy{X{?OGcTf#=fushI64IQAzq_<5#GOJi8E zH9Gm5FjvIHeME3oD$WG68cA~9!K9H&<8AmrGsjp@cszO2^;neLk;P_>5@GWv&}gJFjFrMa7N zdN{^}_l>yZLlBaiOf5qDcd(j1MIY>?}8}xaTh(xFuIT8<>0MPZpOH&|J_waxzm@0h2 zz5tW*1n9Ufq}W5KR4vj6c656iYCuRM@huZ0WVY4$LbOj;<1FZyvFPM0F$-lv1hE5+ z;I*As^5XVAHgAdz8Jx+?)-RP9KZ^#}*haJQkQn@ezBi;8+^QvD2`{?`(fJ1%Do}k( z0&hGZ?U6kLL;oUz{3`{Lut0jeEen(8TXoOc!tilLy?rATwh2PU_dy_COhZHUO-La5 zD%$^)!CoN(!KzTBN7oMf>1xwOtnlcy=W{C>rT_3dAhHGztJ9Yblcq($-_fx2`rAA6 zW%q0KmRUPjHRm3a?AOmhOu-Ose?~-YW!a0>j0-ZS?D+RmD4;0=Nrmk3J0i~LH-RB- z@$Zyk{EoSWE3@C}^JSl8(|cMIxS2{wzQI2KY6-x)2CnI+3v29iGo|Xz=9G$5=|{@b zfQb9#rGP`vzeHHVWUpn@1XjX>7}m1nJMy;#v`kwq7>iA4YLA4gN$+UiI>>#91yOH0&REesNTz`>aFY7o7VBEexy@%f0Jf9 zQyoAtWSYass}7*_bP!Wb6?k2J)^8GHxJ8GYpgM9)#9L*tm5r}q%}y>DoqRZiwgFnk tR^;#<2$6X`{b>w0guzR2EJy!qgVK2iC_X*X{{hpi>wW+L literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0183.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0183.dat new file mode 100755 index 0000000000000000000000000000000000000000..7f76afe5251f1436b780f3010b2015c243f466ca GIT binary patch literal 7041 zcmaJ^&6(UF40XOa>~Tt<6t|L2pfq=o7F7reyn7tuIiKD0 z`zUDo%Xs*GJ%3;);`@1;$g=)GB9_0!w$_(NvFRC+z3utE9FJfGMG|OuegWpOpqXy0 zu3QlGI6}fo8Joq9Nh5}jUR3f4Uy%TbwkG-}66 z5Z}m|Sd)0ZJ0AZ$zoY0f>jvP*8*~2n6>QlhW4(d6Ua%qY_1qz~W+8G) zjoIW<~DDlkT{=uA73^T1uzfIp(ET)=9vGTF>M~z(=^-?VlN2QmFsLg+ZQcrdsZAZg z#v+`tg8Z%Wb2VvVV9+|v=n?bTUo0*ASP-3cz}*Q68SzGxmunwog7@~n=Dbu=WnXe( z?bh^TCV+5t6t#fR2F?08!8S$LxP>*{*^fCnL{ipVK(<7OUIutYMOha39`EWxU0dJG<>jRJ=^k&I9 zt}bX}CI>Dh&z`i*Q;l6bi_z*v%-K3W{-Mm*?xR|jHV7>Xu=Al9sM%+d`3gdj#m6LW@YEDd@V;>^B zNPN7L)3CpOYyc!DG9lGEh9<6@>!x)BQ5+3!ea1?8B5G*)pf5#`pl5%l_kdD>(>iz| zS{lVa_aN`T`4htRb26_)TaI<{s+8S-G>^;JIc147Moo+outY>}+8>Ta%n1H}|tpgFV9>(`=v9QyqGeF1_u$&K0 z_O9A7XW*$~-4#IGx1th3d$A)JKBZTYc#A6LE0(ZYXzXk4q2hA|qW&)h_RIn}Oy2c1 L-U+MF6wKj2Ri%E^ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0184.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0184.dat new file mode 100755 index 0000000000000000000000000000000000000000..2ccd7d4bd10741fc36c4091e659001687e812f72 GIT binary patch literal 7169 zcmai1OOE9>4D_HEvz!YA@I?anX!g;x%Q52Ipm*sYjn@%Lkt}}P5ik}d7K9g7o34G}|_gE{-F&Nb>LL7zzvGuY4mCU4!cGaPZ0!Qt*eT4U zfQUcBa$CB)91Dn_=JYr1j36B?ZO0lvNfp9Sa)}^EnjQj{uM#hQ?o!PFKAE~5FvO4B z%xFNN{#>a>MDXZbKI%F@fe-_5FKf4L3>>Kt5?xCAlwiGBER;Vx6O?!dd{=o%uHQt$ z%#&xwYHJOzZBtXjrRT(Y1LxEPdV~2Dl^?H6RwD>;6Xjdoor?A~bvyFfc1`F&mn&8! zoiSHN!8jFWfUDj7dY(-cgqrCbHbus%EAbvTj*h_<0$`xAA%Ohq5Kf2?vn`G0r;4Uh zsEhki=+?wHK^Q`?_cKt!OY72Z3?lpRnDxp$WyE^O`Dvb|7_8@L_atZy5woU{UmWyB zyxV`di564%V$qdf`7=6gbbIRXPWS2v9F{!8ySw$}KTDk-gjRNA^&;;kG8w}--)8>W zjBCZ|wkR?yzQu7c{LXLY`+BBanDTHBtD^Ypf9}oBN#IjUF==@P_cZ*zL&!4QNJ>wE zvxQ||Je59guXM>Z$-`PH{D2=@$MdW5bdov4FdeWy;mvzD@r(xGQ_>WgcinQbfqc4Z z>Y=DOZT1Z`r_G81u4pD4N=Ib_P3Jl?9)-( zA2r6ToJ zlNKo1<$Ikr8iX&cY8eGX6HyhDVlj71lMP3yRzci3O%7b+E8~0|2~+&-xW+mY8is$f zO))T8%-1ZOFHO$=-6Zmt=O`lp~&t@H^-Q&>QSUUDSI4cFSJ>e_B>)SdU-UVXk0| z0`!Sfke^3hwm`ym;3@M`r&scF?qpHrYE_ofJAuP+r7($)EbWDNs<4_+qB-ytS-?K0 z<3^eb3|4o+L@>Y0S%WAew0vg*GZfyB)&bFMTG1d@@8lEx*;ZrDh6aSmJOXYFsJBm!mXAsPTn>;3ZPJN&rhP0xDFo^$RE_HB^ R#FD!s6VJm}0zwTU@;@PTlsy0d literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0185.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0185.dat new file mode 100755 index 0000000000000000000000000000000000000000..e6f94440c8eab3f7acd79fcfc9b79f160c1be012 GIT binary patch literal 7297 zcma)9%ds3c43x_U9bX6&$|UA0^5(Rdfm2`zdz4FC8WAJ_Ha^_a9ESKb8X$<_+xI-D z=iBMwfaQLkA35%?=XsIm%kuXW{oR6`R@0ba{M!LlZKsG~*Mdgj*RK=sX0E|hl=gYv z0natey#^;4gb7$c>=@&r@1!p;Q_o~F9K<(z@1Ick1l;2tD&L`4o0F3iGp=r&g>a|K zW}njW049%~6=6f6lFFbqKa?WKv2MRgQp49nQe<1vv>iciKD$XCkXxxikP|3id+KIl z$sc(S2r+mh^73bCO`r)!w*CV~2npiY&>f7!5YOpL_O8sc$z4?xF2`wOZ|BwfXC6e( zIN4L$B5b~9i@pVxt!)*b+(o0BI82k`aAzjdSr_|!Q>dssccwXh7NJ@h+yb^Bb|KgG z3K%vRsL5+8QX&>^tc1P#%_QMEv;bp*2f;qTgi7@Z$9kz8hXi#CqiJQ+a`~N>7En~X%+^KR6%wc z{-^t5KbB#(MYDl`u)d>J0;mzSJ&Ihyr)K;dKOsgBnhUY&%<^lNbp-MNrafV{%T%kQ zi@6*GT}!?#2WXHP8wiLgo|=@#G*iI-#$;T@vU87KzUku88|>1oAC94qJY@pmI%C5! z!~6B|m;TNywSUMve?P{Z@9hW&uTX^(n?p{uIFPDz2<-e*nE1cvYtf-;n?DH$Q$Wb73(9DdRvl*wF?6?}bif&Uy(IiM2%eok#*H+n^8AOqfmvR4^1fygu zx4}IsV!C*rDr=Bi`GPqyAa|Q?mjDyT`xG<`D1AvNQ~7Llf}5&Lf?nV z4Ccq|Pf`w56Y%J$cMp-E3+2B9`3Q;HVOItW>x!o|Ra3CK^1h8cNv~Un8?NQiM$H@g zTDDC?i|7T(`t|9KURv^qgy7Ln1k_e*izy%SBuG_Wbg$An^w=WbBW0OM1F<_jTeXlC zEwb!z)&!g_`A$w5X3P`Ybgs2=e}npVxZ8zOFHT@rW)OMY57V7@as;a{{Z|tyDre-U3GWVSr>lqEq}D50ar{nC z_o~GAlln|mQjP9ais4FVL3wdP5Z@dxk5TiXaMM(gZX-0S3Np=xe!D>%(kVwr2RUUl zt?kEhd3$XM>;}TJrDbTM6Rc~(M)0yjNUU{EDGCUv-}6sh(g)flvvf$7vyEIsr7KhC zEjOZpVPB>#+|#Bw#Kbe%(V?k{%)K|x!25=kRmw9Xt$Af%Cd8A5)c9H0y;yaK?aN|h zrmVqeGAcz)O%T0yq!aY8m0r$u-rqUvF~NRKEUg!PKtDUW)8&o z8uppdfs-%4=~>N?-<&?PFC)u>M{PqL0o%j5t8j}J^s@fC`JVQj9EPXdNzYVnWyl@r z=_OrZAm_@Eg2}aP@9(k14=-rKuiF^9nt}O=}h= zvr2?C%919CoG|jK*&PGmB8R|k|GNV6r8eVG=Puv^I9z+~hPq<%k@a(?2!JeE#A)ZG z^Qu^JQXwWt?Cz^CVR0;sN{nW)X7yPObDS9{1>zm%P!C)eo`lHHB62zd8Z z-bK`d_MaRunhXi}193@cBySIiP7C*6D(p~9F%UaB92iJbuYa7b&!?$c1@ePHYF#1q zHZ|jSlZ&!t+~?Lsx+JZCK z_FqBZ+1IfAC^6L{(r1{jD+t zsH~!EcwIabNM#=wISZi69|PoxJeY-(t<_I?K5$YnI;TXV1hhC}!|MF`A@TJ8SF@@S zWtQg$Em;QVRxK3I0prw@Nqyzf$;%!pVVlw@nP8_K zJ%op$y(EJz1K|f3F1e!C9AMbXoeLjFwJXl Ht!(@U8r-BR literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0187.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0187.dat new file mode 100755 index 0000000000000000000000000000000000000000..8b2326d53da082bcb9f754bf379ae51e02955441 GIT binary patch literal 7553 zcma)9%duQ3485-zNPdD7L(j^BicpKrG~2@yBRDa3s}neEMRe-EMm8H`gt!Voh4azIsY0c39i`gnbn z7&S>gU#~tzUJk7I@?oEbYiS%;Aj$zL?YpN+TKN0|d5FoycMo{vSOCT~yid#=86rs3 zsd08hRgOCzIL~UFg=76F!~-+4v>kt&RjqSFp9e~qOtb)*V#{#1=lkC8@=3z_kk3D4 z#E0DOn1@$d-VvER(;s)k1Ce!H(6A4T%04IP-O^YMJ8nHz`*!w@0LQ@DAg@7DLu?Ev z-b%W^5C-B|_0?4`Y%`kO@UXQn9oxW;x*W7-Hr$>DKriMIbetK@Z8S*~eGZ|d^~6QY z zT@IuMF-4SYJ5Er7a)kevjHBy2n}xlrkz$)WpABI{zV&@LcgFK{(&RrWDKtmP*;WVd{3sC$0bX|F>W&f6*LEK7 zgs_HDCwPu1NCmLHowHpMan`k{i&Ekyn_BZGH-*t&@p#qYTDm*tvf=lqIkXQl2eAy=6Q0~}l{k$?eK$&x|0B6*?BjFrdL z3qf^3j@4cTaev%IS z2*h6qw{8x+C!Bh=WC3&mW=T`+i!ae1+s`$QvP-|)#W2>oUf_CU#1KBe-|pviOj8M2 z*vNC4ombPZjm-6$G@PO2SXKQszoxpQw`x(m7k*B|j8ERb_1i|qjh%fx#c{k<=o7TR_w@!cV*jiM6f1?V9EK-A7#L8#wDGv@VZ=PbqU}` zGc0>I>hrK>=MC#n5Q}oZO!aa2K$(yLWY>es6mY;`hYJv&d;)G1E7an}OHx;wi-Jlp X&y<^>bKnvajp8LO`K!tG2e|(Mx%SBu literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0188.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0188.dat new file mode 100755 index 0000000000000000000000000000000000000000..be3ef386cf47c16338f460cd4bd2bbe84cf62d07 GIT binary patch literal 7681 zcmai2$&Dp946TL-ux}lL5*eUElQM8h1vr2S!2+B>ANyc*Ta>swQq*@HT3j9x z^ISiXJxVf!!P8LRzc2rOZqzG4JzTx)rBwRGx9cHrq@DC%(q|E&>Z0m zv`9W6@yf~MhXU62#+~M*a%8uB`jYWLN(qNE3@qv4a9g&E_4uhd?FVZa{dafJsN~b9 z4zjokt%1m6xtA#!l4VWC<*wmlQ20V>t}sslzh@g;&U1rA+J(WNI>^V{y;iua4OH1d z$L3rd2mv$~v~7Puej$?OZQ3;fk;&Cw$g+hh#BIqspdfida3Q4~t{ohama{4jt&m@pY9&pb+I?Ay5r;ixAVp zP#^WUt#irSk2NkugFvu&Ggjph0T(@9{bpDvaiBwAz~;cD>@$#z>!ydc&3Sr7&jFB| zK!=Z#prB|02&~K_9v9TrnF;9{ zz7E?#s_K%kf&lz?A}f`uvBpQ__979fOoPz$NWGDfnQXF!OWKZS^3b0&q2jyZM6hZX z$k*oCDEc0-j$`=#pz^IoA)cpnHn|(RrbYgA^yoOmOXufR4k;+qrIE09l_}aUv??w; z&FM;5N=j?7EeXkf(5{HTH1Me^1|cOJ##?bZgs~aFs)9zt42oRjSF6~_9W z-{cC5H=NBg2X9b$`^B5%C+Fgq#-o;|m&>QUt|uB;r%|?p&%Tp;2{Xj@kOBOMY1a3+ zOcw528K|2qHhUKaUvG@_ua1uxT0!jky&X&n*qcG5t4d;YbIUu-yooA^?4(4eAu!(h zc*WEf>^>zi7W_~l+I2PIT3E+ulo^3{t{~@-5w3C#AW)G@@gfueMzINKJO3D#f!^$9 z&`u-i)Zs_T-zh+hMi?bX(D`4Vq|quwe~Mryz~Qy>SKj`$_&mHK!nc-PM4hvN@3q=l zcw#@GOKX6+W4zZP7{wR)^<`qb@a^xZ5!x^W-KR6yEx?a#e;pV(`+bDdoez+ixDvwt zuIs0HMLKuyn}p?4?qiu(aix7YO%->40yX}0sTy(oKl#;&aQtHdB>5hs=W!OnJz!j- zPzgfL4S0*kpF5*P)&)IJ@AQ>iac*qN>Q?wA_snw0o5E!_4U7T<4o9AxIr5?Pm;rRE zN-6VjD#YDi2p^*B+ZS!kb4ckfg(n)?+u^s!iyTQrfht}U4hzu>dPC?Gbv9b--0X?A z#+IuiRFWXv4mFiQ1O=j>Q&hA~xgo1uKtsjS7P?Hpsh^3d#<5EeCMCHTrrjnFNs_=e zvznys%xB5mMZz@AFhc?lI|`U)MXMYa6%-9=QX9N9h&4ASL+6y!vi15cc!dh5*vYO_ T+ppvbTYs$t3Vn(7P)+(DbZqCx literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0189.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0189.dat new file mode 100755 index 0000000000000000000000000000000000000000..01061ceebe875e6adaaa497eb2c2893814f6d3f0 GIT binary patch literal 7809 zcmaJ^P0|}X2z2UuRaquCn4{=u(k|E1QFMeXvq;4cgai#j*22?3)1bex{d&bw-(f@o z*-xOD*)eKSR(?IQo3d4HVr4|W~nuj2%x9Q5h<7ieleIiI}J%GYnD zrl4f`YZf#k$gY9eSnpeKs_7TPmB!uiv{*vbCg@IujL-CUq!%Zb?84kZAkm^<=f|`` z6+%vvq7_s;lz99so8$x2+Y{fW`=>2t=xWo9V47tI?b$4ir|^EqEy}Oc$wN)Ptj#&hsG%O3-Dn4bym17?fg2sd^H zADis9@c<){FEh;78h8oe|^ z(6d>^g3g`|ljrh+?T(DbH#m&!zc$KUW1`28o0J%~Ny??b`U>Pa@NGC5m*z!nE>zl` zsspH!bbbyX39R{!Nw92%GfyH}^0Sk|6Bi_#Nq!cj5q~1OIFHZk3P$M?TASwIm$_pC zlrj>CWb42=M@MZcWz#n`6~k;vr0i-$K$B>!=JC&ShA+!N z^d{+rQ*jLOr=MA;aqm_lN-8#PQC|k)Z;1}wWId>c6@U!>H9F8HtSZ4Trs^4JoA{Vd z(EvemZmN4Ghpan-8Ci)Xt9@&21$0ics1>=$l0dWC6RD>EO5qqxW8I}{?11>T@(?%f z4X9WS5zL6_b_+A5U6-$!H0iE^xUxhjn!YG_GJ1FSe5zz^lQ}YIH(EZUL!3nWPNV1Q z4P6{vm7q(8TP%+{T^6xXI2(tB1i4j1;>3HEiCcFMsPG&awWXBE`0{~lRzsDOZU z8&Pc19!}jON}%F1NsV1~^Y`;mU5P)^SFfIvoo>&S7a!Fagl^R+>tUj07dFEKwEHRf|6~0$B0W_LIVkmEf-5IoV;uP2jxUM6#xJL literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0190.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0190.dat new file mode 100755 index 0000000000000000000000000000000000000000..5df1d2e0136776aad4627c88cb8cd0a5d92e8002 GIT binary patch literal 7937 zcma)AL6RIP4D1d&VvhTR{PengezEiJ z!TsTSU}+zVQiuQWT)lo%Wt3~hev36s_)PgLCQhr=*@%>M9e@fs&F9Edjipbn`}U?+ z0wIQ$Bt@|Msp1|w`Hv_4VkH=xO^P!v0Cqd>(;-(ek}w}FWK+1)S9i6*GfZ4fm#`FH zQyFZ29&5Nua4=bG3{Yd?c=Qp`kv*5RRrE}c>e+j}_-d6h1*Gg*@7mBUXo_5&`w3?; zL#N1e%Lh@4%o#|k06?P+dbIMwIyhcdtD?{1NK%8>`!uUX(Br-G9mr8Z(5Zkj>s-eY zb&afp#dXwe(_;-Uq=o?c2e5%nQU)Lys!R$|u@3PuXiM&51C6-oL;O--@j9fTP<5{8 zAVeAar!oa?Csf2`0N#N%JXus7fH0{?&&&tTra^J1=3jrHK4AiWA?L>$X|_HmjXN|$ z(9K4sKNhpGIjWD(fen}wrcs3bP2(unVDMw&<e-YK*xv3K{_GvW?`4jz2jD#{_K? zt(P(~VHS%En~v2gW8Zw>42OW)4YI$aS|*1+xH}ry1dbKcbp=7v2worohq+^nGW;p2 z03?knU|!H>0Y8MPfSzV|hZig(nXhyw<3nYL<=8;bAr&gyU=pbXD1q`a5~|wAUrT+O z)~QTKug0A(2VAF4sqU!gc5?9%8gc9&3LKx1zNyur1S|`c z2={;~75^fhM%XNk>}U_>B`7VktQ#9q-tiYxD863zoRxFoYldx_-=O^Dx5ppvyQmSl z$$S7TWUkh_f$R2yr@+`DFPq6c_9U)y_Go7&H3908>k0goeLULyjm>tv)=ykZ)|}y2 z;OVylg_%rU*UTaNwgz+7y)bz=C{N2L)!L0jDC`c#e!?vtjV^{PBoFeqYTgL*2hnlomivN;4VqSv zk{FzqBysQgI@oljosTzgh6LZOniJ01s1zxht>)gxB6%^ zKd2avo9LQ*F#FO$NMByeqz;!YpJtRSOzh(otBy6o3PTd82n^+BB_QzwFhPlTz}(ep zonfjj*9;BUy`|O7H8JLEqMlqu9Vt*26Sb{biTD(lG$(RfDKCv%$b>IeAGX!Q9a7fw zQF9;dNx6zc@{u4j$BdZzmCBrIx5>MNXtBi5GctZ+UJ)jH{LiK2I5=(E5r+-z*)hOk zUz*M@OLQw&9-+7Sub4mE{|Jtc!l!`wzJZXzC)afViQ9PJv#fkVCFs?~`EIz}jkC~0 z6??w^nuEGvk=GPAqSKo(X)n$^+N!{6lX9r&kOfq|rk49rfhIQ^z9}!LV!=isfk(MU zR#Vtx*EE?Tm-67xwGN<~8~ZF`4{p|sQLf^ literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0191.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0191.dat new file mode 100755 index 0000000000000000000000000000000000000000..9b23e570285374511206eeb99d8903acc32a7e87 GIT binary patch literal 8065 zcmb7H%Z(g43~gf$K01K~6pB)E00yMc6pBKa;~4O|mXyRl)xhe|#n0m-MX^dVuUEFp zldr!S7;WDW-*4V+|B-VZ>sJ!omhbcRDhKrZv8Y9vMI!8jg2GdgRB>K6x8Oy9OHv$( zSS{L6Cw-WX;``$*3h*7c4dJU{wxJ+eTt|Zdv!JQCiZMK)&eqwEl_?Z6j{-aQFoHdhNSNO40JGFC7?dipTC>t5lA!dQfU@41 z6uZ!hPsBz<9`cP3634i6gu!cN0;Fhzl4Fx}ZwRPf`F3oQmkVG)Z@W{#igQuY5a-xb zn&+hD2fe8&M%BwjEx{B+Ttp>M@+8mI{FV<_P4LTPikytiOW#&l(Q2eQdfP{b{5B>-;TugIRFFFn7dluyE9 z<5y8-S5-+yk!bhHJ_$4w8;h|m8}4SkqBSdvh?qyRkSPyq$aqxNxnr(mK~70_)7!A-fH_@2vwXGDXAj-h8>9Q5fOjyC;cws{cf$<{RWn<0ka zd2xs8G$qJcAyONcRK%vFp2w#-RTzr~`0<=CnEh%L1A3X&n8^v2VqG2ZS)-#g-?I z+U9HC4u|GVN(WZAeCuRu5;h@*HB@kgKtib3CvS%91jU_aGIi3S-wv!)POEGk>a0p9 zae)2JA{bL{Y$3aPj*O-$fEFE}3jL*ICtmx!n5RRFx|-HS&m^SazW^QJoLzDp46Lh! z^^>p^_I8d~LSu&)DA^t1J|IjSFEDn2uzG-l9bGfO}=qV9eR8_X-n6!b=AH#)#njE6q2DR+45mBT;i!S1h)P;eZ07FT- zE0?AsE7kzB;%0x@T+*ffn;1hZa>B~9+SzfvQtXJ6O-&>;OMEH_M7?hlVBQFhnFeE( zJmQ3|vAvdGIDrw==5O^s50#`MyDbbgZtZ@4S_H=90Q2YLv))Vb* zI*6&BX+HS3@Mf!2+Ens0s@AM*YTPx*Hqa@}qK+OvsZ_XretfA}g@j3#1OG>di5$D# k#pxy5-rSC2ceu6Vv!Qf3C~J8FGNH4l;sJ^-5q~`Y0ZTkB*8l(j literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0192.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0192.dat new file mode 100755 index 0000000000000000000000000000000000000000..3e1b7309d7e6c4fde1b560d2476bf5c240b21fb5 GIT binary patch literal 8193 zcmai2yOr%W4BR~qUg#233QLnRhi-`-xCNHr%nsgp*91ragAZi|B1jAdLlBbg?&ov7 z`d7M+*w5!#;NKPUZ;F-$g^2ODc=Gr|Fg8Af`pxFf`ehWia|Aix;Cx9x*?xUBz>@h` zj>5VE+D(6kfZKU_@~$R|f&B(*nx3i$P%H%H*E&%w;0jYiyJRZW+@EsU2;*6*ga{e7 zuq-ZEc?%pd1#T2bt$PoEg)P`j1ZTc&uGU)>6y%Htq_J6?CkHIxmKB3wUI_2t&ZZOu zv}X=*DuV>N{n#Wv2RrUEM6&9T-Gf~dXQOSZ2VGdnn)$SYiOwaMDUiLeMa33FLl3Z$ z_Vck90!a#utrU$I`I7ClJx?(gIW#aE8dn(u@b?0oBnh&h>FitakKkz3cghN?TFc;g zh(5`yq~@`M2oJSqq$R|+ucYuI25;af+hsnYzA(=W5nw3JCVN2N7qy7MasBJsXz_a4 zad2UPN71+6ILFR4 zdO)gjYaD-DJEo$beF-WTc>=~JmIhLe_{M?#DFzHlW}`g$075hJ&p?Z4MzgI4W5Jzt zGw$Z7DY>ee3t<_KoXgZT-J)VXe^W#}%@d3Qq8>RL@?jhPF<-QLUVkBqka9Im)n%y~ z6@?{sQgW0ghhQ+D904l;3}y$^GTZv3tj${o2<{F9FcnBS)^Sx6$0LCZY>v&3#}hF$ zcWq^wT7`Yoe=YaWh1x)p-e{J#;!Z4imG-7!cRlQLOElqS|CDw{;?0UTa2f4m-Qci& z8p=MtE*jwKNNP49mKnF6xf!=%SBiHFpwUvw9~g)n0mcKJ4-BNI>+HI7%`{# zxB+c6he5v&&o_PT{e=x^&xiiV-F4_jU0D}#&Xi1zj1hd2HF3-_33`m#a}rmE-_xO2 z9c|scfn0dpt`d+jN$mWeoqr8QKfUbtn1QmK+qRLry8iiT-`VURPHC95hZgP}B`c|e z9f8$D@G|y=yJUVCd#c3_EFLDHP|(Uk_a<)e-Lj@tJqupYK~%?!qt#1?t`l!unz%3s zs>`qSt!d63;$G^)T=eG3UPyLLi;u@Ja8vDQOn>bVkjOD2_v=kyv!Z%Nzb;*6U^Sqnpw#qlZwI>LSon%xTQG}SAqSKLrcHlRfmzYO0D6nVyeK7UHI6djF81b*GoWdCjB3M;o3WpRCC-bDMNf0jT0O06L{6cqUoZ0{Q)8! z)_3{8jf+Fl)8I5iu4#r7;P{6jjqUQ55+G-&hhmYh?*LmHNWnJyidU`z-L6!p=3|^- z#)^{Z`n&Bq{C;Ju6lO=R_~I^!(+LrF)xt{xj!S}ZbbVuj8Nx}HG6w@rGVu))Tz=Xt zaTXa4vTQgYFskCOVxQIt#JFXj4?RlKSPHp$_LME%gMct?6zVX%LaXk2EBft_G6{)v zibo_^9w*}HTfnl@-iSLpFWBL|nD%{;zquuwJmf4c=u8mwDm}E=@h~}gYy#BxWIZN$ zS^Y&xpW)6;3$P!@6+}-YT{mMo+j47j4N7sQ)aRqFz$1h*u4J5%Z$lg~w%NX?Ev(46 Jk;@39^&dPZ+YkT% literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0193.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0193.dat new file mode 100755 index 0000000000000000000000000000000000000000..1c538767aa1478b87e1ae65f100f993a6a705d14 GIT binary patch literal 8321 zcmai3JB}qc4D7Lk3HJ!PhBF;ax|szy*lTp=bO9#=c<`P@NhFID)$X9hPq9c*pMJCZ zeqHwY{jJa6Dw6b#zW29{vrz9{SVQ0<{&o6Nzib+#9qF3Fe#ErX`qMgpY1mb)OEuu` z@DFmhR$NKZZ{QqQaCLEzrHugU&^eAQh2w#@qw_Rdqq2N*lppWwLf9q36XJslHjU$?!33}BX~@sp~cE8Mk-*|aKSTY*vCJuN&9HhC5tke&4?GOfvxM_ z(5eDqFeUY$zesS6Dm=T?UA@(dQWE50>JzLm!B4?OIqyHH{{@O|8W&_g*OkpYM*Ckt z@xG^&93G5GOL7w-a8|FEswX?A*Uucrq`}zGwB+6dZ-w1KVYl~RSJawdMi}TwM?LyF zZ8&7u<){qhr?|q(@YDYBHEtNY#kQUb^SS0G7!pb^_ScnG$-w@w^aG5w z0b^NAhv8?tPlNt`(kjnF?6?3cGWuc`^@ zNH*o~MG#~zMIkZ#Bu>w8_xsv$2){vzbyg-_s#>X$@?t*?vRh1++i;+Acbs!`?PX&IKLnYTSgYqm>`MU3XK8b&9T;+F~T}ID%*8r@^2Qlu}yFh z2N{xRD%=xzdY6f`M?j-lidZr`?P#eq?{6wPDOm!mIjpL5BATj^R5~R72_qlW8pTbU z9G~bb$LG<`_I!V@BmMx`KeeNbZChi-y^7b`ar21fs8*aJ*WEj_KXiZeStEXz%O1BZ z6rM&M$7$A`4=vF0AdBtw;gY!RU!(3yT*;z5j(sAx?ys`yB03D8?cj)i9UV6*vG9t0 z#aGKJC`_32%hFdQItfuDh_O;;IV3AbAMRm}URgm)3Q%PO@pq8GIqw$OoK85 z#>fYuqLq#JaqYT?o;C9}l>RE1hva^1c$4bkIwtiGY4o7ynQLpjWXcZi)SD|a;{;9L zIw{ovy3$Kejx0E8AAF)lc<-B;Q{D)MVWuj(^R(W)9y7vK%J;}lN0#~d2zLqwESRB2 z|B~f^+56>G_n<@Q5tvP~+te`>>f@k)8ZhcXf%KdZ@cG>_p35)7DoGkkJl5K2X5_; zsqB$tX+eo-`eCM>Vv_g!XY4?xA;&PX)``s%(WYkJ%QXS(z5naF{cpz(yA8=yfJ1vW zTnSveNL4jA tELQMaDQN73__9A;*{V8Z0Bp7f(hO>MFN;BG#wm5o-tF#k^#D0f{y)Ao?@0gv literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0194.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0194.dat new file mode 100755 index 0000000000000000000000000000000000000000..12e1e1f1361b14b33749e37c0c6bb10ff08c195d GIT binary patch literal 8449 zcma)AOLFBl417~gO_shvcoZIu+T}`F>L|<&ymZyL#vuR_XaJ-tT1X(!XnY9j$$q{3 z_4d8LZif9}trvD{Nwyp~+j?$iV!g?5#SxQ!5{MnJk|7JtfW+=Bz@l@J+NUTsou z6tMMG45sf*3_5Lj>%Uet#RiKc9xYz_3o34Q*+g~^qJYB*Wu$vJNYm760oYqu~e z9iT9*gvbdf0SS^N$DrFnzkh2T3too#ig@x-B<=FG;J%c5stF&j{%WLBnhCWnVTWk8 zI4m*7-2xyi9n=S?(dJy6S+^;%_prE;pFTG*4VCjJzf0}YAwA%bm1H!9V@`VpX#k1F z-U~m*5oi)&4apujv?qWjcpqKeL;{bxx|1k0)r=eIA(U41f846_%{(#BfM?@E9j8QCCiK z-e62-*fuTx984oUjxXU$LAjUxRVMFz?3|fyy0xh?mr9gH?Ni_uvsPHO z++#xq%iGyleSnLCo-V?oO=AlOnp94EJh1yx*`)|oxDQheDp}qVXJ-=&-J><`Z2^FJ zfi$*Vd=Lpv=}eF>oEwCaY}6&1!uqgpq4AE=&CDgCs?b{8om2?)DM$5qkRQ&M#PC0T zE>07~?UcG0{pz|f0ZWY=H&JCq)(7cz5d`>QuplJ00L*VX!0)D7{STXVn&IL1&nEh! zJF-zaWGoArpOA4D&ou}((>cxGZUx<{!2ruEXVIp)o2f33IfV}=iIKOtZlp3W*29LM zVu&W#@xpJuj$T1-TZSv3Uri0Sn$hT?_&1PiW#)^o`=X{}}$=ZD7MPAN_J;PRURW6?s`+K9oM^V!3I=AS}8X^t@z_t!0?85sSsYWJC9v@*2>m zoQ&xSgy;4OS$f&wZ>E8{-ScYUUlAI}2uE_nF5!b4yy>J+zvPZM_6b|0xkJI+k z7X_gX$C zu{z>*&;ngLvLBKx(|meBpkwy{o{TJ?c&R5F0L($9Y`g#I& z@l}Qa^1}Vet*5FK&r{1XTd7J_n_$lX!AfI@x->z;jB!X6_0|w4OLME3qEoZ10vm#g z6N(l+RyhPhSpyGNB|ye(4<{iC>2JpJQ)(L?>S4FkwqC*fuW{Das$+><2r^cgBs;Xr z*H%KA&?Zz}uPZFz>OspF-G$#8ihr{NY^& z3OhA@*t0*ozQ|%1BtsQ7SrA3(`452Y+50=6SQM*>+>1Kad4ytF0N1zQZVLk{lX`mY zCdbiyiXUmXM=ieBEGnnKUWO%_4YZwg)~22&J1lUxKn4m*an|aJeix?!|^t zONol;dhYk^(6C!k1Y+z3r`Sq?2O`ZB{2`bIOdc>(0Rw<*uHj+%X91?9sgtp;w##;R z(zkIgmx<|ZHe$Sx%onlAgcg4*O?&YtQ&w0l>ROqiu({u#Db4SSJoKvrKHw=&CVZZs z5NJLTeO6E0HAVY&nfewFM$R{cd9g4>=$Y<~?7LlO_SH|-Ia|2(+*Sk)GZ?s{0}Q!s z{%V;RT%mHlP~1Sw8G1LXk|uN<-&4MF2ll@XH{vGoH-laNNL7F&{KwTX*lke^bK9(a zY3y!Mt;2gF`nPEK+2Hv31tqLMf^Q0)2=-$3HproBxRdw$72E`dWb3;7A@3_$oGUxp zuUov&)q0}kRN}i5)WXSyC)MV??}r4N9p;pGAGNOH0l{8>1toFzvxu4lz_-uq8Ub_M z1NO?m=~)r(VsLi4XCqkB6jnwrb#=ps{Q3x8Pn-FPFc%$RE1^H?Ylz^MVUP9 z_ztOXh$NaU~+`B(gmXD;?9pGtgnTpfJ{`U4GB)2_}H)X(ez;Z zW)f=`8`44-D-?Ymud%#BXbC5c;PBOUmbXgE(1v-LW76W2x*QV`b(9^Mv~w)1#mLG8 zgxB166vRa)u|jCVvJ1IGVrzo4nq#EeW=cTcW#tQT;{dw3`fh4!=i3HqrT <%= grunt.template.today("yyyy-mm-dd") %> */\n', + mangleProperties: {regex: /^_/} + }, + build: { + src: '<%= pkg.name %>.js', + dest: 'artifacts/<%= pkg.name %>.min.js' + } + }, + jshint: { + ignore_warning: { + options: { + '-W083': true + }, + src: ['jmespath.js', 'test/*.js', 'Gruntfile.js'] + } + }, + eslint: { + target: ['jmespath.js'] + } + }); + + grunt.loadNpmTasks('grunt-contrib-uglify'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-eslint'); + + // Default task(s). + grunt.registerTask('default', ['uglify', 'jshint', 'eslint']); + +}; diff --git a/node_modules/aws-sdk/node_modules/jmespath/LICENSE b/node_modules/aws-sdk/node_modules/jmespath/LICENSE new file mode 100644 index 0000000..c1d496b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/LICENSE @@ -0,0 +1,13 @@ +Copyright 2014 James Saryerwinnie + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/node_modules/aws-sdk/node_modules/jmespath/README.md b/node_modules/aws-sdk/node_modules/jmespath/README.md new file mode 100644 index 0000000..b1110c2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/README.md @@ -0,0 +1,57 @@ +# jmespath.js + +[![Build Status](https://travis-ci.org/jmespath/jmespath.js.png?branch=master)](https://travis-ci.org/jmespath/jmespath.js) + +jmespath.js is a javascript implementation of JMESPath, +which is a query language for JSON. It will take a JSON +document and transform it into another JSON document +through a JMESPath expression. + +Using jmespath.js is really easy. There's a single function +you use, `jmespath.search`: + + +``` +> var jmespath = require('jmespath'); +> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, "foo.bar.baz[2]") +2 +``` + +In the example we gave the ``search`` function input data of +`{foo: {bar: {baz: [0, 1, 2, 3, 4]}}}` as well as the JMESPath +expression `foo.bar.baz[2]`, and the `search` function evaluated +the expression against the input data to produce the result ``2``. + +The JMESPath language can do a lot more than select an element +from a list. Here are a few more examples: + +``` +> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, "foo.bar") +{ baz: [ 0, 1, 2, 3, 4 ] } + +> jmespath.search({"foo": [{"first": "a", "last": "b"}, + {"first": "c", "last": "d"}]}, + "foo[*].first") +[ 'a', 'c' ] + +> jmespath.search({"foo": [{"age": 20}, {"age": 25}, + {"age": 30}, {"age": 35}, + {"age": 40}]}, + "foo[?age > `30`]") +[ { age: 35 }, { age: 40 } ] +``` + +## More Resources + +The example above only show a small amount of what +a JMESPath expression can do. If you want to take a +tour of the language, the *best* place to go is the +[JMESPath Tutorial](http://jmespath.org/tutorial.html). + +One of the best things about JMESPath is that it is +implemented in many different programming languages including +python, ruby, php, lua, etc. To see a complete list of libraries, +check out the [JMESPath libraries page](http://jmespath.org/libraries.html). + +And finally, the full JMESPath specification can be found +on the [JMESPath site](http://jmespath.org/specification.html). diff --git a/node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js b/node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js new file mode 100644 index 0000000..ae76a6d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js @@ -0,0 +1,2 @@ +/*! jmespath 2016-03-22 */ +!function(a){"use strict";function b(a){return null!==a?"[object Array]"===Object.prototype.toString.call(a):!1}function c(a){return null!==a?"[object Object]"===Object.prototype.toString.call(a):!1}function d(a,e){if(a===e)return!0;var f=Object.prototype.toString.call(a);if(f!==Object.prototype.toString.call(e))return!1;if(b(a)===!0){if(a.length!==e.length)return!1;for(var g=0;g="a"&&"z">=a||a>="A"&&"Z">=a||"_"===a}function h(a){return a>="0"&&"9">=a||"-"===a}function i(a){return a>="a"&&"z">=a||a>="A"&&"Z">=a||a>="0"&&"9">=a||"_"===a}function j(){}function k(){}function l(a){this.runtime=a}function m(a){this.a=a,this.functionTable={abs:{b:this.c,d:[{types:[r]}]},avg:{b:this.e,d:[{types:[z]}]},ceil:{b:this.f,d:[{types:[r]}]},contains:{b:this.g,d:[{types:[t,u]},{types:[s]}]},ends_with:{b:this.h,d:[{types:[t]},{types:[t]}]},floor:{b:this.i,d:[{types:[r]}]},length:{b:this.j,d:[{types:[t,u,v]}]},map:{b:this.k,d:[{types:[x]},{types:[u]}]},max:{b:this.l,d:[{types:[z,A]}]},merge:{b:this.m,d:[{types:[v],variadic:!0}]},max_by:{b:this.n,d:[{types:[u]},{types:[x]}]},sum:{b:this.o,d:[{types:[z]}]},starts_with:{b:this.p,d:[{types:[t]},{types:[t]}]},min:{b:this.q,d:[{types:[z,A]}]},min_by:{b:this.r,d:[{types:[u]},{types:[x]}]},type:{b:this.s,d:[{types:[s]}]},keys:{b:this.t,d:[{types:[v]}]},values:{b:this.u,d:[{types:[v]}]},sort:{b:this.v,d:[{types:[A,z]}]},sort_by:{b:this.w,d:[{types:[u]},{types:[x]}]},join:{b:this.x,d:[{types:[t]},{types:[A]}]},reverse:{b:this.y,d:[{types:[t,u]}]},to_array:{b:this.z,d:[{types:[s]}]},to_string:{b:this.A,d:[{types:[s]}]},to_number:{b:this.B,d:[{types:[s]}]},not_null:{b:this.C,d:[{types:[s],variadic:!0}]}}}function n(a){var b=new k,c=b.parse(a);return c}function o(a){var b=new j;return b.tokenize(a)}function p(a,b){var c=new k,d=new m,e=new l(d);d.a=e;var f=c.parse(b);return e.search(f,a)}var q;q="function"==typeof String.prototype.trimLeft?function(a){return a.trimLeft()}:function(a){return a.match(/^\s*(.*)/)[1]};var r=0,s=1,t=2,u=3,v=4,w=5,x=6,y=7,z=8,A=9,B="EOF",C="UnquotedIdentifier",D="QuotedIdentifier",E="Rbracket",F="Rparen",G="Comma",H="Colon",I="Rbrace",J="Number",K="Current",L="Expref",M="Pipe",N="Or",O="And",P="EQ",Q="GT",R="LT",S="GTE",T="LTE",U="NE",V="Flatten",W="Star",X="Filter",Y="Dot",Z="Not",$="Lbrace",_="Lbracket",aa="Lparen",ba="Literal",ca={".":Y,"*":W,",":G,":":H,"{":$,"}":I,"]":E,"(":aa,")":F,"@":K},da={"<":!0,">":!0,"=":!0,"!":!0},ea={" ":!0," ":!0,"\n":!0};j.prototype={tokenize:function(a){var b=[];this.D=0;for(var c,d,e;this.D"===c?"="===a[this.D]?(this.D++,{type:S,value:">=",start:b}):{type:Q,value:">",start:b}:"="===c&&"="===a[this.D]?(this.D++,{type:P,value:"==",start:b}):void 0},J:function(a){this.D++;for(var b,c=this.D,d=a.length;"`"!==a[this.D]&&this.D=0)return!0;if(c.indexOf(a)>=0)return!0;if(!(d.indexOf(a[0])>=0))return!1;try{return JSON.parse(a),!0}catch(e){return!1}}};var fa={};fa[B]=0,fa[C]=0,fa[D]=0,fa[E]=0,fa[F]=0,fa[G]=0,fa[I]=0,fa[J]=0,fa[K]=0,fa[L]=0,fa[M]=1,fa[N]=2,fa[O]=3,fa[P]=5,fa[Q]=5,fa[R]=5,fa[S]=5,fa[T]=5,fa[U]=5,fa[V]=9,fa[W]=20,fa[X]=21,fa[Y]=40,fa[Z]=45,fa[$]=50,fa[_]=55,fa[aa]=60,k.prototype={parse:function(a){this.M(a),this.index=0;var b=this.expression(0);if(this.N(0)!==B){var c=this.O(0),d=new Error("Unexpected token type: "+c.type+", value: "+c.value);throw d.name="ParserError",d}return b},M:function(a){var b=new j,c=b.tokenize(a);c.push({type:B,value:"",start:a.length}),this.tokens=c},expression:function(a){var b=this.O(0);this.P();for(var c=this.nud(b),d=this.N(0);ab;){if(c===H)b++,this.P();else{if(c!==J){var d=this.N(0),e=new Error("Syntax error, unexpected token: "+d.value+"("+d.type+")");throw e.name="Parsererror",e}a[b]=this.O(0).value,this.P()}c=this.N(0)}return this.V(E),{type:"Slice",children:a}},Y:function(a,b){var c=this.expression(fa[b]);return{type:"Comparator",name:b,children:[a,c]}},X:function(a){var b=this.N(0),c=[C,D,W];return c.indexOf(b)>=0?this.expression(a):b===_?(this.V(_),this.U()):b===$?(this.V($),this.R()):void 0},Q:function(a){var b;if(fa[this.N(0)]<10)b={type:"Identity"};else if(this.N(0)===_)b=this.expression(a);else if(this.N(0)===X)b=this.expression(a);else{if(this.N(0)!==Y){var c=this.O(0),d=new Error("Sytanx error, unexpected token: "+c.value+"("+c.type+")");throw d.name="ParserError",d}this.V(Y),b=this.X(a)}return b},U:function(){for(var a=[];this.N(0)!==E;){var b=this.expression(0);if(a.push(b),this.N(0)===G&&(this.V(G),this.N(0)===E))throw new Error("Unexpected token Rbracket")}return this.V(E),{type:"MultiSelectList",children:a}},R:function(){for(var a,b,c,d,e=[],f=[C,D];;){if(a=this.O(0),f.indexOf(a.type)<0)throw new Error("Expecting an identifier token, got: "+a.type);if(b=a.value,this.P(),this.V(H),c=this.expression(0),d={type:"KeyValuePair",name:b,value:c},e.push(d),this.N(0)===G)this.V(G);else if(this.N(0)===I){this.V(I);break}}return{type:"MultiSelectHash",children:e}}},l.prototype={search:function(a,b){return this.visit(a,b)},visit:function(a,g){var h,i,j,k,l,m,n,o,p,q;switch(a.type){case"Field":return null===g?null:c(g)?(m=g[a.name],void 0===m?null:m):null;case"Subexpression":for(j=this.visit(a.children[0],g),q=1;qr&&(r=g.length+r),j=g[r],void 0===j&&(j=null),j;case"Slice":if(!b(g))return null;var s=a.children.slice(0),t=this.computeSliceParams(g.length,s),u=t[0],v=t[1],w=t[2];if(j=[],w>0)for(q=u;v>q;q+=w)j.push(g[q]);else for(q=u;q>v;q+=w)j.push(g[q]);return j;case"Projection":var x=this.visit(a.children[0],g);if(!b(x))return null;for(p=[],q=0;ql;break;case S:j=k>=l;break;case R:j=l>k;break;case T:j=l>=k;break;default:throw new Error("Unknown comparator: "+a.name)}return j;case V:var C=this.visit(a.children[0],g);if(!b(C))return null;var D=[];for(q=0;qe?!0:!1;return c=null===c?h?a-1:0:this.capSliceRange(a,c,e),d=null===d?h?-1:a:this.capSliceRange(a,d,e),f[0]=c,f[1]=d,f[2]=e,f},capSliceRange:function(a,b,c){return 0>b?(b+=a,0>b&&(b=0>c?-1:0)):b>=a&&(b=0>c?a-1:a),b}},m.prototype={callFunction:function(a,b){var c=this.functionTable[a];if(void 0===c)throw new Error("Unknown function: "+a+"()");return this.$(a,b,c.d),c.b.call(this,b)},$:function(a,b,c){var d;if(c[c.length-1].variadic){if(b.length=0;e--)d+=c[e];return d}var f=a[0].slice(0);return f.reverse(),f},c:function(a){return Math.abs(a[0])},f:function(a){return Math.ceil(a[0])},e:function(a){for(var b=0,c=a[0],d=0;d=0},i:function(a){return Math.floor(a[0])},j:function(a){return c(a[0])?Object.keys(a[0]).length:a[0].length},k:function(a){for(var b=[],c=this.a,d=a[0],e=a[1],f=0;f0){var b=this._(a[0][0]);if(b===r)return Math.max.apply(Math,a[0]);for(var c=a[0],d=c[0],e=1;e0){var b=this._(a[0][0]);if(b===r)return Math.min.apply(Math,a[0]);for(var c=a[0],d=c[0],e=1;eh?1:h>g?-1:a[0]-b[0]});for(var i=0;ig&&(g=c,b=e[h]);return b},r:function(a){for(var b,c,d=a[1],e=a[0],f=this.createKeyFunction(d,[r,t]),g=1/0,h=0;hc&&(g=c,b=e[h]);return b},createKeyFunction:function(a,b){var c=this,d=this.a,e=function(e){var f=d.visit(a,e);if(b.indexOf(c._(f))<0){var g="TypeError: expected one of "+b+", received "+c._(f);throw new Error(g)}return f};return e}},a.tokenize=o,a.compile=n,a.search=p,a.strictDeepEqual=d}("undefined"==typeof exports?this.jmespath={}:exports); \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/jmespath/bower.json b/node_modules/aws-sdk/node_modules/jmespath/bower.json new file mode 100644 index 0000000..f0f626c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/bower.json @@ -0,0 +1,24 @@ +{ + "name": "jmespath.js", + "main": "jmespath.js", + "version": "0.11.0", + "homepage": "https://github.com/jmespath/jmespath.js", + "authors": [ + "James Saryerwinnie " + ], + "description": "JMESPath implementation in javascript", + "moduleType": [ + "node" + ], + "keywords": [ + "jmespath" + ], + "license": "MIT", + "ignore": [ + "**/.*", + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/node_modules/aws-sdk/node_modules/jmespath/g.sh b/node_modules/aws-sdk/node_modules/jmespath/g.sh new file mode 100755 index 0000000..5358000 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/g.sh @@ -0,0 +1,5 @@ +#!/bin/bash +grunt +uglifyjs artifacts/jmespath.min.js -b -o /tmp/jmespath.min.js +uglifyjs artifacts/jmespath.min.js -b -o ~/Source/jmespath.site/docs/_build/html/_static/js/jmespath.min.js +#cp artifacts/jmespath.min.js ~/Source/jmespath.site/docs/_build/html/_static/js/ diff --git a/node_modules/aws-sdk/node_modules/jmespath/index.html b/node_modules/aws-sdk/node_modules/jmespath/index.html new file mode 100644 index 0000000..5806e1e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/index.html @@ -0,0 +1,93 @@ + + + + + + + + + JMESPath Demo + + + + + +
+
+

JSONPath Online Evaluator

+
+

Author: Kazuki Hamasaki [ashphy@ashphy.com]

+

This evaluator uses JSONPath - XPath for JSON

+
+
+
+
+

Inputs

+
+ + + Example '$.phoneNumbers[*].type' See also JSONPath expressions + + +
+
+
+

Evaluation Results

+
false
+
+
+
+ + + + + + + + + + + + diff --git a/node_modules/aws-sdk/node_modules/jmespath/james.html b/node_modules/aws-sdk/node_modules/jmespath/james.html new file mode 100644 index 0000000..be8d3ab --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/james.html @@ -0,0 +1,7 @@ + + + + + + + diff --git a/node_modules/aws-sdk/node_modules/jmespath/jmespath.js b/node_modules/aws-sdk/node_modules/jmespath/jmespath.js new file mode 100644 index 0000000..f59e8e4 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/jmespath.js @@ -0,0 +1,1667 @@ +(function(exports) { + "use strict"; + + function isArray(obj) { + if (obj !== null) { + return Object.prototype.toString.call(obj) === "[object Array]"; + } else { + return false; + } + } + + function isObject(obj) { + if (obj !== null) { + return Object.prototype.toString.call(obj) === "[object Object]"; + } else { + return false; + } + } + + function strictDeepEqual(first, second) { + // Check the scalar case first. + if (first === second) { + return true; + } + + // Check if they are the same type. + var firstType = Object.prototype.toString.call(first); + if (firstType !== Object.prototype.toString.call(second)) { + return false; + } + // We know that first and second have the same type so we can just check the + // first type from now on. + if (isArray(first) === true) { + // Short circuit if they're not the same length; + if (first.length !== second.length) { + return false; + } + for (var i = 0; i < first.length; i++) { + if (strictDeepEqual(first[i], second[i]) === false) { + return false; + } + } + return true; + } + if (isObject(first) === true) { + // An object is equal if it has the same key/value pairs. + var keysSeen = {}; + for (var key in first) { + if (hasOwnProperty.call(first, key)) { + if (strictDeepEqual(first[key], second[key]) === false) { + return false; + } + keysSeen[key] = true; + } + } + // Now check that there aren't any keys in second that weren't + // in first. + for (var key2 in second) { + if (hasOwnProperty.call(second, key2)) { + if (keysSeen[key2] !== true) { + return false; + } + } + } + return true; + } + return false; + } + + function isFalse(obj) { + // From the spec: + // A false value corresponds to the following values: + // Empty list + // Empty object + // Empty string + // False boolean + // null value + + // First check the scalar values. + if (obj === "" || obj === false || obj === null) { + return true; + } else if (isArray(obj) && obj.length === 0) { + // Check for an empty array. + return true; + } else if (isObject(obj)) { + // Check for an empty object. + for (var key in obj) { + // If there are any keys, then + // the object is not empty so the object + // is not false. + if (obj.hasOwnProperty(key)) { + return false; + } + } + return true; + } else { + return false; + } + } + + function objValues(obj) { + var keys = Object.keys(obj); + var values = []; + for (var i = 0; i < keys.length; i++) { + values.push(obj[keys[i]]); + } + return values; + } + + function merge(a, b) { + var merged = {}; + for (var key in a) { + merged[key] = a[key]; + } + for (var key2 in b) { + merged[key2] = b[key2]; + } + return merged; + } + + var trimLeft; + if (typeof String.prototype.trimLeft === "function") { + trimLeft = function(str) { + return str.trimLeft(); + }; + } else { + trimLeft = function(str) { + return str.match(/^\s*(.*)/)[1]; + }; + } + + // Type constants used to define functions. + var TYPE_NUMBER = 0; + var TYPE_ANY = 1; + var TYPE_STRING = 2; + var TYPE_ARRAY = 3; + var TYPE_OBJECT = 4; + var TYPE_BOOLEAN = 5; + var TYPE_EXPREF = 6; + var TYPE_NULL = 7; + var TYPE_ARRAY_NUMBER = 8; + var TYPE_ARRAY_STRING = 9; + + var TOK_EOF = "EOF"; + var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier"; + var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier"; + var TOK_RBRACKET = "Rbracket"; + var TOK_RPAREN = "Rparen"; + var TOK_COMMA = "Comma"; + var TOK_COLON = "Colon"; + var TOK_RBRACE = "Rbrace"; + var TOK_NUMBER = "Number"; + var TOK_CURRENT = "Current"; + var TOK_EXPREF = "Expref"; + var TOK_PIPE = "Pipe"; + var TOK_OR = "Or"; + var TOK_AND = "And"; + var TOK_EQ = "EQ"; + var TOK_GT = "GT"; + var TOK_LT = "LT"; + var TOK_GTE = "GTE"; + var TOK_LTE = "LTE"; + var TOK_NE = "NE"; + var TOK_FLATTEN = "Flatten"; + var TOK_STAR = "Star"; + var TOK_FILTER = "Filter"; + var TOK_DOT = "Dot"; + var TOK_NOT = "Not"; + var TOK_LBRACE = "Lbrace"; + var TOK_LBRACKET = "Lbracket"; + var TOK_LPAREN= "Lparen"; + var TOK_LITERAL= "Literal"; + + // The "&", "[", "<", ">" tokens + // are not in basicToken because + // there are two token variants + // ("&&", "[?", "<=", ">="). This is specially handled + // below. + + var basicTokens = { + ".": TOK_DOT, + "*": TOK_STAR, + ",": TOK_COMMA, + ":": TOK_COLON, + "{": TOK_LBRACE, + "}": TOK_RBRACE, + "]": TOK_RBRACKET, + "(": TOK_LPAREN, + ")": TOK_RPAREN, + "@": TOK_CURRENT + }; + + var operatorStartToken = { + "<": true, + ">": true, + "=": true, + "!": true + }; + + var skipChars = { + " ": true, + "\t": true, + "\n": true + }; + + + function isAlpha(ch) { + return (ch >= "a" && ch <= "z") || + (ch >= "A" && ch <= "Z") || + ch === "_"; + } + + function isNum(ch) { + return (ch >= "0" && ch <= "9") || + ch === "-"; + } + function isAlphaNum(ch) { + return (ch >= "a" && ch <= "z") || + (ch >= "A" && ch <= "Z") || + (ch >= "0" && ch <= "9") || + ch === "_"; + } + + function Lexer() { + } + Lexer.prototype = { + tokenize: function(stream) { + var tokens = []; + this._current = 0; + var start; + var identifier; + var token; + while (this._current < stream.length) { + if (isAlpha(stream[this._current])) { + start = this._current; + identifier = this._consumeUnquotedIdentifier(stream); + tokens.push({type: TOK_UNQUOTEDIDENTIFIER, + value: identifier, + start: start}); + } else if (basicTokens[stream[this._current]] !== undefined) { + tokens.push({type: basicTokens[stream[this._current]], + value: stream[this._current], + start: this._current}); + this._current++; + } else if (isNum(stream[this._current])) { + token = this._consumeNumber(stream); + tokens.push(token); + } else if (stream[this._current] === "[") { + // No need to increment this._current. This happens + // in _consumeLBracket + token = this._consumeLBracket(stream); + tokens.push(token); + } else if (stream[this._current] === "\"") { + start = this._current; + identifier = this._consumeQuotedIdentifier(stream); + tokens.push({type: TOK_QUOTEDIDENTIFIER, + value: identifier, + start: start}); + } else if (stream[this._current] === "'") { + start = this._current; + identifier = this._consumeRawStringLiteral(stream); + tokens.push({type: TOK_LITERAL, + value: identifier, + start: start}); + } else if (stream[this._current] === "`") { + start = this._current; + var literal = this._consumeLiteral(stream); + tokens.push({type: TOK_LITERAL, + value: literal, + start: start}); + } else if (operatorStartToken[stream[this._current]] !== undefined) { + tokens.push(this._consumeOperator(stream)); + } else if (skipChars[stream[this._current]] !== undefined) { + // Ignore whitespace. + this._current++; + } else if (stream[this._current] === "&") { + start = this._current; + this._current++; + if (stream[this._current] === "&") { + this._current++; + tokens.push({type: TOK_AND, value: "&&", start: start}); + } else { + tokens.push({type: TOK_EXPREF, value: "&", start: start}); + } + } else if (stream[this._current] === "|") { + start = this._current; + this._current++; + if (stream[this._current] === "|") { + this._current++; + tokens.push({type: TOK_OR, value: "||", start: start}); + } else { + tokens.push({type: TOK_PIPE, value: "|", start: start}); + } + } else { + var error = new Error("Unknown character:" + stream[this._current]); + error.name = "LexerError"; + throw error; + } + } + return tokens; + }, + + _consumeUnquotedIdentifier: function(stream) { + var start = this._current; + this._current++; + while (this._current < stream.length && isAlphaNum(stream[this._current])) { + this._current++; + } + return stream.slice(start, this._current); + }, + + _consumeQuotedIdentifier: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (stream[this._current] !== "\"" && this._current < maxLength) { + // You can escape a double quote and you can escape an escape. + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "\"")) { + current += 2; + } else { + current++; + } + this._current = current; + } + this._current++; + return JSON.parse(stream.slice(start, this._current)); + }, + + _consumeRawStringLiteral: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (stream[this._current] !== "'" && this._current < maxLength) { + // You can escape a single quote and you can escape an escape. + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "'")) { + current += 2; + } else { + current++; + } + this._current = current; + } + this._current++; + var literal = stream.slice(start + 1, this._current - 1); + return literal.replace("\\'", "'"); + }, + + _consumeNumber: function(stream) { + var start = this._current; + this._current++; + var maxLength = stream.length; + while (isNum(stream[this._current]) && this._current < maxLength) { + this._current++; + } + var value = parseInt(stream.slice(start, this._current)); + return {type: TOK_NUMBER, value: value, start: start}; + }, + + _consumeLBracket: function(stream) { + var start = this._current; + this._current++; + if (stream[this._current] === "?") { + this._current++; + return {type: TOK_FILTER, value: "[?", start: start}; + } else if (stream[this._current] === "]") { + this._current++; + return {type: TOK_FLATTEN, value: "[]", start: start}; + } else { + return {type: TOK_LBRACKET, value: "[", start: start}; + } + }, + + _consumeOperator: function(stream) { + var start = this._current; + var startingChar = stream[start]; + this._current++; + if (startingChar === "!") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_NE, value: "!=", start: start}; + } else { + return {type: TOK_NOT, value: "!", start: start}; + } + } else if (startingChar === "<") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_LTE, value: "<=", start: start}; + } else { + return {type: TOK_LT, value: "<", start: start}; + } + } else if (startingChar === ">") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_GTE, value: ">=", start: start}; + } else { + return {type: TOK_GT, value: ">", start: start}; + } + } else if (startingChar === "=") { + if (stream[this._current] === "=") { + this._current++; + return {type: TOK_EQ, value: "==", start: start}; + } + } + }, + + _consumeLiteral: function(stream) { + this._current++; + var start = this._current; + var maxLength = stream.length; + var literal; + while(stream[this._current] !== "`" && this._current < maxLength) { + // You can escape a literal char or you can escape the escape. + var current = this._current; + if (stream[current] === "\\" && (stream[current + 1] === "\\" || + stream[current + 1] === "`")) { + current += 2; + } else { + current++; + } + this._current = current; + } + var literalString = trimLeft(stream.slice(start, this._current)); + literalString = literalString.replace("\\`", "`"); + if (this._looksLikeJSON(literalString)) { + literal = JSON.parse(literalString); + } else { + // Try to JSON parse it as "" + literal = JSON.parse("\"" + literalString + "\""); + } + // +1 gets us to the ending "`", +1 to move on to the next char. + this._current++; + return literal; + }, + + _looksLikeJSON: function(literalString) { + var startingChars = "[{\""; + var jsonLiterals = ["true", "false", "null"]; + var numberLooking = "-0123456789"; + + if (literalString === "") { + return false; + } else if (startingChars.indexOf(literalString[0]) >= 0) { + return true; + } else if (jsonLiterals.indexOf(literalString) >= 0) { + return true; + } else if (numberLooking.indexOf(literalString[0]) >= 0) { + try { + JSON.parse(literalString); + return true; + } catch (ex) { + return false; + } + } else { + return false; + } + } + }; + + var bindingPower = {}; + bindingPower[TOK_EOF] = 0; + bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0; + bindingPower[TOK_QUOTEDIDENTIFIER] = 0; + bindingPower[TOK_RBRACKET] = 0; + bindingPower[TOK_RPAREN] = 0; + bindingPower[TOK_COMMA] = 0; + bindingPower[TOK_RBRACE] = 0; + bindingPower[TOK_NUMBER] = 0; + bindingPower[TOK_CURRENT] = 0; + bindingPower[TOK_EXPREF] = 0; + bindingPower[TOK_PIPE] = 1; + bindingPower[TOK_OR] = 2; + bindingPower[TOK_AND] = 3; + bindingPower[TOK_EQ] = 5; + bindingPower[TOK_GT] = 5; + bindingPower[TOK_LT] = 5; + bindingPower[TOK_GTE] = 5; + bindingPower[TOK_LTE] = 5; + bindingPower[TOK_NE] = 5; + bindingPower[TOK_FLATTEN] = 9; + bindingPower[TOK_STAR] = 20; + bindingPower[TOK_FILTER] = 21; + bindingPower[TOK_DOT] = 40; + bindingPower[TOK_NOT] = 45; + bindingPower[TOK_LBRACE] = 50; + bindingPower[TOK_LBRACKET] = 55; + bindingPower[TOK_LPAREN] = 60; + + function Parser() { + } + + Parser.prototype = { + parse: function(expression) { + this._loadTokens(expression); + this.index = 0; + var ast = this.expression(0); + if (this._lookahead(0) !== TOK_EOF) { + var t = this._lookaheadToken(0); + var error = new Error( + "Unexpected token type: " + t.type + ", value: " + t.value); + error.name = "ParserError"; + throw error; + } + return ast; + }, + + _loadTokens: function(expression) { + var lexer = new Lexer(); + var tokens = lexer.tokenize(expression); + tokens.push({type: TOK_EOF, value: "", start: expression.length}); + this.tokens = tokens; + }, + + expression: function(rbp) { + var leftToken = this._lookaheadToken(0); + this._advance(); + var left = this.nud(leftToken); + var currentToken = this._lookahead(0); + while (rbp < bindingPower[currentToken]) { + this._advance(); + left = this.led(currentToken, left); + currentToken = this._lookahead(0); + } + return left; + }, + + _lookahead: function(number) { + return this.tokens[this.index + number].type; + }, + + _lookaheadToken: function(number) { + return this.tokens[this.index + number]; + }, + + _advance: function() { + this.index++; + }, + + nud: function(token) { + var left; + var right; + var expression; + switch (token.type) { + case TOK_LITERAL: + return {type: "Literal", value: token.value}; + case TOK_UNQUOTEDIDENTIFIER: + return {type: "Field", name: token.value}; + case TOK_QUOTEDIDENTIFIER: + var node = {type: "Field", name: token.value}; + if (this._lookahead(0) === TOK_LPAREN) { + throw new Error("Quoted identifier not allowed for function names."); + } else { + return node; + } + break; + case TOK_NOT: + right = this.expression(bindingPower.Not); + return {type: "NotExpression", children: [right]}; + case TOK_STAR: + left = {type: "Identity"}; + right = null; + if (this._lookahead(0) === TOK_RBRACKET) { + // This can happen in a multiselect, + // [a, b, *] + right = {type: "Identity"}; + } else { + right = this._parseProjectionRHS(bindingPower.Star); + } + return {type: "ValueProjection", children: [left, right]}; + case TOK_FILTER: + return this.led(token.type, {type: "Identity"}); + case TOK_LBRACE: + return this._parseMultiselectHash(); + case TOK_FLATTEN: + left = {type: TOK_FLATTEN, children: [{type: "Identity"}]}; + right = this._parseProjectionRHS(bindingPower.Flatten); + return {type: "Projection", children: [left, right]}; + case TOK_LBRACKET: + if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) { + right = this._parseIndexExpression(); + return this._projectIfSlice({type: "Identity"}, right); + } else if (this._lookahead(0) === TOK_STAR && + this._lookahead(1) === TOK_RBRACKET) { + this._advance(); + this._advance(); + right = this._parseProjectionRHS(bindingPower.Star); + return {type: "Projection", + children: [{type: "Identity"}, right]}; + } else { + return this._parseMultiselectList(); + } + break; + case TOK_CURRENT: + return {type: TOK_CURRENT}; + case TOK_EXPREF: + expression = this.expression(bindingPower.Expref); + return {type: "ExpressionReference", children: [expression]}; + case TOK_LPAREN: + var args = []; + while (this._lookahead(0) !== TOK_RPAREN) { + if (this._lookahead(0) === TOK_CURRENT) { + expression = {type: TOK_CURRENT}; + this._advance(); + } else { + expression = this.expression(0); + } + args.push(expression); + } + this._match(TOK_RPAREN); + return args[0]; + default: + this._errorToken(token); + } + }, + + led: function(tokenName, left) { + var right; + switch(tokenName) { + case TOK_DOT: + var rbp = bindingPower.Dot; + if (this._lookahead(0) !== TOK_STAR) { + right = this._parseDotRHS(rbp); + return {type: "Subexpression", children: [left, right]}; + } else { + // Creating a projection. + this._advance(); + right = this._parseProjectionRHS(rbp); + return {type: "ValueProjection", children: [left, right]}; + } + break; + case TOK_PIPE: + right = this.expression(bindingPower.Pipe); + return {type: TOK_PIPE, children: [left, right]}; + case TOK_OR: + right = this.expression(bindingPower.Or); + return {type: "OrExpression", children: [left, right]}; + case TOK_AND: + right = this.expression(bindingPower.And); + return {type: "AndExpression", children: [left, right]}; + case TOK_LPAREN: + var name = left.name; + var args = []; + var expression, node; + while (this._lookahead(0) !== TOK_RPAREN) { + if (this._lookahead(0) === TOK_CURRENT) { + expression = {type: TOK_CURRENT}; + this._advance(); + } else { + expression = this.expression(0); + } + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + } + args.push(expression); + } + this._match(TOK_RPAREN); + node = {type: "Function", name: name, children: args}; + return node; + case TOK_FILTER: + var condition = this.expression(0); + this._match(TOK_RBRACKET); + if (this._lookahead(0) === TOK_FLATTEN) { + right = {type: "Identity"}; + } else { + right = this._parseProjectionRHS(bindingPower.Filter); + } + return {type: "FilterProjection", children: [left, right, condition]}; + case TOK_FLATTEN: + var leftNode = {type: TOK_FLATTEN, children: [left]}; + var rightNode = this._parseProjectionRHS(bindingPower.Flatten); + return {type: "Projection", children: [leftNode, rightNode]}; + case TOK_EQ: + case TOK_NE: + case TOK_GT: + case TOK_GTE: + case TOK_LT: + case TOK_LTE: + return this._parseComparator(left, tokenName); + case TOK_LBRACKET: + var token = this._lookaheadToken(0); + if (token.type === TOK_NUMBER || token.type === TOK_COLON) { + right = this._parseIndexExpression(); + return this._projectIfSlice(left, right); + } else { + this._match(TOK_STAR); + this._match(TOK_RBRACKET); + right = this._parseProjectionRHS(bindingPower.Star); + return {type: "Projection", children: [left, right]}; + } + break; + default: + this._errorToken(this._lookaheadToken(0)); + } + }, + + _match: function(tokenType) { + if (this._lookahead(0) === tokenType) { + this._advance(); + } else { + var t = this._lookaheadToken(0); + var error = new Error("Expected " + tokenType + ", got: " + t.type); + error.name = "ParserError"; + throw error; + } + }, + + _errorToken: function(token) { + var error = new Error("Invalid token (" + + token.type + "): \"" + + token.value + "\""); + error.name = "ParserError"; + throw error; + }, + + + _parseIndexExpression: function() { + if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) { + return this._parseSliceExpression(); + } else { + var node = { + type: "Index", + value: this._lookaheadToken(0).value}; + this._advance(); + this._match(TOK_RBRACKET); + return node; + } + }, + + _projectIfSlice: function(left, right) { + var indexExpr = {type: "IndexExpression", children: [left, right]}; + if (right.type === "Slice") { + return { + type: "Projection", + children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)] + }; + } else { + return indexExpr; + } + }, + + _parseSliceExpression: function() { + // [start:end:step] where each part is optional, as well as the last + // colon. + var parts = [null, null, null]; + var index = 0; + var currentToken = this._lookahead(0); + while (currentToken !== TOK_RBRACKET && index < 3) { + if (currentToken === TOK_COLON) { + index++; + this._advance(); + } else if (currentToken === TOK_NUMBER) { + parts[index] = this._lookaheadToken(0).value; + this._advance(); + } else { + var t = this._lookahead(0); + var error = new Error("Syntax error, unexpected token: " + + t.value + "(" + t.type + ")"); + error.name = "Parsererror"; + throw error; + } + currentToken = this._lookahead(0); + } + this._match(TOK_RBRACKET); + return { + type: "Slice", + children: parts + }; + }, + + _parseComparator: function(left, comparator) { + var right = this.expression(bindingPower[comparator]); + return {type: "Comparator", name: comparator, children: [left, right]}; + }, + + _parseDotRHS: function(rbp) { + var lookahead = this._lookahead(0); + var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR]; + if (exprTokens.indexOf(lookahead) >= 0) { + return this.expression(rbp); + } else if (lookahead === TOK_LBRACKET) { + this._match(TOK_LBRACKET); + return this._parseMultiselectList(); + } else if (lookahead === TOK_LBRACE) { + this._match(TOK_LBRACE); + return this._parseMultiselectHash(); + } + }, + + _parseProjectionRHS: function(rbp) { + var right; + if (bindingPower[this._lookahead(0)] < 10) { + right = {type: "Identity"}; + } else if (this._lookahead(0) === TOK_LBRACKET) { + right = this.expression(rbp); + } else if (this._lookahead(0) === TOK_FILTER) { + right = this.expression(rbp); + } else if (this._lookahead(0) === TOK_DOT) { + this._match(TOK_DOT); + right = this._parseDotRHS(rbp); + } else { + var t = this._lookaheadToken(0); + var error = new Error("Sytanx error, unexpected token: " + + t.value + "(" + t.type + ")"); + error.name = "ParserError"; + throw error; + } + return right; + }, + + _parseMultiselectList: function() { + var expressions = []; + while (this._lookahead(0) !== TOK_RBRACKET) { + var expression = this.expression(0); + expressions.push(expression); + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + if (this._lookahead(0) === TOK_RBRACKET) { + throw new Error("Unexpected token Rbracket"); + } + } + } + this._match(TOK_RBRACKET); + return {type: "MultiSelectList", children: expressions}; + }, + + _parseMultiselectHash: function() { + var pairs = []; + var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER]; + var keyToken, keyName, value, node; + for (;;) { + keyToken = this._lookaheadToken(0); + if (identifierTypes.indexOf(keyToken.type) < 0) { + throw new Error("Expecting an identifier token, got: " + + keyToken.type); + } + keyName = keyToken.value; + this._advance(); + this._match(TOK_COLON); + value = this.expression(0); + node = {type: "KeyValuePair", name: keyName, value: value}; + pairs.push(node); + if (this._lookahead(0) === TOK_COMMA) { + this._match(TOK_COMMA); + } else if (this._lookahead(0) === TOK_RBRACE) { + this._match(TOK_RBRACE); + break; + } + } + return {type: "MultiSelectHash", children: pairs}; + } + }; + + + function TreeInterpreter(runtime) { + this.runtime = runtime; + } + + TreeInterpreter.prototype = { + search: function(node, value) { + return this.visit(node, value); + }, + + visit: function(node, value) { + var matched, current, result, first, second, field, left, right, collected, i; + switch (node.type) { + case "Field": + if (value === null ) { + return null; + } else if (isObject(value)) { + field = value[node.name]; + if (field === undefined) { + return null; + } else { + return field; + } + } else { + return null; + } + break; + case "Subexpression": + result = this.visit(node.children[0], value); + for (i = 1; i < node.children.length; i++) { + result = this.visit(node.children[1], result); + if (result === null) { + return null; + } + } + return result; + case "IndexExpression": + left = this.visit(node.children[0], value); + right = this.visit(node.children[1], left); + return right; + case "Index": + if (!isArray(value)) { + return null; + } + var index = node.value; + if (index < 0) { + index = value.length + index; + } + result = value[index]; + if (result === undefined) { + result = null; + } + return result; + case "Slice": + if (!isArray(value)) { + return null; + } + var sliceParams = node.children.slice(0); + var computed = this.computeSliceParams(value.length, sliceParams); + var start = computed[0]; + var stop = computed[1]; + var step = computed[2]; + result = []; + if (step > 0) { + for (i = start; i < stop; i += step) { + result.push(value[i]); + } + } else { + for (i = start; i > stop; i += step) { + result.push(value[i]); + } + } + return result; + case "Projection": + // Evaluate left child. + var base = this.visit(node.children[0], value); + if (!isArray(base)) { + return null; + } + collected = []; + for (i = 0; i < base.length; i++) { + current = this.visit(node.children[1], base[i]); + if (current !== null) { + collected.push(current); + } + } + return collected; + case "ValueProjection": + // Evaluate left child. + base = this.visit(node.children[0], value); + if (!isObject(base)) { + return null; + } + collected = []; + var values = objValues(base); + for (i = 0; i < values.length; i++) { + current = this.visit(node.children[1], values[i]); + if (current !== null) { + collected.push(current); + } + } + return collected; + case "FilterProjection": + base = this.visit(node.children[0], value); + if (!isArray(base)) { + return null; + } + var filtered = []; + var finalResults = []; + for (i = 0; i < base.length; i++) { + matched = this.visit(node.children[2], base[i]); + if (!isFalse(matched)) { + filtered.push(base[i]); + } + } + for (var j = 0; j < filtered.length; j++) { + current = this.visit(node.children[1], filtered[j]); + if (current !== null) { + finalResults.push(current); + } + } + return finalResults; + case "Comparator": + first = this.visit(node.children[0], value); + second = this.visit(node.children[1], value); + switch(node.name) { + case TOK_EQ: + result = strictDeepEqual(first, second); + break; + case TOK_NE: + result = !strictDeepEqual(first, second); + break; + case TOK_GT: + result = first > second; + break; + case TOK_GTE: + result = first >= second; + break; + case TOK_LT: + result = first < second; + break; + case TOK_LTE: + result = first <= second; + break; + default: + throw new Error("Unknown comparator: " + node.name); + } + return result; + case TOK_FLATTEN: + var original = this.visit(node.children[0], value); + if (!isArray(original)) { + return null; + } + var merged = []; + for (i = 0; i < original.length; i++) { + current = original[i]; + if (isArray(current)) { + merged.push.apply(merged, current); + } else { + merged.push(current); + } + } + return merged; + case "Identity": + return value; + case "MultiSelectList": + if (value === null) { + return null; + } + collected = []; + for (i = 0; i < node.children.length; i++) { + collected.push(this.visit(node.children[i], value)); + } + return collected; + case "MultiSelectHash": + if (value === null) { + return null; + } + collected = {}; + var child; + for (i = 0; i < node.children.length; i++) { + child = node.children[i]; + collected[child.name] = this.visit(child.value, value); + } + return collected; + case "OrExpression": + matched = this.visit(node.children[0], value); + if (isFalse(matched)) { + matched = this.visit(node.children[1], value); + } + return matched; + case "AndExpression": + first = this.visit(node.children[0], value); + + if (isFalse(first) === true) { + return first; + } + return this.visit(node.children[1], value); + case "NotExpression": + first = this.visit(node.children[0], value); + return isFalse(first); + case "Literal": + return node.value; + case TOK_PIPE: + left = this.visit(node.children[0], value); + return this.visit(node.children[1], left); + case TOK_CURRENT: + return value; + case "Function": + var resolvedArgs = []; + for (i = 0; i < node.children.length; i++) { + resolvedArgs.push(this.visit(node.children[i], value)); + } + return this.runtime.callFunction(node.name, resolvedArgs); + case "ExpressionReference": + var refNode = node.children[0]; + // Tag the node with a specific attribute so the type + // checker verify the type. + refNode.jmespathType = TOK_EXPREF; + return refNode; + default: + throw new Error("Unknown node type: " + node.type); + } + }, + + computeSliceParams: function(arrayLength, sliceParams) { + var start = sliceParams[0]; + var stop = sliceParams[1]; + var step = sliceParams[2]; + var computed = [null, null, null]; + if (step === null) { + step = 1; + } else if (step === 0) { + var error = new Error("Invalid slice, step cannot be 0"); + error.name = "RuntimeError"; + throw error; + } + var stepValueNegative = step < 0 ? true : false; + + if (start === null) { + start = stepValueNegative ? arrayLength - 1 : 0; + } else { + start = this.capSliceRange(arrayLength, start, step); + } + + if (stop === null) { + stop = stepValueNegative ? -1 : arrayLength; + } else { + stop = this.capSliceRange(arrayLength, stop, step); + } + computed[0] = start; + computed[1] = stop; + computed[2] = step; + return computed; + }, + + capSliceRange: function(arrayLength, actualValue, step) { + if (actualValue < 0) { + actualValue += arrayLength; + if (actualValue < 0) { + actualValue = step < 0 ? -1 : 0; + } + } else if (actualValue >= arrayLength) { + actualValue = step < 0 ? arrayLength - 1 : arrayLength; + } + return actualValue; + } + + }; + + function Runtime(interpreter) { + this._interpreter = interpreter; + this.functionTable = { + // name: [function, ] + // The can be: + // + // { + // args: [[type1, type2], [type1, type2]], + // variadic: true|false + // } + // + // Each arg in the arg list is a list of valid types + // (if the function is overloaded and supports multiple + // types. If the type is "any" then no type checking + // occurs on the argument. Variadic is optional + // and if not provided is assumed to be false. + abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]}, + avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, + ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]}, + contains: { + _func: this._functionContains, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}, + {types: [TYPE_ANY]}]}, + "ends_with": { + _func: this._functionEndsWith, + _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, + floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]}, + length: { + _func: this._functionLength, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]}, + map: { + _func: this._functionMap, + _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]}, + max: { + _func: this._functionMax, + _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, + "merge": { + _func: this._functionMerge, + _signature: [{types: [TYPE_OBJECT], variadic: true}] + }, + "max_by": { + _func: this._functionMaxBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, + "starts_with": { + _func: this._functionStartsWith, + _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, + min: { + _func: this._functionMin, + _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, + "min_by": { + _func: this._functionMinBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]}, + keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]}, + values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]}, + sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, + "sort_by": { + _func: this._functionSortBy, + _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] + }, + join: { + _func: this._functionJoin, + _signature: [ + {types: [TYPE_STRING]}, + {types: [TYPE_ARRAY_STRING]} + ] + }, + reverse: { + _func: this._functionReverse, + _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]}, + "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]}, + "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]}, + "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]}, + "not_null": { + _func: this._functionNotNull, + _signature: [{types: [TYPE_ANY], variadic: true}] + } + }; + } + + Runtime.prototype = { + callFunction: function(name, resolvedArgs) { + var functionEntry = this.functionTable[name]; + if (functionEntry === undefined) { + throw new Error("Unknown function: " + name + "()"); + } + this._validateArgs(name, resolvedArgs, functionEntry._signature); + return functionEntry._func.call(this, resolvedArgs); + }, + + _validateArgs: function(name, args, signature) { + // Validating the args requires validating + // the correct arity and the correct type of each arg. + // If the last argument is declared as variadic, then we need + // a minimum number of args to be required. Otherwise it has to + // be an exact amount. + var pluralized; + if (signature[signature.length - 1].variadic) { + if (args.length < signature.length) { + pluralized = signature.length === 1 ? " argument" : " arguments"; + throw new Error("ArgumentError: " + name + "() " + + "takes at least" + signature.length + pluralized + + " but received " + args.length); + } + } else if (args.length !== signature.length) { + pluralized = signature.length === 1 ? " argument" : " arguments"; + throw new Error("ArgumentError: " + name + "() " + + "takes " + signature.length + pluralized + + " but received " + args.length); + } + var currentSpec; + var actualType; + var typeMatched; + for (var i = 0; i < signature.length; i++) { + typeMatched = false; + currentSpec = signature[i].types; + actualType = this._getTypeName(args[i]); + for (var j = 0; j < currentSpec.length; j++) { + if (this._typeMatches(actualType, currentSpec[j], args[i])) { + typeMatched = true; + break; + } + } + if (!typeMatched) { + throw new Error("TypeError: " + name + "() " + + "expected argument " + (i + 1) + + " to be type " + currentSpec + + " but received type " + actualType + + " instead."); + } + } + }, + + _typeMatches: function(actual, expected, argValue) { + if (expected === TYPE_ANY) { + return true; + } + if (expected === TYPE_ARRAY_STRING || + expected === TYPE_ARRAY_NUMBER || + expected === TYPE_ARRAY) { + // The expected type can either just be array, + // or it can require a specific subtype (array of numbers). + // + // The simplest case is if "array" with no subtype is specified. + if (expected === TYPE_ARRAY) { + return actual === TYPE_ARRAY; + } else if (actual === TYPE_ARRAY) { + // Otherwise we need to check subtypes. + // I think this has potential to be improved. + var subtype; + if (expected === TYPE_ARRAY_NUMBER) { + subtype = TYPE_NUMBER; + } else if (expected === TYPE_ARRAY_STRING) { + subtype = TYPE_STRING; + } + for (var i = 0; i < argValue.length; i++) { + if (!this._typeMatches( + this._getTypeName(argValue[i]), subtype, + argValue[i])) { + return false; + } + } + return true; + } + } else { + return actual === expected; + } + }, + _getTypeName: function(obj) { + switch (Object.prototype.toString.call(obj)) { + case "[object String]": + return TYPE_STRING; + case "[object Number]": + return TYPE_NUMBER; + case "[object Array]": + return TYPE_ARRAY; + case "[object Boolean]": + return TYPE_BOOLEAN; + case "[object Null]": + return TYPE_NULL; + case "[object Object]": + // Check if it's an expref. If it has, it's been + // tagged with a jmespathType attr of 'Expref'; + if (obj.jmespathType === TOK_EXPREF) { + return TYPE_EXPREF; + } else { + return TYPE_OBJECT; + } + } + }, + + _functionStartsWith: function(resolvedArgs) { + return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0; + }, + + _functionEndsWith: function(resolvedArgs) { + var searchStr = resolvedArgs[0]; + var suffix = resolvedArgs[1]; + return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1; + }, + + _functionReverse: function(resolvedArgs) { + var typeName = this._getTypeName(resolvedArgs[0]); + if (typeName === TYPE_STRING) { + var originalStr = resolvedArgs[0]; + var reversedStr = ""; + for (var i = originalStr.length - 1; i >= 0; i--) { + reversedStr += originalStr[i]; + } + return reversedStr; + } else { + var reversedArray = resolvedArgs[0].slice(0); + reversedArray.reverse(); + return reversedArray; + } + }, + + _functionAbs: function(resolvedArgs) { + return Math.abs(resolvedArgs[0]); + }, + + _functionCeil: function(resolvedArgs) { + return Math.ceil(resolvedArgs[0]); + }, + + _functionAvg: function(resolvedArgs) { + var sum = 0; + var inputArray = resolvedArgs[0]; + for (var i = 0; i < inputArray.length; i++) { + sum += inputArray[i]; + } + return sum / inputArray.length; + }, + + _functionContains: function(resolvedArgs) { + return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0; + }, + + _functionFloor: function(resolvedArgs) { + return Math.floor(resolvedArgs[0]); + }, + + _functionLength: function(resolvedArgs) { + if (!isObject(resolvedArgs[0])) { + return resolvedArgs[0].length; + } else { + // As far as I can tell, there's no way to get the length + // of an object without O(n) iteration through the object. + return Object.keys(resolvedArgs[0]).length; + } + }, + + _functionMap: function(resolvedArgs) { + var mapped = []; + var interpreter = this._interpreter; + var exprefNode = resolvedArgs[0]; + var elements = resolvedArgs[1]; + for (var i = 0; i < elements.length; i++) { + mapped.push(interpreter.visit(exprefNode, elements[i])); + } + return mapped; + }, + + _functionMerge: function(resolvedArgs) { + var merged = {}; + for (var i = 0; i < resolvedArgs.length; i++) { + var current = resolvedArgs[i]; + for (var key in current) { + merged[key] = current[key]; + } + } + return merged; + }, + + _functionMax: function(resolvedArgs) { + if (resolvedArgs[0].length > 0) { + var typeName = this._getTypeName(resolvedArgs[0][0]); + if (typeName === TYPE_NUMBER) { + return Math.max.apply(Math, resolvedArgs[0]); + } else { + var elements = resolvedArgs[0]; + var maxElement = elements[0]; + for (var i = 1; i < elements.length; i++) { + if (maxElement.localeCompare(elements[i]) < 0) { + maxElement = elements[i]; + } + } + return maxElement; + } + } else { + return null; + } + }, + + _functionMin: function(resolvedArgs) { + if (resolvedArgs[0].length > 0) { + var typeName = this._getTypeName(resolvedArgs[0][0]); + if (typeName === TYPE_NUMBER) { + return Math.min.apply(Math, resolvedArgs[0]); + } else { + var elements = resolvedArgs[0]; + var minElement = elements[0]; + for (var i = 1; i < elements.length; i++) { + if (elements[i].localeCompare(minElement) < 0) { + minElement = elements[i]; + } + } + return minElement; + } + } else { + return null; + } + }, + + _functionSum: function(resolvedArgs) { + var sum = 0; + var listToSum = resolvedArgs[0]; + for (var i = 0; i < listToSum.length; i++) { + sum += listToSum[i]; + } + return sum; + }, + + _functionType: function(resolvedArgs) { + switch (this._getTypeName(resolvedArgs[0])) { + case TYPE_NUMBER: + return "number"; + case TYPE_STRING: + return "string"; + case TYPE_ARRAY: + return "array"; + case TYPE_OBJECT: + return "object"; + case TYPE_BOOLEAN: + return "boolean"; + case TYPE_EXPREF: + return "expref"; + case TYPE_NULL: + return "null"; + } + }, + + _functionKeys: function(resolvedArgs) { + return Object.keys(resolvedArgs[0]); + }, + + _functionValues: function(resolvedArgs) { + var obj = resolvedArgs[0]; + var keys = Object.keys(obj); + var values = []; + for (var i = 0; i < keys.length; i++) { + values.push(obj[keys[i]]); + } + return values; + }, + + _functionJoin: function(resolvedArgs) { + var joinChar = resolvedArgs[0]; + var listJoin = resolvedArgs[1]; + return listJoin.join(joinChar); + }, + + _functionToArray: function(resolvedArgs) { + if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) { + return resolvedArgs[0]; + } else { + return [resolvedArgs[0]]; + } + }, + + _functionToString: function(resolvedArgs) { + if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) { + return resolvedArgs[0]; + } else { + return JSON.stringify(resolvedArgs[0]); + } + }, + + _functionToNumber: function(resolvedArgs) { + var typeName = this._getTypeName(resolvedArgs[0]); + var convertedValue; + if (typeName === TYPE_NUMBER) { + return resolvedArgs[0]; + } else if (typeName === TYPE_STRING) { + convertedValue = +resolvedArgs[0]; + if (!isNaN(convertedValue)) { + return convertedValue; + } + } + return null; + }, + + _functionNotNull: function(resolvedArgs) { + for (var i = 0; i < resolvedArgs.length; i++) { + if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) { + return resolvedArgs[i]; + } + } + return null; + }, + + _functionSort: function(resolvedArgs) { + var sortedArray = resolvedArgs[0].slice(0); + sortedArray.sort(); + return sortedArray; + }, + + _functionSortBy: function(resolvedArgs) { + var sortedArray = resolvedArgs[0].slice(0); + if (sortedArray.length === 0) { + return sortedArray; + } + var interpreter = this._interpreter; + var exprefNode = resolvedArgs[1]; + var requiredType = this._getTypeName( + interpreter.visit(exprefNode, sortedArray[0])); + if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) { + throw new Error("TypeError"); + } + var that = this; + // In order to get a stable sort out of an unstable + // sort algorithm, we decorate/sort/undecorate (DSU) + // by creating a new list of [index, element] pairs. + // In the cmp function, if the evaluated elements are + // equal, then the index will be used as the tiebreaker. + // After the decorated list has been sorted, it will be + // undecorated to extract the original elements. + var decorated = []; + for (var i = 0; i < sortedArray.length; i++) { + decorated.push([i, sortedArray[i]]); + } + decorated.sort(function(a, b) { + var exprA = interpreter.visit(exprefNode, a[1]); + var exprB = interpreter.visit(exprefNode, b[1]); + if (that._getTypeName(exprA) !== requiredType) { + throw new Error( + "TypeError: expected " + requiredType + ", received " + + that._getTypeName(exprA)); + } else if (that._getTypeName(exprB) !== requiredType) { + throw new Error( + "TypeError: expected " + requiredType + ", received " + + that._getTypeName(exprB)); + } + if (exprA > exprB) { + return 1; + } else if (exprA < exprB) { + return -1; + } else { + // If they're equal compare the items by their + // order to maintain relative order of equal keys + // (i.e. to get a stable sort). + return a[0] - b[0]; + } + }); + // Undecorate: extract out the original list elements. + for (var j = 0; j < decorated.length; j++) { + sortedArray[j] = decorated[j][1]; + } + return sortedArray; + }, + + _functionMaxBy: function(resolvedArgs) { + var exprefNode = resolvedArgs[1]; + var resolvedArray = resolvedArgs[0]; + var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); + var maxNumber = -Infinity; + var maxRecord; + var current; + for (var i = 0; i < resolvedArray.length; i++) { + current = keyFunction(resolvedArray[i]); + if (current > maxNumber) { + maxNumber = current; + maxRecord = resolvedArray[i]; + } + } + return maxRecord; + }, + + _functionMinBy: function(resolvedArgs) { + var exprefNode = resolvedArgs[1]; + var resolvedArray = resolvedArgs[0]; + var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); + var minNumber = Infinity; + var minRecord; + var current; + for (var i = 0; i < resolvedArray.length; i++) { + current = keyFunction(resolvedArray[i]); + if (current < minNumber) { + minNumber = current; + minRecord = resolvedArray[i]; + } + } + return minRecord; + }, + + createKeyFunction: function(exprefNode, allowedTypes) { + var that = this; + var interpreter = this._interpreter; + var keyFunc = function(x) { + var current = interpreter.visit(exprefNode, x); + if (allowedTypes.indexOf(that._getTypeName(current)) < 0) { + var msg = "TypeError: expected one of " + allowedTypes + + ", received " + that._getTypeName(current); + throw new Error(msg); + } + return current; + }; + return keyFunc; + } + + }; + + function compile(stream) { + var parser = new Parser(); + var ast = parser.parse(stream); + return ast; + } + + function tokenize(stream) { + var lexer = new Lexer(); + return lexer.tokenize(stream); + } + + function search(data, expression) { + var parser = new Parser(); + // This needs to be improved. Both the interpreter and runtime depend on + // each other. The runtime needs the interpreter to support exprefs. + // There's likely a clean way to avoid the cyclic dependency. + var runtime = new Runtime(); + var interpreter = new TreeInterpreter(runtime); + runtime._interpreter = interpreter; + var node = parser.parse(expression); + return interpreter.search(node, data); + } + + exports.tokenize = tokenize; + exports.compile = compile; + exports.search = search; + exports.strictDeepEqual = strictDeepEqual; +})(typeof exports === "undefined" ? this.jmespath = {} : exports); diff --git a/node_modules/aws-sdk/node_modules/jmespath/jp.js b/node_modules/aws-sdk/node_modules/jmespath/jp.js new file mode 100755 index 0000000..c152108 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/jp.js @@ -0,0 +1,23 @@ +#!/usr/bin/env node +jmespath = require('./jmespath'); + +process.stdin.setEncoding('utf-8'); + + +if (process.argv.length < 2) { + console.log("Must provide a jmespath expression."); + process.exit(1); +} +var inputJSON = ""; + +process.stdin.on('readable', function() { + var chunk = process.stdin.read(); + if (chunk !== null) { + inputJSON += chunk; + } +}); + +process.stdin.on('end', function() { + var parsedInput = JSON.parse(inputJSON); + console.log(JSON.stringify(jmespath.search(parsedInput, process.argv[2]))); +}); diff --git a/node_modules/aws-sdk/node_modules/jmespath/l.js b/node_modules/aws-sdk/node_modules/jmespath/l.js new file mode 100644 index 0000000..27bf6dd --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/l.js @@ -0,0 +1,189 @@ +'use strict'; + +var Lexer = exports.Lexer = function() { + this.pos = 0; + this.buf = null; + this.buflen = 0; + + // Operator table, mapping operator -> token name + this.optable = { + '+': 'PLUS', + '-': 'MINUS', + '*': 'MULTIPLY', + '.': 'PERIOD', + '\\': 'BACKSLASH', + ':': 'COLON', + '%': 'PERCENT', + '|': 'PIPE', + '!': 'EXCLAMATION', + '?': 'QUESTION', + '#': 'POUND', + '&': 'AMPERSAND', + ';': 'SEMI', + ',': 'COMMA', + '(': 'L_PAREN', + ')': 'R_PAREN', + '<': 'L_ANG', + '>': 'R_ANG', + '{': 'L_BRACE', + '}': 'R_BRACE', + '[': 'L_BRACKET', + ']': 'R_BRACKET', + '=': 'EQUALS' + }; +} + +// Initialize the Lexer's buffer. This resets the lexer's internal +// state and subsequent tokens will be returned starting with the +// beginning of the new buffer. +Lexer.prototype.input = function(buf) { + this.pos = 0; + this.buf = buf; + this.buflen = buf.length; +} + +// Get the next token from the current buffer. A token is an object with +// the following properties: +// - name: name of the pattern that this token matched (taken from rules). +// - value: actual string value of the token. +// - pos: offset in the current buffer where the token starts. +// +// If there are no more tokens in the buffer, returns null. In case of +// an error throws Error. +Lexer.prototype.token = function() { + this._skipnontokens(); + if (this.pos >= this.buflen) { + return null; + } + + // The char at this.pos is part of a real token. Figure out which. + var c = this.buf.charAt(this.pos); + + // '/' is treated specially, because it starts a comment if followed by + // another '/'. If not followed by another '/', it's the DIVIDE + // operator. + if (c === '/') { + var next_c = this.buf.charAt(this.pos + 1); + if (next_c === '/') { + return this._process_comment(); + } else { + return {name: 'DIVIDE', value: '/', pos: this.pos++}; + } + } else { + // Look it up in the table of operators + var op = this.optable[c]; + if (op !== undefined) { + return {name: op, value: c, pos: this.pos++}; + } else { + // Not an operator - so it's the beginning of another token. + if (Lexer._isalpha(c)) { + return this._process_identifier(); + } else if (Lexer._isdigit(c)) { + return this._process_number(); + } else if (c === '"') { + return this._process_quote(); + } else { + throw Error('Token error at ' + this.pos); + } + } + } +} + +Lexer._isnewline = function(c) { + return c === '\r' || c === '\n'; +} + +Lexer._isdigit = function(c) { + return c >= '0' && c <= '9'; +} + +Lexer._isalpha = function(c) { + return (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + c === '_' || c === '$'; +} + +Lexer._isalphanum = function(c) { + return (c >= 'a' && c <= 'z') || + (c >= 'A' && c <= 'Z') || + (c >= '0' && c <= '9') || + c === '_' || c === '$'; +} + +Lexer.prototype._process_number = function() { + var endpos = this.pos + 1; + while (endpos < this.buflen && + Lexer._isdigit(this.buf.charAt(endpos))) { + endpos++; + } + + var tok = { + name: 'NUMBER', + value: this.buf.substring(this.pos, endpos), + pos: this.pos + }; + this.pos = endpos; + return tok; +} + +Lexer.prototype._process_comment = function() { + var endpos = this.pos + 2; + // Skip until the end of the line + var c = this.buf.charAt(this.pos + 2); + while (endpos < this.buflen && + !Lexer._isnewline(this.buf.charAt(endpos))) { + endpos++; + } + + var tok = { + name: 'COMMENT', + value: this.buf.substring(this.pos, endpos), + pos: this.pos + }; + this.pos = endpos + 1; + return tok; +} + +Lexer.prototype._process_identifier = function() { + var endpos = this.pos + 1; + while (endpos < this.buflen && + Lexer._isalphanum(this.buf.charAt(endpos))) { + endpos++; + } + + var tok = { + name: 'IDENTIFIER', + value: this.buf.substring(this.pos, endpos), + pos: this.pos + }; + this.pos = endpos; + return tok; +} + +Lexer.prototype._process_quote = function() { + // this.pos points at the opening quote. Find the ending quote. + var end_index = this.buf.indexOf('"', this.pos + 1); + + if (end_index === -1) { + throw Error('Unterminated quote at ' + this.pos); + } else { + var tok = { + name: 'QUOTE', + value: this.buf.substring(this.pos, end_index + 1), + pos: this.pos + }; + this.pos = end_index + 1; + return tok; + } +} + +Lexer.prototype._skipnontokens = function() { + while (this.pos < this.buflen) { + var c = this.buf.charAt(this.pos); + if (c == ' ' || c == '\t' || c == '\r' || c == '\n') { + this.pos++; + } else { + break; + } + } +} diff --git a/node_modules/aws-sdk/node_modules/jmespath/package.json b/node_modules/aws-sdk/node_modules/jmespath/package.json new file mode 100644 index 0000000..911394a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/package.json @@ -0,0 +1,55 @@ +{ + "name": "jmespath", + "description": "JMESPath implementation in javascript", + "version": "0.15.0", + "author": { + "name": "James Saryerwinnie", + "email": "js@jamesls.com", + "url": "http://jamesls.com/" + }, + "homepage": "https://github.com/jmespath/jmespath.js", + "contributors": [], + "devDependencies": { + "grunt": "^0.4.5", + "grunt-contrib-jshint": "^0.11.0", + "grunt-contrib-uglify": "^0.11.1", + "grunt-eslint": "^17.3.1", + "mocha": "^2.1.0" + }, + "dependencies": {}, + "main": "jmespath.js", + "directories": { + "test": "test" + }, + "engines": { + "node": ">= 0.6.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/jmespath/jmespath.js.git" + }, + "bugs": { + "url": "http://github.com/jmespath/jmespath.js/issues" + }, + "licenses": [ + { + "type": "Apache 2.0", + "url": "http://github.com/jmespath/jmespath.js/raw/master/LICENSE" + } + ], + "keywords": [ + "jmespath", + "jsonpath", + "json", + "xpath" + ], + "scripts": { + "test": "mocha test/" + }, + "readme": "# jmespath.js\n\n[![Build Status](https://travis-ci.org/jmespath/jmespath.js.png?branch=master)](https://travis-ci.org/jmespath/jmespath.js)\n\njmespath.js is a javascript implementation of JMESPath,\nwhich is a query language for JSON. It will take a JSON\ndocument and transform it into another JSON document\nthrough a JMESPath expression.\n\nUsing jmespath.js is really easy. There's a single function\nyou use, `jmespath.search`:\n\n\n```\n> var jmespath = require('jmespath');\n> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, \"foo.bar.baz[2]\")\n2\n```\n\nIn the example we gave the ``search`` function input data of\n`{foo: {bar: {baz: [0, 1, 2, 3, 4]}}}` as well as the JMESPath\nexpression `foo.bar.baz[2]`, and the `search` function evaluated\nthe expression against the input data to produce the result ``2``.\n\nThe JMESPath language can do a lot more than select an element\nfrom a list. Here are a few more examples:\n\n```\n> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, \"foo.bar\")\n{ baz: [ 0, 1, 2, 3, 4 ] }\n\n> jmespath.search({\"foo\": [{\"first\": \"a\", \"last\": \"b\"},\n {\"first\": \"c\", \"last\": \"d\"}]},\n \"foo[*].first\")\n[ 'a', 'c' ]\n\n> jmespath.search({\"foo\": [{\"age\": 20}, {\"age\": 25},\n {\"age\": 30}, {\"age\": 35},\n {\"age\": 40}]},\n \"foo[?age > `30`]\")\n[ { age: 35 }, { age: 40 } ]\n```\n\n## More Resources\n\nThe example above only show a small amount of what\na JMESPath expression can do. If you want to take a\ntour of the language, the *best* place to go is the\n[JMESPath Tutorial](http://jmespath.org/tutorial.html).\n\nOne of the best things about JMESPath is that it is\nimplemented in many different programming languages including\npython, ruby, php, lua, etc. To see a complete list of libraries,\ncheck out the [JMESPath libraries page](http://jmespath.org/libraries.html).\n\nAnd finally, the full JMESPath specification can be found\non the [JMESPath site](http://jmespath.org/specification.html).\n", + "readmeFilename": "README.md", + "_id": "jmespath@0.15.0", + "_shasum": "a3f222a9aae9f966f5d27c796510e28091764217", + "_resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", + "_from": "jmespath@0.15.0" +} diff --git a/node_modules/aws-sdk/node_modules/jmespath/perf.js b/node_modules/aws-sdk/node_modules/jmespath/perf.js new file mode 100644 index 0000000..58794ec --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/perf.js @@ -0,0 +1,33 @@ +var jmespath = require('./jmespath') +var Benchmark = require('benchmark'); +var suite = new Benchmark.Suite; + +// add tests +suite.add('Parser#single_expr', function() { + jmespath.compile("foo"); +}) +.add('Parser#single_subexpr', function() { + jmespath.compile("foo.bar"); +}) +.add('Parser#deeply_nested_50', function() { + jmespath.compile("j49.j48.j47.j46.j45.j44.j43.j42.j41.j40.j39.j38.j37.j36.j35.j34.j33.j32.j31.j30.j29.j28.j27.j26.j25.j24.j23.j22.j21.j20.j19.j18.j17.j16.j15.j14.j13.j12.j11.j10.j9.j8.j7.j6.j5.j4.j3.j2.j1.j0"); + +}) +.add('Parser#deeply_nested_50_index', function() { + jmespath.compile("[49][48][47][46][45][44][43][42][41][40][39][38][37][36][35][34][33][32][31][30][29][28][27][26][25][24][23][22][21][20][19][18][17][16][15][14][13][12][11][10][9][8][7][6][5][4][3][2][1][0]"); +}) +.add('Parser#basic_list_projection', function() { + jmespath.compile("foo[*].bar"); +}) +.on('cycle', function(event) { + var bench = event.target; + var mean = bench.stats.mean * 1000; + var variance = bench.stats.variance * 1000000; + var result = 'Mean time: ' + mean.toFixed(6) + 'msec '; + result += event.target.toString(); + console.log(result); +}) +.on('complete', function() { +}) +// run async +.run({ 'async': false }); diff --git a/node_modules/aws-sdk/node_modules/jmespath/reservedWords.json b/node_modules/aws-sdk/node_modules/jmespath/reservedWords.json new file mode 100644 index 0000000..433cd35 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/reservedWords.json @@ -0,0 +1,4 @@ +{ + "vars": [ "define", "require", "exports"], + "props": ["compile", "search", "tokenize", "jmespath", "parse", "stringify", "prototype", "length"] +} diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance.js b/node_modules/aws-sdk/node_modules/jmespath/test/compliance.js new file mode 100644 index 0000000..6298e9e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance.js @@ -0,0 +1,56 @@ +var fs = require('fs'); +var path = require('path'); +var assert = require('assert'); +var jmespath = require('../jmespath'); +var search = jmespath.search; + +// Compliance tests that aren't supported yet. +var notImplementedYet = []; + +function endsWith(str, suffix) { + return str.indexOf(suffix, str.length - suffix.length) !== -1; +} + +var listing = fs.readdirSync('test/compliance'); +for (var i = 0; i < listing.length; i++) { + var filename = 'test/compliance/' + listing[i]; + if (fs.statSync(filename).isFile() && endsWith(filename, '.json') && + notImplementedYet.indexOf(path.basename(filename)) === -1) { + addTestSuitesFromFile(filename); + } +} +function addTestSuitesFromFile(filename) { + describe(filename, function() { + var spec = JSON.parse(fs.readFileSync(filename, 'utf-8')); + var errorMsg; + for (var i = 0; i < spec.length; i++) { + var msg = "suite " + i + " for filename " + filename; + describe(msg, function() { + var given = spec[i].given; + var cases = spec[i].cases; + for (var j = 0; j < cases.length; j++) { + var testcase = cases[j]; + if (testcase.error !== undefined) { + // For now just verify that an error is thrown + // for error tests. + (function(testcase, given) { + it('should throw error for test ' + j, function() { + assert.throws( + function() { + search(given, testcase.expression); + }, Error, testcase.expression); + }); + })(testcase, given); + } else { + (function(testcase, given) { + it('should pass test ' + j + " expression: " + testcase.expression, function() { + assert.deepEqual(search(given, testcase.expression), + testcase.result); + }); + })(testcase, given); + } + } + }); + } + }); +} diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json new file mode 100644 index 0000000..d550e96 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json @@ -0,0 +1,96 @@ +[{ + "given": + {"foo": {"bar": {"baz": "correct"}}}, + "cases": [ + { + "expression": "foo", + "result": {"bar": {"baz": "correct"}} + }, + { + "expression": "foo.bar", + "result": {"baz": "correct"} + }, + { + "expression": "foo.bar.baz", + "result": "correct" + }, + { + "expression": "foo\n.\nbar\n.baz", + "result": "correct" + }, + { + "expression": "foo.bar.baz.bad", + "result": null + }, + { + "expression": "foo.bar.bad", + "result": null + }, + { + "expression": "foo.bad", + "result": null + }, + { + "expression": "bad", + "result": null + }, + { + "expression": "bad.morebad.morebad", + "result": null + } + ] +}, +{ + "given": + {"foo": {"bar": ["one", "two", "three"]}}, + "cases": [ + { + "expression": "foo", + "result": {"bar": ["one", "two", "three"]} + }, + { + "expression": "foo.bar", + "result": ["one", "two", "three"] + } + ] +}, +{ + "given": ["one", "two", "three"], + "cases": [ + { + "expression": "one", + "result": null + }, + { + "expression": "two", + "result": null + }, + { + "expression": "three", + "result": null + }, + { + "expression": "one.two", + "result": null + } + ] +}, +{ + "given": + {"foo": {"1": ["one", "two", "three"], "-1": "bar"}}, + "cases": [ + { + "expression": "foo.\"1\"", + "result": ["one", "two", "three"] + }, + { + "expression": "foo.\"1\"[0]", + "result": "one" + }, + { + "expression": "foo.\"-1\"", + "result": "bar" + } + ] +} +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json new file mode 100644 index 0000000..e3fa196 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json @@ -0,0 +1,257 @@ +[ + { + "given": { + "outer": { + "foo": "foo", + "bar": "bar", + "baz": "baz" + } + }, + "cases": [ + { + "expression": "outer.foo || outer.bar", + "result": "foo" + }, + { + "expression": "outer.foo||outer.bar", + "result": "foo" + }, + { + "expression": "outer.bar || outer.baz", + "result": "bar" + }, + { + "expression": "outer.bar||outer.baz", + "result": "bar" + }, + { + "expression": "outer.bad || outer.foo", + "result": "foo" + }, + { + "expression": "outer.bad||outer.foo", + "result": "foo" + }, + { + "expression": "outer.foo || outer.bad", + "result": "foo" + }, + { + "expression": "outer.foo||outer.bad", + "result": "foo" + }, + { + "expression": "outer.bad || outer.alsobad", + "result": null + }, + { + "expression": "outer.bad||outer.alsobad", + "result": null + } + ] + }, + { + "given": { + "outer": { + "foo": "foo", + "bool": false, + "empty_list": [], + "empty_string": "" + } + }, + "cases": [ + { + "expression": "outer.empty_string || outer.foo", + "result": "foo" + }, + { + "expression": "outer.nokey || outer.bool || outer.empty_list || outer.empty_string || outer.foo", + "result": "foo" + } + ] + }, + { + "given": { + "True": true, + "False": false, + "Number": 5, + "EmptyList": [], + "Zero": 0 + }, + "cases": [ + { + "expression": "True && False", + "result": false + }, + { + "expression": "False && True", + "result": false + }, + { + "expression": "True && True", + "result": true + }, + { + "expression": "False && False", + "result": false + }, + { + "expression": "True && Number", + "result": 5 + }, + { + "expression": "Number && True", + "result": true + }, + { + "expression": "Number && False", + "result": false + }, + { + "expression": "Number && EmptyList", + "result": [] + }, + { + "expression": "Number && True", + "result": true + }, + { + "expression": "EmptyList && True", + "result": [] + }, + { + "expression": "EmptyList && False", + "result": [] + }, + { + "expression": "True || False", + "result": true + }, + { + "expression": "True || True", + "result": true + }, + { + "expression": "False || True", + "result": true + }, + { + "expression": "False || False", + "result": false + }, + { + "expression": "Number || EmptyList", + "result": 5 + }, + { + "expression": "Number || True", + "result": 5 + }, + { + "expression": "Number || True && False", + "result": 5 + }, + { + "expression": "(Number || True) && False", + "result": false + }, + { + "expression": "Number || (True && False)", + "result": 5 + }, + { + "expression": "!True", + "result": false + }, + { + "expression": "!False", + "result": true + }, + { + "expression": "!Number", + "result": false + }, + { + "expression": "!EmptyList", + "result": true + }, + { + "expression": "True && !False", + "result": true + }, + { + "expression": "True && !EmptyList", + "result": true + }, + { + "expression": "!False && !EmptyList", + "result": true + }, + { + "expression": "!(True && False)", + "result": true + }, + { + "expression": "!Zero", + "result": false + }, + { + "expression": "!!Zero", + "result": true + } + ] + }, + { + "given": { + "one": 1, + "two": 2, + "three": 3 + }, + "cases": [ + { + "expression": "one < two", + "result": true + }, + { + "expression": "one <= two", + "result": true + }, + { + "expression": "one == one", + "result": true + }, + { + "expression": "one == two", + "result": false + }, + { + "expression": "one > two", + "result": false + }, + { + "expression": "one >= two", + "result": false + }, + { + "expression": "one != two", + "result": true + }, + { + "expression": "one < two && three > one", + "result": true + }, + { + "expression": "one < two || three > one", + "result": true + }, + { + "expression": "one < two || three < one", + "result": true + }, + { + "expression": "two < one || three < one", + "result": false + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json new file mode 100644 index 0000000..0c26248 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json @@ -0,0 +1,25 @@ +[ + { + "given": { + "foo": [{"name": "a"}, {"name": "b"}], + "bar": {"baz": "qux"} + }, + "cases": [ + { + "expression": "@", + "result": { + "foo": [{"name": "a"}, {"name": "b"}], + "bar": {"baz": "qux"} + } + }, + { + "expression": "@.bar", + "result": {"baz": "qux"} + }, + { + "expression": "@.foo[0]", + "result": {"name": "a"} + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json new file mode 100644 index 0000000..4a62d95 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json @@ -0,0 +1,46 @@ +[{ + "given": { + "foo.bar": "dot", + "foo bar": "space", + "foo\nbar": "newline", + "foo\"bar": "doublequote", + "c:\\\\windows\\path": "windows", + "/unix/path": "unix", + "\"\"\"": "threequotes", + "bar": {"baz": "qux"} + }, + "cases": [ + { + "expression": "\"foo.bar\"", + "result": "dot" + }, + { + "expression": "\"foo bar\"", + "result": "space" + }, + { + "expression": "\"foo\\nbar\"", + "result": "newline" + }, + { + "expression": "\"foo\\\"bar\"", + "result": "doublequote" + }, + { + "expression": "\"c:\\\\\\\\windows\\\\path\"", + "result": "windows" + }, + { + "expression": "\"/unix/path\"", + "result": "unix" + }, + { + "expression": "\"\\\"\\\"\\\"\"", + "result": "threequotes" + }, + { + "expression": "\"bar\".\"baz\"", + "result": "qux" + } + ] +}] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json new file mode 100644 index 0000000..5b9f52b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json @@ -0,0 +1,468 @@ +[ + { + "given": {"foo": [{"name": "a"}, {"name": "b"}]}, + "cases": [ + { + "comment": "Matching a literal", + "expression": "foo[?name == 'a']", + "result": [{"name": "a"}] + } + ] + }, + { + "given": {"foo": [0, 1], "bar": [2, 3]}, + "cases": [ + { + "comment": "Matching a literal", + "expression": "*[?[0] == `0`]", + "result": [[], []] + } + ] + }, + { + "given": {"foo": [{"first": "foo", "last": "bar"}, + {"first": "foo", "last": "foo"}, + {"first": "foo", "last": "baz"}]}, + "cases": [ + { + "comment": "Matching an expression", + "expression": "foo[?first == last]", + "result": [{"first": "foo", "last": "foo"}] + }, + { + "comment": "Verify projection created from filter", + "expression": "foo[?first == last].first", + "result": ["foo"] + } + ] + }, + { + "given": {"foo": [{"age": 20}, + {"age": 25}, + {"age": 30}]}, + "cases": [ + { + "comment": "Greater than with a number", + "expression": "foo[?age > `25`]", + "result": [{"age": 30}] + }, + { + "expression": "foo[?age >= `25`]", + "result": [{"age": 25}, {"age": 30}] + }, + { + "comment": "Greater than with a number", + "expression": "foo[?age > `30`]", + "result": [] + }, + { + "comment": "Greater than with a number", + "expression": "foo[?age < `25`]", + "result": [{"age": 20}] + }, + { + "comment": "Greater than with a number", + "expression": "foo[?age <= `25`]", + "result": [{"age": 20}, {"age": 25}] + }, + { + "comment": "Greater than with a number", + "expression": "foo[?age < `20`]", + "result": [] + }, + { + "expression": "foo[?age == `20`]", + "result": [{"age": 20}] + }, + { + "expression": "foo[?age != `20`]", + "result": [{"age": 25}, {"age": 30}] + } + ] + }, + { + "given": {"foo": [{"top": {"name": "a"}}, + {"top": {"name": "b"}}]}, + "cases": [ + { + "comment": "Filter with subexpression", + "expression": "foo[?top.name == 'a']", + "result": [{"top": {"name": "a"}}] + } + ] + }, + { + "given": {"foo": [{"top": {"first": "foo", "last": "bar"}}, + {"top": {"first": "foo", "last": "foo"}}, + {"top": {"first": "foo", "last": "baz"}}]}, + "cases": [ + { + "comment": "Matching an expression", + "expression": "foo[?top.first == top.last]", + "result": [{"top": {"first": "foo", "last": "foo"}}] + }, + { + "comment": "Matching a JSON array", + "expression": "foo[?top == `{\"first\": \"foo\", \"last\": \"bar\"}`]", + "result": [{"top": {"first": "foo", "last": "bar"}}] + } + ] + }, + { + "given": {"foo": [ + {"key": true}, + {"key": false}, + {"key": 0}, + {"key": 1}, + {"key": [0]}, + {"key": {"bar": [0]}}, + {"key": null}, + {"key": [1]}, + {"key": {"a":2}} + ]}, + "cases": [ + { + "expression": "foo[?key == `true`]", + "result": [{"key": true}] + }, + { + "expression": "foo[?key == `false`]", + "result": [{"key": false}] + }, + { + "expression": "foo[?key == `0`]", + "result": [{"key": 0}] + }, + { + "expression": "foo[?key == `1`]", + "result": [{"key": 1}] + }, + { + "expression": "foo[?key == `[0]`]", + "result": [{"key": [0]}] + }, + { + "expression": "foo[?key == `{\"bar\": [0]}`]", + "result": [{"key": {"bar": [0]}}] + }, + { + "expression": "foo[?key == `null`]", + "result": [{"key": null}] + }, + { + "expression": "foo[?key == `[1]`]", + "result": [{"key": [1]}] + }, + { + "expression": "foo[?key == `{\"a\":2}`]", + "result": [{"key": {"a":2}}] + }, + { + "expression": "foo[?`true` == key]", + "result": [{"key": true}] + }, + { + "expression": "foo[?`false` == key]", + "result": [{"key": false}] + }, + { + "expression": "foo[?`0` == key]", + "result": [{"key": 0}] + }, + { + "expression": "foo[?`1` == key]", + "result": [{"key": 1}] + }, + { + "expression": "foo[?`[0]` == key]", + "result": [{"key": [0]}] + }, + { + "expression": "foo[?`{\"bar\": [0]}` == key]", + "result": [{"key": {"bar": [0]}}] + }, + { + "expression": "foo[?`null` == key]", + "result": [{"key": null}] + }, + { + "expression": "foo[?`[1]` == key]", + "result": [{"key": [1]}] + }, + { + "expression": "foo[?`{\"a\":2}` == key]", + "result": [{"key": {"a":2}}] + }, + { + "expression": "foo[?key != `true`]", + "result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?key != `false`]", + "result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?key != `0`]", + "result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?key != `1`]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?key != `null`]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?key != `[1]`]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}] + }, + { + "expression": "foo[?key != `{\"a\":2}`]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}] + }, + { + "expression": "foo[?`true` != key]", + "result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?`false` != key]", + "result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?`0` != key]", + "result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?`1` != key]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?`null` != key]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}] + }, + { + "expression": "foo[?`[1]` != key]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}] + }, + { + "expression": "foo[?`{\"a\":2}` != key]", + "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, + {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}] + } + ] + }, + { + "given": {"reservations": [ + {"instances": [ + {"foo": 1, "bar": 2}, {"foo": 1, "bar": 3}, + {"foo": 1, "bar": 2}, {"foo": 2, "bar": 1}]}]}, + "cases": [ + { + "expression": "reservations[].instances[?bar==`1`]", + "result": [[{"foo": 2, "bar": 1}]] + }, + { + "expression": "reservations[*].instances[?bar==`1`]", + "result": [[{"foo": 2, "bar": 1}]] + }, + { + "expression": "reservations[].instances[?bar==`1`][]", + "result": [{"foo": 2, "bar": 1}] + } + ] + }, + { + "given": { + "baz": "other", + "foo": [ + {"bar": 1}, {"bar": 2}, {"bar": 3}, {"bar": 4}, {"bar": 1, "baz": 2} + ] + }, + "cases": [ + { + "expression": "foo[?bar==`1`].bar[0]", + "result": [] + } + ] + }, + { + "given": { + "foo": [ + {"a": 1, "b": {"c": "x"}}, + {"a": 1, "b": {"c": "y"}}, + {"a": 1, "b": {"c": "z"}}, + {"a": 2, "b": {"c": "z"}}, + {"a": 1, "baz": 2} + ] + }, + "cases": [ + { + "expression": "foo[?a==`1`].b.c", + "result": ["x", "y", "z"] + } + ] + }, + { + "given": {"foo": [{"name": "a"}, {"name": "b"}, {"name": "c"}]}, + "cases": [ + { + "comment": "Filter with or expression", + "expression": "foo[?name == 'a' || name == 'b']", + "result": [{"name": "a"}, {"name": "b"}] + }, + { + "expression": "foo[?name == 'a' || name == 'e']", + "result": [{"name": "a"}] + }, + { + "expression": "foo[?name == 'a' || name == 'b' || name == 'c']", + "result": [{"name": "a"}, {"name": "b"}, {"name": "c"}] + } + ] + }, + { + "given": {"foo": [{"a": 1, "b": 2}, {"a": 1, "b": 3}]}, + "cases": [ + { + "comment": "Filter with and expression", + "expression": "foo[?a == `1` && b == `2`]", + "result": [{"a": 1, "b": 2}] + }, + { + "expression": "foo[?a == `1` && b == `4`]", + "result": [] + } + ] + }, + { + "given": {"foo": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]}, + "cases": [ + { + "comment": "Filter with Or and And expressions", + "expression": "foo[?c == `3` || a == `1` && b == `4`]", + "result": [{"a": 1, "b": 2, "c": 3}] + }, + { + "expression": "foo[?b == `2` || a == `3` && b == `4`]", + "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] + }, + { + "expression": "foo[?a == `3` && b == `4` || b == `2`]", + "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] + }, + { + "expression": "foo[?(a == `3` && b == `4`) || b == `2`]", + "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] + }, + { + "expression": "foo[?((a == `3` && b == `4`)) || b == `2`]", + "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] + }, + { + "expression": "foo[?a == `3` && (b == `4` || b == `2`)]", + "result": [{"a": 3, "b": 4}] + }, + { + "expression": "foo[?a == `3` && ((b == `4` || b == `2`))]", + "result": [{"a": 3, "b": 4}] + } + ] + }, + { + "given": {"foo": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]}, + "cases": [ + { + "comment": "Verify precedence of or/and expressions", + "expression": "foo[?a == `1` || b ==`2` && c == `5`]", + "result": [{"a": 1, "b": 2, "c": 3}] + }, + { + "comment": "Parentheses can alter precedence", + "expression": "foo[?(a == `1` || b ==`2`) && c == `5`]", + "result": [] + }, + { + "comment": "Not expressions combined with and/or", + "expression": "foo[?!(a == `1` || b ==`2`)]", + "result": [{"a": 3, "b": 4}] + } + ] + }, + { + "given": { + "foo": [ + {"key": true}, + {"key": false}, + {"key": []}, + {"key": {}}, + {"key": [0]}, + {"key": {"a": "b"}}, + {"key": 0}, + {"key": 1}, + {"key": null}, + {"notkey": true} + ] + }, + "cases": [ + { + "comment": "Unary filter expression", + "expression": "foo[?key]", + "result": [ + {"key": true}, {"key": [0]}, {"key": {"a": "b"}}, + {"key": 0}, {"key": 1} + ] + }, + { + "comment": "Unary not filter expression", + "expression": "foo[?!key]", + "result": [ + {"key": false}, {"key": []}, {"key": {}}, + {"key": null}, {"notkey": true} + ] + }, + { + "comment": "Equality with null RHS", + "expression": "foo[?key == `null`]", + "result": [ + {"key": null}, {"notkey": true} + ] + } + ] + }, + { + "given": { + "foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + "cases": [ + { + "comment": "Using @ in a filter expression", + "expression": "foo[?@ < `5`]", + "result": [0, 1, 2, 3, 4] + }, + { + "comment": "Using @ in a filter expression", + "expression": "foo[?`5` > @]", + "result": [0, 1, 2, 3, 4] + }, + { + "comment": "Using @ in a filter expression", + "expression": "foo[?@ == @]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json new file mode 100644 index 0000000..8b8db36 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json @@ -0,0 +1,825 @@ +[{ + "given": + { + "foo": -1, + "zero": 0, + "numbers": [-1, 3, 4, 5], + "array": [-1, 3, 4, 5, "a", "100"], + "strings": ["a", "b", "c"], + "decimals": [1.01, 1.2, -1.5], + "str": "Str", + "false": false, + "empty_list": [], + "empty_hash": {}, + "objects": {"foo": "bar", "bar": "baz"}, + "null_key": null + }, + "cases": [ + { + "expression": "abs(foo)", + "result": 1 + }, + { + "expression": "abs(foo)", + "result": 1 + }, + { + "expression": "abs(str)", + "error": "invalid-type" + }, + { + "expression": "abs(array[1])", + "result": 3 + }, + { + "expression": "abs(array[1])", + "result": 3 + }, + { + "expression": "abs(`false`)", + "error": "invalid-type" + }, + { + "expression": "abs(`-24`)", + "result": 24 + }, + { + "expression": "abs(`-24`)", + "result": 24 + }, + { + "expression": "abs(`1`, `2`)", + "error": "invalid-arity" + }, + { + "expression": "abs()", + "error": "invalid-arity" + }, + { + "expression": "unknown_function(`1`, `2`)", + "error": "unknown-function" + }, + { + "expression": "avg(numbers)", + "result": 2.75 + }, + { + "expression": "avg(array)", + "error": "invalid-type" + }, + { + "expression": "avg('abc')", + "error": "invalid-type" + }, + { + "expression": "avg(foo)", + "error": "invalid-type" + }, + { + "expression": "avg(@)", + "error": "invalid-type" + }, + { + "expression": "avg(strings)", + "error": "invalid-type" + }, + { + "expression": "ceil(`1.2`)", + "result": 2 + }, + { + "expression": "ceil(decimals[0])", + "result": 2 + }, + { + "expression": "ceil(decimals[1])", + "result": 2 + }, + { + "expression": "ceil(decimals[2])", + "result": -1 + }, + { + "expression": "ceil('string')", + "error": "invalid-type" + }, + { + "expression": "contains('abc', 'a')", + "result": true + }, + { + "expression": "contains('abc', 'd')", + "result": false + }, + { + "expression": "contains(`false`, 'd')", + "error": "invalid-type" + }, + { + "expression": "contains(strings, 'a')", + "result": true + }, + { + "expression": "contains(decimals, `1.2`)", + "result": true + }, + { + "expression": "contains(decimals, `false`)", + "result": false + }, + { + "expression": "ends_with(str, 'r')", + "result": true + }, + { + "expression": "ends_with(str, 'tr')", + "result": true + }, + { + "expression": "ends_with(str, 'Str')", + "result": true + }, + { + "expression": "ends_with(str, 'SStr')", + "result": false + }, + { + "expression": "ends_with(str, 'foo')", + "result": false + }, + { + "expression": "ends_with(str, `0`)", + "error": "invalid-type" + }, + { + "expression": "floor(`1.2`)", + "result": 1 + }, + { + "expression": "floor('string')", + "error": "invalid-type" + }, + { + "expression": "floor(decimals[0])", + "result": 1 + }, + { + "expression": "floor(foo)", + "result": -1 + }, + { + "expression": "floor(str)", + "error": "invalid-type" + }, + { + "expression": "length('abc')", + "result": 3 + }, + { + "expression": "length('✓foo')", + "result": 4 + }, + { + "expression": "length('')", + "result": 0 + }, + { + "expression": "length(@)", + "result": 12 + }, + { + "expression": "length(strings[0])", + "result": 1 + }, + { + "expression": "length(str)", + "result": 3 + }, + { + "expression": "length(array)", + "result": 6 + }, + { + "expression": "length(objects)", + "result": 2 + }, + { + "expression": "length(`false`)", + "error": "invalid-type" + }, + { + "expression": "length(foo)", + "error": "invalid-type" + }, + { + "expression": "length(strings[0])", + "result": 1 + }, + { + "expression": "max(numbers)", + "result": 5 + }, + { + "expression": "max(decimals)", + "result": 1.2 + }, + { + "expression": "max(strings)", + "result": "c" + }, + { + "expression": "max(abc)", + "error": "invalid-type" + }, + { + "expression": "max(array)", + "error": "invalid-type" + }, + { + "expression": "max(decimals)", + "result": 1.2 + }, + { + "expression": "max(empty_list)", + "result": null + }, + { + "expression": "merge(`{}`)", + "result": {} + }, + { + "expression": "merge(`{}`, `{}`)", + "result": {} + }, + { + "expression": "merge(`{\"a\": 1}`, `{\"b\": 2}`)", + "result": {"a": 1, "b": 2} + }, + { + "expression": "merge(`{\"a\": 1}`, `{\"a\": 2}`)", + "result": {"a": 2} + }, + { + "expression": "merge(`{\"a\": 1, \"b\": 2}`, `{\"a\": 2, \"c\": 3}`, `{\"d\": 4}`)", + "result": {"a": 2, "b": 2, "c": 3, "d": 4} + }, + { + "expression": "min(numbers)", + "result": -1 + }, + { + "expression": "min(decimals)", + "result": -1.5 + }, + { + "expression": "min(abc)", + "error": "invalid-type" + }, + { + "expression": "min(array)", + "error": "invalid-type" + }, + { + "expression": "min(empty_list)", + "result": null + }, + { + "expression": "min(decimals)", + "result": -1.5 + }, + { + "expression": "min(strings)", + "result": "a" + }, + { + "expression": "type('abc')", + "result": "string" + }, + { + "expression": "type(`1.0`)", + "result": "number" + }, + { + "expression": "type(`2`)", + "result": "number" + }, + { + "expression": "type(`true`)", + "result": "boolean" + }, + { + "expression": "type(`false`)", + "result": "boolean" + }, + { + "expression": "type(`null`)", + "result": "null" + }, + { + "expression": "type(`[0]`)", + "result": "array" + }, + { + "expression": "type(`{\"a\": \"b\"}`)", + "result": "object" + }, + { + "expression": "type(@)", + "result": "object" + }, + { + "expression": "sort(keys(objects))", + "result": ["bar", "foo"] + }, + { + "expression": "keys(foo)", + "error": "invalid-type" + }, + { + "expression": "keys(strings)", + "error": "invalid-type" + }, + { + "expression": "keys(`false`)", + "error": "invalid-type" + }, + { + "expression": "sort(values(objects))", + "result": ["bar", "baz"] + }, + { + "expression": "keys(empty_hash)", + "result": [] + }, + { + "expression": "values(foo)", + "error": "invalid-type" + }, + { + "expression": "join(', ', strings)", + "result": "a, b, c" + }, + { + "expression": "join(', ', strings)", + "result": "a, b, c" + }, + { + "expression": "join(',', `[\"a\", \"b\"]`)", + "result": "a,b" + }, + { + "expression": "join(',', `[\"a\", 0]`)", + "error": "invalid-type" + }, + { + "expression": "join(', ', str)", + "error": "invalid-type" + }, + { + "expression": "join('|', strings)", + "result": "a|b|c" + }, + { + "expression": "join(`2`, strings)", + "error": "invalid-type" + }, + { + "expression": "join('|', decimals)", + "error": "invalid-type" + }, + { + "expression": "join('|', decimals[].to_string(@))", + "result": "1.01|1.2|-1.5" + }, + { + "expression": "join('|', empty_list)", + "result": "" + }, + { + "expression": "reverse(numbers)", + "result": [5, 4, 3, -1] + }, + { + "expression": "reverse(array)", + "result": ["100", "a", 5, 4, 3, -1] + }, + { + "expression": "reverse(`[]`)", + "result": [] + }, + { + "expression": "reverse('')", + "result": "" + }, + { + "expression": "reverse('hello world')", + "result": "dlrow olleh" + }, + { + "expression": "starts_with(str, 'S')", + "result": true + }, + { + "expression": "starts_with(str, 'St')", + "result": true + }, + { + "expression": "starts_with(str, 'Str')", + "result": true + }, + { + "expression": "starts_with(str, 'String')", + "result": false + }, + { + "expression": "starts_with(str, `0`)", + "error": "invalid-type" + }, + { + "expression": "sum(numbers)", + "result": 11 + }, + { + "expression": "sum(decimals)", + "result": 0.71 + }, + { + "expression": "sum(array)", + "error": "invalid-type" + }, + { + "expression": "sum(array[].to_number(@))", + "result": 111 + }, + { + "expression": "sum(`[]`)", + "result": 0 + }, + { + "expression": "to_array('foo')", + "result": ["foo"] + }, + { + "expression": "to_array(`0`)", + "result": [0] + }, + { + "expression": "to_array(objects)", + "result": [{"foo": "bar", "bar": "baz"}] + }, + { + "expression": "to_array(`[1, 2, 3]`)", + "result": [1, 2, 3] + }, + { + "expression": "to_array(false)", + "result": [false] + }, + { + "expression": "to_string('foo')", + "result": "foo" + }, + { + "expression": "to_string(`1.2`)", + "result": "1.2" + }, + { + "expression": "to_string(`[0, 1]`)", + "result": "[0,1]" + }, + { + "expression": "to_number('1.0')", + "result": 1.0 + }, + { + "expression": "to_number('1.1')", + "result": 1.1 + }, + { + "expression": "to_number('4')", + "result": 4 + }, + { + "expression": "to_number('notanumber')", + "result": null + }, + { + "expression": "to_number(`false`)", + "result": null + }, + { + "expression": "to_number(`null`)", + "result": null + }, + { + "expression": "to_number(`[0]`)", + "result": null + }, + { + "expression": "to_number(`{\"foo\": 0}`)", + "result": null + }, + { + "expression": "\"to_string\"(`1.0`)", + "error": "syntax" + }, + { + "expression": "sort(numbers)", + "result": [-1, 3, 4, 5] + }, + { + "expression": "sort(strings)", + "result": ["a", "b", "c"] + }, + { + "expression": "sort(decimals)", + "result": [-1.5, 1.01, 1.2] + }, + { + "expression": "sort(array)", + "error": "invalid-type" + }, + { + "expression": "sort(abc)", + "error": "invalid-type" + }, + { + "expression": "sort(empty_list)", + "result": [] + }, + { + "expression": "sort(@)", + "error": "invalid-type" + }, + { + "expression": "not_null(unknown_key, str)", + "result": "Str" + }, + { + "expression": "not_null(unknown_key, foo.bar, empty_list, str)", + "result": [] + }, + { + "expression": "not_null(unknown_key, null_key, empty_list, str)", + "result": [] + }, + { + "expression": "not_null(all, expressions, are_null)", + "result": null + }, + { + "expression": "not_null()", + "error": "invalid-arity" + }, + { + "description": "function projection on single arg function", + "expression": "numbers[].to_string(@)", + "result": ["-1", "3", "4", "5"] + }, + { + "description": "function projection on single arg function", + "expression": "array[].to_number(@)", + "result": [-1, 3, 4, 5, 100] + } + ] +}, { + "given": + { + "foo": [ + {"b": "b", "a": "a"}, + {"c": "c", "b": "b"}, + {"d": "d", "c": "c"}, + {"e": "e", "d": "d"}, + {"f": "f", "e": "e"} + ] + }, + "cases": [ + { + "description": "function projection on variadic function", + "expression": "foo[].not_null(f, e, d, c, b, a)", + "result": ["b", "c", "d", "e", "f"] + } + ] +}, { + "given": + { + "people": [ + {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, + {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, + {"age": 30, "age_str": "30", "bool": true, "name": "c"}, + {"age": 50, "age_str": "50", "bool": false, "name": "d"}, + {"age": 10, "age_str": "10", "bool": true, "name": 3} + ] + }, + "cases": [ + { + "description": "sort by field expression", + "expression": "sort_by(people, &age)", + "result": [ + {"age": 10, "age_str": "10", "bool": true, "name": 3}, + {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, + {"age": 30, "age_str": "30", "bool": true, "name": "c"}, + {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, + {"age": 50, "age_str": "50", "bool": false, "name": "d"} + ] + }, + { + "expression": "sort_by(people, &age_str)", + "result": [ + {"age": 10, "age_str": "10", "bool": true, "name": 3}, + {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, + {"age": 30, "age_str": "30", "bool": true, "name": "c"}, + {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, + {"age": 50, "age_str": "50", "bool": false, "name": "d"} + ] + }, + { + "description": "sort by function expression", + "expression": "sort_by(people, &to_number(age_str))", + "result": [ + {"age": 10, "age_str": "10", "bool": true, "name": 3}, + {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, + {"age": 30, "age_str": "30", "bool": true, "name": "c"}, + {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, + {"age": 50, "age_str": "50", "bool": false, "name": "d"} + ] + }, + { + "description": "function projection on sort_by function", + "expression": "sort_by(people, &age)[].name", + "result": [3, "a", "c", "b", "d"] + }, + { + "expression": "sort_by(people, &extra)", + "error": "invalid-type" + }, + { + "expression": "sort_by(people, &bool)", + "error": "invalid-type" + }, + { + "expression": "sort_by(people, &name)", + "error": "invalid-type" + }, + { + "expression": "sort_by(people, name)", + "error": "invalid-type" + }, + { + "expression": "sort_by(people, &age)[].extra", + "result": ["foo", "bar"] + }, + { + "expression": "sort_by(`[]`, &age)", + "result": [] + }, + { + "expression": "max_by(people, &age)", + "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} + }, + { + "expression": "max_by(people, &age_str)", + "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} + }, + { + "expression": "max_by(people, &bool)", + "error": "invalid-type" + }, + { + "expression": "max_by(people, &extra)", + "error": "invalid-type" + }, + { + "expression": "max_by(people, &to_number(age_str))", + "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} + }, + { + "expression": "min_by(people, &age)", + "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} + }, + { + "expression": "min_by(people, &age_str)", + "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} + }, + { + "expression": "min_by(people, &bool)", + "error": "invalid-type" + }, + { + "expression": "min_by(people, &extra)", + "error": "invalid-type" + }, + { + "expression": "min_by(people, &to_number(age_str))", + "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} + } + ] +}, { + "given": + { + "people": [ + {"age": 10, "order": "1"}, + {"age": 10, "order": "2"}, + {"age": 10, "order": "3"}, + {"age": 10, "order": "4"}, + {"age": 10, "order": "5"}, + {"age": 10, "order": "6"}, + {"age": 10, "order": "7"}, + {"age": 10, "order": "8"}, + {"age": 10, "order": "9"}, + {"age": 10, "order": "10"}, + {"age": 10, "order": "11"} + ] + }, + "cases": [ + { + "description": "stable sort order", + "expression": "sort_by(people, &age)", + "result": [ + {"age": 10, "order": "1"}, + {"age": 10, "order": "2"}, + {"age": 10, "order": "3"}, + {"age": 10, "order": "4"}, + {"age": 10, "order": "5"}, + {"age": 10, "order": "6"}, + {"age": 10, "order": "7"}, + {"age": 10, "order": "8"}, + {"age": 10, "order": "9"}, + {"age": 10, "order": "10"}, + {"age": 10, "order": "11"} + ] + } + ] +}, { + "given": + { + "people": [ + {"a": 10, "b": 1, "c": "z"}, + {"a": 10, "b": 2, "c": null}, + {"a": 10, "b": 3}, + {"a": 10, "b": 4, "c": "z"}, + {"a": 10, "b": 5, "c": null}, + {"a": 10, "b": 6}, + {"a": 10, "b": 7, "c": "z"}, + {"a": 10, "b": 8, "c": null}, + {"a": 10, "b": 9} + ], + "empty": [] + }, + "cases": [ + { + "expression": "map(&a, people)", + "result": [10, 10, 10, 10, 10, 10, 10, 10, 10] + }, + { + "expression": "map(&c, people)", + "result": ["z", null, null, "z", null, null, "z", null, null] + }, + { + "expression": "map(&a, badkey)", + "error": "invalid-type" + }, + { + "expression": "map(&foo, empty)", + "result": [] + } + ] +}, { + "given": { + "array": [ + { + "foo": {"bar": "yes1"} + }, + { + "foo": {"bar": "yes2"} + }, + { + "foo1": {"bar": "no"} + } + ]}, + "cases": [ + { + "expression": "map(&foo.bar, array)", + "result": ["yes1", "yes2", null] + }, + { + "expression": "map(&foo1.bar, array)", + "result": [null, null, "no"] + }, + { + "expression": "map(&foo.bar.baz, array)", + "result": [null, null, null] + } + ] +}, { + "given": { + "array": [[1, 2, 3, [4]], [5, 6, 7, [8, 9]]] + }, + "cases": [ + { + "expression": "map(&[], array)", + "result": [[1, 2, 3, 4], [5, 6, 7, 8, 9]] + } + ] +} +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json new file mode 100644 index 0000000..7998a41 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json @@ -0,0 +1,1377 @@ +[ + { + "given": { + "__L": true + }, + "cases": [ + { + "expression": "__L", + "result": true + } + ] + }, + { + "given": { + "!\r": true + }, + "cases": [ + { + "expression": "\"!\\r\"", + "result": true + } + ] + }, + { + "given": { + "Y_1623": true + }, + "cases": [ + { + "expression": "Y_1623", + "result": true + } + ] + }, + { + "given": { + "x": true + }, + "cases": [ + { + "expression": "x", + "result": true + } + ] + }, + { + "given": { + "\tF\uCebb": true + }, + "cases": [ + { + "expression": "\"\\tF\\uCebb\"", + "result": true + } + ] + }, + { + "given": { + " \t": true + }, + "cases": [ + { + "expression": "\" \\t\"", + "result": true + } + ] + }, + { + "given": { + " ": true + }, + "cases": [ + { + "expression": "\" \"", + "result": true + } + ] + }, + { + "given": { + "v2": true + }, + "cases": [ + { + "expression": "v2", + "result": true + } + ] + }, + { + "given": { + "\t": true + }, + "cases": [ + { + "expression": "\"\\t\"", + "result": true + } + ] + }, + { + "given": { + "_X": true + }, + "cases": [ + { + "expression": "_X", + "result": true + } + ] + }, + { + "given": { + "\t4\ud9da\udd15": true + }, + "cases": [ + { + "expression": "\"\\t4\\ud9da\\udd15\"", + "result": true + } + ] + }, + { + "given": { + "v24_W": true + }, + "cases": [ + { + "expression": "v24_W", + "result": true + } + ] + }, + { + "given": { + "H": true + }, + "cases": [ + { + "expression": "\"H\"", + "result": true + } + ] + }, + { + "given": { + "\f": true + }, + "cases": [ + { + "expression": "\"\\f\"", + "result": true + } + ] + }, + { + "given": { + "E4": true + }, + "cases": [ + { + "expression": "\"E4\"", + "result": true + } + ] + }, + { + "given": { + "!": true + }, + "cases": [ + { + "expression": "\"!\"", + "result": true + } + ] + }, + { + "given": { + "tM": true + }, + "cases": [ + { + "expression": "tM", + "result": true + } + ] + }, + { + "given": { + " [": true + }, + "cases": [ + { + "expression": "\" [\"", + "result": true + } + ] + }, + { + "given": { + "R!": true + }, + "cases": [ + { + "expression": "\"R!\"", + "result": true + } + ] + }, + { + "given": { + "_6W": true + }, + "cases": [ + { + "expression": "_6W", + "result": true + } + ] + }, + { + "given": { + "\uaBA1\r": true + }, + "cases": [ + { + "expression": "\"\\uaBA1\\r\"", + "result": true + } + ] + }, + { + "given": { + "tL7": true + }, + "cases": [ + { + "expression": "tL7", + "result": true + } + ] + }, + { + "given": { + "<": true + }, + "cases": [ + { + "expression": "\">\"", + "result": true + } + ] + }, + { + "given": { + "hvu": true + }, + "cases": [ + { + "expression": "hvu", + "result": true + } + ] + }, + { + "given": { + "; !": true + }, + "cases": [ + { + "expression": "\"; !\"", + "result": true + } + ] + }, + { + "given": { + "hU": true + }, + "cases": [ + { + "expression": "hU", + "result": true + } + ] + }, + { + "given": { + "!I\n\/": true + }, + "cases": [ + { + "expression": "\"!I\\n\\/\"", + "result": true + } + ] + }, + { + "given": { + "\uEEbF": true + }, + "cases": [ + { + "expression": "\"\\uEEbF\"", + "result": true + } + ] + }, + { + "given": { + "U)\t": true + }, + "cases": [ + { + "expression": "\"U)\\t\"", + "result": true + } + ] + }, + { + "given": { + "fa0_9": true + }, + "cases": [ + { + "expression": "fa0_9", + "result": true + } + ] + }, + { + "given": { + "/": true + }, + "cases": [ + { + "expression": "\"/\"", + "result": true + } + ] + }, + { + "given": { + "Gy": true + }, + "cases": [ + { + "expression": "Gy", + "result": true + } + ] + }, + { + "given": { + "\b": true + }, + "cases": [ + { + "expression": "\"\\b\"", + "result": true + } + ] + }, + { + "given": { + "<": true + }, + "cases": [ + { + "expression": "\"<\"", + "result": true + } + ] + }, + { + "given": { + "\t": true + }, + "cases": [ + { + "expression": "\"\\t\"", + "result": true + } + ] + }, + { + "given": { + "\t&\\\r": true + }, + "cases": [ + { + "expression": "\"\\t&\\\\\\r\"", + "result": true + } + ] + }, + { + "given": { + "#": true + }, + "cases": [ + { + "expression": "\"#\"", + "result": true + } + ] + }, + { + "given": { + "B__": true + }, + "cases": [ + { + "expression": "B__", + "result": true + } + ] + }, + { + "given": { + "\nS \n": true + }, + "cases": [ + { + "expression": "\"\\nS \\n\"", + "result": true + } + ] + }, + { + "given": { + "Bp": true + }, + "cases": [ + { + "expression": "Bp", + "result": true + } + ] + }, + { + "given": { + ",\t;": true + }, + "cases": [ + { + "expression": "\",\\t;\"", + "result": true + } + ] + }, + { + "given": { + "B_q": true + }, + "cases": [ + { + "expression": "B_q", + "result": true + } + ] + }, + { + "given": { + "\/+\t\n\b!Z": true + }, + "cases": [ + { + "expression": "\"\\/+\\t\\n\\b!Z\"", + "result": true + } + ] + }, + { + "given": { + "\udadd\udfc7\\ueFAc": true + }, + "cases": [ + { + "expression": "\"\udadd\udfc7\\\\ueFAc\"", + "result": true + } + ] + }, + { + "given": { + ":\f": true + }, + "cases": [ + { + "expression": "\":\\f\"", + "result": true + } + ] + }, + { + "given": { + "\/": true + }, + "cases": [ + { + "expression": "\"\\/\"", + "result": true + } + ] + }, + { + "given": { + "_BW_6Hg_Gl": true + }, + "cases": [ + { + "expression": "_BW_6Hg_Gl", + "result": true + } + ] + }, + { + "given": { + "\udbcf\udc02": true + }, + "cases": [ + { + "expression": "\"\udbcf\udc02\"", + "result": true + } + ] + }, + { + "given": { + "zs1DC": true + }, + "cases": [ + { + "expression": "zs1DC", + "result": true + } + ] + }, + { + "given": { + "__434": true + }, + "cases": [ + { + "expression": "__434", + "result": true + } + ] + }, + { + "given": { + "\udb94\udd41": true + }, + "cases": [ + { + "expression": "\"\udb94\udd41\"", + "result": true + } + ] + }, + { + "given": { + "Z_5": true + }, + "cases": [ + { + "expression": "Z_5", + "result": true + } + ] + }, + { + "given": { + "z_M_": true + }, + "cases": [ + { + "expression": "z_M_", + "result": true + } + ] + }, + { + "given": { + "YU_2": true + }, + "cases": [ + { + "expression": "YU_2", + "result": true + } + ] + }, + { + "given": { + "_0": true + }, + "cases": [ + { + "expression": "_0", + "result": true + } + ] + }, + { + "given": { + "\b+": true + }, + "cases": [ + { + "expression": "\"\\b+\"", + "result": true + } + ] + }, + { + "given": { + "\"": true + }, + "cases": [ + { + "expression": "\"\\\"\"", + "result": true + } + ] + }, + { + "given": { + "D7": true + }, + "cases": [ + { + "expression": "D7", + "result": true + } + ] + }, + { + "given": { + "_62L": true + }, + "cases": [ + { + "expression": "_62L", + "result": true + } + ] + }, + { + "given": { + "\tK\t": true + }, + "cases": [ + { + "expression": "\"\\tK\\t\"", + "result": true + } + ] + }, + { + "given": { + "\n\\\f": true + }, + "cases": [ + { + "expression": "\"\\n\\\\\\f\"", + "result": true + } + ] + }, + { + "given": { + "I_": true + }, + "cases": [ + { + "expression": "I_", + "result": true + } + ] + }, + { + "given": { + "W_a0_": true + }, + "cases": [ + { + "expression": "W_a0_", + "result": true + } + ] + }, + { + "given": { + "BQ": true + }, + "cases": [ + { + "expression": "BQ", + "result": true + } + ] + }, + { + "given": { + "\tX$\uABBb": true + }, + "cases": [ + { + "expression": "\"\\tX$\\uABBb\"", + "result": true + } + ] + }, + { + "given": { + "Z9": true + }, + "cases": [ + { + "expression": "Z9", + "result": true + } + ] + }, + { + "given": { + "\b%\"\uda38\udd0f": true + }, + "cases": [ + { + "expression": "\"\\b%\\\"\uda38\udd0f\"", + "result": true + } + ] + }, + { + "given": { + "_F": true + }, + "cases": [ + { + "expression": "_F", + "result": true + } + ] + }, + { + "given": { + "!,": true + }, + "cases": [ + { + "expression": "\"!,\"", + "result": true + } + ] + }, + { + "given": { + "\"!": true + }, + "cases": [ + { + "expression": "\"\\\"!\"", + "result": true + } + ] + }, + { + "given": { + "Hh": true + }, + "cases": [ + { + "expression": "Hh", + "result": true + } + ] + }, + { + "given": { + "&": true + }, + "cases": [ + { + "expression": "\"&\"", + "result": true + } + ] + }, + { + "given": { + "9\r\\R": true + }, + "cases": [ + { + "expression": "\"9\\r\\\\R\"", + "result": true + } + ] + }, + { + "given": { + "M_k": true + }, + "cases": [ + { + "expression": "M_k", + "result": true + } + ] + }, + { + "given": { + "!\b\n\udb06\ude52\"\"": true + }, + "cases": [ + { + "expression": "\"!\\b\\n\udb06\ude52\\\"\\\"\"", + "result": true + } + ] + }, + { + "given": { + "6": true + }, + "cases": [ + { + "expression": "\"6\"", + "result": true + } + ] + }, + { + "given": { + "_7": true + }, + "cases": [ + { + "expression": "_7", + "result": true + } + ] + }, + { + "given": { + "0": true + }, + "cases": [ + { + "expression": "\"0\"", + "result": true + } + ] + }, + { + "given": { + "\\8\\": true + }, + "cases": [ + { + "expression": "\"\\\\8\\\\\"", + "result": true + } + ] + }, + { + "given": { + "b7eo": true + }, + "cases": [ + { + "expression": "b7eo", + "result": true + } + ] + }, + { + "given": { + "xIUo9": true + }, + "cases": [ + { + "expression": "xIUo9", + "result": true + } + ] + }, + { + "given": { + "5": true + }, + "cases": [ + { + "expression": "\"5\"", + "result": true + } + ] + }, + { + "given": { + "?": true + }, + "cases": [ + { + "expression": "\"?\"", + "result": true + } + ] + }, + { + "given": { + "sU": true + }, + "cases": [ + { + "expression": "sU", + "result": true + } + ] + }, + { + "given": { + "VH2&H\\\/": true + }, + "cases": [ + { + "expression": "\"VH2&H\\\\\\/\"", + "result": true + } + ] + }, + { + "given": { + "_C": true + }, + "cases": [ + { + "expression": "_C", + "result": true + } + ] + }, + { + "given": { + "_": true + }, + "cases": [ + { + "expression": "_", + "result": true + } + ] + }, + { + "given": { + "<\t": true + }, + "cases": [ + { + "expression": "\"<\\t\"", + "result": true + } + ] + }, + { + "given": { + "\uD834\uDD1E": true + }, + "cases": [ + { + "expression": "\"\\uD834\\uDD1E\"", + "result": true + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json new file mode 100644 index 0000000..aa03b35 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json @@ -0,0 +1,346 @@ +[{ + "given": + {"foo": {"bar": ["zero", "one", "two"]}}, + "cases": [ + { + "expression": "foo.bar[0]", + "result": "zero" + }, + { + "expression": "foo.bar[1]", + "result": "one" + }, + { + "expression": "foo.bar[2]", + "result": "two" + }, + { + "expression": "foo.bar[3]", + "result": null + }, + { + "expression": "foo.bar[-1]", + "result": "two" + }, + { + "expression": "foo.bar[-2]", + "result": "one" + }, + { + "expression": "foo.bar[-3]", + "result": "zero" + }, + { + "expression": "foo.bar[-4]", + "result": null + } + ] +}, +{ + "given": + {"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]}, + "cases": [ + { + "expression": "foo.bar", + "result": null + }, + { + "expression": "foo[0].bar", + "result": "one" + }, + { + "expression": "foo[1].bar", + "result": "two" + }, + { + "expression": "foo[2].bar", + "result": "three" + }, + { + "expression": "foo[3].notbar", + "result": "four" + }, + { + "expression": "foo[3].bar", + "result": null + }, + { + "expression": "foo[0]", + "result": {"bar": "one"} + }, + { + "expression": "foo[1]", + "result": {"bar": "two"} + }, + { + "expression": "foo[2]", + "result": {"bar": "three"} + }, + { + "expression": "foo[3]", + "result": {"notbar": "four"} + }, + { + "expression": "foo[4]", + "result": null + } + ] +}, +{ + "given": [ + "one", "two", "three" + ], + "cases": [ + { + "expression": "[0]", + "result": "one" + }, + { + "expression": "[1]", + "result": "two" + }, + { + "expression": "[2]", + "result": "three" + }, + { + "expression": "[-1]", + "result": "three" + }, + { + "expression": "[-2]", + "result": "two" + }, + { + "expression": "[-3]", + "result": "one" + } + ] +}, +{ + "given": {"reservations": [ + {"instances": [{"foo": 1}, {"foo": 2}]} + ]}, + "cases": [ + { + "expression": "reservations[].instances[].foo", + "result": [1, 2] + }, + { + "expression": "reservations[].instances[].bar", + "result": [] + }, + { + "expression": "reservations[].notinstances[].foo", + "result": [] + }, + { + "expression": "reservations[].notinstances[].foo", + "result": [] + } + ] +}, +{ + "given": {"reservations": [{ + "instances": [ + {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]}, + {"foo": [{"bar": 5}, {"bar": 6}, {"notbar": [7]}, {"bar": 8}]}, + {"foo": "bar"}, + {"notfoo": [{"bar": 20}, {"bar": 21}, {"notbar": [7]}, {"bar": 22}]}, + {"bar": [{"baz": [1]}, {"baz": [2]}, {"baz": [3]}, {"baz": [4]}]}, + {"baz": [{"baz": [1, 2]}, {"baz": []}, {"baz": []}, {"baz": [3, 4]}]}, + {"qux": [{"baz": []}, {"baz": [1, 2, 3]}, {"baz": [4]}, {"baz": []}]} + ], + "otherkey": {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]} + }, { + "instances": [ + {"a": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]}, + {"b": [{"bar": 5}, {"bar": 6}, {"notbar": [7]}, {"bar": 8}]}, + {"c": "bar"}, + {"notfoo": [{"bar": 23}, {"bar": 24}, {"notbar": [7]}, {"bar": 25}]}, + {"qux": [{"baz": []}, {"baz": [1, 2, 3]}, {"baz": [4]}, {"baz": []}]} + ], + "otherkey": {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]} + } + ]}, + "cases": [ + { + "expression": "reservations[].instances[].foo[].bar", + "result": [1, 2, 4, 5, 6, 8] + }, + { + "expression": "reservations[].instances[].foo[].baz", + "result": [] + }, + { + "expression": "reservations[].instances[].notfoo[].bar", + "result": [20, 21, 22, 23, 24, 25] + }, + { + "expression": "reservations[].instances[].notfoo[].notbar", + "result": [[7], [7]] + }, + { + "expression": "reservations[].notinstances[].foo", + "result": [] + }, + { + "expression": "reservations[].instances[].foo[].notbar", + "result": [3, [7]] + }, + { + "expression": "reservations[].instances[].bar[].baz", + "result": [[1], [2], [3], [4]] + }, + { + "expression": "reservations[].instances[].baz[].baz", + "result": [[1, 2], [], [], [3, 4]] + }, + { + "expression": "reservations[].instances[].qux[].baz", + "result": [[], [1, 2, 3], [4], [], [], [1, 2, 3], [4], []] + }, + { + "expression": "reservations[].instances[].qux[].baz[]", + "result": [1, 2, 3, 4, 1, 2, 3, 4] + } + ] +}, +{ + "given": { + "foo": [ + [["one", "two"], ["three", "four"]], + [["five", "six"], ["seven", "eight"]], + [["nine"], ["ten"]] + ] + }, + "cases": [ + { + "expression": "foo[]", + "result": [["one", "two"], ["three", "four"], ["five", "six"], + ["seven", "eight"], ["nine"], ["ten"]] + }, + { + "expression": "foo[][0]", + "result": ["one", "three", "five", "seven", "nine", "ten"] + }, + { + "expression": "foo[][1]", + "result": ["two", "four", "six", "eight"] + }, + { + "expression": "foo[][0][0]", + "result": [] + }, + { + "expression": "foo[][2][2]", + "result": [] + }, + { + "expression": "foo[][0][0][100]", + "result": [] + } + ] +}, +{ + "given": { + "foo": [{ + "bar": [ + { + "qux": 2, + "baz": 1 + }, + { + "qux": 4, + "baz": 3 + } + ] + }, + { + "bar": [ + { + "qux": 6, + "baz": 5 + }, + { + "qux": 8, + "baz": 7 + } + ] + } + ] + }, + "cases": [ + { + "expression": "foo", + "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, + {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] + }, + { + "expression": "foo[]", + "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, + {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] + }, + { + "expression": "foo[].bar", + "result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}], + [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]] + }, + { + "expression": "foo[].bar[]", + "result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}, + {"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}] + }, + { + "expression": "foo[].bar[].baz", + "result": [1, 3, 5, 7] + } + ] +}, +{ + "given": { + "string": "string", + "hash": {"foo": "bar", "bar": "baz"}, + "number": 23, + "nullvalue": null + }, + "cases": [ + { + "expression": "string[]", + "result": null + }, + { + "expression": "hash[]", + "result": null + }, + { + "expression": "number[]", + "result": null + }, + { + "expression": "nullvalue[]", + "result": null + }, + { + "expression": "string[].foo", + "result": null + }, + { + "expression": "hash[].foo", + "result": null + }, + { + "expression": "number[].foo", + "result": null + }, + { + "expression": "nullvalue[].foo", + "result": null + }, + { + "expression": "nullvalue[].foo[].bar", + "result": null + } + ] +} +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json new file mode 100644 index 0000000..b796d36 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json @@ -0,0 +1,190 @@ +[ + { + "given": { + "foo": [{"name": "a"}, {"name": "b"}], + "bar": {"baz": "qux"} + }, + "cases": [ + { + "expression": "`\"foo\"`", + "result": "foo" + }, + { + "comment": "Interpret escaped unicode.", + "expression": "`\"\\u03a6\"`", + "result": "Φ" + }, + { + "expression": "`\"✓\"`", + "result": "✓" + }, + { + "expression": "`[1, 2, 3]`", + "result": [1, 2, 3] + }, + { + "expression": "`{\"a\": \"b\"}`", + "result": {"a": "b"} + }, + { + "expression": "`true`", + "result": true + }, + { + "expression": "`false`", + "result": false + }, + { + "expression": "`null`", + "result": null + }, + { + "expression": "`0`", + "result": 0 + }, + { + "expression": "`1`", + "result": 1 + }, + { + "expression": "`2`", + "result": 2 + }, + { + "expression": "`3`", + "result": 3 + }, + { + "expression": "`4`", + "result": 4 + }, + { + "expression": "`5`", + "result": 5 + }, + { + "expression": "`6`", + "result": 6 + }, + { + "expression": "`7`", + "result": 7 + }, + { + "expression": "`8`", + "result": 8 + }, + { + "expression": "`9`", + "result": 9 + }, + { + "comment": "Escaping a backtick in quotes", + "expression": "`\"foo\\`bar\"`", + "result": "foo`bar" + }, + { + "comment": "Double quote in literal", + "expression": "`\"foo\\\"bar\"`", + "result": "foo\"bar" + }, + { + "expression": "`\"1\\`\"`", + "result": "1`" + }, + { + "comment": "Multiple literal expressions with escapes", + "expression": "`\"\\\\\"`.{a:`\"b\"`}", + "result": {"a": "b"} + }, + { + "comment": "literal . identifier", + "expression": "`{\"a\": \"b\"}`.a", + "result": "b" + }, + { + "comment": "literal . identifier . identifier", + "expression": "`{\"a\": {\"b\": \"c\"}}`.a.b", + "result": "c" + }, + { + "comment": "literal . identifier bracket-expr", + "expression": "`[0, 1, 2]`[1]", + "result": 1 + } + ] + }, + { + "comment": "Literals", + "given": {"type": "object"}, + "cases": [ + { + "comment": "Literal with leading whitespace", + "expression": "` {\"foo\": true}`", + "result": {"foo": true} + }, + { + "comment": "Literal with trailing whitespace", + "expression": "`{\"foo\": true} `", + "result": {"foo": true} + }, + { + "comment": "Literal on RHS of subexpr not allowed", + "expression": "foo.`\"bar\"`", + "error": "syntax" + } + ] + }, + { + "comment": "Raw String Literals", + "given": {}, + "cases": [ + { + "expression": "'foo'", + "result": "foo" + }, + { + "expression": "' foo '", + "result": " foo " + }, + { + "expression": "'0'", + "result": "0" + }, + { + "expression": "'newline\n'", + "result": "newline\n" + }, + { + "expression": "'\n'", + "result": "\n" + }, + { + "expression": "'✓'", + "result": "✓" + }, + { + "expression": "'ð„ž'", + "result": "ð„ž" + }, + { + "expression": "' [foo] '", + "result": " [foo] " + }, + { + "expression": "'[foo]'", + "result": "[foo]" + }, + { + "comment": "Do not interpret escaped unicode.", + "expression": "'\\u03a6'", + "result": "\\u03a6" + }, + { + "comment": "Can escape the single quote", + "expression": "'foo\\'bar'", + "result": "foo'bar" + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json new file mode 100644 index 0000000..8f2a481 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json @@ -0,0 +1,393 @@ +[{ + "given": { + "foo": { + "bar": "bar", + "baz": "baz", + "qux": "qux", + "nested": { + "one": { + "a": "first", + "b": "second", + "c": "third" + }, + "two": { + "a": "first", + "b": "second", + "c": "third" + }, + "three": { + "a": "first", + "b": "second", + "c": {"inner": "third"} + } + } + }, + "bar": 1, + "baz": 2, + "qux\"": 3 + }, + "cases": [ + { + "expression": "foo.{bar: bar}", + "result": {"bar": "bar"} + }, + { + "expression": "foo.{\"bar\": bar}", + "result": {"bar": "bar"} + }, + { + "expression": "foo.{\"foo.bar\": bar}", + "result": {"foo.bar": "bar"} + }, + { + "expression": "foo.{bar: bar, baz: baz}", + "result": {"bar": "bar", "baz": "baz"} + }, + { + "expression": "foo.{\"bar\": bar, \"baz\": baz}", + "result": {"bar": "bar", "baz": "baz"} + }, + { + "expression": "{\"baz\": baz, \"qux\\\"\": \"qux\\\"\"}", + "result": {"baz": 2, "qux\"": 3} + }, + { + "expression": "foo.{bar:bar,baz:baz}", + "result": {"bar": "bar", "baz": "baz"} + }, + { + "expression": "foo.{bar: bar,qux: qux}", + "result": {"bar": "bar", "qux": "qux"} + }, + { + "expression": "foo.{bar: bar, noexist: noexist}", + "result": {"bar": "bar", "noexist": null} + }, + { + "expression": "foo.{noexist: noexist, alsonoexist: alsonoexist}", + "result": {"noexist": null, "alsonoexist": null} + }, + { + "expression": "foo.badkey.{nokey: nokey, alsonokey: alsonokey}", + "result": null + }, + { + "expression": "foo.nested.*.{a: a,b: b}", + "result": [{"a": "first", "b": "second"}, + {"a": "first", "b": "second"}, + {"a": "first", "b": "second"}] + }, + { + "expression": "foo.nested.three.{a: a, cinner: c.inner}", + "result": {"a": "first", "cinner": "third"} + }, + { + "expression": "foo.nested.three.{a: a, c: c.inner.bad.key}", + "result": {"a": "first", "c": null} + }, + { + "expression": "foo.{a: nested.one.a, b: nested.two.b}", + "result": {"a": "first", "b": "second"} + }, + { + "expression": "{bar: bar, baz: baz}", + "result": {"bar": 1, "baz": 2} + }, + { + "expression": "{bar: bar}", + "result": {"bar": 1} + }, + { + "expression": "{otherkey: bar}", + "result": {"otherkey": 1} + }, + { + "expression": "{no: no, exist: exist}", + "result": {"no": null, "exist": null} + }, + { + "expression": "foo.[bar]", + "result": ["bar"] + }, + { + "expression": "foo.[bar,baz]", + "result": ["bar", "baz"] + }, + { + "expression": "foo.[bar,qux]", + "result": ["bar", "qux"] + }, + { + "expression": "foo.[bar,noexist]", + "result": ["bar", null] + }, + { + "expression": "foo.[noexist,alsonoexist]", + "result": [null, null] + } + ] +}, { + "given": { + "foo": {"bar": 1, "baz": [2, 3, 4]} + }, + "cases": [ + { + "expression": "foo.{bar:bar,baz:baz}", + "result": {"bar": 1, "baz": [2, 3, 4]} + }, + { + "expression": "foo.[bar,baz[0]]", + "result": [1, 2] + }, + { + "expression": "foo.[bar,baz[1]]", + "result": [1, 3] + }, + { + "expression": "foo.[bar,baz[2]]", + "result": [1, 4] + }, + { + "expression": "foo.[bar,baz[3]]", + "result": [1, null] + }, + { + "expression": "foo.[bar[0],baz[3]]", + "result": [null, null] + } + ] +}, { + "given": { + "foo": {"bar": 1, "baz": 2} + }, + "cases": [ + { + "expression": "foo.{bar: bar, baz: baz}", + "result": {"bar": 1, "baz": 2} + }, + { + "expression": "foo.[bar,baz]", + "result": [1, 2] + } + ] +}, { + "given": { + "foo": { + "bar": {"baz": [{"common": "first", "one": 1}, + {"common": "second", "two": 2}]}, + "ignoreme": 1, + "includeme": true + } + }, + "cases": [ + { + "expression": "foo.{bar: bar.baz[1],includeme: includeme}", + "result": {"bar": {"common": "second", "two": 2}, "includeme": true} + }, + { + "expression": "foo.{\"bar.baz.two\": bar.baz[1].two, includeme: includeme}", + "result": {"bar.baz.two": 2, "includeme": true} + }, + { + "expression": "foo.[includeme, bar.baz[*].common]", + "result": [true, ["first", "second"]] + }, + { + "expression": "foo.[includeme, bar.baz[*].none]", + "result": [true, []] + }, + { + "expression": "foo.[includeme, bar.baz[].common]", + "result": [true, ["first", "second"]] + } + ] +}, { + "given": { + "reservations": [{ + "instances": [ + {"id": "id1", + "name": "first"}, + {"id": "id2", + "name": "second"} + ]}, { + "instances": [ + {"id": "id3", + "name": "third"}, + {"id": "id4", + "name": "fourth"} + ]} + ]}, + "cases": [ + { + "expression": "reservations[*].instances[*].{id: id, name: name}", + "result": [[{"id": "id1", "name": "first"}, {"id": "id2", "name": "second"}], + [{"id": "id3", "name": "third"}, {"id": "id4", "name": "fourth"}]] + }, + { + "expression": "reservations[].instances[].{id: id, name: name}", + "result": [{"id": "id1", "name": "first"}, + {"id": "id2", "name": "second"}, + {"id": "id3", "name": "third"}, + {"id": "id4", "name": "fourth"}] + }, + { + "expression": "reservations[].instances[].[id, name]", + "result": [["id1", "first"], + ["id2", "second"], + ["id3", "third"], + ["id4", "fourth"]] + } + ] +}, +{ + "given": { + "foo": [{ + "bar": [ + { + "qux": 2, + "baz": 1 + }, + { + "qux": 4, + "baz": 3 + } + ] + }, + { + "bar": [ + { + "qux": 6, + "baz": 5 + }, + { + "qux": 8, + "baz": 7 + } + ] + } + ] + }, + "cases": [ + { + "expression": "foo", + "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, + {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] + }, + { + "expression": "foo[]", + "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, + {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] + }, + { + "expression": "foo[].bar", + "result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}], + [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]] + }, + { + "expression": "foo[].bar[]", + "result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}, + {"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}] + }, + { + "expression": "foo[].bar[].[baz, qux]", + "result": [[1, 2], [3, 4], [5, 6], [7, 8]] + }, + { + "expression": "foo[].bar[].[baz]", + "result": [[1], [3], [5], [7]] + }, + { + "expression": "foo[].bar[].[baz, qux][]", + "result": [1, 2, 3, 4, 5, 6, 7, 8] + } + ] +}, +{ + "given": { + "foo": { + "baz": [ + { + "bar": "abc" + }, { + "bar": "def" + } + ], + "qux": ["zero"] + } + }, + "cases": [ + { + "expression": "foo.[baz[*].bar, qux[0]]", + "result": [["abc", "def"], "zero"] + } + ] +}, +{ + "given": { + "foo": { + "baz": [ + { + "bar": "a", + "bam": "b", + "boo": "c" + }, { + "bar": "d", + "bam": "e", + "boo": "f" + } + ], + "qux": ["zero"] + } + }, + "cases": [ + { + "expression": "foo.[baz[*].[bar, boo], qux[0]]", + "result": [[["a", "c" ], ["d", "f" ]], "zero"] + } + ] +}, +{ + "given": { + "foo": { + "baz": [ + { + "bar": "a", + "bam": "b", + "boo": "c" + }, { + "bar": "d", + "bam": "e", + "boo": "f" + } + ], + "qux": ["zero"] + } + }, + "cases": [ + { + "expression": "foo.[baz[*].not_there || baz[*].bar, qux[0]]", + "result": [["a", "d"], "zero"] + } + ] +}, +{ + "given": {"type": "object"}, + "cases": [ + { + "comment": "Nested multiselect", + "expression": "[[*],*]", + "result": [null, ["object"]] + } + ] +}, +{ + "given": [], + "cases": [ + { + "comment": "Nested multiselect", + "expression": "[[*]]", + "result": [[]] + } + ] +} +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json new file mode 100644 index 0000000..b10c0a4 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json @@ -0,0 +1,131 @@ +[{ + "given": { + "foo": { + "bar": { + "baz": "subkey" + }, + "other": { + "baz": "subkey" + }, + "other2": { + "baz": "subkey" + }, + "other3": { + "notbaz": ["a", "b", "c"] + }, + "other4": { + "notbaz": ["a", "b", "c"] + } + } + }, + "cases": [ + { + "expression": "foo.*.baz | [0]", + "result": "subkey" + }, + { + "expression": "foo.*.baz | [1]", + "result": "subkey" + }, + { + "expression": "foo.*.baz | [2]", + "result": "subkey" + }, + { + "expression": "foo.bar.* | [0]", + "result": "subkey" + }, + { + "expression": "foo.*.notbaz | [*]", + "result": [["a", "b", "c"], ["a", "b", "c"]] + }, + { + "expression": "{\"a\": foo.bar, \"b\": foo.other} | *.baz", + "result": ["subkey", "subkey"] + } + ] +}, { + "given": { + "foo": { + "bar": { + "baz": "one" + }, + "other": { + "baz": "two" + }, + "other2": { + "baz": "three" + }, + "other3": { + "notbaz": ["a", "b", "c"] + }, + "other4": { + "notbaz": ["d", "e", "f"] + } + } + }, + "cases": [ + { + "expression": "foo | bar", + "result": {"baz": "one"} + }, + { + "expression": "foo | bar | baz", + "result": "one" + }, + { + "expression": "foo|bar| baz", + "result": "one" + }, + { + "expression": "not_there | [0]", + "result": null + }, + { + "expression": "not_there | [0]", + "result": null + }, + { + "expression": "[foo.bar, foo.other] | [0]", + "result": {"baz": "one"} + }, + { + "expression": "{\"a\": foo.bar, \"b\": foo.other} | a", + "result": {"baz": "one"} + }, + { + "expression": "{\"a\": foo.bar, \"b\": foo.other} | b", + "result": {"baz": "two"} + }, + { + "expression": "foo.bam || foo.bar | baz", + "result": "one" + }, + { + "expression": "foo | not_there || bar", + "result": {"baz": "one"} + } + ] +}, { + "given": { + "foo": [{ + "bar": [{ + "baz": "one" + }, { + "baz": "two" + }] + }, { + "bar": [{ + "baz": "three" + }, { + "baz": "four" + }] + }] + }, + "cases": [ + { + "expression": "foo[*].bar[*] | [0][0]", + "result": {"baz": "one"} + } + ] +}] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json new file mode 100644 index 0000000..3594772 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json @@ -0,0 +1,187 @@ +[{ + "given": { + "foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], + "bar": { + "baz": 1 + } + }, + "cases": [ + { + "expression": "bar[0:10]", + "result": null + }, + { + "expression": "foo[0:10:1]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[0:10]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[0:10:]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[0::1]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[0::]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[0:]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[:10:1]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[::1]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[:10:]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[::]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[:]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[1:9]", + "result": [1, 2, 3, 4, 5, 6, 7, 8] + }, + { + "expression": "foo[0:10:2]", + "result": [0, 2, 4, 6, 8] + }, + { + "expression": "foo[5:]", + "result": [5, 6, 7, 8, 9] + }, + { + "expression": "foo[5::2]", + "result": [5, 7, 9] + }, + { + "expression": "foo[::2]", + "result": [0, 2, 4, 6, 8] + }, + { + "expression": "foo[::-1]", + "result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] + }, + { + "expression": "foo[1::2]", + "result": [1, 3, 5, 7, 9] + }, + { + "expression": "foo[10:0:-1]", + "result": [9, 8, 7, 6, 5, 4, 3, 2, 1] + }, + { + "expression": "foo[10:5:-1]", + "result": [9, 8, 7, 6] + }, + { + "expression": "foo[8:2:-2]", + "result": [8, 6, 4] + }, + { + "expression": "foo[0:20]", + "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + }, + { + "expression": "foo[10:-20:-1]", + "result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] + }, + { + "expression": "foo[10:-20]", + "result": [] + }, + { + "expression": "foo[-4:-1]", + "result": [6, 7, 8] + }, + { + "expression": "foo[:-5:-1]", + "result": [9, 8, 7, 6] + }, + { + "expression": "foo[8:2:0]", + "error": "invalid-value" + }, + { + "expression": "foo[8:2:0:1]", + "error": "syntax" + }, + { + "expression": "foo[8:2&]", + "error": "syntax" + }, + { + "expression": "foo[2:a:3]", + "error": "syntax" + } + ] +}, { + "given": { + "foo": [{"a": 1}, {"a": 2}, {"a": 3}], + "bar": [{"a": {"b": 1}}, {"a": {"b": 2}}, + {"a": {"b": 3}}], + "baz": 50 + }, + "cases": [ + { + "expression": "foo[:2].a", + "result": [1, 2] + }, + { + "expression": "foo[:2].b", + "result": [] + }, + { + "expression": "foo[:2].a.b", + "result": [] + }, + { + "expression": "bar[::-1].a.b", + "result": [3, 2, 1] + }, + { + "expression": "bar[:2].a.b", + "result": [1, 2] + }, + { + "expression": "baz[:2].a", + "result": null + } + ] +}, { + "given": [{"a": 1}, {"a": 2}, {"a": 3}], + "cases": [ + { + "expression": "[:]", + "result": [{"a": 1}, {"a": 2}, {"a": 3}] + }, + { + "expression": "[:2].a", + "result": [1, 2] + }, + { + "expression": "[::-1].a", + "result": [3, 2, 1] + }, + { + "expression": "[:2].b", + "result": [] + } + ] +}] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json new file mode 100644 index 0000000..003c294 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json @@ -0,0 +1,616 @@ +[{ + "comment": "Dot syntax", + "given": {"type": "object"}, + "cases": [ + { + "expression": "foo.bar", + "result": null + }, + { + "expression": "foo.1", + "error": "syntax" + }, + { + "expression": "foo.-11", + "error": "syntax" + }, + { + "expression": "foo", + "result": null + }, + { + "expression": "foo.", + "error": "syntax" + }, + { + "expression": "foo.", + "error": "syntax" + }, + { + "expression": ".foo", + "error": "syntax" + }, + { + "expression": "foo..bar", + "error": "syntax" + }, + { + "expression": "foo.bar.", + "error": "syntax" + }, + { + "expression": "foo[.]", + "error": "syntax" + } + ] +}, + { + "comment": "Simple token errors", + "given": {"type": "object"}, + "cases": [ + { + "expression": ".", + "error": "syntax" + }, + { + "expression": ":", + "error": "syntax" + }, + { + "expression": ",", + "error": "syntax" + }, + { + "expression": "]", + "error": "syntax" + }, + { + "expression": "[", + "error": "syntax" + }, + { + "expression": "}", + "error": "syntax" + }, + { + "expression": "{", + "error": "syntax" + }, + { + "expression": ")", + "error": "syntax" + }, + { + "expression": "(", + "error": "syntax" + }, + { + "expression": "((&", + "error": "syntax" + }, + { + "expression": "a[", + "error": "syntax" + }, + { + "expression": "a]", + "error": "syntax" + }, + { + "expression": "a][", + "error": "syntax" + }, + { + "expression": "!", + "error": "syntax" + } + ] + }, + { + "comment": "Boolean syntax errors", + "given": {"type": "object"}, + "cases": [ + { + "expression": "![!(!", + "error": "syntax" + } + ] + }, + { + "comment": "Wildcard syntax", + "given": {"type": "object"}, + "cases": [ + { + "expression": "*", + "result": ["object"] + }, + { + "expression": "*.*", + "result": [] + }, + { + "expression": "*.foo", + "result": [] + }, + { + "expression": "*[0]", + "result": [] + }, + { + "expression": ".*", + "error": "syntax" + }, + { + "expression": "*foo", + "error": "syntax" + }, + { + "expression": "*0", + "error": "syntax" + }, + { + "expression": "foo[*]bar", + "error": "syntax" + }, + { + "expression": "foo[*]*", + "error": "syntax" + } + ] + }, + { + "comment": "Flatten syntax", + "given": {"type": "object"}, + "cases": [ + { + "expression": "[]", + "result": null + } + ] + }, + { + "comment": "Simple bracket syntax", + "given": {"type": "object"}, + "cases": [ + { + "expression": "[0]", + "result": null + }, + { + "expression": "[*]", + "result": null + }, + { + "expression": "*.[0]", + "error": "syntax" + }, + { + "expression": "*.[\"0\"]", + "result": [[null]] + }, + { + "expression": "[*].bar", + "result": null + }, + { + "expression": "[*][0]", + "result": null + }, + { + "expression": "foo[#]", + "error": "syntax" + } + ] + }, + { + "comment": "Multi-select list syntax", + "given": {"type": "object"}, + "cases": [ + { + "expression": "foo[0]", + "result": null + }, + { + "comment": "Valid multi-select of a list", + "expression": "foo[0, 1]", + "error": "syntax" + }, + { + "expression": "foo.[0]", + "error": "syntax" + }, + { + "expression": "foo.[*]", + "result": null + }, + { + "comment": "Multi-select of a list with trailing comma", + "expression": "foo[0, ]", + "error": "syntax" + }, + { + "comment": "Multi-select of a list with trailing comma and no close", + "expression": "foo[0,", + "error": "syntax" + }, + { + "comment": "Multi-select of a list with trailing comma and no close", + "expression": "foo.[a", + "error": "syntax" + }, + { + "comment": "Multi-select of a list with extra comma", + "expression": "foo[0,, 1]", + "error": "syntax" + }, + { + "comment": "Multi-select of a list using an identifier index", + "expression": "foo[abc]", + "error": "syntax" + }, + { + "comment": "Multi-select of a list using identifier indices", + "expression": "foo[abc, def]", + "error": "syntax" + }, + { + "comment": "Multi-select of a list using an identifier index", + "expression": "foo[abc, 1]", + "error": "syntax" + }, + { + "comment": "Multi-select of a list using an identifier index with trailing comma", + "expression": "foo[abc, ]", + "error": "syntax" + }, + { + "comment": "Valid multi-select of a hash using an identifier index", + "expression": "foo.[abc]", + "result": null + }, + { + "comment": "Valid multi-select of a hash", + "expression": "foo.[abc, def]", + "result": null + }, + { + "comment": "Multi-select of a hash using a numeric index", + "expression": "foo.[abc, 1]", + "error": "syntax" + }, + { + "comment": "Multi-select of a hash with a trailing comma", + "expression": "foo.[abc, ]", + "error": "syntax" + }, + { + "comment": "Multi-select of a hash with extra commas", + "expression": "foo.[abc,, def]", + "error": "syntax" + }, + { + "comment": "Multi-select of a hash using number indices", + "expression": "foo.[0, 1]", + "error": "syntax" + } + ] + }, + { + "comment": "Multi-select hash syntax", + "given": {"type": "object"}, + "cases": [ + { + "comment": "No key or value", + "expression": "a{}", + "error": "syntax" + }, + { + "comment": "No closing token", + "expression": "a{", + "error": "syntax" + }, + { + "comment": "Not a key value pair", + "expression": "a{foo}", + "error": "syntax" + }, + { + "comment": "Missing value and closing character", + "expression": "a{foo:", + "error": "syntax" + }, + { + "comment": "Missing closing character", + "expression": "a{foo: 0", + "error": "syntax" + }, + { + "comment": "Missing value", + "expression": "a{foo:}", + "error": "syntax" + }, + { + "comment": "Trailing comma and no closing character", + "expression": "a{foo: 0, ", + "error": "syntax" + }, + { + "comment": "Missing value with trailing comma", + "expression": "a{foo: ,}", + "error": "syntax" + }, + { + "comment": "Accessing Array using an identifier", + "expression": "a{foo: bar}", + "error": "syntax" + }, + { + "expression": "a{foo: 0}", + "error": "syntax" + }, + { + "comment": "Missing key-value pair", + "expression": "a.{}", + "error": "syntax" + }, + { + "comment": "Not a key-value pair", + "expression": "a.{foo}", + "error": "syntax" + }, + { + "comment": "Missing value", + "expression": "a.{foo:}", + "error": "syntax" + }, + { + "comment": "Missing value with trailing comma", + "expression": "a.{foo: ,}", + "error": "syntax" + }, + { + "comment": "Valid multi-select hash extraction", + "expression": "a.{foo: bar}", + "result": null + }, + { + "comment": "Valid multi-select hash extraction", + "expression": "a.{foo: bar, baz: bam}", + "result": null + }, + { + "comment": "Trailing comma", + "expression": "a.{foo: bar, }", + "error": "syntax" + }, + { + "comment": "Missing key in second key-value pair", + "expression": "a.{foo: bar, baz}", + "error": "syntax" + }, + { + "comment": "Missing value in second key-value pair", + "expression": "a.{foo: bar, baz:}", + "error": "syntax" + }, + { + "comment": "Trailing comma", + "expression": "a.{foo: bar, baz: bam, }", + "error": "syntax" + }, + { + "comment": "Nested multi select", + "expression": "{\"\\\\\":{\" \":*}}", + "result": {"\\": {" ": ["object"]}} + } + ] + }, + { + "comment": "Or expressions", + "given": {"type": "object"}, + "cases": [ + { + "expression": "foo || bar", + "result": null + }, + { + "expression": "foo ||", + "error": "syntax" + }, + { + "expression": "foo.|| bar", + "error": "syntax" + }, + { + "expression": " || foo", + "error": "syntax" + }, + { + "expression": "foo || || foo", + "error": "syntax" + }, + { + "expression": "foo.[a || b]", + "result": null + }, + { + "expression": "foo.[a ||]", + "error": "syntax" + }, + { + "expression": "\"foo", + "error": "syntax" + } + ] + }, + { + "comment": "Filter expressions", + "given": {"type": "object"}, + "cases": [ + { + "expression": "foo[?bar==`\"baz\"`]", + "result": null + }, + { + "expression": "foo[? bar == `\"baz\"` ]", + "result": null + }, + { + "expression": "foo[ ?bar==`\"baz\"`]", + "error": "syntax" + }, + { + "expression": "foo[?bar==]", + "error": "syntax" + }, + { + "expression": "foo[?==]", + "error": "syntax" + }, + { + "expression": "foo[?==bar]", + "error": "syntax" + }, + { + "expression": "foo[?bar==baz?]", + "error": "syntax" + }, + { + "expression": "foo[?a.b.c==d.e.f]", + "result": null + }, + { + "expression": "foo[?bar==`[0, 1, 2]`]", + "result": null + }, + { + "expression": "foo[?bar==`[\"a\", \"b\", \"c\"]`]", + "result": null + }, + { + "comment": "Literal char not escaped", + "expression": "foo[?bar==`[\"foo`bar\"]`]", + "error": "syntax" + }, + { + "comment": "Literal char escaped", + "expression": "foo[?bar==`[\"foo\\`bar\"]`]", + "result": null + }, + { + "comment": "Unknown comparator", + "expression": "foo[?bar<>baz]", + "error": "syntax" + }, + { + "comment": "Unknown comparator", + "expression": "foo[?bar^baz]", + "error": "syntax" + }, + { + "expression": "foo[bar==baz]", + "error": "syntax" + }, + { + "comment": "Quoted identifier in filter expression no spaces", + "expression": "[?\"\\\\\">`\"foo\"`]", + "result": null + }, + { + "comment": "Quoted identifier in filter expression with spaces", + "expression": "[?\"\\\\\" > `\"foo\"`]", + "result": null + } + ] + }, + { + "comment": "Filter expression errors", + "given": {"type": "object"}, + "cases": [ + { + "expression": "bar.`\"anything\"`", + "error": "syntax" + }, + { + "expression": "bar.baz.noexists.`\"literal\"`", + "error": "syntax" + }, + { + "comment": "Literal wildcard projection", + "expression": "foo[*].`\"literal\"`", + "error": "syntax" + }, + { + "expression": "foo[*].name.`\"literal\"`", + "error": "syntax" + }, + { + "expression": "foo[].name.`\"literal\"`", + "error": "syntax" + }, + { + "expression": "foo[].name.`\"literal\"`.`\"subliteral\"`", + "error": "syntax" + }, + { + "comment": "Projecting a literal onto an empty list", + "expression": "foo[*].name.noexist.`\"literal\"`", + "error": "syntax" + }, + { + "expression": "foo[].name.noexist.`\"literal\"`", + "error": "syntax" + }, + { + "expression": "twolen[*].`\"foo\"`", + "error": "syntax" + }, + { + "comment": "Two level projection of a literal", + "expression": "twolen[*].threelen[*].`\"bar\"`", + "error": "syntax" + }, + { + "comment": "Two level flattened projection of a literal", + "expression": "twolen[].threelen[].`\"bar\"`", + "error": "syntax" + } + ] + }, + { + "comment": "Identifiers", + "given": {"type": "object"}, + "cases": [ + { + "expression": "foo", + "result": null + }, + { + "expression": "\"foo\"", + "result": null + }, + { + "expression": "\"\\\\\"", + "result": null + } + ] + }, + { + "comment": "Combined syntax", + "given": [], + "cases": [ + { + "expression": "*||*|*|*", + "result": null + }, + { + "expression": "*[]||[*]", + "result": [] + }, + { + "expression": "[*.*]", + "result": [null] + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json new file mode 100644 index 0000000..6b07b0b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json @@ -0,0 +1,38 @@ +[ + { + "given": {"foo": [{"✓": "✓"}, {"✓": "✗"}]}, + "cases": [ + { + "expression": "foo[].\"✓\"", + "result": ["✓", "✗"] + } + ] + }, + { + "given": {"☯": true}, + "cases": [ + { + "expression": "\"☯\"", + "result": true + } + ] + }, + { + "given": {"♪♫•*¨*•.¸¸â¤Â¸Â¸.•*¨*•♫♪": true}, + "cases": [ + { + "expression": "\"♪♫•*¨*•.¸¸â¤Â¸Â¸.•*¨*•♫♪\"", + "result": true + } + ] + }, + { + "given": {"☃": true}, + "cases": [ + { + "expression": "\"☃\"", + "result": true + } + ] + } +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json new file mode 100644 index 0000000..3bcec30 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json @@ -0,0 +1,460 @@ +[{ + "given": { + "foo": { + "bar": { + "baz": "val" + }, + "other": { + "baz": "val" + }, + "other2": { + "baz": "val" + }, + "other3": { + "notbaz": ["a", "b", "c"] + }, + "other4": { + "notbaz": ["a", "b", "c"] + }, + "other5": { + "other": { + "a": 1, + "b": 1, + "c": 1 + } + } + } + }, + "cases": [ + { + "expression": "foo.*.baz", + "result": ["val", "val", "val"] + }, + { + "expression": "foo.bar.*", + "result": ["val"] + }, + { + "expression": "foo.*.notbaz", + "result": [["a", "b", "c"], ["a", "b", "c"]] + }, + { + "expression": "foo.*.notbaz[0]", + "result": ["a", "a"] + }, + { + "expression": "foo.*.notbaz[-1]", + "result": ["c", "c"] + } + ] +}, { + "given": { + "foo": { + "first-1": { + "second-1": "val" + }, + "first-2": { + "second-1": "val" + }, + "first-3": { + "second-1": "val" + } + } + }, + "cases": [ + { + "expression": "foo.*", + "result": [{"second-1": "val"}, {"second-1": "val"}, + {"second-1": "val"}] + }, + { + "expression": "foo.*.*", + "result": [["val"], ["val"], ["val"]] + }, + { + "expression": "foo.*.*.*", + "result": [[], [], []] + }, + { + "expression": "foo.*.*.*.*", + "result": [[], [], []] + } + ] +}, { + "given": { + "foo": { + "bar": "one" + }, + "other": { + "bar": "one" + }, + "nomatch": { + "notbar": "three" + } + }, + "cases": [ + { + "expression": "*.bar", + "result": ["one", "one"] + } + ] +}, { + "given": { + "top1": { + "sub1": {"foo": "one"} + }, + "top2": { + "sub1": {"foo": "one"} + } + }, + "cases": [ + { + "expression": "*", + "result": [{"sub1": {"foo": "one"}}, + {"sub1": {"foo": "one"}}] + }, + { + "expression": "*.sub1", + "result": [{"foo": "one"}, + {"foo": "one"}] + }, + { + "expression": "*.*", + "result": [[{"foo": "one"}], + [{"foo": "one"}]] + }, + { + "expression": "*.*.foo[]", + "result": ["one", "one"] + }, + { + "expression": "*.sub1.foo", + "result": ["one", "one"] + } + ] +}, +{ + "given": + {"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]}, + "cases": [ + { + "expression": "foo[*].bar", + "result": ["one", "two", "three"] + }, + { + "expression": "foo[*].notbar", + "result": ["four"] + } + ] +}, +{ + "given": + [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}], + "cases": [ + { + "expression": "[*]", + "result": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}] + }, + { + "expression": "[*].bar", + "result": ["one", "two", "three"] + }, + { + "expression": "[*].notbar", + "result": ["four"] + } + ] +}, +{ + "given": { + "foo": { + "bar": [ + {"baz": ["one", "two", "three"]}, + {"baz": ["four", "five", "six"]}, + {"baz": ["seven", "eight", "nine"]} + ] + } + }, + "cases": [ + { + "expression": "foo.bar[*].baz", + "result": [["one", "two", "three"], ["four", "five", "six"], ["seven", "eight", "nine"]] + }, + { + "expression": "foo.bar[*].baz[0]", + "result": ["one", "four", "seven"] + }, + { + "expression": "foo.bar[*].baz[1]", + "result": ["two", "five", "eight"] + }, + { + "expression": "foo.bar[*].baz[2]", + "result": ["three", "six", "nine"] + }, + { + "expression": "foo.bar[*].baz[3]", + "result": [] + } + ] +}, +{ + "given": { + "foo": { + "bar": [["one", "two"], ["three", "four"]] + } + }, + "cases": [ + { + "expression": "foo.bar[*]", + "result": [["one", "two"], ["three", "four"]] + }, + { + "expression": "foo.bar[0]", + "result": ["one", "two"] + }, + { + "expression": "foo.bar[0][0]", + "result": "one" + }, + { + "expression": "foo.bar[0][0][0]", + "result": null + }, + { + "expression": "foo.bar[0][0][0][0]", + "result": null + }, + { + "expression": "foo[0][0]", + "result": null + } + ] +}, +{ + "given": { + "foo": [ + {"bar": [{"kind": "basic"}, {"kind": "intermediate"}]}, + {"bar": [{"kind": "advanced"}, {"kind": "expert"}]}, + {"bar": "string"} + ] + + }, + "cases": [ + { + "expression": "foo[*].bar[*].kind", + "result": [["basic", "intermediate"], ["advanced", "expert"]] + }, + { + "expression": "foo[*].bar[0].kind", + "result": ["basic", "advanced"] + } + ] +}, +{ + "given": { + "foo": [ + {"bar": {"kind": "basic"}}, + {"bar": {"kind": "intermediate"}}, + {"bar": {"kind": "advanced"}}, + {"bar": {"kind": "expert"}}, + {"bar": "string"} + ] + }, + "cases": [ + { + "expression": "foo[*].bar.kind", + "result": ["basic", "intermediate", "advanced", "expert"] + } + ] +}, +{ + "given": { + "foo": [{"bar": ["one", "two"]}, {"bar": ["three", "four"]}, {"bar": ["five"]}] + }, + "cases": [ + { + "expression": "foo[*].bar[0]", + "result": ["one", "three", "five"] + }, + { + "expression": "foo[*].bar[1]", + "result": ["two", "four"] + }, + { + "expression": "foo[*].bar[2]", + "result": [] + } + ] +}, +{ + "given": { + "foo": [{"bar": []}, {"bar": []}, {"bar": []}] + }, + "cases": [ + { + "expression": "foo[*].bar[0]", + "result": [] + } + ] +}, +{ + "given": { + "foo": [["one", "two"], ["three", "four"], ["five"]] + }, + "cases": [ + { + "expression": "foo[*][0]", + "result": ["one", "three", "five"] + }, + { + "expression": "foo[*][1]", + "result": ["two", "four"] + } + ] +}, +{ + "given": { + "foo": [ + [ + ["one", "two"], ["three", "four"] + ], [ + ["five", "six"], ["seven", "eight"] + ], [ + ["nine"], ["ten"] + ] + ] + }, + "cases": [ + { + "expression": "foo[*][0]", + "result": [["one", "two"], ["five", "six"], ["nine"]] + }, + { + "expression": "foo[*][1]", + "result": [["three", "four"], ["seven", "eight"], ["ten"]] + }, + { + "expression": "foo[*][0][0]", + "result": ["one", "five", "nine"] + }, + { + "expression": "foo[*][1][0]", + "result": ["three", "seven", "ten"] + }, + { + "expression": "foo[*][0][1]", + "result": ["two", "six"] + }, + { + "expression": "foo[*][1][1]", + "result": ["four", "eight"] + }, + { + "expression": "foo[*][2]", + "result": [] + }, + { + "expression": "foo[*][2][2]", + "result": [] + }, + { + "expression": "bar[*]", + "result": null + }, + { + "expression": "bar[*].baz[*]", + "result": null + } + ] +}, +{ + "given": { + "string": "string", + "hash": {"foo": "bar", "bar": "baz"}, + "number": 23, + "nullvalue": null + }, + "cases": [ + { + "expression": "string[*]", + "result": null + }, + { + "expression": "hash[*]", + "result": null + }, + { + "expression": "number[*]", + "result": null + }, + { + "expression": "nullvalue[*]", + "result": null + }, + { + "expression": "string[*].foo", + "result": null + }, + { + "expression": "hash[*].foo", + "result": null + }, + { + "expression": "number[*].foo", + "result": null + }, + { + "expression": "nullvalue[*].foo", + "result": null + }, + { + "expression": "nullvalue[*].foo[*].bar", + "result": null + } + ] +}, +{ + "given": { + "string": "string", + "hash": {"foo": "val", "bar": "val"}, + "number": 23, + "array": [1, 2, 3], + "nullvalue": null + }, + "cases": [ + { + "expression": "string.*", + "result": null + }, + { + "expression": "hash.*", + "result": ["val", "val"] + }, + { + "expression": "number.*", + "result": null + }, + { + "expression": "array.*", + "result": null + }, + { + "expression": "nullvalue.*", + "result": null + } + ] +}, +{ + "given": { + "a": [0, 1, 2], + "b": [0, 1, 2] + }, + "cases": [ + { + "expression": "*[0]", + "result": [0, 0] + } + ] +} +] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js b/node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js new file mode 100644 index 0000000..15f61c1 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js @@ -0,0 +1,217 @@ +var assert = require('assert'); +var jmespath = require('../jmespath'); +var tokenize = jmespath.tokenize; +var compile = jmespath.compile; +var strictDeepEqual = jmespath.strictDeepEqual; + + +describe('tokenize', function() { + it('should tokenize unquoted identifier', function() { + assert.deepEqual(tokenize('foo'), + [{type: "UnquotedIdentifier", + value: "foo", + start: 0}]); + }); + it('should tokenize unquoted identifier with underscore', function() { + assert.deepEqual(tokenize('_underscore'), + [{type: "UnquotedIdentifier", + value: "_underscore", + start: 0}]); + }); + it('should tokenize unquoted identifier with numbers', function() { + assert.deepEqual(tokenize('foo123'), + [{type: "UnquotedIdentifier", + value: "foo123", + start: 0}]); + }); + it('should tokenize dotted lookups', function() { + assert.deepEqual( + tokenize('foo.bar'), + [{type: "UnquotedIdentifier", value: "foo", start: 0}, + {type: "Dot", value: ".", start: 3}, + {type: "UnquotedIdentifier", value: "bar", start: 4}, + ]); + }); + it('should tokenize numbers', function() { + assert.deepEqual( + tokenize('foo[0]'), + [{type: "UnquotedIdentifier", value: "foo", start: 0}, + {type: "Lbracket", value: "[", start: 3}, + {type: "Number", value: 0, start: 4}, + {type: "Rbracket", value: "]", start: 5}, + ]); + }); + it('should tokenize numbers with multiple digits', function() { + assert.deepEqual( + tokenize("12345"), + [{type: "Number", value: 12345, start: 0}]); + }); + it('should tokenize negative numbers', function() { + assert.deepEqual( + tokenize("-12345"), + [{type: "Number", value: -12345, start: 0}]); + }); + it('should tokenize quoted identifier', function() { + assert.deepEqual(tokenize('"foo"'), + [{type: "QuotedIdentifier", + value: "foo", + start: 0}]); + }); + it('should tokenize quoted identifier with unicode escape', function() { + assert.deepEqual(tokenize('"\\u2713"'), + [{type: "QuotedIdentifier", + value: "✓", + start: 0}]); + }); + it('should tokenize literal lists', function() { + assert.deepEqual(tokenize("`[0, 1]`"), + [{type: "Literal", + value: [0, 1], + start: 0}]); + }); + it('should tokenize literal dict', function() { + assert.deepEqual(tokenize("`{\"foo\": \"bar\"}`"), + [{type: "Literal", + value: {"foo": "bar"}, + start: 0}]); + }); + it('should tokenize literal strings', function() { + assert.deepEqual(tokenize("`\"foo\"`"), + [{type: "Literal", + value: "foo", + start: 0}]); + }); + it('should tokenize json literals', function() { + assert.deepEqual(tokenize("`true`"), + [{type: "Literal", + value: true, + start: 0}]); + }); + it('should not requiring surrounding quotes for strings', function() { + assert.deepEqual(tokenize("`foo`"), + [{type: "Literal", + value: "foo", + start: 0}]); + }); + it('should not requiring surrounding quotes for numbers', function() { + assert.deepEqual(tokenize("`20`"), + [{type: "Literal", + value: 20, + start: 0}]); + }); + it('should tokenize literal lists with chars afterwards', function() { + assert.deepEqual( + tokenize("`[0, 1]`[0]"), [ + {type: "Literal", value: [0, 1], start: 0}, + {type: "Lbracket", value: "[", start: 8}, + {type: "Number", value: 0, start: 9}, + {type: "Rbracket", value: "]", start: 10} + ]); + }); + it('should tokenize two char tokens with shared prefix', function() { + assert.deepEqual( + tokenize("[?foo]"), + [{type: "Filter", value: "[?", start: 0}, + {type: "UnquotedIdentifier", value: "foo", start: 2}, + {type: "Rbracket", value: "]", start: 5}] + ); + }); + it('should tokenize flatten operator', function() { + assert.deepEqual( + tokenize("[]"), + [{type: "Flatten", value: "[]", start: 0}]); + }); + it('should tokenize comparators', function() { + assert.deepEqual(tokenize("<"), + [{type: "LT", + value: "<", + start: 0}]); + }); + it('should tokenize two char tokens without shared prefix', function() { + assert.deepEqual( + tokenize("=="), + [{type: "EQ", value: "==", start: 0}] + ); + }); + it('should tokenize not equals', function() { + assert.deepEqual( + tokenize("!="), + [{type: "NE", value: "!=", start: 0}] + ); + }); + it('should tokenize the OR token', function() { + assert.deepEqual( + tokenize("a||b"), + [ + {type: "UnquotedIdentifier", value: "a", start: 0}, + {type: "Or", value: "||", start: 1}, + {type: "UnquotedIdentifier", value: "b", start: 3} + ] + ); + }); + it('should tokenize function calls', function() { + assert.deepEqual( + tokenize("abs(@)"), + [ + {type: "UnquotedIdentifier", value: "abs", start: 0}, + {type: "Lparen", value: "(", start: 3}, + {type: "Current", value: "@", start: 4}, + {type: "Rparen", value: ")", start: 5} + ] + ); + }); +}); + + +describe('parsing', function() { + it('should parse field node', function() { + assert.deepEqual(compile('foo'), + {type: 'Field', name: 'foo'}); + }); +}); + +describe('strictDeepEqual', function() { + it('should compare scalars', function() { + assert.strictEqual(strictDeepEqual('a', 'a'), true); + }); + it('should be false for different types', function() { + assert.strictEqual(strictDeepEqual('a', 2), false); + }); + it('should be false for arrays of different lengths', function() { + assert.strictEqual(strictDeepEqual([0, 1], [1, 2, 3]), false); + }); + it('should be true for identical arrays', function() { + assert.strictEqual(strictDeepEqual([0, 1], [0, 1]), true); + }); + it('should be true for nested arrays', function() { + assert.strictEqual( + strictDeepEqual([[0, 1], [2, 3]], [[0, 1], [2, 3]]), true); + }); + it('should be true for nested arrays of strings', function() { + assert.strictEqual( + strictDeepEqual([["a", "b"], ["c", "d"]], + [["a", "b"], ["c", "d"]]), true); + }); + it('should be false for different arrays of the same length', function() { + assert.strictEqual(strictDeepEqual([0, 1], [1, 2]), false); + }); + it('should handle object literals', function() { + assert.strictEqual(strictDeepEqual({a: 1, b: 2}, {a: 1, b: 2}), true); + }); + it('should handle keys in first not in second', function() { + assert.strictEqual(strictDeepEqual({a: 1, b: 2}, {a: 1}), false); + }); + it('should handle keys in second not in first', function() { + assert.strictEqual(strictDeepEqual({a: 1}, {a: 1, b: 2}), false); + }); + it('should handle nested objects', function() { + assert.strictEqual( + strictDeepEqual({a: {b: [1, 2]}}, + {a: {b: [1, 2]}}), true); + }); + it('should handle nested objects that are not equal', function() { + assert.strictEqual( + strictDeepEqual({a: {b: [1, 2]}}, + {a: {b: [1, 4]}}), false); + }); +}); diff --git a/node_modules/aws-sdk/node_modules/querystring/.History.md.un~ b/node_modules/aws-sdk/node_modules/querystring/.History.md.un~ new file mode 100644 index 0000000000000000000000000000000000000000..c96a7dd8c8c86e2e4b6af0478b1bc122b929528d GIT binary patch literal 7960 zcmeI1O>0v@6ozk__}SL4mLj+rD1;VG%uP&mDblr2L05iY+Y|yOx0H0*MfHaW;zHes zKR`F`T=@gs`hk0K;X==IGN(>L?aJBB3n!DAdy@?3;XU`)S!)7yiU;&V2&^z8MM z_O~xGQz3{XCeC6fM$1j%OzWXru>3x=E^Ac0e$!mpo5+#Xq5{S_vTkUMz zuW+=IJ^08`5g#ydh*13&{hirr8vkDgRy%8%;>fZe=l$2h@R$S`78YHj-l(_SW!G%v zd987!mUrA@dr#qUMp?pSNJ_l70&gjVNBWOSOu%a%Tp;ai+aKUqn`0q4k1WKLz+3(o zyv!FzkZ`p#0hgesNr*^7R0*PsAtG=bmpCcGHEe#=fQ9Dmz#6q#%RwOxR6L$U>@xmX=tfkh&gPir=9Y8Y%7Y^LoR2jl5aQTOJ*#w5#Al zqW${GB%vb7^QPhnO@ ZFiAa69(m~N+kCx4vvqx5-`@NB>JPML-n9S# literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/querystring/.Readme.md.un~ b/node_modules/aws-sdk/node_modules/querystring/.Readme.md.un~ new file mode 100644 index 0000000000000000000000000000000000000000..71613b59ba1b551647a6ba1b47180a44ac70212b GIT binary patch literal 3225 zcmeHJyGjE=6dhxHHnxHY5fx2g(wK;m2tL4CM2U#VlB~&Ul8rO75g(v-*8YIKrG>3O zV4?PwVrgY5de3Y|*AUQ%YqbYXhTNHb%sprCofWHezFeNSA6e+|G>1{HPna%a9q zp?4>dB~Fx_m_f}bEc`<0w6uAF!lBtZI=41*ERw;dU*sfHzCq6QQM z(+C8rAq#$jR2#4V2qA}7&H7al*JZhx3SRRAv~Tn57%zhgoI^2MwfumpG2qeK*kR#H{5#i5Mo3~;7 L>#09+@^tYI$G;b9 literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/querystring/.package.json.un~ b/node_modules/aws-sdk/node_modules/querystring/.package.json.un~ new file mode 100644 index 0000000000000000000000000000000000000000..d86fe314c5aaeffce89d94a968668c5dc133ba5b GIT binary patch literal 5710 zcmeHLOKTKC5T3-u_&`k*#kb>v5n;0rb>mwIL_}{n=tV>}yR&9w=i$t5j7Sb%Jt!(3 z#j~D7Px=RZ9K@@FM-@en9!0;erhB)O4H6P_n}%advIf~Yu2>IpEI{p6-nwZjxRQ_iVj17;! z7CJ2J*JjwJ>o);g0aDRz+b#V7{%--S(oLa`NW0+oTY(hIAm$NE$+IKoH;x2dTe_-tEeJ1%Z=M1ZOox*jx?OI z;BL#4u&_;g6>?JdLDdHdv+jf{mN*-jUEZjtZacu}T8rR|E0G&EBxgdCoe_|JP<3oZ zXPoEn(AB0BU5^`)>tD`Yi8Hi<9^r$q^VYWWHHj*1MG`eAH4Fdhb|Wvc+)NN4N9X%K3+ zEKs&QiS=YhP9l&-zN|bI3e_tiYvT!kL8pQ(EANE5Xp-L@KxffBJhNzqo*gxPshdMm zK?etI-&BrA!L`_lYweI$<0LH0a(RkNUQlh;oj4y(l>J8FxwY&0ao5jRyeew2 zos-I(uLPbK_$!kb(xC? zt2)(Y$kTvqZ^(7(P+!ME0h4Y(wM`b+Ts#Sv$$c2M2V_`zKp#dnPzh76GZof@h|h5W zrq(2C3>?Ad7${aGii>=7F@&MYL=<>>1t?2eW`Ch`$$B+bb0en~OsT8j8I-=rHMHF} zQ!I6w(N~VkwQ}StEA1tvTv3d)?|!(`M!&jb5IRx0!$fg^vZ61UbrHAJ%kDHfW@cd~ z(O;#|l`L}{QeLLg%tDteqM4b6{W(rzm1mM!mM6vG7$z~Zi~!6m;A}dp-<-?}fHC2X k7WsA2O1YvJ7SZOxmG@1!>PxuN-yAeobAJIY-TeCGFNStew*UYD literal 0 HcmV?d00001 diff --git a/node_modules/aws-sdk/node_modules/querystring/.travis.yml b/node_modules/aws-sdk/node_modules/querystring/.travis.yml new file mode 100644 index 0000000..895dbd3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/.travis.yml @@ -0,0 +1,4 @@ +language: node_js +node_js: + - 0.6 + - 0.8 diff --git a/node_modules/aws-sdk/node_modules/querystring/History.md b/node_modules/aws-sdk/node_modules/querystring/History.md new file mode 100644 index 0000000..4fddbaf --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/History.md @@ -0,0 +1,20 @@ +# 0.2.0 / 2013-02-21 + + - Refactor into function per-module idiomatic style. + - Improved test coverage. + +# 0.1.0 / 2011-12-13 + + - Minor project reorganization + +# 0.0.3 / 2011-04-16 + - Support for AMD module loaders + +# 0.0.2 / 2011-04-16 + + - Ported unit tests + - Removed functionality that depended on Buffers + +# 0.0.1 / 2011-04-15 + + - Initial release diff --git a/node_modules/aws-sdk/node_modules/querystring/License.md b/node_modules/aws-sdk/node_modules/querystring/License.md new file mode 100644 index 0000000..fc80e85 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/License.md @@ -0,0 +1,19 @@ + +Copyright 2012 Irakli Gozalishvili. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/querystring/Readme.md b/node_modules/aws-sdk/node_modules/querystring/Readme.md new file mode 100644 index 0000000..a4fe252 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/Readme.md @@ -0,0 +1,15 @@ +# querystring + +[![Build Status](https://secure.travis-ci.org/Gozala/querystring.png)](http://travis-ci.org/Gozala/querystring) + + +[![Browser support](http://ci.testling.com/Gozala/querystring.png)](http://ci.testling.com/Gozala/querystring) + + + +Node's querystring module for all engines. + +## Install ## + + npm install querystring + diff --git a/node_modules/aws-sdk/node_modules/querystring/decode.js b/node_modules/aws-sdk/node_modules/querystring/decode.js new file mode 100644 index 0000000..a6518b8 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/decode.js @@ -0,0 +1,80 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +// If obj.hasOwnProperty has been overridden, then calling +// obj.hasOwnProperty(prop) will break. +// See: https://github.com/joyent/node/issues/1707 +function hasOwnProperty(obj, prop) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +module.exports = function(qs, sep, eq, options) { + sep = sep || '&'; + eq = eq || '='; + var obj = {}; + + if (typeof qs !== 'string' || qs.length === 0) { + return obj; + } + + var regexp = /\+/g; + qs = qs.split(sep); + + var maxKeys = 1000; + if (options && typeof options.maxKeys === 'number') { + maxKeys = options.maxKeys; + } + + var len = qs.length; + // maxKeys <= 0 means that we should not limit keys count + if (maxKeys > 0 && len > maxKeys) { + len = maxKeys; + } + + for (var i = 0; i < len; ++i) { + var x = qs[i].replace(regexp, '%20'), + idx = x.indexOf(eq), + kstr, vstr, k, v; + + if (idx >= 0) { + kstr = x.substr(0, idx); + vstr = x.substr(idx + 1); + } else { + kstr = x; + vstr = ''; + } + + k = decodeURIComponent(kstr); + v = decodeURIComponent(vstr); + + if (!hasOwnProperty(obj, k)) { + obj[k] = v; + } else if (Array.isArray(obj[k])) { + obj[k].push(v); + } else { + obj[k] = [obj[k], v]; + } + } + + return obj; +}; diff --git a/node_modules/aws-sdk/node_modules/querystring/encode.js b/node_modules/aws-sdk/node_modules/querystring/encode.js new file mode 100644 index 0000000..4f2b561 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/encode.js @@ -0,0 +1,64 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; + +var stringifyPrimitive = function(v) { + switch (typeof v) { + case 'string': + return v; + + case 'boolean': + return v ? 'true' : 'false'; + + case 'number': + return isFinite(v) ? v : ''; + + default: + return ''; + } +}; + +module.exports = function(obj, sep, eq, name) { + sep = sep || '&'; + eq = eq || '='; + if (obj === null) { + obj = undefined; + } + + if (typeof obj === 'object') { + return Object.keys(obj).map(function(k) { + var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; + if (Array.isArray(obj[k])) { + return obj[k].map(function(v) { + return ks + encodeURIComponent(stringifyPrimitive(v)); + }).join(sep); + } else { + return ks + encodeURIComponent(stringifyPrimitive(obj[k])); + } + }).join(sep); + + } + + if (!name) return ''; + return encodeURIComponent(stringifyPrimitive(name)) + eq + + encodeURIComponent(stringifyPrimitive(obj)); +}; diff --git a/node_modules/aws-sdk/node_modules/querystring/index.js b/node_modules/aws-sdk/node_modules/querystring/index.js new file mode 100644 index 0000000..99826ea --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/index.js @@ -0,0 +1,4 @@ +'use strict'; + +exports.decode = exports.parse = require('./decode'); +exports.encode = exports.stringify = require('./encode'); diff --git a/node_modules/aws-sdk/node_modules/querystring/package.json b/node_modules/aws-sdk/node_modules/querystring/package.json new file mode 100644 index 0000000..f747141 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/package.json @@ -0,0 +1,81 @@ +{ + "name": "querystring", + "id": "querystring", + "version": "0.2.0", + "description": "Node's querystring module for all engines.", + "keywords": [ + "commonjs", + "query", + "querystring" + ], + "author": { + "name": "Irakli Gozalishvili", + "email": "rfobic@gmail.com" + }, + "repository": { + "type": "git", + "url": "git://github.com/Gozala/querystring.git", + "web": "https://github.com/Gozala/querystring" + }, + "bugs": { + "url": "http://github.com/Gozala/querystring/issues/" + }, + "devDependencies": { + "test": "~0.x.0", + "phantomify": "~0.x.0", + "retape": "~0.x.0", + "tape": "~0.1.5" + }, + "engines": { + "node": ">=0.4.x" + }, + "scripts": { + "test": "npm run test-node && npm run test-browser && npm run test-tap", + "test-browser": "node ./node_modules/phantomify/bin/cmd.js ./test/common-index.js", + "test-node": "node ./test/common-index.js", + "test-tap": "node ./test/tap-index.js" + }, + "testling": { + "files": "test/tap-index.js", + "browsers": { + "iexplore": [ + 9, + 10 + ], + "chrome": [ + 16, + 20, + 25, + "canary" + ], + "firefox": [ + 10, + 15, + 16, + 17, + 18, + "nightly" + ], + "safari": [ + 5, + 6 + ], + "opera": [ + 12 + ] + } + }, + "licenses": [ + { + "type": "MIT", + "url": "https://github.com/Gozala/enchain/License.md" + } + ], + "readme": "# querystring\n\n[![Build Status](https://secure.travis-ci.org/Gozala/querystring.png)](http://travis-ci.org/Gozala/querystring)\n\n\n[![Browser support](http://ci.testling.com/Gozala/querystring.png)](http://ci.testling.com/Gozala/querystring)\n\n\n\nNode's querystring module for all engines.\n\n## Install ##\n\n npm install querystring\n\n", + "readmeFilename": "Readme.md", + "homepage": "https://github.com/Gozala/querystring#readme", + "_id": "querystring@0.2.0", + "_shasum": "b209849203bb25df820da756e747005878521620", + "_resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "_from": "querystring@0.2.0" +} diff --git a/node_modules/aws-sdk/node_modules/querystring/test/.index.js.un~ b/node_modules/aws-sdk/node_modules/querystring/test/.index.js.un~ new file mode 100644 index 0000000000000000000000000000000000000000..898eceddc9e485e85275e41f9b8b98294bb3fe08 GIT binary patch literal 975 zcmWH`%$*;a=aT=Ffr(>^0h6blXhl42hkT^^Cju)3aORMz^9E7#J=A zF*0BTa+sh3AR2}l0?m@ovVde68R9P>DS$G8!VCjM7vN0bq2T0Y?V| z!&eEQ*`RoY1wSY%7)%?%(FA6L_)q|fPnbG}(P)AN3$18)G%;e2CfTCY!qUv5R1Kw) b)Z!8)O}(PhJdM ; :'); + }); +}; + +exports['test the weird objects, that they get parsed properly'] = function(assert) { + qsWeirdObjects.forEach(function(testCase) { + assert.deepEqual(testCase[2], qs.parse(testCase[1]), + 'parse ' + testCase[1]); + }); +}; + +exports['test non munge test cases'] = function(assert) { + qsNoMungeTestCases.forEach(function(testCase) { + assert.deepEqual(testCase[0], qs.stringify(testCase[1], '&', '=', false), + 'stringify ' + JSON.stringify(testCase[1]) + ' -> & ='); + }); +}; + +exports['test the nested qs-in-qs case'] = function(assert) { + var f = qs.parse('a=b&q=x%3Dy%26y%3Dz'); + f.q = qs.parse(f.q); + assert.deepEqual(f, { a: 'b', q: { x: 'y', y: 'z' } }, + 'parse a=b&q=x%3Dy%26y%3Dz'); +}; + +exports['test nested in colon'] = function(assert) { + var f = qs.parse('a:b;q:x%3Ay%3By%3Az', ';', ':'); + f.q = qs.parse(f.q, ';', ':'); + assert.deepEqual(f, { a: 'b', q: { x: 'y', y: 'z' } }, + 'parse a:b;q:x%3Ay%3By%3Az -> ; :'); +}; + +exports['test stringifying'] = function(assert) { + qsTestCases.forEach(function(testCase) { + assert.equal(testCase[1], qs.stringify(testCase[2]), + 'stringify ' + JSON.stringify(testCase[2])); + }); + + qsColonTestCases.forEach(function(testCase) { + assert.equal(testCase[1], qs.stringify(testCase[2], ';', ':'), + 'stringify ' + JSON.stringify(testCase[2]) + ' -> ; :'); + }); + + qsWeirdObjects.forEach(function(testCase) { + assert.equal(testCase[1], qs.stringify(testCase[0]), + 'stringify ' + JSON.stringify(testCase[0])); + }); +}; + +exports['test stringifying nested'] = function(assert) { + var f = qs.stringify({ + a: 'b', + q: qs.stringify({ + x: 'y', + y: 'z' + }) + }); + assert.equal(f, 'a=b&q=x%3Dy%26y%3Dz', + JSON.stringify({ + a: 'b', + 'qs.stringify -> q': { + x: 'y', + y: 'z' + } + })); + + var threw = false; + try { qs.parse(undefined); } catch(error) { threw = true; } + assert.ok(!threw, "does not throws on undefined"); +}; + +exports['test nested in colon'] = function(assert) { + var f = qs.stringify({ + a: 'b', + q: qs.stringify({ + x: 'y', + y: 'z' + }, ';', ':') + }, ';', ':'); + assert.equal(f, 'a:b;q:x%3Ay%3By%3Az', + 'stringify ' + JSON.stringify({ + a: 'b', + 'qs.stringify -> q': { + x: 'y', + y: 'z' + } + }) + ' -> ; : '); + + + assert.deepEqual({}, qs.parse(), 'parse undefined'); +}; diff --git a/node_modules/aws-sdk/node_modules/querystring/test/tap-index.js b/node_modules/aws-sdk/node_modules/querystring/test/tap-index.js new file mode 100644 index 0000000..70679b3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/querystring/test/tap-index.js @@ -0,0 +1,3 @@ +"use strict"; + +require("retape")(require("./index")) \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/sax/LICENSE b/node_modules/aws-sdk/node_modules/sax/LICENSE new file mode 100644 index 0000000..ccffa08 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/sax/LICENSE @@ -0,0 +1,41 @@ +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +==== + +`String.fromCodePoint` by Mathias Bynens used according to terms of MIT +License, as follows: + + Copyright Mathias Bynens + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html b/node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html new file mode 100644 index 0000000..a611e3f --- /dev/null +++ b/node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html @@ -0,0 +1,188 @@ + +W3C Software Notice and License
+ + + +
+

+ W3C + +

+ +
+ + + +
+
+ +
+ + +
+
+ +
+ + +
+
+
+ +
+
+

W3C Software Notice and License

+
+
+

This work (and included software, documentation such as READMEs, or other +related items) is being provided by the copyright holders under the following +license.

+

License

+ +

+By obtaining, using and/or copying this work, you (the licensee) +agree that you have read, understood, and will comply with the following +terms and conditions.

+ +

Permission to copy, modify, and distribute this software and its +documentation, with or without modification, for any purpose and without +fee or royalty is hereby granted, provided that you include the following on +ALL copies of the software and documentation or portions thereof, including +modifications:

+ +
  • The full text of this NOTICE in a location viewable to users of the + redistributed or derivative work.
  • Any pre-existing intellectual property disclaimers, notices, or terms + and conditions. If none exist, the W3C Software Short + Notice should be included (hypertext is preferred, text is permitted) + within the body of any redistributed or derivative code.
  • Notice of any changes or modifications to the files, including the date + changes were made. (We recommend you provide URIs to the location from + which the code is derived.)
+ +

Disclaimers

+ +

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS +MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR +PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE +ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

+ +

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR +DOCUMENTATION.

+ +

The name and trademarks of copyright holders may NOT be used in +advertising or publicity pertaining to the software without specific, written +prior permission. Title to copyright in this software and any associated +documentation will at all times remain with copyright holders.

+ +

Notes

+ +

This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

+ +

This formulation of W3C's notice and license became active on December 31 +2002. This version removes the copyright ownership notice such that this +license can be used with materials other than those owned by the W3C, +reflects that ERCIM is now a host of the W3C, includes references to this +specific dated version of the license, and removes the ambiguous grant of +"use". Otherwise, this version is the same as the previous +version and is written so as to preserve the Free +Software Foundation's assessment of GPL compatibility and OSI's certification +under the Open Source +Definition.

+
+
+
+
+ + + +
+ +
diff --git a/node_modules/aws-sdk/node_modules/sax/README.md b/node_modules/aws-sdk/node_modules/sax/README.md new file mode 100644 index 0000000..91a0314 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/sax/README.md @@ -0,0 +1,220 @@ +# sax js + +A sax-style parser for XML and HTML. + +Designed with [node](http://nodejs.org/) in mind, but should work fine in +the browser or other CommonJS implementations. + +## What This Is + +* A very simple tool to parse through an XML string. +* A stepping stone to a streaming HTML parser. +* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML + docs. + +## What This Is (probably) Not + +* An HTML Parser - That's a fine goal, but this isn't it. It's just + XML. +* A DOM Builder - You can use it to build an object model out of XML, + but it doesn't do that out of the box. +* XSLT - No DOM = no querying. +* 100% Compliant with (some other SAX implementation) - Most SAX + implementations are in Java and do a lot more than this does. +* An XML Validator - It does a little validation when in strict mode, but + not much. +* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic + masochism. +* A DTD-aware Thing - Fetching DTDs is a much bigger job. + +## Regarding `Hello, world!').close(); + +// stream usage +// takes the same options as the parser +var saxStream = require("sax").createStream(strict, options) +saxStream.on("error", function (e) { + // unhandled errors will throw, since this is a proper node + // event emitter. + console.error("error!", e) + // clear the error + this._parser.error = null + this._parser.resume() +}) +saxStream.on("opentag", function (node) { + // same object as above +}) +// pipe is supported, and it's readable/writable +// same chunks coming in also go out. +fs.createReadStream("file.xml") + .pipe(saxStream) + .pipe(fs.createWriteStream("file-copy.xml")) +``` + + +## Arguments + +Pass the following arguments to the parser function. All are optional. + +`strict` - Boolean. Whether or not to be a jerk. Default: `false`. + +`opt` - Object bag of settings regarding string formatting. All default to `false`. + +Settings supported: + +* `trim` - Boolean. Whether or not to trim text and comment nodes. +* `normalize` - Boolean. If true, then turn any whitespace into a single + space. +* `lowercase` - Boolean. If true, then lowercase tag names and attribute names + in loose mode, rather than uppercasing them. +* `xmlns` - Boolean. If true, then namespaces are supported. +* `position` - Boolean. If false, then don't track line/col/position. +* `strictEntities` - Boolean. If true, only parse [predefined XML + entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent) + (`&`, `'`, `>`, `<`, and `"`) + +## Methods + +`write` - Write bytes onto the stream. You don't have to do this all at +once. You can keep writing as much as you want. + +`close` - Close the stream. Once closed, no more data may be written until +it is done processing the buffer, which is signaled by the `end` event. + +`resume` - To gracefully handle errors, assign a listener to the `error` +event. Then, when the error is taken care of, you can call `resume` to +continue parsing. Otherwise, the parser will not continue while in an error +state. + +## Members + +At all times, the parser object will have the following members: + +`line`, `column`, `position` - Indications of the position in the XML +document where the parser currently is looking. + +`startTagPosition` - Indicates the position where the current tag starts. + +`closed` - Boolean indicating whether or not the parser can be written to. +If it's `true`, then wait for the `ready` event to write again. + +`strict` - Boolean indicating whether or not the parser is a jerk. + +`opt` - Any options passed into the constructor. + +`tag` - The current tag being dealt with. + +And a bunch of other stuff that you probably shouldn't touch. + +## Events + +All events emit with a single argument. To listen to an event, assign a +function to `on`. Functions get executed in the this-context of +the parser object. The list of supported events are also in the exported +`EVENTS` array. + +When using the stream interface, assign handlers using the EventEmitter +`on` function in the normal fashion. + +`error` - Indication that something bad happened. The error will be hanging +out on `parser.error`, and must be deleted before parsing can continue. By +listening to this event, you can keep an eye on that kind of stuff. Note: +this happens *much* more in strict mode. Argument: instance of `Error`. + +`text` - Text node. Argument: string of text. + +`doctype` - The ``. Argument: +object with `name` and `body` members. Attributes are not parsed, as +processing instructions have implementation dependent semantics. + +`sgmldeclaration` - Random SGML declarations. Stuff like `` +would trigger this kind of event. This is a weird thing to support, so it +might go away at some point. SAX isn't intended to be used to parse SGML, +after all. + +`opentag` - An opening tag. Argument: object with `name` and `attributes`. +In non-strict mode, tag names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, then it will contain +namespace binding information on the `ns` member, and will have a +`local`, `prefix`, and `uri` member. + +`closetag` - A closing tag. In loose mode, tags are auto-closed if their +parent closes. In strict mode, well-formedness is enforced. Note that +self-closing tags will have `closeTag` emitted immediately after `openTag`. +Argument: tag name. + +`attribute` - An attribute node. Argument: object with `name` and `value`. +In non-strict mode, attribute names are uppercased, unless the `lowercase` +option is set. If the `xmlns` option is set, it will also contains namespace +information. + +`comment` - A comment node. Argument: the string of the comment. + +`opencdata` - The opening tag of a ``) of a `` tags trigger a `"script"` +event, and their contents are not checked for special xml characters. +If you pass `noscript: true`, then this behavior is suppressed. + +## Reporting Problems + +It's best to write a failing test if you find an issue. I will always +accept pull requests with failing tests if they demonstrate intended +behavior, but it is very hard to figure out what issue you're describing +without a test. Writing a test is also the best way for you yourself +to figure out if you really understand the issue you think you have with +sax-js. diff --git a/node_modules/aws-sdk/node_modules/sax/lib/sax.js b/node_modules/aws-sdk/node_modules/sax/lib/sax.js new file mode 100644 index 0000000..ffb2d40 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/sax/lib/sax.js @@ -0,0 +1,1571 @@ +;(function (sax) { // wrapper for non-node envs + sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } + sax.SAXParser = SAXParser + sax.SAXStream = SAXStream + sax.createStream = createStream + + // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. + // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), + // since that's the earliest that a buffer overrun could occur. This way, checks are + // as rare as required, but as often as necessary to ensure never crossing this bound. + // Furthermore, buffers are only tested at most once per write(), so passing a very + // large string into write() might have undesirable effects, but this is manageable by + // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme + // edge case, result in creating at most one complete copy of the string passed in. + // Set to Infinity to have unlimited buffers. + sax.MAX_BUFFER_LENGTH = 64 * 1024 + + var buffers = [ + 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', + 'procInstName', 'procInstBody', 'entity', 'attribName', + 'attribValue', 'cdata', 'script' + ] + + sax.EVENTS = [ + 'text', + 'processinginstruction', + 'sgmldeclaration', + 'doctype', + 'comment', + 'attribute', + 'opentag', + 'closetag', + 'opencdata', + 'cdata', + 'closecdata', + 'error', + 'end', + 'ready', + 'script', + 'opennamespace', + 'closenamespace' + ] + + function SAXParser (strict, opt) { + if (!(this instanceof SAXParser)) { + return new SAXParser(strict, opt) + } + + var parser = this + clearBuffers(parser) + parser.q = parser.c = '' + parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH + parser.opt = opt || {} + parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags + parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' + parser.tags = [] + parser.closed = parser.closedRoot = parser.sawRoot = false + parser.tag = parser.error = null + parser.strict = !!strict + parser.noscript = !!(strict || parser.opt.noscript) + parser.state = S.BEGIN + parser.strictEntities = parser.opt.strictEntities + parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) + parser.attribList = [] + + // namespaces form a prototype chain. + // it always points at the current tag, + // which protos to its parent tag. + if (parser.opt.xmlns) { + parser.ns = Object.create(rootNS) + } + + // mostly just for error reporting + parser.trackPosition = parser.opt.position !== false + if (parser.trackPosition) { + parser.position = parser.line = parser.column = 0 + } + emit(parser, 'onready') + } + + if (!Object.create) { + Object.create = function (o) { + function F () {} + F.prototype = o + var newf = new F() + return newf + } + } + + if (!Object.keys) { + Object.keys = function (o) { + var a = [] + for (var i in o) if (o.hasOwnProperty(i)) a.push(i) + return a + } + } + + function checkBufferLength (parser) { + var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) + var maxActual = 0 + for (var i = 0, l = buffers.length; i < l; i++) { + var len = parser[buffers[i]].length + if (len > maxAllowed) { + // Text/cdata nodes can get big, and since they're buffered, + // we can get here under normal conditions. + // Avoid issues by emitting the text node now, + // so at least it won't get any bigger. + switch (buffers[i]) { + case 'textNode': + closeText(parser) + break + + case 'cdata': + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + break + + case 'script': + emitNode(parser, 'onscript', parser.script) + parser.script = '' + break + + default: + error(parser, 'Max buffer length exceeded: ' + buffers[i]) + } + } + maxActual = Math.max(maxActual, len) + } + // schedule the next check for the earliest possible buffer overrun. + var m = sax.MAX_BUFFER_LENGTH - maxActual + parser.bufferCheckPosition = m + parser.position + } + + function clearBuffers (parser) { + for (var i = 0, l = buffers.length; i < l; i++) { + parser[buffers[i]] = '' + } + } + + function flushBuffers (parser) { + closeText(parser) + if (parser.cdata !== '') { + emitNode(parser, 'oncdata', parser.cdata) + parser.cdata = '' + } + if (parser.script !== '') { + emitNode(parser, 'onscript', parser.script) + parser.script = '' + } + } + + SAXParser.prototype = { + end: function () { end(this) }, + write: write, + resume: function () { this.error = null; return this }, + close: function () { return this.write(null) }, + flush: function () { flushBuffers(this) } + } + + var Stream + try { + Stream = require('stream').Stream + } catch (ex) { + Stream = function () {} + } + + var streamWraps = sax.EVENTS.filter(function (ev) { + return ev !== 'error' && ev !== 'end' + }) + + function createStream (strict, opt) { + return new SAXStream(strict, opt) + } + + function SAXStream (strict, opt) { + if (!(this instanceof SAXStream)) { + return new SAXStream(strict, opt) + } + + Stream.apply(this) + + this._parser = new SAXParser(strict, opt) + this.writable = true + this.readable = true + + var me = this + + this._parser.onend = function () { + me.emit('end') + } + + this._parser.onerror = function (er) { + me.emit('error', er) + + // if didn't throw, then means error was handled. + // go ahead and clear error, so we can write again. + me._parser.error = null + } + + this._decoder = null + + streamWraps.forEach(function (ev) { + Object.defineProperty(me, 'on' + ev, { + get: function () { + return me._parser['on' + ev] + }, + set: function (h) { + if (!h) { + me.removeAllListeners(ev) + me._parser['on' + ev] = h + return h + } + me.on(ev, h) + }, + enumerable: true, + configurable: false + }) + }) + } + + SAXStream.prototype = Object.create(Stream.prototype, { + constructor: { + value: SAXStream + } + }) + + SAXStream.prototype.write = function (data) { + if (typeof Buffer === 'function' && + typeof Buffer.isBuffer === 'function' && + Buffer.isBuffer(data)) { + if (!this._decoder) { + var SD = require('string_decoder').StringDecoder + this._decoder = new SD('utf8') + } + data = this._decoder.write(data) + } + + this._parser.write(data.toString()) + this.emit('data', data) + return true + } + + SAXStream.prototype.end = function (chunk) { + if (chunk && chunk.length) { + this.write(chunk) + } + this._parser.end() + return true + } + + SAXStream.prototype.on = function (ev, handler) { + var me = this + if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { + me._parser['on' + ev] = function () { + var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) + args.splice(0, 0, ev) + me.emit.apply(me, args) + } + } + + return Stream.prototype.on.call(me, ev, handler) + } + + // character classes and tokens + var whitespace = '\r\n\t ' + + // this really needs to be replaced with character classes. + // XML allows all manner of ridiculous numbers and digits. + var number = '0124356789' + var letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + + // (Letter | "_" | ":") + var quote = '\'"' + var attribEnd = whitespace + '>' + var CDATA = '[CDATA[' + var DOCTYPE = 'DOCTYPE' + var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' + var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' + var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } + + // turn all the string character sets into character class objects. + whitespace = charClass(whitespace) + number = charClass(number) + letter = charClass(letter) + + // http://www.w3.org/TR/REC-xml/#NT-NameStartChar + // This implementation works on strings, a single character at a time + // as such, it cannot ever support astral-plane characters (10000-EFFFF) + // without a significant breaking change to either this parser, or the + // JavaScript language. Implementation of an emoji-capable xml parser + // is left as an exercise for the reader. + var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + + var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/ + + var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ + var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/ + + quote = charClass(quote) + attribEnd = charClass(attribEnd) + + function charClass (str) { + return str.split('').reduce(function (s, c) { + s[c] = true + return s + }, {}) + } + + function isRegExp (c) { + return Object.prototype.toString.call(c) === '[object RegExp]' + } + + function is (charclass, c) { + return isRegExp(charclass) ? !!c.match(charclass) : charclass[c] + } + + function not (charclass, c) { + return !is(charclass, c) + } + + var S = 0 + sax.STATE = { + BEGIN: S++, // leading byte order mark or whitespace + BEGIN_WHITESPACE: S++, // leading whitespace + TEXT: S++, // general stuff + TEXT_ENTITY: S++, // & and such. + OPEN_WAKA: S++, // < + SGML_DECL: S++, // + SCRIPT: S++, // +``` + +In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): + +```js +var punycode = require('punycode'); +``` + +In [Rhino](http://www.mozilla.org/rhino/): + +```js +load('punycode.js'); +``` + +Using an AMD loader like [RequireJS](http://requirejs.org/): + +```js +require( + { + 'paths': { + 'punycode': 'path/to/punycode' + } + }, + ['punycode'], + function(punycode) { + console.log(punycode); + } +); +``` + +## API + +### `punycode.decode(string)` + +Converts a Punycode string of ASCII symbols to a string of Unicode symbols. + +```js +// decode domain name parts +punycode.decode('maana-pta'); // 'mañana' +punycode.decode('--dqo34k'); // '☃-⌘' +``` + +### `punycode.encode(string)` + +Converts a string of Unicode symbols to a Punycode string of ASCII symbols. + +```js +// encode domain name parts +punycode.encode('mañana'); // 'maana-pta' +punycode.encode('☃-⌘'); // '--dqo34k' +``` + +### `punycode.toUnicode(input)` + +Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. + +```js +// decode domain names +punycode.toUnicode('xn--maana-pta.com'); +// → 'mañana.com' +punycode.toUnicode('xn----dqo34k.com'); +// → '☃-⌘.com' + +// decode email addresses +punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); +// → 'джумла@джpумлатеÑÑ‚.bрфa' +``` + +### `punycode.toASCII(input)` + +Converts a Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. + +```js +// encode domain names +punycode.toASCII('mañana.com'); +// → 'xn--maana-pta.com' +punycode.toASCII('☃-⌘.com'); +// → 'xn----dqo34k.com' + +// encode email addresses +punycode.toASCII('джумла@джpумлатеÑÑ‚.bрфa'); +// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' +``` + +### `punycode.ucs2` + +#### `punycode.ucs2.decode(string)` + +Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. + +```js +punycode.ucs2.decode('abc'); +// → [0x61, 0x62, 0x63] +// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: +punycode.ucs2.decode('\uD834\uDF06'); +// → [0x1D306] +``` + +#### `punycode.ucs2.encode(codePoints)` + +Creates a string based on an array of numeric code point values. + +```js +punycode.ucs2.encode([0x61, 0x62, 0x63]); +// → 'abc' +punycode.ucs2.encode([0x1D306]); +// → '\uD834\uDF06' +``` + +### `punycode.version` + +A string representing the current Punycode.js version number. + +## Unit tests & code coverage + +After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. + +Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. + +To generate the code coverage report, use `grunt cover`. + +Feel free to fork if you see possible improvements! + +## Author + +| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | +|---| +| [Mathias Bynens](https://mathiasbynens.be/) | + +## Contributors + +| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | +|---| +| [John-David Dalton](http://allyoucanleet.com/) | + +## License + +Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json b/node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json new file mode 100644 index 0000000..e1864b5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json @@ -0,0 +1,61 @@ +{ + "name": "punycode", + "version": "1.3.2", + "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", + "homepage": "https://mths.be/punycode", + "main": "punycode.js", + "keywords": [ + "punycode", + "unicode", + "idn", + "idna", + "dns", + "url", + "domain" + ], + "license": "MIT", + "author": { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + "contributors": [ + { + "name": "Mathias Bynens", + "url": "https://mathiasbynens.be/" + }, + { + "name": "John-David Dalton", + "url": "http://allyoucanleet.com/" + } + ], + "repository": { + "type": "git", + "url": "git+https://github.com/bestiejs/punycode.js.git" + }, + "bugs": { + "url": "https://github.com/bestiejs/punycode.js/issues" + }, + "files": [ + "LICENSE-MIT.txt", + "punycode.js" + ], + "scripts": { + "test": "node tests/tests.js" + }, + "devDependencies": { + "coveralls": "^2.10.1", + "grunt": "^0.4.5", + "grunt-contrib-uglify": "^0.5.0", + "grunt-shell": "^0.7.0", + "istanbul": "^0.2.13", + "qunit-extras": "^1.2.0", + "qunitjs": "~1.11.0", + "requirejs": "^2.1.14" + }, + "readme": "# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/coveralls/bestiejs/punycode.js/master.svg)](https://coveralls.io/r/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js)\n\nA robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms.\n\nThis JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:\n\n* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C)\n* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)\n* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)\n* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)\n* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))\n\nThis project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc).\n\n## Installation\n\nVia [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2):\n\n```bash\nnpm install punycode\n```\n\nVia [Bower](http://bower.io/):\n\n```bash\nbower install punycode\n```\n\nVia [Component](https://github.com/component/component):\n\n```bash\ncomponent install bestiejs/punycode.js\n```\n\nIn a browser:\n\n```html\n\n```\n\nIn [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):\n\n```js\nvar punycode = require('punycode');\n```\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload('punycode.js');\n```\n\nUsing an AMD loader like [RequireJS](http://requirejs.org/):\n\n```js\nrequire(\n {\n 'paths': {\n 'punycode': 'path/to/punycode'\n }\n },\n ['punycode'],\n function(punycode) {\n console.log(punycode);\n }\n);\n```\n\n## API\n\n### `punycode.decode(string)`\n\nConverts a Punycode string of ASCII symbols to a string of Unicode symbols.\n\n```js\n// decode domain name parts\npunycode.decode('maana-pta'); // 'mañana'\npunycode.decode('--dqo34k'); // '☃-⌘'\n```\n\n### `punycode.encode(string)`\n\nConverts a string of Unicode symbols to a Punycode string of ASCII symbols.\n\n```js\n// encode domain name parts\npunycode.encode('mañana'); // 'maana-pta'\npunycode.encode('☃-⌘'); // '--dqo34k'\n```\n\n### `punycode.toUnicode(input)`\n\nConverts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.\n\n```js\n// decode domain names\npunycode.toUnicode('xn--maana-pta.com');\n// → 'mañana.com'\npunycode.toUnicode('xn----dqo34k.com');\n// → '☃-⌘.com'\n\n// decode email addresses\npunycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq');\n// → 'джумла@джpумлатеÑÑ‚.bрфa'\n```\n\n### `punycode.toASCII(input)`\n\nConverts a Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII.\n\n```js\n// encode domain names\npunycode.toASCII('mañana.com');\n// → 'xn--maana-pta.com'\npunycode.toASCII('☃-⌘.com');\n// → 'xn----dqo34k.com'\n\n// encode email addresses\npunycode.toASCII('джумла@джpумлатеÑÑ‚.bрфa');\n// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'\n```\n\n### `punycode.ucs2`\n\n#### `punycode.ucs2.decode(string)`\n\nCreates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.\n\n```js\npunycode.ucs2.decode('abc');\n// → [0x61, 0x62, 0x63]\n// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:\npunycode.ucs2.decode('\\uD834\\uDF06');\n// → [0x1D306]\n```\n\n#### `punycode.ucs2.encode(codePoints)`\n\nCreates a string based on an array of numeric code point values.\n\n```js\npunycode.ucs2.encode([0x61, 0x62, 0x63]);\n// → 'abc'\npunycode.ucs2.encode([0x1D306]);\n// → '\\uD834\\uDF06'\n```\n\n### `punycode.version`\n\nA string representing the current Punycode.js version number.\n\n## Unit tests & code coverage\n\nAfter cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.\n\nOnce that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`.\n\nTo generate the code coverage report, use `grunt cover`.\n\nFeel free to fork if you see possible improvements!\n\n## Author\n\n| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias \"Follow @mathias on Twitter\") |\n|---|\n| [Mathias Bynens](https://mathiasbynens.be/) |\n\n## Contributors\n\n| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton \"Follow @jdalton on Twitter\") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## License\n\nPunycode.js is available under the [MIT](https://mths.be/mit) license.\n", + "readmeFilename": "README.md", + "_id": "punycode@1.3.2", + "_shasum": "9653a036fb7c1ee42342f2325cceefea3926c48d", + "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "_from": "punycode@1.3.2" +} diff --git a/node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js b/node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js new file mode 100644 index 0000000..ac68597 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js @@ -0,0 +1,530 @@ +/*! https://mths.be/punycode v1.3.2 by @mathias */ +;(function(root) { + + /** Detect free variables */ + var freeExports = typeof exports == 'object' && exports && + !exports.nodeType && exports; + var freeModule = typeof module == 'object' && module && + !module.nodeType && module; + var freeGlobal = typeof global == 'object' && global; + if ( + freeGlobal.global === freeGlobal || + freeGlobal.window === freeGlobal || + freeGlobal.self === freeGlobal + ) { + root = freeGlobal; + } + + /** + * The `punycode` object. + * @name punycode + * @type Object + */ + var punycode, + + /** Highest positive signed 32-bit float value */ + maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 + + /** Bootstring parameters */ + base = 36, + tMin = 1, + tMax = 26, + skew = 38, + damp = 700, + initialBias = 72, + initialN = 128, // 0x80 + delimiter = '-', // '\x2D' + + /** Regular expressions */ + regexPunycode = /^xn--/, + regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars + regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators + + /** Error messages */ + errors = { + 'overflow': 'Overflow: input needs wider integers to process', + 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', + 'invalid-input': 'Invalid input' + }, + + /** Convenience shortcuts */ + baseMinusTMin = base - tMin, + floor = Math.floor, + stringFromCharCode = String.fromCharCode, + + /** Temporary variable */ + key; + + /*--------------------------------------------------------------------------*/ + + /** + * A generic error utility function. + * @private + * @param {String} type The error type. + * @returns {Error} Throws a `RangeError` with the applicable error message. + */ + function error(type) { + throw RangeError(errors[type]); + } + + /** + * A generic `Array#map` utility function. + * @private + * @param {Array} array The array to iterate over. + * @param {Function} callback The function that gets called for every array + * item. + * @returns {Array} A new array of values returned by the callback function. + */ + function map(array, fn) { + var length = array.length; + var result = []; + while (length--) { + result[length] = fn(array[length]); + } + return result; + } + + /** + * A simple `Array#map`-like wrapper to work with domain name strings or email + * addresses. + * @private + * @param {String} domain The domain name or email address. + * @param {Function} callback The function that gets called for every + * character. + * @returns {Array} A new string of characters returned by the callback + * function. + */ + function mapDomain(string, fn) { + var parts = string.split('@'); + var result = ''; + if (parts.length > 1) { + // In email addresses, only the domain name should be punycoded. Leave + // the local part (i.e. everything up to `@`) intact. + result = parts[0] + '@'; + string = parts[1]; + } + // Avoid `split(regex)` for IE8 compatibility. See #17. + string = string.replace(regexSeparators, '\x2E'); + var labels = string.split('.'); + var encoded = map(labels, fn).join('.'); + return result + encoded; + } + + /** + * Creates an array containing the numeric code points of each Unicode + * character in the string. While JavaScript uses UCS-2 internally, + * this function will convert a pair of surrogate halves (each of which + * UCS-2 exposes as separate characters) into a single code point, + * matching UTF-16. + * @see `punycode.ucs2.encode` + * @see + * @memberOf punycode.ucs2 + * @name decode + * @param {String} string The Unicode input string (UCS-2). + * @returns {Array} The new array of code points. + */ + function ucs2decode(string) { + var output = [], + counter = 0, + length = string.length, + value, + extra; + while (counter < length) { + value = string.charCodeAt(counter++); + if (value >= 0xD800 && value <= 0xDBFF && counter < length) { + // high surrogate, and there is a next character + extra = string.charCodeAt(counter++); + if ((extra & 0xFC00) == 0xDC00) { // low surrogate + output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); + } else { + // unmatched surrogate; only append this code unit, in case the next + // code unit is the high surrogate of a surrogate pair + output.push(value); + counter--; + } + } else { + output.push(value); + } + } + return output; + } + + /** + * Creates a string based on an array of numeric code points. + * @see `punycode.ucs2.decode` + * @memberOf punycode.ucs2 + * @name encode + * @param {Array} codePoints The array of numeric code points. + * @returns {String} The new Unicode string (UCS-2). + */ + function ucs2encode(array) { + return map(array, function(value) { + var output = ''; + if (value > 0xFFFF) { + value -= 0x10000; + output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); + value = 0xDC00 | value & 0x3FF; + } + output += stringFromCharCode(value); + return output; + }).join(''); + } + + /** + * Converts a basic code point into a digit/integer. + * @see `digitToBasic()` + * @private + * @param {Number} codePoint The basic numeric code point value. + * @returns {Number} The numeric value of a basic code point (for use in + * representing integers) in the range `0` to `base - 1`, or `base` if + * the code point does not represent a value. + */ + function basicToDigit(codePoint) { + if (codePoint - 48 < 10) { + return codePoint - 22; + } + if (codePoint - 65 < 26) { + return codePoint - 65; + } + if (codePoint - 97 < 26) { + return codePoint - 97; + } + return base; + } + + /** + * Converts a digit/integer into a basic code point. + * @see `basicToDigit()` + * @private + * @param {Number} digit The numeric value of a basic code point. + * @returns {Number} The basic code point whose value (when used for + * representing integers) is `digit`, which needs to be in the range + * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is + * used; else, the lowercase form is used. The behavior is undefined + * if `flag` is non-zero and `digit` has no uppercase form. + */ + function digitToBasic(digit, flag) { + // 0..25 map to ASCII a..z or A..Z + // 26..35 map to ASCII 0..9 + return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); + } + + /** + * Bias adaptation function as per section 3.4 of RFC 3492. + * http://tools.ietf.org/html/rfc3492#section-3.4 + * @private + */ + function adapt(delta, numPoints, firstTime) { + var k = 0; + delta = firstTime ? floor(delta / damp) : delta >> 1; + delta += floor(delta / numPoints); + for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { + delta = floor(delta / baseMinusTMin); + } + return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); + } + + /** + * Converts a Punycode string of ASCII-only symbols to a string of Unicode + * symbols. + * @memberOf punycode + * @param {String} input The Punycode string of ASCII-only symbols. + * @returns {String} The resulting string of Unicode symbols. + */ + function decode(input) { + // Don't use UCS-2 + var output = [], + inputLength = input.length, + out, + i = 0, + n = initialN, + bias = initialBias, + basic, + j, + index, + oldi, + w, + k, + digit, + t, + /** Cached calculation results */ + baseMinusT; + + // Handle the basic code points: let `basic` be the number of input code + // points before the last delimiter, or `0` if there is none, then copy + // the first basic code points to the output. + + basic = input.lastIndexOf(delimiter); + if (basic < 0) { + basic = 0; + } + + for (j = 0; j < basic; ++j) { + // if it's not a basic code point + if (input.charCodeAt(j) >= 0x80) { + error('not-basic'); + } + output.push(input.charCodeAt(j)); + } + + // Main decoding loop: start just after the last delimiter if any basic code + // points were copied; start at the beginning otherwise. + + for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { + + // `index` is the index of the next character to be consumed. + // Decode a generalized variable-length integer into `delta`, + // which gets added to `i`. The overflow checking is easier + // if we increase `i` as we go, then subtract off its starting + // value at the end to obtain `delta`. + for (oldi = i, w = 1, k = base; /* no condition */; k += base) { + + if (index >= inputLength) { + error('invalid-input'); + } + + digit = basicToDigit(input.charCodeAt(index++)); + + if (digit >= base || digit > floor((maxInt - i) / w)) { + error('overflow'); + } + + i += digit * w; + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + + if (digit < t) { + break; + } + + baseMinusT = base - t; + if (w > floor(maxInt / baseMinusT)) { + error('overflow'); + } + + w *= baseMinusT; + + } + + out = output.length + 1; + bias = adapt(i - oldi, out, oldi == 0); + + // `i` was supposed to wrap around from `out` to `0`, + // incrementing `n` each time, so we'll fix that now: + if (floor(i / out) > maxInt - n) { + error('overflow'); + } + + n += floor(i / out); + i %= out; + + // Insert `n` at position `i` of the output + output.splice(i++, 0, n); + + } + + return ucs2encode(output); + } + + /** + * Converts a string of Unicode symbols (e.g. a domain name label) to a + * Punycode string of ASCII-only symbols. + * @memberOf punycode + * @param {String} input The string of Unicode symbols. + * @returns {String} The resulting Punycode string of ASCII-only symbols. + */ + function encode(input) { + var n, + delta, + handledCPCount, + basicLength, + bias, + j, + m, + q, + k, + t, + currentValue, + output = [], + /** `inputLength` will hold the number of code points in `input`. */ + inputLength, + /** Cached calculation results */ + handledCPCountPlusOne, + baseMinusT, + qMinusT; + + // Convert the input in UCS-2 to Unicode + input = ucs2decode(input); + + // Cache the length + inputLength = input.length; + + // Initialize the state + n = initialN; + delta = 0; + bias = initialBias; + + // Handle the basic code points + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue < 0x80) { + output.push(stringFromCharCode(currentValue)); + } + } + + handledCPCount = basicLength = output.length; + + // `handledCPCount` is the number of code points that have been handled; + // `basicLength` is the number of basic code points. + + // Finish the basic string - if it is not empty - with a delimiter + if (basicLength) { + output.push(delimiter); + } + + // Main encoding loop: + while (handledCPCount < inputLength) { + + // All non-basic code points < n have been handled already. Find the next + // larger one: + for (m = maxInt, j = 0; j < inputLength; ++j) { + currentValue = input[j]; + if (currentValue >= n && currentValue < m) { + m = currentValue; + } + } + + // Increase `delta` enough to advance the decoder's state to , + // but guard against overflow + handledCPCountPlusOne = handledCPCount + 1; + if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { + error('overflow'); + } + + delta += (m - n) * handledCPCountPlusOne; + n = m; + + for (j = 0; j < inputLength; ++j) { + currentValue = input[j]; + + if (currentValue < n && ++delta > maxInt) { + error('overflow'); + } + + if (currentValue == n) { + // Represent delta as a generalized variable-length integer + for (q = delta, k = base; /* no condition */; k += base) { + t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); + if (q < t) { + break; + } + qMinusT = q - t; + baseMinusT = base - t; + output.push( + stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) + ); + q = floor(qMinusT / baseMinusT); + } + + output.push(stringFromCharCode(digitToBasic(q, 0))); + bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); + delta = 0; + ++handledCPCount; + } + } + + ++delta; + ++n; + + } + return output.join(''); + } + + /** + * Converts a Punycode string representing a domain name or an email address + * to Unicode. Only the Punycoded parts of the input will be converted, i.e. + * it doesn't matter if you call it on a string that has already been + * converted to Unicode. + * @memberOf punycode + * @param {String} input The Punycoded domain name or email address to + * convert to Unicode. + * @returns {String} The Unicode representation of the given Punycode + * string. + */ + function toUnicode(input) { + return mapDomain(input, function(string) { + return regexPunycode.test(string) + ? decode(string.slice(4).toLowerCase()) + : string; + }); + } + + /** + * Converts a Unicode string representing a domain name or an email address to + * Punycode. Only the non-ASCII parts of the domain name will be converted, + * i.e. it doesn't matter if you call it with a domain that's already in + * ASCII. + * @memberOf punycode + * @param {String} input The domain name or email address to convert, as a + * Unicode string. + * @returns {String} The Punycode representation of the given domain name or + * email address. + */ + function toASCII(input) { + return mapDomain(input, function(string) { + return regexNonASCII.test(string) + ? 'xn--' + encode(string) + : string; + }); + } + + /*--------------------------------------------------------------------------*/ + + /** Define the public API */ + punycode = { + /** + * A string representing the current Punycode.js version number. + * @memberOf punycode + * @type String + */ + 'version': '1.3.2', + /** + * An object of methods to convert from JavaScript's internal character + * representation (UCS-2) to Unicode code points, and back. + * @see + * @memberOf punycode + * @type Object + */ + 'ucs2': { + 'decode': ucs2decode, + 'encode': ucs2encode + }, + 'decode': decode, + 'encode': encode, + 'toASCII': toASCII, + 'toUnicode': toUnicode + }; + + /** Expose `punycode` */ + // Some AMD build optimizers, like r.js, check for specific condition patterns + // like the following: + if ( + typeof define == 'function' && + typeof define.amd == 'object' && + define.amd + ) { + define('punycode', function() { + return punycode; + }); + } else if (freeExports && freeModule) { + if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ + freeModule.exports = punycode; + } else { // in Narwhal or RingoJS v0.7.0- + for (key in punycode) { + punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); + } + } + } else { // in Rhino or a web browser + root.punycode = punycode; + } + +}(this)); diff --git a/node_modules/aws-sdk/node_modules/url/package.json b/node_modules/aws-sdk/node_modules/url/package.json new file mode 100644 index 0000000..7bace76 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/url/package.json @@ -0,0 +1,34 @@ +{ + "name": "url", + "description": "The core `url` packaged standalone for use with Browserify.", + "version": "0.10.3", + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "main": "./url.js", + "devDependencies": { + "assert": "1.1.1", + "mocha": "1.18.2", + "zuul": "2.0.0" + }, + "scripts": { + "test": "mocha --ui qunit test.js && zuul -- test.js", + "test-local": "zuul --local -- test.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/defunctzombie/node-url.git" + }, + "license": "MIT", + "readme": "# node-url\n\n[![Build Status](https://travis-ci.org/defunctzombie/node-url.svg?branch=master)](https://travis-ci.org/defunctzombie/node-url)\n\nThis module has utilities for URL resolution and parsing meant to have feature parity with node.js core [url](http://nodejs.org/api/url.html) module.\n\n```js\nvar url = require('url');\n```\n\n## api\n\nParsed URL objects have some or all of the following fields, depending on\nwhether or not they exist in the URL string. Any parts that are not in the URL\nstring will not be in the parsed object. Examples are shown for the URL\n\n`'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'`\n\n* `href`: The full URL that was originally parsed. Both the protocol and host are lowercased.\n\n Example: `'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'`\n\n* `protocol`: The request protocol, lowercased.\n\n Example: `'http:'`\n\n* `host`: The full lowercased host portion of the URL, including port\n information.\n\n Example: `'host.com:8080'`\n\n* `auth`: The authentication information portion of a URL.\n\n Example: `'user:pass'`\n\n* `hostname`: Just the lowercased hostname portion of the host.\n\n Example: `'host.com'`\n\n* `port`: The port number portion of the host.\n\n Example: `'8080'`\n\n* `pathname`: The path section of the URL, that comes after the host and\n before the query, including the initial slash if present.\n\n Example: `'/p/a/t/h'`\n\n* `search`: The 'query string' portion of the URL, including the leading\n question mark.\n\n Example: `'?query=string'`\n\n* `path`: Concatenation of `pathname` and `search`.\n\n Example: `'/p/a/t/h?query=string'`\n\n* `query`: Either the 'params' portion of the query string, or a\n querystring-parsed object.\n\n Example: `'query=string'` or `{'query':'string'}`\n\n* `hash`: The 'fragment' portion of the URL including the pound-sign.\n\n Example: `'#hash'`\n\nThe following methods are provided by the URL module:\n\n### url.parse(urlStr, [parseQueryString], [slashesDenoteHost])\n\nTake a URL string, and return an object.\n\nPass `true` as the second argument to also parse\nthe query string using the `querystring` module.\nDefaults to `false`.\n\nPass `true` as the third argument to treat `//foo/bar` as\n`{ host: 'foo', pathname: '/bar' }` rather than\n`{ pathname: '//foo/bar' }`. Defaults to `false`.\n\n### url.format(urlObj)\n\nTake a parsed URL object, and return a formatted URL string.\n\n* `href` will be ignored.\n* `protocol` is treated the same with or without the trailing `:` (colon).\n * The protocols `http`, `https`, `ftp`, `gopher`, `file` will be\n postfixed with `://` (colon-slash-slash).\n * All other protocols `mailto`, `xmpp`, `aim`, `sftp`, `foo`, etc will\n be postfixed with `:` (colon)\n* `auth` will be used if present.\n* `hostname` will only be used if `host` is absent.\n* `port` will only be used if `host` is absent.\n* `host` will be used in place of `hostname` and `port`\n* `pathname` is treated the same with or without the leading `/` (slash)\n* `search` will be used in place of `query`\n* `query` (object; see `querystring`) will only be used if `search` is absent.\n* `search` is treated the same with or without the leading `?` (question mark)\n* `hash` is treated the same with or without the leading `#` (pound sign, anchor)\n\n### url.resolve(from, to)\n\nTake a base URL, and a href URL, and resolve them as a browser would for\nan anchor tag. Examples:\n\n url.resolve('/one/two/three', 'four') // '/one/two/four'\n url.resolve('http://example.com/', '/one') // 'http://example.com/one'\n url.resolve('http://example.com/one', '/two') // 'http://example.com/two'\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/defunctzombie/node-url/issues" + }, + "homepage": "https://github.com/defunctzombie/node-url#readme", + "_id": "url@0.10.3", + "_shasum": "021e4d9c7705f21bbf37d03ceb58767402774c64", + "_resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", + "_from": "url@0.10.3" +} diff --git a/node_modules/aws-sdk/node_modules/url/test.js b/node_modules/aws-sdk/node_modules/url/test.js new file mode 100644 index 0000000..b9663c7 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/url/test.js @@ -0,0 +1,1461 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var assert = require('assert'); +var util = require('util'); + +var url = require('./url'); + +test('god', function() { + +// URLs to parse, and expected data +// { url : parsed } +var parseTests = { + '//some_path' : { + 'href': '//some_path', + 'pathname': '//some_path', + 'path': '//some_path' + }, + + 'HTTP://www.example.com/' : { + 'href': 'http://www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'HTTP://www.example.com' : { + 'href': 'http://www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://www.ExAmPlE.com/' : { + 'href': 'http://www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://user:pw@www.ExAmPlE.com/' : { + 'href': 'http://user:pw@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pw', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://USER:PW@www.ExAmPlE.com/' : { + 'href': 'http://USER:PW@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'USER:PW', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://user@www.example.com/' : { + 'href': 'http://user@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://user%3Apw@www.example.com/' : { + 'href': 'http://user:pw@www.example.com/', + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pw', + 'host': 'www.example.com', + 'hostname': 'www.example.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://x.com/path?that\'s#all, folks' : { + 'href': 'http://x.com/path?that%27s#all,%20folks', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.com', + 'hostname': 'x.com', + 'search': '?that%27s', + 'query': 'that%27s', + 'pathname': '/path', + 'hash': '#all,%20folks', + 'path': '/path?that%27s' + }, + + 'HTTP://X.COM/Y' : { + 'href': 'http://x.com/Y', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.com', + 'hostname': 'x.com', + 'pathname': '/Y', + 'path': '/Y' + }, + + // an unexpected invalid char in the hostname. + 'HtTp://x.y.cOm*a/b/c?d=e#f gi' : { + 'href': 'http://x.y.com/*a/b/c?d=e#f%20g%3Ch%3Ei', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.y.com', + 'hostname': 'x.y.com', + 'pathname': '/*a/b/c', + 'search': '?d=e', + 'query': 'd=e', + 'hash': '#f%20g%3Ch%3Ei', + 'path': '/*a/b/c?d=e' + }, + + // make sure that we don't accidentally lcast the path parts. + 'HtTp://x.y.cOm*A/b/c?d=e#f gi' : { + 'href': 'http://x.y.com/*A/b/c?d=e#f%20g%3Ch%3Ei', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x.y.com', + 'hostname': 'x.y.com', + 'pathname': '/*A/b/c', + 'search': '?d=e', + 'query': 'd=e', + 'hash': '#f%20g%3Ch%3Ei', + 'path': '/*A/b/c?d=e' + }, + + 'http://x...y...#p': { + 'href': 'http://x...y.../#p', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x...y...', + 'hostname': 'x...y...', + 'hash': '#p', + 'pathname': '/', + 'path': '/' + }, + + 'http://x/p/"quoted"': { + 'href': 'http://x/p/%22quoted%22', + 'protocol': 'http:', + 'slashes': true, + 'host': 'x', + 'hostname': 'x', + 'pathname': '/p/%22quoted%22', + 'path': '/p/%22quoted%22' + }, + + ' Is a URL!': { + 'href': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!', + 'pathname': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!', + 'path': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!' + }, + + 'http://www.narwhaljs.org/blog/categories?id=news' : { + 'href': 'http://www.narwhaljs.org/blog/categories?id=news', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.narwhaljs.org', + 'hostname': 'www.narwhaljs.org', + 'search': '?id=news', + 'query': 'id=news', + 'pathname': '/blog/categories', + 'path': '/blog/categories?id=news' + }, + + 'http://mt0.google.com/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=' : { + 'href': 'http://mt0.google.com/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=', + 'protocol': 'http:', + 'slashes': true, + 'host': 'mt0.google.com', + 'hostname': 'mt0.google.com', + 'pathname': '/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=', + 'path': '/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=' + }, + + 'http://mt0.google.com/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' : { + 'href': 'http://mt0.google.com/vt/lyrs=m@114???&hl=en&src=api' + + '&x=2&y=2&z=3&s=', + 'protocol': 'http:', + 'slashes': true, + 'host': 'mt0.google.com', + 'hostname': 'mt0.google.com', + 'search': '???&hl=en&src=api&x=2&y=2&z=3&s=', + 'query': '??&hl=en&src=api&x=2&y=2&z=3&s=', + 'pathname': '/vt/lyrs=m@114', + 'path': '/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' + }, + + 'http://user:pass@mt0.google.com/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=': + { + 'href': 'http://user:pass@mt0.google.com/vt/lyrs=m@114???' + + '&hl=en&src=api&x=2&y=2&z=3&s=', + 'protocol': 'http:', + 'slashes': true, + 'host': 'mt0.google.com', + 'auth': 'user:pass', + 'hostname': 'mt0.google.com', + 'search': '???&hl=en&src=api&x=2&y=2&z=3&s=', + 'query': '??&hl=en&src=api&x=2&y=2&z=3&s=', + 'pathname': '/vt/lyrs=m@114', + 'path': '/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' + }, + + 'file:///etc/passwd' : { + 'href': 'file:///etc/passwd', + 'slashes': true, + 'protocol': 'file:', + 'pathname': '/etc/passwd', + 'hostname': '', + 'host': '', + 'path': '/etc/passwd' + }, + + 'file://localhost/etc/passwd' : { + 'href': 'file://localhost/etc/passwd', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/passwd', + 'hostname': 'localhost', + 'host': 'localhost', + 'path': '/etc/passwd' + }, + + 'file://foo/etc/passwd' : { + 'href': 'file://foo/etc/passwd', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/passwd', + 'hostname': 'foo', + 'host': 'foo', + 'path': '/etc/passwd' + }, + + 'file:///etc/node/' : { + 'href': 'file:///etc/node/', + 'slashes': true, + 'protocol': 'file:', + 'pathname': '/etc/node/', + 'hostname': '', + 'host': '', + 'path': '/etc/node/' + }, + + 'file://localhost/etc/node/' : { + 'href': 'file://localhost/etc/node/', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/node/', + 'hostname': 'localhost', + 'host': 'localhost', + 'path': '/etc/node/' + }, + + 'file://foo/etc/node/' : { + 'href': 'file://foo/etc/node/', + 'protocol': 'file:', + 'slashes': true, + 'pathname': '/etc/node/', + 'hostname': 'foo', + 'host': 'foo', + 'path': '/etc/node/' + }, + + 'http:/baz/../foo/bar' : { + 'href': 'http:/baz/../foo/bar', + 'protocol': 'http:', + 'pathname': '/baz/../foo/bar', + 'path': '/baz/../foo/bar' + }, + + 'http://user:pass@example.com:8000/foo/bar?baz=quux#frag' : { + 'href': 'http://user:pass@example.com:8000/foo/bar?baz=quux#frag', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com:8000', + 'auth': 'user:pass', + 'port': '8000', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + '//user:pass@example.com:8000/foo/bar?baz=quux#frag' : { + 'href': '//user:pass@example.com:8000/foo/bar?baz=quux#frag', + 'slashes': true, + 'host': 'example.com:8000', + 'auth': 'user:pass', + 'port': '8000', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + '/foo/bar?baz=quux#frag' : { + 'href': '/foo/bar?baz=quux#frag', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + 'http:/foo/bar?baz=quux#frag' : { + 'href': 'http:/foo/bar?baz=quux#frag', + 'protocol': 'http:', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': 'baz=quux', + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + + 'mailto:foo@bar.com?subject=hello' : { + 'href': 'mailto:foo@bar.com?subject=hello', + 'protocol': 'mailto:', + 'host': 'bar.com', + 'auth' : 'foo', + 'hostname' : 'bar.com', + 'search': '?subject=hello', + 'query': 'subject=hello', + 'path': '?subject=hello' + }, + + 'javascript:alert(\'hello\');' : { + 'href': 'javascript:alert(\'hello\');', + 'protocol': 'javascript:', + 'pathname': 'alert(\'hello\');', + 'path': 'alert(\'hello\');' + }, + + 'xmpp:isaacschlueter@jabber.org' : { + 'href': 'xmpp:isaacschlueter@jabber.org', + 'protocol': 'xmpp:', + 'host': 'jabber.org', + 'auth': 'isaacschlueter', + 'hostname': 'jabber.org' + }, + + 'http://atpass:foo%40bar@127.0.0.1:8080/path?search=foo#bar' : { + 'href' : 'http://atpass:foo%40bar@127.0.0.1:8080/path?search=foo#bar', + 'protocol' : 'http:', + 'slashes': true, + 'host' : '127.0.0.1:8080', + 'auth' : 'atpass:foo@bar', + 'hostname' : '127.0.0.1', + 'port' : '8080', + 'pathname': '/path', + 'search' : '?search=foo', + 'query' : 'search=foo', + 'hash' : '#bar', + 'path': '/path?search=foo' + }, + + 'svn+ssh://foo/bar': { + 'href': 'svn+ssh://foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'svn+ssh:', + 'pathname': '/bar', + 'path': '/bar', + 'slashes': true + }, + + 'dash-test://foo/bar': { + 'href': 'dash-test://foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar', + 'path': '/bar', + 'slashes': true + }, + + 'dash-test:foo/bar': { + 'href': 'dash-test:foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar', + 'path': '/bar' + }, + + 'dot.test://foo/bar': { + 'href': 'dot.test://foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar', + 'path': '/bar', + 'slashes': true + }, + + 'dot.test:foo/bar': { + 'href': 'dot.test:foo/bar', + 'host': 'foo', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar', + 'path': '/bar' + }, + + // IDNA tests + 'http://www.日本語.com/' : { + 'href': 'http://www.xn--wgv71a119e.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.xn--wgv71a119e.com', + 'hostname': 'www.xn--wgv71a119e.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://example.Bücher.com/' : { + 'href': 'http://example.xn--bcher-kva.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.xn--bcher-kva.com', + 'hostname': 'example.xn--bcher-kva.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://www.Äffchen.com/' : { + 'href': 'http://www.xn--ffchen-9ta.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.xn--ffchen-9ta.com', + 'hostname': 'www.xn--ffchen-9ta.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://www.Äffchen.cOm*A/b/c?d=e#f gi' : { + 'href': 'http://www.xn--ffchen-9ta.com/*A/b/c?d=e#f%20g%3Ch%3Ei', + 'protocol': 'http:', + 'slashes': true, + 'host': 'www.xn--ffchen-9ta.com', + 'hostname': 'www.xn--ffchen-9ta.com', + 'pathname': '/*A/b/c', + 'search': '?d=e', + 'query': 'd=e', + 'hash': '#f%20g%3Ch%3Ei', + 'path': '/*A/b/c?d=e' + }, + + 'http://SÉLIER.COM/' : { + 'href': 'http://xn--slier-bsa.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'xn--slier-bsa.com', + 'hostname': 'xn--slier-bsa.com', + 'pathname': '/', + 'path': '/' + }, + + 'http://ليهمابتكلموشعربي؟.ي؟/' : { + 'href': 'http://xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f', + 'hostname': 'xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f', + 'pathname': '/', + 'path': '/' + }, + + 'http://âž¡.ws/âž¡' : { + 'href': 'http://xn--hgi.ws/âž¡', + 'protocol': 'http:', + 'slashes': true, + 'host': 'xn--hgi.ws', + 'hostname': 'xn--hgi.ws', + 'pathname': '/âž¡', + 'path': '/âž¡' + }, + + 'http://bucket_name.s3.amazonaws.com/image.jpg': { + protocol: 'http:', + slashes: true, + host: 'bucket_name.s3.amazonaws.com', + hostname: 'bucket_name.s3.amazonaws.com', + pathname: '/image.jpg', + href: 'http://bucket_name.s3.amazonaws.com/image.jpg', + 'path': '/image.jpg' + }, + + 'git+http://github.com/joyent/node.git': { + protocol: 'git+http:', + slashes: true, + host: 'github.com', + hostname: 'github.com', + pathname: '/joyent/node.git', + path: '/joyent/node.git', + href: 'git+http://github.com/joyent/node.git' + }, + + //if local1@domain1 is uses as a relative URL it may + //be parse into auth@hostname, but here there is no + //way to make it work in url.parse, I add the test to be explicit + 'local1@domain1': { + 'pathname': 'local1@domain1', + 'path': 'local1@domain1', + 'href': 'local1@domain1' + }, + + //While this may seem counter-intuitive, a browser will parse + // as a path. + 'www.example.com' : { + 'href': 'www.example.com', + 'pathname': 'www.example.com', + 'path': 'www.example.com' + }, + + // ipv6 support + '[fe80::1]': { + 'href': '[fe80::1]', + 'pathname': '[fe80::1]', + 'path': '[fe80::1]' + }, + + 'coap://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]': { + 'protocol': 'coap:', + 'slashes': true, + 'host': '[fedc:ba98:7654:3210:fedc:ba98:7654:3210]', + 'hostname': 'fedc:ba98:7654:3210:fedc:ba98:7654:3210', + 'href': 'coap://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/', + 'pathname': '/', + 'path': '/' + }, + + 'coap://[1080:0:0:0:8:800:200C:417A]:61616/': { + 'protocol': 'coap:', + 'slashes': true, + 'host': '[1080:0:0:0:8:800:200c:417a]:61616', + 'port': '61616', + 'hostname': '1080:0:0:0:8:800:200c:417a', + 'href': 'coap://[1080:0:0:0:8:800:200c:417a]:61616/', + 'pathname': '/', + 'path': '/' + }, + + 'http://user:password@[3ffe:2a00:100:7031::1]:8080': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:password', + 'host': '[3ffe:2a00:100:7031::1]:8080', + 'port': '8080', + 'hostname': '3ffe:2a00:100:7031::1', + 'href': 'http://user:password@[3ffe:2a00:100:7031::1]:8080/', + 'pathname': '/', + 'path': '/' + }, + + 'coap://u:p@[::192.9.5.5]:61616/.well-known/r?n=Temperature': { + 'protocol': 'coap:', + 'slashes': true, + 'auth': 'u:p', + 'host': '[::192.9.5.5]:61616', + 'port': '61616', + 'hostname': '::192.9.5.5', + 'href': 'coap://u:p@[::192.9.5.5]:61616/.well-known/r?n=Temperature', + 'search': '?n=Temperature', + 'query': 'n=Temperature', + 'pathname': '/.well-known/r', + 'path': '/.well-known/r?n=Temperature' + }, + + // empty port + 'http://example.com:': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/', + 'pathname': '/', + 'path': '/' + }, + + 'http://example.com:/a/b.html': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/a/b.html', + 'pathname': '/a/b.html', + 'path': '/a/b.html' + }, + + 'http://example.com:?a=b': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/?a=b', + 'search': '?a=b', + 'query': 'a=b', + 'pathname': '/', + 'path': '/?a=b' + }, + + 'http://example.com:#abc': { + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'href': 'http://example.com/#abc', + 'hash': '#abc', + 'pathname': '/', + 'path': '/' + }, + + 'http://[fe80::1]:/a/b?a=b#abc': { + 'protocol': 'http:', + 'slashes': true, + 'host': '[fe80::1]', + 'hostname': 'fe80::1', + 'href': 'http://[fe80::1]/a/b?a=b#abc', + 'search': '?a=b', + 'query': 'a=b', + 'hash': '#abc', + 'pathname': '/a/b', + 'path': '/a/b?a=b' + }, + + 'http://-lovemonsterz.tumblr.com/rss': { + 'protocol': 'http:', + 'slashes': true, + 'host': '-lovemonsterz.tumblr.com', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://-lovemonsterz.tumblr.com/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://-lovemonsterz.tumblr.com:80/rss': { + 'protocol': 'http:', + 'slashes': true, + 'port': '80', + 'host': '-lovemonsterz.tumblr.com:80', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://-lovemonsterz.tumblr.com:80/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://user:pass@-lovemonsterz.tumblr.com/rss': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'host': '-lovemonsterz.tumblr.com', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://user:pass@-lovemonsterz.tumblr.com/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://user:pass@-lovemonsterz.tumblr.com:80/rss': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'port': '80', + 'host': '-lovemonsterz.tumblr.com:80', + 'hostname': '-lovemonsterz.tumblr.com', + 'href': 'http://user:pass@-lovemonsterz.tumblr.com:80/rss', + 'pathname': '/rss', + 'path': '/rss', + }, + + 'http://_jabber._tcp.google.com/test': { + 'protocol': 'http:', + 'slashes': true, + 'host': '_jabber._tcp.google.com', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://_jabber._tcp.google.com/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://user:pass@_jabber._tcp.google.com/test': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'host': '_jabber._tcp.google.com', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://user:pass@_jabber._tcp.google.com/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://_jabber._tcp.google.com:80/test': { + 'protocol': 'http:', + 'slashes': true, + 'port': '80', + 'host': '_jabber._tcp.google.com:80', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://_jabber._tcp.google.com:80/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://user:pass@_jabber._tcp.google.com:80/test': { + 'protocol': 'http:', + 'slashes': true, + 'auth': 'user:pass', + 'port': '80', + 'host': '_jabber._tcp.google.com:80', + 'hostname': '_jabber._tcp.google.com', + 'href': 'http://user:pass@_jabber._tcp.google.com:80/test', + 'pathname': '/test', + 'path': '/test', + }, + + 'http://a@b@c/': { + protocol: 'http:', + slashes: true, + auth: 'a@b', + host: 'c', + hostname: 'c', + href: 'http://a%40b@c/', + path: '/', + pathname: '/' + }, + + 'http://a@b?@c': { + protocol: 'http:', + slashes: true, + auth: 'a', + host: 'b', + hostname: 'b', + href: 'http://a@b/?@c', + path: '/?@c', + pathname: '/', + search: '?@c', + query: '@c' + }, + + 'http://a\r" \t\n<\'b:b@c\r\nd/e?f':{ + protocol: 'http:', + slashes: true, + auth: 'a\r" \t\n<\'b:b', + host: 'c', + port: null, + hostname: 'c', + hash: null, + search: '?f', + query: 'f', + pathname: '%0D%0Ad/e', + path: '%0D%0Ad/e?f', + href: 'http://a%0D%22%20%09%0A%3C\'b:b@c/%0D%0Ad/e?f' + } + +}; + +for (var u in parseTests) { + var actual = url.parse(u), + spaced = url.parse(' \t ' + u + '\n\t'); + expected = parseTests[u]; + + Object.keys(actual).forEach(function (i) { + if (expected[i] === undefined && actual[i] === null) { + expected[i] = null; + } + }); + + assert.deepEqual(actual, expected); + assert.deepEqual(spaced, expected); + + var expected = parseTests[u].href, + actual = url.format(parseTests[u]); + + assert.equal(actual, expected, + 'format(' + u + ') == ' + u + '\nactual:' + actual); +} + +var parseTestsWithQueryString = { + '/foo/bar?baz=quux#frag' : { + 'href': '/foo/bar?baz=quux#frag', + 'hash': '#frag', + 'search': '?baz=quux', + 'query': { + 'baz': 'quux' + }, + 'pathname': '/foo/bar', + 'path': '/foo/bar?baz=quux' + }, + 'http://example.com' : { + 'href': 'http://example.com/', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'query': {}, + 'search': '', + 'pathname': '/', + 'path': '/' + } +}; +for (var u in parseTestsWithQueryString) { + var actual = url.parse(u, true); + var expected = parseTestsWithQueryString[u]; + for (var i in actual) { + if (actual[i] === null && expected[i] === undefined) { + expected[i] = null; + } + } + + assert.deepEqual(actual, expected); +} + +// some extra formatting tests, just to verify +// that it'll format slightly wonky content to a valid url. +var formatTests = { + 'http://example.com?' : { + 'href': 'http://example.com/?', + 'protocol': 'http:', + 'slashes': true, + 'host': 'example.com', + 'hostname': 'example.com', + 'search': '?', + 'query': {}, + 'pathname': '/' + }, + 'http://example.com?foo=bar#frag' : { + 'href': 'http://example.com/?foo=bar#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=bar', + 'query': 'foo=bar', + 'pathname': '/' + }, + 'http://example.com?foo=@bar#frag' : { + 'href': 'http://example.com/?foo=@bar#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=@bar', + 'query': 'foo=@bar', + 'pathname': '/' + }, + 'http://example.com?foo=/bar/#frag' : { + 'href': 'http://example.com/?foo=/bar/#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=/bar/', + 'query': 'foo=/bar/', + 'pathname': '/' + }, + 'http://example.com?foo=?bar/#frag' : { + 'href': 'http://example.com/?foo=?bar/#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag', + 'search': '?foo=?bar/', + 'query': 'foo=?bar/', + 'pathname': '/' + }, + 'http://example.com#frag=?bar/#frag' : { + 'href': 'http://example.com/#frag=?bar/#frag', + 'protocol': 'http:', + 'host': 'example.com', + 'hostname': 'example.com', + 'hash': '#frag=?bar/#frag', + 'pathname': '/' + }, + 'http://google.com" onload="alert(42)/' : { + 'href': 'http://google.com/%22%20onload=%22alert(42)/', + 'protocol': 'http:', + 'host': 'google.com', + 'pathname': '/%22%20onload=%22alert(42)/' + }, + 'http://a.com/a/b/c?s#h' : { + 'href': 'http://a.com/a/b/c?s#h', + 'protocol': 'http', + 'host': 'a.com', + 'pathname': 'a/b/c', + 'hash': 'h', + 'search': 's' + }, + 'xmpp:isaacschlueter@jabber.org' : { + 'href': 'xmpp:isaacschlueter@jabber.org', + 'protocol': 'xmpp:', + 'host': 'jabber.org', + 'auth': 'isaacschlueter', + 'hostname': 'jabber.org' + }, + 'http://atpass:foo%40bar@127.0.0.1/' : { + 'href': 'http://atpass:foo%40bar@127.0.0.1/', + 'auth': 'atpass:foo@bar', + 'hostname': '127.0.0.1', + 'protocol': 'http:', + 'pathname': '/' + }, + 'http://atslash%2F%40:%2F%40@foo/' : { + 'href': 'http://atslash%2F%40:%2F%40@foo/', + 'auth': 'atslash/@:/@', + 'hostname': 'foo', + 'protocol': 'http:', + 'pathname': '/' + }, + 'svn+ssh://foo/bar': { + 'href': 'svn+ssh://foo/bar', + 'hostname': 'foo', + 'protocol': 'svn+ssh:', + 'pathname': '/bar', + 'slashes': true + }, + 'dash-test://foo/bar': { + 'href': 'dash-test://foo/bar', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar', + 'slashes': true + }, + 'dash-test:foo/bar': { + 'href': 'dash-test:foo/bar', + 'hostname': 'foo', + 'protocol': 'dash-test:', + 'pathname': '/bar' + }, + 'dot.test://foo/bar': { + 'href': 'dot.test://foo/bar', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar', + 'slashes': true + }, + 'dot.test:foo/bar': { + 'href': 'dot.test:foo/bar', + 'hostname': 'foo', + 'protocol': 'dot.test:', + 'pathname': '/bar' + }, + // ipv6 support + 'coap:u:p@[::1]:61616/.well-known/r?n=Temperature': { + 'href': 'coap:u:p@[::1]:61616/.well-known/r?n=Temperature', + 'protocol': 'coap:', + 'auth': 'u:p', + 'hostname': '::1', + 'port': '61616', + 'pathname': '/.well-known/r', + 'search': 'n=Temperature' + }, + 'coap:[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616/s/stopButton': { + 'href': 'coap:[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616/s/stopButton', + 'protocol': 'coap', + 'host': '[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616', + 'pathname': '/s/stopButton' + }, + + // encode context-specific delimiters in path and query, but do not touch + // other non-delimiter chars like `%`. + // + + // `#`,`?` in path + '/path/to/%%23%3F+=&.txt?foo=theA1#bar' : { + href : '/path/to/%%23%3F+=&.txt?foo=theA1#bar', + pathname: '/path/to/%#?+=&.txt', + query: { + foo: 'theA1' + }, + hash: "#bar" + }, + + // `#`,`?` in path + `#` in query + '/path/to/%%23%3F+=&.txt?foo=the%231#bar' : { + href : '/path/to/%%23%3F+=&.txt?foo=the%231#bar', + pathname: '/path/to/%#?+=&.txt', + query: { + foo: 'the#1' + }, + hash: "#bar" + }, + + // `?` and `#` in path and search + 'http://ex.com/foo%3F100%m%23r?abc=the%231?&foo=bar#frag': { + href: 'http://ex.com/foo%3F100%m%23r?abc=the%231?&foo=bar#frag', + protocol: 'http:', + hostname: 'ex.com', + hash: '#frag', + search: '?abc=the#1?&foo=bar', + pathname: '/foo?100%m#r', + }, + + // `?` and `#` in search only + 'http://ex.com/fooA100%mBr?abc=the%231?&foo=bar#frag': { + href: 'http://ex.com/fooA100%mBr?abc=the%231?&foo=bar#frag', + protocol: 'http:', + hostname: 'ex.com', + hash: '#frag', + search: '?abc=the#1?&foo=bar', + pathname: '/fooA100%mBr', + } +}; +for (var u in formatTests) { + var expect = formatTests[u].href; + delete formatTests[u].href; + var actual = url.format(u); + var actualObj = url.format(formatTests[u]); + assert.equal(actual, expect, + 'wonky format(' + u + ') == ' + expect + + '\nactual:' + actual); + assert.equal(actualObj, expect, + 'wonky format(' + JSON.stringify(formatTests[u]) + + ') == ' + expect + + '\nactual: ' + actualObj); +} + +/* + [from, path, expected] +*/ +var relativeTests = [ + ['/foo/bar/baz', 'quux', '/foo/bar/quux'], + ['/foo/bar/baz', 'quux/asdf', '/foo/bar/quux/asdf'], + ['/foo/bar/baz', 'quux/baz', '/foo/bar/quux/baz'], + ['/foo/bar/baz', '../quux/baz', '/foo/quux/baz'], + ['/foo/bar/baz', '/bar', '/bar'], + ['/foo/bar/baz/', 'quux', '/foo/bar/baz/quux'], + ['/foo/bar/baz/', 'quux/baz', '/foo/bar/baz/quux/baz'], + ['/foo/bar/baz', '../../../../../../../../quux/baz', '/quux/baz'], + ['/foo/bar/baz', '../../../../../../../quux/baz', '/quux/baz'], + ['foo/bar', '../../../baz', '../../baz'], + ['foo/bar/', '../../../baz', '../baz'], + ['http://example.com/b//c//d;p?q#blarg', 'https:#hash2', 'https:///#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'https:/p/a/t/h?s#hash2', + 'https://p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'https://u:p@h.com/p/a/t/h?s#hash2', + 'https://u:p@h.com/p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'https:/a/b/c/d', + 'https://a/b/c/d'], + ['http://example.com/b//c//d;p?q#blarg', + 'http:#hash2', + 'http://example.com/b//c//d;p?q#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'http:/p/a/t/h?s#hash2', + 'http://example.com/p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'http://u:p@h.com/p/a/t/h?s#hash2', + 'http://u:p@h.com/p/a/t/h?s#hash2'], + ['http://example.com/b//c//d;p?q#blarg', + 'http:/a/b/c/d', + 'http://example.com/a/b/c/d'], + ['/foo/bar/baz', '/../etc/passwd', '/etc/passwd'] +]; +relativeTests.forEach(function(relativeTest) { + var a = url.resolve(relativeTest[0], relativeTest[1]), + e = relativeTest[2]; + assert.equal(a, e, + 'resolve(' + [relativeTest[0], relativeTest[1]] + ') == ' + e + + '\n actual=' + a); +}); + + +// https://github.com/joyent/node/issues/568 +[ + undefined, + null, + true, + false, + 0.0, + 0, + [], + {} +].forEach(function(val) { + assert.throws(function() { url.parse(val); }, TypeError); +}); + + +// +// Tests below taken from Chiron +// http://code.google.com/p/chironjs/source/browse/trunk/src/test/http/url.js +// +// Copyright (c) 2002-2008 Kris Kowal +// used with permission under MIT License +// +// Changes marked with @isaacs + +var bases = [ + 'http://a/b/c/d;p?q', + 'http://a/b/c/d;p?q=1/2', + 'http://a/b/c/d;p=1/2?q', + 'fred:///s//a/b/c', + 'http:///s//a/b/c' +]; + +//[to, from, result] +var relativeTests2 = [ + // http://lists.w3.org/Archives/Public/uri/2004Feb/0114.html + ['../c', 'foo:a/b', 'foo:c'], + ['foo:.', 'foo:a', 'foo:'], + ['/foo/../../../bar', 'zz:abc', 'zz:/bar'], + ['/foo/../bar', 'zz:abc', 'zz:/bar'], + // @isaacs Disagree. Not how web browsers resolve this. + ['foo/../../../bar', 'zz:abc', 'zz:bar'], + // ['foo/../../../bar', 'zz:abc', 'zz:../../bar'], // @isaacs Added + ['foo/../bar', 'zz:abc', 'zz:bar'], + ['zz:.', 'zz:abc', 'zz:'], + ['/.', bases[0], 'http://a/'], + ['/.foo', bases[0], 'http://a/.foo'], + ['.foo', bases[0], 'http://a/b/c/.foo'], + + // http://gbiv.com/protocols/uri/test/rel_examples1.html + // examples from RFC 2396 + ['g:h', bases[0], 'g:h'], + ['g', bases[0], 'http://a/b/c/g'], + ['./g', bases[0], 'http://a/b/c/g'], + ['g/', bases[0], 'http://a/b/c/g/'], + ['/g', bases[0], 'http://a/g'], + ['//g', bases[0], 'http://g/'], + // changed with RFC 2396bis + //('?y', bases[0], 'http://a/b/c/d;p?y'], + ['?y', bases[0], 'http://a/b/c/d;p?y'], + ['g?y', bases[0], 'http://a/b/c/g?y'], + // changed with RFC 2396bis + //('#s', bases[0], CURRENT_DOC_URI + '#s'], + ['#s', bases[0], 'http://a/b/c/d;p?q#s'], + ['g#s', bases[0], 'http://a/b/c/g#s'], + ['g?y#s', bases[0], 'http://a/b/c/g?y#s'], + [';x', bases[0], 'http://a/b/c/;x'], + ['g;x', bases[0], 'http://a/b/c/g;x'], + ['g;x?y#s', bases[0], 'http://a/b/c/g;x?y#s'], + // changed with RFC 2396bis + //('', bases[0], CURRENT_DOC_URI], + ['', bases[0], 'http://a/b/c/d;p?q'], + ['.', bases[0], 'http://a/b/c/'], + ['./', bases[0], 'http://a/b/c/'], + ['..', bases[0], 'http://a/b/'], + ['../', bases[0], 'http://a/b/'], + ['../g', bases[0], 'http://a/b/g'], + ['../..', bases[0], 'http://a/'], + ['../../', bases[0], 'http://a/'], + ['../../g', bases[0], 'http://a/g'], + ['../../../g', bases[0], ('http://a/../g', 'http://a/g')], + ['../../../../g', bases[0], ('http://a/../../g', 'http://a/g')], + // changed with RFC 2396bis + //('/./g', bases[0], 'http://a/./g'], + ['/./g', bases[0], 'http://a/g'], + // changed with RFC 2396bis + //('/../g', bases[0], 'http://a/../g'], + ['/../g', bases[0], 'http://a/g'], + ['g.', bases[0], 'http://a/b/c/g.'], + ['.g', bases[0], 'http://a/b/c/.g'], + ['g..', bases[0], 'http://a/b/c/g..'], + ['..g', bases[0], 'http://a/b/c/..g'], + ['./../g', bases[0], 'http://a/b/g'], + ['./g/.', bases[0], 'http://a/b/c/g/'], + ['g/./h', bases[0], 'http://a/b/c/g/h'], + ['g/../h', bases[0], 'http://a/b/c/h'], + ['g;x=1/./y', bases[0], 'http://a/b/c/g;x=1/y'], + ['g;x=1/../y', bases[0], 'http://a/b/c/y'], + ['g?y/./x', bases[0], 'http://a/b/c/g?y/./x'], + ['g?y/../x', bases[0], 'http://a/b/c/g?y/../x'], + ['g#s/./x', bases[0], 'http://a/b/c/g#s/./x'], + ['g#s/../x', bases[0], 'http://a/b/c/g#s/../x'], + ['http:g', bases[0], ('http:g', 'http://a/b/c/g')], + ['http:', bases[0], ('http:', bases[0])], + // not sure where this one originated + ['/a/b/c/./../../g', bases[0], 'http://a/a/g'], + + // http://gbiv.com/protocols/uri/test/rel_examples2.html + // slashes in base URI's query args + ['g', bases[1], 'http://a/b/c/g'], + ['./g', bases[1], 'http://a/b/c/g'], + ['g/', bases[1], 'http://a/b/c/g/'], + ['/g', bases[1], 'http://a/g'], + ['//g', bases[1], 'http://g/'], + // changed in RFC 2396bis + //('?y', bases[1], 'http://a/b/c/?y'], + ['?y', bases[1], 'http://a/b/c/d;p?y'], + ['g?y', bases[1], 'http://a/b/c/g?y'], + ['g?y/./x', bases[1], 'http://a/b/c/g?y/./x'], + ['g?y/../x', bases[1], 'http://a/b/c/g?y/../x'], + ['g#s', bases[1], 'http://a/b/c/g#s'], + ['g#s/./x', bases[1], 'http://a/b/c/g#s/./x'], + ['g#s/../x', bases[1], 'http://a/b/c/g#s/../x'], + ['./', bases[1], 'http://a/b/c/'], + ['../', bases[1], 'http://a/b/'], + ['../g', bases[1], 'http://a/b/g'], + ['../../', bases[1], 'http://a/'], + ['../../g', bases[1], 'http://a/g'], + + // http://gbiv.com/protocols/uri/test/rel_examples3.html + // slashes in path params + // all of these changed in RFC 2396bis + ['g', bases[2], 'http://a/b/c/d;p=1/g'], + ['./g', bases[2], 'http://a/b/c/d;p=1/g'], + ['g/', bases[2], 'http://a/b/c/d;p=1/g/'], + ['g?y', bases[2], 'http://a/b/c/d;p=1/g?y'], + [';x', bases[2], 'http://a/b/c/d;p=1/;x'], + ['g;x', bases[2], 'http://a/b/c/d;p=1/g;x'], + ['g;x=1/./y', bases[2], 'http://a/b/c/d;p=1/g;x=1/y'], + ['g;x=1/../y', bases[2], 'http://a/b/c/d;p=1/y'], + ['./', bases[2], 'http://a/b/c/d;p=1/'], + ['../', bases[2], 'http://a/b/c/'], + ['../g', bases[2], 'http://a/b/c/g'], + ['../../', bases[2], 'http://a/b/'], + ['../../g', bases[2], 'http://a/b/g'], + + // http://gbiv.com/protocols/uri/test/rel_examples4.html + // double and triple slash, unknown scheme + ['g:h', bases[3], 'g:h'], + ['g', bases[3], 'fred:///s//a/b/g'], + ['./g', bases[3], 'fred:///s//a/b/g'], + ['g/', bases[3], 'fred:///s//a/b/g/'], + ['/g', bases[3], 'fred:///g'], // may change to fred:///s//a/g + ['//g', bases[3], 'fred://g'], // may change to fred:///s//g + ['//g/x', bases[3], 'fred://g/x'], // may change to fred:///s//g/x + ['///g', bases[3], 'fred:///g'], + ['./', bases[3], 'fred:///s//a/b/'], + ['../', bases[3], 'fred:///s//a/'], + ['../g', bases[3], 'fred:///s//a/g'], + + ['../../', bases[3], 'fred:///s//'], + ['../../g', bases[3], 'fred:///s//g'], + ['../../../g', bases[3], 'fred:///s/g'], + // may change to fred:///s//a/../../../g + ['../../../../g', bases[3], 'fred:///g'], + + // http://gbiv.com/protocols/uri/test/rel_examples5.html + // double and triple slash, well-known scheme + ['g:h', bases[4], 'g:h'], + ['g', bases[4], 'http:///s//a/b/g'], + ['./g', bases[4], 'http:///s//a/b/g'], + ['g/', bases[4], 'http:///s//a/b/g/'], + ['/g', bases[4], 'http:///g'], // may change to http:///s//a/g + ['//g', bases[4], 'http://g/'], // may change to http:///s//g + ['//g/x', bases[4], 'http://g/x'], // may change to http:///s//g/x + ['///g', bases[4], 'http:///g'], + ['./', bases[4], 'http:///s//a/b/'], + ['../', bases[4], 'http:///s//a/'], + ['../g', bases[4], 'http:///s//a/g'], + ['../../', bases[4], 'http:///s//'], + ['../../g', bases[4], 'http:///s//g'], + // may change to http:///s//a/../../g + ['../../../g', bases[4], 'http:///s/g'], + // may change to http:///s//a/../../../g + ['../../../../g', bases[4], 'http:///g'], + + // from Dan Connelly's tests in http://www.w3.org/2000/10/swap/uripath.py + ['bar:abc', 'foo:xyz', 'bar:abc'], + ['../abc', 'http://example/x/y/z', 'http://example/x/abc'], + ['http://example/x/abc', 'http://example2/x/y/z', 'http://example/x/abc'], + ['../r', 'http://ex/x/y/z', 'http://ex/x/r'], + ['q/r', 'http://ex/x/y', 'http://ex/x/q/r'], + ['q/r#s', 'http://ex/x/y', 'http://ex/x/q/r#s'], + ['q/r#s/t', 'http://ex/x/y', 'http://ex/x/q/r#s/t'], + ['ftp://ex/x/q/r', 'http://ex/x/y', 'ftp://ex/x/q/r'], + ['', 'http://ex/x/y', 'http://ex/x/y'], + ['', 'http://ex/x/y/', 'http://ex/x/y/'], + ['', 'http://ex/x/y/pdq', 'http://ex/x/y/pdq'], + ['z/', 'http://ex/x/y/', 'http://ex/x/y/z/'], + ['#Animal', + 'file:/swap/test/animal.rdf', + 'file:/swap/test/animal.rdf#Animal'], + ['../abc', 'file:/e/x/y/z', 'file:/e/x/abc'], + ['/example/x/abc', 'file:/example2/x/y/z', 'file:/example/x/abc'], + ['../r', 'file:/ex/x/y/z', 'file:/ex/x/r'], + ['/r', 'file:/ex/x/y/z', 'file:/r'], + ['q/r', 'file:/ex/x/y', 'file:/ex/x/q/r'], + ['q/r#s', 'file:/ex/x/y', 'file:/ex/x/q/r#s'], + ['q/r#', 'file:/ex/x/y', 'file:/ex/x/q/r#'], + ['q/r#s/t', 'file:/ex/x/y', 'file:/ex/x/q/r#s/t'], + ['ftp://ex/x/q/r', 'file:/ex/x/y', 'ftp://ex/x/q/r'], + ['', 'file:/ex/x/y', 'file:/ex/x/y'], + ['', 'file:/ex/x/y/', 'file:/ex/x/y/'], + ['', 'file:/ex/x/y/pdq', 'file:/ex/x/y/pdq'], + ['z/', 'file:/ex/x/y/', 'file:/ex/x/y/z/'], + ['file://meetings.example.com/cal#m1', + 'file:/devel/WWW/2000/10/swap/test/reluri-1.n3', + 'file://meetings.example.com/cal#m1'], + ['file://meetings.example.com/cal#m1', + 'file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3', + 'file://meetings.example.com/cal#m1'], + ['./#blort', 'file:/some/dir/foo', 'file:/some/dir/#blort'], + ['./#', 'file:/some/dir/foo', 'file:/some/dir/#'], + // Ryan Lee + ['./', 'http://example/x/abc.efg', 'http://example/x/'], + + + // Graham Klyne's tests + // http://www.ninebynine.org/Software/HaskellUtils/Network/UriTest.xls + // 01-31 are from Connelly's cases + + // 32-49 + ['./q:r', 'http://ex/x/y', 'http://ex/x/q:r'], + ['./p=q:r', 'http://ex/x/y', 'http://ex/x/p=q:r'], + ['?pp/rr', 'http://ex/x/y?pp/qq', 'http://ex/x/y?pp/rr'], + ['y/z', 'http://ex/x/y?pp/qq', 'http://ex/x/y/z'], + ['local/qual@domain.org#frag', + 'mailto:local', + 'mailto:local/qual@domain.org#frag'], + ['more/qual2@domain2.org#frag', + 'mailto:local/qual1@domain1.org', + 'mailto:local/more/qual2@domain2.org#frag'], + ['y?q', 'http://ex/x/y?q', 'http://ex/x/y?q'], + ['/x/y?q', 'http://ex?p', 'http://ex/x/y?q'], + ['c/d', 'foo:a/b', 'foo:a/c/d'], + ['/c/d', 'foo:a/b', 'foo:/c/d'], + ['', 'foo:a/b?c#d', 'foo:a/b?c'], + ['b/c', 'foo:a', 'foo:b/c'], + ['../b/c', 'foo:/a/y/z', 'foo:/a/b/c'], + ['./b/c', 'foo:a', 'foo:b/c'], + ['/./b/c', 'foo:a', 'foo:/b/c'], + ['../../d', 'foo://a//b/c', 'foo://a/d'], + ['.', 'foo:a', 'foo:'], + ['..', 'foo:a', 'foo:'], + + // 50-57[cf. TimBL comments -- + // http://lists.w3.org/Archives/Public/uri/2003Feb/0028.html, + // http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html) + ['abc', 'http://example/x/y%2Fz', 'http://example/x/abc'], + ['../../x%2Fabc', 'http://example/a/x/y/z', 'http://example/a/x%2Fabc'], + ['../x%2Fabc', 'http://example/a/x/y%2Fz', 'http://example/a/x%2Fabc'], + ['abc', 'http://example/x%2Fy/z', 'http://example/x%2Fy/abc'], + ['q%3Ar', 'http://ex/x/y', 'http://ex/x/q%3Ar'], + ['/x%2Fabc', 'http://example/x/y%2Fz', 'http://example/x%2Fabc'], + ['/x%2Fabc', 'http://example/x/y/z', 'http://example/x%2Fabc'], + ['/x%2Fabc', 'http://example/x/y%2Fz', 'http://example/x%2Fabc'], + + // 70-77 + ['local2@domain2', 'mailto:local1@domain1?query1', 'mailto:local2@domain2'], + ['local2@domain2?query2', + 'mailto:local1@domain1', + 'mailto:local2@domain2?query2'], + ['local2@domain2?query2', + 'mailto:local1@domain1?query1', + 'mailto:local2@domain2?query2'], + ['?query2', 'mailto:local@domain?query1', 'mailto:local@domain?query2'], + ['local@domain?query2', 'mailto:?query1', 'mailto:local@domain?query2'], + ['?query2', 'mailto:local@domain?query1', 'mailto:local@domain?query2'], + ['http://example/a/b?c/../d', 'foo:bar', 'http://example/a/b?c/../d'], + ['http://example/a/b#c/../d', 'foo:bar', 'http://example/a/b#c/../d'], + + // 82-88 + // @isaacs Disagree. Not how browsers do it. + // ['http:this', 'http://example.org/base/uri', 'http:this'], + // @isaacs Added + ['http:this', 'http://example.org/base/uri', 'http://example.org/base/this'], + ['http:this', 'http:base', 'http:this'], + ['.//g', 'f:/a', 'f://g'], + ['b/c//d/e', 'f://example.org/base/a', 'f://example.org/base/b/c//d/e'], + ['m2@example.ord/c2@example.org', + 'mid:m@example.ord/c@example.org', + 'mid:m@example.ord/m2@example.ord/c2@example.org'], + ['mini1.xml', + 'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/', + 'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/mini1.xml'], + ['../b/c', 'foo:a/y/z', 'foo:a/b/c'], + + //changeing auth + ['http://diff:auth@www.example.com', + 'http://asdf:qwer@www.example.com', + 'http://diff:auth@www.example.com/'] +]; +relativeTests2.forEach(function(relativeTest) { + var a = url.resolve(relativeTest[1], relativeTest[0]), + e = relativeTest[2]; + assert.equal(a, e, + 'resolve(' + [relativeTest[1], relativeTest[0]] + ') == ' + e + + '\n actual=' + a); +}); + +//if format and parse are inverse operations then +//resolveObject(parse(x), y) == parse(resolve(x, y)) + +//host and hostname are special, in this case a '' value is important +var emptyIsImportant = {'host': true, 'hostname': ''}; + +//format: [from, path, expected] +relativeTests.forEach(function(relativeTest) { + var actual = url.resolveObject(url.parse(relativeTest[0]), relativeTest[1]), + expected = url.parse(relativeTest[2]); + + + assert.deepEqual(actual, expected); + + expected = relativeTest[2]; + actual = url.format(actual); + + assert.equal(actual, expected, + 'format(' + actual + ') == ' + expected + '\nactual:' + actual); +}); + +//format: [to, from, result] +// the test: ['.//g', 'f:/a', 'f://g'] is a fundimental problem +// url.parse('f:/a') does not have a host +// url.resolve('f:/a', './/g') does not have a host becuase you have moved +// down to the g directory. i.e. f: //g, however when this url is parsed +// f:// will indicate that the host is g which is not the case. +// it is unclear to me how to keep this information from being lost +// it may be that a pathname of ////g should colapse to /g but this seems +// to be a lot of work for an edge case. Right now I remove the test +if (relativeTests2[181][0] === './/g' && + relativeTests2[181][1] === 'f:/a' && + relativeTests2[181][2] === 'f://g') { + relativeTests2.splice(181, 1); +} +relativeTests2.forEach(function(relativeTest) { + var actual = url.resolveObject(url.parse(relativeTest[1]), relativeTest[0]), + expected = url.parse(relativeTest[2]); + + assert.deepEqual(actual, expected); + + var expected = relativeTest[2], + actual = url.format(actual); + + assert.equal(actual, expected, + 'format(' + relativeTest[1] + ') == ' + expected + + '\nactual:' + actual); +}); + +}); diff --git a/node_modules/aws-sdk/node_modules/url/url.js b/node_modules/aws-sdk/node_modules/url/url.js new file mode 100644 index 0000000..ddc4ade --- /dev/null +++ b/node_modules/aws-sdk/node_modules/url/url.js @@ -0,0 +1,707 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var punycode = require('punycode'); + +exports.parse = urlParse; +exports.resolve = urlResolve; +exports.resolveObject = urlResolveObject; +exports.format = urlFormat; + +exports.Url = Url; + +function Url() { + this.protocol = null; + this.slashes = null; + this.auth = null; + this.host = null; + this.port = null; + this.hostname = null; + this.hash = null; + this.search = null; + this.query = null; + this.pathname = null; + this.path = null; + this.href = null; +} + +// Reference: RFC 3986, RFC 1808, RFC 2396 + +// define these here so at least they only have to be +// compiled once on the first module load. +var protocolPattern = /^([a-z0-9.+-]+:)/i, + portPattern = /:[0-9]*$/, + + // RFC 2396: characters reserved for delimiting URLs. + // We actually just auto-escape these. + delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], + + // RFC 2396: characters not allowed for various reasons. + unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), + + // Allowed by RFCs, but cause of XSS attacks. Always escape these. + autoEscape = ['\''].concat(unwise), + // Characters that are never ever allowed in a hostname. + // Note that any invalid chars are also handled, but these + // are the ones that are *expected* to be seen, so we fast-path + // them. + nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), + hostEndingChars = ['/', '?', '#'], + hostnameMaxLen = 255, + hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, + hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, + // protocols that can allow "unsafe" and "unwise" chars. + unsafeProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that never have a hostname. + hostlessProtocol = { + 'javascript': true, + 'javascript:': true + }, + // protocols that always contain a // bit. + slashedProtocol = { + 'http': true, + 'https': true, + 'ftp': true, + 'gopher': true, + 'file': true, + 'http:': true, + 'https:': true, + 'ftp:': true, + 'gopher:': true, + 'file:': true + }, + querystring = require('querystring'); + +function urlParse(url, parseQueryString, slashesDenoteHost) { + if (url && isObject(url) && url instanceof Url) return url; + + var u = new Url; + u.parse(url, parseQueryString, slashesDenoteHost); + return u; +} + +Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { + if (!isString(url)) { + throw new TypeError("Parameter 'url' must be a string, not " + typeof url); + } + + var rest = url; + + // trim before proceeding. + // This is to support parse stuff like " http://foo.com \n" + rest = rest.trim(); + + var proto = protocolPattern.exec(rest); + if (proto) { + proto = proto[0]; + var lowerProto = proto.toLowerCase(); + this.protocol = lowerProto; + rest = rest.substr(proto.length); + } + + // figure out if it's got a host + // user@server is *always* interpreted as a hostname, and url + // resolution will treat //foo/bar as host=foo,path=bar because that's + // how the browser resolves relative URLs. + if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { + var slashes = rest.substr(0, 2) === '//'; + if (slashes && !(proto && hostlessProtocol[proto])) { + rest = rest.substr(2); + this.slashes = true; + } + } + + if (!hostlessProtocol[proto] && + (slashes || (proto && !slashedProtocol[proto]))) { + + // there's a hostname. + // the first instance of /, ?, ;, or # ends the host. + // + // If there is an @ in the hostname, then non-host chars *are* allowed + // to the left of the last @ sign, unless some host-ending character + // comes *before* the @-sign. + // URLs are obnoxious. + // + // ex: + // http://a@b@c/ => user:a@b host:c + // http://a@b?@c => user:a host:c path:/?@c + + // v0.12 TODO(isaacs): This is not quite how Chrome does things. + // Review our test case against browsers more comprehensively. + + // find the first instance of any hostEndingChars + var hostEnd = -1; + for (var i = 0; i < hostEndingChars.length; i++) { + var hec = rest.indexOf(hostEndingChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + + // at this point, either we have an explicit point where the + // auth portion cannot go past, or the last @ char is the decider. + var auth, atSign; + if (hostEnd === -1) { + // atSign can be anywhere. + atSign = rest.lastIndexOf('@'); + } else { + // atSign must be in auth portion. + // http://a@b/c@d => host:b auth:a path:/c@d + atSign = rest.lastIndexOf('@', hostEnd); + } + + // Now we have a portion which is definitely the auth. + // Pull that off. + if (atSign !== -1) { + auth = rest.slice(0, atSign); + rest = rest.slice(atSign + 1); + this.auth = decodeURIComponent(auth); + } + + // the host is the remaining to the left of the first non-host char + hostEnd = -1; + for (var i = 0; i < nonHostChars.length; i++) { + var hec = rest.indexOf(nonHostChars[i]); + if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) + hostEnd = hec; + } + // if we still have not hit it, then the entire thing is a host. + if (hostEnd === -1) + hostEnd = rest.length; + + this.host = rest.slice(0, hostEnd); + rest = rest.slice(hostEnd); + + // pull out port. + this.parseHost(); + + // we've indicated that there is a hostname, + // so even if it's empty, it has to be present. + this.hostname = this.hostname || ''; + + // if hostname begins with [ and ends with ] + // assume that it's an IPv6 address. + var ipv6Hostname = this.hostname[0] === '[' && + this.hostname[this.hostname.length - 1] === ']'; + + // validate a little. + if (!ipv6Hostname) { + var hostparts = this.hostname.split(/\./); + for (var i = 0, l = hostparts.length; i < l; i++) { + var part = hostparts[i]; + if (!part) continue; + if (!part.match(hostnamePartPattern)) { + var newpart = ''; + for (var j = 0, k = part.length; j < k; j++) { + if (part.charCodeAt(j) > 127) { + // we replace non-ASCII char with a temporary placeholder + // we need this to make sure size of hostname is not + // broken by replacing non-ASCII by nothing + newpart += 'x'; + } else { + newpart += part[j]; + } + } + // we test again with ASCII char only + if (!newpart.match(hostnamePartPattern)) { + var validParts = hostparts.slice(0, i); + var notHost = hostparts.slice(i + 1); + var bit = part.match(hostnamePartStart); + if (bit) { + validParts.push(bit[1]); + notHost.unshift(bit[2]); + } + if (notHost.length) { + rest = '/' + notHost.join('.') + rest; + } + this.hostname = validParts.join('.'); + break; + } + } + } + } + + if (this.hostname.length > hostnameMaxLen) { + this.hostname = ''; + } else { + // hostnames are always lower case. + this.hostname = this.hostname.toLowerCase(); + } + + if (!ipv6Hostname) { + // IDNA Support: Returns a puny coded representation of "domain". + // It only converts the part of the domain name that + // has non ASCII characters. I.e. it dosent matter if + // you call it with a domain that already is in ASCII. + var domainArray = this.hostname.split('.'); + var newOut = []; + for (var i = 0; i < domainArray.length; ++i) { + var s = domainArray[i]; + newOut.push(s.match(/[^A-Za-z0-9_-]/) ? + 'xn--' + punycode.encode(s) : s); + } + this.hostname = newOut.join('.'); + } + + var p = this.port ? ':' + this.port : ''; + var h = this.hostname || ''; + this.host = h + p; + this.href += this.host; + + // strip [ and ] from the hostname + // the host field still retains them, though + if (ipv6Hostname) { + this.hostname = this.hostname.substr(1, this.hostname.length - 2); + if (rest[0] !== '/') { + rest = '/' + rest; + } + } + } + + // now rest is set to the post-host stuff. + // chop off any delim chars. + if (!unsafeProtocol[lowerProto]) { + + // First, make 100% sure that any "autoEscape" chars get + // escaped, even if encodeURIComponent doesn't think they + // need to be. + for (var i = 0, l = autoEscape.length; i < l; i++) { + var ae = autoEscape[i]; + var esc = encodeURIComponent(ae); + if (esc === ae) { + esc = escape(ae); + } + rest = rest.split(ae).join(esc); + } + } + + + // chop off from the tail first. + var hash = rest.indexOf('#'); + if (hash !== -1) { + // got a fragment string. + this.hash = rest.substr(hash); + rest = rest.slice(0, hash); + } + var qm = rest.indexOf('?'); + if (qm !== -1) { + this.search = rest.substr(qm); + this.query = rest.substr(qm + 1); + if (parseQueryString) { + this.query = querystring.parse(this.query); + } + rest = rest.slice(0, qm); + } else if (parseQueryString) { + // no query string, but parseQueryString still requested + this.search = ''; + this.query = {}; + } + if (rest) this.pathname = rest; + if (slashedProtocol[lowerProto] && + this.hostname && !this.pathname) { + this.pathname = '/'; + } + + //to support http.request + if (this.pathname || this.search) { + var p = this.pathname || ''; + var s = this.search || ''; + this.path = p + s; + } + + // finally, reconstruct the href based on what has been validated. + this.href = this.format(); + return this; +}; + +// format a parsed object into a url string +function urlFormat(obj) { + // ensure it's an object, and not a string url. + // If it's an obj, this is a no-op. + // this way, you can call url_format() on strings + // to clean up potentially wonky urls. + if (isString(obj)) obj = urlParse(obj); + if (!(obj instanceof Url)) return Url.prototype.format.call(obj); + return obj.format(); +} + +Url.prototype.format = function() { + var auth = this.auth || ''; + if (auth) { + auth = encodeURIComponent(auth); + auth = auth.replace(/%3A/i, ':'); + auth += '@'; + } + + var protocol = this.protocol || '', + pathname = this.pathname || '', + hash = this.hash || '', + host = false, + query = ''; + + if (this.host) { + host = auth + this.host; + } else if (this.hostname) { + host = auth + (this.hostname.indexOf(':') === -1 ? + this.hostname : + '[' + this.hostname + ']'); + if (this.port) { + host += ':' + this.port; + } + } + + if (this.query && + isObject(this.query) && + Object.keys(this.query).length) { + query = querystring.stringify(this.query); + } + + var search = this.search || (query && ('?' + query)) || ''; + + if (protocol && protocol.substr(-1) !== ':') protocol += ':'; + + // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. + // unless they had them to begin with. + if (this.slashes || + (!protocol || slashedProtocol[protocol]) && host !== false) { + host = '//' + (host || ''); + if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; + } else if (!host) { + host = ''; + } + + if (hash && hash.charAt(0) !== '#') hash = '#' + hash; + if (search && search.charAt(0) !== '?') search = '?' + search; + + pathname = pathname.replace(/[?#]/g, function(match) { + return encodeURIComponent(match); + }); + search = search.replace('#', '%23'); + + return protocol + host + pathname + search + hash; +}; + +function urlResolve(source, relative) { + return urlParse(source, false, true).resolve(relative); +} + +Url.prototype.resolve = function(relative) { + return this.resolveObject(urlParse(relative, false, true)).format(); +}; + +function urlResolveObject(source, relative) { + if (!source) return relative; + return urlParse(source, false, true).resolveObject(relative); +} + +Url.prototype.resolveObject = function(relative) { + if (isString(relative)) { + var rel = new Url(); + rel.parse(relative, false, true); + relative = rel; + } + + var result = new Url(); + Object.keys(this).forEach(function(k) { + result[k] = this[k]; + }, this); + + // hash is always overridden, no matter what. + // even href="" will remove it. + result.hash = relative.hash; + + // if the relative url is empty, then there's nothing left to do here. + if (relative.href === '') { + result.href = result.format(); + return result; + } + + // hrefs like //foo/bar always cut to the protocol. + if (relative.slashes && !relative.protocol) { + // take everything except the protocol from relative + Object.keys(relative).forEach(function(k) { + if (k !== 'protocol') + result[k] = relative[k]; + }); + + //urlParse appends trailing / to urls like http://www.example.com + if (slashedProtocol[result.protocol] && + result.hostname && !result.pathname) { + result.path = result.pathname = '/'; + } + + result.href = result.format(); + return result; + } + + if (relative.protocol && relative.protocol !== result.protocol) { + // if it's a known url protocol, then changing + // the protocol does weird things + // first, if it's not file:, then we MUST have a host, + // and if there was a path + // to begin with, then we MUST have a path. + // if it is file:, then the host is dropped, + // because that's known to be hostless. + // anything else is assumed to be absolute. + if (!slashedProtocol[relative.protocol]) { + Object.keys(relative).forEach(function(k) { + result[k] = relative[k]; + }); + result.href = result.format(); + return result; + } + + result.protocol = relative.protocol; + if (!relative.host && !hostlessProtocol[relative.protocol]) { + var relPath = (relative.pathname || '').split('/'); + while (relPath.length && !(relative.host = relPath.shift())); + if (!relative.host) relative.host = ''; + if (!relative.hostname) relative.hostname = ''; + if (relPath[0] !== '') relPath.unshift(''); + if (relPath.length < 2) relPath.unshift(''); + result.pathname = relPath.join('/'); + } else { + result.pathname = relative.pathname; + } + result.search = relative.search; + result.query = relative.query; + result.host = relative.host || ''; + result.auth = relative.auth; + result.hostname = relative.hostname || relative.host; + result.port = relative.port; + // to support http.request + if (result.pathname || result.search) { + var p = result.pathname || ''; + var s = result.search || ''; + result.path = p + s; + } + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; + } + + var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), + isRelAbs = ( + relative.host || + relative.pathname && relative.pathname.charAt(0) === '/' + ), + mustEndAbs = (isRelAbs || isSourceAbs || + (result.host && relative.pathname)), + removeAllDots = mustEndAbs, + srcPath = result.pathname && result.pathname.split('/') || [], + relPath = relative.pathname && relative.pathname.split('/') || [], + psychotic = result.protocol && !slashedProtocol[result.protocol]; + + // if the url is a non-slashed url, then relative + // links like ../.. should be able + // to crawl up to the hostname, as well. This is strange. + // result.protocol has already been set by now. + // Later on, put the first path part into the host field. + if (psychotic) { + result.hostname = ''; + result.port = null; + if (result.host) { + if (srcPath[0] === '') srcPath[0] = result.host; + else srcPath.unshift(result.host); + } + result.host = ''; + if (relative.protocol) { + relative.hostname = null; + relative.port = null; + if (relative.host) { + if (relPath[0] === '') relPath[0] = relative.host; + else relPath.unshift(relative.host); + } + relative.host = null; + } + mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); + } + + if (isRelAbs) { + // it's absolute. + result.host = (relative.host || relative.host === '') ? + relative.host : result.host; + result.hostname = (relative.hostname || relative.hostname === '') ? + relative.hostname : result.hostname; + result.search = relative.search; + result.query = relative.query; + srcPath = relPath; + // fall through to the dot-handling below. + } else if (relPath.length) { + // it's relative + // throw away the existing file, and take the new path instead. + if (!srcPath) srcPath = []; + srcPath.pop(); + srcPath = srcPath.concat(relPath); + result.search = relative.search; + result.query = relative.query; + } else if (!isNullOrUndefined(relative.search)) { + // just pull out the search. + // like href='?foo'. + // Put this after the other two cases because it simplifies the booleans + if (psychotic) { + result.hostname = result.host = srcPath.shift(); + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + result.search = relative.search; + result.query = relative.query; + //to support http.request + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.href = result.format(); + return result; + } + + if (!srcPath.length) { + // no path at all. easy. + // we've already handled the other stuff above. + result.pathname = null; + //to support http.request + if (result.search) { + result.path = '/' + result.search; + } else { + result.path = null; + } + result.href = result.format(); + return result; + } + + // if a url ENDs in . or .., then it must get a trailing slash. + // however, if it ends in anything else non-slashy, + // then it must NOT get a trailing slash. + var last = srcPath.slice(-1)[0]; + var hasTrailingSlash = ( + (result.host || relative.host) && (last === '.' || last === '..') || + last === ''); + + // strip single dots, resolve double dots to parent dir + // if the path tries to go above the root, `up` ends up > 0 + var up = 0; + for (var i = srcPath.length; i >= 0; i--) { + last = srcPath[i]; + if (last == '.') { + srcPath.splice(i, 1); + } else if (last === '..') { + srcPath.splice(i, 1); + up++; + } else if (up) { + srcPath.splice(i, 1); + up--; + } + } + + // if the path is allowed to go above the root, restore leading ..s + if (!mustEndAbs && !removeAllDots) { + for (; up--; up) { + srcPath.unshift('..'); + } + } + + if (mustEndAbs && srcPath[0] !== '' && + (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { + srcPath.unshift(''); + } + + if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { + srcPath.push(''); + } + + var isAbsolute = srcPath[0] === '' || + (srcPath[0] && srcPath[0].charAt(0) === '/'); + + // put the host back + if (psychotic) { + result.hostname = result.host = isAbsolute ? '' : + srcPath.length ? srcPath.shift() : ''; + //occationaly the auth can get stuck only in host + //this especialy happens in cases like + //url.resolveObject('mailto:local1@domain1', 'local2@domain2') + var authInHost = result.host && result.host.indexOf('@') > 0 ? + result.host.split('@') : false; + if (authInHost) { + result.auth = authInHost.shift(); + result.host = result.hostname = authInHost.shift(); + } + } + + mustEndAbs = mustEndAbs || (result.host && srcPath.length); + + if (mustEndAbs && !isAbsolute) { + srcPath.unshift(''); + } + + if (!srcPath.length) { + result.pathname = null; + result.path = null; + } else { + result.pathname = srcPath.join('/'); + } + + //to support request.http + if (!isNull(result.pathname) || !isNull(result.search)) { + result.path = (result.pathname ? result.pathname : '') + + (result.search ? result.search : ''); + } + result.auth = relative.auth || result.auth; + result.slashes = result.slashes || relative.slashes; + result.href = result.format(); + return result; +}; + +Url.prototype.parseHost = function() { + var host = this.host; + var port = portPattern.exec(host); + if (port) { + port = port[0]; + if (port !== ':') { + this.port = port.substr(1); + } + host = host.substr(0, host.length - port.length); + } + if (host) this.hostname = host; +}; + +function isString(arg) { + return typeof arg === "string"; +} + +function isObject(arg) { + return typeof arg === 'object' && arg !== null; +} + +function isNull(arg) { + return arg === null; +} +function isNullOrUndefined(arg) { + return arg == null; +} diff --git a/node_modules/aws-sdk/node_modules/xml2js/LICENSE b/node_modules/aws-sdk/node_modules/xml2js/LICENSE new file mode 100644 index 0000000..e3b4222 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xml2js/LICENSE @@ -0,0 +1,19 @@ +Copyright 2010, 2011, 2012, 2013. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/xml2js/README.md b/node_modules/aws-sdk/node_modules/xml2js/README.md new file mode 100644 index 0000000..0dc3dfc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xml2js/README.md @@ -0,0 +1,406 @@ +node-xml2js +=========== + +Ever had the urge to parse XML? And wanted to access the data in some sane, +easy way? Don't want to compile a C parser, for whatever reason? Then xml2js is +what you're looking for! + +Description +=========== + +Simple XML to JavaScript object converter. It supports bi-directional conversion. +Uses [sax-js](https://github.com/isaacs/sax-js/) and +[xmlbuilder-js](https://github.com/oozcitak/xmlbuilder-js/). + +Note: If you're looking for a full DOM parser, you probably want +[JSDom](https://github.com/tmpvar/jsdom). + +Installation +============ + +Simplest way to install `xml2js` is to use [npm](http://npmjs.org), just `npm +install xml2js` which will download xml2js and all dependencies. + +xml2js is also available via [Bower](http://bower.io/), just `bower install +xml2js` which will download xml2js and all dependencies. + +Usage +===== + +No extensive tutorials required because you are a smart developer! The task of +parsing XML should be an easy one, so let's make it so! Here's some examples. + +Shoot-and-forget usage +---------------------- + +You want to parse XML as simple and easy as possible? It's dangerous to go +alone, take this: + +```javascript +var parseString = require('xml2js').parseString; +var xml = "Hello xml2js!" +parseString(xml, function (err, result) { + console.dir(result); +}); +``` + +Can't get easier than this, right? This works starting with `xml2js` 0.2.3. +With CoffeeScript it looks like this: + +```coffeescript +{parseString} = require 'xml2js' +xml = "Hello xml2js!" +parseString xml, (err, result) -> + console.dir result +``` + +If you need some special options, fear not, `xml2js` supports a number of +options (see below), you can specify these as second argument: + +```javascript +parseString(xml, {trim: true}, function (err, result) { +}); +``` + +Simple as pie usage +------------------- + +That's right, if you have been using xml-simple or a home-grown +wrapper, this was added in 0.1.11 just for you: + +```javascript +var fs = require('fs'), + xml2js = require('xml2js'); + +var parser = new xml2js.Parser(); +fs.readFile(__dirname + '/foo.xml', function(err, data) { + parser.parseString(data, function (err, result) { + console.dir(result); + console.log('Done'); + }); +}); +``` + +Look ma, no event listeners! + +You can also use `xml2js` from +[CoffeeScript](http://jashkenas.github.com/coffee-script/), further reducing +the clutter: + +```coffeescript +fs = require 'fs', +xml2js = require 'xml2js' + +parser = new xml2js.Parser() +fs.readFile __dirname + '/foo.xml', (err, data) -> + parser.parseString data, (err, result) -> + console.dir result + console.log 'Done.' +``` + +But what happens if you forget the `new` keyword to create a new `Parser`? In +the middle of a nightly coding session, it might get lost, after all. Worry +not, we got you covered! Starting with 0.2.8 you can also leave it out, in +which case `xml2js` will helpfully add it for you, no bad surprises and +inexplicable bugs! + +"Traditional" usage +------------------- + +Alternatively you can still use the traditional `addListener` variant that was +supported since forever: + +```javascript +var fs = require('fs'), + xml2js = require('xml2js'); + +var parser = new xml2js.Parser(); +parser.addListener('end', function(result) { + console.dir(result); + console.log('Done.'); +}); +fs.readFile(__dirname + '/foo.xml', function(err, data) { + parser.parseString(data); +}); +``` + +If you want to parse multiple files, you have multiple possibilities: + + * You can create one `xml2js.Parser` per file. That's the recommended one + and is promised to always *just work*. + * You can call `reset()` on your parser object. + * You can hope everything goes well anyway. This behaviour is not + guaranteed work always, if ever. Use option #1 if possible. Thanks! + +So you wanna some JSON? +----------------------- + +Just wrap the `result` object in a call to `JSON.stringify` like this +`JSON.stringify(result)`. You get a string containing the JSON representation +of the parsed object that you can feed to JSON-hungry consumers. + +Displaying results +------------------ + +You might wonder why, using `console.dir` or `console.log` the output at some +level is only `[Object]`. Don't worry, this is not because `xml2js` got lazy. +That's because Node uses `util.inspect` to convert the object into strings and +that function stops after `depth=2` which is a bit low for most XML. + +To display the whole deal, you can use `console.log(util.inspect(result, false, +null))`, which displays the whole result. + +So much for that, but what if you use +[eyes](https://github.com/cloudhead/eyes.js) for nice colored output and it +truncates the output with `…`? Don't fear, there's also a solution for that, +you just need to increase the `maxLength` limit by creating a custom inspector +`var inspect = require('eyes').inspector({maxLength: false})` and then you can +easily `inspect(result)`. + +XML builder usage +----------------- + +Since 0.4.0, objects can be also be used to build XML: + +```javascript +var fs = require('fs'), + xml2js = require('xml2js'); + +var obj = {name: "Super", Surname: "Man", age: 23}; + +var builder = new xml2js.Builder(); +var xml = builder.buildObject(obj); +``` + +At the moment, a one to one bi-directional conversion is guaranteed only for +default configuration, except for `attrkey`, `charkey` and `explicitArray` options +you can redefine to your taste. Writing CDATA is supported via setting the `cdata` +option to `true`. + +Processing attribute, tag names and values +------------------------------------------ + +Since 0.4.1 you can optionally provide the parser with attribute name and tag name processors as well as element value processors (Since 0.4.14, you can also optionally provide the parser with attribute value processors): + +```javascript + +function nameToUpperCase(name){ + return name.toUpperCase(); +} + +//transform all attribute and tag names and values to uppercase +parseString(xml, { + tagNameProcessors: [nameToUpperCase], + attrNameProcessors: [nameToUpperCase], + valueProcessors: [nameToUpperCase], + attrValueProcessors: [nameToUpperCase]}, + function (err, result) { + // processed data +}); +``` + +The `tagNameProcessors`, `attrNameProcessors`, `attrValueProcessors` and `valueProcessors` options +accept an `Array` of functions with the following signature: + +```javascript +function (name){ + //do something with `name` + return name +} +``` + +Some processors are provided out-of-the-box and can be found in `lib/processors.js`: + +- `normalize`: transforms the name to lowercase. +(Automatically used when `options.normalize` is set to `true`) + +- `firstCharLowerCase`: transforms the first character to lower case. +E.g. 'MyTagName' becomes 'myTagName' + +- `stripPrefix`: strips the xml namespace prefix. E.g `` will become 'Bar'. +(N.B.: the `xmlns` prefix is NOT stripped.) + +- `parseNumbers`: parses integer-like strings as integers and float-like strings as floats +E.g. "0" becomes 0 and "15.56" becomes 15.56 + +- `parseBooleans`: parses boolean-like strings to booleans +E.g. "true" becomes true and "False" becomes false + +Options +======= + +Apart from the default settings, there are a number of options that can be +specified for the parser. Options are specified by ``new Parser({optionName: +value})``. Possible options are: + + * `attrkey` (default: `$`): Prefix that is used to access the attributes. + Version 0.1 default was `@`. + * `charkey` (default: `_`): Prefix that is used to access the character + content. Version 0.1 default was `#`. + * `explicitCharkey` (default: `false`) + * `trim` (default: `false`): Trim the whitespace at the beginning and end of + text nodes. + * `normalizeTags` (default: `false`): Normalize all tag names to lowercase. + * `normalize` (default: `false`): Trim whitespaces inside text nodes. + * `explicitRoot` (default: `true`): Set this if you want to get the root + node in the resulting object. + * `emptyTag` (default: `''`): what will the value of empty nodes be. + * `explicitArray` (default: `true`): Always put child nodes in an array if + true; otherwise an array is created only if there is more than one. + * `ignoreAttrs` (default: `false`): Ignore all XML attributes and only create + text nodes. + * `mergeAttrs` (default: `false`): Merge attributes and child elements as + properties of the parent, instead of keying attributes off a child + attribute object. This option is ignored if `ignoreAttrs` is `false`. + * `validator` (default `null`): You can specify a callable that validates + the resulting structure somehow, however you want. See unit tests + for an example. + * `xmlns` (default `false`): Give each element a field usually called '$ns' + (the first character is the same as attrkey) that contains its local name + and namespace URI. + * `explicitChildren` (default `false`): Put child elements to separate + property. Doesn't work with `mergeAttrs = true`. If element has no children + then "children" won't be created. Added in 0.2.5. + * `childkey` (default `$$`): Prefix that is used to access child elements if + `explicitChildren` is set to `true`. Added in 0.2.5. + * `preserveChildrenOrder` (default `false`): Modifies the behavior of + `explicitChildren` so that the value of the "children" property becomes an + ordered array. When this is `true`, every node will also get a `#name` field + whose value will correspond to the XML nodeName, so that you may iterate + the "children" array and still be able to determine node names. The named + (and potentially unordered) properties are also retained in this + configuration at the same level as the ordered "children" array. Added in + 0.4.9. + * `charsAsChildren` (default `false`): Determines whether chars should be + considered children if `explicitChildren` is on. Added in 0.2.5. + * `async` (default `false`): Should the callbacks be async? This *might* be + an incompatible change if your code depends on sync execution of callbacks. + Future versions of `xml2js` might change this default, so the recommendation + is to not depend on sync execution anyway. Added in 0.2.6. + * `strict` (default `true`): Set sax-js to strict or non-strict parsing mode. + Defaults to `true` which is *highly* recommended, since parsing HTML which + is not well-formed XML might yield just about anything. Added in 0.2.7. + * `attrNameProcessors` (default: `null`): Allows the addition of attribute + name processing functions. Accepts an `Array` of functions with following + signature: + ```javascript + function (name){ + //do something with `name` + return name + } + ``` + Added in 0.4.14 + * `attrValueProcessors` (default: `null`): Allows the addition of attribute + value processing functions. Accepts an `Array` of functions with following + signature: + ```javascript + function (name){ + //do something with `name` + return name + } + ``` + Added in 0.4.1 + * `tagNameProcessors` (default: `null`): Allows the addition of tag name + processing functions. Accepts an `Array` of functions with following + signature: + ```javascript + function (name){ + //do something with `name` + return name + } + ``` + Added in 0.4.1 + * `valueProcessors` (default: `null`): Allows the addition of element value + processing functions. Accepts an `Array` of functions with following + signature: + ```javascript + function (name){ + //do something with `name` + return name + } + ``` + Added in 0.4.6 + +Options for the `Builder` class +------------------------------- + + * `rootName` (default `root`): root element name to be used in case + `explicitRoot` is `false` or to override the root element name. + * `renderOpts` (default `{ 'pretty': true, 'indent': ' ', 'newline': '\n' }`): + Rendering options for xmlbuilder-js. + * pretty: prettify generated XML + * indent: whitespace for indentation (only when pretty) + * newline: newline char (only when pretty) + * `xmldec` (default `{ 'version': '1.0', 'encoding': 'UTF-8', 'standalone': true }`: + XML declaration attributes. + * `xmldec.version` A version number string, e.g. 1.0 + * `xmldec.encoding` Encoding declaration, e.g. UTF-8 + * `xmldec.standalone` standalone document declaration: true or false + * `doctype` (default `null`): optional DTD. Eg. `{'ext': 'hello.dtd'}` + * `headless` (default: `false`): omit the XML header. Added in 0.4.3. + * `cdata` (default: `false`): wrap text nodes in `` instead of + escaping when necessary. Does not add `` if it is not required. + Added in 0.4.5. + +`renderOpts`, `xmldec`,`doctype` and `headless` pass through to +[xmlbuilder-js](https://github.com/oozcitak/xmlbuilder-js). + +Updating to new version +======================= + +Version 0.2 changed the default parsing settings, but version 0.1.14 introduced +the default settings for version 0.2, so these settings can be tried before the +migration. + +```javascript +var xml2js = require('xml2js'); +var parser = new xml2js.Parser(xml2js.defaults["0.2"]); +``` + +To get the 0.1 defaults in version 0.2 you can just use +`xml2js.defaults["0.1"]` in the same place. This provides you with enough time +to migrate to the saner way of parsing in `xml2js` 0.2. We try to make the +migration as simple and gentle as possible, but some breakage cannot be +avoided. + +So, what exactly did change and why? In 0.2 we changed some defaults to parse +the XML in a more universal and sane way. So we disabled `normalize` and `trim` +so `xml2js` does not cut out any text content. You can reenable this at will of +course. A more important change is that we return the root tag in the resulting +JavaScript structure via the `explicitRoot` setting, so you need to access the +first element. This is useful for anybody who wants to know what the root node +is and preserves more information. The last major change was to enable +`explicitArray`, so everytime it is possible that one might embed more than one +sub-tag into a tag, xml2js >= 0.2 returns an array even if the array just +includes one element. This is useful when dealing with APIs that return +variable amounts of subtags. + +Running tests, development +========================== + +[![Build Status](https://travis-ci.org/Leonidas-from-XIV/node-xml2js.svg?branch=master)](https://travis-ci.org/Leonidas-from-XIV/node-xml2js) +[![Coverage Status](https://coveralls.io/repos/Leonidas-from-XIV/node-xml2js/badge.svg?branch=)](https://coveralls.io/r/Leonidas-from-XIV/node-xml2js?branch=master) +[![Dependency Status](https://david-dm.org/Leonidas-from-XIV/node-xml2js.svg)](https://david-dm.org/Leonidas-from-XIV/node-xml2js) + +The development requirements are handled by npm, you just need to install them. +We also have a number of unit tests, they can be run using `npm test` directly +from the project root. This runs zap to discover all the tests and execute +them. + +If you like to contribute, keep in mind that `xml2js` is written in +CoffeeScript, so don't develop on the JavaScript files that are checked into +the repository for convenience reasons. Also, please write some unit test to +check your behaviour and if it is some user-facing thing, add some +documentation to this README, so people will know it exists. Thanks in advance! + +Getting support +=============== + +Please, if you have a problem with the library, first make sure you read this +README. If you read this far, thanks, you're good. Then, please make sure your +problem really is with `xml2js`. It is? Okay, then I'll look at it. Send me a +mail and we can talk. Please don't open issues, as I don't think that is the +proper forum for support problems. Some problems might as well really be bugs +in `xml2js`, if so I'll let you know to open an issue instead :) + +But if you know you really found a bug, feel free to open an issue instead. diff --git a/node_modules/aws-sdk/node_modules/xml2js/lib/bom.js b/node_modules/aws-sdk/node_modules/xml2js/lib/bom.js new file mode 100644 index 0000000..0f6be31 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xml2js/lib/bom.js @@ -0,0 +1,16 @@ +// Generated by CoffeeScript 1.10.0 +(function() { + "use strict"; + var xml2js; + + xml2js = require('../lib/xml2js'); + + exports.stripBOM = function(str) { + if (str[0] === '\uFEFF') { + return str.substring(1); + } else { + return str; + } + }; + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xml2js/lib/processors.js b/node_modules/aws-sdk/node_modules/xml2js/lib/processors.js new file mode 100644 index 0000000..31ccde2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xml2js/lib/processors.js @@ -0,0 +1,34 @@ +// Generated by CoffeeScript 1.10.0 +(function() { + "use strict"; + var prefixMatch; + + prefixMatch = new RegExp(/(?!xmlns)^.*:/); + + exports.normalize = function(str) { + return str.toLowerCase(); + }; + + exports.firstCharLowerCase = function(str) { + return str.charAt(0).toLowerCase() + str.slice(1); + }; + + exports.stripPrefix = function(str) { + return str.replace(prefixMatch, ''); + }; + + exports.parseNumbers = function(str) { + if (!isNaN(str)) { + str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str); + } + return str; + }; + + exports.parseBooleans = function(str) { + if (/^(?:true|false)$/i.test(str)) { + str = str.toLowerCase() === 'true'; + } + return str; + }; + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js b/node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js new file mode 100644 index 0000000..f9b403b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js @@ -0,0 +1,537 @@ +// Generated by CoffeeScript 1.10.0 +(function() { + "use strict"; + var bom, builder, escapeCDATA, events, isEmpty, processName, processors, requiresCDATA, sax, setImmediate, wrapCDATA, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + + sax = require('sax'); + + events = require('events'); + + builder = require('xmlbuilder'); + + bom = require('./bom'); + + processors = require('./processors'); + + setImmediate = require('timers').setImmediate; + + isEmpty = function(thing) { + return typeof thing === "object" && (thing != null) && Object.keys(thing).length === 0; + }; + + processName = function(processors, processedName) { + var i, len, process; + for (i = 0, len = processors.length; i < len; i++) { + process = processors[i]; + processedName = process(processedName); + } + return processedName; + }; + + requiresCDATA = function(entry) { + return entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0; + }; + + wrapCDATA = function(entry) { + return ""; + }; + + escapeCDATA = function(entry) { + return entry.replace(']]>', ']]]]>'); + }; + + exports.processors = processors; + + exports.defaults = { + "0.1": { + explicitCharkey: false, + trim: true, + normalize: true, + normalizeTags: false, + attrkey: "@", + charkey: "#", + explicitArray: false, + ignoreAttrs: false, + mergeAttrs: false, + explicitRoot: false, + validator: null, + xmlns: false, + explicitChildren: false, + childkey: '@@', + charsAsChildren: false, + async: false, + strict: true, + attrNameProcessors: null, + attrValueProcessors: null, + tagNameProcessors: null, + valueProcessors: null, + emptyTag: '' + }, + "0.2": { + explicitCharkey: false, + trim: false, + normalize: false, + normalizeTags: false, + attrkey: "$", + charkey: "_", + explicitArray: true, + ignoreAttrs: false, + mergeAttrs: false, + explicitRoot: true, + validator: null, + xmlns: false, + explicitChildren: false, + preserveChildrenOrder: false, + childkey: '$$', + charsAsChildren: false, + async: false, + strict: true, + attrNameProcessors: null, + attrValueProcessors: null, + tagNameProcessors: null, + valueProcessors: null, + rootName: 'root', + xmldec: { + 'version': '1.0', + 'encoding': 'UTF-8', + 'standalone': true + }, + doctype: null, + renderOpts: { + 'pretty': true, + 'indent': ' ', + 'newline': '\n' + }, + headless: false, + chunkSize: 10000, + emptyTag: '', + cdata: false + } + }; + + exports.ValidationError = (function(superClass) { + extend(ValidationError, superClass); + + function ValidationError(message) { + this.message = message; + } + + return ValidationError; + + })(Error); + + exports.Builder = (function() { + function Builder(opts) { + var key, ref, value; + this.options = {}; + ref = exports.defaults["0.2"]; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this.options[key] = value; + } + for (key in opts) { + if (!hasProp.call(opts, key)) continue; + value = opts[key]; + this.options[key] = value; + } + } + + Builder.prototype.buildObject = function(rootObj) { + var attrkey, charkey, render, rootElement, rootName; + attrkey = this.options.attrkey; + charkey = this.options.charkey; + if ((Object.keys(rootObj).length === 1) && (this.options.rootName === exports.defaults['0.2'].rootName)) { + rootName = Object.keys(rootObj)[0]; + rootObj = rootObj[rootName]; + } else { + rootName = this.options.rootName; + } + render = (function(_this) { + return function(element, obj) { + var attr, child, entry, index, key, value; + if (typeof obj !== 'object') { + if (_this.options.cdata && requiresCDATA(obj)) { + element.raw(wrapCDATA(obj)); + } else { + element.txt(obj); + } + } else { + for (key in obj) { + if (!hasProp.call(obj, key)) continue; + child = obj[key]; + if (key === attrkey) { + if (typeof child === "object") { + for (attr in child) { + value = child[attr]; + element = element.att(attr, value); + } + } + } else if (key === charkey) { + if (_this.options.cdata && requiresCDATA(child)) { + element = element.raw(wrapCDATA(child)); + } else { + element = element.txt(child); + } + } else if (Array.isArray(child)) { + for (index in child) { + if (!hasProp.call(child, index)) continue; + entry = child[index]; + if (typeof entry === 'string') { + if (_this.options.cdata && requiresCDATA(entry)) { + element = element.ele(key).raw(wrapCDATA(entry)).up(); + } else { + element = element.ele(key, entry).up(); + } + } else { + element = render(element.ele(key), entry).up(); + } + } + } else if (typeof child === "object") { + element = render(element.ele(key), child).up(); + } else { + if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) { + element = element.ele(key).raw(wrapCDATA(child)).up(); + } else { + if (child == null) { + child = ''; + } + element = element.ele(key, child.toString()).up(); + } + } + } + } + return element; + }; + })(this); + rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, { + headless: this.options.headless + }); + return render(rootElement, rootObj).end(this.options.renderOpts); + }; + + return Builder; + + })(); + + exports.Parser = (function(superClass) { + extend(Parser, superClass); + + function Parser(opts) { + this.parseString = bind(this.parseString, this); + this.reset = bind(this.reset, this); + this.assignOrPush = bind(this.assignOrPush, this); + this.processAsync = bind(this.processAsync, this); + var key, ref, value; + if (!(this instanceof exports.Parser)) { + return new exports.Parser(opts); + } + this.options = {}; + ref = exports.defaults["0.2"]; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this.options[key] = value; + } + for (key in opts) { + if (!hasProp.call(opts, key)) continue; + value = opts[key]; + this.options[key] = value; + } + if (this.options.xmlns) { + this.options.xmlnskey = this.options.attrkey + "ns"; + } + if (this.options.normalizeTags) { + if (!this.options.tagNameProcessors) { + this.options.tagNameProcessors = []; + } + this.options.tagNameProcessors.unshift(processors.normalize); + } + this.reset(); + } + + Parser.prototype.processAsync = function() { + var chunk, err, error1; + try { + if (this.remaining.length <= this.options.chunkSize) { + chunk = this.remaining; + this.remaining = ''; + this.saxParser = this.saxParser.write(chunk); + return this.saxParser.close(); + } else { + chunk = this.remaining.substr(0, this.options.chunkSize); + this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length); + this.saxParser = this.saxParser.write(chunk); + return setImmediate(this.processAsync); + } + } catch (error1) { + err = error1; + if (!this.saxParser.errThrown) { + this.saxParser.errThrown = true; + return this.emit(err); + } + } + }; + + Parser.prototype.assignOrPush = function(obj, key, newValue) { + if (!(key in obj)) { + if (!this.options.explicitArray) { + return obj[key] = newValue; + } else { + return obj[key] = [newValue]; + } + } else { + if (!(obj[key] instanceof Array)) { + obj[key] = [obj[key]]; + } + return obj[key].push(newValue); + } + }; + + Parser.prototype.reset = function() { + var attrkey, charkey, ontext, stack; + this.removeAllListeners(); + this.saxParser = sax.parser(this.options.strict, { + trim: false, + normalize: false, + xmlns: this.options.xmlns + }); + this.saxParser.errThrown = false; + this.saxParser.onerror = (function(_this) { + return function(error) { + _this.saxParser.resume(); + if (!_this.saxParser.errThrown) { + _this.saxParser.errThrown = true; + return _this.emit("error", error); + } + }; + })(this); + this.saxParser.onend = (function(_this) { + return function() { + if (!_this.saxParser.ended) { + _this.saxParser.ended = true; + return _this.emit("end", _this.resultObject); + } + }; + })(this); + this.saxParser.ended = false; + this.EXPLICIT_CHARKEY = this.options.explicitCharkey; + this.resultObject = null; + stack = []; + attrkey = this.options.attrkey; + charkey = this.options.charkey; + this.saxParser.onopentag = (function(_this) { + return function(node) { + var key, newValue, obj, processedKey, ref; + obj = {}; + obj[charkey] = ""; + if (!_this.options.ignoreAttrs) { + ref = node.attributes; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + if (!(attrkey in obj) && !_this.options.mergeAttrs) { + obj[attrkey] = {}; + } + newValue = _this.options.attrValueProcessors ? processName(_this.options.attrValueProcessors, node.attributes[key]) : node.attributes[key]; + processedKey = _this.options.attrNameProcessors ? processName(_this.options.attrNameProcessors, key) : key; + if (_this.options.mergeAttrs) { + _this.assignOrPush(obj, processedKey, newValue); + } else { + obj[attrkey][processedKey] = newValue; + } + } + } + obj["#name"] = _this.options.tagNameProcessors ? processName(_this.options.tagNameProcessors, node.name) : node.name; + if (_this.options.xmlns) { + obj[_this.options.xmlnskey] = { + uri: node.uri, + local: node.local + }; + } + return stack.push(obj); + }; + })(this); + this.saxParser.onclosetag = (function(_this) { + return function() { + var cdata, emptyStr, err, error1, key, node, nodeName, obj, objClone, old, s, xpath; + obj = stack.pop(); + nodeName = obj["#name"]; + if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) { + delete obj["#name"]; + } + if (obj.cdata === true) { + cdata = obj.cdata; + delete obj.cdata; + } + s = stack[stack.length - 1]; + if (obj[charkey].match(/^\s*$/) && !cdata) { + emptyStr = obj[charkey]; + delete obj[charkey]; + } else { + if (_this.options.trim) { + obj[charkey] = obj[charkey].trim(); + } + if (_this.options.normalize) { + obj[charkey] = obj[charkey].replace(/\s{2,}/g, " ").trim(); + } + obj[charkey] = _this.options.valueProcessors ? processName(_this.options.valueProcessors, obj[charkey]) : obj[charkey]; + if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) { + obj = obj[charkey]; + } + } + if (isEmpty(obj)) { + obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr; + } + if (_this.options.validator != null) { + xpath = "/" + ((function() { + var i, len, results; + results = []; + for (i = 0, len = stack.length; i < len; i++) { + node = stack[i]; + results.push(node["#name"]); + } + return results; + })()).concat(nodeName).join("/"); + try { + obj = _this.options.validator(xpath, s && s[nodeName], obj); + } catch (error1) { + err = error1; + _this.emit("error", err); + } + } + if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') { + if (!_this.options.preserveChildrenOrder) { + node = {}; + if (_this.options.attrkey in obj) { + node[_this.options.attrkey] = obj[_this.options.attrkey]; + delete obj[_this.options.attrkey]; + } + if (!_this.options.charsAsChildren && _this.options.charkey in obj) { + node[_this.options.charkey] = obj[_this.options.charkey]; + delete obj[_this.options.charkey]; + } + if (Object.getOwnPropertyNames(obj).length > 0) { + node[_this.options.childkey] = obj; + } + obj = node; + } else if (s) { + s[_this.options.childkey] = s[_this.options.childkey] || []; + objClone = {}; + for (key in obj) { + if (!hasProp.call(obj, key)) continue; + objClone[key] = obj[key]; + } + s[_this.options.childkey].push(objClone); + delete obj["#name"]; + if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) { + obj = obj[charkey]; + } + } + } + if (stack.length > 0) { + return _this.assignOrPush(s, nodeName, obj); + } else { + if (_this.options.explicitRoot) { + old = obj; + obj = {}; + obj[nodeName] = old; + } + _this.resultObject = obj; + _this.saxParser.ended = true; + return _this.emit("end", _this.resultObject); + } + }; + })(this); + ontext = (function(_this) { + return function(text) { + var charChild, s; + s = stack[stack.length - 1]; + if (s) { + s[charkey] += text; + if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && text.replace(/\\n/g, '').trim() !== '') { + s[_this.options.childkey] = s[_this.options.childkey] || []; + charChild = { + '#name': '__text__' + }; + charChild[charkey] = text; + s[_this.options.childkey].push(charChild); + } + return s; + } + }; + })(this); + this.saxParser.ontext = ontext; + return this.saxParser.oncdata = (function(_this) { + return function(text) { + var s; + s = ontext(text); + if (s) { + return s.cdata = true; + } + }; + })(this); + }; + + Parser.prototype.parseString = function(str, cb) { + var err, error1; + if ((cb != null) && typeof cb === "function") { + this.on("end", function(result) { + this.reset(); + return cb(null, result); + }); + this.on("error", function(err) { + this.reset(); + return cb(err); + }); + } + try { + str = str.toString(); + if (str.trim() === '') { + this.emit("end", null); + return true; + } + str = bom.stripBOM(str); + if (this.options.async) { + this.remaining = str; + setImmediate(this.processAsync); + return this.saxParser; + } + return this.saxParser.write(str).close(); + } catch (error1) { + err = error1; + if (!(this.saxParser.errThrown || this.saxParser.ended)) { + this.emit('error', err); + return this.saxParser.errThrown = true; + } else if (this.saxParser.ended) { + throw err; + } + } + }; + + return Parser; + + })(events.EventEmitter); + + exports.parseString = function(str, a, b) { + var cb, options, parser; + if (b != null) { + if (typeof b === 'function') { + cb = b; + } + if (typeof a === 'object') { + options = a; + } + } else { + if (typeof a === 'function') { + cb = a; + } + options = {}; + } + parser = new exports.Parser(options); + return parser.parseString(str, cb); + }; + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xml2js/package.json b/node_modules/aws-sdk/node_modules/xml2js/package.json new file mode 100644 index 0000000..2d013d9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xml2js/package.json @@ -0,0 +1,258 @@ +{ + "name": "xml2js", + "description": "Simple XML to JavaScript object converter.", + "keywords": [ + "xml", + "json" + ], + "homepage": "https://github.com/Leonidas-from-XIV/node-xml2js", + "version": "0.4.15", + "author": { + "name": "Marek Kubica", + "email": "marek@xivilization.net", + "url": "https://xivilization.net" + }, + "contributors": [ + { + "name": "maqr", + "email": "maqr.lollerskates@gmail.com", + "url": "https://github.com/maqr" + }, + { + "name": "Ben Weaver", + "url": "http://benweaver.com/" + }, + { + "name": "Jae Kwon", + "url": "https://github.com/jaekwon" + }, + { + "name": "Jim Robert" + }, + { + "name": "Ștefan Rusu", + "url": "http://www.saltwaterc.eu/" + }, + { + "name": "Carter Cole", + "email": "carter.cole@cartercole.com", + "url": "http://cartercole.com/" + }, + { + "name": "Kurt Raschke", + "email": "kurt@kurtraschke.com", + "url": "http://www.kurtraschke.com/" + }, + { + "name": "Contra", + "email": "contra@australia.edu", + "url": "https://github.com/Contra" + }, + { + "name": "Marcelo Diniz", + "email": "marudiniz@gmail.com", + "url": "https://github.com/mdiniz" + }, + { + "name": "Michael Hart", + "url": "https://github.com/mhart" + }, + { + "name": "Zachary Scott", + "email": "zachary@zacharyscott.net", + "url": "http://zacharyscott.net/" + }, + { + "name": "Raoul Millais", + "url": "https://github.com/raoulmillais" + }, + { + "name": "Salsita Software", + "url": "http://www.salsitasoft.com/" + }, + { + "name": "Mike Schilling", + "email": "mike@emotive.com", + "url": "http://www.emotive.com/" + }, + { + "name": "Jackson Tian", + "email": "shyvo1987@gmail.com", + "url": "http://weibo.com/shyvo" + }, + { + "name": "Mikhail Zyatin", + "email": "mikhail.zyatin@gmail.com", + "url": "https://github.com/Sitin" + }, + { + "name": "Chris Tavares", + "email": "ctavares@microsoft.com", + "url": "https://github.com/christav" + }, + { + "name": "Frank Xu", + "email": "yyfrankyy@gmail.com", + "url": "http://f2e.us/" + }, + { + "name": "Guido D'Albore", + "email": "guido@bitstorm.it", + "url": "http://www.bitstorm.it/" + }, + { + "name": "Jack Senechal", + "url": "http://jacksenechal.com/" + }, + { + "name": "Matthias Hölzl", + "email": "tc@xantira.com", + "url": "https://github.com/hoelzl" + }, + { + "name": "Camille Reynders", + "email": "info@creynders.be", + "url": "http://www.creynders.be/" + }, + { + "name": "Taylor Gautier", + "url": "https://github.com/tsgautier" + }, + { + "name": "Todd Bryan", + "url": "https://github.com/toddrbryan" + }, + { + "name": "Leore Avidar", + "email": "leore.avidar@gmail.com", + "url": "http://leoreavidar.com/" + }, + { + "name": "Dave Aitken", + "email": "dave.aitken@gmail.com", + "url": "http://www.actionshrimp.com/" + }, + { + "name": "Shaney Orrowe", + "email": "shaney.orrowe@practiceweb.co.uk" + }, + { + "name": "Candle", + "email": "candle@candle.me.uk" + }, + { + "name": "Jess Telford", + "email": "hi@jes.st", + "url": "http://jes.st" + }, + { + "name": "Tom Hughes", + "email": "=0.6.0", + "xmlbuilder": ">=2.4.6" + }, + "devDependencies": { + "coffee-script": ">=1.10.0", + "coveralls": "^2.11.2", + "diff": ">=1.0.8", + "docco": ">=0.6.2", + "nyc": ">=2.2.1", + "zap": ">=0.2.9" + }, + "license": "MIT", + "bugs": { + "url": "https://github.com/Leonidas-from-XIV/node-xml2js/issues" + }, + "_id": "xml2js@0.4.15", + "_shasum": "95cd03ff2dd144ec28bc6273bf2b2890c581ad0c", + "_resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", + "_from": "xml2js@0.4.15", + "_npmVersion": "2.13.3", + "_nodeVersion": "3.3.0", + "_npmUser": { + "name": "leonidas", + "email": "marek@xivilization.net" + }, + "maintainers": [ + { + "name": "leonidas", + "email": "marek@xivilization.net" + } + ], + "dist": { + "shasum": "95cd03ff2dd144ec28bc6273bf2b2890c581ad0c", + "tarball": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" + }, + "readme": "ERROR: No README data found!" +} diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore b/node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore new file mode 100644 index 0000000..3ca4980 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore @@ -0,0 +1,4 @@ +.travis.yml +src +test +perf diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE b/node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE new file mode 100644 index 0000000..e7cbac9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/README.md b/node_modules/aws-sdk/node_modules/xmlbuilder/README.md new file mode 100644 index 0000000..dc1eec6 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/README.md @@ -0,0 +1,84 @@ +# xmlbuilder-js + +An XML builder for [node.js](http://nodejs.org/) similar to +[java-xmlbuilder](https://github.com/jmurty/java-xmlbuilder). + +[![NPM Version](http://img.shields.io/npm/v/xmlbuilder.svg?style=flat-square)](https://npmjs.com/package/xmlbuilder) +[![License](http://img.shields.io/npm/l/xmlbuilder.svg?style=flat-square)](http://opensource.org/licenses/MIT) +[![Build Status](http://img.shields.io/travis/oozcitak/xmlbuilder-js.svg?style=flat-square)](http://travis-ci.org/oozcitak/xmlbuilder-js) +[![Dependency Status](http://img.shields.io/david/oozcitak/xmlbuilder-js.svg?style=flat-square)](https://david-dm.org/oozcitak/xmlbuilder-js) +[![Dev Dependency Status](http://img.shields.io/david/dev/oozcitak/xmlbuilder-js.svg?style=flat-square)](https://david-dm.org/oozcitak/xmlbuilder-js) + +### Installation: + +``` sh +npm install xmlbuilder +``` + +### Usage: + +``` js +var builder = require('xmlbuilder'); +var xml = builder.create('root') + .ele('xmlbuilder', {'for': 'node-js'}) + .ele('repo', {'type': 'git'}, 'git://github.com/oozcitak/xmlbuilder-js.git') + .end({ pretty: true}); + +console.log(xml); +``` + +will result in: + +``` xml + + + + git://github.com/oozcitak/xmlbuilder-js.git + + +``` + +It is also possible to convert objects into nodes: + +``` js +builder.create({ + root: { + xmlbuilder: { + '@for': 'node-js', // attributes start with @ + repo: { + '@type': 'git', + '#text': 'git://github.com/oozcitak/xmlbuilder-js.git' // #text denotes element text + } + } + } +}); +``` + +If you need to do some processing: + +``` js +var root = builder.create('squares'); +root.com('f(x) = x^2'); +for(var i = 1; i <= 5; i++) +{ + var item = root.ele('data'); + item.att('x', i); + item.att('y', i * i); +} +``` + +This will result in: + +``` xml + + + + + + + + + +``` + +See the [wiki](https://github.com/oozcitak/xmlbuilder-js/wiki) for details. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js new file mode 100644 index 0000000..247c9d1 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js @@ -0,0 +1,32 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLAttribute, create; + + create = require('lodash/object/create'); + + module.exports = XMLAttribute = (function() { + function XMLAttribute(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing attribute name of element " + parent.name); + } + if (value == null) { + throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); + } + this.name = this.stringify.attName(name); + this.value = this.stringify.attValue(value); + } + + XMLAttribute.prototype.clone = function() { + return create(XMLAttribute.prototype, this); + }; + + XMLAttribute.prototype.toString = function(options, level) { + return ' ' + this.name + '="' + this.value + '"'; + }; + + return XMLAttribute; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js new file mode 100644 index 0000000..4282833 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js @@ -0,0 +1,69 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; + + XMLStringifier = require('./XMLStringifier'); + + XMLDeclaration = require('./XMLDeclaration'); + + XMLDocType = require('./XMLDocType'); + + XMLElement = require('./XMLElement'); + + module.exports = XMLBuilder = (function() { + function XMLBuilder(name, options) { + var root, temp; + if (name == null) { + throw new Error("Root element needs a name"); + } + if (options == null) { + options = {}; + } + this.options = options; + this.stringify = new XMLStringifier(options); + temp = new XMLElement(this, 'doc'); + root = temp.element(name); + root.isRoot = true; + root.documentObject = this; + this.rootObject = root; + if (!options.headless) { + root.declaration(options); + if ((options.pubID != null) || (options.sysID != null)) { + root.doctype(options); + } + } + } + + XMLBuilder.prototype.root = function() { + return this.rootObject; + }; + + XMLBuilder.prototype.end = function(options) { + return this.toString(options); + }; + + XMLBuilder.prototype.toString = function(options) { + var indent, newline, offset, pretty, r, ref, ref1, ref2; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + r = ''; + if (this.xmldec != null) { + r += this.xmldec.toString(options); + } + if (this.doctype != null) { + r += this.doctype.toString(options); + } + r += this.rootObject.toString(options); + if (pretty && r.slice(-newline.length) === newline) { + r = r.slice(0, -newline.length); + } + return r; + }; + + return XMLBuilder; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js new file mode 100644 index 0000000..00002f1 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js @@ -0,0 +1,49 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLCData, XMLNode, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLCData = (function(superClass) { + extend(XMLCData, superClass); + + function XMLCData(parent, text) { + XMLCData.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing CDATA text"); + } + this.text = this.stringify.cdata(text); + } + + XMLCData.prototype.clone = function() { + return create(XMLCData.prototype, this); + }; + + XMLCData.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLCData; + + })(XMLNode); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js new file mode 100644 index 0000000..ca23e95 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js @@ -0,0 +1,49 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLComment, XMLNode, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLComment = (function(superClass) { + extend(XMLComment, superClass); + + function XMLComment(parent, text) { + XMLComment.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing comment text"); + } + this.text = this.stringify.comment(text); + } + + XMLComment.prototype.clone = function() { + return create(XMLComment.prototype, this); + }; + + XMLComment.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLComment; + + })(XMLNode); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js new file mode 100644 index 0000000..76b63bd --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js @@ -0,0 +1,72 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLDTDAttList, create; + + create = require('lodash/object/create'); + + module.exports = XMLDTDAttList = (function() { + function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { + this.stringify = parent.stringify; + if (elementName == null) { + throw new Error("Missing DTD element name"); + } + if (attributeName == null) { + throw new Error("Missing DTD attribute name"); + } + if (!attributeType) { + throw new Error("Missing DTD attribute type"); + } + if (!defaultValueType) { + throw new Error("Missing DTD attribute default"); + } + if (defaultValueType.indexOf('#') !== 0) { + defaultValueType = '#' + defaultValueType; + } + if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { + throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); + } + if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { + throw new Error("Default value only applies to #FIXED or #DEFAULT"); + } + this.elementName = this.stringify.eleName(elementName); + this.attributeName = this.stringify.attName(attributeName); + this.attributeType = this.stringify.dtdAttType(attributeType); + this.defaultValue = this.stringify.dtdAttDefault(defaultValue); + this.defaultValueType = defaultValueType; + } + + XMLDTDAttList.prototype.clone = function() { + return create(XMLDTDAttList.prototype, this); + }; + + XMLDTDAttList.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDAttList; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js new file mode 100644 index 0000000..7662593 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js @@ -0,0 +1,52 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLDTDElement, create, isArray; + + create = require('lodash/object/create'); + + isArray = require('lodash/lang/isArray'); + + module.exports = XMLDTDElement = (function() { + function XMLDTDElement(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing DTD element name"); + } + if (!value) { + value = '(#PCDATA)'; + } + if (isArray(value)) { + value = '(' + value.join(',') + ')'; + } + this.name = this.stringify.eleName(name); + this.value = this.stringify.dtdElementValue(value); + } + + XMLDTDElement.prototype.clone = function() { + return create(XMLDTDElement.prototype, this); + }; + + XMLDTDElement.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDElement; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js new file mode 100644 index 0000000..13481f9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js @@ -0,0 +1,88 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLDTDEntity, create, isObject; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + module.exports = XMLDTDEntity = (function() { + function XMLDTDEntity(parent, pe, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing entity name"); + } + if (value == null) { + throw new Error("Missing entity value"); + } + this.pe = !!pe; + this.name = this.stringify.eleName(name); + if (!isObject(value)) { + this.value = this.stringify.dtdEntityValue(value); + } else { + if (!value.pubID && !value.sysID) { + throw new Error("Public and/or system identifiers are required for an external entity"); + } + if (value.pubID && !value.sysID) { + throw new Error("System identifier is required for a public external entity"); + } + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + if (value.nData != null) { + this.nData = this.stringify.dtdNData(value.nData); + } + if (this.pe && this.nData) { + throw new Error("Notation declaration is not allowed in a parameter entity"); + } + } + } + + XMLDTDEntity.prototype.clone = function() { + return create(XMLDTDEntity.prototype, this); + }; + + XMLDTDEntity.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDEntity; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js new file mode 100644 index 0000000..928a28c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js @@ -0,0 +1,60 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLDTDNotation, create; + + create = require('lodash/object/create'); + + module.exports = XMLDTDNotation = (function() { + function XMLDTDNotation(parent, name, value) { + this.stringify = parent.stringify; + if (name == null) { + throw new Error("Missing notation name"); + } + if (!value.pubID && !value.sysID) { + throw new Error("Public or system identifiers are required for an external entity"); + } + this.name = this.stringify.eleName(name); + if (value.pubID != null) { + this.pubID = this.stringify.dtdPubID(value.pubID); + } + if (value.sysID != null) { + this.sysID = this.stringify.dtdSysID(value.sysID); + } + } + + XMLDTDNotation.prototype.clone = function() { + return create(XMLDTDNotation.prototype, this); + }; + + XMLDTDNotation.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDTDNotation; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js new file mode 100644 index 0000000..18d3aa9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js @@ -0,0 +1,73 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLDeclaration, XMLNode, create, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLDeclaration = (function(superClass) { + extend(XMLDeclaration, superClass); + + function XMLDeclaration(parent, version, encoding, standalone) { + var ref; + XMLDeclaration.__super__.constructor.call(this, parent); + if (isObject(version)) { + ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; + } + if (!version) { + version = '1.0'; + } + if (version != null) { + this.version = this.stringify.xmlVersion(version); + } + if (encoding != null) { + this.encoding = this.stringify.xmlEncoding(encoding); + } + if (standalone != null) { + this.standalone = this.stringify.xmlStandalone(standalone); + } + } + + XMLDeclaration.prototype.clone = function() { + return create(XMLDeclaration.prototype, this); + }; + + XMLDeclaration.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLDeclaration; + + })(XMLNode); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js new file mode 100644 index 0000000..71460ff --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js @@ -0,0 +1,192 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + XMLCData = require('./XMLCData'); + + XMLComment = require('./XMLComment'); + + XMLDTDAttList = require('./XMLDTDAttList'); + + XMLDTDEntity = require('./XMLDTDEntity'); + + XMLDTDElement = require('./XMLDTDElement'); + + XMLDTDNotation = require('./XMLDTDNotation'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + module.exports = XMLDocType = (function() { + function XMLDocType(parent, pubID, sysID) { + var ref, ref1; + this.documentObject = parent; + this.stringify = this.documentObject.stringify; + this.children = []; + if (isObject(pubID)) { + ref = pubID, pubID = ref.pubID, sysID = ref.sysID; + } + if (sysID == null) { + ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; + } + if (pubID != null) { + this.pubID = this.stringify.dtdPubID(pubID); + } + if (sysID != null) { + this.sysID = this.stringify.dtdSysID(sysID); + } + } + + XMLDocType.prototype.clone = function() { + return create(XMLDocType.prototype, this); + }; + + XMLDocType.prototype.element = function(name, value) { + var child; + child = new XMLDTDElement(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + var child; + child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.entity = function(name, value) { + var child; + child = new XMLDTDEntity(this, false, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.pEntity = function(name, value) { + var child; + child = new XMLDTDEntity(this, true, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.notation = function(name, value) { + var child; + child = new XMLDTDNotation(this, name, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.instruction = function(target, value) { + var child; + child = new XMLProcessingInstruction(this, target, value); + this.children.push(child); + return this; + }; + + XMLDocType.prototype.root = function() { + return this.documentObject.root(); + }; + + XMLDocType.prototype.document = function() { + return this.documentObject; + }; + + XMLDocType.prototype.toString = function(options, level) { + var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ' 0) { + r += ' ['; + if (pretty) { + r += newline; + } + ref3 = this.children; + for (i = 0, len = ref3.length; i < len; i++) { + child = ref3[i]; + r += child.toString(options, level + 1); + } + r += ']'; + } + r += '>'; + if (pretty) { + r += newline; + } + return r; + }; + + XMLDocType.prototype.ele = function(name, value) { + return this.element(name, value); + }; + + XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { + return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); + }; + + XMLDocType.prototype.ent = function(name, value) { + return this.entity(name, value); + }; + + XMLDocType.prototype.pent = function(name, value) { + return this.pEntity(name, value); + }; + + XMLDocType.prototype.not = function(name, value) { + return this.notation(name, value); + }; + + XMLDocType.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLDocType.prototype.com = function(value) { + return this.comment(value); + }; + + XMLDocType.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLDocType.prototype.up = function() { + return this.root(); + }; + + XMLDocType.prototype.doc = function() { + return this.document(); + }; + + return XMLDocType; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js new file mode 100644 index 0000000..e03e1c2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js @@ -0,0 +1,214 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isArray, isFunction, isObject, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + isObject = require('lodash/lang/isObject'); + + isArray = require('lodash/lang/isArray'); + + isFunction = require('lodash/lang/isFunction'); + + every = require('lodash/collection/every'); + + XMLNode = require('./XMLNode'); + + XMLAttribute = require('./XMLAttribute'); + + XMLProcessingInstruction = require('./XMLProcessingInstruction'); + + module.exports = XMLElement = (function(superClass) { + extend(XMLElement, superClass); + + function XMLElement(parent, name, attributes) { + XMLElement.__super__.constructor.call(this, parent); + if (name == null) { + throw new Error("Missing element name"); + } + this.name = this.stringify.eleName(name); + this.children = []; + this.instructions = []; + this.attributes = {}; + if (attributes != null) { + this.attribute(attributes); + } + } + + XMLElement.prototype.clone = function() { + var att, attName, clonedSelf, i, len, pi, ref, ref1; + clonedSelf = create(XMLElement.prototype, this); + if (clonedSelf.isRoot) { + clonedSelf.documentObject = null; + } + clonedSelf.attributes = {}; + ref = this.attributes; + for (attName in ref) { + if (!hasProp.call(ref, attName)) continue; + att = ref[attName]; + clonedSelf.attributes[attName] = att.clone(); + } + clonedSelf.instructions = []; + ref1 = this.instructions; + for (i = 0, len = ref1.length; i < len; i++) { + pi = ref1[i]; + clonedSelf.instructions.push(pi.clone()); + } + clonedSelf.children = []; + this.children.forEach(function(child) { + var clonedChild; + clonedChild = child.clone(); + clonedChild.parent = clonedSelf; + return clonedSelf.children.push(clonedChild); + }); + return clonedSelf; + }; + + XMLElement.prototype.attribute = function(name, value) { + var attName, attValue; + if (name != null) { + name = name.valueOf(); + } + if (isObject(name)) { + for (attName in name) { + if (!hasProp.call(name, attName)) continue; + attValue = name[attName]; + this.attribute(attName, attValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + if (!this.options.skipNullAttributes || (value != null)) { + this.attributes[name] = new XMLAttribute(this, name, value); + } + } + return this; + }; + + XMLElement.prototype.removeAttribute = function(name) { + var attName, i, len; + if (name == null) { + throw new Error("Missing attribute name"); + } + name = name.valueOf(); + if (isArray(name)) { + for (i = 0, len = name.length; i < len; i++) { + attName = name[i]; + delete this.attributes[attName]; + } + } else { + delete this.attributes[name]; + } + return this; + }; + + XMLElement.prototype.instruction = function(target, value) { + var i, insTarget, insValue, instruction, len; + if (target != null) { + target = target.valueOf(); + } + if (value != null) { + value = value.valueOf(); + } + if (isArray(target)) { + for (i = 0, len = target.length; i < len; i++) { + insTarget = target[i]; + this.instruction(insTarget); + } + } else if (isObject(target)) { + for (insTarget in target) { + if (!hasProp.call(target, insTarget)) continue; + insValue = target[insTarget]; + this.instruction(insTarget, insValue); + } + } else { + if (isFunction(value)) { + value = value.apply(); + } + instruction = new XMLProcessingInstruction(this, target, value); + this.instructions.push(instruction); + } + return this; + }; + + XMLElement.prototype.toString = function(options, level) { + var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + ref3 = this.instructions; + for (i = 0, len = ref3.length; i < len; i++) { + instruction = ref3[i]; + r += instruction.toString(options, level + 1); + } + if (pretty) { + r += space; + } + r += '<' + this.name; + ref4 = this.attributes; + for (name in ref4) { + if (!hasProp.call(ref4, name)) continue; + att = ref4[name]; + r += att.toString(options); + } + if (this.children.length === 0 || every(this.children, function(e) { + return e.value === ''; + })) { + r += '/>'; + if (pretty) { + r += newline; + } + } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) { + r += '>'; + r += this.children[0].value; + r += ''; + r += newline; + } else { + r += '>'; + if (pretty) { + r += newline; + } + ref5 = this.children; + for (j = 0, len1 = ref5.length; j < len1; j++) { + child = ref5[j]; + r += child.toString(options, level + 1); + } + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + } + return r; + }; + + XMLElement.prototype.att = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.ins = function(target, value) { + return this.instruction(target, value); + }; + + XMLElement.prototype.a = function(name, value) { + return this.attribute(name, value); + }; + + XMLElement.prototype.i = function(target, value) { + return this.instruction(target, value); + }; + + return XMLElement; + + })(XMLNode); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js new file mode 100644 index 0000000..ed0a5bb --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js @@ -0,0 +1,334 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isArray, isEmpty, isFunction, isObject, + hasProp = {}.hasOwnProperty; + + isObject = require('lodash/lang/isObject'); + + isArray = require('lodash/lang/isArray'); + + isFunction = require('lodash/lang/isFunction'); + + isEmpty = require('lodash/lang/isEmpty'); + + XMLElement = null; + + XMLCData = null; + + XMLComment = null; + + XMLDeclaration = null; + + XMLDocType = null; + + XMLRaw = null; + + XMLText = null; + + module.exports = XMLNode = (function() { + function XMLNode(parent) { + this.parent = parent; + this.options = this.parent.options; + this.stringify = this.parent.stringify; + if (XMLElement === null) { + XMLElement = require('./XMLElement'); + XMLCData = require('./XMLCData'); + XMLComment = require('./XMLComment'); + XMLDeclaration = require('./XMLDeclaration'); + XMLDocType = require('./XMLDocType'); + XMLRaw = require('./XMLRaw'); + XMLText = require('./XMLText'); + } + } + + XMLNode.prototype.clone = function() { + throw new Error("Cannot clone generic XMLNode"); + }; + + XMLNode.prototype.element = function(name, attributes, text) { + var item, j, key, lastChild, len, ref, val; + lastChild = null; + if (attributes == null) { + attributes = {}; + } + attributes = attributes.valueOf(); + if (!isObject(attributes)) { + ref = [attributes, text], text = ref[0], attributes = ref[1]; + } + if (name != null) { + name = name.valueOf(); + } + if (isArray(name)) { + for (j = 0, len = name.length; j < len; j++) { + item = name[j]; + lastChild = this.element(item); + } + } else if (isFunction(name)) { + lastChild = this.element(name.apply()); + } else if (isObject(name)) { + for (key in name) { + if (!hasProp.call(name, key)) continue; + val = name[key]; + if (isFunction(val)) { + val = val.apply(); + } + if ((isObject(val)) && (isEmpty(val))) { + val = null; + } + if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { + lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); + } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) { + lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val); + } else if (isObject(val)) { + if (!this.options.ignoreDecorators && this.stringify.convertListKey && key.indexOf(this.stringify.convertListKey) === 0 && isArray(val)) { + lastChild = this.element(val); + } else { + lastChild = this.element(key); + lastChild.element(val); + } + } else { + lastChild = this.element(key, val); + } + } + } else { + if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { + lastChild = this.text(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { + lastChild = this.cdata(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { + lastChild = this.comment(text); + } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { + lastChild = this.raw(text); + } else { + lastChild = this.node(name, attributes, text); + } + } + if (lastChild == null) { + throw new Error("Could not create any elements with: " + name); + } + return lastChild; + }; + + XMLNode.prototype.insertBefore = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level"); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.insertAfter = function(name, attributes, text) { + var child, i, removed; + if (this.isRoot) { + throw new Error("Cannot insert elements at root level"); + } + i = this.parent.children.indexOf(this); + removed = this.parent.children.splice(i + 1); + child = this.parent.element(name, attributes, text); + Array.prototype.push.apply(this.parent.children, removed); + return child; + }; + + XMLNode.prototype.remove = function() { + var i, ref; + if (this.isRoot) { + throw new Error("Cannot remove the root element"); + } + i = this.parent.children.indexOf(this); + [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref; + return this.parent; + }; + + XMLNode.prototype.node = function(name, attributes, text) { + var child, ref; + if (name != null) { + name = name.valueOf(); + } + if (attributes == null) { + attributes = {}; + } + attributes = attributes.valueOf(); + if (!isObject(attributes)) { + ref = [attributes, text], text = ref[0], attributes = ref[1]; + } + child = new XMLElement(this, name, attributes); + if (text != null) { + child.text(text); + } + this.children.push(child); + return child; + }; + + XMLNode.prototype.text = function(value) { + var child; + child = new XMLText(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.cdata = function(value) { + var child; + child = new XMLCData(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.comment = function(value) { + var child; + child = new XMLComment(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.raw = function(value) { + var child; + child = new XMLRaw(this, value); + this.children.push(child); + return this; + }; + + XMLNode.prototype.declaration = function(version, encoding, standalone) { + var doc, xmldec; + doc = this.document(); + xmldec = new XMLDeclaration(doc, version, encoding, standalone); + doc.xmldec = xmldec; + return doc.root(); + }; + + XMLNode.prototype.doctype = function(pubID, sysID) { + var doc, doctype; + doc = this.document(); + doctype = new XMLDocType(doc, pubID, sysID); + doc.doctype = doctype; + return doctype; + }; + + XMLNode.prototype.up = function() { + if (this.isRoot) { + throw new Error("The root node has no parent. Use doc() if you need to get the document object."); + } + return this.parent; + }; + + XMLNode.prototype.root = function() { + var child; + if (this.isRoot) { + return this; + } + child = this.parent; + while (!child.isRoot) { + child = child.parent; + } + return child; + }; + + XMLNode.prototype.document = function() { + return this.root().documentObject; + }; + + XMLNode.prototype.end = function(options) { + return this.document().toString(options); + }; + + XMLNode.prototype.prev = function() { + var i; + if (this.isRoot) { + throw new Error("Root node has no siblings"); + } + i = this.parent.children.indexOf(this); + if (i < 1) { + throw new Error("Already at the first node"); + } + return this.parent.children[i - 1]; + }; + + XMLNode.prototype.next = function() { + var i; + if (this.isRoot) { + throw new Error("Root node has no siblings"); + } + i = this.parent.children.indexOf(this); + if (i === -1 || i === this.parent.children.length - 1) { + throw new Error("Already at the last node"); + } + return this.parent.children[i + 1]; + }; + + XMLNode.prototype.importXMLBuilder = function(xmlbuilder) { + var clonedRoot; + clonedRoot = xmlbuilder.root().clone(); + clonedRoot.parent = this; + clonedRoot.isRoot = false; + this.children.push(clonedRoot); + return this; + }; + + XMLNode.prototype.ele = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.nod = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.txt = function(value) { + return this.text(value); + }; + + XMLNode.prototype.dat = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.com = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.doc = function() { + return this.document(); + }; + + XMLNode.prototype.dec = function(version, encoding, standalone) { + return this.declaration(version, encoding, standalone); + }; + + XMLNode.prototype.dtd = function(pubID, sysID) { + return this.doctype(pubID, sysID); + }; + + XMLNode.prototype.e = function(name, attributes, text) { + return this.element(name, attributes, text); + }; + + XMLNode.prototype.n = function(name, attributes, text) { + return this.node(name, attributes, text); + }; + + XMLNode.prototype.t = function(value) { + return this.text(value); + }; + + XMLNode.prototype.d = function(value) { + return this.cdata(value); + }; + + XMLNode.prototype.c = function(value) { + return this.comment(value); + }; + + XMLNode.prototype.r = function(value) { + return this.raw(value); + }; + + XMLNode.prototype.u = function() { + return this.up(); + }; + + return XMLNode; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js new file mode 100644 index 0000000..f5d8c6c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js @@ -0,0 +1,51 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLProcessingInstruction, create; + + create = require('lodash/object/create'); + + module.exports = XMLProcessingInstruction = (function() { + function XMLProcessingInstruction(parent, target, value) { + this.stringify = parent.stringify; + if (target == null) { + throw new Error("Missing instruction target"); + } + this.target = this.stringify.insTarget(target); + if (value) { + this.value = this.stringify.insValue(value); + } + } + + XMLProcessingInstruction.prototype.clone = function() { + return create(XMLProcessingInstruction.prototype, this); + }; + + XMLProcessingInstruction.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += ''; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLProcessingInstruction; + + })(); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js new file mode 100644 index 0000000..499d0e2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js @@ -0,0 +1,49 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLNode, XMLRaw, create, + extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, + hasProp = {}.hasOwnProperty; + + create = require('lodash/object/create'); + + XMLNode = require('./XMLNode'); + + module.exports = XMLRaw = (function(superClass) { + extend(XMLRaw, superClass); + + function XMLRaw(parent, text) { + XMLRaw.__super__.constructor.call(this, parent); + if (text == null) { + throw new Error("Missing raw text"); + } + this.value = this.stringify.raw(text); + } + + XMLRaw.prototype.clone = function() { + return create(XMLRaw.prototype, this); + }; + + XMLRaw.prototype.toString = function(options, level) { + var indent, newline, offset, pretty, r, ref, ref1, ref2, space; + pretty = (options != null ? options.pretty : void 0) || false; + indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; + offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; + newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; + level || (level = 0); + space = new Array(level + offset + 1).join(indent); + r = ''; + if (pretty) { + r += space; + } + r += this.value; + if (pretty) { + r += newline; + } + return r; + }; + + return XMLRaw; + + })(XMLNode); + +}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js new file mode 100644 index 0000000..ea2e4ed --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js @@ -0,0 +1,167 @@ +// Generated by CoffeeScript 1.9.1 +(function() { + var XMLStringifier, + bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, + hasProp = {}.hasOwnProperty; + + module.exports = XMLStringifier = (function() { + function XMLStringifier(options) { + this.assertLegalChar = bind(this.assertLegalChar, this); + var key, ref, value; + this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0; + ref = (options != null ? options.stringify : void 0) || {}; + for (key in ref) { + if (!hasProp.call(ref, key)) continue; + value = ref[key]; + this[key] = value; + } + } + + XMLStringifier.prototype.eleName = function(val) { + val = '' + val || ''; + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.eleText = function(val) { + val = '' + val || ''; + return this.assertLegalChar(this.elEscape(val)); + }; + + XMLStringifier.prototype.cdata = function(val) { + val = '' + val || ''; + if (val.match(/]]>/)) { + throw new Error("Invalid CDATA text: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.comment = function(val) { + val = '' + val || ''; + if (val.match(/--/)) { + throw new Error("Comment text cannot contain double-hypen: " + val); + } + return this.assertLegalChar(val); + }; + + XMLStringifier.prototype.raw = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.attName = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.attValue = function(val) { + val = '' + val || ''; + return this.attEscape(val); + }; + + XMLStringifier.prototype.insTarget = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.insValue = function(val) { + val = '' + val || ''; + if (val.match(/\?>/)) { + throw new Error("Invalid processing instruction value: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlVersion = function(val) { + val = '' + val || ''; + if (!val.match(/1\.[0-9]+/)) { + throw new Error("Invalid version number: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlEncoding = function(val) { + val = '' + val || ''; + if (!val.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) { + throw new Error("Invalid encoding: " + val); + } + return val; + }; + + XMLStringifier.prototype.xmlStandalone = function(val) { + if (val) { + return "yes"; + } else { + return "no"; + } + }; + + XMLStringifier.prototype.dtdPubID = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdSysID = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdElementValue = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdAttType = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdAttDefault = function(val) { + if (val != null) { + return '' + val || ''; + } else { + return val; + } + }; + + XMLStringifier.prototype.dtdEntityValue = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.dtdNData = function(val) { + return '' + val || ''; + }; + + XMLStringifier.prototype.convertAttKey = '@'; + + XMLStringifier.prototype.convertPIKey = '?'; + + XMLStringifier.prototype.convertTextKey = '#text'; + + XMLStringifier.prototype.convertCDataKey = '#cdata'; + + XMLStringifier.prototype.convertCommentKey = '#comment'; + + XMLStringifier.prototype.convertRawKey = '#raw'; + + XMLStringifier.prototype.convertListKey = '#list'; + + XMLStringifier.prototype.assertLegalChar = function(str) { + var chars, chr; + if (this.allowSurrogateChars) { + chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/; + } else { + chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/; + } + chr = str.match(chars); + if (chr) { + throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index); + } + return str; + }; + + XMLStringifier.prototype.elEscape = function(str) { + return str.replace(/&/g, '&').replace(//g, '>').replace(/\r/g, ' '); + }; + + XMLStringifier.prototype.attEscape = function(str) { + return str.replace(/&/g, '&').replace(/ +Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md new file mode 100644 index 0000000..b44492c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md @@ -0,0 +1,116 @@ +# lodash v3.5.0 + +The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) modules. + +Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli): +```bash +$ lodash modularize modern exports=node -o ./ +$ lodash modern -d -o ./index.js +``` + +## Installation + +Using npm: + +```bash +$ {sudo -H} npm i -g npm +$ npm i --save lodash +``` + +In Node.js/io.js: + +```js +// load the modern build +var _ = require('lodash'); +// or a method category +var array = require('lodash/array'); +// or a method (great for smaller builds with browserify/webpack) +var chunk = require('lodash/array/chunk'); +``` + +See the [package source](https://github.com/lodash/lodash/tree/3.5.0-npm) for more details. + +**Note:**
+Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL.
+Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash by default. + +## Module formats + +lodash is also available in a variety of other builds & module formats. + + * npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds + * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.5.0-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.5.0-amd) builds + * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.5.0-es) build + +## Further Reading + + * [API Documentation](https://lodash.com/docs) + * [Build Differences](https://github.com/lodash/lodash/wiki/Build-Differences) + * [Changelog](https://github.com/lodash/lodash/wiki/Changelog) + * [Release Notes](https://github.com/lodash/lodash/releases) + * [Roadmap](https://github.com/lodash/lodash/wiki/Roadmap) + * [More Resources](https://github.com/lodash/lodash/wiki/Resources) + +## Features *not* in Underscore + + * ~100% [code coverage](https://coveralls.io/r/lodash) + * Follows [semantic versioning](http://semver.org/) for releases + * [Lazily evaluated](http://filimanjaro.com/blog/2014/introducing-lazy-evaluation/) chaining + * [_(…)](https://lodash.com/docs#_) supports intuitive chaining + * [_.add](https://lodash.com/docs#add) for mathematical composition + * [_.ary](https://lodash.com/docs#ary) & [_.rearg](https://lodash.com/docs#rearg) to change function argument limits & order + * [_.at](https://lodash.com/docs#at) for cherry-picking collection values + * [_.attempt](https://lodash.com/docs#attempt) to execute functions which may error without a try-catch + * [_.before](https://lodash.com/docs#before) to complement [_.after](https://lodash.com/docs#after) + * [_.bindKey](https://lodash.com/docs#bindKey) for binding [*“lazyâ€*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods + * [_.chunk](https://lodash.com/docs#chunk) for splitting an array into chunks of a given size + * [_.clone](https://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects + * [_.cloneDeep](https://lodash.com/docs#cloneDeep) for deep cloning arrays & objects + * [_.create](https://lodash.com/docs#create) for easier object inheritance + * [_.curry](https://lodash.com/docs#curry) & [_.curryRight](https://lodash.com/docs#curryRight) for creating [curried](http://hughfdjackson.com/javascript/why-curry-helps/) functions + * [_.debounce](https://lodash.com/docs#debounce) & [_.throttle](https://lodash.com/docs#throttle) are cancelable & accept options for more control + * [_.fill](https://lodash.com/docs#fill) to fill arrays with values + * [_.findKey](https://lodash.com/docs#findKey) for finding keys + * [_.flow](https://lodash.com/docs#flow) to complement [_.flowRight](https://lodash.com/docs#flowRight) (a.k.a `_.compose`) + * [_.forEach](https://lodash.com/docs#forEach) supports exiting early + * [_.forIn](https://lodash.com/docs#forIn) for iterating all enumerable properties + * [_.forOwn](https://lodash.com/docs#forOwn) for iterating own properties + * [_.inRange](https://lodash.com/docs#inRange) for checking whether a number is within a given range + * [_.isNative](https://lodash.com/docs#isNative) to check for native functions + * [_.isPlainObject](https://lodash.com/docs#isPlainObject) & [_.toPlainObject](https://lodash.com/docs#toPlainObject) to check for & convert to `Object` objects + * [_.isTypedArray](https://lodash.com/docs#isTypedArray) to check for typed arrays + * [_.matches](https://lodash.com/docs#matches) supports deep object comparisons + * [_.matchesProperty](https://lodash.com/docs#matchesProperty) to complement [_.matches](https://lodash.com/docs#matches) & [_.property](https://lodash.com/docs#property) + * [_.merge](https://lodash.com/docs#merge) for a deep [_.extend](https://lodash.com/docs#extend) + * [_.parseInt](https://lodash.com/docs#parseInt) for consistent cross-environment behavior + * [_.pull](https://lodash.com/docs#pull), [_.pullAt](https://lodash.com/docs#pullAt), & [_.remove](https://lodash.com/docs#remove) for mutating arrays + * [_.random](https://lodash.com/docs#random) supports returning floating-point numbers + * [_.runInContext](https://lodash.com/docs#runInContext) for collisionless mixins & easier mocking + * [_.slice](https://lodash.com/docs#slice) for creating subsets of array-like values + * [_.sortByAll](https://lodash.com/docs#sortByAll) & [_.sortByOrder](https://lodash.com/docs#sortByOrder) for sorting by multiple properties & orders + * [_.spread](https://lodash.com/docs#spread) for creating a function to spread an array of arguments to another + * [_.sum](https://lodash.com/docs#sum) to get the sum of values + * [_.support](https://lodash.com/docs#support) for flagging environment features + * [_.template](https://lodash.com/docs#template) supports [*“importsâ€*](https://lodash.com/docs#templateSettings-imports) options & [ES template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components) + * [_.transform](https://lodash.com/docs#transform) as a powerful alternative to [_.reduce](https://lodash.com/docs#reduce) for transforming objects + * [_.xor](https://lodash.com/docs#xor) to complement [_.difference](https://lodash.com/docs#difference), [_.intersection](https://lodash.com/docs#intersection), & [_.union](https://lodash.com/docs#union) + * [_.valuesIn](https://lodash.com/docs#valuesIn) for getting values of all enumerable properties + * [_.bind](https://lodash.com/docs#bind), [_.curry](https://lodash.com/docs#curry), [_.partial](https://lodash.com/docs#partial), & + [more](https://lodash.com/docs "_.bindKey, _.curryRight, _.partialRight") support customizable argument placeholders + * [_.capitalize](https://lodash.com/docs#capitalize), [_.trim](https://lodash.com/docs#trim), & + [more](https://lodash.com/docs "_.camelCase, _.deburr, _.endsWith, _.escapeRegExp, _.kebabCase, _.pad, _.padLeft, _.padRight, _.repeat, _.snakeCase, _.startCase, _.startsWith, _.trimLeft, _.trimRight, _.trunc, _.words") string methods + * [_.clone](https://lodash.com/docs#clone), [_.isEqual](https://lodash.com/docs#isEqual), & + [more](https://lodash.com/docs "_.assign, _.cloneDeep, _.merge") accept callbacks + * [_.dropWhile](https://lodash.com/docs#dropWhile), [_.takeWhile](https://lodash.com/docs#takeWhile), & + [more](https://lodash.com/docs "_.drop, _.dropRightWhile, _.take, _.takeRightWhile") to complement [_.first](https://lodash.com/docs#first), [_.initial](https://lodash.com/docs#initial), [_.last](https://lodash.com/docs#last), & [_.rest](https://lodash.com/docs#rest) + * [_.findLast](https://lodash.com/docs#findLast), [_.findLastKey](https://lodash.com/docs#findLastKey), & + [more](https://lodash.com/docs "_.flowRight, _.forEachRight, _.forInRight, _.forOwnRight, _.partialRight") right-associative methods + * [_.includes](https://lodash.com/docs#includes), [_.toArray](https://lodash.com/docs#toArray), & + [more](https://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.findLast, _.forEach, _.forEachRight, _.groupBy, _.indexBy, _.invoke, _.map, _.max, _.min, _.partition, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy") accept strings + * [_#commit](https://lodash.com/docs#prototype-commit) & [_#plant](https://lodash.com/docs#prototype-plant) for working with chain sequences + * [_#thru](https://lodash.com/docs#thru) to pass values thru a chain sequence + +## Support + +Tested in Chrome 40-41, Firefox 35-36, IE 6-11, Opera 26-27, Safari 5-8, io.js 1.5.0, Node.js 0.8.28, 0.10.36, & 0.12.0, PhantomJS 1.9.8, RingoJS 0.11, & Rhino 1.7RC5. +Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. Special thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js new file mode 100644 index 0000000..6ef12c7 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js @@ -0,0 +1,42 @@ +module.exports = { + 'chunk': require('./array/chunk'), + 'compact': require('./array/compact'), + 'difference': require('./array/difference'), + 'drop': require('./array/drop'), + 'dropRight': require('./array/dropRight'), + 'dropRightWhile': require('./array/dropRightWhile'), + 'dropWhile': require('./array/dropWhile'), + 'fill': require('./array/fill'), + 'findIndex': require('./array/findIndex'), + 'findLastIndex': require('./array/findLastIndex'), + 'first': require('./array/first'), + 'flatten': require('./array/flatten'), + 'flattenDeep': require('./array/flattenDeep'), + 'head': require('./array/head'), + 'indexOf': require('./array/indexOf'), + 'initial': require('./array/initial'), + 'intersection': require('./array/intersection'), + 'last': require('./array/last'), + 'lastIndexOf': require('./array/lastIndexOf'), + 'object': require('./array/object'), + 'pull': require('./array/pull'), + 'pullAt': require('./array/pullAt'), + 'remove': require('./array/remove'), + 'rest': require('./array/rest'), + 'slice': require('./array/slice'), + 'sortedIndex': require('./array/sortedIndex'), + 'sortedLastIndex': require('./array/sortedLastIndex'), + 'tail': require('./array/tail'), + 'take': require('./array/take'), + 'takeRight': require('./array/takeRight'), + 'takeRightWhile': require('./array/takeRightWhile'), + 'takeWhile': require('./array/takeWhile'), + 'union': require('./array/union'), + 'uniq': require('./array/uniq'), + 'unique': require('./array/unique'), + 'unzip': require('./array/unzip'), + 'without': require('./array/without'), + 'xor': require('./array/xor'), + 'zip': require('./array/zip'), + 'zipObject': require('./array/zipObject') +}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js new file mode 100644 index 0000000..4de9b39 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js @@ -0,0 +1,47 @@ +var baseSlice = require('../internal/baseSlice'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** Native method references. */ +var ceil = Math.ceil; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates an array of elements split into groups the length of `size`. + * If `collection` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new array containing chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ +function chunk(array, size, guard) { + if (guard ? isIterateeCall(array, size, guard) : size == null) { + size = 1; + } else { + size = nativeMax(+size || 1, 1); + } + var index = 0, + length = array ? array.length : 0, + resIndex = -1, + result = Array(ceil(length / size)); + + while (index < length) { + result[++resIndex] = baseSlice(array, index, (index += size)); + } + return result; +} + +module.exports = chunk; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js new file mode 100644 index 0000000..1dc1c55 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js @@ -0,0 +1,30 @@ +/** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ +function compact(array) { + var index = -1, + length = array ? array.length : 0, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[++resIndex] = value; + } + } + return result; +} + +module.exports = compact; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js new file mode 100644 index 0000000..d05774e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js @@ -0,0 +1,40 @@ +var baseDifference = require('../internal/baseDifference'), + baseFlatten = require('../internal/baseFlatten'), + isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'); + +/** + * Creates an array excluding all values of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The arrays of values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.difference([1, 2, 3], [4, 2]); + * // => [1, 3] + */ +function difference() { + var args = arguments, + index = -1, + length = args.length; + + while (++index < length) { + var value = args[index]; + if (isArray(value) || isArguments(value)) { + break; + } + } + return baseDifference(value, baseFlatten(args, false, true, ++index)); +} + +module.exports = difference; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js new file mode 100644 index 0000000..039a0b5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js @@ -0,0 +1,39 @@ +var baseSlice = require('../internal/baseSlice'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ +function drop(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, n < 0 ? 0 : n); +} + +module.exports = drop; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js new file mode 100644 index 0000000..14b5eb6 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js @@ -0,0 +1,40 @@ +var baseSlice = require('../internal/baseSlice'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ +function dropRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, 0, n < 0 ? 0 : n); +} + +module.exports = dropRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js new file mode 100644 index 0000000..8135410 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js @@ -0,0 +1,63 @@ +var baseCallback = require('../internal/baseCallback'), + baseSlice = require('../internal/baseSlice'); + +/** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that match the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [1] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); + * // => ['barney'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ +function dropRightWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + predicate = baseCallback(predicate, thisArg, 3); + while (length-- && predicate(array[length], length, array)) {} + return baseSlice(array, 0, length + 1); +} + +module.exports = dropRightWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js new file mode 100644 index 0000000..2c88099 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js @@ -0,0 +1,64 @@ +var baseCallback = require('../internal/baseCallback'), + baseSlice = require('../internal/baseSlice'); + +/** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [3] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropWhile(users, 'active', false), 'user'); + * // => ['pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ +function dropWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + var index = -1; + predicate = baseCallback(predicate, thisArg, 3); + while (++index < length && predicate(array[index], index, array)) {} + return baseSlice(array, index); +} + +module.exports = dropWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js new file mode 100644 index 0000000..44811d3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js @@ -0,0 +1,31 @@ +var baseFill = require('../internal/baseFill'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ +function fill(array, value, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); +} + +module.exports = fill; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js new file mode 100644 index 0000000..0c2ef30 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js @@ -0,0 +1,64 @@ +var baseCallback = require('../internal/baseCallback'); + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for, instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(chr) { + * return chr.user == 'barney'; + * }); + * // => 0 + * + * // using the `_.matches` callback shorthand + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // using the `_.matchesProperty` callback shorthand + * _.findIndex(users, 'active', false); + * // => 0 + * + * // using the `_.property` callback shorthand + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, thisArg) { + var index = -1, + length = array ? array.length : 0; + + predicate = baseCallback(predicate, thisArg, 3); + while (++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +module.exports = findIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js new file mode 100644 index 0000000..7fdcc4a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js @@ -0,0 +1,62 @@ +var baseCallback = require('../internal/baseCallback'); + +/** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(chr) { + * return chr.user == 'pebbles'; + * }); + * // => 2 + * + * // using the `_.matches` callback shorthand + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastIndex(users, 'active', false); + * // => 2 + * + * // using the `_.property` callback shorthand + * _.findLastIndex(users, 'active'); + * // => 0 + */ +function findLastIndex(array, predicate, thisArg) { + var length = array ? array.length : 0; + predicate = baseCallback(predicate, thisArg, 3); + while (length--) { + if (predicate(array[length], length, array)) { + return length; + } + } + return -1; +} + +module.exports = findLastIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js new file mode 100644 index 0000000..b3b9c79 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js @@ -0,0 +1,22 @@ +/** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @alias head + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.first([1, 2, 3]); + * // => 1 + * + * _.first([]); + * // => undefined + */ +function first(array) { + return array ? array[0] : undefined; +} + +module.exports = first; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js new file mode 100644 index 0000000..4460c2d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js @@ -0,0 +1,32 @@ +var baseFlatten = require('../internal/baseFlatten'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Flattens a nested array. If `isDeep` is `true` the array is recursively + * flattened, otherwise it is only flattened a single level. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to flatten. + * @param {boolean} [isDeep] Specify a deep flatten. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, 3, [4]]]); + * // => [1, 2, 3, [4]]; + * + * // using `isDeep` + * _.flatten([1, [2, 3, [4]]], true); + * // => [1, 2, 3, 4]; + */ +function flatten(array, isDeep, guard) { + var length = array ? array.length : 0; + if (guard && isIterateeCall(array, isDeep, guard)) { + isDeep = false; + } + return length ? baseFlatten(array, isDeep, false, 0) : []; +} + +module.exports = flatten; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js new file mode 100644 index 0000000..ae498bb --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js @@ -0,0 +1,21 @@ +var baseFlatten = require('../internal/baseFlatten'); + +/** + * Recursively flattens a nested array. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to recursively flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, 3, [4]]]); + * // => [1, 2, 3, 4]; + */ +function flattenDeep(array) { + var length = array ? array.length : 0; + return length ? baseFlatten(array, true, false, 0) : []; +} + +module.exports = flattenDeep; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js new file mode 100644 index 0000000..1961b08 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js @@ -0,0 +1 @@ +module.exports = require('./first'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js new file mode 100644 index 0000000..b6d2a7d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js @@ -0,0 +1,58 @@ +var baseIndexOf = require('../internal/baseIndexOf'), + binaryIndex = require('../internal/binaryIndex'); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Gets the index at which the first occurrence of `value` is found in `array` + * using `SameValueZero` for equality comparisons. If `fromIndex` is negative, + * it is used as the offset from the end of `array`. If `array` is sorted + * providing `true` for `fromIndex` performs a faster binary search. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=0] The index to search from or `true` + * to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // using `fromIndex` + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + * + * // performing a binary search + * _.indexOf([1, 1, 2, 2], 2, true); + * // => 2 + */ +function indexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; + } else if (fromIndex) { + var index = binaryIndex(array, value), + other = array[index]; + + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + return baseIndexOf(array, value, fromIndex || 0); +} + +module.exports = indexOf; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js new file mode 100644 index 0000000..59b7a7d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js @@ -0,0 +1,20 @@ +var dropRight = require('./dropRight'); + +/** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ +function initial(array) { + return dropRight(array, 1); +} + +module.exports = initial; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js new file mode 100644 index 0000000..bc7c803 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js @@ -0,0 +1,67 @@ +var baseIndexOf = require('../internal/baseIndexOf'), + cacheIndexOf = require('../internal/cacheIndexOf'), + createCache = require('../internal/createCache'), + isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'); + +/** + * Creates an array of unique values in all provided arrays using `SameValueZero` + * for equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of shared values. + * @example + * _.intersection([1, 2], [4, 2], [2, 1]); + * // => [2] + */ +function intersection() { + var args = [], + argsIndex = -1, + argsLength = arguments.length, + caches = [], + indexOf = baseIndexOf, + isCommon = true; + + while (++argsIndex < argsLength) { + var value = arguments[argsIndex]; + if (isArray(value) || isArguments(value)) { + args.push(value); + caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null); + } + } + argsLength = args.length; + var array = args[0], + index = -1, + length = array ? array.length : 0, + result = [], + seen = caches[0]; + + outer: + while (++index < length) { + value = array[index]; + if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { + argsIndex = argsLength; + while (--argsIndex) { + var cache = caches[argsIndex]; + if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) { + continue outer; + } + } + if (seen) { + seen.push(value); + } + result.push(value); + } + } + return result; +} + +module.exports = intersection; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js new file mode 100644 index 0000000..299af31 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js @@ -0,0 +1,19 @@ +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ +function last(array) { + var length = array ? array.length : 0; + return length ? array[length - 1] : undefined; +} + +module.exports = last; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js new file mode 100644 index 0000000..02b8062 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js @@ -0,0 +1,60 @@ +var binaryIndex = require('../internal/binaryIndex'), + indexOfNaN = require('../internal/indexOfNaN'); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max, + nativeMin = Math.min; + +/** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=array.length-1] The index to search from + * or `true` to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // using `fromIndex` + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + * + * // performing a binary search + * _.lastIndexOf([1, 1, 2, 2], 2, true); + * // => 3 + */ +function lastIndexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + var index = length; + if (typeof fromIndex == 'number') { + index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; + } else if (fromIndex) { + index = binaryIndex(array, value, true) - 1; + var other = array[index]; + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + if (value !== value) { + return indexOfNaN(array, index, true); + } + while (index--) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +module.exports = lastIndexOf; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js new file mode 100644 index 0000000..f4a3453 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js @@ -0,0 +1 @@ +module.exports = require('./zipObject'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js new file mode 100644 index 0000000..11e43a3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js @@ -0,0 +1,55 @@ +var baseIndexOf = require('../internal/baseIndexOf'); + +/** Used for native method references. */ +var arrayProto = Array.prototype; + +/** Native method references. */ +var splice = arrayProto.splice; + +/** + * Removes all provided values from `array` using `SameValueZero` for equality + * comparisons. + * + * **Notes:** + * - Unlike `_.without`, this method mutates `array`. + * - `SameValueZero` comparisons are like strict equality comparisons, e.g. `===`, + * except that `NaN` matches `NaN`. See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3, 1, 2, 3]; + * + * _.pull(array, 2, 3); + * console.log(array); + * // => [1, 1] + */ +function pull() { + var args = arguments, + array = args[0]; + + if (!(array && array.length)) { + return array; + } + var index = 0, + indexOf = baseIndexOf, + length = args.length; + + while (++index < length) { + var fromIndex = 0, + value = args[index]; + + while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { + splice.call(array, fromIndex, 1); + } + } + return array; +} + +module.exports = pull; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js new file mode 100644 index 0000000..706e73c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js @@ -0,0 +1,33 @@ +var baseFlatten = require('../internal/baseFlatten'), + basePullAt = require('../internal/basePullAt'); + +/** + * Removes elements from `array` corresponding to the given indexes and returns + * an array of the removed elements. Indexes may be specified as an array of + * indexes or as individual arguments. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove, + * specified as individual indexes or arrays of indexes. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [5, 10, 15, 20]; + * var evens = _.pullAt(array, 1, 3); + * + * console.log(array); + * // => [5, 15] + * + * console.log(evens); + * // => [10, 20] + */ +function pullAt(array) { + return basePullAt(array || [], baseFlatten(arguments, false, false, 1)); +} + +module.exports = pullAt; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js new file mode 100644 index 0000000..52fc526 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js @@ -0,0 +1,65 @@ +var baseCallback = require('../internal/baseCallback'); + +/** Used for native method references. */ +var arrayProto = Array.prototype; + +/** Native method references. */ +var splice = arrayProto.splice; + +/** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is bound to + * `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** Unlike `_.filter`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ +function remove(array, predicate, thisArg) { + var index = -1, + length = array ? array.length : 0, + result = []; + + predicate = baseCallback(predicate, thisArg, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + splice.call(array, index--, 1); + length--; + } + } + return result; +} + +module.exports = remove; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js new file mode 100644 index 0000000..9bfb734 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js @@ -0,0 +1,21 @@ +var drop = require('./drop'); + +/** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @alias tail + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.rest([1, 2, 3]); + * // => [2, 3] + */ +function rest(array) { + return drop(array, 1); +} + +module.exports = rest; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js new file mode 100644 index 0000000..ee6fb73 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js @@ -0,0 +1,30 @@ +var baseSlice = require('../internal/baseSlice'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This function is used instead of `Array#slice` to support node + * lists in IE < 9 and to ensure dense arrays are returned. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ +function slice(array, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + return baseSlice(array, start, end); +} + +module.exports = slice; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js new file mode 100644 index 0000000..fdc5e30 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js @@ -0,0 +1,59 @@ +var baseCallback = require('../internal/baseCallback'), + binaryIndex = require('../internal/binaryIndex'), + binaryIndexBy = require('../internal/binaryIndexBy'); + +/** + * Uses a binary search to determine the lowest index at which `value` should + * be inserted into `array` in order to maintain its sort order. If an iteratee + * function is provided it is invoked for `value` and each element of `array` + * to compute their sort ranking. The iteratee is bound to `thisArg` and + * invoked with one argument; (value). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + * + * _.sortedIndex([4, 4, 5, 5], 5); + * // => 2 + * + * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; + * + * // using an iteratee function + * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { + * return this.data[word]; + * }, dict); + * // => 1 + * + * // using the `_.property` callback shorthand + * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); + * // => 1 + */ +function sortedIndex(array, value, iteratee, thisArg) { + return iteratee == null + ? binaryIndex(array, value) + : binaryIndexBy(array, value, baseCallback(iteratee, thisArg, 1)); +} + +module.exports = sortedIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js new file mode 100644 index 0000000..6936d4e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js @@ -0,0 +1,31 @@ +var baseCallback = require('../internal/baseCallback'), + binaryIndex = require('../internal/binaryIndex'), + binaryIndexBy = require('../internal/binaryIndexBy'); + +/** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 4, 5, 5], 5); + * // => 4 + */ +function sortedLastIndex(array, value, iteratee, thisArg) { + return iteratee == null + ? binaryIndex(array, value, true) + : binaryIndexBy(array, value, baseCallback(iteratee, thisArg, 1), true); +} + +module.exports = sortedLastIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js new file mode 100644 index 0000000..c5dfe77 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js @@ -0,0 +1 @@ +module.exports = require('./rest'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js new file mode 100644 index 0000000..875917a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js @@ -0,0 +1,39 @@ +var baseSlice = require('../internal/baseSlice'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ +function take(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, 0, n < 0 ? 0 : n); +} + +module.exports = take; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js new file mode 100644 index 0000000..6e89c87 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js @@ -0,0 +1,40 @@ +var baseSlice = require('../internal/baseSlice'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ +function takeRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, n < 0 ? 0 : n); +} + +module.exports = takeRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js new file mode 100644 index 0000000..57bb0ef --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js @@ -0,0 +1,63 @@ +var baseCallback = require('../internal/baseCallback'), + baseSlice = require('../internal/baseSlice'); + +/** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is bound to `thisArg` + * and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [2, 3] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active'), 'user'); + * // => [] + */ +function takeRightWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + predicate = baseCallback(predicate, thisArg, 3); + while (length-- && predicate(array[length], length, array)) {} + return baseSlice(array, length + 1); +} + +module.exports = takeRightWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js new file mode 100644 index 0000000..890e34a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js @@ -0,0 +1,64 @@ +var baseCallback = require('../internal/baseCallback'), + baseSlice = require('../internal/baseSlice'); + +/** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is bound to + * `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [1, 2] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false}, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeWhile(users, 'active', false), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeWhile(users, 'active'), 'user'); + * // => [] + */ +function takeWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + var index = -1; + predicate = baseCallback(predicate, thisArg, 3); + while (++index < length && predicate(array[index], index, array)) {} + return baseSlice(array, 0, index); +} + +module.exports = takeWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js new file mode 100644 index 0000000..bb78dac --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js @@ -0,0 +1,27 @@ +var baseFlatten = require('../internal/baseFlatten'), + baseUniq = require('../internal/baseUniq'); + +/** + * Creates an array of unique values, in order, of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([1, 2], [4, 2], [2, 1]); + * // => [1, 2, 4] + */ +function union() { + return baseUniq(baseFlatten(arguments, false, true, 0)); +} + +module.exports = union; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js new file mode 100644 index 0000000..6b30328 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js @@ -0,0 +1,74 @@ +var baseCallback = require('../internal/baseCallback'), + baseUniq = require('../internal/baseUniq'), + isIterateeCall = require('../internal/isIterateeCall'), + sortedUniq = require('../internal/sortedUniq'); + +/** + * Creates a duplicate-value-free version of an array using `SameValueZero` + * for equality comparisons. Providing `true` for `isSorted` performs a faster + * search algorithm for sorted arrays. If an iteratee function is provided it + * is invoked for each value in the array to generate the criterion by which + * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked + * with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @alias unique + * @category Array + * @param {Array} array The array to inspect. + * @param {boolean} [isSorted] Specify the array is sorted. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new duplicate-value-free array. + * @example + * + * _.uniq([1, 2, 1]); + * // => [1, 2] + * + * // using `isSorted` + * _.uniq([1, 1, 2], true); + * // => [1, 2] + * + * // using an iteratee function + * _.uniq([1, 2.5, 1.5, 2], function(n) { + * return this.floor(n); + * }, Math); + * // => [1, 2.5] + * + * // using the `_.property` callback shorthand + * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ +function uniq(array, isSorted, iteratee, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (isSorted != null && typeof isSorted != 'boolean') { + thisArg = iteratee; + iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted; + isSorted = false; + } + iteratee = iteratee == null ? iteratee : baseCallback(iteratee, thisArg, 3); + return (isSorted) + ? sortedUniq(array, iteratee) + : baseUniq(array, iteratee); +} + +module.exports = uniq; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js new file mode 100644 index 0000000..396de1b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js @@ -0,0 +1 @@ +module.exports = require('./uniq'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js new file mode 100644 index 0000000..f7f8558 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js @@ -0,0 +1,37 @@ +var arrayMap = require('../internal/arrayMap'), + arrayMax = require('../internal/arrayMax'), + baseProperty = require('../internal/baseProperty'); + +/** Used to the length of n-tuples for `_.unzip`. */ +var getLength = baseProperty('length'); + +/** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-`_.zip` + * configuration. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + * + * _.unzip(zipped); + * // => [['fred', 'barney'], [30, 40], [true, false]] + */ +function unzip(array) { + var index = -1, + length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0, + result = Array(length); + + while (++index < length) { + result[index] = arrayMap(array, baseProperty(index)); + } + return result; +} + +module.exports = unzip; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js new file mode 100644 index 0000000..e74c403 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js @@ -0,0 +1,28 @@ +var baseDifference = require('../internal/baseDifference'), + baseSlice = require('../internal/baseSlice'); + +/** + * Creates an array excluding all provided values using `SameValueZero` for + * equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to filter. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.without([1, 2, 1, 3], 1, 2); + * // => [3] + */ +function without(array) { + return baseDifference(array, baseSlice(arguments, 1)); +} + +module.exports = without; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js new file mode 100644 index 0000000..fcdec8e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js @@ -0,0 +1,36 @@ +var baseDifference = require('../internal/baseDifference'), + baseUniq = require('../internal/baseUniq'), + isArguments = require('../lang/isArguments'), + isArray = require('../lang/isArray'); + +/** + * Creates an array that is the symmetric difference of the provided arrays. + * See [Wikipedia](https://en.wikipedia.org/wiki/Symmetric_difference) for + * more details. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of values. + * @example + * + * _.xor([1, 2], [4, 2]); + * // => [1, 4] + */ +function xor() { + var index = -1, + length = arguments.length; + + while (++index < length) { + var array = arguments[index]; + if (isArray(array) || isArguments(array)) { + var result = result + ? baseDifference(result, array).concat(baseDifference(array, result)) + : array; + } + } + return result ? baseUniq(result) : []; +} + +module.exports = xor; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js new file mode 100644 index 0000000..039bac0 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js @@ -0,0 +1,28 @@ +var unzip = require('./unzip'); + +/** + * Creates an array of grouped elements, the first of which contains the first + * elements of the given arrays, the second of which contains the second elements + * of the given arrays, and so on. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + */ +function zip() { + var length = arguments.length, + array = Array(length); + + while (length--) { + array[length] = arguments[length]; + } + return unzip(array); +} + +module.exports = zip; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js new file mode 100644 index 0000000..bc3f952 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js @@ -0,0 +1,39 @@ +var isArray = require('../lang/isArray'); + +/** + * Creates an object composed from arrays of property names and values. Provide + * either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]` + * or two arrays, one of property names and one of corresponding values. + * + * @static + * @memberOf _ + * @alias object + * @category Array + * @param {Array} props The property names. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['fred', 'barney'], [30, 40]); + * // => { 'fred': 30, 'barney': 40 } + */ +function zipObject(props, values) { + var index = -1, + length = props ? props.length : 0, + result = {}; + + if (length && !values && !isArray(props[0])) { + values = []; + } + while (++index < length) { + var key = props[index]; + if (values) { + result[key] = values[index]; + } else if (key) { + result[key[0]] = key[1]; + } + } + return result; +} + +module.exports = zipObject; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js new file mode 100644 index 0000000..7992b73 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js @@ -0,0 +1,15 @@ +module.exports = { + 'chain': require('./chain/chain'), + 'commit': require('./chain/commit'), + 'lodash': require('./chain/lodash'), + 'plant': require('./chain/plant'), + 'reverse': require('./chain/reverse'), + 'run': require('./chain/run'), + 'tap': require('./chain/tap'), + 'thru': require('./chain/thru'), + 'toJSON': require('./chain/toJSON'), + 'toString': require('./chain/toString'), + 'value': require('./chain/value'), + 'valueOf': require('./chain/valueOf'), + 'wrapperChain': require('./chain/wrapperChain') +}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js new file mode 100644 index 0000000..453ba1e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js @@ -0,0 +1,35 @@ +var lodash = require('./lodash'); + +/** + * Creates a `lodash` object that wraps `value` with explicit method + * chaining enabled. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _.chain(users) + * .sortBy('age') + * .map(function(chr) { + * return chr.user + ' is ' + chr.age; + * }) + * .first() + * .value(); + * // => 'pebbles is 1' + */ +function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; +} + +module.exports = chain; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js new file mode 100644 index 0000000..c732d1b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js @@ -0,0 +1 @@ +module.exports = require('./wrapperCommit'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js new file mode 100644 index 0000000..8ac40ae --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js @@ -0,0 +1,122 @@ +var LazyWrapper = require('../internal/LazyWrapper'), + LodashWrapper = require('../internal/LodashWrapper'), + baseLodash = require('../internal/baseLodash'), + isArray = require('../lang/isArray'), + isObjectLike = require('../internal/isObjectLike'), + wrapperClone = require('../internal/wrapperClone'); + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates a `lodash` object which wraps `value` to enable implicit chaining. + * Methods that operate on and return arrays, collections, and functions can + * be chained together. Methods that return a boolean or single value will + * automatically end the chain returning the unwrapped value. Explicit chaining + * may be enabled using `_.chain`. The execution of chained methods is lazy, + * that is, execution is deferred until `_#value` is implicitly or explicitly + * called. + * + * Lazy evaluation allows several methods to support shortcut fusion. Shortcut + * fusion is an optimization that merges iteratees to avoid creating intermediate + * arrays and reduce the number of iteratee executions. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, + * `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, + * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, + * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, + * and `where` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, + * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, + * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`, + * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`, + * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`, + * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`, + * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`, + * `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`, `merge`, + * `mixin`, `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`, + * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, + * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`, + * `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, + * `spread`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, + * `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, `transform`, + * `union`, `uniq`, `unshift`, `unzip`, `values`, `valuesIn`, `where`, + * `without`, `wrap`, `xor`, `zip`, and `zipObject` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`, + * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, + * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`, + * `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`, + * `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, + * `isFinite`,`isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, + * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, + * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, + * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, + * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, + * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, + * `startCase`, `startsWith`, `sum`, `template`, `trim`, `trimLeft`, + * `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words` + * + * The wrapper method `sample` will return a wrapped value when `n` is provided, + * otherwise an unwrapped value is returned. + * + * @name _ + * @constructor + * @category Chain + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var wrapped = _([1, 2, 3]); + * + * // returns an unwrapped value + * wrapped.reduce(function(sum, n) { + * return sum + n; + * }); + * // => 6 + * + * // returns a wrapped value + * var squares = wrapped.map(function(n) { + * return n * n; + * }); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ +function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); +} + +// Ensure wrappers are instances of `baseLodash`. +lodash.prototype = baseLodash.prototype; + +module.exports = lodash; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js new file mode 100644 index 0000000..04099f2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js @@ -0,0 +1 @@ +module.exports = require('./wrapperPlant'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js new file mode 100644 index 0000000..f72a64a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js @@ -0,0 +1 @@ +module.exports = require('./wrapperReverse'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js new file mode 100644 index 0000000..5e751a2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js @@ -0,0 +1 @@ +module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js new file mode 100644 index 0000000..3d0257e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js @@ -0,0 +1,29 @@ +/** + * This method invokes `interceptor` and returns `value`. The interceptor is + * bound to `thisArg` and invoked with one argument; (value). The purpose of + * this method is to "tap into" a method chain in order to perform operations + * on intermediate results within the chain. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ +function tap(value, interceptor, thisArg) { + interceptor.call(thisArg, value); + return value; +} + +module.exports = tap; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js new file mode 100644 index 0000000..8ccc996 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js @@ -0,0 +1,25 @@ +/** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _([1, 2, 3]) + * .last() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => [3] + */ +function thru(value, interceptor, thisArg) { + return interceptor.call(thisArg, value); +} + +module.exports = thru; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js new file mode 100644 index 0000000..5e751a2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js @@ -0,0 +1 @@ +module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js new file mode 100644 index 0000000..c7bcbf9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js @@ -0,0 +1 @@ +module.exports = require('./wrapperToString'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js new file mode 100644 index 0000000..5e751a2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js @@ -0,0 +1 @@ +module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js new file mode 100644 index 0000000..5e751a2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js @@ -0,0 +1 @@ +module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js new file mode 100644 index 0000000..3823481 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js @@ -0,0 +1,32 @@ +var chain = require('./chain'); + +/** + * Enables explicit method chaining on the wrapper object. + * + * @name chain + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // without explicit chaining + * _(users).first(); + * // => { 'user': 'barney', 'age': 36 } + * + * // with explicit chaining + * _(users).chain() + * .first() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ +function wrapperChain() { + return chain(this); +} + +module.exports = wrapperChain; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js new file mode 100644 index 0000000..c46a787 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js @@ -0,0 +1,32 @@ +var LodashWrapper = require('../internal/LodashWrapper'); + +/** + * Executes the chained sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapper = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapper = wrapper.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapper.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ +function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); +} + +module.exports = wrapperCommit; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js new file mode 100644 index 0000000..a3de146 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js @@ -0,0 +1,45 @@ +var baseLodash = require('../internal/baseLodash'), + wrapperClone = require('../internal/wrapperClone'); + +/** + * Creates a clone of the chained sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapper = _(array).map(function(value) { + * return Math.pow(value, 2); + * }); + * + * var other = [3, 4]; + * var otherWrapper = wrapper.plant(other); + * + * otherWrapper.value(); + * // => [9, 16] + * + * wrapper.value(); + * // => [1, 4] + */ +function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; +} + +module.exports = wrapperPlant; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js new file mode 100644 index 0000000..4518b3e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js @@ -0,0 +1,38 @@ +var LazyWrapper = require('../internal/LazyWrapper'), + LodashWrapper = require('../internal/LodashWrapper'), + thru = require('./thru'); + +/** + * Reverses the wrapped array so the first element becomes the last, the + * second element becomes the second to last, and so on. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new reversed `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ +function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + if (this.__actions__.length) { + value = new LazyWrapper(this); + } + return new LodashWrapper(value.reverse(), this.__chain__); + } + return this.thru(function(value) { + return value.reverse(); + }); +} + +module.exports = wrapperReverse; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js new file mode 100644 index 0000000..db975a5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js @@ -0,0 +1,17 @@ +/** + * Produces the result of coercing the unwrapped value to a string. + * + * @name toString + * @memberOf _ + * @category Chain + * @returns {string} Returns the coerced string value. + * @example + * + * _([1, 2, 3]).toString(); + * // => '1,2,3' + */ +function wrapperToString() { + return (this.value() + ''); +} + +module.exports = wrapperToString; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js new file mode 100644 index 0000000..2734e41 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js @@ -0,0 +1,20 @@ +var baseWrapperValue = require('../internal/baseWrapperValue'); + +/** + * Executes the chained sequence to extract the unwrapped value. + * + * @name value + * @memberOf _ + * @alias run, toJSON, valueOf + * @category Chain + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ +function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); +} + +module.exports = wrapperValue; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js new file mode 100644 index 0000000..0338857 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js @@ -0,0 +1,44 @@ +module.exports = { + 'all': require('./collection/all'), + 'any': require('./collection/any'), + 'at': require('./collection/at'), + 'collect': require('./collection/collect'), + 'contains': require('./collection/contains'), + 'countBy': require('./collection/countBy'), + 'detect': require('./collection/detect'), + 'each': require('./collection/each'), + 'eachRight': require('./collection/eachRight'), + 'every': require('./collection/every'), + 'filter': require('./collection/filter'), + 'find': require('./collection/find'), + 'findLast': require('./collection/findLast'), + 'findWhere': require('./collection/findWhere'), + 'foldl': require('./collection/foldl'), + 'foldr': require('./collection/foldr'), + 'forEach': require('./collection/forEach'), + 'forEachRight': require('./collection/forEachRight'), + 'groupBy': require('./collection/groupBy'), + 'include': require('./collection/include'), + 'includes': require('./collection/includes'), + 'indexBy': require('./collection/indexBy'), + 'inject': require('./collection/inject'), + 'invoke': require('./collection/invoke'), + 'map': require('./collection/map'), + 'max': require('./math/max'), + 'min': require('./math/min'), + 'partition': require('./collection/partition'), + 'pluck': require('./collection/pluck'), + 'reduce': require('./collection/reduce'), + 'reduceRight': require('./collection/reduceRight'), + 'reject': require('./collection/reject'), + 'sample': require('./collection/sample'), + 'select': require('./collection/select'), + 'shuffle': require('./collection/shuffle'), + 'size': require('./collection/size'), + 'some': require('./collection/some'), + 'sortBy': require('./collection/sortBy'), + 'sortByAll': require('./collection/sortByAll'), + 'sortByOrder': require('./collection/sortByOrder'), + 'sum': require('./math/sum'), + 'where': require('./collection/where') +}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js new file mode 100644 index 0000000..d0839f7 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js @@ -0,0 +1 @@ +module.exports = require('./every'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js new file mode 100644 index 0000000..900ac25 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js @@ -0,0 +1 @@ +module.exports = require('./some'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js new file mode 100644 index 0000000..48a714f --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js @@ -0,0 +1,34 @@ +var baseAt = require('../internal/baseAt'), + baseFlatten = require('../internal/baseFlatten'), + isLength = require('../internal/isLength'), + toIterable = require('../internal/toIterable'); + +/** + * Creates an array of elements corresponding to the given keys, or indexes, + * of `collection`. Keys may be specified as individual arguments or as arrays + * of keys. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(number|number[]|string|string[])} [props] The property names + * or indexes of elements to pick, specified individually or in arrays. + * @returns {Array} Returns the new array of picked elements. + * @example + * + * _.at(['a', 'b', 'c'], [0, 2]); + * // => ['a', 'c'] + * + * _.at(['fred', 'barney', 'pebbles'], 0, 2); + * // => ['fred', 'pebbles'] + */ +function at(collection) { + var length = collection ? collection.length : 0; + if (isLength(length)) { + collection = toIterable(collection); + } + return baseAt(collection, baseFlatten(arguments, false, false, 1)); +} + +module.exports = at; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js new file mode 100644 index 0000000..0d1e1ab --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js @@ -0,0 +1 @@ +module.exports = require('./map'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js new file mode 100644 index 0000000..594722a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js @@ -0,0 +1 @@ +module.exports = require('./includes'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js new file mode 100644 index 0000000..7702d7b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js @@ -0,0 +1,54 @@ +var createAggregator = require('../internal/createAggregator'); + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the number of times the key was returned by `iteratee`. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': 1, '6': 2 } + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': 1, '6': 2 } + * + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ +var countBy = createAggregator(function(result, value, key) { + hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); +}); + +module.exports = countBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js new file mode 100644 index 0000000..2fb6303 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js @@ -0,0 +1 @@ +module.exports = require('./find'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js new file mode 100644 index 0000000..8800f42 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js @@ -0,0 +1 @@ +module.exports = require('./forEach'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js new file mode 100644 index 0000000..3252b2a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js @@ -0,0 +1 @@ +module.exports = require('./forEachRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js new file mode 100644 index 0000000..276afb3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js @@ -0,0 +1,62 @@ +var arrayEvery = require('../internal/arrayEvery'), + baseCallback = require('../internal/baseCallback'), + baseEvery = require('../internal/baseEvery'), + isArray = require('../lang/isArray'); + +/** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * The predicate is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.every(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.every(users, 'active'); + * // => false + */ +function every(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (typeof predicate != 'function' || typeof thisArg != 'undefined') { + predicate = baseCallback(predicate, thisArg, 3); + } + return func(collection, predicate); +} + +module.exports = every; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js new file mode 100644 index 0000000..673ae22 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js @@ -0,0 +1,61 @@ +var arrayFilter = require('../internal/arrayFilter'), + baseCallback = require('../internal/baseCallback'), + baseFilter = require('../internal/baseFilter'), + isArray = require('../lang/isArray'); + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias select + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.filter([4, 5, 6], function(n) { + * return n % 2 == 0; + * }); + * // => [4, 6] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.filter(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.filter(users, 'active'), 'user'); + * // => ['barney'] + */ +function filter(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = baseCallback(predicate, thisArg, 3); + return func(collection, predicate); +} + +module.exports = filter; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js new file mode 100644 index 0000000..8e687d8 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js @@ -0,0 +1,66 @@ +var baseCallback = require('../internal/baseCallback'), + baseEach = require('../internal/baseEach'), + baseFind = require('../internal/baseFind'), + findIndex = require('../array/findIndex'), + isArray = require('../lang/isArray'); + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias detect + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.result(_.find(users, function(chr) { + * return chr.age < 40; + * }), 'user'); + * // => 'barney' + * + * // using the `_.matches` callback shorthand + * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.result(_.find(users, 'active', false), 'user'); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.result(_.find(users, 'active'), 'user'); + * // => 'barney' + */ +function find(collection, predicate, thisArg) { + if (isArray(collection)) { + var index = findIndex(collection, predicate, thisArg); + return index > -1 ? collection[index] : undefined; + } + predicate = baseCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEach); +} + +module.exports = find; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js new file mode 100644 index 0000000..f66f6cc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js @@ -0,0 +1,29 @@ +var baseCallback = require('../internal/baseCallback'), + baseEachRight = require('../internal/baseEachRight'), + baseFind = require('../internal/baseFind'); + +/** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ +function findLast(collection, predicate, thisArg) { + predicate = baseCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEachRight); +} + +module.exports = findLast; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js new file mode 100644 index 0000000..2d62065 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js @@ -0,0 +1,37 @@ +var baseMatches = require('../internal/baseMatches'), + find = require('./find'); + +/** + * Performs a deep comparison between each element in `collection` and the + * source object, returning the first element that has equivalent property + * values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); + * // => 'barney' + * + * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); + * // => 'fred' + */ +function findWhere(collection, source) { + return find(collection, baseMatches(source)); +} + +module.exports = findWhere; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js new file mode 100644 index 0000000..26f53cf --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js @@ -0,0 +1 @@ +module.exports = require('./reduce'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js new file mode 100644 index 0000000..8fb199e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js @@ -0,0 +1 @@ +module.exports = require('./reduceRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js new file mode 100644 index 0000000..38cf796 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js @@ -0,0 +1,42 @@ +var arrayEach = require('../internal/arrayEach'), + baseEach = require('../internal/baseEach'), + bindCallback = require('../internal/bindCallback'), + isArray = require('../lang/isArray'); + +/** + * Iterates over elements of `collection` invoking `iteratee` for each element. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). Iterator functions may exit iteration early + * by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a `length` property + * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` + * may be used for object iteration. + * + * @static + * @memberOf _ + * @alias each + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEach(function(n) { + * console.log(n); + * }).value(); + * // => logs each value from left to right and returns the array + * + * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { + * console.log(n, key); + * }); + * // => logs each value-key pair and returns the object (iteration order is not guaranteed) + */ +function forEach(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) + ? arrayEach(collection, iteratee) + : baseEach(collection, bindCallback(iteratee, thisArg, 3)); +} + +module.exports = forEach; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js new file mode 100644 index 0000000..56bb8ff --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js @@ -0,0 +1,31 @@ +var arrayEachRight = require('../internal/arrayEachRight'), + baseEachRight = require('../internal/baseEachRight'), + bindCallback = require('../internal/bindCallback'), + isArray = require('../lang/isArray'); + +/** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias eachRight + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEachRight(function(n) { + * console.log(n); + * }).join(','); + * // => logs each value from right to left and returns the array + */ +function forEachRight(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) + ? arrayEachRight(collection, iteratee) + : baseEachRight(collection, bindCallback(iteratee, thisArg, 3)); +} + +module.exports = forEachRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js new file mode 100644 index 0000000..f2578b3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js @@ -0,0 +1,59 @@ +var createAggregator = require('../internal/createAggregator'); + +/** Used for native method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is an array of the elements responsible for generating the key. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * // using the `_.property` callback shorthand + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ +var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + result[key] = [value]; + } +}); + +module.exports = groupBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js new file mode 100644 index 0000000..594722a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js @@ -0,0 +1 @@ +module.exports = require('./includes'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js new file mode 100644 index 0000000..a383fab --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js @@ -0,0 +1,61 @@ +var baseIndexOf = require('../internal/baseIndexOf'), + isArray = require('../lang/isArray'), + isLength = require('../internal/isLength'), + isString = require('../lang/isString'), + values = require('../object/values'); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Checks if `value` is in `collection` using `SameValueZero` for equality + * comparisons. If `fromIndex` is negative, it is used as the offset from + * the end of `collection`. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @alias contains, include + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {*} target The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {boolean} Returns `true` if a matching element is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); + * // => true + * + * _.includes('pebbles', 'eb'); + * // => true + */ +function includes(collection, target, fromIndex) { + var length = collection ? collection.length : 0; + if (!isLength(length)) { + collection = values(collection); + length = collection.length; + } + if (!length) { + return false; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); + } else { + fromIndex = 0; + } + return (typeof collection == 'string' || !isArray(collection) && isString(collection)) + ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) + : (baseIndexOf(collection, target, fromIndex) > -1); +} + +module.exports = includes; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js new file mode 100644 index 0000000..0cc42d5 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js @@ -0,0 +1,53 @@ +var createAggregator = require('../internal/createAggregator'); + +/** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the last element responsible for generating the key. The + * iteratee function is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var keyData = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.indexBy(keyData, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return String.fromCharCode(object.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return this.fromCharCode(object.code); + * }, String); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + */ +var indexBy = createAggregator(function(result, value, key) { + result[key] = value; +}); + +module.exports = indexBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js new file mode 100644 index 0000000..26f53cf --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js @@ -0,0 +1 @@ +module.exports = require('./reduce'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js new file mode 100644 index 0000000..c305a04 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js @@ -0,0 +1,30 @@ +var baseInvoke = require('../internal/baseInvoke'), + baseSlice = require('../internal/baseSlice'); + +/** + * Invokes the method named by `methodName` on each element in `collection`, + * returning an array of the results of each invoked method. Any additional + * arguments are provided to each invoked method. If `methodName` is a function + * it is invoked for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|string} methodName The name of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invoke([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ +function invoke(collection, methodName) { + return baseInvoke(collection, methodName, baseSlice(arguments, 2)); +} + +module.exports = invoke; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js new file mode 100644 index 0000000..f918be6 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js @@ -0,0 +1,68 @@ +var arrayMap = require('../internal/arrayMap'), + baseCallback = require('../internal/baseCallback'), + baseMap = require('../internal/baseMap'), + isArray = require('../lang/isArray'); + +/** + * Creates an array of values by running each element in `collection` through + * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * Many lodash methods are guarded to work as interatees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`, + * `dropRight`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, `slice`, + * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, `trimRight`, + * `trunc`, `random`, `range`, `sample`, `uniq`, and `words` + * + * @static + * @memberOf _ + * @alias collect + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * create a `_.property` or `_.matches` style callback respectively. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new mapped array. + * @example + * + * function timesThree(n) { + * return n * 3; + * } + * + * _.map([1, 2], timesThree); + * // => [3, 6] + * + * _.map({ 'a': 1, 'b': 2 }, timesThree); + * // => [3, 6] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // using the `_.property` callback shorthand + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee, thisArg) { + var func = isArray(collection) ? arrayMap : baseMap; + iteratee = baseCallback(iteratee, thisArg, 3); + return func(collection, iteratee); +} + +module.exports = map; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js new file mode 100644 index 0000000..bb1d213 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js @@ -0,0 +1 @@ +module.exports = require('../math/max'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js new file mode 100644 index 0000000..eef13d0 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js @@ -0,0 +1 @@ +module.exports = require('../math/min'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js new file mode 100644 index 0000000..4a5bdbe --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js @@ -0,0 +1,66 @@ +var createAggregator = require('../internal/createAggregator'); + +/** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, while the second of which + * contains elements `predicate` returns falsey for. The predicate is bound + * to `thisArg` and invoked with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * _.partition([1, 2, 3], function(n) { + * return n % 2; + * }); + * // => [[1, 3], [2]] + * + * _.partition([1.2, 2.3, 3.4], function(n) { + * return this.floor(n) % 2; + * }, Math); + * // => [[1.2, 3.4], [2.3]] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * var mapper = function(array) { + * return _.pluck(array, 'user'); + * }; + * + * // using the `_.matches` callback shorthand + * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); + * // => [['pebbles'], ['barney', 'fred']] + * + * // using the `_.matchesProperty` callback shorthand + * _.map(_.partition(users, 'active', false), mapper); + * // => [['barney', 'pebbles'], ['fred']] + * + * // using the `_.property` callback shorthand + * _.map(_.partition(users, 'active'), mapper); + * // => [['fred'], ['barney', 'pebbles']] + */ +var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); +}, function() { return [[], []]; }); + +module.exports = partition; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js new file mode 100644 index 0000000..af85d5a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js @@ -0,0 +1,31 @@ +var baseProperty = require('../internal/baseProperty'), + map = require('./map'); + +/** + * Gets the value of `key` from all elements in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {string} key The key of the property to pluck. + * @returns {Array} Returns the property values. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * _.pluck(users, 'user'); + * // => ['barney', 'fred'] + * + * var userIndex = _.indexBy(users, 'user'); + * _.pluck(userIndex, 'age'); + * // => [36, 40] (iteration order is not guaranteed) + */ +function pluck(collection, key) { + return map(collection, baseProperty(key)); +} + +module.exports = pluck; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js new file mode 100644 index 0000000..f02fd9c --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js @@ -0,0 +1,48 @@ +var arrayReduce = require('../internal/arrayReduce'), + baseCallback = require('../internal/baseCallback'), + baseEach = require('../internal/baseEach'), + baseReduce = require('../internal/baseReduce'), + isArray = require('../lang/isArray'); + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` through `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not provided the first element of `collection` is used as the initial + * value. The `iteratee` is bound to `thisArg`and invoked with four arguments; + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as interatees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `merge`, and `sortAllBy` + * + * @static + * @memberOf _ + * @alias foldl, inject + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * return result; + * }, {}); + * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator, thisArg) { + var func = isArray(collection) ? arrayReduce : baseReduce; + return func(collection, baseCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEach); +} + +module.exports = reduce; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js new file mode 100644 index 0000000..d517632 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js @@ -0,0 +1,34 @@ +var arrayReduceRight = require('../internal/arrayReduceRight'), + baseCallback = require('../internal/baseCallback'), + baseEachRight = require('../internal/baseEachRight'), + baseReduce = require('../internal/baseReduce'), + isArray = require('../lang/isArray'); + +/** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias foldr + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ +function reduceRight(collection, iteratee, accumulator, thisArg) { + var func = isArray(collection) ? arrayReduceRight : baseReduce; + return func(collection, baseCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEachRight); +} + +module.exports = reduceRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js new file mode 100644 index 0000000..e783fc7 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js @@ -0,0 +1,61 @@ +var arrayFilter = require('../internal/arrayFilter'), + baseCallback = require('../internal/baseCallback'), + baseFilter = require('../internal/baseFilter'), + isArray = require('../lang/isArray'); + +/** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.reject([1, 2, 3, 4], function(n) { + * return n % 2 == 0; + * }); + * // => [1, 3] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.reject(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.reject(users, 'active'), 'user'); + * // => ['barney'] + */ +function reject(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = baseCallback(predicate, thisArg, 3); + return func(collection, function(value, index, collection) { + return !predicate(value, index, collection); + }); +} + +module.exports = reject; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js new file mode 100644 index 0000000..f090db1 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js @@ -0,0 +1,38 @@ +var baseRandom = require('../internal/baseRandom'), + isIterateeCall = require('../internal/isIterateeCall'), + shuffle = require('./shuffle'), + toIterable = require('../internal/toIterable'); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMin = Math.min; + +/** + * Gets a random element or `n` random elements from a collection. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to sample. + * @param {number} [n] The number of elements to sample. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {*} Returns the random sample(s). + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + * + * _.sample([1, 2, 3, 4], 2); + * // => [3, 1] + */ +function sample(collection, n, guard) { + if (guard ? isIterateeCall(collection, n, guard) : n == null) { + collection = toIterable(collection); + var length = collection.length; + return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; + } + var result = shuffle(collection); + result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); + return result; +} + +module.exports = sample; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js new file mode 100644 index 0000000..ade80f6 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js @@ -0,0 +1 @@ +module.exports = require('./filter'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js new file mode 100644 index 0000000..7548c1a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js @@ -0,0 +1,36 @@ +var baseRandom = require('../internal/baseRandom'), + toIterable = require('../internal/toIterable'); + +/** + * Creates an array of shuffled values, using a version of the Fisher-Yates + * shuffle. See [Wikipedia](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle) + * for more details. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ +function shuffle(collection) { + collection = toIterable(collection); + + var index = -1, + length = collection.length, + result = Array(length); + + while (++index < length) { + var rand = baseRandom(0, index); + if (index != rand) { + result[index] = result[rand]; + } + result[rand] = collection[index]; + } + return result; +} + +module.exports = shuffle; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js new file mode 100644 index 0000000..2db4bcf --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js @@ -0,0 +1,29 @@ +var isLength = require('../internal/isLength'), + keys = require('../object/keys'); + +/** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable properties for objects. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the size of `collection`. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ +function size(collection) { + var length = collection ? collection.length : 0; + return isLength(length) ? length : keys(collection).length; +} + +module.exports = size; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js new file mode 100644 index 0000000..e256773 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js @@ -0,0 +1,63 @@ +var arraySome = require('../internal/arraySome'), + baseCallback = require('../internal/baseCallback'), + baseSome = require('../internal/baseSome'), + isArray = require('../lang/isArray'); + +/** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * The function returns as soon as it finds a passing value and does not iterate + * over the entire collection. The predicate is bound to `thisArg` and invoked + * with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias any + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.some(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.some(users, 'active'); + * // => true + */ +function some(collection, predicate, thisArg) { + var func = isArray(collection) ? arraySome : baseSome; + if (typeof predicate != 'function' || typeof thisArg != 'undefined') { + predicate = baseCallback(predicate, thisArg, 3); + } + return func(collection, predicate); +} + +module.exports = some; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js new file mode 100644 index 0000000..b0f68ba --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js @@ -0,0 +1,75 @@ +var baseCallback = require('../internal/baseCallback'), + baseEach = require('../internal/baseEach'), + baseSortBy = require('../internal/baseSortBy'), + compareAscending = require('../internal/compareAscending'), + isIterateeCall = require('../internal/isIterateeCall'), + isLength = require('../internal/isLength'); + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection through `iteratee`. This method performs + * a stable sort, that is, it preserves the original sort order of equal elements. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Array|Function|Object|string} [iteratee=_.identity] The function + * invoked per iteration. If a property name or an object is provided it is + * used to create a `_.property` or `_.matches` style callback respectively. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new sorted array. + * @example + * + * _.sortBy([1, 2, 3], function(n) { + * return Math.sin(n); + * }); + * // => [3, 1, 2] + * + * _.sortBy([1, 2, 3], function(n) { + * return this.sin(n); + * }, Math); + * // => [3, 1, 2] + * + * var users = [ + * { 'user': 'fred' }, + * { 'user': 'pebbles' }, + * { 'user': 'barney' } + * ]; + * + * // using the `_.property` callback shorthand + * _.pluck(_.sortBy(users, 'user'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ +function sortBy(collection, iteratee, thisArg) { + if (collection == null) { + return []; + } + var index = -1, + length = collection.length, + result = isLength(length) ? Array(length) : []; + + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = null; + } + iteratee = baseCallback(iteratee, thisArg, 3); + baseEach(collection, function(value, key, collection) { + result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value }; + }); + return baseSortBy(result, compareAscending); +} + +module.exports = sortBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js new file mode 100644 index 0000000..9433989 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js @@ -0,0 +1,41 @@ +var baseFlatten = require('../internal/baseFlatten'), + baseSortByOrder = require('../internal/baseSortByOrder'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * This method is like `_.sortBy` except that it sorts by property names + * instead of an iteratee function. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(string|string[])} props The property names to sort by, + * specified as individual property names or arrays of property names. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 26 }, + * { 'user': 'fred', 'age': 30 } + * ]; + * + * _.map(_.sortByAll(users, ['user', 'age']), _.values); + * // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] + */ +function sortByAll(collection) { + if (collection == null) { + return []; + } + var args = arguments, + guard = args[3]; + + if (guard && isIterateeCall(args[1], args[2], guard)) { + args = [collection, args[1]]; + } + return baseSortByOrder(collection, baseFlatten(args, false, false, 1), []); +} + +module.exports = sortByAll; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js new file mode 100644 index 0000000..4528e6d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js @@ -0,0 +1,48 @@ +var baseSortByOrder = require('../internal/baseSortByOrder'), + isArray = require('../lang/isArray'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** + * This method is like `_.sortByAll` except that it allows specifying the + * sort orders of the property names to sort by. A truthy value in `orders` + * will sort the corresponding property name in ascending order while a + * falsey value will sort it in descending order. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {string[]} props The property names to sort by. + * @param {boolean[]} orders The sort orders of `props`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 26 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 } + * ]; + * + * // sort by `user` in ascending order and by `age` in descending order + * _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values); + * // => [['barney', 36], ['barney', 26], ['fred', 40], ['fred', 30]] + */ +function sortByOrder(collection, props, orders, guard) { + if (collection == null) { + return []; + } + if (guard && isIterateeCall(props, orders, guard)) { + orders = null; + } + if (!isArray(props)) { + props = props == null ? [] : [props]; + } + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseSortByOrder(collection, props, orders); +} + +module.exports = sortByOrder; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js new file mode 100644 index 0000000..a2e9380 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js @@ -0,0 +1 @@ +module.exports = require('../math/sum'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js new file mode 100644 index 0000000..f603bf8 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js @@ -0,0 +1,37 @@ +var baseMatches = require('../internal/baseMatches'), + filter = require('./filter'); + +/** + * Performs a deep comparison between each element in `collection` and the + * source object, returning an array of all elements that have equivalent + * property values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {Array} Returns the new filtered array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, + * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } + * ]; + * + * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); + * // => ['barney'] + * + * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); + * // => ['fred'] + */ +function where(collection, source) { + return filter(collection, baseMatches(source)); +} + +module.exports = where; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js new file mode 100644 index 0000000..195366e --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js @@ -0,0 +1,3 @@ +module.exports = { + 'now': require('./date/now') +}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js new file mode 100644 index 0000000..628225d --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js @@ -0,0 +1,24 @@ +var isNative = require('../lang/isNative'); + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeNow = isNative(nativeNow = Date.now) && nativeNow; + +/** + * Gets the number of milliseconds that have elapsed since the Unix epoch + * (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @category Date + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => logs the number of milliseconds it took for the deferred function to be invoked + */ +var now = nativeNow || function() { + return new Date().getTime(); +}; + +module.exports = now; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js new file mode 100644 index 0000000..33ccefc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js @@ -0,0 +1,26 @@ +module.exports = { + 'after': require('./function/after'), + 'ary': require('./function/ary'), + 'backflow': require('./function/backflow'), + 'before': require('./function/before'), + 'bind': require('./function/bind'), + 'bindAll': require('./function/bindAll'), + 'bindKey': require('./function/bindKey'), + 'compose': require('./function/compose'), + 'curry': require('./function/curry'), + 'curryRight': require('./function/curryRight'), + 'debounce': require('./function/debounce'), + 'defer': require('./function/defer'), + 'delay': require('./function/delay'), + 'flow': require('./function/flow'), + 'flowRight': require('./function/flowRight'), + 'memoize': require('./function/memoize'), + 'negate': require('./function/negate'), + 'once': require('./function/once'), + 'partial': require('./function/partial'), + 'partialRight': require('./function/partialRight'), + 'rearg': require('./function/rearg'), + 'spread': require('./function/spread'), + 'throttle': require('./function/throttle'), + 'wrap': require('./function/wrap') +}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js new file mode 100644 index 0000000..e6a5de4 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js @@ -0,0 +1,48 @@ +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeIsFinite = global.isFinite; + +/** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it is called `n` or more times. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => logs 'done saving!' after the two async saves have completed + */ +function after(n, func) { + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + n = nativeIsFinite(n = +n) ? n : 0; + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; +} + +module.exports = after; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js new file mode 100644 index 0000000..9604c1b --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js @@ -0,0 +1,34 @@ +var createWrapper = require('../internal/createWrapper'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** Used to compose bitmasks for wrapper metadata. */ +var ARY_FLAG = 256; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates a function that accepts up to `n` arguments ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ +function ary(func, n, guard) { + if (guard && isIterateeCall(func, n, guard)) { + n = null; + } + n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); + return createWrapper(func, ARY_FLAG, null, null, null, null, n); +} + +module.exports = ary; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js new file mode 100644 index 0000000..1954e94 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js @@ -0,0 +1 @@ +module.exports = require('./flowRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js new file mode 100644 index 0000000..0ae3f97 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js @@ -0,0 +1,41 @@ +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it is called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery('#add').on('click', _.before(5, addContactToList)); + * // => allows adding up to 4 contacts to the list + */ +function before(n, func) { + var result; + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } else { + func = null; + } + return result; + }; +} + +module.exports = before; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js new file mode 100644 index 0000000..155df05 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js @@ -0,0 +1,58 @@ +var baseSlice = require('../internal/baseSlice'), + createWrapper = require('../internal/createWrapper'), + replaceHolders = require('../internal/replaceHolders'); + +/** Used to compose bitmasks for wrapper metadata. */ +var BIND_FLAG = 1, + PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and prepends any additional `_.bind` arguments to those provided to the + * bound function. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind` this method does not set the `length` + * property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var greet = function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * }; + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // using placeholders + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ +function bind(func, thisArg) { + var bitmask = BIND_FLAG; + if (arguments.length > 2) { + var partials = baseSlice(arguments, 2), + holders = replaceHolders(partials, bind.placeholder); + + bitmask |= PARTIAL_FLAG; + } + return createWrapper(func, bitmask, thisArg, partials, holders); +} + +// Assign default placeholders. +bind.placeholder = {}; + +module.exports = bind; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js new file mode 100644 index 0000000..82db5dc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js @@ -0,0 +1,41 @@ +var baseBindAll = require('../internal/baseBindAll'), + baseFlatten = require('../internal/baseFlatten'), + functions = require('../object/functions'); + +/** + * Binds methods of an object to the object itself, overwriting the existing + * method. Method names may be specified as individual arguments or as arrays + * of method names. If no method names are provided all enumerable function + * properties, own and inherited, of `object` are bound. + * + * **Note:** This method does not set the `length` property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} [methodNames] The object method names to bind, + * specified as individual method names or arrays of method names. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'onClick': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view); + * jQuery('#docs').on('click', view.onClick); + * // => logs 'clicked docs' when the element is clicked + */ +function bindAll(object) { + return baseBindAll(object, + arguments.length > 1 + ? baseFlatten(arguments, false, false, 1) + : functions(object) + ); +} + +module.exports = bindAll; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js new file mode 100644 index 0000000..8098d16 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js @@ -0,0 +1,68 @@ +var baseSlice = require('../internal/baseSlice'), + createWrapper = require('../internal/createWrapper'), + replaceHolders = require('../internal/replaceHolders'); + +/** Used to compose bitmasks for wrapper metadata. */ +var BIND_FLAG = 1, + BIND_KEY_FLAG = 2, + PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes the method at `object[key]` and prepends + * any additional `_.bindKey` arguments to those provided to the bound function. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. + * See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object the method belongs to. + * @param {string} key The key of the method. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // using placeholders + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ +function bindKey(object, key) { + var bitmask = BIND_FLAG | BIND_KEY_FLAG; + if (arguments.length > 2) { + var partials = baseSlice(arguments, 2), + holders = replaceHolders(partials, bindKey.placeholder); + + bitmask |= PARTIAL_FLAG; + } + return createWrapper(key, bitmask, object, partials, holders); +} + +// Assign default placeholders. +bindKey.placeholder = {}; + +module.exports = bindKey; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js new file mode 100644 index 0000000..1954e94 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js @@ -0,0 +1 @@ +module.exports = require('./flowRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js new file mode 100644 index 0000000..5f7afaf --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js @@ -0,0 +1,59 @@ +var createWrapper = require('../internal/createWrapper'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** Used to compose bitmasks for wrapper metadata. */ +var CURRY_FLAG = 8; + +/** + * Creates a function that accepts one or more arguments of `func` that when + * called either invokes `func` returning its result, if all `func` arguments + * have been provided, or returns a function that accepts one or more of the + * remaining `func` arguments, and so on. The arity of `func` may be specified + * if `func.length` is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the `length` property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ +function curry(func, arity, guard) { + if (guard && isIterateeCall(func, arity, guard)) { + arity = null; + } + var result = createWrapper(func, CURRY_FLAG, null, null, null, null, null, arity); + result.placeholder = curry.placeholder; + return result; +} + +// Assign default placeholders. +curry.placeholder = {}; + +module.exports = curry; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js new file mode 100644 index 0000000..c36ab21 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js @@ -0,0 +1,56 @@ +var createWrapper = require('../internal/createWrapper'), + isIterateeCall = require('../internal/isIterateeCall'); + +/** Used to compose bitmasks for wrapper metadata. */ +var CURRY_RIGHT_FLAG = 16; + +/** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the `length` property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ +function curryRight(func, arity, guard) { + if (guard && isIterateeCall(func, arity, guard)) { + arity = null; + } + var result = createWrapper(func, CURRY_RIGHT_FLAG, null, null, null, null, null, arity); + result.placeholder = curryRight.placeholder; + return result; +} + +// Assign default placeholders. +curryRight.placeholder = {}; + +module.exports = curryRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js new file mode 100644 index 0000000..5fdf7fc --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js @@ -0,0 +1,186 @@ +var isObject = require('../lang/isObject'), + now = require('../date/now'); + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/* Native method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * Creates a function that delays invoking `func` until after `wait` milliseconds + * have elapsed since the last time it was invoked. The created function comes + * with a `cancel` method to cancel delayed invocations. Provide an options + * object to indicate that `func` should be invoked on the leading and/or + * trailing edge of the `wait` timeout. Subsequent calls to the debounced + * function return the result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the debounced function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=false] Specify invoking on the leading + * edge of the timeout. + * @param {number} [options.maxWait] The maximum time `func` is allowed to be + * delayed before it is invoked. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // avoid costly calculations while the window size is in flux + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // invoke `sendMail` when the click event is fired, debouncing subsequent calls + * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // ensure `batchLog` is invoked once after 1 second of debounced calls + * var source = new EventSource('/stream'); + * jQuery(source).on('message', _.debounce(batchLog, 250, { + * 'maxWait': 1000 + * })); + * + * // cancel a debounced call + * var todoChanges = _.debounce(batchLog, 1000); + * Object.observe(models.todo, todoChanges); + * + * Object.observe(models, function(changes) { + * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { + * todoChanges.cancel(); + * } + * }, ['delete']); + * + * // ...at some point `models.todo` is changed + * models.todo.completed = true; + * + * // ...before 1 second has passed `models.todo` is deleted + * // which cancels the debounced `todoChanges` call + * delete models.todo; + */ +function debounce(func, wait, options) { + var args, + maxTimeoutId, + result, + stamp, + thisArg, + timeoutId, + trailingCall, + lastCalled = 0, + maxWait = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = wait < 0 ? 0 : (+wait || 0); + if (options === true) { + var leading = true; + trailing = false; + } else if (isObject(options)) { + leading = options.leading; + maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); + trailing = 'trailing' in options ? options.trailing : trailing; + } + + function cancel() { + if (timeoutId) { + clearTimeout(timeoutId); + } + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + } + + function delayed() { + var remaining = wait - (now() - stamp); + if (remaining <= 0 || remaining > wait) { + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + var isCalled = trailingCall; + maxTimeoutId = timeoutId = trailingCall = undefined; + if (isCalled) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + } + } else { + timeoutId = setTimeout(delayed, remaining); + } + } + + function maxDelayed() { + if (timeoutId) { + clearTimeout(timeoutId); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + if (trailing || (maxWait !== wait)) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + } + } + + function debounced() { + args = arguments; + stamp = now(); + thisArg = this; + trailingCall = trailing && (timeoutId || !leading); + + if (maxWait === false) { + var leadingCall = leading && !timeoutId; + } else { + if (!maxTimeoutId && !leading) { + lastCalled = stamp; + } + var remaining = maxWait - (stamp - lastCalled), + isCalled = remaining <= 0 || remaining > maxWait; + + if (isCalled) { + if (maxTimeoutId) { + maxTimeoutId = clearTimeout(maxTimeoutId); + } + lastCalled = stamp; + result = func.apply(thisArg, args); + } + else if (!maxTimeoutId) { + maxTimeoutId = setTimeout(maxDelayed, remaining); + } + } + if (isCalled && timeoutId) { + timeoutId = clearTimeout(timeoutId); + } + else if (!timeoutId && wait !== maxWait) { + timeoutId = setTimeout(delayed, wait); + } + if (leadingCall) { + isCalled = true; + result = func.apply(thisArg, args); + } + if (isCalled && !timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + return result; + } + debounced.cancel = cancel; + return debounced; +} + +module.exports = debounce; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js new file mode 100644 index 0000000..ed31c24 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js @@ -0,0 +1,24 @@ +var baseDelay = require('../internal/baseDelay'); + +/** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // logs 'deferred' after one or more milliseconds + */ +function defer(func) { + return baseDelay(func, 1, arguments, 1); +} + +module.exports = defer; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js new file mode 100644 index 0000000..889e577 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js @@ -0,0 +1,25 @@ +var baseDelay = require('../internal/baseDelay'); + +/** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => logs 'later' after one second + */ +function delay(func, wait) { + return baseDelay(func, wait, arguments, 2); +} + +module.exports = delay; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js new file mode 100644 index 0000000..da946f2 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js @@ -0,0 +1,25 @@ +var createComposer = require('../internal/createComposer'); + +/** + * Creates a function that returns the result of invoking the provided + * functions with the `this` binding of the created function, where each + * successive invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow(_.add, square); + * addSquare(1, 2); + * // => 9 + */ +var flow = createComposer(); + +module.exports = flow; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js new file mode 100644 index 0000000..f7981b3 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js @@ -0,0 +1,25 @@ +var createComposer = require('../internal/createComposer'); + +/** + * This method is like `_.flow` except that it creates a function that + * invokes the provided functions from right to left. + * + * @static + * @memberOf _ + * @alias backflow, compose + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight(square, _.add); + * addSquare(1, 2); + * // => 9 + */ +var flowRight = createComposer(true); + +module.exports = flowRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js new file mode 100644 index 0000000..f80f4a9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js @@ -0,0 +1,82 @@ +var MapCache = require('../internal/MapCache'); + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is coerced to a string and used as the + * cache key. The `func` is invoked with the `this` binding of the memoized + * function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the ES `Map` method interface + * of `get`, `has`, and `set`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object) + * for more details. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoizing function. + * @example + * + * var upperCase = _.memoize(function(string) { + * return string.toUpperCase(); + * }); + * + * upperCase('fred'); + * // => 'FRED' + * + * // modifying the result cache + * upperCase.cache.set('fred', 'BARNEY'); + * upperCase('fred'); + * // => 'BARNEY' + * + * // replacing `_.memoize.Cache` + * var object = { 'user': 'fred' }; + * var other = { 'user': 'barney' }; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'fred' } + * + * _.memoize.Cache = WeakMap; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'barney' } + */ +function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + cache = memoized.cache, + key = resolver ? resolver.apply(this, args) : args[0]; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + cache.set(key, result); + return result; + }; + memoized.cache = new memoize.Cache; + return memoized; +} + +// Assign cache to `_.memoize`. +memoize.Cache = MapCache; + +module.exports = memoize; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js new file mode 100644 index 0000000..8247939 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js @@ -0,0 +1,32 @@ +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ +function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + return !predicate.apply(this, arguments); + }; +} + +module.exports = negate; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js new file mode 100644 index 0000000..90c0ae9 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js @@ -0,0 +1,24 @@ +var before = require('./before'); + +/** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first call. The `func` is invoked + * with the `this` binding of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // `initialize` invokes `createApplication` once + */ +function once(func) { + return before(func, 2); +} + +module.exports = once; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js new file mode 100644 index 0000000..70a1f9f --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js @@ -0,0 +1,50 @@ +var baseSlice = require('../internal/baseSlice'), + createWrapper = require('../internal/createWrapper'), + replaceHolders = require('../internal/replaceHolders'); + +/** Used to compose bitmasks for wrapper metadata. */ +var PARTIAL_FLAG = 32; + +/** + * Creates a function that invokes `func` with `partial` arguments prepended + * to those provided to the new function. This method is like `_.bind` except + * it does **not** alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the `length` property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // using placeholders + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ +function partial(func) { + var partials = baseSlice(arguments, 1), + holders = replaceHolders(partials, partial.placeholder); + + return createWrapper(func, PARTIAL_FLAG, null, partials, holders); +} + +// Assign default placeholders. +partial.placeholder = {}; + +module.exports = partial; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js new file mode 100644 index 0000000..1587ad0 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js @@ -0,0 +1,49 @@ +var baseSlice = require('../internal/baseSlice'), + createWrapper = require('../internal/createWrapper'), + replaceHolders = require('../internal/replaceHolders'); + +/** Used to compose bitmasks for wrapper metadata. */ +var PARTIAL_RIGHT_FLAG = 64; + +/** + * This method is like `_.partial` except that partially applied arguments + * are appended to those provided to the new function. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the `length` property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // using placeholders + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ +function partialRight(func) { + var partials = baseSlice(arguments, 1), + holders = replaceHolders(partials, partialRight.placeholder); + + return createWrapper(func, PARTIAL_RIGHT_FLAG, null, partials, holders); +} + +// Assign default placeholders. +partialRight.placeholder = {}; + +module.exports = partialRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js new file mode 100644 index 0000000..a1bcd52 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js @@ -0,0 +1,40 @@ +var baseFlatten = require('../internal/baseFlatten'), + createWrapper = require('../internal/createWrapper'); + +/** Used to compose bitmasks for wrapper metadata. */ +var REARG_FLAG = 128; + +/** + * Creates a function that invokes `func` with arguments arranged according + * to the specified indexes where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes, + * specified as individual indexes or arrays of indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, 2, 0, 1); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + * + * var map = _.rearg(_.map, [1, 0]); + * map(function(n) { + * return n * 3; + * }, [1, 2, 3]); + * // => [3, 6, 9] + */ +function rearg(func) { + var indexes = baseFlatten(arguments, false, false, 1); + return createWrapper(func, REARG_FLAG, null, null, null, indexes); +} + +module.exports = rearg; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js new file mode 100644 index 0000000..a14d72a --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js @@ -0,0 +1,43 @@ +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** + * Creates a function that invokes `func` with the `this` binding of the + * created function and the array of arguments provided to the created + * function much like [Function#apply](http://es5.github.io/#x15.3.4.3). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to spread arguments over. + * @returns {*} Returns the new function. + * @example + * + * var spread = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * spread(['Fred', 'hello']); + * // => 'Fred says hello' + * + * // with a Promise + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ +function spread(func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function(array) { + return func.apply(this, array); + }; +} + +module.exports = spread; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js new file mode 100644 index 0000000..7c30e64 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js @@ -0,0 +1,72 @@ +var debounce = require('./debounce'), + isObject = require('../lang/isObject'); + +/** Used as the `TypeError` message for "Functions" methods. */ +var FUNC_ERROR_TEXT = 'Expected a function'; + +/** Used as an internal `_.debounce` options object by `_.throttle`. */ +var debounceOptions = { + 'leading': false, + 'maxWait': 0, + 'trailing': false +}; + +/** + * Creates a function that only invokes `func` at most once per every `wait` + * milliseconds. The created function comes with a `cancel` method to cancel + * delayed invocations. Provide an options object to indicate that `func` + * should be invoked on the leading and/or trailing edge of the `wait` timeout. + * Subsequent calls to the throttled function return the result of the last + * `func` call. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the throttled function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=true] Specify invoking on the leading + * edge of the timeout. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // avoid excessively updating the position while scrolling + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes + * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { + * 'trailing': false + * })); + * + * // cancel a trailing throttled call + * jQuery(window).on('popstate', throttled.cancel); + */ +function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (options === false) { + leading = false; + } else if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + debounceOptions.leading = leading; + debounceOptions.maxWait = +wait; + debounceOptions.trailing = trailing; + return debounce(func, wait, debounceOptions); +} + +module.exports = throttle; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js new file mode 100644 index 0000000..68b09af --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js @@ -0,0 +1,33 @@ +var createWrapper = require('../internal/createWrapper'), + identity = require('../utility/identity'); + +/** Used to compose bitmasks for wrapper metadata. */ +var PARTIAL_FLAG = 32; + +/** + * Creates a function that provides `value` to the wrapper function as its + * first argument. Any additional arguments provided to the function are + * appended to those provided to the wrapper function. The wrapper is invoked + * with the `this` binding of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {*} value The value to wrap. + * @param {Function} wrapper The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ +function wrap(value, wrapper) { + wrapper = wrapper == null ? identity : wrapper; + return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []); +} + +module.exports = wrap; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js new file mode 100644 index 0000000..52b19d7 --- /dev/null +++ b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js @@ -0,0 +1,11599 @@ +/** + * @license + * lodash 3.5.0 (Custom Build) + * Build: `lodash modern -d -o ./index.js` + * Copyright 2012-2015 The Dojo Foundation + * Based on Underscore.js 1.8.2 + * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + * Available under MIT license + */ +;(function() { + + /** Used as a safe reference for `undefined` in pre-ES5 environments. */ + var undefined; + + /** Used as the semantic version number. */ + var VERSION = '3.5.0'; + + /** Used to compose bitmasks for wrapper metadata. */ + var BIND_FLAG = 1, + BIND_KEY_FLAG = 2, + CURRY_BOUND_FLAG = 4, + CURRY_FLAG = 8, + CURRY_RIGHT_FLAG = 16, + PARTIAL_FLAG = 32, + PARTIAL_RIGHT_FLAG = 64, + REARG_FLAG = 128, + ARY_FLAG = 256; + + /** Used as default options for `_.trunc`. */ + var DEFAULT_TRUNC_LENGTH = 30, + DEFAULT_TRUNC_OMISSION = '...'; + + /** Used to detect when a function becomes hot. */ + var HOT_COUNT = 150, + HOT_SPAN = 16; + + /** Used to indicate the type of lazy iteratees. */ + var LAZY_DROP_WHILE_FLAG = 0, + LAZY_FILTER_FLAG = 1, + LAZY_MAP_FLAG = 2; + + /** Used as the `TypeError` message for "Functions" methods. */ + var FUNC_ERROR_TEXT = 'Expected a function'; + + /** Used as the internal argument placeholder. */ + var PLACEHOLDER = '__lodash_placeholder__'; + + /** `Object#toString` result references. */ + var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + mapTag = '[object Map]', + numberTag = '[object Number]', + objectTag = '[object Object]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + weakMapTag = '[object WeakMap]'; + + var arrayBufferTag = '[object ArrayBuffer]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + + /** Used to match empty string literals in compiled template source. */ + var reEmptyStringLeading = /\b__p \+= '';/g, + reEmptyStringMiddle = /\b(__p \+=) '' \+/g, + reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; + + /** Used to match HTML entities and HTML characters. */ + var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, + reUnescapedHtml = /[&<>"'`]/g, + reHasEscapedHtml = RegExp(reEscapedHtml.source), + reHasUnescapedHtml = RegExp(reUnescapedHtml.source); + + /** Used to match template delimiters. */ + var reEscape = /<%-([\s\S]+?)%>/g, + reEvaluate = /<%([\s\S]+?)%>/g, + reInterpolate = /<%=([\s\S]+?)%>/g; + + /** + * Used to match ES template delimiters. + * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components) + * for more details. + */ + var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; + + /** Used to match `RegExp` flags from their coerced string values. */ + var reFlags = /\w*$/; + + /** Used to detect named functions. */ + var reFuncName = /^\s*function[ \n\r\t]+\w/; + + /** Used to detect hexadecimal string values. */ + var reHexPrefix = /^0[xX]/; + + /** Used to detect host constructors (Safari > 5). */ + var reHostCtor = /^\[object .+?Constructor\]$/; + + /** Used to match latin-1 supplementary letters (excluding mathematical operators). */ + var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; + + /** Used to ensure capturing order of template delimiters. */ + var reNoMatch = /($^)/; + + /** + * Used to match `RegExp` special characters. + * See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special) + * for more details. + */ + var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, + reHasRegExpChars = RegExp(reRegExpChars.source); + + /** Used to detect functions containing a `this` reference. */ + var reThis = /\bthis\b/; + + /** Used to match unescaped characters in compiled string literals. */ + var reUnescapedString = /['\n\r\u2028\u2029\\]/g; + + /** Used to match words to create compound words. */ + var reWords = (function() { + var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]', + lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+'; + + return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g'); + }()); + + /** Used to detect and test for whitespace. */ + var whitespace = ( + // Basic whitespace characters. + ' \t\x0b\f\xa0\ufeff' + + + // Line terminators. + '\n\r\u2028\u2029' + + + // Unicode category "Zs" space separators. + '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' + ); + + /** Used to assign default `context` object properties. */ + var contextProps = [ + 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array', + 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number', + 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'document', + 'isFinite', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array', + 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', + 'window', 'WinRTError' + ]; + + /** Used to make template sourceURLs easier to identify. */ + var templateCounter = -1; + + /** Used to identify `toStringTag` values of typed arrays. */ + var typedArrayTags = {}; + typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = + typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = + typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = + typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = + typedArrayTags[uint32Tag] = true; + typedArrayTags[argsTag] = typedArrayTags[arrayTag] = + typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = + typedArrayTags[dateTag] = typedArrayTags[errorTag] = + typedArrayTags[funcTag] = typedArrayTags[mapTag] = + typedArrayTags[numberTag] = typedArrayTags[objectTag] = + typedArrayTags[regexpTag] = typedArrayTags[setTag] = + typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; + + /** Used to identify `toStringTag` values supported by `_.clone`. */ + var cloneableTags = {}; + cloneableTags[argsTag] = cloneableTags[arrayTag] = + cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = + cloneableTags[dateTag] = cloneableTags[float32Tag] = + cloneableTags[float64Tag] = cloneableTags[int8Tag] = + cloneableTags[int16Tag] = cloneableTags[int32Tag] = + cloneableTags[numberTag] = cloneableTags[objectTag] = + cloneableTags[regexpTag] = cloneableTags[stringTag] = + cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = + cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; + cloneableTags[errorTag] = cloneableTags[funcTag] = + cloneableTags[mapTag] = cloneableTags[setTag] = + cloneableTags[weakMapTag] = false; + + /** Used as an internal `_.debounce` options object by `_.throttle`. */ + var debounceOptions = { + 'leading': false, + 'maxWait': 0, + 'trailing': false + }; + + /** Used to map latin-1 supplementary letters to basic latin letters. */ + var deburredLetters = { + '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', + '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', + '\xc7': 'C', '\xe7': 'c', + '\xd0': 'D', '\xf0': 'd', + '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', + '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', + '\xcC': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', + '\xeC': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', + '\xd1': 'N', '\xf1': 'n', + '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', + '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', + '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', + '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', + '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', + '\xc6': 'Ae', '\xe6': 'ae', + '\xde': 'Th', '\xfe': 'th', + '\xdf': 'ss' + }; + + /** Used to map characters to HTML entities. */ + var htmlEscapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`' + }; + + /** Used to map HTML entities to characters. */ + var htmlUnescapes = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + ''': "'", + '`': '`' + }; + + /** Used to determine if values are of the language type `Object`. */ + var objectTypes = { + 'function': true, + 'object': true + }; + + /** Used to escape characters for inclusion in compiled string literals. */ + var stringEscapes = { + '\\': '\\', + "'": "'", + '\n': 'n', + '\r': 'r', + '\u2028': 'u2028', + '\u2029': 'u2029' + }; + + /** Detect free variable `exports`. */ + var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; + + /** Detect free variable `module`. */ + var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; + + /** Detect free variable `global` from Node.js. */ + var freeGlobal = freeExports && freeModule && typeof global == 'object' && global; + + /** Detect free variable `window`. */ + var freeWindow = objectTypes[typeof window] && window; + + /** Detect the popular CommonJS extension `module.exports`. */ + var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; + + /** + * Used as a reference to the global object. + * + * The `this` value is used if it is the global object to avoid Greasemonkey's + * restricted `window` object, otherwise the `window` object is used. + */ + var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || this; + + /*--------------------------------------------------------------------------*/ + + /** + * The base implementation of `compareAscending` which compares values and + * sorts them in ascending order without guaranteeing a stable sort. + * + * @private + * @param {*} value The value to compare to `other`. + * @param {*} other The value to compare to `value`. + * @returns {number} Returns the sort order indicator for `value`. + */ + function baseCompareAscending(value, other) { + if (value !== other) { + var valIsReflexive = value === value, + othIsReflexive = other === other; + + if (value > other || !valIsReflexive || (typeof value == 'undefined' && othIsReflexive)) { + return 1; + } + if (value < other || !othIsReflexive || (typeof other == 'undefined' && valIsReflexive)) { + return -1; + } + } + return 0; + } + + /** + * The base implementation of `_.indexOf` without support for binary searches. + * + * @private + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + function baseIndexOf(array, value, fromIndex) { + if (value !== value) { + return indexOfNaN(array, fromIndex); + } + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * The base implementation of `_.isFunction` without support for environments + * with incorrect `typeof` results. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + */ + function baseIsFunction(value) { + // Avoid a Chakra JIT bug in compatibility modes of IE 11. + // See https://github.com/jashkenas/underscore/issues/1621 for more details. + return typeof value == 'function' || false; + } + + /** + * Converts `value` to a string if it is not one. An empty string is returned + * for `null` or `undefined` values. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + function baseToString(value) { + if (typeof value == 'string') { + return value; + } + return value == null ? '' : (value + ''); + } + + /** + * Used by `_.max` and `_.min` as the default callback for string values. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the code unit of the first character of the string. + */ + function charAtCallback(string) { + return string.charCodeAt(0); + } + + /** + * Used by `_.trim` and `_.trimLeft` to get the index of the first character + * of `string` that is not found in `chars`. + * + * @private + * @param {string} string The string to inspect. + * @param {string} chars The characters to find. + * @returns {number} Returns the index of the first character not found in `chars`. + */ + function charsLeftIndex(string, chars) { + var index = -1, + length = string.length; + + while (++index < length && chars.indexOf(string.charAt(index)) > -1) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimRight` to get the index of the last character + * of `string` that is not found in `chars`. + * + * @private + * @param {string} string The string to inspect. + * @param {string} chars The characters to find. + * @returns {number} Returns the index of the last character not found in `chars`. + */ + function charsRightIndex(string, chars) { + var index = string.length; + + while (index-- && chars.indexOf(string.charAt(index)) > -1) {} + return index; + } + + /** + * Used by `_.sortBy` to compare transformed elements of a collection and stable + * sort them in ascending order. + * + * @private + * @param {Object} object The object to compare to `other`. + * @param {Object} other The object to compare to `object`. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareAscending(object, other) { + return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index); + } + + /** + * Used by `_.sortByOrder` to compare multiple properties of each element + * in a collection and stable sort them in the following order: + * + * If orders is unspecified, sort in ascending order for all properties. + * Otherwise, for each property, sort in ascending order if its corresponding value in + * orders is true, and descending order if false. + * + * @private + * @param {Object} object The object to compare to `other`. + * @param {Object} other The object to compare to `object`. + * @param {boolean[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ + function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = baseCompareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + return result * (orders[index] ? 1 : -1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://code.google.com/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; + } + + /** + * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters. + * + * @private + * @param {string} letter The matched letter to deburr. + * @returns {string} Returns the deburred letter. + */ + function deburrLetter(letter) { + return deburredLetters[letter]; + } + + /** + * Used by `_.escape` to convert characters to HTML entities. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeHtmlChar(chr) { + return htmlEscapes[chr]; + } + + /** + * Used by `_.template` to escape characters for inclusion in compiled + * string literals. + * + * @private + * @param {string} chr The matched character to escape. + * @returns {string} Returns the escaped character. + */ + function escapeStringChar(chr) { + return '\\' + stringEscapes[chr]; + } + + /** + * Gets the index at which the first occurrence of `NaN` is found in `array`. + * If `fromRight` is provided elements of `array` are iterated from right to left. + * + * @private + * @param {Array} array The array to search. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched `NaN`, else `-1`. + */ + function indexOfNaN(array, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 0 : -1); + + while ((fromRight ? index-- : ++index < length)) { + var other = array[index]; + if (other !== other) { + return index; + } + } + return -1; + } + + /** + * Checks if `value` is object-like. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + */ + function isObjectLike(value) { + return (value && typeof value == 'object') || false; + } + + /** + * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a + * character code is whitespace. + * + * @private + * @param {number} charCode The character code to inspect. + * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`. + */ + function isSpace(charCode) { + return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 || + (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279))); + } + + /** + * Replaces all `placeholder` elements in `array` with an internal placeholder + * and returns an array of their indexes. + * + * @private + * @param {Array} array The array to modify. + * @param {*} placeholder The placeholder to replace. + * @returns {Array} Returns the new array of placeholder indexes. + */ + function replaceHolders(array, placeholder) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + if (array[index] === placeholder) { + array[index] = PLACEHOLDER; + result[++resIndex] = index; + } + } + return result; + } + + /** + * An implementation of `_.uniq` optimized for sorted arrays without support + * for callback shorthands and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ + function sortedUniq(array, iteratee) { + var seen, + index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (!index || seen !== computed) { + seen = computed; + result[++resIndex] = value; + } + } + return result; + } + + /** + * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the first non-whitespace character. + */ + function trimmedLeftIndex(string) { + var index = -1, + length = string.length; + + while (++index < length && isSpace(string.charCodeAt(index))) {} + return index; + } + + /** + * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ + function trimmedRightIndex(string) { + var index = string.length; + + while (index-- && isSpace(string.charCodeAt(index))) {} + return index; + } + + /** + * Used by `_.unescape` to convert HTML entities to characters. + * + * @private + * @param {string} chr The matched character to unescape. + * @returns {string} Returns the unescaped character. + */ + function unescapeHtmlChar(chr) { + return htmlUnescapes[chr]; + } + + /*--------------------------------------------------------------------------*/ + + /** + * Create a new pristine `lodash` function using the given `context` object. + * + * @static + * @memberOf _ + * @category Utility + * @param {Object} [context=root] The context object. + * @returns {Function} Returns a new `lodash` function. + * @example + * + * _.mixin({ 'add': function(a, b) { return a + b; } }); + * + * var lodash = _.runInContext(); + * lodash.mixin({ 'sub': function(a, b) { return a - b; } }); + * + * _.isFunction(_.add); + * // => true + * _.isFunction(_.sub); + * // => false + * + * lodash.isFunction(lodash.add); + * // => false + * lodash.isFunction(lodash.sub); + * // => true + * + * // using `context` to mock `Date#getTime` use in `_.now` + * var mock = _.runInContext({ + * 'Date': function() { + * return { 'getTime': getTimeMock }; + * } + * }); + * + * // or creating a suped-up `defer` in Node.js + * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; + */ + function runInContext(context) { + // Avoid issues with some ES3 environments that attempt to use values, named + // after built-in constructors like `Object`, for the creation of literals. + // ES5 clears this up by stating that literals must use built-in constructors. + // See https://es5.github.io/#x11.1.5 for more details. + context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; + + /** Native constructor references. */ + var Array = context.Array, + Date = context.Date, + Error = context.Error, + Function = context.Function, + Math = context.Math, + Number = context.Number, + Object = context.Object, + RegExp = context.RegExp, + String = context.String, + TypeError = context.TypeError; + + /** Used for native method references. */ + var arrayProto = Array.prototype, + objectProto = Object.prototype, + stringProto = String.prototype; + + /** Used to detect DOM support. */ + var document = (document = context.window) && document.document; + + /** Used to resolve the decompiled source of functions. */ + var fnToString = Function.prototype.toString; + + /** Used to the length of n-tuples for `_.unzip`. */ + var getLength = baseProperty('length'); + + /** Used to check objects for own properties. */ + var hasOwnProperty = objectProto.hasOwnProperty; + + /** Used to generate unique IDs. */ + var idCounter = 0; + + /** + * Used to resolve the `toStringTag` of values. + * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) + * for more details. + */ + var objToString = objectProto.toString; + + /** Used to restore the original `_` reference in `_.noConflict`. */ + var oldDash = context._; + + /** Used to detect if a method is native. */ + var reNative = RegExp('^' + + escapeRegExp(objToString) + .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' + ); + + /** Native method references. */ + var ArrayBuffer = isNative(ArrayBuffer = context.ArrayBuffer) && ArrayBuffer, + bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice, + ceil = Math.ceil, + clearTimeout = context.clearTimeout, + floor = Math.floor, + getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, + push = arrayProto.push, + propertyIsEnumerable = objectProto.propertyIsEnumerable, + Set = isNative(Set = context.Set) && Set, + setTimeout = context.setTimeout, + splice = arrayProto.splice, + Uint8Array = isNative(Uint8Array = context.Uint8Array) && Uint8Array, + WeakMap = isNative(WeakMap = context.WeakMap) && WeakMap; + + /** Used to clone array buffers. */ + var Float64Array = (function() { + // Safari 5 errors when using an array buffer to initialize a typed array + // where the array buffer's `byteLength` is not a multiple of the typed + // array's `BYTES_PER_ELEMENT`. + try { + var func = isNative(func = context.Float64Array) && func, + result = new func(new ArrayBuffer(10), 0, 1) && func; + } catch(e) {} + return result; + }()); + + /* Native method references for those with the same name as other `lodash` methods. */ + var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, + nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, + nativeIsFinite = context.isFinite, + nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, + nativeMax = Math.max, + nativeMin = Math.min, + nativeNow = isNative(nativeNow = Date.now) && nativeNow, + nativeNumIsFinite = isNative(nativeNumIsFinite = Number.isFinite) && nativeNumIsFinite, + nativeParseInt = context.parseInt, + nativeRandom = Math.random; + + /** Used as references for `-Infinity` and `Infinity`. */ + var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, + POSITIVE_INFINITY = Number.POSITIVE_INFINITY; + + /** Used as references for the maximum length and index of an array. */ + var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1, + MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, + HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; + + /** Used as the size, in bytes, of each `Float64Array` element. */ + var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0; + + /** + * Used as the maximum length of an array-like value. + * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) + * for more details. + */ + var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; + + /** Used to store function metadata. */ + var metaMap = WeakMap && new WeakMap; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object which wraps `value` to enable implicit chaining. + * Methods that operate on and return arrays, collections, and functions can + * be chained together. Methods that return a boolean or single value will + * automatically end the chain returning the unwrapped value. Explicit chaining + * may be enabled using `_.chain`. The execution of chained methods is lazy, + * that is, execution is deferred until `_#value` is implicitly or explicitly + * called. + * + * Lazy evaluation allows several methods to support shortcut fusion. Shortcut + * fusion is an optimization that merges iteratees to avoid creating intermediate + * arrays and reduce the number of iteratee executions. + * + * Chaining is supported in custom builds as long as the `_#value` method is + * directly or indirectly included in the build. + * + * In addition to lodash methods, wrappers have `Array` and `String` methods. + * + * The wrapper `Array` methods are: + * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, + * `splice`, and `unshift` + * + * The wrapper `String` methods are: + * `replace` and `split` + * + * The wrapper methods that support shortcut fusion are: + * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, + * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, + * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, + * and `where` + * + * The chainable wrapper methods are: + * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, + * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, + * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`, + * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`, + * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`, + * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`, + * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`, + * `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`, `merge`, + * `mixin`, `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`, + * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, + * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`, + * `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, + * `spread`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, + * `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, `transform`, + * `union`, `uniq`, `unshift`, `unzip`, `values`, `valuesIn`, `where`, + * `without`, `wrap`, `xor`, `zip`, and `zipObject` + * + * The wrapper methods that are **not** chainable by default are: + * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`, + * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, + * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`, + * `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`, + * `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, + * `isFinite`,`isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, + * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, + * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, + * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, + * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, + * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, + * `startCase`, `startsWith`, `sum`, `template`, `trim`, `trimLeft`, + * `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words` + * + * The wrapper method `sample` will return a wrapped value when `n` is provided, + * otherwise an unwrapped value is returned. + * + * @name _ + * @constructor + * @category Chain + * @param {*} value The value to wrap in a `lodash` instance. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var wrapped = _([1, 2, 3]); + * + * // returns an unwrapped value + * wrapped.reduce(function(sum, n) { + * return sum + n; + * }); + * // => 6 + * + * // returns a wrapped value + * var squares = wrapped.map(function(n) { + * return n * n; + * }); + * + * _.isArray(squares); + * // => false + * + * _.isArray(squares.value()); + * // => true + */ + function lodash(value) { + if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { + if (value instanceof LodashWrapper) { + return value; + } + if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { + return wrapperClone(value); + } + } + return new LodashWrapper(value); + } + + /** + * The function whose prototype all chaining wrappers inherit from. + * + * @private + */ + function baseLodash() { + // No operation performed. + } + + /** + * The base constructor for creating `lodash` wrapper objects. + * + * @private + * @param {*} value The value to wrap. + * @param {boolean} [chainAll] Enable chaining for all wrapper methods. + * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. + */ + function LodashWrapper(value, chainAll, actions) { + this.__wrapped__ = value; + this.__actions__ = actions || []; + this.__chain__ = !!chainAll; + } + + /** + * An object environment feature flags. + * + * @static + * @memberOf _ + * @type Object + */ + var support = lodash.support = {}; + + (function(x) { + + /** + * Detect if functions can be decompiled by `Function#toString` + * (all but Firefox OS certified apps, older Opera mobile browsers, and + * the PlayStation 3; forced `false` for Windows 8 apps). + * + * @memberOf _.support + * @type boolean + */ + support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext); + + /** + * Detect if `Function#name` is supported (all but IE). + * + * @memberOf _.support + * @type boolean + */ + support.funcNames = typeof Function.name == 'string'; + + /** + * Detect if the DOM is supported. + * + * @memberOf _.support + * @type boolean + */ + try { + support.dom = document.createDocumentFragment().nodeType === 11; + } catch(e) { + support.dom = false; + } + + /** + * Detect if `arguments` object indexes are non-enumerable. + * + * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object + * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat + * `arguments` object indexes as non-enumerable and fail `hasOwnProperty` + * checks for indexes that exceed their function's formal parameters with + * associated values of `0`. + * + * @memberOf _.support + * @type boolean + */ + try { + support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); + } catch(e) { + support.nonEnumArgs = true; + } + }(0, 0)); + + /** + * By default, the template delimiters used by lodash are like those in + * embedded Ruby (ERB). Change the following template settings to use + * alternative delimiters. + * + * @static + * @memberOf _ + * @type Object + */ + lodash.templateSettings = { + + /** + * Used to detect `data` property values to be HTML-escaped. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'escape': reEscape, + + /** + * Used to detect code to be evaluated. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'evaluate': reEvaluate, + + /** + * Used to detect `data` property values to inject. + * + * @memberOf _.templateSettings + * @type RegExp + */ + 'interpolate': reInterpolate, + + /** + * Used to reference the data object in the template text. + * + * @memberOf _.templateSettings + * @type string + */ + 'variable': '', + + /** + * Used to import variables into the compiled template. + * + * @memberOf _.templateSettings + * @type Object + */ + 'imports': { + + /** + * A reference to the `lodash` function. + * + * @memberOf _.templateSettings.imports + * @type Function + */ + '_': lodash + } + }; + + /*------------------------------------------------------------------------*/ + + /** + * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. + * + * @private + * @param {*} value The value to wrap. + */ + function LazyWrapper(value) { + this.__wrapped__ = value; + this.__actions__ = null; + this.__dir__ = 1; + this.__dropCount__ = 0; + this.__filtered__ = false; + this.__iteratees__ = null; + this.__takeCount__ = POSITIVE_INFINITY; + this.__views__ = null; + } + + /** + * Creates a clone of the lazy wrapper object. + * + * @private + * @name clone + * @memberOf LazyWrapper + * @returns {Object} Returns the cloned `LazyWrapper` object. + */ + function lazyClone() { + var actions = this.__actions__, + iteratees = this.__iteratees__, + views = this.__views__, + result = new LazyWrapper(this.__wrapped__); + + result.__actions__ = actions ? arrayCopy(actions) : null; + result.__dir__ = this.__dir__; + result.__filtered__ = this.__filtered__; + result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null; + result.__takeCount__ = this.__takeCount__; + result.__views__ = views ? arrayCopy(views) : null; + return result; + } + + /** + * Reverses the direction of lazy iteration. + * + * @private + * @name reverse + * @memberOf LazyWrapper + * @returns {Object} Returns the new reversed `LazyWrapper` object. + */ + function lazyReverse() { + if (this.__filtered__) { + var result = new LazyWrapper(this); + result.__dir__ = -1; + result.__filtered__ = true; + } else { + result = this.clone(); + result.__dir__ *= -1; + } + return result; + } + + /** + * Extracts the unwrapped value from its lazy wrapper. + * + * @private + * @name value + * @memberOf LazyWrapper + * @returns {*} Returns the unwrapped value. + */ + function lazyValue() { + var array = this.__wrapped__.value(); + if (!isArray(array)) { + return baseWrapperValue(array, this.__actions__); + } + var dir = this.__dir__, + isRight = dir < 0, + view = getView(0, array.length, this.__views__), + start = view.start, + end = view.end, + length = end - start, + index = isRight ? end : (start - 1), + takeCount = nativeMin(length, this.__takeCount__), + iteratees = this.__iteratees__, + iterLength = iteratees ? iteratees.length : 0, + resIndex = 0, + result = []; + + outer: + while (length-- && resIndex < takeCount) { + index += dir; + + var iterIndex = -1, + value = array[index]; + + while (++iterIndex < iterLength) { + var data = iteratees[iterIndex], + iteratee = data.iteratee, + type = data.type; + + if (type == LAZY_DROP_WHILE_FLAG) { + if (data.done && (isRight ? (index > data.index) : (index < data.index))) { + data.count = 0; + data.done = false; + } + data.index = index; + if (!data.done) { + var limit = data.limit; + if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) { + continue outer; + } + } + } else { + var computed = iteratee(value); + if (type == LAZY_MAP_FLAG) { + value = computed; + } else if (!computed) { + if (type == LAZY_FILTER_FLAG) { + continue outer; + } else { + break outer; + } + } + } + } + result[resIndex++] = value; + } + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a cache object to store key/value pairs. + * + * @private + * @static + * @name Cache + * @memberOf _.memoize + */ + function MapCache() { + this.__data__ = {}; + } + + /** + * Removes `key` and its value from the cache. + * + * @private + * @name delete + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`. + */ + function mapDelete(key) { + return this.has(key) && delete this.__data__[key]; + } + + /** + * Gets the cached value for `key`. + * + * @private + * @name get + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to get. + * @returns {*} Returns the cached value. + */ + function mapGet(key) { + return key == '__proto__' ? undefined : this.__data__[key]; + } + + /** + * Checks if a cached value for `key` exists. + * + * @private + * @name has + * @memberOf _.memoize.Cache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function mapHas(key) { + return key != '__proto__' && hasOwnProperty.call(this.__data__, key); + } + + /** + * Adds `value` to `key` of the cache. + * + * @private + * @name set + * @memberOf _.memoize.Cache + * @param {string} key The key of the value to cache. + * @param {*} value The value to cache. + * @returns {Object} Returns the cache object. + */ + function mapSet(key, value) { + if (key != '__proto__') { + this.__data__[key] = value; + } + return this; + } + + /*------------------------------------------------------------------------*/ + + /** + * + * Creates a cache object to store unique values. + * + * @private + * @param {Array} [values] The values to cache. + */ + function SetCache(values) { + var length = values ? values.length : 0; + + this.data = { 'hash': nativeCreate(null), 'set': new Set }; + while (length--) { + this.push(values[length]); + } + } + + /** + * Checks if `value` is in `cache` mimicking the return signature of + * `_.indexOf` by returning `0` if the value is found, else `-1`. + * + * @private + * @param {Object} cache The cache to search. + * @param {*} value The value to search for. + * @returns {number} Returns `0` if `value` is found, else `-1`. + */ + function cacheIndexOf(cache, value) { + var data = cache.data, + result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; + + return result ? 0 : -1; + } + + /** + * Adds `value` to the cache. + * + * @private + * @name push + * @memberOf SetCache + * @param {*} value The value to cache. + */ + function cachePush(value) { + var data = this.data; + if (typeof value == 'string' || isObject(value)) { + data.set.add(value); + } else { + data.hash[value] = true; + } + } + + /*------------------------------------------------------------------------*/ + + /** + * Copies the values of `source` to `array`. + * + * @private + * @param {Array} source The array to copy values from. + * @param {Array} [array=[]] The array to copy values to. + * @returns {Array} Returns `array`. + */ + function arrayCopy(source, array) { + var index = -1, + length = source.length; + + array || (array = Array(length)); + while (++index < length) { + array[index] = source[index]; + } + return array; + } + + /** + * A specialized version of `_.forEach` for arrays without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEach(array, iteratee) { + var index = -1, + length = array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.forEachRight` for arrays without support for + * callback shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ + function arrayEachRight(array, iteratee) { + var length = array.length; + + while (length--) { + if (iteratee(array[length], length, array) === false) { + break; + } + } + return array; + } + + /** + * A specialized version of `_.every` for arrays without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + */ + function arrayEvery(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (!predicate(array[index], index, array)) { + return false; + } + } + return true; + } + + /** + * A specialized version of `_.filter` for arrays without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * A specialized version of `_.map` for arrays without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function arrayMap(array, iteratee) { + var index = -1, + length = array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; + } + + /** + * A specialized version of `_.max` for arrays without support for iteratees. + * + * @private + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + */ + function arrayMax(array) { + var index = -1, + length = array.length, + result = NEGATIVE_INFINITY; + + while (++index < length) { + var value = array[index]; + if (value > result) { + result = value; + } + } + return result; + } + + /** + * A specialized version of `_.min` for arrays without support for iteratees. + * + * @private + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + */ + function arrayMin(array) { + var index = -1, + length = array.length, + result = POSITIVE_INFINITY; + + while (++index < length) { + var value = array[index]; + if (value < result) { + result = value; + } + } + return result; + } + + /** + * A specialized version of `_.reduce` for arrays without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initFromArray] Specify using the first element of `array` + * as the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduce(array, iteratee, accumulator, initFromArray) { + var index = -1, + length = array.length; + + if (initFromArray && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; + } + + /** + * A specialized version of `_.reduceRight` for arrays without support for + * callback shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initFromArray] Specify using the last element of `array` + * as the initial value. + * @returns {*} Returns the accumulated value. + */ + function arrayReduceRight(array, iteratee, accumulator, initFromArray) { + var length = array.length; + if (initFromArray && length) { + accumulator = array[--length]; + } + while (length--) { + accumulator = iteratee(accumulator, array[length], length, array); + } + return accumulator; + } + + /** + * A specialized version of `_.some` for arrays without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function arraySome(array, predicate) { + var index = -1, + length = array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; + } + + /** + * Used by `_.defaults` to customize its `_.assign` use. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @returns {*} Returns the value to assign to the destination object. + */ + function assignDefaults(objectValue, sourceValue) { + return typeof objectValue == 'undefined' ? sourceValue : objectValue; + } + + /** + * Used by `_.template` to customize its `_.assign` use. + * + * **Note:** This method is like `assignDefaults` except that it ignores + * inherited property values when checking if a property is `undefined`. + * + * @private + * @param {*} objectValue The destination object property value. + * @param {*} sourceValue The source object property value. + * @param {string} key The key associated with the object and source values. + * @param {Object} object The destination object. + * @returns {*} Returns the value to assign to the destination object. + */ + function assignOwnDefaults(objectValue, sourceValue, key, object) { + return (typeof objectValue == 'undefined' || !hasOwnProperty.call(object, key)) + ? sourceValue + : objectValue; + } + + /** + * The base implementation of `_.assign` without support for argument juggling, + * multiple sources, and `this` binding `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} [customizer] The function to customize assigning values. + * @returns {Object} Returns the destination object. + */ + function baseAssign(object, source, customizer) { + var props = keys(source); + if (!customizer) { + return baseCopy(source, object, props); + } + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index], + value = object[key], + result = customizer(value, source[key], key, object, source); + + if ((result === result ? (result !== value) : (value === value)) || + (typeof value == 'undefined' && !(key in object))) { + object[key] = result; + } + } + return object; + } + + /** + * The base implementation of `_.at` without support for strings and individual + * key arguments. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {number[]|string[]} [props] The property names or indexes of elements to pick. + * @returns {Array} Returns the new array of picked elements. + */ + function baseAt(collection, props) { + var index = -1, + length = collection.length, + isArr = isLength(length), + propsLength = props.length, + result = Array(propsLength); + + while(++index < propsLength) { + var key = props[index]; + if (isArr) { + key = parseFloat(key); + result[index] = isIndex(key, length) ? collection[key] : undefined; + } else { + result[index] = collection[key]; + } + } + return result; + } + + /** + * Copies the properties of `source` to `object`. + * + * @private + * @param {Object} source The object to copy properties from. + * @param {Object} [object={}] The object to copy properties to. + * @param {Array} props The property names to copy. + * @returns {Object} Returns `object`. + */ + function baseCopy(source, object, props) { + if (!props) { + props = object; + object = {}; + } + var index = -1, + length = props.length; + + while (++index < length) { + var key = props[index]; + object[key] = source[key]; + } + return object; + } + + /** + * The base implementation of `_.bindAll` without support for individual + * method name arguments. + * + * @private + * @param {Object} object The object to bind and assign the bound methods to. + * @param {string[]} methodNames The object method names to bind. + * @returns {Object} Returns `object`. + */ + function baseBindAll(object, methodNames) { + var index = -1, + length = methodNames.length; + + while (++index < length) { + var key = methodNames[index]; + object[key] = createWrapper(object[key], BIND_FLAG, object); + } + return object; + } + + /** + * The base implementation of `_.callback` which supports specifying the + * number of arguments to provide to `func`. + * + * @private + * @param {*} [func=_.identity] The value to convert to a callback. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ + function baseCallback(func, thisArg, argCount) { + var type = typeof func; + if (type == 'function') { + return (typeof thisArg != 'undefined' && isBindable(func)) + ? bindCallback(func, thisArg, argCount) + : func; + } + if (func == null) { + return identity; + } + if (type == 'object') { + return baseMatches(func); + } + return typeof thisArg == 'undefined' + ? baseProperty(func + '') + : baseMatchesProperty(func + '', thisArg); + } + + /** + * The base implementation of `_.clone` without support for argument juggling + * and `this` binding `customizer` functions. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The object `value` belongs to. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates clones with source counterparts. + * @returns {*} Returns the cloned value. + */ + function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { + var result; + if (customizer) { + result = object ? customizer(value, key, object) : customizer(value); + } + if (typeof result != 'undefined') { + return result; + } + if (!isObject(value)) { + return value; + } + var isArr = isArray(value); + if (isArr) { + result = initCloneArray(value); + if (!isDeep) { + return arrayCopy(value, result); + } + } else { + var tag = objToString.call(value), + isFunc = tag == funcTag; + + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = initCloneObject(isFunc ? {} : value); + if (!isDeep) { + return baseCopy(value, result, keys(value)); + } + } else { + return cloneableTags[tag] + ? initCloneByTag(value, tag, isDeep) + : (object ? value : {}); + } + } + // Check for circular references and return corresponding clone. + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == value) { + return stackB[length]; + } + } + // Add the source value to the stack of traversed objects and associate it with its clone. + stackA.push(value); + stackB.push(result); + + // Recursively populate clone (susceptible to call stack limits). + (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { + result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); + }); + return result; + } + + /** + * The base implementation of `_.create` without support for assigning + * properties to the created object. + * + * @private + * @param {Object} prototype The object to inherit from. + * @returns {Object} Returns the new object. + */ + var baseCreate = (function() { + function Object() {} + return function(prototype) { + if (isObject(prototype)) { + Object.prototype = prototype; + var result = new Object; + Object.prototype = null; + } + return result || context.Object(); + }; + }()); + + /** + * The base implementation of `_.delay` and `_.defer` which accepts an index + * of where to slice the arguments to provide to `func`. + * + * @private + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {Object} args The `arguments` object to slice and provide to `func`. + * @returns {number} Returns the timer id. + */ + function baseDelay(func, wait, args, fromIndex) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return setTimeout(function() { func.apply(undefined, baseSlice(args, fromIndex)); }, wait); + } + + /** + * The base implementation of `_.difference` which accepts a single array + * of values to exclude. + * + * @private + * @param {Array} array The array to inspect. + * @param {Array} values The values to exclude. + * @returns {Array} Returns the new array of filtered values. + */ + function baseDifference(array, values) { + var length = array ? array.length : 0, + result = []; + + if (!length) { + return result; + } + var index = -1, + indexOf = getIndexOf(), + isCommon = indexOf == baseIndexOf, + cache = (isCommon && values.length >= 200) ? createCache(values) : null, + valuesLength = values.length; + + if (cache) { + indexOf = cacheIndexOf; + isCommon = false; + values = cache; + } + outer: + while (++index < length) { + var value = array[index]; + + if (isCommon && value === value) { + var valuesIndex = valuesLength; + while (valuesIndex--) { + if (values[valuesIndex] === value) { + continue outer; + } + } + result.push(value); + } + else if (indexOf(values, value, 0) < 0) { + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.forEach` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object|string} Returns `collection`. + */ + function baseEach(collection, iteratee) { + var length = collection ? collection.length : 0; + if (!isLength(length)) { + return baseForOwn(collection, iteratee); + } + var index = -1, + iterable = toObject(collection); + + while (++index < length) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + } + + /** + * The base implementation of `_.forEachRight` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object|string} Returns `collection`. + */ + function baseEachRight(collection, iteratee) { + var length = collection ? collection.length : 0; + if (!isLength(length)) { + return baseForOwnRight(collection, iteratee); + } + var iterable = toObject(collection); + while (length--) { + if (iteratee(iterable[length], length, iterable) === false) { + break; + } + } + return collection; + } + + /** + * The base implementation of `_.every` without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false` + */ + function baseEvery(collection, predicate) { + var result = true; + baseEach(collection, function(value, index, collection) { + result = !!predicate(value, index, collection); + return result; + }); + return result; + } + + /** + * The base implementation of `_.fill` without an iteratee call guard. + * + * @private + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function baseFill(array, value, start, end) { + var length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (typeof end == 'undefined' || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : (end >>> 0); + start >>>= 0; + + while (start < length) { + array[start++] = value; + } + return array; + } + + /** + * The base implementation of `_.filter` without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function baseFilter(collection, predicate) { + var result = []; + baseEach(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; + } + + /** + * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, + * without support for callback shorthands and `this` binding, which iterates + * over `collection` using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to search. + * @param {Function} predicate The function invoked per iteration. + * @param {Function} eachFunc The function to iterate over `collection`. + * @param {boolean} [retKey] Specify returning the key of the found element + * instead of the element itself. + * @returns {*} Returns the found element or its key, else `undefined`. + */ + function baseFind(collection, predicate, eachFunc, retKey) { + var result; + eachFunc(collection, function(value, key, collection) { + if (predicate(value, key, collection)) { + result = retKey ? key : value; + return false; + } + }); + return result; + } + + /** + * The base implementation of `_.flatten` with added support for restricting + * flattening and specifying the start index. + * + * @private + * @param {Array} array The array to flatten. + * @param {boolean} isDeep Specify a deep flatten. + * @param {boolean} isStrict Restrict flattening to arrays and `arguments` objects. + * @param {number} fromIndex The index to start from. + * @returns {Array} Returns the new flattened array. + */ + function baseFlatten(array, isDeep, isStrict, fromIndex) { + var index = fromIndex - 1, + length = array.length, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + + if (isObjectLike(value) && isLength(value.length) && (isArray(value) || isArguments(value))) { + if (isDeep) { + // Recursively flatten arrays (susceptible to call stack limits). + value = baseFlatten(value, isDeep, isStrict, 0); + } + var valIndex = -1, + valLength = value.length; + + result.length += valLength; + while (++valIndex < valLength) { + result[++resIndex] = value[valIndex]; + } + } else if (!isStrict) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * The base implementation of `baseForIn` and `baseForOwn` which iterates + * over `object` properties returned by `keysFunc` invoking `iteratee` for + * each property. Iterator functions may exit iteration early by explicitly + * returning `false`. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + function baseFor(object, iteratee, keysFunc) { + var index = -1, + iterable = toObject(object), + props = keysFunc(object), + length = props.length; + + while (++index < length) { + var key = props[index]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + } + + /** + * This function is like `baseFor` except that it iterates over properties + * in the opposite order. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {Function} keysFunc The function to get the keys of `object`. + * @returns {Object} Returns `object`. + */ + function baseForRight(object, iteratee, keysFunc) { + var iterable = toObject(object), + props = keysFunc(object), + length = props.length; + + while (length--) { + var key = props[length]; + if (iteratee(iterable[key], key, iterable) === false) { + break; + } + } + return object; + } + + /** + * The base implementation of `_.forIn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForIn(object, iteratee) { + return baseFor(object, iteratee, keysIn); + } + + /** + * The base implementation of `_.forOwn` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwn(object, iteratee) { + return baseFor(object, iteratee, keys); + } + + /** + * The base implementation of `_.forOwnRight` without support for callback + * shorthands and `this` binding. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ + function baseForOwnRight(object, iteratee) { + return baseForRight(object, iteratee, keys); + } + + /** + * The base implementation of `_.functions` which creates an array of + * `object` function property names filtered from those provided. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The property names to filter. + * @returns {Array} Returns the new array of filtered property names. + */ + function baseFunctions(object, props) { + var index = -1, + length = props.length, + resIndex = -1, + result = []; + + while (++index < length) { + var key = props[index]; + if (isFunction(object[key])) { + result[++resIndex] = key; + } + } + return result; + } + + /** + * The base implementation of `_.invoke` which requires additional arguments + * to be provided as an array of arguments rather than individually. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|string} methodName The name of the method to invoke or + * the function invoked per iteration. + * @param {Array} [args] The arguments to invoke the method with. + * @returns {Array} Returns the array of results. + */ + function baseInvoke(collection, methodName, args) { + var index = -1, + isFunc = typeof methodName == 'function', + length = collection ? collection.length : 0, + result = isLength(length) ? Array(length) : []; + + baseEach(collection, function(value) { + var func = isFunc ? methodName : (value != null && value[methodName]); + result[++index] = func ? func.apply(value, args) : undefined; + }); + return result; + } + + /** + * The base implementation of `_.isEqual` without support for `this` binding + * `customizer` functions. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparing values. + * @param {boolean} [isWhere] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ + function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) { + // Exit early for identical values. + if (value === other) { + // Treat `+0` vs. `-0` as not equal. + return value !== 0 || (1 / value == 1 / other); + } + var valType = typeof value, + othType = typeof other; + + // Exit early for unlike primitive values. + if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') || + value == null || other == null) { + // Return `false` unless both values are `NaN`. + return value !== value && other !== other; + } + return baseIsEqualDeep(value, other, baseIsEqual, customizer, isWhere, stackA, stackB); + } + + /** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing objects. + * @param {boolean} [isWhere] Specify performing partial comparisons. + * @param {Array} [stackA=[]] Tracks traversed `value` objects. + * @param {Array} [stackB=[]] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, stackA, stackB) { + var objIsArr = isArray(object), + othIsArr = isArray(other), + objTag = arrayTag, + othTag = arrayTag; + + if (!objIsArr) { + objTag = objToString.call(object); + if (objTag == argsTag) { + objTag = objectTag; + } else if (objTag != objectTag) { + objIsArr = isTypedArray(object); + } + } + if (!othIsArr) { + othTag = objToString.call(other); + if (othTag == argsTag) { + othTag = objectTag; + } else if (othTag != objectTag) { + othIsArr = isTypedArray(other); + } + } + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && !(objIsArr || objIsObj)) { + return equalByTag(object, other, objTag); + } + var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), + othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); + + if (valWrapped || othWrapped) { + return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isWhere, stackA, stackB); + } + if (!isSameTag) { + return false; + } + // Assume cyclic values are equal. + // For more information on detecting circular references see https://es5.github.io/#JO. + stackA || (stackA = []); + stackB || (stackB = []); + + var length = stackA.length; + while (length--) { + if (stackA[length] == object) { + return stackB[length] == other; + } + } + // Add `object` and `other` to the stack of traversed objects. + stackA.push(object); + stackB.push(other); + + var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isWhere, stackA, stackB); + + stackA.pop(); + stackB.pop(); + + return result; + } + + /** + * The base implementation of `_.isMatch` without support for callback + * shorthands or `this` binding. + * + * @private + * @param {Object} object The object to inspect. + * @param {Array} props The source property names to match. + * @param {Array} values The source values to match. + * @param {Array} strictCompareFlags Strict comparison flags for source values. + * @param {Function} [customizer] The function to customize comparing objects. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ + function baseIsMatch(object, props, values, strictCompareFlags, customizer) { + var length = props.length; + if (object == null) { + return !length; + } + var index = -1, + noCustomizer = !customizer; + + while (++index < length) { + if ((noCustomizer && strictCompareFlags[index]) + ? values[index] !== object[props[index]] + : !hasOwnProperty.call(object, props[index]) + ) { + return false; + } + } + index = -1; + while (++index < length) { + var key = props[index]; + if (noCustomizer && strictCompareFlags[index]) { + var result = hasOwnProperty.call(object, key); + } else { + var objValue = object[key], + srcValue = values[index]; + + result = customizer ? customizer(objValue, srcValue, key) : undefined; + if (typeof result == 'undefined') { + result = baseIsEqual(srcValue, objValue, customizer, true); + } + } + if (!result) { + return false; + } + } + return true; + } + + /** + * The base implementation of `_.map` without support for callback shorthands + * or `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ + function baseMap(collection, iteratee) { + var result = []; + baseEach(collection, function(value, key, collection) { + result.push(iteratee(value, key, collection)); + }); + return result; + } + + /** + * The base implementation of `_.matches` which does not clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new function. + */ + function baseMatches(source) { + var props = keys(source), + length = props.length; + + if (length == 1) { + var key = props[0], + value = source[key]; + + if (isStrictComparable(value)) { + return function(object) { + return object != null && object[key] === value && hasOwnProperty.call(object, key); + }; + } + } + var values = Array(length), + strictCompareFlags = Array(length); + + while (length--) { + value = source[props[length]]; + values[length] = value; + strictCompareFlags[length] = isStrictComparable(value); + } + return function(object) { + return baseIsMatch(object, props, values, strictCompareFlags); + }; + } + + /** + * The base implementation of `_.matchesProperty` which does not coerce `key` + * to a string. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} value The value to compare. + * @returns {Function} Returns the new function. + */ + function baseMatchesProperty(key, value) { + if (isStrictComparable(value)) { + return function(object) { + return object != null && object[key] === value; + }; + } + return function(object) { + return object != null && baseIsEqual(value, object[key], null, true); + }; + } + + /** + * The base implementation of `_.merge` without support for argument juggling, + * multiple sources, and `this` binding `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {Function} [customizer] The function to customize merging properties. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {Object} Returns the destination object. + */ + function baseMerge(object, source, customizer, stackA, stackB) { + if (!isObject(object)) { + return object; + } + var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source)); + (isSrcArr ? arrayEach : baseForOwn)(source, function(srcValue, key, source) { + if (isObjectLike(srcValue)) { + stackA || (stackA = []); + stackB || (stackB = []); + return baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); + } + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = typeof result == 'undefined'; + + if (isCommon) { + result = srcValue; + } + if ((isSrcArr || typeof result != 'undefined') && + (isCommon || (result === result ? (result !== value) : (value === value)))) { + object[key] = result; + } + }); + return object; + } + + /** + * A specialized version of `baseMerge` for arrays and objects which performs + * deep merges and tracks traversed objects enabling objects with circular + * references to be merged. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @param {string} key The key of the value to merge. + * @param {Function} mergeFunc The function to merge values. + * @param {Function} [customizer] The function to customize merging properties. + * @param {Array} [stackA=[]] Tracks traversed source objects. + * @param {Array} [stackB=[]] Associates values with source counterparts. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) { + var length = stackA.length, + srcValue = source[key]; + + while (length--) { + if (stackA[length] == srcValue) { + object[key] = stackB[length]; + return; + } + } + var value = object[key], + result = customizer ? customizer(value, srcValue, key, object, source) : undefined, + isCommon = typeof result == 'undefined'; + + if (isCommon) { + result = srcValue; + if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) { + result = isArray(value) + ? value + : (value ? arrayCopy(value) : []); + } + else if (isPlainObject(srcValue) || isArguments(srcValue)) { + result = isArguments(value) + ? toPlainObject(value) + : (isPlainObject(value) ? value : {}); + } + else { + isCommon = false; + } + } + // Add the source value to the stack of traversed objects and associate + // it with its merged value. + stackA.push(srcValue); + stackB.push(result); + + if (isCommon) { + // Recursively merge objects and arrays (susceptible to call stack limits). + object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); + } else if (result === result ? (result !== value) : (value === value)) { + object[key] = result; + } + } + + /** + * The base implementation of `_.property` which does not coerce `key` to a string. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new function. + */ + function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; + } + + /** + * The base implementation of `_.pullAt` without support for individual + * index arguments. + * + * @private + * @param {Array} array The array to modify. + * @param {number[]} indexes The indexes of elements to remove. + * @returns {Array} Returns the new array of removed elements. + */ + function basePullAt(array, indexes) { + var length = indexes.length, + result = baseAt(array, indexes); + + indexes.sort(baseCompareAscending); + while (length--) { + var index = parseFloat(indexes[length]); + if (index != previous && isIndex(index)) { + var previous = index; + splice.call(array, index, 1); + } + } + return result; + } + + /** + * The base implementation of `_.random` without support for argument juggling + * and returning floating-point numbers. + * + * @private + * @param {number} min The minimum possible value. + * @param {number} max The maximum possible value. + * @returns {number} Returns the random number. + */ + function baseRandom(min, max) { + return min + floor(nativeRandom() * (max - min + 1)); + } + + /** + * The base implementation of `_.reduce` and `_.reduceRight` without support + * for callback shorthands or `this` binding, which iterates over `collection` + * using the provided `eachFunc`. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initFromCollection Specify using the first or last element + * of `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ + function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initFromCollection + ? (initFromCollection = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; + } + + /** + * The base implementation of `setData` without support for hot loop detection. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var baseSetData = !metaMap ? identity : function(func, data) { + metaMap.set(func, data); + return func; + }; + + /** + * The base implementation of `_.slice` without an iteratee call guard. + * + * @private + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function baseSlice(array, start, end) { + var index = -1, + length = array.length; + + start = start == null ? 0 : (+start || 0); + if (start < 0) { + start = -start > length ? 0 : (length + start); + } + end = (typeof end == 'undefined' || end > length) ? length : (+end || 0); + if (end < 0) { + end += length; + } + length = start > end ? 0 : ((end - start) >>> 0); + start >>>= 0; + + var result = Array(length); + while (++index < length) { + result[index] = array[index + start]; + } + return result; + } + + /** + * The base implementation of `_.some` without support for callback shorthands + * or `this` binding. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ + function baseSome(collection, predicate) { + var result; + + baseEach(collection, function(value, index, collection) { + result = predicate(value, index, collection); + return !result; + }); + return !!result; + } + + /** + * The base implementation of `_.sortBy` which uses `comparer` to define + * the sort order of `array` and replaces criteria objects with their + * corresponding values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ + function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; + } + + /** + * The base implementation of `_.sortByOrder` without param guards. + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {string[]} props The property names to sort by. + * @param {boolean[]} orders The sort orders of `props`. + * @returns {Array} Returns the new sorted array. + */ + function baseSortByOrder(collection, props, orders) { + var index = -1, + length = collection.length, + result = isLength(length) ? Array(length) : []; + + baseEach(collection, function(value) { + var length = props.length, + criteria = Array(length); + + while (length--) { + criteria[length] = value == null ? undefined : value[props[length]]; + } + result[++index] = { 'criteria': criteria, 'index': index, 'value': value }; + }); + + return baseSortBy(result, function(object, other) { + return compareMultiple(object, other, orders); + }); + } + + /** + * The base implementation of `_.uniq` without support for callback shorthands + * and `this` binding. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The function invoked per iteration. + * @returns {Array} Returns the new duplicate-value-free array. + */ + function baseUniq(array, iteratee) { + var index = -1, + indexOf = getIndexOf(), + length = array.length, + isCommon = indexOf == baseIndexOf, + isLarge = isCommon && length >= 200, + seen = isLarge ? createCache() : null, + result = []; + + if (seen) { + indexOf = cacheIndexOf; + isCommon = false; + } else { + isLarge = false; + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value, index, array) : value; + + if (isCommon && value === value) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (indexOf(seen, computed, 0) < 0) { + if (iteratee || isLarge) { + seen.push(computed); + } + result.push(value); + } + } + return result; + } + + /** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * returned by `keysFunc`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ + function baseValues(object, props) { + var index = -1, + length = props.length, + result = Array(length); + + while (++index < length) { + result[index] = object[props[index]]; + } + return result; + } + + /** + * The base implementation of `wrapperValue` which returns the result of + * performing a sequence of actions on the unwrapped `value`, where each + * successive action is supplied the return value of the previous. + * + * @private + * @param {*} value The unwrapped value. + * @param {Array} actions Actions to peform to resolve the unwrapped value. + * @returns {*} Returns the resolved unwrapped value. + */ + function baseWrapperValue(value, actions) { + var result = value; + if (result instanceof LazyWrapper) { + result = result.value(); + } + var index = -1, + length = actions.length; + + while (++index < length) { + var args = [result], + action = actions[index]; + + push.apply(args, action.args); + result = action.func.apply(action.thisArg, args); + } + return result; + } + + /** + * Performs a binary search of `array` to determine the index at which `value` + * should be inserted into `array` in order to maintain its sort order. + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {boolean} [retHighest] Specify returning the highest, instead + * of the lowest, index at which a value should be inserted into `array`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function binaryIndex(array, value, retHighest) { + var low = 0, + high = array ? array.length : low; + + if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { + while (low < high) { + var mid = (low + high) >>> 1, + computed = array[mid]; + + if (retHighest ? (computed <= value) : (computed < value)) { + low = mid + 1; + } else { + high = mid; + } + } + return high; + } + return binaryIndexBy(array, value, identity, retHighest); + } + + /** + * This function is like `binaryIndex` except that it invokes `iteratee` for + * `value` and each element of `array` to compute their sort ranking. The + * iteratee is invoked with one argument; (value). + * + * @private + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function} iteratee The function invoked per iteration. + * @param {boolean} [retHighest] Specify returning the highest, instead + * of the lowest, index at which a value should be inserted into `array`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + */ + function binaryIndexBy(array, value, iteratee, retHighest) { + value = iteratee(value); + + var low = 0, + high = array ? array.length : 0, + valIsNaN = value !== value, + valIsUndef = typeof value == 'undefined'; + + while (low < high) { + var mid = floor((low + high) / 2), + computed = iteratee(array[mid]), + isReflexive = computed === computed; + + if (valIsNaN) { + var setLow = isReflexive || retHighest; + } else if (valIsUndef) { + setLow = isReflexive && (retHighest || typeof computed != 'undefined'); + } else { + setLow = retHighest ? (computed <= value) : (computed < value); + } + if (setLow) { + low = mid + 1; + } else { + high = mid; + } + } + return nativeMin(high, MAX_ARRAY_INDEX); + } + + /** + * A specialized version of `baseCallback` which only supports `this` binding + * and specifying the number of arguments to provide to `func`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {number} [argCount] The number of arguments to provide to `func`. + * @returns {Function} Returns the callback. + */ + function bindCallback(func, thisArg, argCount) { + if (typeof func != 'function') { + return identity; + } + if (typeof thisArg == 'undefined') { + return func; + } + switch (argCount) { + case 1: return function(value) { + return func.call(thisArg, value); + }; + case 3: return function(value, index, collection) { + return func.call(thisArg, value, index, collection); + }; + case 4: return function(accumulator, value, index, collection) { + return func.call(thisArg, accumulator, value, index, collection); + }; + case 5: return function(value, other, key, object, source) { + return func.call(thisArg, value, other, key, object, source); + }; + } + return function() { + return func.apply(thisArg, arguments); + }; + } + + /** + * Creates a clone of the given array buffer. + * + * @private + * @param {ArrayBuffer} buffer The array buffer to clone. + * @returns {ArrayBuffer} Returns the cloned array buffer. + */ + function bufferClone(buffer) { + return bufferSlice.call(buffer, 0); + } + if (!bufferSlice) { + // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`. + bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) { + var byteLength = buffer.byteLength, + floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0, + offset = floatLength * FLOAT64_BYTES_PER_ELEMENT, + result = new ArrayBuffer(byteLength); + + if (floatLength) { + var view = new Float64Array(result, 0, floatLength); + view.set(new Float64Array(buffer, 0, floatLength)); + } + if (byteLength != offset) { + view = new Uint8Array(result, offset); + view.set(new Uint8Array(buffer, offset)); + } + return result; + }; + } + + /** + * Creates an array that is the composition of partially applied arguments, + * placeholders, and provided arguments into a single array of arguments. + * + * @private + * @param {Array|Object} args The provided arguments. + * @param {Array} partials The arguments to prepend to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgs(args, partials, holders) { + var holdersLength = holders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - holdersLength, 0), + leftIndex = -1, + leftLength = partials.length, + result = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + result[leftIndex] = partials[leftIndex]; + } + while (++argsIndex < holdersLength) { + result[holders[argsIndex]] = args[argsIndex]; + } + while (argsLength--) { + result[leftIndex++] = args[argsIndex++]; + } + return result; + } + + /** + * This function is like `composeArgs` except that the arguments composition + * is tailored for `_.partialRight`. + * + * @private + * @param {Array|Object} args The provided arguments. + * @param {Array} partials The arguments to append to those provided. + * @param {Array} holders The `partials` placeholder indexes. + * @returns {Array} Returns the new array of composed arguments. + */ + function composeArgsRight(args, partials, holders) { + var holdersIndex = -1, + holdersLength = holders.length, + argsIndex = -1, + argsLength = nativeMax(args.length - holdersLength, 0), + rightIndex = -1, + rightLength = partials.length, + result = Array(argsLength + rightLength); + + while (++argsIndex < argsLength) { + result[argsIndex] = args[argsIndex]; + } + var pad = argsIndex; + while (++rightIndex < rightLength) { + result[pad + rightIndex] = partials[rightIndex]; + } + while (++holdersIndex < holdersLength) { + result[pad + holders[holdersIndex]] = args[argsIndex++]; + } + return result; + } + + /** + * Creates a function that aggregates a collection, creating an accumulator + * object composed from the results of running each element in the collection + * through an iteratee. + * + * @private + * @param {Function} setter The function to set keys and values of the accumulator object. + * @param {Function} [initializer] The function to initialize the accumulator object. + * @returns {Function} Returns the new aggregator function. + */ + function createAggregator(setter, initializer) { + return function(collection, iteratee, thisArg) { + var result = initializer ? initializer() : {}; + iteratee = getCallback(iteratee, thisArg, 3); + + if (isArray(collection)) { + var index = -1, + length = collection.length; + + while (++index < length) { + var value = collection[index]; + setter(result, value, iteratee(value, index, collection), collection); + } + } else { + baseEach(collection, function(value, key, collection) { + setter(result, value, iteratee(value, key, collection), collection); + }); + } + return result; + }; + } + + /** + * Creates a function that assigns properties of source object(s) to a given + * destination object. + * + * @private + * @param {Function} assigner The function to assign values. + * @returns {Function} Returns the new assigner function. + */ + function createAssigner(assigner) { + return function() { + var args = arguments, + length = args.length, + object = args[0]; + + if (length < 2 || object == null) { + return object; + } + var customizer = args[length - 2], + thisArg = args[length - 1], + guard = args[3]; + + if (length > 3 && typeof customizer == 'function') { + customizer = bindCallback(customizer, thisArg, 5); + length -= 2; + } else { + customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null; + length -= (customizer ? 1 : 0); + } + if (guard && isIterateeCall(args[1], args[2], guard)) { + customizer = length == 3 ? null : customizer; + length = 2; + } + var index = 0; + while (++index < length) { + var source = args[index]; + if (source) { + assigner(object, source, customizer); + } + } + return object; + }; + } + + /** + * Creates a function that wraps `func` and invokes it with the `this` + * binding of `thisArg`. + * + * @private + * @param {Function} func The function to bind. + * @param {*} [thisArg] The `this` binding of `func`. + * @returns {Function} Returns the new bound function. + */ + function createBindWrapper(func, thisArg) { + var Ctor = createCtorWrapper(func); + + function wrapper() { + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(thisArg, arguments); + } + return wrapper; + } + + /** + * Creates a `Set` cache object to optimize linear searches of large arrays. + * + * @private + * @param {Array} [values] The values to cache. + * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. + */ + var createCache = !(nativeCreate && Set) ? constant(null) : function(values) { + return new SetCache(values); + }; + + /** + * Creates a function to compose other functions into a single function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new composer function. + */ + function createComposer(fromRight) { + return function() { + var length = arguments.length, + index = length, + fromIndex = fromRight ? (length - 1) : 0; + + if (!length) { + return function() { return arguments[0]; }; + } + var funcs = Array(length); + while (index--) { + funcs[index] = arguments[index]; + if (typeof funcs[index] != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + return function() { + var index = fromIndex, + result = funcs[index].apply(this, arguments); + + while ((fromRight ? index-- : ++index < length)) { + result = funcs[index].call(this, result); + } + return result; + }; + }; + } + + /** + * Creates a function that produces compound words out of the words in a + * given string. + * + * @private + * @param {Function} callback The function to combine each word. + * @returns {Function} Returns the new compounder function. + */ + function createCompounder(callback) { + return function(string) { + var index = -1, + array = words(deburr(string)), + length = array.length, + result = ''; + + while (++index < length) { + result = callback(result, array[index], index); + } + return result; + }; + } + + /** + * Creates a function that produces an instance of `Ctor` regardless of + * whether it was invoked as part of a `new` expression or by `call` or `apply`. + * + * @private + * @param {Function} Ctor The constructor to wrap. + * @returns {Function} Returns the new wrapped function. + */ + function createCtorWrapper(Ctor) { + return function() { + var thisBinding = baseCreate(Ctor.prototype), + result = Ctor.apply(thisBinding, arguments); + + // Mimic the constructor's `return` behavior. + // See https://es5.github.io/#x13.2.2 for more details. + return isObject(result) ? result : thisBinding; + }; + } + + /** + * Creates a function that gets the extremum value of a collection. + * + * @private + * @param {Function} arrayFunc The function to get the extremum value from an array. + * @param {boolean} [isMin] Specify returning the minimum, instead of the maximum, + * extremum value. + * @returns {Function} Returns the new extremum function. + */ + function createExtremum(arrayFunc, isMin) { + return function(collection, iteratee, thisArg) { + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = null; + } + var func = getCallback(), + noIteratee = iteratee == null; + + if (!(func === baseCallback && noIteratee)) { + noIteratee = false; + iteratee = func(iteratee, thisArg, 3); + } + if (noIteratee) { + var isArr = isArray(collection); + if (!isArr && isString(collection)) { + iteratee = charAtCallback; + } else { + return arrayFunc(isArr ? collection : toIterable(collection)); + } + } + return extremumBy(collection, iteratee, isMin); + }; + } + + /** + * Creates a function that wraps `func` and invokes it with optional `this` + * binding of, partial application, and currying. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to prepend to those provided to the new function. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [partialsRight] The arguments to append to those provided to the new function. + * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { + var isAry = bitmask & ARY_FLAG, + isBind = bitmask & BIND_FLAG, + isBindKey = bitmask & BIND_KEY_FLAG, + isCurry = bitmask & CURRY_FLAG, + isCurryBound = bitmask & CURRY_BOUND_FLAG, + isCurryRight = bitmask & CURRY_RIGHT_FLAG; + + var Ctor = !isBindKey && createCtorWrapper(func), + key = func; + + function wrapper() { + // Avoid `arguments` object use disqualifying optimizations by + // converting it to an array before providing it to other functions. + var length = arguments.length, + index = length, + args = Array(length); + + while (index--) { + args[index] = arguments[index]; + } + if (partials) { + args = composeArgs(args, partials, holders); + } + if (partialsRight) { + args = composeArgsRight(args, partialsRight, holdersRight); + } + if (isCurry || isCurryRight) { + var placeholder = wrapper.placeholder, + argsHolders = replaceHolders(args, placeholder); + + length -= argsHolders.length; + if (length < arity) { + var newArgPos = argPos ? arrayCopy(argPos) : null, + newArity = nativeMax(arity - length, 0), + newsHolders = isCurry ? argsHolders : null, + newHoldersRight = isCurry ? null : argsHolders, + newPartials = isCurry ? args : null, + newPartialsRight = isCurry ? null : args; + + bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); + bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); + + if (!isCurryBound) { + bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); + } + var result = createHybridWrapper(func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity); + result.placeholder = placeholder; + return result; + } + } + var thisBinding = isBind ? thisArg : this; + if (isBindKey) { + func = thisBinding[key]; + } + if (argPos) { + args = reorder(args, argPos); + } + if (isAry && ary < args.length) { + args.length = ary; + } + var fn = (this && this !== root && this instanceof wrapper) ? (Ctor || createCtorWrapper(func)) : func; + return fn.apply(thisBinding, args); + } + return wrapper; + } + + /** + * Creates the pad required for `string` based on the given padding length. + * The `chars` string may be truncated if the number of padding characters + * exceeds the padding length. + * + * @private + * @param {string} string The string to create padding for. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the pad for `string`. + */ + function createPad(string, length, chars) { + var strLength = string.length; + length = +length; + + if (strLength >= length || !nativeIsFinite(length)) { + return ''; + } + var padLength = length - strLength; + chars = chars == null ? ' ' : (chars + ''); + return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength); + } + + /** + * Creates a function that wraps `func` and invokes it with the optional `this` + * binding of `thisArg` and the `partials` prepended to those provided to + * the wrapper. + * + * @private + * @param {Function} func The function to partially apply arguments to. + * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. + * @param {*} thisArg The `this` binding of `func`. + * @param {Array} partials The arguments to prepend to those provided to the new function. + * @returns {Function} Returns the new bound function. + */ + function createPartialWrapper(func, bitmask, thisArg, partials) { + var isBind = bitmask & BIND_FLAG, + Ctor = createCtorWrapper(func); + + function wrapper() { + // Avoid `arguments` object use disqualifying optimizations by + // converting it to an array before providing it `func`. + var argsIndex = -1, + argsLength = arguments.length, + leftIndex = -1, + leftLength = partials.length, + args = Array(argsLength + leftLength); + + while (++leftIndex < leftLength) { + args[leftIndex] = partials[leftIndex]; + } + while (argsLength--) { + args[leftIndex++] = arguments[++argsIndex]; + } + var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; + return fn.apply(isBind ? thisArg : this, args); + } + return wrapper; + } + + /** + * Creates a function that either curries or invokes `func` with optional + * `this` binding and partially applied arguments. + * + * @private + * @param {Function|string} func The function or method name to reference. + * @param {number} bitmask The bitmask of flags. + * The bitmask may be composed of the following flags: + * 1 - `_.bind` + * 2 - `_.bindKey` + * 4 - `_.curry` or `_.curryRight` of a bound function + * 8 - `_.curry` + * 16 - `_.curryRight` + * 32 - `_.partial` + * 64 - `_.partialRight` + * 128 - `_.rearg` + * 256 - `_.ary` + * @param {*} [thisArg] The `this` binding of `func`. + * @param {Array} [partials] The arguments to be partially applied. + * @param {Array} [holders] The `partials` placeholder indexes. + * @param {Array} [argPos] The argument positions of the new function. + * @param {number} [ary] The arity cap of `func`. + * @param {number} [arity] The arity of `func`. + * @returns {Function} Returns the new wrapped function. + */ + function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { + var isBindKey = bitmask & BIND_KEY_FLAG; + if (!isBindKey && typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + var length = partials ? partials.length : 0; + if (!length) { + bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); + partials = holders = null; + } + length -= (holders ? holders.length : 0); + if (bitmask & PARTIAL_RIGHT_FLAG) { + var partialsRight = partials, + holdersRight = holders; + + partials = holders = null; + } + var data = !isBindKey && getData(func), + newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; + + if (data && data !== true) { + mergeData(newData, data); + bitmask = newData[1]; + arity = newData[9]; + } + newData[9] = arity == null + ? (isBindKey ? 0 : func.length) + : (nativeMax(arity - length, 0) || 0); + + if (bitmask == BIND_FLAG) { + var result = createBindWrapper(newData[0], newData[2]); + } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { + result = createPartialWrapper.apply(undefined, newData); + } else { + result = createHybridWrapper.apply(undefined, newData); + } + var setter = data ? baseSetData : setData; + return setter(result, newData); + } + + /** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing arrays. + * @param {boolean} [isWhere] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ + function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) { + var index = -1, + arrLength = array.length, + othLength = other.length, + result = true; + + if (arrLength != othLength && !(isWhere && othLength > arrLength)) { + return false; + } + // Deep compare the contents, ignoring non-numeric properties. + while (result && ++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + result = undefined; + if (customizer) { + result = isWhere + ? customizer(othValue, arrValue, index) + : customizer(arrValue, othValue, index); + } + if (typeof result == 'undefined') { + // Recursively compare arrays (susceptible to call stack limits). + if (isWhere) { + var othIndex = othLength; + while (othIndex--) { + othValue = other[othIndex]; + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); + if (result) { + break; + } + } + } else { + result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); + } + } + } + return !!result; + } + + /** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} value The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalByTag(object, other, tag) { + switch (tag) { + case boolTag: + case dateTag: + // Coerce dates and booleans to numbers, dates to milliseconds and booleans + // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. + return +object == +other; + + case errorTag: + return object.name == other.name && object.message == other.message; + + case numberTag: + // Treat `NaN` vs. `NaN` as equal. + return (object != +object) + ? other != +other + // But, treat `-0` vs. `+0` as not equal. + : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings primitives and string + // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. + return object == (other + ''); + } + return false; + } + + /** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Function} [customizer] The function to customize comparing values. + * @param {boolean} [isWhere] Specify performing partial comparisons. + * @param {Array} [stackA] Tracks traversed `value` objects. + * @param {Array} [stackB] Tracks traversed `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ + function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) { + var objProps = keys(object), + objLength = objProps.length, + othProps = keys(other), + othLength = othProps.length; + + if (objLength != othLength && !isWhere) { + return false; + } + var hasCtor, + index = -1; + + while (++index < objLength) { + var key = objProps[index], + result = hasOwnProperty.call(other, key); + + if (result) { + var objValue = object[key], + othValue = other[key]; + + result = undefined; + if (customizer) { + result = isWhere + ? customizer(othValue, objValue, key) + : customizer(objValue, othValue, key); + } + if (typeof result == 'undefined') { + // Recursively compare objects (susceptible to call stack limits). + result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB); + } + } + if (!result) { + return false; + } + hasCtor || (hasCtor = key == 'constructor'); + } + if (!hasCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + return false; + } + } + return true; + } + + /** + * Gets the extremum value of `collection` invoking `iteratee` for each value + * in `collection` to generate the criterion by which the value is ranked. + * The `iteratee` is invoked with three arguments; (value, index, collection). + * + * @private + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {boolean} [isMin] Specify returning the minimum, instead of the + * maximum, extremum value. + * @returns {*} Returns the extremum value. + */ + function extremumBy(collection, iteratee, isMin) { + var exValue = isMin ? POSITIVE_INFINITY : NEGATIVE_INFINITY, + computed = exValue, + result = computed; + + baseEach(collection, function(value, index, collection) { + var current = iteratee(value, index, collection); + if ((isMin ? (current < computed) : (current > computed)) || + (current === exValue && current === result)) { + computed = current; + result = value; + } + }); + return result; + } + + /** + * Gets the appropriate "callback" function. If the `_.callback` method is + * customized this function returns the custom method, otherwise it returns + * the `baseCallback` function. If arguments are provided the chosen function + * is invoked with them and its result is returned. + * + * @private + * @returns {Function} Returns the chosen function or its result. + */ + function getCallback(func, thisArg, argCount) { + var result = lodash.callback || callback; + result = result === callback ? baseCallback : result; + return argCount ? result(func, thisArg, argCount) : result; + } + + /** + * Gets metadata for `func`. + * + * @private + * @param {Function} func The function to query. + * @returns {*} Returns the metadata for `func`. + */ + var getData = !metaMap ? noop : function(func) { + return metaMap.get(func); + }; + + /** + * Gets the appropriate "indexOf" function. If the `_.indexOf` method is + * customized this function returns the custom method, otherwise it returns + * the `baseIndexOf` function. If arguments are provided the chosen function + * is invoked with them and its result is returned. + * + * @private + * @returns {Function|number} Returns the chosen function or its result. + */ + function getIndexOf(collection, target, fromIndex) { + var result = lodash.indexOf || indexOf; + result = result === indexOf ? baseIndexOf : result; + return collection ? result(collection, target, fromIndex) : result; + } + + /** + * Gets the view, applying any `transforms` to the `start` and `end` positions. + * + * @private + * @param {number} start The start of the view. + * @param {number} end The end of the view. + * @param {Array} [transforms] The transformations to apply to the view. + * @returns {Object} Returns an object containing the `start` and `end` + * positions of the view. + */ + function getView(start, end, transforms) { + var index = -1, + length = transforms ? transforms.length : 0; + + while (++index < length) { + var data = transforms[index], + size = data.size; + + switch (data.type) { + case 'drop': start += size; break; + case 'dropRight': end -= size; break; + case 'take': end = nativeMin(end, start + size); break; + case 'takeRight': start = nativeMax(start, end - size); break; + } + } + return { 'start': start, 'end': end }; + } + + /** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ + function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add array properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; + } + + /** + * Initializes an object clone. + * + * @private + * @param {Object} object The object to clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneObject(object) { + var Ctor = object.constructor; + if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { + Ctor = Object; + } + return new Ctor; + } + + /** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ + function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return bufferClone(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + var buffer = object.buffer; + return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + var result = new Ctor(object.source, reFlags.exec(object)); + result.lastIndex = object.lastIndex; + } + return result; + } + + /** + * Checks if `func` is eligible for `this` binding. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is eligible, else `false`. + */ + function isBindable(func) { + var support = lodash.support, + result = !(support.funcNames ? func.name : support.funcDecomp); + + if (!result) { + var source = fnToString.call(func); + if (!support.funcNames) { + result = !reFuncName.test(source); + } + if (!result) { + // Check if `func` references the `this` keyword and store the result. + result = reThis.test(source) || isNative(func); + baseSetData(func, result); + } + } + return result; + } + + /** + * Checks if `value` is a valid array-like index. + * + * @private + * @param {*} value The value to check. + * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. + * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. + */ + function isIndex(value, length) { + value = +value; + length = length == null ? MAX_SAFE_INTEGER : length; + return value > -1 && value % 1 == 0 && value < length; + } + + /** + * Checks if the provided arguments are from an iteratee call. + * + * @private + * @param {*} value The potential iteratee value argument. + * @param {*} index The potential iteratee index or key argument. + * @param {*} object The potential iteratee object argument. + * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. + */ + function isIterateeCall(value, index, object) { + if (!isObject(object)) { + return false; + } + var type = typeof index; + if (type == 'number') { + var length = object.length, + prereq = isLength(length) && isIndex(index, length); + } else { + prereq = type == 'string' && index in object; + } + if (prereq) { + var other = object[index]; + return value === value ? (value === other) : (other !== other); + } + return false; + } + + /** + * Checks if `value` is a valid array-like length. + * + * **Note:** This function is based on ES `ToLength`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength) + * for more details. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. + */ + function isLength(value) { + return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; + } + + /** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ + function isStrictComparable(value) { + return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); + } + + /** + * Merges the function metadata of `source` into `data`. + * + * Merging metadata reduces the number of wrappers required to invoke a function. + * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` + * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` + * augment function arguments, making the order in which they are executed important, + * preventing the merging of metadata. However, we make an exception for a safe + * common case where curried functions have `_.ary` and or `_.rearg` applied. + * + * @private + * @param {Array} data The destination metadata. + * @param {Array} source The source metadata. + * @returns {Array} Returns `data`. + */ + function mergeData(data, source) { + var bitmask = data[1], + srcBitmask = source[1], + newBitmask = bitmask | srcBitmask; + + var arityFlags = ARY_FLAG | REARG_FLAG, + bindFlags = BIND_FLAG | BIND_KEY_FLAG, + comboFlags = arityFlags | bindFlags | CURRY_BOUND_FLAG | CURRY_RIGHT_FLAG; + + var isAry = bitmask & ARY_FLAG && !(srcBitmask & ARY_FLAG), + isRearg = bitmask & REARG_FLAG && !(srcBitmask & REARG_FLAG), + argPos = (isRearg ? data : source)[7], + ary = (isAry ? data : source)[8]; + + var isCommon = !(bitmask >= REARG_FLAG && srcBitmask > bindFlags) && + !(bitmask > bindFlags && srcBitmask >= REARG_FLAG); + + var isCombo = (newBitmask >= arityFlags && newBitmask <= comboFlags) && + (bitmask < REARG_FLAG || ((isRearg || isAry) && argPos.length <= ary)); + + // Exit early if metadata can't be merged. + if (!(isCommon || isCombo)) { + return data; + } + // Use source `thisArg` if available. + if (srcBitmask & BIND_FLAG) { + data[2] = source[2]; + // Set when currying a bound function. + newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; + } + // Compose partial arguments. + var value = source[3]; + if (value) { + var partials = data[3]; + data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); + data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); + } + // Compose partial right arguments. + value = source[5]; + if (value) { + partials = data[5]; + data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); + data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); + } + // Use source `argPos` if available. + value = source[7]; + if (value) { + data[7] = arrayCopy(value); + } + // Use source `ary` if it's smaller. + if (srcBitmask & ARY_FLAG) { + data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); + } + // Use source `arity` if one is not provided. + if (data[9] == null) { + data[9] = source[9]; + } + // Use source `func` and merge bitmasks. + data[0] = source[0]; + data[1] = newBitmask; + + return data; + } + + /** + * A specialized version of `_.pick` that picks `object` properties specified + * by the `props` array. + * + * @private + * @param {Object} object The source object. + * @param {string[]} props The property names to pick. + * @returns {Object} Returns the new object. + */ + function pickByArray(object, props) { + object = toObject(object); + + var index = -1, + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index]; + if (key in object) { + result[key] = object[key]; + } + } + return result; + } + + /** + * A specialized version of `_.pick` that picks `object` properties `predicate` + * returns truthy for. + * + * @private + * @param {Object} object The source object. + * @param {Function} predicate The function invoked per iteration. + * @returns {Object} Returns the new object. + */ + function pickByCallback(object, predicate) { + var result = {}; + baseForIn(object, function(value, key, object) { + if (predicate(value, key, object)) { + result[key] = value; + } + }); + return result; + } + + /** + * Reorder `array` according to the specified indexes where the element at + * the first index is assigned as the first element, the element at + * the second index is assigned as the second element, and so on. + * + * @private + * @param {Array} array The array to reorder. + * @param {Array} indexes The arranged array indexes. + * @returns {Array} Returns `array`. + */ + function reorder(array, indexes) { + var arrLength = array.length, + length = nativeMin(indexes.length, arrLength), + oldArray = arrayCopy(array); + + while (length--) { + var index = indexes[length]; + array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; + } + return array; + } + + /** + * Sets metadata for `func`. + * + * **Note:** If this function becomes hot, i.e. is invoked a lot in a short + * period of time, it will trip its breaker and transition to an identity function + * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) + * for more details. + * + * @private + * @param {Function} func The function to associate metadata with. + * @param {*} data The metadata. + * @returns {Function} Returns `func`. + */ + var setData = (function() { + var count = 0, + lastCalled = 0; + + return function(key, value) { + var stamp = now(), + remaining = HOT_SPAN - (stamp - lastCalled); + + lastCalled = stamp; + if (remaining > 0) { + if (++count >= HOT_COUNT) { + return key; + } + } else { + count = 0; + } + return baseSetData(key, value); + }; + }()); + + /** + * A fallback implementation of `_.isPlainObject` which checks if `value` + * is an object created by the `Object` constructor or has a `[[Prototype]]` + * of `null`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + */ + function shimIsPlainObject(value) { + var Ctor, + support = lodash.support; + + // Exit early for non `Object` objects. + if (!(isObjectLike(value) && objToString.call(value) == objectTag) || + (!hasOwnProperty.call(value, 'constructor') && + (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { + return false; + } + // IE < 9 iterates inherited properties before own properties. If the first + // iterated property is an object's own property then there are no inherited + // enumerable properties. + var result; + // In most environments an object's own properties are iterated before + // its inherited properties. If the last iterated property is an object's + // own property then there are no inherited enumerable properties. + baseForIn(value, function(subValue, key) { + result = key; + }); + return typeof result == 'undefined' || hasOwnProperty.call(value, result); + } + + /** + * A fallback implementation of `Object.keys` which creates an array of the + * own enumerable property names of `object`. + * + * @private + * @param {Object} object The object to inspect. + * @returns {Array} Returns the array of property names. + */ + function shimKeys(object) { + var props = keysIn(object), + propsLength = props.length, + length = propsLength && object.length, + support = lodash.support; + + var allowIndexes = length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))); + + var index = -1, + result = []; + + while (++index < propsLength) { + var key = props[index]; + if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { + result.push(key); + } + } + return result; + } + + /** + * Converts `value` to an array-like object if it is not one. + * + * @private + * @param {*} value The value to process. + * @returns {Array|Object} Returns the array-like object. + */ + function toIterable(value) { + if (value == null) { + return []; + } + if (!isLength(value.length)) { + return values(value); + } + return isObject(value) ? value : Object(value); + } + + /** + * Converts `value` to an object if it is not one. + * + * @private + * @param {*} value The value to process. + * @returns {Object} Returns the object. + */ + function toObject(value) { + return isObject(value) ? value : Object(value); + } + + /** + * Creates a clone of `wrapper`. + * + * @private + * @param {Object} wrapper The wrapper to clone. + * @returns {Object} Returns the cloned wrapper. + */ + function wrapperClone(wrapper) { + return wrapper instanceof LazyWrapper + ? wrapper.clone() + : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements split into groups the length of `size`. + * If `collection` can't be split evenly, the final chunk will be the remaining + * elements. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to process. + * @param {number} [size=1] The length of each chunk. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new array containing chunks. + * @example + * + * _.chunk(['a', 'b', 'c', 'd'], 2); + * // => [['a', 'b'], ['c', 'd']] + * + * _.chunk(['a', 'b', 'c', 'd'], 3); + * // => [['a', 'b', 'c'], ['d']] + */ + function chunk(array, size, guard) { + if (guard ? isIterateeCall(array, size, guard) : size == null) { + size = 1; + } else { + size = nativeMax(+size || 1, 1); + } + var index = 0, + length = array ? array.length : 0, + resIndex = -1, + result = Array(ceil(length / size)); + + while (index < length) { + result[++resIndex] = baseSlice(array, index, (index += size)); + } + return result; + } + + /** + * Creates an array with all falsey values removed. The values `false`, `null`, + * `0`, `""`, `undefined`, and `NaN` are falsey. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to compact. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.compact([0, 1, false, 2, '', 3]); + * // => [1, 2, 3] + */ + function compact(array) { + var index = -1, + length = array ? array.length : 0, + resIndex = -1, + result = []; + + while (++index < length) { + var value = array[index]; + if (value) { + result[++resIndex] = value; + } + } + return result; + } + + /** + * Creates an array excluding all values of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to inspect. + * @param {...Array} [values] The arrays of values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.difference([1, 2, 3], [4, 2]); + * // => [1, 3] + */ + function difference() { + var args = arguments, + index = -1, + length = args.length; + + while (++index < length) { + var value = args[index]; + if (isArray(value) || isArguments(value)) { + break; + } + } + return baseDifference(value, baseFlatten(args, false, true, ++index)); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.drop([1, 2, 3]); + * // => [2, 3] + * + * _.drop([1, 2, 3], 2); + * // => [3] + * + * _.drop([1, 2, 3], 5); + * // => [] + * + * _.drop([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function drop(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements dropped from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to drop. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRight([1, 2, 3]); + * // => [1, 2] + * + * _.dropRight([1, 2, 3], 2); + * // => [1] + * + * _.dropRight([1, 2, 3], 5); + * // => [] + * + * _.dropRight([1, 2, 3], 0); + * // => [1, 2, 3] + */ + function dropRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` excluding elements dropped from the end. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that match the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [1] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); + * // => ['barney'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropRightWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function dropRightWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + predicate = getCallback(predicate, thisArg, 3); + while (length-- && predicate(array[length], length, array)) {} + return baseSlice(array, 0, length + 1); + } + + /** + * Creates a slice of `array` excluding elements dropped from the beginning. + * Elements are dropped until `predicate` returns falsey. The predicate is + * bound to `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.dropWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [3] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.dropWhile(users, 'active', false), 'user'); + * // => ['pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.dropWhile(users, 'active'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function dropWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + var index = -1; + predicate = getCallback(predicate, thisArg, 3); + while (++index < length && predicate(array[index], index, array)) {} + return baseSlice(array, index); + } + + /** + * Fills elements of `array` with `value` from `start` up to, but not + * including, `end`. + * + * **Note:** This method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to fill. + * @param {*} value The value to fill `array` with. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns `array`. + */ + function fill(array, value, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { + start = 0; + end = length; + } + return baseFill(array, value, start, end); + } + + /** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for, instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(chr) { + * return chr.user == 'barney'; + * }); + * // => 0 + * + * // using the `_.matches` callback shorthand + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // using the `_.matchesProperty` callback shorthand + * _.findIndex(users, 'active', false); + * // => 0 + * + * // using the `_.property` callback shorthand + * _.findIndex(users, 'active'); + * // => 2 + */ + function findIndex(array, predicate, thisArg) { + var index = -1, + length = array ? array.length : 0; + + predicate = getCallback(predicate, thisArg, 3); + while (++index < length) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; + } + + /** + * This method is like `_.findIndex` except that it iterates over elements + * of `collection` from right to left. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * _.findLastIndex(users, function(chr) { + * return chr.user == 'pebbles'; + * }); + * // => 2 + * + * // using the `_.matches` callback shorthand + * _.findLastIndex(users, { 'user': 'barney', 'active': true }); + * // => 0 + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastIndex(users, 'active', false); + * // => 2 + * + * // using the `_.property` callback shorthand + * _.findLastIndex(users, 'active'); + * // => 0 + */ + function findLastIndex(array, predicate, thisArg) { + var length = array ? array.length : 0; + predicate = getCallback(predicate, thisArg, 3); + while (length--) { + if (predicate(array[length], length, array)) { + return length; + } + } + return -1; + } + + /** + * Gets the first element of `array`. + * + * @static + * @memberOf _ + * @alias head + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the first element of `array`. + * @example + * + * _.first([1, 2, 3]); + * // => 1 + * + * _.first([]); + * // => undefined + */ + function first(array) { + return array ? array[0] : undefined; + } + + /** + * Flattens a nested array. If `isDeep` is `true` the array is recursively + * flattened, otherwise it is only flattened a single level. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to flatten. + * @param {boolean} [isDeep] Specify a deep flatten. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, 3, [4]]]); + * // => [1, 2, 3, [4]]; + * + * // using `isDeep` + * _.flatten([1, [2, 3, [4]]], true); + * // => [1, 2, 3, 4]; + */ + function flatten(array, isDeep, guard) { + var length = array ? array.length : 0; + if (guard && isIterateeCall(array, isDeep, guard)) { + isDeep = false; + } + return length ? baseFlatten(array, isDeep, false, 0) : []; + } + + /** + * Recursively flattens a nested array. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to recursively flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flattenDeep([1, [2, 3, [4]]]); + * // => [1, 2, 3, 4]; + */ + function flattenDeep(array) { + var length = array ? array.length : 0; + return length ? baseFlatten(array, true, false, 0) : []; + } + + /** + * Gets the index at which the first occurrence of `value` is found in `array` + * using `SameValueZero` for equality comparisons. If `fromIndex` is negative, + * it is used as the offset from the end of `array`. If `array` is sorted + * providing `true` for `fromIndex` performs a faster binary search. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=0] The index to search from or `true` + * to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.indexOf([1, 2, 1, 2], 2); + * // => 1 + * + * // using `fromIndex` + * _.indexOf([1, 2, 1, 2], 2, 2); + * // => 3 + * + * // performing a binary search + * _.indexOf([1, 1, 2, 2], 2, true); + * // => 2 + */ + function indexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; + } else if (fromIndex) { + var index = binaryIndex(array, value), + other = array[index]; + + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + return baseIndexOf(array, value, fromIndex || 0); + } + + /** + * Gets all but the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.initial([1, 2, 3]); + * // => [1, 2] + */ + function initial(array) { + return dropRight(array, 1); + } + + /** + * Creates an array of unique values in all provided arrays using `SameValueZero` + * for equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of shared values. + * @example + * _.intersection([1, 2], [4, 2], [2, 1]); + * // => [2] + */ + function intersection() { + var args = [], + argsIndex = -1, + argsLength = arguments.length, + caches = [], + indexOf = getIndexOf(), + isCommon = indexOf == baseIndexOf; + + while (++argsIndex < argsLength) { + var value = arguments[argsIndex]; + if (isArray(value) || isArguments(value)) { + args.push(value); + caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null); + } + } + argsLength = args.length; + var array = args[0], + index = -1, + length = array ? array.length : 0, + result = [], + seen = caches[0]; + + outer: + while (++index < length) { + value = array[index]; + if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { + argsIndex = argsLength; + while (--argsIndex) { + var cache = caches[argsIndex]; + if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) { + continue outer; + } + } + if (seen) { + seen.push(value); + } + result.push(value); + } + } + return result; + } + + /** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ + function last(array) { + var length = array ? array.length : 0; + return length ? array[length - 1] : undefined; + } + + /** + * This method is like `_.indexOf` except that it iterates over elements of + * `array` from right to left. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to search. + * @param {*} value The value to search for. + * @param {boolean|number} [fromIndex=array.length-1] The index to search from + * or `true` to perform a binary search on a sorted array. + * @returns {number} Returns the index of the matched value, else `-1`. + * @example + * + * _.lastIndexOf([1, 2, 1, 2], 2); + * // => 3 + * + * // using `fromIndex` + * _.lastIndexOf([1, 2, 1, 2], 2, 2); + * // => 1 + * + * // performing a binary search + * _.lastIndexOf([1, 1, 2, 2], 2, true); + * // => 3 + */ + function lastIndexOf(array, value, fromIndex) { + var length = array ? array.length : 0; + if (!length) { + return -1; + } + var index = length; + if (typeof fromIndex == 'number') { + index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; + } else if (fromIndex) { + index = binaryIndex(array, value, true) - 1; + var other = array[index]; + if (value === value ? (value === other) : (other !== other)) { + return index; + } + return -1; + } + if (value !== value) { + return indexOfNaN(array, index, true); + } + while (index--) { + if (array[index] === value) { + return index; + } + } + return -1; + } + + /** + * Removes all provided values from `array` using `SameValueZero` for equality + * comparisons. + * + * **Notes:** + * - Unlike `_.without`, this method mutates `array`. + * - `SameValueZero` comparisons are like strict equality comparisons, e.g. `===`, + * except that `NaN` matches `NaN`. See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...*} [values] The values to remove. + * @returns {Array} Returns `array`. + * @example + * + * var array = [1, 2, 3, 1, 2, 3]; + * + * _.pull(array, 2, 3); + * console.log(array); + * // => [1, 1] + */ + function pull() { + var args = arguments, + array = args[0]; + + if (!(array && array.length)) { + return array; + } + var index = 0, + indexOf = getIndexOf(), + length = args.length; + + while (++index < length) { + var fromIndex = 0, + value = args[index]; + + while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { + splice.call(array, fromIndex, 1); + } + } + return array; + } + + /** + * Removes elements from `array` corresponding to the given indexes and returns + * an array of the removed elements. Indexes may be specified as an array of + * indexes or as individual arguments. + * + * **Note:** Unlike `_.at`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {...(number|number[])} [indexes] The indexes of elements to remove, + * specified as individual indexes or arrays of indexes. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [5, 10, 15, 20]; + * var evens = _.pullAt(array, 1, 3); + * + * console.log(array); + * // => [5, 15] + * + * console.log(evens); + * // => [10, 20] + */ + function pullAt(array) { + return basePullAt(array || [], baseFlatten(arguments, false, false, 1)); + } + + /** + * Removes all elements from `array` that `predicate` returns truthy for + * and returns an array of the removed elements. The predicate is bound to + * `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** Unlike `_.filter`, this method mutates `array`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to modify. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new array of removed elements. + * @example + * + * var array = [1, 2, 3, 4]; + * var evens = _.remove(array, function(n) { + * return n % 2 == 0; + * }); + * + * console.log(array); + * // => [1, 3] + * + * console.log(evens); + * // => [2, 4] + */ + function remove(array, predicate, thisArg) { + var index = -1, + length = array ? array.length : 0, + result = []; + + predicate = getCallback(predicate, thisArg, 3); + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result.push(value); + splice.call(array, index--, 1); + length--; + } + } + return result; + } + + /** + * Gets all but the first element of `array`. + * + * @static + * @memberOf _ + * @alias tail + * @category Array + * @param {Array} array The array to query. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.rest([1, 2, 3]); + * // => [2, 3] + */ + function rest(array) { + return drop(array, 1); + } + + /** + * Creates a slice of `array` from `start` up to, but not including, `end`. + * + * **Note:** This function is used instead of `Array#slice` to support node + * lists in IE < 9 and to ensure dense arrays are returned. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to slice. + * @param {number} [start=0] The start position. + * @param {number} [end=array.length] The end position. + * @returns {Array} Returns the slice of `array`. + */ + function slice(array, start, end) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { + start = 0; + end = length; + } + return baseSlice(array, start, end); + } + + /** + * Uses a binary search to determine the lowest index at which `value` should + * be inserted into `array` in order to maintain its sort order. If an iteratee + * function is provided it is invoked for `value` and each element of `array` + * to compute their sort ranking. The iteratee is bound to `thisArg` and + * invoked with one argument; (value). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedIndex([30, 50], 40); + * // => 1 + * + * _.sortedIndex([4, 4, 5, 5], 5); + * // => 2 + * + * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; + * + * // using an iteratee function + * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { + * return this.data[word]; + * }, dict); + * // => 1 + * + * // using the `_.property` callback shorthand + * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); + * // => 1 + */ + function sortedIndex(array, value, iteratee, thisArg) { + var func = getCallback(iteratee); + return (func === baseCallback && iteratee == null) + ? binaryIndex(array, value) + : binaryIndexBy(array, value, func(iteratee, thisArg, 1)); + } + + /** + * This method is like `_.sortedIndex` except that it returns the highest + * index at which `value` should be inserted into `array` in order to + * maintain its sort order. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The sorted array to inspect. + * @param {*} value The value to evaluate. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {number} Returns the index at which `value` should be inserted + * into `array`. + * @example + * + * _.sortedLastIndex([4, 4, 5, 5], 5); + * // => 4 + */ + function sortedLastIndex(array, value, iteratee, thisArg) { + var func = getCallback(iteratee); + return (func === baseCallback && iteratee == null) + ? binaryIndex(array, value, true) + : binaryIndexBy(array, value, func(iteratee, thisArg, 1), true); + } + + /** + * Creates a slice of `array` with `n` elements taken from the beginning. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.take([1, 2, 3]); + * // => [1] + * + * _.take([1, 2, 3], 2); + * // => [1, 2] + * + * _.take([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.take([1, 2, 3], 0); + * // => [] + */ + function take(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + return baseSlice(array, 0, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with `n` elements taken from the end. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {number} [n=1] The number of elements to take. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRight([1, 2, 3]); + * // => [3] + * + * _.takeRight([1, 2, 3], 2); + * // => [2, 3] + * + * _.takeRight([1, 2, 3], 5); + * // => [1, 2, 3] + * + * _.takeRight([1, 2, 3], 0); + * // => [] + */ + function takeRight(array, n, guard) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (guard ? isIterateeCall(array, n, guard) : n == null) { + n = 1; + } + n = length - (+n || 0); + return baseSlice(array, n < 0 ? 0 : n); + } + + /** + * Creates a slice of `array` with elements taken from the end. Elements are + * taken until `predicate` returns falsey. The predicate is bound to `thisArg` + * and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeRightWhile([1, 2, 3], function(n) { + * return n > 1; + * }); + * // => [2, 3] + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); + * // => ['pebbles'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); + * // => ['fred', 'pebbles'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeRightWhile(users, 'active'), 'user'); + * // => [] + */ + function takeRightWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + predicate = getCallback(predicate, thisArg, 3); + while (length-- && predicate(array[length], length, array)) {} + return baseSlice(array, length + 1); + } + + /** + * Creates a slice of `array` with elements taken from the beginning. Elements + * are taken until `predicate` returns falsey. The predicate is bound to + * `thisArg` and invoked with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to query. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the slice of `array`. + * @example + * + * _.takeWhile([1, 2, 3], function(n) { + * return n < 3; + * }); + * // => [1, 2] + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false}, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.takeWhile(users, 'active', false), 'user'); + * // => ['barney', 'fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.takeWhile(users, 'active'), 'user'); + * // => [] + */ + function takeWhile(array, predicate, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + var index = -1; + predicate = getCallback(predicate, thisArg, 3); + while (++index < length && predicate(array[index], index, array)) {} + return baseSlice(array, 0, index); + } + + /** + * Creates an array of unique values, in order, of the provided arrays using + * `SameValueZero` for equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([1, 2], [4, 2], [2, 1]); + * // => [1, 2, 4] + */ + function union() { + return baseUniq(baseFlatten(arguments, false, true, 0)); + } + + /** + * Creates a duplicate-value-free version of an array using `SameValueZero` + * for equality comparisons. Providing `true` for `isSorted` performs a faster + * search algorithm for sorted arrays. If an iteratee function is provided it + * is invoked for each value in the array to generate the criterion by which + * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked + * with three arguments; (value, index, array). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @alias unique + * @category Array + * @param {Array} array The array to inspect. + * @param {boolean} [isSorted] Specify the array is sorted. + * @param {Function|Object|string} [iteratee] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new duplicate-value-free array. + * @example + * + * _.uniq([1, 2, 1]); + * // => [1, 2] + * + * // using `isSorted` + * _.uniq([1, 1, 2], true); + * // => [1, 2] + * + * // using an iteratee function + * _.uniq([1, 2.5, 1.5, 2], function(n) { + * return this.floor(n); + * }, Math); + * // => [1, 2.5] + * + * // using the `_.property` callback shorthand + * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); + * // => [{ 'x': 1 }, { 'x': 2 }] + */ + function uniq(array, isSorted, iteratee, thisArg) { + var length = array ? array.length : 0; + if (!length) { + return []; + } + if (isSorted != null && typeof isSorted != 'boolean') { + thisArg = iteratee; + iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted; + isSorted = false; + } + var func = getCallback(); + if (!(func === baseCallback && iteratee == null)) { + iteratee = func(iteratee, thisArg, 3); + } + return (isSorted && getIndexOf() == baseIndexOf) + ? sortedUniq(array, iteratee) + : baseUniq(array, iteratee); + } + + /** + * This method is like `_.zip` except that it accepts an array of grouped + * elements and creates an array regrouping the elements to their pre-`_.zip` + * configuration. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array of grouped elements to process. + * @returns {Array} Returns the new array of regrouped elements. + * @example + * + * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + * + * _.unzip(zipped); + * // => [['fred', 'barney'], [30, 40], [true, false]] + */ + function unzip(array) { + var index = -1, + length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0, + result = Array(length); + + while (++index < length) { + result[index] = arrayMap(array, baseProperty(index)); + } + return result; + } + + /** + * Creates an array excluding all provided values using `SameValueZero` for + * equality comparisons. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @category Array + * @param {Array} array The array to filter. + * @param {...*} [values] The values to exclude. + * @returns {Array} Returns the new array of filtered values. + * @example + * + * _.without([1, 2, 1, 3], 1, 2); + * // => [3] + */ + function without(array) { + return baseDifference(array, baseSlice(arguments, 1)); + } + + /** + * Creates an array that is the symmetric difference of the provided arrays. + * See [Wikipedia](https://en.wikipedia.org/wiki/Symmetric_difference) for + * more details. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of values. + * @example + * + * _.xor([1, 2], [4, 2]); + * // => [1, 4] + */ + function xor() { + var index = -1, + length = arguments.length; + + while (++index < length) { + var array = arguments[index]; + if (isArray(array) || isArguments(array)) { + var result = result + ? baseDifference(result, array).concat(baseDifference(array, result)) + : array; + } + } + return result ? baseUniq(result) : []; + } + + /** + * Creates an array of grouped elements, the first of which contains the first + * elements of the given arrays, the second of which contains the second elements + * of the given arrays, and so on. + * + * @static + * @memberOf _ + * @category Array + * @param {...Array} [arrays] The arrays to process. + * @returns {Array} Returns the new array of grouped elements. + * @example + * + * _.zip(['fred', 'barney'], [30, 40], [true, false]); + * // => [['fred', 30, true], ['barney', 40, false]] + */ + function zip() { + var length = arguments.length, + array = Array(length); + + while (length--) { + array[length] = arguments[length]; + } + return unzip(array); + } + + /** + * Creates an object composed from arrays of property names and values. Provide + * either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]` + * or two arrays, one of property names and one of corresponding values. + * + * @static + * @memberOf _ + * @alias object + * @category Array + * @param {Array} props The property names. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['fred', 'barney'], [30, 40]); + * // => { 'fred': 30, 'barney': 40 } + */ + function zipObject(props, values) { + var index = -1, + length = props ? props.length : 0, + result = {}; + + if (length && !values && !isArray(props[0])) { + values = []; + } + while (++index < length) { + var key = props[index]; + if (values) { + result[key] = values[index]; + } else if (key) { + result[key[0]] = key[1]; + } + } + return result; + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a `lodash` object that wraps `value` with explicit method + * chaining enabled. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to wrap. + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'pebbles', 'age': 1 } + * ]; + * + * var youngest = _.chain(users) + * .sortBy('age') + * .map(function(chr) { + * return chr.user + ' is ' + chr.age; + * }) + * .first() + * .value(); + * // => 'pebbles is 1' + */ + function chain(value) { + var result = lodash(value); + result.__chain__ = true; + return result; + } + + /** + * This method invokes `interceptor` and returns `value`. The interceptor is + * bound to `thisArg` and invoked with one argument; (value). The purpose of + * this method is to "tap into" a method chain in order to perform operations + * on intermediate results within the chain. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns `value`. + * @example + * + * _([1, 2, 3]) + * .tap(function(array) { + * array.pop(); + * }) + * .reverse() + * .value(); + * // => [2, 1] + */ + function tap(value, interceptor, thisArg) { + interceptor.call(thisArg, value); + return value; + } + + /** + * This method is like `_.tap` except that it returns the result of `interceptor`. + * + * @static + * @memberOf _ + * @category Chain + * @param {*} value The value to provide to `interceptor`. + * @param {Function} interceptor The function to invoke. + * @param {*} [thisArg] The `this` binding of `interceptor`. + * @returns {*} Returns the result of `interceptor`. + * @example + * + * _([1, 2, 3]) + * .last() + * .thru(function(value) { + * return [value]; + * }) + * .value(); + * // => [3] + */ + function thru(value, interceptor, thisArg) { + return interceptor.call(thisArg, value); + } + + /** + * Enables explicit method chaining on the wrapper object. + * + * @name chain + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * // without explicit chaining + * _(users).first(); + * // => { 'user': 'barney', 'age': 36 } + * + * // with explicit chaining + * _(users).chain() + * .first() + * .pick('user') + * .value(); + * // => { 'user': 'barney' } + */ + function wrapperChain() { + return chain(this); + } + + /** + * Executes the chained sequence and returns the wrapped result. + * + * @name commit + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapper = _(array).push(3); + * + * console.log(array); + * // => [1, 2] + * + * wrapper = wrapper.commit(); + * console.log(array); + * // => [1, 2, 3] + * + * wrapper.last(); + * // => 3 + * + * console.log(array); + * // => [1, 2, 3] + */ + function wrapperCommit() { + return new LodashWrapper(this.value(), this.__chain__); + } + + /** + * Creates a clone of the chained sequence planting `value` as the wrapped value. + * + * @name plant + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new `lodash` wrapper instance. + * @example + * + * var array = [1, 2]; + * var wrapper = _(array).map(function(value) { + * return Math.pow(value, 2); + * }); + * + * var other = [3, 4]; + * var otherWrapper = wrapper.plant(other); + * + * otherWrapper.value(); + * // => [9, 16] + * + * wrapper.value(); + * // => [1, 4] + */ + function wrapperPlant(value) { + var result, + parent = this; + + while (parent instanceof baseLodash) { + var clone = wrapperClone(parent); + if (result) { + previous.__wrapped__ = clone; + } else { + result = clone; + } + var previous = clone; + parent = parent.__wrapped__; + } + previous.__wrapped__ = value; + return result; + } + + /** + * Reverses the wrapped array so the first element becomes the last, the + * second element becomes the second to last, and so on. + * + * **Note:** This method mutates the wrapped array. + * + * @name reverse + * @memberOf _ + * @category Chain + * @returns {Object} Returns the new reversed `lodash` wrapper instance. + * @example + * + * var array = [1, 2, 3]; + * + * _(array).reverse().value() + * // => [3, 2, 1] + * + * console.log(array); + * // => [3, 2, 1] + */ + function wrapperReverse() { + var value = this.__wrapped__; + if (value instanceof LazyWrapper) { + if (this.__actions__.length) { + value = new LazyWrapper(this); + } + return new LodashWrapper(value.reverse(), this.__chain__); + } + return this.thru(function(value) { + return value.reverse(); + }); + } + + /** + * Produces the result of coercing the unwrapped value to a string. + * + * @name toString + * @memberOf _ + * @category Chain + * @returns {string} Returns the coerced string value. + * @example + * + * _([1, 2, 3]).toString(); + * // => '1,2,3' + */ + function wrapperToString() { + return (this.value() + ''); + } + + /** + * Executes the chained sequence to extract the unwrapped value. + * + * @name value + * @memberOf _ + * @alias run, toJSON, valueOf + * @category Chain + * @returns {*} Returns the resolved unwrapped value. + * @example + * + * _([1, 2, 3]).value(); + * // => [1, 2, 3] + */ + function wrapperValue() { + return baseWrapperValue(this.__wrapped__, this.__actions__); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates an array of elements corresponding to the given keys, or indexes, + * of `collection`. Keys may be specified as individual arguments or as arrays + * of keys. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(number|number[]|string|string[])} [props] The property names + * or indexes of elements to pick, specified individually or in arrays. + * @returns {Array} Returns the new array of picked elements. + * @example + * + * _.at(['a', 'b', 'c'], [0, 2]); + * // => ['a', 'c'] + * + * _.at(['fred', 'barney', 'pebbles'], 0, 2); + * // => ['fred', 'pebbles'] + */ + function at(collection) { + var length = collection ? collection.length : 0; + if (isLength(length)) { + collection = toIterable(collection); + } + return baseAt(collection, baseFlatten(arguments, false, false, 1)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the number of times the key was returned by `iteratee`. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': 1, '6': 2 } + * + * _.countBy([4.3, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': 1, '6': 2 } + * + * _.countBy(['one', 'two', 'three'], 'length'); + * // => { '3': 2, '5': 1 } + */ + var countBy = createAggregator(function(result, value, key) { + hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); + }); + + /** + * Checks if `predicate` returns truthy for **all** elements of `collection`. + * The predicate is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias all + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if all elements pass the predicate check, + * else `false`. + * @example + * + * _.every([true, 1, null, 'yes'], Boolean); + * // => false + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.every(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.every(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.every(users, 'active'); + * // => false + */ + function every(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayEvery : baseEvery; + if (typeof predicate != 'function' || typeof thisArg != 'undefined') { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + /** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias select + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.filter([4, 5, 6], function(n) { + * return n % 2 == 0; + * }); + * // => [4, 6] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.filter(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.filter(users, 'active'), 'user'); + * // => ['barney'] + */ + function filter(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, predicate); + } + + /** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is bound to `thisArg` and + * invoked with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias detect + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.result(_.find(users, function(chr) { + * return chr.age < 40; + * }), 'user'); + * // => 'barney' + * + * // using the `_.matches` callback shorthand + * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.result(_.find(users, 'active', false), 'user'); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.result(_.find(users, 'active'), 'user'); + * // => 'barney' + */ + function find(collection, predicate, thisArg) { + if (isArray(collection)) { + var index = findIndex(collection, predicate, thisArg); + return index > -1 ? collection[index] : undefined; + } + predicate = getCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEach); + } + + /** + * This method is like `_.find` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * _.findLast([1, 2, 3, 4], function(n) { + * return n % 2 == 1; + * }); + * // => 3 + */ + function findLast(collection, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + return baseFind(collection, predicate, baseEachRight); + } + + /** + * Performs a deep comparison between each element in `collection` and the + * source object, returning the first element that has equivalent property + * values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); + * // => 'barney' + * + * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); + * // => 'fred' + */ + function findWhere(collection, source) { + return find(collection, baseMatches(source)); + } + + /** + * Iterates over elements of `collection` invoking `iteratee` for each element. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). Iterator functions may exit iteration early + * by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a `length` property + * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` + * may be used for object iteration. + * + * @static + * @memberOf _ + * @alias each + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEach(function(n) { + * console.log(n); + * }).value(); + * // => logs each value from left to right and returns the array + * + * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { + * console.log(n, key); + * }); + * // => logs each value-key pair and returns the object (iteration order is not guaranteed) + */ + function forEach(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) + ? arrayEach(collection, iteratee) + : baseEach(collection, bindCallback(iteratee, thisArg, 3)); + } + + /** + * This method is like `_.forEach` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias eachRight + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array|Object|string} Returns `collection`. + * @example + * + * _([1, 2]).forEachRight(function(n) { + * console.log(n); + * }).join(','); + * // => logs each value from right to left and returns the array + */ + function forEachRight(collection, iteratee, thisArg) { + return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) + ? arrayEachRight(collection, iteratee) + : baseEachRight(collection, bindCallback(iteratee, thisArg, 3)); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is an array of the elements responsible for generating the key. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return Math.floor(n); + * }); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * _.groupBy([4.2, 6.1, 6.4], function(n) { + * return this.floor(n); + * }, Math); + * // => { '4': [4.2], '6': [6.1, 6.4] } + * + * // using the `_.property` callback shorthand + * _.groupBy(['one', 'two', 'three'], 'length'); + * // => { '3': ['one', 'two'], '5': ['three'] } + */ + var groupBy = createAggregator(function(result, value, key) { + if (hasOwnProperty.call(result, key)) { + result[key].push(value); + } else { + result[key] = [value]; + } + }); + + /** + * Checks if `value` is in `collection` using `SameValueZero` for equality + * comparisons. If `fromIndex` is negative, it is used as the offset from + * the end of `collection`. + * + * **Note:** `SameValueZero` comparisons are like strict equality comparisons, + * e.g. `===`, except that `NaN` matches `NaN`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) + * for more details. + * + * @static + * @memberOf _ + * @alias contains, include + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {*} target The value to search for. + * @param {number} [fromIndex=0] The index to search from. + * @returns {boolean} Returns `true` if a matching element is found, else `false`. + * @example + * + * _.includes([1, 2, 3], 1); + * // => true + * + * _.includes([1, 2, 3], 1, 2); + * // => false + * + * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); + * // => true + * + * _.includes('pebbles', 'eb'); + * // => true + */ + function includes(collection, target, fromIndex) { + var length = collection ? collection.length : 0; + if (!isLength(length)) { + collection = values(collection); + length = collection.length; + } + if (!length) { + return false; + } + if (typeof fromIndex == 'number') { + fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); + } else { + fromIndex = 0; + } + return (typeof collection == 'string' || !isArray(collection) && isString(collection)) + ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) + : (getIndexOf(collection, target, fromIndex) > -1); + } + + /** + * Creates an object composed of keys generated from the results of running + * each element of `collection` through `iteratee`. The corresponding value + * of each key is the last element responsible for generating the key. The + * iteratee function is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the composed aggregate object. + * @example + * + * var keyData = [ + * { 'dir': 'left', 'code': 97 }, + * { 'dir': 'right', 'code': 100 } + * ]; + * + * _.indexBy(keyData, 'dir'); + * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return String.fromCharCode(object.code); + * }); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + * + * _.indexBy(keyData, function(object) { + * return this.fromCharCode(object.code); + * }, String); + * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } + */ + var indexBy = createAggregator(function(result, value, key) { + result[key] = value; + }); + + /** + * Invokes the method named by `methodName` on each element in `collection`, + * returning an array of the results of each invoked method. Any additional + * arguments are provided to each invoked method. If `methodName` is a function + * it is invoked for, and `this` bound to, each element in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|string} methodName The name of the method to invoke or + * the function invoked per iteration. + * @param {...*} [args] The arguments to invoke the method with. + * @returns {Array} Returns the array of results. + * @example + * + * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); + * // => [[1, 5, 7], [1, 2, 3]] + * + * _.invoke([123, 456], String.prototype.split, ''); + * // => [['1', '2', '3'], ['4', '5', '6']] + */ + function invoke(collection, methodName) { + return baseInvoke(collection, methodName, baseSlice(arguments, 2)); + } + + /** + * Creates an array of values by running each element in `collection` through + * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three + * arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * Many lodash methods are guarded to work as interatees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`, + * `dropRight`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, `slice`, + * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, `trimRight`, + * `trunc`, `random`, `range`, `sample`, `uniq`, and `words` + * + * @static + * @memberOf _ + * @alias collect + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * create a `_.property` or `_.matches` style callback respectively. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new mapped array. + * @example + * + * function timesThree(n) { + * return n * 3; + * } + * + * _.map([1, 2], timesThree); + * // => [3, 6] + * + * _.map({ 'a': 1, 'b': 2 }, timesThree); + * // => [3, 6] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // using the `_.property` callback shorthand + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ + function map(collection, iteratee, thisArg) { + var func = isArray(collection) ? arrayMap : baseMap; + iteratee = getCallback(iteratee, thisArg, 3); + return func(collection, iteratee); + } + + /** + * Creates an array of elements split into two groups, the first of which + * contains elements `predicate` returns truthy for, while the second of which + * contains elements `predicate` returns falsey for. The predicate is bound + * to `thisArg` and invoked with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the array of grouped elements. + * @example + * + * _.partition([1, 2, 3], function(n) { + * return n % 2; + * }); + * // => [[1, 3], [2]] + * + * _.partition([1.2, 2.3, 3.4], function(n) { + * return this.floor(n) % 2; + * }, Math); + * // => [[1.2, 3.4], [2.3]] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true }, + * { 'user': 'pebbles', 'age': 1, 'active': false } + * ]; + * + * var mapper = function(array) { + * return _.pluck(array, 'user'); + * }; + * + * // using the `_.matches` callback shorthand + * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); + * // => [['pebbles'], ['barney', 'fred']] + * + * // using the `_.matchesProperty` callback shorthand + * _.map(_.partition(users, 'active', false), mapper); + * // => [['barney', 'pebbles'], ['fred']] + * + * // using the `_.property` callback shorthand + * _.map(_.partition(users, 'active'), mapper); + * // => [['fred'], ['barney', 'pebbles']] + */ + var partition = createAggregator(function(result, value, key) { + result[key ? 0 : 1].push(value); + }, function() { return [[], []]; }); + + /** + * Gets the value of `key` from all elements in `collection`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {string} key The key of the property to pluck. + * @returns {Array} Returns the property values. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 } + * ]; + * + * _.pluck(users, 'user'); + * // => ['barney', 'fred'] + * + * var userIndex = _.indexBy(users, 'user'); + * _.pluck(userIndex, 'age'); + * // => [36, 40] (iteration order is not guaranteed) + */ + function pluck(collection, key) { + return map(collection, baseProperty(key)); + } + + /** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` through `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not provided the first element of `collection` is used as the initial + * value. The `iteratee` is bound to `thisArg`and invoked with four arguments; + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as interatees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `merge`, and `sortAllBy` + * + * @static + * @memberOf _ + * @alias foldl, inject + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * return result; + * }, {}); + * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) + */ + function reduce(collection, iteratee, accumulator, thisArg) { + var func = isArray(collection) ? arrayReduce : baseReduce; + return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEach); + } + + /** + * This method is like `_.reduce` except that it iterates over elements of + * `collection` from right to left. + * + * @static + * @memberOf _ + * @alias foldr + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * var array = [[0, 1], [2, 3], [4, 5]]; + * + * _.reduceRight(array, function(flattened, other) { + * return flattened.concat(other); + * }, []); + * // => [4, 5, 2, 3, 0, 1] + */ + function reduceRight(collection, iteratee, accumulator, thisArg) { + var func = isArray(collection) ? arrayReduceRight : baseReduce; + return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEachRight); + } + + /** + * The opposite of `_.filter`; this method returns the elements of `collection` + * that `predicate` does **not** return truthy for. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Array} Returns the new filtered array. + * @example + * + * _.reject([1, 2, 3, 4], function(n) { + * return n % 2 == 0; + * }); + * // => [1, 3] + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false }, + * { 'user': 'fred', 'age': 40, 'active': true } + * ]; + * + * // using the `_.matches` callback shorthand + * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); + * // => ['barney'] + * + * // using the `_.matchesProperty` callback shorthand + * _.pluck(_.reject(users, 'active', false), 'user'); + * // => ['fred'] + * + * // using the `_.property` callback shorthand + * _.pluck(_.reject(users, 'active'), 'user'); + * // => ['barney'] + */ + function reject(collection, predicate, thisArg) { + var func = isArray(collection) ? arrayFilter : baseFilter; + predicate = getCallback(predicate, thisArg, 3); + return func(collection, function(value, index, collection) { + return !predicate(value, index, collection); + }); + } + + /** + * Gets a random element or `n` random elements from a collection. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to sample. + * @param {number} [n] The number of elements to sample. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {*} Returns the random sample(s). + * @example + * + * _.sample([1, 2, 3, 4]); + * // => 2 + * + * _.sample([1, 2, 3, 4], 2); + * // => [3, 1] + */ + function sample(collection, n, guard) { + if (guard ? isIterateeCall(collection, n, guard) : n == null) { + collection = toIterable(collection); + var length = collection.length; + return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; + } + var result = shuffle(collection); + result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); + return result; + } + + /** + * Creates an array of shuffled values, using a version of the Fisher-Yates + * shuffle. See [Wikipedia](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle) + * for more details. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to shuffle. + * @returns {Array} Returns the new shuffled array. + * @example + * + * _.shuffle([1, 2, 3, 4]); + * // => [4, 1, 3, 2] + */ + function shuffle(collection) { + collection = toIterable(collection); + + var index = -1, + length = collection.length, + result = Array(length); + + while (++index < length) { + var rand = baseRandom(0, index); + if (index != rand) { + result[index] = result[rand]; + } + result[rand] = collection[index]; + } + return result; + } + + /** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable properties for objects. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the size of `collection`. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ + function size(collection) { + var length = collection ? collection.length : 0; + return isLength(length) ? length : keys(collection).length; + } + + /** + * Checks if `predicate` returns truthy for **any** element of `collection`. + * The function returns as soon as it finds a passing value and does not iterate + * over the entire collection. The predicate is bound to `thisArg` and invoked + * with three arguments; (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @alias any + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + * @example + * + * _.some([null, 0, 'yes', false], Boolean); + * // => true + * + * var users = [ + * { 'user': 'barney', 'active': true }, + * { 'user': 'fred', 'active': false } + * ]; + * + * // using the `_.matches` callback shorthand + * _.some(users, { 'user': 'barney', 'active': false }); + * // => false + * + * // using the `_.matchesProperty` callback shorthand + * _.some(users, 'active', false); + * // => true + * + * // using the `_.property` callback shorthand + * _.some(users, 'active'); + * // => true + */ + function some(collection, predicate, thisArg) { + var func = isArray(collection) ? arraySome : baseSome; + if (typeof predicate != 'function' || typeof thisArg != 'undefined') { + predicate = getCallback(predicate, thisArg, 3); + } + return func(collection, predicate); + } + + /** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection through `iteratee`. This method performs + * a stable sort, that is, it preserves the original sort order of equal elements. + * The `iteratee` is bound to `thisArg` and invoked with three arguments; + * (value, index|key, collection). + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {Array|Function|Object|string} [iteratee=_.identity] The function + * invoked per iteration. If a property name or an object is provided it is + * used to create a `_.property` or `_.matches` style callback respectively. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Array} Returns the new sorted array. + * @example + * + * _.sortBy([1, 2, 3], function(n) { + * return Math.sin(n); + * }); + * // => [3, 1, 2] + * + * _.sortBy([1, 2, 3], function(n) { + * return this.sin(n); + * }, Math); + * // => [3, 1, 2] + * + * var users = [ + * { 'user': 'fred' }, + * { 'user': 'pebbles' }, + * { 'user': 'barney' } + * ]; + * + * // using the `_.property` callback shorthand + * _.pluck(_.sortBy(users, 'user'), 'user'); + * // => ['barney', 'fred', 'pebbles'] + */ + function sortBy(collection, iteratee, thisArg) { + if (collection == null) { + return []; + } + var index = -1, + length = collection.length, + result = isLength(length) ? Array(length) : []; + + if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { + iteratee = null; + } + iteratee = getCallback(iteratee, thisArg, 3); + baseEach(collection, function(value, key, collection) { + result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value }; + }); + return baseSortBy(result, compareAscending); + } + + /** + * This method is like `_.sortBy` except that it sorts by property names + * instead of an iteratee function. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {...(string|string[])} props The property names to sort by, + * specified as individual property names or arrays of property names. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 26 }, + * { 'user': 'fred', 'age': 30 } + * ]; + * + * _.map(_.sortByAll(users, ['user', 'age']), _.values); + * // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] + */ + function sortByAll(collection) { + if (collection == null) { + return []; + } + var args = arguments, + guard = args[3]; + + if (guard && isIterateeCall(args[1], args[2], guard)) { + args = [collection, args[1]]; + } + return baseSortByOrder(collection, baseFlatten(args, false, false, 1), []); + } + + /** + * This method is like `_.sortByAll` except that it allows specifying the + * sort orders of the property names to sort by. A truthy value in `orders` + * will sort the corresponding property name in ascending order while a + * falsey value will sort it in descending order. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to iterate over. + * @param {string[]} props The property names to sort by. + * @param {boolean[]} orders The sort orders of `props`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 26 }, + * { 'user': 'fred', 'age': 40 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 } + * ]; + * + * // sort by `user` in ascending order and by `age` in descending order + * _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values); + * // => [['barney', 36], ['barney', 26], ['fred', 40], ['fred', 30]] + */ + function sortByOrder(collection, props, orders, guard) { + if (collection == null) { + return []; + } + if (guard && isIterateeCall(props, orders, guard)) { + orders = null; + } + if (!isArray(props)) { + props = props == null ? [] : [props]; + } + if (!isArray(orders)) { + orders = orders == null ? [] : [orders]; + } + return baseSortByOrder(collection, props, orders); + } + + /** + * Performs a deep comparison between each element in `collection` and the + * source object, returning an array of all elements that have equivalent + * property values. + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. For comparing a single + * own or inherited property value see `_.matchesProperty`. + * + * @static + * @memberOf _ + * @category Collection + * @param {Array|Object|string} collection The collection to search. + * @param {Object} source The object of property values to match. + * @returns {Array} Returns the new filtered array. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, + * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } + * ]; + * + * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); + * // => ['barney'] + * + * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); + * // => ['fred'] + */ + function where(collection, source) { + return filter(collection, baseMatches(source)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Gets the number of milliseconds that have elapsed since the Unix epoch + * (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @category Date + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => logs the number of milliseconds it took for the deferred function to be invoked + */ + var now = nativeNow || function() { + return new Date().getTime(); + }; + + /*------------------------------------------------------------------------*/ + + /** + * The opposite of `_.before`; this method creates a function that invokes + * `func` once it is called `n` or more times. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls before `func` is invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var saves = ['profile', 'settings']; + * + * var done = _.after(saves.length, function() { + * console.log('done saving!'); + * }); + * + * _.forEach(saves, function(type) { + * asyncSave({ 'type': type, 'complete': done }); + * }); + * // => logs 'done saving!' after the two async saves have completed + */ + function after(n, func) { + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + n = nativeIsFinite(n = +n) ? n : 0; + return function() { + if (--n < 1) { + return func.apply(this, arguments); + } + }; + } + + /** + * Creates a function that accepts up to `n` arguments ignoring any + * additional arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to cap arguments for. + * @param {number} [n=func.length] The arity cap. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new function. + * @example + * + * _.map(['6', '8', '10'], _.ary(parseInt, 1)); + * // => [6, 8, 10] + */ + function ary(func, n, guard) { + if (guard && isIterateeCall(func, n, guard)) { + n = null; + } + n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); + return createWrapper(func, ARY_FLAG, null, null, null, null, n); + } + + /** + * Creates a function that invokes `func`, with the `this` binding and arguments + * of the created function, while it is called less than `n` times. Subsequent + * calls to the created function return the result of the last `func` invocation. + * + * @static + * @memberOf _ + * @category Function + * @param {number} n The number of calls at which `func` is no longer invoked. + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * jQuery('#add').on('click', _.before(5, addContactToList)); + * // => allows adding up to 4 contacts to the list + */ + function before(n, func) { + var result; + if (typeof func != 'function') { + if (typeof n == 'function') { + var temp = n; + n = func; + func = temp; + } else { + throw new TypeError(FUNC_ERROR_TEXT); + } + } + return function() { + if (--n > 0) { + result = func.apply(this, arguments); + } else { + func = null; + } + return result; + }; + } + + /** + * Creates a function that invokes `func` with the `this` binding of `thisArg` + * and prepends any additional `_.bind` arguments to those provided to the + * bound function. + * + * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for partially applied arguments. + * + * **Note:** Unlike native `Function#bind` this method does not set the `length` + * property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to bind. + * @param {*} thisArg The `this` binding of `func`. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var greet = function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * }; + * + * var object = { 'user': 'fred' }; + * + * var bound = _.bind(greet, object, 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * // using placeholders + * var bound = _.bind(greet, object, _, '!'); + * bound('hi'); + * // => 'hi fred!' + */ + function bind(func, thisArg) { + var bitmask = BIND_FLAG; + if (arguments.length > 2) { + var partials = baseSlice(arguments, 2), + holders = replaceHolders(partials, bind.placeholder); + + bitmask |= PARTIAL_FLAG; + } + return createWrapper(func, bitmask, thisArg, partials, holders); + } + + /** + * Binds methods of an object to the object itself, overwriting the existing + * method. Method names may be specified as individual arguments or as arrays + * of method names. If no method names are provided all enumerable function + * properties, own and inherited, of `object` are bound. + * + * **Note:** This method does not set the `length` property of bound functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object to bind and assign the bound methods to. + * @param {...(string|string[])} [methodNames] The object method names to bind, + * specified as individual method names or arrays of method names. + * @returns {Object} Returns `object`. + * @example + * + * var view = { + * 'label': 'docs', + * 'onClick': function() { + * console.log('clicked ' + this.label); + * } + * }; + * + * _.bindAll(view); + * jQuery('#docs').on('click', view.onClick); + * // => logs 'clicked docs' when the element is clicked + */ + function bindAll(object) { + return baseBindAll(object, + arguments.length > 1 + ? baseFlatten(arguments, false, false, 1) + : functions(object) + ); + } + + /** + * Creates a function that invokes the method at `object[key]` and prepends + * any additional `_.bindKey` arguments to those provided to the bound function. + * + * This method differs from `_.bind` by allowing bound functions to reference + * methods that may be redefined or don't yet exist. + * See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern) + * for more details. + * + * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * @static + * @memberOf _ + * @category Function + * @param {Object} object The object the method belongs to. + * @param {string} key The key of the method. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new bound function. + * @example + * + * var object = { + * 'user': 'fred', + * 'greet': function(greeting, punctuation) { + * return greeting + ' ' + this.user + punctuation; + * } + * }; + * + * var bound = _.bindKey(object, 'greet', 'hi'); + * bound('!'); + * // => 'hi fred!' + * + * object.greet = function(greeting, punctuation) { + * return greeting + 'ya ' + this.user + punctuation; + * }; + * + * bound('!'); + * // => 'hiya fred!' + * + * // using placeholders + * var bound = _.bindKey(object, 'greet', _, '!'); + * bound('hi'); + * // => 'hiya fred!' + */ + function bindKey(object, key) { + var bitmask = BIND_FLAG | BIND_KEY_FLAG; + if (arguments.length > 2) { + var partials = baseSlice(arguments, 2), + holders = replaceHolders(partials, bindKey.placeholder); + + bitmask |= PARTIAL_FLAG; + } + return createWrapper(key, bitmask, object, partials, holders); + } + + /** + * Creates a function that accepts one or more arguments of `func` that when + * called either invokes `func` returning its result, if all `func` arguments + * have been provided, or returns a function that accepts one or more of the + * remaining `func` arguments, and so on. The arity of `func` may be specified + * if `func.length` is not sufficient. + * + * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, + * may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the `length` property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curry(abc); + * + * curried(1)(2)(3); + * // => [1, 2, 3] + * + * curried(1, 2)(3); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(1)(_, 3)(2); + * // => [1, 2, 3] + */ + function curry(func, arity, guard) { + if (guard && isIterateeCall(func, arity, guard)) { + arity = null; + } + var result = createWrapper(func, CURRY_FLAG, null, null, null, null, null, arity); + result.placeholder = curry.placeholder; + return result; + } + + /** + * This method is like `_.curry` except that arguments are applied to `func` + * in the manner of `_.partialRight` instead of `_.partial`. + * + * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for provided arguments. + * + * **Note:** This method does not set the `length` property of curried functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to curry. + * @param {number} [arity=func.length] The arity of `func`. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Function} Returns the new curried function. + * @example + * + * var abc = function(a, b, c) { + * return [a, b, c]; + * }; + * + * var curried = _.curryRight(abc); + * + * curried(3)(2)(1); + * // => [1, 2, 3] + * + * curried(2, 3)(1); + * // => [1, 2, 3] + * + * curried(1, 2, 3); + * // => [1, 2, 3] + * + * // using placeholders + * curried(3)(1, _)(2); + * // => [1, 2, 3] + */ + function curryRight(func, arity, guard) { + if (guard && isIterateeCall(func, arity, guard)) { + arity = null; + } + var result = createWrapper(func, CURRY_RIGHT_FLAG, null, null, null, null, null, arity); + result.placeholder = curryRight.placeholder; + return result; + } + + /** + * Creates a function that delays invoking `func` until after `wait` milliseconds + * have elapsed since the last time it was invoked. The created function comes + * with a `cancel` method to cancel delayed invocations. Provide an options + * object to indicate that `func` should be invoked on the leading and/or + * trailing edge of the `wait` timeout. Subsequent calls to the debounced + * function return the result of the last `func` invocation. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the debounced function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.debounce` and `_.throttle`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to debounce. + * @param {number} [wait=0] The number of milliseconds to delay. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=false] Specify invoking on the leading + * edge of the timeout. + * @param {number} [options.maxWait] The maximum time `func` is allowed to be + * delayed before it is invoked. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new debounced function. + * @example + * + * // avoid costly calculations while the window size is in flux + * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); + * + * // invoke `sendMail` when the click event is fired, debouncing subsequent calls + * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { + * 'leading': true, + * 'trailing': false + * })); + * + * // ensure `batchLog` is invoked once after 1 second of debounced calls + * var source = new EventSource('/stream'); + * jQuery(source).on('message', _.debounce(batchLog, 250, { + * 'maxWait': 1000 + * })); + * + * // cancel a debounced call + * var todoChanges = _.debounce(batchLog, 1000); + * Object.observe(models.todo, todoChanges); + * + * Object.observe(models, function(changes) { + * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { + * todoChanges.cancel(); + * } + * }, ['delete']); + * + * // ...at some point `models.todo` is changed + * models.todo.completed = true; + * + * // ...before 1 second has passed `models.todo` is deleted + * // which cancels the debounced `todoChanges` call + * delete models.todo; + */ + function debounce(func, wait, options) { + var args, + maxTimeoutId, + result, + stamp, + thisArg, + timeoutId, + trailingCall, + lastCalled = 0, + maxWait = false, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + wait = wait < 0 ? 0 : (+wait || 0); + if (options === true) { + var leading = true; + trailing = false; + } else if (isObject(options)) { + leading = options.leading; + maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); + trailing = 'trailing' in options ? options.trailing : trailing; + } + + function cancel() { + if (timeoutId) { + clearTimeout(timeoutId); + } + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + } + + function delayed() { + var remaining = wait - (now() - stamp); + if (remaining <= 0 || remaining > wait) { + if (maxTimeoutId) { + clearTimeout(maxTimeoutId); + } + var isCalled = trailingCall; + maxTimeoutId = timeoutId = trailingCall = undefined; + if (isCalled) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + } + } else { + timeoutId = setTimeout(delayed, remaining); + } + } + + function maxDelayed() { + if (timeoutId) { + clearTimeout(timeoutId); + } + maxTimeoutId = timeoutId = trailingCall = undefined; + if (trailing || (maxWait !== wait)) { + lastCalled = now(); + result = func.apply(thisArg, args); + if (!timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + } + } + + function debounced() { + args = arguments; + stamp = now(); + thisArg = this; + trailingCall = trailing && (timeoutId || !leading); + + if (maxWait === false) { + var leadingCall = leading && !timeoutId; + } else { + if (!maxTimeoutId && !leading) { + lastCalled = stamp; + } + var remaining = maxWait - (stamp - lastCalled), + isCalled = remaining <= 0 || remaining > maxWait; + + if (isCalled) { + if (maxTimeoutId) { + maxTimeoutId = clearTimeout(maxTimeoutId); + } + lastCalled = stamp; + result = func.apply(thisArg, args); + } + else if (!maxTimeoutId) { + maxTimeoutId = setTimeout(maxDelayed, remaining); + } + } + if (isCalled && timeoutId) { + timeoutId = clearTimeout(timeoutId); + } + else if (!timeoutId && wait !== maxWait) { + timeoutId = setTimeout(delayed, wait); + } + if (leadingCall) { + isCalled = true; + result = func.apply(thisArg, args); + } + if (isCalled && !timeoutId && !maxTimeoutId) { + args = thisArg = null; + } + return result; + } + debounced.cancel = cancel; + return debounced; + } + + /** + * Defers invoking the `func` until the current call stack has cleared. Any + * additional arguments are provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to defer. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.defer(function(text) { + * console.log(text); + * }, 'deferred'); + * // logs 'deferred' after one or more milliseconds + */ + function defer(func) { + return baseDelay(func, 1, arguments, 1); + } + + /** + * Invokes `func` after `wait` milliseconds. Any additional arguments are + * provided to `func` when it is invoked. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to delay. + * @param {number} wait The number of milliseconds to delay invocation. + * @param {...*} [args] The arguments to invoke the function with. + * @returns {number} Returns the timer id. + * @example + * + * _.delay(function(text) { + * console.log(text); + * }, 1000, 'later'); + * // => logs 'later' after one second + */ + function delay(func, wait) { + return baseDelay(func, wait, arguments, 2); + } + + /** + * Creates a function that returns the result of invoking the provided + * functions with the `this` binding of the created function, where each + * successive invocation is supplied the return value of the previous. + * + * @static + * @memberOf _ + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flow(_.add, square); + * addSquare(1, 2); + * // => 9 + */ + var flow = createComposer(); + + /** + * This method is like `_.flow` except that it creates a function that + * invokes the provided functions from right to left. + * + * @static + * @memberOf _ + * @alias backflow, compose + * @category Function + * @param {...Function} [funcs] Functions to invoke. + * @returns {Function} Returns the new function. + * @example + * + * function square(n) { + * return n * n; + * } + * + * var addSquare = _.flowRight(square, _.add); + * addSquare(1, 2); + * // => 9 + */ + var flowRight = createComposer(true); + + /** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is coerced to a string and used as the + * cache key. The `func` is invoked with the `this` binding of the memoized + * function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the ES `Map` method interface + * of `get`, `has`, and `set`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object) + * for more details. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoizing function. + * @example + * + * var upperCase = _.memoize(function(string) { + * return string.toUpperCase(); + * }); + * + * upperCase('fred'); + * // => 'FRED' + * + * // modifying the result cache + * upperCase.cache.set('fred', 'BARNEY'); + * upperCase('fred'); + * // => 'BARNEY' + * + * // replacing `_.memoize.Cache` + * var object = { 'user': 'fred' }; + * var other = { 'user': 'barney' }; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'fred' } + * + * _.memoize.Cache = WeakMap; + * var identity = _.memoize(_.identity); + * + * identity(object); + * // => { 'user': 'fred' } + * identity(other); + * // => { 'user': 'barney' } + */ + function memoize(func, resolver) { + if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { + throw new TypeError(FUNC_ERROR_TEXT); + } + var memoized = function() { + var args = arguments, + cache = memoized.cache, + key = resolver ? resolver.apply(this, args) : args[0]; + + if (cache.has(key)) { + return cache.get(key); + } + var result = func.apply(this, args); + cache.set(key, result); + return result; + }; + memoized.cache = new memoize.Cache; + return memoized; + } + + /** + * Creates a function that negates the result of the predicate `func`. The + * `func` predicate is invoked with the `this` binding and arguments of the + * created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} predicate The predicate to negate. + * @returns {Function} Returns the new function. + * @example + * + * function isEven(n) { + * return n % 2 == 0; + * } + * + * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); + * // => [1, 3, 5] + */ + function negate(predicate) { + if (typeof predicate != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function() { + return !predicate.apply(this, arguments); + }; + } + + /** + * Creates a function that is restricted to invoking `func` once. Repeat calls + * to the function return the value of the first call. The `func` is invoked + * with the `this` binding of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to restrict. + * @returns {Function} Returns the new restricted function. + * @example + * + * var initialize = _.once(createApplication); + * initialize(); + * initialize(); + * // `initialize` invokes `createApplication` once + */ + function once(func) { + return before(func, 2); + } + + /** + * Creates a function that invokes `func` with `partial` arguments prepended + * to those provided to the new function. This method is like `_.bind` except + * it does **not** alter the `this` binding. + * + * The `_.partial.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the `length` property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var sayHelloTo = _.partial(greet, 'hello'); + * sayHelloTo('fred'); + * // => 'hello fred' + * + * // using placeholders + * var greetFred = _.partial(greet, _, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + */ + function partial(func) { + var partials = baseSlice(arguments, 1), + holders = replaceHolders(partials, partial.placeholder); + + return createWrapper(func, PARTIAL_FLAG, null, partials, holders); + } + + /** + * This method is like `_.partial` except that partially applied arguments + * are appended to those provided to the new function. + * + * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic + * builds, may be used as a placeholder for partially applied arguments. + * + * **Note:** This method does not set the `length` property of partially + * applied functions. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to partially apply arguments to. + * @param {...*} [args] The arguments to be partially applied. + * @returns {Function} Returns the new partially applied function. + * @example + * + * var greet = function(greeting, name) { + * return greeting + ' ' + name; + * }; + * + * var greetFred = _.partialRight(greet, 'fred'); + * greetFred('hi'); + * // => 'hi fred' + * + * // using placeholders + * var sayHelloTo = _.partialRight(greet, 'hello', _); + * sayHelloTo('fred'); + * // => 'hello fred' + */ + function partialRight(func) { + var partials = baseSlice(arguments, 1), + holders = replaceHolders(partials, partialRight.placeholder); + + return createWrapper(func, PARTIAL_RIGHT_FLAG, null, partials, holders); + } + + /** + * Creates a function that invokes `func` with arguments arranged according + * to the specified indexes where the argument value at the first index is + * provided as the first argument, the argument value at the second index is + * provided as the second argument, and so on. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to rearrange arguments for. + * @param {...(number|number[])} indexes The arranged argument indexes, + * specified as individual indexes or arrays of indexes. + * @returns {Function} Returns the new function. + * @example + * + * var rearged = _.rearg(function(a, b, c) { + * return [a, b, c]; + * }, 2, 0, 1); + * + * rearged('b', 'c', 'a') + * // => ['a', 'b', 'c'] + * + * var map = _.rearg(_.map, [1, 0]); + * map(function(n) { + * return n * 3; + * }, [1, 2, 3]); + * // => [3, 6, 9] + */ + function rearg(func) { + var indexes = baseFlatten(arguments, false, false, 1); + return createWrapper(func, REARG_FLAG, null, null, null, indexes); + } + + /** + * Creates a function that invokes `func` with the `this` binding of the + * created function and the array of arguments provided to the created + * function much like [Function#apply](http://es5.github.io/#x15.3.4.3). + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to spread arguments over. + * @returns {*} Returns the new function. + * @example + * + * var spread = _.spread(function(who, what) { + * return who + ' says ' + what; + * }); + * + * spread(['Fred', 'hello']); + * // => 'Fred says hello' + * + * // with a Promise + * var numbers = Promise.all([ + * Promise.resolve(40), + * Promise.resolve(36) + * ]); + * + * numbers.then(_.spread(function(x, y) { + * return x + y; + * })); + * // => a Promise of 76 + */ + function spread(func) { + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + return function(array) { + return func.apply(this, array); + }; + } + + /** + * Creates a function that only invokes `func` at most once per every `wait` + * milliseconds. The created function comes with a `cancel` method to cancel + * delayed invocations. Provide an options object to indicate that `func` + * should be invoked on the leading and/or trailing edge of the `wait` timeout. + * Subsequent calls to the throttled function return the result of the last + * `func` call. + * + * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked + * on the trailing edge of the timeout only if the the throttled function is + * invoked more than once during the `wait` timeout. + * + * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) + * for details over the differences between `_.throttle` and `_.debounce`. + * + * @static + * @memberOf _ + * @category Function + * @param {Function} func The function to throttle. + * @param {number} [wait=0] The number of milliseconds to throttle invocations to. + * @param {Object} [options] The options object. + * @param {boolean} [options.leading=true] Specify invoking on the leading + * edge of the timeout. + * @param {boolean} [options.trailing=true] Specify invoking on the trailing + * edge of the timeout. + * @returns {Function} Returns the new throttled function. + * @example + * + * // avoid excessively updating the position while scrolling + * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); + * + * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes + * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { + * 'trailing': false + * })); + * + * // cancel a trailing throttled call + * jQuery(window).on('popstate', throttled.cancel); + */ + function throttle(func, wait, options) { + var leading = true, + trailing = true; + + if (typeof func != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + if (options === false) { + leading = false; + } else if (isObject(options)) { + leading = 'leading' in options ? !!options.leading : leading; + trailing = 'trailing' in options ? !!options.trailing : trailing; + } + debounceOptions.leading = leading; + debounceOptions.maxWait = +wait; + debounceOptions.trailing = trailing; + return debounce(func, wait, debounceOptions); + } + + /** + * Creates a function that provides `value` to the wrapper function as its + * first argument. Any additional arguments provided to the function are + * appended to those provided to the wrapper function. The wrapper is invoked + * with the `this` binding of the created function. + * + * @static + * @memberOf _ + * @category Function + * @param {*} value The value to wrap. + * @param {Function} wrapper The wrapper function. + * @returns {Function} Returns the new function. + * @example + * + * var p = _.wrap(_.escape, function(func, text) { + * return '

' + func(text) + '

'; + * }); + * + * p('fred, barney, & pebbles'); + * // => '

fred, barney, & pebbles

' + */ + function wrap(value, wrapper) { + wrapper = wrapper == null ? identity : wrapper; + return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []); + } + + /*------------------------------------------------------------------------*/ + + /** + * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, + * otherwise they are assigned by reference. If `customizer` is provided it is + * invoked to produce the cloned values. If `customizer` returns `undefined` + * cloning is handled by the method instead. The `customizer` is bound to + * `thisArg` and invoked with two argument; (value [, index|key, object]). + * + * **Note:** This method is loosely based on the structured clone algorithm. + * The enumerable properties of `arguments` objects and objects created by + * constructors other than `Object` are cloned to plain `Object` objects. An + * empty object is returned for uncloneable values such as functions, DOM nodes, + * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm) + * for more details. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {*} Returns the cloned value. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * var shallow = _.clone(users); + * shallow[0] === users[0]; + * // => true + * + * var deep = _.clone(users, true); + * deep[0] === users[0]; + * // => false + * + * // using a customizer callback + * var el = _.clone(document.body, function(value) { + * if (_.isElement(value)) { + * return value.cloneNode(false); + * } + * }); + * + * el === document.body + * // => false + * el.nodeName + * // => BODY + * el.childNodes.length; + * // => 0 + */ + function clone(value, isDeep, customizer, thisArg) { + if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) { + isDeep = false; + } + else if (typeof isDeep == 'function') { + thisArg = customizer; + customizer = isDeep; + isDeep = false; + } + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); + return baseClone(value, isDeep, customizer); + } + + /** + * Creates a deep clone of `value`. If `customizer` is provided it is invoked + * to produce the cloned values. If `customizer` returns `undefined` cloning + * is handled by the method instead. The `customizer` is bound to `thisArg` + * and invoked with two argument; (value [, index|key, object]). + * + * **Note:** This method is loosely based on the structured clone algorithm. + * The enumerable properties of `arguments` objects and objects created by + * constructors other than `Object` are cloned to plain `Object` objects. An + * empty object is returned for uncloneable values such as functions, DOM nodes, + * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm) + * for more details. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to deep clone. + * @param {Function} [customizer] The function to customize cloning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {*} Returns the deep cloned value. + * @example + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * var deep = _.cloneDeep(users); + * deep[0] === users[0]; + * // => false + * + * // using a customizer callback + * var el = _.cloneDeep(document.body, function(value) { + * if (_.isElement(value)) { + * return value.cloneNode(true); + * } + * }); + * + * el === document.body + * // => false + * el.nodeName + * // => BODY + * el.childNodes.length; + * // => 20 + */ + function cloneDeep(value, customizer, thisArg) { + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); + return baseClone(value, true, customizer); + } + + /** + * Checks if `value` is classified as an `arguments` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArguments(function() { return arguments; }()); + * // => true + * + * _.isArguments([1, 2, 3]); + * // => false + */ + function isArguments(value) { + var length = isObjectLike(value) ? value.length : undefined; + return (isLength(length) && objToString.call(value) == argsTag) || false; + } + + /** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(function() { return arguments; }()); + * // => false + */ + var isArray = nativeIsArray || function(value) { + return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false; + }; + + /** + * Checks if `value` is classified as a boolean primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isBoolean(false); + * // => true + * + * _.isBoolean(null); + * // => false + */ + function isBoolean(value) { + return (value === true || value === false || isObjectLike(value) && objToString.call(value) == boolTag) || false; + } + + /** + * Checks if `value` is classified as a `Date` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isDate(new Date); + * // => true + * + * _.isDate('Mon April 23 2012'); + * // => false + */ + function isDate(value) { + return (isObjectLike(value) && objToString.call(value) == dateTag) || false; + } + + /** + * Checks if `value` is a DOM element. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. + * @example + * + * _.isElement(document.body); + * // => true + * + * _.isElement(''); + * // => false + */ + function isElement(value) { + return (value && value.nodeType === 1 && isObjectLike(value) && + (objToString.call(value).indexOf('Element') > -1)) || false; + } + // Fallback for environments without DOM support. + if (!support.dom) { + isElement = function(value) { + return (value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value)) || false; + }; + } + + /** + * Checks if `value` is empty. A value is considered empty unless it is an + * `arguments` object, array, string, or jQuery-like collection with a length + * greater than `0` or an object with own enumerable properties. + * + * @static + * @memberOf _ + * @category Lang + * @param {Array|Object|string} value The value to inspect. + * @returns {boolean} Returns `true` if `value` is empty, else `false`. + * @example + * + * _.isEmpty(null); + * // => true + * + * _.isEmpty(true); + * // => true + * + * _.isEmpty(1); + * // => true + * + * _.isEmpty([1, 2, 3]); + * // => false + * + * _.isEmpty({ 'a': 1 }); + * // => false + */ + function isEmpty(value) { + if (value == null) { + return true; + } + var length = value.length; + if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || + (isObjectLike(value) && isFunction(value.splice)))) { + return !length; + } + return !keys(value).length; + } + + /** + * Performs a deep comparison between two values to determine if they are + * equivalent. If `customizer` is provided it is invoked to compare values. + * If `customizer` returns `undefined` comparisons are handled by the method + * instead. The `customizer` is bound to `thisArg` and invoked with three + * arguments; (value, other [, index|key]). + * + * **Note:** This method supports comparing arrays, booleans, `Date` objects, + * numbers, `Object` objects, regexes, and strings. Objects are compared by + * their own, not inherited, enumerable properties. Functions and DOM nodes + * are **not** supported. Provide a customizer function to extend support + * for comparing other values. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {Function} [customizer] The function to customize comparing values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'user': 'fred' }; + * var other = { 'user': 'fred' }; + * + * object == other; + * // => false + * + * _.isEqual(object, other); + * // => true + * + * // using a customizer callback + * var array = ['hello', 'goodbye']; + * var other = ['hi', 'goodbye']; + * + * _.isEqual(array, other, function(value, other) { + * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) { + * return true; + * } + * }); + * // => true + */ + function isEqual(value, other, customizer, thisArg) { + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3); + if (!customizer && isStrictComparable(value) && isStrictComparable(other)) { + return value === other; + } + var result = customizer ? customizer(value, other) : undefined; + return typeof result == 'undefined' ? baseIsEqual(value, other, customizer) : !!result; + } + + /** + * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, + * `SyntaxError`, `TypeError`, or `URIError` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an error object, else `false`. + * @example + * + * _.isError(new Error); + * // => true + * + * _.isError(Error); + * // => false + */ + function isError(value) { + return (isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag) || false; + } + + /** + * Checks if `value` is a finite primitive number. + * + * **Note:** This method is based on ES `Number.isFinite`. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite) + * for more details. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. + * @example + * + * _.isFinite(10); + * // => true + * + * _.isFinite('10'); + * // => false + * + * _.isFinite(true); + * // => false + * + * _.isFinite(Object(10)); + * // => false + * + * _.isFinite(Infinity); + * // => false + */ + var isFinite = nativeNumIsFinite || function(value) { + return typeof value == 'number' && nativeIsFinite(value); + }; + + /** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in older versions of Chrome and Safari which return 'function' for regexes + // and Safari 8 equivalents which return 'object' for typed array constructors. + return objToString.call(value) == funcTag; + }; + + /** + * Checks if `value` is the language type of `Object`. + * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(1); + * // => false + */ + function isObject(value) { + // Avoid a V8 JIT bug in Chrome 19-20. + // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. + var type = typeof value; + return type == 'function' || (value && type == 'object') || false; + } + + /** + * Performs a deep comparison between `object` and `source` to determine if + * `object` contains equivalent property values. If `customizer` is provided + * it is invoked to compare values. If `customizer` returns `undefined` + * comparisons are handled by the method instead. The `customizer` is bound + * to `thisArg` and invoked with three arguments; (value, other, index|key). + * + * **Note:** This method supports comparing properties of arrays, booleans, + * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions + * and DOM nodes are **not** supported. Provide a customizer function to extend + * support for comparing other values. + * + * @static + * @memberOf _ + * @category Lang + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Function} [customizer] The function to customize comparing values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.isMatch(object, { 'age': 40 }); + * // => true + * + * _.isMatch(object, { 'age': 36 }); + * // => false + * + * // using a customizer callback + * var object = { 'greeting': 'hello' }; + * var source = { 'greeting': 'hi' }; + * + * _.isMatch(object, source, function(value, other) { + * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined; + * }); + * // => true + */ + function isMatch(object, source, customizer, thisArg) { + var props = keys(source), + length = props.length; + + customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3); + if (!customizer && length == 1) { + var key = props[0], + value = source[key]; + + if (isStrictComparable(value)) { + return object != null && value === object[key] && hasOwnProperty.call(object, key); + } + } + var values = Array(length), + strictCompareFlags = Array(length); + + while (length--) { + value = values[length] = source[props[length]]; + strictCompareFlags[length] = isStrictComparable(value); + } + return baseIsMatch(object, props, values, strictCompareFlags, customizer); + } + + /** + * Checks if `value` is `NaN`. + * + * **Note:** This method is not the same as native `isNaN` which returns `true` + * for `undefined` and other non-numeric values. See the [ES5 spec](https://es5.github.io/#x15.1.2.4) + * for more details. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + * @example + * + * _.isNaN(NaN); + * // => true + * + * _.isNaN(new Number(NaN)); + * // => true + * + * isNaN(undefined); + * // => true + * + * _.isNaN(undefined); + * // => false + */ + function isNaN(value) { + // An `NaN` primitive is the only value that is not equal to itself. + // Perform the `toStringTag` check first to avoid errors with some host objects in IE. + return isNumber(value) && value != +value; + } + + /** + * Checks if `value` is a native function. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, else `false`. + * @example + * + * _.isNative(Array.prototype.push); + * // => true + * + * _.isNative(_); + * // => false + */ + function isNative(value) { + if (value == null) { + return false; + } + if (objToString.call(value) == funcTag) { + return reNative.test(fnToString.call(value)); + } + return (isObjectLike(value) && reHostCtor.test(value)) || false; + } + + /** + * Checks if `value` is `null`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `null`, else `false`. + * @example + * + * _.isNull(null); + * // => true + * + * _.isNull(void 0); + * // => false + */ + function isNull(value) { + return value === null; + } + + /** + * Checks if `value` is classified as a `Number` primitive or object. + * + * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified + * as numbers, use the `_.isFinite` method. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isNumber(8.4); + * // => true + * + * _.isNumber(NaN); + * // => true + * + * _.isNumber('8.4'); + * // => false + */ + function isNumber(value) { + return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag) || false; + } + + /** + * Checks if `value` is a plain object, that is, an object created by the + * `Object` constructor or one with a `[[Prototype]]` of `null`. + * + * **Note:** This method assumes objects created by the `Object` constructor + * have no inherited enumerable properties. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. + * @example + * + * function Foo() { + * this.a = 1; + * } + * + * _.isPlainObject(new Foo); + * // => false + * + * _.isPlainObject([1, 2, 3]); + * // => false + * + * _.isPlainObject({ 'x': 0, 'y': 0 }); + * // => true + * + * _.isPlainObject(Object.create(null)); + * // => true + */ + var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { + if (!(value && objToString.call(value) == objectTag)) { + return false; + } + var valueOf = value.valueOf, + objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); + + return objProto + ? (value == objProto || getPrototypeOf(value) == objProto) + : shimIsPlainObject(value); + }; + + /** + * Checks if `value` is classified as a `RegExp` object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isRegExp(/abc/); + * // => true + * + * _.isRegExp('/abc/'); + * // => false + */ + function isRegExp(value) { + return (isObjectLike(value) && objToString.call(value) == regexpTag) || false; + } + + /** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ + function isString(value) { + return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; + } + + /** + * Checks if `value` is classified as a typed array. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. + * @example + * + * _.isTypedArray(new Uint8Array); + * // => true + * + * _.isTypedArray([]); + * // => false + */ + function isTypedArray(value) { + return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false; + } + + /** + * Checks if `value` is `undefined`. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ + function isUndefined(value) { + return typeof value == 'undefined'; + } + + /** + * Converts `value` to an array. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Array} Returns the converted array. + * @example + * + * (function() { + * return _.toArray(arguments).slice(1); + * }(1, 2, 3)); + * // => [2, 3] + */ + function toArray(value) { + var length = value ? value.length : 0; + if (!isLength(length)) { + return values(value); + } + if (!length) { + return []; + } + return arrayCopy(value); + } + + /** + * Converts `value` to a plain object flattening inherited enumerable + * properties of `value` to own properties of the plain object. + * + * @static + * @memberOf _ + * @category Lang + * @param {*} value The value to convert. + * @returns {Object} Returns the converted plain object. + * @example + * + * function Foo() { + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.assign({ 'a': 1 }, new Foo); + * // => { 'a': 1, 'b': 2 } + * + * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); + * // => { 'a': 1, 'b': 2, 'c': 3 } + */ + function toPlainObject(value) { + return baseCopy(value, keysIn(value)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Assigns own enumerable properties of source object(s) to the destination + * object. Subsequent sources overwrite property assignments of previous sources. + * If `customizer` is provided it is invoked to produce the assigned values. + * The `customizer` is bound to `thisArg` and invoked with five arguments; + * (objectValue, sourceValue, key, object, source). + * + * @static + * @memberOf _ + * @alias extend + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @param {Function} [customizer] The function to customize assigning values. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {Object} Returns `object`. + * @example + * + * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' }); + * // => { 'user': 'fred', 'age': 40 } + * + * // using a customizer callback + * var defaults = _.partialRight(_.assign, function(value, other) { + * return typeof value == 'undefined' ? other : value; + * }); + * + * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); + * // => { 'user': 'barney', 'age': 36 } + */ + var assign = createAssigner(baseAssign); + + /** + * Creates an object that inherits from the given `prototype` object. If a + * `properties` object is provided its own enumerable properties are assigned + * to the created object. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} prototype The object to inherit from. + * @param {Object} [properties] The properties to assign to the object. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new object. + * @example + * + * function Shape() { + * this.x = 0; + * this.y = 0; + * } + * + * function Circle() { + * Shape.call(this); + * } + * + * Circle.prototype = _.create(Shape.prototype, { + * 'constructor': Circle + * }); + * + * var circle = new Circle; + * circle instanceof Circle; + * // => true + * + * circle instanceof Shape; + * // => true + */ + function create(prototype, properties, guard) { + var result = baseCreate(prototype); + if (guard && isIterateeCall(prototype, properties, guard)) { + properties = null; + } + return properties ? baseCopy(properties, result, keys(properties)) : result; + } + + /** + * Assigns own enumerable properties of source object(s) to the destination + * object for all destination properties that resolve to `undefined`. Once a + * property is set, additional values of the same property are ignored. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @example + * + * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); + * // => { 'user': 'barney', 'age': 36 } + */ + function defaults(object) { + if (object == null) { + return object; + } + var args = arrayCopy(arguments); + args.push(assignDefaults); + return assign.apply(undefined, args); + } + + /** + * This method is like `_.findIndex` except that it returns the key of the + * first element `predicate` returns truthy for, instead of the element itself. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findKey(users, function(chr) { + * return chr.age < 40; + * }); + * // => 'barney' (iteration order is not guaranteed) + * + * // using the `_.matches` callback shorthand + * _.findKey(users, { 'age': 1, 'active': true }); + * // => 'pebbles' + * + * // using the `_.matchesProperty` callback shorthand + * _.findKey(users, 'active', false); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.findKey(users, 'active'); + * // => 'barney' + */ + function findKey(object, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + return baseFind(object, predicate, baseForOwn, true); + } + + /** + * This method is like `_.findKey` except that it iterates over elements of + * a collection in the opposite order. + * + * If a property name is provided for `predicate` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `predicate` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to search. + * @param {Function|Object|string} [predicate=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {string|undefined} Returns the key of the matched element, else `undefined`. + * @example + * + * var users = { + * 'barney': { 'age': 36, 'active': true }, + * 'fred': { 'age': 40, 'active': false }, + * 'pebbles': { 'age': 1, 'active': true } + * }; + * + * _.findLastKey(users, function(chr) { + * return chr.age < 40; + * }); + * // => returns `pebbles` assuming `_.findKey` returns `barney` + * + * // using the `_.matches` callback shorthand + * _.findLastKey(users, { 'age': 36, 'active': true }); + * // => 'barney' + * + * // using the `_.matchesProperty` callback shorthand + * _.findLastKey(users, 'active', false); + * // => 'fred' + * + * // using the `_.property` callback shorthand + * _.findLastKey(users, 'active'); + * // => 'pebbles' + */ + function findLastKey(object, predicate, thisArg) { + predicate = getCallback(predicate, thisArg, 3); + return baseFind(object, predicate, baseForOwnRight, true); + } + + /** + * Iterates over own and inherited enumerable properties of an object invoking + * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked + * with three arguments; (value, key, object). Iterator functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed) + */ + function forIn(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || typeof thisArg != 'undefined') { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return baseFor(object, iteratee, keysIn); + } + + /** + * This method is like `_.forIn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forInRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c' + */ + function forInRight(object, iteratee, thisArg) { + iteratee = bindCallback(iteratee, thisArg, 3); + return baseForRight(object, iteratee, keysIn); + } + + /** + * Iterates over own enumerable properties of an object invoking `iteratee` + * for each property. The `iteratee` is bound to `thisArg` and invoked with + * three arguments; (value, key, object). Iterator functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'a' and 'b' (iteration order is not guaranteed) + */ + function forOwn(object, iteratee, thisArg) { + if (typeof iteratee != 'function' || typeof thisArg != 'undefined') { + iteratee = bindCallback(iteratee, thisArg, 3); + } + return baseForOwn(object, iteratee); + } + + /** + * This method is like `_.forOwn` except that it iterates over properties of + * `object` in the opposite order. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns `object`. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwnRight(new Foo, function(value, key) { + * console.log(key); + * }); + * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b' + */ + function forOwnRight(object, iteratee, thisArg) { + iteratee = bindCallback(iteratee, thisArg, 3); + return baseForRight(object, iteratee, keys); + } + + /** + * Creates an array of function property names from all enumerable properties, + * own and inherited, of `object`. + * + * @static + * @memberOf _ + * @alias methods + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the new array of property names. + * @example + * + * _.functions(_); + * // => ['after', 'ary', 'assign', ...] + */ + function functions(object) { + return baseFunctions(object, keysIn(object)); + } + + /** + * Checks if `key` exists as a direct property of `object` instead of an + * inherited property. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @param {string} key The key to check. + * @returns {boolean} Returns `true` if `key` is a direct property, else `false`. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 3 }; + * + * _.has(object, 'b'); + * // => true + */ + function has(object, key) { + return object ? hasOwnProperty.call(object, key) : false; + } + + /** + * Creates an object composed of the inverted keys and values of `object`. + * If `object` contains duplicate values, subsequent values overwrite property + * assignments of previous values unless `multiValue` is `true`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to invert. + * @param {boolean} [multiValue] Allow multiple values per key. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {Object} Returns the new inverted object. + * @example + * + * var object = { 'a': 1, 'b': 2, 'c': 1 }; + * + * _.invert(object); + * // => { '1': 'c', '2': 'b' } + * + * // with `multiValue` + * _.invert(object, true); + * // => { '1': ['a', 'c'], '2': ['b'] } + */ + function invert(object, multiValue, guard) { + if (guard && isIterateeCall(object, multiValue, guard)) { + multiValue = null; + } + var index = -1, + props = keys(object), + length = props.length, + result = {}; + + while (++index < length) { + var key = props[index], + value = object[key]; + + if (multiValue) { + if (hasOwnProperty.call(result, value)) { + result[value].push(key); + } else { + result[value] = [key]; + } + } + else { + result[value] = key; + } + } + return result; + } + + /** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys) + * for more details. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ + var keys = !nativeKeys ? shimKeys : function(object) { + if (object) { + var Ctor = object.constructor, + length = object.length; + } + if ((typeof Ctor == 'function' && Ctor.prototype === object) || + (typeof object != 'function' && (length && isLength(length)))) { + return shimKeys(object); + } + return isObject(object) ? nativeKeys(object) : []; + }; + + /** + * Creates an array of the own and inherited enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keysIn(new Foo); + * // => ['a', 'b', 'c'] (iteration order is not guaranteed) + */ + function keysIn(object) { + if (object == null) { + return []; + } + if (!isObject(object)) { + object = Object(object); + } + var length = object.length; + length = (length && isLength(length) && + (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; + + var Ctor = object.constructor, + index = -1, + isProto = typeof Ctor == 'function' && Ctor.prototype === object, + result = Array(length), + skipIndexes = length > 0; + + while (++index < length) { + result[index] = (index + ''); + } + for (var key in object) { + if (!(skipIndexes && isIndex(key, length)) && + !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { + result.push(key); + } + } + return result; + } + + /** + * Creates an object with the same keys as `object` and values generated by + * running each own enumerable property of `object` through `iteratee`. The + * iteratee function is bound to `thisArg` and invoked with three arguments; + * (value, key, object). + * + * If a property name is provided for `iteratee` the created `_.property` + * style callback returns the property value of the given element. + * + * If a value is also provided for `thisArg` the created `_.matchesProperty` + * style callback returns `true` for elements that have a matching property + * value, else `false`. + * + * If an object is provided for `iteratee` the created `_.matches` style + * callback returns `true` for elements that have the properties of the given + * object, else `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function|Object|string} [iteratee=_.identity] The function invoked + * per iteration. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {Object} Returns the new mapped object. + * @example + * + * _.mapValues({ 'a': 1, 'b': 2 }, function(n) { + * return n * 3; + * }); + * // => { 'a': 3, 'b': 6 } + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * // using the `_.property` callback shorthand + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ + function mapValues(object, iteratee, thisArg) { + var result = {}; + iteratee = getCallback(iteratee, thisArg, 3); + + baseForOwn(object, function(value, key, object) { + result[key] = iteratee(value, key, object); + }); + return result; + } + + /** + * Recursively merges own enumerable properties of the source object(s), that + * don't resolve to `undefined` into the destination object. Subsequent sources + * overwrite property assignments of previous sources. If `customizer` is + * provided it is invoked to produce the merged values of the destination and + * source properties. If `customizer` returns `undefined` merging is handled + * by the method instead. The `customizer` is bound to `thisArg` and invoked + * with five arguments; (objectValue, sourceValue, key, object, source). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @param {Function} [customizer] The function to customize merging properties. + * @param {*} [thisArg] The `this` binding of `customizer`. + * @returns {Object} Returns `object`. + * @example + * + * var users = { + * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] + * }; + * + * var ages = { + * 'data': [{ 'age': 36 }, { 'age': 40 }] + * }; + * + * _.merge(users, ages); + * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } + * + * // using a customizer callback + * var object = { + * 'fruits': ['apple'], + * 'vegetables': ['beet'] + * }; + * + * var other = { + * 'fruits': ['banana'], + * 'vegetables': ['carrot'] + * }; + * + * _.merge(object, other, function(a, b) { + * if (_.isArray(a)) { + * return a.concat(b); + * } + * }); + * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } + */ + var merge = createAssigner(baseMerge); + + /** + * The opposite of `_.pick`; this method creates an object composed of the + * own and inherited enumerable properties of `object` that are not omitted. + * Property names may be specified as individual arguments or as arrays of + * property names. If `predicate` is provided it is invoked for each property + * of `object` omitting the properties `predicate` returns truthy for. The + * predicate is bound to `thisArg` and invoked with three arguments; + * (value, key, object). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {Function|...(string|string[])} [predicate] The function invoked per + * iteration or property names to omit, specified as individual property + * names or arrays of property names. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.omit(object, 'age'); + * // => { 'user': 'fred' } + * + * _.omit(object, _.isNumber); + * // => { 'user': 'fred' } + */ + function omit(object, predicate, thisArg) { + if (object == null) { + return {}; + } + if (typeof predicate != 'function') { + var props = arrayMap(baseFlatten(arguments, false, false, 1), String); + return pickByArray(object, baseDifference(keysIn(object), props)); + } + predicate = bindCallback(predicate, thisArg, 3); + return pickByCallback(object, function(value, key, object) { + return !predicate(value, key, object); + }); + } + + /** + * Creates a two dimensional array of the key-value pairs for `object`, + * e.g. `[[key1, value1], [key2, value2]]`. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to inspect. + * @returns {Array} Returns the new array of key-value pairs. + * @example + * + * _.pairs({ 'barney': 36, 'fred': 40 }); + * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) + */ + function pairs(object) { + var index = -1, + props = keys(object), + length = props.length, + result = Array(length); + + while (++index < length) { + var key = props[index]; + result[index] = [key, object[key]]; + } + return result; + } + + /** + * Creates an object composed of the picked `object` properties. Property + * names may be specified as individual arguments or as arrays of property + * names. If `predicate` is provided it is invoked for each property of `object` + * picking the properties `predicate` returns truthy for. The predicate is + * bound to `thisArg` and invoked with three arguments; (value, key, object). + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {Function|...(string|string[])} [predicate] The function invoked per + * iteration or property names to pick, specified as individual property + * names or arrays of property names. + * @param {*} [thisArg] The `this` binding of `predicate`. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'user': 'fred', 'age': 40 }; + * + * _.pick(object, 'user'); + * // => { 'user': 'fred' } + * + * _.pick(object, _.isString); + * // => { 'user': 'fred' } + */ + function pick(object, predicate, thisArg) { + if (object == null) { + return {}; + } + return typeof predicate == 'function' + ? pickByCallback(object, bindCallback(predicate, thisArg, 3)) + : pickByArray(object, baseFlatten(arguments, false, false, 1)); + } + + /** + * Resolves the value of property `key` on `object`. If the value of `key` is + * a function it is invoked with the `this` binding of `object` and its result + * is returned, else the property value is returned. If the property value is + * `undefined` the `defaultValue` is used in its place. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {string} key The key of the property to resolve. + * @param {*} [defaultValue] The value returned if the property value + * resolves to `undefined`. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'user': 'fred', 'age': _.constant(40) }; + * + * _.result(object, 'user'); + * // => 'fred' + * + * _.result(object, 'age'); + * // => 40 + * + * _.result(object, 'status', 'busy'); + * // => 'busy' + * + * _.result(object, 'status', _.constant('busy')); + * // => 'busy' + */ + function result(object, key, defaultValue) { + var value = object == null ? undefined : object[key]; + if (typeof value == 'undefined') { + value = defaultValue; + } + return isFunction(value) ? value.call(object) : value; + } + + /** + * An alternative to `_.reduce`; this method transforms `object` to a new + * `accumulator` object which is the result of running each of its own enumerable + * properties through `iteratee`, with each invocation potentially mutating + * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked + * with four arguments; (accumulator, value, key, object). Iterator functions + * may exit iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @category Object + * @param {Array|Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The custom accumulator value. + * @param {*} [thisArg] The `this` binding of `iteratee`. + * @returns {*} Returns the accumulated value. + * @example + * + * _.transform([2, 3, 4], function(result, n) { + * result.push(n *= n); + * return n % 2 == 0; + * }); + * // => [4, 9] + * + * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) { + * result[key] = n * 3; + * }); + * // => { 'a': 3, 'b': 6 } + */ + function transform(object, iteratee, accumulator, thisArg) { + var isArr = isArray(object) || isTypedArray(object); + iteratee = getCallback(iteratee, thisArg, 4); + + if (accumulator == null) { + if (isArr || isObject(object)) { + var Ctor = object.constructor; + if (isArr) { + accumulator = isArray(object) ? new Ctor : []; + } else { + accumulator = baseCreate(isFunction(Ctor) && Ctor.prototype); + } + } else { + accumulator = {}; + } + } + (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { + return iteratee(accumulator, value, index, object); + }); + return accumulator; + } + + /** + * Creates an array of the own enumerable property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ + function values(object) { + return baseValues(object, keys(object)); + } + + /** + * Creates an array of the own and inherited enumerable property values + * of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.valuesIn(new Foo); + * // => [1, 2, 3] (iteration order is not guaranteed) + */ + function valuesIn(object) { + return baseValues(object, keysIn(object)); + } + + /*------------------------------------------------------------------------*/ + + /** + * Checks if `n` is between `start` and up to but not including, `end`. If + * `end` is not specified it is set to `start` with `start` then set to `0`. + * + * @static + * @memberOf _ + * @category Number + * @param {number} n The number to check. + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @returns {boolean} Returns `true` if `n` is in the range, else `false`. + * @example + * + * _.inRange(3, 2, 4); + * // => true + * + * _.inRange(4, 8); + * // => true + * + * _.inRange(4, 2); + * // => false + * + * _.inRange(2, 2); + * // => false + * + * _.inRange(1.2, 2); + * // => true + * + * _.inRange(5.2, 4); + * // => false + */ + function inRange(value, start, end) { + start = +start || 0; + if (typeof end === 'undefined') { + end = start; + start = 0; + } else { + end = +end || 0; + } + return value >= start && value < end; + } + + /** + * Produces a random number between `min` and `max` (inclusive). If only one + * argument is provided a number between `0` and the given number is returned. + * If `floating` is `true`, or either `min` or `max` are floats, a floating-point + * number is returned instead of an integer. + * + * @static + * @memberOf _ + * @category Number + * @param {number} [min=0] The minimum possible value. + * @param {number} [max=1] The maximum possible value. + * @param {boolean} [floating] Specify returning a floating-point number. + * @returns {number} Returns the random number. + * @example + * + * _.random(0, 5); + * // => an integer between 0 and 5 + * + * _.random(5); + * // => also an integer between 0 and 5 + * + * _.random(5, true); + * // => a floating-point number between 0 and 5 + * + * _.random(1.2, 5.2); + * // => a floating-point number between 1.2 and 5.2 + */ + function random(min, max, floating) { + if (floating && isIterateeCall(min, max, floating)) { + max = floating = null; + } + var noMin = min == null, + noMax = max == null; + + if (floating == null) { + if (noMax && typeof min == 'boolean') { + floating = min; + min = 1; + } + else if (typeof max == 'boolean') { + floating = max; + noMax = true; + } + } + if (noMin && noMax) { + max = 1; + noMax = false; + } + min = +min || 0; + if (noMax) { + max = min; + min = 0; + } else { + max = +max || 0; + } + if (floating || min % 1 || max % 1) { + var rand = nativeRandom(); + return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max); + } + return baseRandom(min, max); + } + + /*------------------------------------------------------------------------*/ + + /** + * Converts `string` to camel case. + * See [Wikipedia](https://en.wikipedia.org/wiki/CamelCase) for more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the camel cased string. + * @example + * + * _.camelCase('Foo Bar'); + * // => 'fooBar' + * + * _.camelCase('--foo-bar'); + * // => 'fooBar' + * + * _.camelCase('__foo_bar__'); + * // => 'fooBar' + */ + var camelCase = createCompounder(function(result, word, index) { + word = word.toLowerCase(); + return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word); + }); + + /** + * Capitalizes the first character of `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to capitalize. + * @returns {string} Returns the capitalized string. + * @example + * + * _.capitalize('fred'); + * // => 'Fred' + */ + function capitalize(string) { + string = baseToString(string); + return string && (string.charAt(0).toUpperCase() + string.slice(1)); + } + + /** + * Deburrs `string` by converting latin-1 supplementary letters to basic latin letters. + * See [Wikipedia](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) + * for more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to deburr. + * @returns {string} Returns the deburred string. + * @example + * + * _.deburr('déjà vu'); + * // => 'deja vu' + */ + function deburr(string) { + string = baseToString(string); + return string && string.replace(reLatin1, deburrLetter); + } + + /** + * Checks if `string` ends with the given target string. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to search. + * @param {string} [target] The string to search for. + * @param {number} [position=string.length] The position to search from. + * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`. + * @example + * + * _.endsWith('abc', 'c'); + * // => true + * + * _.endsWith('abc', 'b'); + * // => false + * + * _.endsWith('abc', 'b', 2); + * // => true + */ + function endsWith(string, target, position) { + string = baseToString(string); + target = (target + ''); + + var length = string.length; + position = typeof position == 'undefined' + ? length + : nativeMin(position < 0 ? 0 : (+position || 0), length); + + position -= target.length; + return position >= 0 && string.indexOf(target, position) == position; + } + + /** + * Converts the characters "&", "<", ">", '"', "'", and "\`", in `string` to + * their corresponding HTML entities. + * + * **Note:** No other characters are escaped. To escape additional characters + * use a third-party library like [_he_](https://mths.be/he). + * + * Though the ">" character is escaped for symmetry, characters like + * ">" and "/" don't require escaping in HTML and have no special meaning + * unless they're part of a tag or unquoted attribute value. + * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) + * (under "semi-related fun fact") for more details. + * + * Backticks are escaped because in Internet Explorer < 9, they can break out + * of attribute values or HTML comments. See [#102](https://html5sec.org/#102), + * [#108](https://html5sec.org/#108), and [#133](https://html5sec.org/#133) of + * the [HTML5 Security Cheatsheet](https://html5sec.org/) for more details. + * + * When working with HTML you should always quote attribute values to reduce + * XSS vectors. See [Ryan Grove's article](http://wonko.com/post/html-escaping) + * for more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escape('fred, barney, & pebbles'); + * // => 'fred, barney, & pebbles' + */ + function escape(string) { + // Reset `lastIndex` because in IE < 9 `String#replace` does not. + string = baseToString(string); + return (string && reHasUnescapedHtml.test(string)) + ? string.replace(reUnescapedHtml, escapeHtmlChar) + : string; + } + + /** + * Escapes the `RegExp` special characters "\", "^", "$", ".", "|", "?", "*", + * "+", "(", ")", "[", "]", "{" and "}" in `string`. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to escape. + * @returns {string} Returns the escaped string. + * @example + * + * _.escapeRegExp('[lodash](https://lodash.com/)'); + * // => '\[lodash\]\(https://lodash\.com/\)' + */ + function escapeRegExp(string) { + string = baseToString(string); + return (string && reHasRegExpChars.test(string)) + ? string.replace(reRegExpChars, '\\$&') + : string; + } + + /** + * Converts `string` to kebab case. + * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for + * more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the kebab cased string. + * @example + * + * _.kebabCase('Foo Bar'); + * // => 'foo-bar' + * + * _.kebabCase('fooBar'); + * // => 'foo-bar' + * + * _.kebabCase('__foo_bar__'); + * // => 'foo-bar' + */ + var kebabCase = createCompounder(function(result, word, index) { + return result + (index ? '-' : '') + word.toLowerCase(); + }); + + /** + * Pads `string` on the left and right sides if it is shorter then the given + * padding length. The `chars` string may be truncated if the number of padding + * characters can't be evenly divided by the padding length. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.pad('abc', 8); + * // => ' abc ' + * + * _.pad('abc', 8, '_-'); + * // => '_-abc_-_' + * + * _.pad('abc', 3); + * // => 'abc' + */ + function pad(string, length, chars) { + string = baseToString(string); + length = +length; + + var strLength = string.length; + if (strLength >= length || !nativeIsFinite(length)) { + return string; + } + var mid = (length - strLength) / 2, + leftLength = floor(mid), + rightLength = ceil(mid); + + chars = createPad('', rightLength, chars); + return chars.slice(0, leftLength) + string + chars; + } + + /** + * Pads `string` on the left side if it is shorter then the given padding + * length. The `chars` string may be truncated if the number of padding + * characters exceeds the padding length. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padLeft('abc', 6); + * // => ' abc' + * + * _.padLeft('abc', 6, '_-'); + * // => '_-_abc' + * + * _.padLeft('abc', 3); + * // => 'abc' + */ + function padLeft(string, length, chars) { + string = baseToString(string); + return string && (createPad(string, length, chars) + string); + } + + /** + * Pads `string` on the right side if it is shorter then the given padding + * length. The `chars` string may be truncated if the number of padding + * characters exceeds the padding length. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to pad. + * @param {number} [length=0] The padding length. + * @param {string} [chars=' '] The string used as padding. + * @returns {string} Returns the padded string. + * @example + * + * _.padRight('abc', 6); + * // => 'abc ' + * + * _.padRight('abc', 6, '_-'); + * // => 'abc_-_' + * + * _.padRight('abc', 3); + * // => 'abc' + */ + function padRight(string, length, chars) { + string = baseToString(string); + return string && (string + createPad(string, length, chars)); + } + + /** + * Converts `string` to an integer of the specified radix. If `radix` is + * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal, + * in which case a `radix` of `16` is used. + * + * **Note:** This method aligns with the ES5 implementation of `parseInt`. + * See the [ES5 spec](https://es5.github.io/#E) for more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} string The string to convert. + * @param {number} [radix] The radix to interpret `value` by. + * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. + * @returns {number} Returns the converted integer. + * @example + * + * _.parseInt('08'); + * // => 8 + * + * _.map(['6', '08', '10'], _.parseInt); + * // => [6, 8, 10] + */ + function parseInt(string, radix, guard) { + if (guard && isIterateeCall(string, radix, guard)) { + radix = 0; + } + return nativeParseInt(string, radix); + } + // Fallback for environments with pre-ES5 implementations. + if (nativeParseInt(whitespace + '08') != 8) { + parseInt = function(string, radix, guard) { + // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`. + // Chrome fails to trim leading whitespace characters. + // See https://code.google.com/p/v8/issues/detail?id=3109 for more details. + if (guard ? isIterateeCall(string, radix, guard) : radix == null) { + radix = 0; + } else if (radix) { + radix = +radix; + } + string = trim(string); + return nativeParseInt(string, radix || (reHexPrefix.test(string) ? 16 : 10)); + }; + } + + /** + * Repeats the given string `n` times. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to repeat. + * @param {number} [n=0] The number of times to repeat the string. + * @returns {string} Returns the repeated string. + * @example + * + * _.repeat('*', 3); + * // => '***' + * + * _.repeat('abc', 2); + * // => 'abcabc' + * + * _.repeat('abc', 0); + * // => '' + */ + function repeat(string, n) { + var result = ''; + string = baseToString(string); + n = +n; + if (n < 1 || !string || !nativeIsFinite(n)) { + return result; + } + // Leverage the exponentiation by squaring algorithm for a faster repeat. + // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. + do { + if (n % 2) { + result += string; + } + n = floor(n / 2); + string += string; + } while (n); + + return result; + } + + /** + * Converts `string` to snake case. + * See [Wikipedia](https://en.wikipedia.org/wiki/Snake_case) for more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the snake cased string. + * @example + * + * _.snakeCase('Foo Bar'); + * // => 'foo_bar' + * + * _.snakeCase('fooBar'); + * // => 'foo_bar' + * + * _.snakeCase('--foo-bar'); + * // => 'foo_bar' + */ + var snakeCase = createCompounder(function(result, word, index) { + return result + (index ? '_' : '') + word.toLowerCase(); + }); + + /** + * Converts `string` to start case. + * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage) + * for more details. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to convert. + * @returns {string} Returns the start cased string. + * @example + * + * _.startCase('--foo-bar'); + * // => 'Foo Bar' + * + * _.startCase('fooBar'); + * // => 'Foo Bar' + * + * _.startCase('__foo_bar__'); + * // => 'Foo Bar' + */ + var startCase = createCompounder(function(result, word, index) { + return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1)); + }); + + /** + * Checks if `string` starts with the given target string. + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The string to search. + * @param {string} [target] The string to search for. + * @param {number} [position=0] The position to search from. + * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`. + * @example + * + * _.startsWith('abc', 'a'); + * // => true + * + * _.startsWith('abc', 'b'); + * // => false + * + * _.startsWith('abc', 'b', 1); + * // => true + */ + function startsWith(string, target, position) { + string = baseToString(string); + position = position == null + ? 0 + : nativeMin(position < 0 ? 0 : (+position || 0), string.length); + + return string.lastIndexOf(target, position) == position; + } + + /** + * Creates a compiled template function that can interpolate data properties + * in "interpolate" delimiters, HTML-escape interpolated data properties in + * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data + * properties may be accessed as free variables in the template. If a setting + * object is provided it takes precedence over `_.templateSettings` values. + * + * **Note:** In the development build `_.template` utilizes sourceURLs for easier debugging. + * See the [HTML5 Rocks article on sourcemaps](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) + * for more details. + * + * For more information on precompiling templates see + * [lodash's custom builds documentation](https://lodash.com/custom-builds). + * + * For more information on Chrome extension sandboxes see + * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). + * + * @static + * @memberOf _ + * @category String + * @param {string} [string=''] The template string. + * @param {Object} [options] The options object. + * @param {RegExp} [options.escape] The HTML "escape" delimiter. + * @param {RegExp} [options.evaluate] The "evaluate" delimiter. + * @param {Object} [options.imports] An object to import into the template as free variables. + * @param {RegExp} [options.interpolate] The "interpolate" delimiter. + * @param {string} [options.sourceURL] The sourceURL of the template's compiled source. + * @param {string} [options.variable] The data object variable name. + * @param- {Object} [otherOptions] Enables the legacy `options` param signature. + * @returns {Function} Returns the compiled template function. + * @example + * + * // using the "interpolate" delimiter to create a compiled template + * var compiled = _.template('hello <%= user %>!'); + * compiled({ 'user': 'fred' }); + * // => 'hello fred!' + * + * // using the HTML "escape" delimiter to escape data property values + * var compiled = _.template('<%- value %>'); + * compiled({ 'value': ' +``` + +Or in node.js: + +``` +npm install uuid +``` + +```javascript +var uuid = require('uuid'); + +// Generate a v1 (time-based) id +uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' + +// Generate a v4 (random) id +uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' +``` + +## API + +### uuid.v1([`options` [, `buffer` [, `offset`]]]) + +Generate and return a RFC4122 v1 (timestamp-based) UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. + * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. + * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. + * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Notes: + +1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) + +Example: Generate string UUID with fully-specified options + +```javascript +uuid.v1({ + node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], + clockseq: 0x1234, + msecs: new Date('2011-11-01').getTime(), + nsecs: 5678 +}); // -> "710b962e-041c-11e1-9234-0123456789ab" +``` + +Example: In-place generation of two binary IDs + +```javascript +// Generate two ids in an array +var arr = new Array(32); // -> [] +uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] +uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] + +// Optionally use uuid.unparse() to get stringify the ids +uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' +uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' +``` + +### uuid.v4([`options` [, `buffer` [, `offset`]]]) + +Generate and return a RFC4122 v4 UUID. + +* `options` - (Object) Optional uuid state to apply. Properties may include: + + * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values + * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. + +* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. +* `offset` - (Number) Starting index in `buffer` at which to begin writing. + +Returns `buffer`, if specified, otherwise the string form of the UUID + +Example: Generate string UUID with fully-specified options + +```javascript +uuid.v4({ + random: [ + 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, + 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 + ] +}); +// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" +``` + +Example: Generate two IDs in a single buffer + +```javascript +var buffer = new Array(32); // (or 'new Buffer' in node.js) +uuid.v4(null, buffer, 0); +uuid.v4(null, buffer, 16); +``` + +### uuid.parse(id[, buffer[, offset]]) +### uuid.unparse(buffer[, offset]) + +Parse and unparse UUIDs + + * `id` - (String) UUID(-like) string + * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used + * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 + +Example parsing and unparsing a UUID string + +```javascript +var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> +var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' +``` + +### uuid.noConflict() + +(Browsers only) Set `uuid` property back to it's previous value. + +Returns the uuid object. + +Example: + +```javascript +var myUuid = uuid.noConflict(); +myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' +``` + +## Deprecated APIs + +Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. + +### uuid([format [, buffer [, offset]]]) + +uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). + +## Testing + +In node.js + +``` +> cd test +> node test.js +``` + +In Browser + +``` +open test/test.html +``` + +### Benchmarking + +Requires node.js + +``` +cd benchmark/ +npm install +node benchmark.js +``` + +For a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark) + +For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). + +## Release notes + +### 2.0.0 + +* Removed uuid.BufferClass + +### 1.4.0 + +* Improved module context detection +* Removed public RNG functions + +### 1.3.2 + +* Improve tests and handling of v1() options (Issue #24) +* Expose RNG option to allow for perf testing with different generators + +### 1.3.0 + +* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! +* Support for node.js crypto API +* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/benchmark/README.md b/node_modules/uuid/benchmark/README.md new file mode 100644 index 0000000..aaeb2ea --- /dev/null +++ b/node_modules/uuid/benchmark/README.md @@ -0,0 +1,53 @@ +# node-uuid Benchmarks + +### Results + +To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark + +### Run them yourself + +node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. + +To prepare and run the benchmark issue; + +``` +npm install uuid uuid-js +node benchmark/benchmark.js +``` + +You'll see an output like this one: + +``` +# v4 +nodeuuid.v4(): 854700 uuids/second +nodeuuid.v4('binary'): 788643 uuids/second +nodeuuid.v4('binary', buffer): 1336898 uuids/second +uuid(): 479386 uuids/second +uuid('binary'): 582072 uuids/second +uuidjs.create(4): 312304 uuids/second + +# v1 +nodeuuid.v1(): 938086 uuids/second +nodeuuid.v1('binary'): 683060 uuids/second +nodeuuid.v1('binary', buffer): 1644736 uuids/second +uuidjs.create(1): 190621 uuids/second +``` + +* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. +* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. + +If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: + +``` +for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; +``` + +If you're interested in how performance varies between different node versions, you can issue the above command multiple times. + +You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: + +``` +(cd benchmark/ && ./bench.sh) +``` + +This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/uuid/benchmark/bench.gnu b/node_modules/uuid/benchmark/bench.gnu new file mode 100644 index 0000000..a342fbb --- /dev/null +++ b/node_modules/uuid/benchmark/bench.gnu @@ -0,0 +1,174 @@ +#!/opt/local/bin/gnuplot -persist +# +# +# G N U P L O T +# Version 4.4 patchlevel 3 +# last modified March 2011 +# System: Darwin 10.8.0 +# +# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 +# Thomas Williams, Colin Kelley and many others +# +# gnuplot home: http://www.gnuplot.info +# faq, bugs, etc: type "help seeking-assistance" +# immediate help: type "help" +# plot window: hit 'h' +set terminal postscript eps noenhanced defaultplex \ + leveldefault color colortext \ + solid linewidth 1.2 butt noclip \ + palfuncparam 2000,0.003 \ + "Helvetica" 14 +set output 'bench.eps' +unset clip points +set clip one +unset clip two +set bar 1.000000 front +set border 31 front linetype -1 linewidth 1.000 +set xdata +set ydata +set zdata +set x2data +set y2data +set timefmt x "%d/%m/%y,%H:%M" +set timefmt y "%d/%m/%y,%H:%M" +set timefmt z "%d/%m/%y,%H:%M" +set timefmt x2 "%d/%m/%y,%H:%M" +set timefmt y2 "%d/%m/%y,%H:%M" +set timefmt cb "%d/%m/%y,%H:%M" +set boxwidth +set style fill empty border +set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 +set style circle radius graph 0.02, first 0, 0 +set dummy x,y +set format x "% g" +set format y "% g" +set format x2 "% g" +set format y2 "% g" +set format z "% g" +set format cb "% g" +set angles radians +unset grid +set key title "" +set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox +set key noinvert samplen 4 spacing 1 width 0 height 0 +set key maxcolumns 2 maxrows 0 +unset label +unset arrow +set style increment default +unset style line +set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 +unset style arrow +set style histogram clustered gap 2 title offset character 0, 0, 0 +unset logscale +set offsets graph 0.05, 0.15, 0, 0 +set pointsize 1.5 +set pointintervalbox 1 +set encoding default +unset polar +unset parametric +unset decimalsign +set view 60, 30, 1, 1 +set samples 100, 100 +set isosamples 10, 10 +set surface +unset contour +set clabel '%8.3g' +set mapping cartesian +set datafile separator whitespace +unset hidden3d +set cntrparam order 4 +set cntrparam linear +set cntrparam levels auto 5 +set cntrparam points 5 +set size ratio 0 1,1 +set origin 0,0 +set style data points +set style function lines +set xzeroaxis linetype -2 linewidth 1.000 +set yzeroaxis linetype -2 linewidth 1.000 +set zzeroaxis linetype -2 linewidth 1.000 +set x2zeroaxis linetype -2 linewidth 1.000 +set y2zeroaxis linetype -2 linewidth 1.000 +set ticslevel 0.5 +set mxtics default +set mytics default +set mztics default +set mx2tics default +set my2tics default +set mcbtics default +set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set xtics norangelimit +set xtics () +set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set ytics autofreq norangelimit +set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 +set ztics autofreq norangelimit +set nox2tics +set noy2tics +set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 +set cbtics autofreq norangelimit +set title "" +set title offset character 0, 0, 0 font "" norotate +set timestamp bottom +set timestamp "" +set timestamp offset character 0, 0, 0 font "" norotate +set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) +set autoscale rfixmin +set autoscale rfixmax +set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) +set autoscale tfixmin +set autoscale tfixmax +set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale ufixmin +set autoscale ufixmax +set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale vfixmin +set autoscale vfixmax +set xlabel "" +set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set x2label "" +set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate +set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) +set autoscale xfixmin +set autoscale xfixmax +set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) +set autoscale x2fixmin +set autoscale x2fixmax +set ylabel "" +set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set y2label "" +set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) +set autoscale yfixmin +set autoscale yfixmax +set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) +set autoscale y2fixmin +set autoscale y2fixmax +set zlabel "" +set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate +set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) +set autoscale zfixmin +set autoscale zfixmax +set cblabel "" +set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 +set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) +set autoscale cbfixmin +set autoscale cbfixmax +set zero 1e-08 +set lmargin -1 +set bmargin -1 +set rmargin -1 +set tmargin -1 +set pm3d explicit at s +set pm3d scansautomatic +set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean +set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB +set palette rgbformulae 7, 5, 15 +set colorbox default +set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault +set loadpath +set fontpath +set fit noerrorvariables +GNUTERM = "aqua" +plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 +# EOF diff --git a/node_modules/uuid/benchmark/bench.sh b/node_modules/uuid/benchmark/bench.sh new file mode 100755 index 0000000..d870a0c --- /dev/null +++ b/node_modules/uuid/benchmark/bench.sh @@ -0,0 +1,34 @@ +#!/bin/bash + +# for a given node version run: +# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; + +PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') +FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) +INDICES=(2 3 2 3 2 2 2 2 2) +VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) +TMPJOIN="tmp_join" +OUTPUT="bench_results.txt" + +for I in ${!FILES[*]}; do + F=${FILES[$I]} + P=${PATTERNS[$I]} + INDEX=${INDICES[$I]} + echo "version $F" > $F + for V in $VERSIONS; do + (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F + done + if [ $I == 0 ]; then + cat $F > $TMPJOIN + else + join $TMPJOIN $F > $OUTPUT + cp $OUTPUT $TMPJOIN + fi + rm $F +done + +rm $TMPJOIN + +gnuplot bench.gnu +convert -density 200 -resize 800x560 -flatten bench.eps bench.png +rm bench.eps diff --git a/node_modules/uuid/benchmark/benchmark-native.c b/node_modules/uuid/benchmark/benchmark-native.c new file mode 100644 index 0000000..dbfc75f --- /dev/null +++ b/node_modules/uuid/benchmark/benchmark-native.c @@ -0,0 +1,34 @@ +/* +Test performance of native C UUID generation + +To Compile: cc -luuid benchmark-native.c -o benchmark-native +*/ + +#include +#include +#include +#include + +int main() { + uuid_t myid; + char buf[36+1]; + int i; + struct timeval t; + double start, finish; + + gettimeofday(&t, NULL); + start = t.tv_sec + t.tv_usec/1e6; + + int n = 2e5; + for (i = 0; i < n; i++) { + uuid_generate(myid); + uuid_unparse(myid, buf); + } + + gettimeofday(&t, NULL); + finish = t.tv_sec + t.tv_usec/1e6; + double dur = finish - start; + + printf("%d uuids/sec", (int)(n/dur)); + return 0; +} diff --git a/node_modules/uuid/benchmark/benchmark.js b/node_modules/uuid/benchmark/benchmark.js new file mode 100644 index 0000000..40e6efb --- /dev/null +++ b/node_modules/uuid/benchmark/benchmark.js @@ -0,0 +1,84 @@ +try { + var nodeuuid = require('../uuid'); +} catch (e) { + console.error('node-uuid require failed - skipping tests'); +} + +try { + var uuid = require('uuid'); +} catch (e) { + console.error('uuid require failed - skipping tests'); +} + +try { + var uuidjs = require('uuid-js'); +} catch (e) { + console.error('uuid-js require failed - skipping tests'); +} + +var N = 5e5; + +function rate(msg, t) { + console.log(msg + ': ' + + (N / (Date.now() - t) * 1e3 | 0) + + ' uuids/second'); +} + +console.log('# v4'); + +// node-uuid - string form +if (nodeuuid) { + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); + rate('nodeuuid.v4() - using node.js crypto RNG', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); + rate('nodeuuid.v4() - using Math.random() RNG', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); + rate('nodeuuid.v4(\'binary\')', t); + + var buffer = new nodeuuid.BufferClass(16); + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); + rate('nodeuuid.v4(\'binary\', buffer)', t); +} + +// libuuid - string form +if (uuid) { + for (var i = 0, t = Date.now(); i < N; i++) uuid(); + rate('uuid()', t); + + for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); + rate('uuid(\'binary\')', t); +} + +// uuid-js - string form +if (uuidjs) { + for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); + rate('uuidjs.create(4)', t); +} + +// 140byte.es +for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); +rate('140byte.es_v4', t); + +console.log(''); +console.log('# v1'); + +// node-uuid - v1 string form +if (nodeuuid) { + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); + rate('nodeuuid.v1()', t); + + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); + rate('nodeuuid.v1(\'binary\')', t); + + var buffer = new nodeuuid.BufferClass(16); + for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); + rate('nodeuuid.v1(\'binary\', buffer)', t); +} + +// uuid-js - v1 string form +if (uuidjs) { + for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); + rate('uuidjs.create(1)', t); +} diff --git a/node_modules/uuid/benchmark/package.json b/node_modules/uuid/benchmark/package.json new file mode 100644 index 0000000..94e0b59 --- /dev/null +++ b/node_modules/uuid/benchmark/package.json @@ -0,0 +1,9 @@ +{ + "name": "benchmark-uuid", + "private": true, + "description": "Benchmarks for node-uuid", + "dependencies": { + "uuid": "1.4.1", + "uuid-js": "0.7.4" + } +} diff --git a/node_modules/uuid/misc/compare.js b/node_modules/uuid/misc/compare.js new file mode 100644 index 0000000..3de3415 --- /dev/null +++ b/node_modules/uuid/misc/compare.js @@ -0,0 +1,62 @@ +var assert = require('assert'), + nodeuuid = require('../'), + uuidjs = require('uuid-js'), + util = require('util'), + exec = require('child_process').exec, + os = require('os'); + +// On Mac Os X / macports there's only the ossp-uuid package that provides uuid +// On Linux there's uuid-runtime which provides uuidgen +var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; + +function compare(ids) { + console.log(ids); + for (var i = 0; i < ids.length; i++) { + var id = ids[i].split('-'); + id = [id[2], id[1], id[0]].join(''); + ids[i] = id; + } + var sorted = ([].concat(ids)).sort(); + + if (sorted.toString() !== ids.toString()) { + console.log('Warning: sorted !== ids'); + } else { + console.log('everything in order!'); + } +} + +// Test time order of v1 uuids +var ids = []; +while (ids.length < 10e3) ids.push(nodeuuid.v1()); + +var max = 10; +console.log('node-uuid:'); +ids = []; +for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); +compare(ids); + +console.log(''); +console.log('uuidjs:'); +ids = []; +for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); +compare(ids); + +console.log(''); +console.log('libuuid:'); +ids = []; +var count = 0; +var last = function() { + compare(ids); +} +var cb = function(err, stdout, stderr) { + ids.push(stdout.substring(0, stdout.length-1)); + count++; + if (count < max) { + return next(); + } + last(); +}; +var next = function() { + exec(uuidCmd, cb); +}; +next(); diff --git a/node_modules/uuid/misc/perf.js b/node_modules/uuid/misc/perf.js new file mode 100644 index 0000000..bdc9eb4 --- /dev/null +++ b/node_modules/uuid/misc/perf.js @@ -0,0 +1,102 @@ +var assert = require('assert'); + +var uuid = require('../'); + +var log = console.log; + +var generators = { + v1: uuid.v1, + v4: uuid.v4 +}; + +var UUID_FORMAT = { + v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, + v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i +}; + +var N = 1e4; + +// Get %'age an actual value differs from the ideal value +function divergence(actual, ideal) { + return Math.round(100*100*(actual - ideal)/ideal)/100; +} + +function rate(msg, t) { + log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); +} + +for (var version in generators) { + var counts = {}, max = 0; + var generator = generators[version]; + var format = UUID_FORMAT[version]; + + log('\nSanity check ' + N + ' ' + version + ' uuids'); + for (var i = 0, ok = 0; i < N; i++) { + id = generator(); + if (!format.test(id)) { + throw Error(id + ' is not a valid UUID string'); + } + + if (id != uuid.unparse(uuid.parse(id))) { + assert(fail, id + ' is not a valid id'); + } + + // Count digits for our randomness check + if (version == 'v4') { + var digits = id.replace(/-/g, '').split(''); + for (var j = digits.length-1; j >= 0; j--) { + var c = digits[j]; + max = Math.max(max, counts[c] = (counts[c] || 0) + 1); + } + } + } + + // Check randomness for v4 UUIDs + if (version == 'v4') { + // Limit that we get worried about randomness. (Purely empirical choice, this!) + var limit = 2*100*Math.sqrt(1/N); + + log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); + + for (var i = 0; i < 16; i++) { + var c = i.toString(16); + var bar = '', n = counts[c], p = Math.round(n/max*100|0); + + // 1-3,5-8, and D-F: 1:16 odds over 30 digits + var ideal = N*30/16; + if (i == 4) { + // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits + ideal = N*(1 + 30/16); + } else if (i >= 8 && i <= 11) { + // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits + ideal = N*(1/4 + 30/16); + } else { + // Otherwise: 1:16 odds on 30 digits + ideal = N*30/16; + } + var d = divergence(n, ideal); + + // Draw bar using UTF squares (just for grins) + var s = n/max*50 | 0; + while (s--) bar += '='; + + assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); + } + } +} + +// Perf tests +for (var version in generators) { + log('\nPerformance testing ' + version + ' UUIDs'); + var generator = generators[version]; + var buf = new uuid.BufferClass(16); + + for (var i = 0, t = Date.now(); i < N; i++) generator(); + rate('uuid.' + version + '()', t); + + for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); + rate('uuid.' + version + '(\'binary\')', t); + + for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); + rate('uuid.' + version + '(\'binary\', buffer)', t); +} diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json new file mode 100644 index 0000000..0d5d8bb --- /dev/null +++ b/node_modules/uuid/package.json @@ -0,0 +1,59 @@ +{ + "name": "uuid", + "version": "2.0.3", + "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", + "keywords": [ + "uuid", + "guid", + "rfc4122" + ], + "author": { + "name": "Robert Kieffer", + "email": "robert@broofa.com" + }, + "contributors": [ + { + "name": "Christoph Tavan", + "email": "dev@tavan.de" + }, + { + "name": "Vincent Voyer", + "email": "vincent@zeroload.net" + } + ], + "license": "MIT", + "main": "./uuid.js", + "devDependencies": { + "mocha": "1.8.0" + }, + "scripts": { + "test": "mocha test/test.js" + }, + "browser": { + "./rng.js": "./rng-browser.js" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/defunctzombie/node-uuid.git" + }, + "testling": { + "browsers": [ + "ie6..latest", + "firefox/3.6..latest", + "chrome/22..latest", + "safari/5.1..latest" + ], + "harness": "mocha-tdd", + "files": "test/*.js" + }, + "readme": "# uuid [![Build Status](https://secure.travis-ci.org/defunctzombie/node-uuid.svg?branch=master)](http://travis-ci.org/defunctzombie/node-uuid) #\n\n[![browser support](https://ci.testling.com/defunctzombie/node-uuid.png)](https://ci.testling.com/defunctzombie/node-uuid)\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Cryptographically strong random # generation on supporting platforms\n* 1185 bytes minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n\n```\n\nOr in node.js:\n\n```\nnpm install uuid\n```\n\n```javascript\nvar uuid = require('uuid');\n\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> \nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\ncd benchmark/\nnpm install\nnode benchmark.js\n```\n\nFor a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 2.0.0\n \n* Removed uuid.BufferClass\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", + "readmeFilename": "README.md", + "bugs": { + "url": "https://github.com/defunctzombie/node-uuid/issues" + }, + "homepage": "https://github.com/defunctzombie/node-uuid#readme", + "_id": "uuid@2.0.3", + "_shasum": "67e2e863797215530dff318e5bf9dcebfd47b21a", + "_resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", + "_from": "uuid@>=2.0.3 <3.0.0" +} diff --git a/node_modules/uuid/rng-browser.js b/node_modules/uuid/rng-browser.js new file mode 100644 index 0000000..82ffaf6 --- /dev/null +++ b/node_modules/uuid/rng-browser.js @@ -0,0 +1,32 @@ + +var rng; + +var crypto = global.crypto || global.msCrypto; // for IE 11 +if (crypto && crypto.getRandomValues) { + // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto + // Moderately fast, high quality + var _rnds8 = new Uint8Array(16); + rng = function whatwgRNG() { + crypto.getRandomValues(_rnds8); + return _rnds8; + }; +} + +if (!rng) { + // Math.random()-based (RNG) + // + // If all else fails, use Math.random(). It's fast, but is of unspecified + // quality. + var _rnds = new Array(16); + rng = function() { + for (var i = 0, r; i < 16; i++) { + if ((i & 0x03) === 0) r = Math.random() * 0x100000000; + _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; + } + + return _rnds; + }; +} + +module.exports = rng; + diff --git a/node_modules/uuid/rng.js b/node_modules/uuid/rng.js new file mode 100644 index 0000000..3977f79 --- /dev/null +++ b/node_modules/uuid/rng.js @@ -0,0 +1,4 @@ +var rb = require('crypto').randomBytes; +module.exports = function() { + return rb(16); +}; diff --git a/node_modules/uuid/test/mocha.opts b/node_modules/uuid/test/mocha.opts new file mode 100644 index 0000000..e2bfcc5 --- /dev/null +++ b/node_modules/uuid/test/mocha.opts @@ -0,0 +1 @@ +--ui qunit diff --git a/node_modules/uuid/test/test.js b/node_modules/uuid/test/test.js new file mode 100644 index 0000000..4c9872f --- /dev/null +++ b/node_modules/uuid/test/test.js @@ -0,0 +1,105 @@ +var assert = require('assert'); + +var uuid = require('../'); + +// Verify ordering of v1 ids created with explicit times +var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 + +function compare(name, ids) { + test(name, function() { + // avoid .map for older browsers + for (var i=0 ; i 10k ids created in 1ms', function() { + // Verify throw if too many ids created + var thrown = false; + try { + uuid.v1({msecs: TIME, nsecs: 10000}); + } catch (e) { + thrown = true; + } + assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); +}); + +test('clock regression by msec', function() { + // Verify clock regression bumps clockseq + var uidt = uuid.v1({msecs: TIME}); + var uidtb = uuid.v1({msecs: TIME - 1}); + assert( + parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, + 'Clock regression by msec increments the clockseq' + ); +}); + +test('clock regression by nsec', function() { + // Verify clock regression bumps clockseq + var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); + var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); + assert( + parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, + 'Clock regression by nsec increments the clockseq' + ); +}); + +test('explicit options product expected id', function() { + // Verify explicit options produce expected id + var id = uuid.v1({ + msecs: 1321651533573, + nsecs: 5432, + clockseq: 0x385c, + node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] + }); + assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); +}); + +test('ids spanning 1ms boundary are 100ns apart', function() { + // Verify adjacent ids across a msec boundary are 1 time unit apart + var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); + var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); + + var before = u0.split('-')[0], after = u1.split('-')[0]; + var dt = parseInt(after, 16) - parseInt(before, 16); + assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); +}); + +test('parse/unparse', function() { + var id = '00112233445566778899aabbccddeeff'; + assert(uuid.unparse(uuid.parse(id.substr(0,10))) == + '00112233-4400-0000-0000-000000000000', 'Short parse'); + assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == + '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); +}); + diff --git a/node_modules/uuid/uuid.js b/node_modules/uuid/uuid.js new file mode 100644 index 0000000..be5bfed --- /dev/null +++ b/node_modules/uuid/uuid.js @@ -0,0 +1,183 @@ +// uuid.js +// +// Copyright (c) 2010-2012 Robert Kieffer +// MIT License - http://opensource.org/licenses/mit-license.php + +// Unique ID creation requires a high quality random # generator. We feature +// detect to determine the best RNG source, normalizing to a function that +// returns 128-bits of randomness, since that's what's usually required +var _rng = require('./rng'); + +// Maps for number <-> hex string conversion +var _byteToHex = []; +var _hexToByte = {}; +for (var i = 0; i < 256; i++) { + _byteToHex[i] = (i + 0x100).toString(16).substr(1); + _hexToByte[_byteToHex[i]] = i; +} + +// **`parse()` - Parse a UUID into it's component bytes** +function parse(s, buf, offset) { + var i = (buf && offset) || 0, ii = 0; + + buf = buf || []; + s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { + if (ii < 16) { // Don't overflow! + buf[i + ii++] = _hexToByte[oct]; + } + }); + + // Zero out remaining bytes if string was short + while (ii < 16) { + buf[i + ii++] = 0; + } + + return buf; +} + +// **`unparse()` - Convert UUID byte array (ala parse()) into a string** +function unparse(buf, offset) { + var i = offset || 0, bth = _byteToHex; + return bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + '-' + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]] + + bth[buf[i++]] + bth[buf[i++]]; +} + +// **`v1()` - Generate time-based UUID** +// +// Inspired by https://github.com/LiosK/UUID.js +// and http://docs.python.org/library/uuid.html + +// random #'s we need to init node and clockseq +var _seedBytes = _rng(); + +// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) +var _nodeId = [ + _seedBytes[0] | 0x01, + _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] +]; + +// Per 4.2.2, randomize (14 bit) clockseq +var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; + +// Previous uuid creation time +var _lastMSecs = 0, _lastNSecs = 0; + +// See https://github.com/broofa/node-uuid for API details +function v1(options, buf, offset) { + var i = buf && offset || 0; + var b = buf || []; + + options = options || {}; + + var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; + + // UUID timestamps are 100 nano-second units since the Gregorian epoch, + // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so + // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' + // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. + var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); + + // Per 4.2.1.2, use count of uuid's generated during the current clock + // cycle to simulate higher resolution clock + var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; + + // Time since last uuid creation (in msecs) + var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; + + // Per 4.2.1.2, Bump clockseq on clock regression + if (dt < 0 && options.clockseq === undefined) { + clockseq = clockseq + 1 & 0x3fff; + } + + // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new + // time interval + if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { + nsecs = 0; + } + + // Per 4.2.1.2 Throw error if too many uuids are requested + if (nsecs >= 10000) { + throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); + } + + _lastMSecs = msecs; + _lastNSecs = nsecs; + _clockseq = clockseq; + + // Per 4.1.4 - Convert from unix epoch to Gregorian epoch + msecs += 12219292800000; + + // `time_low` + var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; + b[i++] = tl >>> 24 & 0xff; + b[i++] = tl >>> 16 & 0xff; + b[i++] = tl >>> 8 & 0xff; + b[i++] = tl & 0xff; + + // `time_mid` + var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; + b[i++] = tmh >>> 8 & 0xff; + b[i++] = tmh & 0xff; + + // `time_high_and_version` + b[i++] = tmh >>> 24 & 0xf | 0x10; // include version + b[i++] = tmh >>> 16 & 0xff; + + // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) + b[i++] = clockseq >>> 8 | 0x80; + + // `clock_seq_low` + b[i++] = clockseq & 0xff; + + // `node` + var node = options.node || _nodeId; + for (var n = 0; n < 6; n++) { + b[i + n] = node[n]; + } + + return buf ? buf : unparse(b); +} + +// **`v4()` - Generate random UUID** + +// See https://github.com/broofa/node-uuid for API details +function v4(options, buf, offset) { + // Deprecated - 'format' argument, as supported in v1.2 + var i = buf && offset || 0; + + if (typeof(options) == 'string') { + buf = options == 'binary' ? new Array(16) : null; + options = null; + } + options = options || {}; + + var rnds = options.random || (options.rng || _rng)(); + + // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` + rnds[6] = (rnds[6] & 0x0f) | 0x40; + rnds[8] = (rnds[8] & 0x3f) | 0x80; + + // Copy bytes to buffer, if provided + if (buf) { + for (var ii = 0; ii < 16; ii++) { + buf[i + ii] = rnds[ii]; + } + } + + return buf || unparse(rnds); +} + +// Export public API +var uuid = v4; +uuid.v1 = v1; +uuid.v4 = v4; +uuid.parse = parse; +uuid.unparse = unparse; + +module.exports = uuid; diff --git a/serverless.yml b/serverless.yml index 44ffd95..fddde4e 100644 --- a/serverless.yml +++ b/serverless.yml @@ -21,23 +21,38 @@ functions: create: handler: handler.create events: - - http: POST todos + - http: + path: todos + method: post + cors: true readAll: handler: handler.readAll events: - - http: GET todos + - http: + path: todos + method: get + cors: true readOne: handler: handler.readOne events: - - http: GET todos/{id} + - http: + path: todos/{id} + method: get + cors: true update: handler: handler.update events: - - http: PUT todos/{id} + - http: + path: todos/{id} + method: put + cors: true delete: handler: handler.delete events: - - http: DELETE todos/{id} + - http: + path: todos/{id} + method: delete + cors: true resources: Resources: From 5c6d1851c3bcb6b4eafd7ad7be7b8c44770c354c Mon Sep 17 00:00:00 2001 From: ac360 Date: Wed, 12 Oct 2016 21:27:59 -0700 Subject: [PATCH 2/5] add gitignore --- .gitignore | 17 +++++++++++++++++ .idea/workspace.xml | 35 +++++++++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 8 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5371c35 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +*.log +npm-debug.log +pids +*.pid +*.seed +dist +lib-cov +coverage +.grunt +.lock-wscript +node_modules +**/.idea +.DS_Store +.tmp +admin.env +.env +tmp diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 0a011d1..6877dcf 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,10 +2,8 @@ - - - - + + @@ -26,7 +24,7 @@ - + @@ -36,6 +34,16 @@ + + + + + + + + + + @@ -63,6 +71,7 @@ @@ -135,6 +144,8 @@ + + - - + @@ -207,5 +218,13 @@ + + + + + + + + \ No newline at end of file From 7cd4bd2137968eeab76fcda26ce1cce227e0e40f Mon Sep 17 00:00:00 2001 From: ac360 Date: Wed, 12 Oct 2016 21:28:29 -0700 Subject: [PATCH 3/5] remove unnecessary files --- .idea/encodings.xml | 6 - .idea/jsLibraryMappings.xml | 6 - .idea/misc.xml | 16 - .idea/modules.xml | 8 - .idea/serverless-crud.iml | 8 - .idea/vcs.xml | 6 - .idea/watcherTasks.xml | 4 - .idea/workspace.xml | 230 - node_modules/aws-sdk/.changes/2.4.10.json | 12 - node_modules/aws-sdk/.changes/2.4.11.json | 32 - node_modules/aws-sdk/.changes/2.4.12.json | 42 - node_modules/aws-sdk/.changes/2.4.13.json | 27 - node_modules/aws-sdk/.changes/2.4.14.json | 17 - node_modules/aws-sdk/.changes/2.4.8.json | 42 - node_modules/aws-sdk/.changes/2.4.9.json | 22 - node_modules/aws-sdk/.changes/2.5.0.json | 37 - node_modules/aws-sdk/.changes/2.5.1.json | 17 - node_modules/aws-sdk/.changes/2.5.2.json | 22 - node_modules/aws-sdk/.changes/2.5.3.json | 7 - node_modules/aws-sdk/.changes/2.5.4.json | 17 - node_modules/aws-sdk/.changes/2.5.5.json | 22 - node_modules/aws-sdk/.changes/2.5.6.json | 7 - node_modules/aws-sdk/.changes/2.6.0.json | 22 - node_modules/aws-sdk/.changes/2.6.1.json | 7 - node_modules/aws-sdk/.changes/2.6.2.json | 7 - node_modules/aws-sdk/.changes/2.6.3.json | 17 - node_modules/aws-sdk/.changes/2.6.4.json | 32 - node_modules/aws-sdk/.changes/2.6.5.json | 12 - node_modules/aws-sdk/.changes/2.6.6.json | 12 - node_modules/aws-sdk/.changes/2.6.7.json | 12 - node_modules/aws-sdk/.changes/2.6.8.json | 12 - node_modules/aws-sdk/.jshintrc | 68 - node_modules/aws-sdk/.npmignore | 18 - node_modules/aws-sdk/.tesselinclude | 2 - node_modules/aws-sdk/CHANGELOG.md | 131 - node_modules/aws-sdk/CONTRIBUTING.md | 98 - node_modules/aws-sdk/LICENSE.txt | 202 - node_modules/aws-sdk/NOTICE.txt | 5 - node_modules/aws-sdk/README.md | 160 - node_modules/aws-sdk/UPGRADING.md | 157 - .../aws-sdk/apis/acm-2015-12-08.min.json | 263 - .../apis/acm-2015-12-08.paginators.json | 10 - .../apis/apigateway-2015-07-09.min.json | 3154 - .../apigateway-2015-07-09.paginators.json | 70 - ...ation-autoscaling-2016-02-06.examples.json | 257 - ...pplication-autoscaling-2016-02-06.min.json | 330 - ...ion-autoscaling-2016-02-06.paginators.json | 22 - .../apis/autoscaling-2011-01-01.examples.json | 1395 - .../apis/autoscaling-2011-01-01.min.json | 1608 - .../autoscaling-2011-01-01.paginators.json | 52 - .../apis/cloudformation-2010-05-15.min.json | 860 - .../cloudformation-2010-05-15.paginators.json | 27 - .../cloudformation-2010-05-15.waiters2.json | 235 - .../apis/cloudfront-2016-09-07.min.json | 1876 - .../cloudfront-2016-09-07.paginators.json | 32 - .../apis/cloudfront-2016-09-07.waiters2.json | 47 - .../aws-sdk/apis/cloudhsm-2014-05-30.min.json | 519 - .../apis/cloudsearch-2011-02-01.min.json | 837 - .../cloudsearch-2011-02-01.paginators.json | 13 - .../apis/cloudsearch-2013-01-01.min.json | 1086 - .../cloudsearch-2013-01-01.paginators.json | 20 - .../cloudsearchdomain-2013-01-01.min.json | 297 - .../apis/cloudtrail-2013-11-01.min.json | 454 - .../cloudtrail-2013-11-01.paginators.json | 7 - .../apis/codecommit-2015-04-13.min.json | 375 - .../codecommit-2015-04-13.paginators.json | 14 - .../apis/codedeploy-2014-10-06.min.json | 1120 - .../codedeploy-2014-10-06.paginators.json | 34 - .../apis/codedeploy-2014-10-06.waiters2.json | 30 - .../codepipeline-2015-07-09.examples.json | 902 - .../apis/codepipeline-2015-07-09.min.json | 1100 - .../apis/cognito-identity-2014-06-30.min.json | 487 - .../apis/cognito-idp-2016-04-18.min.json | 1866 - .../apis/cognito-sync-2014-06-30.min.json | 746 - .../aws-sdk/apis/config-2014-11-12.min.json | 857 - .../apis/config-2014-11-12.paginators.json | 10 - .../apis/datapipeline-2012-10-29.min.json | 666 - .../datapipeline-2012-10-29.paginators.json | 26 - .../apis/devicefarm-2015-06-23.examples.json | 1242 - .../apis/devicefarm-2015-06-23.min.json | 1404 - .../devicefarm-2015-06-23.paginators.json | 74 - .../apis/directconnect-2012-10-25.min.json | 563 - .../directconnect-2012-10-25.paginators.json | 22 - .../apis/discovery-2015-11-01.min.json | 356 - .../aws-sdk/apis/dms-2016-01-01.min.json | 1130 - .../aws-sdk/apis/ds-2015-04-16.min.json | 1033 - .../aws-sdk/apis/dynamodb-2011-12-05.min.json | 663 - .../apis/dynamodb-2011-12-05.paginators.json | 26 - .../apis/dynamodb-2011-12-05.waiters2.json | 35 - .../aws-sdk/apis/dynamodb-2012-08-10.min.json | 1050 - .../apis/dynamodb-2012-08-10.paginators.json | 26 - .../apis/dynamodb-2012-08-10.waiters2.json | 35 - .../aws-sdk/apis/ec2-2016-09-15.examples.json | 3740 - .../aws-sdk/apis/ec2-2016-09-15.min.json | 10892 -- .../apis/ec2-2016-09-15.paginators.json | 138 - .../aws-sdk/apis/ec2-2016-09-15.waiters2.json | 593 - .../aws-sdk/apis/ecr-2015-09-21.examples.json | 215 - .../aws-sdk/apis/ecr-2015-09-21.min.json | 545 - .../aws-sdk/apis/ecs-2014-11-13.examples.json | 883 - .../aws-sdk/apis/ecs-2014-11-13.min.json | 1135 - .../apis/ecs-2014-11-13.paginators.json | 40 - .../aws-sdk/apis/ecs-2014-11-13.waiters2.json | 93 - .../apis/elasticache-2015-02-02.min.json | 1567 - .../elasticache-2015-02-02.paginators.json | 76 - .../apis/elasticache-2015-02-02.waiters2.json | 143 - .../elasticbeanstalk-2010-12-01.examples.json | 1109 - .../apis/elasticbeanstalk-2010-12-01.min.json | 1264 - ...lasticbeanstalk-2010-12-01.paginators.json | 25 - .../elasticfilesystem-2015-02-01.min.json | 395 - ...sticloadbalancing-2012-06-01.examples.json | 1036 - .../elasticloadbalancing-2012-06-01.min.json | 973 - ...icloadbalancing-2012-06-01.paginators.json | 18 - ...sticloadbalancing-2012-06-01.waiters2.json | 49 - ...icloadbalancingv2-2015-12-01.examples.json | 1384 - ...elasticloadbalancingv2-2015-12-01.min.json | 1022 - ...loadbalancingv2-2015-12-01.paginators.json | 20 - .../apis/elasticmapreduce-2009-03-31.min.json | 1241 - ...lasticmapreduce-2009-03-31.paginators.json | 32 - .../elasticmapreduce-2009-03-31.waiters2.json | 67 - .../elastictranscoder-2012-09-25.min.json | 1019 - ...astictranscoder-2012-09-25.paginators.json | 24 - ...elastictranscoder-2012-09-25.waiters2.json | 30 - .../apis/email-2010-12-01.examples.json | 953 - .../aws-sdk/apis/email-2010-12-01.min.json | 1214 - .../apis/email-2010-12-01.paginators.json | 13 - .../apis/email-2010-12-01.waiters2.json | 18 - .../aws-sdk/apis/es-2015-01-01.min.json | 502 - .../aws-sdk/apis/events-2015-10-07.min.json | 330 - .../aws-sdk/apis/firehose-2015-08-04.min.json | 550 - .../aws-sdk/apis/gamelift-2015-10-01.min.json | 1174 - .../aws-sdk/apis/glacier-2012-06-01.min.json | 1215 - .../apis/glacier-2012-06-01.paginators.json | 28 - .../apis/glacier-2012-06-01.waiters2.json | 39 - .../aws-sdk/apis/iam-2010-05-08.min.json | 2936 - .../apis/iam-2010-05-08.paginators.json | 198 - .../aws-sdk/apis/iam-2010-05-08.waiters2.json | 39 - .../apis/importexport-2010-06-01.min.json | 242 - .../importexport-2010-06-01.paginators.json | 11 - .../apis/inspector-2016-02-16.min.json | 1248 - .../aws-sdk/apis/iot-2015-05-28.min.json | 1934 - .../aws-sdk/apis/iot-data-2015-05-28.min.json | 128 - .../aws-sdk/apis/kinesis-2013-12-02.min.json | 503 - .../apis/kinesis-2013-12-02.paginators.json | 18 - .../apis/kinesis-2013-12-02.waiters2.json | 18 - .../apis/kinesisanalytics-2015-08-14.min.json | 755 - .../aws-sdk/apis/kms-2014-11-01.min.json | 759 - .../apis/kms-2014-11-01.paginators.json | 32 - .../aws-sdk/apis/lambda-2014-11-11.min.json | 423 - .../apis/lambda-2014-11-11.paginators.json | 16 - .../aws-sdk/apis/lambda-2015-03-31.min.json | 872 - .../apis/lambda-2015-03-31.paginators.json | 16 - .../aws-sdk/apis/logs-2014-03-28.min.json | 722 - .../apis/logs-2014-03-28.paginators.json | 49 - .../apis/machinelearning-2014-12-12.min.json | 1107 - ...machinelearning-2014-12-12.paginators.json | 28 - .../machinelearning-2014-12-12.waiters2.json | 81 - ...placecommerceanalytics-2015-07-01.min.json | 84 - node_modules/aws-sdk/apis/metadata.json | 305 - .../meteringmarketplace-2016-01-14.min.json | 47 - .../apis/mobileanalytics-2014-06-05.min.json | 74 - .../apis/monitoring-2010-08-01.min.json | 501 - .../monitoring-2010-08-01.paginators.json | 24 - .../apis/monitoring-2010-08-01.waiters2.json | 18 - .../aws-sdk/apis/opsworks-2013-02-18.min.json | 2141 - .../apis/opsworks-2013-02-18.paginators.json | 55 - .../apis/opsworks-2013-02-18.waiters2.json | 295 - .../aws-sdk/apis/rds-2013-01-10.min.json | 1895 - .../apis/rds-2013-01-10.paginators.json | 97 - .../aws-sdk/apis/rds-2013-02-12.min.json | 2027 - .../apis/rds-2013-02-12.paginators.json | 110 - .../aws-sdk/apis/rds-2013-09-09.min.json | 2163 - .../apis/rds-2013-09-09.paginators.json | 110 - .../aws-sdk/apis/rds-2013-09-09.waiters2.json | 97 - .../aws-sdk/apis/rds-2014-10-31.min.json | 3508 - .../apis/rds-2014-10-31.paginators.json | 110 - .../aws-sdk/apis/rds-2014-10-31.waiters2.json | 90 - .../aws-sdk/apis/redshift-2012-12-01.min.json | 2306 - .../apis/redshift-2012-12-01.paginators.json | 94 - .../apis/redshift-2012-12-01.waiters2.json | 97 - .../aws-sdk/apis/route53-2013-04-01.min.json | 2370 - .../apis/route53-2013-04-01.paginators.json | 33 - .../apis/route53-2013-04-01.waiters2.json | 18 - .../apis/route53domains-2014-05-15.min.json | 747 - .../route53domains-2014-05-15.paginators.json | 17 - .../aws-sdk/apis/s3-2006-03-01.min.json | 3787 - .../apis/s3-2006-03-01.paginators.json | 66 - .../aws-sdk/apis/s3-2006-03-01.waiters2.json | 73 - .../aws-sdk/apis/sdb-2009-04-15.min.json | 336 - .../apis/sdb-2009-04-15.paginators.json | 15 - .../apis/servicecatalog-2015-12-10.min.json | 529 - .../aws-sdk/apis/snowball-2016-06-30.min.json | 376 - .../apis/snowball-2016-06-30.paginators.json | 16 - .../aws-sdk/apis/sns-2010-03-31.min.json | 622 - .../apis/sns-2010-03-31.paginators.json | 29 - .../aws-sdk/apis/sqs-2012-11-05.examples.json | 618 - .../aws-sdk/apis/sqs-2012-11-05.min.json | 583 - .../apis/sqs-2012-11-05.paginators.json | 7 - .../aws-sdk/apis/ssm-2014-11-06.min.json | 932 - .../apis/ssm-2014-11-06.paginators.json | 40 - .../apis/storagegateway-2013-06-30.min.json | 1485 - .../storagegateway-2013-06-30.paginators.json | 52 - .../apis/streams.dynamodb-2012-08-10.min.json | 238 - .../aws-sdk/apis/sts-2011-06-15.min.json | 249 - .../aws-sdk/apis/support-2013-04-15.min.json | 569 - .../apis/support-2013-04-15.paginators.json | 25 - .../aws-sdk/apis/swf-2012-01-25.min.json | 2217 - .../apis/swf-2012-01-25.paginators.json | 46 - .../aws-sdk/apis/waf-2015-08-24.min.json | 1282 - .../apis/workspaces-2015-04-08.min.json | 538 - .../workspaces-2015-04-08.paginators.json | 20 - node_modules/aws-sdk/bower.json | 9 - node_modules/aws-sdk/browser.js | 6 - node_modules/aws-sdk/clients/acm.js | 18 - node_modules/aws-sdk/clients/all.js | 79 - node_modules/aws-sdk/clients/apigateway.js | 19 - .../aws-sdk/clients/applicationautoscaling.js | 18 - node_modules/aws-sdk/clients/autoscaling.js | 18 - .../aws-sdk/clients/browser_default.js | 61 - .../aws-sdk/clients/cloudformation.js | 19 - node_modules/aws-sdk/clients/cloudfront.js | 20 - node_modules/aws-sdk/clients/cloudhsm.js | 17 - node_modules/aws-sdk/clients/cloudsearch.js | 27 - .../aws-sdk/clients/cloudsearchdomain.js | 18 - node_modules/aws-sdk/clients/cloudtrail.js | 18 - node_modules/aws-sdk/clients/cloudwatch.js | 19 - .../aws-sdk/clients/cloudwatchevents.js | 17 - .../aws-sdk/clients/cloudwatchlogs.js | 18 - node_modules/aws-sdk/clients/codecommit.js | 18 - node_modules/aws-sdk/clients/codedeploy.js | 19 - node_modules/aws-sdk/clients/codepipeline.js | 17 - .../aws-sdk/clients/cognitoidentity.js | 18 - .../clients/cognitoidentityserviceprovider.js | 17 - node_modules/aws-sdk/clients/cognitosync.js | 17 - node_modules/aws-sdk/clients/configservice.js | 18 - node_modules/aws-sdk/clients/datapipeline.js | 18 - node_modules/aws-sdk/clients/devicefarm.js | 18 - node_modules/aws-sdk/clients/directconnect.js | 18 - .../aws-sdk/clients/directoryservice.js | 17 - node_modules/aws-sdk/clients/discovery.js | 17 - node_modules/aws-sdk/clients/dms.js | 17 - node_modules/aws-sdk/clients/dynamodb.js | 30 - .../aws-sdk/clients/dynamodbstreams.js | 17 - node_modules/aws-sdk/clients/ec2.js | 20 - node_modules/aws-sdk/clients/ecr.js | 17 - node_modules/aws-sdk/clients/ecs.js | 19 - node_modules/aws-sdk/clients/efs.js | 17 - node_modules/aws-sdk/clients/elasticache.js | 19 - .../aws-sdk/clients/elasticbeanstalk.js | 18 - .../aws-sdk/clients/elastictranscoder.js | 19 - node_modules/aws-sdk/clients/elb.js | 19 - node_modules/aws-sdk/clients/elbv2.js | 18 - node_modules/aws-sdk/clients/emr.js | 19 - node_modules/aws-sdk/clients/es.js | 17 - node_modules/aws-sdk/clients/firehose.js | 17 - node_modules/aws-sdk/clients/gamelift.js | 17 - node_modules/aws-sdk/clients/glacier.js | 20 - node_modules/aws-sdk/clients/iam.js | 19 - node_modules/aws-sdk/clients/importexport.js | 18 - node_modules/aws-sdk/clients/inspector.js | 17 - node_modules/aws-sdk/clients/iot.js | 17 - node_modules/aws-sdk/clients/iotdata.js | 18 - node_modules/aws-sdk/clients/kinesis.js | 19 - .../aws-sdk/clients/kinesisanalytics.js | 17 - node_modules/aws-sdk/clients/kms.js | 18 - node_modules/aws-sdk/clients/lambda.js | 27 - .../aws-sdk/clients/machinelearning.js | 20 - .../clients/marketplacecommerceanalytics.js | 17 - .../aws-sdk/clients/marketplacemetering.js | 17 - .../aws-sdk/clients/mobileanalytics.js | 17 - node_modules/aws-sdk/clients/opsworks.js | 19 - node_modules/aws-sdk/clients/rds.js | 47 - node_modules/aws-sdk/clients/redshift.js | 19 - node_modules/aws-sdk/clients/route53.js | 20 - .../aws-sdk/clients/route53domains.js | 18 - node_modules/aws-sdk/clients/s3.js | 20 - .../aws-sdk/clients/servicecatalog.js | 17 - node_modules/aws-sdk/clients/ses.js | 19 - node_modules/aws-sdk/clients/simpledb.js | 18 - node_modules/aws-sdk/clients/snowball.js | 18 - node_modules/aws-sdk/clients/sns.js | 18 - node_modules/aws-sdk/clients/sqs.js | 19 - node_modules/aws-sdk/clients/ssm.js | 18 - .../aws-sdk/clients/storagegateway.js | 18 - node_modules/aws-sdk/clients/sts.js | 18 - node_modules/aws-sdk/clients/support.js | 18 - node_modules/aws-sdk/clients/swf.js | 19 - node_modules/aws-sdk/clients/waf.js | 17 - node_modules/aws-sdk/clients/workspaces.js | 18 - .../aws-sdk/dist-tools/browser-builder.js | 87 - .../aws-sdk/dist-tools/client-creator.js | 216 - .../aws-sdk/dist-tools/create-all-services.js | 6 - .../aws-sdk/dist-tools/service-collector.js | 168 - node_modules/aws-sdk/dist-tools/transform.js | 43 - node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt | 96 - node_modules/aws-sdk/dist/aws-sdk.js | 99711 ---------------- node_modules/aws-sdk/dist/aws-sdk.min.js | 40 - node_modules/aws-sdk/global.js | 2 - node_modules/aws-sdk/index.js | 2 - node_modules/aws-sdk/lib/api_loader.js | 12 - node_modules/aws-sdk/lib/aws.js | 7 - node_modules/aws-sdk/lib/browser.js | 14 - node_modules/aws-sdk/lib/browser_loader.js | 24 - node_modules/aws-sdk/lib/cloudfront/signer.js | 206 - node_modules/aws-sdk/lib/config.js | 511 - node_modules/aws-sdk/lib/core.js | 107 - node_modules/aws-sdk/lib/credentials.js | 150 - .../cognito_identity_credentials.js | 340 - .../credentials/credential_provider_chain.js | 135 - .../credentials/ec2_metadata_credentials.js | 81 - .../lib/credentials/ecs_credentials.js | 164 - .../credentials/environment_credentials.js | 91 - .../credentials/file_system_credentials.js | 68 - .../lib/credentials/saml_credentials.js | 89 - .../shared_ini_file_credentials.js | 204 - .../lib/credentials/temporary_credentials.js | 112 - .../credentials/web_identity_credentials.js | 96 - .../aws-sdk/lib/dynamodb/converter.js | 96 - .../aws-sdk/lib/dynamodb/document_client.js | 519 - node_modules/aws-sdk/lib/dynamodb/set.js | 53 - .../aws-sdk/lib/dynamodb/translator.js | 79 - node_modules/aws-sdk/lib/dynamodb/types.js | 40 - node_modules/aws-sdk/lib/event_listeners.js | 471 - node_modules/aws-sdk/lib/http.js | 208 - node_modules/aws-sdk/lib/http/node.js | 169 - node_modules/aws-sdk/lib/http/xhr.js | 122 - node_modules/aws-sdk/lib/json/builder.js | 56 - node_modules/aws-sdk/lib/json/parser.js | 64 - node_modules/aws-sdk/lib/metadata_service.js | 121 - node_modules/aws-sdk/lib/model/api.js | 63 - node_modules/aws-sdk/lib/model/collection.js | 20 - node_modules/aws-sdk/lib/model/operation.js | 53 - node_modules/aws-sdk/lib/model/paginator.js | 11 - .../aws-sdk/lib/model/resource_waiter.js | 30 - node_modules/aws-sdk/lib/model/shape.js | 346 - node_modules/aws-sdk/lib/node_loader.js | 67 - node_modules/aws-sdk/lib/param_validator.js | 254 - node_modules/aws-sdk/lib/protocol/json.js | 62 - node_modules/aws-sdk/lib/protocol/query.js | 97 - node_modules/aws-sdk/lib/protocol/rest.js | 130 - .../aws-sdk/lib/protocol/rest_json.js | 67 - node_modules/aws-sdk/lib/protocol/rest_xml.js | 87 - .../lib/query/query_param_serializer.js | 81 - node_modules/aws-sdk/lib/region_config.js | 69 - node_modules/aws-sdk/lib/region_config.json | 62 - node_modules/aws-sdk/lib/request.js | 756 - node_modules/aws-sdk/lib/resource_waiter.js | 178 - node_modules/aws-sdk/lib/response.js | 201 - node_modules/aws-sdk/lib/s3/managed_upload.js | 601 - .../aws-sdk/lib/sequential_executor.js | 231 - node_modules/aws-sdk/lib/service.js | 539 - .../aws-sdk/lib/services/apigateway.js | 34 - .../aws-sdk/lib/services/cloudfront.js | 12 - .../aws-sdk/lib/services/cloudsearchdomain.js | 120 - .../aws-sdk/lib/services/cognitoidentity.js | 15 - node_modules/aws-sdk/lib/services/dynamodb.js | 53 - node_modules/aws-sdk/lib/services/ec2.js | 62 - node_modules/aws-sdk/lib/services/glacier.js | 114 - node_modules/aws-sdk/lib/services/iotdata.js | 88 - .../aws-sdk/lib/services/machinelearning.js | 24 - node_modules/aws-sdk/lib/services/route53.js | 32 - node_modules/aws-sdk/lib/services/s3.js | 832 - node_modules/aws-sdk/lib/services/sqs.js | 131 - node_modules/aws-sdk/lib/services/sts.js | 47 - node_modules/aws-sdk/lib/services/swf.js | 10 - node_modules/aws-sdk/lib/signers/presign.js | 115 - .../aws-sdk/lib/signers/request_signer.js | 37 - node_modules/aws-sdk/lib/signers/s3.js | 169 - node_modules/aws-sdk/lib/signers/v2.js | 45 - node_modules/aws-sdk/lib/signers/v3.js | 74 - node_modules/aws-sdk/lib/signers/v3https.js | 22 - node_modules/aws-sdk/lib/signers/v4.js | 241 - node_modules/aws-sdk/lib/state_machine.js | 42 - node_modules/aws-sdk/lib/util.js | 846 - .../aws-sdk/lib/xml/browser_parser.js | 186 - node_modules/aws-sdk/lib/xml/builder.js | 86 - node_modules/aws-sdk/lib/xml/node_parser.js | 159 - .../aws-sdk/node_modules/buffer/.npmignore | 2 - .../aws-sdk/node_modules/buffer/.travis.yml | 8 - .../aws-sdk/node_modules/buffer/AUTHORS.md | 44 - .../aws-sdk/node_modules/buffer/LICENSE | 21 - .../aws-sdk/node_modules/buffer/README.md | 378 - .../buffer/bin/download-node-tests.js | 106 - .../aws-sdk/node_modules/buffer/bin/test.js | 41 - .../node_modules/buffer/bin/update-authors.sh | 21 - .../node_modules/buffer/bin/zuul-es5.yml | 14 - .../node_modules/buffer/bin/zuul-es6.yml | 6 - .../aws-sdk/node_modules/buffer/index.js | 1789 - .../buffer/node_modules/base64-js/LICENSE | 21 - .../buffer/node_modules/base64-js/README.md | 32 - .../node_modules/base64-js/base64js.min.js | 1 - .../buffer/node_modules/base64-js/index.js | 114 - .../node_modules/base64-js/package.json | 46 - .../node_modules/base64-js/test/big-data.js | 24 - .../node_modules/base64-js/test/convert.js | 48 - .../node_modules/base64-js/test/url-safe.js | 18 - .../buffer/node_modules/ieee754/.travis.yml | 7 - .../buffer/node_modules/ieee754/.zuul.yml | 20 - .../buffer/node_modules/ieee754/LICENSE | 28 - .../buffer/node_modules/ieee754/README.md | 47 - .../buffer/node_modules/ieee754/index.js | 84 - .../buffer/node_modules/ieee754/package.json | 71 - .../buffer/node_modules/ieee754/test/basic.js | 23 - .../buffer/node_modules/isarray/.npmignore | 1 - .../buffer/node_modules/isarray/.travis.yml | 4 - .../buffer/node_modules/isarray/Makefile | 6 - .../buffer/node_modules/isarray/README.md | 60 - .../node_modules/isarray/component.json | 19 - .../buffer/node_modules/isarray/index.js | 5 - .../buffer/node_modules/isarray/package.json | 54 - .../buffer/node_modules/isarray/test.js | 20 - .../aws-sdk/node_modules/buffer/package.json | 89 - .../node_modules/buffer/test/_polyfill.js | 150 - .../node_modules/buffer/test/base64.js | 47 - .../aws-sdk/node_modules/buffer/test/basic.js | 85 - .../node_modules/buffer/test/compare.js | 59 - .../node_modules/buffer/test/constructor.js | 193 - .../node_modules/buffer/test/from-string.js | 132 - .../node_modules/buffer/test/is-buffer.js | 22 - .../node_modules/buffer/test/methods.js | 127 - .../buffer/test/node/test-buffer-alloc.js | 1501 - .../test/node/test-buffer-arraybuffer.js | 112 - .../buffer/test/node/test-buffer-ascii.js | 28 - .../test/node/test-buffer-bad-overload.js | 18 - .../buffer/test/node/test-buffer-badhex.js | 46 - .../test/node/test-buffer-bytelength.js | 90 - .../test/node/test-buffer-compare-offset.js | 66 - .../buffer/test/node/test-buffer-concat.js | 40 - .../buffer/test/node/test-buffer-fill.js | 272 - .../buffer/test/node/test-buffer-includes.js | 305 - .../buffer/test/node/test-buffer-indexof.js | 523 - .../test/node/test-buffer-inheritance.js | 42 - .../buffer/test/node/test-buffer-inspect.js | 41 - .../buffer/test/node/test-buffer-iterator.js | 65 - .../test/node/test-buffer-safe-unsafe.js | 27 - .../buffer/test/node/test-buffer-slow.js | 63 - .../buffer/test/node/test-buffer-swap.js | 141 - .../test/node/test-buffer-zero-fill-cli.js | 35 - .../test/node/test-buffer-zero-fill-reset.js | 22 - .../buffer/test/node/test-buffer.js | 1534 - .../aws-sdk/node_modules/buffer/test/slice.js | 37 - .../node_modules/buffer/test/static.js | 17 - .../node_modules/buffer/test/to-string.js | 233 - .../aws-sdk/node_modules/buffer/test/write.js | 131 - .../buffer/test/write_infinity.js | 45 - .../node_modules/crypto-browserify/.npmignore | 1 - .../crypto-browserify/.travis.yml | 5 - .../node_modules/crypto-browserify/LICENSE | 24 - .../crypto-browserify/example/bundle.js | 637 - .../crypto-browserify/example/index.html | 12 - .../crypto-browserify/example/test.js | 4 - .../node_modules/crypto-browserify/helpers.js | 35 - .../node_modules/crypto-browserify/index.js | 97 - .../node_modules/crypto-browserify/md5.js | 163 - .../crypto-browserify/package.json | 49 - .../crypto-browserify/readme.markdown | 20 - .../node_modules/crypto-browserify/rng.js | 31 - .../node_modules/crypto-browserify/sha.js | 101 - .../node_modules/crypto-browserify/sha256.js | 79 - .../crypto-browserify/test/browser.js | 100 - .../crypto-browserify/test/node.js | 77 - .../crypto-browserify/test/package.json | 7 - .../crypto-browserify/test/simple.js | 36 - .../crypto-browserify/test/vectors/Readme.txt | 25 - .../test/vectors/byte-hashes.md5 | 196 - .../test/vectors/byte-hashes.sha1 | 196 - .../test/vectors/byte-hashes.sha256 | 196 - .../test/vectors/byte0000.dat | 0 .../test/vectors/byte0001.dat | 1 - .../test/vectors/byte0002.dat | 1 - .../test/vectors/byte0003.dat | 1 - .../test/vectors/byte0004.dat | 1 - .../test/vectors/byte0005.dat | 1 - .../test/vectors/byte0006.dat | 1 - .../test/vectors/byte0007.dat | 1 - .../test/vectors/byte0008.dat | 1 - .../test/vectors/byte0009.dat | 1 - .../test/vectors/byte0010.dat | Bin 10 -> 0 bytes .../test/vectors/byte0011.dat | Bin 11 -> 0 bytes .../test/vectors/byte0012.dat | 1 - .../test/vectors/byte0013.dat | 1 - .../test/vectors/byte0014.dat | 1 - .../test/vectors/byte0015.dat | Bin 15 -> 0 bytes .../test/vectors/byte0016.dat | Bin 16 -> 0 bytes .../test/vectors/byte0017.dat | Bin 17 -> 0 bytes .../test/vectors/byte0018.dat | Bin 18 -> 0 bytes .../test/vectors/byte0019.dat | Bin 19 -> 0 bytes .../test/vectors/byte0020.dat | Bin 20 -> 0 bytes .../test/vectors/byte0021.dat | Bin 21 -> 0 bytes .../test/vectors/byte0022.dat | Bin 22 -> 0 bytes .../test/vectors/byte0023.dat | Bin 23 -> 0 bytes .../test/vectors/byte0024.dat | Bin 24 -> 0 bytes .../test/vectors/byte0025.dat | Bin 25 -> 0 bytes .../test/vectors/byte0026.dat | Bin 26 -> 0 bytes .../test/vectors/byte0027.dat | Bin 27 -> 0 bytes .../test/vectors/byte0028.dat | Bin 28 -> 0 bytes .../test/vectors/byte0029.dat | Bin 29 -> 0 bytes .../test/vectors/byte0030.dat | Bin 30 -> 0 bytes .../test/vectors/byte0031.dat | Bin 31 -> 0 bytes .../test/vectors/byte0032.dat | Bin 32 -> 0 bytes .../test/vectors/byte0033.dat | Bin 33 -> 0 bytes .../test/vectors/byte0034.dat | Bin 34 -> 0 bytes .../test/vectors/byte0035.dat | Bin 35 -> 0 bytes .../test/vectors/byte0036.dat | Bin 36 -> 0 bytes .../test/vectors/byte0037.dat | Bin 37 -> 0 bytes .../test/vectors/byte0038.dat | Bin 38 -> 0 bytes .../test/vectors/byte0039.dat | Bin 39 -> 0 bytes .../test/vectors/byte0040.dat | Bin 40 -> 0 bytes .../test/vectors/byte0041.dat | Bin 41 -> 0 bytes .../test/vectors/byte0042.dat | Bin 42 -> 0 bytes .../test/vectors/byte0043.dat | Bin 43 -> 0 bytes .../test/vectors/byte0044.dat | Bin 44 -> 0 bytes .../test/vectors/byte0045.dat | Bin 45 -> 0 bytes .../test/vectors/byte0046.dat | Bin 46 -> 0 bytes .../test/vectors/byte0047.dat | Bin 47 -> 0 bytes .../test/vectors/byte0048.dat | Bin 48 -> 0 bytes .../test/vectors/byte0049.dat | Bin 49 -> 0 bytes .../test/vectors/byte0050.dat | Bin 50 -> 0 bytes .../test/vectors/byte0051.dat | Bin 51 -> 0 bytes .../test/vectors/byte0052.dat | Bin 52 -> 0 bytes .../test/vectors/byte0053.dat | Bin 53 -> 0 bytes .../test/vectors/byte0054.dat | Bin 54 -> 0 bytes .../test/vectors/byte0055.dat | Bin 55 -> 0 bytes .../test/vectors/byte0056.dat | Bin 56 -> 0 bytes .../test/vectors/byte0057.dat | Bin 57 -> 0 bytes .../test/vectors/byte0058.dat | Bin 58 -> 0 bytes .../test/vectors/byte0059.dat | Bin 59 -> 0 bytes .../test/vectors/byte0060.dat | Bin 60 -> 0 bytes .../test/vectors/byte0061.dat | Bin 61 -> 0 bytes .../test/vectors/byte0062.dat | Bin 62 -> 0 bytes .../test/vectors/byte0063.dat | Bin 63 -> 0 bytes .../test/vectors/byte0064.dat | Bin 64 -> 0 bytes .../test/vectors/byte0065.dat | Bin 65 -> 0 bytes .../test/vectors/byte0066.dat | Bin 66 -> 0 bytes .../test/vectors/byte0067.dat | Bin 67 -> 0 bytes .../test/vectors/byte0068.dat | Bin 68 -> 0 bytes .../test/vectors/byte0069.dat | Bin 69 -> 0 bytes .../test/vectors/byte0070.dat | Bin 70 -> 0 bytes .../test/vectors/byte0071.dat | Bin 71 -> 0 bytes .../test/vectors/byte0072.dat | Bin 72 -> 0 bytes .../test/vectors/byte0073.dat | Bin 73 -> 0 bytes .../test/vectors/byte0074.dat | Bin 74 -> 0 bytes .../test/vectors/byte0075.dat | Bin 75 -> 0 bytes .../test/vectors/byte0076.dat | Bin 76 -> 0 bytes .../test/vectors/byte0077.dat | Bin 77 -> 0 bytes .../test/vectors/byte0078.dat | Bin 78 -> 0 bytes .../test/vectors/byte0079.dat | Bin 79 -> 0 bytes .../test/vectors/byte0080.dat | Bin 80 -> 0 bytes .../test/vectors/byte0081.dat | Bin 81 -> 0 bytes .../test/vectors/byte0082.dat | Bin 82 -> 0 bytes .../test/vectors/byte0083.dat | Bin 83 -> 0 bytes .../test/vectors/byte0084.dat | Bin 84 -> 0 bytes .../test/vectors/byte0085.dat | Bin 85 -> 0 bytes .../test/vectors/byte0086.dat | Bin 86 -> 0 bytes .../test/vectors/byte0087.dat | Bin 87 -> 0 bytes .../test/vectors/byte0088.dat | Bin 88 -> 0 bytes .../test/vectors/byte0089.dat | Bin 89 -> 0 bytes .../test/vectors/byte0090.dat | Bin 90 -> 0 bytes .../test/vectors/byte0091.dat | Bin 91 -> 0 bytes .../test/vectors/byte0092.dat | Bin 92 -> 0 bytes .../test/vectors/byte0093.dat | Bin 93 -> 0 bytes .../test/vectors/byte0094.dat | Bin 94 -> 0 bytes .../test/vectors/byte0095.dat | Bin 95 -> 0 bytes .../test/vectors/byte0096.dat | Bin 96 -> 0 bytes .../test/vectors/byte0097.dat | Bin 97 -> 0 bytes .../test/vectors/byte0098.dat | Bin 98 -> 0 bytes .../test/vectors/byte0099.dat | Bin 99 -> 0 bytes .../test/vectors/byte0100.dat | Bin 100 -> 0 bytes .../test/vectors/byte0101.dat | Bin 101 -> 0 bytes .../test/vectors/byte0102.dat | Bin 102 -> 0 bytes .../test/vectors/byte0103.dat | Bin 103 -> 0 bytes .../test/vectors/byte0104.dat | Bin 104 -> 0 bytes .../test/vectors/byte0105.dat | Bin 105 -> 0 bytes .../test/vectors/byte0106.dat | Bin 106 -> 0 bytes .../test/vectors/byte0107.dat | Bin 107 -> 0 bytes .../test/vectors/byte0108.dat | Bin 108 -> 0 bytes .../test/vectors/byte0109.dat | Bin 109 -> 0 bytes .../test/vectors/byte0110.dat | Bin 110 -> 0 bytes .../test/vectors/byte0111.dat | Bin 111 -> 0 bytes .../test/vectors/byte0112.dat | Bin 112 -> 0 bytes .../test/vectors/byte0113.dat | Bin 113 -> 0 bytes .../test/vectors/byte0114.dat | Bin 114 -> 0 bytes .../test/vectors/byte0115.dat | Bin 115 -> 0 bytes .../test/vectors/byte0116.dat | Bin 116 -> 0 bytes .../test/vectors/byte0117.dat | Bin 117 -> 0 bytes .../test/vectors/byte0118.dat | Bin 118 -> 0 bytes .../test/vectors/byte0119.dat | Bin 119 -> 0 bytes .../test/vectors/byte0120.dat | Bin 120 -> 0 bytes .../test/vectors/byte0121.dat | Bin 121 -> 0 bytes .../test/vectors/byte0122.dat | Bin 122 -> 0 bytes .../test/vectors/byte0123.dat | Bin 123 -> 0 bytes .../test/vectors/byte0124.dat | Bin 124 -> 0 bytes .../test/vectors/byte0125.dat | Bin 125 -> 0 bytes .../test/vectors/byte0126.dat | Bin 126 -> 0 bytes .../test/vectors/byte0127.dat | Bin 127 -> 0 bytes .../test/vectors/byte0128.dat | Bin 128 -> 0 bytes .../test/vectors/byte0129.dat | Bin 129 -> 0 bytes .../test/vectors/byte0130.dat | Bin 257 -> 0 bytes .../test/vectors/byte0131.dat | Bin 385 -> 0 bytes .../test/vectors/byte0132.dat | Bin 513 -> 0 bytes .../test/vectors/byte0133.dat | Bin 641 -> 0 bytes .../test/vectors/byte0134.dat | Bin 769 -> 0 bytes .../test/vectors/byte0135.dat | Bin 897 -> 0 bytes .../test/vectors/byte0136.dat | Bin 1025 -> 0 bytes .../test/vectors/byte0137.dat | Bin 1153 -> 0 bytes .../test/vectors/byte0138.dat | Bin 1281 -> 0 bytes .../test/vectors/byte0139.dat | Bin 1409 -> 0 bytes .../test/vectors/byte0140.dat | Bin 1537 -> 0 bytes .../test/vectors/byte0141.dat | Bin 1665 -> 0 bytes .../test/vectors/byte0142.dat | Bin 1793 -> 0 bytes .../test/vectors/byte0143.dat | Bin 1921 -> 0 bytes .../test/vectors/byte0144.dat | Bin 2049 -> 0 bytes .../test/vectors/byte0145.dat | Bin 2177 -> 0 bytes .../test/vectors/byte0146.dat | Bin 2305 -> 0 bytes .../test/vectors/byte0147.dat | Bin 2433 -> 0 bytes .../test/vectors/byte0148.dat | Bin 2561 -> 0 bytes .../test/vectors/byte0149.dat | Bin 2689 -> 0 bytes .../test/vectors/byte0150.dat | Bin 2817 -> 0 bytes .../test/vectors/byte0151.dat | Bin 2945 -> 0 bytes .../test/vectors/byte0152.dat | Bin 3073 -> 0 bytes .../test/vectors/byte0153.dat | Bin 3201 -> 0 bytes .../test/vectors/byte0154.dat | Bin 3329 -> 0 bytes .../test/vectors/byte0155.dat | Bin 3457 -> 0 bytes .../test/vectors/byte0156.dat | Bin 3585 -> 0 bytes .../test/vectors/byte0157.dat | Bin 3713 -> 0 bytes .../test/vectors/byte0158.dat | Bin 3841 -> 0 bytes .../test/vectors/byte0159.dat | Bin 3969 -> 0 bytes .../test/vectors/byte0160.dat | Bin 4097 -> 0 bytes .../test/vectors/byte0161.dat | Bin 4225 -> 0 bytes .../test/vectors/byte0162.dat | Bin 4353 -> 0 bytes .../test/vectors/byte0163.dat | Bin 4481 -> 0 bytes .../test/vectors/byte0164.dat | Bin 4609 -> 0 bytes .../test/vectors/byte0165.dat | Bin 4737 -> 0 bytes .../test/vectors/byte0166.dat | Bin 4865 -> 0 bytes .../test/vectors/byte0167.dat | Bin 4993 -> 0 bytes .../test/vectors/byte0168.dat | Bin 5121 -> 0 bytes .../test/vectors/byte0169.dat | Bin 5249 -> 0 bytes .../test/vectors/byte0170.dat | Bin 5377 -> 0 bytes .../test/vectors/byte0171.dat | Bin 5505 -> 0 bytes .../test/vectors/byte0172.dat | Bin 5633 -> 0 bytes .../test/vectors/byte0173.dat | Bin 5761 -> 0 bytes .../test/vectors/byte0174.dat | Bin 5889 -> 0 bytes .../test/vectors/byte0175.dat | Bin 6017 -> 0 bytes .../test/vectors/byte0176.dat | Bin 6145 -> 0 bytes .../test/vectors/byte0177.dat | Bin 6273 -> 0 bytes .../test/vectors/byte0178.dat | Bin 6401 -> 0 bytes .../test/vectors/byte0179.dat | Bin 6529 -> 0 bytes .../test/vectors/byte0180.dat | Bin 6657 -> 0 bytes .../test/vectors/byte0181.dat | Bin 6785 -> 0 bytes .../test/vectors/byte0182.dat | Bin 6913 -> 0 bytes .../test/vectors/byte0183.dat | Bin 7041 -> 0 bytes .../test/vectors/byte0184.dat | Bin 7169 -> 0 bytes .../test/vectors/byte0185.dat | Bin 7297 -> 0 bytes .../test/vectors/byte0186.dat | Bin 7425 -> 0 bytes .../test/vectors/byte0187.dat | Bin 7553 -> 0 bytes .../test/vectors/byte0188.dat | Bin 7681 -> 0 bytes .../test/vectors/byte0189.dat | Bin 7809 -> 0 bytes .../test/vectors/byte0190.dat | Bin 7937 -> 0 bytes .../test/vectors/byte0191.dat | Bin 8065 -> 0 bytes .../test/vectors/byte0192.dat | Bin 8193 -> 0 bytes .../test/vectors/byte0193.dat | Bin 8321 -> 0 bytes .../test/vectors/byte0194.dat | Bin 8449 -> 0 bytes .../test/vectors/byte0195.dat | Bin 8577 -> 0 bytes .../aws-sdk/node_modules/jmespath/.eslintrc | 10 - .../aws-sdk/node_modules/jmespath/.npmignore | 1 - .../aws-sdk/node_modules/jmespath/.travis.yml | 6 - .../aws-sdk/node_modules/jmespath/BASELINE | 15 - .../node_modules/jmespath/Gruntfile.js | 36 - .../aws-sdk/node_modules/jmespath/LICENSE | 13 - .../aws-sdk/node_modules/jmespath/README.md | 57 - .../jmespath/artifacts/jmespath.min.js | 2 - .../aws-sdk/node_modules/jmespath/bower.json | 24 - .../aws-sdk/node_modules/jmespath/g.sh | 5 - .../aws-sdk/node_modules/jmespath/index.html | 93 - .../aws-sdk/node_modules/jmespath/james.html | 7 - .../aws-sdk/node_modules/jmespath/jmespath.js | 1667 - .../aws-sdk/node_modules/jmespath/jp.js | 23 - .../aws-sdk/node_modules/jmespath/l.js | 189 - .../node_modules/jmespath/package.json | 55 - .../aws-sdk/node_modules/jmespath/perf.js | 33 - .../node_modules/jmespath/reservedWords.json | 4 - .../node_modules/jmespath/test/compliance.js | 56 - .../jmespath/test/compliance/basic.json | 96 - .../jmespath/test/compliance/boolean.json | 257 - .../jmespath/test/compliance/current.json | 25 - .../jmespath/test/compliance/escape.json | 46 - .../jmespath/test/compliance/filters.json | 468 - .../jmespath/test/compliance/functions.json | 825 - .../jmespath/test/compliance/identifiers.json | 1377 - .../jmespath/test/compliance/indices.json | 346 - .../jmespath/test/compliance/literal.json | 190 - .../jmespath/test/compliance/multiselect.json | 393 - .../jmespath/test/compliance/pipe.json | 131 - .../jmespath/test/compliance/slice.json | 187 - .../jmespath/test/compliance/syntax.json | 616 - .../jmespath/test/compliance/unicode.json | 38 - .../jmespath/test/compliance/wildcard.json | 460 - .../node_modules/jmespath/test/jmespath.js | 217 - .../node_modules/querystring/.History.md.un~ | Bin 7960 -> 0 bytes .../node_modules/querystring/.Readme.md.un~ | Bin 3225 -> 0 bytes .../querystring/.package.json.un~ | Bin 5710 -> 0 bytes .../node_modules/querystring/.travis.yml | 4 - .../node_modules/querystring/History.md | 20 - .../node_modules/querystring/License.md | 19 - .../node_modules/querystring/Readme.md | 15 - .../node_modules/querystring/decode.js | 80 - .../node_modules/querystring/encode.js | 64 - .../aws-sdk/node_modules/querystring/index.js | 4 - .../node_modules/querystring/package.json | 81 - .../querystring/test/.index.js.un~ | Bin 975 -> 0 bytes .../querystring/test/common-index.js | 3 - .../node_modules/querystring/test/index.js | 210 - .../querystring/test/tap-index.js | 3 - node_modules/aws-sdk/node_modules/sax/LICENSE | 41 - .../aws-sdk/node_modules/sax/LICENSE-W3C.html | 188 - .../aws-sdk/node_modules/sax/README.md | 220 - .../aws-sdk/node_modules/sax/lib/sax.js | 1571 - .../aws-sdk/node_modules/sax/package.json | 40 - .../aws-sdk/node_modules/url/.npmignore | 1 - .../aws-sdk/node_modules/url/.travis.yml | 7 - .../aws-sdk/node_modules/url/.zuul.yml | 16 - node_modules/aws-sdk/node_modules/url/LICENSE | 21 - .../aws-sdk/node_modules/url/README.md | 108 - .../url/node_modules/punycode/LICENSE-MIT.txt | 20 - .../url/node_modules/punycode/README.md | 176 - .../url/node_modules/punycode/package.json | 61 - .../url/node_modules/punycode/punycode.js | 530 - .../aws-sdk/node_modules/url/package.json | 34 - node_modules/aws-sdk/node_modules/url/test.js | 1461 - node_modules/aws-sdk/node_modules/url/url.js | 707 - .../aws-sdk/node_modules/xml2js/LICENSE | 19 - .../aws-sdk/node_modules/xml2js/README.md | 406 - .../aws-sdk/node_modules/xml2js/lib/bom.js | 16 - .../node_modules/xml2js/lib/processors.js | 34 - .../aws-sdk/node_modules/xml2js/lib/xml2js.js | 537 - .../aws-sdk/node_modules/xml2js/package.json | 258 - .../node_modules/xmlbuilder/.npmignore | 4 - .../aws-sdk/node_modules/xmlbuilder/LICENSE | 21 - .../aws-sdk/node_modules/xmlbuilder/README.md | 84 - .../xmlbuilder/lib/XMLAttribute.js | 32 - .../node_modules/xmlbuilder/lib/XMLBuilder.js | 69 - .../node_modules/xmlbuilder/lib/XMLCData.js | 49 - .../node_modules/xmlbuilder/lib/XMLComment.js | 49 - .../xmlbuilder/lib/XMLDTDAttList.js | 72 - .../xmlbuilder/lib/XMLDTDElement.js | 52 - .../xmlbuilder/lib/XMLDTDEntity.js | 88 - .../xmlbuilder/lib/XMLDTDNotation.js | 60 - .../xmlbuilder/lib/XMLDeclaration.js | 73 - .../node_modules/xmlbuilder/lib/XMLDocType.js | 192 - .../node_modules/xmlbuilder/lib/XMLElement.js | 214 - .../node_modules/xmlbuilder/lib/XMLNode.js | 334 - .../lib/XMLProcessingInstruction.js | 51 - .../node_modules/xmlbuilder/lib/XMLRaw.js | 49 - .../xmlbuilder/lib/XMLStringifier.js | 167 - .../node_modules/xmlbuilder/lib/XMLText.js | 49 - .../node_modules/xmlbuilder/lib/index.js | 14 - .../node_modules/lodash/LICENSE.txt | 22 - .../xmlbuilder/node_modules/lodash/README.md | 116 - .../xmlbuilder/node_modules/lodash/array.js | 42 - .../node_modules/lodash/array/chunk.js | 47 - .../node_modules/lodash/array/compact.js | 30 - .../node_modules/lodash/array/difference.js | 40 - .../node_modules/lodash/array/drop.js | 39 - .../node_modules/lodash/array/dropRight.js | 40 - .../lodash/array/dropRightWhile.js | 63 - .../node_modules/lodash/array/dropWhile.js | 64 - .../node_modules/lodash/array/fill.js | 31 - .../node_modules/lodash/array/findIndex.js | 64 - .../lodash/array/findLastIndex.js | 62 - .../node_modules/lodash/array/first.js | 22 - .../node_modules/lodash/array/flatten.js | 32 - .../node_modules/lodash/array/flattenDeep.js | 21 - .../node_modules/lodash/array/head.js | 1 - .../node_modules/lodash/array/indexOf.js | 58 - .../node_modules/lodash/array/initial.js | 20 - .../node_modules/lodash/array/intersection.js | 67 - .../node_modules/lodash/array/last.js | 19 - .../node_modules/lodash/array/lastIndexOf.js | 60 - .../node_modules/lodash/array/object.js | 1 - .../node_modules/lodash/array/pull.js | 55 - .../node_modules/lodash/array/pullAt.js | 33 - .../node_modules/lodash/array/remove.js | 65 - .../node_modules/lodash/array/rest.js | 21 - .../node_modules/lodash/array/slice.js | 30 - .../node_modules/lodash/array/sortedIndex.js | 59 - .../lodash/array/sortedLastIndex.js | 31 - .../node_modules/lodash/array/tail.js | 1 - .../node_modules/lodash/array/take.js | 39 - .../node_modules/lodash/array/takeRight.js | 40 - .../lodash/array/takeRightWhile.js | 63 - .../node_modules/lodash/array/takeWhile.js | 64 - .../node_modules/lodash/array/union.js | 27 - .../node_modules/lodash/array/uniq.js | 74 - .../node_modules/lodash/array/unique.js | 1 - .../node_modules/lodash/array/unzip.js | 37 - .../node_modules/lodash/array/without.js | 28 - .../node_modules/lodash/array/xor.js | 36 - .../node_modules/lodash/array/zip.js | 28 - .../node_modules/lodash/array/zipObject.js | 39 - .../xmlbuilder/node_modules/lodash/chain.js | 15 - .../node_modules/lodash/chain/chain.js | 35 - .../node_modules/lodash/chain/commit.js | 1 - .../node_modules/lodash/chain/lodash.js | 122 - .../node_modules/lodash/chain/plant.js | 1 - .../node_modules/lodash/chain/reverse.js | 1 - .../node_modules/lodash/chain/run.js | 1 - .../node_modules/lodash/chain/tap.js | 29 - .../node_modules/lodash/chain/thru.js | 25 - .../node_modules/lodash/chain/toJSON.js | 1 - .../node_modules/lodash/chain/toString.js | 1 - .../node_modules/lodash/chain/value.js | 1 - .../node_modules/lodash/chain/valueOf.js | 1 - .../node_modules/lodash/chain/wrapperChain.js | 32 - .../lodash/chain/wrapperCommit.js | 32 - .../node_modules/lodash/chain/wrapperPlant.js | 45 - .../lodash/chain/wrapperReverse.js | 38 - .../lodash/chain/wrapperToString.js | 17 - .../node_modules/lodash/chain/wrapperValue.js | 20 - .../node_modules/lodash/collection.js | 44 - .../node_modules/lodash/collection/all.js | 1 - .../node_modules/lodash/collection/any.js | 1 - .../node_modules/lodash/collection/at.js | 34 - .../node_modules/lodash/collection/collect.js | 1 - .../lodash/collection/contains.js | 1 - .../node_modules/lodash/collection/countBy.js | 54 - .../node_modules/lodash/collection/detect.js | 1 - .../node_modules/lodash/collection/each.js | 1 - .../lodash/collection/eachRight.js | 1 - .../node_modules/lodash/collection/every.js | 62 - .../node_modules/lodash/collection/filter.js | 61 - .../node_modules/lodash/collection/find.js | 66 - .../lodash/collection/findLast.js | 29 - .../lodash/collection/findWhere.js | 37 - .../node_modules/lodash/collection/foldl.js | 1 - .../node_modules/lodash/collection/foldr.js | 1 - .../node_modules/lodash/collection/forEach.js | 42 - .../lodash/collection/forEachRight.js | 31 - .../node_modules/lodash/collection/groupBy.js | 59 - .../node_modules/lodash/collection/include.js | 1 - .../lodash/collection/includes.js | 61 - .../node_modules/lodash/collection/indexBy.js | 53 - .../node_modules/lodash/collection/inject.js | 1 - .../node_modules/lodash/collection/invoke.js | 30 - .../node_modules/lodash/collection/map.js | 68 - .../node_modules/lodash/collection/max.js | 1 - .../node_modules/lodash/collection/min.js | 1 - .../lodash/collection/partition.js | 66 - .../node_modules/lodash/collection/pluck.js | 31 - .../node_modules/lodash/collection/reduce.js | 48 - .../lodash/collection/reduceRight.js | 34 - .../node_modules/lodash/collection/reject.js | 61 - .../node_modules/lodash/collection/sample.js | 38 - .../node_modules/lodash/collection/select.js | 1 - .../node_modules/lodash/collection/shuffle.js | 36 - .../node_modules/lodash/collection/size.js | 29 - .../node_modules/lodash/collection/some.js | 63 - .../node_modules/lodash/collection/sortBy.js | 75 - .../lodash/collection/sortByAll.js | 41 - .../lodash/collection/sortByOrder.js | 48 - .../node_modules/lodash/collection/sum.js | 1 - .../node_modules/lodash/collection/where.js | 37 - .../xmlbuilder/node_modules/lodash/date.js | 3 - .../node_modules/lodash/date/now.js | 24 - .../node_modules/lodash/function.js | 26 - .../node_modules/lodash/function/after.js | 48 - .../node_modules/lodash/function/ary.js | 34 - .../node_modules/lodash/function/backflow.js | 1 - .../node_modules/lodash/function/before.js | 41 - .../node_modules/lodash/function/bind.js | 58 - .../node_modules/lodash/function/bindAll.js | 41 - .../node_modules/lodash/function/bindKey.js | 68 - .../node_modules/lodash/function/compose.js | 1 - .../node_modules/lodash/function/curry.js | 59 - .../lodash/function/curryRight.js | 56 - .../node_modules/lodash/function/debounce.js | 186 - .../node_modules/lodash/function/defer.js | 24 - .../node_modules/lodash/function/delay.js | 25 - .../node_modules/lodash/function/flow.js | 25 - .../node_modules/lodash/function/flowRight.js | 25 - .../node_modules/lodash/function/memoize.js | 82 - .../node_modules/lodash/function/negate.js | 32 - .../node_modules/lodash/function/once.js | 24 - .../node_modules/lodash/function/partial.js | 50 - .../lodash/function/partialRight.js | 49 - .../node_modules/lodash/function/rearg.js | 40 - .../node_modules/lodash/function/spread.js | 43 - .../node_modules/lodash/function/throttle.js | 72 - .../node_modules/lodash/function/wrap.js | 33 - .../xmlbuilder/node_modules/lodash/index.js | 11599 -- .../lodash/internal/LazyWrapper.js | 27 - .../lodash/internal/LodashWrapper.js | 21 - .../node_modules/lodash/internal/MapCache.js | 24 - .../node_modules/lodash/internal/SetCache.js | 29 - .../node_modules/lodash/internal/arrayCopy.js | 20 - .../node_modules/lodash/internal/arrayEach.js | 22 - .../lodash/internal/arrayEachRight.js | 21 - .../lodash/internal/arrayEvery.js | 23 - .../lodash/internal/arrayFilter.js | 25 - .../node_modules/lodash/internal/arrayMap.js | 21 - .../node_modules/lodash/internal/arrayMax.js | 25 - .../node_modules/lodash/internal/arrayMin.js | 25 - .../lodash/internal/arrayReduce.js | 26 - .../lodash/internal/arrayReduceRight.js | 24 - .../node_modules/lodash/internal/arraySome.js | 23 - .../lodash/internal/assignDefaults.js | 13 - .../lodash/internal/assignOwnDefaults.js | 26 - .../lodash/internal/baseAssign.js | 35 - .../node_modules/lodash/internal/baseAt.js | 32 - .../lodash/internal/baseBindAll.js | 26 - .../lodash/internal/baseCallback.js | 36 - .../node_modules/lodash/internal/baseClone.js | 130 - .../lodash/internal/baseCompareAscending.js | 25 - .../node_modules/lodash/internal/baseCopy.js | 25 - .../lodash/internal/baseCreate.js | 23 - .../node_modules/lodash/internal/baseDelay.js | 23 - .../lodash/internal/baseDifference.js | 52 - .../node_modules/lodash/internal/baseEach.js | 30 - .../lodash/internal/baseEachRight.js | 28 - .../node_modules/lodash/internal/baseEvery.js | 22 - .../node_modules/lodash/internal/baseFill.js | 31 - .../lodash/internal/baseFilter.js | 22 - .../node_modules/lodash/internal/baseFind.js | 25 - .../lodash/internal/baseFlatten.js | 45 - .../node_modules/lodash/internal/baseFor.js | 30 - .../node_modules/lodash/internal/baseForIn.js | 17 - .../lodash/internal/baseForOwn.js | 17 - .../lodash/internal/baseForOwnRight.js | 17 - .../lodash/internal/baseForRight.js | 27 - .../lodash/internal/baseFunctions.js | 27 - .../lodash/internal/baseIndexOf.js | 27 - .../lodash/internal/baseInvoke.js | 28 - .../lodash/internal/baseIsEqual.js | 34 - .../lodash/internal/baseIsEqualDeep.js | 101 - .../lodash/internal/baseIsFunction.js | 15 - .../lodash/internal/baseIsMatch.js | 58 - .../lodash/internal/baseLodash.js | 10 - .../node_modules/lodash/internal/baseMap.js | 20 - .../lodash/internal/baseMatches.js | 45 - .../lodash/internal/baseMatchesProperty.js | 24 - .../node_modules/lodash/internal/baseMerge.js | 48 - .../lodash/internal/baseMergeDeep.js | 67 - .../lodash/internal/baseProperty.js | 14 - .../lodash/internal/basePullAt.js | 35 - .../lodash/internal/baseRandom.js | 20 - .../lodash/internal/baseReduce.js | 24 - .../lodash/internal/baseSetData.js | 17 - .../node_modules/lodash/internal/baseSlice.js | 32 - .../node_modules/lodash/internal/baseSome.js | 23 - .../lodash/internal/baseSortBy.js | 21 - .../lodash/internal/baseSortByOrder.js | 35 - .../lodash/internal/baseToString.js | 16 - .../node_modules/lodash/internal/baseUniq.js | 57 - .../lodash/internal/baseValues.js | 22 - .../lodash/internal/baseWrapperValue.js | 37 - .../lodash/internal/binaryIndex.js | 40 - .../lodash/internal/binaryIndexBy.js | 54 - .../lodash/internal/bindCallback.js | 39 - .../lodash/internal/bufferClone.js | 55 - .../lodash/internal/cacheIndexOf.js | 19 - .../node_modules/lodash/internal/cachePush.js | 20 - .../lodash/internal/charAtCallback.js | 12 - .../lodash/internal/charsLeftIndex.js | 18 - .../lodash/internal/charsRightIndex.js | 17 - .../lodash/internal/compareAscending.js | 16 - .../lodash/internal/compareMultiple.js | 43 - .../lodash/internal/composeArgs.js | 34 - .../lodash/internal/composeArgsRight.js | 36 - .../lodash/internal/createAggregator.js | 37 - .../lodash/internal/createAssigner.js | 47 - .../lodash/internal/createBindWrapper.js | 22 - .../lodash/internal/createCache.js | 22 - .../lodash/internal/createComposer.js | 39 - .../lodash/internal/createCompounder.js | 26 - .../lodash/internal/createCtorWrapper.js | 23 - .../lodash/internal/createExtremum.js | 38 - .../lodash/internal/createHybridWrapper.js | 105 - .../node_modules/lodash/internal/createPad.js | 32 - .../lodash/internal/createPartialWrapper.js | 43 - .../lodash/internal/createWrapper.js | 86 - .../lodash/internal/deburrLetter.js | 33 - .../lodash/internal/equalArrays.js | 54 - .../lodash/internal/equalByTag.js | 49 - .../lodash/internal/equalObjects.js | 74 - .../lodash/internal/escapeHtmlChar.js | 22 - .../lodash/internal/escapeStringChar.js | 23 - .../lodash/internal/extremumBy.js | 35 - .../node_modules/lodash/internal/getData.js | 15 - .../node_modules/lodash/internal/getView.js | 33 - .../lodash/internal/indexOfNaN.js | 24 - .../lodash/internal/initCloneArray.js | 26 - .../lodash/internal/initCloneByTag.js | 64 - .../lodash/internal/initCloneObject.js | 16 - .../lodash/internal/isBindable.js | 38 - .../node_modules/lodash/internal/isIndex.js | 22 - .../lodash/internal/isIterateeCall.js | 32 - .../node_modules/lodash/internal/isLength.js | 23 - .../lodash/internal/isObjectLike.js | 12 - .../node_modules/lodash/internal/isSpace.js | 14 - .../lodash/internal/isStrictComparable.js | 15 - .../node_modules/lodash/internal/lazyClone.js | 27 - .../lodash/internal/lazyReverse.js | 23 - .../node_modules/lodash/internal/lazyValue.js | 81 - .../node_modules/lodash/internal/mapDelete.js | 14 - .../node_modules/lodash/internal/mapGet.js | 14 - .../node_modules/lodash/internal/mapHas.js | 20 - .../node_modules/lodash/internal/mapSet.js | 18 - .../node_modules/lodash/internal/mergeData.js | 99 - .../node_modules/lodash/internal/metaMap.js | 9 - .../lodash/internal/pickByArray.js | 28 - .../lodash/internal/pickByCallback.js | 22 - .../node_modules/lodash/internal/reEscape.js | 4 - .../lodash/internal/reEvaluate.js | 4 - .../lodash/internal/reInterpolate.js | 4 - .../node_modules/lodash/internal/reorder.js | 29 - .../lodash/internal/replaceHolders.js | 28 - .../node_modules/lodash/internal/setData.js | 41 - .../lodash/internal/shimIsPlainObject.js | 51 - .../node_modules/lodash/internal/shimKeys.js | 42 - .../lodash/internal/sortedUniq.js | 29 - .../lodash/internal/toIterable.js | 22 - .../node_modules/lodash/internal/toObject.js | 14 - .../lodash/internal/trimmedLeftIndex.js | 19 - .../lodash/internal/trimmedRightIndex.js | 18 - .../lodash/internal/unescapeHtmlChar.js | 22 - .../lodash/internal/wrapperClone.js | 18 - .../xmlbuilder/node_modules/lodash/lang.js | 27 - .../node_modules/lodash/lang/clone.js | 69 - .../node_modules/lodash/lang/cloneDeep.js | 54 - .../node_modules/lodash/lang/isArguments.js | 38 - .../node_modules/lodash/lang/isArray.js | 41 - .../node_modules/lodash/lang/isBoolean.js | 36 - .../node_modules/lodash/lang/isDate.js | 36 - .../node_modules/lodash/lang/isElement.js | 42 - .../node_modules/lodash/lang/isEmpty.js | 48 - .../node_modules/lodash/lang/isEqual.js | 57 - .../node_modules/lodash/lang/isError.js | 37 - .../node_modules/lodash/lang/isFinite.js | 40 - .../node_modules/lodash/lang/isFunction.js | 43 - .../node_modules/lodash/lang/isMatch.js | 74 - .../node_modules/lodash/lang/isNaN.js | 35 - .../node_modules/lodash/lang/isNative.js | 55 - .../node_modules/lodash/lang/isNull.js | 21 - .../node_modules/lodash/lang/isNumber.js | 42 - .../node_modules/lodash/lang/isObject.js | 30 - .../node_modules/lodash/lang/isPlainObject.js | 62 - .../node_modules/lodash/lang/isRegExp.js | 36 - .../node_modules/lodash/lang/isString.js | 36 - .../node_modules/lodash/lang/isTypedArray.js | 75 - .../node_modules/lodash/lang/isUndefined.js | 21 - .../node_modules/lodash/lang/toArray.js | 31 - .../node_modules/lodash/lang/toPlainObject.js | 31 - .../xmlbuilder/node_modules/lodash/math.js | 6 - .../node_modules/lodash/math/add.js | 19 - .../node_modules/lodash/math/max.js | 53 - .../node_modules/lodash/math/min.js | 53 - .../node_modules/lodash/math/sum.js | 33 - .../xmlbuilder/node_modules/lodash/number.js | 4 - .../node_modules/lodash/number/inRange.js | 43 - .../node_modules/lodash/number/random.js | 70 - .../xmlbuilder/node_modules/lodash/object.js | 27 - .../node_modules/lodash/object/assign.js | 35 - .../node_modules/lodash/object/create.js | 48 - .../node_modules/lodash/object/defaults.js | 30 - .../node_modules/lodash/object/extend.js | 1 - .../node_modules/lodash/object/findKey.js | 58 - .../node_modules/lodash/object/findLastKey.js | 58 - .../node_modules/lodash/object/forIn.js | 39 - .../node_modules/lodash/object/forInRight.js | 35 - .../node_modules/lodash/object/forOwn.js | 38 - .../node_modules/lodash/object/forOwnRight.js | 35 - .../node_modules/lodash/object/functions.js | 23 - .../node_modules/lodash/object/has.js | 28 - .../node_modules/lodash/object/invert.js | 60 - .../node_modules/lodash/object/keys.js | 48 - .../node_modules/lodash/object/keysIn.js | 65 - .../node_modules/lodash/object/mapValues.js | 55 - .../node_modules/lodash/object/merge.js | 54 - .../node_modules/lodash/object/methods.js | 1 - .../node_modules/lodash/object/omit.js | 51 - .../node_modules/lodash/object/pairs.js | 30 - .../node_modules/lodash/object/pick.js | 41 - .../node_modules/lodash/object/result.js | 41 - .../node_modules/lodash/object/transform.js | 61 - .../node_modules/lodash/object/values.js | 33 - .../node_modules/lodash/object/valuesIn.js | 31 - .../node_modules/lodash/package.json | 62 - .../xmlbuilder/node_modules/lodash/string.js | 25 - .../node_modules/lodash/string/camelCase.js | 28 - .../node_modules/lodash/string/capitalize.js | 21 - .../node_modules/lodash/string/deburr.js | 27 - .../node_modules/lodash/string/endsWith.js | 40 - .../node_modules/lodash/string/escape.js | 48 - .../lodash/string/escapeRegExp.js | 32 - .../node_modules/lodash/string/kebabCase.js | 28 - .../node_modules/lodash/string/pad.js | 50 - .../node_modules/lodash/string/padLeft.js | 32 - .../node_modules/lodash/string/padRight.js | 32 - .../node_modules/lodash/string/parseInt.js | 67 - .../node_modules/lodash/string/repeat.js | 49 - .../node_modules/lodash/string/snakeCase.js | 27 - .../node_modules/lodash/string/startCase.js | 28 - .../node_modules/lodash/string/startsWith.js | 36 - .../node_modules/lodash/string/template.js | 229 - .../lodash/string/templateSettings.js | 67 - .../node_modules/lodash/string/trim.js | 42 - .../node_modules/lodash/string/trimLeft.js | 36 - .../node_modules/lodash/string/trimRight.js | 36 - .../node_modules/lodash/string/trunc.js | 105 - .../node_modules/lodash/string/unescape.js | 33 - .../node_modules/lodash/string/words.js | 38 - .../xmlbuilder/node_modules/lodash/support.js | 75 - .../xmlbuilder/node_modules/lodash/utility.js | 16 - .../node_modules/lodash/utility/attempt.js | 38 - .../node_modules/lodash/utility/callback.js | 53 - .../node_modules/lodash/utility/constant.js | 23 - .../node_modules/lodash/utility/identity.js | 20 - .../node_modules/lodash/utility/iteratee.js | 1 - .../node_modules/lodash/utility/matches.js | 33 - .../lodash/utility/matchesProperty.js | 33 - .../node_modules/lodash/utility/mixin.js | 91 - .../node_modules/lodash/utility/noop.js | 19 - .../node_modules/lodash/utility/property.js | 30 - .../node_modules/lodash/utility/propertyOf.js | 26 - .../node_modules/lodash/utility/range.js | 68 - .../node_modules/lodash/utility/times.js | 59 - .../node_modules/lodash/utility/uniqueId.js | 27 - .../node_modules/xmlbuilder/package.json | 45 - node_modules/aws-sdk/package.json | 143 - .../aws-sdk/scripts/changelog/README.md | 97 - .../aws-sdk/scripts/changelog/add-change.js | 239 - .../scripts/changelog/change-creator.js | 213 - .../scripts/changelog/create-changelog | 11 - .../aws-sdk/scripts/changelog/release | 35 - .../aws-sdk/scripts/changelog/util.js | 195 - node_modules/aws-sdk/scripts/console | 119 - .../aws-sdk/scripts/lib/translator.js | 153 - node_modules/aws-sdk/scripts/translate-api | 19 - node_modules/aws-sdk/testem.json | 3 - node_modules/uuid/.npmignore | 2 - node_modules/uuid/.travis.yml | 5 - node_modules/uuid/LICENSE.md | 2 - node_modules/uuid/README.md | 205 - node_modules/uuid/benchmark/README.md | 53 - node_modules/uuid/benchmark/bench.gnu | 174 - node_modules/uuid/benchmark/bench.sh | 34 - .../uuid/benchmark/benchmark-native.c | 34 - node_modules/uuid/benchmark/benchmark.js | 84 - node_modules/uuid/benchmark/package.json | 9 - node_modules/uuid/misc/compare.js | 62 - node_modules/uuid/misc/perf.js | 102 - node_modules/uuid/package.json | 59 - node_modules/uuid/rng-browser.js | 32 - node_modules/uuid/rng.js | 4 - node_modules/uuid/test/mocha.opts | 1 - node_modules/uuid/test/test.js | 105 - node_modules/uuid/uuid.js | 183 - 1155 files changed, 282454 deletions(-) delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/jsLibraryMappings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/serverless-crud.iml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/watcherTasks.xml delete mode 100644 .idea/workspace.xml delete mode 100644 node_modules/aws-sdk/.changes/2.4.10.json delete mode 100644 node_modules/aws-sdk/.changes/2.4.11.json delete mode 100644 node_modules/aws-sdk/.changes/2.4.12.json delete mode 100644 node_modules/aws-sdk/.changes/2.4.13.json delete mode 100644 node_modules/aws-sdk/.changes/2.4.14.json delete mode 100644 node_modules/aws-sdk/.changes/2.4.8.json delete mode 100644 node_modules/aws-sdk/.changes/2.4.9.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.0.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.1.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.2.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.3.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.4.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.5.json delete mode 100644 node_modules/aws-sdk/.changes/2.5.6.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.0.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.1.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.2.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.3.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.4.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.5.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.6.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.7.json delete mode 100644 node_modules/aws-sdk/.changes/2.6.8.json delete mode 100644 node_modules/aws-sdk/.jshintrc delete mode 100644 node_modules/aws-sdk/.npmignore delete mode 100644 node_modules/aws-sdk/.tesselinclude delete mode 100644 node_modules/aws-sdk/CHANGELOG.md delete mode 100644 node_modules/aws-sdk/CONTRIBUTING.md delete mode 100644 node_modules/aws-sdk/LICENSE.txt delete mode 100644 node_modules/aws-sdk/NOTICE.txt delete mode 100644 node_modules/aws-sdk/README.md delete mode 100644 node_modules/aws-sdk/UPGRADING.md delete mode 100644 node_modules/aws-sdk/apis/acm-2015-12-08.min.json delete mode 100644 node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json delete mode 100644 node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json delete mode 100644 node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json delete mode 100644 node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json delete mode 100644 node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json delete mode 100644 node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json delete mode 100644 node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json delete mode 100644 node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json delete mode 100644 node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json delete mode 100644 node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json delete mode 100644 node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json delete mode 100644 node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json delete mode 100644 node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json delete mode 100644 node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json delete mode 100644 node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json delete mode 100644 node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json delete mode 100644 node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json delete mode 100644 node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json delete mode 100644 node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json delete mode 100644 node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json delete mode 100644 node_modules/aws-sdk/apis/config-2014-11-12.min.json delete mode 100644 node_modules/aws-sdk/apis/config-2014-11-12.paginators.json delete mode 100644 node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json delete mode 100644 node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json delete mode 100644 node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json delete mode 100644 node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json delete mode 100644 node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json delete mode 100644 node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json delete mode 100644 node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json delete mode 100644 node_modules/aws-sdk/apis/discovery-2015-11-01.min.json delete mode 100644 node_modules/aws-sdk/apis/dms-2016-01-01.min.json delete mode 100644 node_modules/aws-sdk/apis/ds-2015-04-16.min.json delete mode 100644 node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json delete mode 100644 node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json delete mode 100644 node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json delete mode 100644 node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json delete mode 100644 node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json delete mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.min.json delete mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json delete mode 100644 node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json delete mode 100644 node_modules/aws-sdk/apis/ecr-2015-09-21.min.json delete mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json delete mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.min.json delete mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json delete mode 100644 node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json delete mode 100644 node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json delete mode 100644 node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json delete mode 100644 node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json delete mode 100644 node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json delete mode 100644 node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json delete mode 100644 node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json delete mode 100644 node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json delete mode 100644 node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json delete mode 100644 node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.examples.json delete mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.min.json delete mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/es-2015-01-01.min.json delete mode 100644 node_modules/aws-sdk/apis/events-2015-10-07.min.json delete mode 100644 node_modules/aws-sdk/apis/firehose-2015-08-04.min.json delete mode 100644 node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json delete mode 100644 node_modules/aws-sdk/apis/glacier-2012-06-01.min.json delete mode 100644 node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/iam-2010-05-08.min.json delete mode 100644 node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json delete mode 100644 node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/importexport-2010-06-01.min.json delete mode 100644 node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/inspector-2016-02-16.min.json delete mode 100644 node_modules/aws-sdk/apis/iot-2015-05-28.min.json delete mode 100644 node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json delete mode 100644 node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json delete mode 100644 node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json delete mode 100644 node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json delete mode 100644 node_modules/aws-sdk/apis/kms-2014-11-01.min.json delete mode 100644 node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/lambda-2014-11-11.min.json delete mode 100644 node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json delete mode 100644 node_modules/aws-sdk/apis/lambda-2015-03-31.min.json delete mode 100644 node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json delete mode 100644 node_modules/aws-sdk/apis/logs-2014-03-28.min.json delete mode 100644 node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json delete mode 100644 node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json delete mode 100644 node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json delete mode 100644 node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json delete mode 100644 node_modules/aws-sdk/apis/metadata.json delete mode 100644 node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json delete mode 100644 node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json delete mode 100644 node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json delete mode 100644 node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json delete mode 100644 node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json delete mode 100644 node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-01-10.min.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-02-12.min.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-09-09.min.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json delete mode 100644 node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/rds-2014-10-31.min.json delete mode 100644 node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json delete mode 100644 node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/redshift-2012-12-01.min.json delete mode 100644 node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/route53-2013-04-01.min.json delete mode 100644 node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json delete mode 100644 node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json delete mode 100644 node_modules/aws-sdk/apis/s3-2006-03-01.min.json delete mode 100644 node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json delete mode 100644 node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json delete mode 100644 node_modules/aws-sdk/apis/sdb-2009-04-15.min.json delete mode 100644 node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json delete mode 100644 node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json delete mode 100644 node_modules/aws-sdk/apis/snowball-2016-06-30.min.json delete mode 100644 node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json delete mode 100644 node_modules/aws-sdk/apis/sns-2010-03-31.min.json delete mode 100644 node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json delete mode 100644 node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json delete mode 100644 node_modules/aws-sdk/apis/sqs-2012-11-05.min.json delete mode 100644 node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json delete mode 100644 node_modules/aws-sdk/apis/ssm-2014-11-06.min.json delete mode 100644 node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json delete mode 100644 node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json delete mode 100644 node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json delete mode 100644 node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json delete mode 100644 node_modules/aws-sdk/apis/sts-2011-06-15.min.json delete mode 100644 node_modules/aws-sdk/apis/support-2013-04-15.min.json delete mode 100644 node_modules/aws-sdk/apis/support-2013-04-15.paginators.json delete mode 100644 node_modules/aws-sdk/apis/swf-2012-01-25.min.json delete mode 100644 node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json delete mode 100644 node_modules/aws-sdk/apis/waf-2015-08-24.min.json delete mode 100644 node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json delete mode 100644 node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json delete mode 100644 node_modules/aws-sdk/bower.json delete mode 100644 node_modules/aws-sdk/browser.js delete mode 100644 node_modules/aws-sdk/clients/acm.js delete mode 100644 node_modules/aws-sdk/clients/all.js delete mode 100644 node_modules/aws-sdk/clients/apigateway.js delete mode 100644 node_modules/aws-sdk/clients/applicationautoscaling.js delete mode 100644 node_modules/aws-sdk/clients/autoscaling.js delete mode 100644 node_modules/aws-sdk/clients/browser_default.js delete mode 100644 node_modules/aws-sdk/clients/cloudformation.js delete mode 100644 node_modules/aws-sdk/clients/cloudfront.js delete mode 100644 node_modules/aws-sdk/clients/cloudhsm.js delete mode 100644 node_modules/aws-sdk/clients/cloudsearch.js delete mode 100644 node_modules/aws-sdk/clients/cloudsearchdomain.js delete mode 100644 node_modules/aws-sdk/clients/cloudtrail.js delete mode 100644 node_modules/aws-sdk/clients/cloudwatch.js delete mode 100644 node_modules/aws-sdk/clients/cloudwatchevents.js delete mode 100644 node_modules/aws-sdk/clients/cloudwatchlogs.js delete mode 100644 node_modules/aws-sdk/clients/codecommit.js delete mode 100644 node_modules/aws-sdk/clients/codedeploy.js delete mode 100644 node_modules/aws-sdk/clients/codepipeline.js delete mode 100644 node_modules/aws-sdk/clients/cognitoidentity.js delete mode 100644 node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js delete mode 100644 node_modules/aws-sdk/clients/cognitosync.js delete mode 100644 node_modules/aws-sdk/clients/configservice.js delete mode 100644 node_modules/aws-sdk/clients/datapipeline.js delete mode 100644 node_modules/aws-sdk/clients/devicefarm.js delete mode 100644 node_modules/aws-sdk/clients/directconnect.js delete mode 100644 node_modules/aws-sdk/clients/directoryservice.js delete mode 100644 node_modules/aws-sdk/clients/discovery.js delete mode 100644 node_modules/aws-sdk/clients/dms.js delete mode 100644 node_modules/aws-sdk/clients/dynamodb.js delete mode 100644 node_modules/aws-sdk/clients/dynamodbstreams.js delete mode 100644 node_modules/aws-sdk/clients/ec2.js delete mode 100644 node_modules/aws-sdk/clients/ecr.js delete mode 100644 node_modules/aws-sdk/clients/ecs.js delete mode 100644 node_modules/aws-sdk/clients/efs.js delete mode 100644 node_modules/aws-sdk/clients/elasticache.js delete mode 100644 node_modules/aws-sdk/clients/elasticbeanstalk.js delete mode 100644 node_modules/aws-sdk/clients/elastictranscoder.js delete mode 100644 node_modules/aws-sdk/clients/elb.js delete mode 100644 node_modules/aws-sdk/clients/elbv2.js delete mode 100644 node_modules/aws-sdk/clients/emr.js delete mode 100644 node_modules/aws-sdk/clients/es.js delete mode 100644 node_modules/aws-sdk/clients/firehose.js delete mode 100644 node_modules/aws-sdk/clients/gamelift.js delete mode 100644 node_modules/aws-sdk/clients/glacier.js delete mode 100644 node_modules/aws-sdk/clients/iam.js delete mode 100644 node_modules/aws-sdk/clients/importexport.js delete mode 100644 node_modules/aws-sdk/clients/inspector.js delete mode 100644 node_modules/aws-sdk/clients/iot.js delete mode 100644 node_modules/aws-sdk/clients/iotdata.js delete mode 100644 node_modules/aws-sdk/clients/kinesis.js delete mode 100644 node_modules/aws-sdk/clients/kinesisanalytics.js delete mode 100644 node_modules/aws-sdk/clients/kms.js delete mode 100644 node_modules/aws-sdk/clients/lambda.js delete mode 100644 node_modules/aws-sdk/clients/machinelearning.js delete mode 100644 node_modules/aws-sdk/clients/marketplacecommerceanalytics.js delete mode 100644 node_modules/aws-sdk/clients/marketplacemetering.js delete mode 100644 node_modules/aws-sdk/clients/mobileanalytics.js delete mode 100644 node_modules/aws-sdk/clients/opsworks.js delete mode 100644 node_modules/aws-sdk/clients/rds.js delete mode 100644 node_modules/aws-sdk/clients/redshift.js delete mode 100644 node_modules/aws-sdk/clients/route53.js delete mode 100644 node_modules/aws-sdk/clients/route53domains.js delete mode 100644 node_modules/aws-sdk/clients/s3.js delete mode 100644 node_modules/aws-sdk/clients/servicecatalog.js delete mode 100644 node_modules/aws-sdk/clients/ses.js delete mode 100644 node_modules/aws-sdk/clients/simpledb.js delete mode 100644 node_modules/aws-sdk/clients/snowball.js delete mode 100644 node_modules/aws-sdk/clients/sns.js delete mode 100644 node_modules/aws-sdk/clients/sqs.js delete mode 100644 node_modules/aws-sdk/clients/ssm.js delete mode 100644 node_modules/aws-sdk/clients/storagegateway.js delete mode 100644 node_modules/aws-sdk/clients/sts.js delete mode 100644 node_modules/aws-sdk/clients/support.js delete mode 100644 node_modules/aws-sdk/clients/swf.js delete mode 100644 node_modules/aws-sdk/clients/waf.js delete mode 100644 node_modules/aws-sdk/clients/workspaces.js delete mode 100755 node_modules/aws-sdk/dist-tools/browser-builder.js delete mode 100644 node_modules/aws-sdk/dist-tools/client-creator.js delete mode 100644 node_modules/aws-sdk/dist-tools/create-all-services.js delete mode 100644 node_modules/aws-sdk/dist-tools/service-collector.js delete mode 100644 node_modules/aws-sdk/dist-tools/transform.js delete mode 100644 node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt delete mode 100644 node_modules/aws-sdk/dist/aws-sdk.js delete mode 100644 node_modules/aws-sdk/dist/aws-sdk.min.js delete mode 100644 node_modules/aws-sdk/global.js delete mode 100644 node_modules/aws-sdk/index.js delete mode 100644 node_modules/aws-sdk/lib/api_loader.js delete mode 100644 node_modules/aws-sdk/lib/aws.js delete mode 100644 node_modules/aws-sdk/lib/browser.js delete mode 100644 node_modules/aws-sdk/lib/browser_loader.js delete mode 100644 node_modules/aws-sdk/lib/cloudfront/signer.js delete mode 100644 node_modules/aws-sdk/lib/config.js delete mode 100644 node_modules/aws-sdk/lib/core.js delete mode 100644 node_modules/aws-sdk/lib/credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/credential_provider_chain.js delete mode 100644 node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/ecs_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/environment_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/file_system_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/saml_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/temporary_credentials.js delete mode 100644 node_modules/aws-sdk/lib/credentials/web_identity_credentials.js delete mode 100644 node_modules/aws-sdk/lib/dynamodb/converter.js delete mode 100644 node_modules/aws-sdk/lib/dynamodb/document_client.js delete mode 100644 node_modules/aws-sdk/lib/dynamodb/set.js delete mode 100644 node_modules/aws-sdk/lib/dynamodb/translator.js delete mode 100644 node_modules/aws-sdk/lib/dynamodb/types.js delete mode 100644 node_modules/aws-sdk/lib/event_listeners.js delete mode 100644 node_modules/aws-sdk/lib/http.js delete mode 100644 node_modules/aws-sdk/lib/http/node.js delete mode 100644 node_modules/aws-sdk/lib/http/xhr.js delete mode 100644 node_modules/aws-sdk/lib/json/builder.js delete mode 100644 node_modules/aws-sdk/lib/json/parser.js delete mode 100644 node_modules/aws-sdk/lib/metadata_service.js delete mode 100644 node_modules/aws-sdk/lib/model/api.js delete mode 100644 node_modules/aws-sdk/lib/model/collection.js delete mode 100644 node_modules/aws-sdk/lib/model/operation.js delete mode 100644 node_modules/aws-sdk/lib/model/paginator.js delete mode 100644 node_modules/aws-sdk/lib/model/resource_waiter.js delete mode 100644 node_modules/aws-sdk/lib/model/shape.js delete mode 100644 node_modules/aws-sdk/lib/node_loader.js delete mode 100644 node_modules/aws-sdk/lib/param_validator.js delete mode 100644 node_modules/aws-sdk/lib/protocol/json.js delete mode 100644 node_modules/aws-sdk/lib/protocol/query.js delete mode 100644 node_modules/aws-sdk/lib/protocol/rest.js delete mode 100644 node_modules/aws-sdk/lib/protocol/rest_json.js delete mode 100644 node_modules/aws-sdk/lib/protocol/rest_xml.js delete mode 100644 node_modules/aws-sdk/lib/query/query_param_serializer.js delete mode 100644 node_modules/aws-sdk/lib/region_config.js delete mode 100644 node_modules/aws-sdk/lib/region_config.json delete mode 100644 node_modules/aws-sdk/lib/request.js delete mode 100644 node_modules/aws-sdk/lib/resource_waiter.js delete mode 100644 node_modules/aws-sdk/lib/response.js delete mode 100644 node_modules/aws-sdk/lib/s3/managed_upload.js delete mode 100644 node_modules/aws-sdk/lib/sequential_executor.js delete mode 100644 node_modules/aws-sdk/lib/service.js delete mode 100644 node_modules/aws-sdk/lib/services/apigateway.js delete mode 100644 node_modules/aws-sdk/lib/services/cloudfront.js delete mode 100644 node_modules/aws-sdk/lib/services/cloudsearchdomain.js delete mode 100644 node_modules/aws-sdk/lib/services/cognitoidentity.js delete mode 100644 node_modules/aws-sdk/lib/services/dynamodb.js delete mode 100644 node_modules/aws-sdk/lib/services/ec2.js delete mode 100644 node_modules/aws-sdk/lib/services/glacier.js delete mode 100644 node_modules/aws-sdk/lib/services/iotdata.js delete mode 100644 node_modules/aws-sdk/lib/services/machinelearning.js delete mode 100644 node_modules/aws-sdk/lib/services/route53.js delete mode 100644 node_modules/aws-sdk/lib/services/s3.js delete mode 100644 node_modules/aws-sdk/lib/services/sqs.js delete mode 100644 node_modules/aws-sdk/lib/services/sts.js delete mode 100644 node_modules/aws-sdk/lib/services/swf.js delete mode 100644 node_modules/aws-sdk/lib/signers/presign.js delete mode 100644 node_modules/aws-sdk/lib/signers/request_signer.js delete mode 100644 node_modules/aws-sdk/lib/signers/s3.js delete mode 100644 node_modules/aws-sdk/lib/signers/v2.js delete mode 100644 node_modules/aws-sdk/lib/signers/v3.js delete mode 100644 node_modules/aws-sdk/lib/signers/v3https.js delete mode 100644 node_modules/aws-sdk/lib/signers/v4.js delete mode 100644 node_modules/aws-sdk/lib/state_machine.js delete mode 100644 node_modules/aws-sdk/lib/util.js delete mode 100644 node_modules/aws-sdk/lib/xml/browser_parser.js delete mode 100644 node_modules/aws-sdk/lib/xml/builder.js delete mode 100644 node_modules/aws-sdk/lib/xml/node_parser.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/.npmignore delete mode 100644 node_modules/aws-sdk/node_modules/buffer/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/buffer/AUTHORS.md delete mode 100644 node_modules/aws-sdk/node_modules/buffer/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/buffer/README.md delete mode 100755 node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/bin/test.js delete mode 100755 node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh delete mode 100644 node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml delete mode 100644 node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml delete mode 100644 node_modules/aws-sdk/node_modules/buffer/index.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json delete mode 100644 node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/package.json delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/base64.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/basic.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/compare.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/constructor.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/from-string.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/methods.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/slice.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/static.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/to-string.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/write.js delete mode 100644 node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/index.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/md5.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/package.json delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/rng.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/sha.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 delete mode 100644 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0000.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0010.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0011.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0015.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0016.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0017.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0018.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0019.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0020.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0021.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0022.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0023.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0024.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0025.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0026.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0027.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0028.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0029.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0030.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0031.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0032.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0033.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0034.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0035.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0036.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0037.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0038.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0039.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0040.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0041.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0042.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0043.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0044.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0045.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0046.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0047.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0048.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0049.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0050.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0051.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0052.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0053.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0054.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0055.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0056.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0057.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0058.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0059.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0060.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0061.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0062.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0063.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0064.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0065.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0066.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0067.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0068.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0069.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0070.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0071.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0072.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0073.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0074.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0075.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0076.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0077.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0078.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0079.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0080.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0081.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0082.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0083.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0084.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0085.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0086.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0087.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0088.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0089.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0090.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0091.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0092.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0093.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0094.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0095.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0096.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0097.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0098.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0099.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0100.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0101.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0102.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0103.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0104.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0105.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0106.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0107.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0108.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0109.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0110.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0111.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0112.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0113.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0114.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0115.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0116.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0117.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0118.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0119.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0120.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0121.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0122.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0123.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0124.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0125.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0126.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0127.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0128.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0129.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0130.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0131.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0132.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0133.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0134.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0135.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0136.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0137.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0138.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0139.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0140.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0141.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0142.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0143.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0144.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0145.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0146.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0147.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0148.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0149.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0150.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0151.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0152.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0153.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0154.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0155.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0156.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0157.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0158.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0159.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0160.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0161.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0162.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0163.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0164.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0165.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0166.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0167.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0168.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0169.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0170.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0171.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0172.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0173.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0174.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0175.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0176.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0177.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0178.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0179.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0180.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0181.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0182.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0183.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0184.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0185.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0186.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0187.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0188.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0189.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0190.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0191.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0192.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0193.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0194.dat delete mode 100755 node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0195.dat delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/.eslintrc delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/.npmignore delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/BASELINE delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/Gruntfile.js delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/README.md delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/bower.json delete mode 100755 node_modules/aws-sdk/node_modules/jmespath/g.sh delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/index.html delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/james.html delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/jmespath.js delete mode 100755 node_modules/aws-sdk/node_modules/jmespath/jp.js delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/l.js delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/package.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/perf.js delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/reservedWords.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance.js delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json delete mode 100644 node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js delete mode 100644 node_modules/aws-sdk/node_modules/querystring/.History.md.un~ delete mode 100644 node_modules/aws-sdk/node_modules/querystring/.Readme.md.un~ delete mode 100644 node_modules/aws-sdk/node_modules/querystring/.package.json.un~ delete mode 100644 node_modules/aws-sdk/node_modules/querystring/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/querystring/History.md delete mode 100644 node_modules/aws-sdk/node_modules/querystring/License.md delete mode 100644 node_modules/aws-sdk/node_modules/querystring/Readme.md delete mode 100644 node_modules/aws-sdk/node_modules/querystring/decode.js delete mode 100644 node_modules/aws-sdk/node_modules/querystring/encode.js delete mode 100644 node_modules/aws-sdk/node_modules/querystring/index.js delete mode 100644 node_modules/aws-sdk/node_modules/querystring/package.json delete mode 100644 node_modules/aws-sdk/node_modules/querystring/test/.index.js.un~ delete mode 100644 node_modules/aws-sdk/node_modules/querystring/test/common-index.js delete mode 100644 node_modules/aws-sdk/node_modules/querystring/test/index.js delete mode 100644 node_modules/aws-sdk/node_modules/querystring/test/tap-index.js delete mode 100644 node_modules/aws-sdk/node_modules/sax/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html delete mode 100644 node_modules/aws-sdk/node_modules/sax/README.md delete mode 100644 node_modules/aws-sdk/node_modules/sax/lib/sax.js delete mode 100644 node_modules/aws-sdk/node_modules/sax/package.json delete mode 100644 node_modules/aws-sdk/node_modules/url/.npmignore delete mode 100644 node_modules/aws-sdk/node_modules/url/.travis.yml delete mode 100644 node_modules/aws-sdk/node_modules/url/.zuul.yml delete mode 100644 node_modules/aws-sdk/node_modules/url/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/url/README.md delete mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/LICENSE-MIT.txt delete mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/README.md delete mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json delete mode 100644 node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js delete mode 100644 node_modules/aws-sdk/node_modules/url/package.json delete mode 100644 node_modules/aws-sdk/node_modules/url/test.js delete mode 100644 node_modules/aws-sdk/node_modules/url/url.js delete mode 100644 node_modules/aws-sdk/node_modules/xml2js/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/xml2js/README.md delete mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/bom.js delete mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/processors.js delete mode 100644 node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js delete mode 100644 node_modules/aws-sdk/node_modules/xml2js/package.json delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/README.md delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLText.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/lib/index.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/LICENSE.txt delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/LazyWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/LodashWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/MapCache.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/SetCache.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayCopy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEach.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEachRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayEvery.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayFilter.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMap.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMax.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayMin.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayReduce.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arrayReduceRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/arraySome.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/assignDefaults.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/assignOwnDefaults.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseAssign.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseAt.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseBindAll.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCallback.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseClone.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCompareAscending.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCopy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseCreate.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseDelay.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseDifference.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseEach.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseEachRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseEvery.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFill.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFilter.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFind.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFlatten.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFor.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForIn.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForOwn.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForOwnRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseForRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseFunctions.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIndexOf.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseInvoke.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsEqual.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsEqualDeep.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsFunction.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseIsMatch.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseLodash.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMap.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMatches.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMatchesProperty.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMerge.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseMergeDeep.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseProperty.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/basePullAt.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseRandom.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseReduce.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSetData.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSlice.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSome.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSortBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseSortByOrder.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseToString.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseUniq.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseValues.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/baseWrapperValue.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/binaryIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/binaryIndexBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/bindCallback.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/bufferClone.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/cacheIndexOf.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/cachePush.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/charAtCallback.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/charsLeftIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/charsRightIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/compareAscending.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/compareMultiple.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/composeArgs.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/composeArgsRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createAggregator.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createAssigner.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createBindWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createCache.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createComposer.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createCompounder.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createCtorWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createExtremum.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createHybridWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createPad.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createPartialWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/createWrapper.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/deburrLetter.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/equalArrays.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/equalByTag.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/equalObjects.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/escapeHtmlChar.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/escapeStringChar.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/extremumBy.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/getData.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/getView.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/indexOfNaN.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneArray.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneByTag.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/initCloneObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isBindable.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isIterateeCall.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isLength.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isObjectLike.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isSpace.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/isStrictComparable.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/lazyClone.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/lazyReverse.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/lazyValue.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapDelete.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapGet.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapHas.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mapSet.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/mergeData.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/metaMap.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/pickByArray.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/pickByCallback.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reEscape.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reEvaluate.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reInterpolate.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/reorder.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/replaceHolders.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/setData.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/shimIsPlainObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/shimKeys.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/sortedUniq.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/toIterable.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/toObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/trimmedLeftIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/trimmedRightIndex.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/unescapeHtmlChar.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/internal/wrapperClone.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/clone.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/cloneDeep.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isArguments.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isArray.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isBoolean.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isDate.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isElement.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isEmpty.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isEqual.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isError.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isFinite.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isFunction.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isMatch.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNaN.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNative.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNull.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isNumber.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isPlainObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isRegExp.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isString.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isTypedArray.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/isUndefined.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/toArray.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/lang/toPlainObject.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/add.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/max.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/min.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/math/sum.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/number.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/number/inRange.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/number/random.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/assign.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/create.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/defaults.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/extend.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/findKey.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/findLastKey.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forIn.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forInRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forOwn.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/forOwnRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/functions.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/has.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/invert.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/keys.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/keysIn.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/mapValues.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/merge.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/methods.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/omit.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/pairs.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/pick.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/result.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/transform.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/values.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/object/valuesIn.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/package.json delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/camelCase.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/capitalize.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/deburr.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/endsWith.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/escape.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/escapeRegExp.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/kebabCase.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/pad.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/padLeft.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/padRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/parseInt.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/repeat.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/snakeCase.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/startCase.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/startsWith.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/template.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/templateSettings.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trim.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trimLeft.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trimRight.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/trunc.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/unescape.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/string/words.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/support.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/attempt.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/callback.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/constant.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/identity.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/iteratee.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/matches.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/matchesProperty.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/mixin.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/noop.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/property.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/propertyOf.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/range.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/times.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/utility/uniqueId.js delete mode 100644 node_modules/aws-sdk/node_modules/xmlbuilder/package.json delete mode 100644 node_modules/aws-sdk/package.json delete mode 100644 node_modules/aws-sdk/scripts/changelog/README.md delete mode 100755 node_modules/aws-sdk/scripts/changelog/add-change.js delete mode 100644 node_modules/aws-sdk/scripts/changelog/change-creator.js delete mode 100755 node_modules/aws-sdk/scripts/changelog/create-changelog delete mode 100755 node_modules/aws-sdk/scripts/changelog/release delete mode 100755 node_modules/aws-sdk/scripts/changelog/util.js delete mode 100755 node_modules/aws-sdk/scripts/console delete mode 100644 node_modules/aws-sdk/scripts/lib/translator.js delete mode 100755 node_modules/aws-sdk/scripts/translate-api delete mode 100644 node_modules/aws-sdk/testem.json delete mode 100644 node_modules/uuid/.npmignore delete mode 100644 node_modules/uuid/.travis.yml delete mode 100644 node_modules/uuid/LICENSE.md delete mode 100644 node_modules/uuid/README.md delete mode 100644 node_modules/uuid/benchmark/README.md delete mode 100644 node_modules/uuid/benchmark/bench.gnu delete mode 100755 node_modules/uuid/benchmark/bench.sh delete mode 100644 node_modules/uuid/benchmark/benchmark-native.c delete mode 100644 node_modules/uuid/benchmark/benchmark.js delete mode 100644 node_modules/uuid/benchmark/package.json delete mode 100644 node_modules/uuid/misc/compare.js delete mode 100644 node_modules/uuid/misc/perf.js delete mode 100644 node_modules/uuid/package.json delete mode 100644 node_modules/uuid/rng-browser.js delete mode 100644 node_modules/uuid/rng.js delete mode 100644 node_modules/uuid/test/mocha.opts delete mode 100644 node_modules/uuid/test/test.js delete mode 100644 node_modules/uuid/uuid.js diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 97626ba..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/jsLibraryMappings.xml b/.idea/jsLibraryMappings.xml deleted file mode 100644 index b8387eb..0000000 --- a/.idea/jsLibraryMappings.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index eabe228..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index 6bec890..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/serverless-crud.iml b/.idea/serverless-crud.iml deleted file mode 100644 index c956989..0000000 --- a/.idea/serverless-crud.iml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7..0000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml deleted file mode 100644 index 9338ba6..0000000 --- a/.idea/watcherTasks.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml deleted file mode 100644 index 6877dcf..0000000 --- a/.idea/workspace.xml +++ /dev/null @@ -1,230 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - true - DEFINITION_ORDER - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1476332492455 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.10.json b/node_modules/aws-sdk/.changes/2.4.10.json deleted file mode 100644 index 25aeba0..0000000 --- a/node_modules/aws-sdk/.changes/2.4.10.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "feature", - "category": "util", - "description": "Parse ini files containing comments using #" - }, - { - "type": "feature", - "category": "Iot", - "description": "Adds support for thing types. Thing types are entities that store a description of common features of Things that are of the same logical type. Also adds support for `:` in Thing name. Adds a separator in Firehose action." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.11.json b/node_modules/aws-sdk/.changes/2.4.11.json deleted file mode 100644 index 4a89b5e..0000000 --- a/node_modules/aws-sdk/.changes/2.4.11.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "type": "feature", - "category": "APIGateway", - "description": "Adds support for authentication through Cognito User Pools." - }, - { - "type": "feature", - "category": "CognitoIdentityServiceProvider", - "description": "Introduces support for Your User Pools." - }, - { - "type": "feature", - "category": "DirectoryService", - "description": "Enables routing to on-premises public IP for Microsoft Active Directory." - }, - { - "type": "feature", - "category": "EC2", - "description": "Enables resolution of DNS queries from a peered VPC to a private IP address." - }, - { - "type": "feature", - "category": "ES", - "description": "Updates to Elasticsearch version 2.3, which offers improved performance, memory management, and security. It also offers several new features includinng pipeline aggregations to perform advanced analytics like moving averages and derivatives, and enhancements to geospatial queries." - }, - { - "type": "feature", - "category": "Waiter", - "description": "Adds Waiters for AWS.CodeDeploy." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.12.json b/node_modules/aws-sdk/.changes/2.4.12.json deleted file mode 100644 index df969c8..0000000 --- a/node_modules/aws-sdk/.changes/2.4.12.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "bugfix", - "category": "Request", - "description": "Adds a content-length check for the stream returned from `createReadStream()`, and the stream will emit an error when the bytes received are fewer than specified by the response content-length header." - }, - { - "type": "bugfix", - "category": "S3", - "description": "Reverts behavior introduced in version `2.4.0` of the SDK to default the `signatureVersion` of S3 clients to `v4`. S3 clients instantiated without a user-defined `signatureVersion` will now default to `v2` unless the region only supports `v4` signing. This change is being made due to issues sending non-ascii characters in headers when using `v4` signing." - }, - { - "type": "feature", - "category": "CloudWatchLogs", - "description": "Updates the `putMetricFilter` operation." - }, - { - "type": "feature", - "category": "EMR", - "description": "Adds enhanced debugging." - }, - { - "type": "feature", - "category": "Iot", - "description": "Adds `listOutgoingCertificates` and support for allowing autoregistration." - }, - { - "type": "feature", - "category": "MachineLearning", - "description": "Adds compute time and entity timestamp to multiple operations." - }, - { - "type": "feature", - "category": "RDS", - "description": "Support for license model and versioning of option groups." - }, - { - "type": "feature", - "category": "Route53Domains", - "description": "Adds new APIs to renew domains for a specified duration, get domain suggestions, and view billing." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.13.json b/node_modules/aws-sdk/.changes/2.4.13.json deleted file mode 100644 index d674881..0000000 --- a/node_modules/aws-sdk/.changes/2.4.13.json +++ /dev/null @@ -1,27 +0,0 @@ -[ - { - "type": "feature", - "category": "ApplicationAutoScaling", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "AutoScaling", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "CodeDeploy", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "GameLift", - "description": "Provides a new Search API for GameLift, which allows game developers to retrieve filtered and sorted lists of their GameSessions." - }, - { - "type": "feature", - "category": "RDS", - "description": "You can now use the AWS Management Console to easily move your DB instance to a different VPC, or to a different subnet group in the same VPC. For more information, see Updating the VPC for a DB Instance. If your DB instance is not in a VPC, you can now use the AWS Management Console to easily move your DB instance into a VPC. You can now copy the source files from a MySQL database to an Amazon Simple Storage Service (Amazon S3) bucket, and then restore an Amazon Aurora DB cluster from those files. This option can be considerably faster than migrating data using mysqldump." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.14.json b/node_modules/aws-sdk/.changes/2.4.14.json deleted file mode 100644 index 3c90128..0000000 --- a/node_modules/aws-sdk/.changes/2.4.14.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "type": "feature", - "category": "CloudFront", - "description": "Amazon CloudFront now supports tagging for Web and Streaming distributions. Tags make it easier for you to allocate costs and optimize spending by categorizing and grouping AWS resources." - }, - { - "type": "feature", - "category": "ECR", - "description": "Adds filtering of ListImages requests based on whether an image is tagged or untagged." - }, - { - "type": "feature", - "category": "MarketplaceCommerceAnalytics", - "description": "Adds the `startSupportDataExport` operation." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.8.json b/node_modules/aws-sdk/.changes/2.4.8.json deleted file mode 100644 index eb0322c..0000000 --- a/node_modules/aws-sdk/.changes/2.4.8.json +++ /dev/null @@ -1,42 +0,0 @@ -[ - { - "type": "feature", - "category": "CloudFormation", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "CloudHSM", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "DeviceFarm", - "description": "Adds session-based APIs." - }, - { - "type": "feature", - "category": "EMR", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "ElastiCache", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "ElasticBeanstalk", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "Redshift", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "SSM", - "description": "Adds notification support." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.4.9.json b/node_modules/aws-sdk/.changes/2.4.9.json deleted file mode 100644 index 1dcf3ac..0000000 --- a/node_modules/aws-sdk/.changes/2.4.9.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "type": "feature", - "category": "ACM", - "description": "Adds reason for failure when describing certificates." - }, - { - "type": "feature", - "category": "ConfigService", - "description": "Adds support for RDS and ACM resources types and introduces two new APIs: DeleteEvaluationResults and StartConfigRulesEvaluation. Updated PutConfigRule API can now create Config rules that are triggered by both configuration changes and periodicity." - }, - { - "type": "feature", - "category": "ElasticTranscoder", - "description": "Adds WAV file format output support." - }, - { - "type": "feature", - "category": "Paginator", - "description": "Adds paginator for SSM DescribeInstanceInformation operation." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.0.json b/node_modules/aws-sdk/.changes/2.5.0.json deleted file mode 100644 index f7913fe..0000000 --- a/node_modules/aws-sdk/.changes/2.5.0.json +++ /dev/null @@ -1,37 +0,0 @@ -[ - { - "type": "feature", - "category": "AutoScaling", - "description": "Adds 3 new APIs for ELB L7 integration: attachLoadBalancerTargetGroups, detachLoadBalancerTargetGroups, and describeLoadBalancerTargetGroups." - }, - { - "type": "feature", - "category": "ECS", - "description": "Adds ECS support for ELBv2. Supports Application Load Balancer target groups to enable dynamic ports and path-based routing." - }, - { - "type": "feature", - "category": "ELBv2", - "description": "Adds new backwards incompatible application load balancer API version. Application load balancers are a new load balancer that is now supported by the Elastic Load Balancing service. Application load balancers support HTTP/2, WebSockets, routing based on URL path, and routing to multiple ports on a single instance." - }, - { - "type": "feature", - "category": "KMS", - "description": "Adds support for importing customer-supplied cryptographic keys. New import key feature lets you import keys from your own key management infrastructure to KMS for greater control over generation and storage of keys and meeting compliance requirements of sensitive workloads." - }, - { - "type": "feature", - "category": "KinesisAnalytics", - "description": "Adds the new service Amazon Kinesis Analytics, a fully managed service for continuously querying streaming data using standard SQL. With Kinesis Analytics, you can write standard SQL queries on streaming data and gain actionable insights in real-time, without having to learn any new programming skills. The service allows you to build applications that continuously read data from streaming data sources, process that data using standard SQL, and send the processed data to up to four destinations of your choice. Kinesis Analytics enables you to generate time-series analytics, feed a real-time dashboard, create real-time alarms and notifications, and much more." - }, - { - "type": "feature", - "category": "S3", - "description": "Adds support for IPv6/IPv4 Dualstack endpoint. A new opt-in boolean option `use Dualstack` can be specified for S3 service clients: `new AWS.S3({useDualstack: true})`. Alternatively, to configure it once for all subsequent S3 service clients: `AWS.config.update({s3: {useDualstack: true}})`." - }, - { - "type": "feature", - "category": "Snowball", - "description": "Adds Amazon Snowball, a new job management service." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.1.json b/node_modules/aws-sdk/.changes/2.5.1.json deleted file mode 100644 index e552555..0000000 --- a/node_modules/aws-sdk/.changes/2.5.1.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "type": "feature", - "category": "ACM", - "description": "Increase tagging limit from 10 to 50." - }, - { - "type": "feature", - "category": "APIGateway", - "description": "Amazon API Gateway now supports API usage plans. Usage plans allows you to easily manage and monetize your APIs for your API-based business." - }, - { - "type": "feature", - "category": "ECS", - "description": "Adds support for memory reservation and network mode on task definitions. Also adds splunk as a supported log driver." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.2.json b/node_modules/aws-sdk/.changes/2.5.2.json deleted file mode 100644 index 42b8d2b..0000000 --- a/node_modules/aws-sdk/.changes/2.5.2.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "type": "bugfix", - "category": "Waiter", - "description": "Fixes bug in `clusterDeleted` waiter for AWS.Redshift." - }, - { - "type": "feature", - "category": "EC2", - "description": "Adds new APIs supporting dedicated host reservations. Also adds new property to response of `describeSpotFleetRequests` to indicate the activity status of spot fleet requests." - }, - { - "type": "feature", - "category": "Request", - "description": "eachItem method stops iteration on returning false (like eachPage)" - }, - { - "type": "feature", - "category": "WorkSpaces", - "description": "Adds new APIs to support the launch and management of WorkSpaces that are paid for and used by the hour." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.3.json b/node_modules/aws-sdk/.changes/2.5.3.json deleted file mode 100644 index e46265d..0000000 --- a/node_modules/aws-sdk/.changes/2.5.3.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "type": "feature", - "category": "RDS", - "description": "Adds resource ARNs to Describe APIs." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.4.json b/node_modules/aws-sdk/.changes/2.5.4.json deleted file mode 100644 index 2e1f2a9..0000000 --- a/node_modules/aws-sdk/.changes/2.5.4.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "type": "feature", - "category": "CloudFront", - "description": "CloudFront is adding a Querystring Whitelist Option. Customers will be able to choose to forward certain querystring keys instead of a.) all of them or b.) none of them." - }, - { - "type": "feature", - "category": "CodePipeline", - "description": "CodePiepline has introduced a new feature to return pipeline execution details. Execution details consists of source revisions that are running in the pipeline. Customers will be able to tell what source revisions that are running through the stages in pipeline by fetching execution details of each stage." - }, - { - "type": "feature", - "category": "Route53", - "description": "With this release, Route 53 will support the following new features: support for the NAPTR DNS record type, a new testDNSAnswer API which enables customers to send a test query against a specific name server using spoofed delegation nameserver, resolver, and ECS IPs, and support metric-based health check in ap-south-1 region." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.5.json b/node_modules/aws-sdk/.changes/2.5.5.json deleted file mode 100644 index ea028a5..0000000 --- a/node_modules/aws-sdk/.changes/2.5.5.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "type": "feature", - "category": "CognitoIdentityServiceProvider", - "description": "Adds support for bulk import of users." - }, - { - "type": "feature", - "category": "GameLift", - "description": "Adds Linux support." - }, - { - "type": "feature", - "category": "Iot", - "description": "Adds Iot as a default service in the browser distribution of the AWS SDK for JavaScript." - }, - { - "type": "feature", - "category": "RDS", - "description": "Adds information in response of describeOptionGroupOptions about options that conflict with each other." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.5.6.json b/node_modules/aws-sdk/.changes/2.5.6.json deleted file mode 100644 index 2788790..0000000 --- a/node_modules/aws-sdk/.changes/2.5.6.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "type": "feature", - "category": "RDS", - "description": "Adds new operation describeSourceRegions to provide list of all the source region names and endpoints for any region. Source regions are the regions where current region can get a replica or copy a snapshot from." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.0.json b/node_modules/aws-sdk/.changes/2.6.0.json deleted file mode 100644 index f4e48ed..0000000 --- a/node_modules/aws-sdk/.changes/2.6.0.json +++ /dev/null @@ -1,22 +0,0 @@ -[ - { - "type": "feature", - "category": "CloudFront", - "description": "Adds HTTP2 support for Amazon CloudFront distributions." - }, - { - "type": "feature", - "category": "MetadataService", - "description": "Adds retry logic to the EC2 Metadata Service, so that EC2MetadataCredentials will retry TimeoutError. This retry logic is also added to ECSCredentials. Resolves #692" - }, - { - "type": "feature", - "category": "ServiceCatalog", - "description": "CORS support added. Now a default service in the browser build of the JavaScript SDK." - }, - { - "type": "feature", - "category": "Tools", - "description": "Adds support for bundling the SDK with webpack. Also adds support for creating node.js bundles using webpack or browserify." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.1.json b/node_modules/aws-sdk/.changes/2.6.1.json deleted file mode 100644 index e557b87..0000000 --- a/node_modules/aws-sdk/.changes/2.6.1.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "type": "bugfix", - "category": "SDK", - "description": "Fixes an issue that caused all services to be loaded into memory when requiring the SDK. This issue was introduced in version `2.6.0` of the SDK, and address #1124." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.2.json b/node_modules/aws-sdk/.changes/2.6.2.json deleted file mode 100644 index c6b97aa..0000000 --- a/node_modules/aws-sdk/.changes/2.6.2.json +++ /dev/null @@ -1,7 +0,0 @@ -[ - { - "type": "feature", - "category": "ServiceCatalog", - "description": "Updates the API for AWS.ServiceCatalog." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.3.json b/node_modules/aws-sdk/.changes/2.6.3.json deleted file mode 100644 index 220a6de..0000000 --- a/node_modules/aws-sdk/.changes/2.6.3.json +++ /dev/null @@ -1,17 +0,0 @@ -[ - { - "type": "bugfix", - "category": "Node_Https", - "description": "Fixes an issue caused when https.globalAgent is set to false." - }, - { - "type": "feature", - "category": "Iot", - "description": "Updates registerCertificate operation, and allows users to specify cannedAcl for S3 action." - }, - { - "type": "feature", - "category": "RDS", - "description": "Updates describeDbCluster operation to allow specifying a ReaderEndpoint for accessing cluster readers." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.4.json b/node_modules/aws-sdk/.changes/2.6.4.json deleted file mode 100644 index 611f7f2..0000000 --- a/node_modules/aws-sdk/.changes/2.6.4.json +++ /dev/null @@ -1,32 +0,0 @@ -[ - { - "type": "bugfix", - "category": "Browser", - "description": "Updates `url` and `querystring` dependencies to be controlled by the SDK instead of tools like browserify or webpack." - }, - { - "type": "bugfix", - "category": "Config", - "description": "Fixes an issue where specifying service-specific config on the global AWS.config object would fail if the service had not yet been instantiated." - }, - { - "type": "feature", - "category": "CodeDeploy", - "description": "AWS CodeDeploy now integrates with Amazon CloudWatch alarms, making it possible to stop a deployment if there is a change in the state of a specified alarm for a number of consecutive periods, as specified in the alarm threshold. AWS CodeDeploy also now supports automatically rolling back a deployment if certain conditions are met, such as a deployment failure or an activated alarm." - }, - { - "type": "feature", - "category": "EMR", - "description": "Added support for Security Configurations which can be used to enable encryption at-rest and in-transit for certain applications on Amazon EMR." - }, - { - "type": "feature", - "category": "RDS", - "description": "Provide local time zone support for AWS RDS SqlServer database instances." - }, - { - "type": "feature", - "category": "Redshift", - "description": "This release of Amazon Redshift introduces Enhanced VPC Routing. When you use Amazon Redshift Enhanced VPC Routing, Amazon Redshift forces all COPY and UNLOAD traffic between your cluster and your data repositories through your Amazon VPC." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.5.json b/node_modules/aws-sdk/.changes/2.6.5.json deleted file mode 100644 index a089342..0000000 --- a/node_modules/aws-sdk/.changes/2.6.5.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "bugfix", - "category": "apiVersion", - "description": "Fixes an issue where some service clients would fail to instantiate if an older apiVersion was specified." - }, - { - "type": "feature", - "category": "CloudFormation", - "description": "Adds support for specifying an IAM service role for CloudFormation stack operations." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.6.json b/node_modules/aws-sdk/.changes/2.6.6.json deleted file mode 100644 index cdff647..0000000 --- a/node_modules/aws-sdk/.changes/2.6.6.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "feature", - "category": "EC2", - "description": "Adding support for EC2 Convertible RIs and the EC2 RI regional benefit." - }, - { - "type": "feature", - "category": "S3", - "description": "S3 API update with partNumber extension and a bug fix to address list-objects command failing when a bucket is marked with request-pays." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.7.json b/node_modules/aws-sdk/.changes/2.6.7.json deleted file mode 100644 index f7c928b..0000000 --- a/node_modules/aws-sdk/.changes/2.6.7.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "feature", - "category": "CognitoIdentityServiceProvider", - "description": "Added new operation \"AdminCreateUser\" that creates a new user in the specified user pool and sends a welcome message via email or phone (SMS)." - }, - { - "type": "feature", - "category": "Route53", - "description": "Retries PriorRequestNotComplete errors." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.changes/2.6.8.json b/node_modules/aws-sdk/.changes/2.6.8.json deleted file mode 100644 index 6339ae7..0000000 --- a/node_modules/aws-sdk/.changes/2.6.8.json +++ /dev/null @@ -1,12 +0,0 @@ -[ - { - "type": "feature", - "category": "ECR", - "description": "DescribeImages is a new api used to expose image metadata which today includes image size and image creation timestamp." - }, - { - "type": "feature", - "category": "ElastiCache", - "description": "Elasticache is launching a new major engine release of Redis, 3.2 (providing stability updates and new command sets over 2.8), as well as ElasticSupport for enabling Redis Cluster in 3.2, which provides support for multiple node groups to horizontally scale data, as well as superior engine failover capabilities." - } -] \ No newline at end of file diff --git a/node_modules/aws-sdk/.jshintrc b/node_modules/aws-sdk/.jshintrc deleted file mode 100644 index 89fbbba..0000000 --- a/node_modules/aws-sdk/.jshintrc +++ /dev/null @@ -1,68 +0,0 @@ -{ - // JSHint Default Configuration File (as on JSHint website) - // See http://jshint.com/docs/ for more details - - "maxerr" : 50, // {int} Maximum error before stopping - - // Enforcing - "bitwise" : false, // true: Prohibit bitwise operators (&, |, ^, etc.) - "camelcase" : false, // true: Identifiers must be in camelCase - "curly" : false, // true: Require {} for every new block or scope - "eqeqeq" : true, // true: Require triple equals (===) for comparison - "forin" : true, // true: Require filtering for..in loops with obj.hasOwnProperty() - "immed" : false, // true: Require immediate invocations to be wrapped in parens e.g. `(function () { } ());` - "indent" : false, // {int} Number of spaces to use for indentation - "latedef" : false, // true: Require variables/functions to be defined before being used - "newcap" : false, // true: Require capitalization of all constructor functions e.g. `new F()` - "noarg" : true, // true: Prohibit use of `arguments.caller` and `arguments.callee` - "noempty" : true, // true: Prohibit use of empty blocks - "nonew" : false, // true: Prohibit use of constructors for side-effects (without assignment) - "plusplus" : false, // true: Prohibit use of `++` & `--` - "quotmark" : "single", // Quotation mark consistency: - // false : do nothing (default) - // true : ensure whatever is used is consistent - // "single" : require single quotes - // "double" : require double quotes - "undef" : true, // true: Require all non-global variables to be declared (prevents global leaks) - "unused" : true, // true: Require all defined variables be used - "strict" : false, // true: Requires all functions run in ES5 Strict Mode - "maxparams" : false, // {int} Max number of formal params allowed per function - "maxdepth" : false, // {int} Max depth of nested blocks (within functions) - "maxstatements" : false, // {int} Max number statements per function - "maxcomplexity" : false, // {int} Max cyclomatic complexity per function - "maxlen" : false, // {int} Max number of characters per line - - // Relaxing - "asi" : false, // true: Tolerate Automatic Semicolon Insertion (no semicolons) - "boss" : false, // true: Tolerate assignments where comparisons would be expected - "debug" : false, // true: Allow debugger statements e.g. browser breakpoints. - "eqnull" : false, // true: Tolerate use of `== null` - "es5" : false, // true: Allow ES5 syntax (ex: getters and setters) - "esnext" : false, // true: Allow ES.next (ES6) syntax (ex: `const`) - "moz" : false, // true: Allow Mozilla specific syntax (extends and overrides esnext features) - // (ex: `for each`, multiple try/catch, function expression…) - "evil" : false, // true: Tolerate use of `eval` and `new Function()` - "expr" : false, // true: Tolerate `ExpressionStatement` as Programs - "funcscope" : false, // true: Tolerate defining variables inside control statements - "globalstrict" : false, // true: Allow global "use strict" (also enables 'strict') - "iterator" : false, // true: Tolerate using the `__iterator__` property - "lastsemic" : false, // true: Tolerate omitting a semicolon for the last statement of a 1-line block - "laxbreak" : false, // true: Tolerate possibly unsafe line breakings - "laxcomma" : false, // true: Tolerate comma-first style coding - "loopfunc" : false, // true: Tolerate functions being defined in loops - "multistr" : false, // true: Tolerate multi-line strings - "proto" : false, // true: Tolerate using the `__proto__` property - "scripturl" : false, // true: Tolerate script-targeted URLs - "shadow" : false, // true: Allows re-define variables later in code e.g. `var x=1; x=2;` - "sub" : true, // true: Tolerate using `[]` notation when it can still be expressed in dot notation - "supernew" : false, // true: Tolerate `new function () { ... };` and `new Object;` - "validthis" : false, // true: Tolerate using this in a non-constructor function - - // Environments - "browser" : true, // Web Browser (window, document, etc) - "node" : true, // Node.js - "nonstandard" : true, // Widely adopted globals (escape, unescape, etc) - - // Custom Globals - "globals" : {} // additional predefined global variables -} diff --git a/node_modules/aws-sdk/.npmignore b/node_modules/aws-sdk/.npmignore deleted file mode 100644 index 3d4358c..0000000 --- a/node_modules/aws-sdk/.npmignore +++ /dev/null @@ -1,18 +0,0 @@ -.yard* -.eslintrc -.travis.yml -.gitignore -apis/*.normal.json -configuration -configuration.sample -coverage -doc -doc-src -eslint-rules -Gemfile -Gemfile.lock -features -Rakefile -test -tasks -vendor diff --git a/node_modules/aws-sdk/.tesselinclude b/node_modules/aws-sdk/.tesselinclude deleted file mode 100644 index 2188ed1..0000000 --- a/node_modules/aws-sdk/.tesselinclude +++ /dev/null @@ -1,2 +0,0 @@ -apis/*.json -lib/services/*.js diff --git a/node_modules/aws-sdk/CHANGELOG.md b/node_modules/aws-sdk/CHANGELOG.md deleted file mode 100644 index a46f5d4..0000000 --- a/node_modules/aws-sdk/CHANGELOG.md +++ /dev/null @@ -1,131 +0,0 @@ -# Changelog for AWS SDK for JavaScript - - - -## 2.6.8 -* feature: ECR: DescribeImages is a new api used to expose image metadata which today includes image size and image creation timestamp. -* feature: ElastiCache: Elasticache is launching a new major engine release of Redis, 3.2 (providing stability updates and new command sets over 2.8), as well as ElasticSupport for enabling Redis Cluster in 3.2, which provides support for multiple node groups to horizontally scale data, as well as superior engine failover capabilities. - -## 2.6.7 -* feature: CognitoIdentityServiceProvider: Added new operation "AdminCreateUser" that creates a new user in the specified user pool and sends a welcome message via email or phone (SMS). -* feature: Route53: Retries PriorRequestNotComplete errors. - -## 2.6.6 -* feature: EC2: Adding support for EC2 Convertible RIs and the EC2 RI regional benefit. -* feature: S3: S3 API update with partNumber extension and a bug fix to address list-objects command failing when a bucket is marked with request-pays. - -## 2.6.5 -* bugfix: apiVersion: Fixes an issue where some service clients would fail to instantiate if an older apiVersion was specified. -* feature: CloudFormation: Adds support for specifying an IAM service role for CloudFormation stack operations. - -## 2.6.4 -* bugfix: Browser: Updates `url` and `querystring` dependencies to be controlled by the SDK instead of tools like browserify or webpack. -* bugfix: Config: Fixes an issue where specifying service-specific config on the global AWS.config object would fail if the service had not yet been instantiated. -* feature: CodeDeploy: AWS CodeDeploy now integrates with Amazon CloudWatch alarms, making it possible to stop a deployment if there is a change in the state of a specified alarm for a number of consecutive periods, as specified in the alarm threshold. AWS CodeDeploy also now supports automatically rolling back a deployment if certain conditions are met, such as a deployment failure or an activated alarm. -* feature: EMR: Added support for Security Configurations which can be used to enable encryption at-rest and in-transit for certain applications on Amazon EMR. -* feature: RDS: Provide local time zone support for AWS RDS SqlServer database instances. -* feature: Redshift: This release of Amazon Redshift introduces Enhanced VPC Routing. When you use Amazon Redshift Enhanced VPC Routing, Amazon Redshift forces all COPY and UNLOAD traffic between your cluster and your data repositories through your Amazon VPC. - -## 2.6.3 -* bugfix: Node_Https: Fixes an issue caused when https.globalAgent is set to false. -* feature: Iot: Updates registerCertificate operation, and allows users to specify cannedAcl for S3 action. -* feature: RDS: Updates describeDbCluster operation to allow specifying a ReaderEndpoint for accessing cluster readers. - -## 2.6.2 -* feature: ServiceCatalog: Updates the API for AWS.ServiceCatalog. - -## 2.6.1 -* bugfix: SDK: Fixes an issue that caused all services to be loaded into memory when requiring the SDK. This issue was introduced in version `2.6.0` of the SDK, and address #1124. - -## 2.6.0 -* feature: CloudFront: Adds HTTP2 support for Amazon CloudFront distributions. -* feature: MetadataService: Adds retry logic to the EC2 Metadata Service, so that EC2MetadataCredentials will retry TimeoutError. This retry logic is also added to ECSCredentials. Resolves #692 -* feature: ServiceCatalog: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: Tools: Adds support for bundling the SDK with webpack. Also adds support for creating node.js bundles using webpack or browserify. - -## 2.5.6 -* feature: RDS: Adds new operation describeSourceRegions to provide list of all the source region names and endpoints for any region. Source regions are the regions where current region can get a replica or copy a snapshot from. - -## 2.5.5 -* feature: CognitoIdentityServiceProvider: Adds support for bulk import of users. -* feature: GameLift: Adds Linux support. -* feature: Iot: Adds Iot as a default service in the browser distribution of the AWS SDK for JavaScript. -* feature: RDS: Adds information in response of describeOptionGroupOptions about options that conflict with each other. - -## 2.5.4 -* feature: CloudFront: CloudFront is adding a Querystring Whitelist Option. Customers will be able to choose to forward certain querystring keys instead of a.) all of them or b.) none of them. -* feature: CodePipeline: CodePiepline has introduced a new feature to return pipeline execution details. Execution details consists of source revisions that are running in the pipeline. Customers will be able to tell what source revisions that are running through the stages in pipeline by fetching execution details of each stage. -* feature: Route53: With this release, Route 53 will support the following new features: support for the NAPTR DNS record type, a new testDNSAnswer API which enables customers to send a test query against a specific name server using spoofed delegation nameserver, resolver, and ECS IPs, and support metric-based health check in ap-south-1 region. - -## 2.5.3 -* feature: RDS: Adds resource ARNs to Describe APIs. - -## 2.5.2 -* bugfix: Waiter: Fixes bug in `clusterDeleted` waiter for AWS.Redshift. -* feature: EC2: Adds new APIs supporting dedicated host reservations. Also adds new property to response of `describeSpotFleetRequests` to indicate the activity status of spot fleet requests. -* feature: Request: eachItem method stops iteration on returning false (like eachPage) -* feature: WorkSpaces: Adds new APIs to support the launch and management of WorkSpaces that are paid for and used by the hour. - -## 2.5.1 -* feature: ACM: Increase tagging limit from 10 to 50. -* feature: APIGateway: Amazon API Gateway now supports API usage plans. Usage plans allows you to easily manage and monetize your APIs for your API-based business. -* feature: ECS: Adds support for memory reservation and network mode on task definitions. Also adds splunk as a supported log driver. - -## 2.5.0 -* feature: AutoScaling: Adds 3 new APIs for ELB L7 integration: attachLoadBalancerTargetGroups, detachLoadBalancerTargetGroups, and describeLoadBalancerTargetGroups. -* feature: ECS: Adds ECS support for ELBv2. Supports Application Load Balancer target groups to enable dynamic ports and path-based routing. -* feature: ELBv2: Adds new backwards incompatible application load balancer API version. Application load balancers are a new load balancer that is now supported by the Elastic Load Balancing service. Application load balancers support HTTP/2, WebSockets, routing based on URL path, and routing to multiple ports on a single instance. -* feature: KMS: Adds support for importing customer-supplied cryptographic keys. New import key feature lets you import keys from your own key management infrastructure to KMS for greater control over generation and storage of keys and meeting compliance requirements of sensitive workloads. -* feature: KinesisAnalytics: Adds the new service Amazon Kinesis Analytics, a fully managed service for continuously querying streaming data using standard SQL. With Kinesis Analytics, you can write standard SQL queries on streaming data and gain actionable insights in real-time, without having to learn any new programming skills. The service allows you to build applications that continuously read data from streaming data sources, process that data using standard SQL, and send the processed data to up to four destinations of your choice. Kinesis Analytics enables you to generate time-series analytics, feed a real-time dashboard, create real-time alarms and notifications, and much more. -* feature: S3: Adds support for IPv6/IPv4 Dualstack endpoint. A new opt-in boolean option `use Dualstack` can be specified for S3 service clients: `new AWS.S3({useDualstack: true})`. Alternatively, to configure it once for all subsequent S3 service clients: `AWS.config.update({s3: {useDualstack: true}})`. -* feature: Snowball: Adds Amazon Snowball, a new job management service. - -## 2.4.14 -* feature: CloudFront: Amazon CloudFront now supports tagging for Web and Streaming distributions. Tags make it easier for you to allocate costs and optimize spending by categorizing and grouping AWS resources. -* feature: ECR: Adds filtering of ListImages requests based on whether an image is tagged or untagged. -* feature: MarketplaceCommerceAnalytics: Adds the `startSupportDataExport` operation. - -## 2.4.13 -* feature: ApplicationAutoScaling: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: AutoScaling: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: CodeDeploy: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: GameLift: Provides a new Search API for GameLift, which allows game developers to retrieve filtered and sorted lists of their GameSessions. -* feature: RDS: You can now use the AWS Management Console to easily move your DB instance to a different VPC, or to a different subnet group in the same VPC. For more information, see Updating the VPC for a DB Instance. If your DB instance is not in a VPC, you can now use the AWS Management Console to easily move your DB instance into a VPC. You can now copy the source files from a MySQL database to an Amazon Simple Storage Service (Amazon S3) bucket, and then restore an Amazon Aurora DB cluster from those files. This option can be considerably faster than migrating data using mysqldump. - -## 2.4.12 -* bugfix: Request: Adds a content-length check for the stream returned from `createReadStream()`, and the stream will emit an error when the bytes received are fewer than specified by the response content-length header. -* bugfix: S3: Reverts behavior introduced in version `2.4.0` of the SDK to default the `signatureVersion` of S3 clients to `v4`. S3 clients instantiated without a user-defined `signatureVersion` will now default to `v2` unless the region only supports `v4` signing. This change is being made due to issues sending non-ascii characters in headers when using `v4` signing. -* feature: CloudWatchLogs: Updates the `putMetricFilter` operation. -* feature: EMR: Adds enhanced debugging. -* feature: Iot: Adds `listOutgoingCertificates` and support for allowing autoregistration. -* feature: MachineLearning: Adds compute time and entity timestamp to multiple operations. -* feature: RDS: Support for license model and versioning of option groups. -* feature: Route53Domains: Adds new APIs to renew domains for a specified duration, get domain suggestions, and view billing. - -## 2.4.11 -* feature: APIGateway: Adds support for authentication through Cognito User Pools. -* feature: CognitoIdentityServiceProvider: Introduces support for Your User Pools. -* feature: DirectoryService: Enables routing to on-premises public IP for Microsoft Active Directory. -* feature: EC2: Enables resolution of DNS queries from a peered VPC to a private IP address. -* feature: ES: Updates to Elasticsearch version 2.3, which offers improved performance, memory management, and security. It also offers several new features includinng pipeline aggregations to perform advanced analytics like moving averages and derivatives, and enhancements to geospatial queries. -* feature: Waiter: Adds Waiters for AWS.CodeDeploy. - -## 2.4.10 -* feature: util: Parse ini files containing comments using # -* feature: Iot: Adds support for thing types. Thing types are entities that store a description of common features of Things that are of the same logical type. Also adds support for `:` in Thing name. Adds a separator in Firehose action. - -## 2.4.9 -* feature: ACM: Adds reason for failure when describing certificates. -* feature: ConfigService: Adds support for RDS and ACM resources types and introduces two new APIs: DeleteEvaluationResults and StartConfigRulesEvaluation. Updated PutConfigRule API can now create Config rules that are triggered by both configuration changes and periodicity. -* feature: ElasticTranscoder: Adds WAV file format output support. -* feature: Paginator: Adds paginator for SSM DescribeInstanceInformation operation. - -## 2.4.8 -* feature: CloudFormation: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: CloudHSM: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: DeviceFarm: Adds session-based APIs. -* feature: EMR: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: ElastiCache: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: ElasticBeanstalk: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: Redshift: CORS support added. Now a default service in the browser build of the JavaScript SDK. -* feature: SSM: Adds notification support. \ No newline at end of file diff --git a/node_modules/aws-sdk/CONTRIBUTING.md b/node_modules/aws-sdk/CONTRIBUTING.md deleted file mode 100644 index 59df5f7..0000000 --- a/node_modules/aws-sdk/CONTRIBUTING.md +++ /dev/null @@ -1,98 +0,0 @@ -# Contributing to the AWS SDK for JavaScript - -We work hard to provide a high-quality and useful SDK, and we greatly value -feedback and contributions from our community. Whether it's a bug report, -new feature, correction, or additional documentation, we welcome your issues -and pull requests. Please read through this document before submitting any -issues or pull requests to ensure we have all the necessary information to -effectively respond to your bug report or contribution. - - -## Filing Bug Reports - -You can file bug reports against the SDK on the [GitHub issues][issues] page. - -If you are filing a report for a bug or regression in the SDK, it's extremely -helpful to provide as much information as possible when opening the original -issue. This helps us reproduce and investigate the possible bug without having -to wait for this extra information to be provided. Please read the following -guidelines prior to filing a bug report. - -1. Search through existing [issues][] to ensure that your specific issue has - not yet been reported. If it is a common issue, it is likely there is - already a bug report for your problem. - -2. Ensure that you have tested the latest version of the SDK. Although you - may have an issue against an older version of the SDK, we cannot provide - bug fixes for old versions. It's also possible that the bug may have been - fixed in the latest release. - -3. Provide as much information about your environment, SDK version, and - relevant dependencies as possible. For example, let us know what version - of Node.js you are using, or if it's a browser issue, which browser you - are using. If the issue only occurs with a specific dependency loaded, - please provide that dependency name and version. - -4. Provide a minimal test case that reproduces your issue or any error - information you related to your problem. We can provide feedback much - more quickly if we know what operations you are calling in the SDK. If - you cannot provide a full test case, provide as much code as you can - to help us diagnose the problem. Any relevant information should be provided - as well, like whether this is a persistent issue, or if it only occurs - some of the time. - - -## Submitting Pull Requests - -We are always happy to receive code and documentation contributions to the SDK. -Please be aware of the following notes prior to opening a pull request: - -1. The SDK is released under the [Apache license][license]. Any code you submit - will be released under that license. For substantial contributions, we may - ask you to sign a [Contributor License Agreement (CLA)][cla]. - -2. If you would like to implement support for a significant feature that is not - yet available in the SDK, please talk to us beforehand to avoid any - duplication of effort. - -### Testing - -To run the tests locally, install `phantomjs`. You can do so using [Homebrew][homebrew]: - -``` -brew install phantomjs -``` - -Then, to run all tests: - -``` -npm test -``` - -To run a particular test subset e.g. just the unit tests: - -``` -npm run-script unit -``` - -See the implementation of the `test` script in `package.json` for more options. - -### Changelog - -We have moved to using a changelog to document changes between SDK versions instead of [release notes][releasenotes]. -The release notes generally contained service client updates, and major SDK changes. -Our goal with the changelog is to document all changes made with each version of the SDK. -When submitting a pull request, please run the `add-change` script and commit the resulting JSON file so that your change gets added to the changelog. -From SDK root: -``` -node ./scripts/changelog/add-change.js -``` - -See the [add-change cli notes](./scripts/changelog/README.md) for more information. - -[issues]: https://github.com/aws/aws-sdk-js/issues -[pr]: https://github.com/aws/aws-sdk-js/pulls -[license]: http://aws.amazon.com/apache2.0/ -[cla]: http://en.wikipedia.org/wiki/Contributor_License_Agreement -[homebrew]: http://brew.sh/ -[releasenotes]: https://aws.amazon.com/releasenotes/JavaScript diff --git a/node_modules/aws-sdk/LICENSE.txt b/node_modules/aws-sdk/LICENSE.txt deleted file mode 100644 index d645695..0000000 --- a/node_modules/aws-sdk/LICENSE.txt +++ /dev/null @@ -1,202 +0,0 @@ - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright [yyyy] [name of copyright owner] - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/node_modules/aws-sdk/NOTICE.txt b/node_modules/aws-sdk/NOTICE.txt deleted file mode 100644 index 54cd045..0000000 --- a/node_modules/aws-sdk/NOTICE.txt +++ /dev/null @@ -1,5 +0,0 @@ -AWS SDK for JavaScript -Copyright 2012-2016 Amazon.com, Inc. or its affiliates. All Rights Reserved. - -This product includes software developed at -Amazon Web Services, Inc. (http://aws.amazon.com/). diff --git a/node_modules/aws-sdk/README.md b/node_modules/aws-sdk/README.md deleted file mode 100644 index 6365ec4..0000000 --- a/node_modules/aws-sdk/README.md +++ /dev/null @@ -1,160 +0,0 @@ -# AWS SDK for JavaScript - -[![NPM](https://nodei.co/npm/aws-sdk.svg?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/aws-sdk/) - -[![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.svg)](https://gitter.im/aws/aws-sdk-js) - -[![Version](https://badge.fury.io/js/aws-sdk.svg)](http://badge.fury.io/js/aws-sdk) [![Build Status](https://travis-ci.org/aws/aws-sdk-js.svg?branch=master)](https://travis-ci.org/aws/aws-sdk-js) [![Coverage Status](https://coveralls.io/repos/aws/aws-sdk-js/badge.svg?branch=master)](https://coveralls.io/r/aws/aws-sdk-js?branch=master) - -The official AWS SDK for JavaScript, available for browsers and mobile devices, -or Node.js backends - -Release notes can be found at http://aws.amazon.com/releasenotes/SDK/JavaScript - -

-If you are upgrading from 1.x to 2.0 of the SDK, please see -the {file:UPGRADING.md} notes for information on how to migrate existing code -to work with the new major version. -

- -## Installing - -### In the Browser - -To use the SDK in the browser, simply add the following script tag to your -HTML pages: - - - -You can also build a custom browser SDK with your specified set of AWS services. -This can allow you to reduce the SDK's size, specify different API versions of -services, or use AWS services that don't currently support CORS if you are -working in an environment that does not enforce CORS. To get started: - -http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/browser-building.html - -The AWS SDK is also compatible with [browserify](http://browserify.org). - -### In Node.js - -The preferred way to install the AWS SDK for Node.js is to use the -[npm](http://npmjs.org) package manager for Node.js. Simply type the following -into a terminal window: - -```sh -npm install aws-sdk -``` - -### Using Bower - -You can also use [Bower](http://bower.io) to install the SDK by typing the -following into a terminal window: - -```sh -bower install aws-sdk-js -``` - -## Usage and Getting Started - -You can find a getting started guide at: - -http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/ - -## Supported Services - -

Note: -Although all services are supported in the browser version of the SDK, -not all of the services are available in the default hosted build (using the -script tag provided above). A list of services in the hosted build are provided -in the "Working With Services" -section of the browser SDK guide, including instructions on how to build a -custom version of the SDK with extra services. -

- -The SDK currently supports the following services: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Service NameClass NameAPI Version
Amazon API GatewayAWS.APIGateway2015-07-09
Amazon CloudFrontAWS.CloudFront2014-10-21
Amazon CloudHSMAWS.CloudHSM2014-05-30
Amazon CloudSearchAWS.CloudSearch2013-01-01
Amazon CloudSearch DomainAWS.CloudSearchDomain2013-01-01
Amazon CloudWatchAWS.CloudWatch2010-08-01
Amazon CloudWatch EventsAWS.CloudWatchLogs2015-10-07
Amazon CloudWatch LogsAWS.CloudWatchLogs2014-03-28
Amazon Cognito IdentityAWS.CognitoIdentity2014-06-30
Amazon Cognito SyncAWS.CognitoSync2014-06-30
Amazon DynamoDBAWS.DynamoDB2012-08-10
Amazon DynamoDB StreamsAWS.DynamoDBStreams2012-08-10
Amazon EC2 Container RegistryAWS.ECR2015-09-21
Amazon EC2 Container ServiceAWS.ECS2014-11-13
Amazon Elastic Compute CloudAWS.EC22014-10-01
Amazon Elastic File SystemAWS.EFS2015-02-01
Amazon Elastic MapReduceAWS.EMR2009-03-31
Amazon Elastic TranscoderAWS.ElasticTranscoder2012-09-25
Amazon ElastiCacheAWS.ElastiCache2014-09-30
Amazon Elasticsearch ServiceAWS.ES2015-01-01
Amazon GameLiftAWS.GameLift2015-10-01
Amazon GlacierAWS.Glacier2012-06-01
Amazon InspectorAWS.Inspector2016-02-16
Amazon KinesisAWS.Kinesis2013-12-02
Amazon Kinesis AnalyticsAWS.KinesisAnalytics2015-08-14
Amazon Kinesis FirehoseAWS.Firehose2015-08-04
Amazon Machine LearningAWS.MachineLearning2014-12-12
Amazon Mobile AnalyticsAWS.MobileAnalytics2014-06-05
Amazon RedshiftAWS.Redshift2012-12-01
Amazon Relational Database ServiceAWS.RDS2014-09-01
Amazon Route 53AWS.Route532013-04-01
Amazon Route 53 DomainsAWS.Route53Domains2014-05-15
Amazon Simple Email ServiceAWS.SES2010-12-01
Amazon Simple Notification ServiceAWS.SNS2010-03-31
Amazon Simple Queue ServiceAWS.SQS2012-11-05
Amazon Simple Storage ServiceAWS.S32006-03-01
Amazon Simple Systems Management ServiceAWS.SSM2014-11-06
Amazon Simple Workflow ServiceAWS.SWF2012-01-25
Amazon SimpleDBAWS.SimpleDB2009-04-15
Amazon SnowballAWS.Snowball2016-06-30
Amazon WorkSpacesAWS.WorkSpaces2015-04-08
Auto ScalingAWS.AutoScaling2011-01-01
AWS Certificate ManagerAWS.ACM2015-12-08
AWS CloudFormationAWS.CloudFormation2010-05-15
AWS CloudTrailAWS.CloudTrail2013-11-01
AWS CodeCommitAWS.CodeCommit2015-04-13
AWS CodeDeployAWS.CodeDeploy2014-10-06
AWS CodePipelineAWS.CodePipeline2015-07-09
AWS ConfigAWS.ConfigService2014-11-12
AWS Data PipelineAWS.DataPipeline2012-10-29
AWS Database Migration ServiceAWS.DMS2016-01-01
AWS Device FarmAWS.DeviceFarm2015-06-23
AWS Direct ConnectAWS.DirectConnect2012-10-25
AWS Directory ServiceAWS.DirectoryService2015-04-16
AWS Elastic BeanstalkAWS.ElasticBeanstalk2010-12-01
AWS Identity and Access ManagementAWS.IAM2010-05-08
AWS Import/ExportAWS.ImportExport2010-06-01
AWS IoTAWS.Iot2015-05-28
AWS IoT Data PlaneAWS.IotData2015-05-28
AWS Key Management ServiceAWS.KMS2014-11-01
AWS LambdaAWS.Lambda2015-03-31
AWS Marketplace Commerce AnalyticsAWS.MarketplaceCommerceAnalytics2015-07-01
AWS Marketplace MeteringAWS.MarketplaceMetering2016-01-14
AWS OpsWorksAWS.OpsWorks2013-02-18
AWS Security Token ServiceAWS.STS2011-06-15
AWS Storage GatewayAWS.StorageGateway2013-06-30
AWS SupportAWS.Support2013-04-15
AWS WAFAWS.WAF2015-08-24
Elastic Load BalancingAWS.ELB2012-06-01
Elastic Load Balancing v2AWS.ELBv22015-12-01
- -## License - -This SDK is distributed under the -[Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0), -see LICENSE.txt and NOTICE.txt for more information. diff --git a/node_modules/aws-sdk/UPGRADING.md b/node_modules/aws-sdk/UPGRADING.md deleted file mode 100644 index f67fd91..0000000 --- a/node_modules/aws-sdk/UPGRADING.md +++ /dev/null @@ -1,157 +0,0 @@ -# @!title Upgrading Notes (1.x to 2.0) - -# Upgrading Notes (1.x to 2.0) - -This document captures breaking changes from 1.x versions to the first -stable 2.x (non-RC) release of the AWS SDK for JavaScript. - -## 1. Automatic Conversion of Base64 and Timestamp Types on Input/Output - -The SDK will now automatically encode and decode base64-encoded values, as well -as timestamp values, on the user's behalf. This change affects any operation -where Base64 or Timestamp values were sent by a request or returned in a -response, i.e., `AWS.DynamoDB` and `AWS.SQS`, which allow for Base64 -encoded values. - -User code that previously did base64 conversion no longer requires this. -Furthermore, values encoded as base64 are now returned as Buffer objects -from server responses (and can also be passed as Buffer input). For -example, the following 1.x `SQS.sendMessage()` parameters: - -```javascript -var params = { - MessageBody: 'Some Message', - MessageAttributes: { - attrName: { - DataType: 'Binary', - BinaryValue: new Buffer('example text').toString('base64') - } - } -}; -``` - -Can be rewritten as: - -```javascript -var params = { - MessageBody: 'Some Message', - MessageAttributes: { - attrName: { - DataType: 'Binary', - BinaryValue: 'example text' - } - } -}; -``` - -And the message will be read as: - -```javascript -sqs.receiveMessage(params, function(err, data) { - // buf is - var buf = data.Messages[0].MessageAttributes.attrName.BinaryValue; - console.log(buf.toString()); // "example text" -}); -``` - -## 2. Moved response.data.RequestId to response.requestId - -The SDK now stores request IDs for all services in a consistent place on the -response object, rather than inside the response.data property. This is to -improve consistency across services that expose request IDs in different ways. -Note that this is also a breaking change that renames the -`response.data.RequestId` property to `response.requestId` -(or `this.requestId` inside of a callback). - -To migrate your code, change: - -```javascript -svc.operation(params, function (err, data) { - console.log('Request ID:', data.RequestId); -}); -``` - -To the following: - -```javascript -svc.operation(params, function () { - console.log('Request ID:', this.requestId); -}); -``` - -## 3. Exposed Wrapper Elements - -If you use {AWS.ElastiCache}, {AWS.RDS}, or {AWS.Redshift}, you must now access -the response through the top-level output property in the response for certain -operations. This change corrects the SDK to behave according to documentation -output, which was previously listing this wrapper element. - -Example: - -`RDS.describeEngineDefaultParameters()` used to return: - -```javascript -{ Parameters: [ ... ] } -``` - -This operation now returns: - -```javascript -{ EngineDefaults: { Parameters: [ ... ] } } -``` - -The full list of affected operations for each service are: - -**AWS.ElastiCache**: authorizeCacheSecurityGroupIngress, createCacheCluster, -createCacheParameterGroup, createCacheSecurityGroup, createCacheSubnetGroup, -createReplicationGroup, deleteCacheCluster, deleteReplicationGroup, -describeEngineDefaultParameters, modifyCacheCluster, modifyCacheSubnetGroup, -modifyReplicationGroup, purchaseReservedCacheNodesOffering, rebootCacheCluster, -revokeCacheSecurityGroupIngress - -**AWS.RDS**: addSourceIdentifierToSubscription, authorizeDBSecurityGroupIngress, -copyDBSnapshot, createDBInstance, createDBInstanceReadReplica, -createDBParameterGroup, createDBSecurityGroup, createDBSnapshot, -createDBSubnetGroup, createEventSubscription, createOptionGroup, -deleteDBInstance, deleteDBSnapshot, deleteEventSubscription, -describeEngineDefaultParameters, modifyDBInstance, modifyDBSubnetGroup, -modifyEventSubscription, modifyOptionGroup, promoteReadReplica, -purchaseReservedDBInstancesOffering, rebootDBInstance, -removeSourceIdentifierFromSubscription, restoreDBInstanceFromDBSnapshot, -restoreDBInstanceToPointInTime, revokeDBSecurityGroupIngress - -**AWS.Redshift**: authorizeClusterSecurityGroupIngress, authorizeSnapshotAccess, -copyClusterSnapshot, createCluster, createClusterParameterGroup, -createClusterSecurityGroup, createClusterSnapshot, createClusterSubnetGroup, -createEventSubscription, createHsmClientCertificate, createHsmConfiguration, -deleteCluster, deleteClusterSnapshot, describeDefaultClusterParameters, -disableSnapshotCopy, enableSnapshotCopy, modifyCluster, -modifyClusterSubnetGroup, modifyEventSubscription, -modifySnapshotCopyRetentionPeriod, purchaseReservedNodeOffering, rebootCluster, -restoreFromClusterSnapshot, revokeClusterSecurityGroupIngress, -revokeSnapshotAccess, rotateEncryptionKey - -## 4. Dropped `.Client` and `.client` Properties - -The `.Client` and `.client` properties have been removed from Service objects. -If you are using the `.Client` property on a Service class or a `.client` -property on an instance of the service, remove these properties from your code. - -Upgrading example: - -The following 1.x code: - -``` -var sts = new AWS.STS.Client(); -// or -var sts = new AWS.STS(); - -sts.client.operation(...); -``` - -Should be changed to the following: - -``` -var sts = new AWS.STS(); -sts.operation(...) -``` diff --git a/node_modules/aws-sdk/apis/acm-2015-12-08.min.json b/node_modules/aws-sdk/apis/acm-2015-12-08.min.json deleted file mode 100644 index 597156f..0000000 --- a/node_modules/aws-sdk/apis/acm-2015-12-08.min.json +++ /dev/null @@ -1,263 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-08", - "endpointPrefix": "acm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "ACM", - "serviceFullName": "AWS Certificate Manager", - "signatureVersion": "v4", - "targetPrefix": "CertificateManager" - }, - "operations": { - "AddTagsToCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn", - "Tags" - ], - "members": { - "CertificateArn": {}, - "Tags": { - "shape": "S3" - } - } - } - }, - "DeleteCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - } - }, - "DescribeCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": { - "type": "structure", - "members": { - "CertificateArn": {}, - "DomainName": {}, - "SubjectAlternativeNames": { - "shape": "Sc" - }, - "DomainValidationOptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "ValidationEmails": { - "type": "list", - "member": {} - }, - "ValidationDomain": {} - } - } - }, - "Serial": {}, - "Subject": {}, - "Issuer": {}, - "CreatedAt": { - "type": "timestamp" - }, - "IssuedAt": { - "type": "timestamp" - }, - "Status": {}, - "RevokedAt": { - "type": "timestamp" - }, - "RevocationReason": {}, - "NotBefore": { - "type": "timestamp" - }, - "NotAfter": { - "type": "timestamp" - }, - "KeyAlgorithm": {}, - "SignatureAlgorithm": {}, - "InUseBy": { - "type": "list", - "member": {} - }, - "FailureReason": {} - } - } - } - } - }, - "GetCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": {}, - "CertificateChain": {} - } - } - }, - "ListCertificates": { - "input": { - "type": "structure", - "members": { - "CertificateStatuses": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": {}, - "CertificateSummaryList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {}, - "DomainName": {} - } - } - } - } - } - }, - "ListTagsForCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S3" - } - } - } - }, - "RemoveTagsFromCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn", - "Tags" - ], - "members": { - "CertificateArn": {}, - "Tags": { - "shape": "S3" - } - } - } - }, - "RequestCertificate": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "SubjectAlternativeNames": { - "shape": "Sc" - }, - "IdempotencyToken": {}, - "DomainValidationOptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName", - "ValidationDomain" - ], - "members": { - "DomainName": {}, - "ValidationDomain": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "CertificateArn": {} - } - } - }, - "ResendValidationEmail": { - "input": { - "type": "structure", - "required": [ - "CertificateArn", - "Domain", - "ValidationDomain" - ], - "members": { - "CertificateArn": {}, - "Domain": {}, - "ValidationDomain": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sc": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json b/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json deleted file mode 100644 index 036e358..0000000 --- a/node_modules/aws-sdk/apis/acm-2015-12-08.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "ListCertificates": { - "limit_key": "MaxItems", - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "CertificateSummaryList" - } - } -} diff --git a/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json b/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json deleted file mode 100644 index fc7db1c..0000000 --- a/node_modules/aws-sdk/apis/apigateway-2015-07-09.min.json +++ /dev/null @@ -1,3154 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-09", - "endpointPrefix": "apigateway", - "protocol": "rest-json", - "serviceFullName": "Amazon API Gateway", - "signatureVersion": "v4" - }, - "operations": { - "CreateApiKey": { - "http": { - "requestUri": "/apikeys", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "name": {}, - "description": {}, - "enabled": { - "type": "boolean" - }, - "generateDistinctId": { - "type": "boolean" - }, - "value": {}, - "stageKeys": { - "type": "list", - "member": { - "type": "structure", - "members": { - "restApiId": {}, - "stageName": {} - } - } - } - } - }, - "output": { - "shape": "S6" - } - }, - "CreateAuthorizer": { - "http": { - "requestUri": "/restapis/{restapi_id}/authorizers", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "name", - "type", - "identitySource" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "name": {}, - "type": {}, - "providerARNs": { - "shape": "Sb" - }, - "authType": {}, - "authorizerUri": {}, - "authorizerCredentials": {}, - "identitySource": {}, - "identityValidationExpression": {}, - "authorizerResultTtlInSeconds": { - "type": "integer" - } - } - }, - "output": { - "shape": "Se" - } - }, - "CreateBasePathMapping": { - "http": { - "requestUri": "/domainnames/{domain_name}/basepathmappings", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "restApiId" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": {}, - "restApiId": {}, - "stage": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "CreateDeployment": { - "http": { - "requestUri": "/restapis/{restapi_id}/deployments", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": {}, - "stageDescription": {}, - "description": {}, - "cacheClusterEnabled": { - "type": "boolean" - }, - "cacheClusterSize": {}, - "variables": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "Sl" - } - }, - "CreateDomainName": { - "http": { - "requestUri": "/domainnames", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "certificateName", - "certificateBody", - "certificatePrivateKey", - "certificateChain" - ], - "members": { - "domainName": {}, - "certificateName": {}, - "certificateBody": {}, - "certificatePrivateKey": {}, - "certificateChain": {} - } - }, - "output": { - "shape": "Sq" - } - }, - "CreateModel": { - "http": { - "requestUri": "/restapis/{restapi_id}/models", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "name", - "contentType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "name": {}, - "description": {}, - "schema": {}, - "contentType": {} - } - }, - "output": { - "shape": "Ss" - } - }, - "CreateResource": { - "http": { - "requestUri": "/restapis/{restapi_id}/resources/{parent_id}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "parentId", - "pathPart" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "parentId": { - "location": "uri", - "locationName": "parent_id" - }, - "pathPart": {} - } - }, - "output": { - "shape": "Su" - } - }, - "CreateRestApi": { - "http": { - "requestUri": "/restapis", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "description": {}, - "cloneFrom": {} - } - }, - "output": { - "shape": "S16" - } - }, - "CreateStage": { - "http": { - "requestUri": "/restapis/{restapi_id}/stages", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": {}, - "deploymentId": {}, - "description": {}, - "cacheClusterEnabled": { - "type": "boolean" - }, - "cacheClusterSize": {}, - "variables": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "S18" - } - }, - "CreateUsagePlan": { - "http": { - "requestUri": "/usageplans", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "description": {}, - "apiStages": { - "shape": "S1g" - }, - "throttle": { - "shape": "S1i" - }, - "quota": { - "shape": "S1j" - } - } - }, - "output": { - "shape": "S1l" - } - }, - "CreateUsagePlanKey": { - "http": { - "requestUri": "/usageplans/{usageplanId}/keys", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId", - "keyType" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": {}, - "keyType": {} - } - }, - "output": { - "shape": "S1n" - } - }, - "DeleteApiKey": { - "http": { - "method": "DELETE", - "requestUri": "/apikeys/{api_Key}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "apiKey" - ], - "members": { - "apiKey": { - "location": "uri", - "locationName": "api_Key" - } - } - } - }, - "DeleteAuthorizer": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - } - } - } - }, - "DeleteBasePathMapping": { - "http": { - "method": "DELETE", - "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "basePath" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": { - "location": "uri", - "locationName": "base_path" - } - } - } - }, - "DeleteClientCertificate": { - "http": { - "method": "DELETE", - "requestUri": "/clientcertificates/{clientcertificate_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "clientCertificateId" - ], - "members": { - "clientCertificateId": { - "location": "uri", - "locationName": "clientcertificate_id" - } - } - } - }, - "DeleteDeployment": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "uri", - "locationName": "deployment_id" - } - } - } - }, - "DeleteDomainName": { - "http": { - "method": "DELETE", - "requestUri": "/domainnames/{domain_name}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - } - } - } - }, - "DeleteIntegration": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - } - }, - "DeleteIntegrationResponse": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - } - }, - "DeleteMethod": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - } - }, - "DeleteMethodResponse": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - } - }, - "DeleteModel": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/models/{model_name}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - } - } - } - }, - "DeleteResource": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - } - } - } - }, - "DeleteRestApi": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - } - } - } - }, - "DeleteStage": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - } - }, - "DeleteUsagePlan": { - "http": { - "method": "DELETE", - "requestUri": "/usageplans/{usageplanId}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - } - } - } - }, - "DeleteUsagePlanKey": { - "http": { - "method": "DELETE", - "requestUri": "/usageplans/{usageplanId}/keys/{keyId}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "uri", - "locationName": "keyId" - } - } - } - }, - "FlushStageAuthorizersCache": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/authorizers", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - } - }, - "FlushStageCache": { - "http": { - "method": "DELETE", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/cache/data", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - } - }, - "GenerateClientCertificate": { - "http": { - "requestUri": "/clientcertificates", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "description": {} - } - }, - "output": { - "shape": "S27" - } - }, - "GetAccount": { - "http": { - "method": "GET", - "requestUri": "/account" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "shape": "S29" - } - }, - "GetApiKey": { - "http": { - "method": "GET", - "requestUri": "/apikeys/{api_Key}" - }, - "input": { - "type": "structure", - "required": [ - "apiKey" - ], - "members": { - "apiKey": { - "location": "uri", - "locationName": "api_Key" - }, - "includeValue": { - "location": "querystring", - "locationName": "includeValue", - "type": "boolean" - } - } - }, - "output": { - "shape": "S6" - } - }, - "GetApiKeys": { - "http": { - "method": "GET", - "requestUri": "/apikeys" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "nameQuery": { - "location": "querystring", - "locationName": "name" - }, - "includeValues": { - "location": "querystring", - "locationName": "includeValues", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "warnings": { - "shape": "S8" - }, - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S6" - } - } - } - } - }, - "GetAuthorizer": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - } - } - }, - "output": { - "shape": "Se" - } - }, - "GetAuthorizers": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/authorizers" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Se" - } - } - } - } - }, - "GetBasePathMapping": { - "http": { - "method": "GET", - "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}" - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "basePath" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": { - "location": "uri", - "locationName": "base_path" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "GetBasePathMappings": { - "http": { - "method": "GET", - "requestUri": "/domainnames/{domain_name}/basepathmappings" - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sg" - } - } - } - } - }, - "GetClientCertificate": { - "http": { - "method": "GET", - "requestUri": "/clientcertificates/{clientcertificate_id}" - }, - "input": { - "type": "structure", - "required": [ - "clientCertificateId" - ], - "members": { - "clientCertificateId": { - "location": "uri", - "locationName": "clientcertificate_id" - } - } - }, - "output": { - "shape": "S27" - } - }, - "GetClientCertificates": { - "http": { - "method": "GET", - "requestUri": "/clientcertificates" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S27" - } - } - } - } - }, - "GetDeployment": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "uri", - "locationName": "deployment_id" - } - } - }, - "output": { - "shape": "Sl" - } - }, - "GetDeployments": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/deployments" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sl" - } - } - } - } - }, - "GetDomainName": { - "http": { - "method": "GET", - "requestUri": "/domainnames/{domain_name}" - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - } - } - }, - "output": { - "shape": "Sq" - } - }, - "GetDomainNames": { - "http": { - "method": "GET", - "requestUri": "/domainnames" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Sq" - } - } - } - } - }, - "GetExport": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/exports/{export_type}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName", - "exportType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - }, - "exportType": { - "location": "uri", - "locationName": "export_type" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - }, - "accepts": { - "location": "header", - "locationName": "Accept" - } - } - }, - "output": { - "type": "structure", - "members": { - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "contentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - } - }, - "GetIntegration": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - }, - "output": { - "shape": "S11" - } - }, - "GetIntegrationResponse": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - }, - "output": { - "shape": "S14" - } - }, - "GetMethod": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - } - } - }, - "output": { - "shape": "Sw" - } - }, - "GetMethodResponse": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "GetModel": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/models/{model_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - }, - "flatten": { - "location": "querystring", - "locationName": "flatten", - "type": "boolean" - } - } - }, - "output": { - "shape": "Ss" - } - }, - "GetModelTemplate": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/models/{model_name}/default_template" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - } - } - }, - "output": { - "type": "structure", - "members": { - "value": {} - } - } - }, - "GetModels": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/models" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Ss" - } - } - } - } - }, - "GetResource": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - } - } - }, - "output": { - "shape": "Su" - } - }, - "GetResources": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/resources" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "Su" - } - } - } - } - }, - "GetRestApi": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - } - } - }, - "output": { - "shape": "S16" - } - }, - "GetRestApis": { - "http": { - "method": "GET", - "requestUri": "/restapis" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S16" - } - } - } - } - }, - "GetSdk": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}/sdks/{sdk_type}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName", - "sdkType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - }, - "sdkType": { - "location": "uri", - "locationName": "sdk_type" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - } - } - }, - "output": { - "type": "structure", - "members": { - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "contentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - } - }, - "GetStage": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - } - } - }, - "output": { - "shape": "S18" - } - }, - "GetStages": { - "http": { - "method": "GET", - "requestUri": "/restapis/{restapi_id}/stages" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "querystring", - "locationName": "deploymentId" - } - } - }, - "output": { - "type": "structure", - "members": { - "item": { - "type": "list", - "member": { - "shape": "S18" - } - } - } - } - }, - "GetUsage": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}/usage" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "startDate", - "endDate" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "querystring", - "locationName": "keyId" - }, - "startDate": { - "location": "querystring", - "locationName": "startDate" - }, - "endDate": { - "location": "querystring", - "locationName": "endDate" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "shape": "S3q" - } - }, - "GetUsagePlan": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - } - } - }, - "output": { - "shape": "S1l" - } - }, - "GetUsagePlanKey": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}/keys/{keyId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "uri", - "locationName": "keyId" - } - } - }, - "output": { - "shape": "S1n" - } - }, - "GetUsagePlanKeys": { - "http": { - "method": "GET", - "requestUri": "/usageplans/{usageplanId}/keys" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "position": { - "location": "querystring", - "locationName": "position" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - }, - "nameQuery": { - "location": "querystring", - "locationName": "name" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S1n" - } - } - } - } - }, - "GetUsagePlans": { - "http": { - "method": "GET", - "requestUri": "/usageplans" - }, - "input": { - "type": "structure", - "members": { - "position": { - "location": "querystring", - "locationName": "position" - }, - "keyId": { - "location": "querystring", - "locationName": "keyId" - }, - "limit": { - "location": "querystring", - "locationName": "limit", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "position": {}, - "items": { - "locationName": "item", - "type": "list", - "member": { - "shape": "S1l" - } - } - } - } - }, - "ImportApiKeys": { - "http": { - "requestUri": "/apikeys?mode=import", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "body", - "format" - ], - "members": { - "body": { - "type": "blob" - }, - "format": { - "location": "querystring", - "locationName": "format" - }, - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - } - }, - "payload": "body" - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "S8" - }, - "warnings": { - "shape": "S8" - } - } - } - }, - "ImportRestApi": { - "http": { - "requestUri": "/restapis?mode=import", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "body" - ], - "members": { - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - }, - "output": { - "shape": "S16" - } - }, - "PutIntegration": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "type" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "type": {}, - "integrationHttpMethod": { - "locationName": "httpMethod" - }, - "uri": {}, - "credentials": {}, - "requestParameters": { - "shape": "Sk" - }, - "requestTemplates": { - "shape": "Sk" - }, - "passthroughBehavior": {}, - "cacheNamespace": {}, - "cacheKeyParameters": { - "shape": "S8" - } - } - }, - "output": { - "shape": "S11" - } - }, - "PutIntegrationResponse": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "selectionPattern": {}, - "responseParameters": { - "shape": "Sk" - }, - "responseTemplates": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "S14" - } - }, - "PutMethod": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "authorizationType" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "authorizationType": {}, - "authorizerId": {}, - "apiKeyRequired": { - "type": "boolean" - }, - "requestParameters": { - "shape": "Sx" - }, - "requestModels": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "Sw" - } - }, - "PutMethodResponse": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "responseParameters": { - "shape": "Sx" - }, - "responseModels": { - "shape": "Sk" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "PutRestApi": { - "http": { - "method": "PUT", - "requestUri": "/restapis/{restapi_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "body" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "mode": { - "location": "querystring", - "locationName": "mode" - }, - "failOnWarnings": { - "location": "querystring", - "locationName": "failonwarnings", - "type": "boolean" - }, - "parameters": { - "shape": "Sk", - "location": "querystring" - }, - "body": { - "type": "blob" - } - }, - "payload": "body" - }, - "output": { - "shape": "S16" - } - }, - "TestInvokeAuthorizer": { - "http": { - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - }, - "headers": { - "shape": "S4e" - }, - "pathWithQueryString": {}, - "body": {}, - "stageVariables": { - "shape": "Sk" - }, - "additionalContext": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": { - "clientStatus": { - "type": "integer" - }, - "log": {}, - "latency": { - "type": "long" - }, - "principalId": {}, - "policy": {}, - "authorization": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "claims": { - "shape": "Sk" - } - } - } - }, - "TestInvokeMethod": { - "http": { - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "pathWithQueryString": {}, - "body": {}, - "headers": { - "shape": "S4e" - }, - "clientCertificateId": {}, - "stageVariables": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": { - "type": "integer" - }, - "body": {}, - "headers": { - "shape": "S4e" - }, - "log": {}, - "latency": { - "type": "long" - } - } - } - }, - "UpdateAccount": { - "http": { - "method": "PATCH", - "requestUri": "/account" - }, - "input": { - "type": "structure", - "members": { - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S29" - } - }, - "UpdateApiKey": { - "http": { - "method": "PATCH", - "requestUri": "/apikeys/{api_Key}" - }, - "input": { - "type": "structure", - "required": [ - "apiKey" - ], - "members": { - "apiKey": { - "location": "uri", - "locationName": "api_Key" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S6" - } - }, - "UpdateAuthorizer": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/authorizers/{authorizer_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "authorizerId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "authorizerId": { - "location": "uri", - "locationName": "authorizer_id" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Se" - } - }, - "UpdateBasePathMapping": { - "http": { - "method": "PATCH", - "requestUri": "/domainnames/{domain_name}/basepathmappings/{base_path}" - }, - "input": { - "type": "structure", - "required": [ - "domainName", - "basePath" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "basePath": { - "location": "uri", - "locationName": "base_path" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "UpdateClientCertificate": { - "http": { - "method": "PATCH", - "requestUri": "/clientcertificates/{clientcertificate_id}" - }, - "input": { - "type": "structure", - "required": [ - "clientCertificateId" - ], - "members": { - "clientCertificateId": { - "location": "uri", - "locationName": "clientcertificate_id" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S27" - } - }, - "UpdateDeployment": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/deployments/{deployment_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "deploymentId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "deploymentId": { - "location": "uri", - "locationName": "deployment_id" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Sl" - } - }, - "UpdateDomainName": { - "http": { - "method": "PATCH", - "requestUri": "/domainnames/{domain_name}" - }, - "input": { - "type": "structure", - "required": [ - "domainName" - ], - "members": { - "domainName": { - "location": "uri", - "locationName": "domain_name" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Sq" - } - }, - "UpdateIntegration": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S11" - } - }, - "UpdateIntegrationResponse": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/integration/responses/{status_code}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S14" - } - }, - "UpdateMethod": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Sw" - } - }, - "UpdateMethodResponse": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}/methods/{http_method}/responses/{status_code}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId", - "httpMethod", - "statusCode" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "httpMethod": { - "location": "uri", - "locationName": "http_method" - }, - "statusCode": { - "location": "uri", - "locationName": "status_code" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Sz" - } - }, - "UpdateModel": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/models/{model_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "modelName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "modelName": { - "location": "uri", - "locationName": "model_name" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Ss" - } - }, - "UpdateResource": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/resources/{resource_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "resourceId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "resourceId": { - "location": "uri", - "locationName": "resource_id" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "Su" - } - }, - "UpdateRestApi": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S16" - } - }, - "UpdateStage": { - "http": { - "method": "PATCH", - "requestUri": "/restapis/{restapi_id}/stages/{stage_name}" - }, - "input": { - "type": "structure", - "required": [ - "restApiId", - "stageName" - ], - "members": { - "restApiId": { - "location": "uri", - "locationName": "restapi_id" - }, - "stageName": { - "location": "uri", - "locationName": "stage_name" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S18" - } - }, - "UpdateUsage": { - "http": { - "method": "PATCH", - "requestUri": "/usageplans/{usageplanId}/keys/{keyId}/usage" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId", - "keyId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "keyId": { - "location": "uri", - "locationName": "keyId" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S3q" - } - }, - "UpdateUsagePlan": { - "http": { - "method": "PATCH", - "requestUri": "/usageplans/{usageplanId}" - }, - "input": { - "type": "structure", - "required": [ - "usagePlanId" - ], - "members": { - "usagePlanId": { - "location": "uri", - "locationName": "usageplanId" - }, - "patchOperations": { - "shape": "S4k" - } - } - }, - "output": { - "shape": "S1l" - } - } - }, - "shapes": { - "S6": { - "type": "structure", - "members": { - "id": {}, - "value": {}, - "name": {}, - "description": {}, - "enabled": { - "type": "boolean" - }, - "createdDate": { - "type": "timestamp" - }, - "lastUpdatedDate": { - "type": "timestamp" - }, - "stageKeys": { - "shape": "S8" - } - } - }, - "S8": { - "type": "list", - "member": {} - }, - "Sb": { - "type": "list", - "member": {} - }, - "Se": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "type": {}, - "providerARNs": { - "shape": "Sb" - }, - "authType": {}, - "authorizerUri": {}, - "authorizerCredentials": {}, - "identitySource": {}, - "identityValidationExpression": {}, - "authorizerResultTtlInSeconds": { - "type": "integer" - } - } - }, - "Sg": { - "type": "structure", - "members": { - "basePath": {}, - "restApiId": {}, - "stage": {} - } - }, - "Sk": { - "type": "map", - "key": {}, - "value": {} - }, - "Sl": { - "type": "structure", - "members": { - "id": {}, - "description": {}, - "createdDate": { - "type": "timestamp" - }, - "apiSummary": { - "type": "map", - "key": {}, - "value": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "authorizationType": {}, - "apiKeyRequired": { - "type": "boolean" - } - } - } - } - } - } - }, - "Sq": { - "type": "structure", - "members": { - "domainName": {}, - "certificateName": {}, - "certificateUploadDate": { - "type": "timestamp" - }, - "distributionDomainName": {} - } - }, - "Ss": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "description": {}, - "schema": {}, - "contentType": {} - } - }, - "Su": { - "type": "structure", - "members": { - "id": {}, - "parentId": {}, - "pathPart": {}, - "path": {}, - "resourceMethods": { - "type": "map", - "key": {}, - "value": { - "shape": "Sw" - } - } - } - }, - "Sw": { - "type": "structure", - "members": { - "httpMethod": {}, - "authorizationType": {}, - "authorizerId": {}, - "apiKeyRequired": { - "type": "boolean" - }, - "requestParameters": { - "shape": "Sx" - }, - "requestModels": { - "shape": "Sk" - }, - "methodResponses": { - "type": "map", - "key": {}, - "value": { - "shape": "Sz" - } - }, - "methodIntegration": { - "shape": "S11" - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": { - "type": "boolean" - } - }, - "Sz": { - "type": "structure", - "members": { - "statusCode": {}, - "responseParameters": { - "shape": "Sx" - }, - "responseModels": { - "shape": "Sk" - } - } - }, - "S11": { - "type": "structure", - "members": { - "type": {}, - "httpMethod": {}, - "uri": {}, - "credentials": {}, - "requestParameters": { - "shape": "Sk" - }, - "requestTemplates": { - "shape": "Sk" - }, - "passthroughBehavior": {}, - "cacheNamespace": {}, - "cacheKeyParameters": { - "shape": "S8" - }, - "integrationResponses": { - "type": "map", - "key": {}, - "value": { - "shape": "S14" - } - } - } - }, - "S14": { - "type": "structure", - "members": { - "statusCode": {}, - "selectionPattern": {}, - "responseParameters": { - "shape": "Sk" - }, - "responseTemplates": { - "shape": "Sk" - } - } - }, - "S16": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "description": {}, - "createdDate": { - "type": "timestamp" - }, - "warnings": { - "shape": "S8" - } - } - }, - "S18": { - "type": "structure", - "members": { - "deploymentId": {}, - "clientCertificateId": {}, - "stageName": {}, - "description": {}, - "cacheClusterEnabled": { - "type": "boolean" - }, - "cacheClusterSize": {}, - "cacheClusterStatus": {}, - "methodSettings": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "metricsEnabled": { - "type": "boolean" - }, - "loggingLevel": {}, - "dataTraceEnabled": { - "type": "boolean" - }, - "throttlingBurstLimit": { - "type": "integer" - }, - "throttlingRateLimit": { - "type": "double" - }, - "cachingEnabled": { - "type": "boolean" - }, - "cacheTtlInSeconds": { - "type": "integer" - }, - "cacheDataEncrypted": { - "type": "boolean" - }, - "requireAuthorizationForCacheControl": { - "type": "boolean" - }, - "unauthorizedCacheControlHeaderStrategy": {} - } - } - }, - "variables": { - "shape": "Sk" - }, - "createdDate": { - "type": "timestamp" - }, - "lastUpdatedDate": { - "type": "timestamp" - } - } - }, - "S1g": { - "type": "list", - "member": { - "type": "structure", - "members": { - "apiId": {}, - "stage": {} - } - } - }, - "S1i": { - "type": "structure", - "members": { - "burstLimit": { - "type": "integer" - }, - "rateLimit": { - "type": "double" - } - } - }, - "S1j": { - "type": "structure", - "members": { - "limit": { - "type": "integer" - }, - "offset": { - "type": "integer" - }, - "period": {} - } - }, - "S1l": { - "type": "structure", - "members": { - "id": {}, - "name": {}, - "description": {}, - "apiStages": { - "shape": "S1g" - }, - "throttle": { - "shape": "S1i" - }, - "quota": { - "shape": "S1j" - } - } - }, - "S1n": { - "type": "structure", - "members": { - "id": {}, - "type": {}, - "value": {}, - "name": {} - } - }, - "S27": { - "type": "structure", - "members": { - "clientCertificateId": {}, - "description": {}, - "pemEncodedCertificate": {}, - "createdDate": { - "type": "timestamp" - }, - "expirationDate": { - "type": "timestamp" - } - } - }, - "S29": { - "type": "structure", - "members": { - "cloudwatchRoleArn": {}, - "throttleSettings": { - "shape": "S1i" - }, - "features": { - "shape": "S8" - }, - "apiKeyVersion": {} - } - }, - "S3q": { - "type": "structure", - "members": { - "usagePlanId": {}, - "startDate": {}, - "endDate": {}, - "position": {}, - "items": { - "locationName": "values", - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "list", - "member": { - "type": "long" - } - } - } - } - } - }, - "S4e": { - "type": "map", - "key": {}, - "value": {} - }, - "S4k": { - "type": "list", - "member": { - "type": "structure", - "members": { - "op": {}, - "path": {}, - "value": {}, - "from": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json b/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json deleted file mode 100644 index 7a6965b..0000000 --- a/node_modules/aws-sdk/apis/apigateway-2015-07-09.paginators.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "pagination": { - "GetApiKeys": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetBasePathMappings": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetClientCertificates": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetDeployments": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetDomainNames": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetModels": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetResources": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetRestApis": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetUsage": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetUsagePlans": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - }, - "GetUsagePlanKeys": { - "input_token": "position", - "output_token": "position", - "limit_key": "limit", - "result_key": "items" - } - } -} diff --git a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json deleted file mode 100644 index 53415ec..0000000 --- a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.examples.json +++ /dev/null @@ -1,257 +0,0 @@ -{ - "version": "1.0", - "examples": { - "DeleteScalingPolicy": [ - { - "input": { - "PolicyName": "web-app-cpu-lt-25", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes a scaling policy for the Amazon ECS service called web-app, which is running in the default cluster.", - "id": "to-delete-a-scaling-policy-1470863892689", - "title": "To delete a scaling policy" - } - ], - "DeregisterScalableTarget": [ - { - "input": { - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters a scalable target for an Amazon ECS service called web-app that is running in the default cluster.", - "id": "to-deregister-a-scalable-target-1470864164895", - "title": "To deregister a scalable target" - } - ], - "DescribeScalableTargets": [ - { - "input": { - "ServiceNamespace": "ecs" - }, - "output": { - "ScalableTargets": [ - { - "CreationTime": "2016-05-06T11:21:46.199Z", - "MaxCapacity": 10, - "MinCapacity": 1, - "ResourceId": "service/default/web-app", - "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scalable targets for the ecs service namespace.", - "id": "to-describe-scalable-targets-1470864286961", - "title": "To describe scalable targets" - } - ], - "DescribeScalingActivities": [ - { - "input": { - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "output": { - "ScalingActivities": [ - { - "ActivityId": "e6c5f7d1-dbbb-4a3f-89b2-51f33e766399", - "Cause": "monitor alarm web-app-cpu-lt-25 in state ALARM triggered policy web-app-cpu-lt-25", - "Description": "Setting desired count to 1.", - "EndTime": "2016-05-06T16:04:32.111Z", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs", - "StartTime": "2016-05-06T16:03:58.171Z", - "StatusCode": "Successful", - "StatusMessage": "Successfully set desired count to 1. Change successfully fulfilled by ecs." - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scaling activities for an Amazon ECS service called web-app that is running in the default cluster.", - "id": "to-describe-scaling-activities-for-a-scalable-target-1470864398629", - "title": "To describe scaling activities for a scalable target" - } - ], - "DescribeScalingPolicies": [ - { - "input": { - "ServiceNamespace": "ecs" - }, - "output": { - "NextToken": "", - "ScalingPolicies": [ - { - "Alarms": [ - { - "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:web-app-cpu-gt-75", - "AlarmName": "web-app-cpu-gt-75" - } - ], - "CreationTime": "2016-05-06T12:11:39.230Z", - "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75", - "PolicyName": "web-app-cpu-gt-75", - "PolicyType": "StepScaling", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs", - "StepScalingPolicyConfiguration": { - "AdjustmentType": "PercentChangeInCapacity", - "Cooldown": 60, - "StepAdjustments": [ - { - "MetricIntervalLowerBound": 0, - "ScalingAdjustment": 200 - } - ] - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scaling policies for the ecs service namespace.", - "id": "to-describe-scaling-policies-1470864609734", - "title": "To describe scaling policies" - } - ], - "PutScalingPolicy": [ - { - "input": { - "PolicyName": "web-app-cpu-gt-75", - "PolicyType": "StepScaling", - "ResourceId": "service/default/web-app", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs", - "StepScalingPolicyConfiguration": { - "AdjustmentType": "PercentChangeInCapacity", - "Cooldown": 60, - "StepAdjustments": [ - { - "MetricIntervalLowerBound": 0, - "ScalingAdjustment": 200 - } - ] - } - }, - "output": { - "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/ecs/service/default/web-app:policyName/web-app-cpu-gt-75" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example applies a scaling policy to an Amazon ECS service called web-app in the default cluster. The policy increases the desired count of the service by 200%, with a cool down period of 60 seconds.", - "id": "to-apply-a-scaling-policy-to-an-amazon-ecs-service-1470864779862", - "title": "To apply a scaling policy to an Amazon ECS service" - }, - { - "input": { - "PolicyName": "fleet-cpu-gt-75", - "PolicyType": "StepScaling", - "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3", - "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity", - "ServiceNamespace": "ec2", - "StepScalingPolicyConfiguration": { - "AdjustmentType": "PercentChangeInCapacity", - "Cooldown": 180, - "StepAdjustments": [ - { - "MetricIntervalLowerBound": 0, - "ScalingAdjustment": 200 - } - ] - } - }, - "output": { - "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678910:scalingPolicy:89406401-0cb7-4130-b770-d97cca0e446b:resource/ec2/spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3:policyName/fleet-cpu-gt-75" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example applies a scaling policy to an Amazon EC2 Spot fleet. The policy increases the target capacity of the spot fleet by 200%, with a cool down period of 180 seconds.\",\n ", - "id": "to-apply-a-scaling-policy-to-an-amazon-ec2-spot-fleet-1472073278469", - "title": "To apply a scaling policy to an Amazon EC2 Spot fleet" - } - ], - "RegisterScalableTarget": [ - { - "input": { - "MaxCapacity": 10, - "MinCapacity": 1, - "ResourceId": "service/default/web-app", - "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingECSRole", - "ScalableDimension": "ecs:service:DesiredCount", - "ServiceNamespace": "ecs" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers a scalable target from an Amazon ECS service called web-app that is running on the default cluster, with a minimum desired count of 1 task and a maximum desired count of 10 tasks.", - "id": "to-register-a-new-scalable-target-1470864910380", - "title": "To register an ECS service as a scalable target" - }, - { - "input": { - "MaxCapacity": 10, - "MinCapacity": 1, - "ResourceId": "spot-fleet-request/sfr-45e69d8a-be48-4539-bbf3-3464e99c50c3", - "RoleARN": "arn:aws:iam::012345678910:role/ApplicationAutoscalingSpotRole", - "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity", - "ServiceNamespace": "ec2" - }, - "output": { - }, - "comments": { - }, - "description": "This example registers a scalable target from an Amazon EC2 Spot fleet with a minimum target capacity of 1 and a maximum of 10.", - "id": "to-register-an-ec2-spot-fleet-as-a-scalable-target-1472072899649", - "title": "To register an EC2 Spot fleet as a scalable target" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json deleted file mode 100644 index 469d9d0..0000000 --- a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.min.json +++ /dev/null @@ -1,330 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-02-06", - "endpointPrefix": "autoscaling", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Application Auto Scaling", - "signatureVersion": "v4", - "signingName": "application-autoscaling", - "targetPrefix": "AnyScaleFrontendService" - }, - "operations": { - "DeleteScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName", - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "PolicyName": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterScalableTarget": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeScalableTargets": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace" - ], - "members": { - "ServiceNamespace": {}, - "ResourceIds": { - "shape": "S9" - }, - "ScalableDimension": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalableTargets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ServiceNamespace", - "ResourceId", - "ScalableDimension", - "MinCapacity", - "MaxCapacity", - "RoleARN", - "CreationTime" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MinCapacity": { - "type": "integer" - }, - "MaxCapacity": { - "type": "integer" - }, - "RoleARN": {}, - "CreationTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeScalingActivities": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingActivities": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ActivityId", - "ServiceNamespace", - "ResourceId", - "ScalableDimension", - "Description", - "Cause", - "StartTime", - "StatusCode" - ], - "members": { - "ActivityId": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "Description": {}, - "Cause": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "StatusCode": {}, - "StatusMessage": {}, - "Details": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeScalingPolicies": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace" - ], - "members": { - "PolicyNames": { - "shape": "S9" - }, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "PolicyARN", - "PolicyName", - "ServiceNamespace", - "ResourceId", - "ScalableDimension", - "PolicyType", - "CreationTime" - ], - "members": { - "PolicyARN": {}, - "PolicyName": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "PolicyType": {}, - "StepScalingPolicyConfiguration": { - "shape": "St" - }, - "Alarms": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AlarmName", - "AlarmARN" - ], - "members": { - "AlarmName": {}, - "AlarmARN": {} - } - } - }, - "CreationTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName", - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "PolicyName": {}, - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "PolicyType": {}, - "StepScalingPolicyConfiguration": { - "shape": "St" - } - } - }, - "output": { - "type": "structure", - "required": [ - "PolicyARN" - ], - "members": { - "PolicyARN": {} - } - } - }, - "RegisterScalableTarget": { - "input": { - "type": "structure", - "required": [ - "ServiceNamespace", - "ResourceId", - "ScalableDimension" - ], - "members": { - "ServiceNamespace": {}, - "ResourceId": {}, - "ScalableDimension": {}, - "MinCapacity": { - "type": "integer" - }, - "MaxCapacity": { - "type": "integer" - }, - "RoleARN": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S9": { - "type": "list", - "member": {} - }, - "St": { - "type": "structure", - "members": { - "AdjustmentType": {}, - "StepAdjustments": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ScalingAdjustment" - ], - "members": { - "MetricIntervalLowerBound": { - "type": "double" - }, - "MetricIntervalUpperBound": { - "type": "double" - }, - "ScalingAdjustment": { - "type": "integer" - } - } - } - }, - "MinAdjustmentMagnitude": { - "type": "integer" - }, - "Cooldown": { - "type": "integer" - }, - "MetricAggregationType": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json b/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json deleted file mode 100644 index 97ae600..0000000 --- a/node_modules/aws-sdk/apis/application-autoscaling-2016-02-06.paginators.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "pagination": { - "DescribeScalableTargets": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ScalableTargets" - }, - "DescribeScalingPolicies": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ScalingPolicies" - }, - "DescribeScalingActivities": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ScalingActivities" - } - } -} diff --git a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json deleted file mode 100644 index 9dcaf88..0000000 --- a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.examples.json +++ /dev/null @@ -1,1395 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AttachInstances": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified instance to the specified Auto Scaling group.", - "id": "autoscaling-attach-instances-1", - "title": "To attach an instance to an Auto Scaling group" - } - ], - "AttachLoadBalancerTargetGroups": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "TargetGroupARNs": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified target group to the specified Auto Scaling group.", - "id": "autoscaling-attach-load-balancer-target-groups-1", - "title": "To attach a target group to an Auto Scaling group" - } - ], - "AttachLoadBalancers": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified load balancer to the specified Auto Scaling group.", - "id": "autoscaling-attach-load-balancers-1", - "title": "To attach a load balancer to an Auto Scaling group" - } - ], - "CompleteLifecycleAction": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleActionResult": "CONTINUE", - "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635", - "LifecycleHookName": "my-lifecycle-hook" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example notifies Auto Scaling that the specified lifecycle action is complete so that it can finish launching or terminating the instance.", - "id": "autoscaling-complete-lifecycle-action-1", - "title": "To complete the lifecycle action" - } - ], - "CreateAutoScalingGroup": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LaunchConfigurationName": "my-launch-config", - "MaxSize": 3, - "MinSize": 1, - "VPCZoneIdentifier": "subnet-4176792c" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Auto Scaling group.", - "id": "autoscaling-create-auto-scaling-group-1", - "title": "To create an Auto Scaling group" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "AvailabilityZones": [ - "us-west-2c" - ], - "HealthCheckGracePeriod": 120, - "HealthCheckType": "ELB", - "LaunchConfigurationName": "my-launch-config", - "LoadBalancerNames": [ - "my-load-balancer" - ], - "MaxSize": 3, - "MinSize": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Auto Scaling group and attaches the specified Classic Load Balancer.", - "id": "autoscaling-create-auto-scaling-group-2", - "title": "To create an Auto Scaling group with an attached load balancer" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "HealthCheckGracePeriod": 120, - "HealthCheckType": "ELB", - "LaunchConfigurationName": "my-launch-config", - "MaxSize": 3, - "MinSize": 1, - "TargetGroupARNs": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ], - "VPCZoneIdentifier": "subnet-4176792c, subnet-65ea5f08" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Auto Scaling group and attaches the specified target group.", - "id": "autoscaling-create-auto-scaling-group-3", - "title": "To create an Auto Scaling group with an attached target group" - } - ], - "CreateLaunchConfiguration": [ - { - "input": { - "IamInstanceProfile": "my-iam-role", - "ImageId": "ami-12345678", - "InstanceType": "m3.medium", - "LaunchConfigurationName": "my-launch-config", - "SecurityGroups": [ - "sg-eb2af88e" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a launch configuration.", - "id": "autoscaling-create-launch-configuration-1", - "title": "To create a launch configuration" - } - ], - "CreateOrUpdateTags": [ - { - "input": { - "Tags": [ - { - "Key": "Role", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "WebServer" - }, - { - "Key": "Dept", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "Research" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds two tags to the specified Auto Scaling group.", - "id": "autoscaling-create-or-update-tags-1", - "title": "To create or update tags for an Auto Scaling group" - } - ], - "DeleteAutoScalingGroup": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Auto Scaling group.", - "id": "autoscaling-delete-auto-scaling-group-1", - "title": "To delete an Auto Scaling group" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ForceDelete": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Auto Scaling group and all its instances.", - "id": "autoscaling-delete-auto-scaling-group-2", - "title": "To delete an Auto Scaling group and all its instances" - } - ], - "DeleteLaunchConfiguration": [ - { - "input": { - "LaunchConfigurationName": "my-launch-config" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified launch configuration.", - "id": "autoscaling-delete-launch-configuration-1", - "title": "To delete a launch configuration" - } - ], - "DeleteLifecycleHook": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleHookName": "my-lifecycle-hook" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified lifecycle hook.", - "id": "autoscaling-delete-lifecycle-hook-1", - "title": "To delete a lifecycle hook" - } - ], - "DeleteNotificationConfiguration": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified notification from the specified Auto Scaling group.", - "id": "autoscaling-delete-notification-configuration-1", - "title": "To delete an Auto Scaling notification" - } - ], - "DeletePolicy": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "PolicyName": "ScaleIn" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Auto Scaling policy.", - "id": "autoscaling-delete-policy-1", - "title": "To delete an Auto Scaling policy" - } - ], - "DeleteScheduledAction": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ScheduledActionName": "my-scheduled-action" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified scheduled action from the specified Auto Scaling group.", - "id": "autoscaling-delete-scheduled-action-1", - "title": "To delete a scheduled action from an Auto Scaling group" - } - ], - "DeleteTags": [ - { - "input": { - "Tags": [ - { - "Key": "Dept", - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "Research" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified tag from the specified Auto Scaling group.", - "id": "autoscaling-delete-tags-1", - "title": "To delete a tag from an Auto Scaling group" - } - ], - "DescribeAccountLimits": [ - { - "output": { - "MaxNumberOfAutoScalingGroups": 20, - "MaxNumberOfLaunchConfigurations": 100, - "NumberOfAutoScalingGroups": 3, - "NumberOfLaunchConfigurations": 5 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Auto Scaling limits for your AWS account.", - "id": "autoscaling-describe-account-limits-1", - "title": "To describe your Auto Scaling account limits" - } - ], - "DescribeAdjustmentTypes": [ - { - "output": { - "AdjustmentTypes": [ - { - "AdjustmentType": "ChangeInCapacity" - }, - { - "AdjustmentType": "ExactCapcity" - }, - { - "AdjustmentType": "PercentChangeInCapacity" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available adjustment types.", - "id": "autoscaling-describe-adjustment-types-1", - "title": "To describe the Auto Scaling adjustment types" - } - ], - "DescribeAutoScalingGroups": [ - { - "input": { - "AutoScalingGroupNames": [ - "my-auto-scaling-group" - ] - }, - "output": { - "AutoScalingGroups": [ - { - "AutoScalingGroupARN": "arn:aws:autoscaling:us-west-2:123456789012:autoScalingGroup:930d940e-891e-4781-a11a-7b0acd480f03:autoScalingGroupName/my-auto-scaling-group", - "AutoScalingGroupName": "my-auto-scaling-group", - "AvailabilityZones": [ - "us-west-2c" - ], - "CreatedTime": "2013-08-19T20:53:25.584Z", - "DefaultCooldown": 300, - "DesiredCapacity": 1, - "EnabledMetrics": [ - - ], - "HealthCheckGracePeriod": 300, - "HealthCheckType": "EC2", - "Instances": [ - { - "AvailabilityZone": "us-west-2c", - "HealthStatus": "Healthy", - "InstanceId": "i-4ba0837f", - "LaunchConfigurationName": "my-launch-config", - "LifecycleState": "InService" - } - ], - "LaunchConfigurationName": "my-launch-config", - "LoadBalancerNames": [ - - ], - "MaxSize": 1, - "MinSize": 0, - "NewInstancesProtectedFromScaleIn": false, - "SuspendedProcesses": [ - - ], - "Tags": [ - - ], - "TerminationPolicies": [ - "Default" - ], - "VPCZoneIdentifier": "subnet-12345678" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Auto Scaling group.", - "id": "autoscaling-describe-auto-scaling-groups-1", - "title": "To describe an Auto Scaling group" - } - ], - "DescribeAutoScalingInstances": [ - { - "input": { - "InstanceIds": [ - "i-4ba0837f" - ] - }, - "output": { - "AutoScalingInstances": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "AvailabilityZone": "us-west-2c", - "HealthStatus": "HEALTHY", - "InstanceId": "i-4ba0837f", - "LaunchConfigurationName": "my-launch-config", - "LifecycleState": "InService", - "ProtectedFromScaleIn": false - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Auto Scaling instance.", - "id": "autoscaling-describe-auto-scaling-instances-1", - "title": "To describe one or more Auto Scaling instances" - } - ], - "DescribeAutoScalingNotificationTypes": [ - { - "output": { - "AutoScalingNotificationTypes": [ - "autoscaling:EC2_INSTANCE_LAUNCH", - "autoscaling:EC2_INSTANCE_LAUNCH_ERROR", - "autoscaling:EC2_INSTANCE_TERMINATE", - "autoscaling:EC2_INSTANCE_TERMINATE_ERROR", - "autoscaling:TEST_NOTIFICATION" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available notification types.", - "id": "autoscaling-describe-auto-scaling-notification-types-1", - "title": "To describe the Auto Scaling notification types" - } - ], - "DescribeLaunchConfigurations": [ - { - "input": { - "LaunchConfigurationNames": [ - "my-launch-config" - ] - }, - "output": { - "LaunchConfigurations": [ - { - "AssociatePublicIpAddress": true, - "BlockDeviceMappings": [ - - ], - "CreatedTime": "2014-05-07T17:39:28.599Z", - "EbsOptimized": false, - "ImageId": "ami-043a5034", - "InstanceMonitoring": { - "Enabled": true - }, - "InstanceType": "t1.micro", - "LaunchConfigurationARN": "arn:aws:autoscaling:us-west-2:123456789012:launchConfiguration:98d3b196-4cf9-4e88-8ca1-8547c24ced8b:launchConfigurationName/my-launch-config", - "LaunchConfigurationName": "my-launch-config", - "SecurityGroups": [ - "sg-67ef0308" - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified launch configuration.", - "id": "autoscaling-describe-launch-configurations-1", - "title": "To describe Auto Scaling launch configurations" - } - ], - "DescribeLifecycleHookTypes": [ - { - "output": { - "LifecycleHookTypes": [ - "autoscaling:EC2_INSTANCE_LAUNCHING", - "autoscaling:EC2_INSTANCE_TERMINATING" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available lifecycle hook types.", - "id": "autoscaling-describe-lifecycle-hook-types-1", - "title": "To describe the available types of lifecycle hooks" - } - ], - "DescribeLifecycleHooks": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "LifecycleHooks": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "DefaultResult": "ABANDON", - "GlobalTimeout": 172800, - "HeartbeatTimeout": 3600, - "LifecycleHookName": "my-lifecycle-hook", - "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", - "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic", - "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the lifecycle hooks for the specified Auto Scaling group.", - "id": "autoscaling-describe-lifecycle-hooks-1", - "title": "To describe your lifecycle hooks" - } - ], - "DescribeLoadBalancerTargetGroups": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "LoadBalancerTargetGroups": [ - { - "LoadBalancerTargetGroupARN": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "State": "Added" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the target groups attached to the specified Auto Scaling group.", - "id": "autoscaling-describe-load-balancer-target-groups-1", - "title": "To describe the target groups for an Auto Scaling group" - } - ], - "DescribeLoadBalancers": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "LoadBalancers": [ - { - "LoadBalancerName": "my-load-balancer", - "State": "Added" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the load balancers attached to the specified Auto Scaling group.", - "id": "autoscaling-describe-load-balancers-1", - "title": "To describe the load balancers for an Auto Scaling group" - } - ], - "DescribeMetricCollectionTypes": [ - { - "output": { - "Granularities": [ - { - "Granularity": "1Minute" - } - ], - "Metrics": [ - { - "Metric": "GroupMinSize" - }, - { - "Metric": "GroupMaxSize" - }, - { - "Metric": "GroupDesiredCapacity" - }, - { - "Metric": "GroupInServiceInstances" - }, - { - "Metric": "GroupPendingInstances" - }, - { - "Metric": "GroupTerminatingInstances" - }, - { - "Metric": "GroupStandbyInstances" - }, - { - "Metric": "GroupTotalInstances" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available metric collection types.", - "id": "autoscaling-describe-metric-collection-types-1", - "title": "To describe the Auto Scaling metric collection types" - } - ], - "DescribeNotificationConfigurations": [ - { - "input": { - "AutoScalingGroupNames": [ - "my-auto-scaling-group" - ] - }, - "output": { - "NotificationConfigurations": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "NotificationType": "autoscaling:TEST_NOTIFICATION", - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic-2" - }, - { - "AutoScalingGroupName": "my-auto-scaling-group", - "NotificationType": "autoscaling:TEST_NOTIFICATION", - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the notification configurations for the specified Auto Scaling group.", - "id": "autoscaling-describe-notification-configurations-1", - "title": "To describe Auto Scaling notification configurations" - } - ], - "DescribePolicies": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "ScalingPolicies": [ - { - "AdjustmentType": "ChangeInCapacity", - "Alarms": [ - - ], - "AutoScalingGroupName": "my-auto-scaling-group", - "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn", - "PolicyName": "ScaleIn", - "ScalingAdjustment": -1 - }, - { - "AdjustmentType": "PercentChangeInCapacity", - "Alarms": [ - - ], - "AutoScalingGroupName": "my-auto-scaling-group", - "Cooldown": 60, - "MinAdjustmentStep": 2, - "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2b435159-cf77-4e89-8c0e-d63b497baad7:autoScalingGroupName/my-auto-scaling-group:policyName/ScalePercentChange", - "PolicyName": "ScalePercentChange", - "ScalingAdjustment": 25 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the policies for the specified Auto Scaling group.", - "id": "autoscaling-describe-policies-1", - "title": "To describe Auto Scaling policies" - } - ], - "DescribeScalingActivities": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "Activities": [ - { - "ActivityId": "f9f2d65b-f1f2-43e7-b46d-d86756459699", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2013-08-19T20:53:25Z a user request created an AutoScalingGroup changing the desired capacity from 0 to 1. At 2013-08-19T20:53:29Z an instance was started in response to a difference between desired and actual capacity, increasing the capacity from 0 to 1.", - "Description": "Launching a new EC2 instance: i-4ba0837f", - "Details": "details", - "EndTime": "2013-08-19T20:54:02Z", - "Progress": 100, - "StartTime": "2013-08-19T20:53:29.930Z", - "StatusCode": "Successful" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scaling activities for the specified Auto Scaling group.", - "id": "autoscaling-describe-scaling-activities-1", - "title": "To describe the scaling activities for an Auto Scaling group" - } - ], - "DescribeScalingProcessTypes": [ - { - "output": { - "Processes": [ - { - "ProcessName": "AZRebalance" - }, - { - "ProcessName": "AddToLoadBalancer" - }, - { - "ProcessName": "AlarmNotification" - }, - { - "ProcessName": "HealthCheck" - }, - { - "ProcessName": "Launch" - }, - { - "ProcessName": "ReplaceUnhealthy" - }, - { - "ProcessName": "ScheduledActions" - }, - { - "ProcessName": "Terminate" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Auto Scaling process types.", - "id": "autoscaling-describe-scaling-process-types-1", - "title": "To describe the Auto Scaling process types" - } - ], - "DescribeScheduledActions": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group" - }, - "output": { - "ScheduledUpdateGroupActions": [ - { - "AutoScalingGroupName": "my-auto-scaling-group", - "DesiredCapacity": 4, - "MaxSize": 6, - "MinSize": 2, - "Recurrence": "30 0 1 12 0", - "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-auto-scaling-group:scheduledActionName/my-scheduled-action", - "ScheduledActionName": "my-scheduled-action", - "StartTime": "2016-12-01T00:30:00Z", - "Time": "2016-12-01T00:30:00Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the scheduled actions for the specified Auto Scaling group.", - "id": "autoscaling-describe-scheduled-actions-1", - "title": "To describe scheduled actions" - } - ], - "DescribeTags": [ - { - "input": { - "Filters": [ - { - "Name": "auto-scaling-group", - "Values": [ - "my-auto-scaling-group" - ] - } - ] - }, - "output": { - "Tags": [ - { - "Key": "Dept", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "Research" - }, - { - "Key": "Role", - "PropagateAtLaunch": true, - "ResourceId": "my-auto-scaling-group", - "ResourceType": "auto-scaling-group", - "Value": "WebServer" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags for the specified Auto Scaling group.", - "id": "autoscaling-describe-tags-1", - "title": "To describe tags" - } - ], - "DescribeTerminationPolicyTypes": [ - { - "output": { - "TerminationPolicyTypes": [ - "ClosestToNextInstanceHour", - "Default", - "NewestInstance", - "OldestInstance", - "OldestLaunchConfiguration" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the available termination policy types.", - "id": "autoscaling-describe-termination-policy-types-1", - "title": "To describe termination policy types" - } - ], - "DetachInstances": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ShouldDecrementDesiredCapacity": true - }, - "output": { - "Activities": [ - { - "ActivityId": "5091cb52-547a-47ce-a236-c9ccbc2cb2c9", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2015-04-12T15:02:16Z instance i-93633f9b was detached in response to a user request, shrinking the capacity from 2 to 1.", - "Description": "Detaching EC2 instance: i-93633f9b", - "Details": "details", - "Progress": 50, - "StartTime": "2015-04-12T15:02:16.179Z", - "StatusCode": "InProgress" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified instance from the specified Auto Scaling group.", - "id": "autoscaling-detach-instances-1", - "title": "To detach an instance from an Auto Scaling group" - } - ], - "DetachLoadBalancerTargetGroups": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "TargetGroupARNs": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified target group from the specified Auto Scaling group", - "id": "autoscaling-detach-load-balancer-target-groups-1", - "title": "To detach a target group from an Auto Scaling group" - } - ], - "DetachLoadBalancers": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified load balancer from the specified Auto Scaling group.", - "id": "autoscaling-detach-load-balancers-1", - "title": "To detach a load balancer from an Auto Scaling group" - } - ], - "DisableMetricsCollection": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "Metrics": [ - "GroupDesiredCapacity" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables collecting data for the GroupDesiredCapacity metric for the specified Auto Scaling group.", - "id": "autoscaling-disable-metrics-collection-1", - "title": "To disable metrics collection for an Auto Scaling group" - } - ], - "EnableMetricsCollection": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "Granularity": "1Minute" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables data collection for the specified Auto Scaling group.", - "id": "autoscaling-enable-metrics-collection-1", - "title": "To enable metrics collection for an Auto Scaling group" - } - ], - "EnterStandby": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ShouldDecrementDesiredCapacity": true - }, - "output": { - "Activities": [ - { - "ActivityId": "ffa056b4-6ed3-41ba-ae7c-249dfae6eba1", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2015-04-12T15:10:23Z instance i-93633f9b was moved to standby in response to a user request, shrinking the capacity from 2 to 1.", - "Description": "Moving EC2 instance to Standby: i-93633f9b", - "Details": "details", - "Progress": 50, - "StartTime": "2015-04-12T15:10:23.640Z", - "StatusCode": "InProgress" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example puts the specified instance into standby mode.", - "id": "autoscaling-enter-standby-1", - "title": "To move instances into standby mode" - } - ], - "ExecutePolicy": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "HonorCooldown": true, - "PolicyName": "ScaleIn" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example executes the specified Auto Scaling policy for the specified Auto Scaling group.", - "id": "autoscaling-execute-policy-1", - "title": "To execute an Auto Scaling policy" - } - ], - "ExitStandby": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ] - }, - "output": { - "Activities": [ - { - "ActivityId": "142928e1-a2dc-453a-9b24-b85ad6735928", - "AutoScalingGroupName": "my-auto-scaling-group", - "Cause": "At 2015-04-12T15:14:29Z instance i-93633f9b was moved out of standby in response to a user request, increasing the capacity from 1 to 2.", - "Description": "Moving EC2 instance out of Standby: i-93633f9b", - "Details": "details", - "Progress": 30, - "StartTime": "2015-04-12T15:14:29.886Z", - "StatusCode": "PreInService" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example moves the specified instance out of standby mode.", - "id": "autoscaling-exit-standby-1", - "title": "To move instances out of standby mode" - } - ], - "PutLifecycleHook": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleHookName": "my-lifecycle-hook", - "LifecycleTransition": "autoscaling:EC2_INSTANCE_LAUNCHING", - "NotificationTargetARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic --role-arn", - "RoleARN": "arn:aws:iam::123456789012:role/my-auto-scaling-role" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a lifecycle hook.", - "id": "autoscaling-put-lifecycle-hook-1", - "title": "To create a lifecycle hook" - } - ], - "PutNotificationConfiguration": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "NotificationTypes": [ - "autoscaling:TEST_NOTIFICATION" - ], - "TopicARN": "arn:aws:sns:us-west-2:123456789012:my-sns-topic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified notification to the specified Auto Scaling group.", - "id": "autoscaling-put-notification-configuration-1", - "title": "To add an Auto Scaling notification" - } - ], - "PutScalingPolicy": [ - { - "input": { - "AdjustmentType": "ChangeInCapacity", - "AutoScalingGroupName": "my-auto-scaling-group", - "PolicyName": "ScaleIn", - "ScalingAdjustment": -1 - }, - "output": { - "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:2233f3d7-6290-403b-b632-93c553560106:autoScalingGroupName/my-auto-scaling-group:policyName/ScaleIn" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified policy to the specified Auto Scaling group.", - "id": "autoscaling-put-scaling-policy-1", - "title": "To add a scaling policy to an Auto Scaling group" - } - ], - "PutScheduledUpdateGroupAction": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "DesiredCapacity": 4, - "EndTime": "2014-05-12T08:00:00Z", - "MaxSize": 6, - "MinSize": 2, - "ScheduledActionName": "my-scheduled-action", - "StartTime": "2014-05-12T08:00:00Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified scheduled action to the specified Auto Scaling group.", - "id": "autoscaling-put-scheduled-update-group-action-1", - "title": "To add a scheduled action to an Auto Scaling group" - } - ], - "RecordLifecycleActionHeartbeat": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LifecycleActionToken": "bcd2f1b8-9a78-44d3-8a7a-4dd07d7cf635", - "LifecycleHookName": "my-lifecycle-hook" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example records a lifecycle action heartbeat to keep the instance in a pending state.", - "id": "autoscaling-record-lifecycle-action-heartbeat-1", - "title": "To record a lifecycle action heartbeat" - } - ], - "ResumeProcesses": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ScalingProcesses": [ - "AlarmNotification" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example resumes the specified suspended scaling process for the specified Auto Scaling group.", - "id": "autoscaling-resume-processes-1", - "title": "To resume Auto Scaling processes" - } - ], - "SetDesiredCapacity": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "DesiredCapacity": 2, - "HonorCooldown": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the desired capacity for the specified Auto Scaling group.", - "id": "autoscaling-set-desired-capacity-1", - "title": "To set the desired capacity for an Auto Scaling group" - } - ], - "SetInstanceHealth": [ - { - "input": { - "HealthStatus": "Unhealthy", - "InstanceId": "i-93633f9b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the health status of the specified instance to Unhealthy.", - "id": "autoscaling-set-instance-health-1", - "title": "To set the health status of an instance" - } - ], - "SetInstanceProtection": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ProtectedFromScaleIn": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables instance protection for the specified instance.", - "id": "autoscaling-set-instance-protection-1", - "title": "To enable instance protection for an instance" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "InstanceIds": [ - "i-93633f9b" - ], - "ProtectedFromScaleIn": false - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables instance protection for the specified instance.", - "id": "autoscaling-set-instance-protection-2", - "title": "To disable instance protection for an instance" - } - ], - "SuspendProcesses": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "ScalingProcesses": [ - "AlarmNotification" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example suspends the specified scaling process for the specified Auto Scaling group.", - "id": "autoscaling-suspend-processes-1", - "title": "To suspend Auto Scaling processes" - } - ], - "TerminateInstanceInAutoScalingGroup": [ - { - "input": { - "InstanceId": "i-93633f9b", - "ShouldDecrementDesiredCapacity": false - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example terminates the specified instance from the specified Auto Scaling group without updating the size of the group. Auto Scaling launches a replacement instance after the specified instance terminates.", - "id": "autoscaling-terminate-instance-in-auto-scaling-group-1", - "title": "To terminate an instance in an Auto Scaling group" - } - ], - "UpdateAutoScalingGroup": [ - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "LaunchConfigurationName": "new-launch-config" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the launch configuration of the specified Auto Scaling group.", - "id": "autoscaling-update-auto-scaling-group-1", - "title": "To update the launch configuration" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "MaxSize": 3, - "MinSize": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the minimum size and maximum size of the specified Auto Scaling group.", - "id": "autoscaling-update-auto-scaling-group-2", - "title": "To update the minimum and maximum size" - }, - { - "input": { - "AutoScalingGroupName": "my-auto-scaling-group", - "NewInstancesProtectedFromScaleIn": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables instance protection for the specified Auto Scaling group.", - "id": "autoscaling-update-auto-scaling-group-3", - "title": "To enable instance protection" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json deleted file mode 100644 index 0b51538..0000000 --- a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.min.json +++ /dev/null @@ -1,1608 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2011-01-01", - "endpointPrefix": "autoscaling", - "protocol": "query", - "serviceFullName": "Auto Scaling", - "signatureVersion": "v4", - "xmlNamespace": "http://autoscaling.amazonaws.com/doc/2011-01-01/" - }, - "operations": { - "AttachInstances": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {} - } - } - }, - "AttachLoadBalancerTargetGroups": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TargetGroupARNs" - ], - "members": { - "AutoScalingGroupName": {}, - "TargetGroupARNs": { - "shape": "S6" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancerTargetGroupsResult", - "type": "structure", - "members": {} - } - }, - "AttachLoadBalancers": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "LoadBalancerNames" - ], - "members": { - "AutoScalingGroupName": {}, - "LoadBalancerNames": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancersResult", - "type": "structure", - "members": {} - } - }, - "CompleteLifecycleAction": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName", - "LifecycleActionResult" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleActionToken": {}, - "LifecycleActionResult": {}, - "InstanceId": {} - } - }, - "output": { - "resultWrapper": "CompleteLifecycleActionResult", - "type": "structure", - "members": {} - } - }, - "CreateAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "MinSize", - "MaxSize" - ], - "members": { - "AutoScalingGroupName": {}, - "LaunchConfigurationName": {}, - "InstanceId": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - }, - "DefaultCooldown": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sn" - }, - "LoadBalancerNames": { - "shape": "Sa" - }, - "TargetGroupARNs": { - "shape": "S6" - }, - "HealthCheckType": {}, - "HealthCheckGracePeriod": { - "type": "integer" - }, - "PlacementGroup": {}, - "VPCZoneIdentifier": {}, - "TerminationPolicies": { - "shape": "Sr" - }, - "NewInstancesProtectedFromScaleIn": { - "type": "boolean" - }, - "Tags": { - "shape": "Su" - } - } - } - }, - "CreateLaunchConfiguration": { - "input": { - "type": "structure", - "required": [ - "LaunchConfigurationName" - ], - "members": { - "LaunchConfigurationName": {}, - "ImageId": {}, - "KeyName": {}, - "SecurityGroups": { - "shape": "S11" - }, - "ClassicLinkVPCId": {}, - "ClassicLinkVPCSecurityGroups": { - "shape": "S12" - }, - "UserData": {}, - "InstanceId": {}, - "InstanceType": {}, - "KernelId": {}, - "RamdiskId": {}, - "BlockDeviceMappings": { - "shape": "S14" - }, - "InstanceMonitoring": { - "shape": "S1d" - }, - "SpotPrice": {}, - "IamInstanceProfile": {}, - "EbsOptimized": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "PlacementTenancy": {} - } - } - }, - "CreateOrUpdateTags": { - "input": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "Su" - } - } - } - }, - "DeleteAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "ForceDelete": { - "type": "boolean" - } - } - } - }, - "DeleteLaunchConfiguration": { - "input": { - "type": "structure", - "required": [ - "LaunchConfigurationName" - ], - "members": { - "LaunchConfigurationName": {} - } - } - }, - "DeleteLifecycleHook": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {} - } - }, - "output": { - "resultWrapper": "DeleteLifecycleHookResult", - "type": "structure", - "members": {} - } - }, - "DeleteNotificationConfiguration": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TopicARN" - ], - "members": { - "AutoScalingGroupName": {}, - "TopicARN": {} - } - } - }, - "DeletePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName" - ], - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {} - } - } - }, - "DeleteScheduledAction": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ScheduledActionName" - ], - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionName": {} - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "Su" - } - } - } - }, - "DescribeAccountLimits": { - "output": { - "resultWrapper": "DescribeAccountLimitsResult", - "type": "structure", - "members": { - "MaxNumberOfAutoScalingGroups": { - "type": "integer" - }, - "MaxNumberOfLaunchConfigurations": { - "type": "integer" - }, - "NumberOfAutoScalingGroups": { - "type": "integer" - }, - "NumberOfLaunchConfigurations": { - "type": "integer" - } - } - } - }, - "DescribeAdjustmentTypes": { - "output": { - "resultWrapper": "DescribeAdjustmentTypesResult", - "type": "structure", - "members": { - "AdjustmentTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AdjustmentType": {} - } - } - } - } - } - }, - "DescribeAutoScalingGroups": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupNames": { - "shape": "S22" - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeAutoScalingGroupsResult", - "type": "structure", - "required": [ - "AutoScalingGroups" - ], - "members": { - "AutoScalingGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "MinSize", - "MaxSize", - "DesiredCapacity", - "DefaultCooldown", - "AvailabilityZones", - "HealthCheckType", - "CreatedTime" - ], - "members": { - "AutoScalingGroupName": {}, - "AutoScalingGroupARN": {}, - "LaunchConfigurationName": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - }, - "DefaultCooldown": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sn" - }, - "LoadBalancerNames": { - "shape": "Sa" - }, - "TargetGroupARNs": { - "shape": "S6" - }, - "HealthCheckType": {}, - "HealthCheckGracePeriod": { - "type": "integer" - }, - "Instances": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceId", - "AvailabilityZone", - "LifecycleState", - "HealthStatus", - "LaunchConfigurationName", - "ProtectedFromScaleIn" - ], - "members": { - "InstanceId": {}, - "AvailabilityZone": {}, - "LifecycleState": {}, - "HealthStatus": {}, - "LaunchConfigurationName": {}, - "ProtectedFromScaleIn": { - "type": "boolean" - } - } - } - }, - "CreatedTime": { - "type": "timestamp" - }, - "SuspendedProcesses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProcessName": {}, - "SuspensionReason": {} - } - } - }, - "PlacementGroup": {}, - "VPCZoneIdentifier": {}, - "EnabledMetrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Metric": {}, - "Granularity": {} - } - } - }, - "Status": {}, - "Tags": { - "shape": "S2f" - }, - "TerminationPolicies": { - "shape": "Sr" - }, - "NewInstancesProtectedFromScaleIn": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAutoScalingInstances": { - "input": { - "type": "structure", - "members": { - "InstanceIds": { - "shape": "S2" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAutoScalingInstancesResult", - "type": "structure", - "members": { - "AutoScalingInstances": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceId", - "AutoScalingGroupName", - "AvailabilityZone", - "LifecycleState", - "HealthStatus", - "LaunchConfigurationName", - "ProtectedFromScaleIn" - ], - "members": { - "InstanceId": {}, - "AutoScalingGroupName": {}, - "AvailabilityZone": {}, - "LifecycleState": {}, - "HealthStatus": {}, - "LaunchConfigurationName": {}, - "ProtectedFromScaleIn": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAutoScalingNotificationTypes": { - "output": { - "resultWrapper": "DescribeAutoScalingNotificationTypesResult", - "type": "structure", - "members": { - "AutoScalingNotificationTypes": { - "shape": "S2m" - } - } - } - }, - "DescribeLaunchConfigurations": { - "input": { - "type": "structure", - "members": { - "LaunchConfigurationNames": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLaunchConfigurationsResult", - "type": "structure", - "required": [ - "LaunchConfigurations" - ], - "members": { - "LaunchConfigurations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LaunchConfigurationName", - "ImageId", - "InstanceType", - "CreatedTime" - ], - "members": { - "LaunchConfigurationName": {}, - "LaunchConfigurationARN": {}, - "ImageId": {}, - "KeyName": {}, - "SecurityGroups": { - "shape": "S11" - }, - "ClassicLinkVPCId": {}, - "ClassicLinkVPCSecurityGroups": { - "shape": "S12" - }, - "UserData": {}, - "InstanceType": {}, - "KernelId": {}, - "RamdiskId": {}, - "BlockDeviceMappings": { - "shape": "S14" - }, - "InstanceMonitoring": { - "shape": "S1d" - }, - "SpotPrice": {}, - "IamInstanceProfile": {}, - "CreatedTime": { - "type": "timestamp" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "PlacementTenancy": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeLifecycleHookTypes": { - "output": { - "resultWrapper": "DescribeLifecycleHookTypesResult", - "type": "structure", - "members": { - "LifecycleHookTypes": { - "shape": "S2m" - } - } - } - }, - "DescribeLifecycleHooks": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "LifecycleHookNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeLifecycleHooksResult", - "type": "structure", - "members": { - "LifecycleHooks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleTransition": {}, - "NotificationTargetARN": {}, - "RoleARN": {}, - "NotificationMetadata": {}, - "HeartbeatTimeout": { - "type": "integer" - }, - "GlobalTimeout": { - "type": "integer" - }, - "DefaultResult": {} - } - } - } - } - } - }, - "DescribeLoadBalancerTargetGroups": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerTargetGroupsResult", - "type": "structure", - "members": { - "LoadBalancerTargetGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerTargetGroupARN": {}, - "State": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "State": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMetricCollectionTypes": { - "output": { - "resultWrapper": "DescribeMetricCollectionTypesResult", - "type": "structure", - "members": { - "Metrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Metric": {} - } - } - }, - "Granularities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Granularity": {} - } - } - } - } - } - }, - "DescribeNotificationConfigurations": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupNames": { - "shape": "S22" - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeNotificationConfigurationsResult", - "type": "structure", - "required": [ - "NotificationConfigurations" - ], - "members": { - "NotificationConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "TopicARN": {}, - "NotificationType": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribePolicies": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "PolicyNames": { - "type": "list", - "member": {} - }, - "PolicyTypes": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribePoliciesResult", - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {}, - "PolicyARN": {}, - "PolicyType": {}, - "AdjustmentType": {}, - "MinAdjustmentStep": { - "shape": "S3p" - }, - "MinAdjustmentMagnitude": { - "type": "integer" - }, - "ScalingAdjustment": { - "type": "integer" - }, - "Cooldown": { - "type": "integer" - }, - "StepAdjustments": { - "shape": "S3s" - }, - "MetricAggregationType": {}, - "EstimatedInstanceWarmup": { - "type": "integer" - }, - "Alarms": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "AlarmARN": {} - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeScalingActivities": { - "input": { - "type": "structure", - "members": { - "ActivityIds": { - "type": "list", - "member": {} - }, - "AutoScalingGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeScalingActivitiesResult", - "type": "structure", - "required": [ - "Activities" - ], - "members": { - "Activities": { - "shape": "S41" - }, - "NextToken": {} - } - } - }, - "DescribeScalingProcessTypes": { - "output": { - "resultWrapper": "DescribeScalingProcessTypesResult", - "type": "structure", - "members": { - "Processes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ProcessName" - ], - "members": { - "ProcessName": {} - } - } - } - } - } - }, - "DescribeScheduledActions": { - "input": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionNames": { - "type": "list", - "member": {} - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeScheduledActionsResult", - "type": "structure", - "members": { - "ScheduledUpdateGroupActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionName": {}, - "ScheduledActionARN": {}, - "Time": { - "type": "timestamp" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Recurrence": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "NextToken": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "Tags": { - "shape": "S2f" - }, - "NextToken": {} - } - } - }, - "DescribeTerminationPolicyTypes": { - "output": { - "resultWrapper": "DescribeTerminationPolicyTypesResult", - "type": "structure", - "members": { - "TerminationPolicyTypes": { - "shape": "Sr" - } - } - } - }, - "DetachInstances": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ShouldDecrementDesiredCapacity" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {}, - "ShouldDecrementDesiredCapacity": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DetachInstancesResult", - "type": "structure", - "members": { - "Activities": { - "shape": "S41" - } - } - } - }, - "DetachLoadBalancerTargetGroups": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TargetGroupARNs" - ], - "members": { - "AutoScalingGroupName": {}, - "TargetGroupARNs": { - "shape": "S6" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancerTargetGroupsResult", - "type": "structure", - "members": {} - } - }, - "DetachLoadBalancers": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "LoadBalancerNames" - ], - "members": { - "AutoScalingGroupName": {}, - "LoadBalancerNames": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancersResult", - "type": "structure", - "members": {} - } - }, - "DisableMetricsCollection": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "Metrics": { - "shape": "S4r" - } - } - } - }, - "EnableMetricsCollection": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "Granularity" - ], - "members": { - "AutoScalingGroupName": {}, - "Metrics": { - "shape": "S4r" - }, - "Granularity": {} - } - } - }, - "EnterStandby": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ShouldDecrementDesiredCapacity" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {}, - "ShouldDecrementDesiredCapacity": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "EnterStandbyResult", - "type": "structure", - "members": { - "Activities": { - "shape": "S41" - } - } - } - }, - "ExecutePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName" - ], - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {}, - "HonorCooldown": { - "type": "boolean" - }, - "MetricValue": { - "type": "double" - }, - "BreachThreshold": { - "type": "double" - } - } - } - }, - "ExitStandby": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {} - } - }, - "output": { - "resultWrapper": "ExitStandbyResult", - "type": "structure", - "members": { - "Activities": { - "shape": "S41" - } - } - } - }, - "PutLifecycleHook": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleTransition": {}, - "RoleARN": {}, - "NotificationTargetARN": {}, - "NotificationMetadata": {}, - "HeartbeatTimeout": { - "type": "integer" - }, - "DefaultResult": {} - } - }, - "output": { - "resultWrapper": "PutLifecycleHookResult", - "type": "structure", - "members": {} - } - }, - "PutNotificationConfiguration": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "TopicARN", - "NotificationTypes" - ], - "members": { - "AutoScalingGroupName": {}, - "TopicARN": {}, - "NotificationTypes": { - "shape": "S2m" - } - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "PolicyName", - "AdjustmentType" - ], - "members": { - "AutoScalingGroupName": {}, - "PolicyName": {}, - "PolicyType": {}, - "AdjustmentType": {}, - "MinAdjustmentStep": { - "shape": "S3p" - }, - "MinAdjustmentMagnitude": { - "type": "integer" - }, - "ScalingAdjustment": { - "type": "integer" - }, - "Cooldown": { - "type": "integer" - }, - "MetricAggregationType": {}, - "StepAdjustments": { - "shape": "S3s" - }, - "EstimatedInstanceWarmup": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PutScalingPolicyResult", - "type": "structure", - "members": { - "PolicyARN": {} - } - } - }, - "PutScheduledUpdateGroupAction": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "ScheduledActionName" - ], - "members": { - "AutoScalingGroupName": {}, - "ScheduledActionName": {}, - "Time": { - "type": "timestamp" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Recurrence": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - } - } - } - }, - "RecordLifecycleActionHeartbeat": { - "input": { - "type": "structure", - "required": [ - "LifecycleHookName", - "AutoScalingGroupName" - ], - "members": { - "LifecycleHookName": {}, - "AutoScalingGroupName": {}, - "LifecycleActionToken": {}, - "InstanceId": {} - } - }, - "output": { - "resultWrapper": "RecordLifecycleActionHeartbeatResult", - "type": "structure", - "members": {} - } - }, - "ResumeProcesses": { - "input": { - "shape": "S58" - } - }, - "SetDesiredCapacity": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName", - "DesiredCapacity" - ], - "members": { - "AutoScalingGroupName": {}, - "DesiredCapacity": { - "type": "integer" - }, - "HonorCooldown": { - "type": "boolean" - } - } - } - }, - "SetInstanceHealth": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "HealthStatus" - ], - "members": { - "InstanceId": {}, - "HealthStatus": {}, - "ShouldRespectGracePeriod": { - "type": "boolean" - } - } - } - }, - "SetInstanceProtection": { - "input": { - "type": "structure", - "required": [ - "InstanceIds", - "AutoScalingGroupName", - "ProtectedFromScaleIn" - ], - "members": { - "InstanceIds": { - "shape": "S2" - }, - "AutoScalingGroupName": {}, - "ProtectedFromScaleIn": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetInstanceProtectionResult", - "type": "structure", - "members": {} - } - }, - "SuspendProcesses": { - "input": { - "shape": "S58" - } - }, - "TerminateInstanceInAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "ShouldDecrementDesiredCapacity" - ], - "members": { - "InstanceId": {}, - "ShouldDecrementDesiredCapacity": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "TerminateInstanceInAutoScalingGroupResult", - "type": "structure", - "members": { - "Activity": { - "shape": "S42" - } - } - } - }, - "UpdateAutoScalingGroup": { - "input": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "LaunchConfigurationName": {}, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - }, - "DesiredCapacity": { - "type": "integer" - }, - "DefaultCooldown": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Sn" - }, - "HealthCheckType": {}, - "HealthCheckGracePeriod": { - "type": "integer" - }, - "PlacementGroup": {}, - "VPCZoneIdentifier": {}, - "TerminationPolicies": { - "shape": "Sr" - }, - "NewInstancesProtectedFromScaleIn": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S6": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": {} - }, - "Sn": { - "type": "list", - "member": {} - }, - "Sr": { - "type": "list", - "member": {} - }, - "Su": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Key": {}, - "Value": {}, - "PropagateAtLaunch": { - "type": "boolean" - } - } - } - }, - "S11": { - "type": "list", - "member": {} - }, - "S12": { - "type": "list", - "member": {} - }, - "S14": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DeviceName" - ], - "members": { - "VirtualName": {}, - "DeviceName": {}, - "Ebs": { - "type": "structure", - "members": { - "SnapshotId": {}, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": {}, - "DeleteOnTermination": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "Encrypted": { - "type": "boolean" - } - } - }, - "NoDevice": { - "type": "boolean" - } - } - } - }, - "S1d": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "S22": { - "type": "list", - "member": {} - }, - "S2f": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Key": {}, - "Value": {}, - "PropagateAtLaunch": { - "type": "boolean" - } - } - } - }, - "S2m": { - "type": "list", - "member": {} - }, - "S3p": { - "type": "integer", - "deprecated": true - }, - "S3s": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ScalingAdjustment" - ], - "members": { - "MetricIntervalLowerBound": { - "type": "double" - }, - "MetricIntervalUpperBound": { - "type": "double" - }, - "ScalingAdjustment": { - "type": "integer" - } - } - } - }, - "S41": { - "type": "list", - "member": { - "shape": "S42" - } - }, - "S42": { - "type": "structure", - "required": [ - "ActivityId", - "AutoScalingGroupName", - "Cause", - "StartTime", - "StatusCode" - ], - "members": { - "ActivityId": {}, - "AutoScalingGroupName": {}, - "Description": {}, - "Cause": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "StatusCode": {}, - "StatusMessage": {}, - "Progress": { - "type": "integer" - }, - "Details": {} - } - }, - "S4r": { - "type": "list", - "member": {} - }, - "S58": { - "type": "structure", - "required": [ - "AutoScalingGroupName" - ], - "members": { - "AutoScalingGroupName": {}, - "ScalingProcesses": { - "type": "list", - "member": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json b/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json deleted file mode 100644 index 31bc094..0000000 --- a/node_modules/aws-sdk/apis/autoscaling-2011-01-01.paginators.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "pagination": { - "DescribeAutoScalingGroups": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AutoScalingGroups" - }, - "DescribeAutoScalingInstances": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AutoScalingInstances" - }, - "DescribeLaunchConfigurations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "LaunchConfigurations" - }, - "DescribeNotificationConfigurations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "NotificationConfigurations" - }, - "DescribePolicies": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "ScalingPolicies" - }, - "DescribeScalingActivities": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Activities" - }, - "DescribeScheduledActions": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "ScheduledUpdateGroupActions" - }, - "DescribeTags": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Tags" - } - } -} diff --git a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json deleted file mode 100644 index a7abad5..0000000 --- a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.min.json +++ /dev/null @@ -1,860 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-05-15", - "endpointPrefix": "cloudformation", - "protocol": "query", - "serviceFullName": "AWS CloudFormation", - "signatureVersion": "v4", - "xmlNamespace": "http://cloudformation.amazonaws.com/doc/2010-05-15/" - }, - "operations": { - "CancelUpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {} - } - } - }, - "ContinueUpdateRollback": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "RoleARN": {} - } - }, - "output": { - "resultWrapper": "ContinueUpdateRollbackResult", - "type": "structure", - "members": {} - } - }, - "CreateChangeSet": { - "input": { - "type": "structure", - "required": [ - "StackName", - "ChangeSetName" - ], - "members": { - "StackName": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "UsePreviousTemplate": { - "type": "boolean" - }, - "Parameters": { - "shape": "Sb" - }, - "Capabilities": { - "shape": "Sg" - }, - "ResourceTypes": { - "shape": "Si" - }, - "RoleARN": {}, - "NotificationARNs": { - "shape": "Sk" - }, - "Tags": { - "shape": "Sm" - }, - "ChangeSetName": {}, - "ClientToken": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateChangeSetResult", - "type": "structure", - "members": { - "Id": {} - } - } - }, - "CreateStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "Parameters": { - "shape": "Sb" - }, - "DisableRollback": { - "type": "boolean" - }, - "TimeoutInMinutes": { - "type": "integer" - }, - "NotificationARNs": { - "shape": "Sk" - }, - "Capabilities": { - "shape": "Sg" - }, - "ResourceTypes": { - "shape": "Si" - }, - "RoleARN": {}, - "OnFailure": {}, - "StackPolicyBody": {}, - "StackPolicyURL": {}, - "Tags": { - "shape": "Sm" - } - } - }, - "output": { - "resultWrapper": "CreateStackResult", - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "DeleteChangeSet": { - "input": { - "type": "structure", - "required": [ - "ChangeSetName" - ], - "members": { - "ChangeSetName": {}, - "StackName": {} - } - }, - "output": { - "resultWrapper": "DeleteChangeSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "RetainResources": { - "type": "list", - "member": {} - }, - "RoleARN": {} - } - } - }, - "DescribeAccountLimits": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAccountLimitsResult", - "type": "structure", - "members": { - "AccountLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeChangeSet": { - "input": { - "type": "structure", - "required": [ - "ChangeSetName" - ], - "members": { - "ChangeSetName": {}, - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeChangeSetResult", - "type": "structure", - "members": { - "ChangeSetName": {}, - "ChangeSetId": {}, - "StackId": {}, - "StackName": {}, - "Description": {}, - "Parameters": { - "shape": "Sb" - }, - "CreationTime": { - "type": "timestamp" - }, - "ExecutionStatus": {}, - "Status": {}, - "StatusReason": {}, - "NotificationARNs": { - "shape": "Sk" - }, - "Capabilities": { - "shape": "Sg" - }, - "Tags": { - "shape": "Sm" - }, - "Changes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "ResourceChange": { - "type": "structure", - "members": { - "Action": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "Replacement": {}, - "Scope": { - "type": "list", - "member": {} - }, - "Details": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Target": { - "type": "structure", - "members": { - "Attribute": {}, - "Name": {}, - "RequiresRecreation": {} - } - }, - "Evaluation": {}, - "ChangeSource": {}, - "CausingEntity": {} - } - } - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeStackEvents": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeStackEventsResult", - "type": "structure", - "members": { - "StackEvents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StackId", - "EventId", - "StackName", - "Timestamp" - ], - "members": { - "StackId": {}, - "EventId": {}, - "StackName": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "Timestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {}, - "ResourceProperties": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeStackResource": { - "input": { - "type": "structure", - "required": [ - "StackName", - "LogicalResourceId" - ], - "members": { - "StackName": {}, - "LogicalResourceId": {} - } - }, - "output": { - "resultWrapper": "DescribeStackResourceResult", - "type": "structure", - "members": { - "StackResourceDetail": { - "type": "structure", - "required": [ - "LogicalResourceId", - "ResourceType", - "LastUpdatedTimestamp", - "ResourceStatus" - ], - "members": { - "StackName": {}, - "StackId": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "LastUpdatedTimestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {}, - "Description": {}, - "Metadata": {} - } - } - } - } - }, - "DescribeStackResources": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {} - } - }, - "output": { - "resultWrapper": "DescribeStackResourcesResult", - "type": "structure", - "members": { - "StackResources": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LogicalResourceId", - "ResourceType", - "Timestamp", - "ResourceStatus" - ], - "members": { - "StackName": {}, - "StackId": {}, - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "Timestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeStacks": { - "input": { - "type": "structure", - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeStacksResult", - "type": "structure", - "members": { - "Stacks": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StackName", - "CreationTime", - "StackStatus" - ], - "members": { - "StackId": {}, - "StackName": {}, - "Description": {}, - "Parameters": { - "shape": "Sb" - }, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - }, - "StackStatus": {}, - "StackStatusReason": {}, - "DisableRollback": { - "type": "boolean" - }, - "NotificationARNs": { - "shape": "Sk" - }, - "TimeoutInMinutes": { - "type": "integer" - }, - "Capabilities": { - "shape": "Sg" - }, - "Outputs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputKey": {}, - "OutputValue": {}, - "Description": {} - } - } - }, - "RoleARN": {}, - "Tags": { - "shape": "Sm" - } - } - } - }, - "NextToken": {} - } - } - }, - "EstimateTemplateCost": { - "input": { - "type": "structure", - "members": { - "TemplateBody": {}, - "TemplateURL": {}, - "Parameters": { - "shape": "Sb" - } - } - }, - "output": { - "resultWrapper": "EstimateTemplateCostResult", - "type": "structure", - "members": { - "Url": {} - } - } - }, - "ExecuteChangeSet": { - "input": { - "type": "structure", - "required": [ - "ChangeSetName" - ], - "members": { - "ChangeSetName": {}, - "StackName": {} - } - }, - "output": { - "resultWrapper": "ExecuteChangeSetResult", - "type": "structure", - "members": {} - } - }, - "GetStackPolicy": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {} - } - }, - "output": { - "resultWrapper": "GetStackPolicyResult", - "type": "structure", - "members": { - "StackPolicyBody": {} - } - } - }, - "GetTemplate": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {} - } - }, - "output": { - "resultWrapper": "GetTemplateResult", - "type": "structure", - "members": { - "TemplateBody": {} - } - } - }, - "GetTemplateSummary": { - "input": { - "type": "structure", - "members": { - "TemplateBody": {}, - "TemplateURL": {}, - "StackName": {} - } - }, - "output": { - "resultWrapper": "GetTemplateSummaryResult", - "type": "structure", - "members": { - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "ParameterType": {}, - "NoEcho": { - "type": "boolean" - }, - "Description": {}, - "ParameterConstraints": { - "type": "structure", - "members": { - "AllowedValues": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "Description": {}, - "Capabilities": { - "shape": "Sg" - }, - "CapabilitiesReason": {}, - "ResourceTypes": { - "shape": "Si" - }, - "Version": {}, - "Metadata": {} - } - } - }, - "ListChangeSets": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListChangeSetsResult", - "type": "structure", - "members": { - "Summaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "StackName": {}, - "ChangeSetId": {}, - "ChangeSetName": {}, - "ExecutionStatus": {}, - "Status": {}, - "StatusReason": {}, - "CreationTime": { - "type": "timestamp" - }, - "Description": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListStackResources": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListStackResourcesResult", - "type": "structure", - "members": { - "StackResourceSummaries": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LogicalResourceId", - "ResourceType", - "LastUpdatedTimestamp", - "ResourceStatus" - ], - "members": { - "LogicalResourceId": {}, - "PhysicalResourceId": {}, - "ResourceType": {}, - "LastUpdatedTimestamp": { - "type": "timestamp" - }, - "ResourceStatus": {}, - "ResourceStatusReason": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListStacks": { - "input": { - "type": "structure", - "members": { - "NextToken": {}, - "StackStatusFilter": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "ListStacksResult", - "type": "structure", - "members": { - "StackSummaries": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StackName", - "CreationTime", - "StackStatus" - ], - "members": { - "StackId": {}, - "StackName": {}, - "TemplateDescription": {}, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - }, - "DeletionTime": { - "type": "timestamp" - }, - "StackStatus": {}, - "StackStatusReason": {} - } - } - }, - "NextToken": {} - } - } - }, - "SetStackPolicy": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "StackPolicyBody": {}, - "StackPolicyURL": {} - } - } - }, - "SignalResource": { - "input": { - "type": "structure", - "required": [ - "StackName", - "LogicalResourceId", - "UniqueId", - "Status" - ], - "members": { - "StackName": {}, - "LogicalResourceId": {}, - "UniqueId": {}, - "Status": {} - } - } - }, - "UpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackName" - ], - "members": { - "StackName": {}, - "TemplateBody": {}, - "TemplateURL": {}, - "UsePreviousTemplate": { - "type": "boolean" - }, - "StackPolicyDuringUpdateBody": {}, - "StackPolicyDuringUpdateURL": {}, - "Parameters": { - "shape": "Sb" - }, - "Capabilities": { - "shape": "Sg" - }, - "ResourceTypes": { - "shape": "Si" - }, - "RoleARN": {}, - "StackPolicyBody": {}, - "StackPolicyURL": {}, - "NotificationARNs": { - "shape": "Sk" - }, - "Tags": { - "shape": "Sm" - } - } - }, - "output": { - "resultWrapper": "UpdateStackResult", - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "ValidateTemplate": { - "input": { - "type": "structure", - "members": { - "TemplateBody": {}, - "TemplateURL": {} - } - }, - "output": { - "resultWrapper": "ValidateTemplateResult", - "type": "structure", - "members": { - "Parameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "NoEcho": { - "type": "boolean" - }, - "Description": {} - } - } - }, - "Description": {}, - "Capabilities": { - "shape": "Sg" - }, - "CapabilitiesReason": {} - } - } - } - }, - "shapes": { - "Sb": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "ParameterValue": {}, - "UsePreviousValue": { - "type": "boolean" - } - } - } - }, - "Sg": { - "type": "list", - "member": {} - }, - "Si": { - "type": "list", - "member": {} - }, - "Sk": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json deleted file mode 100644 index da6c17d..0000000 --- a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.paginators.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "pagination": { - "DescribeStackEvents": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackEvents" - }, - "DescribeStackResources": { - "result_key": "StackResources" - }, - "DescribeStacks": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Stacks" - }, - "ListStackResources": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackResourceSummaries" - }, - "ListStacks": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "StackSummaries" - } - } -} diff --git a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json b/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json deleted file mode 100644 index f3a5cde..0000000 --- a/node_modules/aws-sdk/apis/cloudformation-2010-05-15.waiters2.json +++ /dev/null @@ -1,235 +0,0 @@ -{ - "version": 2, - "waiters": { - "StackExists": { - "delay": 5, - "operation": "DescribeStacks", - "maxAttempts": 20, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "ValidationError", - "state": "retry" - } - ] - }, - "StackCreateComplete": { - "delay": 30, - "operation": "DescribeStacks", - "maxAttempts": 120, - "description": "Wait until stack status is CREATE_COMPLETE.", - "acceptors": [ - { - "expected": "CREATE_COMPLETE", - "matcher": "pathAll", - "state": "success", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "CREATE_FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "DELETE_COMPLETE", - "matcher": "pathAny", - "argument": "Stacks[].StackStatus", - "state": "failure" - }, - { - "expected": "DELETE_IN_PROGRESS", - "matcher": "pathAny", - "argument": "Stacks[].StackStatus", - "state": "failure" - }, - { - "expected": "DELETE_FAILED", - "matcher": "pathAny", - "argument": "Stacks[].StackStatus", - "state": "failure" - }, - { - "expected": "ROLLBACK_COMPLETE", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "ROLLBACK_IN_PROGRESS", - "matcher": "pathAny", - "argument": "Stacks[].StackStatus", - "state": "failure" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "failure" - } - ] - }, - "StackDeleteComplete": { - "delay": 30, - "operation": "DescribeStacks", - "maxAttempts": 120, - "description": "Wait until stack status is DELETE_COMPLETE.", - "acceptors": [ - { - "expected": "DELETE_COMPLETE", - "matcher": "pathAll", - "state": "success", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "success" - }, - { - "expected": "DELETE_FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "CREATE_COMPLETE", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "CREATE_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "CREATE_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "ROLLBACK_COMPLETE", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "ROLLBACK_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_COMPLETE", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_COMPLETE_CLEANUP_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_COMPLETE", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - } - ] - }, - "StackUpdateComplete": { - "delay": 30, - "maxAttempts": 120, - "operation": "DescribeStacks", - "description": "Wait until stack status is UPDATE_COMPLETE.", - "acceptors": [ - { - "expected": "UPDATE_COMPLETE", - "matcher": "pathAll", - "state": "success", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "UPDATE_FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "UPDATE_ROLLBACK_COMPLETE", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "expected": "UPDATE_ROLLBACK_FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Stacks[].StackStatus" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "argument": "Stacks[].StackStatus", - "expected": "UPDATE_ROLLBACK_IN_PROGRESS", - "matcher": "pathAny", - "state": "failure" - }, - { - "expected": "ValidationError", - "matcher": "error", - "state": "failure" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json deleted file mode 100644 index c5c6890..0000000 --- a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.min.json +++ /dev/null @@ -1,1876 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-09-07", - "endpointPrefix": "cloudfront", - "globalEndpoint": "cloudfront.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "CloudFront", - "serviceFullName": "Amazon CloudFront", - "signatureVersion": "v4" - }, - "operations": { - "CreateCloudFrontOriginAccessIdentity": { - "http": { - "requestUri": "/2016-09-07/origin-access-identity/cloudfront", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "CloudFrontOriginAccessIdentityConfig" - ], - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2", - "locationName": "CloudFrontOriginAccessIdentityConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "CreateDistribution": { - "http": { - "requestUri": "/2016-09-07/distribution", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfig" - ], - "members": { - "DistributionConfig": { - "shape": "S7", - "locationName": "DistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - } - }, - "payload": "DistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1o" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "CreateDistributionWithTags": { - "http": { - "requestUri": "/2016-09-07/distribution?WithTags", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfigWithTags" - ], - "members": { - "DistributionConfigWithTags": { - "locationName": "DistributionConfigWithTags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - }, - "type": "structure", - "required": [ - "DistributionConfig", - "Tags" - ], - "members": { - "DistributionConfig": { - "shape": "S7" - }, - "Tags": { - "shape": "S1x" - } - } - } - }, - "payload": "DistributionConfigWithTags" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1o" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "CreateInvalidation": { - "http": { - "requestUri": "/2016-09-07/distribution/{DistributionId}/invalidation", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "DistributionId", - "InvalidationBatch" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "InvalidationBatch": { - "shape": "S24", - "locationName": "InvalidationBatch", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - } - }, - "payload": "InvalidationBatch" - }, - "output": { - "type": "structure", - "members": { - "Location": { - "location": "header", - "locationName": "Location" - }, - "Invalidation": { - "shape": "S28" - } - }, - "payload": "Invalidation" - } - }, - "CreateStreamingDistribution": { - "http": { - "requestUri": "/2016-09-07/streaming-distribution", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfig" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2a", - "locationName": "StreamingDistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - } - }, - "payload": "StreamingDistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2e" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "CreateStreamingDistributionWithTags": { - "http": { - "requestUri": "/2016-09-07/streaming-distribution?WithTags", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfigWithTags" - ], - "members": { - "StreamingDistributionConfigWithTags": { - "locationName": "StreamingDistributionConfigWithTags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - }, - "type": "structure", - "required": [ - "StreamingDistributionConfig", - "Tags" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2a" - }, - "Tags": { - "shape": "S1x" - } - } - } - }, - "payload": "StreamingDistributionConfigWithTags" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2e" - }, - "Location": { - "location": "header", - "locationName": "Location" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "DeleteCloudFrontOriginAccessIdentity": { - "http": { - "method": "DELETE", - "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "DeleteDistribution": { - "http": { - "method": "DELETE", - "requestUri": "/2016-09-07/distribution/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "DeleteStreamingDistribution": { - "http": { - "method": "DELETE", - "requestUri": "/2016-09-07/streaming-distribution/{Id}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - } - } - }, - "GetCloudFrontOriginAccessIdentity": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "GetCloudFrontOriginAccessIdentityConfig": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - } - }, - "GetDistribution": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/distribution/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1o" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "GetDistributionConfig": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionConfig": { - "shape": "S7" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "DistributionConfig" - } - }, - "GetInvalidation": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/distribution/{DistributionId}/invalidation/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "DistributionId", - "Id" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Invalidation": { - "shape": "S28" - } - }, - "payload": "Invalidation" - } - }, - "GetStreamingDistribution": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/streaming-distribution/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2e" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - }, - "GetStreamingDistributionConfig": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/streaming-distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistributionConfig": { - "shape": "S2a" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistributionConfig" - } - }, - "ListCloudFrontOriginAccessIdentities": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/origin-access-identity/cloudfront" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentityList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CloudFrontOriginAccessIdentitySummary", - "type": "structure", - "required": [ - "Id", - "S3CanonicalUserId", - "Comment" - ], - "members": { - "Id": {}, - "S3CanonicalUserId": {}, - "Comment": {} - } - } - } - } - } - }, - "payload": "CloudFrontOriginAccessIdentityList" - } - }, - "ListDistributions": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/distribution" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionList": { - "shape": "S36" - } - }, - "payload": "DistributionList" - } - }, - "ListDistributionsByWebACLId": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/distributionsByWebACLId/{WebACLId}" - }, - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - }, - "WebACLId": { - "location": "uri", - "locationName": "WebACLId" - } - } - }, - "output": { - "type": "structure", - "members": { - "DistributionList": { - "shape": "S36" - } - }, - "payload": "DistributionList" - } - }, - "ListInvalidations": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/distribution/{DistributionId}/invalidation" - }, - "input": { - "type": "structure", - "required": [ - "DistributionId" - ], - "members": { - "DistributionId": { - "location": "uri", - "locationName": "DistributionId" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "InvalidationList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "InvalidationSummary", - "type": "structure", - "required": [ - "Id", - "CreateTime", - "Status" - ], - "members": { - "Id": {}, - "CreateTime": { - "type": "timestamp" - }, - "Status": {} - } - } - } - } - } - }, - "payload": "InvalidationList" - } - }, - "ListStreamingDistributions": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/streaming-distribution" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems" - } - } - }, - "output": { - "type": "structure", - "members": { - "StreamingDistributionList": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "StreamingDistributionSummary", - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "DomainName", - "S3Origin", - "Aliases", - "TrustedSigners", - "Comment", - "PriceClass", - "Enabled" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "S3Origin": { - "shape": "S2b" - }, - "Aliases": { - "shape": "S8" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "Comment": {}, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "payload": "StreamingDistributionList" - } - }, - "ListTagsForResource": { - "http": { - "method": "GET", - "requestUri": "/2016-09-07/tagging" - }, - "input": { - "type": "structure", - "required": [ - "Resource" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Tags": { - "shape": "S1x" - } - }, - "payload": "Tags" - } - }, - "TagResource": { - "http": { - "requestUri": "/2016-09-07/tagging?Operation=Tag", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "Tags" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - }, - "Tags": { - "shape": "S1x", - "locationName": "Tags", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - } - }, - "payload": "Tags" - } - }, - "UntagResource": { - "http": { - "requestUri": "/2016-09-07/tagging?Operation=Untag", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "Resource", - "TagKeys" - ], - "members": { - "Resource": { - "location": "querystring", - "locationName": "Resource" - }, - "TagKeys": { - "locationName": "TagKeys", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - }, - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Key" - } - } - } - } - }, - "payload": "TagKeys" - } - }, - "UpdateCloudFrontOriginAccessIdentity": { - "http": { - "method": "PUT", - "requestUri": "/2016-09-07/origin-access-identity/cloudfront/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "CloudFrontOriginAccessIdentityConfig", - "Id" - ], - "members": { - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2", - "locationName": "CloudFrontOriginAccessIdentityConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "CloudFrontOriginAccessIdentityConfig" - }, - "output": { - "type": "structure", - "members": { - "CloudFrontOriginAccessIdentity": { - "shape": "S5" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "CloudFrontOriginAccessIdentity" - } - }, - "UpdateDistribution": { - "http": { - "method": "PUT", - "requestUri": "/2016-09-07/distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "DistributionConfig", - "Id" - ], - "members": { - "DistributionConfig": { - "shape": "S7", - "locationName": "DistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "DistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "Distribution": { - "shape": "S1o" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "Distribution" - } - }, - "UpdateStreamingDistribution": { - "http": { - "method": "PUT", - "requestUri": "/2016-09-07/streaming-distribution/{Id}/config" - }, - "input": { - "type": "structure", - "required": [ - "StreamingDistributionConfig", - "Id" - ], - "members": { - "StreamingDistributionConfig": { - "shape": "S2a", - "locationName": "StreamingDistributionConfig", - "xmlNamespace": { - "uri": "http://cloudfront.amazonaws.com/doc/2016-09-07/" - } - }, - "Id": { - "location": "uri", - "locationName": "Id" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - } - }, - "payload": "StreamingDistributionConfig" - }, - "output": { - "type": "structure", - "members": { - "StreamingDistribution": { - "shape": "S2e" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - } - }, - "payload": "StreamingDistribution" - } - } - }, - "shapes": { - "S2": { - "type": "structure", - "required": [ - "CallerReference", - "Comment" - ], - "members": { - "CallerReference": {}, - "Comment": {} - } - }, - "S5": { - "type": "structure", - "required": [ - "Id", - "S3CanonicalUserId" - ], - "members": { - "Id": {}, - "S3CanonicalUserId": {}, - "CloudFrontOriginAccessIdentityConfig": { - "shape": "S2" - } - } - }, - "S7": { - "type": "structure", - "required": [ - "CallerReference", - "Origins", - "DefaultCacheBehavior", - "Comment", - "Enabled" - ], - "members": { - "CallerReference": {}, - "Aliases": { - "shape": "S8" - }, - "DefaultRootObject": {}, - "Origins": { - "shape": "Sb" - }, - "DefaultCacheBehavior": { - "shape": "Sn" - }, - "CacheBehaviors": { - "shape": "S16" - }, - "CustomErrorResponses": { - "shape": "S19" - }, - "Comment": {}, - "Logging": { - "type": "structure", - "required": [ - "Enabled", - "IncludeCookies", - "Bucket", - "Prefix" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "IncludeCookies": { - "type": "boolean" - }, - "Bucket": {}, - "Prefix": {} - } - }, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - }, - "ViewerCertificate": { - "shape": "S1e" - }, - "Restrictions": { - "shape": "S1i" - }, - "WebACLId": {}, - "HttpVersion": {} - } - }, - "S8": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CNAME" - } - } - } - }, - "Sb": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Origin", - "type": "structure", - "required": [ - "Id", - "DomainName" - ], - "members": { - "Id": {}, - "DomainName": {}, - "OriginPath": {}, - "CustomHeaders": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "OriginCustomHeader", - "type": "structure", - "required": [ - "HeaderName", - "HeaderValue" - ], - "members": { - "HeaderName": {}, - "HeaderValue": {} - } - } - } - } - }, - "S3OriginConfig": { - "type": "structure", - "required": [ - "OriginAccessIdentity" - ], - "members": { - "OriginAccessIdentity": {} - } - }, - "CustomOriginConfig": { - "type": "structure", - "required": [ - "HTTPPort", - "HTTPSPort", - "OriginProtocolPolicy" - ], - "members": { - "HTTPPort": { - "type": "integer" - }, - "HTTPSPort": { - "type": "integer" - }, - "OriginProtocolPolicy": {}, - "OriginSslProtocols": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "SslProtocol" - } - } - } - } - } - } - } - } - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members": { - "TargetOriginId": {}, - "ForwardedValues": { - "shape": "So" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "ViewerProtocolPolicy": {}, - "MinTTL": { - "type": "long" - }, - "AllowedMethods": { - "shape": "S12" - }, - "SmoothStreaming": { - "type": "boolean" - }, - "DefaultTTL": { - "type": "long" - }, - "MaxTTL": { - "type": "long" - }, - "Compress": { - "type": "boolean" - } - } - }, - "So": { - "type": "structure", - "required": [ - "QueryString", - "Cookies" - ], - "members": { - "QueryString": { - "type": "boolean" - }, - "Cookies": { - "type": "structure", - "required": [ - "Forward" - ], - "members": { - "Forward": {}, - "WhitelistedNames": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - } - } - }, - "Headers": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - }, - "QueryStringCacheKeys": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Name" - } - } - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "Enabled", - "Quantity" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "AwsAccountNumber" - } - } - } - }, - "S12": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "shape": "S13" - }, - "CachedMethods": { - "type": "structure", - "required": [ - "Quantity", - "Items" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "shape": "S13" - } - } - } - } - }, - "S13": { - "type": "list", - "member": { - "locationName": "Method" - } - }, - "S16": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CacheBehavior", - "type": "structure", - "required": [ - "PathPattern", - "TargetOriginId", - "ForwardedValues", - "TrustedSigners", - "ViewerProtocolPolicy", - "MinTTL" - ], - "members": { - "PathPattern": {}, - "TargetOriginId": {}, - "ForwardedValues": { - "shape": "So" - }, - "TrustedSigners": { - "shape": "Sy" - }, - "ViewerProtocolPolicy": {}, - "MinTTL": { - "type": "long" - }, - "AllowedMethods": { - "shape": "S12" - }, - "SmoothStreaming": { - "type": "boolean" - }, - "DefaultTTL": { - "type": "long" - }, - "MaxTTL": { - "type": "long" - }, - "Compress": { - "type": "boolean" - } - } - } - } - } - }, - "S19": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "CustomErrorResponse", - "type": "structure", - "required": [ - "ErrorCode" - ], - "members": { - "ErrorCode": { - "type": "integer" - }, - "ResponsePagePath": {}, - "ResponseCode": {}, - "ErrorCachingMinTTL": { - "type": "long" - } - } - } - } - } - }, - "S1e": { - "type": "structure", - "members": { - "CloudFrontDefaultCertificate": { - "type": "boolean" - }, - "IAMCertificateId": {}, - "ACMCertificateArn": {}, - "SSLSupportMethod": {}, - "MinimumProtocolVersion": {}, - "Certificate": { - "deprecated": true - }, - "CertificateSource": { - "deprecated": true - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "GeoRestriction" - ], - "members": { - "GeoRestriction": { - "type": "structure", - "required": [ - "RestrictionType", - "Quantity" - ], - "members": { - "RestrictionType": {}, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Location" - } - } - } - } - } - }, - "S1o": { - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "InProgressInvalidationBatches", - "DomainName", - "ActiveTrustedSigners", - "DistributionConfig" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "InProgressInvalidationBatches": { - "type": "integer" - }, - "DomainName": {}, - "ActiveTrustedSigners": { - "shape": "S1q" - }, - "DistributionConfig": { - "shape": "S7" - } - } - }, - "S1q": { - "type": "structure", - "required": [ - "Enabled", - "Quantity" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Signer", - "type": "structure", - "members": { - "AwsAccountNumber": {}, - "KeyPairIds": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "KeyPairId" - } - } - } - } - } - } - } - } - }, - "S1x": { - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S24": { - "type": "structure", - "required": [ - "Paths", - "CallerReference" - ], - "members": { - "Paths": { - "type": "structure", - "required": [ - "Quantity" - ], - "members": { - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "Path" - } - } - } - }, - "CallerReference": {} - } - }, - "S28": { - "type": "structure", - "required": [ - "Id", - "Status", - "CreateTime", - "InvalidationBatch" - ], - "members": { - "Id": {}, - "Status": {}, - "CreateTime": { - "type": "timestamp" - }, - "InvalidationBatch": { - "shape": "S24" - } - } - }, - "S2a": { - "type": "structure", - "required": [ - "CallerReference", - "S3Origin", - "Comment", - "TrustedSigners", - "Enabled" - ], - "members": { - "CallerReference": {}, - "S3Origin": { - "shape": "S2b" - }, - "Aliases": { - "shape": "S8" - }, - "Comment": {}, - "Logging": { - "type": "structure", - "required": [ - "Enabled", - "Bucket", - "Prefix" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Bucket": {}, - "Prefix": {} - } - }, - "TrustedSigners": { - "shape": "Sy" - }, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "S2b": { - "type": "structure", - "required": [ - "DomainName", - "OriginAccessIdentity" - ], - "members": { - "DomainName": {}, - "OriginAccessIdentity": {} - } - }, - "S2e": { - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "DomainName", - "ActiveTrustedSigners", - "StreamingDistributionConfig" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "ActiveTrustedSigners": { - "shape": "S1q" - }, - "StreamingDistributionConfig": { - "shape": "S2a" - } - } - }, - "S36": { - "type": "structure", - "required": [ - "Marker", - "MaxItems", - "IsTruncated", - "Quantity" - ], - "members": { - "Marker": {}, - "NextMarker": {}, - "MaxItems": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Quantity": { - "type": "integer" - }, - "Items": { - "type": "list", - "member": { - "locationName": "DistributionSummary", - "type": "structure", - "required": [ - "Id", - "ARN", - "Status", - "LastModifiedTime", - "DomainName", - "Aliases", - "Origins", - "DefaultCacheBehavior", - "CacheBehaviors", - "CustomErrorResponses", - "Comment", - "PriceClass", - "Enabled", - "ViewerCertificate", - "Restrictions", - "WebACLId", - "HttpVersion" - ], - "members": { - "Id": {}, - "ARN": {}, - "Status": {}, - "LastModifiedTime": { - "type": "timestamp" - }, - "DomainName": {}, - "Aliases": { - "shape": "S8" - }, - "Origins": { - "shape": "Sb" - }, - "DefaultCacheBehavior": { - "shape": "Sn" - }, - "CacheBehaviors": { - "shape": "S16" - }, - "CustomErrorResponses": { - "shape": "S19" - }, - "Comment": {}, - "PriceClass": {}, - "Enabled": { - "type": "boolean" - }, - "ViewerCertificate": { - "shape": "S1e" - }, - "Restrictions": { - "shape": "S1i" - }, - "WebACLId": {}, - "HttpVersion": {} - } - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json deleted file mode 100644 index 51fbb90..0000000 --- a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListCloudFrontOriginAccessIdentities": { - "input_token": "Marker", - "output_token": "CloudFrontOriginAccessIdentityList.NextMarker", - "limit_key": "MaxItems", - "more_results": "CloudFrontOriginAccessIdentityList.IsTruncated", - "result_key": "CloudFrontOriginAccessIdentityList.Items" - }, - "ListDistributions": { - "input_token": "Marker", - "output_token": "DistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "DistributionList.IsTruncated", - "result_key": "DistributionList.Items" - }, - "ListInvalidations": { - "input_token": "Marker", - "output_token": "InvalidationList.NextMarker", - "limit_key": "MaxItems", - "more_results": "InvalidationList.IsTruncated", - "result_key": "InvalidationList.Items" - }, - "ListStreamingDistributions": { - "input_token": "Marker", - "output_token": "StreamingDistributionList.NextMarker", - "limit_key": "MaxItems", - "more_results": "StreamingDistributionList.IsTruncated", - "result_key": "StreamingDistributionList.Items" - } - } -} diff --git a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json b/node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json deleted file mode 100644 index edd74b2..0000000 --- a/node_modules/aws-sdk/apis/cloudfront-2016-09-07.waiters2.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": 2, - "waiters": { - "DistributionDeployed": { - "delay": 60, - "operation": "GetDistribution", - "maxAttempts": 25, - "description": "Wait until a distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "Distribution.Status" - } - ] - }, - "InvalidationCompleted": { - "delay": 20, - "operation": "GetInvalidation", - "maxAttempts": 30, - "description": "Wait until an invalidation has completed.", - "acceptors": [ - { - "expected": "Completed", - "matcher": "path", - "state": "success", - "argument": "Invalidation.Status" - } - ] - }, - "StreamingDistributionDeployed": { - "delay": 60, - "operation": "GetStreamingDistribution", - "maxAttempts": 25, - "description": "Wait until a streaming distribution is deployed.", - "acceptors": [ - { - "expected": "Deployed", - "matcher": "path", - "state": "success", - "argument": "StreamingDistribution.Status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json b/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json deleted file mode 100644 index 99d911d..0000000 --- a/node_modules/aws-sdk/apis/cloudhsm-2014-05-30.min.json +++ /dev/null @@ -1,519 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-05-30", - "endpointPrefix": "cloudhsm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CloudHSM", - "serviceFullName": "Amazon CloudHSM", - "signatureVersion": "v4", - "targetPrefix": "CloudHsmFrontendService" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagList" - ], - "members": { - "ResourceArn": {}, - "TagList": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "CreateHapg": { - "input": { - "type": "structure", - "required": [ - "Label" - ], - "members": { - "Label": {} - } - }, - "output": { - "type": "structure", - "members": { - "HapgArn": {} - } - } - }, - "CreateHsm": { - "input": { - "type": "structure", - "required": [ - "SubnetId", - "SshKey", - "IamRoleArn", - "SubscriptionType" - ], - "members": { - "SubnetId": { - "locationName": "SubnetId" - }, - "SshKey": { - "locationName": "SshKey" - }, - "EniIp": { - "locationName": "EniIp" - }, - "IamRoleArn": { - "locationName": "IamRoleArn" - }, - "ExternalId": { - "locationName": "ExternalId" - }, - "SubscriptionType": { - "locationName": "SubscriptionType" - }, - "ClientToken": { - "locationName": "ClientToken" - }, - "SyslogIp": { - "locationName": "SyslogIp" - } - }, - "locationName": "CreateHsmRequest" - }, - "output": { - "type": "structure", - "members": { - "HsmArn": {} - } - } - }, - "CreateLunaClient": { - "input": { - "type": "structure", - "required": [ - "Certificate" - ], - "members": { - "Label": {}, - "Certificate": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientArn": {} - } - } - }, - "DeleteHapg": { - "input": { - "type": "structure", - "required": [ - "HapgArn" - ], - "members": { - "HapgArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "DeleteHsm": { - "input": { - "type": "structure", - "required": [ - "HsmArn" - ], - "members": { - "HsmArn": { - "locationName": "HsmArn" - } - }, - "locationName": "DeleteHsmRequest" - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "DeleteLunaClient": { - "input": { - "type": "structure", - "required": [ - "ClientArn" - ], - "members": { - "ClientArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - }, - "DescribeHapg": { - "input": { - "type": "structure", - "required": [ - "HapgArn" - ], - "members": { - "HapgArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "HapgArn": {}, - "HapgSerial": {}, - "HsmsLastActionFailed": { - "shape": "Sz" - }, - "HsmsPendingDeletion": { - "shape": "Sz" - }, - "HsmsPendingRegistration": { - "shape": "Sz" - }, - "Label": {}, - "LastModifiedTimestamp": {}, - "PartitionSerialList": { - "shape": "S11" - }, - "State": {} - } - } - }, - "DescribeHsm": { - "input": { - "type": "structure", - "members": { - "HsmArn": {}, - "HsmSerialNumber": {} - } - }, - "output": { - "type": "structure", - "members": { - "HsmArn": {}, - "Status": {}, - "StatusDetails": {}, - "AvailabilityZone": {}, - "EniId": {}, - "EniIp": {}, - "SubscriptionType": {}, - "SubscriptionStartDate": {}, - "SubscriptionEndDate": {}, - "VpcId": {}, - "SubnetId": {}, - "IamRoleArn": {}, - "SerialNumber": {}, - "VendorName": {}, - "HsmType": {}, - "SoftwareVersion": {}, - "SshPublicKey": {}, - "SshKeyLastUpdated": {}, - "ServerCertUri": {}, - "ServerCertLastUpdated": {}, - "Partitions": { - "type": "list", - "member": {} - } - } - } - }, - "DescribeLunaClient": { - "input": { - "type": "structure", - "members": { - "ClientArn": {}, - "CertificateFingerprint": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientArn": {}, - "Certificate": {}, - "CertificateFingerprint": {}, - "LastModifiedTimestamp": {}, - "Label": {} - } - } - }, - "GetConfig": { - "input": { - "type": "structure", - "required": [ - "ClientArn", - "ClientVersion", - "HapgList" - ], - "members": { - "ClientArn": {}, - "ClientVersion": {}, - "HapgList": { - "shape": "S1i" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigType": {}, - "ConfigFile": {}, - "ConfigCred": {} - } - } - }, - "ListAvailableZones": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AZList": { - "type": "list", - "member": {} - } - } - } - }, - "ListHapgs": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HapgList" - ], - "members": { - "HapgList": { - "shape": "S1i" - }, - "NextToken": {} - } - } - }, - "ListHsms": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "HsmList": { - "shape": "Sz" - }, - "NextToken": {} - } - } - }, - "ListLunaClients": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ClientList" - ], - "members": { - "ClientList": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TagList" - ], - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "ModifyHapg": { - "input": { - "type": "structure", - "required": [ - "HapgArn" - ], - "members": { - "HapgArn": {}, - "Label": {}, - "PartitionSerialList": { - "shape": "S11" - } - } - }, - "output": { - "type": "structure", - "members": { - "HapgArn": {} - } - } - }, - "ModifyHsm": { - "input": { - "type": "structure", - "required": [ - "HsmArn" - ], - "members": { - "HsmArn": { - "locationName": "HsmArn" - }, - "SubnetId": { - "locationName": "SubnetId" - }, - "EniIp": { - "locationName": "EniIp" - }, - "IamRoleArn": { - "locationName": "IamRoleArn" - }, - "ExternalId": { - "locationName": "ExternalId" - }, - "SyslogIp": { - "locationName": "SyslogIp" - } - }, - "locationName": "ModifyHsmRequest" - }, - "output": { - "type": "structure", - "members": { - "HsmArn": {} - } - } - }, - "ModifyLunaClient": { - "input": { - "type": "structure", - "required": [ - "ClientArn", - "Certificate" - ], - "members": { - "ClientArn": {}, - "Certificate": {} - } - }, - "output": { - "type": "structure", - "members": { - "ClientArn": {} - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeyList" - ], - "members": { - "ResourceArn": {}, - "TagKeyList": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sz": { - "type": "list", - "member": {} - }, - "S11": { - "type": "list", - "member": {} - }, - "S1i": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json b/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json deleted file mode 100644 index 5db90f2..0000000 --- a/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.min.json +++ /dev/null @@ -1,837 +0,0 @@ -{ - "metadata": { - "apiVersion": "2011-02-01", - "endpointPrefix": "cloudsearch", - "serviceFullName": "Amazon CloudSearch", - "signatureVersion": "v4", - "xmlNamespace": "http://cloudsearch.amazonaws.com/doc/2011-02-01/", - "protocol": "query" - }, - "operations": { - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "CreateDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S4" - } - } - } - }, - "DefineIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexField" - ], - "members": { - "DomainName": {}, - "IndexField": { - "shape": "Sf" - } - } - }, - "output": { - "resultWrapper": "DefineIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "Sx" - } - } - } - }, - "DefineRankExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "RankExpression" - ], - "members": { - "DomainName": {}, - "RankExpression": { - "shape": "S12" - } - } - }, - "output": { - "resultWrapper": "DefineRankExpressionResult", - "type": "structure", - "required": [ - "RankExpression" - ], - "members": { - "RankExpression": { - "shape": "S15" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DeleteDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S4" - } - } - } - }, - "DeleteIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexFieldName" - ], - "members": { - "DomainName": {}, - "IndexFieldName": {} - } - }, - "output": { - "resultWrapper": "DeleteIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "Sx" - } - } - } - }, - "DeleteRankExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "RankName" - ], - "members": { - "DomainName": {}, - "RankName": {} - } - }, - "output": { - "resultWrapper": "DeleteRankExpressionResult", - "type": "structure", - "required": [ - "RankExpression" - ], - "members": { - "RankExpression": { - "shape": "S15" - } - } - } - }, - "DescribeAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S1e" - } - } - } - }, - "DescribeDefaultSearchField": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeDefaultSearchFieldResult", - "type": "structure", - "required": [ - "DefaultSearchField" - ], - "members": { - "DefaultSearchField": { - "shape": "S1i" - } - } - } - }, - "DescribeDomains": { - "input": { - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeDomainsResult", - "type": "structure", - "required": [ - "DomainStatusList" - ], - "members": { - "DomainStatusList": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - } - }, - "DescribeIndexFields": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "FieldNames": { - "shape": "S1o" - } - } - }, - "output": { - "resultWrapper": "DescribeIndexFieldsResult", - "type": "structure", - "required": [ - "IndexFields" - ], - "members": { - "IndexFields": { - "type": "list", - "member": { - "shape": "Sx" - } - } - } - } - }, - "DescribeRankExpressions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "RankNames": { - "shape": "S1o" - } - } - }, - "output": { - "resultWrapper": "DescribeRankExpressionsResult", - "type": "structure", - "required": [ - "RankExpressions" - ], - "members": { - "RankExpressions": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - } - }, - "DescribeServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S1w" - } - } - } - }, - "DescribeStemmingOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeStemmingOptionsResult", - "type": "structure", - "required": [ - "Stems" - ], - "members": { - "Stems": { - "shape": "S20" - } - } - } - }, - "DescribeStopwordOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeStopwordOptionsResult", - "type": "structure", - "required": [ - "Stopwords" - ], - "members": { - "Stopwords": { - "shape": "S24" - } - } - } - }, - "DescribeSynonymOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeSynonymOptionsResult", - "type": "structure", - "required": [ - "Synonyms" - ], - "members": { - "Synonyms": { - "shape": "S28" - } - } - } - }, - "IndexDocuments": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "IndexDocumentsResult", - "type": "structure", - "members": { - "FieldNames": { - "shape": "S1o" - } - } - } - }, - "UpdateAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "MultiAZ" - ], - "members": { - "DomainName": {}, - "MultiAZ": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "UpdateAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S1e" - } - } - } - }, - "UpdateDefaultSearchField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DefaultSearchField" - ], - "members": { - "DomainName": {}, - "DefaultSearchField": {} - } - }, - "output": { - "resultWrapper": "UpdateDefaultSearchFieldResult", - "type": "structure", - "required": [ - "DefaultSearchField" - ], - "members": { - "DefaultSearchField": { - "shape": "S1i" - } - } - } - }, - "UpdateServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AccessPolicies" - ], - "members": { - "DomainName": {}, - "AccessPolicies": {} - } - }, - "output": { - "resultWrapper": "UpdateServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S1w" - } - } - } - }, - "UpdateStemmingOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Stems" - ], - "members": { - "DomainName": {}, - "Stems": {} - } - }, - "output": { - "resultWrapper": "UpdateStemmingOptionsResult", - "type": "structure", - "required": [ - "Stems" - ], - "members": { - "Stems": { - "shape": "S20" - } - } - } - }, - "UpdateStopwordOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Stopwords" - ], - "members": { - "DomainName": {}, - "Stopwords": {} - } - }, - "output": { - "resultWrapper": "UpdateStopwordOptionsResult", - "type": "structure", - "required": [ - "Stopwords" - ], - "members": { - "Stopwords": { - "shape": "S24" - } - } - } - }, - "UpdateSynonymOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Synonyms" - ], - "members": { - "DomainName": {}, - "Synonyms": {} - } - }, - "output": { - "resultWrapper": "UpdateSynonymOptionsResult", - "type": "structure", - "required": [ - "Synonyms" - ], - "members": { - "Synonyms": { - "shape": "S28" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "required": [ - "DomainId", - "DomainName", - "RequiresIndexDocuments" - ], - "members": { - "DomainId": {}, - "DomainName": {}, - "Created": { - "type": "boolean" - }, - "Deleted": { - "type": "boolean" - }, - "NumSearchableDocs": { - "type": "long" - }, - "DocService": { - "shape": "S8" - }, - "SearchService": { - "shape": "S8" - }, - "RequiresIndexDocuments": { - "type": "boolean" - }, - "Processing": { - "type": "boolean" - }, - "SearchInstanceType": {}, - "SearchPartitionCount": { - "type": "integer" - }, - "SearchInstanceCount": { - "type": "integer" - } - } - }, - "S8": { - "type": "structure", - "members": { - "Arn": {}, - "Endpoint": {} - } - }, - "Sf": { - "type": "structure", - "required": [ - "IndexFieldName", - "IndexFieldType" - ], - "members": { - "IndexFieldName": {}, - "IndexFieldType": {}, - "UIntOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "integer" - } - } - }, - "LiteralOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SearchEnabled": { - "type": "boolean" - }, - "FacetEnabled": { - "type": "boolean" - }, - "ResultEnabled": { - "type": "boolean" - } - } - }, - "TextOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "FacetEnabled": { - "type": "boolean" - }, - "ResultEnabled": { - "type": "boolean" - }, - "TextProcessor": {} - } - }, - "SourceAttributes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SourceDataFunction" - ], - "members": { - "SourceDataFunction": {}, - "SourceDataCopy": { - "type": "structure", - "required": [ - "SourceName" - ], - "members": { - "SourceName": {}, - "DefaultValue": {} - } - }, - "SourceDataTrimTitle": { - "type": "structure", - "required": [ - "SourceName" - ], - "members": { - "SourceName": {}, - "DefaultValue": {}, - "Separator": {}, - "Language": {} - } - }, - "SourceDataMap": { - "type": "structure", - "required": [ - "SourceName" - ], - "members": { - "SourceName": {}, - "DefaultValue": {}, - "Cases": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - } - } - }, - "Sx": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sf" - }, - "Status": { - "shape": "Sy" - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "CreationDate", - "UpdateDate", - "State" - ], - "members": { - "CreationDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "UpdateVersion": { - "type": "integer" - }, - "State": {}, - "PendingDeletion": { - "type": "boolean" - } - } - }, - "S12": { - "type": "structure", - "required": [ - "RankName", - "RankExpression" - ], - "members": { - "RankName": {}, - "RankExpression": {} - } - }, - "S15": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S12" - }, - "Status": { - "shape": "Sy" - } - } - }, - "S1e": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "type": "boolean" - }, - "Status": { - "shape": "Sy" - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S1o": { - "type": "list", - "member": {} - }, - "S1w": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S20": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S24": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - }, - "S28": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sy" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json b/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json deleted file mode 100644 index 5216445..0000000 --- a/node_modules/aws-sdk/apis/cloudsearch-2011-02-01.paginators.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "pagination": { - "DescribeDomains": { - "result_key": "DomainStatusList" - }, - "DescribeIndexFields": { - "result_key": "IndexFields" - }, - "DescribeRankExpressions": { - "result_key": "RankExpressions" - } - } -} diff --git a/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json b/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json deleted file mode 100644 index 7ab2a3e..0000000 --- a/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.min.json +++ /dev/null @@ -1,1086 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-01", - "endpointPrefix": "cloudsearch", - "serviceFullName": "Amazon CloudSearch", - "signatureVersion": "v4", - "xmlNamespace": "http://cloudsearch.amazonaws.com/doc/2013-01-01/", - "protocol": "query" - }, - "operations": { - "BuildSuggesters": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "BuildSuggestersResult", - "type": "structure", - "members": { - "FieldNames": { - "shape": "S4" - } - } - } - }, - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "CreateDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S8" - } - } - } - }, - "DefineAnalysisScheme": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AnalysisScheme" - ], - "members": { - "DomainName": {}, - "AnalysisScheme": { - "shape": "Sl" - } - } - }, - "output": { - "resultWrapper": "DefineAnalysisSchemeResult", - "type": "structure", - "required": [ - "AnalysisScheme" - ], - "members": { - "AnalysisScheme": { - "shape": "Ss" - } - } - } - }, - "DefineExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Expression" - ], - "members": { - "DomainName": {}, - "Expression": { - "shape": "Sy" - } - } - }, - "output": { - "resultWrapper": "DefineExpressionResult", - "type": "structure", - "required": [ - "Expression" - ], - "members": { - "Expression": { - "shape": "S11" - } - } - } - }, - "DefineIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexField" - ], - "members": { - "DomainName": {}, - "IndexField": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "DefineIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "S1n" - } - } - } - }, - "DefineSuggester": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Suggester" - ], - "members": { - "DomainName": {}, - "Suggester": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DefineSuggesterResult", - "type": "structure", - "required": [ - "Suggester" - ], - "members": { - "Suggester": { - "shape": "S1t" - } - } - } - }, - "DeleteAnalysisScheme": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AnalysisSchemeName" - ], - "members": { - "DomainName": {}, - "AnalysisSchemeName": {} - } - }, - "output": { - "resultWrapper": "DeleteAnalysisSchemeResult", - "type": "structure", - "required": [ - "AnalysisScheme" - ], - "members": { - "AnalysisScheme": { - "shape": "Ss" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DeleteDomainResult", - "type": "structure", - "members": { - "DomainStatus": { - "shape": "S8" - } - } - } - }, - "DeleteExpression": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ExpressionName" - ], - "members": { - "DomainName": {}, - "ExpressionName": {} - } - }, - "output": { - "resultWrapper": "DeleteExpressionResult", - "type": "structure", - "required": [ - "Expression" - ], - "members": { - "Expression": { - "shape": "S11" - } - } - } - }, - "DeleteIndexField": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "IndexFieldName" - ], - "members": { - "DomainName": {}, - "IndexFieldName": {} - } - }, - "output": { - "resultWrapper": "DeleteIndexFieldResult", - "type": "structure", - "required": [ - "IndexField" - ], - "members": { - "IndexField": { - "shape": "S1n" - } - } - } - }, - "DeleteSuggester": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "SuggesterName" - ], - "members": { - "DomainName": {}, - "SuggesterName": {} - } - }, - "output": { - "resultWrapper": "DeleteSuggesterResult", - "type": "structure", - "required": [ - "Suggester" - ], - "members": { - "Suggester": { - "shape": "S1t" - } - } - } - }, - "DescribeAnalysisSchemes": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AnalysisSchemeNames": { - "shape": "S25" - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeAnalysisSchemesResult", - "type": "structure", - "required": [ - "AnalysisSchemes" - ], - "members": { - "AnalysisSchemes": { - "type": "list", - "member": { - "shape": "Ss" - } - } - } - } - }, - "DescribeAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S2a" - } - } - } - }, - "DescribeDomains": { - "input": { - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeDomainsResult", - "type": "structure", - "required": [ - "DomainStatusList" - ], - "members": { - "DomainStatusList": { - "type": "list", - "member": { - "shape": "S8" - } - } - } - } - }, - "DescribeExpressions": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "ExpressionNames": { - "shape": "S25" - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeExpressionsResult", - "type": "structure", - "required": [ - "Expressions" - ], - "members": { - "Expressions": { - "type": "list", - "member": { - "shape": "S11" - } - } - } - } - }, - "DescribeIndexFields": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "FieldNames": { - "type": "list", - "member": {} - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeIndexFieldsResult", - "type": "structure", - "required": [ - "IndexFields" - ], - "members": { - "IndexFields": { - "type": "list", - "member": { - "shape": "S1n" - } - } - } - } - }, - "DescribeScalingParameters": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DescribeScalingParametersResult", - "type": "structure", - "required": [ - "ScalingParameters" - ], - "members": { - "ScalingParameters": { - "shape": "S2p" - } - } - } - }, - "DescribeServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S2u" - } - } - } - }, - "DescribeSuggesters": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "SuggesterNames": { - "shape": "S25" - }, - "Deployed": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeSuggestersResult", - "type": "structure", - "required": [ - "Suggesters" - ], - "members": { - "Suggesters": { - "type": "list", - "member": { - "shape": "S1t" - } - } - } - } - }, - "IndexDocuments": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "IndexDocumentsResult", - "type": "structure", - "members": { - "FieldNames": { - "shape": "S4" - } - } - } - }, - "ListDomainNames": { - "output": { - "resultWrapper": "ListDomainNamesResult", - "type": "structure", - "members": { - "DomainNames": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "UpdateAvailabilityOptions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "MultiAZ" - ], - "members": { - "DomainName": {}, - "MultiAZ": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "UpdateAvailabilityOptionsResult", - "type": "structure", - "members": { - "AvailabilityOptions": { - "shape": "S2a" - } - } - } - }, - "UpdateScalingParameters": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ScalingParameters" - ], - "members": { - "DomainName": {}, - "ScalingParameters": { - "shape": "S2q" - } - } - }, - "output": { - "resultWrapper": "UpdateScalingParametersResult", - "type": "structure", - "required": [ - "ScalingParameters" - ], - "members": { - "ScalingParameters": { - "shape": "S2p" - } - } - } - }, - "UpdateServiceAccessPolicies": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "AccessPolicies" - ], - "members": { - "DomainName": {}, - "AccessPolicies": {} - } - }, - "output": { - "resultWrapper": "UpdateServiceAccessPoliciesResult", - "type": "structure", - "required": [ - "AccessPolicies" - ], - "members": { - "AccessPolicies": { - "shape": "S2u" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": {} - }, - "S8": { - "type": "structure", - "required": [ - "DomainId", - "DomainName", - "RequiresIndexDocuments" - ], - "members": { - "DomainId": {}, - "DomainName": {}, - "ARN": {}, - "Created": { - "type": "boolean" - }, - "Deleted": { - "type": "boolean" - }, - "DocService": { - "shape": "Sc" - }, - "SearchService": { - "shape": "Sc" - }, - "RequiresIndexDocuments": { - "type": "boolean" - }, - "Processing": { - "type": "boolean" - }, - "SearchInstanceType": {}, - "SearchPartitionCount": { - "type": "integer" - }, - "SearchInstanceCount": { - "type": "integer" - }, - "Limits": { - "type": "structure", - "required": [ - "MaximumReplicationCount", - "MaximumPartitionCount" - ], - "members": { - "MaximumReplicationCount": { - "type": "integer" - }, - "MaximumPartitionCount": { - "type": "integer" - } - } - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Endpoint": {} - } - }, - "Sl": { - "type": "structure", - "required": [ - "AnalysisSchemeName", - "AnalysisSchemeLanguage" - ], - "members": { - "AnalysisSchemeName": {}, - "AnalysisSchemeLanguage": {}, - "AnalysisOptions": { - "type": "structure", - "members": { - "Synonyms": {}, - "Stopwords": {}, - "StemmingDictionary": {}, - "JapaneseTokenizationDictionary": {}, - "AlgorithmicStemming": {} - } - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sl" - }, - "Status": { - "shape": "St" - } - } - }, - "St": { - "type": "structure", - "required": [ - "CreationDate", - "UpdateDate", - "State" - ], - "members": { - "CreationDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "UpdateVersion": { - "type": "integer" - }, - "State": {}, - "PendingDeletion": { - "type": "boolean" - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "ExpressionName", - "ExpressionValue" - ], - "members": { - "ExpressionName": {}, - "ExpressionValue": {} - } - }, - "S11": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sy" - }, - "Status": { - "shape": "St" - } - } - }, - "S13": { - "type": "structure", - "required": [ - "IndexFieldName", - "IndexFieldType" - ], - "members": { - "IndexFieldName": {}, - "IndexFieldType": {}, - "IntOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "long" - }, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "DoubleOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "double" - }, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "LiteralOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "TextOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - }, - "HighlightEnabled": { - "type": "boolean" - }, - "AnalysisScheme": {} - } - }, - "DateOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "LatLonOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceField": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - }, - "SortEnabled": { - "type": "boolean" - } - } - }, - "IntArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "long" - }, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - }, - "DoubleArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": { - "type": "double" - }, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - }, - "LiteralArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - }, - "TextArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceFields": {}, - "ReturnEnabled": { - "type": "boolean" - }, - "HighlightEnabled": { - "type": "boolean" - }, - "AnalysisScheme": {} - } - }, - "DateArrayOptions": { - "type": "structure", - "members": { - "DefaultValue": {}, - "SourceFields": {}, - "FacetEnabled": { - "type": "boolean" - }, - "SearchEnabled": { - "type": "boolean" - }, - "ReturnEnabled": { - "type": "boolean" - } - } - } - } - }, - "S1n": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S13" - }, - "Status": { - "shape": "St" - } - } - }, - "S1p": { - "type": "structure", - "required": [ - "SuggesterName", - "DocumentSuggesterOptions" - ], - "members": { - "SuggesterName": {}, - "DocumentSuggesterOptions": { - "type": "structure", - "required": [ - "SourceField" - ], - "members": { - "SourceField": {}, - "FuzzyMatching": {}, - "SortExpression": {} - } - } - } - }, - "S1t": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S1p" - }, - "Status": { - "shape": "St" - } - } - }, - "S25": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "type": "boolean" - }, - "Status": { - "shape": "St" - } - } - }, - "S2p": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "S2q" - }, - "Status": { - "shape": "St" - } - } - }, - "S2q": { - "type": "structure", - "members": { - "DesiredInstanceType": {}, - "DesiredReplicationCount": { - "type": "integer" - }, - "DesiredPartitionCount": { - "type": "integer" - } - } - }, - "S2u": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "St" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json b/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json deleted file mode 100644 index 82fa804..0000000 --- a/node_modules/aws-sdk/apis/cloudsearch-2013-01-01.paginators.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pagination": { - "DescribeAnalysisSchemes": { - "result_key": "AnalysisSchemes" - }, - "DescribeDomains": { - "result_key": "DomainStatusList" - }, - "DescribeExpressions": { - "result_key": "Expressions" - }, - "DescribeIndexFields": { - "result_key": "IndexFields" - }, - "DescribeSuggesters": { - "result_key": "Suggesters" - } - } -} - diff --git a/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json b/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json deleted file mode 100644 index cea348e..0000000 --- a/node_modules/aws-sdk/apis/cloudsearchdomain-2013-01-01.min.json +++ /dev/null @@ -1,297 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-01", - "endpointPrefix": "cloudsearchdomain", - "jsonVersion": "1.1", - "protocol": "rest-json", - "serviceFullName": "Amazon CloudSearch Domain", - "signatureVersion": "v4", - "signingName": "cloudsearch" - }, - "operations": { - "Search": { - "http": { - "method": "GET", - "requestUri": "/2013-01-01/search?format=sdk&pretty=true" - }, - "input": { - "type": "structure", - "required": [ - "query" - ], - "members": { - "cursor": { - "location": "querystring", - "locationName": "cursor" - }, - "expr": { - "location": "querystring", - "locationName": "expr" - }, - "facet": { - "location": "querystring", - "locationName": "facet" - }, - "filterQuery": { - "location": "querystring", - "locationName": "fq" - }, - "highlight": { - "location": "querystring", - "locationName": "highlight" - }, - "partial": { - "location": "querystring", - "locationName": "partial", - "type": "boolean" - }, - "query": { - "location": "querystring", - "locationName": "q" - }, - "queryOptions": { - "location": "querystring", - "locationName": "q.options" - }, - "queryParser": { - "location": "querystring", - "locationName": "q.parser" - }, - "return": { - "location": "querystring", - "locationName": "return" - }, - "size": { - "location": "querystring", - "locationName": "size", - "type": "long" - }, - "sort": { - "location": "querystring", - "locationName": "sort" - }, - "start": { - "location": "querystring", - "locationName": "start", - "type": "long" - }, - "stats": { - "location": "querystring", - "locationName": "stats" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": { - "type": "structure", - "members": { - "timems": { - "type": "long" - }, - "rid": {} - } - }, - "hits": { - "type": "structure", - "members": { - "found": { - "type": "long" - }, - "start": { - "type": "long" - }, - "cursor": {}, - "hit": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "fields": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "exprs": { - "type": "map", - "key": {}, - "value": {} - }, - "highlights": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "facets": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "buckets": { - "type": "list", - "member": { - "type": "structure", - "members": { - "value": {}, - "count": { - "type": "long" - } - } - } - } - } - } - }, - "stats": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "min": {}, - "max": {}, - "count": { - "type": "long" - }, - "missing": { - "type": "long" - }, - "sum": { - "type": "double" - }, - "sumOfSquares": { - "type": "double" - }, - "mean": {}, - "stddev": { - "type": "double" - } - } - } - } - } - } - }, - "Suggest": { - "http": { - "method": "GET", - "requestUri": "/2013-01-01/suggest?format=sdk&pretty=true" - }, - "input": { - "type": "structure", - "required": [ - "query", - "suggester" - ], - "members": { - "query": { - "location": "querystring", - "locationName": "q" - }, - "suggester": { - "location": "querystring", - "locationName": "suggester" - }, - "size": { - "location": "querystring", - "locationName": "size", - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": { - "type": "structure", - "members": { - "timems": { - "type": "long" - }, - "rid": {} - } - }, - "suggest": { - "type": "structure", - "members": { - "query": {}, - "found": { - "type": "long" - }, - "suggestions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "suggestion": {}, - "score": { - "type": "long" - }, - "id": {} - } - } - } - } - } - } - } - }, - "UploadDocuments": { - "http": { - "requestUri": "/2013-01-01/documents/batch?format=sdk" - }, - "input": { - "type": "structure", - "required": [ - "documents", - "contentType" - ], - "members": { - "documents": { - "type": "blob", - "streaming": true - }, - "contentType": { - "location": "header", - "locationName": "Content-Type" - } - }, - "payload": "documents" - }, - "output": { - "type": "structure", - "members": { - "status": {}, - "adds": { - "type": "long" - }, - "deletes": { - "type": "long" - }, - "warnings": { - "type": "list", - "member": { - "type": "structure", - "members": { - "message": {} - } - } - } - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json b/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json deleted file mode 100644 index 5ef4648..0000000 --- a/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.min.json +++ /dev/null @@ -1,454 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-11-01", - "endpointPrefix": "cloudtrail", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CloudTrail", - "serviceFullName": "AWS CloudTrail", - "signatureVersion": "v4", - "targetPrefix": "com.amazonaws.cloudtrail.v20131101.CloudTrail_20131101" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "TagsList": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "CreateTrail": { - "input": { - "type": "structure", - "required": [ - "Name", - "S3BucketName" - ], - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "EnableLogFileValidation": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": { - "deprecated": true - }, - "SnsTopicARN": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "TrailARN": {}, - "LogFileValidationEnabled": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "idempotent": true - }, - "DeleteTrail": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "DescribeTrails": { - "input": { - "type": "structure", - "members": { - "trailNameList": { - "type": "list", - "member": {} - }, - "includeShadowTrails": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "trailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": { - "deprecated": true - }, - "SnsTopicARN": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "HomeRegion": {}, - "TrailARN": {}, - "LogFileValidationEnabled": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - } - } - } - }, - "idempotent": true - }, - "GetTrailStatus": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "IsLogging": { - "type": "boolean" - }, - "LatestDeliveryError": {}, - "LatestNotificationError": {}, - "LatestDeliveryTime": { - "type": "timestamp" - }, - "LatestNotificationTime": { - "type": "timestamp" - }, - "StartLoggingTime": { - "type": "timestamp" - }, - "StopLoggingTime": { - "type": "timestamp" - }, - "LatestCloudWatchLogsDeliveryError": {}, - "LatestCloudWatchLogsDeliveryTime": { - "type": "timestamp" - }, - "LatestDigestDeliveryTime": { - "type": "timestamp" - }, - "LatestDigestDeliveryError": {}, - "LatestDeliveryAttemptTime": {}, - "LatestNotificationAttemptTime": {}, - "LatestNotificationAttemptSucceeded": {}, - "LatestDeliveryAttemptSucceeded": {}, - "TimeLoggingStarted": {}, - "TimeLoggingStopped": {} - } - }, - "idempotent": true - }, - "ListPublicKeys": { - "input": { - "type": "structure", - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PublicKeyList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": { - "type": "blob" - }, - "ValidityStartTime": { - "type": "timestamp" - }, - "ValidityEndTime": { - "type": "timestamp" - }, - "Fingerprint": {} - } - } - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "ListTags": { - "input": { - "type": "structure", - "required": [ - "ResourceIdList" - ], - "members": { - "ResourceIdList": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceTagList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceId": {}, - "TagsList": { - "shape": "S3" - } - } - } - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "LookupEvents": { - "input": { - "type": "structure", - "members": { - "LookupAttributes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeKey", - "AttributeValue" - ], - "members": { - "AttributeKey": {}, - "AttributeValue": {} - } - } - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "EventName": {}, - "EventTime": { - "type": "timestamp" - }, - "Username": {}, - "Resources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceName": {} - } - } - }, - "CloudTrailEvent": {} - } - } - }, - "NextToken": {} - } - }, - "idempotent": true - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "TagsList": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "StartLogging": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "StopLogging": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "idempotent": true - }, - "UpdateTrail": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "EnableLogFileValidation": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "S3BucketName": {}, - "S3KeyPrefix": {}, - "SnsTopicName": { - "deprecated": true - }, - "SnsTopicARN": {}, - "IncludeGlobalServiceEvents": { - "type": "boolean" - }, - "IsMultiRegionTrail": { - "type": "boolean" - }, - "TrailARN": {}, - "LogFileValidationEnabled": { - "type": "boolean" - }, - "CloudWatchLogsLogGroupArn": {}, - "CloudWatchLogsRoleArn": {}, - "KmsKeyId": {} - } - }, - "idempotent": true - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json b/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json deleted file mode 100644 index a11f436..0000000 --- a/node_modules/aws-sdk/apis/cloudtrail-2013-11-01.paginators.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "pagination": { - "DescribeTrails": { - "result_key": "trailList" - } - } -} diff --git a/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json b/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json deleted file mode 100644 index 361d731..0000000 --- a/node_modules/aws-sdk/apis/codecommit-2015-04-13.min.json +++ /dev/null @@ -1,375 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-04-13", - "endpointPrefix": "codecommit", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodeCommit", - "serviceFullName": "AWS CodeCommit", - "signatureVersion": "v4", - "targetPrefix": "CodeCommit_20150413" - }, - "operations": { - "BatchGetRepositories": { - "input": { - "type": "structure", - "required": [ - "repositoryNames" - ], - "members": { - "repositoryNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "repositoriesNotFound": { - "type": "list", - "member": {} - } - } - } - }, - "CreateBranch": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "branchName", - "commitId" - ], - "members": { - "repositoryName": {}, - "branchName": {}, - "commitId": {} - } - } - }, - "CreateRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {}, - "repositoryDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositoryMetadata": { - "shape": "S6" - } - } - } - }, - "DeleteRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositoryId": {} - } - } - }, - "GetBranch": { - "input": { - "type": "structure", - "members": { - "repositoryName": {}, - "branchName": {} - } - }, - "output": { - "type": "structure", - "members": { - "branch": { - "type": "structure", - "members": { - "branchName": {}, - "commitId": {} - } - } - } - } - }, - "GetCommit": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "commitId" - ], - "members": { - "repositoryName": {}, - "commitId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "commit" - ], - "members": { - "commit": { - "type": "structure", - "members": { - "treeId": {}, - "parents": { - "type": "list", - "member": {} - }, - "message": {}, - "author": { - "shape": "Sw" - }, - "committer": { - "shape": "Sw" - }, - "additionalData": {} - } - } - } - } - }, - "GetRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositoryMetadata": { - "shape": "S6" - } - } - } - }, - "GetRepositoryTriggers": { - "input": { - "type": "structure", - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "configurationId": {}, - "triggers": { - "shape": "S16" - } - } - } - }, - "ListBranches": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "branches": { - "shape": "S1a" - }, - "nextToken": {} - } - } - }, - "ListRepositories": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "sortBy": {}, - "order": {} - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "type": "structure", - "members": { - "repositoryName": {}, - "repositoryId": {} - } - } - }, - "nextToken": {} - } - } - }, - "PutRepositoryTriggers": { - "input": { - "type": "structure", - "members": { - "repositoryName": {}, - "triggers": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "members": { - "configurationId": {} - } - } - }, - "TestRepositoryTriggers": { - "input": { - "type": "structure", - "members": { - "repositoryName": {}, - "triggers": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "members": { - "successfulExecutions": { - "type": "list", - "member": {} - }, - "failedExecutions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "trigger": {}, - "failureMessage": {} - } - } - } - } - } - }, - "UpdateDefaultBranch": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "defaultBranchName" - ], - "members": { - "repositoryName": {}, - "defaultBranchName": {} - } - } - }, - "UpdateRepositoryDescription": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {}, - "repositoryDescription": {} - } - } - }, - "UpdateRepositoryName": { - "input": { - "type": "structure", - "required": [ - "oldName", - "newName" - ], - "members": { - "oldName": {}, - "newName": {} - } - } - } - }, - "shapes": { - "S6": { - "type": "structure", - "members": { - "accountId": {}, - "repositoryId": {}, - "repositoryName": {}, - "repositoryDescription": {}, - "defaultBranch": {}, - "lastModifiedDate": { - "type": "timestamp" - }, - "creationDate": { - "type": "timestamp" - }, - "cloneUrlHttp": {}, - "cloneUrlSsh": {}, - "Arn": {} - } - }, - "Sw": { - "type": "structure", - "members": { - "name": {}, - "email": {}, - "date": {} - } - }, - "S16": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "destinationArn": {}, - "customData": {}, - "branches": { - "shape": "S1a" - }, - "events": { - "type": "list", - "member": {} - } - } - } - }, - "S1a": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json b/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json deleted file mode 100644 index e4c9a90..0000000 --- a/node_modules/aws-sdk/apis/codecommit-2015-04-13.paginators.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "pagination": { - "ListBranches": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "branches" - }, - "ListRepositories": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "repositories" - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json deleted file mode 100644 index f11c90c..0000000 --- a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.min.json +++ /dev/null @@ -1,1120 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-10-06", - "endpointPrefix": "codedeploy", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodeDeploy", - "serviceFullName": "AWS CodeDeploy", - "signatureVersion": "v4", - "targetPrefix": "CodeDeploy_20141006", - "timestampFormat": "unixTimestamp" - }, - "operations": { - "AddTagsToOnPremisesInstances": { - "input": { - "type": "structure", - "required": [ - "tags", - "instanceNames" - ], - "members": { - "tags": { - "shape": "S2" - }, - "instanceNames": { - "shape": "S6" - } - } - } - }, - "BatchGetApplicationRevisions": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "revisions" - ], - "members": { - "applicationName": {}, - "revisions": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "applicationName": {}, - "errorMessage": {}, - "revisions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "revisionLocation": { - "shape": "Sb" - }, - "genericRevisionInfo": { - "shape": "Sq" - } - } - } - } - } - } - }, - "BatchGetApplications": { - "input": { - "type": "structure", - "members": { - "applicationNames": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "applicationsInfo": { - "type": "list", - "member": { - "shape": "Sz" - } - } - } - } - }, - "BatchGetDeploymentGroups": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupNames" - ], - "members": { - "applicationName": {}, - "deploymentGroupNames": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentGroupsInfo": { - "type": "list", - "member": { - "shape": "S15" - } - }, - "errorMessage": {} - } - } - }, - "BatchGetDeploymentInstances": { - "input": { - "type": "structure", - "required": [ - "deploymentId", - "instanceIds" - ], - "members": { - "deploymentId": {}, - "instanceIds": { - "shape": "S1y" - } - } - }, - "output": { - "type": "structure", - "members": { - "instancesSummary": { - "type": "list", - "member": { - "shape": "S22" - } - }, - "errorMessage": {} - } - } - }, - "BatchGetDeployments": { - "input": { - "type": "structure", - "members": { - "deploymentIds": { - "shape": "S2e" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentsInfo": { - "type": "list", - "member": { - "shape": "S2h" - } - } - } - } - }, - "BatchGetOnPremisesInstances": { - "input": { - "type": "structure", - "members": { - "instanceNames": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "instanceInfos": { - "type": "list", - "member": { - "shape": "S2s" - } - } - } - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "applicationId": {} - } - } - }, - "CreateDeployment": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "revision": { - "shape": "Sb" - }, - "deploymentConfigName": {}, - "description": {}, - "ignoreApplicationStopFailures": { - "type": "boolean" - }, - "autoRollbackConfiguration": { - "shape": "S1t" - }, - "updateOutdatedInstancesOnly": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentId": {} - } - } - }, - "CreateDeploymentConfig": { - "input": { - "type": "structure", - "required": [ - "deploymentConfigName" - ], - "members": { - "deploymentConfigName": {}, - "minimumHealthyHosts": { - "shape": "S30" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentConfigId": {} - } - } - }, - "CreateDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupName", - "serviceRoleArn" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "deploymentConfigName": {}, - "ec2TagFilters": { - "shape": "S18" - }, - "onPremisesInstanceTagFilters": { - "shape": "S1b" - }, - "autoScalingGroups": { - "shape": "S36" - }, - "serviceRoleArn": {}, - "triggerConfigurations": { - "shape": "S1j" - }, - "alarmConfiguration": { - "shape": "S1p" - }, - "autoRollbackConfiguration": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "members": { - "deploymentGroupId": {} - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {} - } - } - }, - "DeleteDeploymentConfig": { - "input": { - "type": "structure", - "required": [ - "deploymentConfigName" - ], - "members": { - "deploymentConfigName": {} - } - } - }, - "DeleteDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupName" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "hooksNotCleanedUp": { - "shape": "S1e" - } - } - } - }, - "DeregisterOnPremisesInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - } - }, - "GetApplication": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "application": { - "shape": "Sz" - } - } - } - }, - "GetApplicationRevision": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "revision" - ], - "members": { - "applicationName": {}, - "revision": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": { - "applicationName": {}, - "revision": { - "shape": "Sb" - }, - "revisionInfo": { - "shape": "Sq" - } - } - } - }, - "GetDeployment": { - "input": { - "type": "structure", - "required": [ - "deploymentId" - ], - "members": { - "deploymentId": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentInfo": { - "shape": "S2h" - } - } - } - }, - "GetDeploymentConfig": { - "input": { - "type": "structure", - "required": [ - "deploymentConfigName" - ], - "members": { - "deploymentConfigName": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentConfigInfo": { - "type": "structure", - "members": { - "deploymentConfigId": {}, - "deploymentConfigName": {}, - "minimumHealthyHosts": { - "shape": "S30" - }, - "createTime": { - "type": "timestamp" - } - } - } - } - } - }, - "GetDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "deploymentGroupName" - ], - "members": { - "applicationName": {}, - "deploymentGroupName": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentGroupInfo": { - "shape": "S15" - } - } - } - }, - "GetDeploymentInstance": { - "input": { - "type": "structure", - "required": [ - "deploymentId", - "instanceId" - ], - "members": { - "deploymentId": {}, - "instanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceSummary": { - "shape": "S22" - } - } - } - }, - "GetOnPremisesInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName" - ], - "members": { - "instanceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceInfo": { - "shape": "S2s" - } - } - } - }, - "ListApplicationRevisions": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {}, - "sortBy": {}, - "sortOrder": {}, - "s3Bucket": {}, - "s3KeyPrefix": {}, - "deployed": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "revisions": { - "shape": "Sa" - }, - "nextToken": {} - } - } - }, - "ListApplications": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "applications": { - "shape": "Sw" - }, - "nextToken": {} - } - } - }, - "ListDeploymentConfigs": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "deploymentConfigsList": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListDeploymentGroups": { - "input": { - "type": "structure", - "required": [ - "applicationName" - ], - "members": { - "applicationName": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroups": { - "shape": "Ss" - }, - "nextToken": {} - } - } - }, - "ListDeploymentInstances": { - "input": { - "type": "structure", - "required": [ - "deploymentId" - ], - "members": { - "deploymentId": {}, - "nextToken": {}, - "instanceStatusFilter": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "instancesList": { - "shape": "S1y" - }, - "nextToken": {} - } - } - }, - "ListDeployments": { - "input": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "includeOnlyStatuses": { - "type": "list", - "member": {} - }, - "createTimeRange": { - "type": "structure", - "members": { - "start": { - "type": "timestamp" - }, - "end": { - "type": "timestamp" - } - } - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "deployments": { - "shape": "S2e" - }, - "nextToken": {} - } - } - }, - "ListOnPremisesInstances": { - "input": { - "type": "structure", - "members": { - "registrationStatus": {}, - "tagFilters": { - "shape": "S1b" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "instanceNames": { - "shape": "S6" - }, - "nextToken": {} - } - } - }, - "RegisterApplicationRevision": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "revision" - ], - "members": { - "applicationName": {}, - "description": {}, - "revision": { - "shape": "Sb" - } - } - } - }, - "RegisterOnPremisesInstance": { - "input": { - "type": "structure", - "required": [ - "instanceName", - "iamUserArn" - ], - "members": { - "instanceName": {}, - "iamUserArn": {} - } - } - }, - "RemoveTagsFromOnPremisesInstances": { - "input": { - "type": "structure", - "required": [ - "tags", - "instanceNames" - ], - "members": { - "tags": { - "shape": "S2" - }, - "instanceNames": { - "shape": "S6" - } - } - } - }, - "StopDeployment": { - "input": { - "type": "structure", - "required": [ - "deploymentId" - ], - "members": { - "deploymentId": {}, - "autoRollbackEnabled": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "status": {}, - "statusMessage": {} - } - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "members": { - "applicationName": {}, - "newApplicationName": {} - } - } - }, - "UpdateDeploymentGroup": { - "input": { - "type": "structure", - "required": [ - "applicationName", - "currentDeploymentGroupName" - ], - "members": { - "applicationName": {}, - "currentDeploymentGroupName": {}, - "newDeploymentGroupName": {}, - "deploymentConfigName": {}, - "ec2TagFilters": { - "shape": "S18" - }, - "onPremisesInstanceTagFilters": { - "shape": "S1b" - }, - "autoScalingGroups": { - "shape": "S36" - }, - "serviceRoleArn": {}, - "triggerConfigurations": { - "shape": "S1j" - }, - "alarmConfiguration": { - "shape": "S1p" - }, - "autoRollbackConfiguration": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "members": { - "hooksNotCleanedUp": { - "shape": "S1e" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S6": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": { - "shape": "Sb" - } - }, - "Sb": { - "type": "structure", - "members": { - "revisionType": {}, - "s3Location": { - "type": "structure", - "members": { - "bucket": {}, - "key": {}, - "bundleType": {}, - "version": {}, - "eTag": {} - } - }, - "gitHubLocation": { - "type": "structure", - "members": { - "repository": {}, - "commitId": {} - } - } - } - }, - "Sq": { - "type": "structure", - "members": { - "description": {}, - "deploymentGroups": { - "shape": "Ss" - }, - "firstUsedTime": { - "type": "timestamp" - }, - "lastUsedTime": { - "type": "timestamp" - }, - "registerTime": { - "type": "timestamp" - } - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "Sw": { - "type": "list", - "member": {} - }, - "Sz": { - "type": "structure", - "members": { - "applicationId": {}, - "applicationName": {}, - "createTime": { - "type": "timestamp" - }, - "linkedToGitHub": { - "type": "boolean" - } - } - }, - "S15": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroupId": {}, - "deploymentGroupName": {}, - "deploymentConfigName": {}, - "ec2TagFilters": { - "shape": "S18" - }, - "onPremisesInstanceTagFilters": { - "shape": "S1b" - }, - "autoScalingGroups": { - "shape": "S1e" - }, - "serviceRoleArn": {}, - "targetRevision": { - "shape": "Sb" - }, - "triggerConfigurations": { - "shape": "S1j" - }, - "alarmConfiguration": { - "shape": "S1p" - }, - "autoRollbackConfiguration": { - "shape": "S1t" - } - } - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "Type": {} - } - } - }, - "S1b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "Type": {} - } - } - }, - "S1e": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "hook": {} - } - } - }, - "S1j": { - "type": "list", - "member": { - "type": "structure", - "members": { - "triggerName": {}, - "triggerTargetArn": {}, - "triggerEvents": { - "type": "list", - "member": {} - } - } - } - }, - "S1p": { - "type": "structure", - "members": { - "enabled": { - "type": "boolean" - }, - "ignorePollAlarmFailure": { - "type": "boolean" - }, - "alarms": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {} - } - } - } - } - }, - "S1t": { - "type": "structure", - "members": { - "enabled": { - "type": "boolean" - }, - "events": { - "type": "list", - "member": {} - } - } - }, - "S1y": { - "type": "list", - "member": {} - }, - "S22": { - "type": "structure", - "members": { - "deploymentId": {}, - "instanceId": {}, - "status": {}, - "lastUpdatedAt": { - "type": "timestamp" - }, - "lifecycleEvents": { - "type": "list", - "member": { - "type": "structure", - "members": { - "lifecycleEventName": {}, - "diagnostics": { - "type": "structure", - "members": { - "errorCode": {}, - "scriptName": {}, - "message": {}, - "logTail": {} - } - }, - "startTime": { - "type": "timestamp" - }, - "endTime": { - "type": "timestamp" - }, - "status": {} - } - } - } - } - }, - "S2e": { - "type": "list", - "member": {} - }, - "S2h": { - "type": "structure", - "members": { - "applicationName": {}, - "deploymentGroupName": {}, - "deploymentConfigName": {}, - "deploymentId": {}, - "revision": { - "shape": "Sb" - }, - "status": {}, - "errorInformation": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - }, - "createTime": { - "type": "timestamp" - }, - "startTime": { - "type": "timestamp" - }, - "completeTime": { - "type": "timestamp" - }, - "deploymentOverview": { - "type": "structure", - "members": { - "Pending": { - "type": "long" - }, - "InProgress": { - "type": "long" - }, - "Succeeded": { - "type": "long" - }, - "Failed": { - "type": "long" - }, - "Skipped": { - "type": "long" - } - } - }, - "description": {}, - "creator": {}, - "ignoreApplicationStopFailures": { - "type": "boolean" - }, - "autoRollbackConfiguration": { - "shape": "S1t" - }, - "updateOutdatedInstancesOnly": { - "type": "boolean" - }, - "rollbackInfo": { - "type": "structure", - "members": { - "rollbackDeploymentId": {}, - "rollbackTriggeringDeploymentId": {}, - "rollbackMessage": {} - } - } - } - }, - "S2s": { - "type": "structure", - "members": { - "instanceName": {}, - "iamUserArn": {}, - "instanceArn": {}, - "registerTime": { - "type": "timestamp" - }, - "deregisterTime": { - "type": "timestamp" - }, - "tags": { - "shape": "S2" - } - } - }, - "S30": { - "type": "structure", - "members": { - "value": { - "type": "integer" - }, - "type": {} - } - }, - "S36": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json deleted file mode 100644 index cea07e6..0000000 --- a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.paginators.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "pagination": { - "ListApplicationRevisions": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "revisions" - }, - "ListApplications": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "applications" - }, - "ListDeploymentConfigs": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "deploymentConfigsList" - }, - "ListDeploymentGroups": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "deploymentGroups" - }, - "ListDeploymentInstances": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "instancesList" - }, - "ListDeployments": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "deployments" - } - } -} diff --git a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json b/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json deleted file mode 100644 index 0fea4fa..0000000 --- a/node_modules/aws-sdk/apis/codedeploy-2014-10-06.waiters2.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 2, - "waiters": { - "DeploymentSuccessful": { - "delay": 15, - "operation": "GetDeployment", - "maxAttempts": 120, - "acceptors": [ - { - "expected": "Succeeded", - "matcher": "path", - "state": "success", - "argument": "deploymentInfo.status" - }, - { - "expected": "Failed", - "matcher": "path", - "state": "failure", - "argument": "deploymentInfo.status" - }, - { - "expected": "Stopped", - "matcher": "path", - "state": "failure", - "argument": "deploymentInfo.status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json b/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json deleted file mode 100644 index 5732bc8..0000000 --- a/node_modules/aws-sdk/apis/codepipeline-2015-07-09.examples.json +++ /dev/null @@ -1,902 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AcknowledgeJob": [ - { - "input": { - "jobId": "11111111-abcd-1111-abcd-111111abcdef", - "nonce": "3" - }, - "output": { - "status": "InProgress" - }, - "comments": { - "input": { - "jobId": "Use the PollforJobs API to determine the ID of the job.", - "nonce": "Use the PollforJobs API to determine the nonce for the job." - }, - "output": { - "status": "Valid values include Created, Queued, Dispatched, InProgress, TimedOut, Suceeded, and Failed. Completed jobs are removed from the system after a short period of time." - } - }, - "description": "This example returns information about a specified job, including the status of that job if it exists. This is only used for job workers and custom actions in AWS CodePipeline. To determine the value of nonce and the job ID, use PollForJobs.", - "id": "acknowledge-a-job-for-a-custom-action-1449100979484", - "title": "Acknowledge a job for a custom action" - } - ], - "CreateCustomActionType": [ - { - "input": { - "version": "1", - "category": "Build", - "configurationProperties": [ - { - "name": "MyJenkinsExampleBuildProject", - "type": "String", - "required": true, - "key": true, - "description": "The name of the build project must be provided when this action is added to the pipeline.", - "queryable": false, - "secret": false - } - ], - "inputArtifactDetails": { - "maximumCount": 1, - "minimumCount": 0 - }, - "outputArtifactDetails": { - "maximumCount": 1, - "minimumCount": 0 - }, - "provider": "MyBuild-ProviderName", - "settings": { - "entityUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/", - "executionUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/", - "revisionUrlTemplate": "none" - } - }, - "output": { - "actionType": { - "actionConfigurationProperties": [ - { - "name": "MyJenkinsExampleBuildProject", - "required": true, - "key": true, - "description": "The name of the build project must be provided when this action is added to the pipeline.", - "queryable": false, - "secret": false - } - ], - "id": { - "version": "1", - "category": "Build", - "owner": "Custom", - "provider": "MyBuild-ProviderName" - }, - "inputArtifactDetails": { - "maximumCount": 1, - "minimumCount": 0 - }, - "outputArtifactDetails": { - "maximumCount": 1, - "minimumCount": 0 - }, - "settings": { - "entityUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/", - "executionUrlTemplate": "https://192.0.2.4/job/{Config:ProjectName}/lastSuccessfulBuild/{ExternalExecutionId}/", - "revisionUrlTemplate": "none" - } - } - }, - "comments": { - "input": { - "version": "A new custom action always has a version of 1. This is required.", - "configurationProperties": "The text in description will be displayed to your users, and can contain a maximum of 2048 characters. The value for name in configurationProperties is the name of the project, if any. In this example, this is the name of the build project on the Jenkins server", - "inputArtifactDetails": "This is the minimum and maximum number of artifacts allowed as inputs for the action. For more information about input and output artifacts, see Pipeline Structure Reference in the AWS CodePipeline User Guide.", - "outputArtifactDetails": "This is the minimum and maximum number of artifacts allowed as outputs for the action. For more information about input and output artifacts, see Pipeline Structure Reference in the AWS CodePipeline User Guide.", - "provider": "In this example, this is the name given to the provider field when configuring the AWS CodePipeline Plugin for Jenkins. For more information, see the Four-Stage Pipeline Tutorial in the AWS CodePipeline User Guide.", - "settings": "entityUrlTemplate is the static link that provides information about the service provider for the action. In the example, the build system includes a static link to the Jenkins build project at the specific server address. Similarly, executionUrlTemplate is the dynamic link that will be updated with information about the current or most recent run of the action." - }, - "output": { - } - }, - "description": "This example creates a build custom action for AWS CodePipeline for a Jenkins build project. For more information about the requirements for creating a custom action, including the structure of the JSON file commonly used to help create custom actions, see Create a Custom Action in the AWS CodePipeline User Guide. For a walkthrough of creating a custom action in a pipeline, follow the Four-Stage Pipeline Tutorial.", - "id": "create-a-custom-action-1449103500903", - "title": "Create a custom action" - } - ], - "CreatePipeline": [ - { - "input": { - "pipeline": { - "version": 1, - "name": "MySecondPipeline", - "artifactStore": { - "type": "S3", - "location": "codepipeline-us-east-1-11EXAMPLE11" - }, - "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", - "stages": [ - { - "name": "Source", - "actions": [ - { - "name": "Source", - "actionTypeId": { - "version": "1", - "category": "Source", - "owner": "AWS", - "provider": "S3" - }, - "configuration": { - "S3Bucket": "awscodepipeline-demo-bucket", - "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" - }, - "inputArtifacts": [ - - ], - "outputArtifacts": [ - { - "name": "MyApp" - } - ], - "runOrder": 1 - } - ] - }, - { - "name": "Beta", - "actions": [ - { - "name": "CodePipelineDemoFleet", - "actionTypeId": { - "version": "1", - "category": "Deploy", - "owner": "AWS", - "provider": "CodeDeploy" - }, - "configuration": { - "ApplicationName": "CodePipelineDemoApplication", - "DeploymentGroupName": "CodePipelineDemoFleet" - }, - "inputArtifacts": [ - { - "name": "MyApp" - } - ], - "outputArtifacts": [ - - ], - "runOrder": 1 - } - ] - } - ] - } - }, - "output": { - "pipeline": { - "version": 1, - "name": "MySecondPipeline", - "artifactStore": { - "type": "S3", - "location": "codepipeline-us-east-1-11EXAMPLE11" - }, - "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", - "stages": [ - { - "name": "Source", - "actions": [ - { - "name": "Source", - "actionTypeId": { - "version": "1", - "category": "Source", - "owner": "AWS", - "provider": "S3" - }, - "configuration": { - "S3Bucket": "awscodepipeline-demo-bucket", - "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" - }, - "inputArtifacts": [ - - ], - "outputArtifacts": [ - { - "name": "MyApp" - } - ], - "runOrder": 1 - } - ] - }, - { - "name": "Beta", - "actions": [ - { - "name": "CodePipelineDemoFleet", - "actionTypeId": { - "version": "1", - "category": "Deploy", - "owner": "AWS", - "provider": "CodeDeploy" - }, - "configuration": { - "ApplicationName": "CodePipelineDemoApplication", - "DeploymentGroupName": "CodePipelineDemoFleet" - }, - "inputArtifacts": [ - { - "name": "MyApp" - } - ], - "outputArtifacts": [ - - ], - "runOrder": 1 - } - ] - } - ] - } - }, - "comments": { - "input": { - "version": "The version number of the pipeline. All new pipelines have a version number of 1. This number is incremented automatically every time a pipeline is updated.", - "name": "Pipeline names must be unique within a user's AWS account.", - "artifactStore": "This Amazon S3 bucket is where artifacts for the pipeline will be stored as the pipeline runs. For more information about the Amazon S3 bucket used as the artifact store, see Concepts in the AWS CodePipeline User Guide.", - "roleArn": "This is the ARN for the service role created for AWS CodePipeline.", - "stages": "Each stage block defines a different stage in the pipeline. Pipelines can have up to ten stages, with up to twenty actions per stage." - }, - "output": { - } - }, - "description": "This example creates a simple two-stage pipeline in AWS CodePipeline that uses an Amazon S3 bucket for its source stage and deploys code using AWS CodeDeploy. For more information about the requirements for creating a pipeline, including the structure of the JSON file commonly used to create a pipeline, see \"Create a Pipeline\" in the AWS CodePipeline User Guide.", - "id": "create-a-pipeline-1449162214392", - "title": "Create a pipeline" - } - ], - "DeleteCustomActionType": [ - { - "input": { - "version": "1", - "category": "Build", - "provider": "MyJenkinsProviderName" - }, - "comments": { - "input": { - "version": "This is the current version number of the custom action.", - "category": "This is the type of action that the custom action is, for example build or test.", - "provider": "This is the provider of the service used in the custom action. In this example, the custom action is for a Jenkins build, and the name of the provider is the one configured in the AWS CodePipeline Plugin for Jenkins" - }, - "output": { - } - }, - "description": "This example deletes a custom action in AWS CodePipeline by specifiying the action type, provider name, and version number of the action to be deleted. Only used for custom actions. Use the list-action-types command to view the correct values for category, version, and provider. After a custom action is deleted, PollForJobs for the custom action will fail. Warning: You cannot recreate a custom action after it has been deleted unless you increase the version number of the action.", - "id": "delete-a-custom-action-1449163239567", - "title": "Delete a custom action" - } - ], - "DeletePipeline": [ - { - "input": { - "name": "MySecondPipeline" - }, - "comments": { - "input": { - "name": "The name of the pipeline to delete." - }, - "output": { - } - }, - "description": "This example deletes a pipeline named MySecondPipeline from AWS CodePipeline. Use ListPipelines to view a list of pipelines associated with your AWS account.", - "id": "delete-a-pipeline-1449163893541", - "title": "Delete a pipeline" - } - ], - "DisableStageTransition": [ - { - "input": { - "pipelineName": "MyFirstPipeline", - "reason": "An example reason", - "stageName": "Beta", - "transitionType": "Inbound" - }, - "comments": { - "input": { - "transitionType": "Valid values are Inbound, which prevents artifacts from transitioning into the stage and being processed by the actions in that stage, or Outbound, which prevents artifacts from transitioning out of the stage after they have been processed by the actions in that stage." - }, - "output": { - } - }, - "description": "This example disables transitions into the Beta stage of the MyFirstPipeline pipeline in AWS CodePipeline.", - "id": "disable-transitions-into-or-out-of-a-stage-1449164517291", - "title": "Disable transitions into or out of a stage" - } - ], - "EnableStageTransition": [ - { - "input": { - "pipelineName": "MyFirstPipeline", - "stageName": "Beta", - "transitionType": "Inbound" - }, - "comments": { - "input": { - "transitionType": "Valid values are Inbound, which allows artifacts to transition into the stage and be processed by the actions in that stage, or Outbound, which allows artifacts to transition out of the stage after they have been processed by the actions in that stage." - }, - "output": { - } - }, - "description": "This example enables transitions into the Beta stage of the MyFirstPipeline pipeline in AWS CodePipeline.", - "id": "enable-transitions-into-or-out-of-a-stage-1449164924423", - "title": "Enable transitions into or out of a stage" - } - ], - "GetJobDetails": [ - { - "input": { - "jobId": "11111111-abcd-1111-abcd-111111abcdef" - }, - "output": { - "jobDetails": { - "accountId": "111111111111", - "data": { - "actionConfiguration": { - "configuration": { - "ProjectName": "MyJenkinsExampleTestProject" - } - }, - "actionTypeId": { - "version": "1", - "category": "Test", - "owner": "Custom", - "provider": "MyJenkinsProviderName" - }, - "artifactCredentials": { - "accessKeyId": "AKIAIOSFODNN7EXAMPLE", - "secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "sessionToken": "fICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=" - }, - "inputArtifacts": [ - { - "name": "MyAppBuild", - "location": { - "type": "S3", - "s3Location": { - "bucketName": "codepipeline-us-east-1-11EXAMPLE11", - "objectKey": "MySecondPipeline/MyAppBuild/EXAMPLE" - } - } - } - ], - "outputArtifacts": [ - - ], - "pipelineContext": { - "action": { - "name": "MyJenkinsTest-Action" - }, - "pipelineName": "MySecondPipeline", - "stage": { - "name": "Testing" - } - } - }, - "id": "11111111-abcd-1111-abcd-111111abcdef" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example returns details about a job whose ID is represented by f4f4ff82-2d11-EXAMPLE. This command is only used for custom actions. When this command is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline, if required for the custom action. This command will also return any secret values defined for the action, if any are defined.", - "id": "get-the-details-of-a-job-1449183680273", - "title": "Get the details of a job" - } - ], - "GetPipeline": [ - { - "input": { - "version": 123, - "name": "MyFirstPipeline" - }, - "output": { - "pipeline": { - "version": 1, - "name": "MyFirstPipeline", - "artifactStore": { - "type": "S3", - "location": "codepipeline-us-east-1-11EXAMPLE11" - }, - "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", - "stages": [ - { - "name": "Source", - "actions": [ - { - "name": "Source", - "actionTypeId": { - "version": "1", - "category": "Source", - "owner": "AWS", - "provider": "S3" - }, - "configuration": { - "S3Bucket": "awscodepipeline-demo-bucket", - "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" - }, - "inputArtifacts": [ - - ], - "outputArtifacts": [ - { - "name": "MyApp" - } - ], - "runOrder": 1 - } - ] - }, - { - "name": "Beta", - "actions": [ - { - "name": "CodePipelineDemoFleet", - "actionTypeId": { - "version": "1", - "category": "Deploy", - "owner": "AWS", - "provider": "CodeDeploy" - }, - "configuration": { - "ApplicationName": "CodePipelineDemoApplication", - "DeploymentGroupName": "CodePipelineDemoFleet" - }, - "inputArtifacts": [ - { - "name": "MyApp" - } - ], - "outputArtifacts": [ - - ], - "runOrder": 1 - } - ] - } - ] - } - }, - "comments": { - "input": { - "version": "This is an optional parameter. If you do not specify a version, the most current version of the pipeline structure is returned." - }, - "output": { - } - }, - "description": "This example returns the structure of a pipeline named MyFirstPipeline.", - "id": "view-the-structure-of-a-pipeline-1449184156329", - "title": "View the structure of a pipeline" - } - ], - "GetPipelineState": [ - { - "input": { - "name": "MyFirstPipeline" - }, - "output": { - "created": "1446137312.204", - "pipelineName": "MyFirstPipeline", - "pipelineVersion": 1, - "stageStates": [ - { - "actionStates": [ - { - "actionName": "Source", - "entityUrl": "https://console.aws.amazon.com/s3/home?#", - "latestExecution": { - "lastStatusChange": "1446137358.328", - "status": "Succeeded" - } - } - ], - "stageName": "Source" - }, - { - "actionStates": [ - { - "actionName": "CodePipelineDemoFleet", - "entityUrl": "https://console.aws.amazon.com/codedeploy/home?#/applications/CodePipelineDemoApplication/deployment-groups/CodePipelineDemoFleet", - "latestExecution": { - "externalExecutionId": "d-EXAMPLE", - "externalExecutionUrl": "https://console.aws.amazon.com/codedeploy/home?#/deployments/d-EXAMPLE", - "lastStatusChange": "1446137493.131", - "status": "Succeeded", - "summary": "Deployment Succeeded" - } - } - ], - "inboundTransitionState": { - "enabled": true - }, - "stageName": "Beta" - } - ], - "updated": "1446137312.204" - }, - "comments": { - "input": { - }, - "output": { - "created": "The value for created and all other time- and date-related information such as lastStatusChange, is returned in timestamp format." - } - }, - "description": "This example returns the most recent state of a pipeline named MyFirstPipeline.", - "id": "view-information-about-the-state-of-a-pipeline-1449184486550", - "title": "View information about the state of a pipeline" - } - ], - "ListActionTypes": [ - { - "input": { - "actionOwnerFilter": "Custom", - "nextToken": "" - }, - "output": { - "actionTypes": [ - { - "actionConfigurationProperties": [ - { - "name": "MyJenkinsExampleBuildProject", - "required": true, - "key": true, - "queryable": true, - "secret": false - } - ], - "id": { - "version": "1", - "category": "Build", - "owner": "Custom", - "provider": "MyJenkinsProviderName" - }, - "inputArtifactDetails": { - "maximumCount": 5, - "minimumCount": 0 - }, - "outputArtifactDetails": { - "maximumCount": 5, - "minimumCount": 0 - }, - "settings": { - "entityUrlTemplate": "http://54.174.131.118/job/{Config:ProjectName}", - "executionUrlTemplate": "http://54.174.131.118/job/{Config:ProjectName}/{ExternalExecutionId}" - } - }, - { - "actionConfigurationProperties": [ - { - "name": "MyJenkinsExampleTestProject", - "required": true, - "key": true, - "queryable": true, - "secret": false - } - ], - "id": { - "version": "1", - "category": "Build", - "owner": "Custom", - "provider": "MyJenkinsProviderName" - }, - "inputArtifactDetails": { - "maximumCount": 5, - "minimumCount": 0 - }, - "outputArtifactDetails": { - "maximumCount": 5, - "minimumCount": 0 - }, - "settings": { - "entityUrlTemplate": "http://54.210.140.46/job/{Config:ProjectName}", - "executionUrlTemplate": "http://54.210.140.46/job/{Config:ProjectName}/{ExternalExecutionId}" - } - } - ], - "nextToken": "" - }, - "comments": { - "input": { - }, - "output": { - "actionOwnerFilter": "actionOwnerFilter is optional. It is used to filter the response to actions created by a specific entity. Valid values include AWS, ThirdParty, and Custom.", - "nextToken": "nextToken is optional. Its operation is reserved for future use." - } - }, - "description": "Used by itself, ListActionTypes returns the structure of all AWS CodePipeline actions available to your AWS account. This example uses the actionOwnerFilter option to limit the response to include only the structure of all custom actions defined for the account.", - "id": "view-a-summary-of-all-action-types-associated-with-your-account-1455218918202", - "title": "View a summary of all action types associated with your account" - } - ], - "ListPipelines": [ - { - "input": { - }, - "output": { - "nextToken": "", - "pipelines": [ - { - "version": 1, - "name": "MyFirstPipeline", - "created": "1444681408.094", - "updated": "1444681408.094" - }, - { - "version": 3, - "name": "MySecondPipeline", - "created": "1443046290.003", - "updated": "1443048299.639" - } - ] - }, - "comments": { - "input": { - "nextToken": "nextToken is optional. Its operation is reserved for future use." - }, - "output": { - "pipelines": "Date and time information returned in the pipeline blocks, such as the values for created or updated, are in timestamp format." - } - }, - "description": "This example lists all AWS CodePipeline pipelines associated with the user's AWS account.", - "id": "view-a-summary-of-all-pipelines-associated-with-your-account-1449185747807", - "title": "View a summary of all pipelines associated with your account" - } - ], - "PollForJobs": [ - { - "input": { - "actionTypeId": { - "version": "1", - "category": "Test", - "owner": "Custom", - "provider": "MyJenkinsProviderName" - }, - "maxBatchSize": 5, - "queryParam": { - "ProjectName": "MyJenkinsTestProj" - } - }, - "output": { - "jobs": [ - { - "accountId": "111111111111", - "data": { - "actionConfiguration": { - "configuration": { - "ProjectName": "MyJenkinsTestProj" - } - }, - "actionTypeId": { - "version": "1", - "category": "Test", - "owner": "Custom", - "provider": "MyJenkinsProviderName" - }, - "artifactCredentials": { - "accessKeyId": "AKIAIOSFODNN7EXAMPLE", - "secretAccessKey": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY", - "sessionToken": "fICCQD6m7oRw0uXOjANBgkqhkiG9w0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVIk60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nrAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auNKyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6GuoEDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw3rrszlaEXAMPLE=" - }, - "inputArtifacts": [ - { - "name": "MyAppBuild", - "location": { - "type": "S3", - "s3Location": { - "bucketName": "codepipeline-us-east-1-11EXAMPLE11", - "objectKey": "MySecondPipeline/MyAppBuild/EXAMPLE" - } - } - } - ], - "outputArtifacts": [ - - ], - "pipelineContext": { - "action": { - "name": "MyJenkinsTest-Action" - }, - "pipelineName": "MySecondPipeline", - "stage": { - "name": "Testing" - } - } - }, - "id": "11111111-abcd-1111-abcd-111111abcdef", - "nonce": "3" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example returns information about any jobs for a job worker to act upon. This command is only used for custom actions. When this command is called, AWS CodePipeline returns temporary credentials for the Amazon S3 bucket used to store artifacts for the pipeline. This command will also return any secret values defined for the action, if any are defined.", - "id": "view-any-available-jobs-1449186054484", - "title": "View any available jobs" - } - ], - "StartPipelineExecution": [ - { - "input": { - "name": "MyFirstPipeline" - }, - "output": { - "pipelineExecutionId": "11111111-abcd-1111-abcd-111111abcdef" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example runs the latest revision present in the source stage of a pipeline through the pipeline named \"MyFirstPipeline\".", - "id": "run-the-latest-revision-through-a-pipeline-1449186732433", - "title": "Run the latest revision through a pipeline" - } - ], - "UpdatePipeline": [ - { - "input": { - "pipeline": { - "version": 2, - "name": "MyFirstPipeline", - "artifactStore": { - "type": "S3", - "location": "codepipeline-us-east-1-11EXAMPLE11" - }, - "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", - "stages": [ - { - "name": "Source", - "actions": [ - { - "name": "Source", - "actionTypeId": { - "version": "1", - "category": "Source", - "owner": "AWS", - "provider": "S3" - }, - "configuration": { - "S3Bucket": "awscodepipeline-demo-bucket2", - "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" - }, - "inputArtifacts": [ - - ], - "outputArtifacts": [ - { - "name": "MyApp" - } - ], - "runOrder": 1 - } - ] - }, - { - "name": "Beta", - "actions": [ - { - "name": "CodePipelineDemoFleet", - "actionTypeId": { - "version": "1", - "category": "Deploy", - "owner": "AWS", - "provider": "CodeDeploy" - }, - "configuration": { - "ApplicationName": "CodePipelineDemoApplication", - "DeploymentGroupName": "CodePipelineDemoFleet" - }, - "inputArtifacts": [ - { - "name": "MyApp" - } - ], - "outputArtifacts": [ - - ], - "runOrder": 1 - } - ] - } - ] - } - }, - "output": { - "pipeline": { - "version": 3, - "name": "MyFirstPipeline", - "artifactStore": { - "type": "S3", - "location": "codepipeline-us-east-1-11EXAMPLE11" - }, - "roleArn": "arn:aws:iam::111111111111:role/AWS-CodePipeline-Service", - "stages": [ - { - "name": "Source", - "actions": [ - { - "name": "Source", - "actionTypeId": { - "version": "1", - "category": "Source", - "owner": "AWS", - "provider": "S3" - }, - "configuration": { - "S3Bucket": "awscodepipeline-demo-bucket2", - "S3ObjectKey": "aws-codepipeline-s3-aws-codedeploy_linux.zip" - }, - "inputArtifacts": [ - - ], - "outputArtifacts": [ - { - "name": "MyApp" - } - ], - "runOrder": 1 - } - ] - }, - { - "name": "Beta", - "actions": [ - { - "name": "CodePipelineDemoFleet", - "actionTypeId": { - "version": "1", - "category": "Deploy", - "owner": "AWS", - "provider": "CodeDeploy" - }, - "configuration": { - "ApplicationName": "CodePipelineDemoApplication", - "DeploymentGroupName": "CodePipelineDemoFleet" - }, - "inputArtifacts": [ - { - "name": "MyApp" - } - ], - "outputArtifacts": [ - - ], - "runOrder": 1 - } - ] - } - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the structure of a pipeline. The entire structure of the pipeline must be supplied, either by passing all of the parameters, or by using a pre-defined JSON file.", - "id": "update-the-structure-of-a-pipeline-1449186881322", - "title": "Update the structure of a pipeline" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json b/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json deleted file mode 100644 index 636a811..0000000 --- a/node_modules/aws-sdk/apis/codepipeline-2015-07-09.min.json +++ /dev/null @@ -1,1100 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-09", - "endpointPrefix": "codepipeline", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "CodePipeline", - "serviceFullName": "AWS CodePipeline", - "signatureVersion": "v4", - "targetPrefix": "CodePipeline_20150709" - }, - "operations": { - "AcknowledgeJob": { - "input": { - "type": "structure", - "required": [ - "jobId", - "nonce" - ], - "members": { - "jobId": {}, - "nonce": {} - } - }, - "output": { - "type": "structure", - "members": { - "status": {} - } - } - }, - "AcknowledgeThirdPartyJob": { - "input": { - "type": "structure", - "required": [ - "jobId", - "nonce", - "clientToken" - ], - "members": { - "jobId": {}, - "nonce": {}, - "clientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "status": {} - } - } - }, - "CreateCustomActionType": { - "input": { - "type": "structure", - "required": [ - "category", - "provider", - "version", - "inputArtifactDetails", - "outputArtifactDetails" - ], - "members": { - "category": {}, - "provider": {}, - "version": {}, - "settings": { - "shape": "Se" - }, - "configurationProperties": { - "shape": "Sh" - }, - "inputArtifactDetails": { - "shape": "Sn" - }, - "outputArtifactDetails": { - "shape": "Sn" - } - } - }, - "output": { - "type": "structure", - "required": [ - "actionType" - ], - "members": { - "actionType": { - "shape": "Sr" - } - } - } - }, - "CreatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipeline" - ], - "members": { - "pipeline": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "pipeline": { - "shape": "Sv" - } - } - } - }, - "DeleteCustomActionType": { - "input": { - "type": "structure", - "required": [ - "category", - "provider", - "version" - ], - "members": { - "category": {}, - "provider": {}, - "version": {} - } - } - }, - "DeletePipeline": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "DisableStageTransition": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "transitionType", - "reason" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "transitionType": {}, - "reason": {} - } - } - }, - "EnableStageTransition": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "transitionType" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "transitionType": {} - } - } - }, - "GetJobDetails": { - "input": { - "type": "structure", - "required": [ - "jobId" - ], - "members": { - "jobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobDetails": { - "type": "structure", - "members": { - "id": {}, - "data": { - "shape": "S1x" - }, - "accountId": {} - } - } - } - } - }, - "GetPipeline": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "version": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "pipeline": { - "shape": "Sv" - } - } - } - }, - "GetPipelineExecution": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "pipelineExecutionId" - ], - "members": { - "pipelineName": {}, - "pipelineExecutionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecution": { - "type": "structure", - "members": { - "pipelineName": {}, - "pipelineVersion": { - "type": "integer" - }, - "pipelineExecutionId": {}, - "status": {}, - "artifactRevisions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "revisionId": {}, - "revisionChangeIdentifier": {}, - "revisionSummary": {}, - "created": { - "type": "timestamp" - }, - "revisionUrl": {} - } - } - } - } - } - } - } - }, - "GetPipelineState": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineName": {}, - "pipelineVersion": { - "type": "integer" - }, - "stageStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "stageName": {}, - "inboundTransitionState": { - "type": "structure", - "members": { - "enabled": { - "type": "boolean" - }, - "lastChangedBy": {}, - "lastChangedAt": { - "type": "timestamp" - }, - "disabledReason": {} - } - }, - "actionStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "actionName": {}, - "currentRevision": { - "shape": "S32" - }, - "latestExecution": { - "type": "structure", - "members": { - "status": {}, - "summary": {}, - "lastStatusChange": { - "type": "timestamp" - }, - "token": {}, - "lastUpdatedBy": {}, - "externalExecutionId": {}, - "externalExecutionUrl": {}, - "percentComplete": { - "type": "integer" - }, - "errorDetails": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - } - } - }, - "entityUrl": {}, - "revisionUrl": {} - } - } - }, - "latestExecution": { - "type": "structure", - "required": [ - "pipelineExecutionId", - "status" - ], - "members": { - "pipelineExecutionId": {}, - "status": {} - } - } - } - } - }, - "created": { - "type": "timestamp" - }, - "updated": { - "type": "timestamp" - } - } - } - }, - "GetThirdPartyJobDetails": { - "input": { - "type": "structure", - "required": [ - "jobId", - "clientToken" - ], - "members": { - "jobId": {}, - "clientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobDetails": { - "type": "structure", - "members": { - "id": {}, - "data": { - "type": "structure", - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "actionConfiguration": { - "shape": "S1y" - }, - "pipelineContext": { - "shape": "S1z" - }, - "inputArtifacts": { - "shape": "S22" - }, - "outputArtifacts": { - "shape": "S22" - }, - "artifactCredentials": { - "shape": "S2a" - }, - "continuationToken": {}, - "encryptionKey": { - "shape": "S11" - } - } - }, - "nonce": {} - } - } - } - } - }, - "ListActionTypes": { - "input": { - "type": "structure", - "members": { - "actionOwnerFilter": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "required": [ - "actionTypes" - ], - "members": { - "actionTypes": { - "type": "list", - "member": { - "shape": "Sr" - } - }, - "nextToken": {} - } - } - }, - "ListPipelines": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelines": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "version": { - "type": "integer" - }, - "created": { - "type": "timestamp" - }, - "updated": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "PollForJobs": { - "input": { - "type": "structure", - "required": [ - "actionTypeId" - ], - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "maxBatchSize": { - "type": "integer" - }, - "queryParam": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "data": { - "shape": "S1x" - }, - "nonce": {}, - "accountId": {} - } - } - } - } - } - }, - "PollForThirdPartyJobs": { - "input": { - "type": "structure", - "required": [ - "actionTypeId" - ], - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "maxBatchSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "clientId": {}, - "jobId": {} - } - } - } - } - } - }, - "PutActionRevision": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "actionName", - "actionRevision" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "actionName": {}, - "actionRevision": { - "shape": "S32" - } - } - }, - "output": { - "type": "structure", - "members": { - "newRevision": { - "type": "boolean" - }, - "pipelineExecutionId": {} - } - } - }, - "PutApprovalResult": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "actionName", - "result", - "token" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "actionName": {}, - "result": { - "type": "structure", - "required": [ - "summary", - "status" - ], - "members": { - "summary": {}, - "status": {} - } - }, - "token": {} - } - }, - "output": { - "type": "structure", - "members": { - "approvedAt": { - "type": "timestamp" - } - } - } - }, - "PutJobFailureResult": { - "input": { - "type": "structure", - "required": [ - "jobId", - "failureDetails" - ], - "members": { - "jobId": {}, - "failureDetails": { - "shape": "S4c" - } - } - } - }, - "PutJobSuccessResult": { - "input": { - "type": "structure", - "required": [ - "jobId" - ], - "members": { - "jobId": {}, - "currentRevision": { - "shape": "S4f" - }, - "continuationToken": {}, - "executionDetails": { - "shape": "S4h" - } - } - } - }, - "PutThirdPartyJobFailureResult": { - "input": { - "type": "structure", - "required": [ - "jobId", - "clientToken", - "failureDetails" - ], - "members": { - "jobId": {}, - "clientToken": {}, - "failureDetails": { - "shape": "S4c" - } - } - } - }, - "PutThirdPartyJobSuccessResult": { - "input": { - "type": "structure", - "required": [ - "jobId", - "clientToken" - ], - "members": { - "jobId": {}, - "clientToken": {}, - "currentRevision": { - "shape": "S4f" - }, - "continuationToken": {}, - "executionDetails": { - "shape": "S4h" - } - } - } - }, - "RetryStageExecution": { - "input": { - "type": "structure", - "required": [ - "pipelineName", - "stageName", - "pipelineExecutionId", - "retryMode" - ], - "members": { - "pipelineName": {}, - "stageName": {}, - "pipelineExecutionId": {}, - "retryMode": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecutionId": {} - } - } - }, - "StartPipelineExecution": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineExecutionId": {} - } - } - }, - "UpdatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipeline" - ], - "members": { - "pipeline": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "pipeline": { - "shape": "Sv" - } - } - } - } - }, - "shapes": { - "Se": { - "type": "structure", - "members": { - "thirdPartyConfigurationUrl": {}, - "entityUrlTemplate": {}, - "executionUrlTemplate": {}, - "revisionUrlTemplate": {} - } - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "required", - "key", - "secret" - ], - "members": { - "name": {}, - "required": { - "type": "boolean" - }, - "key": { - "type": "boolean" - }, - "secret": { - "type": "boolean" - }, - "queryable": { - "type": "boolean" - }, - "description": {}, - "type": {} - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "minimumCount", - "maximumCount" - ], - "members": { - "minimumCount": { - "type": "integer" - }, - "maximumCount": { - "type": "integer" - } - } - }, - "Sr": { - "type": "structure", - "required": [ - "id", - "inputArtifactDetails", - "outputArtifactDetails" - ], - "members": { - "id": { - "shape": "Ss" - }, - "settings": { - "shape": "Se" - }, - "actionConfigurationProperties": { - "shape": "Sh" - }, - "inputArtifactDetails": { - "shape": "Sn" - }, - "outputArtifactDetails": { - "shape": "Sn" - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "category", - "owner", - "provider", - "version" - ], - "members": { - "category": {}, - "owner": {}, - "provider": {}, - "version": {} - } - }, - "Sv": { - "type": "structure", - "required": [ - "name", - "roleArn", - "artifactStore", - "stages" - ], - "members": { - "name": {}, - "roleArn": {}, - "artifactStore": { - "type": "structure", - "required": [ - "type", - "location" - ], - "members": { - "type": {}, - "location": {}, - "encryptionKey": { - "shape": "S11" - } - } - }, - "stages": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "actions" - ], - "members": { - "name": {}, - "blockers": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "type" - ], - "members": { - "name": {}, - "type": {} - } - } - }, - "actions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "actionTypeId" - ], - "members": { - "name": {}, - "actionTypeId": { - "shape": "Ss" - }, - "runOrder": { - "type": "integer" - }, - "configuration": { - "shape": "S1f" - }, - "outputArtifacts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "inputArtifacts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "roleArn": {} - } - } - } - } - } - }, - "version": { - "type": "integer" - } - } - }, - "S11": { - "type": "structure", - "required": [ - "id", - "type" - ], - "members": { - "id": {}, - "type": {} - } - }, - "S1f": { - "type": "map", - "key": {}, - "value": {} - }, - "S1x": { - "type": "structure", - "members": { - "actionTypeId": { - "shape": "Ss" - }, - "actionConfiguration": { - "shape": "S1y" - }, - "pipelineContext": { - "shape": "S1z" - }, - "inputArtifacts": { - "shape": "S22" - }, - "outputArtifacts": { - "shape": "S22" - }, - "artifactCredentials": { - "shape": "S2a" - }, - "continuationToken": {}, - "encryptionKey": { - "shape": "S11" - } - } - }, - "S1y": { - "type": "structure", - "members": { - "configuration": { - "shape": "S1f" - } - } - }, - "S1z": { - "type": "structure", - "members": { - "pipelineName": {}, - "stage": { - "type": "structure", - "members": { - "name": {} - } - }, - "action": { - "type": "structure", - "members": { - "name": {} - } - } - } - }, - "S22": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "revision": {}, - "location": { - "type": "structure", - "members": { - "type": {}, - "s3Location": { - "type": "structure", - "required": [ - "bucketName", - "objectKey" - ], - "members": { - "bucketName": {}, - "objectKey": {} - } - } - } - } - } - } - }, - "S2a": { - "type": "structure", - "required": [ - "accessKeyId", - "secretAccessKey", - "sessionToken" - ], - "members": { - "accessKeyId": {}, - "secretAccessKey": {}, - "sessionToken": {} - }, - "sensitive": true - }, - "S32": { - "type": "structure", - "required": [ - "revisionId", - "revisionChangeId", - "created" - ], - "members": { - "revisionId": {}, - "revisionChangeId": {}, - "created": { - "type": "timestamp" - } - } - }, - "S4c": { - "type": "structure", - "required": [ - "type", - "message" - ], - "members": { - "type": {}, - "message": {}, - "externalExecutionId": {} - } - }, - "S4f": { - "type": "structure", - "required": [ - "revision", - "changeIdentifier" - ], - "members": { - "revision": {}, - "changeIdentifier": {}, - "created": { - "type": "timestamp" - }, - "revisionSummary": {} - } - }, - "S4h": { - "type": "structure", - "members": { - "summary": {}, - "externalExecutionId": {}, - "percentComplete": { - "type": "integer" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json b/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json deleted file mode 100644 index c8923d3..0000000 --- a/node_modules/aws-sdk/apis/cognito-identity-2014-06-30.min.json +++ /dev/null @@ -1,487 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-30", - "endpointPrefix": "cognito-identity", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Cognito Identity", - "signatureVersion": "v4", - "targetPrefix": "AWSCognitoIdentityService" - }, - "operations": { - "CreateIdentityPool": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolName", - "AllowUnauthenticatedIdentities" - ], - "members": { - "IdentityPoolName": {}, - "AllowUnauthenticatedIdentities": { - "type": "boolean" - }, - "SupportedLoginProviders": { - "shape": "S4" - }, - "DeveloperProviderName": {}, - "OpenIdConnectProviderARNs": { - "shape": "S8" - }, - "CognitoIdentityProviders": { - "shape": "Sa" - }, - "SamlProviderARNs": { - "shape": "Se" - } - } - }, - "output": { - "shape": "Sf" - } - }, - "DeleteIdentities": { - "input": { - "type": "structure", - "required": [ - "IdentityIdsToDelete" - ], - "members": { - "IdentityIdsToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "UnprocessedIdentityIds": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IdentityId": {}, - "ErrorCode": {} - } - } - } - } - } - }, - "DeleteIdentityPool": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {} - } - } - }, - "DescribeIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId" - ], - "members": { - "IdentityId": {} - } - }, - "output": { - "shape": "Sq" - } - }, - "DescribeIdentityPool": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {} - } - }, - "output": { - "shape": "Sf" - } - }, - "GetCredentialsForIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId" - ], - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sv" - }, - "CustomRoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "Credentials": { - "type": "structure", - "members": { - "AccessKeyId": {}, - "SecretKey": {}, - "SessionToken": {}, - "Expiration": { - "type": "timestamp" - } - } - } - } - } - }, - "GetId": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "AccountId": {}, - "IdentityPoolId": {}, - "Logins": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {} - } - } - }, - "GetIdentityPoolRoles": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "Roles": { - "shape": "S17" - } - } - } - }, - "GetOpenIdToken": { - "input": { - "type": "structure", - "required": [ - "IdentityId" - ], - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "Token": {} - } - } - }, - "GetOpenIdTokenForDeveloperIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "Logins" - ], - "members": { - "IdentityPoolId": {}, - "IdentityId": {}, - "Logins": { - "shape": "Sv" - }, - "TokenDuration": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "Token": {} - } - } - }, - "ListIdentities": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "MaxResults" - ], - "members": { - "IdentityPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "HideDisabled": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "Identities": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "NextToken": {} - } - } - }, - "ListIdentityPools": { - "input": { - "type": "structure", - "required": [ - "MaxResults" - ], - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPools": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "IdentityPoolName": {} - } - } - }, - "NextToken": {} - } - } - }, - "LookupDeveloperIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": {}, - "IdentityId": {}, - "DeveloperUserIdentifier": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {}, - "DeveloperUserIdentifierList": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "MergeDeveloperIdentities": { - "input": { - "type": "structure", - "required": [ - "SourceUserIdentifier", - "DestinationUserIdentifier", - "DeveloperProviderName", - "IdentityPoolId" - ], - "members": { - "SourceUserIdentifier": {}, - "DestinationUserIdentifier": {}, - "DeveloperProviderName": {}, - "IdentityPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IdentityId": {} - } - } - }, - "SetIdentityPoolRoles": { - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "Roles" - ], - "members": { - "IdentityPoolId": {}, - "Roles": { - "shape": "S17" - } - } - } - }, - "UnlinkDeveloperIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId", - "IdentityPoolId", - "DeveloperProviderName", - "DeveloperUserIdentifier" - ], - "members": { - "IdentityId": {}, - "IdentityPoolId": {}, - "DeveloperProviderName": {}, - "DeveloperUserIdentifier": {} - } - } - }, - "UnlinkIdentity": { - "input": { - "type": "structure", - "required": [ - "IdentityId", - "Logins", - "LoginsToRemove" - ], - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sv" - }, - "LoginsToRemove": { - "shape": "Sr" - } - } - } - }, - "UpdateIdentityPool": { - "input": { - "shape": "Sf" - }, - "output": { - "shape": "Sf" - } - } - }, - "shapes": { - "S4": { - "type": "map", - "key": {}, - "value": {} - }, - "S8": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ProviderName": {}, - "ClientId": {} - } - } - }, - "Se": { - "type": "list", - "member": {} - }, - "Sf": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityPoolName", - "AllowUnauthenticatedIdentities" - ], - "members": { - "IdentityPoolId": {}, - "IdentityPoolName": {}, - "AllowUnauthenticatedIdentities": { - "type": "boolean" - }, - "SupportedLoginProviders": { - "shape": "S4" - }, - "DeveloperProviderName": {}, - "OpenIdConnectProviderARNs": { - "shape": "S8" - }, - "CognitoIdentityProviders": { - "shape": "Sa" - }, - "SamlProviderARNs": { - "shape": "Se" - } - } - }, - "Sq": { - "type": "structure", - "members": { - "IdentityId": {}, - "Logins": { - "shape": "Sr" - }, - "CreationDate": { - "type": "timestamp" - }, - "LastModifiedDate": { - "type": "timestamp" - } - } - }, - "Sr": { - "type": "list", - "member": {} - }, - "Sv": { - "type": "map", - "key": {}, - "value": {} - }, - "S17": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json b/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json deleted file mode 100644 index 6ec5a3e..0000000 --- a/node_modules/aws-sdk/apis/cognito-idp-2016-04-18.min.json +++ /dev/null @@ -1,1866 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-04-18", - "endpointPrefix": "cognito-idp", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Cognito Identity Provider", - "signatureVersion": "v4", - "targetPrefix": "AWSCognitoIdentityProviderService" - }, - "operations": { - "AddCustomAttributes": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "CustomAttributes" - ], - "members": { - "UserPoolId": {}, - "CustomAttributes": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminConfirmSignUp": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminCreateUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Sg" - }, - "ValidationData": { - "shape": "Sg" - }, - "TemporaryPassword": { - "shape": "Sk" - }, - "ForceAliasCreation": { - "type": "boolean" - }, - "MessageAction": {}, - "DesiredDeliveryMediums": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "User": { - "shape": "Sq" - } - } - } - }, - "AdminDeleteUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - } - }, - "AdminDeleteUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "UserAttributeNames" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "UserAttributeNames": { - "shape": "Sx" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminDisableUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminEnableUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminForgetDevice": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "DeviceKey" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "DeviceKey": {} - } - } - }, - "AdminGetDevice": { - "input": { - "type": "structure", - "required": [ - "DeviceKey", - "UserPoolId", - "Username" - ], - "members": { - "DeviceKey": {}, - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Device" - ], - "members": { - "Device": { - "shape": "S17" - } - } - } - }, - "AdminGetUser": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Username" - ], - "members": { - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Sg" - }, - "UserCreateDate": { - "type": "timestamp" - }, - "UserLastModifiedDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "UserStatus": {}, - "MFAOptions": { - "shape": "St" - } - } - } - }, - "AdminInitiateAuth": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId", - "AuthFlow" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1b" - }, - "AuthFlow": {}, - "AuthParameters": { - "shape": "S1d" - }, - "ClientMetadata": { - "shape": "S1e" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1i" - }, - "AuthenticationResult": { - "shape": "S1j" - } - } - } - }, - "AdminListDevices": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "Limit": { - "type": "integer" - }, - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Devices": { - "shape": "S1r" - }, - "PaginationToken": {} - } - } - }, - "AdminResetUserPassword": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminRespondToAuthChallenge": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId", - "ChallengeName" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1b" - }, - "ChallengeName": {}, - "ChallengeResponses": { - "shape": "S1v" - }, - "Session": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1i" - }, - "AuthenticationResult": { - "shape": "S1j" - } - } - } - }, - "AdminSetUserSettings": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "MFAOptions" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "MFAOptions": { - "shape": "St" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminUpdateDeviceStatus": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "DeviceKey" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "DeviceKey": {}, - "DeviceRememberedStatus": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminUpdateUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username", - "UserAttributes" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Sg" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AdminUserGlobalSignOut": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "Username" - ], - "members": { - "UserPoolId": {}, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ChangePassword": { - "input": { - "type": "structure", - "required": [ - "PreviousPassword", - "ProposedPassword" - ], - "members": { - "PreviousPassword": { - "shape": "Sk" - }, - "ProposedPassword": { - "shape": "Sk" - }, - "AccessToken": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "ConfirmDevice": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "DeviceKey" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "DeviceKey": {}, - "DeviceSecretVerifierConfig": { - "type": "structure", - "members": { - "PasswordVerifier": {}, - "Salt": {} - } - }, - "DeviceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserConfirmationNecessary": { - "type": "boolean" - } - } - } - }, - "ConfirmForgotPassword": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username", - "ConfirmationCode", - "Password" - ], - "members": { - "ClientId": { - "shape": "S1b" - }, - "SecretHash": { - "shape": "S2d" - }, - "Username": { - "shape": "Sd" - }, - "ConfirmationCode": {}, - "Password": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "ConfirmSignUp": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username", - "ConfirmationCode" - ], - "members": { - "ClientId": { - "shape": "S1b" - }, - "SecretHash": { - "shape": "S2d" - }, - "Username": { - "shape": "Sd" - }, - "ConfirmationCode": {}, - "ForceAliasCreation": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "CreateUserImportJob": { - "input": { - "type": "structure", - "required": [ - "JobName", - "UserPoolId", - "CloudWatchLogsRoleArn" - ], - "members": { - "JobName": {}, - "UserPoolId": {}, - "CloudWatchLogsRoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S2m" - } - } - } - }, - "CreateUserPool": { - "input": { - "type": "structure", - "required": [ - "PoolName" - ], - "members": { - "PoolName": {}, - "Policies": { - "shape": "S2u" - }, - "LambdaConfig": { - "shape": "S2x" - }, - "AutoVerifiedAttributes": { - "shape": "S2y" - }, - "AliasAttributes": { - "shape": "S30" - }, - "SmsVerificationMessage": {}, - "EmailVerificationMessage": {}, - "EmailVerificationSubject": {}, - "SmsAuthenticationMessage": {}, - "MfaConfiguration": {}, - "DeviceConfiguration": { - "shape": "S36" - }, - "EmailConfiguration": { - "shape": "S37" - }, - "SmsConfiguration": { - "shape": "S39" - }, - "AdminCreateUserConfig": { - "shape": "S3a" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPool": { - "shape": "S3e" - } - } - } - }, - "CreateUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientName" - ], - "members": { - "UserPoolId": {}, - "ClientName": {}, - "GenerateSecret": { - "type": "boolean" - }, - "RefreshTokenValidity": { - "type": "integer" - }, - "ReadAttributes": { - "shape": "S3l" - }, - "WriteAttributes": { - "shape": "S3l" - }, - "ExplicitAuthFlows": { - "shape": "S3n" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClient": { - "shape": "S3q" - } - } - } - }, - "DeleteUser": { - "input": { - "type": "structure", - "members": { - "AccessToken": { - "shape": "S1k" - } - } - }, - "authtype": "none" - }, - "DeleteUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserAttributeNames" - ], - "members": { - "UserAttributeNames": { - "shape": "Sx" - }, - "AccessToken": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "DeleteUserPool": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {} - } - } - }, - "DeleteUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1b" - } - } - } - }, - "DescribeUserImportJob": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "JobId" - ], - "members": { - "UserPoolId": {}, - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S2m" - } - } - } - }, - "DescribeUserPool": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserPool": { - "shape": "S3e" - } - } - } - }, - "DescribeUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1b" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClient": { - "shape": "S3q" - } - } - } - }, - "ForgetDevice": { - "input": { - "type": "structure", - "required": [ - "DeviceKey" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "DeviceKey": {} - } - } - }, - "ForgotPassword": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username" - ], - "members": { - "ClientId": { - "shape": "S1b" - }, - "SecretHash": { - "shape": "S2d" - }, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetails": { - "shape": "S46" - } - } - }, - "authtype": "none" - }, - "GetCSVHeader": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolId": {}, - "CSVHeader": { - "type": "list", - "member": {} - } - } - } - }, - "GetDevice": { - "input": { - "type": "structure", - "required": [ - "DeviceKey" - ], - "members": { - "DeviceKey": {}, - "AccessToken": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Device" - ], - "members": { - "Device": { - "shape": "S17" - } - } - } - }, - "GetUser": { - "input": { - "type": "structure", - "members": { - "AccessToken": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Username", - "UserAttributes" - ], - "members": { - "Username": { - "shape": "Sd" - }, - "UserAttributes": { - "shape": "Sg" - }, - "MFAOptions": { - "shape": "St" - } - } - }, - "authtype": "none" - }, - "GetUserAttributeVerificationCode": { - "input": { - "type": "structure", - "required": [ - "AttributeName" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "AttributeName": {} - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetails": { - "shape": "S46" - } - } - }, - "authtype": "none" - }, - "GlobalSignOut": { - "input": { - "type": "structure", - "members": { - "AccessToken": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "InitiateAuth": { - "input": { - "type": "structure", - "required": [ - "AuthFlow", - "ClientId" - ], - "members": { - "AuthFlow": {}, - "AuthParameters": { - "shape": "S1d" - }, - "ClientMetadata": { - "shape": "S1e" - }, - "ClientId": { - "shape": "S1b" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1i" - }, - "AuthenticationResult": { - "shape": "S1j" - } - } - } - }, - "ListDevices": { - "input": { - "type": "structure", - "required": [ - "AccessToken" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "Limit": { - "type": "integer" - }, - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Devices": { - "shape": "S1r" - }, - "PaginationToken": {} - } - } - }, - "ListUserImportJobs": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "MaxResults" - ], - "members": { - "UserPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "PaginationToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJobs": { - "type": "list", - "member": { - "shape": "S2m" - } - }, - "PaginationToken": {} - } - } - }, - "ListUserPoolClients": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClients": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ClientId": { - "shape": "S1b" - }, - "UserPoolId": {}, - "ClientName": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListUserPools": { - "input": { - "type": "structure", - "required": [ - "MaxResults" - ], - "members": { - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPools": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "LambdaConfig": { - "shape": "S2x" - }, - "Status": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListUsers": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "AttributesToGet": { - "type": "list", - "member": {} - }, - "Limit": { - "type": "integer" - }, - "PaginationToken": {}, - "Filter": {} - } - }, - "output": { - "type": "structure", - "members": { - "Users": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "PaginationToken": {} - } - } - }, - "ResendConfirmationCode": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username" - ], - "members": { - "ClientId": { - "shape": "S1b" - }, - "SecretHash": { - "shape": "S2d" - }, - "Username": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetails": { - "shape": "S46" - } - } - }, - "authtype": "none" - }, - "RespondToAuthChallenge": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "ChallengeName" - ], - "members": { - "ClientId": { - "shape": "S1b" - }, - "ChallengeName": {}, - "Session": {}, - "ChallengeResponses": { - "shape": "S1v" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChallengeName": {}, - "Session": {}, - "ChallengeParameters": { - "shape": "S1i" - }, - "AuthenticationResult": { - "shape": "S1j" - } - } - } - }, - "SetUserSettings": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "MFAOptions" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "MFAOptions": { - "shape": "St" - } - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - }, - "SignUp": { - "input": { - "type": "structure", - "required": [ - "ClientId", - "Username", - "Password" - ], - "members": { - "ClientId": { - "shape": "S1b" - }, - "SecretHash": { - "shape": "S2d" - }, - "Username": { - "shape": "Sd" - }, - "Password": { - "shape": "Sk" - }, - "UserAttributes": { - "shape": "Sg" - }, - "ValidationData": { - "shape": "Sg" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserConfirmed": { - "type": "boolean" - }, - "CodeDeliveryDetails": { - "shape": "S46" - } - } - }, - "authtype": "none" - }, - "StartUserImportJob": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "JobId" - ], - "members": { - "UserPoolId": {}, - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S2m" - } - } - } - }, - "StopUserImportJob": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "JobId" - ], - "members": { - "UserPoolId": {}, - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UserImportJob": { - "shape": "S2m" - } - } - } - }, - "UpdateDeviceStatus": { - "input": { - "type": "structure", - "required": [ - "AccessToken", - "DeviceKey" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "DeviceKey": {}, - "DeviceRememberedStatus": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateUserAttributes": { - "input": { - "type": "structure", - "required": [ - "UserAttributes" - ], - "members": { - "UserAttributes": { - "shape": "Sg" - }, - "AccessToken": { - "shape": "S1k" - } - } - }, - "output": { - "type": "structure", - "members": { - "CodeDeliveryDetailsList": { - "type": "list", - "member": { - "shape": "S46" - } - } - } - }, - "authtype": "none" - }, - "UpdateUserPool": { - "input": { - "type": "structure", - "required": [ - "UserPoolId" - ], - "members": { - "UserPoolId": {}, - "Policies": { - "shape": "S2u" - }, - "LambdaConfig": { - "shape": "S2x" - }, - "AutoVerifiedAttributes": { - "shape": "S2y" - }, - "SmsVerificationMessage": {}, - "EmailVerificationMessage": {}, - "EmailVerificationSubject": {}, - "SmsAuthenticationMessage": {}, - "MfaConfiguration": {}, - "DeviceConfiguration": { - "shape": "S36" - }, - "EmailConfiguration": { - "shape": "S37" - }, - "SmsConfiguration": { - "shape": "S39" - }, - "AdminCreateUserConfig": { - "shape": "S3a" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateUserPoolClient": { - "input": { - "type": "structure", - "required": [ - "UserPoolId", - "ClientId" - ], - "members": { - "UserPoolId": {}, - "ClientId": { - "shape": "S1b" - }, - "ClientName": {}, - "RefreshTokenValidity": { - "type": "integer" - }, - "ReadAttributes": { - "shape": "S3l" - }, - "WriteAttributes": { - "shape": "S3l" - }, - "ExplicitAuthFlows": { - "shape": "S3n" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserPoolClient": { - "shape": "S3q" - } - } - } - }, - "VerifyUserAttribute": { - "input": { - "type": "structure", - "required": [ - "AttributeName", - "Code" - ], - "members": { - "AccessToken": { - "shape": "S1k" - }, - "AttributeName": {}, - "Code": {} - } - }, - "output": { - "type": "structure", - "members": {} - }, - "authtype": "none" - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "Name": {}, - "AttributeDataType": {}, - "DeveloperOnlyAttribute": { - "type": "boolean" - }, - "Mutable": { - "type": "boolean" - }, - "Required": { - "type": "boolean" - }, - "NumberAttributeConstraints": { - "type": "structure", - "members": { - "MinValue": {}, - "MaxValue": {} - } - }, - "StringAttributeConstraints": { - "type": "structure", - "members": { - "MinLength": {}, - "MaxLength": {} - } - } - } - }, - "Sd": { - "type": "string", - "sensitive": true - }, - "Sg": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": { - "type": "string", - "sensitive": true - } - } - } - }, - "Sk": { - "type": "string", - "sensitive": true - }, - "Sq": { - "type": "structure", - "members": { - "Username": { - "shape": "Sd" - }, - "Attributes": { - "shape": "Sg" - }, - "UserCreateDate": { - "type": "timestamp" - }, - "UserLastModifiedDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "UserStatus": {}, - "MFAOptions": { - "shape": "St" - } - } - }, - "St": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeliveryMedium": {}, - "AttributeName": {} - } - } - }, - "Sx": { - "type": "list", - "member": {} - }, - "S17": { - "type": "structure", - "members": { - "DeviceKey": {}, - "DeviceAttributes": { - "shape": "Sg" - }, - "DeviceCreateDate": { - "type": "timestamp" - }, - "DeviceLastModifiedDate": { - "type": "timestamp" - }, - "DeviceLastAuthenticatedDate": { - "type": "timestamp" - } - } - }, - "S1b": { - "type": "string", - "sensitive": true - }, - "S1d": { - "type": "map", - "key": {}, - "value": {} - }, - "S1e": { - "type": "map", - "key": {}, - "value": {} - }, - "S1i": { - "type": "map", - "key": {}, - "value": {} - }, - "S1j": { - "type": "structure", - "members": { - "AccessToken": { - "shape": "S1k" - }, - "ExpiresIn": { - "type": "integer" - }, - "TokenType": {}, - "RefreshToken": { - "shape": "S1k" - }, - "IdToken": { - "shape": "S1k" - }, - "NewDeviceMetadata": { - "type": "structure", - "members": { - "DeviceKey": {}, - "DeviceGroupKey": {} - } - } - } - }, - "S1k": { - "type": "string", - "sensitive": true - }, - "S1r": { - "type": "list", - "member": { - "shape": "S17" - } - }, - "S1v": { - "type": "map", - "key": {}, - "value": {} - }, - "S2d": { - "type": "string", - "sensitive": true - }, - "S2m": { - "type": "structure", - "members": { - "JobName": {}, - "JobId": {}, - "UserPoolId": {}, - "PreSignedUrl": {}, - "CreationDate": { - "type": "timestamp" - }, - "StartDate": { - "type": "timestamp" - }, - "CompletionDate": { - "type": "timestamp" - }, - "Status": {}, - "CloudWatchLogsRoleArn": {}, - "ImportedUsers": { - "type": "long" - }, - "SkippedUsers": { - "type": "long" - }, - "FailedUsers": { - "type": "long" - }, - "CompletionMessage": {} - } - }, - "S2u": { - "type": "structure", - "members": { - "PasswordPolicy": { - "type": "structure", - "members": { - "MinimumLength": { - "type": "integer" - }, - "RequireUppercase": { - "type": "boolean" - }, - "RequireLowercase": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireSymbols": { - "type": "boolean" - } - } - } - } - }, - "S2x": { - "type": "structure", - "members": { - "PreSignUp": {}, - "CustomMessage": {}, - "PostConfirmation": {}, - "PreAuthentication": {}, - "PostAuthentication": {}, - "DefineAuthChallenge": {}, - "CreateAuthChallenge": {}, - "VerifyAuthChallengeResponse": {} - } - }, - "S2y": { - "type": "list", - "member": {} - }, - "S30": { - "type": "list", - "member": {} - }, - "S36": { - "type": "structure", - "members": { - "ChallengeRequiredOnNewDevice": { - "type": "boolean" - }, - "DeviceOnlyRememberedOnUserPrompt": { - "type": "boolean" - } - } - }, - "S37": { - "type": "structure", - "members": { - "SourceArn": {}, - "ReplyToEmailAddress": {} - } - }, - "S39": { - "type": "structure", - "members": { - "SnsCallerArn": {}, - "ExternalId": {} - } - }, - "S3a": { - "type": "structure", - "members": { - "AllowAdminCreateUserOnly": { - "type": "boolean" - }, - "UnusedAccountValidityDays": { - "type": "integer" - }, - "InviteMessageTemplate": { - "type": "structure", - "members": { - "SMSMessage": {}, - "EmailMessage": {}, - "EmailSubject": {} - } - } - } - }, - "S3e": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Policies": { - "shape": "S2u" - }, - "LambdaConfig": { - "shape": "S2x" - }, - "Status": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - }, - "SchemaAttributes": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "AutoVerifiedAttributes": { - "shape": "S2y" - }, - "AliasAttributes": { - "shape": "S30" - }, - "SmsVerificationMessage": {}, - "EmailVerificationMessage": {}, - "EmailVerificationSubject": {}, - "SmsAuthenticationMessage": {}, - "MfaConfiguration": {}, - "DeviceConfiguration": { - "shape": "S36" - }, - "EstimatedNumberOfUsers": { - "type": "integer" - }, - "EmailConfiguration": { - "shape": "S37" - }, - "SmsConfiguration": { - "shape": "S39" - }, - "SmsConfigurationFailure": {}, - "EmailConfigurationFailure": {}, - "AdminCreateUserConfig": { - "shape": "S3a" - } - } - }, - "S3l": { - "type": "list", - "member": {} - }, - "S3n": { - "type": "list", - "member": {} - }, - "S3q": { - "type": "structure", - "members": { - "UserPoolId": {}, - "ClientName": {}, - "ClientId": { - "shape": "S1b" - }, - "ClientSecret": { - "type": "string", - "sensitive": true - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "CreationDate": { - "type": "timestamp" - }, - "RefreshTokenValidity": { - "type": "integer" - }, - "ReadAttributes": { - "shape": "S3l" - }, - "WriteAttributes": { - "shape": "S3l" - }, - "ExplicitAuthFlows": { - "shape": "S3n" - } - } - }, - "S46": { - "type": "structure", - "members": { - "Destination": {}, - "DeliveryMedium": {}, - "AttributeName": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json b/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json deleted file mode 100644 index 3f969ea..0000000 --- a/node_modules/aws-sdk/apis/cognito-sync-2014-06-30.min.json +++ /dev/null @@ -1,746 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-30", - "endpointPrefix": "cognito-sync", - "jsonVersion": "1.1", - "serviceFullName": "Amazon Cognito Sync", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "BulkPublish": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/bulkpublish", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {} - } - } - }, - "DeleteDataset": { - "http": { - "method": "DELETE", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Dataset": { - "shape": "S8" - } - } - } - }, - "DescribeDataset": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Dataset": { - "shape": "S8" - } - } - } - }, - "DescribeIdentityPoolUsage": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolUsage": { - "shape": "Sg" - } - } - } - }, - "DescribeIdentityUsage": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityUsage": { - "type": "structure", - "members": { - "IdentityId": {}, - "IdentityPoolId": {}, - "LastModifiedDate": { - "type": "timestamp" - }, - "DatasetCount": { - "type": "integer" - }, - "DataStorage": { - "type": "long" - } - } - } - } - } - }, - "GetBulkPublishDetails": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/getBulkPublishDetails", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "BulkPublishStartTime": { - "type": "timestamp" - }, - "BulkPublishCompleteTime": { - "type": "timestamp" - }, - "BulkPublishStatus": {}, - "FailureMessage": {} - } - } - }, - "GetCognitoEvents": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/events", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "shape": "Sq" - } - } - } - }, - "GetIdentityPoolConfiguration": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "PushSync": { - "shape": "Sv" - }, - "CognitoStreams": { - "shape": "Sz" - } - } - } - }, - "ListDatasets": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityId", - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Datasets": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "Count": { - "type": "integer" - }, - "NextToken": {} - } - } - }, - "ListIdentityPoolUsage": { - "http": { - "method": "GET", - "requestUri": "/identitypools", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolUsages": { - "type": "list", - "member": { - "shape": "Sg" - } - }, - "MaxResults": { - "type": "integer" - }, - "Count": { - "type": "integer" - }, - "NextToken": {} - } - } - }, - "ListRecords": { - "http": { - "method": "GET", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/records", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "LastSyncCount": { - "location": "querystring", - "locationName": "lastSyncCount", - "type": "long" - }, - "NextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "MaxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "SyncSessionToken": { - "location": "querystring", - "locationName": "syncSessionToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "shape": "S1c" - }, - "NextToken": {}, - "Count": { - "type": "integer" - }, - "DatasetSyncCount": { - "type": "long" - }, - "LastModifiedBy": {}, - "MergedDatasetNames": { - "type": "list", - "member": {} - }, - "DatasetExists": { - "type": "boolean" - }, - "DatasetDeletedAfterRequestedSyncCount": { - "type": "boolean" - }, - "SyncSessionToken": {} - } - } - }, - "RegisterDevice": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/identity/{IdentityId}/device", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "Platform", - "Token" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "Platform": {}, - "Token": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeviceId": {} - } - } - }, - "SetCognitoEvents": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/events", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "Events" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "Events": { - "shape": "Sq" - } - } - } - }, - "SetIdentityPoolConfiguration": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "PushSync": { - "shape": "Sv" - }, - "CognitoStreams": { - "shape": "Sz" - } - } - }, - "output": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "PushSync": { - "shape": "Sv" - }, - "CognitoStreams": { - "shape": "Sz" - } - } - } - }, - "SubscribeToDataset": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "DeviceId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "DeviceId": { - "location": "uri", - "locationName": "DeviceId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UnsubscribeFromDataset": { - "http": { - "method": "DELETE", - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}/subscriptions/{DeviceId}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "DeviceId" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "DeviceId": { - "location": "uri", - "locationName": "DeviceId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateRecords": { - "http": { - "requestUri": "/identitypools/{IdentityPoolId}/identities/{IdentityId}/datasets/{DatasetName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "IdentityPoolId", - "IdentityId", - "DatasetName", - "SyncSessionToken" - ], - "members": { - "IdentityPoolId": { - "location": "uri", - "locationName": "IdentityPoolId" - }, - "IdentityId": { - "location": "uri", - "locationName": "IdentityId" - }, - "DatasetName": { - "location": "uri", - "locationName": "DatasetName" - }, - "DeviceId": {}, - "RecordPatches": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Op", - "Key", - "SyncCount" - ], - "members": { - "Op": {}, - "Key": {}, - "Value": {}, - "SyncCount": { - "type": "long" - }, - "DeviceLastModifiedDate": { - "type": "timestamp" - } - } - } - }, - "SyncSessionToken": {}, - "ClientContext": { - "location": "header", - "locationName": "x-amz-Client-Context" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "shape": "S1c" - } - } - } - } - }, - "shapes": { - "S8": { - "type": "structure", - "members": { - "IdentityId": {}, - "DatasetName": {}, - "CreationDate": { - "type": "timestamp" - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "LastModifiedBy": {}, - "DataStorage": { - "type": "long" - }, - "NumRecords": { - "type": "long" - } - } - }, - "Sg": { - "type": "structure", - "members": { - "IdentityPoolId": {}, - "SyncSessionsCount": { - "type": "long" - }, - "DataStorage": { - "type": "long" - }, - "LastModifiedDate": { - "type": "timestamp" - } - } - }, - "Sq": { - "type": "map", - "key": {}, - "value": {} - }, - "Sv": { - "type": "structure", - "members": { - "ApplicationArns": { - "type": "list", - "member": {} - }, - "RoleArn": {} - } - }, - "Sz": { - "type": "structure", - "members": { - "StreamName": {}, - "RoleArn": {}, - "StreamingStatus": {} - } - }, - "S1c": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "SyncCount": { - "type": "long" - }, - "LastModifiedDate": { - "type": "timestamp" - }, - "LastModifiedBy": {}, - "DeviceLastModifiedDate": { - "type": "timestamp" - } - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/config-2014-11-12.min.json b/node_modules/aws-sdk/apis/config-2014-11-12.min.json deleted file mode 100644 index 6e8b40e..0000000 --- a/node_modules/aws-sdk/apis/config-2014-11-12.min.json +++ /dev/null @@ -1,857 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-12", - "endpointPrefix": "config", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Config Service", - "serviceFullName": "AWS Config", - "signatureVersion": "v4", - "targetPrefix": "StarlingDoveService" - }, - "operations": { - "DeleteConfigRule": { - "input": { - "type": "structure", - "required": [ - "ConfigRuleName" - ], - "members": { - "ConfigRuleName": {} - } - } - }, - "DeleteConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorderName" - ], - "members": { - "ConfigurationRecorderName": {} - } - } - }, - "DeleteDeliveryChannel": { - "input": { - "type": "structure", - "required": [ - "DeliveryChannelName" - ], - "members": { - "DeliveryChannelName": {} - } - } - }, - "DeleteEvaluationResults": { - "input": { - "type": "structure", - "required": [ - "ConfigRuleName" - ], - "members": { - "ConfigRuleName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeliverConfigSnapshot": { - "input": { - "type": "structure", - "required": [ - "deliveryChannelName" - ], - "members": { - "deliveryChannelName": {} - } - }, - "output": { - "type": "structure", - "members": { - "configSnapshotId": {} - } - } - }, - "DescribeComplianceByConfigRule": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "shape": "Sd" - }, - "ComplianceTypes": { - "shape": "Se" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceByConfigRules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ConfigRuleName": {}, - "Compliance": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeComplianceByResource": { - "input": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "ComplianceTypes": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceByResources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Compliance": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeConfigRuleEvaluationStatus": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "shape": "Sd" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigRulesEvaluationStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ConfigRuleName": {}, - "ConfigRuleArn": {}, - "ConfigRuleId": {}, - "LastSuccessfulInvocationTime": { - "type": "timestamp" - }, - "LastFailedInvocationTime": { - "type": "timestamp" - }, - "LastSuccessfulEvaluationTime": { - "type": "timestamp" - }, - "LastFailedEvaluationTime": { - "type": "timestamp" - }, - "FirstActivatedTime": { - "type": "timestamp" - }, - "LastErrorCode": {}, - "LastErrorMessage": {}, - "FirstEvaluationStarted": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeConfigRules": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "shape": "Sd" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ConfigRules": { - "type": "list", - "member": { - "shape": "S12" - } - }, - "NextToken": {} - } - } - }, - "DescribeConfigurationRecorderStatus": { - "input": { - "type": "structure", - "members": { - "ConfigurationRecorderNames": { - "shape": "S1g" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigurationRecordersStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "lastStartTime": { - "type": "timestamp" - }, - "lastStopTime": { - "type": "timestamp" - }, - "recording": { - "type": "boolean" - }, - "lastStatus": {}, - "lastErrorCode": {}, - "lastErrorMessage": {}, - "lastStatusChangeTime": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeConfigurationRecorders": { - "input": { - "type": "structure", - "members": { - "ConfigurationRecorderNames": { - "shape": "S1g" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConfigurationRecorders": { - "type": "list", - "member": { - "shape": "S1o" - } - } - } - } - }, - "DescribeDeliveryChannelStatus": { - "input": { - "type": "structure", - "members": { - "DeliveryChannelNames": { - "shape": "S1v" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryChannelsStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "configSnapshotDeliveryInfo": { - "shape": "S1z" - }, - "configHistoryDeliveryInfo": { - "shape": "S1z" - }, - "configStreamDeliveryInfo": { - "type": "structure", - "members": { - "lastStatus": {}, - "lastErrorCode": {}, - "lastErrorMessage": {}, - "lastStatusChangeTime": { - "type": "timestamp" - } - } - } - } - } - } - } - } - }, - "DescribeDeliveryChannels": { - "input": { - "type": "structure", - "members": { - "DeliveryChannelNames": { - "shape": "S1v" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryChannels": { - "type": "list", - "member": { - "shape": "S25" - } - } - } - } - }, - "GetComplianceDetailsByConfigRule": { - "input": { - "type": "structure", - "required": [ - "ConfigRuleName" - ], - "members": { - "ConfigRuleName": {}, - "ComplianceTypes": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationResults": { - "shape": "S29" - }, - "NextToken": {} - } - } - }, - "GetComplianceDetailsByResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "ComplianceTypes": { - "shape": "Se" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationResults": { - "shape": "S29" - }, - "NextToken": {} - } - } - }, - "GetComplianceSummaryByConfigRule": { - "output": { - "type": "structure", - "members": { - "ComplianceSummary": { - "shape": "S2g" - } - } - } - }, - "GetComplianceSummaryByResourceType": { - "input": { - "type": "structure", - "members": { - "ResourceTypes": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "ComplianceSummariesByResourceType": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceType": {}, - "ComplianceSummary": { - "shape": "S2g" - } - } - } - } - } - } - }, - "GetResourceConfigHistory": { - "input": { - "type": "structure", - "required": [ - "resourceType", - "resourceId" - ], - "members": { - "resourceType": {}, - "resourceId": {}, - "laterTime": { - "type": "timestamp" - }, - "earlierTime": { - "type": "timestamp" - }, - "chronologicalOrder": {}, - "limit": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "configurationItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "version": {}, - "accountId": {}, - "configurationItemCaptureTime": { - "type": "timestamp" - }, - "configurationItemStatus": {}, - "configurationStateId": {}, - "configurationItemMD5Hash": {}, - "arn": {}, - "resourceType": {}, - "resourceId": {}, - "resourceName": {}, - "awsRegion": {}, - "availabilityZone": {}, - "resourceCreationTime": { - "type": "timestamp" - }, - "tags": { - "type": "map", - "key": {}, - "value": {} - }, - "relatedEvents": { - "type": "list", - "member": {} - }, - "relationships": { - "type": "list", - "member": { - "type": "structure", - "members": { - "resourceType": {}, - "resourceId": {}, - "resourceName": {}, - "relationshipName": {} - } - } - }, - "configuration": {}, - "supplementaryConfiguration": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "nextToken": {} - } - } - }, - "ListDiscoveredResources": { - "input": { - "type": "structure", - "required": [ - "resourceType" - ], - "members": { - "resourceType": {}, - "resourceIds": { - "type": "list", - "member": {} - }, - "resourceName": {}, - "limit": { - "type": "integer" - }, - "includeDeletedResources": { - "type": "boolean" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "resourceIdentifiers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "resourceType": {}, - "resourceId": {}, - "resourceName": {}, - "resourceDeletionTime": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "PutConfigRule": { - "input": { - "type": "structure", - "required": [ - "ConfigRule" - ], - "members": { - "ConfigRule": { - "shape": "S12" - } - } - } - }, - "PutConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorder" - ], - "members": { - "ConfigurationRecorder": { - "shape": "S1o" - } - } - } - }, - "PutDeliveryChannel": { - "input": { - "type": "structure", - "required": [ - "DeliveryChannel" - ], - "members": { - "DeliveryChannel": { - "shape": "S25" - } - } - } - }, - "PutEvaluations": { - "input": { - "type": "structure", - "required": [ - "ResultToken" - ], - "members": { - "Evaluations": { - "shape": "S3r" - }, - "ResultToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FailedEvaluations": { - "shape": "S3r" - } - } - } - }, - "StartConfigRulesEvaluation": { - "input": { - "type": "structure", - "members": { - "ConfigRuleNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorderName" - ], - "members": { - "ConfigurationRecorderName": {} - } - } - }, - "StopConfigurationRecorder": { - "input": { - "type": "structure", - "required": [ - "ConfigurationRecorderName" - ], - "members": { - "ConfigurationRecorderName": {} - } - } - } - }, - "shapes": { - "Sd": { - "type": "list", - "member": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Sj": { - "type": "structure", - "members": { - "ComplianceType": {}, - "ComplianceContributorCount": { - "shape": "Sk" - } - } - }, - "Sk": { - "type": "structure", - "members": { - "CappedCount": { - "type": "integer" - }, - "CapExceeded": { - "type": "boolean" - } - } - }, - "S12": { - "type": "structure", - "required": [ - "Source" - ], - "members": { - "ConfigRuleName": {}, - "ConfigRuleArn": {}, - "ConfigRuleId": {}, - "Description": {}, - "Scope": { - "type": "structure", - "members": { - "ComplianceResourceTypes": { - "type": "list", - "member": {} - }, - "TagKey": {}, - "TagValue": {}, - "ComplianceResourceId": {} - } - }, - "Source": { - "type": "structure", - "members": { - "Owner": {}, - "SourceIdentifier": {}, - "SourceDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventSource": {}, - "MessageType": {}, - "MaximumExecutionFrequency": {} - } - } - } - } - }, - "InputParameters": {}, - "MaximumExecutionFrequency": {}, - "ConfigRuleState": {} - } - }, - "S1g": { - "type": "list", - "member": {} - }, - "S1o": { - "type": "structure", - "members": { - "name": {}, - "roleARN": {}, - "recordingGroup": { - "type": "structure", - "members": { - "allSupported": { - "type": "boolean" - }, - "includeGlobalResourceTypes": { - "type": "boolean" - }, - "resourceTypes": { - "type": "list", - "member": {} - } - } - } - } - }, - "S1v": { - "type": "list", - "member": {} - }, - "S1z": { - "type": "structure", - "members": { - "lastStatus": {}, - "lastErrorCode": {}, - "lastErrorMessage": {}, - "lastAttemptTime": { - "type": "timestamp" - }, - "lastSuccessfulTime": { - "type": "timestamp" - }, - "nextDeliveryTime": { - "type": "timestamp" - } - } - }, - "S25": { - "type": "structure", - "members": { - "name": {}, - "s3BucketName": {}, - "s3KeyPrefix": {}, - "snsTopicARN": {}, - "configSnapshotDeliveryProperties": { - "type": "structure", - "members": { - "deliveryFrequency": {} - } - } - } - }, - "S29": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EvaluationResultIdentifier": { - "type": "structure", - "members": { - "EvaluationResultQualifier": { - "type": "structure", - "members": { - "ConfigRuleName": {}, - "ResourceType": {}, - "ResourceId": {} - } - }, - "OrderingTimestamp": { - "type": "timestamp" - } - } - }, - "ComplianceType": {}, - "ResultRecordedTime": { - "type": "timestamp" - }, - "ConfigRuleInvokedTime": { - "type": "timestamp" - }, - "Annotation": {}, - "ResultToken": {} - } - } - }, - "S2g": { - "type": "structure", - "members": { - "CompliantResourceCount": { - "shape": "Sk" - }, - "NonCompliantResourceCount": { - "shape": "Sk" - }, - "ComplianceSummaryTimestamp": { - "type": "timestamp" - } - } - }, - "S3r": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ComplianceResourceType", - "ComplianceResourceId", - "ComplianceType", - "OrderingTimestamp" - ], - "members": { - "ComplianceResourceType": {}, - "ComplianceResourceId": {}, - "ComplianceType": {}, - "Annotation": {}, - "OrderingTimestamp": { - "type": "timestamp" - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json b/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json deleted file mode 100644 index 45c365e..0000000 --- a/node_modules/aws-sdk/apis/config-2014-11-12.paginators.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "pagination": { - "GetResourceConfigHistory": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "configurationItems" - } - } -} diff --git a/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json b/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json deleted file mode 100644 index 88f505f..0000000 --- a/node_modules/aws-sdk/apis/datapipeline-2012-10-29.min.json +++ /dev/null @@ -1,666 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-10-29", - "endpointPrefix": "datapipeline", - "jsonVersion": "1.1", - "serviceFullName": "AWS Data Pipeline", - "signatureVersion": "v4", - "targetPrefix": "DataPipeline", - "protocol": "json" - }, - "operations": { - "ActivatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {}, - "parameterValues": { - "shape": "S3" - }, - "startTimestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddTags": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "tags" - ], - "members": { - "pipelineId": {}, - "tags": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreatePipeline": { - "input": { - "type": "structure", - "required": [ - "name", - "uniqueId" - ], - "members": { - "name": {}, - "uniqueId": {}, - "description": {}, - "tags": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {} - } - } - }, - "DeactivatePipeline": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {}, - "cancelActive": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePipeline": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {} - } - } - }, - "DescribeObjects": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "objectIds" - ], - "members": { - "pipelineId": {}, - "objectIds": { - "shape": "Sn" - }, - "evaluateExpressions": { - "type": "boolean" - }, - "marker": {} - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineObjects" - ], - "members": { - "pipelineObjects": { - "shape": "Sq" - }, - "marker": {}, - "hasMoreResults": { - "type": "boolean" - } - } - } - }, - "DescribePipelines": { - "input": { - "type": "structure", - "required": [ - "pipelineIds" - ], - "members": { - "pipelineIds": { - "shape": "Sn" - } - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineDescriptionList" - ], - "members": { - "pipelineDescriptionList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "pipelineId", - "name", - "fields" - ], - "members": { - "pipelineId": {}, - "name": {}, - "fields": { - "shape": "Ss" - }, - "description": {}, - "tags": { - "shape": "Sa" - } - } - } - } - } - } - }, - "EvaluateExpression": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "objectId", - "expression" - ], - "members": { - "pipelineId": {}, - "objectId": {}, - "expression": {} - } - }, - "output": { - "type": "structure", - "required": [ - "evaluatedExpression" - ], - "members": { - "evaluatedExpression": {} - } - } - }, - "GetPipelineDefinition": { - "input": { - "type": "structure", - "required": [ - "pipelineId" - ], - "members": { - "pipelineId": {}, - "version": {} - } - }, - "output": { - "type": "structure", - "members": { - "pipelineObjects": { - "shape": "Sq" - }, - "parameterObjects": { - "shape": "S13" - }, - "parameterValues": { - "shape": "S3" - } - } - } - }, - "ListPipelines": { - "input": { - "type": "structure", - "members": { - "marker": {} - } - }, - "output": { - "type": "structure", - "required": [ - "pipelineIdList" - ], - "members": { - "pipelineIdList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "name": {} - } - } - }, - "marker": {}, - "hasMoreResults": { - "type": "boolean" - } - } - } - }, - "PollForTask": { - "input": { - "type": "structure", - "required": [ - "workerGroup" - ], - "members": { - "workerGroup": {}, - "hostname": {}, - "instanceIdentity": { - "type": "structure", - "members": { - "document": {}, - "signature": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "taskObject": { - "type": "structure", - "members": { - "taskId": {}, - "pipelineId": {}, - "attemptId": {}, - "objects": { - "type": "map", - "key": {}, - "value": { - "shape": "Sr" - } - } - } - } - } - } - }, - "PutPipelineDefinition": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "pipelineObjects" - ], - "members": { - "pipelineId": {}, - "pipelineObjects": { - "shape": "Sq" - }, - "parameterObjects": { - "shape": "S13" - }, - "parameterValues": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "errored" - ], - "members": { - "validationErrors": { - "shape": "S1l" - }, - "validationWarnings": { - "shape": "S1p" - }, - "errored": { - "type": "boolean" - } - } - } - }, - "QueryObjects": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "sphere" - ], - "members": { - "pipelineId": {}, - "query": { - "type": "structure", - "members": { - "selectors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "fieldName": {}, - "operator": { - "type": "structure", - "members": { - "type": {}, - "values": { - "shape": "S1x" - } - } - } - } - } - } - } - }, - "sphere": {}, - "marker": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ids": { - "shape": "Sn" - }, - "marker": {}, - "hasMoreResults": { - "type": "boolean" - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "tagKeys" - ], - "members": { - "pipelineId": {}, - "tagKeys": { - "shape": "S1x" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ReportTaskProgress": { - "input": { - "type": "structure", - "required": [ - "taskId" - ], - "members": { - "taskId": {}, - "fields": { - "shape": "Ss" - } - } - }, - "output": { - "type": "structure", - "required": [ - "canceled" - ], - "members": { - "canceled": { - "type": "boolean" - } - } - } - }, - "ReportTaskRunnerHeartbeat": { - "input": { - "type": "structure", - "required": [ - "taskrunnerId" - ], - "members": { - "taskrunnerId": {}, - "workerGroup": {}, - "hostname": {} - } - }, - "output": { - "type": "structure", - "required": [ - "terminate" - ], - "members": { - "terminate": { - "type": "boolean" - } - } - } - }, - "SetStatus": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "objectIds", - "status" - ], - "members": { - "pipelineId": {}, - "objectIds": { - "shape": "Sn" - }, - "status": {} - } - } - }, - "SetTaskStatus": { - "input": { - "type": "structure", - "required": [ - "taskId", - "taskStatus" - ], - "members": { - "taskId": {}, - "taskStatus": {}, - "errorId": {}, - "errorMessage": {}, - "errorStackTrace": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ValidatePipelineDefinition": { - "input": { - "type": "structure", - "required": [ - "pipelineId", - "pipelineObjects" - ], - "members": { - "pipelineId": {}, - "pipelineObjects": { - "shape": "Sq" - }, - "parameterObjects": { - "shape": "S13" - }, - "parameterValues": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "required": [ - "errored" - ], - "members": { - "validationErrors": { - "shape": "S1l" - }, - "validationWarnings": { - "shape": "S1p" - }, - "errored": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id", - "stringValue" - ], - "members": { - "id": {}, - "stringValue": {} - } - } - }, - "Sa": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sn": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "list", - "member": { - "shape": "Sr" - } - }, - "Sr": { - "type": "structure", - "required": [ - "id", - "name", - "fields" - ], - "members": { - "id": {}, - "name": {}, - "fields": { - "shape": "Ss" - } - } - }, - "Ss": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "stringValue": {}, - "refValue": {} - } - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id", - "attributes" - ], - "members": { - "id": {}, - "attributes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "stringValue" - ], - "members": { - "key": {}, - "stringValue": {} - } - } - } - } - } - }, - "S1l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "errors": { - "shape": "S1n" - } - } - } - }, - "S1n": { - "type": "list", - "member": {} - }, - "S1p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "warnings": { - "shape": "S1n" - } - } - } - }, - "S1x": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json b/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json deleted file mode 100644 index db94193..0000000 --- a/node_modules/aws-sdk/apis/datapipeline-2012-10-29.paginators.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "pagination": { - "ListPipelines": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "result_key": "pipelineIdList" - }, - "DescribeObjects": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "result_key": "pipelineObjects" - }, - "DescribePipelines": { - "result_key": "pipelineDescriptionList" - }, - "QueryObjects": { - "input_token": "marker", - "output_token": "marker", - "more_results": "hasMoreResults", - "limit_key": "limit", - "result_key": "ids" - } - } -} diff --git a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json deleted file mode 100644 index 3b9063f..0000000 --- a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.examples.json +++ /dev/null @@ -1,1242 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateDevicePool": [ - { - "input": { - "name": "MyDevicePool", - "description": "My Android devices", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "rules": [ - - ] - }, - "output": { - "devicePool": { - } - }, - "comments": { - "input": { - "name": "A device pool contains related devices, such as devices that run only on Android or that run only on iOS.", - "projectArn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example creates a new device pool named MyDevicePool inside an existing project.", - "id": "createdevicepool-example-1470862210860", - "title": "To create a new device pool" - } - ], - "CreateProject": [ - { - "input": { - "name": "MyProject" - }, - "output": { - "project": { - "name": "MyProject", - "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", - "created": "1472660939.152" - } - }, - "comments": { - "input": { - "name": "A project in Device Farm is a workspace that contains test runs. A run is a test of a single app against one or more devices." - }, - "output": { - } - }, - "description": "The following example creates a new project named MyProject.", - "id": "createproject-example-1470862210860", - "title": "To create a new project" - } - ], - "CreateRemoteAccessSession": [ - { - "input": { - "name": "MySession", - "configuration": { - "billingMethod": "METERED" - }, - "deviceArn": "arn:aws:devicefarm:us-west-2::device:123EXAMPLE", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "remoteAccessSession": { - } - }, - "comments": { - "input": { - "deviceArn": "You can get the device ARN by using the list-devices CLI command.", - "projectArn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example creates a remote access session named MySession.", - "id": "to-create-a-remote-access-session-1470970668274", - "title": "To create a remote access session" - } - ], - "CreateUpload": [ - { - "input": { - "name": "MyAppiumPythonUpload", - "type": "APPIUM_PYTHON_TEST_PACKAGE", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "upload": { - "name": "MyAppiumPythonUpload", - "type": "APPIUM_PYTHON_TEST_PACKAGE", - "arn": "arn:aws:devicefarm:us-west-2:183774035805:upload:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/b5340a65-3da7-4da6-a26e-12345EXAMPLE", - "created": "1472661404.186", - "status": "INITIALIZED", - "url": "https://prod-us-west-2-uploads.s3-us-west-2.amazonaws.com/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A183774035805%3Aproject%3A5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE/uploads/arn%3Aaws%3Adevicefarm%3Aus-west-2%3A183774035805%3Aupload%3A5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/b5340a65-3da7-4da6-a26e-12345EXAMPLE/MyAppiumPythonUpload?AWSAccessKeyId=1234567891011EXAMPLE&Expires=1472747804&Signature=1234567891011EXAMPLE" - } - }, - "comments": { - "input": { - "projectArn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example creates a new Appium Python test package upload inside an existing project.", - "id": "createupload-example-1470864711775", - "title": "To create a new test package upload" - } - ], - "DeleteDevicePool": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2::devicepool:123-456-EXAMPLE-GUID" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the device pool ARN by using the list-device-pools CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific device pool.", - "id": "deletedevicepool-example-1470866975494", - "title": "To delete a device pool" - } - ], - "DeleteProject": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific project.", - "id": "deleteproject-example-1470867374212", - "title": "To delete a project" - } - ], - "DeleteRemoteAccessSession": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific remote access session.", - "id": "to-delete-a-specific-remote-access-session-1470971431677", - "title": "To delete a specific remote access session" - } - ], - "DeleteRun": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the run ARN by using the list-runs CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific test run.", - "id": "deleterun-example-1470867905129", - "title": "To delete a run" - } - ], - "DeleteUpload": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the upload ARN by using the list-uploads CLI command." - }, - "output": { - } - }, - "description": "The following example deletes a specific upload.", - "id": "deleteupload-example-1470868363942", - "title": "To delete a specific upload" - } - ], - "GetAccountSettings": [ - { - "input": { - }, - "output": { - "accountSettings": { - "awsAccountNumber": "123456789101", - "unmeteredDevices": { - "ANDROID": 1, - "IOS": 2 - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns information about your Device Farm account settings.", - "id": "to-get-information-about-account-settings-1472567568189", - "title": "To get information about account settings" - } - ], - "GetDevice": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2::device:123EXAMPLE" - }, - "output": { - "device": { - "name": "LG G2 (Sprint)", - "arn": "arn:aws:devicefarm:us-west-2::device:A0E6E6E1059E45918208DF75B2B7EF6C", - "cpu": { - "architecture": "armeabi-v7a", - "clock": 2265.6, - "frequency": "MHz" - }, - "formFactor": "PHONE", - "heapSize": 256000000, - "image": "75B2B7EF6C12345EXAMPLE", - "manufacturer": "LG", - "memory": 16000000000, - "model": "G2 (Sprint)", - "os": "4.2.2", - "platform": "ANDROID", - "resolution": { - "height": 1920, - "width": 1080 - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns information about a specific device.", - "id": "getdevice-example-1470870602173", - "title": "To get information about a device" - } - ], - "GetDevicePool": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "devicePool": { - } - }, - "comments": { - "input": { - "arn": "You can obtain the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about a specific device pool, given a project ARN.", - "id": "getdevicepool-example-1470870873136", - "title": "To get information about a device pool" - } - ], - "GetDevicePoolCompatibility": [ - { - "input": { - "appArn": "arn:aws:devicefarm:us-west-2::app:123-456-EXAMPLE-GUID", - "devicePoolArn": "arn:aws:devicefarm:us-west-2::devicepool:123-456-EXAMPLE-GUID", - "testType": "APPIUM_PYTHON" - }, - "output": { - "compatibleDevices": [ - - ], - "incompatibleDevices": [ - - ] - }, - "comments": { - "input": { - "devicePoolArn": "You can get the device pool ARN by using the list-device-pools CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about the compatibility of a specific device pool, given its ARN.", - "id": "getdevicepoolcompatibility-example-1470925003466", - "title": "To get information about the compatibility of a device pool" - } - ], - "GetJob": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2::job:123-456-EXAMPLE-GUID" - }, - "output": { - "job": { - } - }, - "comments": { - "input": { - "arn": "You can get the job ARN by using the list-jobs CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about a specific job.", - "id": "getjob-example-1470928294268", - "title": "To get information about a job" - } - ], - "GetOfferingStatus": [ - { - "input": { - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "current": { - "D68B3C05-1BA6-4360-BC69-12345EXAMPLE": { - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - } - }, - "nextPeriod": { - "D68B3C05-1BA6-4360-BC69-12345EXAMPLE": { - "effectiveOn": "1472688000", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - } - } - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about Device Farm offerings available to your account.", - "id": "to-get-status-information-about-device-offerings-1472568124402", - "title": "To get status information about device offerings" - } - ], - "GetProject": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE" - }, - "output": { - "project": { - "name": "My Project", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:5e01a8c7-c861-4c0a-b1d5-12345EXAMPLE", - "created": "1472660939.152" - } - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific project.", - "id": "to-get-a-project-1470975038449", - "title": "To get information about a project" - } - ], - "GetRemoteAccessSession": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" - }, - "output": { - "remoteAccessSession": { - } - }, - "comments": { - "input": { - "arn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." - }, - "output": { - } - }, - "description": "The following example gets a specific remote access session.", - "id": "to-get-a-remote-access-session-1471014119414", - "title": "To get a remote access session" - } - ], - "GetRun": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE" - }, - "output": { - "run": { - "name": "My Test Run", - "type": "BUILTIN_EXPLORER", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", - "billingMethod": "METERED", - "completedJobs": 0, - "counters": { - "errored": 0, - "failed": 0, - "passed": 0, - "skipped": 0, - "stopped": 0, - "total": 0, - "warned": 0 - }, - "created": "1472667509.852", - "deviceMinutes": { - "metered": 0.0, - "total": 0.0, - "unmetered": 0.0 - }, - "platform": "ANDROID", - "result": "PENDING", - "status": "RUNNING", - "totalJobs": 3 - } - }, - "comments": { - "input": { - "arn": "You can get the run ARN by using the list-runs CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific test run.", - "id": "to-get-a-test-run-1471015895657", - "title": "To get information about a test run" - } - ], - "GetSuite": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:suite:EXAMPLE-GUID-123-456" - }, - "output": { - "suite": { - } - }, - "comments": { - "input": { - "arn": "You can get the suite ARN by using the list-suites CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific test suite.", - "id": "to-get-information-about-a-test-suite-1471016525008", - "title": "To get information about a test suite" - } - ], - "GetTest": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:test:EXAMPLE-GUID-123-456" - }, - "output": { - "test": { - } - }, - "comments": { - "input": { - "arn": "You can get the test ARN by using the list-tests CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific test.", - "id": "to-get-information-about-a-specific-test-1471025744238", - "title": "To get information about a specific test" - } - ], - "GetUpload": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:upload:EXAMPLE-GUID-123-456" - }, - "output": { - "upload": { - } - }, - "comments": { - "input": { - "arn": "You can get the test ARN by using the list-uploads CLI command." - }, - "output": { - } - }, - "description": "The following example gets information about a specific upload.", - "id": "to-get-information-about-a-specific-upload-1471025996221", - "title": "To get information about a specific upload" - } - ], - "InstallToRemoteAccessSession": [ - { - "input": { - "appArn": "arn:aws:devicefarm:us-west-2:123456789101:app:EXAMPLE-GUID-123-456", - "remoteAccessSessionArn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456" - }, - "output": { - "appUpload": { - } - }, - "comments": { - "input": { - "remoteAccessSessionArn": "You can get the remote access session ARN by using the list-remote-access-sessions CLI command." - }, - "output": { - } - }, - "description": "The following example installs a specific app to a device in a specific remote access session.", - "id": "to-install-to-a-remote-access-session-1471634453818", - "title": "To install to a remote access session" - } - ], - "ListArtifacts": [ - { - "input": { - "type": "SCREENSHOT", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" - }, - "comments": { - "input": { - "arn": "Can also be used to list artifacts for a Job, Suite, or Test ARN." - }, - "output": { - } - }, - "description": "The following example lists screenshot artifacts for a specific run.", - "id": "to-list-artifacts-for-a-resource-1471635409527", - "title": "To list artifacts for a resource" - } - ], - "ListDevicePools": [ - { - "input": { - "type": "PRIVATE", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - "devicePools": [ - { - "name": "Top Devices", - "arn": "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-12345EXAMPLE", - "description": "Top devices", - "rules": [ - { - "value": "[\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\"]", - "attribute": "ARN", - "operator": "IN" - } - ] - }, - { - "name": "My Android Device Pool", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:devicepool:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/bf96e75a-28f6-4e61-b6a7-12345EXAMPLE", - "description": "Samsung Galaxy Android devices", - "rules": [ - { - "value": "[\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\",\"arn:aws:devicefarm:us-west-2::device:123456789EXAMPLE\"]", - "attribute": "ARN", - "operator": "IN" - } - ] - } - ] - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about the private device pools in a specific project.", - "id": "to-get-information-about-device-pools-1471635745170", - "title": "To get information about device pools" - } - ], - "ListDevices": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "output": { - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about the available devices in a specific project.", - "id": "to-get-information-about-devices-1471641699344", - "title": "To get information about devices" - } - ], - "ListJobs": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456" - }, - "comments": { - "input": { - "arn": "You can get the project ARN by using the list-jobs CLI command." - }, - "output": { - } - }, - "description": "The following example returns information about jobs in a specific project.", - "id": "to-get-information-about-jobs-1471642228071", - "title": "To get information about jobs" - } - ], - "ListOfferingTransactions": [ - { - "input": { - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "offeringTransactions": [ - { - "cost": { - "amount": 0, - "currencyCode": "USD" - }, - "createdOn": "1470021420", - "offeringStatus": { - "type": "RENEW", - "effectiveOn": "1472688000", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 0 - }, - "transactionId": "03728003-d1ea-4851-abd6-12345EXAMPLE" - }, - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "createdOn": "1470021420", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1470021420", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "56820b6e-06bd-473a-8ff8-12345EXAMPLE" - }, - { - "cost": { - "amount": 175, - "currencyCode": "USD" - }, - "createdOn": "1465538520", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1465538520", - "offering": { - "type": "RECURRING", - "description": "Android Unmetered Device Slot", - "id": "8980F81C-00D7-469D-8EC6-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "953ae2c6-d760-4a04-9597-12345EXAMPLE" - }, - { - "cost": { - "amount": 8.07, - "currencyCode": "USD" - }, - "createdOn": "1459344300", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1459344300", - "offering": { - "type": "RECURRING", - "description": "iOS Unmetered Device Slot", - "id": "A53D4D73-A6F6-4B82-A0B0-12345EXAMPLE", - "platform": "IOS" - }, - "quantity": 1 - }, - "transactionId": "2baf9021-ae3e-47f5-ab52-12345EXAMPLE" - } - ] - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about Device Farm offering transactions.", - "id": "to-get-information-about-device-offering-transactions-1472561712315", - "title": "To get information about device offering transactions" - } - ], - "ListOfferings": [ - { - "input": { - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "offerings": [ - { - "type": "RECURRING", - "description": "iOS Unmetered Device Slot", - "id": "A53D4D73-A6F6-4B82-A0B0-12345EXAMPLE", - "platform": "IOS", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - }, - { - "type": "RECURRING", - "description": "Android Unmetered Device Slot", - "id": "8980F81C-00D7-469D-8EC6-12345EXAMPLE", - "platform": "ANDROID", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - }, - { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - }, - { - "type": "RECURRING", - "description": "iOS Remote Access Unmetered Device Slot", - "id": "552B4DAD-A6C9-45C4-94FB-12345EXAMPLE", - "platform": "IOS", - "recurringCharges": [ - { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "frequency": "MONTHLY" - } - ] - } - ] - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about available device offerings.", - "id": "to-get-information-about-device-offerings-1472562810999", - "title": "To get information about device offerings" - } - ], - "ListProjects": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:7ad300ed-8183-41a7-bf94-12345EXAMPLE", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "projects": [ - { - "name": "My Test Project", - "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:7ad300ed-8183-41a7-bf94-12345EXAMPLE", - "created": "1453163262.105" - }, - { - "name": "Hello World", - "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:d6b087d9-56db-4e44-b9ec-12345EXAMPLE", - "created": "1470350112.439" - } - ] - }, - "comments": { - "input": { - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about the specified project in Device Farm.", - "id": "to-get-information-about-a-device-farm-project-1472564014388", - "title": "To get information about a Device Farm project" - } - ], - "ListRemoteAccessSessions": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:session:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE=" - }, - "output": { - "remoteAccessSessions": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the session by using the list-sessions CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about a specific Device Farm remote access session.", - "id": "to-get-information-about-a-remote-access-session-1472581144803", - "title": "To get information about a remote access session" - } - ], - "ListRuns": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "runs": [ - { - "name": "My Test Run", - "type": "BUILTIN_EXPLORER", - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:5e01a8c7-c861-4c0a-b1d5-5ec6e6c6dd23/0fcac17b-6122-44d7-ae5a-12345EXAMPLE", - "billingMethod": "METERED", - "completedJobs": 0, - "counters": { - "errored": 0, - "failed": 0, - "passed": 0, - "skipped": 0, - "stopped": 0, - "total": 0, - "warned": 0 - }, - "created": "1472667509.852", - "deviceMinutes": { - "metered": 0.0, - "total": 0.0, - "unmetered": 0.0 - }, - "platform": "ANDROID", - "result": "PENDING", - "status": "RUNNING", - "totalJobs": 3 - } - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the run by using the list-runs CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about a specific test run.", - "id": "to-get-information-about-test-runs-1472582711069", - "title": "To get information about a test run" - } - ], - "ListSamples": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "samples": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about samples, given a specific Device Farm project.", - "id": "to-get-information-about-samples-1472582847534", - "title": "To get information about samples" - } - ], - "ListSuites": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "suites": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about suites, given a specific Device Farm project.", - "id": "to-get-information-about-suites-1472583038218", - "title": "To get information about suites" - } - ], - "ListTests": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "tests": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about tests, given a specific Device Farm project.", - "id": "to-get-information-about-tests-1472617372212", - "title": "To get information about tests" - } - ], - "ListUniqueProblems": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "uniqueProblems": { - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about unique problems, given a specific Device Farm project.", - "id": "to-get-information-about-unique-problems-1472617781008", - "title": "To get information about unique problems" - } - ], - "ListUploads": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "nextToken": "RW5DdDJkMWYwZjM2MzM2VHVpOHJIUXlDUXlhc2QzRGViYnc9SEXAMPLE" - }, - "output": { - "uploads": [ - - ] - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "nextToken": "A dynamically generated value, used for paginating results." - }, - "output": { - } - }, - "description": "The following example returns information about uploads, given a specific Device Farm project.", - "id": "to-get-information-about-uploads-1472617943090", - "title": "To get information about uploads" - } - ], - "PurchaseOffering": [ - { - "input": { - "offeringId": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "quantity": 1 - }, - "output": { - "offeringTransaction": { - "cost": { - "amount": 8.07, - "currencyCode": "USD" - }, - "createdOn": "1472648340", - "offeringStatus": { - "type": "PURCHASE", - "effectiveOn": "1472648340", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "d30614ed-1b03-404c-9893-12345EXAMPLE" - } - }, - "comments": { - "input": { - "offeringId": "You can get the offering ID by using the list-offerings CLI command." - }, - "output": { - } - }, - "description": "The following example purchases a specific device slot offering.", - "id": "to-purchase-a-device-slot-offering-1472648146343", - "title": "To purchase a device slot offering" - } - ], - "RenewOffering": [ - { - "input": { - "offeringId": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "quantity": 1 - }, - "output": { - "offeringTransaction": { - "cost": { - "amount": 250, - "currencyCode": "USD" - }, - "createdOn": "1472648880", - "offeringStatus": { - "type": "RENEW", - "effectiveOn": "1472688000", - "offering": { - "type": "RECURRING", - "description": "Android Remote Access Unmetered Device Slot", - "id": "D68B3C05-1BA6-4360-BC69-12345EXAMPLE", - "platform": "ANDROID" - }, - "quantity": 1 - }, - "transactionId": "e90f1405-8c35-4561-be43-12345EXAMPLE" - } - }, - "comments": { - "input": { - "offeringId": "You can get the offering ID by using the list-offerings CLI command." - }, - "output": { - } - }, - "description": "The following example renews a specific device slot offering.", - "id": "to-renew-a-device-slot-offering-1472648899785", - "title": "To renew a device slot offering" - } - ], - "ScheduleRun": [ - { - "input": { - "name": "MyRun", - "devicePoolArn": "arn:aws:devicefarm:us-west-2:123456789101:pool:EXAMPLE-GUID-123-456", - "projectArn": "arn:aws:devicefarm:us-west-2:123456789101:project:EXAMPLE-GUID-123-456", - "test": { - "type": "APPIUM_JAVA_JUNIT", - "testPackageArn": "arn:aws:devicefarm:us-west-2:123456789101:test:EXAMPLE-GUID-123-456" - } - }, - "output": { - "run": { - } - }, - "comments": { - "input": { - "devicePoolArn": "You can get the Amazon Resource Name (ARN) of the device pool by using the list-pools CLI command.", - "projectArn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command.", - "testPackageArn": "You can get the Amazon Resource Name (ARN) of the test package by using the list-tests CLI command." - }, - "output": { - } - }, - "description": "The following example schedules a test run named MyRun.", - "id": "to-schedule-a-test-run-1472652429636", - "title": "To schedule a test run" - } - ], - "StopRun": [ - { - "input": { - "arn": "arn:aws:devicefarm:us-west-2:123456789101:run:EXAMPLE-GUID-123-456" - }, - "output": { - "run": { - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the test run by using the list-runs CLI command." - }, - "output": { - } - }, - "description": "The following example stops a specific test run.", - "id": "to-stop-a-test-run-1472653770340", - "title": "To stop a test run" - } - ], - "UpdateDevicePool": [ - { - "input": { - "name": "NewName", - "arn": "arn:aws:devicefarm:us-west-2::devicepool:082d10e5-d7d7-48a5-ba5c-12345EXAMPLE", - "description": "NewDescription", - "rules": [ - { - "value": "True", - "attribute": "REMOTE_ACCESS_ENABLED", - "operator": "EQUALS" - } - ] - }, - "output": { - "devicePool": { - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the device pool by using the list-pools CLI command." - }, - "output": { - "devicePool": "Note: you cannot update curated device pools." - } - }, - "description": "The following example updates the specified device pool with a new name and description. It also enables remote access of devices in the device pool.", - "id": "to-update-a-device-pool-1472653887677", - "title": "To update a device pool" - } - ], - "UpdateProject": [ - { - "input": { - "name": "NewName", - "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:8f75187d-101e-4625-accc-12345EXAMPLE" - }, - "output": { - "project": { - "name": "NewName", - "arn": "arn:aws:devicefarm:us-west-2:183774035805:project:8f75187d-101e-4625-accc-12345EXAMPLE", - "created": "1448400709.927" - } - }, - "comments": { - "input": { - "arn": "You can get the Amazon Resource Name (ARN) of the project by using the list-projects CLI command." - }, - "output": { - } - }, - "description": "The following example updates the specified project with a new name.", - "id": "to-update-a-device-pool-1472653887677", - "title": "To update a device pool" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json deleted file mode 100644 index 516c178..0000000 --- a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.min.json +++ /dev/null @@ -1,1404 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-06-23", - "endpointPrefix": "devicefarm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Device Farm", - "signatureVersion": "v4", - "targetPrefix": "DeviceFarm_20150623" - }, - "operations": { - "CreateDevicePool": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "name", - "rules" - ], - "members": { - "projectArn": {}, - "name": {}, - "description": {}, - "rules": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": { - "devicePool": { - "shape": "Sb" - } - } - } - }, - "CreateProject": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "Sf" - } - } - } - }, - "CreateRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "deviceArn" - ], - "members": { - "projectArn": {}, - "deviceArn": {}, - "name": {}, - "configuration": { - "type": "structure", - "members": { - "billingMethod": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSession": { - "shape": "Sl" - } - } - } - }, - "CreateUpload": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "name", - "type" - ], - "members": { - "projectArn": {}, - "name": {}, - "type": {}, - "contentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "upload": { - "shape": "S12" - } - } - } - }, - "DeleteDevicePool": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteProject": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteRun": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteUpload": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetAccountSettings": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "accountSettings": { - "type": "structure", - "members": { - "awsAccountNumber": {}, - "unmeteredDevices": { - "shape": "S1k" - }, - "unmeteredRemoteAccessDevices": { - "shape": "S1k" - } - } - } - } - } - }, - "GetDevice": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "device": { - "shape": "So" - } - } - } - }, - "GetDevicePool": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "devicePool": { - "shape": "Sb" - } - } - } - }, - "GetDevicePoolCompatibility": { - "input": { - "type": "structure", - "required": [ - "devicePoolArn" - ], - "members": { - "devicePoolArn": {}, - "appArn": {}, - "testType": {} - } - }, - "output": { - "type": "structure", - "members": { - "compatibleDevices": { - "shape": "S1s" - }, - "incompatibleDevices": { - "shape": "S1s" - } - } - } - }, - "GetJob": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "job": { - "shape": "S1y" - } - } - } - }, - "GetOfferingStatus": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "current": { - "shape": "S23" - }, - "nextPeriod": { - "shape": "S23" - }, - "nextToken": {} - } - } - }, - "GetProject": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "Sf" - } - } - } - }, - "GetRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSession": { - "shape": "Sl" - } - } - } - }, - "GetRun": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "run": { - "shape": "S2k" - } - } - } - }, - "GetSuite": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "suite": { - "shape": "S2n" - } - } - } - }, - "GetTest": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "test": { - "shape": "S2q" - } - } - } - }, - "GetUpload": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "upload": { - "shape": "S12" - } - } - } - }, - "InstallToRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "remoteAccessSessionArn", - "appArn" - ], - "members": { - "remoteAccessSessionArn": {}, - "appArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "appUpload": { - "shape": "S12" - } - } - } - }, - "ListArtifacts": { - "input": { - "type": "structure", - "required": [ - "arn", - "type" - ], - "members": { - "arn": {}, - "type": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "artifacts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "extension": {}, - "url": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListDevicePools": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "type": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "devicePools": { - "type": "list", - "member": { - "shape": "Sb" - } - }, - "nextToken": {} - } - } - }, - "ListDevices": { - "input": { - "type": "structure", - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "devices": { - "type": "list", - "member": { - "shape": "So" - } - }, - "nextToken": {} - } - } - }, - "ListJobs": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "jobs": { - "type": "list", - "member": { - "shape": "S1y" - } - }, - "nextToken": {} - } - } - }, - "ListOfferingTransactions": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "offeringTransactions": { - "type": "list", - "member": { - "shape": "S3d" - } - }, - "nextToken": {} - } - } - }, - "ListOfferings": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "offerings": { - "type": "list", - "member": { - "shape": "S27" - } - }, - "nextToken": {} - } - } - }, - "ListProjects": { - "input": { - "type": "structure", - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "projects": { - "type": "list", - "member": { - "shape": "Sf" - } - }, - "nextToken": {} - } - } - }, - "ListRemoteAccessSessions": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSessions": { - "type": "list", - "member": { - "shape": "Sl" - } - }, - "nextToken": {} - } - } - }, - "ListRuns": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "runs": { - "type": "list", - "member": { - "shape": "S2k" - } - }, - "nextToken": {} - } - } - }, - "ListSamples": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "samples": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "type": {}, - "url": {} - } - } - }, - "nextToken": {} - } - } - }, - "ListSuites": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "suites": { - "type": "list", - "member": { - "shape": "S2n" - } - }, - "nextToken": {} - } - } - }, - "ListTests": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "tests": { - "type": "list", - "member": { - "shape": "S2q" - } - }, - "nextToken": {} - } - } - }, - "ListUniqueProblems": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "uniqueProblems": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "message": {}, - "problems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "run": { - "shape": "S49" - }, - "job": { - "shape": "S49" - }, - "suite": { - "shape": "S49" - }, - "test": { - "shape": "S49" - }, - "device": { - "shape": "So" - }, - "result": {}, - "message": {} - } - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "ListUploads": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "uploads": { - "type": "list", - "member": { - "shape": "S12" - } - }, - "nextToken": {} - } - } - }, - "PurchaseOffering": { - "input": { - "type": "structure", - "members": { - "offeringId": {}, - "quantity": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "offeringTransaction": { - "shape": "S3d" - } - } - } - }, - "RenewOffering": { - "input": { - "type": "structure", - "members": { - "offeringId": {}, - "quantity": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "offeringTransaction": { - "shape": "S3d" - } - } - } - }, - "ScheduleRun": { - "input": { - "type": "structure", - "required": [ - "projectArn", - "devicePoolArn", - "test" - ], - "members": { - "projectArn": {}, - "appArn": {}, - "devicePoolArn": {}, - "name": {}, - "test": { - "type": "structure", - "required": [ - "type" - ], - "members": { - "type": {}, - "testPackageArn": {}, - "filter": {}, - "parameters": { - "type": "map", - "key": {}, - "value": {} - } - } - }, - "configuration": { - "type": "structure", - "members": { - "extraDataPackageArn": {}, - "networkProfileArn": {}, - "locale": {}, - "location": { - "type": "structure", - "required": [ - "latitude", - "longitude" - ], - "members": { - "latitude": { - "type": "double" - }, - "longitude": { - "type": "double" - } - } - }, - "radios": { - "type": "structure", - "members": { - "wifi": { - "type": "boolean" - }, - "bluetooth": { - "type": "boolean" - }, - "nfc": { - "type": "boolean" - }, - "gps": { - "type": "boolean" - } - } - }, - "auxiliaryApps": { - "type": "list", - "member": {} - }, - "billingMethod": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "run": { - "shape": "S2k" - } - } - } - }, - "StopRemoteAccessSession": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "remoteAccessSession": { - "shape": "Sl" - } - } - } - }, - "StopRun": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {} - } - }, - "output": { - "type": "structure", - "members": { - "run": { - "shape": "S2k" - } - } - } - }, - "UpdateDevicePool": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "name": {}, - "description": {}, - "rules": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": { - "devicePool": { - "shape": "Sb" - } - } - } - }, - "UpdateProject": { - "input": { - "type": "structure", - "required": [ - "arn" - ], - "members": { - "arn": {}, - "name": {} - } - }, - "output": { - "type": "structure", - "members": { - "project": { - "shape": "Sf" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "list", - "member": { - "type": "structure", - "members": { - "attribute": {}, - "operator": {}, - "value": {} - } - } - }, - "Sb": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "description": {}, - "type": {}, - "rules": { - "shape": "S5" - } - } - }, - "Sf": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "created": { - "type": "timestamp" - } - } - }, - "Sl": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "message": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "device": { - "shape": "So" - }, - "billingMethod": {}, - "deviceMinutes": { - "shape": "Sx" - }, - "endpoint": {} - } - }, - "So": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "manufacturer": {}, - "model": {}, - "formFactor": {}, - "platform": {}, - "os": {}, - "cpu": { - "type": "structure", - "members": { - "frequency": {}, - "architecture": {}, - "clock": { - "type": "double" - } - } - }, - "resolution": { - "type": "structure", - "members": { - "width": { - "type": "integer" - }, - "height": { - "type": "integer" - } - } - }, - "heapSize": { - "type": "long" - }, - "memory": { - "type": "long" - }, - "image": {}, - "carrier": {}, - "radio": {}, - "remoteAccessEnabled": { - "type": "boolean" - }, - "fleetType": {}, - "fleetName": {} - } - }, - "Sx": { - "type": "structure", - "members": { - "total": { - "type": "double" - }, - "metered": { - "type": "double" - }, - "unmetered": { - "type": "double" - } - } - }, - "S12": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "created": { - "type": "timestamp" - }, - "type": {}, - "status": {}, - "url": {}, - "metadata": {}, - "contentType": {}, - "message": {} - } - }, - "S1k": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - }, - "S1s": { - "type": "list", - "member": { - "type": "structure", - "members": { - "device": { - "shape": "So" - }, - "compatible": { - "type": "boolean" - }, - "incompatibilityMessages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "message": {}, - "type": {} - } - } - } - } - } - }, - "S1y": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S1z" - }, - "message": {}, - "device": { - "shape": "So" - }, - "deviceMinutes": { - "shape": "Sx" - } - } - }, - "S1z": { - "type": "structure", - "members": { - "total": { - "type": "integer" - }, - "passed": { - "type": "integer" - }, - "failed": { - "type": "integer" - }, - "warned": { - "type": "integer" - }, - "errored": { - "type": "integer" - }, - "stopped": { - "type": "integer" - }, - "skipped": { - "type": "integer" - } - } - }, - "S23": { - "type": "map", - "key": {}, - "value": { - "shape": "S25" - } - }, - "S25": { - "type": "structure", - "members": { - "type": {}, - "offering": { - "shape": "S27" - }, - "quantity": { - "type": "integer" - }, - "effectiveOn": { - "type": "timestamp" - } - } - }, - "S27": { - "type": "structure", - "members": { - "id": {}, - "description": {}, - "type": {}, - "platform": {}, - "recurringCharges": { - "type": "list", - "member": { - "type": "structure", - "members": { - "cost": { - "shape": "S2b" - }, - "frequency": {} - } - } - } - } - }, - "S2b": { - "type": "structure", - "members": { - "amount": { - "type": "double" - }, - "currencyCode": {} - } - }, - "S2k": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "platform": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S1z" - }, - "message": {}, - "totalJobs": { - "type": "integer" - }, - "completedJobs": { - "type": "integer" - }, - "billingMethod": {}, - "deviceMinutes": { - "shape": "Sx" - } - } - }, - "S2n": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S1z" - }, - "message": {}, - "deviceMinutes": { - "shape": "Sx" - } - } - }, - "S2q": { - "type": "structure", - "members": { - "arn": {}, - "name": {}, - "type": {}, - "created": { - "type": "timestamp" - }, - "status": {}, - "result": {}, - "started": { - "type": "timestamp" - }, - "stopped": { - "type": "timestamp" - }, - "counters": { - "shape": "S1z" - }, - "message": {}, - "deviceMinutes": { - "shape": "Sx" - } - } - }, - "S3d": { - "type": "structure", - "members": { - "offeringStatus": { - "shape": "S25" - }, - "transactionId": {}, - "createdOn": { - "type": "timestamp" - }, - "cost": { - "shape": "S2b" - } - } - }, - "S49": { - "type": "structure", - "members": { - "arn": {}, - "name": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json b/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json deleted file mode 100644 index ce5f8d7..0000000 --- a/node_modules/aws-sdk/apis/devicefarm-2015-06-23.paginators.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "pagination": { - "GetOfferingStatus": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": ["current","nextPeriod"] - }, - "ListArtifacts": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "artifacts" - }, - "ListDevicePools": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "devicePools" - }, - "ListDevices": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "devices" - }, - "ListJobs": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "jobs" - }, - "ListOfferingTransactions": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "offeringTransactions" - }, - "ListOfferings": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "offerings" - }, - "ListProjects": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "projects" - }, - "ListRuns": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "runs" - }, - "ListSamples": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "samples" - }, - "ListSuites": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "suites" - }, - "ListTests": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "tests" - }, - "ListUniqueProblems": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "uniqueProblems" - }, - "ListUploads": { - "input_token": "nextToken", - "output_token": "nextToken", - "result_key": "uploads" - } - } -} diff --git a/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json b/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json deleted file mode 100644 index 0cdffec..0000000 --- a/node_modules/aws-sdk/apis/directconnect-2012-10-25.min.json +++ /dev/null @@ -1,563 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-10-25", - "endpointPrefix": "directconnect", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Direct Connect", - "signatureVersion": "v4", - "targetPrefix": "OvertureService" - }, - "operations": { - "AllocateConnectionOnInterconnect": { - "input": { - "type": "structure", - "required": [ - "bandwidth", - "connectionName", - "ownerAccount", - "interconnectId", - "vlan" - ], - "members": { - "bandwidth": {}, - "connectionName": {}, - "ownerAccount": {}, - "interconnectId": {}, - "vlan": { - "type": "integer" - } - } - }, - "output": { - "shape": "S7" - } - }, - "AllocatePrivateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "ownerAccount", - "newPrivateVirtualInterfaceAllocation" - ], - "members": { - "connectionId": {}, - "ownerAccount": {}, - "newPrivateVirtualInterfaceAllocation": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {} - } - } - } - }, - "output": { - "shape": "Sl" - } - }, - "AllocatePublicVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "ownerAccount", - "newPublicVirtualInterfaceAllocation" - ], - "members": { - "connectionId": {}, - "ownerAccount": {}, - "newPublicVirtualInterfaceAllocation": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn", - "amazonAddress", - "customerAddress", - "routeFilterPrefixes" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "routeFilterPrefixes": { - "shape": "Sr" - } - } - } - } - }, - "output": { - "shape": "Sl" - } - }, - "ConfirmConnection": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "connectionState": {} - } - } - }, - "ConfirmPrivateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId", - "virtualGatewayId" - ], - "members": { - "virtualInterfaceId": {}, - "virtualGatewayId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaceState": {} - } - } - }, - "ConfirmPublicVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId" - ], - "members": { - "virtualInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaceState": {} - } - } - }, - "CreateConnection": { - "input": { - "type": "structure", - "required": [ - "location", - "bandwidth", - "connectionName" - ], - "members": { - "location": {}, - "bandwidth": {}, - "connectionName": {} - } - }, - "output": { - "shape": "S7" - } - }, - "CreateInterconnect": { - "input": { - "type": "structure", - "required": [ - "interconnectName", - "bandwidth", - "location" - ], - "members": { - "interconnectName": {}, - "bandwidth": {}, - "location": {} - } - }, - "output": { - "shape": "S15" - } - }, - "CreatePrivateVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "newPrivateVirtualInterface" - ], - "members": { - "connectionId": {}, - "newPrivateVirtualInterface": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn", - "virtualGatewayId" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "virtualGatewayId": {} - } - } - } - }, - "output": { - "shape": "Sl" - } - }, - "CreatePublicVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "connectionId", - "newPublicVirtualInterface" - ], - "members": { - "connectionId": {}, - "newPublicVirtualInterface": { - "type": "structure", - "required": [ - "virtualInterfaceName", - "vlan", - "asn", - "amazonAddress", - "customerAddress", - "routeFilterPrefixes" - ], - "members": { - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "routeFilterPrefixes": { - "shape": "Sr" - } - } - } - } - }, - "output": { - "shape": "Sl" - } - }, - "DeleteConnection": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {} - } - }, - "output": { - "shape": "S7" - } - }, - "DeleteInterconnect": { - "input": { - "type": "structure", - "required": [ - "interconnectId" - ], - "members": { - "interconnectId": {} - } - }, - "output": { - "type": "structure", - "members": { - "interconnectState": {} - } - } - }, - "DeleteVirtualInterface": { - "input": { - "type": "structure", - "required": [ - "virtualInterfaceId" - ], - "members": { - "virtualInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaceState": {} - } - } - }, - "DescribeConnectionLoa": { - "input": { - "type": "structure", - "required": [ - "connectionId" - ], - "members": { - "connectionId": {}, - "providerName": {}, - "loaContentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "loa": { - "shape": "S1k" - } - } - } - }, - "DescribeConnections": { - "input": { - "type": "structure", - "members": { - "connectionId": {} - } - }, - "output": { - "shape": "S1n" - } - }, - "DescribeConnectionsOnInterconnect": { - "input": { - "type": "structure", - "required": [ - "interconnectId" - ], - "members": { - "interconnectId": {} - } - }, - "output": { - "shape": "S1n" - } - }, - "DescribeInterconnectLoa": { - "input": { - "type": "structure", - "required": [ - "interconnectId" - ], - "members": { - "interconnectId": {}, - "providerName": {}, - "loaContentType": {} - } - }, - "output": { - "type": "structure", - "members": { - "loa": { - "shape": "S1k" - } - } - } - }, - "DescribeInterconnects": { - "input": { - "type": "structure", - "members": { - "interconnectId": {} - } - }, - "output": { - "type": "structure", - "members": { - "interconnects": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - } - }, - "DescribeLocations": { - "output": { - "type": "structure", - "members": { - "locations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "locationCode": {}, - "locationName": {} - } - } - } - } - } - }, - "DescribeVirtualGateways": { - "output": { - "type": "structure", - "members": { - "virtualGateways": { - "type": "list", - "member": { - "type": "structure", - "members": { - "virtualGatewayId": {}, - "virtualGatewayState": {} - } - } - } - } - } - }, - "DescribeVirtualInterfaces": { - "input": { - "type": "structure", - "members": { - "connectionId": {}, - "virtualInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "virtualInterfaces": { - "type": "list", - "member": { - "shape": "Sl" - } - } - } - } - } - }, - "shapes": { - "S7": { - "type": "structure", - "members": { - "ownerAccount": {}, - "connectionId": {}, - "connectionName": {}, - "connectionState": {}, - "region": {}, - "location": {}, - "bandwidth": {}, - "vlan": { - "type": "integer" - }, - "partnerName": {}, - "loaIssueTime": { - "type": "timestamp" - } - } - }, - "Sl": { - "type": "structure", - "members": { - "ownerAccount": {}, - "virtualInterfaceId": {}, - "location": {}, - "connectionId": {}, - "virtualInterfaceType": {}, - "virtualInterfaceName": {}, - "vlan": { - "type": "integer" - }, - "asn": { - "type": "integer" - }, - "authKey": {}, - "amazonAddress": {}, - "customerAddress": {}, - "virtualInterfaceState": {}, - "customerRouterConfig": {}, - "virtualGatewayId": {}, - "routeFilterPrefixes": { - "shape": "Sr" - } - } - }, - "Sr": { - "type": "list", - "member": { - "type": "structure", - "members": { - "cidr": {} - } - } - }, - "S15": { - "type": "structure", - "members": { - "interconnectId": {}, - "interconnectName": {}, - "interconnectState": {}, - "region": {}, - "location": {}, - "bandwidth": {}, - "loaIssueTime": { - "type": "timestamp" - } - } - }, - "S1k": { - "type": "structure", - "members": { - "loaContent": { - "type": "blob" - }, - "loaContentType": {} - } - }, - "S1n": { - "type": "structure", - "members": { - "connections": { - "type": "list", - "member": { - "shape": "S7" - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json b/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json deleted file mode 100644 index cc93bed..0000000 --- a/node_modules/aws-sdk/apis/directconnect-2012-10-25.paginators.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "pagination": { - "DescribeConnections": { - "result_key": "connections" - }, - "DescribeConnectionsOnInterconnect": { - "result_key": "connections" - }, - "DescribeInterconnects": { - "result_key": "interconnects" - }, - "DescribeLocations": { - "result_key": "locations" - }, - "DescribeVirtualGateways": { - "result_key": "virtualGateways" - }, - "DescribeVirtualInterfaces": { - "result_key": "virtualInterfaces" - } - } -} diff --git a/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json b/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json deleted file mode 100644 index 6b05842..0000000 --- a/node_modules/aws-sdk/apis/discovery-2015-11-01.min.json +++ /dev/null @@ -1,356 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-11-01", - "endpointPrefix": "discovery", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Application Discovery Service", - "signatureVersion": "v4", - "targetPrefix": "AWSPoseidonService_V2015_11_01" - }, - "operations": { - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "configurationIds", - "tags" - ], - "members": { - "configurationIds": { - "shape": "S2" - }, - "tags": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "configurationIds" - ], - "members": { - "configurationIds": { - "shape": "S2" - }, - "tags": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeAgents": { - "input": { - "type": "structure", - "members": { - "agentIds": { - "shape": "Sc" - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "agentsInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "agentId": {}, - "hostName": {}, - "agentNetworkInfoList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ipAddress": {}, - "macAddress": {} - } - } - }, - "connectorId": {}, - "version": {}, - "health": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeConfigurations": { - "input": { - "type": "structure", - "required": [ - "configurationIds" - ], - "members": { - "configurationIds": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "configurations": { - "type": "list", - "member": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - }, - "DescribeExportConfigurations": { - "input": { - "type": "structure", - "members": { - "exportIds": { - "type": "list", - "member": {} - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "exportsInfo": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "exportId", - "exportStatus", - "statusMessage", - "exportRequestTime" - ], - "members": { - "exportId": {}, - "exportStatus": {}, - "statusMessage": {}, - "configurationsDownloadUrl": {}, - "exportRequestTime": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "filters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "values" - ], - "members": { - "name": {}, - "values": { - "shape": "S15" - } - } - } - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "tags": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "configurationType": {}, - "configurationId": {}, - "key": {}, - "value": {}, - "timeOfCreation": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "ExportConfigurations": { - "output": { - "type": "structure", - "members": { - "exportId": {} - } - } - }, - "ListConfigurations": { - "input": { - "type": "structure", - "required": [ - "configurationType" - ], - "members": { - "configurationType": {}, - "filters": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "values", - "condition" - ], - "members": { - "name": {}, - "values": { - "shape": "S15" - }, - "condition": {} - } - } - }, - "maxResults": { - "type": "integer" - }, - "nextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "configurations": { - "type": "list", - "member": { - "type": "map", - "key": {}, - "value": {} - } - }, - "nextToken": {} - } - } - }, - "StartDataCollectionByAgentIds": { - "input": { - "type": "structure", - "required": [ - "agentIds" - ], - "members": { - "agentIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "agentsConfigurationStatus": { - "shape": "S1m" - } - } - } - }, - "StopDataCollectionByAgentIds": { - "input": { - "type": "structure", - "required": [ - "agentIds" - ], - "members": { - "agentIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "agentsConfigurationStatus": { - "shape": "S1m" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sc": { - "type": "list", - "member": {} - }, - "S15": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "S1m": { - "type": "list", - "member": { - "type": "structure", - "members": { - "agentId": {}, - "operationSucceeded": { - "type": "boolean" - }, - "description": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dms-2016-01-01.min.json b/node_modules/aws-sdk/apis/dms-2016-01-01.min.json deleted file mode 100644 index d762664..0000000 --- a/node_modules/aws-sdk/apis/dms-2016-01-01.min.json +++ /dev/null @@ -1,1130 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-01-01", - "endpointPrefix": "dms", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Database Migration Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonDMSv20160101" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "Tags" - ], - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointIdentifier", - "EndpointType", - "EngineName", - "Username", - "Password", - "ServerName", - "Port" - ], - "members": { - "EndpointIdentifier": {}, - "EndpointType": {}, - "EngineName": {}, - "Username": {}, - "Password": { - "shape": "S8" - }, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "ExtraConnectionAttributes": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S3" - }, - "CertificateArn": {}, - "SslMode": {} - } - }, - "output": { - "type": "structure", - "members": { - "Endpoint": { - "shape": "Sc" - } - } - } - }, - "CreateReplicationInstance": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceIdentifier", - "ReplicationInstanceClass" - ], - "members": { - "ReplicationInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "ReplicationInstanceClass": {}, - "VpcSecurityGroupIds": { - "shape": "Se" - }, - "AvailabilityZone": {}, - "ReplicationSubnetGroupIdentifier": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Tags": { - "shape": "S3" - }, - "KmsKeyId": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationInstance": { - "shape": "Sh" - } - } - } - }, - "CreateReplicationSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationSubnetGroupIdentifier", - "ReplicationSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "ReplicationSubnetGroupIdentifier": {}, - "ReplicationSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "Sv" - }, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationSubnetGroup": { - "shape": "Sm" - } - } - } - }, - "CreateReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskIdentifier", - "SourceEndpointArn", - "TargetEndpointArn", - "ReplicationInstanceArn", - "MigrationType", - "TableMappings" - ], - "members": { - "ReplicationTaskIdentifier": {}, - "SourceEndpointArn": {}, - "TargetEndpointArn": {}, - "ReplicationInstanceArn": {}, - "MigrationType": {}, - "TableMappings": {}, - "ReplicationTaskSettings": {}, - "CdcStartTime": { - "type": "timestamp" - }, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S10" - } - } - } - }, - "DeleteCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateArn" - ], - "members": { - "CertificateArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": { - "shape": "S15" - } - } - } - }, - "DeleteEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Endpoint": { - "shape": "Sc" - } - } - } - }, - "DeleteReplicationInstance": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceArn" - ], - "members": { - "ReplicationInstanceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationInstance": { - "shape": "Sh" - } - } - } - }, - "DeleteReplicationSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationSubnetGroupIdentifier" - ], - "members": { - "ReplicationSubnetGroupIdentifier": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S10" - } - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AccountQuotas": { - "type": "list", - "member": { - "locationName": "AccountQuota", - "type": "structure", - "members": { - "AccountQuotaName": {}, - "Used": { - "type": "long" - }, - "Max": { - "type": "long" - } - } - } - } - } - } - }, - "DescribeCertificates": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Certificates": { - "type": "list", - "member": { - "shape": "S15", - "locationName": "Certificate" - } - } - } - } - }, - "DescribeConnections": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Connections": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "Connection" - } - } - } - } - }, - "DescribeEndpointTypes": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "SupportedEndpointTypes": { - "type": "list", - "member": { - "locationName": "SupportedEndpointType", - "type": "structure", - "members": { - "EngineName": {}, - "SupportsCDC": { - "type": "boolean" - }, - "EndpointType": {} - } - } - } - } - } - }, - "DescribeEndpoints": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Endpoints": { - "type": "list", - "member": { - "shape": "Sc", - "locationName": "Endpoint" - } - } - } - } - }, - "DescribeOrderableReplicationInstances": { - "input": { - "type": "structure", - "members": { - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "OrderableReplicationInstances": { - "type": "list", - "member": { - "locationName": "OrderableReplicationInstance", - "type": "structure", - "members": { - "EngineVersion": {}, - "ReplicationInstanceClass": {}, - "StorageType": {}, - "MinAllocatedStorage": { - "type": "integer" - }, - "MaxAllocatedStorage": { - "type": "integer" - }, - "DefaultAllocatedStorage": { - "type": "integer" - }, - "IncludedAllocatedStorage": { - "type": "integer" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeRefreshSchemasStatus": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RefreshSchemasStatus": { - "shape": "S25" - } - } - } - }, - "DescribeReplicationInstances": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "ReplicationInstances": { - "type": "list", - "member": { - "shape": "Sh", - "locationName": "ReplicationInstance" - } - } - } - } - }, - "DescribeReplicationSubnetGroups": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "ReplicationSubnetGroups": { - "type": "list", - "member": { - "shape": "Sm", - "locationName": "ReplicationSubnetGroup" - } - } - } - } - }, - "DescribeReplicationTasks": { - "input": { - "type": "structure", - "members": { - "Filters": { - "shape": "S1j" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "ReplicationTasks": { - "type": "list", - "member": { - "shape": "S10", - "locationName": "ReplicationTask" - } - } - } - } - }, - "DescribeSchemas": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "Schemas": { - "type": "list", - "member": {} - } - } - } - }, - "DescribeTableStatistics": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTaskArn": {}, - "TableStatistics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SchemaName": {}, - "TableName": {}, - "Inserts": { - "type": "long" - }, - "Deletes": { - "type": "long" - }, - "Updates": { - "type": "long" - }, - "Ddls": { - "type": "long" - }, - "FullLoadRows": { - "type": "long" - }, - "LastUpdateTime": { - "type": "timestamp" - }, - "TableState": {} - } - } - }, - "Marker": {} - } - } - }, - "ImportCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateIdentifier" - ], - "members": { - "CertificateIdentifier": {}, - "CertificatePem": {} - } - }, - "output": { - "type": "structure", - "members": { - "Certificate": { - "shape": "S15" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn" - ], - "members": { - "ResourceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "ModifyEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {}, - "EndpointIdentifier": {}, - "EndpointType": {}, - "EngineName": {}, - "Username": {}, - "Password": { - "shape": "S8" - }, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "ExtraConnectionAttributes": {}, - "CertificateArn": {}, - "SslMode": {} - } - }, - "output": { - "type": "structure", - "members": { - "Endpoint": { - "shape": "Sc" - } - } - } - }, - "ModifyReplicationInstance": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceArn" - ], - "members": { - "ReplicationInstanceArn": {}, - "AllocatedStorage": { - "type": "integer" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "ReplicationInstanceClass": {}, - "VpcSecurityGroupIds": { - "shape": "Se" - }, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReplicationInstanceIdentifier": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationInstance": { - "shape": "Sh" - } - } - } - }, - "ModifyReplicationSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationSubnetGroupIdentifier", - "SubnetIds" - ], - "members": { - "ReplicationSubnetGroupIdentifier": {}, - "ReplicationSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationSubnetGroup": { - "shape": "Sm" - } - } - } - }, - "RefreshSchemas": { - "input": { - "type": "structure", - "required": [ - "EndpointArn", - "ReplicationInstanceArn" - ], - "members": { - "EndpointArn": {}, - "ReplicationInstanceArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RefreshSchemasStatus": { - "shape": "S25" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceArn", - "TagKeys" - ], - "members": { - "ResourceArn": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StartReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn", - "StartReplicationTaskType" - ], - "members": { - "ReplicationTaskArn": {}, - "StartReplicationTaskType": {}, - "CdcStartTime": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S10" - } - } - } - }, - "StopReplicationTask": { - "input": { - "type": "structure", - "required": [ - "ReplicationTaskArn" - ], - "members": { - "ReplicationTaskArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationTask": { - "shape": "S10" - } - } - } - }, - "TestConnection": { - "input": { - "type": "structure", - "required": [ - "ReplicationInstanceArn", - "EndpointArn" - ], - "members": { - "ReplicationInstanceArn": {}, - "EndpointArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Connection": { - "shape": "S1r" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S8": { - "type": "string", - "sensitive": true - }, - "Sc": { - "type": "structure", - "members": { - "EndpointIdentifier": {}, - "EndpointType": {}, - "EngineName": {}, - "Username": {}, - "ServerName": {}, - "Port": { - "type": "integer" - }, - "DatabaseName": {}, - "ExtraConnectionAttributes": {}, - "Status": {}, - "KmsKeyId": {}, - "EndpointArn": {}, - "CertificateArn": {}, - "SslMode": {} - } - }, - "Se": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "Sh": { - "type": "structure", - "members": { - "ReplicationInstanceIdentifier": {}, - "ReplicationInstanceClass": {}, - "ReplicationInstanceStatus": {}, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "VpcSecurityGroups": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "AvailabilityZone": {}, - "ReplicationSubnetGroup": { - "shape": "Sm" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "ReplicationInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {} - } - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "KmsKeyId": {}, - "ReplicationInstanceArn": {}, - "ReplicationInstancePublicIpAddress": { - "deprecated": true - }, - "ReplicationInstancePrivateIpAddress": { - "deprecated": true - }, - "ReplicationInstancePublicIpAddresses": { - "type": "list", - "member": {} - }, - "ReplicationInstancePrivateIpAddresses": { - "type": "list", - "member": {} - }, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "Sm": { - "type": "structure", - "members": { - "ReplicationSubnetGroupIdentifier": {}, - "ReplicationSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "type": "structure", - "members": { - "Name": {} - } - }, - "SubnetStatus": {} - } - } - } - } - }, - "Sv": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S10": { - "type": "structure", - "members": { - "ReplicationTaskIdentifier": {}, - "SourceEndpointArn": {}, - "TargetEndpointArn": {}, - "ReplicationInstanceArn": {}, - "MigrationType": {}, - "TableMappings": {}, - "ReplicationTaskSettings": {}, - "Status": {}, - "LastFailureMessage": {}, - "ReplicationTaskCreationDate": { - "type": "timestamp" - }, - "ReplicationTaskStartDate": { - "type": "timestamp" - }, - "ReplicationTaskArn": {}, - "ReplicationTaskStats": { - "type": "structure", - "members": { - "FullLoadProgressPercent": { - "type": "integer" - }, - "ElapsedTimeMillis": { - "type": "long" - }, - "TablesLoaded": { - "type": "integer" - }, - "TablesLoading": { - "type": "integer" - }, - "TablesQueued": { - "type": "integer" - }, - "TablesErrored": { - "type": "integer" - } - } - } - } - }, - "S15": { - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "CertificateCreationDate": { - "type": "timestamp" - }, - "CertificatePem": {}, - "CertificateArn": {}, - "CertificateOwner": {}, - "ValidFromDate": { - "type": "timestamp" - }, - "ValidToDate": { - "type": "timestamp" - }, - "SigningAlgorithm": {}, - "KeyLength": { - "type": "integer" - } - } - }, - "S1j": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S1r": { - "type": "structure", - "members": { - "ReplicationInstanceArn": {}, - "EndpointArn": {}, - "Status": {}, - "LastFailureMessage": {}, - "EndpointIdentifier": {}, - "ReplicationInstanceIdentifier": {} - } - }, - "S25": { - "type": "structure", - "members": { - "EndpointArn": {}, - "ReplicationInstanceArn": {}, - "Status": {}, - "LastRefreshDate": { - "type": "timestamp" - }, - "LastFailureMessage": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ds-2015-04-16.min.json b/node_modules/aws-sdk/apis/ds-2015-04-16.min.json deleted file mode 100644 index b4e71b2..0000000 --- a/node_modules/aws-sdk/apis/ds-2015-04-16.min.json +++ /dev/null @@ -1,1033 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-04-16", - "endpointPrefix": "ds", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Directory Service", - "serviceFullName": "AWS Directory Service", - "signatureVersion": "v4", - "targetPrefix": "DirectoryService_20150416" - }, - "operations": { - "AddIpRoutes": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "IpRoutes" - ], - "members": { - "DirectoryId": {}, - "IpRoutes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CidrIp": {}, - "Description": {} - } - } - }, - "UpdateSecurityGroupForDirectoryControllers": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ConnectDirectory": { - "input": { - "type": "structure", - "required": [ - "Name", - "Password", - "Size", - "ConnectSettings" - ], - "members": { - "Name": {}, - "ShortName": {}, - "Password": { - "shape": "Sj" - }, - "Description": {}, - "Size": {}, - "ConnectSettings": { - "type": "structure", - "required": [ - "VpcId", - "SubnetIds", - "CustomerDnsIps", - "CustomerUserName" - ], - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sn" - }, - "CustomerDnsIps": { - "shape": "Sp" - }, - "CustomerUserName": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "Alias" - ], - "members": { - "DirectoryId": {}, - "Alias": {} - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {}, - "Alias": {} - } - } - }, - "CreateComputer": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "ComputerName", - "Password" - ], - "members": { - "DirectoryId": {}, - "ComputerName": {}, - "Password": { - "type": "string", - "sensitive": true - }, - "OrganizationalUnitDistinguishedName": {}, - "ComputerAttributes": { - "shape": "S10" - } - } - }, - "output": { - "type": "structure", - "members": { - "Computer": { - "type": "structure", - "members": { - "ComputerId": {}, - "ComputerName": {}, - "ComputerAttributes": { - "shape": "S10" - } - } - } - } - } - }, - "CreateConditionalForwarder": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName", - "DnsIpAddrs" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {}, - "DnsIpAddrs": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateDirectory": { - "input": { - "type": "structure", - "required": [ - "Name", - "Password", - "Size" - ], - "members": { - "Name": {}, - "ShortName": {}, - "Password": { - "shape": "S1b" - }, - "Description": {}, - "Size": {}, - "VpcSettings": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "CreateMicrosoftAD": { - "input": { - "type": "structure", - "required": [ - "Name", - "Password", - "VpcSettings" - ], - "members": { - "Name": {}, - "ShortName": {}, - "Password": { - "shape": "S1b" - }, - "Description": {}, - "VpcSettings": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {} - } - } - }, - "CreateTrust": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName", - "TrustPassword", - "TrustDirection" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {}, - "TrustPassword": { - "type": "string", - "sensitive": true - }, - "TrustDirection": {}, - "TrustType": {}, - "ConditionalForwarderIpAddrs": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "TrustId": {} - } - } - }, - "DeleteConditionalForwarder": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDirectory": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {} - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryId": {} - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "SnapshotId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {} - } - } - }, - "DeleteTrust": { - "input": { - "type": "structure", - "required": [ - "TrustId" - ], - "members": { - "TrustId": {}, - "DeleteAssociatedConditionalForwarder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "TrustId": {} - } - } - }, - "DeregisterEventTopic": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "TopicName" - ], - "members": { - "DirectoryId": {}, - "TopicName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeConditionalForwarders": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "ConditionalForwarders": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RemoteDomainName": {}, - "DnsIpAddrs": { - "shape": "Sp" - }, - "ReplicationScope": {} - } - } - } - } - } - }, - "DescribeDirectories": { - "input": { - "type": "structure", - "members": { - "DirectoryIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DirectoryDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "Name": {}, - "ShortName": {}, - "Size": {}, - "Alias": {}, - "AccessUrl": {}, - "Description": {}, - "DnsIpAddrs": { - "shape": "Sp" - }, - "Stage": {}, - "LaunchTime": { - "type": "timestamp" - }, - "StageLastUpdatedDateTime": { - "type": "timestamp" - }, - "Type": {}, - "VpcSettings": { - "type": "structure", - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sn" - }, - "SecurityGroupId": {}, - "AvailabilityZones": { - "shape": "S2m" - } - } - }, - "ConnectSettings": { - "type": "structure", - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sn" - }, - "CustomerUserName": {}, - "SecurityGroupId": {}, - "AvailabilityZones": { - "shape": "S2m" - }, - "ConnectIps": { - "type": "list", - "member": {} - } - } - }, - "RadiusSettings": { - "shape": "S2q" - }, - "RadiusStatus": {}, - "StageReason": {}, - "SsoEnabled": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEventTopics": { - "input": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TopicNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "EventTopics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TopicName": {}, - "TopicArn": {}, - "CreatedDateTime": { - "type": "timestamp" - }, - "Status": {} - } - } - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "DirectoryId": {}, - "SnapshotIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Snapshots": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "SnapshotId": {}, - "Type": {}, - "Name": {}, - "Status": {}, - "StartTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTrusts": { - "input": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TrustIds": { - "type": "list", - "member": {} - }, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Trusts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "TrustId": {}, - "RemoteDomainName": {}, - "TrustType": {}, - "TrustDirection": {}, - "TrustState": {}, - "CreatedDateTime": { - "type": "timestamp" - }, - "LastUpdatedDateTime": { - "type": "timestamp" - }, - "StateLastUpdatedDateTime": { - "type": "timestamp" - }, - "TrustStateReason": {} - } - } - }, - "NextToken": {} - } - } - }, - "DisableRadius": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableSso": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "UserName": {}, - "Password": { - "shape": "Sj" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableRadius": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RadiusSettings" - ], - "members": { - "DirectoryId": {}, - "RadiusSettings": { - "shape": "S2q" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableSso": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "UserName": {}, - "Password": { - "shape": "Sj" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "GetDirectoryLimits": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "DirectoryLimits": { - "type": "structure", - "members": { - "CloudOnlyDirectoriesLimit": { - "type": "integer" - }, - "CloudOnlyDirectoriesCurrentCount": { - "type": "integer" - }, - "CloudOnlyDirectoriesLimitReached": { - "type": "boolean" - }, - "CloudOnlyMicrosoftADLimit": { - "type": "integer" - }, - "CloudOnlyMicrosoftADCurrentCount": { - "type": "integer" - }, - "CloudOnlyMicrosoftADLimitReached": { - "type": "boolean" - }, - "ConnectedDirectoriesLimit": { - "type": "integer" - }, - "ConnectedDirectoriesCurrentCount": { - "type": "integer" - }, - "ConnectedDirectoriesLimitReached": { - "type": "boolean" - } - } - } - } - } - }, - "GetSnapshotLimits": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotLimits": { - "type": "structure", - "members": { - "ManualSnapshotsLimit": { - "type": "integer" - }, - "ManualSnapshotsCurrentCount": { - "type": "integer" - }, - "ManualSnapshotsLimitReached": { - "type": "boolean" - } - } - } - } - } - }, - "ListIpRoutes": { - "input": { - "type": "structure", - "required": [ - "DirectoryId" - ], - "members": { - "DirectoryId": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IpRoutesInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "CidrIp": {}, - "IpRouteStatusMsg": {}, - "AddedDateTime": { - "type": "timestamp" - }, - "IpRouteStatusReason": {}, - "Description": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "Sb" - }, - "NextToken": {} - } - } - }, - "RegisterEventTopic": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "TopicName" - ], - "members": { - "DirectoryId": {}, - "TopicName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveIpRoutes": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "CidrIps" - ], - "members": { - "DirectoryId": {}, - "CidrIps": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RestoreFromSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "SnapshotId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateConditionalForwarder": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RemoteDomainName", - "DnsIpAddrs" - ], - "members": { - "DirectoryId": {}, - "RemoteDomainName": {}, - "DnsIpAddrs": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateRadius": { - "input": { - "type": "structure", - "required": [ - "DirectoryId", - "RadiusSettings" - ], - "members": { - "DirectoryId": {}, - "RadiusSettings": { - "shape": "S2q" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "VerifyTrust": { - "input": { - "type": "structure", - "required": [ - "TrustId" - ], - "members": { - "TrustId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TrustId": {} - } - } - } - }, - "shapes": { - "Sb": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sj": { - "type": "string", - "sensitive": true - }, - "Sn": { - "type": "list", - "member": {} - }, - "Sp": { - "type": "list", - "member": {} - }, - "S10": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - } - }, - "S1b": { - "type": "string", - "sensitive": true - }, - "S1c": { - "type": "structure", - "required": [ - "VpcId", - "SubnetIds" - ], - "members": { - "VpcId": {}, - "SubnetIds": { - "shape": "Sn" - } - } - }, - "S2m": { - "type": "list", - "member": {} - }, - "S2q": { - "type": "structure", - "members": { - "RadiusServers": { - "type": "list", - "member": {} - }, - "RadiusPort": { - "type": "integer" - }, - "RadiusTimeout": { - "type": "integer" - }, - "RadiusRetries": { - "type": "integer" - }, - "SharedSecret": { - "type": "string", - "sensitive": true - }, - "AuthenticationProtocol": {}, - "DisplayLabel": {}, - "UseSameUsername": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json deleted file mode 100644 index 022146d..0000000 --- a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.min.json +++ /dev/null @@ -1,663 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2011-12-05", - "endpointPrefix": "dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceAbbreviation": "DynamoDB", - "serviceFullName": "Amazon DynamoDB", - "signatureVersion": "v4", - "targetPrefix": "DynamoDB_20111205" - }, - "operations": { - "BatchGetItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "S2" - } - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Items": { - "shape": "Sk" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UnprocessedKeys": { - "shape": "S2" - } - } - } - }, - "BatchWriteItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UnprocessedItems": { - "shape": "So" - } - } - } - }, - "CreateTable": { - "input": { - "type": "structure", - "required": [ - "TableName", - "KeySchema", - "ProvisionedThroughput" - ], - "members": { - "TableName": {}, - "KeySchema": { - "shape": "Sy" - }, - "ProvisionedThroughput": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S15" - } - } - } - }, - "DeleteItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "Expected": { - "shape": "S1b" - }, - "ReturnValues": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "DeleteTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S15" - } - } - } - }, - "DescribeTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Table": { - "shape": "S15" - } - } - } - }, - "GetItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributesToGet": { - "shape": "Se" - }, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Item": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "ListTables": { - "input": { - "type": "structure", - "members": { - "ExclusiveStartTableName": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableNames": { - "type": "list", - "member": {} - }, - "LastEvaluatedTableName": {} - } - } - }, - "PutItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Item" - ], - "members": { - "TableName": {}, - "Item": { - "shape": "Ss" - }, - "Expected": { - "shape": "S1b" - }, - "ReturnValues": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "Query": { - "input": { - "type": "structure", - "required": [ - "TableName", - "HashKeyValue" - ], - "members": { - "TableName": {}, - "AttributesToGet": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "ConsistentRead": { - "type": "boolean" - }, - "Count": { - "type": "boolean" - }, - "HashKeyValue": { - "shape": "S7" - }, - "RangeKeyCondition": { - "shape": "S1u" - }, - "ScanIndexForward": { - "type": "boolean" - }, - "ExclusiveStartKey": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sk" - }, - "Count": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "Scan": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {}, - "AttributesToGet": { - "shape": "Se" - }, - "Limit": { - "type": "integer" - }, - "Count": { - "type": "boolean" - }, - "ScanFilter": { - "type": "map", - "key": {}, - "value": { - "shape": "S1u" - } - }, - "ExclusiveStartKey": { - "shape": "S6" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sk" - }, - "Count": { - "type": "integer" - }, - "ScannedCount": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UpdateItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key", - "AttributeUpdates" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributeUpdates": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S7" - }, - "Action": {} - } - } - }, - "Expected": { - "shape": "S1b" - }, - "ReturnValues": {} - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Sl" - }, - "ConsumedCapacityUnits": { - "type": "double" - } - } - } - }, - "UpdateTable": { - "input": { - "type": "structure", - "required": [ - "TableName", - "ProvisionedThroughput" - ], - "members": { - "TableName": {}, - "ProvisionedThroughput": { - "shape": "S12" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S15" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "Keys" - ], - "members": { - "Keys": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "AttributesToGet": { - "shape": "Se" - }, - "ConsistentRead": { - "type": "boolean" - } - } - } - }, - "S6": { - "type": "structure", - "required": [ - "HashKeyElement" - ], - "members": { - "HashKeyElement": { - "shape": "S7" - }, - "RangeKeyElement": { - "shape": "S7" - } - } - }, - "S7": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - } - } - }, - "Se": { - "type": "list", - "member": {} - }, - "Sk": { - "type": "list", - "member": { - "shape": "Sl" - } - }, - "Sl": { - "type": "map", - "key": {}, - "value": { - "shape": "S7" - } - }, - "So": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PutRequest": { - "type": "structure", - "required": [ - "Item" - ], - "members": { - "Item": { - "shape": "Ss" - } - } - }, - "DeleteRequest": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": { - "shape": "S6" - } - } - } - } - } - } - }, - "Ss": { - "type": "map", - "key": {}, - "value": { - "shape": "S7" - } - }, - "Sy": { - "type": "structure", - "required": [ - "HashKeyElement" - ], - "members": { - "HashKeyElement": { - "shape": "Sz" - }, - "RangeKeyElement": { - "shape": "Sz" - } - } - }, - "Sz": { - "type": "structure", - "required": [ - "AttributeName", - "AttributeType" - ], - "members": { - "AttributeName": {}, - "AttributeType": {} - } - }, - "S12": { - "type": "structure", - "required": [ - "ReadCapacityUnits", - "WriteCapacityUnits" - ], - "members": { - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "S15": { - "type": "structure", - "members": { - "TableName": {}, - "KeySchema": { - "shape": "Sy" - }, - "TableStatus": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "ProvisionedThroughput": { - "type": "structure", - "members": { - "LastIncreaseDateTime": { - "type": "timestamp" - }, - "LastDecreaseDateTime": { - "type": "timestamp" - }, - "NumberOfDecreasesToday": { - "type": "long" - }, - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "TableSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - } - } - }, - "S1b": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S7" - }, - "Exists": { - "type": "boolean" - } - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "ComparisonOperator" - ], - "members": { - "AttributeValueList": { - "type": "list", - "member": { - "shape": "S7" - } - }, - "ComparisonOperator": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json deleted file mode 100644 index d4075e1..0000000 --- a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.paginators.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "pagination": { - "BatchGetItem": { - "input_token": "RequestItems", - "output_token": "UnprocessedKeys" - }, - "ListTables": { - "input_token": "ExclusiveStartTableName", - "output_token": "LastEvaluatedTableName", - "limit_key": "Limit", - "result_key": "TableNames" - }, - "Query": { - "input_token": "ExclusiveStartKey", - "output_token": "LastEvaluatedKey", - "limit_key": "Limit", - "result_key": "Items" - }, - "Scan": { - "input_token": "ExclusiveStartKey", - "output_token": "LastEvaluatedKey", - "limit_key": "Limit", - "result_key": "Items" - } - } -} diff --git a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json b/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json deleted file mode 100644 index 43a55ca..0000000 --- a/node_modules/aws-sdk/apis/dynamodb-2011-12-05.waiters2.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 2, - "waiters": { - "TableExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "Table.TableStatus" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "retry" - } - ] - }, - "TableNotExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json deleted file mode 100644 index f12b3d8..0000000 --- a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.min.json +++ /dev/null @@ -1,1050 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-08-10", - "endpointPrefix": "dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceAbbreviation": "DynamoDB", - "serviceFullName": "Amazon DynamoDB", - "signatureVersion": "v4", - "targetPrefix": "DynamoDB_20120810" - }, - "operations": { - "BatchGetItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "S2" - }, - "ReturnConsumedCapacity": {} - } - }, - "output": { - "type": "structure", - "members": { - "Responses": { - "type": "map", - "key": {}, - "value": { - "shape": "Sr" - } - }, - "UnprocessedKeys": { - "shape": "S2" - }, - "ConsumedCapacity": { - "shape": "St" - } - } - } - }, - "BatchWriteItem": { - "input": { - "type": "structure", - "required": [ - "RequestItems" - ], - "members": { - "RequestItems": { - "shape": "S10" - }, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {} - } - }, - "output": { - "type": "structure", - "members": { - "UnprocessedItems": { - "shape": "S10" - }, - "ItemCollectionMetrics": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "shape": "S1a" - } - } - }, - "ConsumedCapacity": { - "shape": "St" - } - } - } - }, - "CreateTable": { - "input": { - "type": "structure", - "required": [ - "AttributeDefinitions", - "TableName", - "KeySchema", - "ProvisionedThroughput" - ], - "members": { - "AttributeDefinitions": { - "shape": "S1f" - }, - "TableName": {}, - "KeySchema": { - "shape": "S1j" - }, - "LocalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IndexName", - "KeySchema", - "Projection" - ], - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - } - } - } - }, - "GlobalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IndexName", - "KeySchema", - "Projection", - "ProvisionedThroughput" - ], - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "ProvisionedThroughput": { - "shape": "S1u" - } - } - } - }, - "ProvisionedThroughput": { - "shape": "S1u" - }, - "StreamSpecification": { - "shape": "S1w" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S20" - } - } - } - }, - "DeleteItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "Expected": { - "shape": "S2e" - }, - "ConditionalOperator": {}, - "ReturnValues": {}, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {}, - "ConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - }, - "ItemCollectionMetrics": { - "shape": "S1a" - } - } - } - }, - "DeleteTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S20" - } - } - } - }, - "DescribeLimits": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "AccountMaxReadCapacityUnits": { - "type": "long" - }, - "AccountMaxWriteCapacityUnits": { - "type": "long" - }, - "TableMaxReadCapacityUnits": { - "type": "long" - }, - "TableMaxWriteCapacityUnits": { - "type": "long" - } - } - } - }, - "DescribeTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Table": { - "shape": "S20" - } - } - } - }, - "GetItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributesToGet": { - "shape": "Sj" - }, - "ConsistentRead": { - "type": "boolean" - }, - "ReturnConsumedCapacity": {}, - "ProjectionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "members": { - "Item": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - } - } - } - }, - "ListTables": { - "input": { - "type": "structure", - "members": { - "ExclusiveStartTableName": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableNames": { - "type": "list", - "member": {} - }, - "LastEvaluatedTableName": {} - } - } - }, - "PutItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Item" - ], - "members": { - "TableName": {}, - "Item": { - "shape": "S14" - }, - "Expected": { - "shape": "S2e" - }, - "ReturnValues": {}, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {}, - "ConditionalOperator": {}, - "ConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - }, - "ItemCollectionMetrics": { - "shape": "S1a" - } - } - } - }, - "Query": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {}, - "IndexName": {}, - "Select": {}, - "AttributesToGet": { - "shape": "Sj" - }, - "Limit": { - "type": "integer" - }, - "ConsistentRead": { - "type": "boolean" - }, - "KeyConditions": { - "type": "map", - "key": {}, - "value": { - "shape": "S37" - } - }, - "QueryFilter": { - "shape": "S38" - }, - "ConditionalOperator": {}, - "ScanIndexForward": { - "type": "boolean" - }, - "ExclusiveStartKey": { - "shape": "S6" - }, - "ReturnConsumedCapacity": {}, - "ProjectionExpression": {}, - "FilterExpression": {}, - "KeyConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sr" - }, - "Count": { - "type": "integer" - }, - "ScannedCount": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacity": { - "shape": "Su" - } - } - } - }, - "Scan": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "TableName": {}, - "IndexName": {}, - "AttributesToGet": { - "shape": "Sj" - }, - "Limit": { - "type": "integer" - }, - "Select": {}, - "ScanFilter": { - "shape": "S38" - }, - "ConditionalOperator": {}, - "ExclusiveStartKey": { - "shape": "S6" - }, - "ReturnConsumedCapacity": {}, - "TotalSegments": { - "type": "integer" - }, - "Segment": { - "type": "integer" - }, - "ProjectionExpression": {}, - "FilterExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - }, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "Items": { - "shape": "Sr" - }, - "Count": { - "type": "integer" - }, - "ScannedCount": { - "type": "integer" - }, - "LastEvaluatedKey": { - "shape": "S6" - }, - "ConsumedCapacity": { - "shape": "Su" - } - } - } - }, - "UpdateItem": { - "input": { - "type": "structure", - "required": [ - "TableName", - "Key" - ], - "members": { - "TableName": {}, - "Key": { - "shape": "S6" - }, - "AttributeUpdates": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S8" - }, - "Action": {} - } - } - }, - "Expected": { - "shape": "S2e" - }, - "ConditionalOperator": {}, - "ReturnValues": {}, - "ReturnConsumedCapacity": {}, - "ReturnItemCollectionMetrics": {}, - "UpdateExpression": {}, - "ConditionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - }, - "ExpressionAttributeValues": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": { - "Attributes": { - "shape": "Ss" - }, - "ConsumedCapacity": { - "shape": "Su" - }, - "ItemCollectionMetrics": { - "shape": "S1a" - } - } - } - }, - "UpdateTable": { - "input": { - "type": "structure", - "required": [ - "TableName" - ], - "members": { - "AttributeDefinitions": { - "shape": "S1f" - }, - "TableName": {}, - "ProvisionedThroughput": { - "shape": "S1u" - }, - "GlobalSecondaryIndexUpdates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Update": { - "type": "structure", - "required": [ - "IndexName", - "ProvisionedThroughput" - ], - "members": { - "IndexName": {}, - "ProvisionedThroughput": { - "shape": "S1u" - } - } - }, - "Create": { - "type": "structure", - "required": [ - "IndexName", - "KeySchema", - "Projection", - "ProvisionedThroughput" - ], - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "ProvisionedThroughput": { - "shape": "S1u" - } - } - }, - "Delete": { - "type": "structure", - "required": [ - "IndexName" - ], - "members": { - "IndexName": {} - } - } - } - } - }, - "StreamSpecification": { - "shape": "S1w" - } - } - }, - "output": { - "type": "structure", - "members": { - "TableDescription": { - "shape": "S20" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "Keys" - ], - "members": { - "Keys": { - "type": "list", - "member": { - "shape": "S6" - } - }, - "AttributesToGet": { - "shape": "Sj" - }, - "ConsistentRead": { - "type": "boolean" - }, - "ProjectionExpression": {}, - "ExpressionAttributeNames": { - "shape": "Sm" - } - } - } - }, - "S6": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "S8": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - }, - "M": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "L": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "NULL": { - "type": "boolean" - }, - "BOOL": { - "type": "boolean" - } - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "map", - "key": {}, - "value": {} - }, - "Sr": { - "type": "list", - "member": { - "shape": "Ss" - } - }, - "Ss": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "St": { - "type": "list", - "member": { - "shape": "Su" - } - }, - "Su": { - "type": "structure", - "members": { - "TableName": {}, - "CapacityUnits": { - "type": "double" - }, - "Table": { - "shape": "Sw" - }, - "LocalSecondaryIndexes": { - "shape": "Sx" - }, - "GlobalSecondaryIndexes": { - "shape": "Sx" - } - } - }, - "Sw": { - "type": "structure", - "members": { - "CapacityUnits": { - "type": "double" - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": { - "shape": "Sw" - } - }, - "S10": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PutRequest": { - "type": "structure", - "required": [ - "Item" - ], - "members": { - "Item": { - "shape": "S14" - } - } - }, - "DeleteRequest": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": { - "shape": "S6" - } - } - } - } - } - } - }, - "S14": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "S1a": { - "type": "structure", - "members": { - "ItemCollectionKey": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "SizeEstimateRangeGB": { - "type": "list", - "member": { - "type": "double" - } - } - } - }, - "S1f": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "AttributeType" - ], - "members": { - "AttributeName": {}, - "AttributeType": {} - } - } - }, - "S1j": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "KeyType" - ], - "members": { - "AttributeName": {}, - "KeyType": {} - } - } - }, - "S1o": { - "type": "structure", - "members": { - "ProjectionType": {}, - "NonKeyAttributes": { - "type": "list", - "member": {} - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "ReadCapacityUnits", - "WriteCapacityUnits" - ], - "members": { - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "S1w": { - "type": "structure", - "members": { - "StreamEnabled": { - "type": "boolean" - }, - "StreamViewType": {} - } - }, - "S20": { - "type": "structure", - "members": { - "AttributeDefinitions": { - "shape": "S1f" - }, - "TableName": {}, - "KeySchema": { - "shape": "S1j" - }, - "TableStatus": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "ProvisionedThroughput": { - "shape": "S23" - }, - "TableSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - }, - "TableArn": {}, - "LocalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "IndexSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - }, - "IndexArn": {} - } - } - }, - "GlobalSecondaryIndexes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IndexName": {}, - "KeySchema": { - "shape": "S1j" - }, - "Projection": { - "shape": "S1o" - }, - "IndexStatus": {}, - "Backfilling": { - "type": "boolean" - }, - "ProvisionedThroughput": { - "shape": "S23" - }, - "IndexSizeBytes": { - "type": "long" - }, - "ItemCount": { - "type": "long" - }, - "IndexArn": {} - } - } - }, - "StreamSpecification": { - "shape": "S1w" - }, - "LatestStreamLabel": {}, - "LatestStreamArn": {} - } - }, - "S23": { - "type": "structure", - "members": { - "LastIncreaseDateTime": { - "type": "timestamp" - }, - "LastDecreaseDateTime": { - "type": "timestamp" - }, - "NumberOfDecreasesToday": { - "type": "long" - }, - "ReadCapacityUnits": { - "type": "long" - }, - "WriteCapacityUnits": { - "type": "long" - } - } - }, - "S2e": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "members": { - "Value": { - "shape": "S8" - }, - "Exists": { - "type": "boolean" - }, - "ComparisonOperator": {}, - "AttributeValueList": { - "shape": "S2i" - } - } - } - }, - "S2i": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "S2m": { - "type": "map", - "key": {}, - "value": { - "shape": "S8" - } - }, - "S37": { - "type": "structure", - "required": [ - "ComparisonOperator" - ], - "members": { - "AttributeValueList": { - "shape": "S2i" - }, - "ComparisonOperator": {} - } - }, - "S38": { - "type": "map", - "key": {}, - "value": { - "shape": "S37" - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json deleted file mode 100644 index d4075e1..0000000 --- a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.paginators.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "pagination": { - "BatchGetItem": { - "input_token": "RequestItems", - "output_token": "UnprocessedKeys" - }, - "ListTables": { - "input_token": "ExclusiveStartTableName", - "output_token": "LastEvaluatedTableName", - "limit_key": "Limit", - "result_key": "TableNames" - }, - "Query": { - "input_token": "ExclusiveStartKey", - "output_token": "LastEvaluatedKey", - "limit_key": "Limit", - "result_key": "Items" - }, - "Scan": { - "input_token": "ExclusiveStartKey", - "output_token": "LastEvaluatedKey", - "limit_key": "Limit", - "result_key": "Items" - } - } -} diff --git a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json b/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json deleted file mode 100644 index 43a55ca..0000000 --- a/node_modules/aws-sdk/apis/dynamodb-2012-08-10.waiters2.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "version": 2, - "waiters": { - "TableExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "Table.TableStatus" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "retry" - } - ] - }, - "TableNotExists": { - "delay": 20, - "operation": "DescribeTable", - "maxAttempts": 25, - "acceptors": [ - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json deleted file mode 100644 index f6a8719..0000000 --- a/node_modules/aws-sdk/apis/ec2-2016-09-15.examples.json +++ /dev/null @@ -1,3740 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AllocateAddress": [ - { - "input": { - "Domain": "vpc" - }, - "output": { - "AllocationId": "eipalloc-64d5890a", - "Domain": "vpc", - "PublicIp": "203.0.113.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example allocates an Elastic IP address to use with an instance in a VPC.", - "id": "ec2-allocate-address-1", - "title": "To allocate an Elastic IP address for EC2-VPC" - }, - { - "output": { - "Domain": "standard", - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example allocates an Elastic IP address to use with an instance in EC2-Classic.", - "id": "ec2-allocate-address-2", - "title": "To allocate an Elastic IP address for EC2-Classic" - } - ], - "AssignPrivateIpAddresses": [ - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3", - "PrivateIpAddresses": [ - "10.0.0.82" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example assigns the specified secondary private IP address to the specified network interface.", - "id": "ec2-assign-private-ip-addresses-1", - "title": "To assign a specific secondary private IP address to an interface" - }, - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3", - "SecondaryPrivateIpAddressCount": 2 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example assigns two secondary private IP addresses to the specified network interface. Amazon EC2 automatically assigns these IP addresses from the available IP addresses in the CIDR block range of the subnet the network interface is associated with.", - "id": "ec2-assign-private-ip-addresses-2", - "title": "To assign secondary private IP addresses that Amazon EC2 selects to an interface" - } - ], - "AssociateAddress": [ - { - "input": { - "AllocationId": "eipalloc-64d5890a", - "InstanceId": "i-0b263919b6498b123" - }, - "output": { - "AssociationId": "eipassoc-2bebb745" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified Elastic IP address with the specified instance in a VPC.", - "id": "ec2-associate-address-1", - "title": "To associate an Elastic IP address in EC2-VPC" - }, - { - "input": { - "AllocationId": "eipalloc-64d5890a", - "NetworkInterfaceId": "eni-1a2b3c4d" - }, - "output": { - "AssociationId": "eipassoc-2bebb745" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified Elastic IP address with the specified network interface.", - "id": "ec2-associate-address-2", - "title": "To associate an Elastic IP address with a network interface" - }, - { - "input": { - "InstanceId": "i-07ffe74c7330ebf53", - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates an Elastic IP address with an instance in EC2-Classic.", - "id": "ec2-associate-address-3", - "title": "To associate an Elastic IP address in EC2-Classic" - } - ], - "AssociateDhcpOptions": [ - { - "input": { - "DhcpOptionsId": "dopt-d9070ebb", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified DHCP options set with the specified VPC.", - "id": "ec2-associate-dhcp-options-1", - "title": "To associate a DHCP options set with a VPC" - }, - { - "input": { - "DhcpOptionsId": "default", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the default DHCP options set with the specified VPC.", - "id": "ec2-associate-dhcp-options-2", - "title": "To associate the default DHCP options set with a VPC" - } - ], - "AssociateRouteTable": [ - { - "input": { - "RouteTableId": "rtb-22574640", - "SubnetId": "subnet-9d4a7b6" - }, - "output": { - "AssociationId": "rtbassoc-781d0d1a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified route table with the specified subnet.", - "id": "ec2-associate-route-table-1", - "title": "To associate a route table with a subnet" - } - ], - "AttachInternetGateway": [ - { - "input": { - "InternetGatewayId": "igw-c0a643a9", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified Internet gateway to the specified VPC.", - "id": "ec2-attach-internet-gateway-1", - "title": "To attach an Internet gateway to a VPC" - } - ], - "AttachNetworkInterface": [ - { - "input": { - "DeviceIndex": 1, - "InstanceId": "i-1234567890abcdef0", - "NetworkInterfaceId": "eni-e5aa89a3" - }, - "output": { - "AttachmentId": "eni-attach-66c4350a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches the specified network interface to the specified instance.", - "id": "ec2-attach-network-interface-1", - "title": "To attach a network interface to an instance" - } - ], - "AttachVolume": [ - { - "input": { - "Device": "/dev/sdf", - "InstanceId": "i-01474ef662b89480", - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - "AttachTime": "2016-08-29T18:52:32.724Z", - "Device": "/dev/sdf", - "InstanceId": "i-01474ef662b89480", - "State": "attaching", - "VolumeId": "vol-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example attaches a volume (``vol-1234567890abcdef0``) to an instance (``i-01474ef662b89480``) as ``/dev/sdf``.", - "id": "to-attach-a-volume-to-an-instance-1472499213109", - "title": "To attach a volume to an instance" - } - ], - "CancelSpotFleetRequests": [ - { - "input": { - "SpotFleetRequestIds": [ - "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - ], - "TerminateInstances": true - }, - "output": { - "SuccessfulFleetRequests": [ - { - "CurrentSpotFleetRequestState": "cancelled_running", - "PreviousSpotFleetRequestState": "active", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels the specified Spot fleet request and terminates its associated Spot Instances.", - "id": "ec2-cancel-spot-fleet-requests-1", - "title": "To cancel a Spot fleet request" - }, - { - "input": { - "SpotFleetRequestIds": [ - "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - ], - "TerminateInstances": false - }, - "output": { - "SuccessfulFleetRequests": [ - { - "CurrentSpotFleetRequestState": "cancelled_terminating", - "PreviousSpotFleetRequestState": "active", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels the specified Spot fleet request without terminating its associated Spot Instances.", - "id": "ec2-cancel-spot-fleet-requests-2", - "title": "To cancel a Spot fleet request without terminating its Spot Instances" - } - ], - "CancelSpotInstanceRequests": [ - { - "input": { - "SpotInstanceRequestIds": [ - "sir-08b93456" - ] - }, - "output": { - "CancelledSpotInstanceRequests": [ - { - "SpotInstanceRequestId": "sir-08b93456", - "State": "cancelled" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example cancels a Spot Instance request.", - "id": "ec2-cancel-spot-instance-requests-1", - "title": "To cancel Spot Instance requests" - } - ], - "ConfirmProductInstance": [ - { - "input": { - "InstanceId": "i-1234567890abcdef0", - "ProductCode": "774F4FF8" - }, - "output": { - "OwnerId": "123456789012" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example determines whether the specified product code is associated with the specified instance.", - "id": "to-confirm-the-product-instance-1472712108494", - "title": "To confirm the product instance" - } - ], - "CopySnapshot": [ - { - "input": { - "Description": "This is my copied snapshot.", - "DestinationRegion": "us-east-1", - "SourceRegion": "us-west-2", - "SourceSnapshotId": "snap-066877671789bd71b" - }, - "output": { - "SnapshotId": "snap-066877671789bd71b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example copies a snapshot with the snapshot ID of ``snap-066877671789bd71b`` from the ``us-west-2`` region to the ``us-east-1`` region and adds a short description to identify the snapshot.", - "id": "to-copy-a-snapshot-1472502259774", - "title": "To copy a snapshot" - } - ], - "CreateCustomerGateway": [ - { - "input": { - "BgpAsn": 65534, - "PublicIp": "12.1.2.3", - "Type": "ipsec.1" - }, - "output": { - "CustomerGateway": { - "BgpAsn": "65534", - "CustomerGatewayId": "cgw-0e11f167", - "IpAddress": "12.1.2.3", - "State": "available", - "Type": "ipsec.1" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a customer gateway with the specified IP address for its outside interface.", - "id": "ec2-create-customer-gateway-1", - "title": "To create a customer gateway" - } - ], - "CreateDhcpOptions": [ - { - "input": { - "DhcpConfigurations": [ - { - "Key": "domain-name-servers", - "Values": [ - "10.2.5.1", - "10.2.5.2" - ] - } - ] - }, - "output": { - "DhcpOptions": { - "DhcpConfigurations": [ - { - "Key": "domain-name-servers", - "Values": [ - { - "Value": "10.2.5.2" - }, - { - "Value": "10.2.5.1" - } - ] - } - ], - "DhcpOptionsId": "dopt-d9070ebb" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a DHCP options set.", - "id": "ec2-create-dhcp-options-1", - "title": "To create a DHCP options set" - } - ], - "CreateInternetGateway": [ - { - "output": { - "InternetGateway": { - "Attachments": [ - - ], - "InternetGatewayId": "igw-c0a643a9", - "Tags": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Internet gateway.", - "id": "ec2-create-internet-gateway-1", - "title": "To create an Internet gateway" - } - ], - "CreateKeyPair": [ - { - "input": { - "KeyName": "my-key-pair" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a key pair named my-key-pair.", - "id": "ec2-create-key-pair-1", - "title": "To create a key pair" - } - ], - "CreateNatGateway": [ - { - "input": { - "AllocationId": "eipalloc-37fc1a52", - "SubnetId": "subnet-1a2b3c4d" - }, - "output": { - "NatGateway": { - "CreateTime": "2015-12-17T12:45:26.732Z", - "NatGatewayAddresses": [ - { - "AllocationId": "eipalloc-37fc1a52" - } - ], - "NatGatewayId": "nat-08d48af2a8e83edfd", - "State": "pending", - "SubnetId": "subnet-1a2b3c4d", - "VpcId": "vpc-1122aabb" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a NAT gateway in subnet subnet-1a2b3c4d and associates an Elastic IP address with the allocation ID eipalloc-37fc1a52 with the NAT gateway.", - "id": "ec2-create-nat-gateway-1", - "title": "To create a NAT gateway" - } - ], - "CreateNetworkAcl": [ - { - "input": { - "VpcId": "vpc-a01106c2" - }, - "output": { - "NetworkAcl": { - "Associations": [ - - ], - "Entries": [ - { - "CidrBlock": "0.0.0.0/0", - "Egress": true, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - }, - { - "CidrBlock": "0.0.0.0/0", - "Egress": false, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - } - ], - "IsDefault": false, - "NetworkAclId": "acl-5fb85d36", - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a network ACL for the specified VPC.", - "id": "ec2-create-network-acl-1", - "title": "To create a network ACL" - } - ], - "CreateNetworkAclEntry": [ - { - "input": { - "CidrBlock": "0.0.0.0/0", - "Egress": false, - "NetworkAclId": "acl-5fb85d36", - "PortRange": { - "From": 53, - "To": 53 - }, - "Protocol": "udp", - "RuleAction": "allow", - "RuleNumber": 100 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an entry for the specified network ACL. The rule allows ingress traffic from anywhere (0.0.0.0/0) on UDP port 53 (DNS) into any associated subnet.", - "id": "ec2-create-network-acl-entry-1", - "title": "To create a network ACL entry" - } - ], - "CreateNetworkInterface": [ - { - "input": { - "Description": "my network interface", - "Groups": [ - "sg-903004f8" - ], - "PrivateIpAddress": "10.0.2.17", - "SubnetId": "subnet-9d4a7b6c" - }, - "output": { - "NetworkInterface": { - "AvailabilityZone": "us-east-1d", - "Description": "my network interface", - "Groups": [ - { - "GroupId": "sg-903004f8", - "GroupName": "default" - } - ], - "MacAddress": "02:1a:80:41:52:9c", - "NetworkInterfaceId": "eni-e5aa89a3", - "OwnerId": "123456789012", - "PrivateIpAddress": "10.0.2.17", - "PrivateIpAddresses": [ - { - "Primary": true, - "PrivateIpAddress": "10.0.2.17" - } - ], - "RequesterManaged": false, - "SourceDestCheck": true, - "Status": "pending", - "SubnetId": "subnet-9d4a7b6c", - "TagSet": [ - - ], - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a network interface for the specified subnet.", - "id": "ec2-create-network-interface-1", - "title": "To create a network interface" - } - ], - "CreatePlacementGroup": [ - { - "input": { - "GroupName": "my-cluster", - "Strategy": "cluster" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a placement group with the specified name.", - "id": "to-create-a-placement-group-1472712245768", - "title": "To create a placement group" - } - ], - "CreateRoute": [ - { - "input": { - "DestinationCidrBlock": "0.0.0.0/0", - "GatewayId": "igw-c0a643a9", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a route for the specified route table. The route matches all traffic (0.0.0.0/0) and routes it to the specified Internet gateway.", - "id": "ec2-create-route-1", - "title": "To create a route" - } - ], - "CreateRouteTable": [ - { - "input": { - "VpcId": "vpc-a01106c2" - }, - "output": { - "RouteTable": { - "Associations": [ - - ], - "PropagatingVgws": [ - - ], - "RouteTableId": "rtb-22574640", - "Routes": [ - { - "DestinationCidrBlock": "10.0.0.0/16", - "GatewayId": "local", - "State": "active" - } - ], - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a route table for the specified VPC.", - "id": "ec2-create-route-table-1", - "title": "To create a route table" - } - ], - "CreateSnapshot": [ - { - "input": { - "Description": "This is my root volume snapshot.", - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - "Description": "This is my root volume snapshot.", - "OwnerId": "012345678910", - "SnapshotId": "snap-066877671789bd71b", - "StartTime": "2014-02-28T21:06:01.000Z", - "State": "pending", - "Tags": [ - - ], - "VolumeId": "vol-1234567890abcdef0", - "VolumeSize": 8 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a snapshot of the volume with a volume ID of ``vol-1234567890abcdef0`` and a short description to identify the snapshot.", - "id": "to-create-a-snapshot-1472502529790", - "title": "To create a snapshot" - } - ], - "CreateSpotDatafeedSubscription": [ - { - "input": { - "Bucket": "my-s3-bucket", - "Prefix": "spotdata" - }, - "output": { - "SpotDatafeedSubscription": { - "Bucket": "my-s3-bucket", - "OwnerId": "123456789012", - "Prefix": "spotdata", - "State": "Active" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot Instance data feed for your AWS account.", - "id": "ec2-create-spot-datafeed-subscription-1", - "title": "To create a Spot Instance datafeed" - } - ], - "CreateSubnet": [ - { - "input": { - "CidrBlock": "10.0.1.0/24", - "VpcId": "vpc-a01106c2" - }, - "output": { - "Subnet": { - "AvailabilityZone": "us-west-2c", - "AvailableIpAddressCount": 251, - "CidrBlock": "10.0.1.0/24", - "State": "pending", - "SubnetId": "subnet-9d4a7b6c", - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a subnet in the specified VPC with the specified CIDR block. We recommend that you let us select an Availability Zone for you.", - "id": "ec2-create-subnet-1", - "title": "To create a subnet" - } - ], - "CreateTags": [ - { - "input": { - "Resources": [ - "ami-78a54011" - ], - "Tags": [ - { - "Key": "Stack", - "Value": "production" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the tag Stack=production to the specified image, or overwrites an existing tag for the AMI where the tag key is Stack.", - "id": "ec2-create-tags-1", - "title": "To add a tag to a resource" - } - ], - "CreateVolume": [ - { - "input": { - "AvailabilityZone": "us-east-1a", - "Size": 80, - "VolumeType": "gp2" - }, - "output": { - "AvailabilityZone": "us-east-1a", - "CreateTime": "2016-08-29T18:52:32.724Z", - "Encrypted": false, - "Iops": 240, - "Size": 80, - "SnapshotId": "", - "State": "creating", - "VolumeId": "vol-6b60b7c7", - "VolumeType": "gp2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an 80 GiB General Purpose (SSD) volume in the Availability Zone ``us-east-1a``.", - "id": "to-create-a-new-volume-1472496724296", - "title": "To create a new volume" - }, - { - "input": { - "AvailabilityZone": "us-east-1a", - "Iops": 1000, - "SnapshotId": "snap-066877671789bd71b", - "VolumeType": "io1" - }, - "output": { - "Attachments": [ - - ], - "AvailabilityZone": "us-east-1a", - "CreateTime": "2016-08-29T18:52:32.724Z", - "Iops": 1000, - "Size": 500, - "SnapshotId": "snap-066877671789bd71b", - "State": "creating", - "Tags": [ - - ], - "VolumeId": "vol-1234567890abcdef0", - "VolumeType": "io1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a new Provisioned IOPS (SSD) volume with 1000 provisioned IOPS from a snapshot in the Availability Zone ``us-east-1a``.", - "id": "to-create-a-new-provisioned-iops-ssd-volume-from-a-snapshot-1472498975176", - "title": "To create a new Provisioned IOPS (SSD) volume from a snapshot" - } - ], - "CreateVpc": [ - { - "input": { - "CidrBlock": "10.0.0.0/16" - }, - "output": { - "Vpc": { - "CidrBlock": "10.0.0.0/16", - "DhcpOptionsId": "dopt-7a8b9c2d", - "InstanceTenancy": "default", - "State": "pending", - "VpcId": "vpc-a01106c2" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a VPC with the specified CIDR block.", - "id": "ec2-create-vpc-1", - "title": "To create a VPC" - } - ], - "DeleteCustomerGateway": [ - { - "input": { - "CustomerGatewayId": "cgw-0e11f167" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified customer gateway.", - "id": "ec2-delete-customer-gateway-1", - "title": "To delete a customer gateway" - } - ], - "DeleteDhcpOptions": [ - { - "input": { - "DhcpOptionsId": "dopt-d9070ebb" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified DHCP options set.", - "id": "ec2-delete-dhcp-options-1", - "title": "To delete a DHCP options set" - } - ], - "DeleteInternetGateway": [ - { - "input": { - "InternetGatewayId": "igw-c0a643a9" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified Internet gateway.", - "id": "ec2-delete-internet-gateway-1", - "title": "To delete an Internet gateway" - } - ], - "DeleteKeyPair": [ - { - "input": { - "KeyName": "my-key-pair" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified key pair.", - "id": "ec2-delete-key-pair-1", - "title": "To delete a key pair" - } - ], - "DeleteNatGateway": [ - { - "input": { - "NatGatewayId": "nat-04ae55e711cec5680" - }, - "output": { - "NatGatewayId": "nat-04ae55e711cec5680" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified NAT gateway.", - "id": "ec2-delete-nat-gateway-1", - "title": "To delete a NAT gateway" - } - ], - "DeleteNetworkAcl": [ - { - "input": { - "NetworkAclId": "acl-5fb85d36" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified network ACL.", - "id": "ec2-delete-network-acl-1", - "title": "To delete a network ACL" - } - ], - "DeleteNetworkAclEntry": [ - { - "input": { - "Egress": true, - "NetworkAclId": "acl-5fb85d36", - "RuleNumber": 100 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes ingress rule number 100 from the specified network ACL.", - "id": "ec2-delete-network-acl-entry-1", - "title": "To delete a network ACL entry" - } - ], - "DeleteNetworkInterface": [ - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified network interface.", - "id": "ec2-delete-network-interface-1", - "title": "To delete a network interface" - } - ], - "DeletePlacementGroup": [ - { - "input": { - "GroupName": "my-cluster" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified placement group.\n", - "id": "to-delete-a-placement-group-1472712349959", - "title": "To delete a placement group" - } - ], - "DeleteRoute": [ - { - "input": { - "DestinationCidrBlock": "0.0.0.0/0", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified route from the specified route table.", - "id": "ec2-delete-route-1", - "title": "To delete a route" - } - ], - "DeleteRouteTable": [ - { - "input": { - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified route table.", - "id": "ec2-delete-route-table-1", - "title": "To delete a route table" - } - ], - "DeleteSnapshot": [ - { - "input": { - "SnapshotId": "snap-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes a snapshot with the snapshot ID of ``snap-1234567890abcdef0``. If the command succeeds, no output is returned.", - "id": "to-delete-a-snapshot-1472503042567", - "title": "To delete a snapshot" - } - ], - "DeleteSpotDatafeedSubscription": [ - { - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes a Spot data feed subscription for the account.", - "id": "ec2-delete-spot-datafeed-subscription-1", - "title": "To cancel a Spot Instance data feed subscription" - } - ], - "DeleteSubnet": [ - { - "input": { - "SubnetId": "subnet-9d4a7b6c" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified subnet.", - "id": "ec2-delete-subnet-1", - "title": "To delete a subnet" - } - ], - "DeleteTags": [ - { - "input": { - "Resources": [ - "ami-78a54011" - ], - "Tags": [ - { - "Key": "Stack", - "Value": "test" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the tag Stack=test from the specified image.", - "id": "ec2-delete-tags-1", - "title": "To delete a tag from a resource" - } - ], - "DeleteVolume": [ - { - "input": { - "VolumeId": "vol-049df61146c4d7901" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes an available volume with the volume ID of ``vol-049df61146c4d7901``. If the command succeeds, no output is returned.", - "id": "to-delete-a-volume-1472503111160", - "title": "To delete a volume" - } - ], - "DeleteVpc": [ - { - "input": { - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified VPC.", - "id": "ec2-delete-vpc-1", - "title": "To delete a VPC" - } - ], - "DescribeAccountAttributes": [ - { - "input": { - "AttributeNames": [ - "supported-platforms" - ] - }, - "output": { - "AccountAttributes": [ - { - "AttributeName": "supported-platforms", - "AttributeValues": [ - { - "AttributeValue": "EC2" - }, - { - "AttributeValue": "VPC" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the supported-platforms attribute for your AWS account.", - "id": "ec2-describe-account-attributes-1", - "title": "To describe a single attribute for your AWS account" - }, - { - "output": { - "AccountAttributes": [ - { - "AttributeName": "supported-platforms", - "AttributeValues": [ - { - "AttributeValue": "EC2" - }, - { - "AttributeValue": "VPC" - } - ] - }, - { - "AttributeName": "vpc-max-security-groups-per-interface", - "AttributeValues": [ - { - "AttributeValue": "5" - } - ] - }, - { - "AttributeName": "max-elastic-ips", - "AttributeValues": [ - { - "AttributeValue": "5" - } - ] - }, - { - "AttributeName": "max-instances", - "AttributeValues": [ - { - "AttributeValue": "20" - } - ] - }, - { - "AttributeName": "vpc-max-elastic-ips", - "AttributeValues": [ - { - "AttributeValue": "5" - } - ] - }, - { - "AttributeName": "default-vpc", - "AttributeValues": [ - { - "AttributeValue": "none" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes for your AWS account.", - "id": "ec2-describe-account-attributes-2", - "title": "To describe all attributes for your AWS account" - } - ], - "DescribeAddresses": [ - { - "output": { - "Addresses": [ - { - "Domain": "standard", - "InstanceId": "i-1234567890abcdef0", - "PublicIp": "198.51.100.0" - }, - { - "AllocationId": "eipalloc-12345678", - "AssociationId": "eipassoc-12345678", - "Domain": "vpc", - "InstanceId": "i-1234567890abcdef0", - "NetworkInterfaceId": "eni-12345678", - "NetworkInterfaceOwnerId": "123456789012", - "PrivateIpAddress": "10.0.1.241", - "PublicIp": "203.0.113.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes your Elastic IP addresses.", - "id": "ec2-describe-addresses-1", - "title": "To describe your Elastic IP addresses" - }, - { - "input": { - "Filters": [ - { - "Name": "domain", - "Values": [ - "vpc" - ] - } - ] - }, - "output": { - "Addresses": [ - { - "AllocationId": "eipalloc-12345678", - "AssociationId": "eipassoc-12345678", - "Domain": "vpc", - "InstanceId": "i-1234567890abcdef0", - "NetworkInterfaceId": "eni-12345678", - "NetworkInterfaceOwnerId": "123456789012", - "PrivateIpAddress": "10.0.1.241", - "PublicIp": "203.0.113.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes your Elastic IP addresses for use with instances in a VPC.", - "id": "ec2-describe-addresses-2", - "title": "To describe your Elastic IP addresses for EC2-VPC" - }, - { - "input": { - "Filters": [ - { - "Name": "domain", - "Values": [ - "standard" - ] - } - ] - }, - "output": { - "Addresses": [ - { - "Domain": "standard", - "InstanceId": "i-1234567890abcdef0", - "PublicIp": "198.51.100.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes your Elastic IP addresses for use with instances in EC2-Classic.", - "id": "ec2-describe-addresses-3", - "title": "To describe your Elastic IP addresses for EC2-Classic" - } - ], - "DescribeAvailabilityZones": [ - { - "output": { - "AvailabilityZones": [ - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1b" - }, - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1c" - }, - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1d" - }, - { - "Messages": [ - - ], - "RegionName": "us-east-1", - "State": "available", - "ZoneName": "us-east-1e" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Availability Zones that are available to you. The response includes Availability Zones only for the current region.", - "id": "ec2-describe-availability-zones-1", - "title": "To describe your Availability Zones" - } - ], - "DescribeCustomerGateways": [ - { - "input": { - "CustomerGatewayIds": [ - "cgw-0e11f167" - ] - }, - "output": { - "CustomerGateways": [ - { - "BgpAsn": "65534", - "CustomerGatewayId": "cgw-0e11f167", - "IpAddress": "12.1.2.3", - "State": "available", - "Type": "ipsec.1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified customer gateway.", - "id": "ec2-describe-customer-gateways-1", - "title": "To describe a customer gateway" - } - ], - "DescribeDhcpOptions": [ - { - "input": { - "DhcpOptionsIds": [ - "dopt-d9070ebb" - ] - }, - "output": { - "DhcpOptions": [ - { - "DhcpConfigurations": [ - { - "Key": "domain-name-servers", - "Values": [ - { - "Value": "10.2.5.2" - }, - { - "Value": "10.2.5.1" - } - ] - } - ], - "DhcpOptionsId": "dopt-d9070ebb" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified DHCP options set.", - "id": "ec2-describe-dhcp-options-1", - "title": "To describe a DHCP options set" - } - ], - "DescribeInstanceAttribute": [ - { - "input": { - "Attribute": "instanceType", - "InstanceId": "i-1234567890abcdef0" - }, - "output": { - "InstanceId": "i-1234567890abcdef0", - "InstanceType": { - "Value": "t1.micro" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the instance type of the specified instance.\n", - "id": "to-describe-the-instance-type-1472712432132", - "title": "To describe the instance type" - }, - { - "input": { - "Attribute": "disableApiTermination", - "InstanceId": "i-1234567890abcdef0" - }, - "output": { - "DisableApiTermination": { - "Value": "false" - }, - "InstanceId": "i-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``disableApiTermination`` attribute of the specified instance.\n", - "id": "to-describe-the-disableapitermination-attribute-1472712533466", - "title": "To describe the disableApiTermination attribute" - }, - { - "input": { - "Attribute": "blockDeviceMapping", - "InstanceId": "i-1234567890abcdef0" - }, - "output": { - "BlockDeviceMappings": [ - { - "DeviceName": "/dev/sda1", - "Ebs": { - "AttachTime": "2013-05-17T22:42:34.000Z", - "DeleteOnTermination": true, - "Status": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - }, - { - "DeviceName": "/dev/sdf", - "Ebs": { - "AttachTime": "2013-09-10T23:07:00.000Z", - "DeleteOnTermination": false, - "Status": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - } - ], - "InstanceId": "i-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``blockDeviceMapping`` attribute of the specified instance.\n", - "id": "to-describe-the-block-device-mapping-for-an-instance-1472712645423", - "title": "To describe the block device mapping for an instance" - } - ], - "DescribeInternetGateways": [ - { - "input": { - "Filters": [ - { - "Name": "attachment.vpc-id", - "Values": [ - "vpc-a01106c2" - ] - } - ] - }, - "output": { - "InternetGateways": [ - { - "Attachments": [ - { - "State": "available", - "VpcId": "vpc-a01106c2" - } - ], - "InternetGatewayId": "igw-c0a643a9", - "Tags": [ - - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Internet gateway for the specified VPC.", - "id": "ec2-describe-internet-gateways-1", - "title": "To describe the Internet gateway for a VPC" - } - ], - "DescribeKeyPairs": [ - { - "input": { - "KeyNames": [ - "my-key-pair" - ] - }, - "output": { - "KeyPairs": [ - { - "KeyFingerprint": "1f:51:ae:28:bf:89:e9:d8:1f:25:5d:37:2d:7d:b8:ca:9f:f5:f1:6f", - "KeyName": "my-key-pair" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example displays the fingerprint for the specified key.", - "id": "ec2-describe-key-pairs-1", - "title": "To display a key pair" - } - ], - "DescribeMovingAddresses": [ - { - "output": { - "MovingAddressStatuses": [ - { - "MoveStatus": "MovingToVpc", - "PublicIp": "198.51.100.0" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all of your moving Elastic IP addresses.", - "id": "ec2-describe-moving-addresses-1", - "title": "To describe your moving addresses" - } - ], - "DescribeNatGateways": [ - { - "input": { - "Filter": [ - { - "Name": "vpc-id", - "Values": [ - "vpc-1a2b3c4d" - ] - } - ] - }, - "output": { - "NatGateways": [ - { - "CreateTime": "2015-12-01T12:26:55.983Z", - "NatGatewayAddresses": [ - { - "AllocationId": "eipalloc-89c620ec", - "NetworkInterfaceId": "eni-9dec76cd", - "PrivateIp": "10.0.0.149", - "PublicIp": "198.11.222.333" - } - ], - "NatGatewayId": "nat-05dba92075d71c408", - "State": "available", - "SubnetId": "subnet-847e4dc2", - "VpcId": "vpc-1a2b3c4d" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the NAT gateway for the specified VPC.", - "id": "ec2-describe-nat-gateways-1", - "title": "To describe a NAT gateway" - } - ], - "DescribeNetworkAcls": [ - { - "input": { - "NetworkAclIds": [ - "acl-5fb85d36" - ] - }, - "output": { - "NetworkAcls": [ - { - "Associations": [ - { - "NetworkAclAssociationId": "aclassoc-66ea5f0b", - "NetworkAclId": "acl-9aeb5ef7", - "SubnetId": "subnet-65ea5f08" - } - ], - "Entries": [ - { - "CidrBlock": "0.0.0.0/0", - "Egress": true, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - }, - { - "CidrBlock": "0.0.0.0/0", - "Egress": false, - "Protocol": "-1", - "RuleAction": "deny", - "RuleNumber": 32767 - } - ], - "IsDefault": false, - "NetworkAclId": "acl-5fb85d36", - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified network ACL.", - "id": "ec2-", - "title": "To describe a network ACL" - } - ], - "DescribeNetworkInterfaceAttribute": [ - { - "input": { - "Attribute": "attachment", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "Attachment": { - "AttachTime": "2015-05-21T20:02:20.000Z", - "AttachmentId": "eni-attach-43348162", - "DeleteOnTermination": true, - "DeviceIndex": 0, - "InstanceId": "i-1234567890abcdef0", - "InstanceOwnerId": "123456789012", - "Status": "attached" - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attachment attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-1", - "title": "To describe the attachment attribute of a network interface" - }, - { - "input": { - "Attribute": "description", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "Description": { - "Value": "My description" - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the description attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-2", - "title": "To describe the description attribute of a network interface" - }, - { - "input": { - "Attribute": "groupSet", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "Groups": [ - { - "GroupId": "sg-903004f8", - "GroupName": "my-security-group" - } - ], - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the groupSet attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-3", - "title": "To describe the groupSet attribute of a network interface" - }, - { - "input": { - "Attribute": "sourceDestCheck", - "NetworkInterfaceId": "eni-686ea200" - }, - "output": { - "NetworkInterfaceId": "eni-686ea200", - "SourceDestCheck": { - "Value": true - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the sourceDestCheck attribute of the specified network interface.", - "id": "ec2-describe-network-interface-attribute-4", - "title": "To describe the sourceDestCheck attribute of a network interface" - } - ], - "DescribeNetworkInterfaces": [ - { - "input": { - "NetworkInterfaceIds": [ - "eni-e5aa89a3" - ] - }, - "output": { - "NetworkInterfaces": [ - { - "Association": { - "AssociationId": "eipassoc-0fbb766a", - "IpOwnerId": "123456789012", - "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", - "PublicIp": "203.0.113.12" - }, - "Attachment": { - "AttachTime": "2013-11-30T23:36:42.000Z", - "AttachmentId": "eni-attach-66c4350a", - "DeleteOnTermination": false, - "DeviceIndex": 1, - "InstanceId": "i-1234567890abcdef0", - "InstanceOwnerId": "123456789012", - "Status": "attached" - }, - "AvailabilityZone": "us-east-1d", - "Description": "my network interface", - "Groups": [ - { - "GroupId": "sg-8637d3e3", - "GroupName": "default" - } - ], - "MacAddress": "02:2f:8f:b0:cf:75", - "NetworkInterfaceId": "eni-e5aa89a3", - "OwnerId": "123456789012", - "PrivateDnsName": "ip-10-0-1-17.ec2.internal", - "PrivateIpAddress": "10.0.1.17", - "PrivateIpAddresses": [ - { - "Association": { - "AssociationId": "eipassoc-0fbb766a", - "IpOwnerId": "123456789012", - "PublicDnsName": "ec2-203-0-113-12.compute-1.amazonaws.com", - "PublicIp": "203.0.113.12" - }, - "Primary": true, - "PrivateDnsName": "ip-10-0-1-17.ec2.internal", - "PrivateIpAddress": "10.0.1.17" - } - ], - "RequesterManaged": false, - "SourceDestCheck": true, - "Status": "in-use", - "SubnetId": "subnet-b61f49f0", - "TagSet": [ - - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "", - "id": "ec2-describe-network-interfaces-1", - "title": "To describe a network interface" - } - ], - "DescribeRegions": [ - { - "output": { - "Regions": [ - { - "Endpoint": "ec2.ap-south-1.amazonaws.com", - "RegionName": "ap-south-1" - }, - { - "Endpoint": "ec2.eu-west-1.amazonaws.com", - "RegionName": "eu-west-1" - }, - { - "Endpoint": "ec2.ap-southeast-1.amazonaws.com", - "RegionName": "ap-southeast-1" - }, - { - "Endpoint": "ec2.ap-southeast-2.amazonaws.com", - "RegionName": "ap-southeast-2" - }, - { - "Endpoint": "ec2.eu-central-1.amazonaws.com", - "RegionName": "eu-central-1" - }, - { - "Endpoint": "ec2.ap-northeast-2.amazonaws.com", - "RegionName": "ap-northeast-2" - }, - { - "Endpoint": "ec2.ap-northeast-1.amazonaws.com", - "RegionName": "ap-northeast-1" - }, - { - "Endpoint": "ec2.us-east-1.amazonaws.com", - "RegionName": "us-east-1" - }, - { - "Endpoint": "ec2.sa-east-1.amazonaws.com", - "RegionName": "sa-east-1" - }, - { - "Endpoint": "ec2.us-west-1.amazonaws.com", - "RegionName": "us-west-1" - }, - { - "Endpoint": "ec2.us-west-2.amazonaws.com", - "RegionName": "us-west-2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all the regions that are available to you.", - "id": "ec2-describe-regions-1", - "title": "To describe your regions" - } - ], - "DescribeRouteTables": [ - { - "input": { - "RouteTableIds": [ - "rtb-1f382e7d" - ] - }, - "output": { - "RouteTables": [ - { - "Associations": [ - { - "Main": true, - "RouteTableAssociationId": "rtbassoc-d8ccddba", - "RouteTableId": "rtb-1f382e7d" - } - ], - "PropagatingVgws": [ - - ], - "RouteTableId": "rtb-1f382e7d", - "Routes": [ - { - "DestinationCidrBlock": "10.0.0.0/16", - "GatewayId": "local", - "State": "active" - } - ], - "Tags": [ - - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified route table.", - "id": "ec2-describe-route-tables-1", - "title": "To describe a route table" - } - ], - "DescribeScheduledInstanceAvailability": [ - { - "input": { - "FirstSlotStartTimeRange": { - "EarliestTime": "2016-01-31T00:00:00Z", - "LatestTime": "2016-01-31T04:00:00Z" - }, - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDays": [ - 1 - ] - } - }, - "output": { - "ScheduledInstanceAvailabilitySet": [ - { - "AvailabilityZone": "us-west-2b", - "AvailableInstanceCount": 20, - "FirstSlotStartTime": "2016-01-31T00:00:00Z", - "HourlyPrice": "0.095", - "InstanceType": "c4.large", - "MaxTermDurationInDays": 366, - "MinTermDurationInDays": 366, - "NetworkPlatform": "EC2-VPC", - "Platform": "Linux/UNIX", - "PurchaseToken": "eyJ2IjoiMSIsInMiOjEsImMiOi...", - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDaySet": [ - 1 - ], - "OccurrenceRelativeToEnd": false - }, - "SlotDurationInHours": 23, - "TotalScheduledInstanceHours": 1219 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes a schedule that occurs every week on Sunday, starting on the specified date. Note that the output contains a single schedule as an example.", - "id": "ec2-describe-scheduled-instance-availability-1", - "title": "To describe an available schedule" - } - ], - "DescribeScheduledInstances": [ - { - "input": { - "ScheduledInstanceIds": [ - "sci-1234-1234-1234-1234-123456789012" - ] - }, - "output": { - "ScheduledInstanceSet": [ - { - "AvailabilityZone": "us-west-2b", - "CreateDate": "2016-01-25T21:43:38.612Z", - "HourlyPrice": "0.095", - "InstanceCount": 1, - "InstanceType": "c4.large", - "NetworkPlatform": "EC2-VPC", - "NextSlotStartTime": "2016-01-31T09:00:00Z", - "Platform": "Linux/UNIX", - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDaySet": [ - 1 - ], - "OccurrenceRelativeToEnd": false, - "OccurrenceUnit": "" - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012", - "SlotDurationInHours": 32, - "TermEndDate": "2017-01-31T09:00:00Z", - "TermStartDate": "2016-01-31T09:00:00Z", - "TotalScheduledInstanceHours": 1696 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Scheduled Instance.", - "id": "ec2-describe-scheduled-instances-1", - "title": "To describe your Scheduled Instances" - } - ], - "DescribeSnapshotAttribute": [ - { - "input": { - "Attribute": "createVolumePermission", - "SnapshotId": "snap-066877671789bd71b" - }, - "output": { - "CreateVolumePermissions": [ - - ], - "SnapshotId": "snap-066877671789bd71b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``createVolumePermission`` attribute on a snapshot with the snapshot ID of ``snap-066877671789bd71b``.", - "id": "to-describe-snapshot-attributes-1472503199736", - "title": "To describe snapshot attributes" - } - ], - "DescribeSnapshots": [ - { - "input": { - "SnapshotIds": [ - "snap-1234567890abcdef0" - ] - }, - "output": { - "NextToken": "", - "Snapshots": [ - { - "Description": "This is my snapshot.", - "OwnerId": "012345678910", - "Progress": "100%", - "SnapshotId": "snap-1234567890abcdef0", - "StartTime": "2014-02-28T21:28:32.000Z", - "State": "completed", - "VolumeId": "vol-049df61146c4d7901", - "VolumeSize": 8 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes a snapshot with the snapshot ID of ``snap-1234567890abcdef0``.", - "id": "to-describe-a-snapshot-1472503807850", - "title": "To describe a snapshot" - }, - { - "input": { - "Filters": [ - { - "Name": "status", - "Values": [ - "pending" - ] - } - ], - "OwnerIds": [ - "012345678910" - ] - }, - "output": { - "NextToken": "", - "Snapshots": [ - { - "Description": "This is my copied snapshot.", - "OwnerId": "012345678910", - "Progress": "87%", - "SnapshotId": "snap-066877671789bd71b", - "StartTime": "2014-02-28T21:37:27.000Z", - "State": "pending", - "VolumeId": "vol-1234567890abcdef0", - "VolumeSize": 8 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all snapshots owned by the ID 012345678910 that are in the ``pending`` status.", - "id": "to-describe-snapshots-using-filters-1472503929793", - "title": "To describe snapshots using filters" - } - ], - "DescribeSpotDatafeedSubscription": [ - { - "output": { - "SpotDatafeedSubscription": { - "Bucket": "my-s3-bucket", - "OwnerId": "123456789012", - "Prefix": "spotdata", - "State": "Active" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the Spot Instance datafeed subscription for your AWS account.", - "id": "ec2-describe-spot-datafeed-subscription-1", - "title": "To describe the datafeed for your AWS account" - } - ], - "DescribeSpotFleetInstances": [ - { - "input": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "output": { - "ActiveInstances": [ - { - "InstanceId": "i-1234567890abcdef0", - "InstanceType": "m3.medium", - "SpotInstanceRequestId": "sir-08b93456" - } - ], - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the Spot Instances associated with the specified Spot fleet.", - "id": "ec2-describe-spot-fleet-instances-1", - "title": "To describe the Spot Instances associated with a Spot fleet" - } - ], - "DescribeSpotFleetRequestHistory": [ - { - "input": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "StartTime": "2015-05-26T00:00:00Z" - }, - "output": { - "HistoryRecords": [ - { - "EventInformation": { - "EventSubType": "submitted" - }, - "EventType": "fleetRequestChange", - "Timestamp": "2015-05-26T23:17:20.697Z" - }, - { - "EventInformation": { - "EventSubType": "active" - }, - "EventType": "fleetRequestChange", - "Timestamp": "2015-05-26T23:17:20.873Z" - }, - { - "EventInformation": { - "EventSubType": "launched", - "InstanceId": "i-1234567890abcdef0" - }, - "EventType": "instanceChange", - "Timestamp": "2015-05-26T23:21:21.712Z" - }, - { - "EventInformation": { - "EventSubType": "launched", - "InstanceId": "i-1234567890abcdef1" - }, - "EventType": "instanceChange", - "Timestamp": "2015-05-26T23:21:21.816Z" - } - ], - "NextToken": "CpHNsscimcV5oH7bSbub03CI2Qms5+ypNpNm+53MNlR0YcXAkp0xFlfKf91yVxSExmbtma3awYxMFzNA663ZskT0AHtJ6TCb2Z8bQC2EnZgyELbymtWPfpZ1ZbauVg+P+TfGlWxWWB/Vr5dk5d4LfdgA/DRAHUrYgxzrEXAMPLE=", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "StartTime": "2015-05-26T00:00:00Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example returns the history for the specified Spot fleet starting at the specified time.", - "id": "ec2-describe-spot-fleet-request-history-1", - "title": "To describe Spot fleet history" - } - ], - "DescribeSpotFleetRequests": [ - { - "input": { - "SpotFleetRequestIds": [ - "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - ] - }, - "output": { - "SpotFleetRequestConfigs": [ - { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "EbsOptimized": false, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "cc2.8xlarge", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeleteOnTermination": false, - "DeviceIndex": 0, - "SecondaryPrivateIpAddressCount": 0, - "SubnetId": "subnet-a61dafcf" - } - ] - }, - { - "EbsOptimized": false, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "r3.8xlarge", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeleteOnTermination": false, - "DeviceIndex": 0, - "SecondaryPrivateIpAddressCount": 0, - "SubnetId": "subnet-a61dafcf" - } - ] - } - ], - "SpotPrice": "0.05", - "TargetCapacity": 20 - }, - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "SpotFleetRequestState": "active" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Spot fleet request.", - "id": "ec2-describe-spot-fleet-requests-1", - "title": "To describe a Spot fleet request" - } - ], - "DescribeSpotInstanceRequests": [ - { - "input": { - "SpotInstanceRequestIds": [ - "sir-08b93456" - ] - }, - "output": { - "SpotInstanceRequests": [ - { - "CreateTime": "2014-04-30T18:14:55.000Z", - "InstanceId": "i-1234567890abcdef0", - "LaunchSpecification": { - "BlockDeviceMappings": [ - { - "DeviceName": "/dev/sda1", - "Ebs": { - "DeleteOnTermination": true, - "VolumeSize": 8, - "VolumeType": "standard" - } - } - ], - "EbsOptimized": false, - "ImageId": "ami-7aba833f", - "InstanceType": "m1.small", - "KeyName": "my-key-pair", - "SecurityGroups": [ - { - "GroupId": "sg-e38f24a7", - "GroupName": "my-security-group" - } - ] - }, - "LaunchedAvailabilityZone": "us-west-1b", - "ProductDescription": "Linux/UNIX", - "SpotInstanceRequestId": "sir-08b93456", - "SpotPrice": "0.010000", - "State": "active", - "Status": { - "Code": "fulfilled", - "Message": "Your Spot request is fulfilled.", - "UpdateTime": "2014-04-30T18:16:21.000Z" - }, - "Type": "one-time" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified Spot Instance request.", - "id": "ec2-describe-spot-instance-requests-1", - "title": "To describe a Spot Instance request" - } - ], - "DescribeSpotPriceHistory": [ - { - "input": { - "EndTime": "2014-01-06T08:09:10", - "InstanceTypes": [ - "m1.xlarge" - ], - "ProductDescriptions": [ - "Linux/UNIX (Amazon VPC)" - ], - "StartTime": "2014-01-06T07:08:09" - }, - "output": { - "SpotPriceHistory": [ - { - "AvailabilityZone": "us-west-1a", - "InstanceType": "m1.xlarge", - "ProductDescription": "Linux/UNIX (Amazon VPC)", - "SpotPrice": "0.080000", - "Timestamp": "2014-01-06T04:32:53.000Z" - }, - { - "AvailabilityZone": "us-west-1c", - "InstanceType": "m1.xlarge", - "ProductDescription": "Linux/UNIX (Amazon VPC)", - "SpotPrice": "0.080000", - "Timestamp": "2014-01-05T11:28:26.000Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example returns the Spot Price history for m1.xlarge, Linux/UNIX (Amazon VPC) instances for a particular day in January.", - "id": "ec2-describe-spot-price-history-1", - "title": "To describe Spot price history for Linux/UNIX (Amazon VPC)" - } - ], - "DescribeSubnets": [ - { - "input": { - "Filters": [ - { - "Name": "vpc-id", - "Values": [ - "vpc-a01106c2" - ] - } - ] - }, - "output": { - "Subnets": [ - { - "AvailabilityZone": "us-east-1c", - "AvailableIpAddressCount": 251, - "CidrBlock": "10.0.1.0/24", - "DefaultForAz": false, - "MapPublicIpOnLaunch": false, - "State": "available", - "SubnetId": "subnet-9d4a7b6c", - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the subnets for the specified VPC.", - "id": "ec2-describe-subnets-1", - "title": "To describe the subnets for a VPC" - } - ], - "DescribeTags": [ - { - "input": { - "Filters": [ - { - "Name": "resource-id", - "Values": [ - "i-1234567890abcdef8" - ] - } - ] - }, - "output": { - "Tags": [ - { - "Key": "Stack", - "ResourceId": "i-1234567890abcdef8", - "ResourceType": "instance", - "Value": "test" - }, - { - "Key": "Name", - "ResourceId": "i-1234567890abcdef8", - "ResourceType": "instance", - "Value": "Beta Server" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags for the specified instance.", - "id": "ec2-describe-tags-1", - "title": "To describe the tags for a single resource" - } - ], - "DescribeVolumeAttribute": [ - { - "input": { - "Attribute": "autoEnableIO", - "VolumeId": "vol-049df61146c4d7901" - }, - "output": { - "AutoEnableIO": { - "Value": false - }, - "VolumeId": "vol-049df61146c4d7901" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the ``autoEnableIo`` attribute of the volume with the ID ``vol-049df61146c4d7901``.", - "id": "to-describe-a-volume-attribute-1472505773492", - "title": "To describe a volume attribute" - } - ], - "DescribeVolumeStatus": [ - { - "input": { - "VolumeIds": [ - "vol-1234567890abcdef0" - ] - }, - "output": { - "VolumeStatuses": [ - { - "Actions": [ - - ], - "AvailabilityZone": "us-east-1a", - "Events": [ - - ], - "VolumeId": "vol-1234567890abcdef0", - "VolumeStatus": { - "Details": [ - { - "Name": "io-enabled", - "Status": "passed" - }, - { - "Name": "io-performance", - "Status": "not-applicable" - } - ], - "Status": "ok" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the status for the volume ``vol-1234567890abcdef0``.", - "id": "to-describe-the-status-of-a-single-volume-1472507016193", - "title": "To describe the status of a single volume" - }, - { - "input": { - "Filters": [ - { - "Name": "volume-status.status", - "Values": [ - "impaired" - ] - } - ] - }, - "output": { - "VolumeStatuses": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the status for all volumes that are impaired. In this example output, there are no impaired volumes.", - "id": "to-describe-the-status-of-impaired-volumes-1472507239821", - "title": "To describe the status of impaired volumes" - } - ], - "DescribeVolumes": [ - { - "input": { - }, - "output": { - "NextToken": "", - "Volumes": [ - { - "Attachments": [ - { - "AttachTime": "2013-12-18T22:35:00.000Z", - "DeleteOnTermination": true, - "Device": "/dev/sda1", - "InstanceId": "i-1234567890abcdef0", - "State": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - ], - "AvailabilityZone": "us-east-1a", - "CreateTime": "2013-12-18T22:35:00.084Z", - "Size": 8, - "SnapshotId": "snap-1234567890abcdef0", - "State": "in-use", - "VolumeId": "vol-049df61146c4d7901", - "VolumeType": "standard" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all of your volumes in the default region.", - "id": "to-describe-all-volumes-1472506358883", - "title": "To describe all volumes" - }, - { - "input": { - "Filters": [ - { - "Name": "attachment.instance-id", - "Values": [ - "i-1234567890abcdef0" - ] - }, - { - "Name": "attachment.delete-on-termination", - "Values": [ - "true" - ] - } - ] - }, - "output": { - "Volumes": [ - { - "Attachments": [ - { - "AttachTime": "2013-12-18T22:35:00.000Z", - "DeleteOnTermination": true, - "Device": "/dev/sda1", - "InstanceId": "i-1234567890abcdef0", - "State": "attached", - "VolumeId": "vol-049df61146c4d7901" - } - ], - "AvailabilityZone": "us-east-1a", - "CreateTime": "2013-12-18T22:35:00.084Z", - "Size": 8, - "SnapshotId": "snap-1234567890abcdef0", - "State": "in-use", - "VolumeId": "vol-049df61146c4d7901", - "VolumeType": "standard" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes all volumes that are both attached to the instance with the ID i-1234567890abcdef0 and set to delete when the instance terminates.", - "id": "to-describe-volumes-that-are-attached-to-a-specific-instance-1472506613578", - "title": "To describe volumes that are attached to a specific instance" - } - ], - "DescribeVpcAttribute": [ - { - "input": { - "Attribute": "enableDnsSupport", - "VpcId": "vpc-a01106c2" - }, - "output": { - "EnableDnsSupport": { - "Value": true - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the enableDnsSupport attribute. This attribute indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for your instances to their corresponding IP addresses; otherwise, it does not.", - "id": "ec2-describe-vpc-attribute-1", - "title": "To describe the enableDnsSupport attribute" - }, - { - "input": { - "Attribute": "enableDnsHostnames", - "VpcId": "vpc-a01106c2" - }, - "output": { - "EnableDnsHostnames": { - "Value": true - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the enableDnsHostnames attribute. This attribute indicates whether the instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.", - "id": "ec2-describe-vpc-attribute-2", - "title": "To describe the enableDnsHostnames attribute" - } - ], - "DescribeVpcs": [ - { - "input": { - "VpcIds": [ - "vpc-a01106c2" - ] - }, - "output": { - "Vpcs": [ - { - "CidrBlock": "10.0.0.0/16", - "DhcpOptionsId": "dopt-7a8b9c2d", - "InstanceTenancy": "default", - "IsDefault": false, - "State": "available", - "Tags": [ - { - "Key": "Name", - "Value": "MyVPC" - } - ], - "VpcId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified VPC.", - "id": "ec2-describe-vpcs-1", - "title": "To describe a VPC" - } - ], - "DetachInternetGateway": [ - { - "input": { - "InternetGatewayId": "igw-c0a643a9", - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified Internet gateway from the specified VPC.", - "id": "ec2-detach-internet-gateway-1", - "title": "To detach an Internet gateway from a VPC" - } - ], - "DetachNetworkInterface": [ - { - "input": { - "AttachmentId": "eni-attach-66c4350a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified network interface from its attached instance.", - "id": "ec2-detach-network-interface-1", - "title": "To detach a network interface from an instance" - } - ], - "DetachVolume": [ - { - "input": { - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - "AttachTime": "2014-02-27T19:23:06.000Z", - "Device": "/dev/sdb", - "InstanceId": "i-1234567890abcdef0", - "State": "detaching", - "VolumeId": "vol-049df61146c4d7901" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the volume (``vol-049df61146c4d7901``) from the instance it is attached to.", - "id": "to-detach-a-volume-from-an-instance-1472507977694", - "title": "To detach a volume from an instance" - } - ], - "DisableVgwRoutePropagation": [ - { - "input": { - "GatewayId": "vgw-9a4cacf3", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disables the specified virtual private gateway from propagating static routes to the specified route table.", - "id": "ec2-disable-vgw-route-propagation-1", - "title": "To disable route propagation" - } - ], - "DisassociateAddress": [ - { - "input": { - "AssociationId": "eipassoc-2bebb745" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disassociates an Elastic IP address from an instance in a VPC.", - "id": "ec2-disassociate-address-1", - "title": "To disassociate an Elastic IP address in EC2-VPC" - }, - { - "input": { - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disassociates an Elastic IP address from an instance in EC2-Classic.", - "id": "ec2-disassociate-address-2", - "title": "To disassociate an Elastic IP addresses in EC2-Classic" - } - ], - "DisassociateRouteTable": [ - { - "input": { - "AssociationId": "rtbassoc-781d0d1a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example disassociates the specified route table from its associated subnet.", - "id": "ec2-disassociate-route-table-1", - "title": "To disassociate a route table" - } - ], - "EnableVgwRoutePropagation": [ - { - "input": { - "GatewayId": "vgw-9a4cacf3", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables the specified virtual private gateway to propagate static routes to the specified route table.", - "id": "ec2-enable-vgw-route-propagation-1", - "title": "To enable route propagation" - } - ], - "EnableVolumeIO": [ - { - "input": { - "VolumeId": "vol-1234567890abcdef0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables I/O on volume ``vol-1234567890abcdef0``.", - "id": "to-enable-io-for-a-volume-1472508114867", - "title": "To enable I/O for a volume" - } - ], - "ModifyNetworkInterfaceAttribute": [ - { - "input": { - "Attachment": { - "AttachmentId": "eni-attach-43348162", - "DeleteOnTermination": false - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the attachment attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-1", - "title": "To modify the attachment attribute of a network interface" - }, - { - "input": { - "Description": { - "Value": "My description" - }, - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the description attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-2", - "title": "To modify the description attribute of a network interface" - }, - { - "input": { - "Groups": [ - "sg-903004f8", - "sg-1a2b3c4d" - ], - "NetworkInterfaceId": "eni-686ea200" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example command modifies the groupSet attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-3", - "title": "To modify the groupSet attribute of a network interface" - }, - { - "input": { - "NetworkInterfaceId": "eni-686ea200", - "SourceDestCheck": { - "Value": false - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example command modifies the sourceDestCheck attribute of the specified network interface.", - "id": "ec2-modify-network-interface-attribute-4", - "title": "To modify the sourceDestCheck attribute of a network interface" - } - ], - "ModifySnapshotAttribute": [ - { - "input": { - "Attribute": "createVolumePermission", - "OperationType": "remove", - "SnapshotId": "snap-1234567890abcdef0", - "UserIds": [ - "123456789012" - ] - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies snapshot ``snap-1234567890abcdef0`` to remove the create volume permission for a user with the account ID ``123456789012``. If the command succeeds, no output is returned.", - "id": "to-modify-a-snapshot-attribute-1472508385907", - "title": "To modify a snapshot attribute" - }, - { - "input": { - "Attribute": "createVolumePermission", - "GroupNames": [ - "all" - ], - "OperationType": "add", - "SnapshotId": "snap-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example makes the snapshot ``snap-1234567890abcdef0`` public.", - "id": "to-make-a-snapshot-public-1472508470529", - "title": "To make a snapshot public" - } - ], - "ModifySpotFleetRequest": [ - { - "input": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "TargetCapacity": 20 - }, - "output": { - "Return": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example increases the target capacity of the specified Spot fleet request.", - "id": "ec2-modify-spot-fleet-request-1", - "title": "To increase the target capacity of a Spot fleet request" - }, - { - "input": { - "ExcessCapacityTerminationPolicy": "NoTermination ", - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", - "TargetCapacity": 10 - }, - "output": { - "Return": true - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example decreases the target capacity of the specified Spot fleet request without terminating any Spot Instances as a result.", - "id": "ec2-modify-spot-fleet-request-2", - "title": "To decrease the target capacity of a Spot fleet request" - } - ], - "ModifySubnetAttribute": [ - { - "input": { - "MapPublicIpOnLaunch": { - "Value": true - }, - "SubnetId": "subnet-1a2b3c4d" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the specified subnet so that all instances launched into this subnet are assigned a public IP address.", - "id": "ec2-modify-subnet-attribute-1", - "title": "To change a subnet's public IP addressing behavior" - } - ], - "ModifyVolumeAttribute": [ - { - "input": { - "AutoEnableIO": { - "Value": true - }, - "DryRun": true, - "VolumeId": "vol-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the ``autoEnableIo`` attribute of the volume with the ID ``vol-1234567890abcdef0`` to ``true``. If the command succeeds, no output is returned.", - "id": "to-modify-a-volume-attribute-1472508596749", - "title": "To modify a volume attribute" - } - ], - "ModifyVpcAttribute": [ - { - "input": { - "EnableDnsSupport": { - "Value": false - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the enableDnsSupport attribute. This attribute indicates whether DNS resolution is enabled for the VPC. If this attribute is true, the Amazon DNS server resolves DNS hostnames for instances in the VPC to their corresponding IP addresses; otherwise, it does not.", - "id": "ec2-modify-vpc-attribute-1", - "title": "To modify the enableDnsSupport attribute" - }, - { - "input": { - "EnableDnsHostnames": { - "Value": false - }, - "VpcId": "vpc-a01106c2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the enableDnsHostnames attribute. This attribute indicates whether instances launched in the VPC get DNS hostnames. If this attribute is true, instances in the VPC get DNS hostnames; otherwise, they do not.", - "id": "ec2-modify-vpc-attribute-2", - "title": "To modify the enableDnsHostnames attribute" - } - ], - "MoveAddressToVpc": [ - { - "input": { - "PublicIp": "54.123.4.56" - }, - "output": { - "Status": "MoveInProgress" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example moves the specified Elastic IP address to the EC2-VPC platform.", - "id": "ec2-move-address-to-vpc-1", - "title": "To move an address to EC2-VPC" - } - ], - "PurchaseScheduledInstances": [ - { - "input": { - "PurchaseRequests": [ - { - "InstanceCount": 1, - "PurchaseToken": "eyJ2IjoiMSIsInMiOjEsImMiOi..." - } - ] - }, - "output": { - "ScheduledInstanceSet": [ - { - "AvailabilityZone": "us-west-2b", - "CreateDate": "2016-01-25T21:43:38.612Z", - "HourlyPrice": "0.095", - "InstanceCount": 1, - "InstanceType": "c4.large", - "NetworkPlatform": "EC2-VPC", - "NextSlotStartTime": "2016-01-31T09:00:00Z", - "Platform": "Linux/UNIX", - "Recurrence": { - "Frequency": "Weekly", - "Interval": 1, - "OccurrenceDaySet": [ - 1 - ], - "OccurrenceRelativeToEnd": false, - "OccurrenceUnit": "" - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012", - "SlotDurationInHours": 32, - "TermEndDate": "2017-01-31T09:00:00Z", - "TermStartDate": "2016-01-31T09:00:00Z", - "TotalScheduledInstanceHours": 1696 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example purchases a Scheduled Instance.", - "id": "ec2-purchase-scheduled-instances-1", - "title": "To purchase a Scheduled Instance" - } - ], - "ReleaseAddress": [ - { - "input": { - "AllocationId": "eipalloc-64d5890a" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example releases an Elastic IP address for use with instances in a VPC.", - "id": "ec2-release-address-1", - "title": "To release an Elastic IP address for EC2-VPC" - }, - { - "input": { - "PublicIp": "198.51.100.0" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example releases an Elastic IP address for use with instances in EC2-Classic.", - "id": "ec2-release-address-2", - "title": "To release an Elastic IP addresses for EC2-Classic" - } - ], - "ReplaceNetworkAclAssociation": [ - { - "input": { - "AssociationId": "aclassoc-e5b95c8c", - "NetworkAclId": "acl-5fb85d36" - }, - "output": { - "NewAssociationId": "aclassoc-3999875b" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified network ACL with the subnet for the specified network ACL association.", - "id": "ec2-replace-network-acl-association-1", - "title": "To replace the network ACL associated with a subnet" - } - ], - "ReplaceNetworkAclEntry": [ - { - "input": { - "CidrBlock": "203.0.113.12/24", - "Egress": false, - "NetworkAclId": "acl-5fb85d36", - "PortRange": { - "From": 53, - "To": 53 - }, - "Protocol": "udp", - "RuleAction": "allow", - "RuleNumber": 100 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces an entry for the specified network ACL. The new rule 100 allows ingress traffic from 203.0.113.12/24 on UDP port 53 (DNS) into any associated subnet.", - "id": "ec2-replace-network-acl-entry-1", - "title": "To replace a network ACL entry" - } - ], - "ReplaceRoute": [ - { - "input": { - "DestinationCidrBlock": "10.0.0.0/16", - "GatewayId": "vgw-9a4cacf3", - "RouteTableId": "rtb-22574640" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the specified route in the specified table table. The new route matches the specified CIDR and sends the traffic to the specified virtual private gateway.", - "id": "ec2-replace-route-1", - "title": "To replace a route" - } - ], - "ReplaceRouteTableAssociation": [ - { - "input": { - "AssociationId": "rtbassoc-781d0d1a", - "RouteTableId": "rtb-22574640" - }, - "output": { - "NewAssociationId": "rtbassoc-3a1f0f58" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified route table with the subnet for the specified route table association.", - "id": "ec2-replace-route-table-association-1", - "title": "To replace the route table associated with a subnet" - } - ], - "RequestSpotFleet": [ - { - "input": { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "SecurityGroups": [ - { - "GroupId": "sg-1a2b3c4d" - } - ], - "SubnetId": "subnet-1a2b3c4d, subnet-3c4d5e6f" - } - ], - "SpotPrice": "0.04", - "TargetCapacity": 2 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot fleet request with two launch specifications that differ only by subnet. The Spot fleet launches the instances in the specified subnet with the lowest price. If the instances are launched in a default VPC, they receive a public IP address by default. If the instances are launched in a nondefault VPC, they do not receive a public IP address by default. Note that you can't specify different subnets from the same Availability Zone in a Spot fleet request.", - "id": "ec2-request-spot-fleet-1", - "title": "To request a Spot fleet in the subnet with the lowest price" - }, - { - "input": { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "Placement": { - "AvailabilityZone": "us-west-2a, us-west-2b" - }, - "SecurityGroups": [ - { - "GroupId": "sg-1a2b3c4d" - } - ] - } - ], - "SpotPrice": "0.04", - "TargetCapacity": 2 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot fleet request with two launch specifications that differ only by Availability Zone. The Spot fleet launches the instances in the specified Availability Zone with the lowest price. If your account supports EC2-VPC only, Amazon EC2 launches the Spot instances in the default subnet of the Availability Zone. If your account supports EC2-Classic, Amazon EC2 launches the instances in EC2-Classic in the Availability Zone.", - "id": "ec2-request-spot-fleet-2", - "title": "To request a Spot fleet in the Availability Zone with the lowest price" - }, - { - "input": { - "SpotFleetRequestConfig": { - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::880185128111:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeviceIndex": 0, - "Groups": [ - "sg-1a2b3c4d" - ], - "SubnetId": "subnet-1a2b3c4d" - } - ] - } - ], - "SpotPrice": "0.04", - "TargetCapacity": 2 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example assigns public addresses to instances launched in a nondefault VPC. Note that when you specify a network interface, you must include the subnet ID and security group ID using the network interface.", - "id": "ec2-request-spot-fleet-3", - "title": "To launch Spot instances in a subnet and assign them public IP addresses" - }, - { - "input": { - "SpotFleetRequestConfig": { - "AllocationStrategy": "diversified", - "IamFleetRole": "arn:aws:iam::123456789012:role/my-spot-fleet-role", - "LaunchSpecifications": [ - { - "ImageId": "ami-1a2b3c4d", - "InstanceType": "c4.2xlarge", - "SubnetId": "subnet-1a2b3c4d" - }, - { - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.2xlarge", - "SubnetId": "subnet-1a2b3c4d" - }, - { - "ImageId": "ami-1a2b3c4d", - "InstanceType": "r3.2xlarge", - "SubnetId": "subnet-1a2b3c4d" - } - ], - "SpotPrice": "0.70", - "TargetCapacity": 30 - } - }, - "output": { - "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a Spot fleet request that launches 30 instances using the diversified allocation strategy. The launch specifications differ by instance type. The Spot fleet distributes the instances across the launch specifications such that there are 10 instances of each type.", - "id": "ec2-request-spot-fleet-4", - "title": "To request a Spot fleet using the diversified allocation strategy" - } - ], - "RequestSpotInstances": [ - { - "input": { - "InstanceCount": 5, - "LaunchSpecification": { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "KeyName": "my-key-pair", - "Placement": { - "AvailabilityZone": "us-west-2a" - }, - "SecurityGroupIds": [ - "sg-1a2b3c4d" - ] - }, - "SpotPrice": "0.03", - "Type": "one-time" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a one-time Spot Instance request for five instances in the specified Availability Zone. If your account supports EC2-VPC only, Amazon EC2 launches the instances in the default subnet of the specified Availability Zone. If your account supports EC2-Classic, Amazon EC2 launches the instances in EC2-Classic in the specified Availability Zone.", - "id": "ec2-request-spot-instances-1", - "title": "To create a one-time Spot Instance request" - }, - { - "input": { - "InstanceCount": 5, - "LaunchSpecification": { - "IamInstanceProfile": { - "Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role" - }, - "ImageId": "ami-1a2b3c4d", - "InstanceType": "m3.medium", - "SecurityGroupIds": [ - "sg-1a2b3c4d" - ], - "SubnetId": "subnet-1a2b3c4d" - }, - "SpotPrice": "0.050", - "Type": "one-time" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example command creates a one-time Spot Instance request for five instances in the specified subnet. Amazon EC2 launches the instances in the specified subnet. If the VPC is a nondefault VPC, the instances do not receive a public IP address by default.", - "id": "ec2-request-spot-instances-2", - "title": "To create a one-time Spot Instance request" - } - ], - "ResetSnapshotAttribute": [ - { - "input": { - "Attribute": "createVolumePermission", - "SnapshotId": "snap-1234567890abcdef0" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example resets the create volume permissions for snapshot ``snap-1234567890abcdef0``. If the command succeeds, no output is returned.", - "id": "to-reset-a-snapshot-attribute-1472508825735", - "title": "To reset a snapshot attribute" - } - ], - "RestoreAddressToClassic": [ - { - "input": { - "PublicIp": "198.51.100.0" - }, - "output": { - "PublicIp": "198.51.100.0", - "Status": "MoveInProgress" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example restores the specified Elastic IP address to the EC2-Classic platform.", - "id": "ec2-restore-address-to-classic-1", - "title": "To restore an address to EC2-Classic" - } - ], - "RunScheduledInstances": [ - { - "input": { - "InstanceCount": 1, - "LaunchSpecification": { - "IamInstanceProfile": { - "Name": "my-iam-role" - }, - "ImageId": "ami-12345678", - "InstanceType": "c4.large", - "KeyName": "my-key-pair", - "NetworkInterfaces": [ - { - "AssociatePublicIpAddress": true, - "DeviceIndex": 0, - "Groups": [ - "sg-12345678" - ], - "SubnetId": "subnet-12345678" - } - ] - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012" - }, - "output": { - "InstanceIdSet": [ - "i-1234567890abcdef0" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example launches the specified Scheduled Instance in a VPC.", - "id": "ec2-run-scheduled-instances-1", - "title": "To launch a Scheduled Instance in a VPC" - }, - { - "input": { - "InstanceCount": 1, - "LaunchSpecification": { - "IamInstanceProfile": { - "Name": "my-iam-role" - }, - "ImageId": "ami-12345678", - "InstanceType": "c4.large", - "KeyName": "my-key-pair", - "Placement": { - "AvailabilityZone": "us-west-2b" - }, - "SecurityGroupIds": [ - "sg-12345678" - ] - }, - "ScheduledInstanceId": "sci-1234-1234-1234-1234-123456789012" - }, - "output": { - "InstanceIdSet": [ - "i-1234567890abcdef0" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example launches the specified Scheduled Instance in EC2-Classic.", - "id": "ec2-run-scheduled-instances-2", - "title": "To launch a Scheduled Instance in EC2-Classic" - } - ], - "UnassignPrivateIpAddresses": [ - { - "input": { - "NetworkInterfaceId": "eni-e5aa89a3", - "PrivateIpAddresses": [ - "10.0.0.82" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example unassigns the specified private IP address from the specified network interface.", - "id": "ec2-unassign-private-ip-addresses-1", - "title": "To unassign a secondary private IP address from a network interface" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.min.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.min.json deleted file mode 100644 index 2a065d8..0000000 --- a/node_modules/aws-sdk/apis/ec2-2016-09-15.min.json +++ /dev/null @@ -1,10892 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-09-15", - "endpointPrefix": "ec2", - "protocol": "ec2", - "serviceAbbreviation": "Amazon EC2", - "serviceFullName": "Amazon Elastic Compute Cloud", - "signatureVersion": "v4", - "xmlNamespace": "http://ec2.amazonaws.com/doc/2016-09-15" - }, - "operations": { - "AcceptReservedInstancesExchangeQuote": { - "input": { - "type": "structure", - "required": [ - "ReservedInstanceIds" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "ReservedInstanceIds": { - "shape": "S3", - "locationName": "ReservedInstanceId" - }, - "TargetConfigurations": { - "shape": "S5", - "locationName": "TargetConfiguration" - } - } - }, - "output": { - "type": "structure", - "members": { - "ExchangeId": { - "locationName": "exchangeId" - } - } - } - }, - "AcceptVpcPeeringConnection": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnection": { - "shape": "Sb", - "locationName": "vpcPeeringConnection" - } - } - } - }, - "AllocateAddress": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Domain": {} - } - }, - "output": { - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "Domain": { - "locationName": "domain" - }, - "AllocationId": { - "locationName": "allocationId" - } - } - } - }, - "AllocateHosts": { - "input": { - "type": "structure", - "required": [ - "InstanceType", - "Quantity", - "AvailabilityZone" - ], - "members": { - "AutoPlacement": { - "locationName": "autoPlacement" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Quantity": { - "locationName": "quantity", - "type": "integer" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - } - } - }, - "output": { - "type": "structure", - "members": { - "HostIds": { - "shape": "Sp", - "locationName": "hostIdSet" - } - } - } - }, - "AssignPrivateIpAddresses": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddresses": { - "shape": "Sr", - "locationName": "privateIpAddress" - }, - "SecondaryPrivateIpAddressCount": { - "locationName": "secondaryPrivateIpAddressCount", - "type": "integer" - }, - "AllowReassignment": { - "locationName": "allowReassignment", - "type": "boolean" - } - } - } - }, - "AssociateAddress": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": {}, - "PublicIp": {}, - "AllocationId": {}, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "AllowReassociation": { - "locationName": "allowReassociation", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - } - } - } - }, - "AssociateDhcpOptions": { - "input": { - "type": "structure", - "required": [ - "DhcpOptionsId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "DhcpOptionsId": {}, - "VpcId": {} - } - } - }, - "AssociateRouteTable": { - "input": { - "type": "structure", - "required": [ - "SubnetId", - "RouteTableId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "RouteTableId": { - "locationName": "routeTableId" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationId": { - "locationName": "associationId" - } - } - } - }, - "AttachClassicLinkVpc": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "VpcId", - "Groups" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Groups": { - "shape": "Sy", - "locationName": "SecurityGroupId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "AttachInternetGateway": { - "input": { - "type": "structure", - "required": [ - "InternetGatewayId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "AttachNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId", - "InstanceId", - "DeviceIndex" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AttachmentId": { - "locationName": "attachmentId" - } - } - } - }, - "AttachVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId", - "InstanceId", - "Device" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": {}, - "InstanceId": {}, - "Device": {} - } - }, - "output": { - "shape": "S14" - } - }, - "AttachVpnGateway": { - "input": { - "type": "structure", - "required": [ - "VpnGatewayId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpnGatewayId": {}, - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpcAttachment": { - "shape": "S18", - "locationName": "attachment" - } - } - } - }, - "AuthorizeSecurityGroupEgress": { - "input": { - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupId": { - "locationName": "groupId" - }, - "SourceSecurityGroupName": { - "locationName": "sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId": { - "locationName": "sourceSecurityGroupOwnerId" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "CidrIp": { - "locationName": "cidrIp" - }, - "IpPermissions": { - "shape": "S1b", - "locationName": "ipPermissions" - } - } - } - }, - "AuthorizeSecurityGroupIngress": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": {}, - "GroupId": {}, - "SourceSecurityGroupName": {}, - "SourceSecurityGroupOwnerId": {}, - "IpProtocol": {}, - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - }, - "CidrIp": {}, - "IpPermissions": { - "shape": "S1b" - } - } - } - }, - "BundleInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Storage" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": {}, - "Storage": { - "shape": "S1l" - } - } - }, - "output": { - "type": "structure", - "members": { - "BundleTask": { - "shape": "S1p", - "locationName": "bundleInstanceTask" - } - } - } - }, - "CancelBundleTask": { - "input": { - "type": "structure", - "required": [ - "BundleId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "BundleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BundleTask": { - "shape": "S1p", - "locationName": "bundleInstanceTask" - } - } - } - }, - "CancelConversionTask": { - "input": { - "type": "structure", - "required": [ - "ConversionTaskId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ConversionTaskId": { - "locationName": "conversionTaskId" - }, - "ReasonMessage": { - "locationName": "reasonMessage" - } - } - } - }, - "CancelExportTask": { - "input": { - "type": "structure", - "required": [ - "ExportTaskId" - ], - "members": { - "ExportTaskId": { - "locationName": "exportTaskId" - } - } - } - }, - "CancelImportTask": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "ImportTaskId": {}, - "CancelReason": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportTaskId": { - "locationName": "importTaskId" - }, - "State": { - "locationName": "state" - }, - "PreviousState": { - "locationName": "previousState" - } - } - } - }, - "CancelReservedInstancesListing": { - "input": { - "type": "structure", - "required": [ - "ReservedInstancesListingId" - ], - "members": { - "ReservedInstancesListingId": { - "locationName": "reservedInstancesListingId" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesListings": { - "shape": "S20", - "locationName": "reservedInstancesListingsSet" - } - } - } - }, - "CancelSpotFleetRequests": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestIds", - "TerminateInstances" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestIds": { - "shape": "S2c", - "locationName": "spotFleetRequestId" - }, - "TerminateInstances": { - "locationName": "terminateInstances", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "UnsuccessfulFleetRequests": { - "locationName": "unsuccessfulFleetRequestSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "SpotFleetRequestId", - "Error" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "Error": { - "locationName": "error", - "type": "structure", - "required": [ - "Code", - "Message" - ], - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - } - } - } - }, - "SuccessfulFleetRequests": { - "locationName": "successfulFleetRequestSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "SpotFleetRequestId", - "CurrentSpotFleetRequestState", - "PreviousSpotFleetRequestState" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "CurrentSpotFleetRequestState": { - "locationName": "currentSpotFleetRequestState" - }, - "PreviousSpotFleetRequestState": { - "locationName": "previousSpotFleetRequestState" - } - } - } - } - } - } - }, - "CancelSpotInstanceRequests": { - "input": { - "type": "structure", - "required": [ - "SpotInstanceRequestIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotInstanceRequestIds": { - "shape": "S2m", - "locationName": "SpotInstanceRequestId" - } - } - }, - "output": { - "type": "structure", - "members": { - "CancelledSpotInstanceRequests": { - "locationName": "spotInstanceRequestSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "State": { - "locationName": "state" - } - } - } - } - } - } - }, - "ConfirmProductInstance": { - "input": { - "type": "structure", - "required": [ - "ProductCode", - "InstanceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ProductCode": {}, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "OwnerId": { - "locationName": "ownerId" - }, - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "CopyImage": { - "input": { - "type": "structure", - "required": [ - "SourceRegion", - "SourceImageId", - "Name" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SourceRegion": {}, - "SourceImageId": {}, - "Name": {}, - "Description": {}, - "ClientToken": {}, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - } - } - } - }, - "CopySnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceRegion", - "SourceSnapshotId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SourceRegion": {}, - "SourceSnapshotId": {}, - "Description": {}, - "DestinationRegion": { - "locationName": "destinationRegion" - }, - "PresignedUrl": { - "locationName": "presignedUrl" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - } - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": { - "locationName": "snapshotId" - } - } - } - }, - "CreateCustomerGateway": { - "input": { - "type": "structure", - "required": [ - "Type", - "PublicIp", - "BgpAsn" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Type": {}, - "PublicIp": { - "locationName": "IpAddress" - }, - "BgpAsn": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CustomerGateway": { - "shape": "S30", - "locationName": "customerGateway" - } - } - } - }, - "CreateDhcpOptions": { - "input": { - "type": "structure", - "required": [ - "DhcpConfigurations" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "DhcpConfigurations": { - "locationName": "dhcpConfiguration", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "Values": { - "shape": "S2c", - "locationName": "Value" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "DhcpOptions": { - "shape": "S35", - "locationName": "dhcpOptions" - } - } - } - }, - "CreateFlowLogs": { - "input": { - "type": "structure", - "required": [ - "ResourceIds", - "ResourceType", - "TrafficType", - "LogGroupName", - "DeliverLogsPermissionArn" - ], - "members": { - "ResourceIds": { - "shape": "S2c", - "locationName": "ResourceId" - }, - "ResourceType": {}, - "TrafficType": {}, - "LogGroupName": {}, - "DeliverLogsPermissionArn": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FlowLogIds": { - "shape": "S2c", - "locationName": "flowLogIdSet" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "Unsuccessful": { - "shape": "S3e", - "locationName": "unsuccessful" - } - } - } - }, - "CreateImage": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Name" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Name": { - "locationName": "name" - }, - "Description": { - "locationName": "description" - }, - "NoReboot": { - "locationName": "noReboot", - "type": "boolean" - }, - "BlockDeviceMappings": { - "shape": "S3i", - "locationName": "blockDeviceMapping" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - } - } - } - }, - "CreateInstanceExportTask": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "Description": { - "locationName": "description" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "TargetEnvironment": { - "locationName": "targetEnvironment" - }, - "ExportToS3Task": { - "locationName": "exportToS3", - "type": "structure", - "members": { - "DiskImageFormat": { - "locationName": "diskImageFormat" - }, - "ContainerFormat": { - "locationName": "containerFormat" - }, - "S3Bucket": { - "locationName": "s3Bucket" - }, - "S3Prefix": { - "locationName": "s3Prefix" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ExportTask": { - "shape": "S3t", - "locationName": "exportTask" - } - } - } - }, - "CreateInternetGateway": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InternetGateway": { - "shape": "S3z", - "locationName": "internetGateway" - } - } - } - }, - "CreateKeyPair": { - "input": { - "type": "structure", - "required": [ - "KeyName" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "KeyName": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyName": { - "locationName": "keyName" - }, - "KeyFingerprint": { - "locationName": "keyFingerprint" - }, - "KeyMaterial": { - "locationName": "keyMaterial" - } - } - } - }, - "CreateNatGateway": { - "input": { - "type": "structure", - "required": [ - "SubnetId", - "AllocationId" - ], - "members": { - "SubnetId": {}, - "AllocationId": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NatGateway": { - "shape": "S46", - "locationName": "natGateway" - }, - "ClientToken": { - "locationName": "clientToken" - } - } - } - }, - "CreateNetworkAcl": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkAcl": { - "shape": "S4d", - "locationName": "networkAcl" - } - } - } - }, - "CreateNetworkAclEntry": { - "input": { - "type": "structure", - "required": [ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - }, - "Protocol": { - "locationName": "protocol" - }, - "RuleAction": { - "locationName": "ruleAction" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "IcmpTypeCode": { - "shape": "S4h", - "locationName": "Icmp" - }, - "PortRange": { - "shape": "S4i", - "locationName": "portRange" - } - } - } - }, - "CreateNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "SubnetId" - ], - "members": { - "SubnetId": { - "locationName": "subnetId" - }, - "Description": { - "locationName": "description" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "Groups": { - "shape": "S4n", - "locationName": "SecurityGroupId" - }, - "PrivateIpAddresses": { - "shape": "S4o", - "locationName": "privateIpAddresses" - }, - "SecondaryPrivateIpAddressCount": { - "locationName": "secondaryPrivateIpAddressCount", - "type": "integer" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterface": { - "shape": "S4r", - "locationName": "networkInterface" - } - } - } - }, - "CreatePlacementGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "Strategy" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": { - "locationName": "groupName" - }, - "Strategy": { - "locationName": "strategy" - } - } - } - }, - "CreateReservedInstancesListing": { - "input": { - "type": "structure", - "required": [ - "ReservedInstancesId", - "InstanceCount", - "PriceSchedules", - "ClientToken" - ], - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "PriceSchedules": { - "locationName": "priceSchedules", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Term": { - "locationName": "term", - "type": "long" - }, - "Price": { - "locationName": "price", - "type": "double" - }, - "CurrencyCode": { - "locationName": "currencyCode" - } - } - } - }, - "ClientToken": { - "locationName": "clientToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesListings": { - "shape": "S20", - "locationName": "reservedInstancesListingsSet" - } - } - } - }, - "CreateRoute": { - "input": { - "type": "structure", - "required": [ - "RouteTableId", - "DestinationCidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "GatewayId": { - "locationName": "gatewayId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "CreateRouteTable": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "RouteTable": { - "shape": "S5a", - "locationName": "routeTable" - } - } - } - }, - "CreateSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "Description" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": {}, - "Description": { - "locationName": "GroupDescription" - }, - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "GroupId": { - "locationName": "groupId" - } - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": {}, - "Description": {} - } - }, - "output": { - "shape": "S5m" - } - }, - "CreateSpotDatafeedSubscription": { - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Bucket": { - "locationName": "bucket" - }, - "Prefix": { - "locationName": "prefix" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotDatafeedSubscription": { - "shape": "S5q", - "locationName": "spotDatafeedSubscription" - } - } - } - }, - "CreateSubnet": { - "input": { - "type": "structure", - "required": [ - "VpcId", - "CidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": {}, - "CidrBlock": {}, - "AvailabilityZone": {} - } - }, - "output": { - "type": "structure", - "members": { - "Subnet": { - "shape": "S5v", - "locationName": "subnet" - } - } - } - }, - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "Resources", - "Tags" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Resources": { - "shape": "S5y", - "locationName": "ResourceId" - }, - "Tags": { - "shape": "Sh", - "locationName": "Tag" - } - } - } - }, - "CreateVolume": { - "input": { - "type": "structure", - "required": [ - "AvailabilityZone" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Size": { - "type": "integer" - }, - "SnapshotId": {}, - "AvailabilityZone": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": {} - } - }, - "output": { - "shape": "S60" - } - }, - "CreateVpc": { - "input": { - "type": "structure", - "required": [ - "CidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "CidrBlock": {}, - "InstanceTenancy": { - "locationName": "instanceTenancy" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpc": { - "shape": "S66", - "locationName": "vpc" - } - } - } - }, - "CreateVpcEndpoint": { - "input": { - "type": "structure", - "required": [ - "VpcId", - "ServiceName" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcId": {}, - "ServiceName": {}, - "PolicyDocument": {}, - "RouteTableIds": { - "shape": "S2c", - "locationName": "RouteTableId" - }, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpcEndpoint": { - "shape": "S6a", - "locationName": "vpcEndpoint" - }, - "ClientToken": { - "locationName": "clientToken" - } - } - } - }, - "CreateVpcPeeringConnection": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - }, - "PeerVpcId": { - "locationName": "peerVpcId" - }, - "PeerOwnerId": { - "locationName": "peerOwnerId" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnection": { - "shape": "Sb", - "locationName": "vpcPeeringConnection" - } - } - } - }, - "CreateVpnConnection": { - "input": { - "type": "structure", - "required": [ - "Type", - "CustomerGatewayId", - "VpnGatewayId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Type": {}, - "CustomerGatewayId": {}, - "VpnGatewayId": {}, - "Options": { - "locationName": "options", - "type": "structure", - "members": { - "StaticRoutesOnly": { - "locationName": "staticRoutesOnly", - "type": "boolean" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnConnection": { - "shape": "S6h", - "locationName": "vpnConnection" - } - } - } - }, - "CreateVpnConnectionRoute": { - "input": { - "type": "structure", - "required": [ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members": { - "VpnConnectionId": {}, - "DestinationCidrBlock": {} - } - } - }, - "CreateVpnGateway": { - "input": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Type": {}, - "AvailabilityZone": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpnGateway": { - "shape": "S6t", - "locationName": "vpnGateway" - } - } - } - }, - "DeleteCustomerGateway": { - "input": { - "type": "structure", - "required": [ - "CustomerGatewayId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "CustomerGatewayId": {} - } - } - }, - "DeleteDhcpOptions": { - "input": { - "type": "structure", - "required": [ - "DhcpOptionsId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "DhcpOptionsId": {} - } - } - }, - "DeleteFlowLogs": { - "input": { - "type": "structure", - "required": [ - "FlowLogIds" - ], - "members": { - "FlowLogIds": { - "shape": "S2c", - "locationName": "FlowLogId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Unsuccessful": { - "shape": "S3e", - "locationName": "unsuccessful" - } - } - } - }, - "DeleteInternetGateway": { - "input": { - "type": "structure", - "required": [ - "InternetGatewayId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - } - } - } - }, - "DeleteKeyPair": { - "input": { - "type": "structure", - "required": [ - "KeyName" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "KeyName": {} - } - } - }, - "DeleteNatGateway": { - "input": { - "type": "structure", - "required": [ - "NatGatewayId" - ], - "members": { - "NatGatewayId": {} - } - }, - "output": { - "type": "structure", - "members": { - "NatGatewayId": { - "locationName": "natGatewayId" - } - } - } - }, - "DeleteNetworkAcl": { - "input": { - "type": "structure", - "required": [ - "NetworkAclId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - } - } - } - }, - "DeleteNetworkAclEntry": { - "input": { - "type": "structure", - "required": [ - "NetworkAclId", - "RuleNumber", - "Egress" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - } - } - } - }, - "DeleteNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - } - }, - "DeletePlacementGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": { - "locationName": "groupName" - } - } - } - }, - "DeleteRoute": { - "input": { - "type": "structure", - "required": [ - "RouteTableId", - "DestinationCidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - } - } - } - }, - "DeleteRouteTable": { - "input": { - "type": "structure", - "required": [ - "RouteTableId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - } - } - } - }, - "DeleteSecurityGroup": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": {}, - "GroupId": {} - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SnapshotId": {} - } - } - }, - "DeleteSpotDatafeedSubscription": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - } - }, - "DeleteSubnet": { - "input": { - "type": "structure", - "required": [ - "SubnetId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SubnetId": {} - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "Resources" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Resources": { - "shape": "S5y", - "locationName": "resourceId" - }, - "Tags": { - "shape": "Sh", - "locationName": "tag" - } - } - } - }, - "DeleteVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": {} - } - } - }, - "DeleteVpc": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": {} - } - } - }, - "DeleteVpcEndpoints": { - "input": { - "type": "structure", - "required": [ - "VpcEndpointIds" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcEndpointIds": { - "shape": "S2c", - "locationName": "VpcEndpointId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Unsuccessful": { - "shape": "S3e", - "locationName": "unsuccessful" - } - } - } - }, - "DeleteVpcPeeringConnection": { - "input": { - "type": "structure", - "required": [ - "VpcPeeringConnectionId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DeleteVpnConnection": { - "input": { - "type": "structure", - "required": [ - "VpnConnectionId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpnConnectionId": {} - } - } - }, - "DeleteVpnConnectionRoute": { - "input": { - "type": "structure", - "required": [ - "VpnConnectionId", - "DestinationCidrBlock" - ], - "members": { - "VpnConnectionId": {}, - "DestinationCidrBlock": {} - } - } - }, - "DeleteVpnGateway": { - "input": { - "type": "structure", - "required": [ - "VpnGatewayId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpnGatewayId": {} - } - } - }, - "DeregisterImage": { - "input": { - "type": "structure", - "required": [ - "ImageId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageId": {} - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "AttributeNames": { - "locationName": "attributeName", - "type": "list", - "member": { - "locationName": "attributeName" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "AccountAttributes": { - "locationName": "accountAttributeSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AttributeName": { - "locationName": "attributeName" - }, - "AttributeValues": { - "locationName": "attributeValueSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "AttributeValue": { - "locationName": "attributeValue" - } - } - } - } - } - } - } - } - } - }, - "DescribeAddresses": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIps": { - "locationName": "PublicIp", - "type": "list", - "member": { - "locationName": "PublicIp" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "AllocationIds": { - "locationName": "AllocationId", - "type": "list", - "member": { - "locationName": "AllocationId" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Addresses": { - "locationName": "addressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "PublicIp": { - "locationName": "publicIp" - }, - "AllocationId": { - "locationName": "allocationId" - }, - "AssociationId": { - "locationName": "associationId" - }, - "Domain": { - "locationName": "domain" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "NetworkInterfaceOwnerId": { - "locationName": "networkInterfaceOwnerId" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - } - } - } - } - }, - "DescribeAvailabilityZones": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ZoneNames": { - "locationName": "ZoneName", - "type": "list", - "member": { - "locationName": "ZoneName" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "AvailabilityZones": { - "locationName": "availabilityZoneInfo", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ZoneName": { - "locationName": "zoneName" - }, - "State": { - "locationName": "zoneState" - }, - "RegionName": { - "locationName": "regionName" - }, - "Messages": { - "locationName": "messageSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Message": { - "locationName": "message" - } - } - } - } - } - } - } - } - } - }, - "DescribeBundleTasks": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "BundleIds": { - "locationName": "BundleId", - "type": "list", - "member": { - "locationName": "BundleId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "BundleTasks": { - "locationName": "bundleInstanceTasksSet", - "type": "list", - "member": { - "shape": "S1p", - "locationName": "item" - } - } - } - } - }, - "DescribeClassicLinkInstances": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "locationName": "instancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Groups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeConversionTasks": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ConversionTaskIds": { - "locationName": "conversionTaskId", - "type": "list", - "member": { - "locationName": "item" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ConversionTasks": { - "locationName": "conversionTasks", - "type": "list", - "member": { - "shape": "S8p", - "locationName": "item" - } - } - } - } - }, - "DescribeCustomerGateways": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "CustomerGatewayIds": { - "locationName": "CustomerGatewayId", - "type": "list", - "member": { - "locationName": "CustomerGatewayId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "CustomerGateways": { - "locationName": "customerGatewaySet", - "type": "list", - "member": { - "shape": "S30", - "locationName": "item" - } - } - } - } - }, - "DescribeDhcpOptions": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "DhcpOptionsIds": { - "locationName": "DhcpOptionsId", - "type": "list", - "member": { - "locationName": "DhcpOptionsId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "DhcpOptions": { - "locationName": "dhcpOptionsSet", - "type": "list", - "member": { - "shape": "S35", - "locationName": "item" - } - } - } - } - }, - "DescribeExportTasks": { - "input": { - "type": "structure", - "members": { - "ExportTaskIds": { - "locationName": "exportTaskId", - "type": "list", - "member": { - "locationName": "ExportTaskId" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ExportTasks": { - "locationName": "exportTaskSet", - "type": "list", - "member": { - "shape": "S3t", - "locationName": "item" - } - } - } - } - }, - "DescribeFlowLogs": { - "input": { - "type": "structure", - "members": { - "FlowLogIds": { - "shape": "S2c", - "locationName": "FlowLogId" - }, - "Filter": { - "shape": "S7y" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FlowLogs": { - "locationName": "flowLogSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CreationTime": { - "locationName": "creationTime", - "type": "timestamp" - }, - "FlowLogId": { - "locationName": "flowLogId" - }, - "FlowLogStatus": { - "locationName": "flowLogStatus" - }, - "ResourceId": { - "locationName": "resourceId" - }, - "TrafficType": { - "locationName": "trafficType" - }, - "LogGroupName": { - "locationName": "logGroupName" - }, - "DeliverLogsStatus": { - "locationName": "deliverLogsStatus" - }, - "DeliverLogsErrorMessage": { - "locationName": "deliverLogsErrorMessage" - }, - "DeliverLogsPermissionArn": { - "locationName": "deliverLogsPermissionArn" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeHostReservationOfferings": { - "input": { - "type": "structure", - "members": { - "OfferingId": {}, - "MinDuration": { - "type": "integer" - }, - "MaxDuration": { - "type": "integer" - }, - "Filter": { - "shape": "S7y" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "OfferingSet": { - "locationName": "offeringSet", - "type": "list", - "member": { - "type": "structure", - "members": { - "OfferingId": { - "locationName": "offeringId" - }, - "InstanceFamily": { - "locationName": "instanceFamily" - }, - "PaymentOption": { - "locationName": "paymentOption" - }, - "UpfrontPrice": { - "locationName": "upfrontPrice" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Duration": { - "locationName": "duration", - "type": "integer" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeHostReservations": { - "input": { - "type": "structure", - "members": { - "HostReservationIdSet": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Filter": { - "shape": "S7y" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "HostReservationSet": { - "locationName": "hostReservationSet", - "type": "list", - "member": { - "type": "structure", - "members": { - "HostReservationId": { - "locationName": "hostReservationId" - }, - "HostIdSet": { - "shape": "S9o", - "locationName": "hostIdSet" - }, - "OfferingId": { - "locationName": "offeringId" - }, - "InstanceFamily": { - "locationName": "instanceFamily" - }, - "PaymentOption": { - "locationName": "paymentOption" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "UpfrontPrice": { - "locationName": "upfrontPrice" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Count": { - "locationName": "count", - "type": "integer" - }, - "Duration": { - "locationName": "duration", - "type": "integer" - }, - "End": { - "locationName": "end", - "type": "timestamp" - }, - "Start": { - "locationName": "start", - "type": "timestamp" - }, - "State": { - "locationName": "state" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeHosts": { - "input": { - "type": "structure", - "members": { - "HostIds": { - "shape": "S9r", - "locationName": "hostId" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "Filter": { - "shape": "S7y", - "locationName": "filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "Hosts": { - "locationName": "hostSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "HostId": { - "locationName": "hostId" - }, - "AutoPlacement": { - "locationName": "autoPlacement" - }, - "HostReservationId": { - "locationName": "hostReservationId" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "HostProperties": { - "locationName": "hostProperties", - "type": "structure", - "members": { - "Sockets": { - "locationName": "sockets", - "type": "integer" - }, - "Cores": { - "locationName": "cores", - "type": "integer" - }, - "TotalVCpus": { - "locationName": "totalVCpus", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - } - } - }, - "State": { - "locationName": "state" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Instances": { - "locationName": "instances", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceType": { - "locationName": "instanceType" - } - } - } - }, - "AvailableCapacity": { - "locationName": "availableCapacity", - "type": "structure", - "members": { - "AvailableInstanceCapacity": { - "locationName": "availableInstanceCapacity", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceType": { - "locationName": "instanceType" - }, - "AvailableCapacity": { - "locationName": "availableCapacity", - "type": "integer" - }, - "TotalCapacity": { - "locationName": "totalCapacity", - "type": "integer" - } - } - } - }, - "AvailableVCpus": { - "locationName": "availableVCpus", - "type": "integer" - } - } - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeIdFormat": { - "input": { - "type": "structure", - "members": { - "Resource": {} - } - }, - "output": { - "type": "structure", - "members": { - "Statuses": { - "shape": "Sa4", - "locationName": "statusSet" - } - } - } - }, - "DescribeIdentityIdFormat": { - "input": { - "type": "structure", - "required": [ - "PrincipalArn" - ], - "members": { - "Resource": { - "locationName": "resource" - }, - "PrincipalArn": { - "locationName": "principalArn" - } - } - }, - "output": { - "type": "structure", - "members": { - "Statuses": { - "shape": "Sa4", - "locationName": "statusSet" - } - } - } - }, - "DescribeImageAttribute": { - "input": { - "type": "structure", - "required": [ - "ImageId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageId": {}, - "Attribute": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - }, - "LaunchPermissions": { - "shape": "Sab", - "locationName": "launchPermission" - }, - "ProductCodes": { - "shape": "Sae", - "locationName": "productCodes" - }, - "KernelId": { - "shape": "S39", - "locationName": "kernel" - }, - "RamdiskId": { - "shape": "S39", - "locationName": "ramdisk" - }, - "Description": { - "shape": "S39", - "locationName": "description" - }, - "SriovNetSupport": { - "shape": "S39", - "locationName": "sriovNetSupport" - }, - "BlockDeviceMappings": { - "shape": "Sah", - "locationName": "blockDeviceMapping" - } - } - } - }, - "DescribeImages": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageIds": { - "locationName": "ImageId", - "type": "list", - "member": { - "locationName": "ImageId" - } - }, - "Owners": { - "shape": "Sak", - "locationName": "Owner" - }, - "ExecutableUsers": { - "locationName": "ExecutableBy", - "type": "list", - "member": { - "locationName": "ExecutableBy" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "Images": { - "locationName": "imagesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - }, - "ImageLocation": { - "locationName": "imageLocation" - }, - "State": { - "locationName": "imageState" - }, - "OwnerId": { - "locationName": "imageOwnerId" - }, - "CreationDate": { - "locationName": "creationDate" - }, - "Public": { - "locationName": "isPublic", - "type": "boolean" - }, - "ProductCodes": { - "shape": "Sae", - "locationName": "productCodes" - }, - "Architecture": { - "locationName": "architecture" - }, - "ImageType": { - "locationName": "imageType" - }, - "KernelId": { - "locationName": "kernelId" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "Platform": { - "locationName": "platform" - }, - "SriovNetSupport": { - "locationName": "sriovNetSupport" - }, - "EnaSupport": { - "locationName": "enaSupport", - "type": "boolean" - }, - "StateReason": { - "shape": "Sas", - "locationName": "stateReason" - }, - "ImageOwnerAlias": { - "locationName": "imageOwnerAlias" - }, - "Name": { - "locationName": "name" - }, - "Description": { - "locationName": "description" - }, - "RootDeviceType": { - "locationName": "rootDeviceType" - }, - "RootDeviceName": { - "locationName": "rootDeviceName" - }, - "BlockDeviceMappings": { - "shape": "Sah", - "locationName": "blockDeviceMapping" - }, - "VirtualizationType": { - "locationName": "virtualizationType" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "Hypervisor": { - "locationName": "hypervisor" - } - } - } - } - } - } - }, - "DescribeImportImageTasks": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "ImportTaskIds": { - "shape": "Sax", - "locationName": "ImportTaskId" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "Filters": { - "shape": "S7y" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImportImageTasks": { - "locationName": "importImageTaskSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ImportTaskId": { - "locationName": "importTaskId" - }, - "Architecture": { - "locationName": "architecture" - }, - "LicenseType": { - "locationName": "licenseType" - }, - "Platform": { - "locationName": "platform" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "Description": { - "locationName": "description" - }, - "SnapshotDetails": { - "shape": "Sb1", - "locationName": "snapshotDetailSet" - }, - "ImageId": { - "locationName": "imageId" - }, - "Progress": { - "locationName": "progress" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeImportSnapshotTasks": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "ImportTaskIds": { - "shape": "Sax", - "locationName": "ImportTaskId" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "Filters": { - "shape": "S7y" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImportSnapshotTasks": { - "locationName": "importSnapshotTaskSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ImportTaskId": { - "locationName": "importTaskId" - }, - "SnapshotTaskDetail": { - "shape": "Sb8", - "locationName": "snapshotTaskDetail" - }, - "Description": { - "locationName": "description" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeInstanceAttribute": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Attribute": { - "locationName": "attribute" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceType": { - "shape": "S39", - "locationName": "instanceType" - }, - "KernelId": { - "shape": "S39", - "locationName": "kernel" - }, - "RamdiskId": { - "shape": "S39", - "locationName": "ramdisk" - }, - "UserData": { - "shape": "S39", - "locationName": "userData" - }, - "DisableApiTermination": { - "shape": "Sbc", - "locationName": "disableApiTermination" - }, - "InstanceInitiatedShutdownBehavior": { - "shape": "S39", - "locationName": "instanceInitiatedShutdownBehavior" - }, - "RootDeviceName": { - "shape": "S39", - "locationName": "rootDeviceName" - }, - "BlockDeviceMappings": { - "shape": "Sbd", - "locationName": "blockDeviceMapping" - }, - "ProductCodes": { - "shape": "Sae", - "locationName": "productCodes" - }, - "EbsOptimized": { - "shape": "Sbc", - "locationName": "ebsOptimized" - }, - "SriovNetSupport": { - "shape": "S39", - "locationName": "sriovNetSupport" - }, - "EnaSupport": { - "shape": "Sbc", - "locationName": "enaSupport" - }, - "SourceDestCheck": { - "shape": "Sbc", - "locationName": "sourceDestCheck" - }, - "Groups": { - "shape": "S4t", - "locationName": "groupSet" - } - } - } - }, - "DescribeInstanceStatus": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "IncludeAllInstances": { - "locationName": "includeAllInstances", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceStatuses": { - "locationName": "instanceStatusSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Events": { - "locationName": "eventsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Description": { - "locationName": "description" - }, - "NotBefore": { - "locationName": "notBefore", - "type": "timestamp" - }, - "NotAfter": { - "locationName": "notAfter", - "type": "timestamp" - } - } - } - }, - "InstanceState": { - "shape": "Sbn", - "locationName": "instanceState" - }, - "SystemStatus": { - "shape": "Sbp", - "locationName": "systemStatus" - }, - "InstanceStatus": { - "shape": "Sbp", - "locationName": "instanceStatus" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeInstances": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Reservations": { - "locationName": "reservationSet", - "type": "list", - "member": { - "shape": "Sby", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeInternetGateways": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayIds": { - "shape": "S2c", - "locationName": "internetGatewayId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "InternetGateways": { - "locationName": "internetGatewaySet", - "type": "list", - "member": { - "shape": "S3z", - "locationName": "item" - } - } - } - } - }, - "DescribeKeyPairs": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "KeyNames": { - "locationName": "KeyName", - "type": "list", - "member": { - "locationName": "KeyName" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyPairs": { - "locationName": "keySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "KeyName": { - "locationName": "keyName" - }, - "KeyFingerprint": { - "locationName": "keyFingerprint" - } - } - } - } - } - } - }, - "DescribeMovingAddresses": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIps": { - "shape": "S2c", - "locationName": "publicIp" - }, - "NextToken": { - "locationName": "nextToken" - }, - "Filters": { - "shape": "S7y", - "locationName": "filter" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "MovingAddressStatuses": { - "locationName": "movingAddressStatusSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "MoveStatus": { - "locationName": "moveStatus" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeNatGateways": { - "input": { - "type": "structure", - "members": { - "NatGatewayIds": { - "shape": "S2c", - "locationName": "NatGatewayId" - }, - "Filter": { - "shape": "S7y" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "NatGateways": { - "locationName": "natGatewaySet", - "type": "list", - "member": { - "shape": "S46", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeNetworkAcls": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclIds": { - "shape": "S2c", - "locationName": "NetworkAclId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkAcls": { - "locationName": "networkAclSet", - "type": "list", - "member": { - "shape": "S4d", - "locationName": "item" - } - } - } - } - }, - "DescribeNetworkInterfaceAttribute": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "Attribute": { - "locationName": "attribute" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "Description": { - "shape": "S39", - "locationName": "description" - }, - "SourceDestCheck": { - "shape": "Sbc", - "locationName": "sourceDestCheck" - }, - "Groups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "Attachment": { - "shape": "S4v", - "locationName": "attachment" - } - } - } - }, - "DescribeNetworkInterfaces": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceIds": { - "locationName": "NetworkInterfaceId", - "type": "list", - "member": { - "locationName": "item" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "NetworkInterfaces": { - "locationName": "networkInterfaceSet", - "type": "list", - "member": { - "shape": "S4r", - "locationName": "item" - } - } - } - } - }, - "DescribePlacementGroups": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupNames": { - "locationName": "groupName", - "type": "list", - "member": {} - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "PlacementGroups": { - "locationName": "placementGroupSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "GroupName": { - "locationName": "groupName" - }, - "Strategy": { - "locationName": "strategy" - }, - "State": { - "locationName": "state" - } - } - } - } - } - } - }, - "DescribePrefixLists": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "PrefixListIds": { - "shape": "S2c", - "locationName": "PrefixListId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PrefixLists": { - "locationName": "prefixListSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "PrefixListId": { - "locationName": "prefixListId" - }, - "PrefixListName": { - "locationName": "prefixListName" - }, - "Cidrs": { - "shape": "S2c", - "locationName": "cidrSet" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeRegions": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RegionNames": { - "locationName": "RegionName", - "type": "list", - "member": { - "locationName": "RegionName" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "Regions": { - "locationName": "regionInfo", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "RegionName": { - "locationName": "regionName" - }, - "Endpoint": { - "locationName": "regionEndpoint" - } - } - } - } - } - } - }, - "DescribeReservedInstances": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ReservedInstancesIds": { - "shape": "Sdj", - "locationName": "ReservedInstancesId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "OfferingType": { - "locationName": "offeringType" - }, - "OfferingClass": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstances": { - "locationName": "reservedInstancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Start": { - "locationName": "start", - "type": "timestamp" - }, - "End": { - "locationName": "end", - "type": "timestamp" - }, - "Duration": { - "locationName": "duration", - "type": "long" - }, - "UsagePrice": { - "locationName": "usagePrice", - "type": "float" - }, - "FixedPrice": { - "locationName": "fixedPrice", - "type": "float" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "State": { - "locationName": "state" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "OfferingType": { - "locationName": "offeringType" - }, - "RecurringCharges": { - "shape": "Sds", - "locationName": "recurringCharges" - }, - "OfferingClass": { - "locationName": "offeringClass" - }, - "Scope": { - "locationName": "scope" - } - } - } - } - } - } - }, - "DescribeReservedInstancesListings": { - "input": { - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "ReservedInstancesListingId": { - "locationName": "reservedInstancesListingId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesListings": { - "shape": "S20", - "locationName": "reservedInstancesListingsSet" - } - } - } - }, - "DescribeReservedInstancesModifications": { - "input": { - "type": "structure", - "members": { - "ReservedInstancesModificationIds": { - "locationName": "ReservedInstancesModificationId", - "type": "list", - "member": { - "locationName": "ReservedInstancesModificationId" - } - }, - "NextToken": { - "locationName": "nextToken" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesModifications": { - "locationName": "reservedInstancesModificationsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesModificationId": { - "locationName": "reservedInstancesModificationId" - }, - "ReservedInstancesIds": { - "locationName": "reservedInstancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - } - } - } - }, - "ModificationResults": { - "locationName": "modificationResultSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "TargetConfiguration": { - "shape": "Se7", - "locationName": "targetConfiguration" - } - } - } - }, - "CreateDate": { - "locationName": "createDate", - "type": "timestamp" - }, - "UpdateDate": { - "locationName": "updateDate", - "type": "timestamp" - }, - "EffectiveDate": { - "locationName": "effectiveDate", - "type": "timestamp" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "ClientToken": { - "locationName": "clientToken" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeReservedInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ReservedInstancesOfferingIds": { - "locationName": "ReservedInstancesOfferingId", - "type": "list", - "member": {} - }, - "InstanceType": {}, - "AvailabilityZone": {}, - "ProductDescription": {}, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "OfferingType": { - "locationName": "offeringType" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "IncludeMarketplace": { - "type": "boolean" - }, - "MinDuration": { - "type": "long" - }, - "MaxDuration": { - "type": "long" - }, - "MaxInstanceCount": { - "type": "integer" - }, - "OfferingClass": {} - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesOfferings": { - "locationName": "reservedInstancesOfferingsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesOfferingId": { - "locationName": "reservedInstancesOfferingId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Duration": { - "locationName": "duration", - "type": "long" - }, - "UsagePrice": { - "locationName": "usagePrice", - "type": "float" - }, - "FixedPrice": { - "locationName": "fixedPrice", - "type": "float" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "OfferingType": { - "locationName": "offeringType" - }, - "RecurringCharges": { - "shape": "Sds", - "locationName": "recurringCharges" - }, - "Marketplace": { - "locationName": "marketplace", - "type": "boolean" - }, - "PricingDetails": { - "locationName": "pricingDetailsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Price": { - "locationName": "price", - "type": "double" - }, - "Count": { - "locationName": "count", - "type": "integer" - } - } - } - }, - "OfferingClass": { - "locationName": "offeringClass" - }, - "Scope": { - "locationName": "scope" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeRouteTables": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableIds": { - "shape": "S2c", - "locationName": "RouteTableId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "RouteTables": { - "locationName": "routeTableSet", - "type": "list", - "member": { - "shape": "S5a", - "locationName": "item" - } - } - } - } - }, - "DescribeScheduledInstanceAvailability": { - "input": { - "type": "structure", - "required": [ - "Recurrence", - "FirstSlotStartTimeRange" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "Recurrence": { - "type": "structure", - "members": { - "Frequency": {}, - "Interval": { - "type": "integer" - }, - "OccurrenceDays": { - "locationName": "OccurrenceDay", - "type": "list", - "member": { - "locationName": "OccurenceDay", - "type": "integer" - } - }, - "OccurrenceRelativeToEnd": { - "type": "boolean" - }, - "OccurrenceUnit": {} - } - }, - "FirstSlotStartTimeRange": { - "type": "structure", - "required": [ - "EarliestTime", - "LatestTime" - ], - "members": { - "EarliestTime": { - "type": "timestamp" - }, - "LatestTime": { - "type": "timestamp" - } - } - }, - "MinSlotDurationInHours": { - "type": "integer" - }, - "MaxSlotDurationInHours": { - "type": "integer" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "ScheduledInstanceAvailabilitySet": { - "locationName": "scheduledInstanceAvailabilitySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceType": { - "locationName": "instanceType" - }, - "Platform": { - "locationName": "platform" - }, - "NetworkPlatform": { - "locationName": "networkPlatform" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "PurchaseToken": { - "locationName": "purchaseToken" - }, - "SlotDurationInHours": { - "locationName": "slotDurationInHours", - "type": "integer" - }, - "Recurrence": { - "shape": "Sep", - "locationName": "recurrence" - }, - "FirstSlotStartTime": { - "locationName": "firstSlotStartTime", - "type": "timestamp" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "TotalScheduledInstanceHours": { - "locationName": "totalScheduledInstanceHours", - "type": "integer" - }, - "AvailableInstanceCount": { - "locationName": "availableInstanceCount", - "type": "integer" - }, - "MinTermDurationInDays": { - "locationName": "minTermDurationInDays", - "type": "integer" - }, - "MaxTermDurationInDays": { - "locationName": "maxTermDurationInDays", - "type": "integer" - } - } - } - } - } - } - }, - "DescribeScheduledInstances": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "ScheduledInstanceIds": { - "locationName": "ScheduledInstanceId", - "type": "list", - "member": { - "locationName": "ScheduledInstanceId" - } - }, - "SlotStartTimeRange": { - "type": "structure", - "members": { - "EarliestTime": { - "type": "timestamp" - }, - "LatestTime": { - "type": "timestamp" - } - } - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextToken": { - "locationName": "nextToken" - }, - "ScheduledInstanceSet": { - "locationName": "scheduledInstanceSet", - "type": "list", - "member": { - "shape": "Sew", - "locationName": "item" - } - } - } - } - }, - "DescribeSecurityGroupReferences": { - "input": { - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "GroupId": { - "type": "list", - "member": { - "locationName": "item" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "SecurityGroupReferenceSet": { - "locationName": "securityGroupReferenceSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "GroupId", - "ReferencingVpcId" - ], - "members": { - "GroupId": { - "locationName": "groupId" - }, - "ReferencingVpcId": { - "locationName": "referencingVpcId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - } - } - } - } - }, - "DescribeSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupNames": { - "shape": "Sf3", - "locationName": "GroupName" - }, - "GroupIds": { - "shape": "Sy", - "locationName": "GroupId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "SecurityGroups": { - "locationName": "securityGroupInfo", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "OwnerId": { - "locationName": "ownerId" - }, - "GroupName": { - "locationName": "groupName" - }, - "GroupId": { - "locationName": "groupId" - }, - "Description": { - "locationName": "groupDescription" - }, - "IpPermissions": { - "shape": "S1b", - "locationName": "ipPermissions" - }, - "IpPermissionsEgress": { - "shape": "S1b", - "locationName": "ipPermissionsEgress" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - } - } - } - } - }, - "DescribeSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "SnapshotId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SnapshotId": {}, - "Attribute": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": { - "locationName": "snapshotId" - }, - "CreateVolumePermissions": { - "shape": "Sfa", - "locationName": "createVolumePermission" - }, - "ProductCodes": { - "shape": "Sae", - "locationName": "productCodes" - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SnapshotIds": { - "locationName": "SnapshotId", - "type": "list", - "member": { - "locationName": "SnapshotId" - } - }, - "OwnerIds": { - "shape": "Sak", - "locationName": "Owner" - }, - "RestorableByUserIds": { - "locationName": "RestorableBy", - "type": "list", - "member": {} - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Snapshots": { - "locationName": "snapshotSet", - "type": "list", - "member": { - "shape": "S5m", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeSpotDatafeedSubscription": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotDatafeedSubscription": { - "shape": "S5q", - "locationName": "spotDatafeedSubscription" - } - } - } - }, - "DescribeSpotFleetInstances": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SpotFleetRequestId", - "ActiveInstances" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "ActiveInstances": { - "locationName": "activeInstanceSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceType": { - "locationName": "instanceType" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeSpotFleetRequestHistory": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestId", - "StartTime" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "EventType": { - "locationName": "eventType" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SpotFleetRequestId", - "StartTime", - "LastEvaluatedTime", - "HistoryRecords" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "LastEvaluatedTime": { - "locationName": "lastEvaluatedTime", - "type": "timestamp" - }, - "HistoryRecords": { - "locationName": "historyRecordSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "Timestamp", - "EventType", - "EventInformation" - ], - "members": { - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - }, - "EventType": { - "locationName": "eventType" - }, - "EventInformation": { - "locationName": "eventInformation", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "EventSubType": { - "locationName": "eventSubType" - }, - "EventDescription": { - "locationName": "eventDescription" - } - } - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeSpotFleetRequests": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestIds": { - "shape": "S2c", - "locationName": "spotFleetRequestId" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SpotFleetRequestConfigs" - ], - "members": { - "SpotFleetRequestConfigs": { - "locationName": "spotFleetRequestConfigSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "SpotFleetRequestId", - "SpotFleetRequestState", - "SpotFleetRequestConfig", - "CreateTime" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "SpotFleetRequestState": { - "locationName": "spotFleetRequestState" - }, - "SpotFleetRequestConfig": { - "shape": "Sfx", - "locationName": "spotFleetRequestConfig" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "ActivityStatus": { - "locationName": "activityStatus" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeSpotInstanceRequests": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotInstanceRequestIds": { - "shape": "S2m", - "locationName": "SpotInstanceRequestId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotInstanceRequests": { - "shape": "Sgb", - "locationName": "spotInstanceRequestSet" - } - } - } - }, - "DescribeSpotPriceHistory": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "EndTime": { - "locationName": "endTime", - "type": "timestamp" - }, - "InstanceTypes": { - "locationName": "InstanceType", - "type": "list", - "member": {} - }, - "ProductDescriptions": { - "locationName": "ProductDescription", - "type": "list", - "member": {} - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotPriceHistory": { - "locationName": "spotPriceHistorySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceType": { - "locationName": "instanceType" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeStaleSecurityGroups": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "StaleSecurityGroupSet": { - "locationName": "staleSecurityGroupSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "GroupId": { - "locationName": "groupId" - }, - "GroupName": { - "locationName": "groupName" - }, - "Description": { - "locationName": "description" - }, - "VpcId": { - "locationName": "vpcId" - }, - "StaleIpPermissions": { - "shape": "Sgu", - "locationName": "staleIpPermissions" - }, - "StaleIpPermissionsEgress": { - "shape": "Sgu", - "locationName": "staleIpPermissionsEgress" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeSubnets": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SubnetIds": { - "locationName": "SubnetId", - "type": "list", - "member": { - "locationName": "SubnetId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "Subnets": { - "locationName": "subnetSet", - "type": "list", - "member": { - "shape": "S5v", - "locationName": "item" - } - } - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "locationName": "tagSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ResourceId": { - "locationName": "resourceId" - }, - "ResourceType": { - "locationName": "resourceType" - }, - "Key": { - "locationName": "key" - }, - "Value": { - "locationName": "value" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVolumeAttribute": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": {}, - "Attribute": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "AutoEnableIO": { - "shape": "Sbc", - "locationName": "autoEnableIO" - }, - "ProductCodes": { - "shape": "Sae", - "locationName": "productCodes" - } - } - } - }, - "DescribeVolumeStatus": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeIds": { - "shape": "Shc", - "locationName": "VolumeId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "VolumeStatuses": { - "locationName": "volumeStatusSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "VolumeStatus": { - "locationName": "volumeStatus", - "type": "structure", - "members": { - "Status": { - "locationName": "status" - }, - "Details": { - "locationName": "details", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Name": { - "locationName": "name" - }, - "Status": { - "locationName": "status" - } - } - } - } - } - }, - "Events": { - "locationName": "eventsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "EventType": { - "locationName": "eventType" - }, - "Description": { - "locationName": "description" - }, - "NotBefore": { - "locationName": "notBefore", - "type": "timestamp" - }, - "NotAfter": { - "locationName": "notAfter", - "type": "timestamp" - }, - "EventId": { - "locationName": "eventId" - } - } - } - }, - "Actions": { - "locationName": "actionsSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Description": { - "locationName": "description" - }, - "EventType": { - "locationName": "eventType" - }, - "EventId": { - "locationName": "eventId" - } - } - } - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVolumes": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeIds": { - "shape": "Shc", - "locationName": "VolumeId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "NextToken": { - "locationName": "nextToken" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Volumes": { - "locationName": "volumeSet", - "type": "list", - "member": { - "shape": "S60", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVpcAttribute": { - "input": { - "type": "structure", - "required": [ - "VpcId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": {}, - "Attribute": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "EnableDnsSupport": { - "shape": "Sbc", - "locationName": "enableDnsSupport" - }, - "EnableDnsHostnames": { - "shape": "Sbc", - "locationName": "enableDnsHostnames" - } - } - } - }, - "DescribeVpcClassicLink": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcIds": { - "shape": "Shw", - "locationName": "VpcId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpcs": { - "locationName": "vpcSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "ClassicLinkEnabled": { - "locationName": "classicLinkEnabled", - "type": "boolean" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - } - } - } - } - }, - "DescribeVpcClassicLinkDnsSupport": { - "input": { - "type": "structure", - "members": { - "VpcIds": { - "shape": "Shw" - }, - "MaxResults": { - "locationName": "maxResults", - "type": "integer" - }, - "NextToken": { - "locationName": "nextToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpcs": { - "locationName": "vpcs", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "ClassicLinkDnsSupported": { - "locationName": "classicLinkDnsSupported", - "type": "boolean" - } - } - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVpcEndpointServices": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ServiceNames": { - "shape": "S2c", - "locationName": "serviceNameSet" - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVpcEndpoints": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcEndpointIds": { - "shape": "S2c", - "locationName": "VpcEndpointId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "VpcEndpoints": { - "locationName": "vpcEndpointSet", - "type": "list", - "member": { - "shape": "S6a", - "locationName": "item" - } - }, - "NextToken": { - "locationName": "nextToken" - } - } - } - }, - "DescribeVpcPeeringConnections": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionIds": { - "shape": "S2c", - "locationName": "VpcPeeringConnectionId" - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpcPeeringConnections": { - "locationName": "vpcPeeringConnectionSet", - "type": "list", - "member": { - "shape": "Sb", - "locationName": "item" - } - } - } - } - }, - "DescribeVpcs": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcIds": { - "locationName": "VpcId", - "type": "list", - "member": { - "locationName": "VpcId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "Vpcs": { - "locationName": "vpcSet", - "type": "list", - "member": { - "shape": "S66", - "locationName": "item" - } - } - } - } - }, - "DescribeVpnConnections": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpnConnectionIds": { - "locationName": "VpnConnectionId", - "type": "list", - "member": { - "locationName": "VpnConnectionId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnConnections": { - "locationName": "vpnConnectionSet", - "type": "list", - "member": { - "shape": "S6h", - "locationName": "item" - } - } - } - } - }, - "DescribeVpnGateways": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpnGatewayIds": { - "locationName": "VpnGatewayId", - "type": "list", - "member": { - "locationName": "VpnGatewayId" - } - }, - "Filters": { - "shape": "S7y", - "locationName": "Filter" - } - } - }, - "output": { - "type": "structure", - "members": { - "VpnGateways": { - "locationName": "vpnGatewaySet", - "type": "list", - "member": { - "shape": "S6t", - "locationName": "item" - } - } - } - } - }, - "DetachClassicLinkVpc": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DetachInternetGateway": { - "input": { - "type": "structure", - "required": [ - "InternetGatewayId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InternetGatewayId": { - "locationName": "internetGatewayId" - }, - "VpcId": { - "locationName": "vpcId" - } - } - } - }, - "DetachNetworkInterface": { - "input": { - "type": "structure", - "required": [ - "AttachmentId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "AttachmentId": { - "locationName": "attachmentId" - }, - "Force": { - "locationName": "force", - "type": "boolean" - } - } - } - }, - "DetachVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": {}, - "InstanceId": {}, - "Device": {}, - "Force": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S14" - } - }, - "DetachVpnGateway": { - "input": { - "type": "structure", - "required": [ - "VpnGatewayId", - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpnGatewayId": {}, - "VpcId": {} - } - } - }, - "DisableVgwRoutePropagation": { - "input": { - "type": "structure", - "required": [ - "RouteTableId", - "GatewayId" - ], - "members": { - "RouteTableId": {}, - "GatewayId": {} - } - } - }, - "DisableVpcClassicLink": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DisableVpcClassicLinkDnsSupport": { - "input": { - "type": "structure", - "members": { - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "DisassociateAddress": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIp": {}, - "AssociationId": {} - } - } - }, - "DisassociateRouteTable": { - "input": { - "type": "structure", - "required": [ - "AssociationId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "AssociationId": { - "locationName": "associationId" - } - } - } - }, - "EnableVgwRoutePropagation": { - "input": { - "type": "structure", - "required": [ - "RouteTableId", - "GatewayId" - ], - "members": { - "RouteTableId": {}, - "GatewayId": {} - } - } - }, - "EnableVolumeIO": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": { - "locationName": "volumeId" - } - } - } - }, - "EnableVpcClassicLink": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcId": { - "locationName": "vpcId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "EnableVpcClassicLinkDnsSupport": { - "input": { - "type": "structure", - "members": { - "VpcId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "GetConsoleOutput": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - }, - "Output": { - "locationName": "output" - } - } - } - }, - "GetConsoleScreenshot": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "InstanceId": {}, - "WakeUp": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "ImageData": { - "locationName": "imageData" - } - } - } - }, - "GetHostReservationPurchasePreview": { - "input": { - "type": "structure", - "required": [ - "OfferingId", - "HostIdSet" - ], - "members": { - "OfferingId": {}, - "HostIdSet": { - "shape": "Sjc" - } - } - }, - "output": { - "type": "structure", - "members": { - "Purchase": { - "shape": "Sje", - "locationName": "purchase" - }, - "TotalUpfrontPrice": { - "locationName": "totalUpfrontPrice" - }, - "TotalHourlyPrice": { - "locationName": "totalHourlyPrice" - }, - "CurrencyCode": { - "locationName": "currencyCode" - } - } - } - }, - "GetPasswordData": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "Timestamp": { - "locationName": "timestamp", - "type": "timestamp" - }, - "PasswordData": { - "locationName": "passwordData" - } - } - } - }, - "GetReservedInstancesExchangeQuote": { - "input": { - "type": "structure", - "required": [ - "ReservedInstanceIds" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "ReservedInstanceIds": { - "shape": "S3", - "locationName": "ReservedInstanceId" - }, - "TargetConfigurations": { - "shape": "S5", - "locationName": "TargetConfiguration" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstanceValueSet": { - "locationName": "reservedInstanceValueSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstanceId": { - "locationName": "reservedInstanceId" - }, - "ReservationValue": { - "shape": "Sjm", - "locationName": "reservationValue" - } - } - } - }, - "ReservedInstanceValueRollup": { - "shape": "Sjm", - "locationName": "reservedInstanceValueRollup" - }, - "TargetConfigurationValueSet": { - "locationName": "targetConfigurationValueSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "TargetConfiguration": { - "locationName": "targetConfiguration", - "type": "structure", - "members": { - "OfferingId": { - "locationName": "offeringId" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - } - } - }, - "ReservationValue": { - "shape": "Sjm", - "locationName": "reservationValue" - } - } - } - }, - "TargetConfigurationValueRollup": { - "shape": "Sjm", - "locationName": "targetConfigurationValueRollup" - }, - "PaymentDue": { - "locationName": "paymentDue" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "OutputReservedInstancesWillExpireAt": { - "locationName": "outputReservedInstancesWillExpireAt", - "type": "timestamp" - }, - "IsValidExchange": { - "locationName": "isValidExchange", - "type": "boolean" - }, - "ValidationFailureReason": { - "locationName": "validationFailureReason" - } - } - } - }, - "ImportImage": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Description": {}, - "DiskContainers": { - "locationName": "DiskContainer", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Description": {}, - "Format": {}, - "Url": {}, - "UserBucket": { - "shape": "Sjt" - }, - "DeviceName": {}, - "SnapshotId": {} - } - } - }, - "LicenseType": {}, - "Hypervisor": {}, - "Architecture": {}, - "Platform": {}, - "ClientData": { - "shape": "Sju" - }, - "ClientToken": {}, - "RoleName": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportTaskId": { - "locationName": "importTaskId" - }, - "Architecture": { - "locationName": "architecture" - }, - "LicenseType": { - "locationName": "licenseType" - }, - "Platform": { - "locationName": "platform" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "Description": { - "locationName": "description" - }, - "SnapshotDetails": { - "shape": "Sb1", - "locationName": "snapshotDetailSet" - }, - "ImageId": { - "locationName": "imageId" - }, - "Progress": { - "locationName": "progress" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "ImportInstance": { - "input": { - "type": "structure", - "required": [ - "Platform" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Description": { - "locationName": "description" - }, - "LaunchSpecification": { - "locationName": "launchSpecification", - "type": "structure", - "members": { - "Architecture": { - "locationName": "architecture" - }, - "GroupNames": { - "shape": "Sjy", - "locationName": "GroupName" - }, - "GroupIds": { - "shape": "S4n", - "locationName": "GroupId" - }, - "AdditionalInfo": { - "locationName": "additionalInfo" - }, - "UserData": { - "locationName": "userData", - "type": "structure", - "members": { - "Data": { - "locationName": "data" - } - } - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Placement": { - "shape": "Sc2", - "locationName": "placement" - }, - "Monitoring": { - "locationName": "monitoring", - "type": "boolean" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "InstanceInitiatedShutdownBehavior": { - "locationName": "instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - } - } - }, - "DiskImages": { - "locationName": "diskImage", - "type": "list", - "member": { - "type": "structure", - "members": { - "Image": { - "shape": "Sk3" - }, - "Description": {}, - "Volume": { - "shape": "Sk4" - } - } - } - }, - "Platform": { - "locationName": "platform" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConversionTask": { - "shape": "S8p", - "locationName": "conversionTask" - } - } - } - }, - "ImportKeyPair": { - "input": { - "type": "structure", - "required": [ - "KeyName", - "PublicKeyMaterial" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "KeyName": { - "locationName": "keyName" - }, - "PublicKeyMaterial": { - "locationName": "publicKeyMaterial", - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyName": { - "locationName": "keyName" - }, - "KeyFingerprint": { - "locationName": "keyFingerprint" - } - } - } - }, - "ImportSnapshot": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "type": "boolean" - }, - "Description": {}, - "DiskContainer": { - "type": "structure", - "members": { - "Description": {}, - "Format": {}, - "Url": {}, - "UserBucket": { - "shape": "Sjt" - } - } - }, - "ClientData": { - "shape": "Sju" - }, - "ClientToken": {}, - "RoleName": {} - } - }, - "output": { - "type": "structure", - "members": { - "ImportTaskId": { - "locationName": "importTaskId" - }, - "SnapshotTaskDetail": { - "shape": "Sb8", - "locationName": "snapshotTaskDetail" - }, - "Description": { - "locationName": "description" - } - } - } - }, - "ImportVolume": { - "input": { - "type": "structure", - "required": [ - "AvailabilityZone", - "Image", - "Volume" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Image": { - "shape": "Sk3", - "locationName": "image" - }, - "Description": { - "locationName": "description" - }, - "Volume": { - "shape": "Sk4", - "locationName": "volume" - } - } - }, - "output": { - "type": "structure", - "members": { - "ConversionTask": { - "shape": "S8p", - "locationName": "conversionTask" - } - } - } - }, - "ModifyHosts": { - "input": { - "type": "structure", - "required": [ - "HostIds", - "AutoPlacement" - ], - "members": { - "HostIds": { - "shape": "S9r", - "locationName": "hostId" - }, - "AutoPlacement": { - "locationName": "autoPlacement" - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "shape": "Sp", - "locationName": "successful" - }, - "Unsuccessful": { - "shape": "Skf", - "locationName": "unsuccessful" - } - } - } - }, - "ModifyIdFormat": { - "input": { - "type": "structure", - "required": [ - "Resource", - "UseLongIds" - ], - "members": { - "Resource": {}, - "UseLongIds": { - "type": "boolean" - } - } - } - }, - "ModifyIdentityIdFormat": { - "input": { - "type": "structure", - "required": [ - "Resource", - "UseLongIds", - "PrincipalArn" - ], - "members": { - "Resource": { - "locationName": "resource" - }, - "UseLongIds": { - "locationName": "useLongIds", - "type": "boolean" - }, - "PrincipalArn": { - "locationName": "principalArn" - } - } - } - }, - "ModifyImageAttribute": { - "input": { - "type": "structure", - "required": [ - "ImageId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageId": {}, - "Attribute": {}, - "OperationType": {}, - "UserIds": { - "shape": "Skk", - "locationName": "UserId" - }, - "UserGroups": { - "locationName": "UserGroup", - "type": "list", - "member": { - "locationName": "UserGroup" - } - }, - "ProductCodes": { - "locationName": "ProductCode", - "type": "list", - "member": { - "locationName": "ProductCode" - } - }, - "Value": {}, - "LaunchPermission": { - "type": "structure", - "members": { - "Add": { - "shape": "Sab" - }, - "Remove": { - "shape": "Sab" - } - } - }, - "Description": { - "shape": "S39" - } - } - } - }, - "ModifyInstanceAttribute": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Attribute": { - "locationName": "attribute" - }, - "Value": { - "locationName": "value" - }, - "BlockDeviceMappings": { - "locationName": "blockDeviceMapping", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DeviceName": { - "locationName": "deviceName" - }, - "Ebs": { - "locationName": "ebs", - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - }, - "VirtualName": { - "locationName": "virtualName" - }, - "NoDevice": { - "locationName": "noDevice" - } - } - } - }, - "SourceDestCheck": { - "shape": "Sbc" - }, - "DisableApiTermination": { - "shape": "Sbc", - "locationName": "disableApiTermination" - }, - "InstanceType": { - "shape": "S39", - "locationName": "instanceType" - }, - "Kernel": { - "shape": "S39", - "locationName": "kernel" - }, - "Ramdisk": { - "shape": "S39", - "locationName": "ramdisk" - }, - "UserData": { - "locationName": "userData", - "type": "structure", - "members": { - "Value": { - "locationName": "value", - "type": "blob" - } - } - }, - "InstanceInitiatedShutdownBehavior": { - "shape": "S39", - "locationName": "instanceInitiatedShutdownBehavior" - }, - "Groups": { - "shape": "Sy", - "locationName": "GroupId" - }, - "EbsOptimized": { - "shape": "Sbc", - "locationName": "ebsOptimized" - }, - "SriovNetSupport": { - "shape": "S39", - "locationName": "sriovNetSupport" - }, - "EnaSupport": { - "shape": "Sbc", - "locationName": "enaSupport" - } - } - } - }, - "ModifyInstancePlacement": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "Tenancy": { - "locationName": "tenancy" - }, - "Affinity": { - "locationName": "affinity" - }, - "HostId": { - "locationName": "hostId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ModifyNetworkInterfaceAttribute": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "Description": { - "shape": "S39", - "locationName": "description" - }, - "SourceDestCheck": { - "shape": "Sbc", - "locationName": "sourceDestCheck" - }, - "Groups": { - "shape": "S4n", - "locationName": "SecurityGroupId" - }, - "Attachment": { - "locationName": "attachment", - "type": "structure", - "members": { - "AttachmentId": { - "locationName": "attachmentId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - } - } - } - }, - "ModifyReservedInstances": { - "input": { - "type": "structure", - "required": [ - "ReservedInstancesIds", - "TargetConfigurations" - ], - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "ReservedInstancesIds": { - "shape": "Sdj", - "locationName": "ReservedInstancesId" - }, - "TargetConfigurations": { - "locationName": "ReservedInstancesConfigurationSetItemType", - "type": "list", - "member": { - "shape": "Se7", - "locationName": "item" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesModificationId": { - "locationName": "reservedInstancesModificationId" - } - } - } - }, - "ModifySnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "SnapshotId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SnapshotId": {}, - "Attribute": {}, - "OperationType": {}, - "UserIds": { - "shape": "Skk", - "locationName": "UserId" - }, - "GroupNames": { - "shape": "Sf3", - "locationName": "UserGroup" - }, - "CreateVolumePermission": { - "type": "structure", - "members": { - "Add": { - "shape": "Sfa" - }, - "Remove": { - "shape": "Sfa" - } - } - } - } - } - }, - "ModifySpotFleetRequest": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestId" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - }, - "TargetCapacity": { - "locationName": "targetCapacity", - "type": "integer" - }, - "ExcessCapacityTerminationPolicy": { - "locationName": "excessCapacityTerminationPolicy" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ModifySubnetAttribute": { - "input": { - "type": "structure", - "required": [ - "SubnetId" - ], - "members": { - "SubnetId": { - "locationName": "subnetId" - }, - "MapPublicIpOnLaunch": { - "shape": "Sbc" - } - } - } - }, - "ModifyVolumeAttribute": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VolumeId": {}, - "AutoEnableIO": { - "shape": "Sbc" - } - } - } - }, - "ModifyVpcAttribute": { - "input": { - "type": "structure", - "required": [ - "VpcId" - ], - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "EnableDnsSupport": { - "shape": "Sbc" - }, - "EnableDnsHostnames": { - "shape": "Sbc" - } - } - } - }, - "ModifyVpcEndpoint": { - "input": { - "type": "structure", - "required": [ - "VpcEndpointId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcEndpointId": {}, - "ResetPolicy": { - "type": "boolean" - }, - "PolicyDocument": {}, - "AddRouteTableIds": { - "shape": "S2c", - "locationName": "AddRouteTableId" - }, - "RemoveRouteTableIds": { - "shape": "S2c", - "locationName": "RemoveRouteTableId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ModifyVpcPeeringConnectionOptions": { - "input": { - "type": "structure", - "required": [ - "VpcPeeringConnectionId" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "VpcPeeringConnectionId": {}, - "RequesterPeeringConnectionOptions": { - "shape": "Slc" - }, - "AccepterPeeringConnectionOptions": { - "shape": "Slc" - } - } - }, - "output": { - "type": "structure", - "members": { - "RequesterPeeringConnectionOptions": { - "shape": "Sle", - "locationName": "requesterPeeringConnectionOptions" - }, - "AccepterPeeringConnectionOptions": { - "shape": "Sle", - "locationName": "accepterPeeringConnectionOptions" - } - } - } - }, - "MonitorInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceMonitorings": { - "shape": "Slh", - "locationName": "instancesSet" - } - } - } - }, - "MoveAddressToVpc": { - "input": { - "type": "structure", - "required": [ - "PublicIp" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - }, - "output": { - "type": "structure", - "members": { - "AllocationId": { - "locationName": "allocationId" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "PurchaseHostReservation": { - "input": { - "type": "structure", - "required": [ - "OfferingId", - "HostIdSet" - ], - "members": { - "OfferingId": {}, - "HostIdSet": { - "shape": "Sjc" - }, - "LimitPrice": {}, - "CurrencyCode": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Purchase": { - "shape": "Sje", - "locationName": "purchase" - }, - "TotalUpfrontPrice": { - "locationName": "totalUpfrontPrice" - }, - "TotalHourlyPrice": { - "locationName": "totalHourlyPrice" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "ClientToken": { - "locationName": "clientToken" - } - } - } - }, - "PurchaseReservedInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedInstancesOfferingId", - "InstanceCount" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ReservedInstancesOfferingId": {}, - "InstanceCount": { - "type": "integer" - }, - "LimitPrice": { - "locationName": "limitPrice", - "type": "structure", - "members": { - "Amount": { - "locationName": "amount", - "type": "double" - }, - "CurrencyCode": { - "locationName": "currencyCode" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - } - } - } - }, - "PurchaseScheduledInstances": { - "input": { - "type": "structure", - "required": [ - "PurchaseRequests" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "ClientToken": { - "idempotencyToken": true - }, - "PurchaseRequests": { - "locationName": "PurchaseRequest", - "type": "list", - "member": { - "locationName": "PurchaseRequest", - "type": "structure", - "required": [ - "PurchaseToken", - "InstanceCount" - ], - "members": { - "PurchaseToken": {}, - "InstanceCount": { - "type": "integer" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ScheduledInstanceSet": { - "locationName": "scheduledInstanceSet", - "type": "list", - "member": { - "shape": "Sew", - "locationName": "item" - } - } - } - } - }, - "RebootInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - } - } - } - }, - "RegisterImage": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageLocation": {}, - "Name": { - "locationName": "name" - }, - "Description": { - "locationName": "description" - }, - "Architecture": { - "locationName": "architecture" - }, - "KernelId": { - "locationName": "kernelId" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "RootDeviceName": { - "locationName": "rootDeviceName" - }, - "BlockDeviceMappings": { - "shape": "S3i", - "locationName": "BlockDeviceMapping" - }, - "VirtualizationType": { - "locationName": "virtualizationType" - }, - "SriovNetSupport": { - "locationName": "sriovNetSupport" - }, - "EnaSupport": { - "locationName": "enaSupport", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - } - } - } - }, - "RejectVpcPeeringConnection": { - "input": { - "type": "structure", - "required": [ - "VpcPeeringConnectionId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Return": { - "locationName": "return", - "type": "boolean" - } - } - } - }, - "ReleaseAddress": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIp": {}, - "AllocationId": {} - } - } - }, - "ReleaseHosts": { - "input": { - "type": "structure", - "required": [ - "HostIds" - ], - "members": { - "HostIds": { - "shape": "S9r", - "locationName": "hostId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "shape": "Sp", - "locationName": "successful" - }, - "Unsuccessful": { - "shape": "Skf", - "locationName": "unsuccessful" - } - } - } - }, - "ReplaceNetworkAclAssociation": { - "input": { - "type": "structure", - "required": [ - "AssociationId", - "NetworkAclId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "AssociationId": { - "locationName": "associationId" - }, - "NetworkAclId": { - "locationName": "networkAclId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NewAssociationId": { - "locationName": "newAssociationId" - } - } - } - }, - "ReplaceNetworkAclEntry": { - "input": { - "type": "structure", - "required": [ - "NetworkAclId", - "RuleNumber", - "Protocol", - "RuleAction", - "Egress", - "CidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - }, - "Protocol": { - "locationName": "protocol" - }, - "RuleAction": { - "locationName": "ruleAction" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "IcmpTypeCode": { - "shape": "S4h", - "locationName": "Icmp" - }, - "PortRange": { - "shape": "S4i", - "locationName": "portRange" - } - } - } - }, - "ReplaceRoute": { - "input": { - "type": "structure", - "required": [ - "RouteTableId", - "DestinationCidrBlock" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "GatewayId": { - "locationName": "gatewayId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - } - } - } - }, - "ReplaceRouteTableAssociation": { - "input": { - "type": "structure", - "required": [ - "AssociationId", - "RouteTableId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "AssociationId": { - "locationName": "associationId" - }, - "RouteTableId": { - "locationName": "routeTableId" - } - } - }, - "output": { - "type": "structure", - "members": { - "NewAssociationId": { - "locationName": "newAssociationId" - } - } - } - }, - "ReportInstanceStatus": { - "input": { - "type": "structure", - "required": [ - "Instances", - "Status", - "ReasonCodes" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "Instances": { - "shape": "S8h", - "locationName": "instanceId" - }, - "Status": { - "locationName": "status" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "EndTime": { - "locationName": "endTime", - "type": "timestamp" - }, - "ReasonCodes": { - "locationName": "reasonCode", - "type": "list", - "member": { - "locationName": "item" - } - }, - "Description": { - "locationName": "description" - } - } - } - }, - "RequestSpotFleet": { - "input": { - "type": "structure", - "required": [ - "SpotFleetRequestConfig" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotFleetRequestConfig": { - "shape": "Sfx", - "locationName": "spotFleetRequestConfig" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SpotFleetRequestId" - ], - "members": { - "SpotFleetRequestId": { - "locationName": "spotFleetRequestId" - } - } - } - }, - "RequestSpotInstances": { - "input": { - "type": "structure", - "required": [ - "SpotPrice" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "Type": { - "locationName": "type" - }, - "ValidFrom": { - "locationName": "validFrom", - "type": "timestamp" - }, - "ValidUntil": { - "locationName": "validUntil", - "type": "timestamp" - }, - "LaunchGroup": { - "locationName": "launchGroup" - }, - "AvailabilityZoneGroup": { - "locationName": "availabilityZoneGroup" - }, - "BlockDurationMinutes": { - "locationName": "blockDurationMinutes", - "type": "integer" - }, - "LaunchSpecification": { - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - }, - "KeyName": { - "locationName": "keyName" - }, - "SecurityGroups": { - "shape": "S2c", - "locationName": "SecurityGroup" - }, - "UserData": { - "locationName": "userData" - }, - "AddressingType": { - "locationName": "addressingType" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Placement": { - "shape": "Sg0", - "locationName": "placement" - }, - "KernelId": { - "locationName": "kernelId" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "BlockDeviceMappings": { - "shape": "Sah", - "locationName": "blockDeviceMapping" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "NetworkInterfaces": { - "shape": "Sg2", - "locationName": "NetworkInterface" - }, - "IamInstanceProfile": { - "shape": "Sg4", - "locationName": "iamInstanceProfile" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "Monitoring": { - "shape": "Sgh", - "locationName": "monitoring" - }, - "SecurityGroupIds": { - "shape": "S2c", - "locationName": "SecurityGroupId" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "SpotInstanceRequests": { - "shape": "Sgb", - "locationName": "spotInstanceRequestSet" - } - } - } - }, - "ResetImageAttribute": { - "input": { - "type": "structure", - "required": [ - "ImageId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageId": {}, - "Attribute": {} - } - } - }, - "ResetInstanceAttribute": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Attribute": { - "locationName": "attribute" - } - } - } - }, - "ResetNetworkInterfaceAttribute": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck" - } - } - } - }, - "ResetSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "SnapshotId", - "Attribute" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "SnapshotId": {}, - "Attribute": {} - } - } - }, - "RestoreAddressToClassic": { - "input": { - "type": "structure", - "required": [ - "PublicIp" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": { - "locationName": "status" - }, - "PublicIp": { - "locationName": "publicIp" - } - } - } - }, - "RevokeSecurityGroupEgress": { - "input": { - "type": "structure", - "required": [ - "GroupId" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupId": { - "locationName": "groupId" - }, - "SourceSecurityGroupName": { - "locationName": "sourceSecurityGroupName" - }, - "SourceSecurityGroupOwnerId": { - "locationName": "sourceSecurityGroupOwnerId" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "CidrIp": { - "locationName": "cidrIp" - }, - "IpPermissions": { - "shape": "S1b", - "locationName": "ipPermissions" - } - } - } - }, - "RevokeSecurityGroupIngress": { - "input": { - "type": "structure", - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "GroupName": {}, - "GroupId": {}, - "SourceSecurityGroupName": {}, - "SourceSecurityGroupOwnerId": {}, - "IpProtocol": {}, - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - }, - "CidrIp": {}, - "IpPermissions": { - "shape": "S1b" - } - } - } - }, - "RunInstances": { - "input": { - "type": "structure", - "required": [ - "ImageId", - "MinCount", - "MaxCount" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "ImageId": {}, - "MinCount": { - "type": "integer" - }, - "MaxCount": { - "type": "integer" - }, - "KeyName": {}, - "SecurityGroups": { - "shape": "Sjy", - "locationName": "SecurityGroup" - }, - "SecurityGroupIds": { - "shape": "S4n", - "locationName": "SecurityGroupId" - }, - "UserData": {}, - "InstanceType": {}, - "Placement": { - "shape": "Sc2" - }, - "KernelId": {}, - "RamdiskId": {}, - "BlockDeviceMappings": { - "shape": "S3i", - "locationName": "BlockDeviceMapping" - }, - "Monitoring": { - "shape": "Sgh" - }, - "SubnetId": {}, - "DisableApiTermination": { - "locationName": "disableApiTermination", - "type": "boolean" - }, - "InstanceInitiatedShutdownBehavior": { - "locationName": "instanceInitiatedShutdownBehavior" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "AdditionalInfo": { - "locationName": "additionalInfo" - }, - "NetworkInterfaces": { - "shape": "Sg2", - "locationName": "networkInterface" - }, - "IamInstanceProfile": { - "shape": "Sg4", - "locationName": "iamInstanceProfile" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - } - } - }, - "output": { - "shape": "Sby" - } - }, - "RunScheduledInstances": { - "input": { - "type": "structure", - "required": [ - "ScheduledInstanceId", - "LaunchSpecification" - ], - "members": { - "DryRun": { - "type": "boolean" - }, - "ClientToken": { - "idempotencyToken": true - }, - "InstanceCount": { - "type": "integer" - }, - "ScheduledInstanceId": {}, - "LaunchSpecification": { - "type": "structure", - "required": [ - "ImageId" - ], - "members": { - "ImageId": {}, - "KeyName": {}, - "SecurityGroupIds": { - "shape": "Smv", - "locationName": "SecurityGroupId" - }, - "UserData": {}, - "Placement": { - "type": "structure", - "members": { - "AvailabilityZone": {}, - "GroupName": {} - } - }, - "KernelId": {}, - "InstanceType": {}, - "RamdiskId": {}, - "BlockDeviceMappings": { - "locationName": "BlockDeviceMapping", - "type": "list", - "member": { - "locationName": "BlockDeviceMapping", - "type": "structure", - "members": { - "DeviceName": {}, - "NoDevice": {}, - "VirtualName": {}, - "Ebs": { - "type": "structure", - "members": { - "SnapshotId": {}, - "VolumeSize": { - "type": "integer" - }, - "DeleteOnTermination": { - "type": "boolean" - }, - "VolumeType": {}, - "Iops": { - "type": "integer" - }, - "Encrypted": { - "type": "boolean" - } - } - } - } - } - }, - "Monitoring": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "SubnetId": {}, - "NetworkInterfaces": { - "locationName": "NetworkInterface", - "type": "list", - "member": { - "locationName": "NetworkInterface", - "type": "structure", - "members": { - "NetworkInterfaceId": {}, - "DeviceIndex": { - "type": "integer" - }, - "SubnetId": {}, - "Description": {}, - "PrivateIpAddress": {}, - "PrivateIpAddressConfigs": { - "locationName": "PrivateIpAddressConfig", - "type": "list", - "member": { - "locationName": "PrivateIpAddressConfigSet", - "type": "structure", - "members": { - "PrivateIpAddress": {}, - "Primary": { - "type": "boolean" - } - } - } - }, - "SecondaryPrivateIpAddressCount": { - "type": "integer" - }, - "AssociatePublicIpAddress": { - "type": "boolean" - }, - "Groups": { - "shape": "Smv", - "locationName": "Group" - }, - "DeleteOnTermination": { - "type": "boolean" - } - } - } - }, - "IamInstanceProfile": { - "type": "structure", - "members": { - "Arn": {}, - "Name": {} - } - }, - "EbsOptimized": { - "type": "boolean" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceIdSet": { - "locationName": "instanceIdSet", - "type": "list", - "member": { - "locationName": "item" - } - } - } - } - }, - "StartInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - }, - "AdditionalInfo": { - "locationName": "additionalInfo" - }, - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "StartingInstances": { - "shape": "Sna", - "locationName": "instancesSet" - } - } - } - }, - "StopInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - }, - "Force": { - "locationName": "force", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "StoppingInstances": { - "shape": "Sna", - "locationName": "instancesSet" - } - } - } - }, - "TerminateInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "TerminatingInstances": { - "shape": "Sna", - "locationName": "instancesSet" - } - } - } - }, - "UnassignPrivateIpAddresses": { - "input": { - "type": "structure", - "required": [ - "NetworkInterfaceId", - "PrivateIpAddresses" - ], - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "PrivateIpAddresses": { - "shape": "Sr", - "locationName": "privateIpAddress" - } - } - } - }, - "UnmonitorInstances": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "DryRun": { - "locationName": "dryRun", - "type": "boolean" - }, - "InstanceIds": { - "shape": "S8h", - "locationName": "InstanceId" - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceMonitorings": { - "shape": "Slh", - "locationName": "instancesSet" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "ReservedInstanceId" - } - }, - "S5": { - "type": "list", - "member": { - "locationName": "TargetConfigurationRequest", - "type": "structure", - "required": [ - "OfferingId" - ], - "members": { - "OfferingId": {}, - "InstanceCount": { - "type": "integer" - } - } - } - }, - "Sb": { - "type": "structure", - "members": { - "AccepterVpcInfo": { - "shape": "Sc", - "locationName": "accepterVpcInfo" - }, - "ExpirationTime": { - "locationName": "expirationTime", - "type": "timestamp" - }, - "RequesterVpcInfo": { - "shape": "Sc", - "locationName": "requesterVpcInfo" - }, - "Status": { - "locationName": "status", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - } - } - }, - "Sc": { - "type": "structure", - "members": { - "CidrBlock": { - "locationName": "cidrBlock" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "PeeringOptions": { - "locationName": "peeringOptions", - "type": "structure", - "members": { - "AllowEgressFromLocalClassicLinkToRemoteVpc": { - "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc", - "type": "boolean" - }, - "AllowEgressFromLocalVpcToRemoteClassicLink": { - "locationName": "allowEgressFromLocalVpcToRemoteClassicLink", - "type": "boolean" - }, - "AllowDnsResolutionFromRemoteVpc": { - "locationName": "allowDnsResolutionFromRemoteVpc", - "type": "boolean" - } - } - } - } - }, - "Sh": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "Value": { - "locationName": "value" - } - } - } - }, - "Sp": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Sr": { - "type": "list", - "member": { - "locationName": "PrivateIpAddress" - } - }, - "Sy": { - "type": "list", - "member": { - "locationName": "groupId" - } - }, - "S14": { - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Device": { - "locationName": "device" - }, - "State": { - "locationName": "status" - }, - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - }, - "S18": { - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "State": { - "locationName": "state" - } - } - }, - "S1b": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "IpProtocol": { - "locationName": "ipProtocol" - }, - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "UserIdGroupPairs": { - "locationName": "groups", - "type": "list", - "member": { - "shape": "S1e", - "locationName": "item" - } - }, - "IpRanges": { - "locationName": "ipRanges", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "CidrIp": { - "locationName": "cidrIp" - } - } - } - }, - "PrefixListIds": { - "locationName": "prefixListIds", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "PrefixListId": { - "locationName": "prefixListId" - } - } - } - } - } - } - }, - "S1e": { - "type": "structure", - "members": { - "UserId": { - "locationName": "userId" - }, - "GroupName": { - "locationName": "groupName" - }, - "GroupId": { - "locationName": "groupId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - }, - "PeeringStatus": { - "locationName": "peeringStatus" - } - } - }, - "S1l": { - "type": "structure", - "members": { - "S3": { - "type": "structure", - "members": { - "Bucket": { - "locationName": "bucket" - }, - "Prefix": { - "locationName": "prefix" - }, - "AWSAccessKeyId": {}, - "UploadPolicy": { - "locationName": "uploadPolicy", - "type": "blob" - }, - "UploadPolicySignature": { - "locationName": "uploadPolicySignature" - } - } - } - } - }, - "S1p": { - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "BundleId": { - "locationName": "bundleId" - }, - "State": { - "locationName": "state" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "UpdateTime": { - "locationName": "updateTime", - "type": "timestamp" - }, - "Storage": { - "shape": "S1l", - "locationName": "storage" - }, - "Progress": { - "locationName": "progress" - }, - "BundleTaskError": { - "locationName": "error", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - } - } - }, - "S20": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ReservedInstancesListingId": { - "locationName": "reservedInstancesListingId" - }, - "ReservedInstancesId": { - "locationName": "reservedInstancesId" - }, - "CreateDate": { - "locationName": "createDate", - "type": "timestamp" - }, - "UpdateDate": { - "locationName": "updateDate", - "type": "timestamp" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "InstanceCounts": { - "locationName": "instanceCounts", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "State": { - "locationName": "state" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - } - } - } - }, - "PriceSchedules": { - "locationName": "priceSchedules", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Term": { - "locationName": "term", - "type": "long" - }, - "Price": { - "locationName": "price", - "type": "double" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Active": { - "locationName": "active", - "type": "boolean" - } - } - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "ClientToken": { - "locationName": "clientToken" - } - } - } - }, - "S2c": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "S2m": { - "type": "list", - "member": { - "locationName": "SpotInstanceRequestId" - } - }, - "S30": { - "type": "structure", - "members": { - "CustomerGatewayId": { - "locationName": "customerGatewayId" - }, - "State": { - "locationName": "state" - }, - "Type": { - "locationName": "type" - }, - "IpAddress": { - "locationName": "ipAddress" - }, - "BgpAsn": { - "locationName": "bgpAsn" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S35": { - "type": "structure", - "members": { - "DhcpOptionsId": { - "locationName": "dhcpOptionsId" - }, - "DhcpConfigurations": { - "locationName": "dhcpConfigurationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Key": { - "locationName": "key" - }, - "Values": { - "locationName": "valueSet", - "type": "list", - "member": { - "shape": "S39", - "locationName": "item" - } - } - } - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S39": { - "type": "structure", - "members": { - "Value": { - "locationName": "value" - } - } - }, - "S3e": { - "type": "list", - "member": { - "shape": "S3f", - "locationName": "item" - } - }, - "S3f": { - "type": "structure", - "required": [ - "Error" - ], - "members": { - "Error": { - "locationName": "error", - "type": "structure", - "required": [ - "Code", - "Message" - ], - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "ResourceId": { - "locationName": "resourceId" - } - } - }, - "S3i": { - "type": "list", - "member": { - "shape": "S3j", - "locationName": "BlockDeviceMapping" - } - }, - "S3j": { - "type": "structure", - "members": { - "VirtualName": { - "locationName": "virtualName" - }, - "DeviceName": { - "locationName": "deviceName" - }, - "Ebs": { - "locationName": "ebs", - "type": "structure", - "members": { - "SnapshotId": { - "locationName": "snapshotId" - }, - "VolumeSize": { - "locationName": "volumeSize", - "type": "integer" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "VolumeType": { - "locationName": "volumeType" - }, - "Iops": { - "locationName": "iops", - "type": "integer" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - } - } - }, - "NoDevice": { - "locationName": "noDevice" - } - } - }, - "S3t": { - "type": "structure", - "members": { - "ExportTaskId": { - "locationName": "exportTaskId" - }, - "Description": { - "locationName": "description" - }, - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "InstanceExportDetails": { - "locationName": "instanceExport", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "TargetEnvironment": { - "locationName": "targetEnvironment" - } - } - }, - "ExportToS3Task": { - "locationName": "exportToS3", - "type": "structure", - "members": { - "DiskImageFormat": { - "locationName": "diskImageFormat" - }, - "ContainerFormat": { - "locationName": "containerFormat" - }, - "S3Bucket": { - "locationName": "s3Bucket" - }, - "S3Key": { - "locationName": "s3Key" - } - } - } - } - }, - "S3z": { - "type": "structure", - "members": { - "InternetGatewayId": { - "locationName": "internetGatewayId" - }, - "Attachments": { - "locationName": "attachmentSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "State": { - "locationName": "state" - } - } - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S46": { - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "DeleteTime": { - "locationName": "deleteTime", - "type": "timestamp" - }, - "NatGatewayAddresses": { - "locationName": "natGatewayAddressSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "AllocationId": { - "locationName": "allocationId" - }, - "PrivateIp": { - "locationName": "privateIp" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - } - } - } - }, - "State": { - "locationName": "state" - }, - "FailureCode": { - "locationName": "failureCode" - }, - "FailureMessage": { - "locationName": "failureMessage" - }, - "ProvisionedBandwidth": { - "locationName": "provisionedBandwidth", - "type": "structure", - "members": { - "Provisioned": { - "locationName": "provisioned" - }, - "Requested": { - "locationName": "requested" - }, - "RequestTime": { - "locationName": "requestTime", - "type": "timestamp" - }, - "ProvisionTime": { - "locationName": "provisionTime", - "type": "timestamp" - }, - "Status": { - "locationName": "status" - } - } - } - } - }, - "S4d": { - "type": "structure", - "members": { - "NetworkAclId": { - "locationName": "networkAclId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "IsDefault": { - "locationName": "default", - "type": "boolean" - }, - "Entries": { - "locationName": "entrySet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "RuleNumber": { - "locationName": "ruleNumber", - "type": "integer" - }, - "Protocol": { - "locationName": "protocol" - }, - "RuleAction": { - "locationName": "ruleAction" - }, - "Egress": { - "locationName": "egress", - "type": "boolean" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "IcmpTypeCode": { - "shape": "S4h", - "locationName": "icmpTypeCode" - }, - "PortRange": { - "shape": "S4i", - "locationName": "portRange" - } - } - } - }, - "Associations": { - "locationName": "associationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "NetworkAclAssociationId": { - "locationName": "networkAclAssociationId" - }, - "NetworkAclId": { - "locationName": "networkAclId" - }, - "SubnetId": { - "locationName": "subnetId" - } - } - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S4h": { - "type": "structure", - "members": { - "Type": { - "locationName": "type", - "type": "integer" - }, - "Code": { - "locationName": "code", - "type": "integer" - } - } - }, - "S4i": { - "type": "structure", - "members": { - "From": { - "locationName": "from", - "type": "integer" - }, - "To": { - "locationName": "to", - "type": "integer" - } - } - }, - "S4n": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "S4o": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "PrivateIpAddress" - ], - "members": { - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "Primary": { - "locationName": "primary", - "type": "boolean" - } - } - } - }, - "S4r": { - "type": "structure", - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Description": { - "locationName": "description" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "RequesterId": { - "locationName": "requesterId" - }, - "RequesterManaged": { - "locationName": "requesterManaged", - "type": "boolean" - }, - "Status": { - "locationName": "status" - }, - "MacAddress": { - "locationName": "macAddress" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck", - "type": "boolean" - }, - "Groups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "Attachment": { - "shape": "S4v", - "locationName": "attachment" - }, - "Association": { - "shape": "S4w", - "locationName": "association" - }, - "TagSet": { - "shape": "Sh", - "locationName": "tagSet" - }, - "PrivateIpAddresses": { - "locationName": "privateIpAddressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "Primary": { - "locationName": "primary", - "type": "boolean" - }, - "Association": { - "shape": "S4w", - "locationName": "association" - } - } - } - }, - "InterfaceType": { - "locationName": "interfaceType" - } - } - }, - "S4t": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "GroupName": { - "locationName": "groupName" - }, - "GroupId": { - "locationName": "groupId" - } - } - } - }, - "S4v": { - "type": "structure", - "members": { - "AttachmentId": { - "locationName": "attachmentId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceOwnerId": { - "locationName": "instanceOwnerId" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "Status": { - "locationName": "status" - }, - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - }, - "S4w": { - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "PublicDnsName": { - "locationName": "publicDnsName" - }, - "IpOwnerId": { - "locationName": "ipOwnerId" - }, - "AllocationId": { - "locationName": "allocationId" - }, - "AssociationId": { - "locationName": "associationId" - } - } - }, - "S5a": { - "type": "structure", - "members": { - "RouteTableId": { - "locationName": "routeTableId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Routes": { - "locationName": "routeSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "DestinationPrefixListId": { - "locationName": "destinationPrefixListId" - }, - "GatewayId": { - "locationName": "gatewayId" - }, - "InstanceId": { - "locationName": "instanceId" - }, - "InstanceOwnerId": { - "locationName": "instanceOwnerId" - }, - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "VpcPeeringConnectionId": { - "locationName": "vpcPeeringConnectionId" - }, - "NatGatewayId": { - "locationName": "natGatewayId" - }, - "State": { - "locationName": "state" - }, - "Origin": { - "locationName": "origin" - } - } - } - }, - "Associations": { - "locationName": "associationSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "RouteTableAssociationId": { - "locationName": "routeTableAssociationId" - }, - "RouteTableId": { - "locationName": "routeTableId" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "Main": { - "locationName": "main", - "type": "boolean" - } - } - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "PropagatingVgws": { - "locationName": "propagatingVgwSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "GatewayId": { - "locationName": "gatewayId" - } - } - } - } - } - }, - "S5m": { - "type": "structure", - "members": { - "SnapshotId": { - "locationName": "snapshotId" - }, - "VolumeId": { - "locationName": "volumeId" - }, - "State": { - "locationName": "status" - }, - "StateMessage": { - "locationName": "statusMessage" - }, - "StartTime": { - "locationName": "startTime", - "type": "timestamp" - }, - "Progress": { - "locationName": "progress" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "Description": { - "locationName": "description" - }, - "VolumeSize": { - "locationName": "volumeSize", - "type": "integer" - }, - "OwnerAlias": { - "locationName": "ownerAlias" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - }, - "DataEncryptionKeyId": { - "locationName": "dataEncryptionKeyId" - } - } - }, - "S5q": { - "type": "structure", - "members": { - "OwnerId": { - "locationName": "ownerId" - }, - "Bucket": { - "locationName": "bucket" - }, - "Prefix": { - "locationName": "prefix" - }, - "State": { - "locationName": "state" - }, - "Fault": { - "shape": "S5s", - "locationName": "fault" - } - } - }, - "S5s": { - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "S5v": { - "type": "structure", - "members": { - "SubnetId": { - "locationName": "subnetId" - }, - "State": { - "locationName": "state" - }, - "VpcId": { - "locationName": "vpcId" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "AvailableIpAddressCount": { - "locationName": "availableIpAddressCount", - "type": "integer" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "DefaultForAz": { - "locationName": "defaultForAz", - "type": "boolean" - }, - "MapPublicIpOnLaunch": { - "locationName": "mapPublicIpOnLaunch", - "type": "boolean" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S5y": { - "type": "list", - "member": {} - }, - "S60": { - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "Size": { - "locationName": "size", - "type": "integer" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "State": { - "locationName": "status" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "Attachments": { - "locationName": "attachmentSet", - "type": "list", - "member": { - "shape": "S14", - "locationName": "item" - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "VolumeType": { - "locationName": "volumeType" - }, - "Iops": { - "locationName": "iops", - "type": "integer" - }, - "Encrypted": { - "locationName": "encrypted", - "type": "boolean" - }, - "KmsKeyId": { - "locationName": "kmsKeyId" - } - } - }, - "S66": { - "type": "structure", - "members": { - "VpcId": { - "locationName": "vpcId" - }, - "State": { - "locationName": "state" - }, - "CidrBlock": { - "locationName": "cidrBlock" - }, - "DhcpOptionsId": { - "locationName": "dhcpOptionsId" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "InstanceTenancy": { - "locationName": "instanceTenancy" - }, - "IsDefault": { - "locationName": "isDefault", - "type": "boolean" - } - } - }, - "S6a": { - "type": "structure", - "members": { - "VpcEndpointId": { - "locationName": "vpcEndpointId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "ServiceName": { - "locationName": "serviceName" - }, - "State": { - "locationName": "state" - }, - "PolicyDocument": { - "locationName": "policyDocument" - }, - "RouteTableIds": { - "shape": "S2c", - "locationName": "routeTableIdSet" - }, - "CreationTimestamp": { - "locationName": "creationTimestamp", - "type": "timestamp" - } - } - }, - "S6h": { - "type": "structure", - "members": { - "VpnConnectionId": { - "locationName": "vpnConnectionId" - }, - "State": { - "locationName": "state" - }, - "CustomerGatewayConfiguration": { - "locationName": "customerGatewayConfiguration" - }, - "Type": { - "locationName": "type" - }, - "CustomerGatewayId": { - "locationName": "customerGatewayId" - }, - "VpnGatewayId": { - "locationName": "vpnGatewayId" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "VgwTelemetry": { - "locationName": "vgwTelemetry", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "OutsideIpAddress": { - "locationName": "outsideIpAddress" - }, - "Status": { - "locationName": "status" - }, - "LastStatusChange": { - "locationName": "lastStatusChange", - "type": "timestamp" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "AcceptedRouteCount": { - "locationName": "acceptedRouteCount", - "type": "integer" - } - } - } - }, - "Options": { - "locationName": "options", - "type": "structure", - "members": { - "StaticRoutesOnly": { - "locationName": "staticRoutesOnly", - "type": "boolean" - } - } - }, - "Routes": { - "locationName": "routes", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DestinationCidrBlock": { - "locationName": "destinationCidrBlock" - }, - "Source": { - "locationName": "source" - }, - "State": { - "locationName": "state" - } - } - } - } - } - }, - "S6t": { - "type": "structure", - "members": { - "VpnGatewayId": { - "locationName": "vpnGatewayId" - }, - "State": { - "locationName": "state" - }, - "Type": { - "locationName": "type" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "VpcAttachments": { - "locationName": "attachments", - "type": "list", - "member": { - "shape": "S18", - "locationName": "item" - } - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S7y": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "members": { - "Name": {}, - "Values": { - "shape": "S2c", - "locationName": "Value" - } - } - } - }, - "S8h": { - "type": "list", - "member": { - "locationName": "InstanceId" - } - }, - "S8p": { - "type": "structure", - "required": [ - "ConversionTaskId", - "State" - ], - "members": { - "ConversionTaskId": { - "locationName": "conversionTaskId" - }, - "ExpirationTime": { - "locationName": "expirationTime" - }, - "ImportInstance": { - "locationName": "importInstance", - "type": "structure", - "required": [ - "Volumes" - ], - "members": { - "Volumes": { - "locationName": "volumes", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "required": [ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume", - "Status" - ], - "members": { - "BytesConverted": { - "locationName": "bytesConverted", - "type": "long" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Image": { - "shape": "S8t", - "locationName": "image" - }, - "Volume": { - "shape": "S8u", - "locationName": "volume" - }, - "Status": { - "locationName": "status" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Description": { - "locationName": "description" - } - } - } - }, - "InstanceId": { - "locationName": "instanceId" - }, - "Platform": { - "locationName": "platform" - }, - "Description": { - "locationName": "description" - } - } - }, - "ImportVolume": { - "locationName": "importVolume", - "type": "structure", - "required": [ - "BytesConverted", - "AvailabilityZone", - "Image", - "Volume" - ], - "members": { - "BytesConverted": { - "locationName": "bytesConverted", - "type": "long" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Description": { - "locationName": "description" - }, - "Image": { - "shape": "S8t", - "locationName": "image" - }, - "Volume": { - "shape": "S8u", - "locationName": "volume" - } - } - }, - "State": { - "locationName": "state" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - } - } - }, - "S8t": { - "type": "structure", - "required": [ - "Format", - "Size", - "ImportManifestUrl" - ], - "members": { - "Format": { - "locationName": "format" - }, - "Size": { - "locationName": "size", - "type": "long" - }, - "ImportManifestUrl": { - "locationName": "importManifestUrl" - }, - "Checksum": { - "locationName": "checksum" - } - } - }, - "S8u": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Size": { - "locationName": "size", - "type": "long" - }, - "Id": { - "locationName": "id" - } - } - }, - "S9o": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "S9r": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Sa4": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Resource": { - "locationName": "resource" - }, - "UseLongIds": { - "locationName": "useLongIds", - "type": "boolean" - }, - "Deadline": { - "locationName": "deadline", - "type": "timestamp" - } - } - } - }, - "Sab": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "UserId": { - "locationName": "userId" - }, - "Group": { - "locationName": "group" - } - } - } - }, - "Sae": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ProductCodeId": { - "locationName": "productCode" - }, - "ProductCodeType": { - "locationName": "type" - } - } - } - }, - "Sah": { - "type": "list", - "member": { - "shape": "S3j", - "locationName": "item" - } - }, - "Sak": { - "type": "list", - "member": { - "locationName": "Owner" - } - }, - "Sas": { - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "Message": { - "locationName": "message" - } - } - }, - "Sax": { - "type": "list", - "member": { - "locationName": "ImportTaskId" - } - }, - "Sb1": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DiskImageSize": { - "locationName": "diskImageSize", - "type": "double" - }, - "Description": { - "locationName": "description" - }, - "Format": { - "locationName": "format" - }, - "Url": { - "locationName": "url" - }, - "UserBucket": { - "shape": "Sb3", - "locationName": "userBucket" - }, - "DeviceName": { - "locationName": "deviceName" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "Progress": { - "locationName": "progress" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Status": { - "locationName": "status" - } - } - } - }, - "Sb3": { - "type": "structure", - "members": { - "S3Bucket": { - "locationName": "s3Bucket" - }, - "S3Key": { - "locationName": "s3Key" - } - } - }, - "Sb8": { - "type": "structure", - "members": { - "DiskImageSize": { - "locationName": "diskImageSize", - "type": "double" - }, - "Description": { - "locationName": "description" - }, - "Format": { - "locationName": "format" - }, - "Url": { - "locationName": "url" - }, - "UserBucket": { - "shape": "Sb3", - "locationName": "userBucket" - }, - "SnapshotId": { - "locationName": "snapshotId" - }, - "Progress": { - "locationName": "progress" - }, - "StatusMessage": { - "locationName": "statusMessage" - }, - "Status": { - "locationName": "status" - } - } - }, - "Sbc": { - "type": "structure", - "members": { - "Value": { - "locationName": "value", - "type": "boolean" - } - } - }, - "Sbd": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "DeviceName": { - "locationName": "deviceName" - }, - "Ebs": { - "locationName": "ebs", - "type": "structure", - "members": { - "VolumeId": { - "locationName": "volumeId" - }, - "Status": { - "locationName": "status" - }, - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - } - } - } - }, - "Sbn": { - "type": "structure", - "members": { - "Code": { - "locationName": "code", - "type": "integer" - }, - "Name": { - "locationName": "name" - } - } - }, - "Sbp": { - "type": "structure", - "members": { - "Status": { - "locationName": "status" - }, - "Details": { - "locationName": "details", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Name": { - "locationName": "name" - }, - "Status": { - "locationName": "status" - }, - "ImpairedSince": { - "locationName": "impairedSince", - "type": "timestamp" - } - } - } - } - } - }, - "Sby": { - "type": "structure", - "members": { - "ReservationId": { - "locationName": "reservationId" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "RequesterId": { - "locationName": "requesterId" - }, - "Groups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "Instances": { - "locationName": "instancesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "ImageId": { - "locationName": "imageId" - }, - "State": { - "shape": "Sbn", - "locationName": "instanceState" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "PublicDnsName": { - "locationName": "dnsName" - }, - "StateTransitionReason": { - "locationName": "reason" - }, - "KeyName": { - "locationName": "keyName" - }, - "AmiLaunchIndex": { - "locationName": "amiLaunchIndex", - "type": "integer" - }, - "ProductCodes": { - "shape": "Sae", - "locationName": "productCodes" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "LaunchTime": { - "locationName": "launchTime", - "type": "timestamp" - }, - "Placement": { - "shape": "Sc2", - "locationName": "placement" - }, - "KernelId": { - "locationName": "kernelId" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "Platform": { - "locationName": "platform" - }, - "Monitoring": { - "shape": "Sc3", - "locationName": "monitoring" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PublicIpAddress": { - "locationName": "ipAddress" - }, - "StateReason": { - "shape": "Sas", - "locationName": "stateReason" - }, - "Architecture": { - "locationName": "architecture" - }, - "RootDeviceType": { - "locationName": "rootDeviceType" - }, - "RootDeviceName": { - "locationName": "rootDeviceName" - }, - "BlockDeviceMappings": { - "shape": "Sbd", - "locationName": "blockDeviceMapping" - }, - "VirtualizationType": { - "locationName": "virtualizationType" - }, - "InstanceLifecycle": { - "locationName": "instanceLifecycle" - }, - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "ClientToken": { - "locationName": "clientToken" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "SecurityGroups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck", - "type": "boolean" - }, - "Hypervisor": { - "locationName": "hypervisor" - }, - "NetworkInterfaces": { - "locationName": "networkInterfaceSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "VpcId": { - "locationName": "vpcId" - }, - "Description": { - "locationName": "description" - }, - "OwnerId": { - "locationName": "ownerId" - }, - "Status": { - "locationName": "status" - }, - "MacAddress": { - "locationName": "macAddress" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "SourceDestCheck": { - "locationName": "sourceDestCheck", - "type": "boolean" - }, - "Groups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "Attachment": { - "locationName": "attachment", - "type": "structure", - "members": { - "AttachmentId": { - "locationName": "attachmentId" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "Status": { - "locationName": "status" - }, - "AttachTime": { - "locationName": "attachTime", - "type": "timestamp" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - } - } - }, - "Association": { - "shape": "Sc9", - "locationName": "association" - }, - "PrivateIpAddresses": { - "locationName": "privateIpAddressesSet", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "PrivateDnsName": { - "locationName": "privateDnsName" - }, - "Primary": { - "locationName": "primary", - "type": "boolean" - }, - "Association": { - "shape": "Sc9", - "locationName": "association" - } - } - } - } - } - } - }, - "IamInstanceProfile": { - "locationName": "iamInstanceProfile", - "type": "structure", - "members": { - "Arn": { - "locationName": "arn" - }, - "Id": { - "locationName": "id" - } - } - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "SriovNetSupport": { - "locationName": "sriovNetSupport" - }, - "EnaSupport": { - "locationName": "enaSupport", - "type": "boolean" - } - } - } - } - } - }, - "Sc2": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "GroupName": { - "locationName": "groupName" - }, - "Tenancy": { - "locationName": "tenancy" - }, - "HostId": { - "locationName": "hostId" - }, - "Affinity": { - "locationName": "affinity" - } - } - }, - "Sc3": { - "type": "structure", - "members": { - "State": { - "locationName": "state" - } - } - }, - "Sc9": { - "type": "structure", - "members": { - "PublicIp": { - "locationName": "publicIp" - }, - "PublicDnsName": { - "locationName": "publicDnsName" - }, - "IpOwnerId": { - "locationName": "ipOwnerId" - } - } - }, - "Sdj": { - "type": "list", - "member": { - "locationName": "ReservedInstancesId" - } - }, - "Sds": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "Frequency": { - "locationName": "frequency" - }, - "Amount": { - "locationName": "amount", - "type": "double" - } - } - } - }, - "Se7": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "Platform": { - "locationName": "platform" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Scope": { - "locationName": "scope" - } - } - }, - "Sep": { - "type": "structure", - "members": { - "Frequency": { - "locationName": "frequency" - }, - "Interval": { - "locationName": "interval", - "type": "integer" - }, - "OccurrenceDaySet": { - "locationName": "occurrenceDaySet", - "type": "list", - "member": { - "locationName": "item", - "type": "integer" - } - }, - "OccurrenceRelativeToEnd": { - "locationName": "occurrenceRelativeToEnd", - "type": "boolean" - }, - "OccurrenceUnit": { - "locationName": "occurrenceUnit" - } - } - }, - "Sew": { - "type": "structure", - "members": { - "ScheduledInstanceId": { - "locationName": "scheduledInstanceId" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Platform": { - "locationName": "platform" - }, - "NetworkPlatform": { - "locationName": "networkPlatform" - }, - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "SlotDurationInHours": { - "locationName": "slotDurationInHours", - "type": "integer" - }, - "Recurrence": { - "shape": "Sep", - "locationName": "recurrence" - }, - "PreviousSlotEndTime": { - "locationName": "previousSlotEndTime", - "type": "timestamp" - }, - "NextSlotStartTime": { - "locationName": "nextSlotStartTime", - "type": "timestamp" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "TotalScheduledInstanceHours": { - "locationName": "totalScheduledInstanceHours", - "type": "integer" - }, - "InstanceCount": { - "locationName": "instanceCount", - "type": "integer" - }, - "TermStartDate": { - "locationName": "termStartDate", - "type": "timestamp" - }, - "TermEndDate": { - "locationName": "termEndDate", - "type": "timestamp" - }, - "CreateDate": { - "locationName": "createDate", - "type": "timestamp" - } - } - }, - "Sf3": { - "type": "list", - "member": { - "locationName": "GroupName" - } - }, - "Sfa": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "UserId": { - "locationName": "userId" - }, - "Group": { - "locationName": "group" - } - } - } - }, - "Sfx": { - "type": "structure", - "required": [ - "SpotPrice", - "TargetCapacity", - "IamFleetRole", - "LaunchSpecifications" - ], - "members": { - "ClientToken": { - "locationName": "clientToken" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "TargetCapacity": { - "locationName": "targetCapacity", - "type": "integer" - }, - "ValidFrom": { - "locationName": "validFrom", - "type": "timestamp" - }, - "ValidUntil": { - "locationName": "validUntil", - "type": "timestamp" - }, - "TerminateInstancesWithExpiration": { - "locationName": "terminateInstancesWithExpiration", - "type": "boolean" - }, - "IamFleetRole": { - "locationName": "iamFleetRole" - }, - "LaunchSpecifications": { - "locationName": "launchSpecifications", - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - }, - "KeyName": { - "locationName": "keyName" - }, - "SecurityGroups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "UserData": { - "locationName": "userData" - }, - "AddressingType": { - "locationName": "addressingType" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Placement": { - "shape": "Sg0", - "locationName": "placement" - }, - "KernelId": { - "locationName": "kernelId" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "BlockDeviceMappings": { - "shape": "Sah", - "locationName": "blockDeviceMapping" - }, - "Monitoring": { - "locationName": "monitoring", - "type": "structure", - "members": { - "Enabled": { - "locationName": "enabled", - "type": "boolean" - } - } - }, - "SubnetId": { - "locationName": "subnetId" - }, - "NetworkInterfaces": { - "shape": "Sg2", - "locationName": "networkInterfaceSet" - }, - "IamInstanceProfile": { - "shape": "Sg4", - "locationName": "iamInstanceProfile" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "WeightedCapacity": { - "locationName": "weightedCapacity", - "type": "double" - }, - "SpotPrice": { - "locationName": "spotPrice" - } - } - } - }, - "ExcessCapacityTerminationPolicy": { - "locationName": "excessCapacityTerminationPolicy" - }, - "AllocationStrategy": { - "locationName": "allocationStrategy" - }, - "FulfilledCapacity": { - "locationName": "fulfilledCapacity", - "type": "double" - }, - "Type": { - "locationName": "type" - } - } - }, - "Sg0": { - "type": "structure", - "members": { - "AvailabilityZone": { - "locationName": "availabilityZone" - }, - "GroupName": { - "locationName": "groupName" - } - } - }, - "Sg2": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "NetworkInterfaceId": { - "locationName": "networkInterfaceId" - }, - "DeviceIndex": { - "locationName": "deviceIndex", - "type": "integer" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "Description": { - "locationName": "description" - }, - "PrivateIpAddress": { - "locationName": "privateIpAddress" - }, - "Groups": { - "shape": "S4n", - "locationName": "SecurityGroupId" - }, - "DeleteOnTermination": { - "locationName": "deleteOnTermination", - "type": "boolean" - }, - "PrivateIpAddresses": { - "shape": "S4o", - "locationName": "privateIpAddressesSet", - "queryName": "PrivateIpAddresses" - }, - "SecondaryPrivateIpAddressCount": { - "locationName": "secondaryPrivateIpAddressCount", - "type": "integer" - }, - "AssociatePublicIpAddress": { - "locationName": "associatePublicIpAddress", - "type": "boolean" - } - } - } - }, - "Sg4": { - "type": "structure", - "members": { - "Arn": { - "locationName": "arn" - }, - "Name": { - "locationName": "name" - } - } - }, - "Sgb": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "SpotInstanceRequestId": { - "locationName": "spotInstanceRequestId" - }, - "SpotPrice": { - "locationName": "spotPrice" - }, - "Type": { - "locationName": "type" - }, - "State": { - "locationName": "state" - }, - "Fault": { - "shape": "S5s", - "locationName": "fault" - }, - "Status": { - "locationName": "status", - "type": "structure", - "members": { - "Code": { - "locationName": "code" - }, - "UpdateTime": { - "locationName": "updateTime", - "type": "timestamp" - }, - "Message": { - "locationName": "message" - } - } - }, - "ValidFrom": { - "locationName": "validFrom", - "type": "timestamp" - }, - "ValidUntil": { - "locationName": "validUntil", - "type": "timestamp" - }, - "LaunchGroup": { - "locationName": "launchGroup" - }, - "AvailabilityZoneGroup": { - "locationName": "availabilityZoneGroup" - }, - "LaunchSpecification": { - "locationName": "launchSpecification", - "type": "structure", - "members": { - "ImageId": { - "locationName": "imageId" - }, - "KeyName": { - "locationName": "keyName" - }, - "SecurityGroups": { - "shape": "S4t", - "locationName": "groupSet" - }, - "UserData": { - "locationName": "userData" - }, - "AddressingType": { - "locationName": "addressingType" - }, - "InstanceType": { - "locationName": "instanceType" - }, - "Placement": { - "shape": "Sg0", - "locationName": "placement" - }, - "KernelId": { - "locationName": "kernelId" - }, - "RamdiskId": { - "locationName": "ramdiskId" - }, - "BlockDeviceMappings": { - "shape": "Sah", - "locationName": "blockDeviceMapping" - }, - "SubnetId": { - "locationName": "subnetId" - }, - "NetworkInterfaces": { - "shape": "Sg2", - "locationName": "networkInterfaceSet" - }, - "IamInstanceProfile": { - "shape": "Sg4", - "locationName": "iamInstanceProfile" - }, - "EbsOptimized": { - "locationName": "ebsOptimized", - "type": "boolean" - }, - "Monitoring": { - "shape": "Sgh", - "locationName": "monitoring" - } - } - }, - "InstanceId": { - "locationName": "instanceId" - }, - "CreateTime": { - "locationName": "createTime", - "type": "timestamp" - }, - "ProductDescription": { - "locationName": "productDescription" - }, - "BlockDurationMinutes": { - "locationName": "blockDurationMinutes", - "type": "integer" - }, - "ActualBlockHourlyPrice": { - "locationName": "actualBlockHourlyPrice" - }, - "Tags": { - "shape": "Sh", - "locationName": "tagSet" - }, - "LaunchedAvailabilityZone": { - "locationName": "launchedAvailabilityZone" - } - } - } - }, - "Sgh": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "locationName": "enabled", - "type": "boolean" - } - } - }, - "Sgu": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "FromPort": { - "locationName": "fromPort", - "type": "integer" - }, - "IpProtocol": { - "locationName": "ipProtocol" - }, - "IpRanges": { - "locationName": "ipRanges", - "type": "list", - "member": { - "locationName": "item" - } - }, - "PrefixListIds": { - "locationName": "prefixListIds", - "type": "list", - "member": { - "locationName": "item" - } - }, - "ToPort": { - "locationName": "toPort", - "type": "integer" - }, - "UserIdGroupPairs": { - "locationName": "groups", - "type": "list", - "member": { - "shape": "S1e", - "locationName": "item" - } - } - } - } - }, - "Shc": { - "type": "list", - "member": { - "locationName": "VolumeId" - } - }, - "Shw": { - "type": "list", - "member": { - "locationName": "VpcId" - } - }, - "Sjc": { - "type": "list", - "member": { - "locationName": "item" - } - }, - "Sje": { - "type": "list", - "member": { - "type": "structure", - "members": { - "HostReservationId": { - "locationName": "hostReservationId" - }, - "HostIdSet": { - "shape": "S9o", - "locationName": "hostIdSet" - }, - "InstanceFamily": { - "locationName": "instanceFamily" - }, - "PaymentOption": { - "locationName": "paymentOption" - }, - "UpfrontPrice": { - "locationName": "upfrontPrice" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - }, - "CurrencyCode": { - "locationName": "currencyCode" - }, - "Duration": { - "locationName": "duration", - "type": "integer" - } - } - } - }, - "Sjm": { - "type": "structure", - "members": { - "RemainingTotalValue": { - "locationName": "remainingTotalValue" - }, - "RemainingUpfrontValue": { - "locationName": "remainingUpfrontValue" - }, - "HourlyPrice": { - "locationName": "hourlyPrice" - } - } - }, - "Sjt": { - "type": "structure", - "members": { - "S3Bucket": {}, - "S3Key": {} - } - }, - "Sju": { - "type": "structure", - "members": { - "UploadStart": { - "type": "timestamp" - }, - "UploadEnd": { - "type": "timestamp" - }, - "UploadSize": { - "type": "double" - }, - "Comment": {} - } - }, - "Sjy": { - "type": "list", - "member": { - "locationName": "SecurityGroup" - } - }, - "Sk3": { - "type": "structure", - "required": [ - "Format", - "Bytes", - "ImportManifestUrl" - ], - "members": { - "Format": { - "locationName": "format" - }, - "Bytes": { - "locationName": "bytes", - "type": "long" - }, - "ImportManifestUrl": { - "locationName": "importManifestUrl" - } - } - }, - "Sk4": { - "type": "structure", - "required": [ - "Size" - ], - "members": { - "Size": { - "locationName": "size", - "type": "long" - } - } - }, - "Skf": { - "type": "list", - "member": { - "shape": "S3f", - "locationName": "item" - } - }, - "Skk": { - "type": "list", - "member": { - "locationName": "UserId" - } - }, - "Slc": { - "type": "structure", - "members": { - "AllowEgressFromLocalClassicLinkToRemoteVpc": { - "type": "boolean" - }, - "AllowEgressFromLocalVpcToRemoteClassicLink": { - "type": "boolean" - }, - "AllowDnsResolutionFromRemoteVpc": { - "type": "boolean" - } - } - }, - "Sle": { - "type": "structure", - "members": { - "AllowEgressFromLocalClassicLinkToRemoteVpc": { - "locationName": "allowEgressFromLocalClassicLinkToRemoteVpc", - "type": "boolean" - }, - "AllowEgressFromLocalVpcToRemoteClassicLink": { - "locationName": "allowEgressFromLocalVpcToRemoteClassicLink", - "type": "boolean" - }, - "AllowDnsResolutionFromRemoteVpc": { - "locationName": "allowDnsResolutionFromRemoteVpc", - "type": "boolean" - } - } - }, - "Slh": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "Monitoring": { - "shape": "Sc3", - "locationName": "monitoring" - } - } - } - }, - "Smv": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "Sna": { - "type": "list", - "member": { - "locationName": "item", - "type": "structure", - "members": { - "InstanceId": { - "locationName": "instanceId" - }, - "CurrentState": { - "shape": "Sbn", - "locationName": "currentState" - }, - "PreviousState": { - "shape": "Sbn", - "locationName": "previousState" - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json deleted file mode 100644 index 9d04d89..0000000 --- a/node_modules/aws-sdk/apis/ec2-2016-09-15.paginators.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "pagination": { - "DescribeAccountAttributes": { - "result_key": "AccountAttributes" - }, - "DescribeAddresses": { - "result_key": "Addresses" - }, - "DescribeAvailabilityZones": { - "result_key": "AvailabilityZones" - }, - "DescribeBundleTasks": { - "result_key": "BundleTasks" - }, - "DescribeConversionTasks": { - "result_key": "ConversionTasks" - }, - "DescribeCustomerGateways": { - "result_key": "CustomerGateways" - }, - "DescribeDhcpOptions": { - "result_key": "DhcpOptions" - }, - "DescribeExportTasks": { - "result_key": "ExportTasks" - }, - "DescribeImages": { - "result_key": "Images" - }, - "DescribeInstanceStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "InstanceStatuses" - }, - "DescribeInstances": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Reservations" - }, - "DescribeInternetGateways": { - "result_key": "InternetGateways" - }, - "DescribeKeyPairs": { - "result_key": "KeyPairs" - }, - "DescribeNetworkAcls": { - "result_key": "NetworkAcls" - }, - "DescribeNetworkInterfaces": { - "result_key": "NetworkInterfaces" - }, - "DescribePlacementGroups": { - "result_key": "PlacementGroups" - }, - "DescribeRegions": { - "result_key": "Regions" - }, - "DescribeReservedInstances": { - "result_key": "ReservedInstances" - }, - "DescribeReservedInstancesListings": { - "result_key": "ReservedInstancesListings" - }, - "DescribeReservedInstancesOfferings": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ReservedInstancesOfferings" - }, - "DescribeReservedInstancesModifications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "ReservedInstancesModifications" - }, - "DescribeRouteTables": { - "result_key": "RouteTables" - }, - "DescribeSecurityGroups": { - "result_key": "SecurityGroups" - }, - "DescribeSnapshots": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Snapshots" - }, - "DescribeSpotInstanceRequests": { - "result_key": "SpotInstanceRequests" - }, - "DescribeSpotFleetRequests": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "SpotFleetRequestConfigs" - }, - "DescribeSpotPriceHistory": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "SpotPriceHistory" - }, - "DescribeSubnets": { - "result_key": "Subnets" - }, - "DescribeTags": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Tags" - }, - "DescribeVolumeStatus": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "VolumeStatuses" - }, - "DescribeVolumes": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Volumes" - }, - "DescribeVpcs": { - "result_key": "Vpcs" - }, - "DescribeVpcPeeringConnections": { - "result_key": "VpcPeeringConnections" - }, - "DescribeVpnConnections": { - "result_key": "VpnConnections" - }, - "DescribeVpnGateways": { - "result_key": "VpnGateways" - } - } -} diff --git a/node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json b/node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json deleted file mode 100644 index ecc9f1b..0000000 --- a/node_modules/aws-sdk/apis/ec2-2016-09-15.waiters2.json +++ /dev/null @@ -1,593 +0,0 @@ -{ - "version": 2, - "waiters": { - "InstanceExists": { - "delay": 5, - "maxAttempts": 40, - "operation": "DescribeInstances", - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(Reservations[]) > `0`", - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "BundleTaskComplete": { - "delay": 15, - "operation": "DescribeBundleTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "complete", - "matcher": "pathAll", - "state": "success", - "argument": "BundleTasks[].State" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "BundleTasks[].State" - } - ] - }, - "ConversionTaskCancelled": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskCompleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelled", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelling", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskDeleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "CustomerGatewayAvailable": { - "delay": 15, - "operation": "DescribeCustomerGateways", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - } - ] - }, - "ExportTaskCancelled": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ExportTaskCompleted": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ImageExists": { - "operation": "DescribeImages", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(Images[]) > `0`", - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidAMIID.NotFound", - "state": "retry" - } - ] - }, - "ImageAvailable": { - "operation": "DescribeImages", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Images[].State", - "expected": "available" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Images[].State", - "expected": "failed" - } - ] - }, - "InstanceRunning": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "running", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "shutting-down", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "InstanceStatusOk": { - "operation": "DescribeInstanceStatus", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "InstanceStatuses[].InstanceStatus.Status", - "expected": "ok" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "KeyPairExists": { - "operation": "DescribeKeyPairs", - "delay": 5, - "maxAttempts": 6, - "acceptors": [ - { - "expected": true, - "matcher": "pathAll", - "state": "success", - "argument": "length(KeyPairs[].KeyName) > `0`" - }, - { - "expected": "InvalidKeyPair.NotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "NatGatewayAvailable": { - "operation": "DescribeNatGateways", - "delay": 15, - "maxAttempts": 40, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "NatGateways[].State", - "expected": "available" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "failed" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "deleting" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "deleted" - }, - { - "state": "retry", - "matcher": "error", - "expected": "NatGatewayNotFound" - } - ] - }, - "NetworkInterfaceAvailable": { - "operation": "DescribeNetworkInterfaces", - "delay": 20, - "maxAttempts": 10, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "NetworkInterfaces[].Status" - }, - { - "expected": "InvalidNetworkInterfaceID.NotFound", - "matcher": "error", - "state": "failure" - } - ] - }, - "PasswordDataAvailable": { - "operation": "GetPasswordData", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "length(PasswordData) > `0`", - "expected": true - } - ] - }, - "SnapshotCompleted": { - "delay": 15, - "operation": "DescribeSnapshots", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].State" - } - ] - }, - "SpotInstanceRequestFulfilled": { - "operation": "DescribeSpotInstanceRequests", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "fulfilled" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "schedule-expired" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "canceled-before-fulfillment" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "bad-parameters" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "system-error" - } - ] - }, - "SubnetAvailable": { - "delay": 15, - "operation": "DescribeSubnets", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Subnets[].State" - } - ] - }, - "SystemStatusOk": { - "operation": "DescribeInstanceStatus", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "InstanceStatuses[].SystemStatus.Status", - "expected": "ok" - } - ] - }, - "VolumeAvailable": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VolumeDeleted": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "matcher": "error", - "expected": "InvalidVolume.NotFound", - "state": "success" - } - ] - }, - "VolumeInUse": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "in-use", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VpcAvailable": { - "delay": 15, - "operation": "DescribeVpcs", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Vpcs[].State" - } - ] - }, - "VpcExists": { - "operation": "DescribeVpcs", - "delay": 1, - "maxAttempts": 5, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidVpcID.NotFound", - "state": "retry" - } - ] - }, - "VpnConnectionAvailable": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpnConnectionDeleted": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpcPeeringConnectionExists": { - "delay": 15, - "operation": "DescribeVpcPeeringConnections", - "maxAttempts": 40, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidVpcPeeringConnectionID.NotFound", - "state": "retry" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json b/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json deleted file mode 100644 index d11aa8d..0000000 --- a/node_modules/aws-sdk/apis/ecr-2015-09-21.examples.json +++ /dev/null @@ -1,215 +0,0 @@ -{ - "version": "1.0", - "examples": { - "BatchDeleteImage": [ - { - "input": { - "imageIds": [ - { - "imageTag": "precise" - } - ], - "repositoryName": "ubuntu" - }, - "output": { - "failures": [ - - ], - "imageIds": [ - { - "imageDigest": "sha256:examplee6d1e504117a17000003d3753086354a38375961f2e665416ef4b1b2f", - "imageTag": "precise" - } - ] - }, - "comments": { - }, - "description": "This example deletes images with the tags precise and trusty in a repository called ubuntu in the default registry for an account.", - "id": "batchdeleteimages-example-1470860541707", - "title": "To delete multiple images" - } - ], - "BatchGetImage": [ - { - "input": { - "imageIds": [ - { - "imageTag": "precise" - } - ], - "repositoryName": "ubuntu" - }, - "output": { - "failures": [ - - ], - "images": [ - { - "imageId": { - "imageDigest": "sha256:example76bdff6d83a09ba2a818f0d00000063724a9ac3ba5019c56f74ebf42a", - "imageTag": "precise" - }, - "imageManifest": "{\n \"schemaVersion\": 1,\n \"name\": \"ubuntu\",\n \"tag\": \"precise\",\n...", - "registryId": "244698725403", - "repositoryName": "ubuntu" - } - ] - }, - "comments": { - "output": { - "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." - } - }, - "description": "This example obtains information for an image with a specified image digest ID from the repository named ubuntu in the current account.", - "id": "batchgetimage-example-1470862771437", - "title": "To obtain multiple images in a single request" - } - ], - "CreateRepository": [ - { - "input": { - "repositoryName": "project-a/nginx-web-app" - }, - "output": { - "repository": { - "registryId": "012345678901", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678901:repository/project-a/nginx-web-app", - "repositoryName": "project-a/nginx-web-app" - } - }, - "comments": { - "output": { - "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." - } - }, - "description": "This example creates a repository called nginx-web-app inside the project-a namespace in the default registry for an account.", - "id": "createrepository-example-1470863688724", - "title": "To create a new repository" - } - ], - "DeleteRepository": [ - { - "input": { - "force": true, - "repositoryName": "ubuntu" - }, - "output": { - "repository": { - "registryId": "012345678901", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678901:repository/ubuntu", - "repositoryName": "ubuntu" - } - }, - "comments": { - "output": { - "imageManifest": "In this example, the imageManifest in the output JSON has been truncated." - } - }, - "description": "This example force deletes a repository named ubuntu in the default registry for an account. The force parameter is required if the repository contains images.", - "id": "deleterepository-example-1470863805703", - "title": "To force delete a repository" - } - ], - "DeleteRepositoryPolicy": [ - { - "input": { - "repositoryName": "ubuntu" - }, - "output": { - "policyText": "{ ... }", - "registryId": "012345678901", - "repositoryName": "ubuntu" - }, - "comments": { - }, - "description": "This example deletes the policy associated with the repository named ubuntu in the current account.", - "id": "deleterepositorypolicy-example-1470866943748", - "title": "To delete the policy associated with a repository" - } - ], - "DescribeRepositories": [ - { - "input": { - }, - "output": { - "repositories": [ - { - "registryId": "012345678910", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/ubuntu", - "repositoryName": "ubuntu" - }, - { - "registryId": "012345678910", - "repositoryArn": "arn:aws:ecr:us-west-2:012345678910:repository/test", - "repositoryName": "test" - } - ] - }, - "comments": { - "output": { - } - }, - "description": "The following example obtains a list and description of all repositories in the default registry to which the current user has access.", - "id": "describe-repositories-1470856017467", - "title": "To describe all repositories in the current account" - } - ], - "GetAuthorizationToken": [ - { - "input": { - }, - "output": { - "authorizationData": [ - { - "authorizationToken": "QVdTOkN...", - "expiresAt": "1470951892432", - "proxyEndpoint": "https://012345678901.dkr.ecr.us-west-2.amazonaws.com" - } - ] - }, - "comments": { - }, - "description": "This example gets an authorization token for your default registry.", - "id": "getauthorizationtoken-example-1470867047084", - "title": "To obtain an authorization token" - } - ], - "GetRepositoryPolicy": [ - { - "input": { - "repositoryName": "ubuntu" - }, - "output": { - "policyText": "{\n \"Version\" : \"2008-10-17\",\n \"Statement\" : [ {\n \"Sid\" : \"new statement\",\n \"Effect\" : \"Allow\",\n \"Principal\" : {\n \"AWS\" : \"arn:aws:iam::012345678901:role/CodeDeployDemo\"\n },\n\"Action\" : [ \"ecr:GetDownloadUrlForLayer\", \"ecr:BatchGetImage\", \"ecr:BatchCheckLayerAvailability\" ]\n } ]\n}", - "registryId": "012345678901", - "repositoryName": "ubuntu" - }, - "comments": { - }, - "description": "This example obtains the repository policy for the repository named ubuntu.", - "id": "getrepositorypolicy-example-1470867669211", - "title": "To get the current policy for a repository" - } - ], - "ListImages": [ - { - "input": { - "repositoryName": "ubuntu" - }, - "output": { - "imageIds": [ - { - "imageDigest": "sha256:764f63476bdff6d83a09ba2a818f0d35757063724a9ac3ba5019c56f74ebf42a", - "imageTag": "precise" - } - ] - }, - "comments": { - }, - "description": "This example lists all of the images in the repository named ubuntu in the default registry in the current account. ", - "id": "listimages-example-1470868161594", - "title": "To list all images in a repository" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json b/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json deleted file mode 100644 index 0f56b32..0000000 --- a/node_modules/aws-sdk/apis/ecr-2015-09-21.min.json +++ /dev/null @@ -1,545 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-09-21", - "endpointPrefix": "ecr", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon ECR", - "serviceFullName": "Amazon EC2 Container Registry", - "signatureVersion": "v4", - "targetPrefix": "AmazonEC2ContainerRegistry_V20150921" - }, - "operations": { - "BatchCheckLayerAvailability": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "layerDigests" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "layerDigests": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "layers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "layerDigest": {}, - "layerAvailability": {}, - "layerSize": { - "type": "long" - } - } - } - }, - "failures": { - "type": "list", - "member": { - "type": "structure", - "members": { - "layerDigest": {}, - "failureCode": {}, - "failureReason": {} - } - } - } - } - } - }, - "BatchDeleteImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageIds" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "imageIds": { - "shape": "Sh" - }, - "failures": { - "shape": "Sm" - } - } - } - }, - "BatchGetImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageIds" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "images": { - "type": "list", - "member": { - "shape": "St" - } - }, - "failures": { - "shape": "Sm" - } - } - } - }, - "CompleteLayerUpload": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "uploadId", - "layerDigests" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "layerDigests": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "layerDigest": {} - } - } - }, - "CreateRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repository": { - "shape": "S11" - } - } - } - }, - "DeleteRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "repository": { - "shape": "S11" - } - } - } - }, - "DeleteRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "DescribeImages": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Sh" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "imageDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "imageDigest": {}, - "imageTags": { - "type": "list", - "member": {} - }, - "imageSizeInBytes": { - "type": "long" - }, - "imagePushedAt": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeRepositories": { - "input": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryNames": { - "type": "list", - "member": {} - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "shape": "S11" - } - }, - "nextToken": {} - } - } - }, - "GetAuthorizationToken": { - "input": { - "type": "structure", - "members": { - "registryIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "authorizationData": { - "type": "list", - "member": { - "type": "structure", - "members": { - "authorizationToken": {}, - "expiresAt": { - "type": "timestamp" - }, - "proxyEndpoint": {} - } - } - } - } - } - }, - "GetDownloadUrlForLayer": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "layerDigest" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "layerDigest": {} - } - }, - "output": { - "type": "structure", - "members": { - "downloadUrl": {}, - "layerDigest": {} - } - } - }, - "GetRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "InitiateLayerUpload": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "uploadId": {}, - "partSize": { - "type": "long" - } - } - } - }, - "ListImages": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "imageIds": { - "shape": "Sh" - }, - "nextToken": {} - } - } - }, - "PutImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageManifest" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageManifest": {} - } - }, - "output": { - "type": "structure", - "members": { - "image": { - "shape": "St" - } - } - } - }, - "SetRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "policyText" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "UploadLayerPart": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "uploadId", - "partFirstByte", - "partLastByte", - "layerPartBlob" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "partFirstByte": { - "type": "long" - }, - "partLastByte": { - "type": "long" - }, - "layerPartBlob": { - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "lastByteReceived": { - "type": "long" - } - } - } - } - }, - "shapes": { - "Sh": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "Si": { - "type": "structure", - "members": { - "imageDigest": {}, - "imageTag": {} - } - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "members": { - "imageId": { - "shape": "Si" - }, - "failureCode": {}, - "failureReason": {} - } - } - }, - "St": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "imageId": { - "shape": "Si" - }, - "imageManifest": {} - } - }, - "S11": { - "type": "structure", - "members": { - "repositoryArn": {}, - "registryId": {}, - "repositoryName": {}, - "repositoryUri": {}, - "createdAt": { - "type": "timestamp" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json deleted file mode 100644 index c14ba44..0000000 --- a/node_modules/aws-sdk/apis/ecs-2014-11-13.examples.json +++ /dev/null @@ -1,883 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CreateCluster": [ - { - "input": { - "clusterName": "my_cluster" - }, - "output": { - "cluster": { - "activeServicesCount": 0, - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/my_cluster", - "clusterName": "my_cluster", - "pendingTasksCount": 0, - "registeredContainerInstancesCount": 0, - "runningTasksCount": 0, - "status": "ACTIVE" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a cluster in your default region.", - "id": "to-create-a-new-cluster-1472514079365", - "title": "To create a new cluster" - } - ], - "CreateService": [ - { - "input": { - "desiredCount": 10, - "serviceName": "ecs-simple-service", - "taskDefinition": "hello_world" - }, - "output": { - "service": { - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", - "createdAt": "2016-08-29T16:13:47.298Z", - "deploymentConfiguration": { - "maximumPercent": 200, - "minimumHealthyPercent": 100 - }, - "deployments": [ - { - "createdAt": "2016-08-29T16:13:47.298Z", - "desiredCount": 10, - "id": "ecs-svc/9223370564342348388", - "pendingCount": 0, - "runningCount": 0, - "status": "PRIMARY", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", - "updatedAt": "2016-08-29T16:13:47.298Z" - }, - { - "createdAt": "2016-08-29T15:52:44.481Z", - "desiredCount": 0, - "id": "ecs-svc/9223370564343611322", - "pendingCount": 0, - "runningCount": 0, - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", - "updatedAt": "2016-08-29T16:11:38.941Z" - } - ], - "desiredCount": 10, - "events": [ - - ], - "loadBalancers": [ - - ], - "pendingCount": 0, - "runningCount": 0, - "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service", - "serviceName": "ecs-simple-service", - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a service in your default region called ``ecs-simple-service``. The service uses the ``hello_world`` task definition and it maintains 10 copies of that task.", - "id": "to-create-a-new-service-1472512584282", - "title": "To create a new service" - }, - { - "input": { - "desiredCount": 10, - "loadBalancers": [ - { - "containerName": "simple-app", - "containerPort": 80, - "loadBalancerName": "EC2Contai-EcsElast-15DCDAURT3ZO2" - } - ], - "role": "ecsServiceRole", - "serviceName": "ecs-simple-service-elb", - "taskDefinition": "console-sample-app-static" - }, - "output": { - "service": { - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", - "createdAt": "2016-08-29T16:02:54.884Z", - "deploymentConfiguration": { - "maximumPercent": 200, - "minimumHealthyPercent": 100 - }, - "deployments": [ - { - "createdAt": "2016-08-29T16:02:54.884Z", - "desiredCount": 10, - "id": "ecs-svc/9223370564343000923", - "pendingCount": 0, - "runningCount": 0, - "status": "PRIMARY", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/console-sample-app-static:6", - "updatedAt": "2016-08-29T16:02:54.884Z" - } - ], - "desiredCount": 10, - "events": [ - - ], - "loadBalancers": [ - { - "containerName": "simple-app", - "containerPort": 80, - "loadBalancerName": "EC2Contai-EcsElast-15DCDAURT3ZO2" - } - ], - "pendingCount": 0, - "roleArn": "arn:aws:iam::012345678910:role/ecsServiceRole", - "runningCount": 0, - "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service-elb", - "serviceName": "ecs-simple-service-elb", - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/console-sample-app-static:6" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a service in your default region called ``ecs-simple-service-elb``. The service uses the ``ecs-demo`` task definition and it maintains 10 copies of that task. You must reference an existing load balancer in the same region by its name.", - "id": "to-create-a-new-service-behind-a-load-balancer-1472512484823", - "title": "To create a new service behind a load balancer" - } - ], - "DeleteCluster": [ - { - "input": { - "cluster": "my_cluster" - }, - "output": { - "cluster": { - "activeServicesCount": 0, - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/my_cluster", - "clusterName": "my_cluster", - "pendingTasksCount": 0, - "registeredContainerInstancesCount": 0, - "runningTasksCount": 0, - "status": "INACTIVE" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes an empty cluster in your default region.", - "id": "to-delete-an-empty-cluster-1472512705352", - "title": "To delete an empty cluster" - } - ], - "DeleteService": [ - { - "input": { - "service": "my-http-service" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the my-http-service service. The service must have a desired count and running count of 0 before you can delete it.", - "id": "e8183e38-f86e-4390-b811-f74f30a6007d", - "title": "To delete a service" - } - ], - "DeregisterContainerInstance": [ - { - "input": { - "cluster": "default", - "containerInstance": "container_instance_UUID", - "force": true - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters a container instance from the specified cluster in your default region. If there are still tasks running on the container instance, you must either stop those tasks before deregistering, or use the force option.", - "id": "bf624927-cf64-4f4b-8b7e-c024a4e682f6", - "title": "To deregister a container instance from a cluster" - } - ], - "DescribeClusters": [ - { - "input": { - "clusters": [ - "default" - ] - }, - "output": { - "clusters": [ - { - "clusterArn": "arn:aws:ecs:us-east-1:aws_account_id:cluster/default", - "clusterName": "default", - "status": "ACTIVE" - } - ], - "failures": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified cluster in your default region.", - "id": "ba88d100-9672-4231-80da-a4bd210bf728", - "title": "To describe a cluster" - } - ], - "DescribeContainerInstances": [ - { - "input": { - "cluster": "default", - "containerInstances": [ - "f2756532-8f13-4d53-87c9-aed50dc94cd7" - ] - }, - "output": { - "containerInstances": [ - { - "agentConnected": true, - "containerInstanceArn": "arn:aws:ecs:us-east-1:012345678910:container-instance/f2756532-8f13-4d53-87c9-aed50dc94cd7", - "ec2InstanceId": "i-807f3249", - "pendingTasksCount": 0, - "registeredResources": [ - { - "name": "CPU", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 2048, - "longValue": 0 - }, - { - "name": "MEMORY", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 3768, - "longValue": 0 - }, - { - "name": "PORTS", - "type": "STRINGSET", - "doubleValue": 0.0, - "integerValue": 0, - "longValue": 0, - "stringSetValue": [ - "2376", - "22", - "51678", - "2375" - ] - } - ], - "remainingResources": [ - { - "name": "CPU", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 1948, - "longValue": 0 - }, - { - "name": "MEMORY", - "type": "INTEGER", - "doubleValue": 0.0, - "integerValue": 3668, - "longValue": 0 - }, - { - "name": "PORTS", - "type": "STRINGSET", - "doubleValue": 0.0, - "integerValue": 0, - "longValue": 0, - "stringSetValue": [ - "2376", - "22", - "80", - "51678", - "2375" - ] - } - ], - "runningTasksCount": 1, - "status": "ACTIVE" - } - ], - "failures": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified container instance in your default region, using the container instance UUID as an identifier.", - "id": "c8f439de-eb27-4269-8ca7-2c0a7ba75ab0", - "title": "To describe container instance" - } - ], - "DescribeServices": [ - { - "input": { - "services": [ - "ecs-simple-service" - ] - }, - "output": { - "failures": [ - - ], - "services": [ - { - "clusterArn": "arn:aws:ecs:us-east-1:012345678910:cluster/default", - "createdAt": "2016-08-29T16:25:52.130Z", - "deploymentConfiguration": { - "maximumPercent": 200, - "minimumHealthyPercent": 100 - }, - "deployments": [ - { - "createdAt": "2016-08-29T16:25:52.130Z", - "desiredCount": 1, - "id": "ecs-svc/9223370564341623665", - "pendingCount": 0, - "runningCount": 0, - "status": "PRIMARY", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6", - "updatedAt": "2016-08-29T16:25:52.130Z" - } - ], - "desiredCount": 1, - "events": [ - { - "createdAt": "2016-08-29T16:25:58.520Z", - "id": "38c285e5-d335-4b68-8b15-e46dedc8e88d", - "message": "(service ecs-simple-service) was unable to place a task because no container instance met all of its requirements. The closest matching (container-instance 3f4de1c5-ffdd-4954-af7e-75b4be0c8841) is already using a port required by your task. For more information, see the Troubleshooting section of the Amazon ECS Developer Guide." - } - ], - "loadBalancers": [ - - ], - "pendingCount": 0, - "runningCount": 0, - "serviceArn": "arn:aws:ecs:us-east-1:012345678910:service/ecs-simple-service", - "serviceName": "ecs-simple-service", - "status": "ACTIVE", - "taskDefinition": "arn:aws:ecs:us-east-1:012345678910:task-definition/hello_world:6" - } - ] - }, - "comments": { - "input": { - }, - "output": { - "services[0].events[0].message": "In this example, there is a service event that shows unavailable cluster resources." - } - }, - "description": "This example provides descriptive information about the service named ``ecs-simple-service``.", - "id": "to-describe-a-service-1472513256350", - "title": "To describe a service" - } - ], - "DescribeTaskDefinition": [ - { - "input": { - "taskDefinition": "hello_world:8" - }, - "output": { - "taskDefinition": { - "containerDefinitions": [ - { - "name": "wordpress", - "cpu": 10, - "environment": [ - - ], - "essential": true, - "image": "wordpress", - "links": [ - "mysql" - ], - "memory": 500, - "mountPoints": [ - - ], - "portMappings": [ - { - "containerPort": 80, - "hostPort": 80 - } - ], - "volumesFrom": [ - - ] - }, - { - "name": "mysql", - "cpu": 10, - "environment": [ - { - "name": "MYSQL_ROOT_PASSWORD", - "value": "password" - } - ], - "essential": true, - "image": "mysql", - "memory": 500, - "mountPoints": [ - - ], - "portMappings": [ - - ], - "volumesFrom": [ - - ] - } - ], - "family": "hello_world", - "revision": 8, - "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/hello_world:8", - "volumes": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified task definition.", - "id": "4c21eeb1-f1da-4a08-8c44-297fc8d0ea88", - "title": "To describe a task definition" - } - ], - "DescribeTasks": [ - { - "input": { - "tasks": [ - "c5cba4eb-5dad-405e-96db-71ef8eefe6a8" - ] - }, - "output": { - "failures": [ - - ], - "tasks": [ - { - "clusterArn": "arn:aws:ecs:::cluster/default", - "containerInstanceArn": "arn:aws:ecs:::container-instance/18f9eda5-27d7-4c19-b133-45adc516e8fb", - "containers": [ - { - "name": "ecs-demo", - "containerArn": "arn:aws:ecs:::container/7c01765b-c588-45b3-8290-4ba38bd6c5a6", - "lastStatus": "RUNNING", - "networkBindings": [ - { - "bindIP": "0.0.0.0", - "containerPort": 80, - "hostPort": 80 - } - ], - "taskArn": "arn:aws:ecs:::task/c5cba4eb-5dad-405e-96db-71ef8eefe6a8" - } - ], - "desiredStatus": "RUNNING", - "lastStatus": "RUNNING", - "overrides": { - "containerOverrides": [ - { - "name": "ecs-demo" - } - ] - }, - "startedBy": "ecs-svc/9223370608528463088", - "taskArn": "arn:aws:ecs:::task/c5cba4eb-5dad-405e-96db-71ef8eefe6a8", - "taskDefinitionArn": "arn:aws:ecs:::task-definition/amazon-ecs-sample:1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example provides a description of the specified task, using the task UUID as an identifier.", - "id": "a90b0cde-f965-4946-b55e-cfd8cc54e827", - "title": "To describe a task" - } - ], - "ListClusters": [ - { - "input": { - }, - "output": { - "clusterArns": [ - "arn:aws:ecs:us-east-1::cluster/test", - "arn:aws:ecs:us-east-1::cluster/default" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your available clusters in your default region.", - "id": "e337d059-134f-4125-ba8e-4f499139facf", - "title": "To list your available clusters" - } - ], - "ListContainerInstances": [ - { - "input": { - "cluster": "default" - }, - "output": { - "containerInstanceArns": [ - "arn:aws:ecs:us-east-1::container-instance/f6bbb147-5370-4ace-8c73-c7181ded911f", - "arn:aws:ecs:us-east-1::container-instance/ffe3d344-77e2-476c-a4d0-bf560ad50acb" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your available container instances in the specified cluster in your default region.", - "id": "62a82a94-713c-4e18-8420-1d2b2ba9d484", - "title": "To list your available container instances in a cluster" - } - ], - "ListServices": [ - { - "input": { - }, - "output": { - "serviceArns": [ - "arn:aws:ecs:us-east-1:012345678910:service/my-http-service" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the services running in the default cluster for an account.", - "id": "1d9a8037-4e0e-4234-a528-609656809a3a", - "title": "To list the services in a cluster" - } - ], - "ListTaskDefinitionFamilies": [ - { - "input": { - }, - "output": { - "families": [ - "node-js-app", - "web-timer", - "hpcc", - "hpcc-c4-8xlarge" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your registered task definition families.", - "id": "b5c89769-1d94-4ca2-a79e-8069103c7f75", - "title": "To list your registered task definition families" - }, - { - "input": { - "familyPrefix": "hpcc" - }, - "output": { - "families": [ - "hpcc", - "hpcc-c4-8xlarge" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the task definition revisions that start with \"hpcc\".", - "id": "8a4cf9a6-42c1-4fe3-852d-99ac8968e11b", - "title": "To filter your registered task definition families" - } - ], - "ListTaskDefinitions": [ - { - "input": { - }, - "output": { - "taskDefinitionArns": [ - "arn:aws:ecs:us-east-1::task-definition/sleep300:2", - "arn:aws:ecs:us-east-1::task-definition/sleep360:1", - "arn:aws:ecs:us-east-1::task-definition/wordpress:3", - "arn:aws:ecs:us-east-1::task-definition/wordpress:4", - "arn:aws:ecs:us-east-1::task-definition/wordpress:5", - "arn:aws:ecs:us-east-1::task-definition/wordpress:6" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of your registered task definitions.", - "id": "b381ebaf-7eba-4d60-b99b-7f6ae49d3d60", - "title": "To list your registered task definitions" - }, - { - "input": { - "familyPrefix": "wordpress" - }, - "output": { - "taskDefinitionArns": [ - "arn:aws:ecs:us-east-1::task-definition/wordpress:3", - "arn:aws:ecs:us-east-1::task-definition/wordpress:4", - "arn:aws:ecs:us-east-1::task-definition/wordpress:5", - "arn:aws:ecs:us-east-1::task-definition/wordpress:6" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the task definition revisions of a specified family.", - "id": "734e7afd-753a-4bc2-85d0-badddce10910", - "title": "To list the registered task definitions in a family" - } - ], - "ListTasks": [ - { - "input": { - "cluster": "default" - }, - "output": { - "taskArns": [ - "arn:aws:ecs:us-east-1:012345678910:task/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84", - "arn:aws:ecs:us-east-1:012345678910:task/6b809ef6-c67e-4467-921f-ee261c15a0a1" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all of the tasks in a cluster.", - "id": "9a6ec707-1a77-45d0-b2eb-516b5dd9e924", - "title": "To list the tasks in a cluster" - }, - { - "input": { - "cluster": "default", - "containerInstance": "f6bbb147-5370-4ace-8c73-c7181ded911f" - }, - "output": { - "taskArns": [ - "arn:aws:ecs:us-east-1:012345678910:task/0cc43cdb-3bee-4407-9c26-c0e6ea5bee84" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the tasks of a specified container instance. Specifying a ``containerInstance`` value limits the results to tasks that belong to that container instance.", - "id": "024bf3b7-9cbb-44e3-848f-9d074e1fecce", - "title": "To list the tasks on a particular container instance" - } - ], - "RegisterTaskDefinition": [ - { - "input": { - "containerDefinitions": [ - { - "name": "sleep", - "command": [ - "sleep", - "360" - ], - "cpu": 10, - "essential": true, - "image": "busybox", - "memory": 10 - } - ], - "family": "sleep360", - "taskRoleArn": "", - "volumes": [ - - ] - }, - "output": { - "taskDefinition": { - "containerDefinitions": [ - { - "name": "sleep", - "command": [ - "sleep", - "360" - ], - "cpu": 10, - "environment": [ - - ], - "essential": true, - "image": "busybox", - "memory": 10, - "mountPoints": [ - - ], - "portMappings": [ - - ], - "volumesFrom": [ - - ] - } - ], - "family": "sleep360", - "revision": 1, - "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/sleep360:19", - "volumes": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers a task definition to the specified family.", - "id": "to-register-a-task-definition-1470764550877", - "title": "To register a task definition" - } - ], - "RunTask": [ - { - "input": { - "cluster": "default", - "taskDefinition": "sleep360:1" - }, - "output": { - "tasks": [ - { - "containerInstanceArn": "arn:aws:ecs:us-east-1::container-instance/ffe3d344-77e2-476c-a4d0-bf560ad50acb", - "containers": [ - { - "name": "sleep", - "containerArn": "arn:aws:ecs:us-east-1::container/58591c8e-be29-4ddf-95aa-ee459d4c59fd", - "lastStatus": "PENDING", - "taskArn": "arn:aws:ecs:us-east-1::task/a9f21ea7-c9f5-44b1-b8e6-b31f50ed33c0" - } - ], - "desiredStatus": "RUNNING", - "lastStatus": "PENDING", - "overrides": { - "containerOverrides": [ - { - "name": "sleep" - } - ] - }, - "taskArn": "arn:aws:ecs:us-east-1::task/a9f21ea7-c9f5-44b1-b8e6-b31f50ed33c0", - "taskDefinitionArn": "arn:aws:ecs:us-east-1::task-definition/sleep360:1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example runs the specified task definition on your default cluster.", - "id": "6f238c83-a133-42cd-ab3d-abeca0560445", - "title": "To run a task on your default cluster" - } - ], - "UpdateService": [ - { - "input": { - "service": "my-http-service", - "taskDefinition": "amazon-ecs-sample" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the my-http-service service to use the amazon-ecs-sample task definition.", - "id": "cc9e8900-0cc2-44d2-8491-64d1d3d37887", - "title": "To change the task definition used in a service" - }, - { - "input": { - "desiredCount": 10, - "service": "my-http-service" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example updates the desired count of the my-http-service service to 10.", - "id": "9581d6c5-02e3-4140-8cc1-5a4301586633", - "title": "To change the number of tasks in a service" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json deleted file mode 100644 index 2cc784e..0000000 --- a/node_modules/aws-sdk/apis/ecs-2014-11-13.min.json +++ /dev/null @@ -1,1135 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-13", - "endpointPrefix": "ecs", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon ECS", - "serviceFullName": "Amazon EC2 Container Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonEC2ContainerServiceV20141113" - }, - "operations": { - "CreateCluster": { - "input": { - "type": "structure", - "members": { - "clusterName": {} - } - }, - "output": { - "type": "structure", - "members": { - "cluster": { - "shape": "S4" - } - } - } - }, - "CreateService": { - "input": { - "type": "structure", - "required": [ - "serviceName", - "taskDefinition", - "desiredCount" - ], - "members": { - "cluster": {}, - "serviceName": {}, - "taskDefinition": {}, - "loadBalancers": { - "shape": "S7" - }, - "desiredCount": { - "type": "integer" - }, - "clientToken": {}, - "role": {}, - "deploymentConfiguration": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Sc" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "cluster" - ], - "members": { - "cluster": {} - } - }, - "output": { - "type": "structure", - "members": { - "cluster": { - "shape": "S4" - } - } - } - }, - "DeleteService": { - "input": { - "type": "structure", - "required": [ - "service" - ], - "members": { - "cluster": {}, - "service": {} - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Sc" - } - } - } - }, - "DeregisterContainerInstance": { - "input": { - "type": "structure", - "required": [ - "containerInstance" - ], - "members": { - "cluster": {}, - "containerInstance": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "Sp" - } - } - } - }, - "DeregisterTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "taskDefinition": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S12" - } - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "clusters": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "clusters": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DescribeContainerInstances": { - "input": { - "type": "structure", - "required": [ - "containerInstances" - ], - "members": { - "cluster": {}, - "containerInstances": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstances": { - "type": "list", - "member": { - "shape": "Sp" - } - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DescribeServices": { - "input": { - "type": "structure", - "required": [ - "services" - ], - "members": { - "cluster": {}, - "services": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "services": { - "type": "list", - "member": { - "shape": "Sc" - } - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DescribeTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "taskDefinition": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S12" - } - } - } - }, - "DescribeTasks": { - "input": { - "type": "structure", - "required": [ - "tasks" - ], - "members": { - "cluster": {}, - "tasks": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S28" - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DiscoverPollEndpoint": { - "input": { - "type": "structure", - "members": { - "containerInstance": {}, - "cluster": {} - } - }, - "output": { - "type": "structure", - "members": { - "endpoint": {}, - "telemetryEndpoint": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "clusterArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListContainerInstances": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstanceArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListServices": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "serviceArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListTaskDefinitionFamilies": { - "input": { - "type": "structure", - "members": { - "familyPrefix": {}, - "status": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "families": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListTaskDefinitions": { - "input": { - "type": "structure", - "members": { - "familyPrefix": {}, - "status": {}, - "sort": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinitionArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListTasks": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "containerInstance": {}, - "family": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "startedBy": {}, - "serviceName": {}, - "desiredStatus": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "RegisterContainerInstance": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "instanceIdentityDocument": {}, - "instanceIdentityDocumentSignature": {}, - "totalResources": { - "shape": "Sr" - }, - "versionInfo": { - "shape": "Sq" - }, - "containerInstanceArn": {}, - "attributes": { - "shape": "Sy" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "Sp" - } - } - } - }, - "RegisterTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "family", - "containerDefinitions" - ], - "members": { - "family": {}, - "taskRoleArn": {}, - "networkMode": {}, - "containerDefinitions": { - "shape": "S13" - }, - "volumes": { - "shape": "S1o" - } - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S12" - } - } - } - }, - "RunTask": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "cluster": {}, - "taskDefinition": {}, - "overrides": { - "shape": "S2a" - }, - "count": { - "type": "integer" - }, - "startedBy": {} - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S28" - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "StartTask": { - "input": { - "type": "structure", - "required": [ - "taskDefinition", - "containerInstances" - ], - "members": { - "cluster": {}, - "taskDefinition": {}, - "overrides": { - "shape": "S2a" - }, - "containerInstances": { - "shape": "Sv" - }, - "startedBy": {} - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S28" - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "StopTask": { - "input": { - "type": "structure", - "required": [ - "task" - ], - "members": { - "cluster": {}, - "task": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": { - "task": { - "shape": "S29" - } - } - } - }, - "SubmitContainerStateChange": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "task": {}, - "containerName": {}, - "status": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "networkBindings": { - "shape": "S2f" - } - } - }, - "output": { - "type": "structure", - "members": { - "acknowledgment": {} - } - } - }, - "SubmitTaskStateChange": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "task": {}, - "status": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": { - "acknowledgment": {} - } - } - }, - "UpdateContainerAgent": { - "input": { - "type": "structure", - "required": [ - "containerInstance" - ], - "members": { - "cluster": {}, - "containerInstance": {} - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "Sp" - } - } - } - }, - "UpdateService": { - "input": { - "type": "structure", - "required": [ - "service" - ], - "members": { - "cluster": {}, - "service": {}, - "desiredCount": { - "type": "integer" - }, - "taskDefinition": {}, - "deploymentConfiguration": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Sc" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "clusterArn": {}, - "clusterName": {}, - "status": {}, - "registeredContainerInstancesCount": { - "type": "integer" - }, - "runningTasksCount": { - "type": "integer" - }, - "pendingTasksCount": { - "type": "integer" - }, - "activeServicesCount": { - "type": "integer" - } - } - }, - "S7": { - "type": "list", - "member": { - "type": "structure", - "members": { - "targetGroupArn": {}, - "loadBalancerName": {}, - "containerName": {}, - "containerPort": { - "type": "integer" - } - } - } - }, - "Sa": { - "type": "structure", - "members": { - "maximumPercent": { - "type": "integer" - }, - "minimumHealthyPercent": { - "type": "integer" - } - } - }, - "Sc": { - "type": "structure", - "members": { - "serviceArn": {}, - "serviceName": {}, - "clusterArn": {}, - "loadBalancers": { - "shape": "S7" - }, - "status": {}, - "desiredCount": { - "type": "integer" - }, - "runningCount": { - "type": "integer" - }, - "pendingCount": { - "type": "integer" - }, - "taskDefinition": {}, - "deploymentConfiguration": { - "shape": "Sa" - }, - "deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "status": {}, - "taskDefinition": {}, - "desiredCount": { - "type": "integer" - }, - "pendingCount": { - "type": "integer" - }, - "runningCount": { - "type": "integer" - }, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "roleArn": {}, - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "createdAt": { - "type": "timestamp" - }, - "message": {} - } - } - }, - "createdAt": { - "type": "timestamp" - } - } - }, - "Sp": { - "type": "structure", - "members": { - "containerInstanceArn": {}, - "ec2InstanceId": {}, - "versionInfo": { - "shape": "Sq" - }, - "remainingResources": { - "shape": "Sr" - }, - "registeredResources": { - "shape": "Sr" - }, - "status": {}, - "agentConnected": { - "type": "boolean" - }, - "runningTasksCount": { - "type": "integer" - }, - "pendingTasksCount": { - "type": "integer" - }, - "agentUpdateStatus": {}, - "attributes": { - "shape": "Sy" - } - } - }, - "Sq": { - "type": "structure", - "members": { - "agentVersion": {}, - "agentHash": {}, - "dockerVersion": {} - } - }, - "Sr": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "type": {}, - "doubleValue": { - "type": "double" - }, - "longValue": { - "type": "long" - }, - "integerValue": { - "type": "integer" - }, - "stringSetValue": { - "shape": "Sv" - } - } - } - }, - "Sv": { - "type": "list", - "member": {} - }, - "Sy": { - "type": "list", - "member": { - "shape": "Sz" - } - }, - "Sz": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "value": {} - } - }, - "S12": { - "type": "structure", - "members": { - "taskDefinitionArn": {}, - "containerDefinitions": { - "shape": "S13" - }, - "family": {}, - "taskRoleArn": {}, - "networkMode": {}, - "revision": { - "type": "integer" - }, - "volumes": { - "shape": "S1o" - }, - "status": {}, - "requiresAttributes": { - "type": "list", - "member": { - "shape": "Sz" - } - } - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "image": {}, - "cpu": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "memoryReservation": { - "type": "integer" - }, - "links": { - "shape": "Sv" - }, - "portMappings": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerPort": { - "type": "integer" - }, - "hostPort": { - "type": "integer" - }, - "protocol": {} - } - } - }, - "essential": { - "type": "boolean" - }, - "entryPoint": { - "shape": "Sv" - }, - "command": { - "shape": "Sv" - }, - "environment": { - "shape": "S18" - }, - "mountPoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "sourceVolume": {}, - "containerPath": {}, - "readOnly": { - "type": "boolean" - } - } - } - }, - "volumesFrom": { - "type": "list", - "member": { - "type": "structure", - "members": { - "sourceContainer": {}, - "readOnly": { - "type": "boolean" - } - } - } - }, - "hostname": {}, - "user": {}, - "workingDirectory": {}, - "disableNetworking": { - "type": "boolean" - }, - "privileged": { - "type": "boolean" - }, - "readonlyRootFilesystem": { - "type": "boolean" - }, - "dnsServers": { - "shape": "Sv" - }, - "dnsSearchDomains": { - "shape": "Sv" - }, - "extraHosts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "hostname", - "ipAddress" - ], - "members": { - "hostname": {}, - "ipAddress": {} - } - } - }, - "dockerSecurityOptions": { - "shape": "Sv" - }, - "dockerLabels": { - "type": "map", - "key": {}, - "value": {} - }, - "ulimits": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "softLimit", - "hardLimit" - ], - "members": { - "name": {}, - "softLimit": { - "type": "integer" - }, - "hardLimit": { - "type": "integer" - } - } - } - }, - "logConfiguration": { - "type": "structure", - "required": [ - "logDriver" - ], - "members": { - "logDriver": {}, - "options": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "value": {} - } - } - }, - "S1o": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "host": { - "type": "structure", - "members": { - "sourcePath": {} - } - } - } - } - }, - "S1w": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "reason": {} - } - } - }, - "S28": { - "type": "list", - "member": { - "shape": "S29" - } - }, - "S29": { - "type": "structure", - "members": { - "taskArn": {}, - "clusterArn": {}, - "taskDefinitionArn": {}, - "containerInstanceArn": {}, - "overrides": { - "shape": "S2a" - }, - "lastStatus": {}, - "desiredStatus": {}, - "containers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerArn": {}, - "taskArn": {}, - "name": {}, - "lastStatus": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "networkBindings": { - "shape": "S2f" - } - } - } - }, - "startedBy": {}, - "stoppedReason": {}, - "createdAt": { - "type": "timestamp" - }, - "startedAt": { - "type": "timestamp" - }, - "stoppedAt": { - "type": "timestamp" - } - } - }, - "S2a": { - "type": "structure", - "members": { - "containerOverrides": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "command": { - "shape": "Sv" - }, - "environment": { - "shape": "S18" - } - } - } - }, - "taskRoleArn": {} - } - }, - "S2f": { - "type": "list", - "member": { - "type": "structure", - "members": { - "bindIP": {}, - "containerPort": { - "type": "integer" - }, - "hostPort": { - "type": "integer" - }, - "protocol": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json deleted file mode 100644 index 081a2df..0000000 --- a/node_modules/aws-sdk/apis/ecs-2014-11-13.paginators.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "pagination": { - "ListClusters": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "clusterArns" - }, - "ListContainerInstances": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "containerInstanceArns" - }, - "ListTaskDefinitions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "taskDefinitionArns" - }, - "ListTaskDefinitionFamilies": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "families" - }, - "ListTasks": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "taskArns" - }, - "ListServices": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "serviceArns" - } - } -} diff --git a/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json b/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json deleted file mode 100644 index 8a0b19d..0000000 --- a/node_modules/aws-sdk/apis/ecs-2014-11-13.waiters2.json +++ /dev/null @@ -1,93 +0,0 @@ -{ - "version": 2, - "waiters": { - "TasksRunning": { - "delay": 6, - "operation": "DescribeTasks", - "maxAttempts": 100, - "acceptors": [ - { - "expected": "STOPPED", - "matcher": "pathAny", - "state": "failure", - "argument": "tasks[].lastStatus" - }, - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "RUNNING", - "matcher": "pathAll", - "state": "success", - "argument": "tasks[].lastStatus" - } - ] - }, - "TasksStopped": { - "delay": 6, - "operation": "DescribeTasks", - "maxAttempts": 100, - "acceptors": [ - { - "expected": "STOPPED", - "matcher": "pathAll", - "state": "success", - "argument": "tasks[].lastStatus" - } - ] - }, - "ServicesStable": { - "delay": 15, - "operation": "DescribeServices", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "DRAINING", - "matcher": "pathAny", - "state": "failure", - "argument": "services[].status" - }, - { - "expected": "INACTIVE", - "matcher": "pathAny", - "state": "failure", - "argument": "services[].status" - }, - { - "expected": true, - "matcher": "path", - "state": "success", - "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" - } - ] - }, - "ServicesInactive": { - "delay": 15, - "operation": "DescribeServices", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "INACTIVE", - "matcher": "pathAny", - "state": "success", - "argument": "services[].status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json b/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json deleted file mode 100644 index d973bb8..0000000 --- a/node_modules/aws-sdk/apis/elasticache-2015-02-02.min.json +++ /dev/null @@ -1,1567 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-02-02", - "endpointPrefix": "elasticache", - "protocol": "query", - "serviceFullName": "Amazon ElastiCache", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "shape": "S5", - "resultWrapper": "AddTagsToResourceResult" - } - }, - "AuthorizeCacheSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members": { - "CacheSecurityGroupName": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "CopySnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceSnapshotName", - "TargetSnapshotName" - ], - "members": { - "SourceSnapshotName": {}, - "TargetSnapshotName": {}, - "TargetBucket": {} - } - }, - "output": { - "resultWrapper": "CopySnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "ReplicationGroupId": {}, - "AZMode": {}, - "PreferredAvailabilityZone": {}, - "PreferredAvailabilityZones": { - "shape": "So" - }, - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "Tags": { - "shape": "S3" - }, - "SnapshotArns": { - "shape": "Sr" - }, - "SnapshotName": {}, - "PreferredMaintenanceWindow": {}, - "Port": { - "type": "integer" - }, - "NotificationTopicArn": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - } - }, - "output": { - "resultWrapper": "CreateCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "CreateCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName", - "CacheParameterGroupFamily", - "Description" - ], - "members": { - "CacheParameterGroupName": {}, - "CacheParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateCacheParameterGroupResult", - "type": "structure", - "members": { - "CacheParameterGroup": { - "shape": "S19" - } - } - } - }, - "CreateCacheSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "Description" - ], - "members": { - "CacheSecurityGroupName": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateCacheSecurityGroupResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "CreateCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName", - "CacheSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1d" - } - } - }, - "output": { - "resultWrapper": "CreateCacheSubnetGroupResult", - "type": "structure", - "members": { - "CacheSubnetGroup": { - "shape": "S1f" - } - } - } - }, - "CreateReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId", - "ReplicationGroupDescription" - ], - "members": { - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "PrimaryClusterId": {}, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "NumCacheClusters": { - "type": "integer" - }, - "PreferredCacheClusterAZs": { - "shape": "Sl" - }, - "NumNodeGroups": { - "type": "integer" - }, - "ReplicasPerNodeGroup": { - "type": "integer" - }, - "NodeGroupConfiguration": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "NodeGroupConfiguration" - } - }, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "Tags": { - "shape": "S3" - }, - "SnapshotArns": { - "shape": "Sr" - }, - "SnapshotName": {}, - "PreferredMaintenanceWindow": {}, - "Port": { - "type": "integer" - }, - "NotificationTopicArn": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - } - }, - "output": { - "resultWrapper": "CreateReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotName" - ], - "members": { - "ReplicationGroupId": {}, - "CacheClusterId": {}, - "SnapshotName": {} - } - }, - "output": { - "resultWrapper": "CreateSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DeleteCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "FinalSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "DeleteCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {} - } - } - }, - "DeleteCacheSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName" - ], - "members": { - "CacheSecurityGroupName": {} - } - } - }, - "DeleteCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName" - ], - "members": { - "CacheSubnetGroupName": {} - } - } - }, - "DeleteReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "RetainPrimaryCluster": { - "type": "boolean" - }, - "FinalSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotName" - ], - "members": { - "SnapshotName": {} - } - }, - "output": { - "resultWrapper": "DeleteSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DescribeCacheClusters": { - "input": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "ShowCacheNodeInfo": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeCacheClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheClusters": { - "type": "list", - "member": { - "shape": "Su", - "locationName": "CacheCluster" - } - } - } - } - }, - "DescribeCacheEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeCacheEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheEngineVersions": { - "type": "list", - "member": { - "locationName": "CacheEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupFamily": {}, - "CacheEngineDescription": {}, - "CacheEngineVersionDescription": {} - } - } - } - } - } - }, - "DescribeCacheParameterGroups": { - "input": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheParameterGroups": { - "type": "list", - "member": { - "shape": "S19", - "locationName": "CacheParameterGroup" - } - } - } - } - }, - "DescribeCacheParameters": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheParametersResult", - "type": "structure", - "members": { - "Marker": {}, - "Parameters": { - "shape": "S2h" - }, - "CacheNodeTypeSpecificParameters": { - "shape": "S2k" - } - } - } - }, - "DescribeCacheSecurityGroups": { - "input": { - "type": "structure", - "members": { - "CacheSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheSecurityGroups": { - "type": "list", - "member": { - "shape": "S8", - "locationName": "CacheSecurityGroup" - } - } - } - } - }, - "DescribeCacheSubnetGroups": { - "input": { - "type": "structure", - "members": { - "CacheSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheSubnetGroups": { - "type": "list", - "member": { - "shape": "S1f", - "locationName": "CacheSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupFamily" - ], - "members": { - "CacheParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "CacheParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2h" - }, - "CacheNodeTypeSpecificParameters": { - "shape": "S2k" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeReplicationGroups": { - "input": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReplicationGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReplicationGroups": { - "type": "list", - "member": { - "shape": "S1m", - "locationName": "ReplicationGroup" - } - } - } - } - }, - "DescribeReservedCacheNodes": { - "input": { - "type": "structure", - "members": { - "ReservedCacheNodeId": {}, - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedCacheNodesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedCacheNodes": { - "type": "list", - "member": { - "shape": "S38", - "locationName": "ReservedCacheNode" - } - } - } - } - }, - "DescribeReservedCacheNodesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedCacheNodesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedCacheNodesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedCacheNodesOffering", - "type": "structure", - "members": { - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "ProductDescription": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S3a" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "CacheClusterId": {}, - "SnapshotName": {}, - "SnapshotSource": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "ShowNodeGroupConfig": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "Snapshots": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "Snapshot" - } - } - } - } - }, - "ListAllowedNodeTypeModifications": { - "input": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "ReplicationGroupId": {} - } - }, - "output": { - "resultWrapper": "ListAllowedNodeTypeModificationsResult", - "type": "structure", - "members": { - "ScaleUpModifications": { - "type": "list", - "member": {} - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "shape": "S5", - "resultWrapper": "ListTagsForResourceResult" - } - }, - "ModifyCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeIdsToRemove": { - "shape": "Sy" - }, - "AZMode": {}, - "NewAvailabilityZones": { - "shape": "So" - }, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "CacheParameterGroupName": {}, - "NotificationTopicStatus": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "CacheNodeType": {} - } - }, - "output": { - "resultWrapper": "ModifyCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "ModifyCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName", - "ParameterNameValues" - ], - "members": { - "CacheParameterGroupName": {}, - "ParameterNameValues": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S3s", - "resultWrapper": "ModifyCacheParameterGroupResult" - } - }, - "ModifyCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName" - ], - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1d" - } - } - }, - "output": { - "resultWrapper": "ModifyCacheSubnetGroupResult", - "type": "structure", - "members": { - "CacheSubnetGroup": { - "shape": "S1f" - } - } - } - }, - "ModifyReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "PrimaryClusterId": {}, - "SnapshottingClusterId": {}, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "CacheParameterGroupName": {}, - "NotificationTopicStatus": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "CacheNodeType": {} - } - }, - "output": { - "resultWrapper": "ModifyReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "PurchaseReservedCacheNodesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedCacheNodesOfferingId" - ], - "members": { - "ReservedCacheNodesOfferingId": {}, - "ReservedCacheNodeId": {}, - "CacheNodeCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedCacheNodesOfferingResult", - "type": "structure", - "members": { - "ReservedCacheNode": { - "shape": "S38" - } - } - } - }, - "RebootCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId", - "CacheNodeIdsToReboot" - ], - "members": { - "CacheClusterId": {}, - "CacheNodeIdsToReboot": { - "shape": "Sy" - } - } - }, - "output": { - "resultWrapper": "RebootCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "shape": "S5", - "resultWrapper": "RemoveTagsFromResourceResult" - } - }, - "ResetCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "ParameterNameValues": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S3s", - "resultWrapper": "ResetCacheParameterGroupResult" - } - }, - "RevokeCacheSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members": { - "CacheSecurityGroupName": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeCacheSecurityGroupIngressResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S5": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - }, - "S8": { - "type": "structure", - "members": { - "OwnerId": {}, - "CacheSecurityGroupName": {}, - "Description": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - } - } - }, - "wrapper": true - }, - "Sd": { - "type": "structure", - "members": { - "SnapshotName": {}, - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "CacheClusterId": {}, - "SnapshotStatus": {}, - "SnapshotSource": {}, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "NumCacheNodes": { - "type": "integer" - }, - "PreferredAvailabilityZone": {}, - "CacheClusterCreateTime": { - "type": "timestamp" - }, - "PreferredMaintenanceWindow": {}, - "TopicArn": {}, - "Port": { - "type": "integer" - }, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "VpcId": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "NumNodeGroups": { - "type": "integer" - }, - "AutomaticFailover": {}, - "NodeSnapshots": { - "type": "list", - "member": { - "locationName": "NodeSnapshot", - "type": "structure", - "members": { - "CacheClusterId": {}, - "NodeGroupId": {}, - "CacheNodeId": {}, - "NodeGroupConfiguration": { - "shape": "Sk" - }, - "CacheSize": {}, - "CacheNodeCreateTime": { - "type": "timestamp" - }, - "SnapshotCreateTime": { - "type": "timestamp" - } - }, - "wrapper": true - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "Slots": {}, - "ReplicaCount": { - "type": "integer" - }, - "PrimaryAvailabilityZone": {}, - "ReplicaAvailabilityZones": { - "shape": "Sl" - } - } - }, - "Sl": { - "type": "list", - "member": { - "locationName": "AvailabilityZone" - } - }, - "So": { - "type": "list", - "member": { - "locationName": "PreferredAvailabilityZone" - } - }, - "Sp": { - "type": "list", - "member": { - "locationName": "CacheSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "Sr": { - "type": "list", - "member": { - "locationName": "SnapshotArn" - } - }, - "Su": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "ConfigurationEndpoint": { - "shape": "Sv" - }, - "ClientDownloadLandingPage": {}, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheClusterStatus": {}, - "NumCacheNodes": { - "type": "integer" - }, - "PreferredAvailabilityZone": {}, - "CacheClusterCreateTime": { - "type": "timestamp" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeIdsToRemove": { - "shape": "Sy" - }, - "EngineVersion": {}, - "CacheNodeType": {} - } - }, - "NotificationConfiguration": { - "type": "structure", - "members": { - "TopicArn": {}, - "TopicStatus": {} - } - }, - "CacheSecurityGroups": { - "type": "list", - "member": { - "locationName": "CacheSecurityGroup", - "type": "structure", - "members": { - "CacheSecurityGroupName": {}, - "Status": {} - } - } - }, - "CacheParameterGroup": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "ParameterApplyStatus": {}, - "CacheNodeIdsToReboot": { - "shape": "Sy" - } - } - }, - "CacheSubnetGroupName": {}, - "CacheNodes": { - "type": "list", - "member": { - "locationName": "CacheNode", - "type": "structure", - "members": { - "CacheNodeId": {}, - "CacheNodeStatus": {}, - "CacheNodeCreateTime": { - "type": "timestamp" - }, - "Endpoint": { - "shape": "Sv" - }, - "ParameterGroupStatus": {}, - "SourceCacheNodeId": {}, - "CustomerAvailabilityZone": {} - } - } - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SecurityGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SecurityGroupId": {}, - "Status": {} - } - } - }, - "ReplicationGroupId": {}, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - }, - "wrapper": true - }, - "Sv": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "Sy": { - "type": "list", - "member": { - "locationName": "CacheNodeId" - } - }, - "S19": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "CacheParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1d": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1f": { - "type": "structure", - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "VpcId": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - } - } - } - } - }, - "wrapper": true - }, - "S1m": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "Description": {}, - "Status": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "PrimaryClusterId": {}, - "AutomaticFailoverStatus": {} - } - }, - "MemberClusters": { - "type": "list", - "member": { - "locationName": "ClusterId" - } - }, - "NodeGroups": { - "type": "list", - "member": { - "locationName": "NodeGroup", - "type": "structure", - "members": { - "NodeGroupId": {}, - "Status": {}, - "PrimaryEndpoint": { - "shape": "Sv" - }, - "Slots": {}, - "NodeGroupMembers": { - "type": "list", - "member": { - "locationName": "NodeGroupMember", - "type": "structure", - "members": { - "CacheClusterId": {}, - "CacheNodeId": {}, - "ReadEndpoint": { - "shape": "Sv" - }, - "PreferredAvailabilityZone": {}, - "CurrentRole": {} - } - } - } - } - } - }, - "SnapshottingClusterId": {}, - "AutomaticFailover": {}, - "ConfigurationEndpoint": { - "shape": "Sv" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - }, - "wrapper": true - }, - "S2h": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ChangeType": {} - } - } - }, - "S2k": { - "type": "list", - "member": { - "locationName": "CacheNodeTypeSpecificParameter", - "type": "structure", - "members": { - "ParameterName": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "CacheNodeTypeSpecificValues": { - "type": "list", - "member": { - "locationName": "CacheNodeTypeSpecificValue", - "type": "structure", - "members": { - "CacheNodeType": {}, - "Value": {} - } - } - }, - "ChangeType": {} - } - } - }, - "S38": { - "type": "structure", - "members": { - "ReservedCacheNodeId": {}, - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CacheNodeCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "State": {}, - "RecurringCharges": { - "shape": "S3a" - } - }, - "wrapper": true - }, - "S3a": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S3q": { - "type": "list", - "member": { - "locationName": "ParameterNameValue", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {} - } - } - }, - "S3s": { - "type": "structure", - "members": { - "CacheParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json b/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json deleted file mode 100644 index 8724740..0000000 --- a/node_modules/aws-sdk/apis/elasticache-2015-02-02.paginators.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "pagination": { - "DescribeCacheClusters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheClusters" - }, - "DescribeCacheEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheEngineVersions" - }, - "DescribeCacheParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheParameterGroups" - }, - "DescribeCacheParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeCacheSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheSecurityGroups" - }, - "DescribeCacheSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeReservedCacheNodes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedCacheNodes" - }, - "DescribeReservedCacheNodesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedCacheNodesOfferings" - }, - "DescribeReplicationGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReplicationGroups" - }, - "DescribeSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Snapshots" - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json b/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json deleted file mode 100644 index c177d7b..0000000 --- a/node_modules/aws-sdk/apis/elasticache-2015-02-02.waiters2.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "version":2, - "waiters":{ - "CacheClusterAvailable":{ - "acceptors":[ - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"available", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleted", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleting", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"incompatible-network", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"restore-failed", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache cluster is available.", - "maxAttempts":40, - "operation":"DescribeCacheClusters" - }, - "CacheClusterDeleted":{ - "acceptors":[ - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleted", - "matcher":"pathAll", - "state":"success" - }, - { - "expected":"CacheClusterNotFound", - "matcher":"error", - "state":"success" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"available", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"creating", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"incompatible-network", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"modifying", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"restore-failed", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"snapshotting", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache cluster is deleted.", - "maxAttempts":40, - "operation":"DescribeCacheClusters" - }, - "ReplicationGroupAvailable":{ - "acceptors":[ - { - "argument":"ReplicationGroups[].Status", - "expected":"available", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"ReplicationGroups[].Status", - "expected":"deleted", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache replication group is available.", - "maxAttempts":40, - "operation":"DescribeReplicationGroups" - }, - "ReplicationGroupDeleted":{ - "acceptors":[ - { - "argument":"ReplicationGroups[].Status", - "expected":"deleted", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"ReplicationGroups[].Status", - "expected":"available", - "matcher":"pathAny", - "state":"failure" - }, - { - "expected":"ReplicationGroupNotFoundFault", - "matcher":"error", - "state":"success" - } - ], - "delay":15, - "description":"Wait until ElastiCache replication group is deleted.", - "maxAttempts":40, - "operation":"DescribeReplicationGroups" - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json deleted file mode 100644 index 0fded62..0000000 --- a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.examples.json +++ /dev/null @@ -1,1109 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AbortEnvironmentUpdate": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following code aborts a running application version deployment for an environment named my-env:", - "id": "to-abort-a-deployment-1456267848227", - "title": "To abort a deployment" - } - ], - "CheckDNSAvailability": [ - { - "input": { - "CNAMEPrefix": "my-cname" - }, - "output": { - "Available": true, - "FullyQualifiedCNAME": "my-cname.us-west-2.elasticbeanstalk.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation checks the availability of the subdomain my-cname:", - "id": "to-check-the-availability-of-a-cname-1456268589537", - "title": "To check the availability of a CNAME" - } - ], - "CreateApplication": [ - { - "input": { - "ApplicationName": "my-app", - "Description": "my application" - }, - "output": { - "Application": { - "ApplicationName": "my-app", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-02-12T18:32:21.181Z", - "DateUpdated": "2015-02-12T18:32:21.181Z", - "Description": "my application" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new application named my-app:", - "id": "to-create-a-new-application-1456268895683", - "title": "To create a new application" - } - ], - "CreateApplicationVersion": [ - { - "input": { - "ApplicationName": "my-app", - "AutoCreateApplication": true, - "Description": "my-app-v1", - "Process": true, - "SourceBundle": { - "S3Bucket": "my-bucket", - "S3Key": "sample.war" - }, - "VersionLabel": "v1" - }, - "output": { - "ApplicationVersion": { - "ApplicationName": "my-app", - "DateCreated": "2015-02-03T23:01:25.412Z", - "DateUpdated": "2015-02-03T23:01:25.412Z", - "Description": "my-app-v1", - "SourceBundle": { - "S3Bucket": "my-bucket", - "S3Key": "sample.war" - }, - "VersionLabel": "v1" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new version (v1) of an application named my-app:", - "id": "to-create-a-new-application-1456268895683", - "title": "To create a new application" - } - ], - "CreateConfigurationTemplate": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentId": "e-rpqsewtp2j", - "TemplateName": "my-app-v1" - }, - "output": { - "ApplicationName": "my-app", - "DateCreated": "2015-08-12T18:40:39Z", - "DateUpdated": "2015-08-12T18:40:39Z", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "TemplateName": "my-app-v1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a configuration template named my-app-v1 from the settings applied to an environment with the id e-rpqsewtp2j:", - "id": "to-create-a-configuration-template-1456269283586", - "title": "To create a configuration template" - } - ], - "CreateEnvironment": [ - { - "input": { - "ApplicationName": "my-app", - "CNAMEPrefix": "my-app", - "EnvironmentName": "my-env", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "VersionLabel": "v1" - }, - "output": { - "ApplicationName": "my-app", - "CNAME": "my-app.elasticbeanstalk.com", - "DateCreated": "2015-02-03T23:04:54.479Z", - "DateUpdated": "2015-02-03T23:04:54.479Z", - "EnvironmentId": "e-izqpassy4h", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Launching", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "v1" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new environment for version v1 of a java application named my-app:", - "id": "to-create-a-new-environment-for-an-application-1456269380396", - "title": "To create a new environment for an application" - } - ], - "CreateStorageLocation": [ - { - "output": { - "S3Bucket": "elasticbeanstalk-us-west-2-0123456789012" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates a new environment for version v1 of a java application named my-app:", - "id": "to-create-a-new-environment-for-an-application-1456269380396", - "title": "To create a new environment for an application" - } - ], - "DeleteApplication": [ - { - "input": { - "ApplicationName": "my-app" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes an application named my-app:", - "id": "to-delete-an-application-1456269699366", - "title": "To delete an application" - } - ], - "DeleteApplicationVersion": [ - { - "input": { - "ApplicationName": "my-app", - "DeleteSourceBundle": true, - "VersionLabel": "22a0-stage-150819_182129" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes an application version named 22a0-stage-150819_182129 for an application named my-app:", - "id": "to-delete-an-application-version-1456269792956", - "title": "To delete an application version" - } - ], - "DeleteConfigurationTemplate": [ - { - "input": { - "ApplicationName": "my-app", - "TemplateName": "my-template" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes a configuration template named my-template for an application named my-app:", - "id": "to-delete-a-configuration-template-1456269836701", - "title": "To delete a configuration template" - } - ], - "DeleteEnvironmentConfiguration": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation deletes a draft configuration for an environment named my-env:", - "id": "to-delete-a-draft-configuration-1456269886654", - "title": "To delete a draft configuration" - } - ], - "DescribeApplicationVersions": [ - { - "input": { - "ApplicationName": "my-app", - "VersionLabels": [ - "v2" - ] - }, - "output": { - "ApplicationVersions": [ - { - "ApplicationName": "my-app", - "DateCreated": "2015-07-23T01:32:26.079Z", - "DateUpdated": "2015-07-23T01:32:26.079Z", - "Description": "update cover page", - "SourceBundle": { - "S3Bucket": "elasticbeanstalk-us-west-2-015321684451", - "S3Key": "my-app/5026-stage-150723_224258.war" - }, - "VersionLabel": "v2" - }, - { - "ApplicationName": "my-app", - "DateCreated": "2015-07-23T22:26:10.816Z", - "DateUpdated": "2015-07-23T22:26:10.816Z", - "Description": "initial version", - "SourceBundle": { - "S3Bucket": "elasticbeanstalk-us-west-2-015321684451", - "S3Key": "my-app/5026-stage-150723_222618.war" - }, - "VersionLabel": "v1" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about an application version labeled v2:", - "id": "to-view-information-about-an-application-version-1456269947428", - "title": "To view information about an application version" - } - ], - "DescribeApplications": [ - { - "input": { - }, - "output": { - "Applications": [ - { - "ApplicationName": "ruby", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-13T21:05:44.376Z", - "DateUpdated": "2015-08-13T21:05:44.376Z", - "Versions": [ - "Sample Application" - ] - }, - { - "ApplicationName": "pythonsample", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-13T19:05:43.637Z", - "DateUpdated": "2015-08-13T19:05:43.637Z", - "Description": "Application created from the EB CLI using \"eb init\"", - "Versions": [ - "Sample Application" - ] - }, - { - "ApplicationName": "nodejs-example", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-06T17:50:02.486Z", - "DateUpdated": "2015-08-06T17:50:02.486Z", - "Versions": [ - "add elasticache", - "First Release" - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about applications in the current region:", - "id": "to-view-a-list-of-applications-1456270027373", - "title": "To view a list of applications" - } - ], - "DescribeConfigurationOptions": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env" - }, - "output": { - "Options": [ - { - "ChangeSeverity": "NoInterruption", - "DefaultValue": "30", - "MaxValue": 300, - "MinValue": 5, - "Name": "Interval", - "Namespace": "aws:elb:healthcheck", - "UserDefined": false, - "ValueType": "Scalar" - }, - { - "ChangeSeverity": "NoInterruption", - "DefaultValue": "2000000", - "MinValue": 0, - "Name": "LowerThreshold", - "Namespace": "aws:autoscaling:trigger", - "UserDefined": false, - "ValueType": "Scalar" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves descriptions of all available configuration options for an environment named my-env:", - "id": "to-view-configuration-options-for-an-environment-1456276763917", - "title": "To view configuration options for an environment" - } - ], - "DescribeConfigurationSettings": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env" - }, - "output": { - "ConfigurationSettings": [ - { - "ApplicationName": "my-app", - "DateCreated": "2015-08-13T19:16:25Z", - "DateUpdated": "2015-08-13T23:30:07Z", - "DeploymentStatus": "deployed", - "Description": "Environment created from the EB CLI using \"eb create\"", - "EnvironmentName": "my-env", - "OptionSettings": [ - { - "Namespace": "aws:autoscaling:asg", - "OptionName": "Availability Zones", - "ResourceName": "AWSEBAutoScalingGroup", - "Value": "Any" - }, - { - "Namespace": "aws:autoscaling:asg", - "OptionName": "Cooldown", - "ResourceName": "AWSEBAutoScalingGroup", - "Value": "360" - }, - { - "Namespace": "aws:elb:policies", - "OptionName": "ConnectionDrainingTimeout", - "ResourceName": "AWSEBLoadBalancer", - "Value": "20" - }, - { - "Namespace": "aws:elb:policies", - "OptionName": "ConnectionSettingIdleTimeout", - "ResourceName": "AWSEBLoadBalancer", - "Value": "60" - } - ], - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8" - } - ] - }, - "comments": { - "input": { - }, - "output": { - "abbreviated": "Output is abbreviated" - } - }, - "description": "The following operation retrieves configuration settings for an environment named my-env:", - "id": "to-view-configurations-settings-for-an-environment-1456276924537", - "title": "To view configurations settings for an environment" - } - ], - "DescribeEnvironmentHealth": [ - { - "input": { - "AttributeNames": [ - "All" - ], - "EnvironmentName": "my-env" - }, - "output": { - "ApplicationMetrics": { - "Duration": 10, - "Latency": { - "P10": 0.001, - "P50": 0.001, - "P75": 0.002, - "P85": 0.003, - "P90": 0.003, - "P95": 0.004, - "P99": 0.004, - "P999": 0.004 - }, - "RequestCount": 45, - "StatusCodes": { - "Status2xx": 45, - "Status3xx": 0, - "Status4xx": 0, - "Status5xx": 0 - } - }, - "Causes": [ - - ], - "Color": "Green", - "EnvironmentName": "my-env", - "HealthStatus": "Ok", - "InstancesHealth": { - "Degraded": 0, - "Info": 0, - "NoData": 0, - "Ok": 1, - "Pending": 0, - "Severe": 0, - "Unknown": 0, - "Warning": 0 - }, - "RefreshedAt": "2015-08-20T21:09:18Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves overall health information for an environment named my-env:", - "id": "to-view-environment-health-1456277109510", - "title": "To view environment health" - } - ], - "DescribeEnvironmentResources": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "output": { - "EnvironmentResources": { - "AutoScalingGroups": [ - { - "Name": "awseb-e-qu3fyyjyjs-stack-AWSEBAutoScalingGroup-QSB2ZO88SXZT" - } - ], - "EnvironmentName": "my-env", - "Instances": [ - { - "Id": "i-0c91c786" - } - ], - "LaunchConfigurations": [ - { - "Name": "awseb-e-qu3fyyjyjs-stack-AWSEBAutoScalingLaunchConfiguration-1UUVQIBC96TQ2" - } - ], - "LoadBalancers": [ - { - "Name": "awseb-e-q-AWSEBLoa-1EEPZ0K98BIF0" - } - ], - "Queues": [ - - ], - "Triggers": [ - - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about resources in an environment named my-env:", - "id": "to-view-information-about-the-aws-resources-in-your-environment-1456277206232", - "title": "To view information about the AWS resources in your environment" - } - ], - "DescribeEnvironments": [ - { - "input": { - "EnvironmentNames": [ - "my-env" - ] - }, - "output": { - "Environments": [ - { - "AbortableOperationInProgress": false, - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-08-07T20:48:49.599Z", - "DateUpdated": "2015-08-12T18:16:55.019Z", - "EndpointURL": "awseb-e-w-AWSEBLoa-1483140XB0Q4L-109QXY8121.us-west-2.elb.amazonaws.com", - "EnvironmentId": "e-rpqsewtp2j", - "EnvironmentName": "my-env", - "Health": "Green", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Ready", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "7f58-stage-150812_025409" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves information about an environment named my-env:", - "id": "to-view-information-about-an-environment-1456277288662", - "title": "To view information about an environment" - } - ], - "DescribeEvents": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "output": { - "Events": [ - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-20T07:06:53.535Z", - "Message": "Environment health has transitioned from Info to Ok.", - "Severity": "INFO" - }, - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-20T07:06:02.049Z", - "Message": "Environment update completed successfully.", - "RequestId": "b7f3960b-4709-11e5-ba1e-07e16200da41", - "Severity": "INFO" - }, - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-13T19:16:27.561Z", - "Message": "Using elasticbeanstalk-us-west-2-012445113685 as Amazon S3 storage bucket for environment data.", - "RequestId": "ca8dfbf6-41ef-11e5-988b-651aa638f46b", - "Severity": "INFO" - }, - { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "EventDate": "2015-08-13T19:16:26.581Z", - "Message": "createEnvironment is starting.", - "RequestId": "cdfba8f6-41ef-11e5-988b-65638f41aa6b", - "Severity": "INFO" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves events for an environment named my-env:", - "id": "to-view-events-for-an-environment-1456277367589", - "title": "To view events for an environment" - } - ], - "DescribeInstancesHealth": [ - { - "input": { - "AttributeNames": [ - "All" - ], - "EnvironmentName": "my-env" - }, - "output": { - "InstanceHealthList": [ - { - "ApplicationMetrics": { - "Duration": 10, - "Latency": { - "P10": 0, - "P50": 0.001, - "P75": 0.002, - "P85": 0.003, - "P90": 0.004, - "P95": 0.005, - "P99": 0.006, - "P999": 0.006 - }, - "RequestCount": 48, - "StatusCodes": { - "Status2xx": 47, - "Status3xx": 0, - "Status4xx": 1, - "Status5xx": 0 - } - }, - "Causes": [ - - ], - "Color": "Green", - "HealthStatus": "Ok", - "InstanceId": "i-08691cc7", - "LaunchedAt": "2015-08-13T19:17:09Z", - "System": { - "CPUUtilization": { - "IOWait": 0.2, - "IRQ": 0, - "Idle": 97.8, - "Nice": 0.1, - "SoftIRQ": 0.1, - "System": 0.3, - "User": 1.5 - }, - "LoadAverage": [ - 0, - 0.02, - 0.05 - ] - } - } - ], - "RefreshedAt": "2015-08-20T21:09:08Z" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves health information for instances in an environment named my-env:", - "id": "to-view-environment-health-1456277424757", - "title": "To view environment health" - } - ], - "ListAvailableSolutionStacks": [ - { - "output": { - "SolutionStackDetails": [ - { - "PermittedFileTypes": [ - "zip" - ], - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Node.js" - } - ], - "SolutionStacks": [ - "64bit Amazon Linux 2015.03 v2.0.0 running Node.js", - "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.6", - "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.5", - "64bit Amazon Linux 2015.03 v2.0.0 running PHP 5.4", - "64bit Amazon Linux 2015.03 v2.0.0 running Python 3.4", - "64bit Amazon Linux 2015.03 v2.0.0 running Python 2.7", - "64bit Amazon Linux 2015.03 v2.0.0 running Python", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Puma)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.2 (Passenger Standalone)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.1 (Puma)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.1 (Passenger Standalone)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.0 (Puma)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 2.0 (Passenger Standalone)", - "64bit Amazon Linux 2015.03 v2.0.0 running Ruby 1.9.3", - "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 7 Java 7", - "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 7 Java 6", - "64bit Windows Server Core 2012 R2 running IIS 8.5", - "64bit Windows Server 2012 R2 running IIS 8.5", - "64bit Windows Server 2012 running IIS 8", - "64bit Windows Server 2008 R2 running IIS 7.5", - "64bit Amazon Linux 2015.03 v2.0.0 running Docker 1.6.2", - "64bit Amazon Linux 2015.03 v2.0.0 running Multi-container Docker 1.6.2 (Generic)", - "64bit Debian jessie v2.0.0 running GlassFish 4.1 Java 8 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running GlassFish 4.0 Java 7 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running Go 1.4 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running Go 1.3 (Preconfigured - Docker)", - "64bit Debian jessie v2.0.0 running Python 3.4 (Preconfigured - Docker)" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation lists solution stacks for all currently available platform configurations and any that you have used in the past:", - "id": "to-view-solution-stacks-1456277504811", - "title": "To view solution stacks" - } - ], - "RebuildEnvironment": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation terminates and recreates the resources in an environment named my-env:", - "id": "to-rebuild-an-environment-1456277600918", - "title": "To rebuild an environment" - } - ], - "RequestEnvironmentInfo": [ - { - "input": { - "EnvironmentName": "my-env", - "InfoType": "tail" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation requests logs from an environment named my-env:", - "id": "to-request-tailed-logs-1456277657045", - "title": "To request tailed logs" - } - ], - "RestartAppServer": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation restarts application servers on all instances in an environment named my-env:", - "id": "to-restart-application-servers-1456277739302", - "title": "To restart application servers" - } - ], - "RetrieveEnvironmentInfo": [ - { - "input": { - "EnvironmentName": "my-env", - "InfoType": "tail" - }, - "output": { - "EnvironmentInfo": [ - { - "Ec2InstanceId": "i-09c1c867", - "InfoType": "tail", - "Message": "https://elasticbeanstalk-us-west-2-0123456789012.s3.amazonaws.com/resources/environments/logs/tail/e-fyqyju3yjs/i-09c1c867/TailLogs-1440109397703.out?AWSAccessKeyId=AKGPT4J56IAJ2EUBL5CQ&Expires=1440195891&Signature=n%2BEalOV6A2HIOx4Rcfb7LT16bBM%3D", - "SampleTimestamp": "2015-08-20T22:23:17.703Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation retrieves a link to logs from an environment named my-env:", - "id": "to-retrieve-tailed-logs-1456277792734", - "title": "To retrieve tailed logs" - } - ], - "SwapEnvironmentCNAMEs": [ - { - "input": { - "DestinationEnvironmentName": "my-env-green", - "SourceEnvironmentName": "my-env-blue" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation swaps the assigned subdomains of two environments:", - "id": "to-swap-environment-cnames-1456277839438", - "title": "To swap environment CNAMES" - } - ], - "TerminateEnvironment": [ - { - "input": { - "EnvironmentName": "my-env" - }, - "output": { - "AbortableOperationInProgress": false, - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-08-12T18:52:53.622Z", - "DateUpdated": "2015-08-12T19:05:54.744Z", - "EndpointURL": "awseb-e-f-AWSEBLoa-1I9XUMP4-8492WNUP202574.us-west-2.elb.amazonaws.com", - "EnvironmentId": "e-fh2eravpns", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Terminating", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation terminates an Elastic Beanstalk environment named my-env:", - "id": "to-terminate-an-environment-1456277888556", - "title": "To terminate an environment" - } - ], - "UpdateApplication": [ - { - "input": { - "ApplicationName": "my-app", - "Description": "my Elastic Beanstalk application" - }, - "output": { - "Application": { - "ApplicationName": "my-app", - "ConfigurationTemplates": [ - - ], - "DateCreated": "2015-08-13T19:15:50.449Z", - "DateUpdated": "2015-08-20T22:34:56.195Z", - "Description": "my Elastic Beanstalk application", - "Versions": [ - "2fba-stage-150819_234450", - "bf07-stage-150820_214945", - "93f8", - "fd7c-stage-150820_000431", - "22a0-stage-150819_185942" - ] - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation updates the description of an application named my-app:", - "id": "to-change-an-applications-description-1456277957075", - "title": "To change an application's description" - } - ], - "UpdateApplicationVersion": [ - { - "input": { - "ApplicationName": "my-app", - "Description": "new description", - "VersionLabel": "22a0-stage-150819_185942" - }, - "output": { - "ApplicationVersion": { - "ApplicationName": "my-app", - "DateCreated": "2015-08-19T18:59:17.646Z", - "DateUpdated": "2015-08-20T22:53:28.871Z", - "Description": "new description", - "SourceBundle": { - "S3Bucket": "elasticbeanstalk-us-west-2-0123456789012", - "S3Key": "my-app/22a0-stage-150819_185942.war" - }, - "VersionLabel": "22a0-stage-150819_185942" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation updates the description of an application version named 22a0-stage-150819_185942:", - "id": "to-change-an-application-versions-description-1456278019237", - "title": "To change an application version's description" - } - ], - "UpdateConfigurationTemplate": [ - { - "input": { - "ApplicationName": "my-app", - "OptionsToRemove": [ - { - "Namespace": "aws:elasticbeanstalk:healthreporting:system", - "OptionName": "ConfigDocument" - } - ], - "TemplateName": "my-template" - }, - "output": { - "ApplicationName": "my-app", - "DateCreated": "2015-08-20T22:39:31Z", - "DateUpdated": "2015-08-20T22:43:11Z", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "TemplateName": "my-template" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation removes the configured CloudWatch custom health metrics configuration ConfigDocument from a saved configuration template named my-template:", - "id": "to-update-a-configuration-template-1456278075300", - "title": "To update a configuration template" - } - ], - "UpdateEnvironment": [ - { - "input": { - "EnvironmentName": "my-env", - "VersionLabel": "v2" - }, - "output": { - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-02-03T23:04:54.453Z", - "DateUpdated": "2015-02-03T23:12:29.119Z", - "EndpointURL": "awseb-e-i-AWSEBLoa-1RDLX6TC9VUAO-0123456789.us-west-2.elb.amazonaws.com", - "EnvironmentId": "e-szqipays4h", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux running Tomcat 7", - "Status": "Updating", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "v2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation updates an environment named \"my-env\" to version \"v2\" of the application to which it belongs:", - "id": "to-update-an-environment-to-a-new-version-1456278210718", - "title": "To update an environment to a new version" - }, - { - "input": { - "EnvironmentName": "my-env", - "OptionSettings": [ - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "Interval", - "Value": "15" - }, - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "Timeout", - "Value": "8" - }, - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "HealthyThreshold", - "Value": "2" - }, - { - "Namespace": "aws:elb:healthcheck", - "OptionName": "UnhealthyThreshold", - "Value": "3" - } - ] - }, - "output": { - "AbortableOperationInProgress": true, - "ApplicationName": "my-app", - "CNAME": "my-env.elasticbeanstalk.com", - "DateCreated": "2015-08-07T20:48:49.599Z", - "DateUpdated": "2015-08-12T18:15:23.804Z", - "EndpointURL": "awseb-e-w-AWSEBLoa-14XB83101Q4L-104QXY80921.sa-east-1.elb.amazonaws.com", - "EnvironmentId": "e-wtp2rpqsej", - "EnvironmentName": "my-env", - "Health": "Grey", - "SolutionStackName": "64bit Amazon Linux 2015.03 v2.0.0 running Tomcat 8 Java 8", - "Status": "Updating", - "Tier": { - "Name": "WebServer", - "Type": "Standard", - "Version": " " - }, - "VersionLabel": "7f58-stage-150812_025409" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation configures several options in the aws:elb:loadbalancer namespace:", - "id": "to-configure-option-settings-1456278286349", - "title": "To configure option settings" - } - ], - "ValidateConfigurationSettings": [ - { - "input": { - "ApplicationName": "my-app", - "EnvironmentName": "my-env", - "OptionSettings": [ - { - "Namespace": "aws:elasticbeanstalk:healthreporting:system", - "OptionName": "ConfigDocument", - "Value": "{\"CloudWatchMetrics\": {\"Environment\": {\"ApplicationLatencyP99.9\": null,\"InstancesSevere\": 60,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": null,\"ApplicationLatencyP95\": 60,\"InstancesUnknown\": 60,\"ApplicationLatencyP85\": 60,\"InstancesInfo\": null,\"ApplicationRequests2xx\": null,\"InstancesDegraded\": null,\"InstancesWarning\": 60,\"ApplicationLatencyP50\": 60,\"ApplicationRequestsTotal\": null,\"InstancesNoData\": null,\"InstancesPending\": 60,\"ApplicationLatencyP10\": null,\"ApplicationRequests5xx\": null,\"ApplicationLatencyP75\": null,\"InstancesOk\": 60,\"ApplicationRequests3xx\": null,\"ApplicationRequests4xx\": null},\"Instance\": {\"ApplicationLatencyP99.9\": null,\"ApplicationLatencyP90\": 60,\"ApplicationLatencyP99\": null,\"ApplicationLatencyP95\": null,\"ApplicationLatencyP85\": null,\"CPUUser\": 60,\"ApplicationRequests2xx\": null,\"CPUIdle\": null,\"ApplicationLatencyP50\": null,\"ApplicationRequestsTotal\": 60,\"RootFilesystemUtil\": null,\"LoadAverage1min\": null,\"CPUIrq\": null,\"CPUNice\": 60,\"CPUIowait\": 60,\"ApplicationLatencyP10\": null,\"LoadAverage5min\": null,\"ApplicationRequests5xx\": null,\"ApplicationLatencyP75\": 60,\"CPUSystem\": 60,\"ApplicationRequests3xx\": 60,\"ApplicationRequests4xx\": null,\"InstanceHealth\": null,\"CPUSoftirq\": 60}},\"Version\": 1}" - } - ] - }, - "output": { - "Messages": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation validates a CloudWatch custom metrics config document:", - "id": "to-validate-configuration-settings-1456278393654", - "title": "To validate configuration settings" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json deleted file mode 100644 index 4c0bf0b..0000000 --- a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.min.json +++ /dev/null @@ -1,1264 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-12-01", - "endpointPrefix": "elasticbeanstalk", - "protocol": "query", - "serviceAbbreviation": "Elastic Beanstalk", - "serviceFullName": "AWS Elastic Beanstalk", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/" - }, - "operations": { - "AbortEnvironmentUpdate": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "ApplyEnvironmentManagedAction": { - "input": { - "type": "structure", - "required": [ - "ActionId" - ], - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "ActionId": {} - } - }, - "output": { - "resultWrapper": "ApplyEnvironmentManagedActionResult", - "type": "structure", - "members": { - "ActionId": {}, - "ActionDescription": {}, - "ActionType": {}, - "Status": {} - } - } - }, - "CheckDNSAvailability": { - "input": { - "type": "structure", - "required": [ - "CNAMEPrefix" - ], - "members": { - "CNAMEPrefix": {} - } - }, - "output": { - "resultWrapper": "CheckDNSAvailabilityResult", - "type": "structure", - "members": { - "Available": { - "type": "boolean" - }, - "FullyQualifiedCNAME": {} - } - } - }, - "ComposeEnvironments": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "GroupName": {}, - "VersionLabels": { - "type": "list", - "member": {} - } - } - }, - "output": { - "shape": "Si", - "resultWrapper": "ComposeEnvironmentsResult" - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "Description": {} - } - }, - "output": { - "shape": "S14", - "resultWrapper": "CreateApplicationResult" - } - }, - "CreateApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "Description": {}, - "SourceBundle": { - "shape": "S19" - }, - "AutoCreateApplication": { - "type": "boolean" - }, - "Process": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S1e", - "resultWrapper": "CreateApplicationVersionResult" - } - }, - "CreateConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "SourceConfiguration": { - "type": "structure", - "members": { - "ApplicationName": {}, - "TemplateName": {} - } - }, - "EnvironmentId": {}, - "Description": {}, - "OptionSettings": { - "shape": "S1j" - } - } - }, - "output": { - "shape": "S1p", - "resultWrapper": "CreateConfigurationTemplateResult" - } - }, - "CreateEnvironment": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "EnvironmentName": {}, - "GroupName": {}, - "Description": {}, - "CNAMEPrefix": {}, - "Tier": { - "shape": "S10" - }, - "Tags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "VersionLabel": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "OptionSettings": { - "shape": "S1j" - }, - "OptionsToRemove": { - "shape": "S1w" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "CreateEnvironmentResult" - } - }, - "CreateStorageLocation": { - "output": { - "resultWrapper": "CreateStorageLocationResult", - "type": "structure", - "members": { - "S3Bucket": {} - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "TerminateEnvByForce": { - "type": "boolean" - } - } - } - }, - "DeleteApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "DeleteSourceBundle": { - "type": "boolean" - } - } - } - }, - "DeleteConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {} - } - } - }, - "DeleteEnvironmentConfiguration": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "EnvironmentName" - ], - "members": { - "ApplicationName": {}, - "EnvironmentName": {} - } - } - }, - "DescribeApplicationVersions": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabels": { - "shape": "S16" - } - } - }, - "output": { - "resultWrapper": "DescribeApplicationVersionsResult", - "type": "structure", - "members": { - "ApplicationVersions": { - "type": "list", - "member": { - "shape": "S1f" - } - } - } - } - }, - "DescribeApplications": { - "input": { - "type": "structure", - "members": { - "ApplicationNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeApplicationsResult", - "type": "structure", - "members": { - "Applications": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - } - }, - "DescribeConfigurationOptions": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "SolutionStackName": {}, - "Options": { - "shape": "S1w" - } - } - }, - "output": { - "resultWrapper": "DescribeConfigurationOptionsResult", - "type": "structure", - "members": { - "SolutionStackName": {}, - "Options": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Namespace": {}, - "Name": {}, - "DefaultValue": {}, - "ChangeSeverity": {}, - "UserDefined": { - "type": "boolean" - }, - "ValueType": {}, - "ValueOptions": { - "type": "list", - "member": {} - }, - "MinValue": { - "type": "integer" - }, - "MaxValue": { - "type": "integer" - }, - "MaxLength": { - "type": "integer" - }, - "Regex": { - "type": "structure", - "members": { - "Pattern": {}, - "Label": {} - } - } - } - } - } - } - } - }, - "DescribeConfigurationSettings": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {} - } - }, - "output": { - "resultWrapper": "DescribeConfigurationSettingsResult", - "type": "structure", - "members": { - "ConfigurationSettings": { - "type": "list", - "member": { - "shape": "S1p" - } - } - } - } - }, - "DescribeEnvironmentHealth": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "AttributeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentHealthResult", - "type": "structure", - "members": { - "EnvironmentName": {}, - "HealthStatus": {}, - "Status": {}, - "Color": {}, - "Causes": { - "shape": "S2z" - }, - "ApplicationMetrics": { - "shape": "S31" - }, - "InstancesHealth": { - "type": "structure", - "members": { - "NoData": { - "type": "integer" - }, - "Unknown": { - "type": "integer" - }, - "Pending": { - "type": "integer" - }, - "Ok": { - "type": "integer" - }, - "Info": { - "type": "integer" - }, - "Warning": { - "type": "integer" - }, - "Degraded": { - "type": "integer" - }, - "Severe": { - "type": "integer" - } - } - }, - "RefreshedAt": { - "type": "timestamp" - } - } - } - }, - "DescribeEnvironmentManagedActionHistory": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult", - "type": "structure", - "members": { - "ManagedActionHistoryItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionType": {}, - "ActionDescription": {}, - "FailureType": {}, - "Status": {}, - "FailureDescription": {}, - "ExecutedTime": { - "type": "timestamp" - }, - "FinishedTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEnvironmentManagedActions": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "Status": {} - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentManagedActionsResult", - "type": "structure", - "members": { - "ManagedActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionDescription": {}, - "ActionType": {}, - "Status": {}, - "WindowStartTime": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeEnvironmentResources": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentResourcesResult", - "type": "structure", - "members": { - "EnvironmentResources": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "AutoScalingGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {} - } - } - }, - "LaunchConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "LoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Triggers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Queues": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "URL": {} - } - } - } - } - } - } - } - }, - "DescribeEnvironments": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "EnvironmentIds": { - "type": "list", - "member": {} - }, - "EnvironmentNames": { - "type": "list", - "member": {} - }, - "IncludeDeleted": { - "type": "boolean" - }, - "IncludedDeletedBackTo": { - "type": "timestamp" - } - } - }, - "output": { - "shape": "Si", - "resultWrapper": "DescribeEnvironmentsResult" - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "TemplateName": {}, - "EnvironmentId": {}, - "EnvironmentName": {}, - "RequestId": {}, - "Severity": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventDate": { - "type": "timestamp" - }, - "Message": {}, - "ApplicationName": {}, - "VersionLabel": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "RequestId": {}, - "Severity": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeInstancesHealth": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "AttributeNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeInstancesHealthResult", - "type": "structure", - "members": { - "InstanceHealthList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "HealthStatus": {}, - "Color": {}, - "Causes": { - "shape": "S2z" - }, - "LaunchedAt": { - "type": "timestamp" - }, - "ApplicationMetrics": { - "shape": "S31" - }, - "System": { - "type": "structure", - "members": { - "CPUUtilization": { - "type": "structure", - "members": { - "User": { - "type": "double" - }, - "Nice": { - "type": "double" - }, - "System": { - "type": "double" - }, - "Idle": { - "type": "double" - }, - "IOWait": { - "type": "double" - }, - "IRQ": { - "type": "double" - }, - "SoftIRQ": { - "type": "double" - } - } - }, - "LoadAverage": { - "type": "list", - "member": { - "type": "double" - } - } - } - }, - "Deployment": { - "type": "structure", - "members": { - "VersionLabel": {}, - "DeploymentId": { - "type": "long" - }, - "Status": {}, - "DeploymentTime": { - "type": "timestamp" - } - } - }, - "AvailabilityZone": {}, - "InstanceType": {} - } - } - }, - "RefreshedAt": { - "type": "timestamp" - }, - "NextToken": {} - } - } - }, - "ListAvailableSolutionStacks": { - "output": { - "resultWrapper": "ListAvailableSolutionStacksResult", - "type": "structure", - "members": { - "SolutionStacks": { - "type": "list", - "member": {} - }, - "SolutionStackDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SolutionStackName": {}, - "PermittedFileTypes": { - "type": "list", - "member": {} - } - } - } - } - } - } - }, - "RebuildEnvironment": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "RequestEnvironmentInfo": { - "input": { - "type": "structure", - "required": [ - "InfoType" - ], - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "InfoType": {} - } - } - }, - "RestartAppServer": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "RetrieveEnvironmentInfo": { - "input": { - "type": "structure", - "required": [ - "InfoType" - ], - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "InfoType": {} - } - }, - "output": { - "resultWrapper": "RetrieveEnvironmentInfoResult", - "type": "structure", - "members": { - "EnvironmentInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InfoType": {}, - "Ec2InstanceId": {}, - "SampleTimestamp": { - "type": "timestamp" - }, - "Message": {} - } - } - } - } - } - }, - "SwapEnvironmentCNAMEs": { - "input": { - "type": "structure", - "members": { - "SourceEnvironmentId": {}, - "SourceEnvironmentName": {}, - "DestinationEnvironmentId": {}, - "DestinationEnvironmentName": {} - } - } - }, - "TerminateEnvironment": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "TerminateResources": { - "type": "boolean" - }, - "ForceTerminate": { - "type": "boolean" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "TerminateEnvironmentResult" - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "Description": {} - } - }, - "output": { - "shape": "S14", - "resultWrapper": "UpdateApplicationResult" - } - }, - "UpdateApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "Description": {} - } - }, - "output": { - "shape": "S1e", - "resultWrapper": "UpdateApplicationVersionResult" - } - }, - "UpdateConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "Description": {}, - "OptionSettings": { - "shape": "S1j" - }, - "OptionsToRemove": { - "shape": "S1w" - } - } - }, - "output": { - "shape": "S1p", - "resultWrapper": "UpdateConfigurationTemplateResult" - } - }, - "UpdateEnvironment": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "EnvironmentId": {}, - "EnvironmentName": {}, - "GroupName": {}, - "Description": {}, - "Tier": { - "shape": "S10" - }, - "VersionLabel": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "OptionSettings": { - "shape": "S1j" - }, - "OptionsToRemove": { - "shape": "S1w" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "UpdateEnvironmentResult" - } - }, - "ValidateConfigurationSettings": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "OptionSettings" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "OptionSettings": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "ValidateConfigurationSettingsResult", - "type": "structure", - "members": { - "Messages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Message": {}, - "Severity": {}, - "Namespace": {}, - "OptionName": {} - } - } - } - } - } - } - }, - "shapes": { - "Si": { - "type": "structure", - "members": { - "Environments": { - "type": "list", - "member": { - "shape": "Sk" - } - } - } - }, - "Sk": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "ApplicationName": {}, - "VersionLabel": {}, - "SolutionStackName": {}, - "TemplateName": {}, - "Description": {}, - "EndpointURL": {}, - "CNAME": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Status": {}, - "AbortableOperationInProgress": { - "type": "boolean" - }, - "Health": {}, - "HealthStatus": {}, - "Resources": { - "type": "structure", - "members": { - "LoadBalancer": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "Domain": {}, - "Listeners": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Protocol": {}, - "Port": { - "type": "integer" - } - } - } - } - } - } - } - }, - "Tier": { - "shape": "S10" - }, - "EnvironmentLinks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LinkName": {}, - "EnvironmentName": {} - } - } - } - } - }, - "S10": { - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Version": {} - } - }, - "S14": { - "type": "structure", - "members": { - "Application": { - "shape": "S15" - } - } - }, - "S15": { - "type": "structure", - "members": { - "ApplicationName": {}, - "Description": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Versions": { - "shape": "S16" - }, - "ConfigurationTemplates": { - "type": "list", - "member": {} - } - } - }, - "S16": { - "type": "list", - "member": {} - }, - "S19": { - "type": "structure", - "members": { - "S3Bucket": {}, - "S3Key": {} - } - }, - "S1e": { - "type": "structure", - "members": { - "ApplicationVersion": { - "shape": "S1f" - } - } - }, - "S1f": { - "type": "structure", - "members": { - "ApplicationName": {}, - "Description": {}, - "VersionLabel": {}, - "SourceBundle": { - "shape": "S19" - }, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Status": {} - } - }, - "S1j": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceName": {}, - "Namespace": {}, - "OptionName": {}, - "Value": {} - } - } - }, - "S1p": { - "type": "structure", - "members": { - "SolutionStackName": {}, - "ApplicationName": {}, - "TemplateName": {}, - "Description": {}, - "EnvironmentName": {}, - "DeploymentStatus": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "OptionSettings": { - "shape": "S1j" - } - } - }, - "S1w": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceName": {}, - "Namespace": {}, - "OptionName": {} - } - } - }, - "S2z": { - "type": "list", - "member": {} - }, - "S31": { - "type": "structure", - "members": { - "Duration": { - "type": "integer" - }, - "RequestCount": { - "type": "integer" - }, - "StatusCodes": { - "type": "structure", - "members": { - "Status2xx": { - "type": "integer" - }, - "Status3xx": { - "type": "integer" - }, - "Status4xx": { - "type": "integer" - }, - "Status5xx": { - "type": "integer" - } - } - }, - "Latency": { - "type": "structure", - "members": { - "P999": { - "type": "double" - }, - "P99": { - "type": "double" - }, - "P95": { - "type": "double" - }, - "P90": { - "type": "double" - }, - "P85": { - "type": "double" - }, - "P75": { - "type": "double" - }, - "P50": { - "type": "double" - }, - "P10": { - "type": "double" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json b/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json deleted file mode 100644 index 383ce8d..0000000 --- a/node_modules/aws-sdk/apis/elasticbeanstalk-2010-12-01.paginators.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "pagination": { - "DescribeApplicationVersions": { - "result_key": "ApplicationVersions" - }, - "DescribeApplications": { - "result_key": "Applications" - }, - "DescribeConfigurationOptions": { - "result_key": "Options" - }, - "DescribeEnvironments": { - "result_key": "Environments" - }, - "DescribeEvents": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "ListAvailableSolutionStacks": { - "result_key": "SolutionStacks" - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json b/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json deleted file mode 100644 index 5e35d8f..0000000 --- a/node_modules/aws-sdk/apis/elasticfilesystem-2015-02-01.min.json +++ /dev/null @@ -1,395 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-02-01", - "endpointPrefix": "elasticfilesystem", - "protocol": "rest-json", - "serviceAbbreviation": "EFS", - "serviceFullName": "Amazon Elastic File System", - "signatureVersion": "v4" - }, - "operations": { - "CreateFileSystem": { - "http": { - "requestUri": "/2015-02-01/file-systems", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "CreationToken" - ], - "members": { - "CreationToken": {}, - "PerformanceMode": {} - } - }, - "output": { - "shape": "S4" - } - }, - "CreateMountTarget": { - "http": { - "requestUri": "/2015-02-01/mount-targets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId", - "SubnetId" - ], - "members": { - "FileSystemId": {}, - "SubnetId": {}, - "IpAddress": {}, - "SecurityGroups": { - "shape": "Sg" - } - } - }, - "output": { - "shape": "Si" - } - }, - "CreateTags": { - "http": { - "requestUri": "/2015-02-01/create-tags/{FileSystemId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId", - "Tags" - ], - "members": { - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - }, - "Tags": { - "shape": "Sm" - } - } - } - }, - "DeleteFileSystem": { - "http": { - "method": "DELETE", - "requestUri": "/2015-02-01/file-systems/{FileSystemId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId" - ], - "members": { - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - } - } - } - }, - "DeleteMountTarget": { - "http": { - "method": "DELETE", - "requestUri": "/2015-02-01/mount-targets/{MountTargetId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "MountTargetId" - ], - "members": { - "MountTargetId": { - "location": "uri", - "locationName": "MountTargetId" - } - } - } - }, - "DeleteTags": { - "http": { - "requestUri": "/2015-02-01/delete-tags/{FileSystemId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId", - "TagKeys" - ], - "members": { - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "DescribeFileSystems": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/file-systems", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "CreationToken": { - "location": "querystring", - "locationName": "CreationToken" - }, - "FileSystemId": { - "location": "querystring", - "locationName": "FileSystemId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "FileSystems": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "NextMarker": {} - } - } - }, - "DescribeMountTargetSecurityGroups": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "MountTargetId" - ], - "members": { - "MountTargetId": { - "location": "uri", - "locationName": "MountTargetId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "SecurityGroups" - ], - "members": { - "SecurityGroups": { - "shape": "Sg" - } - } - } - }, - "DescribeMountTargets": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/mount-targets", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "FileSystemId": { - "location": "querystring", - "locationName": "FileSystemId" - }, - "MountTargetId": { - "location": "querystring", - "locationName": "MountTargetId" - } - } - }, - "output": { - "type": "structure", - "members": { - "Marker": {}, - "MountTargets": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "http": { - "method": "GET", - "requestUri": "/2015-02-01/tags/{FileSystemId}/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FileSystemId" - ], - "members": { - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "FileSystemId": { - "location": "uri", - "locationName": "FileSystemId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags" - ], - "members": { - "Marker": {}, - "Tags": { - "shape": "Sm" - }, - "NextMarker": {} - } - } - }, - "ModifyMountTargetSecurityGroups": { - "http": { - "method": "PUT", - "requestUri": "/2015-02-01/mount-targets/{MountTargetId}/security-groups", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "MountTargetId" - ], - "members": { - "MountTargetId": { - "location": "uri", - "locationName": "MountTargetId" - }, - "SecurityGroups": { - "shape": "Sg" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "required": [ - "OwnerId", - "CreationToken", - "FileSystemId", - "CreationTime", - "LifeCycleState", - "NumberOfMountTargets", - "SizeInBytes", - "PerformanceMode" - ], - "members": { - "OwnerId": {}, - "CreationToken": {}, - "FileSystemId": {}, - "CreationTime": { - "type": "timestamp" - }, - "LifeCycleState": {}, - "Name": {}, - "NumberOfMountTargets": { - "type": "integer" - }, - "SizeInBytes": { - "type": "structure", - "required": [ - "Value" - ], - "members": { - "Value": { - "type": "long" - }, - "Timestamp": { - "type": "timestamp" - } - } - }, - "PerformanceMode": {} - } - }, - "Sg": { - "type": "list", - "member": {} - }, - "Si": { - "type": "structure", - "required": [ - "MountTargetId", - "FileSystemId", - "SubnetId", - "LifeCycleState" - ], - "members": { - "OwnerId": {}, - "MountTargetId": {}, - "FileSystemId": {}, - "SubnetId": {}, - "LifeCycleState": {}, - "IpAddress": {}, - "NetworkInterfaceId": {} - } - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json deleted file mode 100644 index ce50fdd..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.examples.json +++ /dev/null @@ -1,1036 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddTags": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ], - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds two tags to the specified load balancer.", - "id": "elb-add-tags-1", - "title": "To add tags to a load balancer" - } - ], - "ApplySecurityGroupsToLoadBalancer": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "SecurityGroups": [ - "sg-fc448899" - ] - }, - "output": { - "SecurityGroups": [ - "sg-fc448899" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates a security group with the specified load balancer in a VPC.", - "id": "elb-apply-security-groups-to-load-balancer-1", - "title": "To associate a security group with a load balancer in a VPC" - } - ], - "AttachLoadBalancerToSubnets": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "Subnets": [ - "subnet-0ecac448" - ] - }, - "output": { - "Subnets": [ - "subnet-15aaab61", - "subnet-0ecac448" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified subnet to the set of configured subnets for the specified load balancer.", - "id": "elb-attach-load-balancer-to-subnets-1", - "title": "To attach subnets to a load balancer" - } - ], - "ConfigureHealthCheck": [ - { - "input": { - "HealthCheck": { - "HealthyThreshold": 2, - "Interval": 30, - "Target": "HTTP:80/png", - "Timeout": 3, - "UnhealthyThreshold": 2 - }, - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "HealthCheck": { - "HealthyThreshold": 2, - "Interval": 30, - "Target": "HTTP:80/png", - "Timeout": 3, - "UnhealthyThreshold": 2 - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example specifies the health check settings used to evaluate the health of your backend EC2 instances.", - "id": "elb-configure-health-check-1", - "title": "To specify the health check settings for your backend EC2 instances" - } - ], - "CreateAppCookieStickinessPolicy": [ - { - "input": { - "CookieName": "my-app-cookie", - "LoadBalancerName": "my-load-balancer", - "PolicyName": "my-app-cookie-policy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example generates a stickiness policy that follows the sticky session lifetimes of the application-generated cookie.", - "id": "elb-create-app-cookie-stickiness-policy-1", - "title": "To generate a stickiness policy for your load balancer" - } - ], - "CreateLBCookieStickinessPolicy": [ - { - "input": { - "CookieExpirationPeriod": 60, - "LoadBalancerName": "my-load-balancer", - "PolicyName": "my-duration-cookie-policy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example generates a stickiness policy with sticky session lifetimes controlled by the specified expiration period.", - "id": "elb-create-lb-cookie-stickiness-policy-1", - "title": "To generate a duration-based stickiness policy for your load balancer" - } - ], - "CreateLoadBalancer": [ - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer", - "SecurityGroups": [ - "sg-a61988c3" - ], - "Subnets": [ - "subnet-15aaab61" - ] - }, - "output": { - "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTP listener in a VPC.", - "id": "elb-create-load-balancer-1", - "title": "To create an HTTP load balancer in a VPC" - }, - { - "input": { - "AvailabilityZones": [ - "us-west-2a" - ], - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "DNSName": "my-load-balancer-123456789.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTP listener in EC2-Classic.", - "id": "elb-create-load-balancer-2", - "title": "To create an HTTP load balancer in EC2-Classic" - }, - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - }, - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "LoadBalancerName": "my-load-balancer", - "SecurityGroups": [ - "sg-a61988c3" - ], - "Subnets": [ - "subnet-15aaab61" - ] - }, - "output": { - "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTPS listener in a VPC.", - "id": "elb-create-load-balancer-3", - "title": "To create an HTTPS load balancer in a VPC" - }, - { - "input": { - "AvailabilityZones": [ - "us-west-2a" - ], - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - }, - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "DNSName": "my-load-balancer-123456789.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a load balancer with an HTTPS listener in EC2-Classic.", - "id": "elb-create-load-balancer-4", - "title": "To create an HTTPS load balancer in EC2-Classic" - }, - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer", - "Scheme": "internal", - "SecurityGroups": [ - "sg-a61988c3" - ], - "Subnets": [ - "subnet-15aaab61" - ] - }, - "output": { - "DNSName": "internal-my-load-balancer-123456789.us-west-2.elb.amazonaws.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an internal load balancer with an HTTP listener in a VPC.", - "id": "elb-create-load-balancer-5", - "title": "To create an internal load balancer" - } - ], - "CreateLoadBalancerListeners": [ - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a listener for your load balancer at port 80 using the HTTP protocol.", - "id": "elb-create-load-balancer-listeners-1", - "title": "To create an HTTP listener for a load balancer" - }, - { - "input": { - "Listeners": [ - { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a listener for your load balancer at port 443 using the HTTPS protocol.", - "id": "elb-create-load-balancer-listeners-2", - "title": "To create an HTTPS listener for a load balancer" - } - ], - "CreateLoadBalancerPolicy": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyAttributes": [ - { - "AttributeName": "ProxyProtocol", - "AttributeValue": "true" - } - ], - "PolicyName": "my-ProxyProtocol-policy", - "PolicyTypeName": "ProxyProtocolPolicyType" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a policy that enables Proxy Protocol on the specified load balancer.", - "id": "elb-create-load-balancer-policy-1", - "title": "To create a policy that enables Proxy Protocol on a load balancer" - }, - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyAttributes": [ - { - "AttributeName": "PublicKey", - "AttributeValue": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwAYUjnfyEyXr1pxjhFWBpMlggUcqoi3kl+dS74kj//c6x7ROtusUaeQCTgIUkayttRDWchuqo1pHC1u+n5xxXnBBe2ejbb2WRsKIQ5rXEeixsjFpFsojpSQKkzhVGI6mJVZBJDVKSHmswnwLBdofLhzvllpovBPTHe+o4haAWvDBALJU0pkSI1FecPHcs2hwxf14zHoXy1e2k36A64nXW43wtfx5qcVSIxtCEOjnYRg7RPvybaGfQ+v6Iaxb/+7J5kEvZhTFQId+bSiJImF1FSUT1W1xwzBZPUbcUkkXDj45vC2s3Z8E+Lk7a3uZhvsQHLZnrfuWjBWGWvZ/MhZYgEXAMPLE" - } - ], - "PolicyName": "my-PublicKey-policy", - "PolicyTypeName": "PublicKeyPolicyType" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a public key policy.", - "id": "elb-create-load-balancer-policy-2", - "title": "To create a public key policy" - }, - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyAttributes": [ - { - "AttributeName": "PublicKeyPolicyName", - "AttributeValue": "my-PublicKey-policy" - } - ], - "PolicyName": "my-authentication-policy", - "PolicyTypeName": "BackendServerAuthenticationPolicyType" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a backend server authentication policy that enables authentication on your backend instance using a public key policy.", - "id": "elb-create-load-balancer-policy-3", - "title": "To create a backend server authentication policy" - } - ], - "DeleteLoadBalancer": [ - { - "input": { - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified load balancer.", - "id": "elb-delete-load-balancer-1", - "title": "To delete a load balancer" - } - ], - "DeleteLoadBalancerListeners": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "LoadBalancerPorts": [ - 80 - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the listener for the specified port from the specified load balancer.", - "id": "elb-delete-load-balancer-listeners-1", - "title": "To delete a listener from your load balancer" - } - ], - "DeleteLoadBalancerPolicy": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyName": "my-duration-cookie-policy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified policy from the specified load balancer. The policy must not be enabled on any listener.", - "id": "elb-delete-load-balancer-policy-1", - "title": "To delete a policy from your load balancer" - } - ], - "DeregisterInstancesFromLoadBalancer": [ - { - "input": { - "Instances": [ - { - "InstanceId": "i-d6f6fae3" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "Instances": [ - { - "InstanceId": "i-207d9717" - }, - { - "InstanceId": "i-afefb49b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters the specified instance from the specified load balancer.", - "id": "elb-deregister-instances-from-load-balancer-1", - "title": "To deregister instances from a load balancer" - } - ], - "DescribeInstanceHealth": [ - { - "input": { - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "InstanceStates": [ - { - "Description": "N/A", - "InstanceId": "i-207d9717", - "ReasonCode": "N/A", - "State": "InService" - }, - { - "Description": "N/A", - "InstanceId": "i-afefb49b", - "ReasonCode": "N/A", - "State": "InService" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the health of the instances for the specified load balancer.", - "id": "elb-describe-instance-health-1", - "title": "To describe the health of the instances for a load balancer" - } - ], - "DescribeLoadBalancerAttributes": [ - { - "input": { - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "LoadBalancerAttributes": { - "AccessLog": { - "Enabled": false - }, - "ConnectionDraining": { - "Enabled": false, - "Timeout": 300 - }, - "ConnectionSettings": { - "IdleTimeout": 60 - }, - "CrossZoneLoadBalancing": { - "Enabled": false - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes of the specified load balancer.", - "id": "elb-describe-load-balancer-attributes-1", - "title": "To describe the attributes of a load balancer" - } - ], - "DescribeLoadBalancerPolicies": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "PolicyNames": [ - "my-authentication-policy" - ] - }, - "output": { - "PolicyDescriptions": [ - { - "PolicyAttributeDescriptions": [ - { - "AttributeName": "PublicKeyPolicyName", - "AttributeValue": "my-PublicKey-policy" - } - ], - "PolicyName": "my-authentication-policy", - "PolicyTypeName": "BackendServerAuthenticationPolicyType" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified policy associated with the specified load balancer.", - "id": "elb-describe-load-balancer-policies-1", - "title": "To describe a policy associated with a load balancer" - } - ], - "DescribeLoadBalancerPolicyTypes": [ - { - "input": { - "PolicyTypeNames": [ - "ProxyProtocolPolicyType" - ] - }, - "output": { - "PolicyTypeDescriptions": [ - { - "Description": "Policy that controls whether to include the IP address and port of the originating request for TCP messages. This policy operates on TCP listeners only.", - "PolicyAttributeTypeDescriptions": [ - { - "AttributeName": "ProxyProtocol", - "AttributeType": "Boolean", - "Cardinality": "ONE" - } - ], - "PolicyTypeName": "ProxyProtocolPolicyType" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified load balancer policy type.", - "id": "elb-describe-load-balancer-policy-types-1", - "title": "To describe a load balancer policy type defined by Elastic Load Balancing" - } - ], - "DescribeLoadBalancers": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "output": { - "LoadBalancerDescriptions": [ - { - "AvailabilityZones": [ - "us-west-2a" - ], - "BackendServerDescriptions": [ - { - "InstancePort": 80, - "PolicyNames": [ - "my-ProxyProtocol-policy" - ] - } - ], - "CanonicalHostedZoneName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com", - "CanonicalHostedZoneNameID": "Z3DZXE0EXAMPLE", - "CreatedTime": "2015-03-19T03:24:02.650Z", - "DNSName": "my-load-balancer-1234567890.us-west-2.elb.amazonaws.com", - "HealthCheck": { - "HealthyThreshold": 2, - "Interval": 30, - "Target": "HTTP:80/png", - "Timeout": 3, - "UnhealthyThreshold": 2 - }, - "Instances": [ - { - "InstanceId": "i-207d9717" - }, - { - "InstanceId": "i-afefb49b" - } - ], - "ListenerDescriptions": [ - { - "Listener": { - "InstancePort": 80, - "InstanceProtocol": "HTTP", - "LoadBalancerPort": 80, - "Protocol": "HTTP" - }, - "PolicyNames": [ - - ] - }, - { - "Listener": { - "InstancePort": 443, - "InstanceProtocol": "HTTPS", - "LoadBalancerPort": 443, - "Protocol": "HTTPS", - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - }, - "PolicyNames": [ - "ELBSecurityPolicy-2015-03" - ] - } - ], - "LoadBalancerName": "my-load-balancer", - "Policies": { - "AppCookieStickinessPolicies": [ - - ], - "LBCookieStickinessPolicies": [ - { - "CookieExpirationPeriod": 60, - "PolicyName": "my-duration-cookie-policy" - } - ], - "OtherPolicies": [ - "my-PublicKey-policy", - "my-authentication-policy", - "my-SSLNegotiation-policy", - "my-ProxyProtocol-policy", - "ELBSecurityPolicy-2015-03" - ] - }, - "Scheme": "internet-facing", - "SecurityGroups": [ - "sg-a61988c3" - ], - "SourceSecurityGroup": { - "GroupName": "my-elb-sg", - "OwnerAlias": "123456789012" - }, - "Subnets": [ - "subnet-15aaab61" - ], - "VPCId": "vpc-a01106c2" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified load balancer.", - "id": "elb-describe-load-balancers-1", - "title": "To describe one of your load balancers" - } - ], - "DescribeTags": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ] - }, - "output": { - "TagDescriptions": [ - { - "LoadBalancerName": "my-load-balancer", - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags for the specified load balancer.", - "id": "elb-describe-tags-1", - "title": "To describe the tags for a load balancer" - } - ], - "DetachLoadBalancerFromSubnets": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "Subnets": [ - "subnet-0ecac448" - ] - }, - "output": { - "Subnets": [ - "subnet-15aaab61" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example detaches the specified load balancer from the specified subnet.", - "id": "elb-detach-load-balancer-from-subnets-1", - "title": "To detach a load balancer from a subnet" - } - ], - "DisableAvailabilityZonesForLoadBalancer": [ - { - "input": { - "AvailabilityZones": [ - "us-west-2a" - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "AvailabilityZones": [ - "us-west-2b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the specified Availability Zone from the set of Availability Zones for the specified load balancer.", - "id": "elb-disable-availability-zones-for-load-balancer-1", - "title": "To disable an Availability Zone for a load balancer" - } - ], - "EnableAvailabilityZonesForLoadBalancer": [ - { - "input": { - "AvailabilityZones": [ - "us-west-2b" - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "AvailabilityZones": [ - "us-west-2a", - "us-west-2b" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified Availability Zone to the specified load balancer.", - "id": "elb-enable-availability-zones-for-load-balancer-1", - "title": "To enable an Availability Zone for a load balancer" - } - ], - "ModifyLoadBalancerAttributes": [ - { - "input": { - "LoadBalancerAttributes": { - "CrossZoneLoadBalancing": { - "Enabled": true - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "LoadBalancerAttributes": { - "CrossZoneLoadBalancing": { - "Enabled": true - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables cross-zone load balancing for the specified load balancer.", - "id": "elb-modify-load-balancer-attributes-1", - "title": "To enable cross-zone load balancing" - }, - { - "input": { - "LoadBalancerAttributes": { - "ConnectionDraining": { - "Enabled": true, - "Timeout": 300 - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "LoadBalancerAttributes": { - "ConnectionDraining": { - "Enabled": true, - "Timeout": 300 - } - }, - "LoadBalancerName": "my-load-balancer" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables connection draining for the specified load balancer.", - "id": "elb-modify-load-balancer-attributes-2", - "title": "To enable connection draining" - } - ], - "RegisterInstancesWithLoadBalancer": [ - { - "input": { - "Instances": [ - { - "InstanceId": "i-d6f6fae3" - } - ], - "LoadBalancerName": "my-load-balancer" - }, - "output": { - "Instances": [ - { - "InstanceId": "i-d6f6fae3" - }, - { - "InstanceId": "i-207d9717" - }, - { - "InstanceId": "i-afefb49b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers the specified instance with the specified load balancer.", - "id": "elb-register-instances-with-load-balancer-1", - "title": "To register instances with a load balancer" - } - ], - "RemoveTags": [ - { - "input": { - "LoadBalancerNames": [ - "my-load-balancer" - ], - "Tags": [ - { - "Key": "project" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the specified tag from the specified load balancer.", - "id": "elb-remove-tags-1", - "title": "To remove tags from a load balancer" - } - ], - "SetLoadBalancerListenerSSLCertificate": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "LoadBalancerPort": 443, - "SSLCertificateId": "arn:aws:iam::123456789012:server-certificate/new-server-cert" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the existing SSL certificate for the specified HTTPS listener.", - "id": "elb-set-load-balancer-listener-ssl-certificate-1", - "title": "To update the SSL certificate for an HTTPS listener" - } - ], - "SetLoadBalancerPoliciesForBackendServer": [ - { - "input": { - "InstancePort": 80, - "LoadBalancerName": "my-load-balancer", - "PolicyNames": [ - "my-ProxyProtocol-policy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the policies that are currently associated with the specified port.", - "id": "elb-set-load-balancer-policies-for-backend-server-1", - "title": "To replace the policies associated with a port for a backend instance" - } - ], - "SetLoadBalancerPoliciesOfListener": [ - { - "input": { - "LoadBalancerName": "my-load-balancer", - "LoadBalancerPort": 80, - "PolicyNames": [ - "my-SSLNegotiation-policy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example replaces the policies that are currently associated with the specified listener.", - "id": "elb-set-load-balancer-policies-of-listener-1", - "title": "To replace the policies associated with a listener" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json deleted file mode 100644 index f2a39d3..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.min.json +++ /dev/null @@ -1,973 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-06-01", - "endpointPrefix": "elasticloadbalancing", - "protocol": "query", - "serviceFullName": "Elastic Load Balancing", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames", - "Tags" - ], - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "AddTagsResult", - "type": "structure", - "members": {} - } - }, - "ApplySecurityGroupsToLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "SecurityGroups" - ], - "members": { - "LoadBalancerName": {}, - "SecurityGroups": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult", - "type": "structure", - "members": { - "SecurityGroups": { - "shape": "Sa" - } - } - } - }, - "AttachLoadBalancerToSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Subnets" - ], - "members": { - "LoadBalancerName": {}, - "Subnets": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancerToSubnetsResult", - "type": "structure", - "members": { - "Subnets": { - "shape": "Se" - } - } - } - }, - "ConfigureHealthCheck": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "HealthCheck" - ], - "members": { - "LoadBalancerName": {}, - "HealthCheck": { - "shape": "Si" - } - } - }, - "output": { - "resultWrapper": "ConfigureHealthCheckResult", - "type": "structure", - "members": { - "HealthCheck": { - "shape": "Si" - } - } - } - }, - "CreateAppCookieStickinessPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName", - "CookieName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "CookieName": {} - } - }, - "output": { - "resultWrapper": "CreateAppCookieStickinessPolicyResult", - "type": "structure", - "members": {} - } - }, - "CreateLBCookieStickinessPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "CookieExpirationPeriod": { - "type": "long" - } - } - }, - "output": { - "resultWrapper": "CreateLBCookieStickinessPolicyResult", - "type": "structure", - "members": {} - } - }, - "CreateLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Listeners" - ], - "members": { - "LoadBalancerName": {}, - "Listeners": { - "shape": "Sx" - }, - "AvailabilityZones": { - "shape": "S13" - }, - "Subnets": { - "shape": "Se" - }, - "SecurityGroups": { - "shape": "Sa" - }, - "Scheme": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerResult", - "type": "structure", - "members": { - "DNSName": {} - } - } - }, - "CreateLoadBalancerListeners": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Listeners" - ], - "members": { - "LoadBalancerName": {}, - "Listeners": { - "shape": "Sx" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerListenersResult", - "type": "structure", - "members": {} - } - }, - "CreateLoadBalancerPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName", - "PolicyTypeName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "PolicyTypeName": {}, - "PolicyAttributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValue": {} - } - } - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancerListeners": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPorts" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPorts": { - "type": "list", - "member": { - "type": "integer" - } - } - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerListenersResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancerPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeregisterInstancesFromLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Instances" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DeregisterInstancesFromLoadBalancerResult", - "type": "structure", - "members": { - "Instances": { - "shape": "S1p" - } - } - } - }, - "DescribeInstanceHealth": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DescribeInstanceHealthResult", - "type": "structure", - "members": { - "InstanceStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "State": {}, - "ReasonCode": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {} - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerAttributesResult", - "type": "structure", - "members": { - "LoadBalancerAttributes": { - "shape": "S22" - } - } - } - }, - "DescribeLoadBalancerPolicies": { - "input": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "PolicyNames": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerPoliciesResult", - "type": "structure", - "members": { - "PolicyDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyTypeName": {}, - "PolicyAttributeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValue": {} - } - } - } - } - } - } - } - } - }, - "DescribeLoadBalancerPolicyTypes": { - "input": { - "type": "structure", - "members": { - "PolicyTypeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerPolicyTypesResult", - "type": "structure", - "members": { - "PolicyTypeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyTypeName": {}, - "Description": {}, - "PolicyAttributeTypeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeType": {}, - "Description": {}, - "DefaultValue": {}, - "Cardinality": {} - } - } - } - } - } - } - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "DNSName": {}, - "CanonicalHostedZoneName": {}, - "CanonicalHostedZoneNameID": {}, - "ListenerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Listener": { - "shape": "Sy" - }, - "PolicyNames": { - "shape": "S2k" - } - } - } - }, - "Policies": { - "type": "structure", - "members": { - "AppCookieStickinessPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "CookieName": {} - } - } - }, - "LBCookieStickinessPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "CookieExpirationPeriod": { - "type": "long" - } - } - } - }, - "OtherPolicies": { - "shape": "S2k" - } - } - }, - "BackendServerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstancePort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2k" - } - } - } - }, - "AvailabilityZones": { - "shape": "S13" - }, - "Subnets": { - "shape": "Se" - }, - "VPCId": {}, - "Instances": { - "shape": "S1p" - }, - "HealthCheck": { - "shape": "Si" - }, - "SourceSecurityGroup": { - "type": "structure", - "members": { - "OwnerAlias": {}, - "GroupName": {} - } - }, - "SecurityGroups": { - "shape": "Sa" - }, - "CreatedTime": { - "type": "timestamp" - }, - "Scheme": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames" - ], - "members": { - "LoadBalancerNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TagDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "Tags": { - "shape": "S4" - } - } - } - } - } - } - }, - "DetachLoadBalancerFromSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Subnets" - ], - "members": { - "LoadBalancerName": {}, - "Subnets": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancerFromSubnetsResult", - "type": "structure", - "members": { - "Subnets": { - "shape": "Se" - } - } - } - }, - "DisableAvailabilityZonesForLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "AvailabilityZones" - ], - "members": { - "LoadBalancerName": {}, - "AvailabilityZones": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S13" - } - } - } - }, - "EnableAvailabilityZonesForLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "AvailabilityZones" - ], - "members": { - "LoadBalancerName": {}, - "AvailabilityZones": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S13" - } - } - } - }, - "ModifyLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerAttributes" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerAttributes": { - "shape": "S22" - } - } - }, - "output": { - "resultWrapper": "ModifyLoadBalancerAttributesResult", - "type": "structure", - "members": { - "LoadBalancerName": {}, - "LoadBalancerAttributes": { - "shape": "S22" - } - } - } - }, - "RegisterInstancesWithLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Instances" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "RegisterInstancesWithLoadBalancerResult", - "type": "structure", - "members": { - "Instances": { - "shape": "S1p" - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames", - "Tags" - ], - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Tags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {} - } - } - } - } - }, - "output": { - "resultWrapper": "RemoveTagsResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerListenerSSLCertificate": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPort", - "SSLCertificateId" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "SSLCertificateId": {} - } - }, - "output": { - "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerPoliciesForBackendServer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "InstancePort", - "PolicyNames" - ], - "members": { - "LoadBalancerName": {}, - "InstancePort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerPoliciesOfListener": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPort", - "PolicyNames" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult", - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "list", - "member": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Si": { - "type": "structure", - "required": [ - "Target", - "Interval", - "Timeout", - "UnhealthyThreshold", - "HealthyThreshold" - ], - "members": { - "Target": {}, - "Interval": { - "type": "integer" - }, - "Timeout": { - "type": "integer" - }, - "UnhealthyThreshold": { - "type": "integer" - }, - "HealthyThreshold": { - "type": "integer" - } - } - }, - "Sx": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "Sy": { - "type": "structure", - "required": [ - "Protocol", - "LoadBalancerPort", - "InstancePort" - ], - "members": { - "Protocol": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "InstanceProtocol": {}, - "InstancePort": { - "type": "integer" - }, - "SSLCertificateId": {} - } - }, - "S13": { - "type": "list", - "member": {} - }, - "S1p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "S22": { - "type": "structure", - "members": { - "CrossZoneLoadBalancing": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "AccessLog": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "S3BucketName": {}, - "EmitInterval": { - "type": "integer" - }, - "S3BucketPrefix": {} - } - }, - "ConnectionDraining": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - } - }, - "ConnectionSettings": { - "type": "structure", - "required": [ - "IdleTimeout" - ], - "members": { - "IdleTimeout": { - "type": "integer" - } - } - }, - "AdditionalAttributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S2k": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json deleted file mode 100644 index 82113a7..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.paginators.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "pagination": { - "DescribeInstanceHealth": { - "result_key": "InstanceStates" - }, - "DescribeLoadBalancerPolicies": { - "result_key": "PolicyDescriptions" - }, - "DescribeLoadBalancerPolicyTypes": { - "result_key": "PolicyTypeDescriptions" - }, - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancerDescriptions" - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json b/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json deleted file mode 100644 index f02573e..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancing-2012-06-01.waiters2.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "version":2, - "waiters":{ - "InstanceDeregistered": { - "delay": 15, - "operation": "DescribeInstanceHealth", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "OutOfService", - "matcher": "pathAll", - "state": "success", - "argument": "InstanceStates[].State" - }, - { - "matcher": "error", - "expected": "InvalidInstance", - "state": "success" - } - ] - }, - "AnyInstanceInService":{ - "acceptors":[ - { - "argument":"InstanceStates[].State", - "expected":"InService", - "matcher":"pathAny", - "state":"success" - } - ], - "delay":15, - "maxAttempts":40, - "operation":"DescribeInstanceHealth" - }, - "InstanceInService":{ - "acceptors":[ - { - "argument":"InstanceStates[].State", - "expected":"InService", - "matcher":"pathAll", - "state":"success" - } - ], - "delay":15, - "maxAttempts":40, - "operation":"DescribeInstanceHealth" - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json deleted file mode 100644 index 508b099..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.examples.json +++ /dev/null @@ -1,1384 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddTags": [ - { - "input": { - "ResourceArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example adds the specified tags to the specified load balancer.", - "id": "elbv2-add-tags-1", - "title": "To add tags to a load balancer" - } - ], - "CreateListener": [ - { - "input": { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - }, - "output": { - "Listeners": [ - { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an HTTP listener for the specified load balancer that forwards requests to the specified target group.", - "id": "elbv2-create-listener-1", - "title": "To create an HTTP listener" - }, - { - "input": { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 443, - "Protocol": "HTTPS", - "SslPolicy": "ELBSecurityPolicy-2015-05" - }, - "output": { - "Listeners": [ - { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-server-cert" - } - ], - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 443, - "Protocol": "HTTPS", - "SslPolicy": "ELBSecurityPolicy-2015-05" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an HTTPS listener for the specified load balancer that forwards requests to the specified target group. Note that you must specify an SSL certificate for an HTTPS listener. You can create and manage certificates using AWS Certificate Manager (ACM). Alternatively, you can create a certificate using SSL/TLS tools, get the certificate signed by a certificate authority (CA), and upload the certificate to AWS Identity and Access Management (IAM).", - "id": "elbv2-create-listener-2", - "title": "To create an HTTPS listener" - } - ], - "CreateLoadBalancer": [ - { - "input": { - "Name": "my-load-balancer", - "Subnets": [ - "subnet-b7d581c0", - "subnet-8360a9e7" - ] - }, - "output": { - "LoadBalancers": [ - { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ], - "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", - "CreatedTime": "2016-03-25T21:26:12.920Z", - "DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "LoadBalancerName": "my-load-balancer", - "Scheme": "internet-facing", - "SecurityGroups": [ - "sg-5943793c" - ], - "State": { - "Code": "provisioning" - }, - "Type": "application", - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an Internet-facing load balancer and enables the Availability Zones for the specified subnets.", - "id": "elbv2-create-load-balancer-1", - "title": "To create an Internet-facing load balancer" - }, - { - "input": { - "Name": "my-internal-load-balancer", - "Scheme": "internal", - "SecurityGroups": [ - - ], - "Subnets": [ - "subnet-b7d581c0", - "subnet-8360a9e7" - ] - }, - "output": { - "LoadBalancers": [ - { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ], - "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", - "CreatedTime": "2016-03-25T21:29:48.850Z", - "DNSName": "internal-my-internal-load-balancer-1529930873.us-west-2.elb.amazonaws.com", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-internal-load-balancer/5b49b8d4303115c2", - "LoadBalancerName": "my-internal-load-balancer", - "Scheme": "internal", - "SecurityGroups": [ - "sg-5943793c" - ], - "State": { - "Code": "provisioning" - }, - "Type": "application", - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates an internal load balancer and enables the Availability Zones for the specified subnets.", - "id": "elbv2-create-load-balancer-2", - "title": "To create an internal load balancer" - } - ], - "CreateRule": [ - { - "input": { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "Priority": 10 - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "IsDefault": false, - "Priority": "10", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a rule that forwards requests to the specified target group if the URL contains the specified pattern (for example, /img/*).", - "id": "elbv2-create-rule-1", - "title": "To create a rule" - } - ], - "CreateTargetGroup": [ - { - "input": { - "Name": "my-targets", - "Port": 80, - "Protocol": "HTTP", - "VpcId": "vpc-3ac0fb5f" - }, - "output": { - "TargetGroups": [ - { - "HealthCheckIntervalSeconds": 30, - "HealthCheckPath": "/", - "HealthCheckPort": "traffic-port", - "HealthCheckProtocol": "HTTP", - "HealthCheckTimeoutSeconds": 5, - "HealthyThresholdCount": 5, - "Matcher": { - "HttpCode": "200" - }, - "Port": 80, - "Protocol": "HTTP", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "TargetGroupName": "my-targets", - "UnhealthyThresholdCount": 2, - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example creates a target group that you can use to route traffic to targets using HTTP on port 80. This target group uses the default health check configuration.", - "id": "elbv2-create-target-group-1", - "title": "To create a target group" - } - ], - "DeleteListener": [ - { - "input": { - "ListenerArn": "arn:aws:elasticloadbalancing:ua-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified listener.", - "id": "elbv2-delete-listener-1", - "title": "To delete a listener" - } - ], - "DeleteLoadBalancer": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified load balancer.", - "id": "elbv2-delete-load-balancer-1", - "title": "To delete a load balancer" - } - ], - "DeleteRule": [ - { - "input": { - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified rule.", - "id": "elbv2-delete-rule-1", - "title": "To delete a rule" - } - ], - "DeleteTargetGroup": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified target group.", - "id": "elbv2-delete-target-group-1", - "title": "To delete a target group" - } - ], - "DeregisterTargets": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Targets": [ - { - "Id": "i-0f76fade" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deregisters the specified instance from the specified target group.", - "id": "elbv2-deregister-targets-1", - "title": "To deregister a target from a target group" - } - ], - "DescribeListeners": [ - { - "input": { - "ListenerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" - ] - }, - "output": { - "Listeners": [ - { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified listener.", - "id": "elbv2-describe-listeners-1", - "title": "To describe a listener" - } - ], - "DescribeLoadBalancerAttributes": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "access_logs.s3.enabled", - "Value": "false" - }, - { - "Key": "idle_timeout.timeout_seconds", - "Value": "60" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "" - }, - { - "Key": "deletion_protection.enabled", - "Value": "false" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes of the specified load balancer.", - "id": "elbv2-describe-load-balancer-attributes-1", - "title": "To describe load balancer attributes" - } - ], - "DescribeLoadBalancers": [ - { - "input": { - "LoadBalancerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ] - }, - "output": { - "LoadBalancers": [ - { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ], - "CanonicalHostedZoneId": "Z2P70J7EXAMPLE", - "CreatedTime": "2016-03-25T21:26:12.920Z", - "DNSName": "my-load-balancer-424835706.us-west-2.elb.amazonaws.com", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "LoadBalancerName": "my-load-balancer", - "Scheme": "internet-facing", - "SecurityGroups": [ - "sg-5943793c" - ], - "State": { - "Code": "active" - }, - "Type": "application", - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified load balancer.", - "id": "elbv2-describe-load-balancers-1", - "title": "To describe a load balancer" - } - ], - "DescribeRules": [ - { - "input": { - "RuleArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - ] - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "IsDefault": false, - "Priority": "10", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified rule.", - "id": "elbv2-describe-rules-1", - "title": "To describe a rule" - } - ], - "DescribeSSLPolicies": [ - { - "input": { - "Names": [ - "ELBSecurityPolicy-2015-05" - ] - }, - "output": { - "SslPolicies": [ - { - "Ciphers": [ - { - "Name": "ECDHE-ECDSA-AES128-GCM-SHA256", - "Priority": 1 - }, - { - "Name": "ECDHE-RSA-AES128-GCM-SHA256", - "Priority": 2 - }, - { - "Name": "ECDHE-ECDSA-AES128-SHA256", - "Priority": 3 - }, - { - "Name": "ECDHE-RSA-AES128-SHA256", - "Priority": 4 - }, - { - "Name": "ECDHE-ECDSA-AES128-SHA", - "Priority": 5 - }, - { - "Name": "ECDHE-RSA-AES128-SHA", - "Priority": 6 - }, - { - "Name": "DHE-RSA-AES128-SHA", - "Priority": 7 - }, - { - "Name": "ECDHE-ECDSA-AES256-GCM-SHA384", - "Priority": 8 - }, - { - "Name": "ECDHE-RSA-AES256-GCM-SHA384", - "Priority": 9 - }, - { - "Name": "ECDHE-ECDSA-AES256-SHA384", - "Priority": 10 - }, - { - "Name": "ECDHE-RSA-AES256-SHA384", - "Priority": 11 - }, - { - "Name": "ECDHE-RSA-AES256-SHA", - "Priority": 12 - }, - { - "Name": "ECDHE-ECDSA-AES256-SHA", - "Priority": 13 - }, - { - "Name": "AES128-GCM-SHA256", - "Priority": 14 - }, - { - "Name": "AES128-SHA256", - "Priority": 15 - }, - { - "Name": "AES128-SHA", - "Priority": 16 - }, - { - "Name": "AES256-GCM-SHA384", - "Priority": 17 - }, - { - "Name": "AES256-SHA256", - "Priority": 18 - }, - { - "Name": "AES256-SHA", - "Priority": 19 - } - ], - "Name": "ELBSecurityPolicy-2015-05", - "SslProtocols": [ - "TLSv1", - "TLSv1.1", - "TLSv1.2" - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified policy used for SSL negotiation.", - "id": "elbv2-describe-ssl-policies-1", - "title": "To describe a policy used for SSL negotiation" - } - ], - "DescribeTags": [ - { - "input": { - "ResourceArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ] - }, - "output": { - "TagDescriptions": [ - { - "ResourceArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Tags": [ - { - "Key": "project", - "Value": "lima" - }, - { - "Key": "department", - "Value": "digital-media" - } - ] - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the tags assigned to the specified load balancer.", - "id": "elbv2-describe-tags-1", - "title": "To describe the tags assigned to a load balancer" - } - ], - "DescribeTargetGroupAttributes": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "output": { - "Attributes": [ - { - "Key": "stickiness.enabled", - "Value": "false" - }, - { - "Key": "deregistration_delay.timeout_seconds", - "Value": "300" - }, - { - "Key": "stickiness.type", - "Value": "lb_cookie" - }, - { - "Key": "stickiness.lb_cookie.duration_seconds", - "Value": "86400" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the attributes of the specified target group.", - "id": "elbv2-describe-target-group-attributes-1", - "title": "To describe target group attributes" - } - ], - "DescribeTargetGroups": [ - { - "input": { - "TargetGroupArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - ] - }, - "output": { - "TargetGroups": [ - { - "HealthCheckIntervalSeconds": 30, - "HealthCheckPath": "/", - "HealthCheckPort": "traffic-port", - "HealthCheckProtocol": "HTTP", - "HealthCheckTimeoutSeconds": 5, - "HealthyThresholdCount": 5, - "LoadBalancerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "Matcher": { - "HttpCode": "200" - }, - "Port": 80, - "Protocol": "HTTP", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "TargetGroupName": "my-targets", - "UnhealthyThresholdCount": 2, - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the specified target group.", - "id": "elbv2-describe-target-groups-1", - "title": "To describe a target group" - } - ], - "DescribeTargetHealth": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "output": { - "TargetHealthDescriptions": [ - { - "Target": { - "Id": "i-0f76fade", - "Port": 80 - }, - "TargetHealth": { - "Description": "Given target group is not configured to receive traffic from ELB", - "Reason": "Target.NotInUse", - "State": "unused" - } - }, - { - "HealthCheckPort": "80", - "Target": { - "Id": "i-0f76fade", - "Port": 80 - }, - "TargetHealth": { - "State": "healthy" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the health of the targets for the specified target group. One target is healthy but the other is not specified in an action, so it can't receive traffic from the load balancer.", - "id": "elbv2-describe-target-health-1", - "title": "To describe the health of the targets for a target group" - }, - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Targets": [ - { - "Id": "i-0f76fade", - "Port": 80 - } - ] - }, - "output": { - "TargetHealthDescriptions": [ - { - "HealthCheckPort": "80", - "Target": { - "Id": "i-0f76fade", - "Port": 80 - }, - "TargetHealth": { - "State": "healthy" - } - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example describes the health of the specified target. This target is healthy.", - "id": "elbv2-describe-target-health-2", - "title": "To describe the health of a target" - } - ], - "ModifyListener": [ - { - "input": { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/2453ed029918f21f", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2" - }, - "output": { - "Listeners": [ - { - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/2453ed029918f21f", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 80, - "Protocol": "HTTP" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the default action for the specified listener.", - "id": "elbv2-modify-listener-1", - "title": "To change the default action for a listener" - }, - { - "input": { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-new-server-cert" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65" - }, - "output": { - "Listeners": [ - { - "Certificates": [ - { - "CertificateArn": "arn:aws:iam::123456789012:server-certificate/my-new-server-cert" - } - ], - "DefaultActions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "ListenerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener/app/my-load-balancer/50dc6c495c0c9188/0467ef3c8400ae65", - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Port": 443, - "Protocol": "HTTPS", - "SslPolicy": "ELBSecurityPolicy-2015-05" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the server certificate for the specified HTTPS listener.", - "id": "elbv2-modify-listener-2", - "title": "To change the server certificate" - } - ], - "ModifyLoadBalancerAttributes": [ - { - "input": { - "Attributes": [ - { - "Key": "deletion_protection.enabled", - "Value": "true" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "deletion_protection.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.enabled", - "Value": "false" - }, - { - "Key": "idle_timeout.timeout_seconds", - "Value": "60" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables deletion protection for the specified load balancer.", - "id": "elbv2-modify-load-balancer-attributes-1", - "title": "To enable deletion protection" - }, - { - "input": { - "Attributes": [ - { - "Key": "idle_timeout.timeout_seconds", - "Value": "30" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "idle_timeout.timeout_seconds", - "Value": "30" - }, - { - "Key": "access_logs.s3.enabled", - "Value": "false" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "" - }, - { - "Key": "deletion_protection.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the idle timeout value for the specified load balancer.", - "id": "elbv2-modify-load-balancer-attributes-2", - "title": "To change the idle timeout" - }, - { - "input": { - "Attributes": [ - { - "Key": "access_logs.s3.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "my-loadbalancer-logs" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "myapp" - } - ], - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - }, - "output": { - "Attributes": [ - { - "Key": "access_logs.s3.enabled", - "Value": "true" - }, - { - "Key": "access_logs.s3.bucket", - "Value": "my-load-balancer-logs" - }, - { - "Key": "access_logs.s3.prefix", - "Value": "myapp" - }, - { - "Key": "idle_timeout.timeout_seconds", - "Value": "60" - }, - { - "Key": "deletion_protection.enabled", - "Value": "false" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables access logs for the specified load balancer. Note that the S3 bucket must exist in the same region as the load balancer and must have a policy attached that grants access to the Elastic Load Balancing service.", - "id": "elbv2-modify-load-balancer-attributes-3", - "title": "To enable access logs" - } - ], - "ModifyRule": [ - { - "input": { - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/images/*" - ] - } - ], - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/images/*" - ] - } - ], - "IsDefault": false, - "Priority": "10", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/9683b2d02a6cabee" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example modifies the condition for the specified rule.", - "id": "elbv2-modify-rule-1", - "title": "To modify a rule" - } - ], - "ModifyTargetGroup": [ - { - "input": { - "HealthCheckPort": "443", - "HealthCheckProtocol": "HTTPS", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-https-targets/2453ed029918f21f" - }, - "output": { - "TargetGroups": [ - { - "HealthCheckIntervalSeconds": 30, - "HealthCheckPort": "443", - "HealthCheckProtocol": "HTTPS", - "HealthCheckTimeoutSeconds": 5, - "HealthyThresholdCount": 5, - "LoadBalancerArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "Matcher": { - "HttpCode": "200" - }, - "Port": 443, - "Protocol": "HTTPS", - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-https-targets/2453ed029918f21f", - "TargetGroupName": "my-https-targets", - "UnhealthyThresholdCount": 2, - "VpcId": "vpc-3ac0fb5f" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the configuration of the health checks used to evaluate the health of the targets for the specified target group.", - "id": "elbv2-modify-target-group-1", - "title": "To modify the health check configuration for a target group" - } - ], - "ModifyTargetGroupAttributes": [ - { - "input": { - "Attributes": [ - { - "Key": "deregistration_delay.timeout_seconds", - "Value": "600" - } - ], - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067" - }, - "output": { - "Attributes": [ - { - "Key": "stickiness.enabled", - "Value": "false" - }, - { - "Key": "deregistration_delay.timeout_seconds", - "Value": "600" - }, - { - "Key": "stickiness.type", - "Value": "lb_cookie" - }, - { - "Key": "stickiness.lb_cookie.duration_seconds", - "Value": "86400" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the deregistration delay timeout to the specified value for the specified target group.", - "id": "elbv2-modify-target-group-attributes-1", - "title": "To modify the deregistration delay timeout" - } - ], - "RegisterTargets": [ - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Targets": [ - { - "Id": "i-80c8dd94" - }, - { - "Id": "i-ceddcd4d" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers the specified instances with the specified target group.", - "id": "elbv2-register-targets-1", - "title": "To register targets with a target group" - }, - { - "input": { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-new-targets/3bb63f11dfb0faf9", - "Targets": [ - { - "Id": "i-80c8dd94", - "Port": 80 - }, - { - "Id": "i-80c8dd94", - "Port": 766 - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example registers the specified instance with the specified target group using multiple ports. This enables you to register ECS containers on the same instance as targets in the target group.", - "id": "elbv2-register-targets-2", - "title": "To register targets with a target group using port overrides" - } - ], - "RemoveTags": [ - { - "input": { - "ResourceArns": [ - "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188" - ], - "TagKeys": [ - "project", - "department" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the specified tags from the specified load balancer.", - "id": "elbv2-remove-tags-1", - "title": "To remove tags from a load balancer" - } - ], - "SetRulePriorities": [ - { - "input": { - "RulePriorities": [ - { - "Priority": 5, - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" - } - ] - }, - "output": { - "Rules": [ - { - "Actions": [ - { - "TargetGroupArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-targets/73e2d6bc24d8a067", - "Type": "forward" - } - ], - "Conditions": [ - { - "Field": "path-pattern", - "Values": [ - "/img/*" - ] - } - ], - "IsDefault": false, - "Priority": "5", - "RuleArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:listener-rule/app/my-load-balancer/50dc6c495c0c9188/f2f7dc8efc522ab2/1291d13826f405c3" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the priority of the specified rule.", - "id": "elbv2-set-rule-priorities-1", - "title": "To set the rule priority" - } - ], - "SetSecurityGroups": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "SecurityGroups": [ - "sg-5943793c" - ] - }, - "output": { - "SecurityGroupIds": [ - "sg-5943793c" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example associates the specified security group with the specified load balancer.", - "id": "elbv2-set-security-groups-1", - "title": "To associate a security group with a load balancer" - } - ], - "SetSubnets": [ - { - "input": { - "LoadBalancerArn": "arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188", - "Subnets": [ - "subnet-8360a9e7", - "subnet-b7d581c0" - ] - }, - "output": { - "AvailabilityZones": [ - { - "SubnetId": "subnet-8360a9e7", - "ZoneName": "us-west-2a" - }, - { - "SubnetId": "subnet-b7d581c0", - "ZoneName": "us-west-2b" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example enables the Availability Zones for the specified subnets for the specified load balancer.", - "id": "elbv2-set-subnets-1", - "title": "To enable Availability Zones for a load balancer" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json deleted file mode 100644 index a44cdfa..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.min.json +++ /dev/null @@ -1,1022 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-01", - "endpointPrefix": "elasticloadbalancing", - "protocol": "query", - "serviceAbbreviation": "Elastic Load Balancing v2", - "serviceFullName": "Elastic Load Balancing", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns", - "Tags" - ], - "members": { - "ResourceArns": { - "shape": "S2" - }, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "AddTagsResult", - "type": "structure", - "members": {} - } - }, - "CreateListener": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Protocol", - "Port", - "DefaultActions" - ], - "members": { - "LoadBalancerArn": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "SslPolicy": {}, - "Certificates": { - "shape": "Se" - }, - "DefaultActions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "CreateListenerResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sm" - } - } - } - }, - "CreateLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "Name", - "Subnets" - ], - "members": { - "Name": {}, - "Subnets": { - "shape": "Sr" - }, - "SecurityGroups": { - "shape": "St" - }, - "Scheme": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerResult", - "type": "structure", - "members": { - "LoadBalancers": { - "shape": "Sx" - } - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "ListenerArn", - "Conditions", - "Priority", - "Actions" - ], - "members": { - "ListenerArn": {}, - "Conditions": { - "shape": "S1b" - }, - "Priority": { - "type": "integer" - }, - "Actions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "CreateRuleResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "CreateTargetGroup": { - "input": { - "type": "structure", - "required": [ - "Name", - "Protocol", - "Port", - "VpcId" - ], - "members": { - "Name": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckPath": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "Matcher": { - "shape": "S1u" - } - } - }, - "output": { - "resultWrapper": "CreateTargetGroupResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S1x" - } - } - } - }, - "DeleteListener": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {} - } - }, - "output": { - "resultWrapper": "DeleteListenerResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn" - ], - "members": { - "LoadBalancerArn": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerResult", - "type": "structure", - "members": {} - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleArn" - ], - "members": { - "RuleArn": {} - } - }, - "output": { - "resultWrapper": "DeleteRuleResult", - "type": "structure", - "members": {} - } - }, - "DeleteTargetGroup": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {} - } - }, - "output": { - "resultWrapper": "DeleteTargetGroupResult", - "type": "structure", - "members": {} - } - }, - "DeregisterTargets": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Targets" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S29" - } - } - }, - "output": { - "resultWrapper": "DeregisterTargetsResult", - "type": "structure", - "members": {} - } - }, - "DescribeListeners": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "ListenerArns": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeListenersResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sm" - }, - "NextMarker": {} - } - } - }, - "DescribeLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn" - ], - "members": { - "LoadBalancerArn": {} - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S2k" - } - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArns": { - "shape": "S1z" - }, - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancers": { - "shape": "Sx" - }, - "NextMarker": {} - } - } - }, - "DescribeRules": { - "input": { - "type": "structure", - "members": { - "ListenerArn": {}, - "RuleArns": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeRulesResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "DescribeSSLPolicies": { - "input": { - "type": "structure", - "members": { - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeSSLPoliciesResult", - "type": "structure", - "members": { - "SslPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SslProtocols": { - "type": "list", - "member": {} - }, - "Ciphers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Priority": { - "type": "integer" - } - } - } - }, - "Name": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns" - ], - "members": { - "ResourceArns": { - "shape": "S2" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TagDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S4" - } - } - } - } - } - } - }, - "DescribeTargetGroupAttributes": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {} - } - }, - "output": { - "resultWrapper": "DescribeTargetGroupAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S3b" - } - } - } - }, - "DescribeTargetGroups": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "TargetGroupArns": { - "type": "list", - "member": {} - }, - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeTargetGroupsResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S1x" - }, - "NextMarker": {} - } - } - }, - "DescribeTargetHealth": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S29" - } - } - }, - "output": { - "resultWrapper": "DescribeTargetHealthResult", - "type": "structure", - "members": { - "TargetHealthDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Target": { - "shape": "S2a" - }, - "HealthCheckPort": {}, - "TargetHealth": { - "type": "structure", - "members": { - "State": {}, - "Reason": {}, - "Description": {} - } - } - } - } - } - } - } - }, - "ModifyListener": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {}, - "Port": { - "type": "integer" - }, - "Protocol": {}, - "SslPolicy": {}, - "Certificates": { - "shape": "Se" - }, - "DefaultActions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "ModifyListenerResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sm" - } - } - } - }, - "ModifyLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Attributes" - ], - "members": { - "LoadBalancerArn": {}, - "Attributes": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "ModifyLoadBalancerAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S2k" - } - } - } - }, - "ModifyRule": { - "input": { - "type": "structure", - "required": [ - "RuleArn" - ], - "members": { - "RuleArn": {}, - "Conditions": { - "shape": "S1b" - }, - "Actions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "ModifyRuleResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "ModifyTargetGroup": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckPath": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "Matcher": { - "shape": "S1u" - } - } - }, - "output": { - "resultWrapper": "ModifyTargetGroupResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S1x" - } - } - } - }, - "ModifyTargetGroupAttributes": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Attributes" - ], - "members": { - "TargetGroupArn": {}, - "Attributes": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "ModifyTargetGroupAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S3b" - } - } - } - }, - "RegisterTargets": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Targets" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S29" - } - } - }, - "output": { - "resultWrapper": "RegisterTargetsResult", - "type": "structure", - "members": {} - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns", - "TagKeys" - ], - "members": { - "ResourceArns": { - "shape": "S2" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "RemoveTagsResult", - "type": "structure", - "members": {} - } - }, - "SetRulePriorities": { - "input": { - "type": "structure", - "required": [ - "RulePriorities" - ], - "members": { - "RulePriorities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RuleArn": {}, - "Priority": { - "type": "integer" - } - } - } - } - } - }, - "output": { - "resultWrapper": "SetRulePrioritiesResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "SetSecurityGroups": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "SecurityGroups" - ], - "members": { - "LoadBalancerArn": {}, - "SecurityGroups": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "SetSecurityGroupsResult", - "type": "structure", - "members": { - "SecurityGroupIds": { - "shape": "St" - } - } - } - }, - "SetSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Subnets" - ], - "members": { - "LoadBalancerArn": {}, - "Subnets": { - "shape": "Sr" - } - } - }, - "output": { - "resultWrapper": "SetSubnetsResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S17" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Se": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {} - } - } - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Type", - "TargetGroupArn" - ], - "members": { - "Type": {}, - "TargetGroupArn": {} - } - } - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ListenerArn": {}, - "LoadBalancerArn": {}, - "Port": { - "type": "integer" - }, - "Protocol": {}, - "Certificates": { - "shape": "Se" - }, - "SslPolicy": {}, - "DefaultActions": { - "shape": "Sh" - } - } - } - }, - "Sr": { - "type": "list", - "member": {} - }, - "St": { - "type": "list", - "member": {} - }, - "Sx": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "DNSName": {}, - "CanonicalHostedZoneId": {}, - "CreatedTime": { - "type": "timestamp" - }, - "LoadBalancerName": {}, - "Scheme": {}, - "VpcId": {}, - "State": { - "type": "structure", - "members": { - "Code": {}, - "Reason": {} - } - }, - "Type": {}, - "AvailabilityZones": { - "shape": "S17" - }, - "SecurityGroups": { - "shape": "St" - } - } - } - }, - "S17": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ZoneName": {}, - "SubnetId": {} - } - } - }, - "S1b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Field": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S1i": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RuleArn": {}, - "Priority": {}, - "Conditions": { - "shape": "S1b" - }, - "Actions": { - "shape": "Sh" - }, - "IsDefault": { - "type": "boolean" - } - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "HttpCode" - ], - "members": { - "HttpCode": {} - } - }, - "S1x": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetGroupArn": {}, - "TargetGroupName": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "HealthCheckPath": {}, - "Matcher": { - "shape": "S1u" - }, - "LoadBalancerArns": { - "shape": "S1z" - } - } - } - }, - "S1z": { - "type": "list", - "member": {} - }, - "S29": { - "type": "list", - "member": { - "shape": "S2a" - } - }, - "S2a": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {}, - "Port": { - "type": "integer" - } - } - }, - "S2k": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S3b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json b/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json deleted file mode 100644 index 5afd708..0000000 --- a/node_modules/aws-sdk/apis/elasticloadbalancingv2-2015-12-01.paginators.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pagination": { - "DescribeTargetGroups": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "TargetGroups" - }, - "DescribeListeners": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "Listeners" - }, - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancers" - } - } -} - diff --git a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json deleted file mode 100644 index 94cab4e..0000000 --- a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.min.json +++ /dev/null @@ -1,1241 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2009-03-31", - "endpointPrefix": "elasticmapreduce", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon EMR", - "serviceFullName": "Amazon Elastic MapReduce", - "signatureVersion": "v4", - "targetPrefix": "ElasticMapReduce", - "timestampFormat": "unixTimestamp" - }, - "operations": { - "AddInstanceGroups": { - "input": { - "type": "structure", - "required": [ - "InstanceGroups", - "JobFlowId" - ], - "members": { - "InstanceGroups": { - "shape": "S2" - }, - "JobFlowId": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobFlowId": {}, - "InstanceGroupIds": { - "type": "list", - "member": {} - } - } - } - }, - "AddJobFlowSteps": { - "input": { - "type": "structure", - "required": [ - "JobFlowId", - "Steps" - ], - "members": { - "JobFlowId": {}, - "Steps": { - "shape": "Sl" - } - } - }, - "output": { - "type": "structure", - "members": { - "StepIds": { - "type": "list", - "member": {} - } - } - } - }, - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "Sx" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name", - "SecurityConfiguration" - ], - "members": { - "Name": {}, - "SecurityConfiguration": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Name", - "CreationDateTime" - ], - "members": { - "Name": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "DeleteSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "shape": "S19" - }, - "Ec2InstanceAttributes": { - "type": "structure", - "members": { - "Ec2KeyName": {}, - "Ec2SubnetId": {}, - "Ec2AvailabilityZone": {}, - "IamInstanceProfile": {}, - "EmrManagedMasterSecurityGroup": {}, - "EmrManagedSlaveSecurityGroup": {}, - "ServiceAccessSecurityGroup": {}, - "AdditionalMasterSecurityGroups": { - "shape": "S1f" - }, - "AdditionalSlaveSecurityGroups": { - "shape": "S1f" - } - } - }, - "LogUri": {}, - "RequestedAmiVersion": {}, - "RunningAmiVersion": {}, - "ReleaseLabel": {}, - "AutoTerminate": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "Applications": { - "shape": "S1h" - }, - "Tags": { - "shape": "Sx" - }, - "ServiceRole": {}, - "NormalizedInstanceHours": { - "type": "integer" - }, - "MasterPublicDnsName": {}, - "Configurations": { - "shape": "S9" - }, - "SecurityConfiguration": {} - } - } - } - } - }, - "DescribeJobFlows": { - "input": { - "type": "structure", - "members": { - "CreatedAfter": { - "type": "timestamp" - }, - "CreatedBefore": { - "type": "timestamp" - }, - "JobFlowIds": { - "shape": "Ss" - }, - "JobFlowStates": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "JobFlows": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "JobFlowId", - "Name", - "ExecutionStatusDetail", - "Instances" - ], - "members": { - "JobFlowId": {}, - "Name": {}, - "LogUri": {}, - "AmiVersion": {}, - "ExecutionStatusDetail": { - "type": "structure", - "required": [ - "State", - "CreationDateTime" - ], - "members": { - "State": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - }, - "LastStateChangeReason": {} - } - }, - "Instances": { - "type": "structure", - "required": [ - "MasterInstanceType", - "SlaveInstanceType", - "InstanceCount" - ], - "members": { - "MasterInstanceType": {}, - "MasterPublicDnsName": {}, - "MasterInstanceId": {}, - "SlaveInstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Market", - "InstanceRole", - "InstanceType", - "InstanceRequestCount", - "InstanceRunningCount", - "State", - "CreationDateTime" - ], - "members": { - "InstanceGroupId": {}, - "Name": {}, - "Market": {}, - "InstanceRole": {}, - "BidPrice": {}, - "InstanceType": {}, - "InstanceRequestCount": { - "type": "integer" - }, - "InstanceRunningCount": { - "type": "integer" - }, - "State": {}, - "LastStateChangeReason": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - }, - "NormalizedInstanceHours": { - "type": "integer" - }, - "Ec2KeyName": {}, - "Ec2SubnetId": {}, - "Placement": { - "shape": "S1u" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "HadoopVersion": {} - } - }, - "Steps": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StepConfig", - "ExecutionStatusDetail" - ], - "members": { - "StepConfig": { - "shape": "Sm" - }, - "ExecutionStatusDetail": { - "type": "structure", - "required": [ - "State", - "CreationDateTime" - ], - "members": { - "State": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - }, - "LastStateChangeReason": {} - } - } - } - } - }, - "BootstrapActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BootstrapActionConfig": { - "shape": "S21" - } - } - } - }, - "SupportedProducts": { - "shape": "S23" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "JobFlowRole": {}, - "ServiceRole": {} - } - } - } - } - }, - "deprecated": true - }, - "DescribeSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "SecurityConfiguration": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "DescribeStep": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "StepId" - ], - "members": { - "ClusterId": {}, - "StepId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Step": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Config": { - "shape": "S2a" - }, - "ActionOnFailure": {}, - "Status": { - "shape": "S2b" - } - } - } - } - } - }, - "ListBootstrapActions": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "BootstrapActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "ScriptPath": {}, - "Args": { - "shape": "S1f" - } - } - } - }, - "Marker": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "CreatedAfter": { - "type": "timestamp" - }, - "CreatedBefore": { - "type": "timestamp" - }, - "ClusterStates": { - "type": "list", - "member": {} - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Clusters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "shape": "S19" - }, - "NormalizedInstanceHours": { - "type": "integer" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstanceGroups": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Market": {}, - "InstanceGroupType": {}, - "BidPrice": {}, - "InstanceType": {}, - "RequestedInstanceCount": { - "type": "integer" - }, - "RunningInstanceCount": { - "type": "integer" - }, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "Configurations": { - "shape": "S9" - }, - "EbsBlockDevices": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeSpecification": { - "shape": "Sg" - }, - "Device": {} - } - } - }, - "EbsOptimized": { - "type": "boolean" - }, - "ShrinkPolicy": { - "shape": "S33" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstances": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "InstanceGroupId": {}, - "InstanceGroupTypes": { - "type": "list", - "member": {} - }, - "InstanceStates": { - "type": "list", - "member": {} - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Ec2InstanceId": {}, - "PublicDnsName": {}, - "PublicIpAddress": {}, - "PrivateDnsName": {}, - "PrivateIpAddress": {}, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "InstanceGroupId": {}, - "EbsVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Device": {}, - "VolumeId": {} - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "ListSecurityConfigurations": { - "input": { - "type": "structure", - "members": { - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "SecurityConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "Marker": {} - } - } - }, - "ListSteps": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "StepStates": { - "type": "list", - "member": {} - }, - "StepIds": { - "shape": "Ss" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Steps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Config": { - "shape": "S2a" - }, - "ActionOnFailure": {}, - "Status": { - "shape": "S2b" - } - } - } - }, - "Marker": {} - } - } - }, - "ModifyInstanceGroups": { - "input": { - "type": "structure", - "members": { - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceGroupId" - ], - "members": { - "InstanceGroupId": {}, - "InstanceCount": { - "type": "integer" - }, - "EC2InstanceIdsToTerminate": { - "type": "list", - "member": {} - }, - "ShrinkPolicy": { - "shape": "S33" - } - } - } - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "shape": "S1f" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RunJobFlow": { - "input": { - "type": "structure", - "required": [ - "Name", - "Instances" - ], - "members": { - "Name": {}, - "LogUri": {}, - "AdditionalInfo": {}, - "AmiVersion": {}, - "ReleaseLabel": {}, - "Instances": { - "type": "structure", - "members": { - "MasterInstanceType": {}, - "SlaveInstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "InstanceGroups": { - "shape": "S2" - }, - "Ec2KeyName": {}, - "Placement": { - "shape": "S1u" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "HadoopVersion": {}, - "Ec2SubnetId": {}, - "EmrManagedMasterSecurityGroup": {}, - "EmrManagedSlaveSecurityGroup": {}, - "ServiceAccessSecurityGroup": {}, - "AdditionalMasterSecurityGroups": { - "shape": "S41" - }, - "AdditionalSlaveSecurityGroups": { - "shape": "S41" - } - } - }, - "Steps": { - "shape": "Sl" - }, - "BootstrapActions": { - "type": "list", - "member": { - "shape": "S21" - } - }, - "SupportedProducts": { - "shape": "S23" - }, - "NewSupportedProducts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Args": { - "shape": "Ss" - } - } - } - }, - "Applications": { - "shape": "S1h" - }, - "Configurations": { - "shape": "S9" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "JobFlowRole": {}, - "ServiceRole": {}, - "Tags": { - "shape": "Sx" - }, - "SecurityConfiguration": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobFlowId": {} - } - } - }, - "SetTerminationProtection": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds", - "TerminationProtected" - ], - "members": { - "JobFlowIds": { - "shape": "Ss" - }, - "TerminationProtected": { - "type": "boolean" - } - } - } - }, - "SetVisibleToAllUsers": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds", - "VisibleToAllUsers" - ], - "members": { - "JobFlowIds": { - "shape": "Ss" - }, - "VisibleToAllUsers": { - "type": "boolean" - } - } - } - }, - "TerminateJobFlows": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds" - ], - "members": { - "JobFlowIds": { - "shape": "Ss" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceRole", - "InstanceType", - "InstanceCount" - ], - "members": { - "Name": {}, - "Market": {}, - "InstanceRole": {}, - "BidPrice": {}, - "InstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "Configurations": { - "shape": "S9" - }, - "EbsConfiguration": { - "type": "structure", - "members": { - "EbsBlockDeviceConfigs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "VolumeSpecification" - ], - "members": { - "VolumeSpecification": { - "shape": "Sg" - }, - "VolumesPerInstance": { - "type": "integer" - } - } - } - }, - "EbsOptimized": { - "type": "boolean" - } - } - } - } - } - }, - "S9": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Classification": {}, - "Configurations": { - "shape": "S9" - }, - "Properties": { - "shape": "Sc" - } - } - } - }, - "Sc": { - "type": "map", - "key": {}, - "value": {} - }, - "Sg": { - "type": "structure", - "required": [ - "VolumeType", - "SizeInGB" - ], - "members": { - "VolumeType": {}, - "Iops": { - "type": "integer" - }, - "SizeInGB": { - "type": "integer" - } - } - }, - "Sl": { - "type": "list", - "member": { - "shape": "Sm" - } - }, - "Sm": { - "type": "structure", - "required": [ - "Name", - "HadoopJarStep" - ], - "members": { - "Name": {}, - "ActionOnFailure": {}, - "HadoopJarStep": { - "type": "structure", - "required": [ - "Jar" - ], - "members": { - "Properties": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Jar": {}, - "MainClass": {}, - "Args": { - "shape": "Ss" - } - } - } - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "Sx": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S19": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "S1f": { - "type": "list", - "member": {} - }, - "S1h": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Version": {}, - "Args": { - "shape": "S1f" - }, - "AdditionalInfo": { - "shape": "Sc" - } - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "AvailabilityZone" - ], - "members": { - "AvailabilityZone": {} - } - }, - "S21": { - "type": "structure", - "required": [ - "Name", - "ScriptBootstrapAction" - ], - "members": { - "Name": {}, - "ScriptBootstrapAction": { - "type": "structure", - "required": [ - "Path" - ], - "members": { - "Path": {}, - "Args": { - "shape": "Ss" - } - } - } - } - }, - "S23": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "structure", - "members": { - "Jar": {}, - "Properties": { - "shape": "Sc" - }, - "MainClass": {}, - "Args": { - "shape": "S1f" - } - } - }, - "S2b": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "FailureDetails": { - "type": "structure", - "members": { - "Reason": {}, - "Message": {}, - "LogFile": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "S33": { - "type": "structure", - "members": { - "DecommissionTimeout": { - "type": "integer" - }, - "InstanceResizePolicy": { - "type": "structure", - "members": { - "InstancesToTerminate": { - "shape": "S35" - }, - "InstancesToProtect": { - "shape": "S35" - }, - "InstanceTerminationTimeout": { - "type": "integer" - } - } - } - } - }, - "S35": { - "type": "list", - "member": {} - }, - "S41": { - "type": "list", - "member": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json deleted file mode 100644 index 87f282d..0000000 --- a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "DescribeJobFlows": { - "result_key": "JobFlows" - }, - "ListBootstrapActions": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "BootstrapActions" - }, - "ListClusters": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Clusters" - }, - "ListInstanceGroups": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "InstanceGroups" - }, - "ListInstances": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Instances" - }, - "ListSteps": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Steps" - } - } -} diff --git a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json b/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json deleted file mode 100644 index 829f1b1..0000000 --- a/node_modules/aws-sdk/apis/elasticmapreduce-2009-03-31.waiters2.json +++ /dev/null @@ -1,67 +0,0 @@ -{ - "version": 2, - "waiters": { - "ClusterRunning": { - "delay": 30, - "operation": "DescribeCluster", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "RUNNING" - }, - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "WAITING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED_WITH_ERRORS" - } - ] - }, - "StepComplete": { - "delay": 30, - "operation": "DescribeStep", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "COMPLETED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "FAILED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "CANCELLED" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json deleted file mode 100644 index 4f5454a..0000000 --- a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.min.json +++ /dev/null @@ -1,1019 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-09-25", - "endpointPrefix": "elastictranscoder", - "protocol": "rest-json", - "serviceFullName": "Amazon Elastic Transcoder", - "signatureVersion": "v4" - }, - "operations": { - "CancelJob": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/jobs/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateJob": { - "http": { - "requestUri": "/2012-09-25/jobs", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "PipelineId", - "Input" - ], - "members": { - "PipelineId": {}, - "Input": { - "shape": "S5" - }, - "Output": { - "shape": "Sk" - }, - "Outputs": { - "type": "list", - "member": { - "shape": "Sk" - } - }, - "OutputKeyPrefix": {}, - "Playlists": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Format": {}, - "OutputKeys": { - "shape": "S1j" - }, - "HlsContentProtection": { - "shape": "S1k" - }, - "PlayReadyDrm": { - "shape": "S1o" - } - } - } - }, - "UserMetadata": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S1w" - } - } - } - }, - "CreatePipeline": { - "http": { - "requestUri": "/2012-09-25/pipelines", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "InputBucket", - "Role" - ], - "members": { - "Name": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S28" - }, - "ContentConfig": { - "shape": "S2a" - }, - "ThumbnailConfig": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - }, - "Warnings": { - "shape": "S2l" - } - } - } - }, - "CreatePreset": { - "http": { - "requestUri": "/2012-09-25/presets", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "Container" - ], - "members": { - "Name": {}, - "Description": {}, - "Container": {}, - "Video": { - "shape": "S2p" - }, - "Audio": { - "shape": "S35" - }, - "Thumbnails": { - "shape": "S3g" - } - } - }, - "output": { - "type": "structure", - "members": { - "Preset": { - "shape": "S3k" - }, - "Warning": {} - } - } - }, - "DeletePipeline": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/pipelines/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePreset": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/presets/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListJobsByPipeline": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}" - }, - "input": { - "type": "structure", - "required": [ - "PipelineId" - ], - "members": { - "PipelineId": { - "location": "uri", - "locationName": "PipelineId" - }, - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "shape": "S3t" - }, - "NextPageToken": {} - } - } - }, - "ListJobsByStatus": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobsByStatus/{Status}" - }, - "input": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": { - "location": "uri", - "locationName": "Status" - }, - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "shape": "S3t" - }, - "NextPageToken": {} - } - } - }, - "ListPipelines": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/pipelines" - }, - "input": { - "type": "structure", - "members": { - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipelines": { - "type": "list", - "member": { - "shape": "S2j" - } - }, - "NextPageToken": {} - } - } - }, - "ListPresets": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/presets" - }, - "input": { - "type": "structure", - "members": { - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Presets": { - "type": "list", - "member": { - "shape": "S3k" - } - }, - "NextPageToken": {} - } - } - }, - "ReadJob": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobs/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S1w" - } - } - } - }, - "ReadPipeline": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/pipelines/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - }, - "Warnings": { - "shape": "S2l" - } - } - } - }, - "ReadPreset": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/presets/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Preset": { - "shape": "S3k" - } - } - } - }, - "TestRole": { - "http": { - "requestUri": "/2012-09-25/roleTests", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Role", - "InputBucket", - "OutputBucket", - "Topics" - ], - "members": { - "Role": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Topics": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "Success": {}, - "Messages": { - "type": "list", - "member": {} - } - } - } - }, - "UpdatePipeline": { - "http": { - "method": "PUT", - "requestUri": "/2012-09-25/pipelines/{Id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Name": {}, - "InputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S28" - }, - "ContentConfig": { - "shape": "S2a" - }, - "ThumbnailConfig": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - }, - "Warnings": { - "shape": "S2l" - } - } - } - }, - "UpdatePipelineNotifications": { - "http": { - "requestUri": "/2012-09-25/pipelines/{Id}/notifications" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Notifications" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Notifications": { - "shape": "S28" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - } - } - } - }, - "UpdatePipelineStatus": { - "http": { - "requestUri": "/2012-09-25/pipelines/{Id}/status" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Status" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Status": {} - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Key": {}, - "FrameRate": {}, - "Resolution": {}, - "AspectRatio": {}, - "Interlaced": {}, - "Container": {}, - "Encryption": { - "shape": "Sc" - }, - "DetectedProperties": { - "type": "structure", - "members": { - "Width": { - "type": "integer" - }, - "Height": { - "type": "integer" - }, - "FrameRate": {}, - "FileSize": { - "type": "long" - }, - "DurationMillis": { - "type": "long" - } - } - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Mode": {}, - "Key": {}, - "KeyMd5": {}, - "InitializationVector": {} - } - }, - "Sk": { - "type": "structure", - "members": { - "Key": {}, - "ThumbnailPattern": {}, - "ThumbnailEncryption": { - "shape": "Sc" - }, - "Rotate": {}, - "PresetId": {}, - "SegmentDuration": {}, - "Watermarks": { - "shape": "So" - }, - "AlbumArt": { - "shape": "Ss" - }, - "Composition": { - "shape": "S10" - }, - "Captions": { - "shape": "S14" - }, - "Encryption": { - "shape": "Sc" - } - } - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PresetWatermarkId": {}, - "InputKey": {}, - "Encryption": { - "shape": "Sc" - } - } - } - }, - "Ss": { - "type": "structure", - "members": { - "MergePolicy": {}, - "Artwork": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InputKey": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "PaddingPolicy": {}, - "AlbumArtFormat": {}, - "Encryption": { - "shape": "Sc" - } - } - } - } - } - }, - "S10": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TimeSpan": { - "type": "structure", - "members": { - "StartTime": {}, - "Duration": {} - } - } - } - } - }, - "S14": { - "type": "structure", - "members": { - "MergePolicy": {}, - "CaptionSources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Language": {}, - "TimeOffset": {}, - "Label": {}, - "Encryption": { - "shape": "Sc" - } - } - } - }, - "CaptionFormats": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Format": {}, - "Pattern": {}, - "Encryption": { - "shape": "Sc" - } - } - } - } - } - }, - "S1j": { - "type": "list", - "member": {} - }, - "S1k": { - "type": "structure", - "members": { - "Method": {}, - "Key": {}, - "KeyMd5": {}, - "InitializationVector": {}, - "LicenseAcquisitionUrl": {}, - "KeyStoragePolicy": {} - } - }, - "S1o": { - "type": "structure", - "members": { - "Format": {}, - "Key": {}, - "KeyMd5": {}, - "KeyId": {}, - "InitializationVector": {}, - "LicenseAcquisitionUrl": {} - } - }, - "S1t": { - "type": "map", - "key": {}, - "value": {} - }, - "S1w": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "PipelineId": {}, - "Input": { - "shape": "S5" - }, - "Output": { - "shape": "S1x" - }, - "Outputs": { - "type": "list", - "member": { - "shape": "S1x" - } - }, - "OutputKeyPrefix": {}, - "Playlists": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Format": {}, - "OutputKeys": { - "shape": "S1j" - }, - "HlsContentProtection": { - "shape": "S1k" - }, - "PlayReadyDrm": { - "shape": "S1o" - }, - "Status": {}, - "StatusDetail": {} - } - } - }, - "Status": {}, - "UserMetadata": { - "shape": "S1t" - }, - "Timing": { - "type": "structure", - "members": { - "SubmitTimeMillis": { - "type": "long" - }, - "StartTimeMillis": { - "type": "long" - }, - "FinishTimeMillis": { - "type": "long" - } - } - } - } - }, - "S1x": { - "type": "structure", - "members": { - "Id": {}, - "Key": {}, - "ThumbnailPattern": {}, - "ThumbnailEncryption": { - "shape": "Sc" - }, - "Rotate": {}, - "PresetId": {}, - "SegmentDuration": {}, - "Status": {}, - "StatusDetail": {}, - "Duration": { - "type": "long" - }, - "Width": { - "type": "integer" - }, - "Height": { - "type": "integer" - }, - "FrameRate": {}, - "FileSize": { - "type": "long" - }, - "DurationMillis": { - "type": "long" - }, - "Watermarks": { - "shape": "So" - }, - "AlbumArt": { - "shape": "Ss" - }, - "Composition": { - "shape": "S10" - }, - "Captions": { - "shape": "S14" - }, - "Encryption": { - "shape": "Sc" - }, - "AppliedColorSpaceConversion": {} - } - }, - "S28": { - "type": "structure", - "members": { - "Progressing": {}, - "Completed": {}, - "Warning": {}, - "Error": {} - } - }, - "S2a": { - "type": "structure", - "members": { - "Bucket": {}, - "StorageClass": {}, - "Permissions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GranteeType": {}, - "Grantee": {}, - "Access": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "S2j": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Status": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S28" - }, - "ContentConfig": { - "shape": "S2a" - }, - "ThumbnailConfig": { - "shape": "S2a" - } - } - }, - "S2l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - } - }, - "S2p": { - "type": "structure", - "members": { - "Codec": {}, - "CodecOptions": { - "type": "map", - "key": {}, - "value": {} - }, - "KeyframesMaxDist": {}, - "FixedGOP": {}, - "BitRate": {}, - "FrameRate": {}, - "MaxFrameRate": {}, - "Resolution": {}, - "AspectRatio": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "DisplayAspectRatio": {}, - "SizingPolicy": {}, - "PaddingPolicy": {}, - "Watermarks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "HorizontalAlign": {}, - "HorizontalOffset": {}, - "VerticalAlign": {}, - "VerticalOffset": {}, - "Opacity": {}, - "Target": {} - } - } - } - } - }, - "S35": { - "type": "structure", - "members": { - "Codec": {}, - "SampleRate": {}, - "BitRate": {}, - "Channels": {}, - "AudioPackingMode": {}, - "CodecOptions": { - "type": "structure", - "members": { - "Profile": {}, - "BitDepth": {}, - "BitOrder": {}, - "Signed": {} - } - } - } - }, - "S3g": { - "type": "structure", - "members": { - "Format": {}, - "Interval": {}, - "Resolution": {}, - "AspectRatio": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "PaddingPolicy": {} - } - }, - "S3k": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Description": {}, - "Container": {}, - "Audio": { - "shape": "S35" - }, - "Video": { - "shape": "S2p" - }, - "Thumbnails": { - "shape": "S3g" - }, - "Type": {} - } - }, - "S3t": { - "type": "list", - "member": { - "shape": "S1w" - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json deleted file mode 100644 index 5a145d3..0000000 --- a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.paginators.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "pagination": { - "ListJobsByPipeline": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListJobsByStatus": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListPipelines": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Pipelines" - }, - "ListPresets": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Presets" - } - } -} diff --git a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json b/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json deleted file mode 100644 index 55c3628..0000000 --- a/node_modules/aws-sdk/apis/elastictranscoder-2012-09-25.waiters2.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "version": 2, - "waiters": { - "JobComplete": { - "delay": 30, - "operation": "ReadJob", - "maxAttempts": 120, - "acceptors": [ - { - "expected": "Complete", - "matcher": "path", - "state": "success", - "argument": "Job.Status" - }, - { - "expected": "Canceled", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - }, - { - "expected": "Error", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.examples.json b/node_modules/aws-sdk/apis/email-2010-12-01.examples.json deleted file mode 100644 index 8855529..0000000 --- a/node_modules/aws-sdk/apis/email-2010-12-01.examples.json +++ /dev/null @@ -1,953 +0,0 @@ -{ - "version": "1.0", - "examples": { - "CloneReceiptRuleSet": [ - { - "input": { - "OriginalRuleSetName": "RuleSetToClone", - "RuleSetName": "RuleSetToCreate" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a receipt rule set by cloning an existing one:", - "id": "clonereceiptruleset-1469055039770", - "title": "CloneReceiptRuleSet" - } - ], - "CreateReceiptFilter": [ - { - "input": { - "Filter": { - "IpFilter": { - "Cidr": "1.2.3.4/24", - "Policy": "Allow" - }, - "Name": "MyFilter" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a new IP address filter:", - "id": "createreceiptfilter-1469122681253", - "title": "CreateReceiptFilter" - } - ], - "CreateReceiptRule": [ - { - "input": { - "After": "", - "Rule": { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - }, - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates a new receipt rule:", - "id": "createreceiptrule-1469122946515", - "title": "CreateReceiptRule" - } - ], - "CreateReceiptRuleSet": [ - { - "input": { - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example creates an empty receipt rule set:", - "id": "createreceiptruleset-1469058761646", - "title": "CreateReceiptRuleSet" - } - ], - "DeleteIdentity": [ - { - "input": { - "Identity": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an identity from the list of identities that have been submitted for verification with Amazon SES:", - "id": "deleteidentity-1469047858906", - "title": "DeleteIdentity" - } - ], - "DeleteIdentityPolicy": [ - { - "input": { - "Identity": "user@example.com", - "PolicyName": "MyPolicy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a sending authorization policy for an identity:", - "id": "deleteidentitypolicy-1469055282499", - "title": "DeleteIdentityPolicy" - } - ], - "DeleteReceiptFilter": [ - { - "input": { - "FilterName": "MyFilter" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an IP address filter:", - "id": "deletereceiptfilter-1469055456835", - "title": "DeleteReceiptFilter" - } - ], - "DeleteReceiptRule": [ - { - "input": { - "RuleName": "MyRule", - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a receipt rule:", - "id": "deletereceiptrule-1469055563599", - "title": "DeleteReceiptRule" - } - ], - "DeleteReceiptRuleSet": [ - { - "input": { - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes a receipt rule set:", - "id": "deletereceiptruleset-1469055713690", - "title": "DeleteReceiptRuleSet" - } - ], - "DeleteVerifiedEmailAddress": [ - { - "input": { - "EmailAddress": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example deletes an email address from the list of identities that have been submitted for verification with Amazon SES:", - "id": "deleteverifiedemailaddress-1469051086444", - "title": "DeleteVerifiedEmailAddress" - } - ], - "DescribeActiveReceiptRuleSet": [ - { - "input": { - }, - "output": { - "Metadata": { - "CreatedTimestamp": "2016-07-15T16:25:59.607Z", - "Name": "default-rule-set" - }, - "Rules": [ - { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the metadata and receipt rules for the receipt rule set that is currently active:", - "id": "describeactivereceiptruleset-1469121611502", - "title": "DescribeActiveReceiptRuleSet" - } - ], - "DescribeReceiptRule": [ - { - "input": { - "RuleName": "MyRule", - "RuleSetName": "MyRuleSet" - }, - "output": { - "Rule": { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the details of a receipt rule:", - "id": "describereceiptrule-1469055813118", - "title": "DescribeReceiptRule" - } - ], - "DescribeReceiptRuleSet": [ - { - "input": { - "RuleSetName": "MyRuleSet" - }, - "output": { - "Metadata": { - "CreatedTimestamp": "2016-07-15T16:25:59.607Z", - "Name": "MyRuleSet" - }, - "Rules": [ - { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the metadata and receipt rules of a receipt rule set:", - "id": "describereceiptruleset-1469121240385", - "title": "DescribeReceiptRuleSet" - } - ], - "GetIdentityDkimAttributes": [ - { - "input": { - "Identities": [ - "example.com", - "user@example.com" - ] - }, - "output": { - "DkimAttributes": { - "example.com": { - "DkimEnabled": true, - "DkimTokens": [ - "EXAMPLEjcs5xoyqytjsotsijas7236gr", - "EXAMPLEjr76cvoc6mysspnioorxsn6ep", - "EXAMPLEkbmkqkhlm2lyz77ppkulerm4k" - ], - "DkimVerificationStatus": "Success" - }, - "user@example.com": { - "DkimEnabled": false, - "DkimVerificationStatus": "NotStarted" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example retrieves the Amazon SES Easy DKIM attributes for a list of identities:", - "id": "getidentitydkimattributes-1469050695628", - "title": "GetIdentityDkimAttributes" - } - ], - "GetIdentityMailFromDomainAttributes": [ - { - "input": { - "Identities": [ - "example.com" - ] - }, - "output": { - "MailFromDomainAttributes": { - "example.com": { - "BehaviorOnMXFailure": "UseDefaultValue", - "MailFromDomain": "bounces.example.com", - "MailFromDomainStatus": "Success" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the custom MAIL FROM attributes for an identity:", - "id": "getidentitymailfromdomainattributes-1469123114860", - "title": "GetIdentityMailFromDomainAttributes" - } - ], - "GetIdentityNotificationAttributes": [ - { - "input": { - "Identities": [ - "example.com" - ] - }, - "output": { - "NotificationAttributes": { - "example.com": { - "BounceTopic": "arn:aws:sns:us-east-1:EXAMPLE65304:ExampleTopic", - "ForwardingEnabled": true, - "HeadersInBounceNotificationsEnabled": false, - "HeadersInComplaintNotificationsEnabled": false, - "HeadersInDeliveryNotificationsEnabled": false - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the notification attributes for an identity:", - "id": "getidentitynotificationattributes-1469123466947", - "title": "GetIdentityNotificationAttributes" - } - ], - "GetIdentityPolicies": [ - { - "input": { - "Identity": "example.com", - "PolicyNames": [ - "MyPolicy" - ] - }, - "output": { - "Policies": { - "MyPolicy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"stmt1469123904194\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":[\"ses:SendEmail\",\"ses:SendRawEmail\"],\"Resource\":\"arn:aws:ses:us-east-1:EXAMPLE65304:identity/example.com\"}]}" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a sending authorization policy for an identity:", - "id": "getidentitypolicies-1469123949351", - "title": "GetIdentityPolicies" - } - ], - "GetIdentityVerificationAttributes": [ - { - "input": { - "Identities": [ - "example.com" - ] - }, - "output": { - "VerificationAttributes": { - "example.com": { - "VerificationStatus": "Success", - "VerificationToken": "EXAMPLE3VYb9EDI2nTOQRi/Tf6MI/6bD6THIGiP1MVY=" - } - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the verification status and the verification token for a domain identity:", - "id": "getidentityverificationattributes-1469124205897", - "title": "GetIdentityVerificationAttributes" - } - ], - "GetSendQuota": [ - { - "output": { - "Max24HourSend": 200, - "MaxSendRate": 1, - "SentLast24Hours": 1 - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns the Amazon SES sending limits for an AWS account:", - "id": "getsendquota-1469047324508", - "title": "GetSendQuota" - } - ], - "GetSendStatistics": [ - { - "output": { - "SendDataPoints": [ - { - "Bounces": 0, - "Complaints": 0, - "DeliveryAttempts": 5, - "Rejects": 0, - "Timestamp": "2016-07-13T22:43:00Z" - }, - { - "Bounces": 0, - "Complaints": 0, - "DeliveryAttempts": 3, - "Rejects": 0, - "Timestamp": "2016-07-13T23:13:00Z" - }, - { - "Bounces": 0, - "Complaints": 0, - "DeliveryAttempts": 1, - "Rejects": 0, - "Timestamp": "2016-07-13T21:13:00Z" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns Amazon SES sending statistics:", - "id": "getsendstatistics-1469047741329", - "title": "GetSendStatistics" - } - ], - "ListIdentities": [ - { - "input": { - "IdentityType": "EmailAddress", - "MaxItems": 123, - "NextToken": "" - }, - "output": { - "Identities": [ - "user@example.com" - ], - "NextToken": "" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists the email address identities that have been submitted for verification with Amazon SES:", - "id": "listidentities-1469048638493", - "title": "ListIdentities" - } - ], - "ListIdentityPolicies": [ - { - "input": { - "Identity": "example.com" - }, - "output": { - "PolicyNames": [ - "MyPolicy" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example returns a list of sending authorization policies that are attached to an identity:", - "id": "listidentitypolicies-1469124417674", - "title": "ListIdentityPolicies" - } - ], - "ListReceiptFilters": [ - { - "output": { - "Filters": [ - { - "IpFilter": { - "Cidr": "1.2.3.4/24", - "Policy": "Block" - }, - "Name": "MyFilter" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists the IP address filters that are associated with an AWS account:", - "id": "listreceiptfilters-1469120786789", - "title": "ListReceiptFilters" - } - ], - "ListReceiptRuleSets": [ - { - "input": { - "NextToken": "" - }, - "output": { - "NextToken": "", - "RuleSets": [ - { - "CreatedTimestamp": "2016-07-15T16:25:59.607Z", - "Name": "MyRuleSet" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists the receipt rule sets that exist under an AWS account:", - "id": "listreceiptrulesets-1469121037235", - "title": "ListReceiptRuleSets" - } - ], - "ListVerifiedEmailAddresses": [ - { - "output": { - "VerifiedEmailAddresses": [ - "user1@example.com", - "user2@example.com" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example lists all email addresses that have been submitted for verification with Amazon SES:", - "id": "listverifiedemailaddresses-1469051402570", - "title": "ListVerifiedEmailAddresses" - } - ], - "PutIdentityPolicy": [ - { - "input": { - "Identity": "example.com", - "Policy": "{\"Version\":\"2008-10-17\",\"Statement\":[{\"Sid\":\"stmt1469123904194\",\"Effect\":\"Allow\",\"Principal\":{\"AWS\":\"arn:aws:iam::123456789012:root\"},\"Action\":[\"ses:SendEmail\",\"ses:SendRawEmail\"],\"Resource\":\"arn:aws:ses:us-east-1:EXAMPLE65304:identity/example.com\"}]}", - "PolicyName": "MyPolicy" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example adds a sending authorization policy to an identity:", - "id": "putidentitypolicy-1469124560016", - "title": "PutIdentityPolicy" - } - ], - "ReorderReceiptRuleSet": [ - { - "input": { - "RuleNames": [ - "MyRule", - "MyOtherRule" - ], - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example reorders the receipt rules within a receipt rule set:", - "id": "reorderreceiptruleset-1469058156806", - "title": "ReorderReceiptRuleSet" - } - ], - "SendEmail": [ - { - "input": { - "Destination": { - "BccAddresses": [ - - ], - "CcAddresses": [ - "recipient3@example.com" - ], - "ToAddresses": [ - "recipient1@example.com", - "recipient2@example.com" - ] - }, - "Message": { - "Body": { - "Html": { - "Charset": "UTF-8", - "Data": "This message body contains HTML formatting. It can, for example, contain links like this one: Amazon SES Developer Guide." - }, - "Text": { - "Charset": "UTF-8", - "Data": "This is the message body in text format." - } - }, - "Subject": { - "Charset": "UTF-8", - "Data": "Test email" - } - }, - "ReplyToAddresses": [ - - ], - "ReturnPath": "", - "ReturnPathArn": "", - "Source": "sender@example.com", - "SourceArn": "" - }, - "output": { - "MessageId": "EXAMPLE78603177f-7a5433e7-8edb-42ae-af10-f0181f34d6ee-000000" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sends a formatted email:", - "id": "sendemail-1469049656296", - "title": "SendEmail" - } - ], - "SendRawEmail": [ - { - "input": { - "Destinations": [ - - ], - "FromArn": "", - "RawMessage": { - "Data": "From: sender@example.com\\nTo: recipient@example.com\\nSubject: Test email (contains an attachment)\\nMIME-Version: 1.0\\nContent-type: Multipart/Mixed; boundary=\"NextPart\"\\n\\n--NextPart\\nContent-Type: text/plain\\n\\nThis is the message body.\\n\\n--NextPart\\nContent-Type: text/plain;\\nContent-Disposition: attachment; filename=\"attachment.txt\"\\n\\nThis is the text in the attachment.\\n\\n--NextPart--" - }, - "ReturnPathArn": "", - "Source": "", - "SourceArn": "" - }, - "output": { - "MessageId": "EXAMPLEf3f73d99b-c63fb06f-d263-41f8-a0fb-d0dc67d56c07-000000" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sends an email with an attachment:", - "id": "sendrawemail-1469118548649", - "title": "SendRawEmail" - } - ], - "SetActiveReceiptRuleSet": [ - { - "input": { - "RuleSetName": "RuleSetToActivate" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets the active receipt rule set:", - "id": "setactivereceiptruleset-1469058391329", - "title": "SetActiveReceiptRuleSet" - } - ], - "SetIdentityDkimEnabled": [ - { - "input": { - "DkimEnabled": true, - "Identity": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to Easy DKIM-sign the email sent from an identity:", - "id": "setidentitydkimenabled-1469057485202", - "title": "SetIdentityDkimEnabled" - } - ], - "SetIdentityFeedbackForwardingEnabled": [ - { - "input": { - "ForwardingEnabled": true, - "Identity": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to forward an identity's bounces and complaints via email:", - "id": "setidentityfeedbackforwardingenabled-1469056811329", - "title": "SetIdentityFeedbackForwardingEnabled" - } - ], - "SetIdentityHeadersInNotificationsEnabled": [ - { - "input": { - "Enabled": true, - "Identity": "user@example.com", - "NotificationType": "Bounce" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to include the original email headers in the Amazon SNS bounce notifications for an identity:", - "id": "setidentityheadersinnotificationsenabled-1469057295001", - "title": "SetIdentityHeadersInNotificationsEnabled" - } - ], - "SetIdentityMailFromDomain": [ - { - "input": { - "BehaviorOnMXFailure": "UseDefaultValue", - "Identity": "user@example.com", - "MailFromDomain": "bounces.example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example configures Amazon SES to use a custom MAIL FROM domain for an identity:", - "id": "setidentitymailfromdomain-1469057693908", - "title": "SetIdentityMailFromDomain" - } - ], - "SetIdentityNotificationTopic": [ - { - "input": { - "Identity": "user@example.com", - "NotificationType": "Bounce", - "SnsTopic": "arn:aws:sns:us-west-2:111122223333:MyTopic" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets the Amazon SNS topic to which Amazon SES will publish bounce, complaint, and/or delivery notifications for emails sent with the specified identity as the Source:", - "id": "setidentitynotificationtopic-1469057854966", - "title": "SetIdentityNotificationTopic" - } - ], - "SetReceiptRulePosition": [ - { - "input": { - "After": "PutRuleAfterThisRule", - "RuleName": "RuleToReposition", - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example sets the position of a receipt rule in a receipt rule set:", - "id": "setreceiptruleposition-1469058530550", - "title": "SetReceiptRulePosition" - } - ], - "UpdateReceiptRule": [ - { - "input": { - "Rule": { - "Actions": [ - { - "S3Action": { - "BucketName": "MyBucket", - "ObjectKeyPrefix": "email" - } - } - ], - "Enabled": true, - "Name": "MyRule", - "ScanEnabled": true, - "TlsPolicy": "Optional" - }, - "RuleSetName": "MyRuleSet" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example updates a receipt rule to use an Amazon S3 action:", - "id": "updatereceiptrule-1469051756940", - "title": "UpdateReceiptRule" - } - ], - "VerifyDomainDkim": [ - { - "input": { - "Domain": "example.com" - }, - "output": { - "DkimTokens": [ - "EXAMPLEq76owjnks3lnluwg65scbemvw", - "EXAMPLEi3dnsj67hstzaj673klariwx2", - "EXAMPLEwfbtcukvimehexktmdtaz6naj" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example generates DKIM tokens for a domain that has been verified with Amazon SES:", - "id": "verifydomaindkim-1469049503083", - "title": "VerifyDomainDkim" - } - ], - "VerifyDomainIdentity": [ - { - "input": { - "Domain": "example.com" - }, - "output": { - "VerificationToken": "eoEmxw+YaYhb3h3iVJHuXMJXqeu1q1/wwmvjuEXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example starts the domain verification process with Amazon SES:", - "id": "verifydomainidentity-1469049165936", - "title": "VerifyDomainIdentity" - } - ], - "VerifyEmailAddress": [ - { - "input": { - "EmailAddress": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example starts the email address verification process with Amazon SES:", - "id": "verifyemailaddress-1469048849187", - "title": "VerifyEmailAddress" - } - ], - "VerifyEmailIdentity": [ - { - "input": { - "EmailAddress": "user@example.com" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following example starts the email address verification process with Amazon SES:", - "id": "verifyemailidentity-1469049068623", - "title": "VerifyEmailIdentity" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.min.json b/node_modules/aws-sdk/apis/email-2010-12-01.min.json deleted file mode 100644 index 75a79ec..0000000 --- a/node_modules/aws-sdk/apis/email-2010-12-01.min.json +++ /dev/null @@ -1,1214 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-12-01", - "endpointPrefix": "email", - "protocol": "query", - "serviceAbbreviation": "Amazon SES", - "serviceFullName": "Amazon Simple Email Service", - "signatureVersion": "v4", - "signingName": "ses", - "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/" - }, - "operations": { - "CloneReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "OriginalRuleSetName" - ], - "members": { - "RuleSetName": {}, - "OriginalRuleSetName": {} - } - }, - "output": { - "resultWrapper": "CloneReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptFilter": { - "input": { - "type": "structure", - "required": [ - "Filter" - ], - "members": { - "Filter": { - "shape": "S5" - } - } - }, - "output": { - "resultWrapper": "CreateReceiptFilterResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "Rule" - ], - "members": { - "RuleSetName": {}, - "After": {}, - "Rule": { - "shape": "Sd" - } - } - }, - "output": { - "resultWrapper": "CreateReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "CreateReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteIdentity": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {} - } - }, - "output": { - "resultWrapper": "DeleteIdentityResult", - "type": "structure", - "members": {} - } - }, - "DeleteIdentityPolicy": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyName" - ], - "members": { - "Identity": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "DeleteIdentityPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptFilter": { - "input": { - "type": "structure", - "required": [ - "FilterName" - ], - "members": { - "FilterName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptFilterResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteVerifiedEmailAddress": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - } - }, - "DescribeActiveReceiptRuleSet": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "DescribeActiveReceiptRuleSetResult", - "type": "structure", - "members": { - "Metadata": { - "shape": "S1l" - }, - "Rules": { - "shape": "S1n" - } - } - } - }, - "DescribeReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {} - } - }, - "output": { - "resultWrapper": "DescribeReceiptRuleResult", - "type": "structure", - "members": { - "Rule": { - "shape": "Sd" - } - } - } - }, - "DescribeReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "DescribeReceiptRuleSetResult", - "type": "structure", - "members": { - "Metadata": { - "shape": "S1l" - }, - "Rules": { - "shape": "S1n" - } - } - } - }, - "GetIdentityDkimAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityDkimAttributesResult", - "type": "structure", - "required": [ - "DkimAttributes" - ], - "members": { - "DkimAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "DkimEnabled", - "DkimVerificationStatus" - ], - "members": { - "DkimEnabled": { - "type": "boolean" - }, - "DkimVerificationStatus": {}, - "DkimTokens": { - "shape": "S1y" - } - } - } - } - } - } - }, - "GetIdentityMailFromDomainAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityMailFromDomainAttributesResult", - "type": "structure", - "required": [ - "MailFromDomainAttributes" - ], - "members": { - "MailFromDomainAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "MailFromDomain", - "MailFromDomainStatus", - "BehaviorOnMXFailure" - ], - "members": { - "MailFromDomain": {}, - "MailFromDomainStatus": {}, - "BehaviorOnMXFailure": {} - } - } - } - } - } - }, - "GetIdentityNotificationAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityNotificationAttributesResult", - "type": "structure", - "required": [ - "NotificationAttributes" - ], - "members": { - "NotificationAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "BounceTopic", - "ComplaintTopic", - "DeliveryTopic", - "ForwardingEnabled" - ], - "members": { - "BounceTopic": {}, - "ComplaintTopic": {}, - "DeliveryTopic": {}, - "ForwardingEnabled": { - "type": "boolean" - }, - "HeadersInBounceNotificationsEnabled": { - "type": "boolean" - }, - "HeadersInComplaintNotificationsEnabled": { - "type": "boolean" - }, - "HeadersInDeliveryNotificationsEnabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "GetIdentityPolicies": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyNames" - ], - "members": { - "Identity": {}, - "PolicyNames": { - "shape": "S2d" - } - } - }, - "output": { - "resultWrapper": "GetIdentityPoliciesResult", - "type": "structure", - "required": [ - "Policies" - ], - "members": { - "Policies": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "GetIdentityVerificationAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityVerificationAttributesResult", - "type": "structure", - "required": [ - "VerificationAttributes" - ], - "members": { - "VerificationAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "VerificationStatus" - ], - "members": { - "VerificationStatus": {}, - "VerificationToken": {} - } - } - } - } - } - }, - "GetSendQuota": { - "output": { - "resultWrapper": "GetSendQuotaResult", - "type": "structure", - "members": { - "Max24HourSend": { - "type": "double" - }, - "MaxSendRate": { - "type": "double" - }, - "SentLast24Hours": { - "type": "double" - } - } - } - }, - "GetSendStatistics": { - "output": { - "resultWrapper": "GetSendStatisticsResult", - "type": "structure", - "members": { - "SendDataPoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "DeliveryAttempts": { - "type": "long" - }, - "Bounces": { - "type": "long" - }, - "Complaints": { - "type": "long" - }, - "Rejects": { - "type": "long" - } - } - } - } - } - } - }, - "ListIdentities": { - "input": { - "type": "structure", - "members": { - "IdentityType": {}, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListIdentitiesResult", - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - }, - "NextToken": {} - } - } - }, - "ListIdentityPolicies": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {} - } - }, - "output": { - "resultWrapper": "ListIdentityPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S2d" - } - } - } - }, - "ListReceiptFilters": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListReceiptFiltersResult", - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "shape": "S5" - } - } - } - } - }, - "ListReceiptRuleSets": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListReceiptRuleSetsResult", - "type": "structure", - "members": { - "RuleSets": { - "type": "list", - "member": { - "shape": "S1l" - } - }, - "NextToken": {} - } - } - }, - "ListVerifiedEmailAddresses": { - "output": { - "resultWrapper": "ListVerifiedEmailAddressesResult", - "type": "structure", - "members": { - "VerifiedEmailAddresses": { - "shape": "S37" - } - } - } - }, - "PutIdentityPolicy": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyName", - "Policy" - ], - "members": { - "Identity": {}, - "PolicyName": {}, - "Policy": {} - } - }, - "output": { - "resultWrapper": "PutIdentityPolicyResult", - "type": "structure", - "members": {} - } - }, - "ReorderReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleNames" - ], - "members": { - "RuleSetName": {}, - "RuleNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "ReorderReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "SendBounce": { - "input": { - "type": "structure", - "required": [ - "OriginalMessageId", - "BounceSender", - "BouncedRecipientInfoList" - ], - "members": { - "OriginalMessageId": {}, - "BounceSender": {}, - "Explanation": {}, - "MessageDsn": { - "type": "structure", - "required": [ - "ReportingMta" - ], - "members": { - "ReportingMta": {}, - "ArrivalDate": { - "type": "timestamp" - }, - "ExtensionFields": { - "shape": "S3j" - } - } - }, - "BouncedRecipientInfoList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Recipient" - ], - "members": { - "Recipient": {}, - "RecipientArn": {}, - "BounceType": {}, - "RecipientDsnFields": { - "type": "structure", - "required": [ - "Action", - "Status" - ], - "members": { - "FinalRecipient": {}, - "Action": {}, - "RemoteMta": {}, - "Status": {}, - "DiagnosticCode": {}, - "LastAttemptDate": { - "type": "timestamp" - }, - "ExtensionFields": { - "shape": "S3j" - } - } - } - } - } - }, - "BounceSenderArn": {} - } - }, - "output": { - "resultWrapper": "SendBounceResult", - "type": "structure", - "members": { - "MessageId": {} - } - } - }, - "SendEmail": { - "input": { - "type": "structure", - "required": [ - "Source", - "Destination", - "Message" - ], - "members": { - "Source": {}, - "Destination": { - "type": "structure", - "members": { - "ToAddresses": { - "shape": "S37" - }, - "CcAddresses": { - "shape": "S37" - }, - "BccAddresses": { - "shape": "S37" - } - } - }, - "Message": { - "type": "structure", - "required": [ - "Subject", - "Body" - ], - "members": { - "Subject": { - "shape": "S40" - }, - "Body": { - "type": "structure", - "members": { - "Text": { - "shape": "S40" - }, - "Html": { - "shape": "S40" - } - } - } - } - }, - "ReplyToAddresses": { - "shape": "S37" - }, - "ReturnPath": {}, - "SourceArn": {}, - "ReturnPathArn": {} - } - }, - "output": { - "resultWrapper": "SendEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SendRawEmail": { - "input": { - "type": "structure", - "required": [ - "RawMessage" - ], - "members": { - "Source": {}, - "Destinations": { - "shape": "S37" - }, - "RawMessage": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": { - "type": "blob" - } - } - }, - "FromArn": {}, - "SourceArn": {}, - "ReturnPathArn": {} - } - }, - "output": { - "resultWrapper": "SendRawEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SetActiveReceiptRuleSet": { - "input": { - "type": "structure", - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "SetActiveReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityDkimEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "DkimEnabled" - ], - "members": { - "Identity": {}, - "DkimEnabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityDkimEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityFeedbackForwardingEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "ForwardingEnabled" - ], - "members": { - "Identity": {}, - "ForwardingEnabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityHeadersInNotificationsEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "NotificationType", - "Enabled" - ], - "members": { - "Identity": {}, - "NotificationType": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityMailFromDomain": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {}, - "MailFromDomain": {}, - "BehaviorOnMXFailure": {} - } - }, - "output": { - "resultWrapper": "SetIdentityMailFromDomainResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityNotificationTopic": { - "input": { - "type": "structure", - "required": [ - "Identity", - "NotificationType" - ], - "members": { - "Identity": {}, - "NotificationType": {}, - "SnsTopic": {} - } - }, - "output": { - "resultWrapper": "SetIdentityNotificationTopicResult", - "type": "structure", - "members": {} - } - }, - "SetReceiptRulePosition": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {}, - "After": {} - } - }, - "output": { - "resultWrapper": "SetReceiptRulePositionResult", - "type": "structure", - "members": {} - } - }, - "UpdateReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "Rule" - ], - "members": { - "RuleSetName": {}, - "Rule": { - "shape": "Sd" - } - } - }, - "output": { - "resultWrapper": "UpdateReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "VerifyDomainDkim": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "resultWrapper": "VerifyDomainDkimResult", - "type": "structure", - "required": [ - "DkimTokens" - ], - "members": { - "DkimTokens": { - "shape": "S1y" - } - } - } - }, - "VerifyDomainIdentity": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "resultWrapper": "VerifyDomainIdentityResult", - "type": "structure", - "required": [ - "VerificationToken" - ], - "members": { - "VerificationToken": {} - } - } - }, - "VerifyEmailAddress": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - } - }, - "VerifyEmailIdentity": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - }, - "output": { - "resultWrapper": "VerifyEmailIdentityResult", - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "required": [ - "Name", - "IpFilter" - ], - "members": { - "Name": {}, - "IpFilter": { - "type": "structure", - "required": [ - "Policy", - "Cidr" - ], - "members": { - "Policy": {}, - "Cidr": {} - } - } - } - }, - "Sd": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Enabled": { - "type": "boolean" - }, - "TlsPolicy": {}, - "Recipients": { - "type": "list", - "member": {} - }, - "Actions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "S3Action": { - "type": "structure", - "required": [ - "BucketName" - ], - "members": { - "TopicArn": {}, - "BucketName": {}, - "ObjectKeyPrefix": {}, - "KmsKeyArn": {} - } - }, - "BounceAction": { - "type": "structure", - "required": [ - "SmtpReplyCode", - "Message", - "Sender" - ], - "members": { - "TopicArn": {}, - "SmtpReplyCode": {}, - "StatusCode": {}, - "Message": {}, - "Sender": {} - } - }, - "WorkmailAction": { - "type": "structure", - "required": [ - "OrganizationArn" - ], - "members": { - "TopicArn": {}, - "OrganizationArn": {} - } - }, - "LambdaAction": { - "type": "structure", - "required": [ - "FunctionArn" - ], - "members": { - "TopicArn": {}, - "FunctionArn": {}, - "InvocationType": {} - } - }, - "StopAction": { - "type": "structure", - "required": [ - "Scope" - ], - "members": { - "Scope": {}, - "TopicArn": {} - } - }, - "AddHeaderAction": { - "type": "structure", - "required": [ - "HeaderName", - "HeaderValue" - ], - "members": { - "HeaderName": {}, - "HeaderValue": {} - } - }, - "SNSAction": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {}, - "Encoding": {} - } - } - } - } - }, - "ScanEnabled": { - "type": "boolean" - } - } - }, - "S1l": { - "type": "structure", - "members": { - "Name": {}, - "CreatedTimestamp": { - "type": "timestamp" - } - } - }, - "S1n": { - "type": "list", - "member": { - "shape": "Sd" - } - }, - "S1t": { - "type": "list", - "member": {} - }, - "S1y": { - "type": "list", - "member": {} - }, - "S2d": { - "type": "list", - "member": {} - }, - "S37": { - "type": "list", - "member": {} - }, - "S3j": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "S40": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": {}, - "Charset": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json b/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json deleted file mode 100644 index e12811f..0000000 --- a/node_modules/aws-sdk/apis/email-2010-12-01.paginators.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "pagination": { - "ListIdentities": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxItems", - "result_key": "Identities" - }, - "ListVerifiedEmailAddresses": { - "result_key": "VerifiedEmailAddresses" - } - } -} diff --git a/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json b/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json deleted file mode 100644 index b585d30..0000000 --- a/node_modules/aws-sdk/apis/email-2010-12-01.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "IdentityExists": { - "delay": 3, - "operation": "GetIdentityVerificationAttributes", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "Success", - "matcher": "pathAll", - "state": "success", - "argument": "VerificationAttributes.*.VerificationStatus" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/es-2015-01-01.min.json b/node_modules/aws-sdk/apis/es-2015-01-01.min.json deleted file mode 100644 index 2877b2c..0000000 --- a/node_modules/aws-sdk/apis/es-2015-01-01.min.json +++ /dev/null @@ -1,502 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-01-01", - "endpointPrefix": "es", - "protocol": "rest-json", - "serviceFullName": "Amazon Elasticsearch Service", - "signatureVersion": "v4" - }, - "operations": { - "AddTags": { - "http": { - "requestUri": "/2015-01-01/tags" - }, - "input": { - "type": "structure", - "required": [ - "ARN", - "TagList" - ], - "members": { - "ARN": {}, - "TagList": { - "shape": "S3" - } - } - } - }, - "CreateElasticsearchDomain": { - "http": { - "requestUri": "/2015-01-01/es/domain" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "ElasticsearchVersion": {}, - "ElasticsearchClusterConfig": { - "shape": "Sa" - }, - "EBSOptions": { - "shape": "Se" - }, - "AccessPolicies": {}, - "SnapshotOptions": { - "shape": "Sh" - }, - "AdvancedOptions": { - "shape": "Si" - } - } - }, - "output": { - "type": "structure", - "members": { - "DomainStatus": { - "shape": "Sl" - } - } - } - }, - "DeleteElasticsearchDomain": { - "http": { - "method": "DELETE", - "requestUri": "/2015-01-01/es/domain/{DomainName}" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - } - } - }, - "output": { - "type": "structure", - "members": { - "DomainStatus": { - "shape": "Sl" - } - } - } - }, - "DescribeElasticsearchDomain": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/domain/{DomainName}" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DomainStatus" - ], - "members": { - "DomainStatus": { - "shape": "Sl" - } - } - } - }, - "DescribeElasticsearchDomainConfig": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/es/domain/{DomainName}/config" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DomainConfig" - ], - "members": { - "DomainConfig": { - "shape": "Su" - } - } - } - }, - "DescribeElasticsearchDomains": { - "http": { - "requestUri": "/2015-01-01/es/domain-info" - }, - "input": { - "type": "structure", - "required": [ - "DomainNames" - ], - "members": { - "DomainNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "DomainStatusList" - ], - "members": { - "DomainStatusList": { - "type": "list", - "member": { - "shape": "Sl" - } - } - } - } - }, - "ListDomainNames": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/domain" - }, - "output": { - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {} - } - } - } - } - } - }, - "ListTags": { - "http": { - "method": "GET", - "requestUri": "/2015-01-01/tags/" - }, - "input": { - "type": "structure", - "required": [ - "ARN" - ], - "members": { - "ARN": { - "location": "querystring", - "locationName": "arn" - } - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "RemoveTags": { - "http": { - "requestUri": "/2015-01-01/tags-removal" - }, - "input": { - "type": "structure", - "required": [ - "ARN", - "TagKeys" - ], - "members": { - "ARN": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "UpdateElasticsearchDomainConfig": { - "http": { - "requestUri": "/2015-01-01/es/domain/{DomainName}/config" - }, - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": { - "location": "uri", - "locationName": "DomainName" - }, - "ElasticsearchClusterConfig": { - "shape": "Sa" - }, - "EBSOptions": { - "shape": "Se" - }, - "SnapshotOptions": { - "shape": "Sh" - }, - "AdvancedOptions": { - "shape": "Si" - }, - "AccessPolicies": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DomainConfig" - ], - "members": { - "DomainConfig": { - "shape": "Su" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "structure", - "members": { - "InstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "DedicatedMasterEnabled": { - "type": "boolean" - }, - "ZoneAwarenessEnabled": { - "type": "boolean" - }, - "DedicatedMasterType": {}, - "DedicatedMasterCount": { - "type": "integer" - } - } - }, - "Se": { - "type": "structure", - "members": { - "EBSEnabled": { - "type": "boolean" - }, - "VolumeType": {}, - "VolumeSize": { - "type": "integer" - }, - "Iops": { - "type": "integer" - } - } - }, - "Sh": { - "type": "structure", - "members": { - "AutomatedSnapshotStartHour": { - "type": "integer" - } - } - }, - "Si": { - "type": "map", - "key": {}, - "value": {} - }, - "Sl": { - "type": "structure", - "required": [ - "DomainId", - "DomainName", - "ARN", - "ElasticsearchClusterConfig" - ], - "members": { - "DomainId": {}, - "DomainName": {}, - "ARN": {}, - "Created": { - "type": "boolean" - }, - "Deleted": { - "type": "boolean" - }, - "Endpoint": {}, - "Processing": { - "type": "boolean" - }, - "ElasticsearchVersion": {}, - "ElasticsearchClusterConfig": { - "shape": "Sa" - }, - "EBSOptions": { - "shape": "Se" - }, - "AccessPolicies": {}, - "SnapshotOptions": { - "shape": "Sh" - }, - "AdvancedOptions": { - "shape": "Si" - } - } - }, - "Su": { - "type": "structure", - "members": { - "ElasticsearchVersion": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sw" - } - } - }, - "ElasticsearchClusterConfig": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sa" - }, - "Status": { - "shape": "Sw" - } - } - }, - "EBSOptions": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Se" - }, - "Status": { - "shape": "Sw" - } - } - }, - "AccessPolicies": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": {}, - "Status": { - "shape": "Sw" - } - } - }, - "SnapshotOptions": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Sh" - }, - "Status": { - "shape": "Sw" - } - } - }, - "AdvancedOptions": { - "type": "structure", - "required": [ - "Options", - "Status" - ], - "members": { - "Options": { - "shape": "Si" - }, - "Status": { - "shape": "Sw" - } - } - } - } - }, - "Sw": { - "type": "structure", - "required": [ - "CreationDate", - "UpdateDate", - "State" - ], - "members": { - "CreationDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "UpdateVersion": { - "type": "integer" - }, - "State": {}, - "PendingDeletion": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/events-2015-10-07.min.json b/node_modules/aws-sdk/apis/events-2015-10-07.min.json deleted file mode 100644 index bb4d59a..0000000 --- a/node_modules/aws-sdk/apis/events-2015-10-07.min.json +++ /dev/null @@ -1,330 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-10-07", - "endpointPrefix": "events", - "jsonVersion": "1.1", - "serviceFullName": "Amazon CloudWatch Events", - "signatureVersion": "v4", - "targetPrefix": "AWSEvents", - "protocol": "json" - }, - "operations": { - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "DescribeRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "EventPattern": {}, - "ScheduleExpression": {}, - "State": {}, - "Description": {}, - "RoleArn": {} - } - } - }, - "DisableRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "EnableRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "ListRuleNamesByTarget": { - "input": { - "type": "structure", - "required": [ - "TargetArn" - ], - "members": { - "TargetArn": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RuleNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NamePrefix": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "EventPattern": {}, - "State": {}, - "Description": {}, - "ScheduleExpression": {}, - "RoleArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListTargetsByRule": { - "input": { - "type": "structure", - "required": [ - "Rule" - ], - "members": { - "Rule": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Targets": { - "shape": "Sp" - }, - "NextToken": {} - } - } - }, - "PutEvents": { - "input": { - "type": "structure", - "required": [ - "Entries" - ], - "members": { - "Entries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Time": { - "type": "timestamp" - }, - "Source": {}, - "Resources": { - "type": "list", - "member": {} - }, - "DetailType": {}, - "Detail": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "Entries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "PutRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "ScheduleExpression": {}, - "EventPattern": {}, - "State": {}, - "Description": {}, - "RoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RuleArn": {} - } - } - }, - "PutTargets": { - "input": { - "type": "structure", - "required": [ - "Rule", - "Targets" - ], - "members": { - "Rule": {}, - "Targets": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "FailedEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "RemoveTargets": { - "input": { - "type": "structure", - "required": [ - "Rule", - "Ids" - ], - "members": { - "Rule": {}, - "Ids": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "FailedEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "TestEventPattern": { - "input": { - "type": "structure", - "required": [ - "EventPattern", - "Event" - ], - "members": { - "EventPattern": {}, - "Event": {} - } - }, - "output": { - "type": "structure", - "members": { - "Result": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "Sp": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "Arn" - ], - "members": { - "Id": {}, - "Arn": {}, - "Input": {}, - "InputPath": {} - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json b/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json deleted file mode 100644 index d7d6bd5..0000000 --- a/node_modules/aws-sdk/apis/firehose-2015-08-04.min.json +++ /dev/null @@ -1,550 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-04", - "endpointPrefix": "firehose", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Firehose", - "serviceFullName": "Amazon Kinesis Firehose", - "signatureVersion": "v4", - "targetPrefix": "Firehose_20150804" - }, - "operations": { - "CreateDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {}, - "S3DestinationConfiguration": { - "shape": "S3" - }, - "RedshiftDestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "ClusterJDBCURL", - "CopyCommand", - "Username", - "Password", - "S3Configuration" - ], - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sl" - }, - "Username": { - "shape": "Sp" - }, - "Password": { - "shape": "Sq" - }, - "RetryOptions": { - "shape": "Sr" - }, - "S3Configuration": { - "shape": "S3" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "ElasticsearchDestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "DomainARN", - "IndexName", - "TypeName", - "S3Configuration" - ], - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "Sy" - }, - "RetryOptions": { - "shape": "S11" - }, - "S3BackupMode": {}, - "S3Configuration": { - "shape": "S3" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryStreamARN": {} - } - } - }, - "DeleteDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartDestinationId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DeliveryStreamDescription" - ], - "members": { - "DeliveryStreamDescription": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "DeliveryStreamARN", - "DeliveryStreamStatus", - "VersionId", - "Destinations", - "HasMoreDestinations" - ], - "members": { - "DeliveryStreamName": {}, - "DeliveryStreamARN": {}, - "DeliveryStreamStatus": {}, - "VersionId": {}, - "CreateTimestamp": { - "type": "timestamp" - }, - "LastUpdateTimestamp": { - "type": "timestamp" - }, - "Destinations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DestinationId" - ], - "members": { - "DestinationId": {}, - "S3DestinationDescription": { - "shape": "S1i" - }, - "RedshiftDestinationDescription": { - "type": "structure", - "required": [ - "RoleARN", - "ClusterJDBCURL", - "CopyCommand", - "Username", - "S3DestinationDescription" - ], - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sl" - }, - "Username": { - "shape": "Sp" - }, - "RetryOptions": { - "shape": "Sr" - }, - "S3DestinationDescription": { - "shape": "S1i" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "ElasticsearchDestinationDescription": { - "type": "structure", - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "Sy" - }, - "RetryOptions": { - "shape": "S11" - }, - "S3BackupMode": {}, - "S3DestinationDescription": { - "shape": "S1i" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } - } - }, - "HasMoreDestinations": { - "type": "boolean" - } - } - } - } - } - }, - "ListDeliveryStreams": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartDeliveryStreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DeliveryStreamNames", - "HasMoreDeliveryStreams" - ], - "members": { - "DeliveryStreamNames": { - "type": "list", - "member": {} - }, - "HasMoreDeliveryStreams": { - "type": "boolean" - } - } - } - }, - "PutRecord": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "Record" - ], - "members": { - "DeliveryStreamName": {}, - "Record": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "required": [ - "RecordId" - ], - "members": { - "RecordId": {} - } - } - }, - "PutRecordBatch": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "Records" - ], - "members": { - "DeliveryStreamName": {}, - "Records": { - "type": "list", - "member": { - "shape": "S1q" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "FailedPutCount", - "RequestResponses" - ], - "members": { - "FailedPutCount": { - "type": "integer" - }, - "RequestResponses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RecordId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "UpdateDestination": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "CurrentDeliveryStreamVersionId", - "DestinationId" - ], - "members": { - "DeliveryStreamName": {}, - "CurrentDeliveryStreamVersionId": {}, - "DestinationId": {}, - "S3DestinationUpdate": { - "shape": "S23" - }, - "RedshiftDestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sl" - }, - "Username": { - "shape": "Sp" - }, - "Password": { - "shape": "Sq" - }, - "RetryOptions": { - "shape": "Sr" - }, - "S3Update": { - "shape": "S23" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "ElasticsearchDestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "Sy" - }, - "RetryOptions": { - "shape": "S11" - }, - "S3Update": { - "shape": "S23" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "S7" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Sb" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "S7": { - "type": "structure", - "members": { - "SizeInMBs": { - "type": "integer" - }, - "IntervalInSeconds": { - "type": "integer" - } - } - }, - "Sb": { - "type": "structure", - "members": { - "NoEncryptionConfig": {}, - "KMSEncryptionConfig": { - "type": "structure", - "required": [ - "AWSKMSKeyARN" - ], - "members": { - "AWSKMSKeyARN": {} - } - } - } - }, - "Sf": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "LogGroupName": {}, - "LogStreamName": {} - } - }, - "Sl": { - "type": "structure", - "required": [ - "DataTableName" - ], - "members": { - "DataTableName": {}, - "DataTableColumns": {}, - "CopyOptions": {} - } - }, - "Sp": { - "type": "string", - "sensitive": true - }, - "Sq": { - "type": "string", - "sensitive": true - }, - "Sr": { - "type": "structure", - "members": { - "DurationInSeconds": { - "type": "integer" - } - } - }, - "Sy": { - "type": "structure", - "members": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - } - }, - "S11": { - "type": "structure", - "members": { - "DurationInSeconds": { - "type": "integer" - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN", - "BufferingHints", - "CompressionFormat", - "EncryptionConfiguration" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "S7" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Sb" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "S1q": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": { - "type": "blob" - } - } - }, - "S23": { - "type": "structure", - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "S7" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Sb" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json b/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json deleted file mode 100644 index 21832f9..0000000 --- a/node_modules/aws-sdk/apis/gamelift-2015-10-01.min.json +++ /dev/null @@ -1,1174 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-10-01", - "endpointPrefix": "gamelift", - "jsonVersion": "1.1", - "serviceFullName": "Amazon GameLift", - "signatureVersion": "v4", - "targetPrefix": "GameLift", - "protocol": "json" - }, - "operations": { - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "Name", - "RoutingStrategy" - ], - "members": { - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "S8" - } - } - } - }, - "CreateBuild": { - "input": { - "type": "structure", - "members": { - "Name": {}, - "Version": {}, - "StorageLocation": { - "shape": "Sc" - }, - "OperatingSystem": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "Sg" - }, - "UploadCredentials": { - "shape": "Sk" - }, - "StorageLocation": { - "shape": "Sc" - } - } - } - }, - "CreateFleet": { - "input": { - "type": "structure", - "required": [ - "Name", - "BuildId", - "EC2InstanceType" - ], - "members": { - "Name": {}, - "Description": {}, - "BuildId": {}, - "ServerLaunchPath": {}, - "ServerLaunchParameters": {}, - "LogPaths": { - "shape": "Sm" - }, - "EC2InstanceType": {}, - "EC2InboundPermissions": { - "shape": "So" - }, - "NewGameSessionProtectionPolicy": {}, - "RuntimeConfiguration": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetAttributes": { - "shape": "Sz" - } - } - } - }, - "CreateGameSession": { - "input": { - "type": "structure", - "required": [ - "MaximumPlayerSessionCount" - ], - "members": { - "FleetId": {}, - "AliasId": {}, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Name": {}, - "GameProperties": { - "shape": "S13" - } - } - }, - "output": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S18" - } - } - } - }, - "CreatePlayerSession": { - "input": { - "type": "structure", - "required": [ - "GameSessionId", - "PlayerId" - ], - "members": { - "GameSessionId": {}, - "PlayerId": {} - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSession": { - "shape": "S1f" - } - } - } - }, - "CreatePlayerSessions": { - "input": { - "type": "structure", - "required": [ - "GameSessionId", - "PlayerIds" - ], - "members": { - "GameSessionId": {}, - "PlayerIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSessions": { - "shape": "S1l" - } - } - } - }, - "DeleteAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - } - }, - "DeleteBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - } - }, - "DeleteFleet": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - } - }, - "DeleteScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "Name", - "FleetId" - ], - "members": { - "Name": {}, - "FleetId": {} - } - } - }, - "DescribeAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "S8" - } - } - } - }, - "DescribeBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "Sg" - } - } - } - }, - "DescribeEC2InstanceLimits": { - "input": { - "type": "structure", - "members": { - "EC2InstanceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "EC2InstanceLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EC2InstanceType": {}, - "CurrentInstances": { - "type": "integer" - }, - "InstanceLimit": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeFleetAttributes": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetAttributes": { - "type": "list", - "member": { - "shape": "Sz" - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetCapacity": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetCapacity": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "InstanceType": {}, - "InstanceCounts": { - "type": "structure", - "members": { - "DESIRED": { - "type": "integer" - }, - "MINIMUM": { - "type": "integer" - }, - "MAXIMUM": { - "type": "integer" - }, - "PENDING": { - "type": "integer" - }, - "ACTIVE": { - "type": "integer" - }, - "IDLE": { - "type": "integer" - }, - "TERMINATING": { - "type": "integer" - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetEvents": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "ResourceId": {}, - "EventCode": {}, - "Message": {}, - "EventTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetPortSettings": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InboundPermissions": { - "shape": "So" - } - } - } - }, - "DescribeFleetUtilization": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetUtilization": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "ActiveServerProcessCount": { - "type": "integer" - }, - "ActiveGameSessionCount": { - "type": "integer" - }, - "CurrentPlayerSessionCount": { - "type": "integer" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessionDetails": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "GameSessionId": {}, - "AliasId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S18" - }, - "ProtectionPolicy": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessions": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "GameSessionId": {}, - "AliasId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessions": { - "shape": "S2o" - }, - "NextToken": {} - } - } - }, - "DescribePlayerSessions": { - "input": { - "type": "structure", - "members": { - "GameSessionId": {}, - "PlayerId": {}, - "PlayerSessionId": {}, - "PlayerSessionStatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSessions": { - "shape": "S1l" - }, - "NextToken": {} - } - } - }, - "DescribeRuntimeConfiguration": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "RuntimeConfiguration": { - "shape": "Su" - } - } - } - }, - "DescribeScalingPolicies": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "Name": {}, - "Status": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "ScalingAdjustmentType": {}, - "ComparisonOperator": {}, - "Threshold": { - "type": "double" - }, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetGameSessionLogUrl": { - "input": { - "type": "structure", - "required": [ - "GameSessionId" - ], - "members": { - "GameSessionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "PreSignedUrl": {} - } - } - }, - "ListAliases": { - "input": { - "type": "structure", - "members": { - "RoutingStrategyType": {}, - "Name": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Aliases": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "NextToken": {} - } - } - }, - "ListBuilds": { - "input": { - "type": "structure", - "members": { - "Status": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Builds": { - "type": "list", - "member": { - "shape": "Sg" - } - }, - "NextToken": {} - } - } - }, - "ListFleets": { - "input": { - "type": "structure", - "members": { - "BuildId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "NextToken": {} - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "Name", - "FleetId", - "ScalingAdjustment", - "ScalingAdjustmentType", - "Threshold", - "ComparisonOperator", - "EvaluationPeriods", - "MetricName" - ], - "members": { - "Name": {}, - "FleetId": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "ScalingAdjustmentType": {}, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "RequestUploadCredentials": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UploadCredentials": { - "shape": "Sk" - }, - "StorageLocation": { - "shape": "Sc" - } - } - } - }, - "ResolveAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "SearchGameSessions": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "AliasId": {}, - "FilterExpression": {}, - "SortExpression": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessions": { - "shape": "S2o" - }, - "NextToken": {} - } - } - }, - "UpdateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {}, - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "S8" - } - } - } - }, - "UpdateBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {}, - "Name": {}, - "Version": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "Sg" - } - } - } - }, - "UpdateFleetAttributes": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "Name": {}, - "Description": {}, - "NewGameSessionProtectionPolicy": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateFleetCapacity": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "DesiredInstances": { - "type": "integer" - }, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateFleetPortSettings": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "InboundPermissionAuthorizations": { - "shape": "So" - }, - "InboundPermissionRevocations": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateGameSession": { - "input": { - "type": "structure", - "required": [ - "GameSessionId" - ], - "members": { - "GameSessionId": {}, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Name": {}, - "PlayerSessionCreationPolicy": {}, - "ProtectionPolicy": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S18" - } - } - } - }, - "UpdateRuntimeConfiguration": { - "input": { - "type": "structure", - "required": [ - "FleetId", - "RuntimeConfiguration" - ], - "members": { - "FleetId": {}, - "RuntimeConfiguration": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "members": { - "RuntimeConfiguration": { - "shape": "Su" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "members": { - "Type": {}, - "FleetId": {}, - "Message": {} - } - }, - "S8": { - "type": "structure", - "members": { - "AliasId": {}, - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "S3" - }, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Bucket": {}, - "Key": {}, - "RoleArn": {} - } - }, - "Sg": { - "type": "structure", - "members": { - "BuildId": {}, - "Name": {}, - "Version": {}, - "Status": {}, - "SizeOnDisk": { - "type": "long" - }, - "OperatingSystem": {}, - "CreationTime": { - "type": "timestamp" - } - } - }, - "Sk": { - "type": "structure", - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {} - }, - "sensitive": true - }, - "Sm": { - "type": "list", - "member": {} - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "FromPort", - "ToPort", - "IpRange", - "Protocol" - ], - "members": { - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - }, - "IpRange": {}, - "Protocol": {} - } - } - }, - "Su": { - "type": "structure", - "members": { - "ServerProcesses": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LaunchPath", - "ConcurrentExecutions" - ], - "members": { - "LaunchPath": {}, - "Parameters": {}, - "ConcurrentExecutions": { - "type": "integer" - } - } - } - } - } - }, - "Sz": { - "type": "structure", - "members": { - "FleetId": {}, - "Description": {}, - "Name": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "Status": {}, - "BuildId": {}, - "ServerLaunchPath": {}, - "ServerLaunchParameters": {}, - "LogPaths": { - "shape": "Sm" - }, - "NewGameSessionProtectionPolicy": {}, - "OperatingSystem": {} - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S18": { - "type": "structure", - "members": { - "GameSessionId": {}, - "Name": {}, - "FleetId": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "CurrentPlayerSessionCount": { - "type": "integer" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Status": {}, - "GameProperties": { - "shape": "S13" - }, - "IpAddress": {}, - "Port": { - "type": "integer" - }, - "PlayerSessionCreationPolicy": {} - } - }, - "S1f": { - "type": "structure", - "members": { - "PlayerSessionId": {}, - "PlayerId": {}, - "GameSessionId": {}, - "FleetId": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "Status": {}, - "IpAddress": {}, - "Port": { - "type": "integer" - } - } - }, - "S1l": { - "type": "list", - "member": { - "shape": "S1f" - } - }, - "S1z": { - "type": "list", - "member": {} - }, - "S2o": { - "type": "list", - "member": { - "shape": "S18" - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json b/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json deleted file mode 100644 index 6db1a30..0000000 --- a/node_modules/aws-sdk/apis/glacier-2012-06-01.min.json +++ /dev/null @@ -1,1215 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-06-01", - "checksumFormat": "sha256", - "endpointPrefix": "glacier", - "serviceFullName": "Amazon Glacier", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "AbortMultipartUpload": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - } - }, - "required": [ - "accountId", - "vaultName", - "uploadId" - ] - } - }, - "AbortVaultLock": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - } - }, - "AddTagsToVault": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/tags?operation=add", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "Tags": { - "shape": "S5" - } - }, - "required": [ - "accountId", - "vaultName" - ] - } - }, - "CompleteMultipartUpload": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - }, - "archiveSize": { - "location": "header", - "locationName": "x-amz-archive-size" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - } - }, - "required": [ - "accountId", - "vaultName", - "uploadId" - ] - }, - "output": { - "shape": "S9" - } - }, - "CompleteVaultLock": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy/{lockId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "lockId": { - "location": "uri", - "locationName": "lockId" - } - }, - "required": [ - "accountId", - "vaultName", - "lockId" - ] - } - }, - "CreateVault": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "DeleteArchive": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/archives/{archiveId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "archiveId": { - "location": "uri", - "locationName": "archiveId" - } - }, - "required": [ - "accountId", - "vaultName", - "archiveId" - ] - } - }, - "DeleteVault": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - } - }, - "DeleteVaultAccessPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/access-policy", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - } - }, - "DeleteVaultNotifications": { - "http": { - "method": "DELETE", - "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - } - }, - "DescribeJob": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/jobs/{jobId}" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "jobId": { - "location": "uri", - "locationName": "jobId" - } - }, - "required": [ - "accountId", - "vaultName", - "jobId" - ] - }, - "output": { - "shape": "Si" - } - }, - "DescribeVault": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "shape": "Sq" - } - }, - "GetDataRetrievalPolicy": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/policies/data-retrieval" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - } - }, - "required": [ - "accountId" - ] - }, - "output": { - "type": "structure", - "members": { - "Policy": { - "shape": "Su" - } - } - } - }, - "GetJobOutput": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/jobs/{jobId}/output" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "jobId": { - "location": "uri", - "locationName": "jobId" - }, - "range": { - "location": "header", - "locationName": "Range" - } - }, - "required": [ - "accountId", - "vaultName", - "jobId" - ] - }, - "output": { - "type": "structure", - "members": { - "body": { - "shape": "S10" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "status": { - "location": "statusCode", - "type": "integer" - }, - "contentRange": { - "location": "header", - "locationName": "Content-Range" - }, - "acceptRanges": { - "location": "header", - "locationName": "Accept-Ranges" - }, - "contentType": { - "location": "header", - "locationName": "Content-Type" - }, - "archiveDescription": { - "location": "header", - "locationName": "x-amz-archive-description" - } - }, - "payload": "body" - } - }, - "GetVaultAccessPolicy": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/access-policy" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "policy": { - "shape": "S14" - } - }, - "payload": "policy" - } - }, - "GetVaultLock": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "Policy": {}, - "State": {}, - "ExpirationDate": {}, - "CreationDate": {} - } - } - }, - "GetVaultNotifications": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "vaultNotificationConfig": { - "shape": "S19" - } - }, - "payload": "vaultNotificationConfig" - } - }, - "InitiateJob": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/jobs", - "responseCode": 202 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "jobParameters": { - "type": "structure", - "members": { - "Format": {}, - "Type": {}, - "ArchiveId": {}, - "Description": {}, - "SNSTopic": {}, - "RetrievalByteRange": {}, - "InventoryRetrievalParameters": { - "type": "structure", - "members": { - "StartDate": {}, - "EndDate": {}, - "Limit": {}, - "Marker": {} - } - } - } - } - }, - "required": [ - "accountId", - "vaultName" - ], - "payload": "jobParameters" - }, - "output": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - }, - "jobId": { - "location": "header", - "locationName": "x-amz-job-id" - } - } - } - }, - "InitiateMultipartUpload": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "archiveDescription": { - "location": "header", - "locationName": "x-amz-archive-description" - }, - "partSize": { - "location": "header", - "locationName": "x-amz-part-size" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - }, - "uploadId": { - "location": "header", - "locationName": "x-amz-multipart-upload-id" - } - } - } - }, - "InitiateVaultLock": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/lock-policy", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "policy": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "required": [ - "accountId", - "vaultName" - ], - "payload": "policy" - }, - "output": { - "type": "structure", - "members": { - "lockId": { - "location": "header", - "locationName": "x-amz-lock-id" - } - } - } - }, - "ListJobs": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/jobs" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "statuscode": { - "location": "querystring", - "locationName": "statuscode" - }, - "completed": { - "location": "querystring", - "locationName": "completed" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "JobList": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "Marker": {} - } - } - }, - "ListMultipartUploads": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "UploadsList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MultipartUploadId": {}, - "VaultARN": {}, - "ArchiveDescription": {}, - "PartSizeInBytes": { - "type": "long" - }, - "CreationDate": {} - } - } - }, - "Marker": {} - } - } - }, - "ListParts": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - } - }, - "required": [ - "accountId", - "vaultName", - "uploadId" - ] - }, - "output": { - "type": "structure", - "members": { - "MultipartUploadId": {}, - "VaultARN": {}, - "ArchiveDescription": {}, - "PartSizeInBytes": { - "type": "long" - }, - "CreationDate": {}, - "Parts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RangeInBytes": {}, - "SHA256TreeHash": {} - } - } - }, - "Marker": {} - } - } - }, - "ListTagsForVault": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults/{vaultName}/tags" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - } - }, - "required": [ - "accountId", - "vaultName" - ] - }, - "output": { - "type": "structure", - "members": { - "Tags": { - "shape": "S5" - } - } - } - }, - "ListVaults": { - "http": { - "method": "GET", - "requestUri": "/{accountId}/vaults" - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "limit": { - "location": "querystring", - "locationName": "limit" - } - }, - "required": [ - "accountId" - ] - }, - "output": { - "type": "structure", - "members": { - "VaultList": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "Marker": {} - } - } - }, - "RemoveTagsFromVault": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/tags?operation=remove", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "TagKeys": { - "type": "list", - "member": {} - } - }, - "required": [ - "accountId", - "vaultName" - ] - } - }, - "SetDataRetrievalPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/policies/data-retrieval", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "Policy": { - "shape": "Su" - } - }, - "required": [ - "accountId" - ] - } - }, - "SetVaultAccessPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}/access-policy", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "policy": { - "shape": "S14" - } - }, - "required": [ - "accountId", - "vaultName" - ], - "payload": "policy" - } - }, - "SetVaultNotifications": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}/notification-configuration", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "vaultNotificationConfig": { - "shape": "S19" - } - }, - "required": [ - "accountId", - "vaultName" - ], - "payload": "vaultNotificationConfig" - } - }, - "UploadArchive": { - "http": { - "requestUri": "/{accountId}/vaults/{vaultName}/archives", - "responseCode": 201 - }, - "input": { - "type": "structure", - "members": { - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "archiveDescription": { - "location": "header", - "locationName": "x-amz-archive-description" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "body": { - "shape": "S10" - } - }, - "required": [ - "vaultName", - "accountId" - ], - "payload": "body" - }, - "output": { - "shape": "S9" - } - }, - "UploadMultipartPart": { - "http": { - "method": "PUT", - "requestUri": "/{accountId}/vaults/{vaultName}/multipart-uploads/{uploadId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "members": { - "accountId": { - "location": "uri", - "locationName": "accountId" - }, - "vaultName": { - "location": "uri", - "locationName": "vaultName" - }, - "uploadId": { - "location": "uri", - "locationName": "uploadId" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "range": { - "location": "header", - "locationName": "Content-Range" - }, - "body": { - "shape": "S10" - } - }, - "required": [ - "accountId", - "vaultName", - "uploadId" - ], - "payload": "body" - }, - "output": { - "type": "structure", - "members": { - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "map", - "key": {}, - "value": {} - }, - "S9": { - "type": "structure", - "members": { - "location": { - "location": "header", - "locationName": "Location" - }, - "checksum": { - "location": "header", - "locationName": "x-amz-sha256-tree-hash" - }, - "archiveId": { - "location": "header", - "locationName": "x-amz-archive-id" - } - } - }, - "Si": { - "type": "structure", - "members": { - "JobId": {}, - "JobDescription": {}, - "Action": {}, - "ArchiveId": {}, - "VaultARN": {}, - "CreationDate": {}, - "Completed": { - "type": "boolean" - }, - "StatusCode": {}, - "StatusMessage": {}, - "ArchiveSizeInBytes": { - "type": "long" - }, - "InventorySizeInBytes": { - "type": "long" - }, - "SNSTopic": {}, - "CompletionDate": {}, - "SHA256TreeHash": {}, - "ArchiveSHA256TreeHash": {}, - "RetrievalByteRange": {}, - "InventoryRetrievalParameters": { - "type": "structure", - "members": { - "Format": {}, - "StartDate": {}, - "EndDate": {}, - "Limit": {}, - "Marker": {} - } - } - } - }, - "Sq": { - "type": "structure", - "members": { - "VaultARN": {}, - "VaultName": {}, - "CreationDate": {}, - "LastInventoryDate": {}, - "NumberOfArchives": { - "type": "long" - }, - "SizeInBytes": { - "type": "long" - } - } - }, - "Su": { - "type": "structure", - "members": { - "Rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Strategy": {}, - "BytesPerHour": { - "type": "long" - } - } - } - } - } - }, - "S10": { - "type": "blob", - "streaming": true - }, - "S14": { - "type": "structure", - "members": { - "Policy": {} - } - }, - "S19": { - "type": "structure", - "members": { - "SNSTopic": {}, - "Events": { - "type": "list", - "member": {} - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json b/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json deleted file mode 100644 index 6969143..0000000 --- a/node_modules/aws-sdk/apis/glacier-2012-06-01.paginators.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "pagination": { - "ListJobs": { - "input_token": "marker", - "output_token": "Marker", - "limit_key": "limit", - "result_key": "JobList" - }, - "ListMultipartUploads": { - "input_token": "marker", - "output_token": "Marker", - "limit_key": "limit", - "result_key": "UploadsList" - }, - "ListParts": { - "input_token": "marker", - "output_token": "Marker", - "limit_key": "limit", - "result_key": "Parts" - }, - "ListVaults": { - "input_token": "marker", - "output_token": "Marker", - "limit_key": "limit", - "result_key": "VaultList" - } - } -} diff --git a/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json b/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json deleted file mode 100644 index 07a64a0..0000000 --- a/node_modules/aws-sdk/apis/glacier-2012-06-01.waiters2.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": 2, - "waiters": { - "VaultExists": { - "operation": "DescribeVault", - "delay": 3, - "maxAttempts": 15, - "acceptors": [ - { - "state": "success", - "matcher": "status", - "expected": 200 - }, - { - "state": "retry", - "matcher": "error", - "expected": "ResourceNotFoundException" - } - ] - }, - "VaultNotExists": { - "operation": "DescribeVault", - "delay": 3, - "maxAttempts": 15, - "acceptors": [ - { - "state": "retry", - "matcher": "status", - "expected": 200 - }, - { - "state": "success", - "matcher": "error", - "expected": "ResourceNotFoundException" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/iam-2010-05-08.min.json b/node_modules/aws-sdk/apis/iam-2010-05-08.min.json deleted file mode 100644 index 36e74c3..0000000 --- a/node_modules/aws-sdk/apis/iam-2010-05-08.min.json +++ /dev/null @@ -1,2936 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-05-08", - "endpointPrefix": "iam", - "globalEndpoint": "iam.amazonaws.com", - "protocol": "query", - "serviceAbbreviation": "IAM", - "serviceFullName": "AWS Identity and Access Management", - "signatureVersion": "v4", - "xmlNamespace": "https://iam.amazonaws.com/doc/2010-05-08/" - }, - "operations": { - "AddClientIDToOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn", - "ClientID" - ], - "members": { - "OpenIDConnectProviderArn": {}, - "ClientID": {} - } - } - }, - "AddRoleToInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName", - "RoleName" - ], - "members": { - "InstanceProfileName": {}, - "RoleName": {} - } - } - }, - "AddUserToGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserName" - ], - "members": { - "GroupName": {}, - "UserName": {} - } - } - }, - "AttachGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyArn" - ], - "members": { - "GroupName": {}, - "PolicyArn": {} - } - } - }, - "AttachRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyArn" - ], - "members": { - "RoleName": {}, - "PolicyArn": {} - } - } - }, - "AttachUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyArn" - ], - "members": { - "UserName": {}, - "PolicyArn": {} - } - } - }, - "ChangePassword": { - "input": { - "type": "structure", - "required": [ - "OldPassword", - "NewPassword" - ], - "members": { - "OldPassword": { - "shape": "Sf" - }, - "NewPassword": { - "shape": "Sf" - } - } - } - }, - "CreateAccessKey": { - "input": { - "type": "structure", - "members": { - "UserName": {} - } - }, - "output": { - "resultWrapper": "CreateAccessKeyResult", - "type": "structure", - "required": [ - "AccessKey" - ], - "members": { - "AccessKey": { - "type": "structure", - "required": [ - "UserName", - "AccessKeyId", - "Status", - "SecretAccessKey" - ], - "members": { - "UserName": {}, - "AccessKeyId": {}, - "Status": {}, - "SecretAccessKey": { - "type": "string", - "sensitive": true - }, - "CreateDate": { - "type": "timestamp" - } - } - } - } - } - }, - "CreateAccountAlias": { - "input": { - "type": "structure", - "required": [ - "AccountAlias" - ], - "members": { - "AccountAlias": {} - } - } - }, - "CreateGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "Path": {}, - "GroupName": {} - } - }, - "output": { - "resultWrapper": "CreateGroupResult", - "type": "structure", - "required": [ - "Group" - ], - "members": { - "Group": { - "shape": "Ss" - } - } - } - }, - "CreateInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName" - ], - "members": { - "InstanceProfileName": {}, - "Path": {} - } - }, - "output": { - "resultWrapper": "CreateInstanceProfileResult", - "type": "structure", - "required": [ - "InstanceProfile" - ], - "members": { - "InstanceProfile": { - "shape": "Sw" - } - } - } - }, - "CreateLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName", - "Password" - ], - "members": { - "UserName": {}, - "Password": { - "shape": "Sf" - }, - "PasswordResetRequired": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateLoginProfileResult", - "type": "structure", - "required": [ - "LoginProfile" - ], - "members": { - "LoginProfile": { - "shape": "S13" - } - } - } - }, - "CreateOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "Url", - "ThumbprintList" - ], - "members": { - "Url": {}, - "ClientIDList": { - "shape": "S16" - }, - "ThumbprintList": { - "shape": "S17" - } - } - }, - "output": { - "resultWrapper": "CreateOpenIDConnectProviderResult", - "type": "structure", - "members": { - "OpenIDConnectProviderArn": {} - } - } - }, - "CreatePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyName", - "PolicyDocument" - ], - "members": { - "PolicyName": {}, - "Path": {}, - "PolicyDocument": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreatePolicyResult", - "type": "structure", - "members": { - "Policy": { - "shape": "S1f" - } - } - } - }, - "CreatePolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "PolicyDocument" - ], - "members": { - "PolicyArn": {}, - "PolicyDocument": {}, - "SetAsDefault": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreatePolicyVersionResult", - "type": "structure", - "members": { - "PolicyVersion": { - "shape": "S1k" - } - } - } - }, - "CreateRole": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "AssumeRolePolicyDocument" - ], - "members": { - "Path": {}, - "RoleName": {}, - "AssumeRolePolicyDocument": {} - } - }, - "output": { - "resultWrapper": "CreateRoleResult", - "type": "structure", - "required": [ - "Role" - ], - "members": { - "Role": { - "shape": "Sy" - } - } - } - }, - "CreateSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLMetadataDocument", - "Name" - ], - "members": { - "SAMLMetadataDocument": {}, - "Name": {} - } - }, - "output": { - "resultWrapper": "CreateSAMLProviderResult", - "type": "structure", - "members": { - "SAMLProviderArn": {} - } - } - }, - "CreateUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "Path": {}, - "UserName": {} - } - }, - "output": { - "resultWrapper": "CreateUserResult", - "type": "structure", - "members": { - "User": { - "shape": "S1t" - } - } - } - }, - "CreateVirtualMFADevice": { - "input": { - "type": "structure", - "required": [ - "VirtualMFADeviceName" - ], - "members": { - "Path": {}, - "VirtualMFADeviceName": {} - } - }, - "output": { - "resultWrapper": "CreateVirtualMFADeviceResult", - "type": "structure", - "required": [ - "VirtualMFADevice" - ], - "members": { - "VirtualMFADevice": { - "shape": "S1x" - } - } - } - }, - "DeactivateMFADevice": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber" - ], - "members": { - "UserName": {}, - "SerialNumber": {} - } - } - }, - "DeleteAccessKey": { - "input": { - "type": "structure", - "required": [ - "AccessKeyId" - ], - "members": { - "UserName": {}, - "AccessKeyId": {} - } - } - }, - "DeleteAccountAlias": { - "input": { - "type": "structure", - "required": [ - "AccountAlias" - ], - "members": { - "AccountAlias": {} - } - } - }, - "DeleteAccountPasswordPolicy": {}, - "DeleteGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {} - } - } - }, - "DeleteGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyName" - ], - "members": { - "GroupName": {}, - "PolicyName": {} - } - } - }, - "DeleteInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName" - ], - "members": { - "InstanceProfileName": {} - } - } - }, - "DeleteLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {} - } - } - }, - "DeleteOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn" - ], - "members": { - "OpenIDConnectProviderArn": {} - } - } - }, - "DeletePolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {} - } - } - }, - "DeletePolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "VersionId" - ], - "members": { - "PolicyArn": {}, - "VersionId": {} - } - } - }, - "DeleteRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {} - } - } - }, - "DeleteRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyName" - ], - "members": { - "RoleName": {}, - "PolicyName": {} - } - } - }, - "DeleteSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLProviderArn" - ], - "members": { - "SAMLProviderArn": {} - } - } - }, - "DeleteSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {} - } - } - }, - "DeleteServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName" - ], - "members": { - "ServerCertificateName": {} - } - } - }, - "DeleteSigningCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateId" - ], - "members": { - "UserName": {}, - "CertificateId": {} - } - } - }, - "DeleteUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {} - } - } - }, - "DeleteUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyName" - ], - "members": { - "UserName": {}, - "PolicyName": {} - } - } - }, - "DeleteVirtualMFADevice": { - "input": { - "type": "structure", - "required": [ - "SerialNumber" - ], - "members": { - "SerialNumber": {} - } - } - }, - "DetachGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyArn" - ], - "members": { - "GroupName": {}, - "PolicyArn": {} - } - } - }, - "DetachRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyArn" - ], - "members": { - "RoleName": {}, - "PolicyArn": {} - } - } - }, - "DetachUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyArn" - ], - "members": { - "UserName": {}, - "PolicyArn": {} - } - } - }, - "EnableMFADevice": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber", - "AuthenticationCode1", - "AuthenticationCode2" - ], - "members": { - "UserName": {}, - "SerialNumber": {}, - "AuthenticationCode1": {}, - "AuthenticationCode2": {} - } - } - }, - "GenerateCredentialReport": { - "output": { - "resultWrapper": "GenerateCredentialReportResult", - "type": "structure", - "members": { - "State": {}, - "Description": {} - } - } - }, - "GetAccessKeyLastUsed": { - "input": { - "type": "structure", - "required": [ - "AccessKeyId" - ], - "members": { - "AccessKeyId": {} - } - }, - "output": { - "resultWrapper": "GetAccessKeyLastUsedResult", - "type": "structure", - "members": { - "UserName": {}, - "AccessKeyLastUsed": { - "type": "structure", - "required": [ - "LastUsedDate", - "ServiceName", - "Region" - ], - "members": { - "LastUsedDate": { - "type": "timestamp" - }, - "ServiceName": {}, - "Region": {} - } - } - } - } - }, - "GetAccountAuthorizationDetails": { - "input": { - "type": "structure", - "members": { - "Filter": { - "type": "list", - "member": {} - }, - "MaxItems": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "GetAccountAuthorizationDetailsResult", - "type": "structure", - "members": { - "UserDetailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "UserName": {}, - "UserId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "UserPolicyList": { - "shape": "S36" - }, - "GroupList": { - "type": "list", - "member": {} - }, - "AttachedManagedPolicies": { - "shape": "S39" - } - } - } - }, - "GroupDetailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "GroupName": {}, - "GroupId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "GroupPolicyList": { - "shape": "S36" - }, - "AttachedManagedPolicies": { - "shape": "S39" - } - } - } - }, - "RoleDetailList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Path": {}, - "RoleName": {}, - "RoleId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "AssumeRolePolicyDocument": {}, - "InstanceProfileList": { - "shape": "S3f" - }, - "RolePolicyList": { - "shape": "S36" - }, - "AttachedManagedPolicies": { - "shape": "S39" - } - } - } - }, - "Policies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyId": {}, - "Arn": {}, - "Path": {}, - "DefaultVersionId": {}, - "AttachmentCount": { - "type": "integer" - }, - "IsAttachable": { - "type": "boolean" - }, - "Description": {}, - "CreateDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - }, - "PolicyVersionList": { - "shape": "S3i" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "GetAccountPasswordPolicy": { - "output": { - "resultWrapper": "GetAccountPasswordPolicyResult", - "type": "structure", - "required": [ - "PasswordPolicy" - ], - "members": { - "PasswordPolicy": { - "type": "structure", - "members": { - "MinimumPasswordLength": { - "type": "integer" - }, - "RequireSymbols": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireUppercaseCharacters": { - "type": "boolean" - }, - "RequireLowercaseCharacters": { - "type": "boolean" - }, - "AllowUsersToChangePassword": { - "type": "boolean" - }, - "ExpirePasswords": { - "type": "boolean" - }, - "MaxPasswordAge": { - "type": "integer" - }, - "PasswordReusePrevention": { - "type": "integer" - }, - "HardExpiry": { - "type": "boolean" - } - } - } - } - } - }, - "GetAccountSummary": { - "output": { - "resultWrapper": "GetAccountSummaryResult", - "type": "structure", - "members": { - "SummaryMap": { - "type": "map", - "key": {}, - "value": { - "type": "integer" - } - } - } - } - }, - "GetContextKeysForCustomPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyInputList" - ], - "members": { - "PolicyInputList": { - "shape": "S3u" - } - } - }, - "output": { - "shape": "S3v", - "resultWrapper": "GetContextKeysForCustomPolicyResult" - } - }, - "GetContextKeysForPrincipalPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicySourceArn" - ], - "members": { - "PolicySourceArn": {}, - "PolicyInputList": { - "shape": "S3u" - } - } - }, - "output": { - "shape": "S3v", - "resultWrapper": "GetContextKeysForPrincipalPolicyResult" - } - }, - "GetCredentialReport": { - "output": { - "resultWrapper": "GetCredentialReportResult", - "type": "structure", - "members": { - "Content": { - "type": "blob" - }, - "ReportFormat": {}, - "GeneratedTime": { - "type": "timestamp" - } - } - } - }, - "GetGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "GetGroupResult", - "type": "structure", - "required": [ - "Group", - "Users" - ], - "members": { - "Group": { - "shape": "Ss" - }, - "Users": { - "shape": "S44" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "GetGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyName" - ], - "members": { - "GroupName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "GetGroupPolicyResult", - "type": "structure", - "required": [ - "GroupName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "GroupName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "GetInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName" - ], - "members": { - "InstanceProfileName": {} - } - }, - "output": { - "resultWrapper": "GetInstanceProfileResult", - "type": "structure", - "required": [ - "InstanceProfile" - ], - "members": { - "InstanceProfile": { - "shape": "Sw" - } - } - } - }, - "GetLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {} - } - }, - "output": { - "resultWrapper": "GetLoginProfileResult", - "type": "structure", - "required": [ - "LoginProfile" - ], - "members": { - "LoginProfile": { - "shape": "S13" - } - } - } - }, - "GetOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn" - ], - "members": { - "OpenIDConnectProviderArn": {} - } - }, - "output": { - "resultWrapper": "GetOpenIDConnectProviderResult", - "type": "structure", - "members": { - "Url": {}, - "ClientIDList": { - "shape": "S16" - }, - "ThumbprintList": { - "shape": "S17" - }, - "CreateDate": { - "type": "timestamp" - } - } - } - }, - "GetPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {} - } - }, - "output": { - "resultWrapper": "GetPolicyResult", - "type": "structure", - "members": { - "Policy": { - "shape": "S1f" - } - } - } - }, - "GetPolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "VersionId" - ], - "members": { - "PolicyArn": {}, - "VersionId": {} - } - }, - "output": { - "resultWrapper": "GetPolicyVersionResult", - "type": "structure", - "members": { - "PolicyVersion": { - "shape": "S1k" - } - } - } - }, - "GetRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {} - } - }, - "output": { - "resultWrapper": "GetRoleResult", - "type": "structure", - "required": [ - "Role" - ], - "members": { - "Role": { - "shape": "Sy" - } - } - } - }, - "GetRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyName" - ], - "members": { - "RoleName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "GetRolePolicyResult", - "type": "structure", - "required": [ - "RoleName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "RoleName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "GetSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLProviderArn" - ], - "members": { - "SAMLProviderArn": {} - } - }, - "output": { - "resultWrapper": "GetSAMLProviderResult", - "type": "structure", - "members": { - "SAMLMetadataDocument": {}, - "CreateDate": { - "type": "timestamp" - }, - "ValidUntil": { - "type": "timestamp" - } - } - } - }, - "GetSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Encoding" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Encoding": {} - } - }, - "output": { - "resultWrapper": "GetSSHPublicKeyResult", - "type": "structure", - "members": { - "SSHPublicKey": { - "shape": "S4q" - } - } - } - }, - "GetServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName" - ], - "members": { - "ServerCertificateName": {} - } - }, - "output": { - "resultWrapper": "GetServerCertificateResult", - "type": "structure", - "required": [ - "ServerCertificate" - ], - "members": { - "ServerCertificate": { - "type": "structure", - "required": [ - "ServerCertificateMetadata", - "CertificateBody" - ], - "members": { - "ServerCertificateMetadata": { - "shape": "S4w" - }, - "CertificateBody": {}, - "CertificateChain": {} - } - } - } - } - }, - "GetUser": { - "input": { - "type": "structure", - "members": { - "UserName": {} - } - }, - "output": { - "resultWrapper": "GetUserResult", - "type": "structure", - "required": [ - "User" - ], - "members": { - "User": { - "shape": "S1t" - } - } - } - }, - "GetUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyName" - ], - "members": { - "UserName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "GetUserPolicyResult", - "type": "structure", - "required": [ - "UserName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "UserName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "ListAccessKeys": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAccessKeysResult", - "type": "structure", - "required": [ - "AccessKeyMetadata" - ], - "members": { - "AccessKeyMetadata": { - "type": "list", - "member": { - "type": "structure", - "members": { - "UserName": {}, - "AccessKeyId": {}, - "Status": {}, - "CreateDate": { - "type": "timestamp" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAccountAliases": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAccountAliasesResult", - "type": "structure", - "required": [ - "AccountAliases" - ], - "members": { - "AccountAliases": { - "type": "list", - "member": {} - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAttachedGroupPolicies": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAttachedGroupPoliciesResult", - "type": "structure", - "members": { - "AttachedPolicies": { - "shape": "S39" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAttachedRolePolicies": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAttachedRolePoliciesResult", - "type": "structure", - "members": { - "AttachedPolicies": { - "shape": "S39" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListAttachedUserPolicies": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListAttachedUserPoliciesResult", - "type": "structure", - "members": { - "AttachedPolicies": { - "shape": "S39" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListEntitiesForPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {}, - "EntityFilter": {}, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListEntitiesForPolicyResult", - "type": "structure", - "members": { - "PolicyGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GroupName": {}, - "GroupId": {} - } - } - }, - "PolicyUsers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "UserName": {}, - "UserId": {} - } - } - }, - "PolicyRoles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RoleName": {}, - "RoleId": {} - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListGroupPolicies": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListGroupPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S5q" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListGroups": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListGroupsResult", - "type": "structure", - "required": [ - "Groups" - ], - "members": { - "Groups": { - "shape": "S5u" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListGroupsForUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListGroupsForUserResult", - "type": "structure", - "required": [ - "Groups" - ], - "members": { - "Groups": { - "shape": "S5u" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListInstanceProfiles": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListInstanceProfilesResult", - "type": "structure", - "required": [ - "InstanceProfiles" - ], - "members": { - "InstanceProfiles": { - "shape": "S3f" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListInstanceProfilesForRole": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListInstanceProfilesForRoleResult", - "type": "structure", - "required": [ - "InstanceProfiles" - ], - "members": { - "InstanceProfiles": { - "shape": "S3f" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListMFADevices": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListMFADevicesResult", - "type": "structure", - "required": [ - "MFADevices" - ], - "members": { - "MFADevices": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber", - "EnableDate" - ], - "members": { - "UserName": {}, - "SerialNumber": {}, - "EnableDate": { - "type": "timestamp" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListOpenIDConnectProviders": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListOpenIDConnectProvidersResult", - "type": "structure", - "members": { - "OpenIDConnectProviderList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {} - } - } - } - } - } - }, - "ListPolicies": { - "input": { - "type": "structure", - "members": { - "Scope": {}, - "OnlyAttached": { - "type": "boolean" - }, - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListPoliciesResult", - "type": "structure", - "members": { - "Policies": { - "type": "list", - "member": { - "shape": "S1f" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListPolicyVersions": { - "input": { - "type": "structure", - "required": [ - "PolicyArn" - ], - "members": { - "PolicyArn": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListPolicyVersionsResult", - "type": "structure", - "members": { - "Versions": { - "shape": "S3i" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListRolePolicies": { - "input": { - "type": "structure", - "required": [ - "RoleName" - ], - "members": { - "RoleName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListRolePoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S5q" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListRoles": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListRolesResult", - "type": "structure", - "required": [ - "Roles" - ], - "members": { - "Roles": { - "shape": "Sx" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListSAMLProviders": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListSAMLProvidersResult", - "type": "structure", - "members": { - "SAMLProviderList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Arn": {}, - "ValidUntil": { - "type": "timestamp" - }, - "CreateDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "ListSSHPublicKeys": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListSSHPublicKeysResult", - "type": "structure", - "members": { - "SSHPublicKeys": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Status", - "UploadDate" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Status": {}, - "UploadDate": { - "type": "timestamp" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListServerCertificates": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListServerCertificatesResult", - "type": "structure", - "required": [ - "ServerCertificateMetadataList" - ], - "members": { - "ServerCertificateMetadataList": { - "type": "list", - "member": { - "shape": "S4w" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListSigningCertificates": { - "input": { - "type": "structure", - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListSigningCertificatesResult", - "type": "structure", - "required": [ - "Certificates" - ], - "members": { - "Certificates": { - "type": "list", - "member": { - "shape": "S6x" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListUserPolicies": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListUserPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S5q" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListUsers": { - "input": { - "type": "structure", - "members": { - "PathPrefix": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListUsersResult", - "type": "structure", - "required": [ - "Users" - ], - "members": { - "Users": { - "shape": "S44" - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "ListVirtualMFADevices": { - "input": { - "type": "structure", - "members": { - "AssignmentStatus": {}, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListVirtualMFADevicesResult", - "type": "structure", - "required": [ - "VirtualMFADevices" - ], - "members": { - "VirtualMFADevices": { - "type": "list", - "member": { - "shape": "S1x" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - } - }, - "PutGroupPolicy": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "GroupName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "PutRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "RoleName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "PutUserPolicy": { - "input": { - "type": "structure", - "required": [ - "UserName", - "PolicyName", - "PolicyDocument" - ], - "members": { - "UserName": {}, - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "RemoveClientIDFromOpenIDConnectProvider": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn", - "ClientID" - ], - "members": { - "OpenIDConnectProviderArn": {}, - "ClientID": {} - } - } - }, - "RemoveRoleFromInstanceProfile": { - "input": { - "type": "structure", - "required": [ - "InstanceProfileName", - "RoleName" - ], - "members": { - "InstanceProfileName": {}, - "RoleName": {} - } - } - }, - "RemoveUserFromGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName", - "UserName" - ], - "members": { - "GroupName": {}, - "UserName": {} - } - } - }, - "ResyncMFADevice": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SerialNumber", - "AuthenticationCode1", - "AuthenticationCode2" - ], - "members": { - "UserName": {}, - "SerialNumber": {}, - "AuthenticationCode1": {}, - "AuthenticationCode2": {} - } - } - }, - "SetDefaultPolicyVersion": { - "input": { - "type": "structure", - "required": [ - "PolicyArn", - "VersionId" - ], - "members": { - "PolicyArn": {}, - "VersionId": {} - } - } - }, - "SimulateCustomPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicyInputList", - "ActionNames" - ], - "members": { - "PolicyInputList": { - "shape": "S3u" - }, - "ActionNames": { - "shape": "S7f" - }, - "ResourceArns": { - "shape": "S7h" - }, - "ResourcePolicy": {}, - "ResourceOwner": {}, - "CallerArn": {}, - "ContextEntries": { - "shape": "S7j" - }, - "ResourceHandlingOption": {}, - "MaxItems": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "shape": "S7p", - "resultWrapper": "SimulateCustomPolicyResult" - } - }, - "SimulatePrincipalPolicy": { - "input": { - "type": "structure", - "required": [ - "PolicySourceArn", - "ActionNames" - ], - "members": { - "PolicySourceArn": {}, - "PolicyInputList": { - "shape": "S3u" - }, - "ActionNames": { - "shape": "S7f" - }, - "ResourceArns": { - "shape": "S7h" - }, - "ResourcePolicy": {}, - "ResourceOwner": {}, - "CallerArn": {}, - "ContextEntries": { - "shape": "S7j" - }, - "ResourceHandlingOption": {}, - "MaxItems": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "shape": "S7p", - "resultWrapper": "SimulatePrincipalPolicyResult" - } - }, - "UpdateAccessKey": { - "input": { - "type": "structure", - "required": [ - "AccessKeyId", - "Status" - ], - "members": { - "UserName": {}, - "AccessKeyId": {}, - "Status": {} - } - } - }, - "UpdateAccountPasswordPolicy": { - "input": { - "type": "structure", - "members": { - "MinimumPasswordLength": { - "type": "integer" - }, - "RequireSymbols": { - "type": "boolean" - }, - "RequireNumbers": { - "type": "boolean" - }, - "RequireUppercaseCharacters": { - "type": "boolean" - }, - "RequireLowercaseCharacters": { - "type": "boolean" - }, - "AllowUsersToChangePassword": { - "type": "boolean" - }, - "MaxPasswordAge": { - "type": "integer" - }, - "PasswordReusePrevention": { - "type": "integer" - }, - "HardExpiry": { - "type": "boolean" - } - } - } - }, - "UpdateAssumeRolePolicy": { - "input": { - "type": "structure", - "required": [ - "RoleName", - "PolicyDocument" - ], - "members": { - "RoleName": {}, - "PolicyDocument": {} - } - } - }, - "UpdateGroup": { - "input": { - "type": "structure", - "required": [ - "GroupName" - ], - "members": { - "GroupName": {}, - "NewPath": {}, - "NewGroupName": {} - } - } - }, - "UpdateLoginProfile": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "Password": { - "shape": "Sf" - }, - "PasswordResetRequired": { - "type": "boolean" - } - } - } - }, - "UpdateOpenIDConnectProviderThumbprint": { - "input": { - "type": "structure", - "required": [ - "OpenIDConnectProviderArn", - "ThumbprintList" - ], - "members": { - "OpenIDConnectProviderArn": {}, - "ThumbprintList": { - "shape": "S17" - } - } - } - }, - "UpdateSAMLProvider": { - "input": { - "type": "structure", - "required": [ - "SAMLMetadataDocument", - "SAMLProviderArn" - ], - "members": { - "SAMLMetadataDocument": {}, - "SAMLProviderArn": {} - } - }, - "output": { - "resultWrapper": "UpdateSAMLProviderResult", - "type": "structure", - "members": { - "SAMLProviderArn": {} - } - } - }, - "UpdateSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Status" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Status": {} - } - } - }, - "UpdateServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName" - ], - "members": { - "ServerCertificateName": {}, - "NewPath": {}, - "NewServerCertificateName": {} - } - } - }, - "UpdateSigningCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateId", - "Status" - ], - "members": { - "UserName": {}, - "CertificateId": {}, - "Status": {} - } - } - }, - "UpdateUser": { - "input": { - "type": "structure", - "required": [ - "UserName" - ], - "members": { - "UserName": {}, - "NewPath": {}, - "NewUserName": {} - } - } - }, - "UploadSSHPublicKey": { - "input": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyBody" - ], - "members": { - "UserName": {}, - "SSHPublicKeyBody": {} - } - }, - "output": { - "resultWrapper": "UploadSSHPublicKeyResult", - "type": "structure", - "members": { - "SSHPublicKey": { - "shape": "S4q" - } - } - } - }, - "UploadServerCertificate": { - "input": { - "type": "structure", - "required": [ - "ServerCertificateName", - "CertificateBody", - "PrivateKey" - ], - "members": { - "Path": {}, - "ServerCertificateName": {}, - "CertificateBody": {}, - "PrivateKey": { - "type": "string", - "sensitive": true - }, - "CertificateChain": {} - } - }, - "output": { - "resultWrapper": "UploadServerCertificateResult", - "type": "structure", - "members": { - "ServerCertificateMetadata": { - "shape": "S4w" - } - } - } - }, - "UploadSigningCertificate": { - "input": { - "type": "structure", - "required": [ - "CertificateBody" - ], - "members": { - "UserName": {}, - "CertificateBody": {} - } - }, - "output": { - "resultWrapper": "UploadSigningCertificateResult", - "type": "structure", - "required": [ - "Certificate" - ], - "members": { - "Certificate": { - "shape": "S6x" - } - } - } - } - }, - "shapes": { - "Sf": { - "type": "string", - "sensitive": true - }, - "Ss": { - "type": "structure", - "required": [ - "Path", - "GroupName", - "GroupId", - "Arn", - "CreateDate" - ], - "members": { - "Path": {}, - "GroupName": {}, - "GroupId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - } - } - }, - "Sw": { - "type": "structure", - "required": [ - "Path", - "InstanceProfileName", - "InstanceProfileId", - "Arn", - "CreateDate", - "Roles" - ], - "members": { - "Path": {}, - "InstanceProfileName": {}, - "InstanceProfileId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "Roles": { - "shape": "Sx" - } - } - }, - "Sx": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "Sy": { - "type": "structure", - "required": [ - "Path", - "RoleName", - "RoleId", - "Arn", - "CreateDate" - ], - "members": { - "Path": {}, - "RoleName": {}, - "RoleId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "AssumeRolePolicyDocument": {} - } - }, - "S13": { - "type": "structure", - "required": [ - "UserName", - "CreateDate" - ], - "members": { - "UserName": {}, - "CreateDate": { - "type": "timestamp" - }, - "PasswordResetRequired": { - "type": "boolean" - } - } - }, - "S16": { - "type": "list", - "member": {} - }, - "S17": { - "type": "list", - "member": {} - }, - "S1f": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyId": {}, - "Arn": {}, - "Path": {}, - "DefaultVersionId": {}, - "AttachmentCount": { - "type": "integer" - }, - "IsAttachable": { - "type": "boolean" - }, - "Description": {}, - "CreateDate": { - "type": "timestamp" - }, - "UpdateDate": { - "type": "timestamp" - } - } - }, - "S1k": { - "type": "structure", - "members": { - "Document": {}, - "VersionId": {}, - "IsDefaultVersion": { - "type": "boolean" - }, - "CreateDate": { - "type": "timestamp" - } - } - }, - "S1t": { - "type": "structure", - "required": [ - "Path", - "UserName", - "UserId", - "Arn", - "CreateDate" - ], - "members": { - "Path": {}, - "UserName": {}, - "UserId": {}, - "Arn": {}, - "CreateDate": { - "type": "timestamp" - }, - "PasswordLastUsed": { - "type": "timestamp" - } - } - }, - "S1x": { - "type": "structure", - "required": [ - "SerialNumber" - ], - "members": { - "SerialNumber": {}, - "Base32StringSeed": { - "shape": "S1z" - }, - "QRCodePNG": { - "shape": "S1z" - }, - "User": { - "shape": "S1t" - }, - "EnableDate": { - "type": "timestamp" - } - } - }, - "S1z": { - "type": "blob", - "sensitive": true - }, - "S36": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyDocument": {} - } - } - }, - "S39": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyArn": {} - } - } - }, - "S3f": { - "type": "list", - "member": { - "shape": "Sw" - } - }, - "S3i": { - "type": "list", - "member": { - "shape": "S1k" - } - }, - "S3u": { - "type": "list", - "member": {} - }, - "S3v": { - "type": "structure", - "members": { - "ContextKeyNames": { - "shape": "S3w" - } - } - }, - "S3w": { - "type": "list", - "member": {} - }, - "S44": { - "type": "list", - "member": { - "shape": "S1t" - } - }, - "S4q": { - "type": "structure", - "required": [ - "UserName", - "SSHPublicKeyId", - "Fingerprint", - "SSHPublicKeyBody", - "Status" - ], - "members": { - "UserName": {}, - "SSHPublicKeyId": {}, - "Fingerprint": {}, - "SSHPublicKeyBody": {}, - "Status": {}, - "UploadDate": { - "type": "timestamp" - } - } - }, - "S4w": { - "type": "structure", - "required": [ - "Path", - "ServerCertificateName", - "ServerCertificateId", - "Arn" - ], - "members": { - "Path": {}, - "ServerCertificateName": {}, - "ServerCertificateId": {}, - "Arn": {}, - "UploadDate": { - "type": "timestamp" - }, - "Expiration": { - "type": "timestamp" - } - } - }, - "S5q": { - "type": "list", - "member": {} - }, - "S5u": { - "type": "list", - "member": { - "shape": "Ss" - } - }, - "S6x": { - "type": "structure", - "required": [ - "UserName", - "CertificateId", - "CertificateBody", - "Status" - ], - "members": { - "UserName": {}, - "CertificateId": {}, - "CertificateBody": {}, - "Status": {}, - "UploadDate": { - "type": "timestamp" - } - } - }, - "S7f": { - "type": "list", - "member": {} - }, - "S7h": { - "type": "list", - "member": {} - }, - "S7j": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ContextKeyName": {}, - "ContextKeyValues": { - "type": "list", - "member": {} - }, - "ContextKeyType": {} - } - } - }, - "S7p": { - "type": "structure", - "members": { - "EvaluationResults": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "EvalActionName", - "EvalDecision" - ], - "members": { - "EvalActionName": {}, - "EvalResourceName": {}, - "EvalDecision": {}, - "MatchedStatements": { - "shape": "S7t" - }, - "MissingContextValues": { - "shape": "S3w" - }, - "EvalDecisionDetails": { - "shape": "S80" - }, - "ResourceSpecificResults": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "EvalResourceName", - "EvalResourceDecision" - ], - "members": { - "EvalResourceName": {}, - "EvalResourceDecision": {}, - "MatchedStatements": { - "shape": "S7t" - }, - "MissingContextValues": { - "shape": "S3w" - }, - "EvalDecisionDetails": { - "shape": "S80" - } - } - } - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "Marker": {} - } - }, - "S7t": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SourcePolicyId": {}, - "SourcePolicyType": {}, - "StartPosition": { - "shape": "S7x" - }, - "EndPosition": { - "shape": "S7x" - } - } - } - }, - "S7x": { - "type": "structure", - "members": { - "Line": { - "type": "integer" - }, - "Column": { - "type": "integer" - } - } - }, - "S80": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json b/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json deleted file mode 100644 index c476fe1..0000000 --- a/node_modules/aws-sdk/apis/iam-2010-05-08.paginators.json +++ /dev/null @@ -1,198 +0,0 @@ -{ - "pagination": { - "GetAccountAuthorizationDetails": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": [ - "UserDetailList", - "GroupDetailList", - "RoleDetailList", - "Policies" - ] - }, - "GetGroup": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Users" - }, - "ListAccessKeys": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AccessKeyMetadata" - }, - "ListAccountAliases": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AccountAliases" - }, - "ListAttachedGroupPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AttachedPolicies" - }, - "ListAttachedRolePolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AttachedPolicies" - }, - "ListAttachedUserPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "AttachedPolicies" - }, - "ListEntitiesForPolicy": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": [ - "PolicyGroups", - "PolicyUsers", - "PolicyRoles" - ] - }, - "ListGroupPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "PolicyNames" - }, - "ListGroups": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Groups" - }, - "ListGroupsForUser": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Groups" - }, - "ListInstanceProfiles": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "InstanceProfiles" - }, - "ListInstanceProfilesForRole": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "InstanceProfiles" - }, - "ListMFADevices": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "MFADevices" - }, - "ListPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Policies" - }, - "ListPolicyVersions": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Versions" - }, - "ListRolePolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "PolicyNames" - }, - "ListRoles": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Roles" - }, - "ListSAMLProviders": { - "result_key": "SAMLProviderList" - }, - "ListServerCertificates": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "ServerCertificateMetadataList" - }, - "ListSigningCertificates": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Certificates" - }, - "ListSSHPublicKeys": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "SSHPublicKeys" - }, - "ListUserPolicies": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "PolicyNames" - }, - "ListUsers": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "Users" - }, - "ListVirtualMFADevices": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "VirtualMFADevices" - }, - "SimulateCustomPolicy": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "EvaluationResults" - }, - "SimulatePrincipalPolicy": { - "input_token": "Marker", - "limit_key": "MaxItems", - "more_results": "IsTruncated", - "output_token": "Marker", - "result_key": "EvaluationResults" - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json b/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json deleted file mode 100644 index ba45382..0000000 --- a/node_modules/aws-sdk/apis/iam-2010-05-08.waiters2.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "version": 2, - "waiters": { - "InstanceProfileExists": { - "delay": 1, - "operation": "GetInstanceProfile", - "maxAttempts": 40, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "state": "retry", - "matcher": "status", - "expected": 404 - } - ] - }, - "UserExists": { - "delay": 1, - "operation": "GetUser", - "maxAttempts": 20, - "acceptors": [ - { - "state": "success", - "matcher": "status", - "expected": 200 - }, - { - "state": "retry", - "matcher": "error", - "expected": "NoSuchEntity" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json b/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json deleted file mode 100644 index 429d4e6..0000000 --- a/node_modules/aws-sdk/apis/importexport-2010-06-01.min.json +++ /dev/null @@ -1,242 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-06-01", - "endpointPrefix": "importexport", - "globalEndpoint": "importexport.amazonaws.com", - "serviceFullName": "AWS Import/Export", - "signatureVersion": "v2", - "xmlNamespace": "http://importexport.amazonaws.com/doc/2010-06-01/", - "protocol": "query" - }, - "operations": { - "CancelJob": { - "http": { - "requestUri": "/?Operation=CancelJob" - }, - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "CancelJobResult", - "type": "structure", - "members": { - "Success": { - "type": "boolean" - } - } - } - }, - "CreateJob": { - "http": { - "requestUri": "/?Operation=CreateJob" - }, - "input": { - "type": "structure", - "required": [ - "JobType", - "Manifest", - "ValidateOnly" - ], - "members": { - "JobType": {}, - "Manifest": {}, - "ManifestAddendum": {}, - "ValidateOnly": { - "type": "boolean" - }, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "CreateJobResult", - "type": "structure", - "members": { - "JobId": {}, - "JobType": {}, - "Signature": {}, - "SignatureFileContents": {}, - "WarningMessage": {}, - "ArtifactList": { - "shape": "Sf" - } - } - } - }, - "GetShippingLabel": { - "http": { - "requestUri": "/?Operation=GetShippingLabel" - }, - "input": { - "type": "structure", - "required": [ - "jobIds" - ], - "members": { - "jobIds": { - "type": "list", - "member": {} - }, - "name": {}, - "company": {}, - "phoneNumber": {}, - "country": {}, - "stateOrProvince": {}, - "city": {}, - "postalCode": {}, - "street1": {}, - "street2": {}, - "street3": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "GetShippingLabelResult", - "type": "structure", - "members": { - "ShippingLabelURL": {}, - "Warning": {} - } - } - }, - "GetStatus": { - "http": { - "requestUri": "/?Operation=GetStatus" - }, - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "GetStatusResult", - "type": "structure", - "members": { - "JobId": {}, - "JobType": {}, - "LocationCode": {}, - "LocationMessage": {}, - "ProgressCode": {}, - "ProgressMessage": {}, - "Carrier": {}, - "TrackingNumber": {}, - "LogBucket": {}, - "LogKey": {}, - "ErrorCount": { - "type": "integer" - }, - "Signature": {}, - "SignatureFileContents": {}, - "CurrentManifest": {}, - "CreationDate": { - "type": "timestamp" - }, - "ArtifactList": { - "shape": "Sf" - } - } - } - }, - "ListJobs": { - "http": { - "requestUri": "/?Operation=ListJobs" - }, - "input": { - "type": "structure", - "members": { - "MaxJobs": { - "type": "integer" - }, - "Marker": {}, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "ListJobsResult", - "type": "structure", - "members": { - "Jobs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "JobId": {}, - "CreationDate": { - "type": "timestamp" - }, - "IsCanceled": { - "type": "boolean" - }, - "JobType": {} - } - } - }, - "IsTruncated": { - "type": "boolean" - } - } - } - }, - "UpdateJob": { - "http": { - "requestUri": "/?Operation=UpdateJob" - }, - "input": { - "type": "structure", - "required": [ - "JobId", - "Manifest", - "JobType", - "ValidateOnly" - ], - "members": { - "JobId": {}, - "Manifest": {}, - "JobType": {}, - "ValidateOnly": { - "type": "boolean" - }, - "APIVersion": {} - } - }, - "output": { - "resultWrapper": "UpdateJobResult", - "type": "structure", - "members": { - "Success": { - "type": "boolean" - }, - "WarningMessage": {}, - "ArtifactList": { - "shape": "Sf" - } - } - } - } - }, - "shapes": { - "Sf": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Description": {}, - "URL": {} - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json b/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json deleted file mode 100644 index 702385e..0000000 --- a/node_modules/aws-sdk/apis/importexport-2010-06-01.paginators.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "pagination": { - "ListJobs": { - "input_token": "Marker", - "output_token": "Jobs[-1].JobId", - "more_results": "IsTruncated", - "limit_key": "MaxJobs", - "result_key": "Jobs" - } - } -} diff --git a/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json b/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json deleted file mode 100644 index f7ca893..0000000 --- a/node_modules/aws-sdk/apis/inspector-2016-02-16.min.json +++ /dev/null @@ -1,1248 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-02-16", - "endpointPrefix": "inspector", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Inspector", - "signatureVersion": "v4", - "targetPrefix": "InspectorService" - }, - "operations": { - "AddAttributesToFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns", - "attributes" - ], - "members": { - "findingArns": { - "shape": "S2" - }, - "attributes": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "required": [ - "failedItems" - ], - "members": { - "failedItems": { - "shape": "S9" - } - } - } - }, - "CreateAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetName", - "resourceGroupArn" - ], - "members": { - "assessmentTargetName": {}, - "resourceGroupArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargetArn" - ], - "members": { - "assessmentTargetArn": {} - } - } - }, - "CreateAssessmentTemplate": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn", - "assessmentTemplateName", - "durationInSeconds", - "rulesPackageArns" - ], - "members": { - "assessmentTargetArn": {}, - "assessmentTemplateName": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "shape": "Sj" - }, - "userAttributesForFindings": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {} - } - } - }, - "CreateResourceGroup": { - "input": { - "type": "structure", - "required": [ - "resourceGroupTags" - ], - "members": { - "resourceGroupTags": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "required": [ - "resourceGroupArn" - ], - "members": { - "resourceGroupArn": {} - } - } - }, - "DeleteAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "DeleteAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn" - ], - "members": { - "assessmentTargetArn": {} - } - } - }, - "DeleteAssessmentTemplate": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {} - } - } - }, - "DescribeAssessmentRuns": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArns" - ], - "members": { - "assessmentRunArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRuns", - "failedItems" - ], - "members": { - "assessmentRuns": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "assessmentTemplateArn", - "state", - "durationInSeconds", - "rulesPackageArns", - "userAttributesForFindings", - "createdAt", - "stateChangedAt", - "dataCollected", - "stateChanges", - "notifications" - ], - "members": { - "arn": {}, - "name": {}, - "assessmentTemplateArn": {}, - "state": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "type": "list", - "member": {} - }, - "userAttributesForFindings": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - }, - "startedAt": { - "type": "timestamp" - }, - "completedAt": { - "type": "timestamp" - }, - "stateChangedAt": { - "type": "timestamp" - }, - "dataCollected": { - "type": "boolean" - }, - "stateChanges": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "stateChangedAt", - "state" - ], - "members": { - "stateChangedAt": { - "type": "timestamp" - }, - "state": {} - } - } - }, - "notifications": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "date", - "event", - "error" - ], - "members": { - "date": { - "type": "timestamp" - }, - "event": {}, - "message": {}, - "error": { - "type": "boolean" - }, - "snsTopicArn": {}, - "snsPublishStatusCode": {} - } - } - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeAssessmentTargets": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArns" - ], - "members": { - "assessmentTargetArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargets", - "failedItems" - ], - "members": { - "assessmentTargets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "resourceGroupArn", - "createdAt", - "updatedAt" - ], - "members": { - "arn": {}, - "name": {}, - "resourceGroupArn": {}, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeAssessmentTemplates": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArns" - ], - "members": { - "assessmentTemplateArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplates", - "failedItems" - ], - "members": { - "assessmentTemplates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "assessmentTargetArn", - "durationInSeconds", - "rulesPackageArns", - "userAttributesForFindings", - "createdAt" - ], - "members": { - "arn": {}, - "name": {}, - "assessmentTargetArn": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "shape": "Sj" - }, - "userAttributesForFindings": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeCrossAccountAccessRole": { - "output": { - "type": "structure", - "required": [ - "roleArn", - "valid", - "registeredAt" - ], - "members": { - "roleArn": {}, - "valid": { - "type": "boolean" - }, - "registeredAt": { - "type": "timestamp" - } - } - } - }, - "DescribeFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns" - ], - "members": { - "findingArns": { - "shape": "Sv" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "required": [ - "findings", - "failedItems" - ], - "members": { - "findings": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "attributes", - "userAttributes", - "createdAt", - "updatedAt" - ], - "members": { - "arn": {}, - "schemaVersion": { - "type": "integer" - }, - "service": {}, - "serviceAttributes": { - "type": "structure", - "required": [ - "schemaVersion" - ], - "members": { - "schemaVersion": { - "type": "integer" - }, - "assessmentRunArn": {}, - "rulesPackageArn": {} - } - }, - "assetType": {}, - "assetAttributes": { - "type": "structure", - "required": [ - "schemaVersion" - ], - "members": { - "schemaVersion": { - "type": "integer" - }, - "agentId": {}, - "autoScalingGroup": {}, - "amiId": {}, - "hostname": {}, - "ipv4Addresses": { - "type": "list", - "member": {} - } - } - }, - "id": {}, - "title": {}, - "description": {}, - "recommendation": {}, - "severity": {}, - "numericSeverity": { - "type": "double" - }, - "confidence": { - "type": "integer" - }, - "indicatorOfCompromise": { - "type": "boolean" - }, - "attributes": { - "shape": "S24" - }, - "userAttributes": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeResourceGroups": { - "input": { - "type": "structure", - "required": [ - "resourceGroupArns" - ], - "members": { - "resourceGroupArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "resourceGroups", - "failedItems" - ], - "members": { - "resourceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "tags", - "createdAt" - ], - "members": { - "arn": {}, - "tags": { - "shape": "Sm" - }, - "createdAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeRulesPackages": { - "input": { - "type": "structure", - "required": [ - "rulesPackageArns" - ], - "members": { - "rulesPackageArns": { - "shape": "Sv" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "required": [ - "rulesPackages", - "failedItems" - ], - "members": { - "rulesPackages": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "version", - "provider" - ], - "members": { - "arn": {}, - "name": {}, - "version": {}, - "provider": {}, - "description": {} - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "GetTelemetryMetadata": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "telemetryMetadata" - ], - "members": { - "telemetryMetadata": { - "shape": "S2i" - } - } - } - }, - "ListAssessmentRunAgents": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {}, - "filter": { - "type": "structure", - "required": [ - "agentHealths", - "agentHealthCodes" - ], - "members": { - "agentHealths": { - "type": "list", - "member": {} - }, - "agentHealthCodes": { - "type": "list", - "member": {} - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunAgents" - ], - "members": { - "assessmentRunAgents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "agentId", - "assessmentRunArn", - "agentHealth", - "agentHealthCode", - "telemetryMetadata" - ], - "members": { - "agentId": {}, - "assessmentRunArn": {}, - "agentHealth": {}, - "agentHealthCode": {}, - "agentHealthDetails": {}, - "autoScalingGroup": {}, - "telemetryMetadata": { - "shape": "S2i" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListAssessmentRuns": { - "input": { - "type": "structure", - "members": { - "assessmentTemplateArns": { - "shape": "S2y" - }, - "filter": { - "type": "structure", - "members": { - "namePattern": {}, - "states": { - "type": "list", - "member": {} - }, - "durationRange": { - "shape": "S32" - }, - "rulesPackageArns": { - "shape": "S33" - }, - "startTimeRange": { - "shape": "S34" - }, - "completionTimeRange": { - "shape": "S34" - }, - "stateChangeTimeRange": { - "shape": "S34" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunArns" - ], - "members": { - "assessmentRunArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListAssessmentTargets": { - "input": { - "type": "structure", - "members": { - "filter": { - "type": "structure", - "members": { - "assessmentTargetNamePattern": {} - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargetArns" - ], - "members": { - "assessmentTargetArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListAssessmentTemplates": { - "input": { - "type": "structure", - "members": { - "assessmentTargetArns": { - "shape": "S2y" - }, - "filter": { - "type": "structure", - "members": { - "namePattern": {}, - "durationRange": { - "shape": "S32" - }, - "rulesPackageArns": { - "shape": "S33" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplateArns" - ], - "members": { - "assessmentTemplateArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "resourceArn": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "subscriptions" - ], - "members": { - "subscriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "resourceArn", - "topicArn", - "eventSubscriptions" - ], - "members": { - "resourceArn": {}, - "topicArn": {}, - "eventSubscriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "event", - "subscribedAt" - ], - "members": { - "event": {}, - "subscribedAt": { - "type": "timestamp" - } - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "ListFindings": { - "input": { - "type": "structure", - "members": { - "assessmentRunArns": { - "shape": "S2y" - }, - "filter": { - "type": "structure", - "members": { - "agentIds": { - "type": "list", - "member": {} - }, - "autoScalingGroups": { - "type": "list", - "member": {} - }, - "ruleNames": { - "type": "list", - "member": {} - }, - "severities": { - "type": "list", - "member": {} - }, - "rulesPackageArns": { - "shape": "S33" - }, - "attributes": { - "shape": "S24" - }, - "userAttributes": { - "shape": "S24" - }, - "creationTimeRange": { - "shape": "S34" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "findingArns" - ], - "members": { - "findingArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListRulesPackages": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "rulesPackageArns" - ], - "members": { - "rulesPackageArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn" - ], - "members": { - "resourceArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "tags" - ], - "members": { - "tags": { - "shape": "S3w" - } - } - } - }, - "PreviewAgents": { - "input": { - "type": "structure", - "required": [ - "previewAgentsArn" - ], - "members": { - "previewAgentsArn": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "agentPreviews" - ], - "members": { - "agentPreviews": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "agentId" - ], - "members": { - "agentId": {}, - "autoScalingGroup": {} - } - } - }, - "nextToken": {} - } - } - }, - "RegisterCrossAccountAccessRole": { - "input": { - "type": "structure", - "required": [ - "roleArn" - ], - "members": { - "roleArn": {} - } - } - }, - "RemoveAttributesFromFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns", - "attributeKeys" - ], - "members": { - "findingArns": { - "shape": "S2" - }, - "attributeKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "failedItems" - ], - "members": { - "failedItems": { - "shape": "S9" - } - } - } - }, - "SetTagsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn" - ], - "members": { - "resourceArn": {}, - "tags": { - "shape": "S3w" - } - } - } - }, - "StartAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {}, - "assessmentRunName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "StopAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "SubscribeToEvent": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "event", - "topicArn" - ], - "members": { - "resourceArn": {}, - "event": {}, - "topicArn": {} - } - } - }, - "UnsubscribeFromEvent": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "event", - "topicArn" - ], - "members": { - "resourceArn": {}, - "event": {}, - "topicArn": {} - } - } - }, - "UpdateAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn", - "assessmentTargetName", - "resourceGroupArn" - ], - "members": { - "assessmentTargetArn": {}, - "assessmentTargetName": {}, - "resourceGroupArn": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S5": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - }, - "S9": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "failureCode", - "retryable" - ], - "members": { - "failureCode": {}, - "retryable": { - "type": "boolean" - } - } - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sv": { - "type": "list", - "member": {} - }, - "S24": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S2i": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "messageType", - "count" - ], - "members": { - "messageType": {}, - "count": { - "type": "long" - }, - "dataSize": { - "type": "long" - } - } - } - }, - "S2y": { - "type": "list", - "member": {} - }, - "S32": { - "type": "structure", - "members": { - "minSeconds": { - "type": "integer" - }, - "maxSeconds": { - "type": "integer" - } - } - }, - "S33": { - "type": "list", - "member": {} - }, - "S34": { - "type": "structure", - "members": { - "beginDate": { - "type": "timestamp" - }, - "endDate": { - "type": "timestamp" - } - } - }, - "S36": { - "type": "list", - "member": {} - }, - "S3w": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iot-2015-05-28.min.json b/node_modules/aws-sdk/apis/iot-2015-05-28.min.json deleted file mode 100644 index 56d4979..0000000 --- a/node_modules/aws-sdk/apis/iot-2015-05-28.min.json +++ /dev/null @@ -1,1934 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-05-28", - "endpointPrefix": "iot", - "serviceFullName": "AWS IoT", - "signatureVersion": "v4", - "signingName": "execute-api", - "protocol": "rest-json" - }, - "operations": { - "AcceptCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/accept-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - } - }, - "AttachPrincipalPolicy": { - "http": { - "method": "PUT", - "requestUri": "/principal-policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "principal" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - } - } - } - }, - "AttachThingPrincipal": { - "http": { - "method": "PUT", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "principal" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/cancel-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - } - }, - "CreateCertificateFromCsr": { - "http": { - "requestUri": "/certificates" - }, - "input": { - "type": "structure", - "required": [ - "certificateSigningRequest" - ], - "members": { - "certificateSigningRequest": {}, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "certificatePem": {} - } - } - }, - "CreateKeysAndCertificate": { - "http": { - "requestUri": "/keys-and-certificate" - }, - "input": { - "type": "structure", - "members": { - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "certificatePem": {}, - "keyPair": { - "type": "structure", - "members": { - "PublicKey": {}, - "PrivateKey": { - "type": "string", - "sensitive": true - } - } - } - } - } - }, - "CreatePolicy": { - "http": { - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyDocument" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyDocument": {} - } - }, - "output": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {}, - "policyDocument": {}, - "policyVersionId": {} - } - } - }, - "CreatePolicyVersion": { - "http": { - "requestUri": "/policies/{policyName}/version" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyDocument" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyDocument": {}, - "setAsDefault": { - "location": "querystring", - "locationName": "setAsDefault", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyArn": {}, - "policyDocument": {}, - "policyVersionId": {}, - "isDefaultVersion": { - "type": "boolean" - } - } - } - }, - "CreateThing": { - "http": { - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "thingTypeName": {}, - "attributePayload": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingName": {}, - "thingArn": {} - } - } - }, - "CreateThingType": { - "http": { - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - }, - "thingTypeProperties": { - "shape": "S14" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeArn": {} - } - } - }, - "CreateTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName", - "topicRulePayload" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - }, - "topicRulePayload": { - "shape": "S1b" - } - }, - "payload": "topicRulePayload" - } - }, - "DeleteCACertificate": { - "http": { - "method": "DELETE", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteCertificate": { - "http": { - "method": "DELETE", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - } - }, - "DeletePolicy": { - "http": { - "method": "DELETE", - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - } - }, - "DeletePolicyVersion": { - "http": { - "method": "DELETE", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - } - }, - "DeleteRegistrationCode": { - "http": { - "method": "DELETE", - "requestUri": "/registrationcode" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteThing": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "expectedVersion": { - "location": "querystring", - "locationName": "expectedVersion", - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteThingType": { - "http": { - "method": "DELETE", - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTopicRule": { - "http": { - "method": "DELETE", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - }, - "required": [ - "ruleName" - ] - } - }, - "DeprecateThingType": { - "http": { - "requestUri": "/thing-types/{thingTypeName}/deprecate" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - }, - "undoDeprecate": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeCACertificate": { - "http": { - "method": "GET", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateDescription": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "certificatePem": {}, - "ownedBy": {}, - "creationDate": { - "type": "timestamp" - }, - "autoRegistrationStatus": {} - } - } - } - } - }, - "DescribeCertificate": { - "http": { - "method": "GET", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateDescription": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "caCertificateId": {}, - "status": {}, - "certificatePem": {}, - "ownedBy": {}, - "previousOwnedBy": {}, - "creationDate": { - "type": "timestamp" - }, - "lastModifiedDate": { - "type": "timestamp" - }, - "transferData": { - "type": "structure", - "members": { - "transferMessage": {}, - "rejectReason": {}, - "transferDate": { - "type": "timestamp" - }, - "acceptDate": { - "type": "timestamp" - }, - "rejectDate": { - "type": "timestamp" - } - } - } - } - } - } - } - }, - "DescribeEndpoint": { - "http": { - "method": "GET", - "requestUri": "/endpoint" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "endpointAddress": {} - } - } - }, - "DescribeThing": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "defaultClientId": {}, - "thingName": {}, - "thingTypeName": {}, - "attributes": { - "shape": "Sx" - }, - "version": { - "type": "long" - } - } - } - }, - "DescribeThingType": { - "http": { - "method": "GET", - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeProperties": { - "shape": "S14" - }, - "thingTypeMetadata": { - "shape": "S3s" - } - } - } - }, - "DetachPrincipalPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/principal-policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "principal" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - } - } - } - }, - "DetachThingPrincipal": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "principal" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}/disable" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "EnableTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}/enable" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "GetLoggingOptions": { - "http": { - "method": "GET", - "requestUri": "/loggingOptions" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "roleArn": {}, - "logLevel": {} - } - } - }, - "GetPolicy": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {}, - "policyDocument": {}, - "defaultVersionId": {} - } - } - }, - "GetPolicyVersion": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyArn": {}, - "policyName": {}, - "policyDocument": {}, - "policyVersionId": {}, - "isDefaultVersion": { - "type": "boolean" - } - } - } - }, - "GetRegistrationCode": { - "http": { - "method": "GET", - "requestUri": "/registrationcode" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "registrationCode": {} - } - } - }, - "GetTopicRule": { - "http": { - "method": "GET", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - }, - "output": { - "type": "structure", - "members": { - "ruleArn": {}, - "rule": { - "type": "structure", - "members": { - "ruleName": {}, - "sql": {}, - "description": {}, - "createdAt": { - "type": "timestamp" - }, - "actions": { - "shape": "S1e" - }, - "ruleDisabled": { - "type": "boolean" - }, - "awsIotSqlVersion": {} - } - } - } - } - }, - "ListCACertificates": { - "http": { - "method": "GET", - "requestUri": "/cacertificates" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextMarker": {} - } - } - }, - "ListCertificates": { - "http": { - "method": "GET", - "requestUri": "/certificates" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "shape": "S4p" - }, - "nextMarker": {} - } - } - }, - "ListCertificatesByCA": { - "http": { - "method": "GET", - "requestUri": "/certificates-by-ca/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "caCertificateId" - ], - "members": { - "caCertificateId": { - "location": "uri", - "locationName": "caCertificateId" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "shape": "S4p" - }, - "nextMarker": {} - } - } - }, - "ListOutgoingCertificates": { - "http": { - "method": "GET", - "requestUri": "/certificates-out-going" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "outgoingCertificates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "transferredTo": {}, - "transferDate": { - "type": "timestamp" - }, - "transferMessage": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextMarker": {} - } - } - }, - "ListPolicies": { - "http": { - "method": "GET", - "requestUri": "/policies" - }, - "input": { - "type": "structure", - "members": { - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policies": { - "shape": "S4z" - }, - "nextMarker": {} - } - } - }, - "ListPolicyPrincipals": { - "http": { - "method": "GET", - "requestUri": "/policy-principals" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "header", - "locationName": "x-amzn-iot-policy" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "principals": { - "shape": "S53" - }, - "nextMarker": {} - } - } - }, - "ListPolicyVersions": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}/version" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "versionId": {}, - "isDefaultVersion": { - "type": "boolean" - }, - "createDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "ListPrincipalPolicies": { - "http": { - "method": "GET", - "requestUri": "/principal-policies" - }, - "input": { - "type": "structure", - "required": [ - "principal" - ], - "members": { - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policies": { - "shape": "S4z" - }, - "nextMarker": {} - } - } - }, - "ListPrincipalThings": { - "http": { - "method": "GET", - "requestUri": "/principals/things" - }, - "input": { - "type": "structure", - "required": [ - "principal" - ], - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": { - "things": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListThingPrincipals": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "principals": { - "shape": "S53" - } - } - } - }, - "ListThingTypes": { - "http": { - "method": "GET", - "requestUri": "/thing-types" - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "thingTypeName": { - "location": "querystring", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeProperties": { - "shape": "S14" - }, - "thingTypeMetadata": { - "shape": "S3s" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListThings": { - "http": { - "method": "GET", - "requestUri": "/things" - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "attributeName": { - "location": "querystring", - "locationName": "attributeName" - }, - "attributeValue": { - "location": "querystring", - "locationName": "attributeValue" - }, - "thingTypeName": { - "location": "querystring", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "things": { - "type": "list", - "member": { - "type": "structure", - "members": { - "thingName": {}, - "thingTypeName": {}, - "attributes": { - "shape": "Sx" - }, - "version": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListTopicRules": { - "http": { - "method": "GET", - "requestUri": "/rules" - }, - "input": { - "type": "structure", - "members": { - "topic": { - "location": "querystring", - "locationName": "topic" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "ruleDisabled": { - "location": "querystring", - "locationName": "ruleDisabled", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ruleArn": {}, - "ruleName": {}, - "topicPattern": {}, - "createdAt": { - "type": "timestamp" - }, - "ruleDisabled": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "RegisterCACertificate": { - "http": { - "requestUri": "/cacertificate" - }, - "input": { - "type": "structure", - "required": [ - "caCertificate", - "verificationCertificate" - ], - "members": { - "caCertificate": {}, - "verificationCertificate": {}, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - }, - "allowAutoRegistration": { - "location": "querystring", - "locationName": "allowAutoRegistration", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {} - } - } - }, - "RegisterCertificate": { - "http": { - "requestUri": "/certificate/register" - }, - "input": { - "type": "structure", - "required": [ - "certificatePem" - ], - "members": { - "certificatePem": {}, - "caCertificatePem": {}, - "setAsActive": { - "deprecated": true, - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - }, - "status": {} - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {} - } - } - }, - "RejectCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/reject-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "rejectReason": {} - } - } - }, - "ReplaceTopicRule": { - "http": { - "method": "PATCH", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName", - "topicRulePayload" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - }, - "topicRulePayload": { - "shape": "S1b" - } - }, - "payload": "topicRulePayload" - } - }, - "SetDefaultPolicyVersion": { - "http": { - "method": "PATCH", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - } - }, - "SetLoggingOptions": { - "http": { - "requestUri": "/loggingOptions" - }, - "input": { - "type": "structure", - "required": [ - "loggingOptionsPayload" - ], - "members": { - "loggingOptionsPayload": { - "type": "structure", - "required": [ - "roleArn" - ], - "members": { - "roleArn": {}, - "logLevel": {} - } - } - }, - "payload": "loggingOptionsPayload" - } - }, - "TransferCertificate": { - "http": { - "method": "PATCH", - "requestUri": "/transfer-certificate/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId", - "targetAwsAccount" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "targetAwsAccount": { - "location": "querystring", - "locationName": "targetAwsAccount" - }, - "transferMessage": {} - } - }, - "output": { - "type": "structure", - "members": { - "transferredCertificateArn": {} - } - } - }, - "UpdateCACertificate": { - "http": { - "method": "PUT", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - }, - "newStatus": { - "location": "querystring", - "locationName": "newStatus" - }, - "newAutoRegistrationStatus": { - "location": "querystring", - "locationName": "newAutoRegistrationStatus" - } - } - } - }, - "UpdateCertificate": { - "http": { - "method": "PUT", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId", - "newStatus" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "newStatus": { - "location": "querystring", - "locationName": "newStatus" - } - } - } - }, - "UpdateThing": { - "http": { - "method": "PATCH", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "thingTypeName": {}, - "attributePayload": { - "shape": "Sw" - }, - "expectedVersion": { - "type": "long" - }, - "removeThingType": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "Sw": { - "type": "structure", - "members": { - "attributes": { - "shape": "Sx" - }, - "merge": { - "type": "boolean" - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": {} - }, - "S14": { - "type": "structure", - "members": { - "thingTypeDescription": {}, - "searchableAttributes": { - "type": "list", - "member": {} - } - } - }, - "S1b": { - "type": "structure", - "required": [ - "sql", - "actions" - ], - "members": { - "sql": {}, - "description": {}, - "actions": { - "shape": "S1e" - }, - "ruleDisabled": { - "type": "boolean" - }, - "awsIotSqlVersion": {} - } - }, - "S1e": { - "type": "list", - "member": { - "type": "structure", - "members": { - "dynamoDB": { - "type": "structure", - "required": [ - "tableName", - "roleArn", - "hashKeyField", - "hashKeyValue" - ], - "members": { - "tableName": {}, - "roleArn": {}, - "operation": {}, - "hashKeyField": {}, - "hashKeyValue": {}, - "hashKeyType": {}, - "rangeKeyField": {}, - "rangeKeyValue": {}, - "rangeKeyType": {}, - "payloadField": {} - } - }, - "lambda": { - "type": "structure", - "required": [ - "functionArn" - ], - "members": { - "functionArn": {} - } - }, - "sns": { - "type": "structure", - "required": [ - "targetArn", - "roleArn" - ], - "members": { - "targetArn": {}, - "roleArn": {}, - "messageFormat": {} - } - }, - "sqs": { - "type": "structure", - "required": [ - "roleArn", - "queueUrl" - ], - "members": { - "roleArn": {}, - "queueUrl": {}, - "useBase64": { - "type": "boolean" - } - } - }, - "kinesis": { - "type": "structure", - "required": [ - "roleArn", - "streamName" - ], - "members": { - "roleArn": {}, - "streamName": {}, - "partitionKey": {} - } - }, - "republish": { - "type": "structure", - "required": [ - "roleArn", - "topic" - ], - "members": { - "roleArn": {}, - "topic": {} - } - }, - "s3": { - "type": "structure", - "required": [ - "roleArn", - "bucketName", - "key" - ], - "members": { - "roleArn": {}, - "bucketName": {}, - "key": {}, - "cannedAcl": {} - } - }, - "firehose": { - "type": "structure", - "required": [ - "roleArn", - "deliveryStreamName" - ], - "members": { - "roleArn": {}, - "deliveryStreamName": {}, - "separator": {} - } - }, - "cloudwatchMetric": { - "type": "structure", - "required": [ - "roleArn", - "metricNamespace", - "metricName", - "metricValue", - "metricUnit" - ], - "members": { - "roleArn": {}, - "metricNamespace": {}, - "metricName": {}, - "metricValue": {}, - "metricUnit": {}, - "metricTimestamp": {} - } - }, - "cloudwatchAlarm": { - "type": "structure", - "required": [ - "roleArn", - "alarmName", - "stateReason", - "stateValue" - ], - "members": { - "roleArn": {}, - "alarmName": {}, - "stateReason": {}, - "stateValue": {} - } - }, - "elasticsearch": { - "type": "structure", - "required": [ - "roleArn", - "endpoint", - "index", - "type", - "id" - ], - "members": { - "roleArn": {}, - "endpoint": {}, - "index": {}, - "type": {}, - "id": {} - } - } - } - } - }, - "S3s": { - "type": "structure", - "members": { - "deprecated": { - "type": "boolean" - }, - "deprecationDate": { - "type": "timestamp" - }, - "creationDate": { - "type": "timestamp" - } - } - }, - "S4p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "S4z": { - "type": "list", - "member": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {} - } - } - }, - "S53": { - "type": "list", - "member": {} - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json b/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json deleted file mode 100644 index da22373..0000000 --- a/node_modules/aws-sdk/apis/iot-data-2015-05-28.min.json +++ /dev/null @@ -1,128 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-05-28", - "endpointPrefix": "data.iot", - "protocol": "rest-json", - "serviceFullName": "AWS IoT Data Plane", - "signatureVersion": "v4", - "signingName": "iotdata" - }, - "operations": { - "DeleteThingShadow": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "payload" - ], - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "GetThingShadow": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "Publish": { - "http": { - "requestUri": "/topics/{topic}" - }, - "input": { - "type": "structure", - "required": [ - "topic" - ], - "members": { - "topic": { - "location": "uri", - "locationName": "topic" - }, - "qos": { - "location": "querystring", - "locationName": "qos", - "type": "integer" - }, - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "UpdateThingShadow": { - "http": { - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "payload" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "payload": { - "type": "blob" - } - }, - "payload": "payload" - }, - "output": { - "type": "structure", - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json b/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json deleted file mode 100644 index 2b1f22e..0000000 --- a/node_modules/aws-sdk/apis/kinesis-2013-12-02.min.json +++ /dev/null @@ -1,503 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-12-02", - "endpointPrefix": "kinesis", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Kinesis", - "serviceFullName": "Amazon Kinesis", - "signatureVersion": "v4", - "targetPrefix": "Kinesis_20131202" - }, - "operations": { - "AddTagsToStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "Tags" - ], - "members": { - "StreamName": {}, - "Tags": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "CreateStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardCount" - ], - "members": { - "StreamName": {}, - "ShardCount": { - "type": "integer" - } - } - } - }, - "DecreaseStreamRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "RetentionPeriodHours" - ], - "members": { - "StreamName": {}, - "RetentionPeriodHours": { - "type": "integer" - } - } - } - }, - "DeleteStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {} - } - } - }, - "DescribeStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartShardId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "StreamDescription" - ], - "members": { - "StreamDescription": { - "type": "structure", - "required": [ - "StreamName", - "StreamARN", - "StreamStatus", - "Shards", - "HasMoreShards", - "RetentionPeriodHours", - "EnhancedMonitoring" - ], - "members": { - "StreamName": {}, - "StreamARN": {}, - "StreamStatus": {}, - "Shards": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ShardId", - "HashKeyRange", - "SequenceNumberRange" - ], - "members": { - "ShardId": {}, - "ParentShardId": {}, - "AdjacentParentShardId": {}, - "HashKeyRange": { - "type": "structure", - "required": [ - "StartingHashKey", - "EndingHashKey" - ], - "members": { - "StartingHashKey": {}, - "EndingHashKey": {} - } - }, - "SequenceNumberRange": { - "type": "structure", - "required": [ - "StartingSequenceNumber" - ], - "members": { - "StartingSequenceNumber": {}, - "EndingSequenceNumber": {} - } - } - } - } - }, - "HasMoreShards": { - "type": "boolean" - }, - "RetentionPeriodHours": { - "type": "integer" - }, - "EnhancedMonitoring": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ShardLevelMetrics": { - "shape": "Sr" - } - } - } - } - } - } - } - } - }, - "DisableEnhancedMonitoring": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardLevelMetrics" - ], - "members": { - "StreamName": {}, - "ShardLevelMetrics": { - "shape": "Sr" - } - } - }, - "output": { - "shape": "Su" - } - }, - "EnableEnhancedMonitoring": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardLevelMetrics" - ], - "members": { - "StreamName": {}, - "ShardLevelMetrics": { - "shape": "Sr" - } - } - }, - "output": { - "shape": "Su" - } - }, - "GetRecords": { - "input": { - "type": "structure", - "required": [ - "ShardIterator" - ], - "members": { - "ShardIterator": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Records" - ], - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SequenceNumber", - "Data", - "PartitionKey" - ], - "members": { - "SequenceNumber": {}, - "ApproximateArrivalTimestamp": { - "type": "timestamp" - }, - "Data": { - "type": "blob" - }, - "PartitionKey": {} - } - } - }, - "NextShardIterator": {}, - "MillisBehindLatest": { - "type": "long" - } - } - } - }, - "GetShardIterator": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardId", - "ShardIteratorType" - ], - "members": { - "StreamName": {}, - "ShardId": {}, - "ShardIteratorType": {}, - "StartingSequenceNumber": {}, - "Timestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ShardIterator": {} - } - } - }, - "IncreaseStreamRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "RetentionPeriodHours" - ], - "members": { - "StreamName": {}, - "RetentionPeriodHours": { - "type": "integer" - } - } - } - }, - "ListStreams": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartStreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "StreamNames", - "HasMoreStreams" - ], - "members": { - "StreamNames": { - "type": "list", - "member": {} - }, - "HasMoreStreams": { - "type": "boolean" - } - } - } - }, - "ListTagsForStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {}, - "ExclusiveStartTagKey": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags", - "HasMoreTags" - ], - "members": { - "Tags": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "HasMoreTags": { - "type": "boolean" - } - } - } - }, - "MergeShards": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardToMerge", - "AdjacentShardToMerge" - ], - "members": { - "StreamName": {}, - "ShardToMerge": {}, - "AdjacentShardToMerge": {} - } - } - }, - "PutRecord": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "Data", - "PartitionKey" - ], - "members": { - "StreamName": {}, - "Data": { - "type": "blob" - }, - "PartitionKey": {}, - "ExplicitHashKey": {}, - "SequenceNumberForOrdering": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ShardId", - "SequenceNumber" - ], - "members": { - "ShardId": {}, - "SequenceNumber": {} - } - } - }, - "PutRecords": { - "input": { - "type": "structure", - "required": [ - "Records", - "StreamName" - ], - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Data", - "PartitionKey" - ], - "members": { - "Data": { - "type": "blob" - }, - "ExplicitHashKey": {}, - "PartitionKey": {} - } - } - }, - "StreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Records" - ], - "members": { - "FailedRecordCount": { - "type": "integer" - }, - "Records": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SequenceNumber": {}, - "ShardId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "RemoveTagsFromStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "TagKeys" - ], - "members": { - "StreamName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "SplitShard": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardToSplit", - "NewStartingHashKey" - ], - "members": { - "StreamName": {}, - "ShardToSplit": {}, - "NewStartingHashKey": {} - } - } - } - }, - "shapes": { - "Sr": { - "type": "list", - "member": {} - }, - "Su": { - "type": "structure", - "members": { - "StreamName": {}, - "CurrentShardLevelMetrics": { - "shape": "Sr" - }, - "DesiredShardLevelMetrics": { - "shape": "Sr" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json b/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json deleted file mode 100644 index 007f563..0000000 --- a/node_modules/aws-sdk/apis/kinesis-2013-12-02.paginators.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "pagination": { - "DescribeStream": { - "input_token": "ExclusiveStartShardId", - "limit_key": "Limit", - "more_results": "StreamDescription.HasMoreShards", - "output_token": "StreamDescription.Shards[-1].ShardId", - "result_key": "StreamDescription.Shards" - }, - "ListStreams": { - "input_token": "ExclusiveStartStreamName", - "limit_key": "Limit", - "more_results": "HasMoreStreams", - "output_token": "StreamNames[-1]", - "result_key": "StreamNames" - } - } -} diff --git a/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json b/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json deleted file mode 100644 index 8e3162f..0000000 --- a/node_modules/aws-sdk/apis/kinesis-2013-12-02.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "StreamExists": { - "delay": 10, - "operation": "DescribeStream", - "maxAttempts": 18, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "StreamDescription.StreamStatus" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json b/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json deleted file mode 100644 index 4af38ed..0000000 --- a/node_modules/aws-sdk/apis/kinesisanalytics-2015-08-14.min.json +++ /dev/null @@ -1,755 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-14", - "endpointPrefix": "kinesisanalytics", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Kinesis Analytics", - "serviceFullName": "Amazon Kinesis Analytics", - "signatureVersion": "v4", - "targetPrefix": "KinesisAnalytics_20150814", - "timestampFormat": "unixTimestamp" - }, - "operations": { - "AddApplicationInput": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "Input" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "Input": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddApplicationOutput": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "Output" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "Output": { - "shape": "St" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "AddApplicationReferenceDataSource": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "ReferenceDataSource" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "ReferenceDataSource": { - "type": "structure", - "required": [ - "TableName", - "ReferenceSchema" - ], - "members": { - "TableName": {}, - "S3ReferenceDataSource": { - "type": "structure", - "required": [ - "BucketARN", - "FileKey", - "ReferenceRoleARN" - ], - "members": { - "BucketARN": {}, - "FileKey": {}, - "ReferenceRoleARN": {} - } - }, - "ReferenceSchema": { - "shape": "Sc" - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "ApplicationDescription": {}, - "Inputs": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "Outputs": { - "type": "list", - "member": { - "shape": "St" - } - }, - "ApplicationCode": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ApplicationSummary" - ], - "members": { - "ApplicationSummary": { - "shape": "S1b" - } - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CreateTimestamp" - ], - "members": { - "ApplicationName": {}, - "CreateTimestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplicationOutput": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "OutputId" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "OutputId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteApplicationReferenceDataSource": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "ReferenceId" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "ReferenceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ApplicationDetail" - ], - "members": { - "ApplicationDetail": { - "type": "structure", - "required": [ - "ApplicationName", - "ApplicationARN", - "ApplicationStatus", - "ApplicationVersionId" - ], - "members": { - "ApplicationName": {}, - "ApplicationDescription": {}, - "ApplicationARN": {}, - "ApplicationStatus": {}, - "CreateTimestamp": { - "type": "timestamp" - }, - "LastUpdateTimestamp": { - "type": "timestamp" - }, - "InputDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InputId": {}, - "NamePrefix": {}, - "InAppStreamNames": { - "type": "list", - "member": {} - }, - "KinesisStreamsInputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseInputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "InputSchema": { - "shape": "Sc" - }, - "InputParallelism": { - "shape": "Sa" - }, - "InputStartingPositionConfiguration": { - "shape": "S1t" - } - } - } - }, - "OutputDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputId": {}, - "Name": {}, - "KinesisStreamsOutputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseOutputDescription": { - "type": "structure", - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "DestinationSchema": { - "shape": "Sw" - } - } - } - }, - "ReferenceDataSourceDescriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ReferenceId", - "TableName", - "S3ReferenceDataSourceDescription" - ], - "members": { - "ReferenceId": {}, - "TableName": {}, - "S3ReferenceDataSourceDescription": { - "type": "structure", - "required": [ - "BucketARN", - "FileKey", - "ReferenceRoleARN" - ], - "members": { - "BucketARN": {}, - "FileKey": {}, - "ReferenceRoleARN": {} - } - }, - "ReferenceSchema": { - "shape": "Sc" - } - } - } - }, - "ApplicationCode": {}, - "ApplicationVersionId": { - "type": "long" - } - } - } - } - } - }, - "DiscoverInputSchema": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN", - "InputStartingPositionConfiguration" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {}, - "InputStartingPositionConfiguration": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "members": { - "InputSchema": { - "shape": "Sc" - }, - "ParsedInputRecords": { - "type": "list", - "member": { - "type": "list", - "member": {} - } - }, - "RawInputRecords": { - "type": "list", - "member": {} - } - } - } - }, - "ListApplications": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartApplicationName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ApplicationSummaries", - "HasMoreApplications" - ], - "members": { - "ApplicationSummaries": { - "type": "list", - "member": { - "shape": "S1b" - } - }, - "HasMoreApplications": { - "type": "boolean" - } - } - } - }, - "StartApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "InputConfigurations" - ], - "members": { - "ApplicationName": {}, - "InputConfigurations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "InputStartingPositionConfiguration" - ], - "members": { - "Id": {}, - "InputStartingPositionConfiguration": { - "shape": "S1t" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "StopApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "CurrentApplicationVersionId", - "ApplicationUpdate" - ], - "members": { - "ApplicationName": {}, - "CurrentApplicationVersionId": { - "type": "long" - }, - "ApplicationUpdate": { - "type": "structure", - "members": { - "InputUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InputId" - ], - "members": { - "InputId": {}, - "NamePrefixUpdate": {}, - "KinesisStreamsInputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "KinesisFirehoseInputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "InputSchemaUpdate": { - "type": "structure", - "members": { - "RecordFormatUpdate": { - "shape": "Sd" - }, - "RecordEncodingUpdate": {}, - "RecordColumnUpdates": { - "shape": "Sm" - } - } - }, - "InputParallelismUpdate": { - "type": "structure", - "members": { - "CountUpdate": { - "type": "integer" - } - } - } - } - } - }, - "ApplicationCodeUpdate": {}, - "OutputUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "OutputId" - ], - "members": { - "OutputId": {}, - "NameUpdate": {}, - "KinesisStreamsOutputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "KinesisFirehoseOutputUpdate": { - "type": "structure", - "members": { - "ResourceARNUpdate": {}, - "RoleARNUpdate": {} - } - }, - "DestinationSchemaUpdate": { - "shape": "Sw" - } - } - } - }, - "ReferenceDataSourceUpdates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ReferenceId" - ], - "members": { - "ReferenceId": {}, - "TableNameUpdate": {}, - "S3ReferenceDataSourceUpdate": { - "type": "structure", - "members": { - "BucketARNUpdate": {}, - "FileKeyUpdate": {}, - "ReferenceRoleARNUpdate": {} - } - }, - "ReferenceSchemaUpdate": { - "shape": "Sc" - } - } - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "required": [ - "NamePrefix" - ], - "members": { - "NamePrefix": {}, - "KinesisStreamsInput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseInput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "InputParallelism": { - "shape": "Sa" - }, - "InputSchema": { - "shape": "Sc" - } - } - }, - "Sa": { - "type": "structure", - "members": { - "Count": { - "type": "integer" - } - } - }, - "Sc": { - "type": "structure", - "required": [ - "RecordFormat", - "RecordColumns" - ], - "members": { - "RecordFormat": { - "shape": "Sd" - }, - "RecordEncoding": {}, - "RecordColumns": { - "shape": "Sm" - } - } - }, - "Sd": { - "type": "structure", - "required": [ - "RecordFormatType" - ], - "members": { - "RecordFormatType": {}, - "MappingParameters": { - "type": "structure", - "members": { - "JSONMappingParameters": { - "type": "structure", - "required": [ - "RecordRowPath" - ], - "members": { - "RecordRowPath": {} - } - }, - "CSVMappingParameters": { - "type": "structure", - "required": [ - "RecordRowDelimiter", - "RecordColumnDelimiter" - ], - "members": { - "RecordRowDelimiter": {}, - "RecordColumnDelimiter": {} - } - } - } - } - } - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "SqlType" - ], - "members": { - "Name": {}, - "Mapping": {}, - "SqlType": {} - } - } - }, - "St": { - "type": "structure", - "required": [ - "Name", - "DestinationSchema" - ], - "members": { - "Name": {}, - "KinesisStreamsOutput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "KinesisFirehoseOutput": { - "type": "structure", - "required": [ - "ResourceARN", - "RoleARN" - ], - "members": { - "ResourceARN": {}, - "RoleARN": {} - } - }, - "DestinationSchema": { - "shape": "Sw" - } - } - }, - "Sw": { - "type": "structure", - "members": { - "RecordFormatType": {} - } - }, - "S1b": { - "type": "structure", - "required": [ - "ApplicationName", - "ApplicationARN", - "ApplicationStatus" - ], - "members": { - "ApplicationName": {}, - "ApplicationARN": {}, - "ApplicationStatus": {} - } - }, - "S1t": { - "type": "structure", - "members": { - "InputStartingPosition": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kms-2014-11-01.min.json b/node_modules/aws-sdk/apis/kms-2014-11-01.min.json deleted file mode 100644 index 99de686..0000000 --- a/node_modules/aws-sdk/apis/kms-2014-11-01.min.json +++ /dev/null @@ -1,759 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-01", - "endpointPrefix": "kms", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "KMS", - "serviceFullName": "AWS Key Management Service", - "signatureVersion": "v4", - "targetPrefix": "TrentService" - }, - "operations": { - "CancelKeyDeletion": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {} - } - } - }, - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName", - "TargetKeyId" - ], - "members": { - "AliasName": {}, - "TargetKeyId": {} - } - } - }, - "CreateGrant": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "GranteePrincipal" - ], - "members": { - "KeyId": {}, - "GranteePrincipal": {}, - "RetiringPrincipal": {}, - "Operations": { - "shape": "S8" - }, - "Constraints": { - "shape": "Sa" - }, - "GrantTokens": { - "shape": "Se" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "GrantToken": {}, - "GrantId": {} - } - } - }, - "CreateKey": { - "input": { - "type": "structure", - "members": { - "Policy": {}, - "Description": {}, - "KeyUsage": {}, - "Origin": {}, - "BypassPolicyLockoutSafetyCheck": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyMetadata": { - "shape": "Sq" - } - } - } - }, - "Decrypt": { - "input": { - "type": "structure", - "required": [ - "CiphertextBlob" - ], - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "EncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "Plaintext": { - "shape": "Sz" - } - } - } - }, - "DeleteAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName" - ], - "members": { - "AliasName": {} - } - } - }, - "DeleteImportedKeyMaterial": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "DescribeKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyMetadata": { - "shape": "Sq" - } - } - } - }, - "DisableKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "DisableKeyRotation": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "EnableKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "EnableKeyRotation": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "Encrypt": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Plaintext" - ], - "members": { - "KeyId": {}, - "Plaintext": { - "shape": "Sz" - }, - "EncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "KeyId": {} - } - } - }, - "GenerateDataKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "EncryptionContext": { - "shape": "Sb" - }, - "NumberOfBytes": { - "type": "integer" - }, - "KeySpec": {}, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "Plaintext": { - "shape": "Sz" - }, - "KeyId": {} - } - } - }, - "GenerateDataKeyWithoutPlaintext": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "EncryptionContext": { - "shape": "Sb" - }, - "KeySpec": {}, - "NumberOfBytes": { - "type": "integer" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "KeyId": {} - } - } - }, - "GenerateRandom": { - "input": { - "type": "structure", - "members": { - "NumberOfBytes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Plaintext": { - "shape": "Sz" - } - } - } - }, - "GetKeyPolicy": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "PolicyName" - ], - "members": { - "KeyId": {}, - "PolicyName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "GetKeyRotationStatus": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyRotationEnabled": { - "type": "boolean" - } - } - } - }, - "GetParametersForImport": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "WrappingAlgorithm", - "WrappingKeySpec" - ], - "members": { - "KeyId": {}, - "WrappingAlgorithm": {}, - "WrappingKeySpec": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "ImportToken": { - "type": "blob" - }, - "PublicKey": { - "shape": "Sz" - }, - "ParametersValidTo": { - "type": "timestamp" - } - } - } - }, - "ImportKeyMaterial": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "ImportToken", - "EncryptedKeyMaterial" - ], - "members": { - "KeyId": {}, - "ImportToken": { - "type": "blob" - }, - "EncryptedKeyMaterial": { - "type": "blob" - }, - "ValidTo": { - "type": "timestamp" - }, - "ExpirationModel": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListAliases": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Aliases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AliasName": {}, - "AliasArn": {}, - "TargetKeyId": {} - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListGrants": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {}, - "KeyId": {} - } - }, - "output": { - "shape": "S20" - } - }, - "ListKeyPolicies": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "PolicyNames": { - "type": "list", - "member": {} - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListKeys": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Keys": { - "type": "list", - "member": { - "type": "structure", - "members": { - "KeyId": {}, - "KeyArn": {} - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListRetirableGrants": { - "input": { - "type": "structure", - "required": [ - "RetiringPrincipal" - ], - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {}, - "RetiringPrincipal": {} - } - }, - "output": { - "shape": "S20" - } - }, - "PutKeyPolicy": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "PolicyName", - "Policy" - ], - "members": { - "KeyId": {}, - "PolicyName": {}, - "Policy": {}, - "BypassPolicyLockoutSafetyCheck": { - "type": "boolean" - } - } - } - }, - "ReEncrypt": { - "input": { - "type": "structure", - "required": [ - "CiphertextBlob", - "DestinationKeyId" - ], - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "SourceEncryptionContext": { - "shape": "Sb" - }, - "DestinationKeyId": {}, - "DestinationEncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "SourceKeyId": {}, - "KeyId": {} - } - } - }, - "RetireGrant": { - "input": { - "type": "structure", - "members": { - "GrantToken": {}, - "KeyId": {}, - "GrantId": {} - } - } - }, - "RevokeGrant": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "GrantId" - ], - "members": { - "KeyId": {}, - "GrantId": {} - } - } - }, - "ScheduleKeyDeletion": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "PendingWindowInDays": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "DeletionDate": { - "type": "timestamp" - } - } - } - }, - "UpdateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName", - "TargetKeyId" - ], - "members": { - "AliasName": {}, - "TargetKeyId": {} - } - } - }, - "UpdateKeyDescription": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Description" - ], - "members": { - "KeyId": {}, - "Description": {} - } - } - } - }, - "shapes": { - "S8": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "structure", - "members": { - "EncryptionContextSubset": { - "shape": "Sb" - }, - "EncryptionContextEquals": { - "shape": "Sb" - } - } - }, - "Sb": { - "type": "map", - "key": {}, - "value": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "AWSAccountId": {}, - "KeyId": {}, - "Arn": {}, - "CreationDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "Description": {}, - "KeyUsage": {}, - "KeyState": {}, - "DeletionDate": { - "type": "timestamp" - }, - "ValidTo": { - "type": "timestamp" - }, - "Origin": {}, - "ExpirationModel": {} - } - }, - "Sz": { - "type": "blob", - "sensitive": true - }, - "S20": { - "type": "structure", - "members": { - "Grants": { - "type": "list", - "member": { - "type": "structure", - "members": { - "KeyId": {}, - "GrantId": {}, - "Name": {}, - "CreationDate": { - "type": "timestamp" - }, - "GranteePrincipal": {}, - "RetiringPrincipal": {}, - "IssuingAccount": {}, - "Operations": { - "shape": "S8" - }, - "Constraints": { - "shape": "Sa" - } - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json b/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json deleted file mode 100644 index 522d171..0000000 --- a/node_modules/aws-sdk/apis/kms-2014-11-01.paginators.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "pagination": { - "ListAliases": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "Aliases" - }, - "ListGrants": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "Grants" - }, - "ListKeyPolicies": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "PolicyNames" - }, - "ListKeys": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "Keys" - } - } -} diff --git a/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json b/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json deleted file mode 100644 index fc006a8..0000000 --- a/node_modules/aws-sdk/apis/lambda-2014-11-11.min.json +++ /dev/null @@ -1,423 +0,0 @@ -{ - "metadata": { - "apiVersion": "2014-11-11", - "endpointPrefix": "lambda", - "serviceFullName": "AWS Lambda", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "AddEventSource": { - "http": { - "requestUri": "/2014-11-13/event-source-mappings/" - }, - "input": { - "type": "structure", - "required": [ - "EventSource", - "FunctionName", - "Role" - ], - "members": { - "EventSource": {}, - "FunctionName": {}, - "Role": {}, - "BatchSize": { - "type": "integer" - }, - "Parameters": { - "shape": "S6" - } - } - }, - "output": { - "shape": "S7" - } - }, - "DeleteFunction": { - "http": { - "method": "DELETE", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - } - }, - "GetEventSource": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/event-source-mappings/{UUID}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "S7" - } - }, - "GetFunction": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "Se" - }, - "Code": { - "type": "structure", - "members": { - "RepositoryType": {}, - "Location": {} - } - } - } - } - }, - "GetFunctionConfiguration": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - }, - "output": { - "shape": "Se" - } - }, - "InvokeAsync": { - "http": { - "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "InvokeArgs" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvokeArgs": { - "shape": "Sq" - } - }, - "payload": "InvokeArgs" - }, - "output": { - "type": "structure", - "members": { - "Status": { - "location": "statusCode", - "type": "integer" - } - } - } - }, - "ListEventSources": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/event-source-mappings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "EventSourceArn": { - "location": "querystring", - "locationName": "EventSource" - }, - "FunctionName": { - "location": "querystring", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "EventSources": { - "type": "list", - "member": { - "shape": "S7" - } - } - } - } - }, - "ListFunctions": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Functions": { - "type": "list", - "member": { - "shape": "Se" - } - } - } - } - }, - "RemoveEventSource": { - "http": { - "method": "DELETE", - "requestUri": "/2014-11-13/event-source-mappings/{UUID}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - } - }, - "UpdateFunctionConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Role": { - "location": "querystring", - "locationName": "Role" - }, - "Handler": { - "location": "querystring", - "locationName": "Handler" - }, - "Description": { - "location": "querystring", - "locationName": "Description" - }, - "Timeout": { - "location": "querystring", - "locationName": "Timeout", - "type": "integer" - }, - "MemorySize": { - "location": "querystring", - "locationName": "MemorySize", - "type": "integer" - } - } - }, - "output": { - "shape": "Se" - } - }, - "UploadFunction": { - "http": { - "method": "PUT", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "FunctionZip", - "Runtime", - "Role", - "Handler", - "Mode" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "FunctionZip": { - "shape": "Sq" - }, - "Runtime": { - "location": "querystring", - "locationName": "Runtime" - }, - "Role": { - "location": "querystring", - "locationName": "Role" - }, - "Handler": { - "location": "querystring", - "locationName": "Handler" - }, - "Mode": { - "location": "querystring", - "locationName": "Mode" - }, - "Description": { - "location": "querystring", - "locationName": "Description" - }, - "Timeout": { - "location": "querystring", - "locationName": "Timeout", - "type": "integer" - }, - "MemorySize": { - "location": "querystring", - "locationName": "MemorySize", - "type": "integer" - } - }, - "payload": "FunctionZip" - }, - "output": { - "shape": "Se" - } - } - }, - "shapes": { - "S6": { - "type": "map", - "key": {}, - "value": {} - }, - "S7": { - "type": "structure", - "members": { - "UUID": {}, - "BatchSize": { - "type": "integer" - }, - "EventSource": {}, - "FunctionName": {}, - "Parameters": { - "shape": "S6" - }, - "Role": {}, - "LastModified": { - "type": "timestamp" - }, - "IsActive": { - "type": "boolean" - }, - "Status": {} - } - }, - "Se": { - "type": "structure", - "members": { - "FunctionName": {}, - "FunctionARN": {}, - "ConfigurationId": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "Mode": {}, - "CodeSize": { - "type": "long" - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "LastModified": { - "type": "timestamp" - } - } - }, - "Sq": { - "type": "blob", - "streaming": true - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json b/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json deleted file mode 100644 index deaf07d..0000000 --- a/node_modules/aws-sdk/apis/lambda-2014-11-11.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListEventSources": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "EventSources" - }, - "ListFunctions": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "Functions" - } - } -} diff --git a/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json b/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json deleted file mode 100644 index acc8b76..0000000 --- a/node_modules/aws-sdk/apis/lambda-2015-03-31.min.json +++ /dev/null @@ -1,872 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-03-31", - "endpointPrefix": "lambda", - "protocol": "rest-json", - "serviceFullName": "AWS Lambda", - "signatureVersion": "v4" - }, - "operations": { - "AddPermission": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/policy", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "StatementId", - "Action", - "Principal" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "StatementId": {}, - "Action": {}, - "Principal": {}, - "SourceArn": {}, - "SourceAccount": {}, - "EventSourceToken": {}, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Statement": {} - } - } - }, - "CreateAlias": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name", - "FunctionVersion" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": {}, - "FunctionVersion": {}, - "Description": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "CreateEventSourceMapping": { - "http": { - "requestUri": "/2015-03-31/event-source-mappings/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "EventSourceArn", - "FunctionName", - "StartingPosition" - ], - "members": { - "EventSourceArn": {}, - "FunctionName": {}, - "Enabled": { - "type": "boolean" - }, - "BatchSize": { - "type": "integer" - }, - "StartingPosition": {} - } - }, - "output": { - "shape": "Sm" - } - }, - "CreateFunction": { - "http": { - "requestUri": "/2015-03-31/functions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Runtime", - "Role", - "Handler", - "Code" - ], - "members": { - "FunctionName": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "Code": { - "type": "structure", - "members": { - "ZipFile": { - "type": "blob" - }, - "S3Bucket": {}, - "S3Key": {}, - "S3ObjectVersion": {} - } - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "Publish": { - "type": "boolean" - }, - "VpcConfig": { - "shape": "S10" - } - } - }, - "output": { - "shape": "S15" - } - }, - "DeleteAlias": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - } - } - } - }, - "DeleteEventSourceMapping": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "Sm" - } - }, - "DeleteFunction": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - } - }, - "GetAlias": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "GetEventSourceMapping": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "Sm" - } - }, - "GetFunction": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "S15" - }, - "Code": { - "type": "structure", - "members": { - "RepositoryType": {}, - "Location": {} - } - } - } - } - }, - "GetFunctionConfiguration": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "shape": "S15" - } - }, - "GetPolicy": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/policy", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "Invoke": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/invocations" - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvocationType": { - "location": "header", - "locationName": "X-Amz-Invocation-Type" - }, - "LogType": { - "location": "header", - "locationName": "X-Amz-Log-Type" - }, - "ClientContext": { - "location": "header", - "locationName": "X-Amz-Client-Context" - }, - "Payload": { - "type": "blob" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - }, - "payload": "Payload" - }, - "output": { - "type": "structure", - "members": { - "StatusCode": { - "location": "statusCode", - "type": "integer" - }, - "FunctionError": { - "location": "header", - "locationName": "X-Amz-Function-Error" - }, - "LogResult": { - "location": "header", - "locationName": "X-Amz-Log-Result" - }, - "Payload": { - "type": "blob" - } - }, - "payload": "Payload" - } - }, - "InvokeAsync": { - "http": { - "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "InvokeArgs" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvokeArgs": { - "type": "blob", - "streaming": true - } - }, - "deprecated": true, - "payload": "InvokeArgs" - }, - "output": { - "type": "structure", - "members": { - "Status": { - "location": "statusCode", - "type": "integer" - } - }, - "deprecated": true - }, - "deprecated": true - }, - "ListAliases": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "FunctionVersion": { - "location": "querystring", - "locationName": "FunctionVersion" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Aliases": { - "type": "list", - "member": { - "shape": "Sg" - } - } - } - } - }, - "ListEventSourceMappings": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/event-source-mappings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "EventSourceArn": { - "location": "querystring", - "locationName": "EventSourceArn" - }, - "FunctionName": { - "location": "querystring", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "EventSourceMappings": { - "type": "list", - "member": { - "shape": "Sm" - } - } - } - } - }, - "ListFunctions": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Functions": { - "shape": "S23" - } - } - } - }, - "ListVersionsByFunction": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Versions": { - "shape": "S23" - } - } - } - }, - "PublishVersion": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "CodeSha256": {}, - "Description": {} - } - }, - "output": { - "shape": "S15" - } - }, - "RemovePermission": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "StatementId" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "StatementId": { - "location": "uri", - "locationName": "StatementId" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - } - }, - "UpdateAlias": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - }, - "FunctionVersion": {}, - "Description": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "UpdateEventSourceMapping": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - }, - "FunctionName": {}, - "Enabled": { - "type": "boolean" - }, - "BatchSize": { - "type": "integer" - } - } - }, - "output": { - "shape": "Sm" - } - }, - "UpdateFunctionCode": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/code", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "ZipFile": { - "type": "blob" - }, - "S3Bucket": {}, - "S3Key": {}, - "S3ObjectVersion": {}, - "Publish": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S15" - } - }, - "UpdateFunctionConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Role": {}, - "Handler": {}, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "VpcConfig": { - "shape": "S10" - }, - "Runtime": {} - } - }, - "output": { - "shape": "S15" - } - } - }, - "shapes": { - "Sg": { - "type": "structure", - "members": { - "AliasArn": {}, - "Name": {}, - "FunctionVersion": {}, - "Description": {} - } - }, - "Sm": { - "type": "structure", - "members": { - "UUID": {}, - "BatchSize": { - "type": "integer" - }, - "EventSourceArn": {}, - "FunctionArn": {}, - "LastModified": { - "type": "timestamp" - }, - "LastProcessingResult": {}, - "State": {}, - "StateTransitionReason": {} - } - }, - "S10": { - "type": "structure", - "members": { - "SubnetIds": { - "shape": "S11" - }, - "SecurityGroupIds": { - "shape": "S13" - } - } - }, - "S11": { - "type": "list", - "member": {} - }, - "S13": { - "type": "list", - "member": {} - }, - "S15": { - "type": "structure", - "members": { - "FunctionName": {}, - "FunctionArn": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "CodeSize": { - "type": "long" - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "LastModified": {}, - "CodeSha256": {}, - "Version": {}, - "VpcConfig": { - "type": "structure", - "members": { - "SubnetIds": { - "shape": "S11" - }, - "SecurityGroupIds": { - "shape": "S13" - }, - "VpcId": {} - } - } - } - }, - "S23": { - "type": "list", - "member": { - "shape": "S15" - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json b/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json deleted file mode 100644 index da00fb7..0000000 --- a/node_modules/aws-sdk/apis/lambda-2015-03-31.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListEventSourceMappings": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "EventSourceMappings" - }, - "ListFunctions": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "Functions" - } - } -} diff --git a/node_modules/aws-sdk/apis/logs-2014-03-28.min.json b/node_modules/aws-sdk/apis/logs-2014-03-28.min.json deleted file mode 100644 index 31b2690..0000000 --- a/node_modules/aws-sdk/apis/logs-2014-03-28.min.json +++ /dev/null @@ -1,722 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-03-28", - "endpointPrefix": "logs", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon CloudWatch Logs", - "signatureVersion": "v4", - "targetPrefix": "Logs_20140328" - }, - "operations": { - "CancelExportTask": { - "input": { - "type": "structure", - "required": [ - "taskId" - ], - "members": { - "taskId": {} - } - } - }, - "CreateExportTask": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "from", - "to", - "destination" - ], - "members": { - "taskName": {}, - "logGroupName": {}, - "logStreamNamePrefix": {}, - "from": { - "type": "long" - }, - "to": { - "type": "long" - }, - "destination": {}, - "destinationPrefix": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskId": {} - } - } - }, - "CreateLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "CreateLogStream": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {} - } - } - }, - "DeleteDestination": { - "input": { - "type": "structure", - "required": [ - "destinationName" - ], - "members": { - "destinationName": {} - } - } - }, - "DeleteLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "DeleteLogStream": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {} - } - } - }, - "DeleteMetricFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName" - ], - "members": { - "logGroupName": {}, - "filterName": {} - } - } - }, - "DeleteRetentionPolicy": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "DeleteSubscriptionFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName" - ], - "members": { - "logGroupName": {}, - "filterName": {} - } - } - }, - "DescribeDestinations": { - "input": { - "type": "structure", - "members": { - "DestinationNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "destinations": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "nextToken": {} - } - } - }, - "DescribeExportTasks": { - "input": { - "type": "structure", - "members": { - "taskId": {}, - "statusCode": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "exportTasks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "taskId": {}, - "taskName": {}, - "logGroupName": {}, - "from": { - "type": "long" - }, - "to": { - "type": "long" - }, - "destination": {}, - "destinationPrefix": {}, - "status": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - }, - "executionInfo": { - "type": "structure", - "members": { - "creationTime": { - "type": "long" - }, - "completionTime": { - "type": "long" - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeLogGroups": { - "input": { - "type": "structure", - "members": { - "logGroupNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "logGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logGroupName": {}, - "creationTime": { - "type": "long" - }, - "retentionInDays": { - "type": "integer" - }, - "metricFilterCount": { - "type": "integer" - }, - "arn": {}, - "storedBytes": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeLogStreams": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "logStreamNamePrefix": {}, - "orderBy": {}, - "descending": { - "type": "boolean" - }, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "logStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "creationTime": { - "type": "long" - }, - "firstEventTimestamp": { - "type": "long" - }, - "lastEventTimestamp": { - "type": "long" - }, - "lastIngestionTime": { - "type": "long" - }, - "uploadSequenceToken": {}, - "arn": {}, - "storedBytes": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeMetricFilters": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "filterNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "metricFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "filterName": {}, - "filterPattern": {}, - "metricTransformations": { - "shape": "S1m" - }, - "creationTime": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeSubscriptionFilters": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "filterNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "subscriptionFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "filterName": {}, - "logGroupName": {}, - "filterPattern": {}, - "destinationArn": {}, - "roleArn": {}, - "creationTime": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "FilterLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "logStreamNames": { - "type": "list", - "member": {} - }, - "startTime": { - "type": "long" - }, - "endTime": { - "type": "long" - }, - "filterPattern": {}, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "interleaved": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "timestamp": { - "type": "long" - }, - "message": {}, - "ingestionTime": { - "type": "long" - }, - "eventId": {} - } - } - }, - "searchedLogStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "searchedCompletely": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {}, - "startTime": { - "type": "long" - }, - "endTime": { - "type": "long" - }, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "startFromHead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "timestamp": { - "type": "long" - }, - "message": {}, - "ingestionTime": { - "type": "long" - } - } - } - }, - "nextForwardToken": {}, - "nextBackwardToken": {} - } - } - }, - "PutDestination": { - "input": { - "type": "structure", - "required": [ - "destinationName", - "targetArn", - "roleArn" - ], - "members": { - "destinationName": {}, - "targetArn": {}, - "roleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "destination": { - "shape": "Sq" - } - } - } - }, - "PutDestinationPolicy": { - "input": { - "type": "structure", - "required": [ - "destinationName", - "accessPolicy" - ], - "members": { - "destinationName": {}, - "accessPolicy": {} - } - } - }, - "PutLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName", - "logEvents" - ], - "members": { - "logGroupName": {}, - "logStreamName": {}, - "logEvents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "timestamp", - "message" - ], - "members": { - "timestamp": { - "type": "long" - }, - "message": {} - } - } - }, - "sequenceToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "nextSequenceToken": {}, - "rejectedLogEventsInfo": { - "type": "structure", - "members": { - "tooNewLogEventStartIndex": { - "type": "integer" - }, - "tooOldLogEventEndIndex": { - "type": "integer" - }, - "expiredLogEventEndIndex": { - "type": "integer" - } - } - } - } - } - }, - "PutMetricFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName", - "filterPattern", - "metricTransformations" - ], - "members": { - "logGroupName": {}, - "filterName": {}, - "filterPattern": {}, - "metricTransformations": { - "shape": "S1m" - } - } - } - }, - "PutRetentionPolicy": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "retentionInDays" - ], - "members": { - "logGroupName": {}, - "retentionInDays": { - "type": "integer" - } - } - } - }, - "PutSubscriptionFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName", - "filterPattern", - "destinationArn" - ], - "members": { - "logGroupName": {}, - "filterName": {}, - "filterPattern": {}, - "destinationArn": {}, - "roleArn": {} - } - } - }, - "TestMetricFilter": { - "input": { - "type": "structure", - "required": [ - "filterPattern", - "logEventMessages" - ], - "members": { - "filterPattern": {}, - "logEventMessages": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "matches": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventNumber": { - "type": "long" - }, - "eventMessage": {}, - "extractedValues": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - } - } - }, - "shapes": { - "Sq": { - "type": "structure", - "members": { - "destinationName": {}, - "targetArn": {}, - "roleArn": {}, - "accessPolicy": {}, - "arn": {}, - "creationTime": { - "type": "long" - } - } - }, - "S1m": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "metricName", - "metricNamespace", - "metricValue" - ], - "members": { - "metricName": {}, - "metricNamespace": {}, - "metricValue": {}, - "defaultValue": { - "type": "double" - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json b/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json deleted file mode 100644 index f689324..0000000 --- a/node_modules/aws-sdk/apis/logs-2014-03-28.paginators.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "pagination": { - "DescribeDestinations": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "destinations" - }, - "DescribeLogGroups": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "logGroups" - }, - "DescribeLogStreams": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "logStreams" - }, - "DescribeMetricFilters": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "metricFilters" - }, - "DescribeSubscriptionFilters": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "subscriptionFilters" - }, - "FilterLogEvents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": [ - "events", - "searchedLogStreams" - ] - }, - "GetLogEvents": { - "input_token": "nextToken", - "output_token": "nextForwardToken", - "limit_key": "limit", - "result_key": "events" - } - } -} diff --git a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json deleted file mode 100644 index 232fafc..0000000 --- a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.min.json +++ /dev/null @@ -1,1107 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-12-12", - "endpointPrefix": "machinelearning", - "jsonVersion": "1.1", - "serviceFullName": "Amazon Machine Learning", - "signatureVersion": "v4", - "targetPrefix": "AmazonML_20141212", - "protocol": "json" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "Tags", - "ResourceId", - "ResourceType" - ], - "members": { - "Tags": { - "shape": "S2" - }, - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {} - } - } - }, - "CreateBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId", - "MLModelId", - "BatchPredictionDataSourceId", - "OutputUri" - ], - "members": { - "BatchPredictionId": {}, - "BatchPredictionName": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "OutputUri": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "CreateDataSourceFromRDS": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "RDSData", - "RoleARN" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "RDSData": { - "type": "structure", - "required": [ - "DatabaseInformation", - "SelectSqlQuery", - "DatabaseCredentials", - "S3StagingLocation", - "ResourceRole", - "ServiceRole", - "SubnetId", - "SecurityGroupIds" - ], - "members": { - "DatabaseInformation": { - "shape": "Sf" - }, - "SelectSqlQuery": {}, - "DatabaseCredentials": { - "type": "structure", - "required": [ - "Username", - "Password" - ], - "members": { - "Username": {}, - "Password": {} - } - }, - "S3StagingLocation": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaUri": {}, - "ResourceRole": {}, - "ServiceRole": {}, - "SubnetId": {}, - "SecurityGroupIds": { - "type": "list", - "member": {} - } - } - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateDataSourceFromRedshift": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSpec", - "RoleARN" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "DataSpec": { - "type": "structure", - "required": [ - "DatabaseInformation", - "SelectSqlQuery", - "DatabaseCredentials", - "S3StagingLocation" - ], - "members": { - "DatabaseInformation": { - "shape": "Sy" - }, - "SelectSqlQuery": {}, - "DatabaseCredentials": { - "type": "structure", - "required": [ - "Username", - "Password" - ], - "members": { - "Username": {}, - "Password": {} - } - }, - "S3StagingLocation": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaUri": {} - } - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateDataSourceFromS3": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSpec" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "DataSpec": { - "type": "structure", - "required": [ - "DataLocationS3" - ], - "members": { - "DataLocationS3": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaLocationS3": {} - } - }, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId", - "MLModelId", - "EvaluationDataSourceId" - ], - "members": { - "EvaluationId": {}, - "EvaluationName": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "CreateMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId", - "MLModelType", - "TrainingDataSourceId" - ], - "members": { - "MLModelId": {}, - "MLModelName": {}, - "MLModelType": {}, - "Parameters": { - "shape": "S1d" - }, - "TrainingDataSourceId": {}, - "Recipe": {}, - "RecipeUri": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - }, - "CreateRealtimeEndpoint": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "RealtimeEndpointInfo": { - "shape": "S1j" - } - } - } - }, - "DeleteBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId" - ], - "members": { - "BatchPredictionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "DeleteDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId" - ], - "members": { - "DataSourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "DeleteEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId" - ], - "members": { - "EvaluationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "DeleteMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - }, - "DeleteRealtimeEndpoint": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "RealtimeEndpointInfo": { - "shape": "S1j" - } - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "TagKeys", - "ResourceId", - "ResourceType" - ], - "members": { - "TagKeys": { - "type": "list", - "member": {} - }, - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {} - } - } - }, - "DescribeBatchPredictions": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BatchPredictionId": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "OutputUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "TotalRecordCount": { - "type": "long" - }, - "InvalidRecordCount": { - "type": "long" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeDataSources": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DataSourceId": {}, - "DataLocationS3": {}, - "DataRearrangement": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "DataSizeInBytes": { - "type": "long" - }, - "NumberOfFiles": { - "type": "long" - }, - "Name": {}, - "Status": {}, - "Message": {}, - "RedshiftMetadata": { - "shape": "S2i" - }, - "RDSMetadata": { - "shape": "S2j" - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - }, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEvaluations": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EvaluationId": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "PerformanceMetrics": { - "shape": "S2q" - }, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMLModels": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MLModelId": {}, - "TrainingDataSourceId": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "SizeInBytes": { - "type": "long" - }, - "EndpointInfo": { - "shape": "S1j" - }, - "TrainingParameters": { - "shape": "S1d" - }, - "InputDataLocationS3": {}, - "Algorithm": {}, - "MLModelType": {}, - "ScoreThreshold": { - "type": "float" - }, - "ScoreThresholdLastUpdatedAt": { - "type": "timestamp" - }, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "ResourceType" - ], - "members": { - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Tags": { - "shape": "S2" - } - } - } - }, - "GetBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId" - ], - "members": { - "BatchPredictionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "OutputUri": {}, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "TotalRecordCount": { - "type": "long" - }, - "InvalidRecordCount": { - "type": "long" - } - } - } - }, - "GetDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId" - ], - "members": { - "DataSourceId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {}, - "DataLocationS3": {}, - "DataRearrangement": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "DataSizeInBytes": { - "type": "long" - }, - "NumberOfFiles": { - "type": "long" - }, - "Name": {}, - "Status": {}, - "LogUri": {}, - "Message": {}, - "RedshiftMetadata": { - "shape": "S2i" - }, - "RDSMetadata": { - "shape": "S2j" - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - }, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "DataSourceSchema": {} - } - } - }, - "GetEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId" - ], - "members": { - "EvaluationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "PerformanceMetrics": { - "shape": "S2q" - }, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "GetMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "TrainingDataSourceId": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "SizeInBytes": { - "type": "long" - }, - "EndpointInfo": { - "shape": "S1j" - }, - "TrainingParameters": { - "shape": "S1d" - }, - "InputDataLocationS3": {}, - "MLModelType": {}, - "ScoreThreshold": { - "type": "float" - }, - "ScoreThresholdLastUpdatedAt": { - "type": "timestamp" - }, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "Recipe": {}, - "Schema": {} - } - } - }, - "Predict": { - "input": { - "type": "structure", - "required": [ - "MLModelId", - "Record", - "PredictEndpoint" - ], - "members": { - "MLModelId": {}, - "Record": { - "type": "map", - "key": {}, - "value": {} - }, - "PredictEndpoint": {} - } - }, - "output": { - "type": "structure", - "members": { - "Prediction": { - "type": "structure", - "members": { - "predictedLabel": {}, - "predictedValue": { - "type": "float" - }, - "predictedScores": { - "type": "map", - "key": {}, - "value": { - "type": "float" - } - }, - "details": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "UpdateBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId", - "BatchPredictionName" - ], - "members": { - "BatchPredictionId": {}, - "BatchPredictionName": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "UpdateDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSourceName" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "UpdateEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId", - "EvaluationName" - ], - "members": { - "EvaluationId": {}, - "EvaluationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "UpdateMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {}, - "MLModelName": {}, - "ScoreThreshold": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sf": { - "type": "structure", - "required": [ - "InstanceIdentifier", - "DatabaseName" - ], - "members": { - "InstanceIdentifier": {}, - "DatabaseName": {} - } - }, - "Sy": { - "type": "structure", - "required": [ - "DatabaseName", - "ClusterIdentifier" - ], - "members": { - "DatabaseName": {}, - "ClusterIdentifier": {} - } - }, - "S1d": { - "type": "map", - "key": {}, - "value": {} - }, - "S1j": { - "type": "structure", - "members": { - "PeakRequestsPerSecond": { - "type": "integer" - }, - "CreatedAt": { - "type": "timestamp" - }, - "EndpointUrl": {}, - "EndpointStatus": {} - } - }, - "S2i": { - "type": "structure", - "members": { - "RedshiftDatabase": { - "shape": "Sy" - }, - "DatabaseUserName": {}, - "SelectSqlQuery": {} - } - }, - "S2j": { - "type": "structure", - "members": { - "Database": { - "shape": "Sf" - }, - "DatabaseUserName": {}, - "SelectSqlQuery": {}, - "ResourceRole": {}, - "ServiceRole": {}, - "DataPipelineId": {} - } - }, - "S2q": { - "type": "structure", - "members": { - "Properties": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json deleted file mode 100644 index c13ce65..0000000 --- a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.paginators.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "pagination": { - "DescribeBatchPredictions": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeDataSources": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeEvaluations": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeMLModels": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - } - } -} diff --git a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json b/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json deleted file mode 100644 index da6b1c9..0000000 --- a/node_modules/aws-sdk/apis/machinelearning-2014-12-12.waiters2.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "version": 2, - "waiters": { - "DataSourceAvailable": { - "delay": 30, - "operation": "DescribeDataSources", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "MLModelAvailable": { - "delay": 30, - "operation": "DescribeMLModels", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "EvaluationAvailable": { - "delay": 30, - "operation": "DescribeEvaluations", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "BatchPredictionAvailable": { - "delay": 30, - "operation": "DescribeBatchPredictions", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json b/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json deleted file mode 100644 index 352a4d5..0000000 --- a/node_modules/aws-sdk/apis/marketplacecommerceanalytics-2015-07-01.min.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-01", - "endpointPrefix": "marketplacecommerceanalytics", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Marketplace Commerce Analytics", - "signatureVersion": "v4", - "signingName": "marketplacecommerceanalytics", - "targetPrefix": "MarketplaceCommerceAnalytics20150701" - }, - "operations": { - "GenerateDataSet": { - "input": { - "type": "structure", - "required": [ - "dataSetType", - "dataSetPublicationDate", - "roleNameArn", - "destinationS3BucketName", - "snsTopicArn" - ], - "members": { - "dataSetType": {}, - "dataSetPublicationDate": { - "type": "timestamp" - }, - "roleNameArn": {}, - "destinationS3BucketName": {}, - "destinationS3Prefix": {}, - "snsTopicArn": {}, - "customerDefinedValues": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "dataSetRequestId": {} - } - } - }, - "StartSupportDataExport": { - "input": { - "type": "structure", - "required": [ - "dataSetType", - "fromDate", - "roleNameArn", - "destinationS3BucketName", - "snsTopicArn" - ], - "members": { - "dataSetType": {}, - "fromDate": { - "type": "timestamp" - }, - "roleNameArn": {}, - "destinationS3BucketName": {}, - "destinationS3Prefix": {}, - "snsTopicArn": {}, - "customerDefinedValues": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "dataSetRequestId": {} - } - } - } - }, - "shapes": { - "S8": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/metadata.json b/node_modules/aws-sdk/apis/metadata.json deleted file mode 100644 index f625e66..0000000 --- a/node_modules/aws-sdk/apis/metadata.json +++ /dev/null @@ -1,305 +0,0 @@ -{ - "acm": { - "name": "ACM", - "cors": true - }, - "apigateway": { - "name": "APIGateway", - "cors": true - }, - "applicationautoscaling": { - "prefix": "application-autoscaling", - "name": "ApplicationAutoScaling", - "cors": true - }, - "autoscaling": { - "name": "AutoScaling", - "cors": true - }, - "cloudformation": { - "name": "CloudFormation", - "cors": true - }, - "cloudfront": { - "name": "CloudFront", - "versions": ["2013-05-12*", "2013-11-11*", "2014-05-31*", "2014-10-21*", "2014-11-06*", "2015-04-17*", "2015-07-27*", "2015-09-17*", "2016-01-13*", "2016-01-28*", "2016-08-01*", "2016-08-20*"], - "cors": true - }, - "cloudhsm": { - "name": "CloudHSM", - "cors": true - }, - "cloudsearch": { - "name": "CloudSearch" - }, - "cloudsearchdomain": { - "name": "CloudSearchDomain" - }, - "cloudtrail": { - "name": "CloudTrail", - "cors": true - }, - "cloudwatch": { - "prefix": "monitoring", - "name": "CloudWatch", - "cors": true - }, - "cloudwatchevents": { - "prefix": "events", - "name": "CloudWatchEvents", - "versions": ["2014-02-03*"], - "cors": true - }, - "cloudwatchlogs": { - "prefix": "logs", - "name": "CloudWatchLogs", - "cors": true - }, - "codecommit": { - "name": "CodeCommit", - "cors": true - }, - "codedeploy": { - "name": "CodeDeploy", - "cors": true - }, - "codepipeline": { - "name": "CodePipeline", - "cors": true - }, - "cognitoidentity": { - "prefix": "cognito-identity", - "name": "CognitoIdentity", - "cors": true - }, - "cognitoidentityserviceprovider": { - "prefix": "cognito-idp", - "name": "CognitoIdentityServiceProvider", - "cors": true - }, - "cognitosync": { - "prefix": "cognito-sync", - "name": "CognitoSync", - "cors": true - }, - "configservice": { - "prefix": "config", - "name": "ConfigService", - "cors": true - }, - "datapipeline": { - "name": "DataPipeline" - }, - "devicefarm": { - "name": "DeviceFarm", - "cors": true - }, - "directconnect": { - "name": "DirectConnect", - "cors": true - }, - "directoryservice": { - "prefix": "ds", - "name": "DirectoryService" - }, - "discovery": { - "name": "Discovery" - }, - "dms": { - "name": "DMS" - }, - "dynamodb": { - "name": "DynamoDB", - "cors": true - }, - "dynamodbstreams": { - "prefix": "streams.dynamodb", - "name": "DynamoDBStreams", - "cors": true - }, - "ec2": { - "name": "EC2", - "versions": ["2013-06-15*", "2013-10-15*", "2014-02-01*", "2014-05-01*", "2014-06-15*", "2014-09-01*", "2014-10-01*", "2015-03-01*", "2015-04-15*", "2015-10-01*", "2016-04-01*"], - "cors": true - }, - "ecr": { - "name": "ECR", - "cors": true - }, - "ecs": { - "name": "ECS", - "cors": true - }, - "efs": { - "prefix": "elasticfilesystem", - "name": "EFS" - }, - "elasticache": { - "name": "ElastiCache", - "versions": ["2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*"], - "cors": true - }, - "elasticbeanstalk": { - "name": "ElasticBeanstalk", - "cors": true - }, - "elb": { - "prefix": "elasticloadbalancing", - "name": "ELB", - "cors": true - }, - "elbv2": { - "prefix": "elasticloadbalancingv2", - "name": "ELBv2", - "cors": true - }, - "emr": { - "prefix": "elasticmapreduce", - "name": "EMR", - "cors": true - }, - "es": { - "name": "ES" - }, - "elastictranscoder": { - "name": "ElasticTranscoder", - "cors": true - }, - "firehose": { - "name": "Firehose", - "cors": true - }, - "gamelift": { - "name": "GameLift", - "cors": true - }, - "glacier": { - "name": "Glacier" - }, - "iam": { - "name": "IAM" - }, - "importexport": { - "name": "ImportExport" - }, - "inspector": { - "name": "Inspector", - "versions": ["2015-08-18*"], - "cors": true - }, - "iot": { - "name": "Iot", - "cors": true - }, - "iotdata": { - "prefix": "iot-data", - "name": "IotData", - "cors": true - }, - "kinesis": { - "name": "Kinesis", - "cors": true - }, - "kinesisanalytics": { - "name": "KinesisAnalytics" - }, - "kms": { - "name": "KMS", - "cors": true - }, - "lambda": { - "name": "Lambda", - "cors": true - }, - "machinelearning": { - "name": "MachineLearning", - "cors": true - }, - "marketplacecommerceanalytics": { - "name": "MarketplaceCommerceAnalytics", - "cors": true - }, - "marketplacemetering": { - "prefix": "meteringmarketplace", - "name": "MarketplaceMetering" - }, - "mobileanalytics": { - "name": "MobileAnalytics", - "cors": true - }, - "opsworks": { - "name": "OpsWorks", - "cors": true - }, - "rds": { - "name": "RDS", - "versions": ["2014-09-01*"], - "cors": true - }, - "redshift": { - "name": "Redshift", - "cors": true - }, - "route53": { - "name": "Route53", - "cors": true - }, - "route53domains": { - "name": "Route53Domains", - "cors": true - }, - "s3": { - "name": "S3", - "dualstackAvailable": true, - "cors": true - }, - "servicecatalog": { - "name": "ServiceCatalog", - "cors": true - }, - "ses": { - "prefix": "email", - "name": "SES", - "cors": true - }, - "simpledb": { - "prefix": "sdb", - "name": "SimpleDB" - }, - "snowball": { - "name": "Snowball" - }, - "sns": { - "name": "SNS", - "cors": true - }, - "sqs": { - "name": "SQS", - "cors": true - }, - "ssm": { - "name": "SSM", - "cors": true - }, - "storagegateway": { - "name": "StorageGateway", - "cors": true - }, - "sts": { - "name": "STS", - "cors": true - }, - "support": { - "name": "Support" - }, - "swf": { - "name": "SWF" - }, - "waf": { - "name": "WAF", - "cors": true - }, - "workspaces": { - "name": "WorkSpaces" - } -} diff --git a/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json b/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json deleted file mode 100644 index ed7d5bd..0000000 --- a/node_modules/aws-sdk/apis/meteringmarketplace-2016-01-14.min.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-01-14", - "endpointPrefix": "metering.marketplace", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWSMarketplace Metering", - "signatureVersion": "v4", - "signingName": "aws-marketplace", - "targetPrefix": "AWSMPMeteringService" - }, - "operations": { - "MeterUsage": { - "input": { - "type": "structure", - "required": [ - "ProductCode", - "Timestamp", - "UsageDimension", - "UsageQuantity", - "DryRun" - ], - "members": { - "ProductCode": {}, - "Timestamp": { - "type": "timestamp" - }, - "UsageDimension": {}, - "UsageQuantity": { - "type": "integer" - }, - "DryRun": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "MeteringRecordId": {} - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json b/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json deleted file mode 100644 index a327cb1..0000000 --- a/node_modules/aws-sdk/apis/mobileanalytics-2014-06-05.min.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-05", - "endpointPrefix": "mobileanalytics", - "serviceFullName": "Amazon Mobile Analytics", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "PutEvents": { - "http": { - "requestUri": "/2014-06-05/events", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "events", - "clientContext" - ], - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "eventType", - "timestamp" - ], - "members": { - "eventType": {}, - "timestamp": {}, - "session": { - "type": "structure", - "members": { - "id": {}, - "duration": { - "type": "long" - }, - "startTimestamp": {}, - "stopTimestamp": {} - } - }, - "version": {}, - "attributes": { - "type": "map", - "key": {}, - "value": {} - }, - "metrics": { - "type": "map", - "key": {}, - "value": { - "type": "double" - } - } - } - } - }, - "clientContext": { - "location": "header", - "locationName": "x-amz-Client-Context" - }, - "clientContextEncoding": { - "location": "header", - "locationName": "x-amz-Client-Context-Encoding" - } - } - } - } - }, - "shapes": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json b/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json deleted file mode 100644 index d4696fa..0000000 --- a/node_modules/aws-sdk/apis/monitoring-2010-08-01.min.json +++ /dev/null @@ -1,501 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-08-01", - "endpointPrefix": "monitoring", - "protocol": "query", - "serviceAbbreviation": "CloudWatch", - "serviceFullName": "Amazon CloudWatch", - "signatureVersion": "v4", - "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/" - }, - "operations": { - "DeleteAlarms": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "DescribeAlarmHistory": { - "input": { - "type": "structure", - "members": { - "AlarmName": {}, - "HistoryItemType": {}, - "StartDate": { - "type": "timestamp" - }, - "EndDate": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmHistoryResult", - "type": "structure", - "members": { - "AlarmHistoryItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "Timestamp": { - "type": "timestamp" - }, - "HistoryItemType": {}, - "HistorySummary": {}, - "HistoryData": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAlarms": { - "input": { - "type": "structure", - "members": { - "AlarmNames": { - "shape": "S2" - }, - "AlarmNamePrefix": {}, - "StateValue": {}, - "ActionPrefix": {}, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmsResult", - "type": "structure", - "members": { - "MetricAlarms": { - "shape": "Sj" - }, - "NextToken": {} - } - } - }, - "DescribeAlarmsForMetric": { - "input": { - "type": "structure", - "required": [ - "MetricName", - "Namespace" - ], - "members": { - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "shape": "Sv" - }, - "Period": { - "type": "integer" - }, - "Unit": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmsForMetricResult", - "type": "structure", - "members": { - "MetricAlarms": { - "shape": "Sj" - } - } - } - }, - "DisableAlarmActions": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "EnableAlarmActions": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "GetMetricStatistics": { - "input": { - "type": "structure", - "required": [ - "Namespace", - "MetricName", - "StartTime", - "EndTime", - "Period", - "Statistics" - ], - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "shape": "Sv" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Period": { - "type": "integer" - }, - "Statistics": { - "type": "list", - "member": {} - }, - "Unit": {} - } - }, - "output": { - "resultWrapper": "GetMetricStatisticsResult", - "type": "structure", - "members": { - "Label": {}, - "Datapoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "SampleCount": { - "type": "double" - }, - "Average": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "Minimum": { - "type": "double" - }, - "Maximum": { - "type": "double" - }, - "Unit": {} - }, - "xmlOrder": [ - "Timestamp", - "SampleCount", - "Average", - "Sum", - "Minimum", - "Maximum", - "Unit" - ] - } - } - } - } - }, - "ListMetrics": { - "input": { - "type": "structure", - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListMetricsResult", - "type": "structure", - "members": { - "Metrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "shape": "Sv" - } - }, - "xmlOrder": [ - "Namespace", - "MetricName", - "Dimensions" - ] - } - }, - "NextToken": {} - }, - "xmlOrder": [ - "Metrics", - "NextToken" - ] - } - }, - "PutMetricAlarm": { - "input": { - "type": "structure", - "required": [ - "AlarmName", - "MetricName", - "Namespace", - "Statistic", - "Period", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ], - "members": { - "AlarmName": {}, - "AlarmDescription": {}, - "ActionsEnabled": { - "type": "boolean" - }, - "OKActions": { - "shape": "So" - }, - "AlarmActions": { - "shape": "So" - }, - "InsufficientDataActions": { - "shape": "So" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "shape": "Sv" - }, - "Period": { - "type": "integer" - }, - "Unit": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {} - } - } - }, - "PutMetricData": { - "input": { - "type": "structure", - "required": [ - "Namespace", - "MetricData" - ], - "members": { - "Namespace": {}, - "MetricData": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "MetricName" - ], - "members": { - "MetricName": {}, - "Dimensions": { - "shape": "Sv" - }, - "Timestamp": { - "type": "timestamp" - }, - "Value": { - "type": "double" - }, - "StatisticValues": { - "type": "structure", - "required": [ - "SampleCount", - "Sum", - "Minimum", - "Maximum" - ], - "members": { - "SampleCount": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "Minimum": { - "type": "double" - }, - "Maximum": { - "type": "double" - } - } - }, - "Unit": {} - } - } - } - } - } - }, - "SetAlarmState": { - "input": { - "type": "structure", - "required": [ - "AlarmName", - "StateValue", - "StateReason" - ], - "members": { - "AlarmName": {}, - "StateValue": {}, - "StateReason": {}, - "StateReasonData": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "Sj": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "AlarmArn": {}, - "AlarmDescription": {}, - "AlarmConfigurationUpdatedTimestamp": { - "type": "timestamp" - }, - "ActionsEnabled": { - "type": "boolean" - }, - "OKActions": { - "shape": "So" - }, - "AlarmActions": { - "shape": "So" - }, - "InsufficientDataActions": { - "shape": "So" - }, - "StateValue": {}, - "StateReason": {}, - "StateReasonData": {}, - "StateUpdatedTimestamp": { - "type": "timestamp" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "shape": "Sv" - }, - "Period": { - "type": "integer" - }, - "Unit": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {} - }, - "xmlOrder": [ - "AlarmName", - "AlarmArn", - "AlarmDescription", - "AlarmConfigurationUpdatedTimestamp", - "ActionsEnabled", - "OKActions", - "AlarmActions", - "InsufficientDataActions", - "StateValue", - "StateReason", - "StateReasonData", - "StateUpdatedTimestamp", - "MetricName", - "Namespace", - "Statistic", - "Dimensions", - "Period", - "Unit", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ] - } - }, - "So": { - "type": "list", - "member": {} - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - }, - "xmlOrder": [ - "Name", - "Value" - ] - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json b/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json deleted file mode 100644 index 7bee28c..0000000 --- a/node_modules/aws-sdk/apis/monitoring-2010-08-01.paginators.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "pagination": { - "DescribeAlarmHistory": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AlarmHistoryItems" - }, - "DescribeAlarms": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "MetricAlarms" - }, - "DescribeAlarmsForMetric": { - "result_key": "MetricAlarms" - }, - "ListMetrics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Metrics" - } - } -} diff --git a/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json b/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json deleted file mode 100644 index cb0cf0b..0000000 --- a/node_modules/aws-sdk/apis/monitoring-2010-08-01.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "AlarmExists": { - "delay": 5, - "maxAttempts": 40, - "operation": "DescribeAlarms", - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(MetricAlarms[]) > `0`", - "state": "success" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json b/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json deleted file mode 100644 index fb2c0f8..0000000 --- a/node_modules/aws-sdk/apis/opsworks-2013-02-18.min.json +++ /dev/null @@ -1,2141 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-02-18", - "endpointPrefix": "opsworks", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS OpsWorks", - "signatureVersion": "v4", - "targetPrefix": "OpsWorks_20130218" - }, - "operations": { - "AssignInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "LayerIds" - ], - "members": { - "InstanceId": {}, - "LayerIds": { - "shape": "S3" - } - } - } - }, - "AssignVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "InstanceId": {} - } - } - }, - "AssociateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {}, - "InstanceId": {} - } - } - }, - "AttachElasticLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "ElasticLoadBalancerName", - "LayerId" - ], - "members": { - "ElasticLoadBalancerName": {}, - "LayerId": {} - } - } - }, - "CloneStack": { - "input": { - "type": "structure", - "required": [ - "SourceStackId", - "ServiceRoleArn" - ], - "members": { - "SourceStackId": {}, - "Name": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "ClonePermissions": { - "type": "boolean" - }, - "CloneAppIds": { - "shape": "S3" - }, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateApp": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Name", - "Type" - ], - "members": { - "StackId": {}, - "Shortname": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "Environment": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "AppId": {} - } - } - }, - "CreateDeployment": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Command" - ], - "members": { - "StackId": {}, - "AppId": {}, - "InstanceIds": { - "shape": "S3" - }, - "LayerIds": { - "shape": "S3" - }, - "Command": { - "shape": "Ss" - }, - "Comment": {}, - "CustomJson": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeploymentId": {} - } - } - }, - "CreateInstance": { - "input": { - "type": "structure", - "required": [ - "StackId", - "LayerIds", - "InstanceType" - ], - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - }, - "InstanceType": {}, - "AutoScalingType": {}, - "Hostname": {}, - "Os": {}, - "AmiId": {}, - "SshKeyName": {}, - "AvailabilityZone": {}, - "VirtualizationType": {}, - "SubnetId": {}, - "Architecture": {}, - "RootDeviceType": {}, - "BlockDeviceMappings": { - "shape": "Sz" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AgentVersion": {}, - "Tenancy": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "CreateLayer": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Type", - "Name", - "Shortname" - ], - "members": { - "StackId": {}, - "Type": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S19" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomRecipes": { - "shape": "S1b" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "members": { - "LayerId": {} - } - } - }, - "CreateStack": { - "input": { - "type": "structure", - "required": [ - "Name", - "Region", - "ServiceRoleArn", - "DefaultInstanceProfileArn" - ], - "members": { - "Name": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "IamUserArn": {} - } - } - }, - "DeleteApp": { - "input": { - "type": "structure", - "required": [ - "AppId" - ], - "members": { - "AppId": {} - } - } - }, - "DeleteInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "DeleteElasticIp": { - "type": "boolean" - }, - "DeleteVolumes": { - "type": "boolean" - } - } - } - }, - "DeleteLayer": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {} - } - } - }, - "DeleteStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "DeleteUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {} - } - } - }, - "DeregisterEcsCluster": { - "input": { - "type": "structure", - "required": [ - "EcsClusterArn" - ], - "members": { - "EcsClusterArn": {} - } - } - }, - "DeregisterElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {} - } - } - }, - "DeregisterInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "DeregisterRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "RdsDbInstanceArn" - ], - "members": { - "RdsDbInstanceArn": {} - } - } - }, - "DeregisterVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {} - } - } - }, - "DescribeAgentVersions": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "ConfigurationManager": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "AgentVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Version": {}, - "ConfigurationManager": { - "shape": "Sa" - } - } - } - } - } - } - }, - "DescribeApps": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "AppIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Apps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AppId": {}, - "StackId": {}, - "Shortname": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "CreatedAt": {}, - "Environment": { - "shape": "So" - } - } - } - } - } - } - }, - "DescribeCommands": { - "input": { - "type": "structure", - "members": { - "DeploymentId": {}, - "InstanceId": {}, - "CommandIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Commands": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "DeploymentId": {}, - "CreatedAt": {}, - "AcknowledgedAt": {}, - "CompletedAt": {}, - "Status": {}, - "ExitCode": { - "type": "integer" - }, - "LogUrl": {}, - "Type": {} - } - } - } - } - } - }, - "DescribeDeployments": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "AppId": {}, - "DeploymentIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeploymentId": {}, - "StackId": {}, - "AppId": {}, - "CreatedAt": {}, - "CompletedAt": {}, - "Duration": { - "type": "integer" - }, - "IamUserArn": {}, - "Comment": {}, - "Command": { - "shape": "Ss" - }, - "Status": {}, - "CustomJson": {}, - "InstanceIds": { - "shape": "S3" - } - } - } - } - } - } - }, - "DescribeEcsClusters": { - "input": { - "type": "structure", - "members": { - "EcsClusterArns": { - "shape": "S3" - }, - "StackId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "EcsClusters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EcsClusterArn": {}, - "EcsClusterName": {}, - "StackId": {}, - "RegisteredAt": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeElasticIps": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "Ips": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticIps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Ip": {}, - "Name": {}, - "Domain": {}, - "Region": {}, - "InstanceId": {} - } - } - } - } - } - }, - "DescribeElasticLoadBalancers": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticLoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ElasticLoadBalancerName": {}, - "Region": {}, - "DnsName": {}, - "StackId": {}, - "LayerId": {}, - "VpcId": {}, - "AvailabilityZones": { - "shape": "S3" - }, - "SubnetIds": { - "shape": "S3" - }, - "Ec2InstanceIds": { - "shape": "S3" - } - } - } - } - } - } - }, - "DescribeInstances": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerId": {}, - "InstanceIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AgentVersion": {}, - "AmiId": {}, - "Architecture": {}, - "AutoScalingType": {}, - "AvailabilityZone": {}, - "BlockDeviceMappings": { - "shape": "Sz" - }, - "CreatedAt": {}, - "EbsOptimized": { - "type": "boolean" - }, - "Ec2InstanceId": {}, - "EcsClusterArn": {}, - "EcsContainerInstanceArn": {}, - "ElasticIp": {}, - "Hostname": {}, - "InfrastructureClass": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "InstanceId": {}, - "InstanceProfileArn": {}, - "InstanceType": {}, - "LastServiceErrorId": {}, - "LayerIds": { - "shape": "S3" - }, - "Os": {}, - "Platform": {}, - "PrivateDns": {}, - "PrivateIp": {}, - "PublicDns": {}, - "PublicIp": {}, - "RegisteredBy": {}, - "ReportedAgentVersion": {}, - "ReportedOs": { - "type": "structure", - "members": { - "Family": {}, - "Name": {}, - "Version": {} - } - }, - "RootDeviceType": {}, - "RootDeviceVolumeId": {}, - "SecurityGroupIds": { - "shape": "S3" - }, - "SshHostDsaKeyFingerprint": {}, - "SshHostRsaKeyFingerprint": {}, - "SshKeyName": {}, - "StackId": {}, - "Status": {}, - "SubnetId": {}, - "Tenancy": {}, - "VirtualizationType": {} - } - } - } - } - } - }, - "DescribeLayers": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Layers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "LayerId": {}, - "Type": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "DefaultSecurityGroupNames": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S19" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "DefaultRecipes": { - "shape": "S1b" - }, - "CustomRecipes": { - "shape": "S1b" - }, - "CreatedAt": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1c" - } - } - } - } - } - } - }, - "DescribeLoadBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "LayerIds" - ], - "members": { - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "LoadBasedAutoScalingConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LayerId": {}, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "shape": "S30" - }, - "DownScaling": { - "shape": "S30" - } - } - } - } - } - } - }, - "DescribeMyUserProfile": { - "output": { - "type": "structure", - "members": { - "UserProfile": { - "type": "structure", - "members": { - "IamUserArn": {}, - "Name": {}, - "SshUsername": {}, - "SshPublicKey": {} - } - } - } - } - }, - "DescribePermissions": { - "input": { - "type": "structure", - "members": { - "IamUserArn": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Permissions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "IamUserArn": {}, - "AllowSsh": { - "type": "boolean" - }, - "AllowSudo": { - "type": "boolean" - }, - "Level": {} - } - } - } - } - } - }, - "DescribeRaidArrays": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "RaidArrayIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "RaidArrays": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RaidArrayId": {}, - "InstanceId": {}, - "Name": {}, - "RaidLevel": { - "type": "integer" - }, - "NumberOfDisks": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "Device": {}, - "MountPoint": {}, - "AvailabilityZone": {}, - "CreatedAt": {}, - "StackId": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeRdsDbInstances": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "RdsDbInstanceArns": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "RdsDbInstances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RdsDbInstanceArn": {}, - "DbInstanceIdentifier": {}, - "DbUser": {}, - "DbPassword": {}, - "Region": {}, - "Address": {}, - "Engine": {}, - "StackId": {}, - "MissingOnRds": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeServiceErrors": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "InstanceId": {}, - "ServiceErrorIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ServiceErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ServiceErrorId": {}, - "StackId": {}, - "InstanceId": {}, - "Type": {}, - "Message": {}, - "CreatedAt": {} - } - } - } - } - } - }, - "DescribeStackProvisioningParameters": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AgentInstallerUrl": {}, - "Parameters": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "DescribeStackSummary": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackSummary": { - "type": "structure", - "members": { - "StackId": {}, - "Name": {}, - "Arn": {}, - "LayersCount": { - "type": "integer" - }, - "AppsCount": { - "type": "integer" - }, - "InstancesCount": { - "type": "structure", - "members": { - "Assigning": { - "type": "integer" - }, - "Booting": { - "type": "integer" - }, - "ConnectionLost": { - "type": "integer" - }, - "Deregistering": { - "type": "integer" - }, - "Online": { - "type": "integer" - }, - "Pending": { - "type": "integer" - }, - "Rebooting": { - "type": "integer" - }, - "Registered": { - "type": "integer" - }, - "Registering": { - "type": "integer" - }, - "Requested": { - "type": "integer" - }, - "RunningSetup": { - "type": "integer" - }, - "SetupFailed": { - "type": "integer" - }, - "ShuttingDown": { - "type": "integer" - }, - "StartFailed": { - "type": "integer" - }, - "Stopped": { - "type": "integer" - }, - "Stopping": { - "type": "integer" - }, - "Terminated": { - "type": "integer" - }, - "Terminating": { - "type": "integer" - }, - "Unassigning": { - "type": "integer" - } - } - } - } - } - } - } - }, - "DescribeStacks": { - "input": { - "type": "structure", - "members": { - "StackIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Stacks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "Name": {}, - "Arn": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "CreatedAt": {}, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - } - } - } - } - }, - "DescribeTimeBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "TimeBasedAutoScalingConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "AutoScalingSchedule": { - "shape": "S40" - } - } - } - } - } - } - }, - "DescribeUserProfiles": { - "input": { - "type": "structure", - "members": { - "IamUserArns": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserProfiles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IamUserArn": {}, - "Name": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeVolumes": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "RaidArrayId": {}, - "VolumeIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Volumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeId": {}, - "Ec2VolumeId": {}, - "Name": {}, - "RaidArrayId": {}, - "InstanceId": {}, - "Status": {}, - "Size": { - "type": "integer" - }, - "Device": {}, - "MountPoint": {}, - "Region": {}, - "AvailabilityZone": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - } - } - } - }, - "DetachElasticLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "ElasticLoadBalancerName", - "LayerId" - ], - "members": { - "ElasticLoadBalancerName": {}, - "LayerId": {} - } - } - }, - "DisassociateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {} - } - } - }, - "GetHostnameSuggestion": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {} - } - }, - "output": { - "type": "structure", - "members": { - "LayerId": {}, - "Hostname": {} - } - } - }, - "GrantAccess": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "ValidForInMinutes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TemporaryCredential": { - "type": "structure", - "members": { - "Username": {}, - "Password": {}, - "ValidForInMinutes": { - "type": "integer" - }, - "InstanceId": {} - } - } - } - } - }, - "RebootInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "RegisterEcsCluster": { - "input": { - "type": "structure", - "required": [ - "EcsClusterArn", - "StackId" - ], - "members": { - "EcsClusterArn": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EcsClusterArn": {} - } - } - }, - "RegisterElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp", - "StackId" - ], - "members": { - "ElasticIp": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ElasticIp": {} - } - } - }, - "RegisterInstance": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "Hostname": {}, - "PublicIp": {}, - "PrivateIp": {}, - "RsaPublicKey": {}, - "RsaPublicKeyFingerprint": {}, - "InstanceIdentity": { - "type": "structure", - "members": { - "Document": {}, - "Signature": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "RegisterRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "StackId", - "RdsDbInstanceArn", - "DbUser", - "DbPassword" - ], - "members": { - "StackId": {}, - "RdsDbInstanceArn": {}, - "DbUser": {}, - "DbPassword": {} - } - } - }, - "RegisterVolume": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "Ec2VolumeId": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeId": {} - } - } - }, - "SetLoadBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {}, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "shape": "S30" - }, - "DownScaling": { - "shape": "S30" - } - } - } - }, - "SetPermission": { - "input": { - "type": "structure", - "required": [ - "StackId", - "IamUserArn" - ], - "members": { - "StackId": {}, - "IamUserArn": {}, - "AllowSsh": { - "type": "boolean" - }, - "AllowSudo": { - "type": "boolean" - }, - "Level": {} - } - } - }, - "SetTimeBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "AutoScalingSchedule": { - "shape": "S40" - } - } - } - }, - "StartInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "StartStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "StopInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "StopStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "UnassignInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "UnassignVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {} - } - } - }, - "UpdateApp": { - "input": { - "type": "structure", - "required": [ - "AppId" - ], - "members": { - "AppId": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "Environment": { - "shape": "So" - } - } - } - }, - "UpdateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {}, - "Name": {} - } - } - }, - "UpdateInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "LayerIds": { - "shape": "S3" - }, - "InstanceType": {}, - "AutoScalingType": {}, - "Hostname": {}, - "Os": {}, - "AmiId": {}, - "SshKeyName": {}, - "Architecture": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AgentVersion": {} - } - } - }, - "UpdateLayer": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S19" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomRecipes": { - "shape": "S1b" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1c" - } - } - } - }, - "UpdateMyUserProfile": { - "input": { - "type": "structure", - "members": { - "SshPublicKey": {} - } - } - }, - "UpdateRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "RdsDbInstanceArn" - ], - "members": { - "RdsDbInstanceArn": {}, - "DbUser": {}, - "DbPassword": {} - } - } - }, - "UpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "Name": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "DefaultRootDeviceType": {}, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "AgentVersion": {} - } - } - }, - "UpdateUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - } - }, - "UpdateVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "Name": {}, - "MountPoint": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": {} - }, - "S8": { - "type": "map", - "key": {}, - "value": {} - }, - "Sa": { - "type": "structure", - "members": { - "Name": {}, - "Version": {} - } - }, - "Sb": { - "type": "structure", - "members": { - "ManageBerkshelf": { - "type": "boolean" - }, - "BerkshelfVersion": {} - } - }, - "Sd": { - "type": "structure", - "members": { - "Type": {}, - "Url": {}, - "Username": {}, - "Password": {}, - "SshKey": {}, - "Revision": {} - } - }, - "Si": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Arn": {}, - "DatabaseName": {} - } - } - }, - "Sl": { - "type": "structure", - "required": [ - "Certificate", - "PrivateKey" - ], - "members": { - "Certificate": {}, - "PrivateKey": {}, - "Chain": {} - } - }, - "Sm": { - "type": "map", - "key": {}, - "value": {} - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {}, - "Secure": { - "type": "boolean" - } - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Args": { - "type": "map", - "key": {}, - "value": { - "shape": "S3" - } - } - } - }, - "Sz": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeviceName": {}, - "NoDevice": {}, - "VirtualName": {}, - "Ebs": { - "type": "structure", - "members": { - "SnapshotId": {}, - "Iops": { - "type": "integer" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": {}, - "DeleteOnTermination": { - "type": "boolean" - } - } - } - } - } - }, - "S17": { - "type": "map", - "key": {}, - "value": {} - }, - "S19": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "MountPoint", - "NumberOfDisks", - "Size" - ], - "members": { - "MountPoint": {}, - "RaidLevel": { - "type": "integer" - }, - "NumberOfDisks": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - }, - "S1b": { - "type": "structure", - "members": { - "Setup": { - "shape": "S3" - }, - "Configure": { - "shape": "S3" - }, - "Deploy": { - "shape": "S3" - }, - "Undeploy": { - "shape": "S3" - }, - "Shutdown": { - "shape": "S3" - } - } - }, - "S1c": { - "type": "structure", - "members": { - "Shutdown": { - "type": "structure", - "members": { - "ExecutionTimeout": { - "type": "integer" - }, - "DelayUntilElbConnectionsDrained": { - "type": "boolean" - } - } - } - } - }, - "S30": { - "type": "structure", - "members": { - "InstanceCount": { - "type": "integer" - }, - "ThresholdsWaitTime": { - "type": "integer" - }, - "IgnoreMetricsTime": { - "type": "integer" - }, - "CpuThreshold": { - "type": "double" - }, - "MemoryThreshold": { - "type": "double" - }, - "LoadThreshold": { - "type": "double" - }, - "Alarms": { - "shape": "S3" - } - } - }, - "S40": { - "type": "structure", - "members": { - "Monday": { - "shape": "S41" - }, - "Tuesday": { - "shape": "S41" - }, - "Wednesday": { - "shape": "S41" - }, - "Thursday": { - "shape": "S41" - }, - "Friday": { - "shape": "S41" - }, - "Saturday": { - "shape": "S41" - }, - "Sunday": { - "shape": "S41" - } - } - }, - "S41": { - "type": "map", - "key": {}, - "value": {} - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json b/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json deleted file mode 100644 index 3825e7d..0000000 --- a/node_modules/aws-sdk/apis/opsworks-2013-02-18.paginators.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "pagination": { - "DescribeApps": { - "result_key": "Apps" - }, - "DescribeCommands": { - "result_key": "Commands" - }, - "DescribeDeployments": { - "result_key": "Deployments" - }, - "DescribeEcsClusters": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "EcsClusters" - }, - "DescribeElasticIps": { - "result_key": "ElasticIps" - }, - "DescribeElasticLoadBalancers": { - "result_key": "ElasticLoadBalancers" - }, - "DescribeInstances": { - "result_key": "Instances" - }, - "DescribeLayers": { - "result_key": "Layers" - }, - "DescribeLoadBasedAutoScaling": { - "result_key": "LoadBasedAutoScalingConfigurations" - }, - "DescribePermissions": { - "result_key": "Permissions" - }, - "DescribeRaidArrays": { - "result_key": "RaidArrays" - }, - "DescribeServiceErrors": { - "result_key": "ServiceErrors" - }, - "DescribeStacks": { - "result_key": "Stacks" - }, - "DescribeTimeBasedAutoScaling": { - "result_key": "TimeBasedAutoScalingConfigurations" - }, - "DescribeUserProfiles": { - "result_key": "UserProfiles" - }, - "DescribeVolumes": { - "result_key": "Volumes" - } - } -} diff --git a/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json b/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json deleted file mode 100644 index 8daa084..0000000 --- a/node_modules/aws-sdk/apis/opsworks-2013-02-18.waiters2.json +++ /dev/null @@ -1,295 +0,0 @@ -{ - "version": 2, - "waiters": { - "AppExists": { - "delay": 1, - "operation": "DescribeApps", - "maxAttempts": 40, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "matcher": "status", - "expected": 400, - "state": "failure" - } - ] - }, - "DeploymentSuccessful": { - "delay": 15, - "operation": "DescribeDeployments", - "maxAttempts": 40, - "description": "Wait until a deployment has completed successfully", - "acceptors": [ - { - "expected": "successful", - "matcher": "pathAll", - "state": "success", - "argument": "Deployments[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Deployments[].Status" - } - ] - }, - "InstanceOnline": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is online.", - "acceptors": [ - { - "expected": "online", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "shutting_down", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopped", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminating", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceRegistered": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is registered.", - "acceptors": [ - { - "expected": "registered", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "shutting_down", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopped", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminating", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is stopped.", - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "booting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "online", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "requested", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "running_setup", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is terminated.", - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - }, - { - "expected": "booting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "online", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "requested", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "running_setup", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/rds-2013-01-10.min.json b/node_modules/aws-sdk/apis/rds-2013-01-10.min.json deleted file mode 100644 index 7de129f..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-01-10.min.json +++ /dev/null @@ -1,1895 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-10", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1c" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1i" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1o" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S25" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1c", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2f" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2f" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1o", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S3m", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S3o" - } - }, - "wrapper": true - } - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2f" - } - } - }, - "output": { - "shape": "S3z", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1i" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1o" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S3m" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2f" - } - } - }, - "output": { - "shape": "S3z", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "Id": {}, - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - } - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMembership": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1c": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1i": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1o": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2f": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3m": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S3o" - } - }, - "wrapper": true - }, - "S3o": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S3z": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json b/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json deleted file mode 100644 index e70d762..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-01-10.paginators.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} diff --git a/node_modules/aws-sdk/apis/rds-2013-02-12.min.json b/node_modules/aws-sdk/apis/rds-2013-02-12.min.json deleted file mode 100644 index c4d5920..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-02-12.min.json +++ /dev/null @@ -1,2027 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-02-12", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1d" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1p" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S28" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S28", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1d", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2n" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2n" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1p", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S3w", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S3y" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2n" - } - } - }, - "output": { - "shape": "S4b", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1t", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1p" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S3w" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2n" - } - } - }, - "output": { - "shape": "S4b", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1d": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1j": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1p": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1t", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S1t": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S28": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2n": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3w": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S3y" - } - }, - "wrapper": true - }, - "S3y": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4b": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json b/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json deleted file mode 100644 index 662845c..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-02-12.paginators.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} diff --git a/node_modules/aws-sdk/apis/rds-2013-09-09.min.json b/node_modules/aws-sdk/apis/rds-2013-09-09.min.json deleted file mode 100644 index 69fec9a..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-09-09.min.json +++ /dev/null @@ -1,2163 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-09-09", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBSubnetGroupName": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1f" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1l" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1r" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S2d" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S2d", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1f", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2s" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2s" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S27" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S27" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S41", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S43" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S27" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2s" - } - } - }, - "output": { - "shape": "S4g", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1l" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1r" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S41" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2s" - } - } - }, - "output": { - "shape": "S4g", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {} - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1f": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1l": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1r": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S1v": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S27": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S2d": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2s": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S41": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S43" - } - }, - "wrapper": true - }, - "S43": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4g": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json b/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json deleted file mode 100644 index 662845c..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-09-09.paginators.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} diff --git a/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json b/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json deleted file mode 100644 index b015007..0000000 --- a/node_modules/aws-sdk/apis/rds-2013-09-09.waiters2.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/rds-2014-10-31.min.json b/node_modules/aws-sdk/apis/rds-2014-10-31.min.json deleted file mode 100644 index da91c93..0000000 --- a/node_modules/aws-sdk/apis/rds-2014-10-31.min.json +++ /dev/null @@ -1,3508 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-10-31", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "ApplyPendingMaintenanceAction": { - "input": { - "type": "structure", - "required": [ - "ResourceIdentifier", - "ApplyAction", - "OptInType" - ], - "members": { - "ResourceIdentifier": {}, - "ApplyAction": {}, - "OptInType": {} - } - }, - "output": { - "resultWrapper": "ApplyPendingMaintenanceActionResult", - "type": "structure", - "members": { - "ResourcePendingMaintenanceActions": { - "shape": "Sd" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sj" - } - } - } - }, - "CopyDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBClusterParameterGroupIdentifier", - "TargetDBClusterParameterGroupIdentifier", - "TargetDBClusterParameterGroupDescription" - ], - "members": { - "SourceDBClusterParameterGroupIdentifier": {}, - "TargetDBClusterParameterGroupIdentifier": {}, - "TargetDBClusterParameterGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBClusterParameterGroupResult", - "type": "structure", - "members": { - "DBClusterParameterGroup": { - "shape": "Sq" - } - } - } - }, - "CopyDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBClusterSnapshotIdentifier", - "TargetDBClusterSnapshotIdentifier" - ], - "members": { - "SourceDBClusterSnapshotIdentifier": {}, - "TargetDBClusterSnapshotIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "St" - } - } - } - }, - "CopyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBParameterGroupIdentifier", - "TargetDBParameterGroupIdentifier", - "TargetDBParameterGroupDescription" - ], - "members": { - "SourceDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "Sy" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S9" - }, - "CopyTags": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S12" - } - } - } - }, - "CopyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "SourceOptionGroupIdentifier", - "TargetOptionGroupIdentifier", - "TargetOptionGroupDescription" - ], - "members": { - "SourceOptionGroupIdentifier": {}, - "TargetOptionGroupIdentifier": {}, - "TargetOptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S16" - } - } - } - }, - "CreateDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "Engine" - ], - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "DBSubnetGroupName": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "ReplicationSourceIdentifier": {}, - "Tags": { - "shape": "S9" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {} - } - }, - "output": { - "resultWrapper": "CreateDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "CreateDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBClusterParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBClusterParameterGroupResult", - "type": "structure", - "members": { - "DBClusterParameterGroup": { - "shape": "Sq" - } - } - } - }, - "CreateDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier", - "DBClusterIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {}, - "DBClusterIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "St" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBInstanceClass", - "Engine" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "S1t" - }, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBClusterIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": {}, - "DomainIAMRoleName": {}, - "PromotionTier": { - "type": "integer" - }, - "Timezone": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBSubnetGroupName": {}, - "StorageType": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "Sy" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sj" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S12" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S2k" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S1z" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S16" - } - } - } - }, - "DeleteDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "DeleteDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {} - } - } - }, - "DeleteDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "St" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S12" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "DescribeAccountAttributesResult", - "type": "structure", - "members": { - "AccountQuotas": { - "type": "list", - "member": { - "locationName": "AccountQuota", - "type": "structure", - "members": { - "AccountQuotaName": {}, - "Used": { - "type": "long" - }, - "Max": { - "type": "long" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeCertificates": { - "input": { - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCertificatesResult", - "type": "structure", - "members": { - "Certificates": { - "type": "list", - "member": { - "locationName": "Certificate", - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "CertificateType": {}, - "Thumbprint": {}, - "ValidFrom": { - "type": "timestamp" - }, - "ValidTill": { - "type": "timestamp" - }, - "CertificateArn": {} - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeDBClusterParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusterParameterGroups": { - "type": "list", - "member": { - "shape": "Sq", - "locationName": "DBClusterParameterGroup" - } - } - } - } - }, - "DescribeDBClusterParameters": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S3m" - }, - "Marker": {} - } - } - }, - "DescribeDBClusterSnapshotAttributes": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterSnapshotAttributesResult", - "type": "structure", - "members": { - "DBClusterSnapshotAttributesResult": { - "shape": "S3r" - } - } - } - }, - "DescribeDBClusterSnapshots": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "DBClusterSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "IncludeShared": { - "type": "boolean" - }, - "IncludePublic": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBClusterSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusterSnapshots": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBClusterSnapshot" - } - } - } - } - }, - "DescribeDBClusters": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusters": { - "type": "list", - "member": { - "shape": "S1i", - "locationName": "DBCluster" - } - } - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - }, - "ListSupportedTimezones": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S45" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S45", - "locationName": "CharacterSet" - } - }, - "ValidUpgradeTarget": { - "type": "list", - "member": { - "locationName": "UpgradeTarget", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "Description": {}, - "AutoUpgrade": { - "type": "boolean" - }, - "IsMajorVersionUpgrade": { - "type": "boolean" - } - } - } - }, - "SupportedTimezones": { - "type": "list", - "member": { - "locationName": "Timezone", - "type": "structure", - "members": { - "TimezoneName": {} - } - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "Sy", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S3m" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sj", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshotAttributes": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotAttributesResult", - "type": "structure", - "members": { - "DBSnapshotAttributesResult": { - "shape": "S4s" - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "IncludeShared": { - "type": "boolean" - }, - "IncludePublic": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "S12", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S1z", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultClusterParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultClusterParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "shape": "S53" - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "shape": "S53" - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - }, - "SourceArn": {} - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "OptionsConflictsWith": { - "type": "list", - "member": { - "locationName": "OptionConflictName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - }, - "OptionGroupOptionVersions": { - "type": "list", - "member": { - "locationName": "OptionVersion", - "type": "structure", - "members": { - "Version": {}, - "IsDefault": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S16", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S22", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - }, - "SupportsStorageEncryption": { - "type": "boolean" - }, - "StorageType": {}, - "SupportsIops": { - "type": "boolean" - }, - "SupportsEnhancedMonitoring": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribePendingMaintenanceActions": { - "input": { - "type": "structure", - "members": { - "ResourceIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribePendingMaintenanceActionsResult", - "type": "structure", - "members": { - "PendingMaintenanceActions": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "ResourcePendingMaintenanceActions" - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S66", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S68" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeSourceRegions": { - "input": { - "type": "structure", - "members": { - "RegionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "Filters": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "DescribeSourceRegionsResult", - "type": "structure", - "members": { - "Marker": {}, - "SourceRegions": { - "type": "list", - "member": { - "locationName": "SourceRegion", - "type": "structure", - "members": { - "RegionName": {}, - "Endpoint": {}, - "Status": {} - } - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "FailoverDBCluster": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "TargetDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "FailoverDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "NewDBClusterIdentifier": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "Port": { - "type": "integer" - }, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {} - } - }, - "output": { - "resultWrapper": "ModifyDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "ModifyDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName", - "Parameters" - ], - "members": { - "DBClusterParameterGroupName": {}, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6r", - "resultWrapper": "ModifyDBClusterParameterGroupResult" - } - }, - "ModifyDBClusterSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier", - "AttributeName" - ], - "members": { - "DBClusterSnapshotIdentifier": {}, - "AttributeName": {}, - "ValuesToAdd": { - "shape": "S3u" - }, - "ValuesToRemove": { - "shape": "S3u" - } - } - }, - "output": { - "resultWrapper": "ModifyDBClusterSnapshotAttributeResult", - "type": "structure", - "members": { - "DBClusterSnapshotAttributesResult": { - "shape": "S3r" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSubnetGroupName": {}, - "DBSecurityGroups": { - "shape": "S1t" - }, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "CACertificateIdentifier": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "DBPortNumber": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "MonitoringRoleArn": {}, - "DomainIAMRoleName": {}, - "PromotionTier": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6x", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "AttributeName" - ], - "members": { - "DBSnapshotIdentifier": {}, - "AttributeName": {}, - "ValuesToAdd": { - "shape": "S3u" - }, - "ValuesToRemove": { - "shape": "S3u" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSnapshotAttributeResult", - "type": "structure", - "members": { - "DBSnapshotAttributesResult": { - "shape": "S4s" - } - } - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S1z" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "OptionVersion": {}, - "DBSecurityGroupMemberships": { - "shape": "S1t" - }, - "VpcSecurityGroupMemberships": { - "shape": "S1g" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1a", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S16" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "PromoteReadReplicaDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S66" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6r", - "resultWrapper": "ResetDBClusterParameterGroupResult" - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6x", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBClusterFromS3": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "Engine", - "MasterUsername", - "MasterUserPassword", - "SourceEngine", - "SourceEngineVersion", - "S3BucketName", - "S3IngestionRoleArn" - ], - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "DBSubnetGroupName": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "Tags": { - "shape": "S9" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "SourceEngine": {}, - "SourceEngineVersion": {}, - "S3BucketName": {}, - "S3Prefix": {}, - "S3IngestionRoleArn": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterFromS3Result", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "RestoreDBClusterFromSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "SnapshotIdentifier", - "Engine" - ], - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "DBClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "DBSubnetGroupName": {}, - "DatabaseName": {}, - "OptionGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "Tags": { - "shape": "S9" - }, - "KmsKeyId": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterFromSnapshotResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "RestoreDBClusterToPointInTime": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "SourceDBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "SourceDBClusterIdentifier": {}, - "RestoreToTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "DBSubnetGroupName": {}, - "OptionGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "Tags": { - "shape": "S9" - }, - "KmsKeyId": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterToPointInTimeResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "DomainIAMRoleName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "Domain": {}, - "DomainIAMRoleName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sj" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - }, - "EventSubscriptionArn": {} - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "ResourceIdentifier": {}, - "PendingMaintenanceActionDetails": { - "type": "list", - "member": { - "locationName": "PendingMaintenanceAction", - "type": "structure", - "members": { - "Action": {}, - "AutoAppliedAfterDate": { - "type": "timestamp" - }, - "ForcedApplyDate": { - "type": "timestamp" - }, - "OptInStatus": {}, - "CurrentApplyDate": { - "type": "timestamp" - }, - "Description": {} - } - } - } - }, - "wrapper": true - }, - "Sj": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - }, - "DBSecurityGroupArn": {} - }, - "wrapper": true - }, - "Sq": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "DBClusterParameterGroupArn": {} - }, - "wrapper": true - }, - "St": { - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "DBClusterSnapshotIdentifier": {}, - "DBClusterIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "ClusterCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "PercentProgress": { - "type": "integer" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DBClusterSnapshotArn": {} - }, - "wrapper": true - }, - "Su": { - "type": "list", - "member": { - "locationName": "AvailabilityZone" - } - }, - "Sy": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "DBParameterGroupArn": {} - }, - "wrapper": true - }, - "S12": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {}, - "SourceDBSnapshotIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DBSnapshotArn": {}, - "Timezone": {} - }, - "wrapper": true - }, - "S16": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionVersion": {}, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1a", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "S1b" - }, - "VpcSecurityGroupMemberships": { - "shape": "S1d" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {}, - "OptionGroupArn": {} - }, - "wrapper": true - }, - "S1a": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S1b": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "S1d": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S1g": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "S1i": { - "type": "structure", - "members": { - "AllocatedStorage": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Su" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroup": {}, - "DBSubnetGroup": {}, - "Status": {}, - "PercentProgress": {}, - "EarliestRestorableTime": { - "type": "timestamp" - }, - "Endpoint": {}, - "ReaderEndpoint": {}, - "Engine": {}, - "EngineVersion": {}, - "LatestRestorableTime": { - "type": "timestamp" - }, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "DBClusterOptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "DBClusterOptionGroup", - "type": "structure", - "members": { - "DBClusterOptionGroupName": {}, - "Status": {} - } - } - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "ReplicationSourceIdentifier": {}, - "ReadReplicaIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaIdentifier" - } - }, - "DBClusterMembers": { - "type": "list", - "member": { - "locationName": "DBClusterMember", - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "IsClusterWriter": { - "type": "boolean" - }, - "DBClusterParameterGroupStatus": {}, - "PromotionTier": { - "type": "integer" - } - }, - "wrapper": true - } - }, - "VpcSecurityGroups": { - "shape": "S1d" - }, - "HostedZoneId": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DbClusterResourceId": {}, - "DBClusterArn": {} - }, - "wrapper": true - }, - "S1t": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "S1v": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - }, - "HostedZoneId": {} - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "S1b" - }, - "VpcSecurityGroups": { - "shape": "S1d" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S1z" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {}, - "StorageType": {}, - "CACertificateIdentifier": {}, - "DBSubnetGroupName": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "DbInstancePort": { - "type": "integer" - }, - "DBClusterIdentifier": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DbiResourceId": {}, - "CACertificateIdentifier": {}, - "DomainMemberships": { - "type": "list", - "member": { - "locationName": "DomainMembership", - "type": "structure", - "members": { - "Domain": {}, - "Status": {}, - "FQDN": {}, - "IAMRoleName": {} - } - } - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "EnhancedMonitoringResourceArn": {}, - "MonitoringRoleArn": {}, - "PromotionTier": { - "type": "integer" - }, - "DBInstanceArn": {}, - "Timezone": {} - }, - "wrapper": true - }, - "S1z": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S22" - }, - "SubnetStatus": {} - } - } - }, - "DBSubnetGroupArn": {} - }, - "wrapper": true - }, - "S22": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S2k": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S3b": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S3m": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3r": { - "type": "structure", - "members": { - "DBClusterSnapshotIdentifier": {}, - "DBClusterSnapshotAttributes": { - "type": "list", - "member": { - "locationName": "DBClusterSnapshotAttribute", - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValues": { - "shape": "S3u" - } - } - } - } - }, - "wrapper": true - }, - "S3u": { - "type": "list", - "member": { - "locationName": "AttributeValue" - } - }, - "S45": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S4s": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBSnapshotAttributes": { - "type": "list", - "member": { - "locationName": "DBSnapshotAttribute", - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValues": { - "shape": "S3u" - } - }, - "wrapper": true - } - } - }, - "wrapper": true - }, - "S53": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S3m" - } - }, - "wrapper": true - }, - "S66": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S68" - }, - "ReservedDBInstanceArn": {} - }, - "wrapper": true - }, - "S68": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S6r": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {} - } - }, - "S6x": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json b/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json deleted file mode 100644 index 662845c..0000000 --- a/node_modules/aws-sdk/apis/rds-2014-10-31.paginators.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} diff --git a/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json b/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json deleted file mode 100644 index e75f03b..0000000 --- a/node_modules/aws-sdk/apis/rds-2014-10-31.waiters2.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "DBInstanceNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json b/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json deleted file mode 100644 index c4b5123..0000000 --- a/node_modules/aws-sdk/apis/redshift-2012-12-01.min.json +++ /dev/null @@ -1,2306 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-12-01", - "endpointPrefix": "redshift", - "protocol": "query", - "serviceFullName": "Amazon Redshift", - "signatureVersion": "v4", - "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/" - }, - "operations": { - "AuthorizeClusterSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "AuthorizeSnapshotAccess": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "AccountWithRestoreAccess": {} - } - }, - "output": { - "resultWrapper": "AuthorizeSnapshotAccessResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CopyClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceSnapshotIdentifier", - "TargetSnapshotIdentifier" - ], - "members": { - "SourceSnapshotIdentifier": {}, - "SourceSnapshotClusterIdentifier": {}, - "TargetSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "NodeType", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "ClusterIdentifier": {}, - "ClusterType": {}, - "NodeType": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ClusterSubnetGroupName": {}, - "AvailabilityZone": {}, - "PreferredMaintenanceWindow": {}, - "ClusterParameterGroupName": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "Port": { - "type": "integer" - }, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "NumberOfNodes": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "ElasticIp": {}, - "Tags": { - "shape": "S7" - }, - "KmsKeyId": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "AdditionalInfo": {}, - "IamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "CreateClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "CreateClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "ParameterGroupFamily", - "Description" - ], - "members": { - "ParameterGroupName": {}, - "ParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterParameterGroupResult", - "type": "structure", - "members": { - "ClusterParameterGroup": { - "shape": "S1g" - } - } - } - }, - "CreateClusterSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName", - "Description" - ], - "members": { - "ClusterSecurityGroupName": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSecurityGroupResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "CreateClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "ClusterIdentifier" - ], - "members": { - "SnapshotIdentifier": {}, - "ClusterIdentifier": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName", - "Description", - "SubnetIds" - ], - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "S1m" - }, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSubnetGroupResult", - "type": "structure", - "members": { - "ClusterSubnetGroup": { - "shape": "S1o" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "SourceIds": { - "shape": "S1t" - }, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S1w" - } - } - } - }, - "CreateHsmClientCertificate": { - "input": { - "type": "structure", - "required": [ - "HsmClientCertificateIdentifier" - ], - "members": { - "HsmClientCertificateIdentifier": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateHsmClientCertificateResult", - "type": "structure", - "members": { - "HsmClientCertificate": { - "shape": "S1z" - } - } - } - }, - "CreateHsmConfiguration": { - "input": { - "type": "structure", - "required": [ - "HsmConfigurationIdentifier", - "Description", - "HsmIpAddress", - "HsmPartitionName", - "HsmPartitionPassword", - "HsmServerPublicCertificate" - ], - "members": { - "HsmConfigurationIdentifier": {}, - "Description": {}, - "HsmIpAddress": {}, - "HsmPartitionName": {}, - "HsmPartitionPassword": {}, - "HsmServerPublicCertificate": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateHsmConfigurationResult", - "type": "structure", - "members": { - "HsmConfiguration": { - "shape": "S22" - } - } - } - }, - "CreateSnapshotCopyGrant": { - "input": { - "type": "structure", - "required": [ - "SnapshotCopyGrantName" - ], - "members": { - "SnapshotCopyGrantName": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateSnapshotCopyGrantResult", - "type": "structure", - "members": { - "SnapshotCopyGrant": { - "shape": "S25" - } - } - } - }, - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "SkipFinalClusterSnapshot": { - "type": "boolean" - }, - "FinalClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "DeleteClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {} - } - } - }, - "DeleteClusterSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {} - } - } - }, - "DeleteClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DeleteClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName" - ], - "members": { - "ClusterSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - } - }, - "DeleteHsmClientCertificate": { - "input": { - "type": "structure", - "required": [ - "HsmClientCertificateIdentifier" - ], - "members": { - "HsmClientCertificateIdentifier": {} - } - } - }, - "DeleteHsmConfiguration": { - "input": { - "type": "structure", - "required": [ - "HsmConfigurationIdentifier" - ], - "members": { - "HsmConfigurationIdentifier": {} - } - } - }, - "DeleteSnapshotCopyGrant": { - "input": { - "type": "structure", - "required": [ - "SnapshotCopyGrantName" - ], - "members": { - "SnapshotCopyGrantName": {} - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "shape": "S2j" - } - } - } - }, - "DescribeClusterParameterGroups": { - "input": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ParameterGroups": { - "type": "list", - "member": { - "shape": "S1g", - "locationName": "ClusterParameterGroup" - } - } - } - } - }, - "DescribeClusterParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeClusterParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2q" - }, - "Marker": {} - } - } - }, - "DescribeClusterSecurityGroups": { - "input": { - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterSecurityGroups": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "ClusterSecurityGroup" - } - } - } - } - }, - "DescribeClusterSnapshots": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SnapshotType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "OwnerAccount": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "Snapshots": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "Snapshot" - } - } - } - } - }, - "DescribeClusterSubnetGroups": { - "input": { - "type": "structure", - "members": { - "ClusterSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterSubnetGroups": { - "type": "list", - "member": { - "shape": "S1o", - "locationName": "ClusterSubnetGroup" - } - } - } - } - }, - "DescribeClusterVersions": { - "input": { - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeClusterVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterVersions": { - "type": "list", - "member": { - "locationName": "ClusterVersion", - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterParameterGroupFamily": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "Clusters": { - "type": "list", - "member": { - "shape": "Sv", - "locationName": "Cluster" - } - } - } - } - }, - "DescribeDefaultClusterParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupFamily" - ], - "members": { - "ParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDefaultClusterParametersResult", - "type": "structure", - "members": { - "DefaultClusterParameters": { - "type": "structure", - "members": { - "ParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2q" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "Events": { - "type": "list", - "member": { - "locationName": "EventInfoMap", - "type": "structure", - "members": { - "EventId": {}, - "EventCategories": { - "shape": "S1u" - }, - "EventDescription": {}, - "Severity": {} - }, - "wrapper": true - } - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S1w", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Date": { - "type": "timestamp" - }, - "EventId": {} - } - } - } - } - } - }, - "DescribeHsmClientCertificates": { - "input": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeHsmClientCertificatesResult", - "type": "structure", - "members": { - "Marker": {}, - "HsmClientCertificates": { - "type": "list", - "member": { - "shape": "S1z", - "locationName": "HsmClientCertificate" - } - } - } - } - }, - "DescribeHsmConfigurations": { - "input": { - "type": "structure", - "members": { - "HsmConfigurationIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeHsmConfigurationsResult", - "type": "structure", - "members": { - "Marker": {}, - "HsmConfigurations": { - "type": "list", - "member": { - "shape": "S22", - "locationName": "HsmConfiguration" - } - } - } - } - }, - "DescribeLoggingStatus": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "DescribeLoggingStatusResult" - } - }, - "DescribeOrderableClusterOptions": { - "input": { - "type": "structure", - "members": { - "ClusterVersion": {}, - "NodeType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableClusterOptionsResult", - "type": "structure", - "members": { - "OrderableClusterOptions": { - "type": "list", - "member": { - "locationName": "OrderableClusterOption", - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterType": {}, - "NodeType": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "AvailabilityZone" - } - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedNodeOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedNodeOfferingId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedNodeOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedNodeOfferings": { - "type": "list", - "member": { - "locationName": "ReservedNodeOffering", - "type": "structure", - "members": { - "ReservedNodeOfferingId": {}, - "NodeType": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeReservedNodes": { - "input": { - "type": "structure", - "members": { - "ReservedNodeId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedNodesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedNodes": { - "type": "list", - "member": { - "shape": "S4c", - "locationName": "ReservedNode" - } - } - } - } - }, - "DescribeResize": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeResizeResult", - "type": "structure", - "members": { - "TargetNodeType": {}, - "TargetNumberOfNodes": { - "type": "integer" - }, - "TargetClusterType": {}, - "Status": {}, - "ImportTablesCompleted": { - "type": "list", - "member": {} - }, - "ImportTablesInProgress": { - "type": "list", - "member": {} - }, - "ImportTablesNotStarted": { - "type": "list", - "member": {} - }, - "AvgResizeRateInMegaBytesPerSecond": { - "type": "double" - }, - "TotalResizeDataInMegaBytes": { - "type": "long" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "EstimatedTimeToCompletionInSeconds": { - "type": "long" - } - } - } - }, - "DescribeSnapshotCopyGrants": { - "input": { - "type": "structure", - "members": { - "SnapshotCopyGrantName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeSnapshotCopyGrantsResult", - "type": "structure", - "members": { - "Marker": {}, - "SnapshotCopyGrants": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "SnapshotCopyGrant" - } - } - } - } - }, - "DescribeTableRestoreStatus": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "TableRestoreRequestId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeTableRestoreStatusResult", - "type": "structure", - "members": { - "TableRestoreStatusDetails": { - "type": "list", - "member": { - "shape": "S4q", - "locationName": "TableRestoreStatus" - } - }, - "Marker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "ResourceName": {}, - "ResourceType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TaggedResources": { - "type": "list", - "member": { - "locationName": "TaggedResource", - "type": "structure", - "members": { - "Tag": { - "shape": "S8" - }, - "ResourceName": {}, - "ResourceType": {} - } - } - }, - "Marker": {} - } - } - }, - "DisableLogging": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "DisableLoggingResult" - } - }, - "DisableSnapshotCopy": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DisableSnapshotCopyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "EnableLogging": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "BucketName" - ], - "members": { - "ClusterIdentifier": {}, - "BucketName": {}, - "S3KeyPrefix": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "EnableLoggingResult" - } - }, - "EnableSnapshotCopy": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "DestinationRegion" - ], - "members": { - "ClusterIdentifier": {}, - "DestinationRegion": {}, - "RetentionPeriod": { - "type": "integer" - }, - "SnapshotCopyGrantName": {} - } - }, - "output": { - "resultWrapper": "EnableSnapshotCopyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "ClusterType": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "MasterUserPassword": {}, - "ClusterParameterGroupName": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "PreferredMaintenanceWindow": {}, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "NewClusterIdentifier": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "ElasticIp": {}, - "EnhancedVpcRouting": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyClusterIamRoles": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "AddIamRoles": { - "shape": "St" - }, - "RemoveIamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterIamRolesResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "Parameters" - ], - "members": { - "ParameterGroupName": {}, - "Parameters": { - "shape": "S2q" - } - } - }, - "output": { - "shape": "S57", - "resultWrapper": "ModifyClusterParameterGroupResult" - } - }, - "ModifyClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName", - "SubnetIds" - ], - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "S1m" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterSubnetGroupResult", - "type": "structure", - "members": { - "ClusterSubnetGroup": { - "shape": "S1o" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "SourceIds": { - "shape": "S1t" - }, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S1w" - } - } - } - }, - "ModifySnapshotCopyRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "RetentionPeriod" - ], - "members": { - "ClusterIdentifier": {}, - "RetentionPeriod": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "PurchaseReservedNodeOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedNodeOfferingId" - ], - "members": { - "ReservedNodeOfferingId": {}, - "NodeCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedNodeOfferingResult", - "type": "structure", - "members": { - "ReservedNode": { - "shape": "S4c" - } - } - } - }, - "RebootCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "RebootClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ResetClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2q" - } - } - }, - "output": { - "shape": "S57", - "resultWrapper": "ResetClusterParameterGroupResult" - } - }, - "RestoreFromClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "SnapshotIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "ClusterSubnetGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "OwnerAccount": {}, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "ElasticIp": {}, - "ClusterParameterGroupName": {}, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "KmsKeyId": {}, - "NodeType": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "AdditionalInfo": {}, - "IamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "RestoreFromClusterSnapshotResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "RestoreTableFromClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "SnapshotIdentifier", - "SourceDatabaseName", - "SourceTableName", - "NewTableName" - ], - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SourceDatabaseName": {}, - "SourceSchemaName": {}, - "SourceTableName": {}, - "TargetDatabaseName": {}, - "TargetSchemaName": {}, - "NewTableName": {} - } - }, - "output": { - "resultWrapper": "RestoreTableFromClusterSnapshotResult", - "type": "structure", - "members": { - "TableRestoreStatus": { - "shape": "S4q" - } - } - } - }, - "RevokeClusterSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeClusterSecurityGroupIngressResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "RevokeSnapshotAccess": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "AccountWithRestoreAccess": {} - } - }, - "output": { - "resultWrapper": "RevokeSnapshotAccessResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "RotateEncryptionKey": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "RotateEncryptionKeyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "Description": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S7": { - "type": "list", - "member": { - "shape": "S8", - "locationName": "Tag" - } - }, - "S8": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "Sd": { - "type": "structure", - "members": { - "SnapshotIdentifier": {}, - "ClusterIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "ClusterCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "ClusterVersion": {}, - "SnapshotType": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "DBName": {}, - "VpcId": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "EncryptedWithHSM": { - "type": "boolean" - }, - "AccountsWithRestoreAccess": { - "type": "list", - "member": { - "locationName": "AccountWithRestoreAccess", - "type": "structure", - "members": { - "AccountId": {} - } - } - }, - "OwnerAccount": {}, - "TotalBackupSizeInMegaBytes": { - "type": "double" - }, - "ActualIncrementalBackupSizeInMegaBytes": { - "type": "double" - }, - "BackupProgressInMegaBytes": { - "type": "double" - }, - "CurrentBackupRateInMegaBytesPerSecond": { - "type": "double" - }, - "EstimatedSecondsToCompletion": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "SourceRegion": {}, - "Tags": { - "shape": "S7" - }, - "RestorableNodeTypes": { - "type": "list", - "member": { - "locationName": "NodeType" - } - }, - "EnhancedVpcRouting": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "ClusterSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "list", - "member": { - "locationName": "IamRoleArn" - } - }, - "Sv": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "NodeType": {}, - "ClusterStatus": {}, - "ModifyStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "ClusterCreateTime": { - "type": "timestamp" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "ClusterSecurityGroups": { - "type": "list", - "member": { - "locationName": "ClusterSecurityGroup", - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "Status": {} - } - } - }, - "VpcSecurityGroups": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroup", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "ClusterParameterGroups": { - "type": "list", - "member": { - "locationName": "ClusterParameterGroup", - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterApplyStatus": {}, - "ClusterParameterStatusList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterApplyStatus": {}, - "ParameterApplyErrorDescription": {} - } - } - } - } - } - }, - "ClusterSubnetGroupName": {}, - "VpcId": {}, - "AvailabilityZone": {}, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "MasterUserPassword": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ClusterType": {}, - "ClusterVersion": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "ClusterIdentifier": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "EnhancedVpcRouting": { - "type": "boolean" - } - } - }, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "NumberOfNodes": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "RestoreStatus": { - "type": "structure", - "members": { - "Status": {}, - "CurrentRestoreRateInMegaBytesPerSecond": { - "type": "double" - }, - "SnapshotSizeInMegaBytes": { - "type": "long" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "EstimatedTimeToCompletionInSeconds": { - "type": "long" - } - } - }, - "HsmStatus": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "Status": {} - } - }, - "ClusterSnapshotCopyStatus": { - "type": "structure", - "members": { - "DestinationRegion": {}, - "RetentionPeriod": { - "type": "long" - }, - "SnapshotCopyGrantName": {} - } - }, - "ClusterPublicKey": {}, - "ClusterNodes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NodeRole": {}, - "PrivateIPAddress": {}, - "PublicIPAddress": {} - } - } - }, - "ElasticIpStatus": { - "type": "structure", - "members": { - "ElasticIp": {}, - "Status": {} - } - }, - "ClusterRevisionNumber": {}, - "Tags": { - "shape": "S7" - }, - "KmsKeyId": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "IamRoles": { - "type": "list", - "member": { - "locationName": "ClusterIamRole", - "type": "structure", - "members": { - "IamRoleArn": {}, - "ApplyStatus": {} - } - } - } - }, - "wrapper": true - }, - "S1g": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1m": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1o": { - "type": "structure", - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S1r" - }, - "SubnetStatus": {} - } - } - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1r": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S1t": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S1u": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S1w": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": { - "type": "timestamp" - }, - "SourceType": {}, - "SourceIdsList": { - "shape": "S1t" - }, - "EventCategoriesList": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1z": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "HsmClientCertificatePublicKey": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S22": { - "type": "structure", - "members": { - "HsmConfigurationIdentifier": {}, - "Description": {}, - "HsmIpAddress": {}, - "HsmPartitionName": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "SnapshotCopyGrantName": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S2j": { - "type": "list", - "member": { - "locationName": "TagKey" - } - }, - "S2l": { - "type": "list", - "member": { - "locationName": "TagValue" - } - }, - "S2q": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "ApplyType": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {} - } - } - }, - "S3x": { - "type": "structure", - "members": { - "LoggingEnabled": { - "type": "boolean" - }, - "BucketName": {}, - "S3KeyPrefix": {}, - "LastSuccessfulDeliveryTime": { - "type": "timestamp" - }, - "LastFailureTime": { - "type": "timestamp" - }, - "LastFailureMessage": {} - } - }, - "S47": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4c": { - "type": "structure", - "members": { - "ReservedNodeId": {}, - "ReservedNodeOfferingId": {}, - "NodeType": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "NodeCount": { - "type": "integer" - }, - "State": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - }, - "S4q": { - "type": "structure", - "members": { - "TableRestoreRequestId": {}, - "Status": {}, - "Message": {}, - "RequestTime": { - "type": "timestamp" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "TotalDataInMegaBytes": { - "type": "long" - }, - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SourceDatabaseName": {}, - "SourceSchemaName": {}, - "SourceTableName": {}, - "TargetDatabaseName": {}, - "TargetSchemaName": {}, - "NewTableName": {} - }, - "wrapper": true - }, - "S57": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterGroupStatus": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json b/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json deleted file mode 100644 index 03027de..0000000 --- a/node_modules/aws-sdk/apis/redshift-2012-12-01.paginators.json +++ /dev/null @@ -1,94 +0,0 @@ -{ - "pagination": { - "DescribeClusterParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ParameterGroups" - }, - "DescribeClusterParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeClusterSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterSecurityGroups" - }, - "DescribeClusterSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Snapshots" - }, - "DescribeClusterSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterSubnetGroups" - }, - "DescribeClusterVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterVersions" - }, - "DescribeClusters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Clusters" - }, - "DescribeDefaultClusterParameters": { - "input_token": "Marker", - "output_token": "DefaultClusterParameters.Marker", - "limit_key": "MaxRecords", - "result_key": "DefaultClusterParameters.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeHsmClientCertificates": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "HsmClientCertificates" - }, - "DescribeHsmConfigurations": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "HsmConfigurations" - }, - "DescribeOrderableClusterOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableClusterOptions" - }, - "DescribeReservedNodeOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedNodeOfferings" - }, - "DescribeReservedNodes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedNodes" - } - } -} diff --git a/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json b/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json deleted file mode 100644 index 164e9b0..0000000 --- a/node_modules/aws-sdk/apis/redshift-2012-12-01.waiters2.json +++ /dev/null @@ -1,97 +0,0 @@ -{ - "version": 2, - "waiters": { - "ClusterAvailable": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "ClusterDeleted": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - } - ] - }, - "ClusterRestored": { - "operation": "DescribeClusters", - "maxAttempts": 30, - "delay": 60, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Clusters[].RestoreStatus.Status", - "expected": "completed" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Clusters[].ClusterStatus", - "expected": "deleting" - } - ] - }, - "SnapshotAvailable": { - "delay": 15, - "operation": "DescribeClusterSnapshots", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/route53-2013-04-01.min.json b/node_modules/aws-sdk/apis/route53-2013-04-01.min.json deleted file mode 100644 index 790c031..0000000 --- a/node_modules/aws-sdk/apis/route53-2013-04-01.min.json +++ /dev/null @@ -1,2370 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-04-01", - "endpointPrefix": "route53", - "globalEndpoint": "route53.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "Route 53", - "serviceFullName": "Amazon Route 53", - "signatureVersion": "v4" - }, - "operations": { - "AssociateVPCWithHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc" - }, - "input": { - "locationName": "AssociateVPCWithHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "ChangeResourceRecordSets": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/" - }, - "input": { - "locationName": "ChangeResourceRecordSetsRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "ChangeBatch" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "ChangeBatch": { - "type": "structure", - "required": [ - "Changes" - ], - "members": { - "Comment": {}, - "Changes": { - "shape": "Se" - } - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "ChangeTagsForResource": { - "http": { - "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input": { - "locationName": "ChangeTagsForResourceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "AddTags": { - "shape": "S14" - }, - "RemoveTagKeys": { - "type": "list", - "member": { - "locationName": "Key" - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateHealthCheck": { - "http": { - "requestUri": "/2013-04-01/healthcheck", - "responseCode": 201 - }, - "input": { - "locationName": "CreateHealthCheckRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "CallerReference", - "HealthCheckConfig" - ], - "members": { - "CallerReference": {}, - "HealthCheckConfig": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck", - "Location" - ], - "members": { - "HealthCheck": { - "shape": "S1x" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone", - "responseCode": 201 - }, - "input": { - "locationName": "CreateHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Name", - "CallerReference" - ], - "members": { - "Name": {}, - "VPC": { - "shape": "S3" - }, - "CallerReference": {}, - "HostedZoneConfig": { - "shape": "S2d" - }, - "DelegationSetId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone", - "ChangeInfo", - "DelegationSet", - "Location" - ], - "members": { - "HostedZone": { - "shape": "S2g" - }, - "ChangeInfo": { - "shape": "S8" - }, - "DelegationSet": { - "shape": "S2i" - }, - "VPC": { - "shape": "S3" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateReusableDelegationSet": { - "http": { - "requestUri": "/2013-04-01/delegationset", - "responseCode": 201 - }, - "input": { - "locationName": "CreateReusableDelegationSetRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "CallerReference" - ], - "members": { - "CallerReference": {}, - "HostedZoneId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSet", - "Location" - ], - "members": { - "DelegationSet": { - "shape": "S2i" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicy": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Name", - "Document" - ], - "members": { - "Name": {}, - "Document": {}, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy", - "Location" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicyInstance": { - "http": { - "requestUri": "/2013-04-01/trafficpolicyinstance", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyInstanceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "Name", - "TTL", - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "HostedZoneId": {}, - "Name": {}, - "TTL": { - "type": "long" - }, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance", - "Location" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S2w" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicyVersion": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy/{Id}", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyVersionRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "Document" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Document": {}, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy", - "Location" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "DeleteHealthCheck": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteHostedZone": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "DeleteReusableDelegationSet": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/delegationset/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrafficPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Version" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrafficPolicyInstance": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateVPCFromHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc" - }, - "input": { - "locationName": "DisassociateVPCFromHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "GetChange": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/change/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "GetChangeDetails": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/changedetails/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "required": [ - "ChangeBatchRecord" - ], - "members": { - "ChangeBatchRecord": { - "shape": "S3i" - } - }, - "deprecated": true - }, - "deprecated": true - }, - "GetCheckerIpRanges": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/checkeripranges" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "CheckerIpRanges" - ], - "members": { - "CheckerIpRanges": { - "type": "list", - "member": {} - } - } - } - }, - "GetGeoLocation": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/geolocation" - }, - "input": { - "type": "structure", - "members": { - "ContinentCode": { - "location": "querystring", - "locationName": "continentcode" - }, - "CountryCode": { - "location": "querystring", - "locationName": "countrycode" - }, - "SubdivisionCode": { - "location": "querystring", - "locationName": "subdivisioncode" - } - } - }, - "output": { - "type": "structure", - "required": [ - "GeoLocationDetails" - ], - "members": { - "GeoLocationDetails": { - "shape": "S3q" - } - } - } - }, - "GetHealthCheck": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck" - ], - "members": { - "HealthCheck": { - "shape": "S1x" - } - } - } - }, - "GetHealthCheckCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheckcount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckCount" - ], - "members": { - "HealthCheckCount": { - "type": "long" - } - } - } - }, - "GetHealthCheckLastFailureReason": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckObservations" - ], - "members": { - "HealthCheckObservations": { - "shape": "S41" - } - } - } - }, - "GetHealthCheckStatus": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckObservations" - ], - "members": { - "HealthCheckObservations": { - "shape": "S41" - } - } - } - }, - "GetHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone" - ], - "members": { - "HostedZone": { - "shape": "S2g" - }, - "DelegationSet": { - "shape": "S2i" - }, - "VPCs": { - "type": "list", - "member": { - "shape": "S3", - "locationName": "VPC" - } - } - } - } - }, - "GetHostedZoneCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzonecount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "HostedZoneCount" - ], - "members": { - "HostedZoneCount": { - "type": "long" - } - } - } - }, - "GetReusableDelegationSet": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/delegationset/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSet" - ], - "members": { - "DelegationSet": { - "shape": "S2i" - } - } - } - }, - "GetTrafficPolicy": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Version" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - } - } - } - }, - "GetTrafficPolicyInstance": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S2w" - } - } - } - }, - "GetTrafficPolicyInstanceCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstancecount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstanceCount" - ], - "members": { - "TrafficPolicyInstanceCount": { - "type": "integer" - } - } - } - }, - "ListChangeBatchesByHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/changes" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "StartDate", - "EndDate" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "StartDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "startDate" - }, - "EndDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "endDate" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxItems" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "required": [ - "MaxItems", - "Marker", - "ChangeBatchRecords" - ], - "members": { - "MaxItems": {}, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "ChangeBatchRecords": { - "shape": "S4s" - }, - "NextMarker": {} - }, - "deprecated": true - }, - "deprecated": true - }, - "ListChangeBatchesByRRSet": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/rrsChanges" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "Name", - "Type", - "StartDate", - "EndDate" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "Name": { - "location": "querystring", - "locationName": "rrSet_name" - }, - "Type": { - "location": "querystring", - "locationName": "type" - }, - "SetIdentifier": { - "location": "querystring", - "locationName": "identifier" - }, - "StartDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "startDate" - }, - "EndDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "endDate" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxItems" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "required": [ - "MaxItems", - "Marker", - "ChangeBatchRecords" - ], - "members": { - "MaxItems": {}, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "ChangeBatchRecords": { - "shape": "S4s" - }, - "NextMarker": {} - }, - "deprecated": true - }, - "deprecated": true - }, - "ListGeoLocations": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/geolocations" - }, - "input": { - "type": "structure", - "members": { - "StartContinentCode": { - "location": "querystring", - "locationName": "startcontinentcode" - }, - "StartCountryCode": { - "location": "querystring", - "locationName": "startcountrycode" - }, - "StartSubdivisionCode": { - "location": "querystring", - "locationName": "startsubdivisioncode" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "GeoLocationDetailsList", - "IsTruncated", - "MaxItems" - ], - "members": { - "GeoLocationDetailsList": { - "type": "list", - "member": { - "shape": "S3q", - "locationName": "GeoLocationDetails" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "NextContinentCode": {}, - "NextCountryCode": {}, - "NextSubdivisionCode": {}, - "MaxItems": {} - } - } - }, - "ListHealthChecks": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthChecks", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "HealthChecks": { - "type": "list", - "member": { - "shape": "S1x", - "locationName": "HealthCheck" - } - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListHostedZones": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - }, - "DelegationSetId": { - "location": "querystring", - "locationName": "delegationsetid" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZones", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "HostedZones": { - "shape": "S53" - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListHostedZonesByName": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzonesbyname" - }, - "input": { - "type": "structure", - "members": { - "DNSName": { - "location": "querystring", - "locationName": "dnsname" - }, - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZones", - "IsTruncated", - "MaxItems" - ], - "members": { - "HostedZones": { - "shape": "S53" - }, - "DNSName": {}, - "HostedZoneId": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextDNSName": {}, - "NextHostedZoneId": {}, - "MaxItems": {} - } - } - }, - "ListResourceRecordSets": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/rrset" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "StartRecordName": { - "location": "querystring", - "locationName": "name" - }, - "StartRecordType": { - "location": "querystring", - "locationName": "type" - }, - "StartRecordIdentifier": { - "location": "querystring", - "locationName": "identifier" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceRecordSets", - "IsTruncated", - "MaxItems" - ], - "members": { - "ResourceRecordSets": { - "type": "list", - "member": { - "shape": "Sh", - "locationName": "ResourceRecordSet" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "NextRecordName": {}, - "NextRecordType": {}, - "NextRecordIdentifier": {}, - "MaxItems": {} - } - } - }, - "ListReusableDelegationSets": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/delegationset" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSets", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "DelegationSets": { - "type": "list", - "member": { - "shape": "S2i", - "locationName": "DelegationSet" - } - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListTagsForResource": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceTagSet" - ], - "members": { - "ResourceTagSet": { - "shape": "S5e" - } - } - } - }, - "ListTagsForResources": { - "http": { - "requestUri": "/2013-04-01/tags/{ResourceType}" - }, - "input": { - "locationName": "ListTagsForResourcesRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "ResourceType", - "ResourceIds" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceIds": { - "type": "list", - "member": { - "locationName": "ResourceId" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceTagSets" - ], - "members": { - "ResourceTagSets": { - "type": "list", - "member": { - "shape": "S5e", - "locationName": "ResourceTagSet" - } - } - } - } - }, - "ListTrafficPolicies": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicies" - }, - "input": { - "type": "structure", - "members": { - "TrafficPolicyIdMarker": { - "location": "querystring", - "locationName": "trafficpolicyid" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicySummaries", - "IsTruncated", - "TrafficPolicyIdMarker", - "MaxItems" - ], - "members": { - "TrafficPolicySummaries": { - "type": "list", - "member": { - "locationName": "TrafficPolicySummary", - "type": "structure", - "required": [ - "Id", - "Name", - "Type", - "LatestVersion", - "TrafficPolicyCount" - ], - "members": { - "Id": {}, - "Name": {}, - "Type": {}, - "LatestVersion": { - "type": "integer" - }, - "TrafficPolicyCount": { - "type": "integer" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "TrafficPolicyIdMarker": {}, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstances": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances" - }, - "input": { - "type": "structure", - "members": { - "HostedZoneIdMarker": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5p" - }, - "HostedZoneIdMarker": {}, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstancesByHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "id" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5p" - }, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstancesByPolicy": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy" - }, - "input": { - "type": "structure", - "required": [ - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "TrafficPolicyId": { - "location": "querystring", - "locationName": "id" - }, - "TrafficPolicyVersion": { - "location": "querystring", - "locationName": "version", - "type": "integer" - }, - "HostedZoneIdMarker": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5p" - }, - "HostedZoneIdMarker": {}, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyVersions": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "TrafficPolicyVersionMarker": { - "location": "querystring", - "locationName": "trafficpolicyversion" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicies", - "IsTruncated", - "TrafficPolicyVersionMarker", - "MaxItems" - ], - "members": { - "TrafficPolicies": { - "type": "list", - "member": { - "shape": "S2r", - "locationName": "TrafficPolicy" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "TrafficPolicyVersionMarker": {}, - "MaxItems": {} - } - } - }, - "TestDNSAnswer": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/testdnsanswer" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "RecordName", - "RecordType" - ], - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "RecordName": { - "location": "querystring", - "locationName": "recordname" - }, - "RecordType": { - "location": "querystring", - "locationName": "recordtype" - }, - "ResolverIP": { - "location": "querystring", - "locationName": "resolverip" - }, - "EDNS0ClientSubnetIP": { - "location": "querystring", - "locationName": "edns0clientsubnetip" - }, - "EDNS0ClientSubnetMask": { - "location": "querystring", - "locationName": "edns0clientsubnetmask" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Nameserver", - "RecordName", - "RecordType", - "RecordData", - "ResponseCode", - "Protocol" - ], - "members": { - "Nameserver": {}, - "RecordName": {}, - "RecordType": {}, - "RecordData": { - "type": "list", - "member": { - "locationName": "RecordDataEntry" - } - }, - "ResponseCode": {}, - "Protocol": {} - } - } - }, - "UpdateHealthCheck": { - "http": { - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "locationName": "UpdateHealthCheckRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - }, - "HealthCheckVersion": { - "type": "long" - }, - "IPAddress": {}, - "Port": { - "type": "integer" - }, - "ResourcePath": {}, - "FullyQualifiedDomainName": {}, - "SearchString": {}, - "FailureThreshold": { - "type": "integer" - }, - "Inverted": { - "type": "boolean" - }, - "HealthThreshold": { - "type": "integer" - }, - "ChildHealthChecks": { - "shape": "S1o" - }, - "EnableSNI": { - "type": "boolean" - }, - "Regions": { - "shape": "S1q" - }, - "AlarmIdentifier": { - "shape": "S1s" - }, - "InsufficientDataHealthStatus": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck" - ], - "members": { - "HealthCheck": { - "shape": "S1x" - } - } - } - }, - "UpdateHostedZoneComment": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "locationName": "UpdateHostedZoneCommentRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone" - ], - "members": { - "HostedZone": { - "shape": "S2g" - } - } - } - }, - "UpdateTrafficPolicyComment": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "locationName": "UpdateTrafficPolicyCommentRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "Version", - "Comment" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - } - } - } - }, - "UpdateTrafficPolicyInstance": { - "http": { - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "locationName": "UpdateTrafficPolicyInstanceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "TTL", - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "TTL": { - "type": "long" - }, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S2w" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "members": { - "VPCRegion": {}, - "VPCId": {} - } - }, - "S8": { - "type": "structure", - "required": [ - "Id", - "Status", - "SubmittedAt" - ], - "members": { - "Id": {}, - "Status": {}, - "SubmittedAt": { - "type": "timestamp" - }, - "Comment": {} - } - }, - "Se": { - "type": "list", - "member": { - "locationName": "Change", - "type": "structure", - "required": [ - "Action", - "ResourceRecordSet" - ], - "members": { - "Action": {}, - "ResourceRecordSet": { - "shape": "Sh" - } - } - } - }, - "Sh": { - "type": "structure", - "required": [ - "Name", - "Type" - ], - "members": { - "Name": {}, - "Type": {}, - "SetIdentifier": {}, - "Weight": { - "type": "long" - }, - "Region": {}, - "GeoLocation": { - "type": "structure", - "members": { - "ContinentCode": {}, - "CountryCode": {}, - "SubdivisionCode": {} - } - }, - "Failover": {}, - "TTL": { - "type": "long" - }, - "ResourceRecords": { - "type": "list", - "member": { - "locationName": "ResourceRecord", - "type": "structure", - "required": [ - "Value" - ], - "members": { - "Value": {} - } - } - }, - "AliasTarget": { - "type": "structure", - "required": [ - "HostedZoneId", - "DNSName", - "EvaluateTargetHealth" - ], - "members": { - "HostedZoneId": {}, - "DNSName": {}, - "EvaluateTargetHealth": { - "type": "boolean" - } - } - }, - "HealthCheckId": {}, - "TrafficPolicyInstanceId": {} - } - }, - "S14": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1c": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "IPAddress": {}, - "Port": { - "type": "integer" - }, - "Type": {}, - "ResourcePath": {}, - "FullyQualifiedDomainName": {}, - "SearchString": {}, - "RequestInterval": { - "type": "integer" - }, - "FailureThreshold": { - "type": "integer" - }, - "MeasureLatency": { - "type": "boolean" - }, - "Inverted": { - "type": "boolean" - }, - "HealthThreshold": { - "type": "integer" - }, - "ChildHealthChecks": { - "shape": "S1o" - }, - "EnableSNI": { - "type": "boolean" - }, - "Regions": { - "shape": "S1q" - }, - "AlarmIdentifier": { - "shape": "S1s" - }, - "InsufficientDataHealthStatus": {} - } - }, - "S1o": { - "type": "list", - "member": { - "locationName": "ChildHealthCheck" - } - }, - "S1q": { - "type": "list", - "member": { - "locationName": "Region" - } - }, - "S1s": { - "type": "structure", - "required": [ - "Region", - "Name" - ], - "members": { - "Region": {}, - "Name": {} - } - }, - "S1x": { - "type": "structure", - "required": [ - "Id", - "CallerReference", - "HealthCheckConfig", - "HealthCheckVersion" - ], - "members": { - "Id": {}, - "CallerReference": {}, - "HealthCheckConfig": { - "shape": "S1c" - }, - "HealthCheckVersion": { - "type": "long" - }, - "CloudWatchAlarmConfiguration": { - "type": "structure", - "required": [ - "EvaluationPeriods", - "Threshold", - "ComparisonOperator", - "Period", - "MetricName", - "Namespace", - "Statistic" - ], - "members": { - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "Period": { - "type": "integer" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "type": "list", - "member": { - "locationName": "Dimension", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - } - } - } - } - }, - "S2d": { - "type": "structure", - "members": { - "Comment": {}, - "PrivateZone": { - "type": "boolean" - } - } - }, - "S2g": { - "type": "structure", - "required": [ - "Id", - "Name", - "CallerReference" - ], - "members": { - "Id": {}, - "Name": {}, - "CallerReference": {}, - "Config": { - "shape": "S2d" - }, - "ResourceRecordSetCount": { - "type": "long" - } - } - }, - "S2i": { - "type": "structure", - "required": [ - "NameServers" - ], - "members": { - "Id": {}, - "CallerReference": {}, - "NameServers": { - "type": "list", - "member": { - "locationName": "NameServer" - } - } - } - }, - "S2r": { - "type": "structure", - "required": [ - "Id", - "Version", - "Name", - "Type", - "Document" - ], - "members": { - "Id": {}, - "Version": { - "type": "integer" - }, - "Name": {}, - "Type": {}, - "Document": {}, - "Comment": {} - } - }, - "S2w": { - "type": "structure", - "required": [ - "Id", - "HostedZoneId", - "Name", - "TTL", - "State", - "Message", - "TrafficPolicyId", - "TrafficPolicyVersion", - "TrafficPolicyType" - ], - "members": { - "Id": {}, - "HostedZoneId": {}, - "Name": {}, - "TTL": { - "type": "long" - }, - "State": {}, - "Message": {}, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - }, - "TrafficPolicyType": {} - } - }, - "S3i": { - "type": "structure", - "required": [ - "Id", - "Status" - ], - "members": { - "Id": {}, - "SubmittedAt": { - "type": "timestamp" - }, - "Status": {}, - "Comment": {}, - "Submitter": {}, - "Changes": { - "shape": "Se" - } - }, - "deprecated": true - }, - "S3q": { - "type": "structure", - "members": { - "ContinentCode": {}, - "ContinentName": {}, - "CountryCode": {}, - "CountryName": {}, - "SubdivisionCode": {}, - "SubdivisionName": {} - } - }, - "S41": { - "type": "list", - "member": { - "locationName": "HealthCheckObservation", - "type": "structure", - "members": { - "Region": {}, - "IPAddress": {}, - "StatusReport": { - "type": "structure", - "members": { - "Status": {}, - "CheckedTime": { - "type": "timestamp" - } - } - } - } - } - }, - "S4n": { - "type": "string", - "deprecated": true - }, - "S4s": { - "type": "list", - "member": { - "shape": "S3i", - "locationName": "ChangeBatchRecord" - }, - "deprecated": true - }, - "S53": { - "type": "list", - "member": { - "shape": "S2g", - "locationName": "HostedZone" - } - }, - "S5e": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Tags": { - "shape": "S14" - } - } - }, - "S5p": { - "type": "list", - "member": { - "shape": "S2w", - "locationName": "TrafficPolicyInstance" - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json b/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json deleted file mode 100644 index d472f47..0000000 --- a/node_modules/aws-sdk/apis/route53-2013-04-01.paginators.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "pagination": { - "ListHealthChecks": { - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "HealthChecks" - }, - "ListHostedZones": { - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "HostedZones" - }, - "ListResourceRecordSets": { - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "ResourceRecordSets", - "input_token": [ - "StartRecordName", - "StartRecordType", - "StartRecordIdentifier" - ], - "output_token": [ - "NextRecordName", - "NextRecordType", - "NextRecordIdentifier" - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json b/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json deleted file mode 100644 index 94aad39..0000000 --- a/node_modules/aws-sdk/apis/route53-2013-04-01.waiters2.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "version": 2, - "waiters": { - "ResourceRecordSetsChanged": { - "delay": 30, - "maxAttempts": 60, - "operation": "GetChange", - "acceptors": [ - { - "matcher": "path", - "expected": "INSYNC", - "argument": "ChangeInfo.Status", - "state": "success" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json b/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json deleted file mode 100644 index 65e3a5f..0000000 --- a/node_modules/aws-sdk/apis/route53domains-2014-05-15.min.json +++ /dev/null @@ -1,747 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-05-15", - "endpointPrefix": "route53domains", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Route 53 Domains", - "signatureVersion": "v4", - "targetPrefix": "Route53Domains_v20140515" - }, - "operations": { - "CheckDomainAvailability": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Availability" - ], - "members": { - "Availability": {} - } - } - }, - "DeleteTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "TagsToDelete" - ], - "members": { - "DomainName": {}, - "TagsToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableDomainAutoRenew": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableDomainTransferLock": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "EnableDomainAutoRenew": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableDomainTransferLock": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "GetContactReachabilityStatus": { - "input": { - "type": "structure", - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domainName": {}, - "status": {} - } - } - }, - "GetDomainDetail": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DomainName", - "Nameservers", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "Nameservers": { - "shape": "So" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - }, - "AdminPrivacy": { - "type": "boolean" - }, - "RegistrantPrivacy": { - "type": "boolean" - }, - "TechPrivacy": { - "type": "boolean" - }, - "RegistrarName": {}, - "WhoIsServer": {}, - "RegistrarUrl": {}, - "AbuseContactEmail": {}, - "AbuseContactPhone": {}, - "RegistryDomainId": {}, - "CreationDate": { - "type": "timestamp" - }, - "UpdatedDate": { - "type": "timestamp" - }, - "ExpirationDate": { - "type": "timestamp" - }, - "Reseller": {}, - "DnsSec": {}, - "StatusList": { - "type": "list", - "member": {} - } - } - } - }, - "GetDomainSuggestions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "SuggestionCount", - "OnlyAvailable" - ], - "members": { - "DomainName": {}, - "SuggestionCount": { - "type": "integer" - }, - "OnlyAvailable": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SuggestionsList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {}, - "Availability": {} - } - } - } - } - } - }, - "GetOperationDetail": { - "input": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "OperationId": {}, - "Status": {}, - "Message": {}, - "DomainName": {}, - "Type": {}, - "SubmittedDate": { - "type": "timestamp" - } - } - } - }, - "ListDomains": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Domains" - ], - "members": { - "Domains": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AutoRenew": { - "type": "boolean" - }, - "TransferLock": { - "type": "boolean" - }, - "Expiry": { - "type": "timestamp" - } - } - } - }, - "NextPageMarker": {} - } - } - }, - "ListOperations": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Operations" - ], - "members": { - "Operations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "OperationId", - "Status", - "Type", - "SubmittedDate" - ], - "members": { - "OperationId": {}, - "Status": {}, - "Type": {}, - "SubmittedDate": { - "type": "timestamp" - } - } - } - }, - "NextPageMarker": {} - } - } - }, - "ListTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TagList" - ], - "members": { - "TagList": { - "shape": "S24" - } - } - } - }, - "RegisterDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {}, - "DurationInYears": { - "type": "integer" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - }, - "PrivacyProtectAdminContact": { - "type": "boolean" - }, - "PrivacyProtectRegistrantContact": { - "type": "boolean" - }, - "PrivacyProtectTechContact": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "RenewDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "CurrentExpiryYear" - ], - "members": { - "DomainName": {}, - "DurationInYears": { - "type": "integer" - }, - "CurrentExpiryYear": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "ResendContactReachabilityEmail": { - "input": { - "type": "structure", - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domainName": {}, - "emailAddress": {}, - "isAlreadyVerified": { - "type": "boolean" - } - } - } - }, - "RetrieveDomainAuthCode": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "AuthCode" - ], - "members": { - "AuthCode": { - "shape": "S2h" - } - } - } - }, - "TransferDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {}, - "DurationInYears": { - "type": "integer" - }, - "Nameservers": { - "shape": "So" - }, - "AuthCode": { - "shape": "S2h" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - }, - "PrivacyProtectAdminContact": { - "type": "boolean" - }, - "PrivacyProtectRegistrantContact": { - "type": "boolean" - }, - "PrivacyProtectTechContact": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainContact": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainContactPrivacy": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AdminPrivacy": { - "type": "boolean" - }, - "RegistrantPrivacy": { - "type": "boolean" - }, - "TechPrivacy": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainNameservers": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Nameservers" - ], - "members": { - "DomainName": {}, - "FIAuthKey": {}, - "Nameservers": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "TagsToUpdate": { - "shape": "S24" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ViewBilling": { - "input": { - "type": "structure", - "members": { - "Start": { - "type": "timestamp" - }, - "End": { - "type": "timestamp" - }, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextPageMarker": {}, - "BillingRecords": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {}, - "Operation": {}, - "InvoiceId": {}, - "BillDate": { - "type": "timestamp" - }, - "Price": { - "type": "double" - } - } - } - } - } - } - } - }, - "shapes": { - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "GlueIps": { - "type": "list", - "member": {} - } - } - } - }, - "Su": { - "type": "structure", - "members": { - "FirstName": {}, - "LastName": {}, - "ContactType": {}, - "OrganizationName": {}, - "AddressLine1": {}, - "AddressLine2": {}, - "City": {}, - "State": {}, - "CountryCode": {}, - "ZipCode": {}, - "PhoneNumber": {}, - "Email": {}, - "Fax": {}, - "ExtraParams": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - } - }, - "sensitive": true - }, - "S24": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S2h": { - "type": "string", - "sensitive": true - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json b/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json deleted file mode 100644 index 8d1a73a..0000000 --- a/node_modules/aws-sdk/apis/route53domains-2014-05-15.paginators.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "version": "1.0", - "pagination": { - "ListDomains": { - "limit_key": "MaxItems", - "input_token": "Marker", - "output_token": "NextPageMarker", - "result_key": "Domains" - }, - "ListOperations": { - "limit_key": "MaxItems", - "input_token": "Marker", - "output_token": "NextPageMarker", - "result_key": "Operations" - } - } -} diff --git a/node_modules/aws-sdk/apis/s3-2006-03-01.min.json b/node_modules/aws-sdk/apis/s3-2006-03-01.min.json deleted file mode 100644 index ede334d..0000000 --- a/node_modules/aws-sdk/apis/s3-2006-03-01.min.json +++ /dev/null @@ -1,3787 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2006-03-01", - "checksumFormat": "md5", - "endpointPrefix": "s3", - "globalEndpoint": "s3.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "Amazon S3", - "serviceFullName": "Amazon Simple Storage Service", - "signatureVersion": "s3", - "timestampFormat": "rfc822" - }, - "operations": { - "AbortMultipartUpload": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "CompleteMultipartUpload": { - "http": { - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MultipartUpload": { - "locationName": "CompleteMultipartUpload", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "Parts": { - "locationName": "Part", - "type": "list", - "member": { - "type": "structure", - "members": { - "ETag": {}, - "PartNumber": { - "type": "integer" - } - } - }, - "flattened": true - } - } - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "MultipartUpload" - }, - "output": { - "type": "structure", - "members": { - "Location": {}, - "Bucket": {}, - "Key": {}, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "ETag": {}, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "CopyObject": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CopySource", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "CopySource": { - "location": "header", - "locationName": "x-amz-copy-source" - }, - "CopySourceIfMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-match" - }, - "CopySourceIfModifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-modified-since", - "type": "timestamp" - }, - "CopySourceIfNoneMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-none-match" - }, - "CopySourceIfUnmodifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-unmodified-since", - "type": "timestamp" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "MetadataDirective": { - "location": "header", - "locationName": "x-amz-metadata-directive" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "CopySourceSSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" - }, - "CopySourceSSECustomerKey": { - "shape": "S1b", - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key" - }, - "CopySourceSSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CopyObjectResult": { - "type": "structure", - "members": { - "ETag": {}, - "LastModified": { - "type": "timestamp" - } - } - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "CopySourceVersionId": { - "location": "header", - "locationName": "x-amz-copy-source-version-id" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "CopyObjectResult" - }, - "alias": "PutObjectCopy" - }, - "CreateBucket": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CreateBucketConfiguration": { - "locationName": "CreateBucketConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "LocationConstraint": {} - } - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - } - }, - "payload": "CreateBucketConfiguration" - }, - "output": { - "type": "structure", - "members": { - "Location": { - "location": "header", - "locationName": "Location" - } - } - }, - "alias": "PutBucket" - }, - "CreateMultipartUpload": { - "http": { - "requestUri": "/{Bucket}/{Key+}?uploads" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AbortDate": { - "location": "header", - "locationName": "x-amz-abort-date", - "type": "timestamp" - }, - "AbortRuleId": { - "location": "header", - "locationName": "x-amz-abort-rule-id" - }, - "Bucket": { - "locationName": "Bucket" - }, - "Key": {}, - "UploadId": {}, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - }, - "alias": "InitiateMultipartUpload" - }, - "DeleteBucket": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketCors": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketLifecycle": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketReplication": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketTagging": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketWebsite": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteObject": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "DeleteObjects": { - "http": { - "requestUri": "/{Bucket}?delete" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Delete" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delete": { - "locationName": "Delete", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Objects" - ], - "members": { - "Objects": { - "locationName": "Object", - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "VersionId": {} - } - }, - "flattened": true - }, - "Quiet": { - "type": "boolean" - } - } - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Delete" - }, - "output": { - "type": "structure", - "members": { - "Deleted": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "VersionId": {}, - "DeleteMarker": { - "type": "boolean" - }, - "DeleteMarkerVersionId": {} - } - }, - "flattened": true - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "Errors": { - "locationName": "Error", - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "VersionId": {}, - "Code": {}, - "Message": {} - } - }, - "flattened": true - } - } - }, - "alias": "DeleteMultipleObjects" - }, - "GetBucketAccelerateConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?accelerate" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": {} - } - } - }, - "GetBucketAcl": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2k" - }, - "Grants": { - "shape": "S2n", - "locationName": "AccessControlList" - } - } - } - }, - "GetBucketCors": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "CORSRules": { - "shape": "S2w", - "locationName": "CORSRule" - } - } - } - }, - "GetBucketLifecycle": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "shape": "S39", - "locationName": "Rule" - } - } - }, - "deprecated": true - }, - "GetBucketLifecycleConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "shape": "S3p", - "locationName": "Rule" - } - } - } - }, - "GetBucketLocation": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?location" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "LocationConstraint": {} - } - } - }, - "GetBucketLogging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?logging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "LoggingEnabled": { - "shape": "S3x" - } - } - } - }, - "GetBucketNotification": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "shape": "S43" - }, - "output": { - "shape": "S44" - }, - "deprecated": true - }, - "GetBucketNotificationConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "shape": "S43" - }, - "output": { - "shape": "S4f" - } - }, - "GetBucketPolicy": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - }, - "payload": "Policy" - } - }, - "GetBucketReplication": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationConfiguration": { - "shape": "S4y" - } - }, - "payload": "ReplicationConfiguration" - } - }, - "GetBucketRequestPayment": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?requestPayment" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Payer": {} - } - } - }, - "GetBucketTagging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "TagSet": { - "shape": "S59" - } - } - } - }, - "GetBucketVersioning": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?versioning" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": {}, - "MFADelete": { - "locationName": "MfaDelete" - } - } - } - }, - "GetBucketWebsite": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "RedirectAllRequestsTo": { - "shape": "S5i" - }, - "IndexDocument": { - "shape": "S5l" - }, - "ErrorDocument": { - "shape": "S5n" - }, - "RoutingRules": { - "shape": "S5o" - } - } - } - }, - "GetObject": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - }, - "IfModifiedSince": { - "location": "header", - "locationName": "If-Modified-Since", - "type": "timestamp" - }, - "IfNoneMatch": { - "location": "header", - "locationName": "If-None-Match" - }, - "IfUnmodifiedSince": { - "location": "header", - "locationName": "If-Unmodified-Since", - "type": "timestamp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Range": { - "location": "header", - "locationName": "Range" - }, - "ResponseCacheControl": { - "location": "querystring", - "locationName": "response-cache-control" - }, - "ResponseContentDisposition": { - "location": "querystring", - "locationName": "response-content-disposition" - }, - "ResponseContentEncoding": { - "location": "querystring", - "locationName": "response-content-encoding" - }, - "ResponseContentLanguage": { - "location": "querystring", - "locationName": "response-content-language" - }, - "ResponseContentType": { - "location": "querystring", - "locationName": "response-content-type" - }, - "ResponseExpires": { - "location": "querystring", - "locationName": "response-expires", - "type": "timestamp" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "AcceptRanges": { - "location": "header", - "locationName": "accept-ranges" - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "Restore": { - "location": "header", - "locationName": "x-amz-restore" - }, - "LastModified": { - "location": "header", - "locationName": "Last-Modified", - "type": "timestamp" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "MissingMeta": { - "location": "header", - "locationName": "x-amz-missing-meta", - "type": "integer" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentRange": { - "location": "header", - "locationName": "Content-Range" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "ReplicationStatus": { - "location": "header", - "locationName": "x-amz-replication-status" - }, - "PartsCount": { - "location": "header", - "locationName": "x-amz-mp-parts-count", - "type": "integer" - } - }, - "payload": "Body" - } - }, - "GetObjectAcl": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2k" - }, - "Grants": { - "shape": "S2n", - "locationName": "AccessControlList" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "GetObjectTorrent": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?torrent" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "Body" - } - }, - "HeadBucket": { - "http": { - "method": "HEAD", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "HeadObject": { - "http": { - "method": "HEAD", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - }, - "IfModifiedSince": { - "location": "header", - "locationName": "If-Modified-Since", - "type": "timestamp" - }, - "IfNoneMatch": { - "location": "header", - "locationName": "If-None-Match" - }, - "IfUnmodifiedSince": { - "location": "header", - "locationName": "If-Unmodified-Since", - "type": "timestamp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Range": { - "location": "header", - "locationName": "Range" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "AcceptRanges": { - "location": "header", - "locationName": "accept-ranges" - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "Restore": { - "location": "header", - "locationName": "x-amz-restore" - }, - "LastModified": { - "location": "header", - "locationName": "Last-Modified", - "type": "timestamp" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "MissingMeta": { - "location": "header", - "locationName": "x-amz-missing-meta", - "type": "integer" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "ReplicationStatus": { - "location": "header", - "locationName": "x-amz-replication-status" - }, - "PartsCount": { - "location": "header", - "locationName": "x-amz-mp-parts-count", - "type": "integer" - } - } - } - }, - "ListBuckets": { - "http": { - "method": "GET" - }, - "output": { - "type": "structure", - "members": { - "Buckets": { - "type": "list", - "member": { - "locationName": "Bucket", - "type": "structure", - "members": { - "Name": {}, - "CreationDate": { - "type": "timestamp" - } - } - } - }, - "Owner": { - "shape": "S2k" - } - } - }, - "alias": "GetService" - }, - "ListMultipartUploads": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?uploads" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "KeyMarker": { - "location": "querystring", - "locationName": "key-marker" - }, - "MaxUploads": { - "location": "querystring", - "locationName": "max-uploads", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "UploadIdMarker": { - "location": "querystring", - "locationName": "upload-id-marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Bucket": {}, - "KeyMarker": {}, - "UploadIdMarker": {}, - "NextKeyMarker": {}, - "Prefix": {}, - "Delimiter": {}, - "NextUploadIdMarker": {}, - "MaxUploads": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Uploads": { - "locationName": "Upload", - "type": "list", - "member": { - "type": "structure", - "members": { - "UploadId": {}, - "Key": {}, - "Initiated": { - "type": "timestamp" - }, - "StorageClass": {}, - "Owner": { - "shape": "S2k" - }, - "Initiator": { - "shape": "S76" - } - } - }, - "flattened": true - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {} - } - } - }, - "ListObjectVersions": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?versions" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "KeyMarker": { - "location": "querystring", - "locationName": "key-marker" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "VersionIdMarker": { - "location": "querystring", - "locationName": "version-id-marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "KeyMarker": {}, - "VersionIdMarker": {}, - "NextKeyMarker": {}, - "NextVersionIdMarker": {}, - "Versions": { - "locationName": "Version", - "type": "list", - "member": { - "type": "structure", - "members": { - "ETag": {}, - "Size": { - "type": "integer" - }, - "StorageClass": {}, - "Key": {}, - "VersionId": {}, - "IsLatest": { - "type": "boolean" - }, - "LastModified": { - "type": "timestamp" - }, - "Owner": { - "shape": "S2k" - } - } - }, - "flattened": true - }, - "DeleteMarkers": { - "locationName": "DeleteMarker", - "type": "list", - "member": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2k" - }, - "Key": {}, - "VersionId": {}, - "IsLatest": { - "type": "boolean" - }, - "LastModified": { - "type": "timestamp" - } - } - }, - "flattened": true - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {} - } - }, - "alias": "GetBucketObjectVersions" - }, - "ListObjects": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "Marker": {}, - "NextMarker": {}, - "Contents": { - "shape": "S7p" - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {} - } - }, - "alias": "GetBucket" - }, - "ListObjectsV2": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?list-type=2" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "ContinuationToken": { - "location": "querystring", - "locationName": "continuation-token" - }, - "FetchOwner": { - "location": "querystring", - "locationName": "fetch-owner", - "type": "boolean" - }, - "StartAfter": { - "location": "querystring", - "locationName": "start-after" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "Contents": { - "shape": "S7p" - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {}, - "KeyCount": { - "type": "integer" - }, - "ContinuationToken": {}, - "NextContinuationToken": {}, - "StartAfter": {} - } - } - }, - "ListParts": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MaxParts": { - "location": "querystring", - "locationName": "max-parts", - "type": "integer" - }, - "PartNumberMarker": { - "location": "querystring", - "locationName": "part-number-marker", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AbortDate": { - "location": "header", - "locationName": "x-amz-abort-date", - "type": "timestamp" - }, - "AbortRuleId": { - "location": "header", - "locationName": "x-amz-abort-rule-id" - }, - "Bucket": {}, - "Key": {}, - "UploadId": {}, - "PartNumberMarker": { - "type": "integer" - }, - "NextPartNumberMarker": { - "type": "integer" - }, - "MaxParts": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Parts": { - "locationName": "Part", - "type": "list", - "member": { - "type": "structure", - "members": { - "PartNumber": { - "type": "integer" - }, - "LastModified": { - "type": "timestamp" - }, - "ETag": {}, - "Size": { - "type": "integer" - } - } - }, - "flattened": true - }, - "Initiator": { - "shape": "S76" - }, - "Owner": { - "shape": "S2k" - }, - "StorageClass": {}, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutBucketAccelerateConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?accelerate" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "AccelerateConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "AccelerateConfiguration": { - "locationName": "AccelerateConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "Status": {} - } - } - }, - "payload": "AccelerateConfiguration" - } - }, - "PutBucketAcl": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "AccessControlPolicy": { - "shape": "S89", - "locationName": "AccessControlPolicy", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - } - }, - "payload": "AccessControlPolicy" - } - }, - "PutBucketCors": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CORSConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CORSConfiguration": { - "locationName": "CORSConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "CORSRules" - ], - "members": { - "CORSRules": { - "shape": "S2w", - "locationName": "CORSRule" - } - } - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - } - }, - "payload": "CORSConfiguration" - } - }, - "PutBucketLifecycle": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "LifecycleConfiguration": { - "locationName": "LifecycleConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "shape": "S39", - "locationName": "Rule" - } - } - } - }, - "payload": "LifecycleConfiguration" - }, - "deprecated": true - }, - "PutBucketLifecycleConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "LifecycleConfiguration": { - "locationName": "LifecycleConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "shape": "S3p", - "locationName": "Rule" - } - } - } - }, - "payload": "LifecycleConfiguration" - } - }, - "PutBucketLogging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?logging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "BucketLoggingStatus" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "BucketLoggingStatus": { - "locationName": "BucketLoggingStatus", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "LoggingEnabled": { - "shape": "S3x" - } - } - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - } - }, - "payload": "BucketLoggingStatus" - } - }, - "PutBucketNotification": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "NotificationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "NotificationConfiguration": { - "shape": "S44", - "locationName": "NotificationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "NotificationConfiguration" - }, - "deprecated": true - }, - "PutBucketNotificationConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "NotificationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "NotificationConfiguration": { - "shape": "S4f", - "locationName": "NotificationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "NotificationConfiguration" - } - }, - "PutBucketPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Policy" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Policy": {} - }, - "payload": "Policy" - } - }, - "PutBucketReplication": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "ReplicationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "ReplicationConfiguration": { - "shape": "S4y", - "locationName": "ReplicationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "ReplicationConfiguration" - } - }, - "PutBucketRequestPayment": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?requestPayment" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "RequestPaymentConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "RequestPaymentConfiguration": { - "locationName": "RequestPaymentConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Payer" - ], - "members": { - "Payer": {} - } - } - }, - "payload": "RequestPaymentConfiguration" - } - }, - "PutBucketTagging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Tagging" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Tagging": { - "locationName": "Tagging", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "TagSet": { - "shape": "S59" - } - } - } - }, - "payload": "Tagging" - } - }, - "PutBucketVersioning": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?versioning" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "VersioningConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "VersioningConfiguration": { - "locationName": "VersioningConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "MFADelete": { - "locationName": "MfaDelete" - }, - "Status": {} - } - } - }, - "payload": "VersioningConfiguration" - } - }, - "PutBucketWebsite": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "WebsiteConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "WebsiteConfiguration": { - "locationName": "WebsiteConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "ErrorDocument": { - "shape": "S5n" - }, - "IndexDocument": { - "shape": "S5l" - }, - "RedirectAllRequestsTo": { - "shape": "S5i" - }, - "RoutingRules": { - "shape": "S5o" - } - } - } - }, - "payload": "WebsiteConfiguration" - } - }, - "PutObject": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Body": { - "streaming": true, - "type": "blob" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Body" - }, - "output": { - "type": "structure", - "members": { - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutObjectAcl": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "AccessControlPolicy": { - "shape": "S89", - "locationName": "AccessControlPolicy", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - } - }, - "payload": "AccessControlPolicy" - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "RestoreObject": { - "http": { - "requestUri": "/{Bucket}/{Key+}?restore" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RestoreRequest": { - "locationName": "RestoreRequest", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Days" - ], - "members": { - "Days": { - "type": "integer" - } - } - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "RestoreRequest" - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - }, - "alias": "PostObjectRestore" - }, - "UploadPart": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "PartNumber", - "UploadId" - ], - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Body" - }, - "output": { - "type": "structure", - "members": { - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "UploadPartCopy": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CopySource", - "Key", - "PartNumber", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CopySource": { - "location": "header", - "locationName": "x-amz-copy-source" - }, - "CopySourceIfMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-match" - }, - "CopySourceIfModifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-modified-since", - "type": "timestamp" - }, - "CopySourceIfNoneMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-none-match" - }, - "CopySourceIfUnmodifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-unmodified-since", - "type": "timestamp" - }, - "CopySourceRange": { - "location": "header", - "locationName": "x-amz-copy-source-range" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "CopySourceSSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" - }, - "CopySourceSSECustomerKey": { - "shape": "S1b", - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key" - }, - "CopySourceSSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CopySourceVersionId": { - "location": "header", - "locationName": "x-amz-copy-source-version-id" - }, - "CopyPartResult": { - "type": "structure", - "members": { - "ETag": {}, - "LastModified": { - "type": "timestamp" - } - } - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "CopyPartResult" - } - } - }, - "shapes": { - "Sj": { - "type": "string", - "sensitive": true - }, - "S11": { - "type": "map", - "key": {}, - "value": {} - }, - "S18": { - "type": "blob", - "sensitive": true - }, - "S1b": { - "type": "blob", - "sensitive": true - }, - "S2k": { - "type": "structure", - "members": { - "DisplayName": {}, - "ID": {} - } - }, - "S2n": { - "type": "list", - "member": { - "locationName": "Grant", - "type": "structure", - "members": { - "Grantee": { - "shape": "S2p" - }, - "Permission": {} - } - } - }, - "S2p": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "DisplayName": {}, - "EmailAddress": {}, - "ID": {}, - "Type": { - "locationName": "xsi:type", - "xmlAttribute": true - }, - "URI": {} - }, - "xmlNamespace": { - "prefix": "xsi", - "uri": "http://www.w3.org/2001/XMLSchema-instance" - } - }, - "S2w": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AllowedMethods", - "AllowedOrigins" - ], - "members": { - "AllowedHeaders": { - "locationName": "AllowedHeader", - "type": "list", - "member": {}, - "flattened": true - }, - "AllowedMethods": { - "locationName": "AllowedMethod", - "type": "list", - "member": {}, - "flattened": true - }, - "AllowedOrigins": { - "locationName": "AllowedOrigin", - "type": "list", - "member": {}, - "flattened": true - }, - "ExposeHeaders": { - "locationName": "ExposeHeader", - "type": "list", - "member": {}, - "flattened": true - }, - "MaxAgeSeconds": { - "type": "integer" - } - } - }, - "flattened": true - }, - "S39": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status" - ], - "members": { - "Expiration": { - "shape": "S3b" - }, - "ID": {}, - "Prefix": {}, - "Status": {}, - "Transition": { - "shape": "S3h" - }, - "NoncurrentVersionTransition": { - "shape": "S3j" - }, - "NoncurrentVersionExpiration": { - "shape": "S3k" - }, - "AbortIncompleteMultipartUpload": { - "shape": "S3l" - } - } - }, - "flattened": true - }, - "S3b": { - "type": "structure", - "members": { - "Date": { - "shape": "S3c" - }, - "Days": { - "type": "integer" - }, - "ExpiredObjectDeleteMarker": { - "type": "boolean" - } - } - }, - "S3c": { - "type": "timestamp", - "timestampFormat": "iso8601" - }, - "S3h": { - "type": "structure", - "members": { - "Date": { - "shape": "S3c" - }, - "Days": { - "type": "integer" - }, - "StorageClass": {} - } - }, - "S3j": { - "type": "structure", - "members": { - "NoncurrentDays": { - "type": "integer" - }, - "StorageClass": {} - } - }, - "S3k": { - "type": "structure", - "members": { - "NoncurrentDays": { - "type": "integer" - } - } - }, - "S3l": { - "type": "structure", - "members": { - "DaysAfterInitiation": { - "type": "integer" - } - } - }, - "S3p": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status" - ], - "members": { - "Expiration": { - "shape": "S3b" - }, - "ID": {}, - "Prefix": {}, - "Status": {}, - "Transitions": { - "locationName": "Transition", - "type": "list", - "member": { - "shape": "S3h" - }, - "flattened": true - }, - "NoncurrentVersionTransitions": { - "locationName": "NoncurrentVersionTransition", - "type": "list", - "member": { - "shape": "S3j" - }, - "flattened": true - }, - "NoncurrentVersionExpiration": { - "shape": "S3k" - }, - "AbortIncompleteMultipartUpload": { - "shape": "S3l" - } - } - }, - "flattened": true - }, - "S3x": { - "type": "structure", - "members": { - "TargetBucket": {}, - "TargetGrants": { - "type": "list", - "member": { - "locationName": "Grant", - "type": "structure", - "members": { - "Grantee": { - "shape": "S2p" - }, - "Permission": {} - } - } - }, - "TargetPrefix": {} - } - }, - "S43": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "S44": { - "type": "structure", - "members": { - "TopicConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Event": { - "deprecated": true - }, - "Topic": {} - } - }, - "QueueConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Event": { - "deprecated": true - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Queue": {} - } - }, - "CloudFunctionConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Event": { - "deprecated": true - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "CloudFunction": {}, - "InvocationRole": {} - } - } - } - }, - "S47": { - "type": "list", - "member": {}, - "flattened": true - }, - "S4f": { - "type": "structure", - "members": { - "TopicConfigurations": { - "locationName": "TopicConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "TopicArn", - "Events" - ], - "members": { - "Id": {}, - "TopicArn": { - "locationName": "Topic" - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Filter": { - "shape": "S4i" - } - } - }, - "flattened": true - }, - "QueueConfigurations": { - "locationName": "QueueConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "QueueArn", - "Events" - ], - "members": { - "Id": {}, - "QueueArn": { - "locationName": "Queue" - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Filter": { - "shape": "S4i" - } - } - }, - "flattened": true - }, - "LambdaFunctionConfigurations": { - "locationName": "CloudFunctionConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "LambdaFunctionArn", - "Events" - ], - "members": { - "Id": {}, - "LambdaFunctionArn": { - "locationName": "CloudFunction" - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Filter": { - "shape": "S4i" - } - } - }, - "flattened": true - } - } - }, - "S4i": { - "type": "structure", - "members": { - "Key": { - "locationName": "S3Key", - "type": "structure", - "members": { - "FilterRules": { - "locationName": "FilterRule", - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - }, - "flattened": true - } - } - } - } - }, - "S4y": { - "type": "structure", - "required": [ - "Role", - "Rules" - ], - "members": { - "Role": {}, - "Rules": { - "locationName": "Rule", - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status", - "Destination" - ], - "members": { - "ID": {}, - "Prefix": {}, - "Status": {}, - "Destination": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": {}, - "StorageClass": {} - } - } - } - }, - "flattened": true - } - } - }, - "S59": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S5i": { - "type": "structure", - "required": [ - "HostName" - ], - "members": { - "HostName": {}, - "Protocol": {} - } - }, - "S5l": { - "type": "structure", - "required": [ - "Suffix" - ], - "members": { - "Suffix": {} - } - }, - "S5n": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {} - } - }, - "S5o": { - "type": "list", - "member": { - "locationName": "RoutingRule", - "type": "structure", - "required": [ - "Redirect" - ], - "members": { - "Condition": { - "type": "structure", - "members": { - "HttpErrorCodeReturnedEquals": {}, - "KeyPrefixEquals": {} - } - }, - "Redirect": { - "type": "structure", - "members": { - "HostName": {}, - "HttpRedirectCode": {}, - "Protocol": {}, - "ReplaceKeyPrefixWith": {}, - "ReplaceKeyWith": {} - } - } - } - } - }, - "S76": { - "type": "structure", - "members": { - "ID": {}, - "DisplayName": {} - } - }, - "S77": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Prefix": {} - } - }, - "flattened": true - }, - "S7p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "LastModified": { - "type": "timestamp" - }, - "ETag": {}, - "Size": { - "type": "integer" - }, - "StorageClass": {}, - "Owner": { - "shape": "S2k" - } - } - }, - "flattened": true - }, - "S89": { - "type": "structure", - "members": { - "Grants": { - "shape": "S2n", - "locationName": "AccessControlList" - }, - "Owner": { - "shape": "S2k" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json b/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json deleted file mode 100644 index 3498920..0000000 --- a/node_modules/aws-sdk/apis/s3-2006-03-01.paginators.json +++ /dev/null @@ -1,66 +0,0 @@ -{ - "pagination": { - "ListBuckets": { - "result_key": "Buckets" - }, - "ListMultipartUploads": { - "limit_key": "MaxUploads", - "more_results": "IsTruncated", - "output_token": [ - "NextKeyMarker", - "NextUploadIdMarker" - ], - "input_token": [ - "KeyMarker", - "UploadIdMarker" - ], - "result_key": [ - "Uploads", - "CommonPrefixes" - ] - }, - "ListObjectVersions": { - "more_results": "IsTruncated", - "limit_key": "MaxKeys", - "output_token": [ - "NextKeyMarker", - "NextVersionIdMarker" - ], - "input_token": [ - "KeyMarker", - "VersionIdMarker" - ], - "result_key": [ - "Versions", - "DeleteMarkers", - "CommonPrefixes" - ] - }, - "ListObjects": { - "more_results": "IsTruncated", - "limit_key": "MaxKeys", - "output_token": "NextMarker || Contents[-1].Key", - "input_token": "Marker", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListObjectsV2": { - "limit_key": "MaxKeys", - "output_token": "NextContinuationToken", - "input_token": "ContinuationToken", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListParts": { - "more_results": "IsTruncated", - "limit_key": "MaxParts", - "output_token": "NextPartNumberMarker", - "input_token": "PartNumberMarker", - "result_key": "Parts" - } - } -} diff --git a/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json b/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json deleted file mode 100644 index b508a8f..0000000 --- a/node_modules/aws-sdk/apis/s3-2006-03-01.waiters2.json +++ /dev/null @@ -1,73 +0,0 @@ -{ - "version": 2, - "waiters": { - "BucketExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 301, - "matcher": "status", - "state": "success" - }, - { - "expected": 403, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "BucketNotExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - }, - "ObjectExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "ObjectNotExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - } - } -} diff --git a/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json b/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json deleted file mode 100644 index e931b3c..0000000 --- a/node_modules/aws-sdk/apis/sdb-2009-04-15.min.json +++ /dev/null @@ -1,336 +0,0 @@ -{ - "metadata": { - "apiVersion": "2009-04-15", - "endpointPrefix": "sdb", - "serviceFullName": "Amazon SimpleDB", - "signatureVersion": "v2", - "xmlNamespace": "http://sdb.amazonaws.com/doc/2009-04-15/", - "protocol": "query" - }, - "operations": { - "BatchDeleteAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Items" - ], - "members": { - "DomainName": {}, - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": { - "locationName": "ItemName" - }, - "Attributes": { - "shape": "S5" - } - } - }, - "flattened": true - } - } - } - }, - "BatchPutAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Items" - ], - "members": { - "DomainName": {}, - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "Name", - "Attributes" - ], - "members": { - "Name": { - "locationName": "ItemName" - }, - "Attributes": { - "shape": "Sa" - } - } - }, - "flattened": true - } - } - } - }, - "CreateDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - } - }, - "DeleteAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ItemName" - ], - "members": { - "DomainName": {}, - "ItemName": {}, - "Attributes": { - "shape": "S5" - }, - "Expected": { - "shape": "Sf" - } - } - } - }, - "DeleteDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - } - }, - "DomainMetadata": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "resultWrapper": "DomainMetadataResult", - "type": "structure", - "members": { - "ItemCount": { - "type": "integer" - }, - "ItemNamesSizeBytes": { - "type": "long" - }, - "AttributeNameCount": { - "type": "integer" - }, - "AttributeNamesSizeBytes": { - "type": "long" - }, - "AttributeValueCount": { - "type": "integer" - }, - "AttributeValuesSizeBytes": { - "type": "long" - }, - "Timestamp": { - "type": "integer" - } - } - } - }, - "GetAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ItemName" - ], - "members": { - "DomainName": {}, - "ItemName": {}, - "AttributeNames": { - "type": "list", - "member": { - "locationName": "AttributeName" - }, - "flattened": true - }, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "GetAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "So" - } - } - } - }, - "ListDomains": { - "input": { - "type": "structure", - "members": { - "MaxNumberOfDomains": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListDomainsResult", - "type": "structure", - "members": { - "DomainNames": { - "type": "list", - "member": { - "locationName": "DomainName" - }, - "flattened": true - }, - "NextToken": {} - } - } - }, - "PutAttributes": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "ItemName", - "Attributes" - ], - "members": { - "DomainName": {}, - "ItemName": {}, - "Attributes": { - "shape": "Sa" - }, - "Expected": { - "shape": "Sf" - } - } - } - }, - "Select": { - "input": { - "type": "structure", - "required": [ - "SelectExpression" - ], - "members": { - "SelectExpression": {}, - "NextToken": {}, - "ConsistentRead": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SelectResult", - "type": "structure", - "members": { - "Items": { - "type": "list", - "member": { - "locationName": "Item", - "type": "structure", - "required": [ - "Name", - "Attributes" - ], - "members": { - "Name": {}, - "AlternateNameEncoding": {}, - "Attributes": { - "shape": "So" - } - } - }, - "flattened": true - }, - "NextToken": {} - } - } - } - }, - "shapes": { - "S5": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": {} - } - }, - "flattened": true - }, - "Sa": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {}, - "Replace": { - "type": "boolean" - } - } - }, - "flattened": true - }, - "Sf": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "Exists": { - "type": "boolean" - } - } - }, - "So": { - "type": "list", - "member": { - "locationName": "Attribute", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "AlternateNameEncoding": {}, - "Value": {}, - "AlternateValueEncoding": {} - } - }, - "flattened": true - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json b/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json deleted file mode 100644 index 2362098..0000000 --- a/node_modules/aws-sdk/apis/sdb-2009-04-15.paginators.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "pagination": { - "ListDomains": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxNumberOfDomains", - "result_key": "DomainNames" - }, - "Select": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Items" - } - } -} diff --git a/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json b/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json deleted file mode 100644 index 62e6e73..0000000 --- a/node_modules/aws-sdk/apis/servicecatalog-2015-12-10.min.json +++ /dev/null @@ -1,529 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-10", - "endpointPrefix": "servicecatalog", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Service Catalog", - "signatureVersion": "v4", - "targetPrefix": "AWS242ServiceCatalogService" - }, - "operations": { - "DescribeProduct": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S5" - }, - "ProvisioningArtifacts": { - "shape": "Sf" - } - } - } - }, - "DescribeProductView": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S5" - }, - "ProvisioningArtifacts": { - "shape": "Sf" - } - } - } - }, - "DescribeProvisioningParameters": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "ParameterType": {}, - "IsNoEcho": { - "type": "boolean" - }, - "Description": {}, - "ParameterConstraints": { - "type": "structure", - "members": { - "AllowedValues": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "ConstraintSummaries": { - "shape": "Sy" - }, - "UsageInstructions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Value": {} - } - } - } - } - } - }, - "DescribeRecord": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - }, - "RecordOutputs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputKey": {}, - "OutputValue": {}, - "Description": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "ListLaunchPaths": { - "input": { - "type": "structure", - "required": [ - "ProductId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "LaunchPathSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "ConstraintSummaries": { - "shape": "Sy" - }, - "Tags": { - "shape": "S1x" - }, - "Name": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "ListRecordHistory": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "AccessLevelFilter": { - "shape": "S23" - }, - "SearchFilter": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetails": { - "type": "list", - "member": { - "shape": "S1a" - } - }, - "NextPageToken": {} - } - } - }, - "ProvisionProduct": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId", - "ProvisionedProductName", - "ProvisionToken" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "ProvisionedProductName": {}, - "ProvisioningParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Tags": { - "shape": "S1x" - }, - "NotificationArns": { - "type": "list", - "member": {} - }, - "ProvisionToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - } - } - } - }, - "ScanProvisionedProducts": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "AccessLevelFilter": { - "shape": "S23" - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisionedProducts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "Type": {}, - "Id": {}, - "Status": {}, - "StatusMessage": {}, - "CreatedTime": { - "type": "timestamp" - }, - "IdempotencyToken": {}, - "LastRecordId": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "SearchProducts": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "Filters": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "PageSize": { - "type": "integer" - }, - "SortBy": {}, - "SortOrder": {}, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummaries": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "ProductViewAggregations": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": {}, - "ApproximateCount": { - "type": "integer" - } - } - } - } - }, - "NextPageToken": {} - } - } - }, - "TerminateProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "TerminateToken" - ], - "members": { - "ProvisionedProductName": {}, - "ProvisionedProductId": {}, - "TerminateToken": { - "idempotencyToken": true - }, - "IgnoreErrors": { - "type": "boolean" - }, - "AcceptLanguage": {} - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - } - } - } - }, - "UpdateProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "UpdateToken" - ], - "members": { - "AcceptLanguage": {}, - "ProvisionedProductName": {}, - "ProvisionedProductId": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "ProvisioningParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "UsePreviousValue": { - "type": "boolean" - } - } - } - }, - "UpdateToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Id": {}, - "ProductId": {}, - "Name": {}, - "Owner": {}, - "ShortDescription": {}, - "Type": {}, - "Distributor": {}, - "HasDefaultPath": { - "type": "boolean" - }, - "SupportEmail": {}, - "SupportDescription": {}, - "SupportUrl": {} - } - }, - "Sf": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Description": {}, - "CreatedTime": { - "type": "timestamp" - } - } - } - }, - "Sy": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Description": {} - } - } - }, - "S1a": { - "type": "structure", - "members": { - "RecordId": {}, - "ProvisionedProductName": {}, - "Status": {}, - "CreatedTime": { - "type": "timestamp" - }, - "UpdatedTime": { - "type": "timestamp" - }, - "ProvisionedProductType": {}, - "RecordType": {}, - "ProvisionedProductId": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "RecordErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Code": {}, - "Description": {} - } - } - }, - "RecordTags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S1x": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S23": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json b/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json deleted file mode 100644 index 72f70f1..0000000 --- a/node_modules/aws-sdk/apis/snowball-2016-06-30.min.json +++ /dev/null @@ -1,376 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2016-06-30", - "endpointPrefix": "snowball", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon Snowball", - "serviceFullName": "Amazon Import/Export Snowball", - "signatureVersion": "v4", - "targetPrefix": "AWSIESnowballJobManagementService" - }, - "operations": { - "CancelJob": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateAddress": { - "input": { - "type": "structure", - "required": [ - "Address" - ], - "members": { - "Address": { - "shape": "S5" - } - } - }, - "output": { - "type": "structure", - "members": { - "AddressId": {} - } - } - }, - "CreateJob": { - "input": { - "type": "structure", - "required": [ - "JobType", - "Resources", - "AddressId", - "RoleARN", - "ShippingOption" - ], - "members": { - "JobType": {}, - "Resources": { - "shape": "Sb" - }, - "Description": {}, - "AddressId": {}, - "KmsKeyARN": {}, - "RoleARN": {}, - "SnowballCapacityPreference": {}, - "ShippingOption": {}, - "Notification": { - "shape": "Sk" - } - } - }, - "output": { - "type": "structure", - "members": { - "JobId": {} - } - } - }, - "DescribeAddress": { - "input": { - "type": "structure", - "required": [ - "AddressId" - ], - "members": { - "AddressId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Address": { - "shape": "S5" - } - } - } - }, - "DescribeAddresses": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Addresses": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "NextToken": {} - } - } - }, - "DescribeJob": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobMetadata": { - "shape": "Sy" - }, - "SubJobMetadata": { - "type": "list", - "member": { - "shape": "Sy" - } - } - } - } - }, - "GetJobManifest": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ManifestURI": {} - } - } - }, - "GetJobUnlockCode": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UnlockCode": {} - } - } - }, - "GetSnowballUsage": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "SnowballLimit": { - "type": "integer" - }, - "SnowballsInUse": { - "type": "integer" - } - } - } - }, - "ListJobs": { - "input": { - "type": "structure", - "members": { - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobListEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "JobId": {}, - "JobState": {}, - "IsMaster": { - "type": "boolean" - } - } - } - }, - "NextToken": {} - } - } - }, - "UpdateJob": { - "input": { - "type": "structure", - "required": [ - "JobId" - ], - "members": { - "JobId": {}, - "RoleARN": {}, - "Notification": { - "shape": "Sk" - }, - "Resources": { - "shape": "Sb" - }, - "AddressId": {}, - "ShippingOption": {}, - "Description": {}, - "SnowballCapacityPreference": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "AddressId": {}, - "Name": {}, - "Company": {}, - "Street1": {}, - "Street2": {}, - "Street3": {}, - "City": {}, - "StateOrProvince": {}, - "PrefectureOrDistrict": {}, - "Landmark": {}, - "Country": {}, - "PostalCode": {}, - "PhoneNumber": {} - } - }, - "Sb": { - "type": "structure", - "members": { - "S3Resources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BucketArn": {}, - "KeyRange": { - "type": "structure", - "members": { - "BeginMarker": {}, - "EndMarker": {} - } - } - } - } - } - } - }, - "Sk": { - "type": "structure", - "members": { - "SnsTopicARN": {}, - "JobStatesToNotify": { - "type": "list", - "member": {} - }, - "NotifyAll": { - "type": "boolean" - } - } - }, - "Sy": { - "type": "structure", - "members": { - "JobId": {}, - "JobState": {}, - "JobType": {}, - "CreationDate": { - "type": "timestamp" - }, - "Resources": { - "shape": "Sb" - }, - "Description": {}, - "KmsKeyARN": {}, - "RoleARN": {}, - "AddressId": {}, - "ShippingDetails": { - "type": "structure", - "members": { - "ShippingOption": {}, - "InboundShipment": { - "shape": "S11" - }, - "OutboundShipment": { - "shape": "S11" - } - } - }, - "SnowballCapacityPreference": {}, - "Notification": { - "shape": "Sk" - }, - "DataTransferProgress": { - "type": "structure", - "members": { - "BytesTransferred": { - "type": "long" - }, - "ObjectsTransferred": { - "type": "long" - }, - "TotalBytes": { - "type": "long" - }, - "TotalObjects": { - "type": "long" - } - } - }, - "JobLogInfo": { - "type": "structure", - "members": { - "JobCompletionReportURI": {}, - "JobSuccessLogURI": {}, - "JobFailureLogURI": {} - } - } - } - }, - "S11": { - "type": "structure", - "members": { - "Status": {}, - "TrackingNumber": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json b/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json deleted file mode 100644 index d03aba7..0000000 --- a/node_modules/aws-sdk/apis/snowball-2016-06-30.paginators.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "pagination": { - "ListJobs": { - "limit_key": "MaxResults", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "JobListEntries" - }, - "DescribeAddresses": { - "limit_key": "MaxResults", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Addresses" - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sns-2010-03-31.min.json b/node_modules/aws-sdk/apis/sns-2010-03-31.min.json deleted file mode 100644 index bb433c4..0000000 --- a/node_modules/aws-sdk/apis/sns-2010-03-31.min.json +++ /dev/null @@ -1,622 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2010-03-31", - "endpointPrefix": "sns", - "protocol": "query", - "serviceAbbreviation": "Amazon SNS", - "serviceFullName": "Amazon Simple Notification Service", - "signatureVersion": "v4", - "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/" - }, - "operations": { - "AddPermission": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Label", - "AWSAccountId", - "ActionName" - ], - "members": { - "TopicArn": {}, - "Label": {}, - "AWSAccountId": { - "type": "list", - "member": {} - }, - "ActionName": { - "type": "list", - "member": {} - } - } - } - }, - "CheckIfPhoneNumberIsOptedOut": { - "input": { - "type": "structure", - "required": [ - "phoneNumber" - ], - "members": { - "phoneNumber": {} - } - }, - "output": { - "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult", - "type": "structure", - "members": { - "isOptedOut": { - "type": "boolean" - } - } - } - }, - "ConfirmSubscription": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Token" - ], - "members": { - "TopicArn": {}, - "Token": {}, - "AuthenticateOnUnsubscribe": {} - } - }, - "output": { - "resultWrapper": "ConfirmSubscriptionResult", - "type": "structure", - "members": { - "SubscriptionArn": {} - } - } - }, - "CreatePlatformApplication": { - "input": { - "type": "structure", - "required": [ - "Name", - "Platform", - "Attributes" - ], - "members": { - "Name": {}, - "Platform": {}, - "Attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformApplicationResult", - "type": "structure", - "members": { - "PlatformApplicationArn": {} - } - } - }, - "CreatePlatformEndpoint": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn", - "Token" - ], - "members": { - "PlatformApplicationArn": {}, - "Token": {}, - "CustomUserData": {}, - "Attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformEndpointResult", - "type": "structure", - "members": { - "EndpointArn": {} - } - } - }, - "CreateTopic": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "resultWrapper": "CreateTopicResult", - "type": "structure", - "members": { - "TopicArn": {} - } - } - }, - "DeleteEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - } - }, - "DeletePlatformApplication": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {} - } - } - }, - "DeleteTopic": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {} - } - } - }, - "GetEndpointAttributes": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "resultWrapper": "GetEndpointAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sj" - } - } - } - }, - "GetPlatformApplicationAttributes": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {} - } - }, - "output": { - "resultWrapper": "GetPlatformApplicationAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sj" - } - } - } - }, - "GetSMSAttributes": { - "input": { - "type": "structure", - "members": { - "attributes": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "GetSMSAttributesResult", - "type": "structure", - "members": { - "attributes": { - "shape": "Sj" - } - } - } - }, - "GetSubscriptionAttributes": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn" - ], - "members": { - "SubscriptionArn": {} - } - }, - "output": { - "resultWrapper": "GetSubscriptionAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "GetTopicAttributes": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {} - } - }, - "output": { - "resultWrapper": "GetTopicAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "ListEndpointsByPlatformApplication": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListEndpointsByPlatformApplicationResult", - "type": "structure", - "members": { - "Endpoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EndpointArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListPhoneNumbersOptedOut": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "resultWrapper": "ListPhoneNumbersOptedOutResult", - "type": "structure", - "members": { - "phoneNumbers": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListPlatformApplications": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListPlatformApplicationsResult", - "type": "structure", - "members": { - "PlatformApplications": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlatformApplicationArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListSubscriptions": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListSubscriptionsResult", - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1n" - }, - "NextToken": {} - } - } - }, - "ListSubscriptionsByTopic": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListSubscriptionsByTopicResult", - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1n" - }, - "NextToken": {} - } - } - }, - "ListTopics": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListTopicsResult", - "type": "structure", - "members": { - "Topics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TopicArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "OptInPhoneNumber": { - "input": { - "type": "structure", - "required": [ - "phoneNumber" - ], - "members": { - "phoneNumber": {} - } - }, - "output": { - "resultWrapper": "OptInPhoneNumberResult", - "type": "structure", - "members": {} - } - }, - "Publish": { - "input": { - "type": "structure", - "required": [ - "Message" - ], - "members": { - "TopicArn": {}, - "TargetArn": {}, - "PhoneNumber": {}, - "Message": {}, - "Subject": {}, - "MessageStructure": {}, - "MessageAttributes": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value", - "type": "structure", - "required": [ - "DataType" - ], - "members": { - "DataType": {}, - "StringValue": {}, - "BinaryValue": { - "type": "blob" - } - } - } - } - } - }, - "output": { - "resultWrapper": "PublishResult", - "type": "structure", - "members": { - "MessageId": {} - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Label" - ], - "members": { - "TopicArn": {}, - "Label": {} - } - } - }, - "SetEndpointAttributes": { - "input": { - "type": "structure", - "required": [ - "EndpointArn", - "Attributes" - ], - "members": { - "EndpointArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "SetPlatformApplicationAttributes": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn", - "Attributes" - ], - "members": { - "PlatformApplicationArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "SetSMSAttributes": { - "input": { - "type": "structure", - "required": [ - "attributes" - ], - "members": { - "attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "SetSMSAttributesResult", - "type": "structure", - "members": {} - } - }, - "SetSubscriptionAttributes": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn", - "AttributeName" - ], - "members": { - "SubscriptionArn": {}, - "AttributeName": {}, - "AttributeValue": {} - } - } - }, - "SetTopicAttributes": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "AttributeName" - ], - "members": { - "TopicArn": {}, - "AttributeName": {}, - "AttributeValue": {} - } - } - }, - "Subscribe": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Protocol" - ], - "members": { - "TopicArn": {}, - "Protocol": {}, - "Endpoint": {} - } - }, - "output": { - "resultWrapper": "SubscribeResult", - "type": "structure", - "members": { - "SubscriptionArn": {} - } - } - }, - "Unsubscribe": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn" - ], - "members": { - "SubscriptionArn": {} - } - } - } - }, - "shapes": { - "Sj": { - "type": "map", - "key": {}, - "value": {} - }, - "S1n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SubscriptionArn": {}, - "Owner": {}, - "Protocol": {}, - "Endpoint": {}, - "TopicArn": {} - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json b/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json deleted file mode 100644 index 455e470..0000000 --- a/node_modules/aws-sdk/apis/sns-2010-03-31.paginators.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "pagination": { - "ListEndpointsByPlatformApplication": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Endpoints" - }, - "ListPlatformApplications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "PlatformApplications" - }, - "ListSubscriptions": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListSubscriptionsByTopic": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListTopics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Topics" - } - } -} diff --git a/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json b/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json deleted file mode 100644 index 21b72de..0000000 --- a/node_modules/aws-sdk/apis/sqs-2012-11-05.examples.json +++ /dev/null @@ -1,618 +0,0 @@ -{ - "version": "1.0", - "examples": { - "AddPermission": [ - { - "input": { - "AWSAccountIds": [ - "12345EXAMPLE" - ], - "Actions": [ - "SendMessage" - ], - "Label": "SendMessagesFromMyQueue", - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example allows the specified AWS account to send messages to the specified queue.", - "id": "to-add-a-permission-to-a-queue-1472079068305", - "title": "To add a permission to a queue" - } - ], - "ChangeMessageVisibility": [ - { - "input": { - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", - "ReceiptHandle": "AQEBTpyI...t6HyQg==", - "VisibilityTimeout": 36000 - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the visibility timeout of the specified message to 10 hours (10 hours * 60 minutes * 60 seconds).", - "id": "to-change-the-visibility-timeout-of-a-single-message-1472079046292", - "title": "To change the visibility timeout of a single message" - } - ], - "ChangeMessageVisibilityBatch": [ - { - "input": { - "Entries": [ - { - "Id": "FirstMessage", - "ReceiptHandle": "AQEBhz2q...Jf3kaw==", - "VisibilityTimeout": 36000 - }, - { - "Id": "SecondMessage", - "ReceiptHandle": "AQEBkTUH...HifSnw==", - "VisibilityTimeout": 36000 - } - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - "Failed": [ - - ], - "Successful": [ - - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example changes the visibility timeout of the two specified messages to 10 hours (10 hours * 60 minutes * 60 seconds).", - "id": "to-change-the-visibility-timeout-of-multiple-messages-1472079027081", - "title": "To change the visibility timeout of multiple messages" - } - ], - "CreateQueue": [ - { - "input": { - "Attributes": { - "MessageRetentionPeriod": "259200", - "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}" - }, - "QueueName": "MyQueue" - }, - "output": { - "QueueUrl": "https://queue.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "The following operation creates an Amazon SQS queue named MyQueue.", - "id": "to-create-an-sqs-queue-1472078982579", - "title": "To create an Amazon SQS queue" - } - ], - "DeleteMessage": [ - { - "input": { - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", - "ReceiptHandle": "AQEBRXTo...q2doVA==" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified message.", - "id": "to-delete-a-single-message-1472078961585", - "title": "To delete a single message" - } - ], - "DeleteMessageBatch": [ - { - "input": { - "Entries": [ - { - "Id": "FirstMessage", - "ReceiptHandle": "AQEB1mgl...Z4GuLw==" - }, - { - "Id": "SecondMessage", - "ReceiptHandle": "AQEBLsYM...VQubAA==" - } - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - "Failed": [ - - ], - "Successful": [ - { - "Id": "FirstMessage" - }, - { - "Id": "SecondMessage" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the two specified messages.", - "id": "to-delete-multiple-messages-1472078930327", - "title": "To delete multiple messages" - } - ], - "DeleteQueue": [ - { - "input": { - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewerQueue" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes the specified queue.", - "id": "to-delete-a-queue-1472151853558", - "title": "To delete a queue" - } - ], - "GetQueueAttributes": [ - { - "input": { - "AttributeNames": [ - "All" - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - "Attributes": { - "ApproximateNumberOfMessages": "0", - "ApproximateNumberOfMessagesDelayed": "0", - "ApproximateNumberOfMessagesNotVisible": "0", - "CreatedTimestamp": "1442426968", - "DelaySeconds": "0", - "LastModifiedTimestamp": "1442426968", - "MaximumMessageSize": "262144", - "MessageRetentionPeriod": "345600", - "QueueArn": "arn:aws:sqs:us-east-1:80398EXAMPLE:MyNewQueue", - "ReceiveMessageWaitTimeSeconds": "0", - "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":1000}", - "VisibilityTimeout": "30" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example gets all attributes of the specified queue.", - "id": "to-get-the-attributes-of-a-queue-1472149421128", - "title": "To get the attributes of a queue" - }, - { - "input": { - "AttributeNames": [ - "MaximumMessageSize VisibilityTimeout" - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue" - }, - "output": { - "Attributes": { - "MaximumMessageSize": "262144", - "VisibilityTimeout": "30" - } - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example gets only the specified queue's maximum message size and visibility timeout attributes.", - "id": "to-get-the-attributes-of-a-queue-1472517012839", - "title": "To get the attributes of a queue" - } - ], - "GetQueueUrl": [ - { - "input": { - "QueueName": "MyQueue", - "QueueOwnerAWSAccountId": "123456789101" - }, - "output": { - "QueueUrl": "https://queue.amazonaws.com/123456789101/MyQueue" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example gets the URL of the specified queue.", - "id": "to-get-the-url-of-a-queue-1472078901091", - "title": "To get the URL of a queue" - } - ], - "ListDeadLetterSourceQueues": [ - { - "input": { - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue" - }, - "output": { - "queueUrls": [ - "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", - "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists the source queues associated with the specified dead letter queue.", - "id": "to-list-the-source-queues-of-a-dead-letter-queue-1472150435081", - "title": "To list the source queues of a dead letter queue" - } - ], - "ListQueues": [ - { - "input": { - "QueueNamePrefix": "" - }, - "output": { - "QueueUrls": [ - "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", - "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", - "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue", - "https://queue.amazonaws.com/80398EXAMPLE/TestQueue1", - "https://queue.amazonaws.com/80398EXAMPLE/TestQueue2" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists all queues.", - "id": "to-list-queues-1472150595914", - "title": "To list queues" - }, - { - "input": { - "QueueNamePrefix": "My" - }, - "output": { - "QueueUrls": [ - "https://queue.amazonaws.com/80398EXAMPLE/MyDeadLetterQueue", - "https://queue.amazonaws.com/80398EXAMPLE/MyQueue", - "https://queue.amazonaws.com/80398EXAMPLE/MyOtherQueue" - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example lists only queues that start with "Ty".", - "id": "to-list-queues-1472517240103", - "title": "To list queues" - } - ], - "PurgeQueue": [ - { - "input": { - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example deletes all messages in the specified queue.", - "id": "to-purge-a-queue-1472150819702", - "title": "To purge a queue" - } - ], - "ReceiveMessage": [ - { - "input": { - "AttributeNames": [ - "All" - ], - "MaxNumberOfMessages": 10, - "MessageAttributeNames": [ - "All" - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", - "VisibilityTimeout": 123, - "WaitTimeSeconds": 123 - }, - "output": { - "Messages": [ - { - "Attributes": { - "ApproximateFirstReceiveTimestamp": "1442428276921", - "ApproximateReceiveCount": "5", - "SenderId": "AIDAIAZKMSNQ7TEXAMPLE", - "SentTimestamp": "1442428276921" - }, - "Body": "My first message.", - "MD5OfBody": "1000f835...a35411fa", - "MD5OfMessageAttributes": "9424c491...26bc3ae7", - "MessageAttributes": { - "City": { - "DataType": "String", - "StringValue": "Any City" - }, - "PostalCode": { - "DataType": "String", - "StringValue": "ABC123" - } - }, - "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE", - "ReceiptHandle": "AQEBzbVv...fqNzFw==" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example receives up to 10 available messages, returning all available attributes.", - "id": "to-receive-a-message-1472151462717", - "title": "To receive a message" - }, - { - "input": { - "AttributeNames": [ - "SenderId SentTimestamp" - ], - "MaxNumberOfMessages": 123, - "MessageAttributeNames": [ - "PostalCode" - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue", - "VisibilityTimeout": 123, - "WaitTimeSeconds": 123 - }, - "output": { - "Messages": [ - { - "Attributes": { - "SenderId": "AIDAIAZKMSNQ7TEXAMPLE", - "SentTimestamp": "1442428276921" - }, - "Body": "My first message.", - "MD5OfBody": "1000f835...a35411fa", - "MD5OfMessageAttributes": "b8e89563...e088e74f", - "MessageAttributes": { - "PostalCode": { - "DataType": "String", - "StringValue": "ABC123" - } - }, - "MessageId": "d6790f8d-d575-4f01-bc51-40122EXAMPLE", - "ReceiptHandle": "AQEB6nR4...HzlvZQ==" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example receives the next available message, returning only the SenderId and SentTimestamp attributes and the PostalCode message attribute.", - "id": "to-receive-a-message-1472517398871", - "title": "To receive a message" - } - ], - "RemovePermission": [ - { - "input": { - "Label": "SendMessagesFromMyQueue", - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example removes the permission with the specified label from the specified queue.", - "id": "to-remove-a-permission-from-a-queue-1472151967252", - "title": "To remove a permission from a queue" - } - ], - "SendMessage": [ - { - "input": { - "DelaySeconds": 10, - "MessageAttributes": { - "City": { - "DataType": "String", - "StringValue": "Any City" - }, - "Greeting": { - "BinaryValue": "Hello, World!", - "DataType": "Binary" - }, - "Population": { - "DataType": "Number", - "StringValue": "1250800" - } - }, - "MessageBody": "Information about the largest city in Any Region.", - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - "MD5OfMessageAttributes": "00484c68...59e48f06", - "MD5OfMessageBody": "51b0a325...39163aa0", - "MessageId": "da68f62c-0c07-4bee-bf5f-7e856EXAMPLE" - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sends a message with the specified message body, delay period, and message attributes to the specified queue.", - "id": "to-send-a-message-to-a-queue-1472152022619", - "title": "To send a message to a queue" - } - ], - "SendMessageBatch": [ - { - "input": { - "Entries": [ - { - "DelaySeconds": 10, - "Id": "FuelReport-0001-2015-09-16T140731Z", - "MessageAttributes": { - "City": { - "DataType": "String", - "StringValue": "Any City" - }, - "PostalCode": { - "DataType": "String", - "StringValue": "99065" - }, - "PricePerGallon": { - "DataType": "Number", - "StringValue": "1.99" - }, - "Region": { - "DataType": "String", - "StringValue": "WA" - }, - "SellerName": { - "DataType": "String", - "StringValue": "Example Store" - } - }, - "MessageBody": "Fuel report for account 0001 on 2015-09-16 at 02:07:31 PM." - }, - { - "DelaySeconds": 10, - "Id": "FuelReport-0002-2015-09-16T140930Z", - "MessageAttributes": { - "City": { - "DataType": "String", - "StringValue": "North Town" - }, - "PostalCode": { - "DataType": "String", - "StringValue": "99123" - }, - "PricePerGallon": { - "DataType": "Number", - "StringValue": "1.87" - }, - "Region": { - "DataType": "String", - "StringValue": "WA" - }, - "SellerName": { - "DataType": "String", - "StringValue": "Example Fuels" - } - }, - "MessageBody": "Fuel report for account 0002 on 2015-09-16 at 02:09:30 PM." - } - ], - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyQueue" - }, - "output": { - "Failed": [ - - ], - "Successful": [ - { - "Id": "FuelReport-0001-2015-09-16T140731Z", - "MD5OfMessageAttributes": "10809b55...baf283ef", - "MD5OfMessageBody": "203c4a38...7943237e", - "MessageId": "d175070c-d6b8-4101-861d-adeb3EXAMPLE" - }, - { - "Id": "FuelReport-0002-2015-09-16T140930Z", - "MD5OfMessageAttributes": "55623928...ae354a25", - "MD5OfMessageBody": "2cf0159a...c1980595", - "MessageId": "f9b7d55d-0570-413e-b9c5-a9264EXAMPLE" - } - ] - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sends two messages with the specified message bodies, delay periods, and message attributes to the specified queue.", - "id": "to-send-multiple-messages-1472152282144", - "title": "To send multiple messages" - } - ], - "SetQueueAttributes": [ - { - "input": { - "Attributes": { - "DelaySeconds": "10", - "MaximumMessageSize": "131072", - "MessageRetentionPeriod": "259200", - "ReceiveMessageWaitTimeSeconds": "20", - "RedrivePolicy": "{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:80398EXAMPLE:MyDeadLetterQueue\",\"maxReceiveCount\":\"1000\"}", - "VisibilityTimeout": "60" - }, - "QueueUrl": "https://sqs.us-east-1.amazonaws.com/80398EXAMPLE/MyNewQueue" - }, - "output": { - }, - "comments": { - "input": { - }, - "output": { - } - }, - "description": "This example sets the specified queue to a delivery delay of 10 seconds, a maximum message size of 128 KB (128 KB * 1,024 bytes), a message retention period of 3 days (3 days * 24 hours * 60 minutes * 60 seconds), a receive message wait time of 20 seconds, and a default visibility timeout of 60 seconds. This example also associates the specified dead letter queue with a maximum receive count of 1,000 messages.", - "id": "to-set-the-attributes-of-a-queue-1472152379646", - "title": "To set the attributes of a queue" - } - ] - } -} diff --git a/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json b/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json deleted file mode 100644 index 492845e..0000000 --- a/node_modules/aws-sdk/apis/sqs-2012-11-05.min.json +++ /dev/null @@ -1,583 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-11-05", - "endpointPrefix": "sqs", - "protocol": "query", - "serviceAbbreviation": "Amazon SQS", - "serviceFullName": "Amazon Simple Queue Service", - "signatureVersion": "v4", - "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/" - }, - "operations": { - "AddPermission": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Label", - "AWSAccountIds", - "Actions" - ], - "members": { - "QueueUrl": {}, - "Label": {}, - "AWSAccountIds": { - "type": "list", - "member": { - "locationName": "AWSAccountId" - }, - "flattened": true - }, - "Actions": { - "type": "list", - "member": { - "locationName": "ActionName" - }, - "flattened": true - } - } - } - }, - "ChangeMessageVisibility": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "ReceiptHandle", - "VisibilityTimeout" - ], - "members": { - "QueueUrl": {}, - "ReceiptHandle": {}, - "VisibilityTimeout": { - "type": "integer" - } - } - } - }, - "ChangeMessageVisibilityBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "ChangeMessageVisibilityBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "ReceiptHandle" - ], - "members": { - "Id": {}, - "ReceiptHandle": {}, - "VisibilityTimeout": { - "type": "integer" - } - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "ChangeMessageVisibilityBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "ChangeMessageVisibilityBatchResultEntry", - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "CreateQueue": { - "input": { - "type": "structure", - "required": [ - "QueueName" - ], - "members": { - "QueueName": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - }, - "output": { - "resultWrapper": "CreateQueueResult", - "type": "structure", - "members": { - "QueueUrl": {} - } - } - }, - "DeleteMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "ReceiptHandle" - ], - "members": { - "QueueUrl": {}, - "ReceiptHandle": {} - } - } - }, - "DeleteMessageBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "DeleteMessageBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "ReceiptHandle" - ], - "members": { - "Id": {}, - "ReceiptHandle": {} - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "DeleteMessageBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "DeleteMessageBatchResultEntry", - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "DeleteQueue": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - } - }, - "GetQueueAttributes": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {}, - "AttributeNames": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "GetQueueAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - } - }, - "GetQueueUrl": { - "input": { - "type": "structure", - "required": [ - "QueueName" - ], - "members": { - "QueueName": {}, - "QueueOwnerAWSAccountId": {} - } - }, - "output": { - "resultWrapper": "GetQueueUrlResult", - "type": "structure", - "members": { - "QueueUrl": {} - } - } - }, - "ListDeadLetterSourceQueues": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - }, - "output": { - "resultWrapper": "ListDeadLetterSourceQueuesResult", - "type": "structure", - "required": [ - "queueUrls" - ], - "members": { - "queueUrls": { - "shape": "Sz" - } - } - } - }, - "ListQueues": { - "input": { - "type": "structure", - "members": { - "QueueNamePrefix": {} - } - }, - "output": { - "resultWrapper": "ListQueuesResult", - "type": "structure", - "members": { - "QueueUrls": { - "shape": "Sz" - } - } - } - }, - "PurgeQueue": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - } - }, - "ReceiveMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {}, - "AttributeNames": { - "shape": "St" - }, - "MessageAttributeNames": { - "type": "list", - "member": { - "locationName": "MessageAttributeName" - }, - "flattened": true - }, - "MaxNumberOfMessages": { - "type": "integer" - }, - "VisibilityTimeout": { - "type": "integer" - }, - "WaitTimeSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ReceiveMessageResult", - "type": "structure", - "members": { - "Messages": { - "type": "list", - "member": { - "locationName": "Message", - "type": "structure", - "members": { - "MessageId": {}, - "ReceiptHandle": {}, - "MD5OfBody": {}, - "Body": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - }, - "MD5OfMessageAttributes": {}, - "MessageAttributes": { - "shape": "S19", - "locationName": "MessageAttribute" - } - } - }, - "flattened": true - } - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Label" - ], - "members": { - "QueueUrl": {}, - "Label": {} - } - } - }, - "SendMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "MessageBody" - ], - "members": { - "QueueUrl": {}, - "MessageBody": {}, - "DelaySeconds": { - "type": "integer" - }, - "MessageAttributes": { - "shape": "S19", - "locationName": "MessageAttribute" - } - } - }, - "output": { - "resultWrapper": "SendMessageResult", - "type": "structure", - "members": { - "MD5OfMessageBody": {}, - "MD5OfMessageAttributes": {}, - "MessageId": {} - } - } - }, - "SendMessageBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "SendMessageBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "MessageBody" - ], - "members": { - "Id": {}, - "MessageBody": {}, - "DelaySeconds": { - "type": "integer" - }, - "MessageAttributes": { - "shape": "S19", - "locationName": "MessageAttribute" - } - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "SendMessageBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "SendMessageBatchResultEntry", - "type": "structure", - "required": [ - "Id", - "MessageId", - "MD5OfMessageBody" - ], - "members": { - "Id": {}, - "MessageId": {}, - "MD5OfMessageBody": {}, - "MD5OfMessageAttributes": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "SetQueueAttributes": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Attributes" - ], - "members": { - "QueueUrl": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - } - } - }, - "shapes": { - "Sd": { - "type": "list", - "member": { - "locationName": "BatchResultErrorEntry", - "type": "structure", - "required": [ - "Id", - "SenderFault", - "Code" - ], - "members": { - "Id": {}, - "SenderFault": { - "type": "boolean" - }, - "Code": {}, - "Message": {} - } - }, - "flattened": true - }, - "Sh": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value" - }, - "flattened": true, - "locationName": "Attribute" - }, - "St": { - "type": "list", - "member": { - "locationName": "AttributeName" - }, - "flattened": true - }, - "Sz": { - "type": "list", - "member": { - "locationName": "QueueUrl" - }, - "flattened": true - }, - "S19": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value", - "type": "structure", - "required": [ - "DataType" - ], - "members": { - "StringValue": {}, - "BinaryValue": { - "type": "blob" - }, - "StringListValues": { - "flattened": true, - "locationName": "StringListValue", - "type": "list", - "member": { - "locationName": "StringListValue" - } - }, - "BinaryListValues": { - "flattened": true, - "locationName": "BinaryListValue", - "type": "list", - "member": { - "locationName": "BinaryListValue", - "type": "blob" - } - }, - "DataType": {} - } - }, - "flattened": true - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json b/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json deleted file mode 100644 index e7ac48a..0000000 --- a/node_modules/aws-sdk/apis/sqs-2012-11-05.paginators.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "pagination": { - "ListQueues": { - "result_key": "QueueUrls" - } - } -} diff --git a/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json b/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json deleted file mode 100644 index 9320562..0000000 --- a/node_modules/aws-sdk/apis/ssm-2014-11-06.min.json +++ /dev/null @@ -1,932 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-06", - "endpointPrefix": "ssm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon SSM", - "serviceFullName": "Amazon Simple Systems Management Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonSSM" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId", - "Tags" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelCommand": { - "input": { - "type": "structure", - "required": [ - "CommandId" - ], - "members": { - "CommandId": {}, - "InstanceIds": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateActivation": { - "input": { - "type": "structure", - "required": [ - "IamRole" - ], - "members": { - "Description": {}, - "DefaultInstanceName": {}, - "IamRole": {}, - "RegistrationLimit": { - "type": "integer" - }, - "ExpirationDate": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ActivationId": {}, - "ActivationCode": {} - } - } - }, - "CreateAssociation": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId" - ], - "members": { - "Name": {}, - "InstanceId": {}, - "Parameters": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "Su" - } - } - } - }, - "CreateAssociationBatch": { - "input": { - "type": "structure", - "required": [ - "Entries" - ], - "members": { - "Entries": { - "type": "list", - "member": { - "shape": "S12", - "locationName": "entries" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "type": "list", - "member": { - "shape": "Su", - "locationName": "AssociationDescription" - } - }, - "Failed": { - "type": "list", - "member": { - "locationName": "FailedCreateAssociationEntry", - "type": "structure", - "members": { - "Entry": { - "shape": "S12" - }, - "Message": {}, - "Fault": {} - } - } - } - } - } - }, - "CreateDocument": { - "input": { - "type": "structure", - "required": [ - "Content", - "Name" - ], - "members": { - "Content": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentDescription": { - "shape": "S1c" - } - } - } - }, - "DeleteActivation": { - "input": { - "type": "structure", - "required": [ - "ActivationId" - ], - "members": { - "ActivationId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteAssociation": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId" - ], - "members": { - "Name": {}, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterManagedInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeActivations": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FilterKey": {}, - "FilterValues": { - "type": "list", - "member": {} - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ActivationList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActivationId": {}, - "Description": {}, - "DefaultInstanceName": {}, - "IamRole": {}, - "RegistrationLimit": { - "type": "integer" - }, - "RegistrationsCount": { - "type": "integer" - }, - "ExpirationDate": { - "type": "timestamp" - }, - "Expired": { - "type": "boolean" - }, - "CreatedDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAssociation": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId" - ], - "members": { - "Name": {}, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "Su" - } - } - } - }, - "DescribeDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Document": { - "shape": "S1c" - } - } - } - }, - "DescribeDocumentPermission": { - "input": { - "type": "structure", - "required": [ - "Name", - "PermissionType" - ], - "members": { - "Name": {}, - "PermissionType": {} - } - }, - "output": { - "type": "structure", - "members": { - "AccountIds": { - "shape": "S2m" - } - } - } - }, - "DescribeInstanceInformation": { - "input": { - "type": "structure", - "members": { - "InstanceInformationFilterList": { - "type": "list", - "member": { - "locationName": "InstanceInformationFilter", - "type": "structure", - "required": [ - "key", - "valueSet" - ], - "members": { - "key": {}, - "valueSet": { - "type": "list", - "member": { - "locationName": "InstanceInformationFilterValue" - } - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceInformationList": { - "type": "list", - "member": { - "locationName": "InstanceInformation", - "type": "structure", - "members": { - "InstanceId": {}, - "PingStatus": {}, - "LastPingDateTime": { - "type": "timestamp" - }, - "AgentVersion": {}, - "IsLatestVersion": { - "type": "boolean" - }, - "PlatformType": {}, - "PlatformName": {}, - "PlatformVersion": {}, - "ActivationId": {}, - "IamRole": {}, - "RegistrationDate": { - "type": "timestamp" - }, - "ResourceType": {}, - "Name": {}, - "IPAddress": {}, - "ComputerName": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Content": {} - } - } - }, - "ListAssociations": { - "input": { - "type": "structure", - "required": [ - "AssociationFilterList" - ], - "members": { - "AssociationFilterList": { - "type": "list", - "member": { - "locationName": "AssociationFilter", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Associations": { - "type": "list", - "member": { - "locationName": "Association", - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListCommandInvocations": { - "input": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "Filters": { - "shape": "S3f" - }, - "Details": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "CommandInvocations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "Comment": {}, - "DocumentName": {}, - "RequestedDateTime": { - "type": "timestamp" - }, - "Status": {}, - "TraceOutput": {}, - "CommandPlugins": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Status": {}, - "ResponseCode": { - "type": "integer" - }, - "ResponseStartDateTime": { - "type": "timestamp" - }, - "ResponseFinishDateTime": { - "type": "timestamp" - }, - "Output": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {} - } - } - }, - "ServiceRole": {}, - "NotificationConfig": { - "shape": "S3y" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListCommands": { - "input": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "Filters": { - "shape": "S3f" - } - } - }, - "output": { - "type": "structure", - "members": { - "Commands": { - "type": "list", - "member": { - "shape": "S46" - } - }, - "NextToken": {} - } - } - }, - "ListDocuments": { - "input": { - "type": "structure", - "members": { - "DocumentFilterList": { - "type": "list", - "member": { - "locationName": "DocumentFilter", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentIdentifiers": { - "type": "list", - "member": { - "locationName": "DocumentIdentifier", - "type": "structure", - "members": { - "Name": {}, - "Owner": {}, - "PlatformTypes": { - "shape": "S1q" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": {}, - "ResourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S4" - } - } - } - }, - "ModifyDocumentPermission": { - "input": { - "type": "structure", - "required": [ - "Name", - "PermissionType" - ], - "members": { - "Name": {}, - "PermissionType": {}, - "AccountIdsToAdd": { - "shape": "S2m" - }, - "AccountIdsToRemove": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendCommand": { - "input": { - "type": "structure", - "required": [ - "InstanceIds", - "DocumentName" - ], - "members": { - "InstanceIds": { - "shape": "Sb" - }, - "DocumentName": {}, - "DocumentHash": {}, - "DocumentHashType": {}, - "TimeoutSeconds": { - "type": "integer" - }, - "Comment": {}, - "Parameters": { - "shape": "Sp" - }, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "ServiceRoleArn": {}, - "NotificationConfig": { - "shape": "S3y" - } - } - }, - "output": { - "type": "structure", - "members": { - "Command": { - "shape": "S46" - } - } - } - }, - "UpdateAssociationStatus": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId", - "AssociationStatus" - ], - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationStatus": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "Su" - } - } - } - }, - "UpdateManagedInstanceRole": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "IamRole" - ], - "members": { - "InstanceId": {}, - "IamRole": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sb": { - "type": "list", - "member": {} - }, - "Sp": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "Su": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "Date": { - "type": "timestamp" - }, - "Status": { - "shape": "Sw" - }, - "Parameters": { - "shape": "Sp" - } - } - }, - "Sw": { - "type": "structure", - "required": [ - "Date", - "Name", - "Message" - ], - "members": { - "Date": { - "type": "timestamp" - }, - "Name": {}, - "Message": {}, - "AdditionalInfo": {} - } - }, - "S12": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "Parameters": { - "shape": "Sp" - } - } - }, - "S1c": { - "type": "structure", - "members": { - "Sha1": {}, - "Hash": {}, - "HashType": {}, - "Name": {}, - "Owner": {}, - "CreatedDate": { - "type": "timestamp" - }, - "Status": {}, - "Description": {}, - "Parameters": { - "type": "list", - "member": { - "locationName": "DocumentParameter", - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Description": {}, - "DefaultValue": {} - } - } - }, - "PlatformTypes": { - "shape": "S1q" - } - } - }, - "S1q": { - "type": "list", - "member": { - "locationName": "PlatformType" - } - }, - "S2m": { - "type": "list", - "member": { - "locationName": "AccountId" - } - }, - "S3f": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "S3y": { - "type": "structure", - "members": { - "NotificationArn": {}, - "NotificationEvents": { - "type": "list", - "member": {} - }, - "NotificationType": {} - } - }, - "S46": { - "type": "structure", - "members": { - "CommandId": {}, - "DocumentName": {}, - "Comment": {}, - "ExpiresAfter": { - "type": "timestamp" - }, - "Parameters": { - "shape": "Sp" - }, - "InstanceIds": { - "shape": "Sb" - }, - "RequestedDateTime": { - "type": "timestamp" - }, - "Status": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "ServiceRole": {}, - "NotificationConfig": { - "shape": "S3y" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json b/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json deleted file mode 100644 index 37977ca..0000000 --- a/node_modules/aws-sdk/apis/ssm-2014-11-06.paginators.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "pagination": { - "DescribeInstanceInformation": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "InstanceInformationList" - }, - "ListAssociations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Associations" - }, - "ListCommandInvocations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "CommandInvocations" - }, - "ListCommands": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Commands" - }, - "ListDocuments": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "DocumentIdentifiers" - }, - "DescribeActivations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ActivationList" - } - } -} diff --git a/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json b/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json deleted file mode 100644 index ca114c8..0000000 --- a/node_modules/aws-sdk/apis/storagegateway-2013-06-30.min.json +++ /dev/null @@ -1,1485 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-06-30", - "endpointPrefix": "storagegateway", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Storage Gateway", - "signatureVersion": "v4", - "targetPrefix": "StorageGateway_20130630" - }, - "operations": { - "ActivateGateway": { - "input": { - "type": "structure", - "required": [ - "ActivationKey", - "GatewayName", - "GatewayTimezone", - "GatewayRegion" - ], - "members": { - "ActivationKey": {}, - "GatewayName": {}, - "GatewayTimezone": {}, - "GatewayRegion": {}, - "GatewayType": {}, - "TapeDriveType": {}, - "MediumChangerType": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "Tags" - ], - "members": { - "ResourceARN": {}, - "Tags": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {} - } - } - }, - "AddUploadBuffer": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddWorkingStorage": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "CancelArchival": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CancelRetrieval": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CreateCachediSCSIVolume": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "VolumeSizeInBytes", - "TargetName", - "NetworkInterfaceId", - "ClientToken" - ], - "members": { - "GatewayARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "SnapshotId": {}, - "TargetName": {}, - "NetworkInterfaceId": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "TargetARN": {} - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "SnapshotDescription" - ], - "members": { - "VolumeARN": {}, - "SnapshotDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "SnapshotId": {} - } - } - }, - "CreateSnapshotFromVolumeRecoveryPoint": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "SnapshotDescription" - ], - "members": { - "VolumeARN": {}, - "SnapshotDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {}, - "VolumeARN": {}, - "VolumeRecoveryPointTime": {} - } - } - }, - "CreateStorediSCSIVolume": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskId", - "PreserveExistingData", - "TargetName", - "NetworkInterfaceId" - ], - "members": { - "GatewayARN": {}, - "DiskId": {}, - "SnapshotId": {}, - "PreserveExistingData": { - "type": "boolean" - }, - "TargetName": {}, - "NetworkInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "TargetARN": {} - } - } - }, - "CreateTapeWithBarcode": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeSizeInBytes", - "TapeBarcode" - ], - "members": { - "GatewayARN": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeBarcode": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CreateTapes": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeSizeInBytes", - "ClientToken", - "NumTapesToCreate", - "TapeBarcodePrefix" - ], - "members": { - "GatewayARN": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "ClientToken": {}, - "NumTapesToCreate": { - "type": "integer" - }, - "TapeBarcodePrefix": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1l" - } - } - } - }, - "DeleteBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "BandwidthType" - ], - "members": { - "GatewayARN": {}, - "BandwidthType": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "DeleteChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN", - "InitiatorName" - ], - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - } - }, - "DeleteGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "DeleteSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "DeleteTape": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "DeleteTapeArchive": { - "input": { - "type": "structure", - "required": [ - "TapeARN" - ], - "members": { - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "DeleteVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "DescribeBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "AverageUploadRateLimitInBitsPerSec": { - "type": "long" - }, - "AverageDownloadRateLimitInBitsPerSec": { - "type": "long" - } - } - } - }, - "DescribeCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "CacheAllocatedInBytes": { - "type": "long" - }, - "CacheUsedPercentage": { - "type": "double" - }, - "CacheDirtyPercentage": { - "type": "double" - }, - "CacheHitPercentage": { - "type": "double" - }, - "CacheMissPercentage": { - "type": "double" - } - } - } - }, - "DescribeCachediSCSIVolumes": { - "input": { - "type": "structure", - "required": [ - "VolumeARNs" - ], - "members": { - "VolumeARNs": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "CachediSCSIVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "VolumeType": {}, - "VolumeStatus": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeProgress": { - "type": "double" - }, - "SourceSnapshotId": {}, - "VolumeiSCSIAttributes": { - "shape": "S2i" - } - } - } - } - } - } - }, - "DescribeChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN" - ], - "members": { - "TargetARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChapCredentials": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetARN": {}, - "SecretToAuthenticateInitiator": {}, - "InitiatorName": {}, - "SecretToAuthenticateTarget": {} - } - } - } - } - } - }, - "DescribeGatewayInformation": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "GatewayId": {}, - "GatewayName": {}, - "GatewayTimezone": {}, - "GatewayState": {}, - "GatewayNetworkInterfaces": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Ipv4Address": {}, - "MacAddress": {}, - "Ipv6Address": {} - } - } - }, - "GatewayType": {}, - "NextUpdateAvailabilityDate": {}, - "LastSoftwareUpdate": {} - } - } - }, - "DescribeMaintenanceStartTime": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "HourOfDay": { - "type": "integer" - }, - "MinuteOfHour": { - "type": "integer" - }, - "DayOfWeek": { - "type": "integer" - }, - "Timezone": {} - } - } - }, - "DescribeSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "StartAt": { - "type": "integer" - }, - "RecurrenceInHours": { - "type": "integer" - }, - "Description": {}, - "Timezone": {} - } - } - }, - "DescribeStorediSCSIVolumes": { - "input": { - "type": "structure", - "required": [ - "VolumeARNs" - ], - "members": { - "VolumeARNs": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "StorediSCSIVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "VolumeType": {}, - "VolumeStatus": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeProgress": { - "type": "double" - }, - "VolumeDiskId": {}, - "SourceSnapshotId": {}, - "PreservedExistingData": { - "type": "boolean" - }, - "VolumeiSCSIAttributes": { - "shape": "S2i" - } - } - } - } - } - } - }, - "DescribeTapeArchives": { - "input": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1l" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TapeArchives": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "CompletionTime": { - "type": "timestamp" - }, - "RetrievedTo": {}, - "TapeStatus": {} - } - } - }, - "Marker": {} - } - } - }, - "DescribeTapeRecoveryPoints": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "TapeRecoveryPointInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeRecoveryPointTime": { - "type": "timestamp" - }, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {} - } - } - }, - "Marker": {} - } - } - }, - "DescribeTapes": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "TapeARNs": { - "shape": "S1l" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tapes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {}, - "VTLDevice": {}, - "Progress": { - "type": "double" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeUploadBuffer": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "UploadBufferUsedInBytes": { - "type": "long" - }, - "UploadBufferAllocatedInBytes": { - "type": "long" - } - } - } - }, - "DescribeVTLDevices": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "VTLDeviceARNs": { - "type": "list", - "member": {} - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "VTLDevices": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VTLDeviceARN": {}, - "VTLDeviceType": {}, - "VTLDeviceVendor": {}, - "VTLDeviceProductIdentifier": {}, - "DeviceiSCSIAttributes": { - "type": "structure", - "members": { - "TargetARN": {}, - "NetworkInterfaceId": {}, - "NetworkInterfacePort": { - "type": "integer" - }, - "ChapEnabled": { - "type": "boolean" - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeWorkingStorage": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "WorkingStorageUsedInBytes": { - "type": "long" - }, - "WorkingStorageAllocatedInBytes": { - "type": "long" - } - } - } - }, - "DisableGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "ListGateways": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Gateways": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GatewayId": {}, - "GatewayARN": {}, - "GatewayType": {}, - "GatewayOperationalState": {}, - "GatewayName": {} - } - } - }, - "Marker": {} - } - } - }, - "ListLocalDisks": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Disks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DiskId": {}, - "DiskPath": {}, - "DiskNode": {}, - "DiskStatus": {}, - "DiskSizeInBytes": { - "type": "long" - }, - "DiskAllocationType": {}, - "DiskAllocationResource": {} - } - } - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN" - ], - "members": { - "ResourceARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {}, - "Marker": {}, - "Tags": { - "shape": "Sh" - } - } - } - }, - "ListTapes": { - "input": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1l" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TapeInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {}, - "GatewayARN": {} - } - } - }, - "Marker": {} - } - } - }, - "ListVolumeInitiators": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "Initiators": { - "type": "list", - "member": {} - } - } - } - }, - "ListVolumeRecoveryPoints": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "VolumeRecoveryPointInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeUsageInBytes": { - "type": "long" - }, - "VolumeRecoveryPointTime": {} - } - } - } - } - } - }, - "ListVolumes": { - "input": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Marker": {}, - "VolumeInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "GatewayARN": {}, - "GatewayId": {}, - "VolumeType": {}, - "VolumeSizeInBytes": { - "type": "long" - } - } - } - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "TagKeys" - ], - "members": { - "ResourceARN": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {} - } - } - }, - "ResetCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "RetrieveTapeArchive": { - "input": { - "type": "structure", - "required": [ - "TapeARN", - "GatewayARN" - ], - "members": { - "TapeARN": {}, - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "RetrieveTapeRecoveryPoint": { - "input": { - "type": "structure", - "required": [ - "TapeARN", - "GatewayARN" - ], - "members": { - "TapeARN": {}, - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "SetLocalConsolePassword": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "LocalConsolePassword" - ], - "members": { - "GatewayARN": {}, - "LocalConsolePassword": { - "type": "string", - "sensitive": true - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "ShutdownGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "StartGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "AverageUploadRateLimitInBitsPerSec": { - "type": "long" - }, - "AverageDownloadRateLimitInBitsPerSec": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN", - "SecretToAuthenticateInitiator", - "InitiatorName" - ], - "members": { - "TargetARN": {}, - "SecretToAuthenticateInitiator": {}, - "InitiatorName": {}, - "SecretToAuthenticateTarget": {} - } - }, - "output": { - "type": "structure", - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - } - }, - "UpdateGatewayInformation": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "GatewayName": {}, - "GatewayTimezone": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "GatewayName": {} - } - } - }, - "UpdateGatewaySoftwareNow": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateMaintenanceStartTime": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "HourOfDay", - "MinuteOfHour", - "DayOfWeek" - ], - "members": { - "GatewayARN": {}, - "HourOfDay": { - "type": "integer" - }, - "MinuteOfHour": { - "type": "integer" - }, - "DayOfWeek": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "StartAt", - "RecurrenceInHours" - ], - "members": { - "VolumeARN": {}, - "StartAt": { - "type": "integer" - }, - "RecurrenceInHours": { - "type": "integer" - }, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "UpdateVTLDeviceType": { - "input": { - "type": "structure", - "required": [ - "VTLDeviceARN", - "DeviceType" - ], - "members": { - "VTLDeviceARN": {}, - "DeviceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "VTLDeviceARN": {} - } - } - } - }, - "shapes": { - "Sc": { - "type": "list", - "member": {} - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1l": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "list", - "member": {} - }, - "S2i": { - "type": "structure", - "members": { - "TargetARN": {}, - "NetworkInterfaceId": {}, - "NetworkInterfacePort": { - "type": "integer" - }, - "LunNumber": { - "type": "integer" - }, - "ChapEnabled": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json b/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json deleted file mode 100644 index 286915c..0000000 --- a/node_modules/aws-sdk/apis/storagegateway-2013-06-30.paginators.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "pagination": { - "DescribeCachediSCSIVolumes": { - "result_key": "CachediSCSIVolumes" - }, - "DescribeStorediSCSIVolumes": { - "result_key": "StorediSCSIVolumes" - }, - "DescribeTapeArchives": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeArchives" - }, - "DescribeTapeRecoveryPoints": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeRecoveryPointInfos" - }, - "DescribeTapes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Tapes" - }, - "DescribeVTLDevices": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VTLDevices" - }, - "ListGateways": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Gateways" - }, - "ListLocalDisks": { - "result_key": "Disks" - }, - "ListVolumeRecoveryPoints": { - "result_key": "VolumeRecoveryPointInfos" - }, - "ListVolumes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VolumeInfos" - } - } -} diff --git a/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json b/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json deleted file mode 100644 index 0e173f6..0000000 --- a/node_modules/aws-sdk/apis/streams.dynamodb-2012-08-10.min.json +++ /dev/null @@ -1,238 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-08-10", - "endpointPrefix": "streams.dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceFullName": "Amazon DynamoDB Streams", - "signatureVersion": "v4", - "signingName": "dynamodb", - "targetPrefix": "DynamoDBStreams_20120810" - }, - "operations": { - "DescribeStream": { - "input": { - "type": "structure", - "required": [ - "StreamArn" - ], - "members": { - "StreamArn": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartShardId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StreamDescription": { - "type": "structure", - "members": { - "StreamArn": {}, - "StreamLabel": {}, - "StreamStatus": {}, - "StreamViewType": {}, - "CreationRequestDateTime": { - "type": "timestamp" - }, - "TableName": {}, - "KeySchema": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "KeyType" - ], - "members": { - "AttributeName": {}, - "KeyType": {} - } - } - }, - "Shards": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ShardId": {}, - "SequenceNumberRange": { - "type": "structure", - "members": { - "StartingSequenceNumber": {}, - "EndingSequenceNumber": {} - } - }, - "ParentShardId": {} - } - } - }, - "LastEvaluatedShardId": {} - } - } - } - } - }, - "GetRecords": { - "input": { - "type": "structure", - "required": [ - "ShardIterator" - ], - "members": { - "ShardIterator": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventID": {}, - "eventName": {}, - "eventVersion": {}, - "eventSource": {}, - "awsRegion": {}, - "dynamodb": { - "type": "structure", - "members": { - "ApproximateCreationDateTime": { - "type": "timestamp" - }, - "Keys": { - "shape": "Sr" - }, - "NewImage": { - "shape": "Sr" - }, - "OldImage": { - "shape": "Sr" - }, - "SequenceNumber": {}, - "SizeBytes": { - "type": "long" - }, - "StreamViewType": {} - } - } - } - } - }, - "NextShardIterator": {} - } - } - }, - "GetShardIterator": { - "input": { - "type": "structure", - "required": [ - "StreamArn", - "ShardId", - "ShardIteratorType" - ], - "members": { - "StreamArn": {}, - "ShardId": {}, - "ShardIteratorType": {}, - "SequenceNumber": {} - } - }, - "output": { - "type": "structure", - "members": { - "ShardIterator": {} - } - } - }, - "ListStreams": { - "input": { - "type": "structure", - "members": { - "TableName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartStreamArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Streams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StreamArn": {}, - "TableName": {}, - "StreamLabel": {} - } - } - }, - "LastEvaluatedStreamArn": {} - } - } - } - }, - "shapes": { - "Sr": { - "type": "map", - "key": {}, - "value": { - "shape": "St" - } - }, - "St": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - }, - "M": { - "type": "map", - "key": {}, - "value": { - "shape": "St" - } - }, - "L": { - "type": "list", - "member": { - "shape": "St" - } - }, - "NULL": { - "type": "boolean" - }, - "BOOL": { - "type": "boolean" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/sts-2011-06-15.min.json b/node_modules/aws-sdk/apis/sts-2011-06-15.min.json deleted file mode 100644 index 219221d..0000000 --- a/node_modules/aws-sdk/apis/sts-2011-06-15.min.json +++ /dev/null @@ -1,249 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2011-06-15", - "endpointPrefix": "sts", - "globalEndpoint": "sts.amazonaws.com", - "protocol": "query", - "serviceAbbreviation": "AWS STS", - "serviceFullName": "AWS Security Token Service", - "signatureVersion": "v4", - "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/" - }, - "operations": { - "AssumeRole": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "RoleSessionName" - ], - "members": { - "RoleArn": {}, - "RoleSessionName": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - }, - "ExternalId": {}, - "SerialNumber": {}, - "TokenCode": {} - } - }, - "output": { - "resultWrapper": "AssumeRoleResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - } - } - } - }, - "AssumeRoleWithSAML": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "PrincipalArn", - "SAMLAssertion" - ], - "members": { - "RoleArn": {}, - "PrincipalArn": {}, - "SAMLAssertion": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "AssumeRoleWithSAMLResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - }, - "Subject": {}, - "SubjectType": {}, - "Issuer": {}, - "Audience": {}, - "NameQualifier": {} - } - } - }, - "AssumeRoleWithWebIdentity": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "RoleSessionName", - "WebIdentityToken" - ], - "members": { - "RoleArn": {}, - "RoleSessionName": {}, - "WebIdentityToken": {}, - "ProviderId": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "AssumeRoleWithWebIdentityResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "SubjectFromWebIdentityToken": {}, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - }, - "Provider": {}, - "Audience": {} - } - } - }, - "DecodeAuthorizationMessage": { - "input": { - "type": "structure", - "required": [ - "EncodedMessage" - ], - "members": { - "EncodedMessage": {} - } - }, - "output": { - "resultWrapper": "DecodeAuthorizationMessageResult", - "type": "structure", - "members": { - "DecodedMessage": {} - } - } - }, - "GetCallerIdentity": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "GetCallerIdentityResult", - "type": "structure", - "members": { - "UserId": {}, - "Account": {}, - "Arn": {} - } - } - }, - "GetFederationToken": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "GetFederationTokenResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "FederatedUser": { - "type": "structure", - "required": [ - "FederatedUserId", - "Arn" - ], - "members": { - "FederatedUserId": {}, - "Arn": {} - } - }, - "PackedPolicySize": { - "type": "integer" - } - } - } - }, - "GetSessionToken": { - "input": { - "type": "structure", - "members": { - "DurationSeconds": { - "type": "integer" - }, - "SerialNumber": {}, - "TokenCode": {} - } - }, - "output": { - "resultWrapper": "GetSessionTokenResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - } - } - } - } - }, - "shapes": { - "Sa": { - "type": "structure", - "required": [ - "AccessKeyId", - "SecretAccessKey", - "SessionToken", - "Expiration" - ], - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {}, - "Expiration": { - "type": "timestamp" - } - } - }, - "Sf": { - "type": "structure", - "required": [ - "AssumedRoleId", - "Arn" - ], - "members": { - "AssumedRoleId": {}, - "Arn": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/support-2013-04-15.min.json b/node_modules/aws-sdk/apis/support-2013-04-15.min.json deleted file mode 100644 index dc10080..0000000 --- a/node_modules/aws-sdk/apis/support-2013-04-15.min.json +++ /dev/null @@ -1,569 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2013-04-15", - "endpointPrefix": "support", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Support", - "signatureVersion": "v4", - "targetPrefix": "AWSSupport_20130415" - }, - "operations": { - "AddAttachmentsToSet": { - "input": { - "type": "structure", - "required": [ - "attachments" - ], - "members": { - "attachmentSetId": {}, - "attachments": { - "type": "list", - "member": { - "shape": "S4" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "attachmentSetId": {}, - "expiryTime": {} - } - } - }, - "AddCommunicationToCase": { - "input": { - "type": "structure", - "required": [ - "communicationBody" - ], - "members": { - "caseId": {}, - "communicationBody": {}, - "ccEmailAddresses": { - "shape": "Sc" - }, - "attachmentSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "result": { - "type": "boolean" - } - } - } - }, - "CreateCase": { - "input": { - "type": "structure", - "required": [ - "subject", - "communicationBody" - ], - "members": { - "subject": {}, - "serviceCode": {}, - "severityCode": {}, - "categoryCode": {}, - "communicationBody": {}, - "ccEmailAddresses": { - "shape": "Sc" - }, - "language": {}, - "issueType": {}, - "attachmentSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "caseId": {} - } - } - }, - "DescribeAttachment": { - "input": { - "type": "structure", - "required": [ - "attachmentId" - ], - "members": { - "attachmentId": {} - } - }, - "output": { - "type": "structure", - "members": { - "attachment": { - "shape": "S4" - } - } - } - }, - "DescribeCases": { - "input": { - "type": "structure", - "members": { - "caseIdList": { - "type": "list", - "member": {} - }, - "displayId": {}, - "afterTime": {}, - "beforeTime": {}, - "includeResolvedCases": { - "type": "boolean" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "language": {}, - "includeCommunications": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "cases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "caseId": {}, - "displayId": {}, - "subject": {}, - "status": {}, - "serviceCode": {}, - "categoryCode": {}, - "severityCode": {}, - "submittedBy": {}, - "timeCreated": {}, - "recentCommunications": { - "type": "structure", - "members": { - "communications": { - "shape": "S17" - }, - "nextToken": {} - } - }, - "ccEmailAddresses": { - "shape": "Sc" - }, - "language": {} - } - } - }, - "nextToken": {} - } - } - }, - "DescribeCommunications": { - "input": { - "type": "structure", - "required": [ - "caseId" - ], - "members": { - "caseId": {}, - "beforeTime": {}, - "afterTime": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "communications": { - "shape": "S17" - }, - "nextToken": {} - } - } - }, - "DescribeServices": { - "input": { - "type": "structure", - "members": { - "serviceCodeList": { - "type": "list", - "member": {} - }, - "language": {} - } - }, - "output": { - "type": "structure", - "members": { - "services": { - "type": "list", - "member": { - "type": "structure", - "members": { - "code": {}, - "name": {}, - "categories": { - "type": "list", - "member": { - "type": "structure", - "members": { - "code": {}, - "name": {} - } - } - } - } - } - } - } - } - }, - "DescribeSeverityLevels": { - "input": { - "type": "structure", - "members": { - "language": {} - } - }, - "output": { - "type": "structure", - "members": { - "severityLevels": { - "type": "list", - "member": { - "type": "structure", - "members": { - "code": {}, - "name": {} - } - } - } - } - } - }, - "DescribeTrustedAdvisorCheckRefreshStatuses": { - "input": { - "type": "structure", - "required": [ - "checkIds" - ], - "members": { - "checkIds": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "required": [ - "statuses" - ], - "members": { - "statuses": { - "type": "list", - "member": { - "shape": "S1x" - } - } - } - } - }, - "DescribeTrustedAdvisorCheckResult": { - "input": { - "type": "structure", - "required": [ - "checkId" - ], - "members": { - "checkId": {}, - "language": {} - } - }, - "output": { - "type": "structure", - "members": { - "result": { - "type": "structure", - "required": [ - "checkId", - "timestamp", - "status", - "resourcesSummary", - "categorySpecificSummary", - "flaggedResources" - ], - "members": { - "checkId": {}, - "timestamp": {}, - "status": {}, - "resourcesSummary": { - "shape": "S22" - }, - "categorySpecificSummary": { - "shape": "S23" - }, - "flaggedResources": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "status", - "resourceId", - "metadata" - ], - "members": { - "status": {}, - "region": {}, - "resourceId": {}, - "isSuppressed": { - "type": "boolean" - }, - "metadata": { - "shape": "S1t" - } - } - } - } - } - } - } - } - }, - "DescribeTrustedAdvisorCheckSummaries": { - "input": { - "type": "structure", - "required": [ - "checkIds" - ], - "members": { - "checkIds": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "required": [ - "summaries" - ], - "members": { - "summaries": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "checkId", - "timestamp", - "status", - "resourcesSummary", - "categorySpecificSummary" - ], - "members": { - "checkId": {}, - "timestamp": {}, - "status": {}, - "hasFlaggedResources": { - "type": "boolean" - }, - "resourcesSummary": { - "shape": "S22" - }, - "categorySpecificSummary": { - "shape": "S23" - } - } - } - } - } - } - }, - "DescribeTrustedAdvisorChecks": { - "input": { - "type": "structure", - "required": [ - "language" - ], - "members": { - "language": {} - } - }, - "output": { - "type": "structure", - "required": [ - "checks" - ], - "members": { - "checks": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "id", - "name", - "description", - "category", - "metadata" - ], - "members": { - "id": {}, - "name": {}, - "description": {}, - "category": {}, - "metadata": { - "shape": "S1t" - } - } - } - } - } - } - }, - "RefreshTrustedAdvisorCheck": { - "input": { - "type": "structure", - "required": [ - "checkId" - ], - "members": { - "checkId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "status" - ], - "members": { - "status": { - "shape": "S1x" - } - } - } - }, - "ResolveCase": { - "input": { - "type": "structure", - "members": { - "caseId": {} - } - }, - "output": { - "type": "structure", - "members": { - "initialCaseStatus": {}, - "finalCaseStatus": {} - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "fileName": {}, - "data": { - "type": "blob" - } - } - }, - "Sc": { - "type": "list", - "member": {} - }, - "S17": { - "type": "list", - "member": { - "type": "structure", - "members": { - "caseId": {}, - "body": {}, - "submittedBy": {}, - "timeCreated": {}, - "attachmentSet": { - "type": "list", - "member": { - "type": "structure", - "members": { - "attachmentId": {}, - "fileName": {} - } - } - } - } - } - }, - "S1t": { - "type": "list", - "member": {} - }, - "S1x": { - "type": "structure", - "required": [ - "checkId", - "status", - "millisUntilNextRefreshable" - ], - "members": { - "checkId": {}, - "status": {}, - "millisUntilNextRefreshable": { - "type": "long" - } - } - }, - "S22": { - "type": "structure", - "required": [ - "resourcesProcessed", - "resourcesFlagged", - "resourcesIgnored", - "resourcesSuppressed" - ], - "members": { - "resourcesProcessed": { - "type": "long" - }, - "resourcesFlagged": { - "type": "long" - }, - "resourcesIgnored": { - "type": "long" - }, - "resourcesSuppressed": { - "type": "long" - } - } - }, - "S23": { - "type": "structure", - "members": { - "costOptimizing": { - "type": "structure", - "required": [ - "estimatedMonthlySavings", - "estimatedPercentMonthlySavings" - ], - "members": { - "estimatedMonthlySavings": { - "type": "double" - }, - "estimatedPercentMonthlySavings": { - "type": "double" - } - } - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json b/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json deleted file mode 100644 index 1368630..0000000 --- a/node_modules/aws-sdk/apis/support-2013-04-15.paginators.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "pagination": { - "DescribeCases": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "cases" - }, - "DescribeCommunications": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "communications" - }, - "DescribeServices": { - "result_key": "services" - }, - "DescribeTrustedAdvisorCheckRefreshStatuses": { - "result_key": "statuses" - }, - "DescribeTrustedAdvisorCheckSummaries": { - "result_key": "summaries" - } - } -} diff --git a/node_modules/aws-sdk/apis/swf-2012-01-25.min.json b/node_modules/aws-sdk/apis/swf-2012-01-25.min.json deleted file mode 100644 index ebd4a22..0000000 --- a/node_modules/aws-sdk/apis/swf-2012-01-25.min.json +++ /dev/null @@ -1,2217 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2012-01-25", - "endpointPrefix": "swf", - "jsonVersion": "1.0", - "serviceAbbreviation": "Amazon SWF", - "serviceFullName": "Amazon Simple Workflow Service", - "signatureVersion": "v4", - "targetPrefix": "SimpleWorkflowService", - "timestampFormat": "unixTimestamp", - "protocol": "json" - }, - "operations": { - "CountClosedWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "closeTimeFilter": { - "shape": "S3" - }, - "executionFilter": { - "shape": "S5" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "closeStatusFilter": { - "shape": "Sc" - } - } - }, - "output": { - "shape": "Se" - } - }, - "CountOpenWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain", - "startTimeFilter" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "executionFilter": { - "shape": "S5" - } - } - }, - "output": { - "shape": "Se" - } - }, - "CountPendingActivityTasks": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - } - } - }, - "output": { - "shape": "Sk" - } - }, - "CountPendingDecisionTasks": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - } - } - }, - "output": { - "shape": "Sk" - } - }, - "DeprecateActivityType": { - "input": { - "type": "structure", - "required": [ - "domain", - "activityType" - ], - "members": { - "domain": {}, - "activityType": { - "shape": "Sn" - } - } - } - }, - "DeprecateDomain": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - } - }, - "DeprecateWorkflowType": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowType" - ], - "members": { - "domain": {}, - "workflowType": { - "shape": "Sr" - } - } - } - }, - "DescribeActivityType": { - "input": { - "type": "structure", - "required": [ - "domain", - "activityType" - ], - "members": { - "domain": {}, - "activityType": { - "shape": "Sn" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfo", - "configuration" - ], - "members": { - "typeInfo": { - "shape": "Su" - }, - "configuration": { - "type": "structure", - "members": { - "defaultTaskStartToCloseTimeout": {}, - "defaultTaskHeartbeatTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultTaskScheduleToStartTimeout": {}, - "defaultTaskScheduleToCloseTimeout": {} - } - } - } - } - }, - "DescribeDomain": { - "input": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "output": { - "type": "structure", - "required": [ - "domainInfo", - "configuration" - ], - "members": { - "domainInfo": { - "shape": "S12" - }, - "configuration": { - "type": "structure", - "required": [ - "workflowExecutionRetentionPeriodInDays" - ], - "members": { - "workflowExecutionRetentionPeriodInDays": {} - } - } - } - } - }, - "DescribeWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "execution" - ], - "members": { - "domain": {}, - "execution": { - "shape": "S16" - } - } - }, - "output": { - "type": "structure", - "required": [ - "executionInfo", - "executionConfiguration", - "openCounts" - ], - "members": { - "executionInfo": { - "shape": "S19" - }, - "executionConfiguration": { - "type": "structure", - "required": [ - "taskStartToCloseTimeout", - "executionStartToCloseTimeout", - "taskList", - "childPolicy" - ], - "members": { - "taskStartToCloseTimeout": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "childPolicy": {}, - "lambdaRole": {} - } - }, - "openCounts": { - "type": "structure", - "required": [ - "openActivityTasks", - "openDecisionTasks", - "openTimers", - "openChildWorkflowExecutions" - ], - "members": { - "openActivityTasks": { - "type": "integer" - }, - "openDecisionTasks": { - "type": "integer" - }, - "openTimers": { - "type": "integer" - }, - "openChildWorkflowExecutions": { - "type": "integer" - }, - "openLambdaFunctions": { - "type": "integer" - } - } - }, - "latestActivityTaskTimestamp": { - "type": "timestamp" - }, - "latestExecutionContext": {} - } - } - }, - "DescribeWorkflowType": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowType" - ], - "members": { - "domain": {}, - "workflowType": { - "shape": "Sr" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfo", - "configuration" - ], - "members": { - "typeInfo": { - "shape": "S1m" - }, - "configuration": { - "type": "structure", - "members": { - "defaultTaskStartToCloseTimeout": {}, - "defaultExecutionStartToCloseTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultChildPolicy": {}, - "defaultLambdaRole": {} - } - } - } - } - }, - "GetWorkflowExecutionHistory": { - "input": { - "type": "structure", - "required": [ - "domain", - "execution" - ], - "members": { - "domain": {}, - "execution": { - "shape": "S16" - }, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "events" - ], - "members": { - "events": { - "shape": "S1t" - }, - "nextPageToken": {} - } - } - }, - "ListActivityTypes": { - "input": { - "type": "structure", - "required": [ - "domain", - "registrationStatus" - ], - "members": { - "domain": {}, - "name": {}, - "registrationStatus": {}, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfos" - ], - "members": { - "typeInfos": { - "type": "list", - "member": { - "shape": "Su" - } - }, - "nextPageToken": {} - } - } - }, - "ListClosedWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "closeTimeFilter": { - "shape": "S3" - }, - "executionFilter": { - "shape": "S5" - }, - "closeStatusFilter": { - "shape": "Sc" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S4g" - } - }, - "ListDomains": { - "input": { - "type": "structure", - "required": [ - "registrationStatus" - ], - "members": { - "nextPageToken": {}, - "registrationStatus": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "domainInfos" - ], - "members": { - "domainInfos": { - "type": "list", - "member": { - "shape": "S12" - } - }, - "nextPageToken": {} - } - } - }, - "ListOpenWorkflowExecutions": { - "input": { - "type": "structure", - "required": [ - "domain", - "startTimeFilter" - ], - "members": { - "domain": {}, - "startTimeFilter": { - "shape": "S3" - }, - "typeFilter": { - "shape": "S7" - }, - "tagFilter": { - "shape": "Sa" - }, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - }, - "executionFilter": { - "shape": "S5" - } - } - }, - "output": { - "shape": "S4g" - } - }, - "ListWorkflowTypes": { - "input": { - "type": "structure", - "required": [ - "domain", - "registrationStatus" - ], - "members": { - "domain": {}, - "name": {}, - "registrationStatus": {}, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "typeInfos" - ], - "members": { - "typeInfos": { - "type": "list", - "member": { - "shape": "S1m" - } - }, - "nextPageToken": {} - } - } - }, - "PollForActivityTask": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - }, - "identity": {} - } - }, - "output": { - "type": "structure", - "required": [ - "taskToken", - "activityId", - "startedEventId", - "workflowExecution", - "activityType" - ], - "members": { - "taskToken": {}, - "activityId": {}, - "startedEventId": { - "type": "long" - }, - "workflowExecution": { - "shape": "S16" - }, - "activityType": { - "shape": "Sn" - }, - "input": {} - } - } - }, - "PollForDecisionTask": { - "input": { - "type": "structure", - "required": [ - "domain", - "taskList" - ], - "members": { - "domain": {}, - "taskList": { - "shape": "Sj" - }, - "identity": {}, - "nextPageToken": {}, - "maximumPageSize": { - "type": "integer" - }, - "reverseOrder": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "taskToken", - "startedEventId", - "workflowExecution", - "workflowType", - "events" - ], - "members": { - "taskToken": {}, - "startedEventId": { - "type": "long" - }, - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "events": { - "shape": "S1t" - }, - "nextPageToken": {}, - "previousStartedEventId": { - "type": "long" - } - } - } - }, - "RecordActivityTaskHeartbeat": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "details": {} - } - }, - "output": { - "type": "structure", - "required": [ - "cancelRequested" - ], - "members": { - "cancelRequested": { - "type": "boolean" - } - } - } - }, - "RegisterActivityType": { - "input": { - "type": "structure", - "required": [ - "domain", - "name", - "version" - ], - "members": { - "domain": {}, - "name": {}, - "version": {}, - "description": {}, - "defaultTaskStartToCloseTimeout": {}, - "defaultTaskHeartbeatTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultTaskScheduleToStartTimeout": {}, - "defaultTaskScheduleToCloseTimeout": {} - } - } - }, - "RegisterDomain": { - "input": { - "type": "structure", - "required": [ - "name", - "workflowExecutionRetentionPeriodInDays" - ], - "members": { - "name": {}, - "description": {}, - "workflowExecutionRetentionPeriodInDays": {} - } - } - }, - "RegisterWorkflowType": { - "input": { - "type": "structure", - "required": [ - "domain", - "name", - "version" - ], - "members": { - "domain": {}, - "name": {}, - "version": {}, - "description": {}, - "defaultTaskStartToCloseTimeout": {}, - "defaultExecutionStartToCloseTimeout": {}, - "defaultTaskList": { - "shape": "Sj" - }, - "defaultTaskPriority": {}, - "defaultChildPolicy": {}, - "defaultLambdaRole": {} - } - } - }, - "RequestCancelWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId" - ], - "members": { - "domain": {}, - "workflowId": {}, - "runId": {} - } - } - }, - "RespondActivityTaskCanceled": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "details": {} - } - } - }, - "RespondActivityTaskCompleted": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "result": {} - } - } - }, - "RespondActivityTaskFailed": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "reason": {}, - "details": {} - } - } - }, - "RespondDecisionTaskCompleted": { - "input": { - "type": "structure", - "required": [ - "taskToken" - ], - "members": { - "taskToken": {}, - "decisions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "decisionType" - ], - "members": { - "decisionType": {}, - "scheduleActivityTaskDecisionAttributes": { - "type": "structure", - "required": [ - "activityType", - "activityId" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "activityId": {}, - "control": {}, - "input": {}, - "scheduleToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "scheduleToStartTimeout": {}, - "startToCloseTimeout": {}, - "heartbeatTimeout": {} - } - }, - "requestCancelActivityTaskDecisionAttributes": { - "type": "structure", - "required": [ - "activityId" - ], - "members": { - "activityId": {} - } - }, - "completeWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "result": {} - } - }, - "failWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "reason": {}, - "details": {} - } - }, - "cancelWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "details": {} - } - }, - "continueAsNewWorkflowExecutionDecisionAttributes": { - "type": "structure", - "members": { - "input": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "tagList": { - "shape": "S1b" - }, - "workflowTypeVersion": {}, - "lambdaRole": {} - } - }, - "recordMarkerDecisionAttributes": { - "type": "structure", - "required": [ - "markerName" - ], - "members": { - "markerName": {}, - "details": {} - } - }, - "startTimerDecisionAttributes": { - "type": "structure", - "required": [ - "timerId", - "startToFireTimeout" - ], - "members": { - "timerId": {}, - "control": {}, - "startToFireTimeout": {} - } - }, - "cancelTimerDecisionAttributes": { - "type": "structure", - "required": [ - "timerId" - ], - "members": { - "timerId": {} - } - }, - "signalExternalWorkflowExecutionDecisionAttributes": { - "type": "structure", - "required": [ - "workflowId", - "signalName" - ], - "members": { - "workflowId": {}, - "runId": {}, - "signalName": {}, - "input": {}, - "control": {} - } - }, - "requestCancelExternalWorkflowExecutionDecisionAttributes": { - "type": "structure", - "required": [ - "workflowId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "control": {} - } - }, - "startChildWorkflowExecutionDecisionAttributes": { - "type": "structure", - "required": [ - "workflowType", - "workflowId" - ], - "members": { - "workflowType": { - "shape": "Sr" - }, - "workflowId": {}, - "control": {}, - "input": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "tagList": { - "shape": "S1b" - }, - "lambdaRole": {} - } - }, - "scheduleLambdaFunctionDecisionAttributes": { - "type": "structure", - "required": [ - "id", - "name" - ], - "members": { - "id": {}, - "name": {}, - "input": {}, - "startToCloseTimeout": {} - } - } - } - } - }, - "executionContext": {} - } - } - }, - "SignalWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId", - "signalName" - ], - "members": { - "domain": {}, - "workflowId": {}, - "runId": {}, - "signalName": {}, - "input": {} - } - } - }, - "StartWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId", - "workflowType" - ], - "members": { - "domain": {}, - "workflowId": {}, - "workflowType": { - "shape": "Sr" - }, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "input": {}, - "executionStartToCloseTimeout": {}, - "tagList": { - "shape": "S1b" - }, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "lambdaRole": {} - } - }, - "output": { - "type": "structure", - "members": { - "runId": {} - } - } - }, - "TerminateWorkflowExecution": { - "input": { - "type": "structure", - "required": [ - "domain", - "workflowId" - ], - "members": { - "domain": {}, - "workflowId": {}, - "runId": {}, - "reason": {}, - "details": {}, - "childPolicy": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "required": [ - "oldestDate" - ], - "members": { - "oldestDate": { - "type": "timestamp" - }, - "latestDate": { - "type": "timestamp" - } - } - }, - "S5": { - "type": "structure", - "required": [ - "workflowId" - ], - "members": { - "workflowId": {} - } - }, - "S7": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "version": {} - } - }, - "Sa": { - "type": "structure", - "required": [ - "tag" - ], - "members": { - "tag": {} - } - }, - "Sc": { - "type": "structure", - "required": [ - "status" - ], - "members": { - "status": {} - } - }, - "Se": { - "type": "structure", - "required": [ - "count" - ], - "members": { - "count": { - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - } - }, - "Sj": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {} - } - }, - "Sk": { - "type": "structure", - "required": [ - "count" - ], - "members": { - "count": { - "type": "integer" - }, - "truncated": { - "type": "boolean" - } - } - }, - "Sn": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": {}, - "version": {} - } - }, - "Sr": { - "type": "structure", - "required": [ - "name", - "version" - ], - "members": { - "name": {}, - "version": {} - } - }, - "Su": { - "type": "structure", - "required": [ - "activityType", - "status", - "creationDate" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "status": {}, - "description": {}, - "creationDate": { - "type": "timestamp" - }, - "deprecationDate": { - "type": "timestamp" - } - } - }, - "S12": { - "type": "structure", - "required": [ - "name", - "status" - ], - "members": { - "name": {}, - "status": {}, - "description": {} - } - }, - "S16": { - "type": "structure", - "required": [ - "workflowId", - "runId" - ], - "members": { - "workflowId": {}, - "runId": {} - } - }, - "S19": { - "type": "structure", - "required": [ - "execution", - "workflowType", - "startTimestamp", - "executionStatus" - ], - "members": { - "execution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "startTimestamp": { - "type": "timestamp" - }, - "closeTimestamp": { - "type": "timestamp" - }, - "executionStatus": {}, - "closeStatus": {}, - "parent": { - "shape": "S16" - }, - "tagList": { - "shape": "S1b" - }, - "cancelRequested": { - "type": "boolean" - } - } - }, - "S1b": { - "type": "list", - "member": {} - }, - "S1m": { - "type": "structure", - "required": [ - "workflowType", - "status", - "creationDate" - ], - "members": { - "workflowType": { - "shape": "Sr" - }, - "status": {}, - "description": {}, - "creationDate": { - "type": "timestamp" - }, - "deprecationDate": { - "type": "timestamp" - } - } - }, - "S1t": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "eventTimestamp", - "eventType", - "eventId" - ], - "members": { - "eventTimestamp": { - "type": "timestamp" - }, - "eventType": {}, - "eventId": { - "type": "long" - }, - "workflowExecutionStartedEventAttributes": { - "type": "structure", - "required": [ - "childPolicy", - "taskList", - "workflowType" - ], - "members": { - "input": {}, - "executionStartToCloseTimeout": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "taskList": { - "shape": "Sj" - }, - "workflowType": { - "shape": "Sr" - }, - "tagList": { - "shape": "S1b" - }, - "taskPriority": {}, - "continuedExecutionRunId": {}, - "parentWorkflowExecution": { - "shape": "S16" - }, - "parentInitiatedEventId": { - "type": "long" - }, - "lambdaRole": {} - } - }, - "workflowExecutionCompletedEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId" - ], - "members": { - "result": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "completeWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId" - ], - "members": { - "reason": {}, - "details": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "failWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionTimedOutEventAttributes": { - "type": "structure", - "required": [ - "timeoutType", - "childPolicy" - ], - "members": { - "timeoutType": {}, - "childPolicy": {} - } - }, - "workflowExecutionCanceledEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId" - ], - "members": { - "details": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "cancelWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionContinuedAsNewEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId", - "newExecutionRunId", - "taskList", - "childPolicy", - "workflowType" - ], - "members": { - "input": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "newExecutionRunId": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "taskStartToCloseTimeout": {}, - "childPolicy": {}, - "tagList": { - "shape": "S1b" - }, - "workflowType": { - "shape": "Sr" - }, - "lambdaRole": {} - } - }, - "continueAsNewWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "workflowExecutionTerminatedEventAttributes": { - "type": "structure", - "required": [ - "childPolicy" - ], - "members": { - "reason": {}, - "details": {}, - "childPolicy": {}, - "cause": {} - } - }, - "workflowExecutionCancelRequestedEventAttributes": { - "type": "structure", - "members": { - "externalWorkflowExecution": { - "shape": "S16" - }, - "externalInitiatedEventId": { - "type": "long" - }, - "cause": {} - } - }, - "decisionTaskScheduledEventAttributes": { - "type": "structure", - "required": [ - "taskList" - ], - "members": { - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "startToCloseTimeout": {} - } - }, - "decisionTaskStartedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId" - ], - "members": { - "identity": {}, - "scheduledEventId": { - "type": "long" - } - } - }, - "decisionTaskCompletedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "executionContext": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "decisionTaskTimedOutEventAttributes": { - "type": "structure", - "required": [ - "timeoutType", - "scheduledEventId", - "startedEventId" - ], - "members": { - "timeoutType": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "activityTaskScheduledEventAttributes": { - "type": "structure", - "required": [ - "activityType", - "activityId", - "taskList", - "decisionTaskCompletedEventId" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "activityId": {}, - "input": {}, - "control": {}, - "scheduleToStartTimeout": {}, - "scheduleToCloseTimeout": {}, - "startToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "heartbeatTimeout": {} - } - }, - "activityTaskStartedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId" - ], - "members": { - "identity": {}, - "scheduledEventId": { - "type": "long" - } - } - }, - "activityTaskCompletedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "result": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "activityTaskFailedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "reason": {}, - "details": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "activityTaskTimedOutEventAttributes": { - "type": "structure", - "required": [ - "timeoutType", - "scheduledEventId", - "startedEventId" - ], - "members": { - "timeoutType": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "details": {} - } - }, - "activityTaskCanceledEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "details": {}, - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "latestCancelRequestedEventId": { - "type": "long" - } - } - }, - "activityTaskCancelRequestedEventAttributes": { - "type": "structure", - "required": [ - "decisionTaskCompletedEventId", - "activityId" - ], - "members": { - "decisionTaskCompletedEventId": { - "type": "long" - }, - "activityId": {} - } - }, - "workflowExecutionSignaledEventAttributes": { - "type": "structure", - "required": [ - "signalName" - ], - "members": { - "signalName": {}, - "input": {}, - "externalWorkflowExecution": { - "shape": "S16" - }, - "externalInitiatedEventId": { - "type": "long" - } - } - }, - "markerRecordedEventAttributes": { - "type": "structure", - "required": [ - "markerName", - "decisionTaskCompletedEventId" - ], - "members": { - "markerName": {}, - "details": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "recordMarkerFailedEventAttributes": { - "type": "structure", - "required": [ - "markerName", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "markerName": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "timerStartedEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "startToFireTimeout", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "control": {}, - "startToFireTimeout": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "timerFiredEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "startedEventId" - ], - "members": { - "timerId": {}, - "startedEventId": { - "type": "long" - } - } - }, - "timerCanceledEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "startedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "startedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startChildWorkflowExecutionInitiatedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "workflowType", - "taskList", - "decisionTaskCompletedEventId", - "childPolicy" - ], - "members": { - "workflowId": {}, - "workflowType": { - "shape": "Sr" - }, - "control": {}, - "input": {}, - "executionStartToCloseTimeout": {}, - "taskList": { - "shape": "Sj" - }, - "taskPriority": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "childPolicy": {}, - "taskStartToCloseTimeout": {}, - "tagList": { - "shape": "S1b" - }, - "lambdaRole": {} - } - }, - "childWorkflowExecutionStartedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "initiatedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionCompletedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "result": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "reason": {}, - "details": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionTimedOutEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "timeoutType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "timeoutType": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionCanceledEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "details": {}, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "childWorkflowExecutionTerminatedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "workflowType", - "initiatedEventId", - "startedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "workflowType": { - "shape": "Sr" - }, - "initiatedEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - } - } - }, - "signalExternalWorkflowExecutionInitiatedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "signalName", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "signalName": {}, - "input": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "externalWorkflowExecutionSignaledEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "initiatedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "initiatedEventId": { - "type": "long" - } - } - }, - "signalExternalWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "cause", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "cause": {}, - "initiatedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "externalWorkflowExecutionCancelRequestedEventAttributes": { - "type": "structure", - "required": [ - "workflowExecution", - "initiatedEventId" - ], - "members": { - "workflowExecution": { - "shape": "S16" - }, - "initiatedEventId": { - "type": "long" - } - } - }, - "requestCancelExternalWorkflowExecutionInitiatedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "requestCancelExternalWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowId", - "cause", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowId": {}, - "runId": {}, - "cause": {}, - "initiatedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "scheduleActivityTaskFailedEventAttributes": { - "type": "structure", - "required": [ - "activityType", - "activityId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "activityType": { - "shape": "Sn" - }, - "activityId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "requestCancelActivityTaskFailedEventAttributes": { - "type": "structure", - "required": [ - "activityId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "activityId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startTimerFailedEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "cancelTimerFailedEventAttributes": { - "type": "structure", - "required": [ - "timerId", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "timerId": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startChildWorkflowExecutionFailedEventAttributes": { - "type": "structure", - "required": [ - "workflowType", - "cause", - "workflowId", - "initiatedEventId", - "decisionTaskCompletedEventId" - ], - "members": { - "workflowType": { - "shape": "Sr" - }, - "cause": {}, - "workflowId": {}, - "initiatedEventId": { - "type": "long" - }, - "decisionTaskCompletedEventId": { - "type": "long" - }, - "control": {} - } - }, - "lambdaFunctionScheduledEventAttributes": { - "type": "structure", - "required": [ - "id", - "name", - "decisionTaskCompletedEventId" - ], - "members": { - "id": {}, - "name": {}, - "input": {}, - "startToCloseTimeout": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "lambdaFunctionStartedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - } - } - }, - "lambdaFunctionCompletedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "result": {} - } - }, - "lambdaFunctionFailedEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "reason": {}, - "details": {} - } - }, - "lambdaFunctionTimedOutEventAttributes": { - "type": "structure", - "required": [ - "scheduledEventId", - "startedEventId" - ], - "members": { - "scheduledEventId": { - "type": "long" - }, - "startedEventId": { - "type": "long" - }, - "timeoutType": {} - } - }, - "scheduleLambdaFunctionFailedEventAttributes": { - "type": "structure", - "required": [ - "id", - "name", - "cause", - "decisionTaskCompletedEventId" - ], - "members": { - "id": {}, - "name": {}, - "cause": {}, - "decisionTaskCompletedEventId": { - "type": "long" - } - } - }, - "startLambdaFunctionFailedEventAttributes": { - "type": "structure", - "members": { - "scheduledEventId": { - "type": "long" - }, - "cause": {}, - "message": {} - } - } - } - } - }, - "S4g": { - "type": "structure", - "required": [ - "executionInfos" - ], - "members": { - "executionInfos": { - "type": "list", - "member": { - "shape": "S19" - } - }, - "nextPageToken": {} - } - } - }, - "examples": {} -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json b/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json deleted file mode 100644 index 892ee38..0000000 --- a/node_modules/aws-sdk/apis/swf-2012-01-25.paginators.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "pagination": { - "GetWorkflowExecutionHistory": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "events" - }, - "ListActivityTypes": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "typeInfos" - }, - "ListClosedWorkflowExecutions": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "executionInfos" - }, - "ListDomains": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "domainInfos" - }, - "ListOpenWorkflowExecutions": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "executionInfos" - }, - "ListWorkflowTypes": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "typeInfos" - }, - "PollForDecisionTask": { - "limit_key": "maximumPageSize", - "input_token": "nextPageToken", - "output_token": "nextPageToken", - "result_key": "events" - } - } -} diff --git a/node_modules/aws-sdk/apis/waf-2015-08-24.min.json b/node_modules/aws-sdk/apis/waf-2015-08-24.min.json deleted file mode 100644 index 224b7d7..0000000 --- a/node_modules/aws-sdk/apis/waf-2015-08-24.min.json +++ /dev/null @@ -1,1282 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-24", - "endpointPrefix": "waf", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "WAF", - "serviceFullName": "AWS WAF", - "signatureVersion": "v4", - "targetPrefix": "AWSWAF_20150824" - }, - "operations": { - "CreateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S5" - }, - "ChangeToken": {} - } - } - }, - "CreateIPSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sh" - }, - "ChangeToken": {} - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sp" - }, - "ChangeToken": {} - } - } - }, - "CreateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "Sw" - }, - "ChangeToken": {} - } - } - }, - "CreateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S13" - }, - "ChangeToken": {} - } - } - }, - "CreateWebACL": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "DefaultAction", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S17" - }, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1a" - }, - "ChangeToken": {} - } - } - }, - "CreateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1g" - }, - "ChangeToken": {} - } - } - }, - "DeleteByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken" - ], - "members": { - "RuleId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId" - ], - "members": { - "ByteMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S5" - } - } - } - }, - "GetChangeToken": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetChangeTokenStatus": { - "input": { - "type": "structure", - "required": [ - "ChangeToken" - ], - "members": { - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeTokenStatus": {} - } - } - }, - "GetIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId" - ], - "members": { - "IPSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sh" - } - } - } - }, - "GetRule": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sp" - } - } - } - }, - "GetSampledRequests": { - "input": { - "type": "structure", - "required": [ - "WebAclId", - "RuleId", - "TimeWindow", - "MaxItems" - ], - "members": { - "WebAclId": {}, - "RuleId": {}, - "TimeWindow": { - "shape": "S29" - }, - "MaxItems": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "SampledRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Request", - "Weight" - ], - "members": { - "Request": { - "type": "structure", - "members": { - "ClientIP": {}, - "Country": {}, - "URI": {}, - "Method": {}, - "HTTPVersion": {}, - "Headers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - } - } - } - }, - "Weight": { - "type": "long" - }, - "Timestamp": { - "type": "timestamp" - }, - "Action": {} - } - } - }, - "PopulationSize": { - "type": "long" - }, - "TimeWindow": { - "shape": "S29" - } - } - } - }, - "GetSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId" - ], - "members": { - "SizeConstraintSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "Sw" - } - } - } - }, - "GetSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId" - ], - "members": { - "SqlInjectionMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S13" - } - } - } - }, - "GetWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "WebACLId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1a" - } - } - } - }, - "GetXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId" - ], - "members": { - "XssMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1g" - } - } - } - }, - "ListByteMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "ByteMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "Name" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListIPSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "IPSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IPSetId", - "Name" - ], - "members": { - "IPSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Rules": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "RuleId", - "Name" - ], - "members": { - "RuleId": {}, - "Name": {} - } - } - } - } - } - }, - "ListSizeConstraintSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SizeConstraintSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "Name" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListSqlInjectionMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SqlInjectionMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "Name" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListWebACLs": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "WebACLs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WebACLId", - "Name" - ], - "members": { - "WebACLId": {}, - "Name": {} - } - } - } - } - } - }, - "ListXssMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "XssMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "XssMatchSetId", - "Name" - ], - "members": { - "XssMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "UpdateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ByteMatchTuple" - ], - "members": { - "Action": {}, - "ByteMatchTuple": { - "shape": "S8" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken", - "Updates" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "IPSetDescriptor" - ], - "members": { - "Action": {}, - "IPSetDescriptor": { - "shape": "Sj" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken", - "Updates" - ], - "members": { - "RuleId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "Predicate" - ], - "members": { - "Action": {}, - "Predicate": { - "shape": "Sr" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SizeConstraint" - ], - "members": { - "Action": {}, - "SizeConstraint": { - "shape": "Sy" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SqlInjectionMatchTuple" - ], - "members": { - "Action": {}, - "SqlInjectionMatchTuple": { - "shape": "S15" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ActivatedRule" - ], - "members": { - "Action": {}, - "ActivatedRule": { - "shape": "S1c" - } - } - } - }, - "DefaultAction": { - "shape": "S17" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "XssMatchTuple" - ], - "members": { - "Action": {}, - "XssMatchTuple": { - "shape": "S1i" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ByteMatchTuples" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {}, - "ByteMatchTuples": { - "type": "list", - "member": { - "shape": "S8" - } - } - } - }, - "S8": { - "type": "structure", - "required": [ - "FieldToMatch", - "TargetString", - "TextTransformation", - "PositionalConstraint" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TargetString": { - "type": "blob" - }, - "TextTransformation": {}, - "PositionalConstraint": {} - } - }, - "S9": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "Data": {} - } - }, - "Sh": { - "type": "structure", - "required": [ - "IPSetId", - "IPSetDescriptors" - ], - "members": { - "IPSetId": {}, - "Name": {}, - "IPSetDescriptors": { - "type": "list", - "member": { - "shape": "Sj" - } - } - } - }, - "Sj": { - "type": "structure", - "required": [ - "Type", - "Value" - ], - "members": { - "Type": {}, - "Value": {} - } - }, - "Sp": { - "type": "structure", - "required": [ - "RuleId", - "Predicates" - ], - "members": { - "RuleId": {}, - "Name": {}, - "MetricName": {}, - "Predicates": { - "type": "list", - "member": { - "shape": "Sr" - } - } - } - }, - "Sr": { - "type": "structure", - "required": [ - "Negated", - "Type", - "DataId" - ], - "members": { - "Negated": { - "type": "boolean" - }, - "Type": {}, - "DataId": {} - } - }, - "Sw": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "SizeConstraints" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {}, - "SizeConstraints": { - "type": "list", - "member": { - "shape": "Sy" - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation", - "ComparisonOperator", - "Size" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {}, - "ComparisonOperator": {}, - "Size": { - "type": "long" - } - } - }, - "S13": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "SqlInjectionMatchTuples" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {}, - "SqlInjectionMatchTuples": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - }, - "S15": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {} - } - }, - "S17": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {} - } - }, - "S1a": { - "type": "structure", - "required": [ - "WebACLId", - "DefaultAction", - "Rules" - ], - "members": { - "WebACLId": {}, - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S17" - }, - "Rules": { - "type": "list", - "member": { - "shape": "S1c" - } - } - } - }, - "S1c": { - "type": "structure", - "required": [ - "Priority", - "RuleId", - "Action" - ], - "members": { - "Priority": { - "type": "integer" - }, - "RuleId": {}, - "Action": { - "shape": "S17" - } - } - }, - "S1g": { - "type": "structure", - "required": [ - "XssMatchSetId", - "XssMatchTuples" - ], - "members": { - "XssMatchSetId": {}, - "Name": {}, - "XssMatchTuples": { - "type": "list", - "member": { - "shape": "S1i" - } - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {} - } - }, - "S29": { - "type": "structure", - "required": [ - "StartTime", - "EndTime" - ], - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json b/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json deleted file mode 100644 index 4086c8b..0000000 --- a/node_modules/aws-sdk/apis/workspaces-2015-04-08.min.json +++ /dev/null @@ -1,538 +0,0 @@ -{ - "version": "2.0", - "metadata": { - "apiVersion": "2015-04-08", - "endpointPrefix": "workspaces", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon WorkSpaces", - "signatureVersion": "v4", - "targetPrefix": "WorkspacesService" - }, - "operations": { - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateWorkspaces": { - "input": { - "type": "structure", - "required": [ - "Workspaces" - ], - "members": { - "Workspaces": { - "type": "list", - "member": { - "shape": "Sa" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceRequest": { - "shape": "Sa" - }, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - }, - "PendingRequests": { - "shape": "So" - } - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId" - ], - "members": { - "ResourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - } - }, - "DescribeWorkspaceBundles": { - "input": { - "type": "structure", - "members": { - "BundleIds": { - "type": "list", - "member": {} - }, - "Owner": {}, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Bundles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BundleId": {}, - "Name": {}, - "Owner": {}, - "Description": {}, - "UserStorage": { - "type": "structure", - "members": { - "Capacity": {} - } - }, - "ComputeType": { - "type": "structure", - "members": { - "Name": {} - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeWorkspaceDirectories": { - "input": { - "type": "structure", - "members": { - "DirectoryIds": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Directories": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DirectoryId": {}, - "Alias": {}, - "DirectoryName": {}, - "RegistrationCode": {}, - "SubnetIds": { - "type": "list", - "member": {} - }, - "DnsIpAddresses": { - "type": "list", - "member": {} - }, - "CustomerUserName": {}, - "IamRoleId": {}, - "DirectoryType": {}, - "WorkspaceSecurityGroupId": {}, - "State": {}, - "WorkspaceCreationProperties": { - "type": "structure", - "members": { - "EnableWorkDocs": { - "type": "boolean" - }, - "EnableInternetAccess": { - "type": "boolean" - }, - "DefaultOu": {}, - "CustomSecurityGroupId": {}, - "UserEnabledAsLocalAdministrator": { - "type": "boolean" - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeWorkspaces": { - "input": { - "type": "structure", - "members": { - "WorkspaceIds": { - "shape": "S1s" - }, - "DirectoryId": {}, - "UserName": {}, - "BundleId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Workspaces": { - "shape": "So" - }, - "NextToken": {} - } - } - }, - "DescribeWorkspacesConnectionStatus": { - "input": { - "type": "structure", - "members": { - "WorkspaceIds": { - "shape": "S1s" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WorkspacesConnectionStatus": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {}, - "ConnectionState": {}, - "ConnectionStateCheckTimestamp": { - "type": "timestamp" - }, - "LastKnownUserConnectionTimestamp": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "ModifyWorkspaceProperties": { - "input": { - "type": "structure", - "required": [ - "WorkspaceId", - "WorkspaceProperties" - ], - "members": { - "WorkspaceId": {}, - "WorkspaceProperties": { - "shape": "Sg" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RebootWorkspaces": { - "input": { - "type": "structure", - "required": [ - "RebootWorkspaceRequests" - ], - "members": { - "RebootWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WorkspaceId" - ], - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "RebuildWorkspaces": { - "input": { - "type": "structure", - "required": [ - "RebuildWorkspaceRequests" - ], - "members": { - "RebuildWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WorkspaceId" - ], - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "StartWorkspaces": { - "input": { - "type": "structure", - "required": [ - "StartWorkspaceRequests" - ], - "members": { - "StartWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "StopWorkspaces": { - "input": { - "type": "structure", - "required": [ - "StopWorkspaceRequests" - ], - "members": { - "StopWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - }, - "TerminateWorkspaces": { - "input": { - "type": "structure", - "required": [ - "TerminateWorkspaceRequests" - ], - "members": { - "TerminateWorkspaceRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WorkspaceId" - ], - "members": { - "WorkspaceId": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedRequests": { - "type": "list", - "member": { - "shape": "S28" - } - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "structure", - "required": [ - "DirectoryId", - "UserName", - "BundleId" - ], - "members": { - "DirectoryId": {}, - "UserName": {}, - "BundleId": {}, - "VolumeEncryptionKey": {}, - "UserVolumeEncryptionEnabled": { - "type": "boolean" - }, - "RootVolumeEncryptionEnabled": { - "type": "boolean" - }, - "WorkspaceProperties": { - "shape": "Sg" - }, - "Tags": { - "shape": "S3" - } - } - }, - "Sg": { - "type": "structure", - "members": { - "RunningMode": {}, - "RunningModeAutoStopTimeoutInMinutes": { - "type": "integer" - } - } - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "members": { - "WorkspaceId": {}, - "DirectoryId": {}, - "UserName": {}, - "IpAddress": {}, - "State": {}, - "BundleId": {}, - "SubnetId": {}, - "ErrorMessage": {}, - "ErrorCode": {}, - "ComputerName": {}, - "VolumeEncryptionKey": {}, - "UserVolumeEncryptionEnabled": { - "type": "boolean" - }, - "RootVolumeEncryptionEnabled": { - "type": "boolean" - }, - "WorkspaceProperties": { - "shape": "Sg" - } - } - } - }, - "S1s": { - "type": "list", - "member": {} - }, - "S28": { - "type": "structure", - "members": { - "WorkspaceId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } -} \ No newline at end of file diff --git a/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json b/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json deleted file mode 100644 index efa8cba..0000000 --- a/node_modules/aws-sdk/apis/workspaces-2015-04-08.paginators.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "pagination": { - "DescribeWorkspaceBundles": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Bundles" - }, - "DescribeWorkspaceDirectories": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Directories" - }, - "DescribeWorkspaces": { - "limit_key": "Limit", - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Workspaces" - } - } -} diff --git a/node_modules/aws-sdk/bower.json b/node_modules/aws-sdk/bower.json deleted file mode 100644 index bda489f..0000000 --- a/node_modules/aws-sdk/bower.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "aws-sdk", - "ignore": [ - "apis", "doc-src", "dist-tools", "eslint-rules", "features", "lib", - "scripts", "tasks", "test", "Gemfile*", "configuration*", - "Rakefile", "package.json", "testem.json", ".*", "index.js" - ], - "main": "dist/aws-sdk.js" -} diff --git a/node_modules/aws-sdk/browser.js b/node_modules/aws-sdk/browser.js deleted file mode 100644 index 7867151..0000000 --- a/node_modules/aws-sdk/browser.js +++ /dev/null @@ -1,6 +0,0 @@ -require('./lib/browser_loader'); - -var AWS = require('./lib/core'); -if (typeof window !== 'undefined') window.AWS = AWS; -if (typeof module !== 'undefined') module.exports = AWS; -if (typeof self !== 'undefined') self.AWS = AWS; \ No newline at end of file diff --git a/node_modules/aws-sdk/clients/acm.js b/node_modules/aws-sdk/clients/acm.js deleted file mode 100644 index 9edd68e..0000000 --- a/node_modules/aws-sdk/clients/acm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['acm'] = {}; -AWS.ACM = Service.defineService('acm', ['2015-12-08']); -Object.defineProperty(apiLoader.services['acm'], '2015-12-08', { - get: function get() { - var model = require('../apis/acm-2015-12-08.min.json'); - model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ACM; diff --git a/node_modules/aws-sdk/clients/all.js b/node_modules/aws-sdk/clients/all.js deleted file mode 100644 index bf51a20..0000000 --- a/node_modules/aws-sdk/clients/all.js +++ /dev/null @@ -1,79 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); - -module.exports = { - ACM: require('./acm'), - APIGateway: require('./apigateway'), - ApplicationAutoScaling: require('./applicationautoscaling'), - AutoScaling: require('./autoscaling'), - CloudFormation: require('./cloudformation'), - CloudFront: require('./cloudfront'), - CloudHSM: require('./cloudhsm'), - CloudSearch: require('./cloudsearch'), - CloudSearchDomain: require('./cloudsearchdomain'), - CloudTrail: require('./cloudtrail'), - CloudWatch: require('./cloudwatch'), - CloudWatchEvents: require('./cloudwatchevents'), - CloudWatchLogs: require('./cloudwatchlogs'), - CodeCommit: require('./codecommit'), - CodeDeploy: require('./codedeploy'), - CodePipeline: require('./codepipeline'), - CognitoIdentity: require('./cognitoidentity'), - CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), - CognitoSync: require('./cognitosync'), - ConfigService: require('./configservice'), - DataPipeline: require('./datapipeline'), - DeviceFarm: require('./devicefarm'), - DirectConnect: require('./directconnect'), - DirectoryService: require('./directoryservice'), - Discovery: require('./discovery'), - DMS: require('./dms'), - DynamoDB: require('./dynamodb'), - DynamoDBStreams: require('./dynamodbstreams'), - EC2: require('./ec2'), - ECR: require('./ecr'), - ECS: require('./ecs'), - EFS: require('./efs'), - ElastiCache: require('./elasticache'), - ElasticBeanstalk: require('./elasticbeanstalk'), - ELB: require('./elb'), - ELBv2: require('./elbv2'), - EMR: require('./emr'), - ES: require('./es'), - ElasticTranscoder: require('./elastictranscoder'), - Firehose: require('./firehose'), - GameLift: require('./gamelift'), - Glacier: require('./glacier'), - IAM: require('./iam'), - ImportExport: require('./importexport'), - Inspector: require('./inspector'), - Iot: require('./iot'), - IotData: require('./iotdata'), - Kinesis: require('./kinesis'), - KinesisAnalytics: require('./kinesisanalytics'), - KMS: require('./kms'), - Lambda: require('./lambda'), - MachineLearning: require('./machinelearning'), - MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), - MarketplaceMetering: require('./marketplacemetering'), - MobileAnalytics: require('./mobileanalytics'), - OpsWorks: require('./opsworks'), - RDS: require('./rds'), - Redshift: require('./redshift'), - Route53: require('./route53'), - Route53Domains: require('./route53domains'), - S3: require('./s3'), - ServiceCatalog: require('./servicecatalog'), - SES: require('./ses'), - SimpleDB: require('./simpledb'), - Snowball: require('./snowball'), - SNS: require('./sns'), - SQS: require('./sqs'), - SSM: require('./ssm'), - StorageGateway: require('./storagegateway'), - STS: require('./sts'), - Support: require('./support'), - SWF: require('./swf'), - WAF: require('./waf'), - WorkSpaces: require('./workspaces') -}; \ No newline at end of file diff --git a/node_modules/aws-sdk/clients/apigateway.js b/node_modules/aws-sdk/clients/apigateway.js deleted file mode 100644 index bd01d66..0000000 --- a/node_modules/aws-sdk/clients/apigateway.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['apigateway'] = {}; -AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); -require('../lib/services/apigateway'); -Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', { - get: function get() { - var model = require('../apis/apigateway-2015-07-09.min.json'); - model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.APIGateway; diff --git a/node_modules/aws-sdk/clients/applicationautoscaling.js b/node_modules/aws-sdk/clients/applicationautoscaling.js deleted file mode 100644 index d1410ed..0000000 --- a/node_modules/aws-sdk/clients/applicationautoscaling.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['applicationautoscaling'] = {}; -AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); -Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', { - get: function get() { - var model = require('../apis/application-autoscaling-2016-02-06.min.json'); - model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ApplicationAutoScaling; diff --git a/node_modules/aws-sdk/clients/autoscaling.js b/node_modules/aws-sdk/clients/autoscaling.js deleted file mode 100644 index c28afcc..0000000 --- a/node_modules/aws-sdk/clients/autoscaling.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['autoscaling'] = {}; -AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); -Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', { - get: function get() { - var model = require('../apis/autoscaling-2011-01-01.min.json'); - model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.AutoScaling; diff --git a/node_modules/aws-sdk/clients/browser_default.js b/node_modules/aws-sdk/clients/browser_default.js deleted file mode 100644 index b7e6363..0000000 --- a/node_modules/aws-sdk/clients/browser_default.js +++ /dev/null @@ -1,61 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); - -module.exports = { - ACM: require('./acm'), - APIGateway: require('./apigateway'), - ApplicationAutoScaling: require('./applicationautoscaling'), - AutoScaling: require('./autoscaling'), - CloudFormation: require('./cloudformation'), - CloudFront: require('./cloudfront'), - CloudHSM: require('./cloudhsm'), - CloudTrail: require('./cloudtrail'), - CloudWatch: require('./cloudwatch'), - CloudWatchEvents: require('./cloudwatchevents'), - CloudWatchLogs: require('./cloudwatchlogs'), - CodeCommit: require('./codecommit'), - CodeDeploy: require('./codedeploy'), - CodePipeline: require('./codepipeline'), - CognitoIdentity: require('./cognitoidentity'), - CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), - CognitoSync: require('./cognitosync'), - ConfigService: require('./configservice'), - DeviceFarm: require('./devicefarm'), - DirectConnect: require('./directconnect'), - DynamoDB: require('./dynamodb'), - DynamoDBStreams: require('./dynamodbstreams'), - EC2: require('./ec2'), - ECR: require('./ecr'), - ECS: require('./ecs'), - ElastiCache: require('./elasticache'), - ElasticBeanstalk: require('./elasticbeanstalk'), - ELB: require('./elb'), - ELBv2: require('./elbv2'), - EMR: require('./emr'), - ElasticTranscoder: require('./elastictranscoder'), - Firehose: require('./firehose'), - GameLift: require('./gamelift'), - Inspector: require('./inspector'), - Iot: require('./iot'), - IotData: require('./iotdata'), - Kinesis: require('./kinesis'), - KMS: require('./kms'), - Lambda: require('./lambda'), - MachineLearning: require('./machinelearning'), - MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), - MobileAnalytics: require('./mobileanalytics'), - OpsWorks: require('./opsworks'), - RDS: require('./rds'), - Redshift: require('./redshift'), - Route53: require('./route53'), - Route53Domains: require('./route53domains'), - S3: require('./s3'), - ServiceCatalog: require('./servicecatalog'), - SES: require('./ses'), - SNS: require('./sns'), - SQS: require('./sqs'), - SSM: require('./ssm'), - StorageGateway: require('./storagegateway'), - STS: require('./sts'), - WAF: require('./waf') -}; \ No newline at end of file diff --git a/node_modules/aws-sdk/clients/cloudformation.js b/node_modules/aws-sdk/clients/cloudformation.js deleted file mode 100644 index 25167d7..0000000 --- a/node_modules/aws-sdk/clients/cloudformation.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudformation'] = {}; -AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); -Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', { - get: function get() { - var model = require('../apis/cloudformation-2010-05-15.min.json'); - model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; - model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudFormation; diff --git a/node_modules/aws-sdk/clients/cloudfront.js b/node_modules/aws-sdk/clients/cloudfront.js deleted file mode 100644 index d6efc89..0000000 --- a/node_modules/aws-sdk/clients/cloudfront.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudfront'] = {}; -AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07']); -require('../lib/services/cloudfront'); -Object.defineProperty(apiLoader.services['cloudfront'], '2016-09-07', { - get: function get() { - var model = require('../apis/cloudfront-2016-09-07.min.json'); - model.paginators = require('../apis/cloudfront-2016-09-07.paginators.json').pagination; - model.waiters = require('../apis/cloudfront-2016-09-07.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudFront; diff --git a/node_modules/aws-sdk/clients/cloudhsm.js b/node_modules/aws-sdk/clients/cloudhsm.js deleted file mode 100644 index fa4ff36..0000000 --- a/node_modules/aws-sdk/clients/cloudhsm.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudhsm'] = {}; -AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); -Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', { - get: function get() { - var model = require('../apis/cloudhsm-2014-05-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudHSM; diff --git a/node_modules/aws-sdk/clients/cloudsearch.js b/node_modules/aws-sdk/clients/cloudsearch.js deleted file mode 100644 index 3f1578a..0000000 --- a/node_modules/aws-sdk/clients/cloudsearch.js +++ /dev/null @@ -1,27 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudsearch'] = {}; -AWS.CloudSearch = Service.defineService('cloudsearch', ['2011-02-01', '2013-01-01']); -Object.defineProperty(apiLoader.services['cloudsearch'], '2011-02-01', { - get: function get() { - var model = require('../apis/cloudsearch-2011-02-01.min.json'); - model.paginators = require('../apis/cloudsearch-2011-02-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['cloudsearch'], '2013-01-01', { - get: function get() { - var model = require('../apis/cloudsearch-2013-01-01.min.json'); - model.paginators = require('../apis/cloudsearch-2013-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudSearch; diff --git a/node_modules/aws-sdk/clients/cloudsearchdomain.js b/node_modules/aws-sdk/clients/cloudsearchdomain.js deleted file mode 100644 index 616df6f..0000000 --- a/node_modules/aws-sdk/clients/cloudsearchdomain.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudsearchdomain'] = {}; -AWS.CloudSearchDomain = Service.defineService('cloudsearchdomain', ['2013-01-01']); -require('../lib/services/cloudsearchdomain'); -Object.defineProperty(apiLoader.services['cloudsearchdomain'], '2013-01-01', { - get: function get() { - var model = require('../apis/cloudsearchdomain-2013-01-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudSearchDomain; diff --git a/node_modules/aws-sdk/clients/cloudtrail.js b/node_modules/aws-sdk/clients/cloudtrail.js deleted file mode 100644 index 8e52986..0000000 --- a/node_modules/aws-sdk/clients/cloudtrail.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudtrail'] = {}; -AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); -Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', { - get: function get() { - var model = require('../apis/cloudtrail-2013-11-01.min.json'); - model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudTrail; diff --git a/node_modules/aws-sdk/clients/cloudwatch.js b/node_modules/aws-sdk/clients/cloudwatch.js deleted file mode 100644 index df624aa..0000000 --- a/node_modules/aws-sdk/clients/cloudwatch.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudwatch'] = {}; -AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); -Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', { - get: function get() { - var model = require('../apis/monitoring-2010-08-01.min.json'); - model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; - model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatch; diff --git a/node_modules/aws-sdk/clients/cloudwatchevents.js b/node_modules/aws-sdk/clients/cloudwatchevents.js deleted file mode 100644 index a9e4419..0000000 --- a/node_modules/aws-sdk/clients/cloudwatchevents.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudwatchevents'] = {}; -AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']); -Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', { - get: function get() { - var model = require('../apis/events-2015-10-07.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatchEvents; diff --git a/node_modules/aws-sdk/clients/cloudwatchlogs.js b/node_modules/aws-sdk/clients/cloudwatchlogs.js deleted file mode 100644 index c02a7f2..0000000 --- a/node_modules/aws-sdk/clients/cloudwatchlogs.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudwatchlogs'] = {}; -AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); -Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', { - get: function get() { - var model = require('../apis/logs-2014-03-28.min.json'); - model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatchLogs; diff --git a/node_modules/aws-sdk/clients/codecommit.js b/node_modules/aws-sdk/clients/codecommit.js deleted file mode 100644 index a2e69b3..0000000 --- a/node_modules/aws-sdk/clients/codecommit.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['codecommit'] = {}; -AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); -Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', { - get: function get() { - var model = require('../apis/codecommit-2015-04-13.min.json'); - model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeCommit; diff --git a/node_modules/aws-sdk/clients/codedeploy.js b/node_modules/aws-sdk/clients/codedeploy.js deleted file mode 100644 index 6adae60..0000000 --- a/node_modules/aws-sdk/clients/codedeploy.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['codedeploy'] = {}; -AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); -Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', { - get: function get() { - var model = require('../apis/codedeploy-2014-10-06.min.json'); - model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; - model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeDeploy; diff --git a/node_modules/aws-sdk/clients/codepipeline.js b/node_modules/aws-sdk/clients/codepipeline.js deleted file mode 100644 index ca0d5d6..0000000 --- a/node_modules/aws-sdk/clients/codepipeline.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['codepipeline'] = {}; -AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); -Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', { - get: function get() { - var model = require('../apis/codepipeline-2015-07-09.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodePipeline; diff --git a/node_modules/aws-sdk/clients/cognitoidentity.js b/node_modules/aws-sdk/clients/cognitoidentity.js deleted file mode 100644 index 9333abe..0000000 --- a/node_modules/aws-sdk/clients/cognitoidentity.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cognitoidentity'] = {}; -AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); -require('../lib/services/cognitoidentity'); -Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', { - get: function get() { - var model = require('../apis/cognito-identity-2014-06-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoIdentity; diff --git a/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js b/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js deleted file mode 100644 index d5c0d87..0000000 --- a/node_modules/aws-sdk/clients/cognitoidentityserviceprovider.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cognitoidentityserviceprovider'] = {}; -AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); -Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', { - get: function get() { - var model = require('../apis/cognito-idp-2016-04-18.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoIdentityServiceProvider; diff --git a/node_modules/aws-sdk/clients/cognitosync.js b/node_modules/aws-sdk/clients/cognitosync.js deleted file mode 100644 index 8e8e24d..0000000 --- a/node_modules/aws-sdk/clients/cognitosync.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cognitosync'] = {}; -AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); -Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', { - get: function get() { - var model = require('../apis/cognito-sync-2014-06-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoSync; diff --git a/node_modules/aws-sdk/clients/configservice.js b/node_modules/aws-sdk/clients/configservice.js deleted file mode 100644 index 049fec4..0000000 --- a/node_modules/aws-sdk/clients/configservice.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['configservice'] = {}; -AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); -Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', { - get: function get() { - var model = require('../apis/config-2014-11-12.min.json'); - model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ConfigService; diff --git a/node_modules/aws-sdk/clients/datapipeline.js b/node_modules/aws-sdk/clients/datapipeline.js deleted file mode 100644 index aa0a375..0000000 --- a/node_modules/aws-sdk/clients/datapipeline.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['datapipeline'] = {}; -AWS.DataPipeline = Service.defineService('datapipeline', ['2012-10-29']); -Object.defineProperty(apiLoader.services['datapipeline'], '2012-10-29', { - get: function get() { - var model = require('../apis/datapipeline-2012-10-29.min.json'); - model.paginators = require('../apis/datapipeline-2012-10-29.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DataPipeline; diff --git a/node_modules/aws-sdk/clients/devicefarm.js b/node_modules/aws-sdk/clients/devicefarm.js deleted file mode 100644 index 4b4bc1a..0000000 --- a/node_modules/aws-sdk/clients/devicefarm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['devicefarm'] = {}; -AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); -Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', { - get: function get() { - var model = require('../apis/devicefarm-2015-06-23.min.json'); - model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DeviceFarm; diff --git a/node_modules/aws-sdk/clients/directconnect.js b/node_modules/aws-sdk/clients/directconnect.js deleted file mode 100644 index f8e013f..0000000 --- a/node_modules/aws-sdk/clients/directconnect.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['directconnect'] = {}; -AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); -Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', { - get: function get() { - var model = require('../apis/directconnect-2012-10-25.min.json'); - model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DirectConnect; diff --git a/node_modules/aws-sdk/clients/directoryservice.js b/node_modules/aws-sdk/clients/directoryservice.js deleted file mode 100644 index c1cb16c..0000000 --- a/node_modules/aws-sdk/clients/directoryservice.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['directoryservice'] = {}; -AWS.DirectoryService = Service.defineService('directoryservice', ['2015-04-16']); -Object.defineProperty(apiLoader.services['directoryservice'], '2015-04-16', { - get: function get() { - var model = require('../apis/ds-2015-04-16.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DirectoryService; diff --git a/node_modules/aws-sdk/clients/discovery.js b/node_modules/aws-sdk/clients/discovery.js deleted file mode 100644 index c1e0a2d..0000000 --- a/node_modules/aws-sdk/clients/discovery.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['discovery'] = {}; -AWS.Discovery = Service.defineService('discovery', ['2015-11-01']); -Object.defineProperty(apiLoader.services['discovery'], '2015-11-01', { - get: function get() { - var model = require('../apis/discovery-2015-11-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Discovery; diff --git a/node_modules/aws-sdk/clients/dms.js b/node_modules/aws-sdk/clients/dms.js deleted file mode 100644 index 68afc4b..0000000 --- a/node_modules/aws-sdk/clients/dms.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['dms'] = {}; -AWS.DMS = Service.defineService('dms', ['2016-01-01']); -Object.defineProperty(apiLoader.services['dms'], '2016-01-01', { - get: function get() { - var model = require('../apis/dms-2016-01-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DMS; diff --git a/node_modules/aws-sdk/clients/dynamodb.js b/node_modules/aws-sdk/clients/dynamodb.js deleted file mode 100644 index 26c6fc5..0000000 --- a/node_modules/aws-sdk/clients/dynamodb.js +++ /dev/null @@ -1,30 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['dynamodb'] = {}; -AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); -require('../lib/services/dynamodb'); -Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', { - get: function get() { - var model = require('../apis/dynamodb-2011-12-05.min.json'); - model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; - model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', { - get: function get() { - var model = require('../apis/dynamodb-2012-08-10.min.json'); - model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; - model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DynamoDB; diff --git a/node_modules/aws-sdk/clients/dynamodbstreams.js b/node_modules/aws-sdk/clients/dynamodbstreams.js deleted file mode 100644 index a3ea363..0000000 --- a/node_modules/aws-sdk/clients/dynamodbstreams.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['dynamodbstreams'] = {}; -AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); -Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', { - get: function get() { - var model = require('../apis/streams.dynamodb-2012-08-10.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DynamoDBStreams; diff --git a/node_modules/aws-sdk/clients/ec2.js b/node_modules/aws-sdk/clients/ec2.js deleted file mode 100644 index b40d89f..0000000 --- a/node_modules/aws-sdk/clients/ec2.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ec2'] = {}; -AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15']); -require('../lib/services/ec2'); -Object.defineProperty(apiLoader.services['ec2'], '2016-09-15', { - get: function get() { - var model = require('../apis/ec2-2016-09-15.min.json'); - model.paginators = require('../apis/ec2-2016-09-15.paginators.json').pagination; - model.waiters = require('../apis/ec2-2016-09-15.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EC2; diff --git a/node_modules/aws-sdk/clients/ecr.js b/node_modules/aws-sdk/clients/ecr.js deleted file mode 100644 index 6d1a307..0000000 --- a/node_modules/aws-sdk/clients/ecr.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ecr'] = {}; -AWS.ECR = Service.defineService('ecr', ['2015-09-21']); -Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', { - get: function get() { - var model = require('../apis/ecr-2015-09-21.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ECR; diff --git a/node_modules/aws-sdk/clients/ecs.js b/node_modules/aws-sdk/clients/ecs.js deleted file mode 100644 index da1be08..0000000 --- a/node_modules/aws-sdk/clients/ecs.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ecs'] = {}; -AWS.ECS = Service.defineService('ecs', ['2014-11-13']); -Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', { - get: function get() { - var model = require('../apis/ecs-2014-11-13.min.json'); - model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; - model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ECS; diff --git a/node_modules/aws-sdk/clients/efs.js b/node_modules/aws-sdk/clients/efs.js deleted file mode 100644 index b094ac6..0000000 --- a/node_modules/aws-sdk/clients/efs.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['efs'] = {}; -AWS.EFS = Service.defineService('efs', ['2015-02-01']); -Object.defineProperty(apiLoader.services['efs'], '2015-02-01', { - get: function get() { - var model = require('../apis/elasticfilesystem-2015-02-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EFS; diff --git a/node_modules/aws-sdk/clients/elasticache.js b/node_modules/aws-sdk/clients/elasticache.js deleted file mode 100644 index 4420db7..0000000 --- a/node_modules/aws-sdk/clients/elasticache.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elasticache'] = {}; -AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']); -Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', { - get: function get() { - var model = require('../apis/elasticache-2015-02-02.min.json'); - model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; - model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElastiCache; diff --git a/node_modules/aws-sdk/clients/elasticbeanstalk.js b/node_modules/aws-sdk/clients/elasticbeanstalk.js deleted file mode 100644 index ea1938d..0000000 --- a/node_modules/aws-sdk/clients/elasticbeanstalk.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elasticbeanstalk'] = {}; -AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); -Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', { - get: function get() { - var model = require('../apis/elasticbeanstalk-2010-12-01.min.json'); - model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElasticBeanstalk; diff --git a/node_modules/aws-sdk/clients/elastictranscoder.js b/node_modules/aws-sdk/clients/elastictranscoder.js deleted file mode 100644 index c67fc75..0000000 --- a/node_modules/aws-sdk/clients/elastictranscoder.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elastictranscoder'] = {}; -AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); -Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', { - get: function get() { - var model = require('../apis/elastictranscoder-2012-09-25.min.json'); - model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; - model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElasticTranscoder; diff --git a/node_modules/aws-sdk/clients/elb.js b/node_modules/aws-sdk/clients/elb.js deleted file mode 100644 index 059ec9f..0000000 --- a/node_modules/aws-sdk/clients/elb.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elb'] = {}; -AWS.ELB = Service.defineService('elb', ['2012-06-01']); -Object.defineProperty(apiLoader.services['elb'], '2012-06-01', { - get: function get() { - var model = require('../apis/elasticloadbalancing-2012-06-01.min.json'); - model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; - model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ELB; diff --git a/node_modules/aws-sdk/clients/elbv2.js b/node_modules/aws-sdk/clients/elbv2.js deleted file mode 100644 index 2519598..0000000 --- a/node_modules/aws-sdk/clients/elbv2.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elbv2'] = {}; -AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); -Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', { - get: function get() { - var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); - model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ELBv2; diff --git a/node_modules/aws-sdk/clients/emr.js b/node_modules/aws-sdk/clients/emr.js deleted file mode 100644 index 82d69f1..0000000 --- a/node_modules/aws-sdk/clients/emr.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['emr'] = {}; -AWS.EMR = Service.defineService('emr', ['2009-03-31']); -Object.defineProperty(apiLoader.services['emr'], '2009-03-31', { - get: function get() { - var model = require('../apis/elasticmapreduce-2009-03-31.min.json'); - model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; - model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EMR; diff --git a/node_modules/aws-sdk/clients/es.js b/node_modules/aws-sdk/clients/es.js deleted file mode 100644 index 1adebda..0000000 --- a/node_modules/aws-sdk/clients/es.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['es'] = {}; -AWS.ES = Service.defineService('es', ['2015-01-01']); -Object.defineProperty(apiLoader.services['es'], '2015-01-01', { - get: function get() { - var model = require('../apis/es-2015-01-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ES; diff --git a/node_modules/aws-sdk/clients/firehose.js b/node_modules/aws-sdk/clients/firehose.js deleted file mode 100644 index 2327a61..0000000 --- a/node_modules/aws-sdk/clients/firehose.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['firehose'] = {}; -AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); -Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', { - get: function get() { - var model = require('../apis/firehose-2015-08-04.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Firehose; diff --git a/node_modules/aws-sdk/clients/gamelift.js b/node_modules/aws-sdk/clients/gamelift.js deleted file mode 100644 index 15e8cf9..0000000 --- a/node_modules/aws-sdk/clients/gamelift.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['gamelift'] = {}; -AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); -Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', { - get: function get() { - var model = require('../apis/gamelift-2015-10-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.GameLift; diff --git a/node_modules/aws-sdk/clients/glacier.js b/node_modules/aws-sdk/clients/glacier.js deleted file mode 100644 index 6255b69..0000000 --- a/node_modules/aws-sdk/clients/glacier.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['glacier'] = {}; -AWS.Glacier = Service.defineService('glacier', ['2012-06-01']); -require('../lib/services/glacier'); -Object.defineProperty(apiLoader.services['glacier'], '2012-06-01', { - get: function get() { - var model = require('../apis/glacier-2012-06-01.min.json'); - model.paginators = require('../apis/glacier-2012-06-01.paginators.json').pagination; - model.waiters = require('../apis/glacier-2012-06-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Glacier; diff --git a/node_modules/aws-sdk/clients/iam.js b/node_modules/aws-sdk/clients/iam.js deleted file mode 100644 index d5614ca..0000000 --- a/node_modules/aws-sdk/clients/iam.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['iam'] = {}; -AWS.IAM = Service.defineService('iam', ['2010-05-08']); -Object.defineProperty(apiLoader.services['iam'], '2010-05-08', { - get: function get() { - var model = require('../apis/iam-2010-05-08.min.json'); - model.paginators = require('../apis/iam-2010-05-08.paginators.json').pagination; - model.waiters = require('../apis/iam-2010-05-08.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.IAM; diff --git a/node_modules/aws-sdk/clients/importexport.js b/node_modules/aws-sdk/clients/importexport.js deleted file mode 100644 index 0a77d55..0000000 --- a/node_modules/aws-sdk/clients/importexport.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['importexport'] = {}; -AWS.ImportExport = Service.defineService('importexport', ['2010-06-01']); -Object.defineProperty(apiLoader.services['importexport'], '2010-06-01', { - get: function get() { - var model = require('../apis/importexport-2010-06-01.min.json'); - model.paginators = require('../apis/importexport-2010-06-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ImportExport; diff --git a/node_modules/aws-sdk/clients/inspector.js b/node_modules/aws-sdk/clients/inspector.js deleted file mode 100644 index 365ff90..0000000 --- a/node_modules/aws-sdk/clients/inspector.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['inspector'] = {}; -AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']); -Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', { - get: function get() { - var model = require('../apis/inspector-2016-02-16.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Inspector; diff --git a/node_modules/aws-sdk/clients/iot.js b/node_modules/aws-sdk/clients/iot.js deleted file mode 100644 index 1d9a12b..0000000 --- a/node_modules/aws-sdk/clients/iot.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['iot'] = {}; -AWS.Iot = Service.defineService('iot', ['2015-05-28']); -Object.defineProperty(apiLoader.services['iot'], '2015-05-28', { - get: function get() { - var model = require('../apis/iot-2015-05-28.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Iot; diff --git a/node_modules/aws-sdk/clients/iotdata.js b/node_modules/aws-sdk/clients/iotdata.js deleted file mode 100644 index fca5f56..0000000 --- a/node_modules/aws-sdk/clients/iotdata.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['iotdata'] = {}; -AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); -require('../lib/services/iotdata'); -Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', { - get: function get() { - var model = require('../apis/iot-data-2015-05-28.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.IotData; diff --git a/node_modules/aws-sdk/clients/kinesis.js b/node_modules/aws-sdk/clients/kinesis.js deleted file mode 100644 index 8cb6bc6..0000000 --- a/node_modules/aws-sdk/clients/kinesis.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['kinesis'] = {}; -AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); -Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', { - get: function get() { - var model = require('../apis/kinesis-2013-12-02.min.json'); - model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; - model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Kinesis; diff --git a/node_modules/aws-sdk/clients/kinesisanalytics.js b/node_modules/aws-sdk/clients/kinesisanalytics.js deleted file mode 100644 index fe2fbe3..0000000 --- a/node_modules/aws-sdk/clients/kinesisanalytics.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['kinesisanalytics'] = {}; -AWS.KinesisAnalytics = Service.defineService('kinesisanalytics', ['2015-08-14']); -Object.defineProperty(apiLoader.services['kinesisanalytics'], '2015-08-14', { - get: function get() { - var model = require('../apis/kinesisanalytics-2015-08-14.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.KinesisAnalytics; diff --git a/node_modules/aws-sdk/clients/kms.js b/node_modules/aws-sdk/clients/kms.js deleted file mode 100644 index d2c192b..0000000 --- a/node_modules/aws-sdk/clients/kms.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['kms'] = {}; -AWS.KMS = Service.defineService('kms', ['2014-11-01']); -Object.defineProperty(apiLoader.services['kms'], '2014-11-01', { - get: function get() { - var model = require('../apis/kms-2014-11-01.min.json'); - model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.KMS; diff --git a/node_modules/aws-sdk/clients/lambda.js b/node_modules/aws-sdk/clients/lambda.js deleted file mode 100644 index ba88cc5..0000000 --- a/node_modules/aws-sdk/clients/lambda.js +++ /dev/null @@ -1,27 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['lambda'] = {}; -AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); -Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', { - get: function get() { - var model = require('../apis/lambda-2014-11-11.min.json'); - model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', { - get: function get() { - var model = require('../apis/lambda-2015-03-31.min.json'); - model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Lambda; diff --git a/node_modules/aws-sdk/clients/machinelearning.js b/node_modules/aws-sdk/clients/machinelearning.js deleted file mode 100644 index 01a4924..0000000 --- a/node_modules/aws-sdk/clients/machinelearning.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['machinelearning'] = {}; -AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); -require('../lib/services/machinelearning'); -Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', { - get: function get() { - var model = require('../apis/machinelearning-2014-12-12.min.json'); - model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; - model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MachineLearning; diff --git a/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js b/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js deleted file mode 100644 index 591c8ff..0000000 --- a/node_modules/aws-sdk/clients/marketplacecommerceanalytics.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['marketplacecommerceanalytics'] = {}; -AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); -Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', { - get: function get() { - var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MarketplaceCommerceAnalytics; diff --git a/node_modules/aws-sdk/clients/marketplacemetering.js b/node_modules/aws-sdk/clients/marketplacemetering.js deleted file mode 100644 index b3630ab..0000000 --- a/node_modules/aws-sdk/clients/marketplacemetering.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['marketplacemetering'] = {}; -AWS.MarketplaceMetering = Service.defineService('marketplacemetering', ['2016-01-14']); -Object.defineProperty(apiLoader.services['marketplacemetering'], '2016-01-14', { - get: function get() { - var model = require('../apis/meteringmarketplace-2016-01-14.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MarketplaceMetering; diff --git a/node_modules/aws-sdk/clients/mobileanalytics.js b/node_modules/aws-sdk/clients/mobileanalytics.js deleted file mode 100644 index d1d066c..0000000 --- a/node_modules/aws-sdk/clients/mobileanalytics.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['mobileanalytics'] = {}; -AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); -Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', { - get: function get() { - var model = require('../apis/mobileanalytics-2014-06-05.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MobileAnalytics; diff --git a/node_modules/aws-sdk/clients/opsworks.js b/node_modules/aws-sdk/clients/opsworks.js deleted file mode 100644 index d3e235a..0000000 --- a/node_modules/aws-sdk/clients/opsworks.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['opsworks'] = {}; -AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); -Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', { - get: function get() { - var model = require('../apis/opsworks-2013-02-18.min.json'); - model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; - model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.OpsWorks; diff --git a/node_modules/aws-sdk/clients/rds.js b/node_modules/aws-sdk/clients/rds.js deleted file mode 100644 index 134f089..0000000 --- a/node_modules/aws-sdk/clients/rds.js +++ /dev/null @@ -1,47 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['rds'] = {}; -AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01*', '2014-10-31']); -Object.defineProperty(apiLoader.services['rds'], '2013-01-10', { - get: function get() { - var model = require('../apis/rds-2013-01-10.min.json'); - model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2013-02-12', { - get: function get() { - var model = require('../apis/rds-2013-02-12.min.json'); - model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2013-09-09', { - get: function get() { - var model = require('../apis/rds-2013-09-09.min.json'); - model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; - model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2014-10-31', { - get: function get() { - var model = require('../apis/rds-2014-10-31.min.json'); - model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; - model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.RDS; diff --git a/node_modules/aws-sdk/clients/redshift.js b/node_modules/aws-sdk/clients/redshift.js deleted file mode 100644 index d1a64c1..0000000 --- a/node_modules/aws-sdk/clients/redshift.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['redshift'] = {}; -AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); -Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', { - get: function get() { - var model = require('../apis/redshift-2012-12-01.min.json'); - model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; - model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Redshift; diff --git a/node_modules/aws-sdk/clients/route53.js b/node_modules/aws-sdk/clients/route53.js deleted file mode 100644 index 87a3144..0000000 --- a/node_modules/aws-sdk/clients/route53.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['route53'] = {}; -AWS.Route53 = Service.defineService('route53', ['2013-04-01']); -require('../lib/services/route53'); -Object.defineProperty(apiLoader.services['route53'], '2013-04-01', { - get: function get() { - var model = require('../apis/route53-2013-04-01.min.json'); - model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; - model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Route53; diff --git a/node_modules/aws-sdk/clients/route53domains.js b/node_modules/aws-sdk/clients/route53domains.js deleted file mode 100644 index f7d4a00..0000000 --- a/node_modules/aws-sdk/clients/route53domains.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['route53domains'] = {}; -AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); -Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', { - get: function get() { - var model = require('../apis/route53domains-2014-05-15.min.json'); - model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Route53Domains; diff --git a/node_modules/aws-sdk/clients/s3.js b/node_modules/aws-sdk/clients/s3.js deleted file mode 100644 index e04ebf4..0000000 --- a/node_modules/aws-sdk/clients/s3.js +++ /dev/null @@ -1,20 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['s3'] = {}; -AWS.S3 = Service.defineService('s3', ['2006-03-01']); -require('../lib/services/s3'); -Object.defineProperty(apiLoader.services['s3'], '2006-03-01', { - get: function get() { - var model = require('../apis/s3-2006-03-01.min.json'); - model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; - model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.S3; diff --git a/node_modules/aws-sdk/clients/servicecatalog.js b/node_modules/aws-sdk/clients/servicecatalog.js deleted file mode 100644 index 9b0efad..0000000 --- a/node_modules/aws-sdk/clients/servicecatalog.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['servicecatalog'] = {}; -AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); -Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', { - get: function get() { - var model = require('../apis/servicecatalog-2015-12-10.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ServiceCatalog; diff --git a/node_modules/aws-sdk/clients/ses.js b/node_modules/aws-sdk/clients/ses.js deleted file mode 100644 index e0a0f78..0000000 --- a/node_modules/aws-sdk/clients/ses.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ses'] = {}; -AWS.SES = Service.defineService('ses', ['2010-12-01']); -Object.defineProperty(apiLoader.services['ses'], '2010-12-01', { - get: function get() { - var model = require('../apis/email-2010-12-01.min.json'); - model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination; - model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SES; diff --git a/node_modules/aws-sdk/clients/simpledb.js b/node_modules/aws-sdk/clients/simpledb.js deleted file mode 100644 index 04393b8..0000000 --- a/node_modules/aws-sdk/clients/simpledb.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['simpledb'] = {}; -AWS.SimpleDB = Service.defineService('simpledb', ['2009-04-15']); -Object.defineProperty(apiLoader.services['simpledb'], '2009-04-15', { - get: function get() { - var model = require('../apis/sdb-2009-04-15.min.json'); - model.paginators = require('../apis/sdb-2009-04-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SimpleDB; diff --git a/node_modules/aws-sdk/clients/snowball.js b/node_modules/aws-sdk/clients/snowball.js deleted file mode 100644 index 41f963d..0000000 --- a/node_modules/aws-sdk/clients/snowball.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['snowball'] = {}; -AWS.Snowball = Service.defineService('snowball', ['2016-06-30']); -Object.defineProperty(apiLoader.services['snowball'], '2016-06-30', { - get: function get() { - var model = require('../apis/snowball-2016-06-30.min.json'); - model.paginators = require('../apis/snowball-2016-06-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Snowball; diff --git a/node_modules/aws-sdk/clients/sns.js b/node_modules/aws-sdk/clients/sns.js deleted file mode 100644 index 47573a9..0000000 --- a/node_modules/aws-sdk/clients/sns.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['sns'] = {}; -AWS.SNS = Service.defineService('sns', ['2010-03-31']); -Object.defineProperty(apiLoader.services['sns'], '2010-03-31', { - get: function get() { - var model = require('../apis/sns-2010-03-31.min.json'); - model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SNS; diff --git a/node_modules/aws-sdk/clients/sqs.js b/node_modules/aws-sdk/clients/sqs.js deleted file mode 100644 index ec547c7..0000000 --- a/node_modules/aws-sdk/clients/sqs.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['sqs'] = {}; -AWS.SQS = Service.defineService('sqs', ['2012-11-05']); -require('../lib/services/sqs'); -Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', { - get: function get() { - var model = require('../apis/sqs-2012-11-05.min.json'); - model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SQS; diff --git a/node_modules/aws-sdk/clients/ssm.js b/node_modules/aws-sdk/clients/ssm.js deleted file mode 100644 index 612be66..0000000 --- a/node_modules/aws-sdk/clients/ssm.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ssm'] = {}; -AWS.SSM = Service.defineService('ssm', ['2014-11-06']); -Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', { - get: function get() { - var model = require('../apis/ssm-2014-11-06.min.json'); - model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SSM; diff --git a/node_modules/aws-sdk/clients/storagegateway.js b/node_modules/aws-sdk/clients/storagegateway.js deleted file mode 100644 index 31d67f5..0000000 --- a/node_modules/aws-sdk/clients/storagegateway.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['storagegateway'] = {}; -AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); -Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', { - get: function get() { - var model = require('../apis/storagegateway-2013-06-30.min.json'); - model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.StorageGateway; diff --git a/node_modules/aws-sdk/clients/sts.js b/node_modules/aws-sdk/clients/sts.js deleted file mode 100644 index c9e106a..0000000 --- a/node_modules/aws-sdk/clients/sts.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['sts'] = {}; -AWS.STS = Service.defineService('sts', ['2011-06-15']); -require('../lib/services/sts'); -Object.defineProperty(apiLoader.services['sts'], '2011-06-15', { - get: function get() { - var model = require('../apis/sts-2011-06-15.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.STS; diff --git a/node_modules/aws-sdk/clients/support.js b/node_modules/aws-sdk/clients/support.js deleted file mode 100644 index f16ac1d..0000000 --- a/node_modules/aws-sdk/clients/support.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['support'] = {}; -AWS.Support = Service.defineService('support', ['2013-04-15']); -Object.defineProperty(apiLoader.services['support'], '2013-04-15', { - get: function get() { - var model = require('../apis/support-2013-04-15.min.json'); - model.paginators = require('../apis/support-2013-04-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Support; diff --git a/node_modules/aws-sdk/clients/swf.js b/node_modules/aws-sdk/clients/swf.js deleted file mode 100644 index 0b2d94f..0000000 --- a/node_modules/aws-sdk/clients/swf.js +++ /dev/null @@ -1,19 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['swf'] = {}; -AWS.SWF = Service.defineService('swf', ['2012-01-25']); -require('../lib/services/swf'); -Object.defineProperty(apiLoader.services['swf'], '2012-01-25', { - get: function get() { - var model = require('../apis/swf-2012-01-25.min.json'); - model.paginators = require('../apis/swf-2012-01-25.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SWF; diff --git a/node_modules/aws-sdk/clients/waf.js b/node_modules/aws-sdk/clients/waf.js deleted file mode 100644 index 33974d6..0000000 --- a/node_modules/aws-sdk/clients/waf.js +++ /dev/null @@ -1,17 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['waf'] = {}; -AWS.WAF = Service.defineService('waf', ['2015-08-24']); -Object.defineProperty(apiLoader.services['waf'], '2015-08-24', { - get: function get() { - var model = require('../apis/waf-2015-08-24.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WAF; diff --git a/node_modules/aws-sdk/clients/workspaces.js b/node_modules/aws-sdk/clients/workspaces.js deleted file mode 100644 index 111e389..0000000 --- a/node_modules/aws-sdk/clients/workspaces.js +++ /dev/null @@ -1,18 +0,0 @@ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['workspaces'] = {}; -AWS.WorkSpaces = Service.defineService('workspaces', ['2015-04-08']); -Object.defineProperty(apiLoader.services['workspaces'], '2015-04-08', { - get: function get() { - var model = require('../apis/workspaces-2015-04-08.min.json'); - model.paginators = require('../apis/workspaces-2015-04-08.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WorkSpaces; diff --git a/node_modules/aws-sdk/dist-tools/browser-builder.js b/node_modules/aws-sdk/dist-tools/browser-builder.js deleted file mode 100755 index 5dfb692..0000000 --- a/node_modules/aws-sdk/dist-tools/browser-builder.js +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/env node - -var path = require('path'); - -var AWS = require('../'); - -var license = [ - '// AWS SDK for JavaScript v' + AWS.VERSION, - '// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.', - '// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt' -].join('\n') + '\n'; - -function minify(code) { - var uglify = require('uglify-js'); - var minified = uglify.minify(code, {fromString: true}); - return minified.code; -} - -function stripComments(code) { - var lines = code.split(/\r?\n/); - var multiLine = false; - lines = lines.map(function (line) { - var rLine = line; - if (line.match(/^\s*\/\//)) { - rLine = null; - } else if (line.match(/^\s*\/\*/)) { - multiLine = true; - rLine = null; - } - - if (multiLine) { - var multiLineEnd = line.match(/\*\/(.*)/); - if (multiLineEnd) { - multiLine = false; - rLine = multiLineEnd[1]; - } else { - rLine = null; - } - } - - return rLine; - }).filter(function(l) { return l !== null; }); - - var newCode = lines.join('\n'); - newCode = newCode.replace(/\/\*\*[\s\S]+?Copyright\s+.+?Amazon[\s\S]+?\*\//g, ''); - return newCode; -} - -function build(options, callback) { - if (arguments.length === 1) { - callback = options; - options = {}; - } - - var img = require('insert-module-globals'); - img.vars.process = function() { return '{browser:true}'; }; - - if (options.services) process.env.AWS_SERVICES = options.services; - - var browserify = require('browserify'); - var brOpts = { basedir: path.resolve(__dirname, '..') }; - browserify(brOpts).add('./').ignore('domain').bundle(function(err, data) { - if (err) return callback(err); - - var code = (data || '').toString(); - if (options.minify) code = minify(code); - else code = stripComments(code); - - code = license + code; - callback(null, code); - }); -} - -// run if we called this tool directly -if (require.main === module) { - var opts = { - services: process.argv[2] || process.env.SERVICES, - minify: process.env.MINIFY ? true : false - }; - build(opts, function(err, code) { - if (err) console.error(err.message); - else console.log(code); - }); -} - -build.license = license; -module.exports = build; diff --git a/node_modules/aws-sdk/dist-tools/client-creator.js b/node_modules/aws-sdk/dist-tools/client-creator.js deleted file mode 100644 index 52d7769..0000000 --- a/node_modules/aws-sdk/dist-tools/client-creator.js +++ /dev/null @@ -1,216 +0,0 @@ -var fs = require('fs'); -var path = require('path'); - -// Generate service clients -function ClientCreator() { - this._metadata = require('../apis/metadata'); - this._apisFolderPath = path.join(__dirname, '..', 'apis'); - this._clientFolderPath = path.join(__dirname, '..', 'clients'); - this._serviceCustomizationsFolderPath = path.join(__dirname, '..', 'lib', 'services'); - this._packageJsonPath = path.join(__dirname, '..', 'package.json'); - this._apiFileNames = null; -} - -ClientCreator.prototype.getAllApiFilenames = function getAllApiFilenames() { - if (this._apiFileNames) { - return this._apiFileNames; - } - var apiFileNames = fs.readdirSync(this._apisFolderPath); - // filter out metadata - this._apiFileNames = apiFileNames.filter(function(name) { - return name !== 'metadata.json'; - }); - return this._apiFileNames; -}; - -ClientCreator.prototype.getAllApiFilenamesForService = function getAllApiFilenamesForService(modelName) { - var serviceRegex = new RegExp('(^' + modelName + '-([\\d]{4}-[\\d]{2}-[\\d]{2})\\.([\\w]+))\\.json$'); - var modelRegex = /(([\d]{4}-[\d]{2}-[\d]{2})\.([\w]+))\.json$/; - - var models = {}; - var versions = {}; - this.getAllApiFilenames().filter(function(name) { - return name.search(serviceRegex) === 0; - }).forEach(function(name) { - var matches = name.match(serviceRegex); - if (!matches) { - return; - } - var model = matches[1]; - var version = matches[2]; - var modelType = matches[3]; - if (!versions.hasOwnProperty(version)) { - versions[version] = {}; - } - var versionInfo = versions[version]; - switch (modelType) { - case 'min': - versionInfo.api = model; - break; - case 'paginators': - versionInfo.paginators = model; - break; - case 'waiters2': - versionInfo.waiters = model; - break; - default: - return; - } - }); - models.versions = versions; - return models; -}; - -ClientCreator.prototype.customizationsExist = function customizationsExist(serviceName) { - var customizationsFolder = this._serviceCustomizationsFolderPath; - return fs.existsSync(path.join(customizationsFolder, serviceName + '.js')); -}; - -ClientCreator.prototype.generateClientFileSource = function generateClientFileSource(serviceMetadata, specifiedVersion) { - var clientFolderPath = this._clientFolderPath; - var className = serviceMetadata.name; - var serviceName = className.toLowerCase(); - var modelName = serviceMetadata.prefix || serviceName; - specifiedVersion = specifiedVersion || '*'; - - // get models for the service - var models = this.getAllApiFilenamesForService(modelName); - - var modelVersions = models && models.versions; - if (!modelVersions) { - throw new Error('Unable to get models for ' + modelName); - } - var obsoleteVersions = serviceMetadata.versions || []; - var versionNumbers = Object.keys(modelVersions); - var tab = ' '; - var code = ''; - code += 'require(\'../lib/node_loader\');\n'; - code += 'var AWS = require(\'../lib/core\');\n'; - code += 'var Service = require(\'../lib/service\');\n'; - code += 'var apiLoader = require(\'../lib/api_loader\');\n\n'; - code += 'apiLoader.services[\'' + serviceName +'\'] = {};\n'; - code += 'AWS.' + className + ' = Service.defineService(\'' + serviceName + '\', [\'' + [].concat(obsoleteVersions, versionNumbers).sort().join('\', \'') + '\']);\n'; - // pull in service customizations - if (this.customizationsExist(serviceName)) { - code += 'require(\'../lib/services/' + serviceName + '\');\n'; - } - versionNumbers.forEach(function(version) { - // check version - if (specifiedVersion !== '*' && specifiedVersion !== version) { - return; - } - var versionInfo = modelVersions[version]; - if (!versionInfo.hasOwnProperty('api')) { - throw new Error('No API model for ' + serviceName + '-' + version); - } - code += 'Object.defineProperty(apiLoader.services[\'' + serviceName +'\'], \'' + version + '\', {\n'; - code += tab + 'get: function get() {\n'; - code += tab + tab + 'var model = require(\'../apis/' + versionInfo.api + '.json\');\n' - if (versionInfo.hasOwnProperty('paginators')) { - code += tab + tab + 'model.paginators = require(\'../apis/' + versionInfo.paginators + '.json\').pagination;\n'; - } - if (versionInfo.hasOwnProperty('waiters')) { - code += tab + tab + 'model.waiters = require(\'../apis/' + versionInfo.waiters + '.json\').waiters;\n'; - } - code += tab + tab + 'return model;\n'; - code += tab + '},\n'; - code += tab + 'enumerable: true,\n'; - code += tab + 'configurable: true\n'; - code += '});\n'; - }); - - code += '\n'; - code += 'module.exports = AWS.' + className + ';\n'; - return { - code: code, - path: path.join(clientFolderPath, serviceName + '.js'), - service: serviceName, - } -}; - -ClientCreator.prototype.tabs = function tabs(count) { - var tab = ''; - for (var i = 0; i < count; i++) { - tab += ' '; - } - return tab; -} - -ClientCreator.prototype.generateDefinePropertySource = function generateDefinePropertySource(objName, serviceName, className) { - var tabs = this.tabs; - var code = ''; - code += 'var ' + serviceName + ' = null;\n'; - code += 'Object.defineProperty(' + objName + ', \'' + className + '\', {\n'; - code += tabs(1) + 'get: function get() {\n'; - code += tabs(2) + 'return ' + serviceName + ' || require(\'./' + serviceName + '\');\n'; - code += tabs(1) + '},\n'; - code += tabs(1) + 'set: function set(svc) {\n'; - code += tabs(2) + serviceName + ' = svc;\n'; - code += tabs(1) + '},\n'; - code += tabs(1) + 'enumerable: true,\n'; - code += tabs(1) + 'configurable: true\n'; - code += '});\n'; - - return code; -}; - -ClientCreator.prototype.generateAllServicesSource = function generateAllServicesSource(services, fileName) { - var metadata = this._metadata; - var self = this; - var code = ''; - code += 'require(\'../lib/node_loader\');\n'; - code += 'var AWS = require(\'../lib/core\');\n\n'; - code += 'module.exports = {\n'; - - services.forEach(function(service, idx) { - var className = metadata[service].name; - var tab = ' '; - var isLast = idx === services.length - 1; - //code += self.generateDefinePropertySource('AWS', service, className); - code += self.tabs(1) + className + ': require(\'./' + service + '\')' + (isLast ? '' : ',') + '\n'; - }); - code += '};'; - return { - code: code, - path: path.join(this._clientFolderPath, fileName + '.js'), - service: fileName - }; -}; - -ClientCreator.prototype.getDefaultServices = function getDefaultServices() { - var metadata = this._metadata; - var services = []; - for (var key in metadata) { - if (!metadata.hasOwnProperty(key)) { - continue; - } - var className = metadata[key].name; - var serviceName = className.toLowerCase(); - services.push(serviceName); - } - return services; -}; - -ClientCreator.prototype.writeClientServices = function writeClientServices() { - var metadata = this._metadata; - var services = []; - var corsServices = []; - for (var key in metadata) { - if (!metadata.hasOwnProperty(key)) { - continue; - } - var clientInfo = this.generateClientFileSource(metadata[key]); - fs.writeFileSync(clientInfo.path, clientInfo.code); - services.push(clientInfo.service); - // check if service supports CORS - if (metadata[key].cors === true) { - corsServices.push(clientInfo.service); - } - } - var allClientInfo = this.generateAllServicesSource(services, 'all'); - fs.writeFileSync(allClientInfo.path, allClientInfo.code); - var browserClientInfo = this.generateAllServicesSource(corsServices, 'browser_default'); - fs.writeFileSync(browserClientInfo.path, browserClientInfo.code); -}; - -module.exports = ClientCreator; \ No newline at end of file diff --git a/node_modules/aws-sdk/dist-tools/create-all-services.js b/node_modules/aws-sdk/dist-tools/create-all-services.js deleted file mode 100644 index 8549b4c..0000000 --- a/node_modules/aws-sdk/dist-tools/create-all-services.js +++ /dev/null @@ -1,6 +0,0 @@ -var ClientCreator = require('./client-creator'); - -var cc = new ClientCreator(); - -cc.writeClientServices(); -console.log('Finished updating services.'); \ No newline at end of file diff --git a/node_modules/aws-sdk/dist-tools/service-collector.js b/node_modules/aws-sdk/dist-tools/service-collector.js deleted file mode 100644 index b0a4b61..0000000 --- a/node_modules/aws-sdk/dist-tools/service-collector.js +++ /dev/null @@ -1,168 +0,0 @@ -var fs = require('fs'); -var util = require('util'); -var path = require('path'); - -var AWS = require('../'); -var apis = require('../lib/api_loader'); -var metadata = require('../apis/metadata'); -var ClientCreator = require('./client-creator'); - -var clientCreator = new ClientCreator(); -var defaultServices = clientCreator.getDefaultServices().join(','); -var sanitizeRegex = /[^a-zA-Z0-9,-]/; - -var serviceClasses = {}; -Object.keys(AWS).forEach(function(name) { - if (AWS[name].serviceIdentifier) { - serviceClasses[AWS[name].serviceIdentifier] = AWS[name]; - } -}); - -function getServiceHeader(service) { - if (service === 'all') { - return Object.keys(serviceClasses).map(function(name) { - return getServiceHeader(name); - }).join('\n'); - } - - if (!serviceClasses[service]) return null; - var versions = serviceClasses[service].apiVersions.map(function(version) { - return version.indexOf('*') >= 0 ? null : version; - }).filter(function(c) { return c !== null; }); - - var file = util.format( - 'if (!Object.prototype.hasOwnProperty.call(AWS, \'' + metadata[service].name + '\')) {\n' + - ' AWS.apiLoader.services[\'%s\'] = {};\n' + - ' AWS.%s = AWS.Service.defineService(\'%s\', %s);\n', - service, metadata[service].name, service, util.inspect(versions)); - var svcPath = path.join(__dirname, '..', 'lib', 'services', service + '.js'); - if (fs.existsSync(svcPath)) { - file += ' require(\'./services/' + service + '\');\n'; - } - file += '}\n'; - - return file; -} - -function getService(service, version) { - if (service === 'all') { - return Object.keys(serviceClasses).map(function(name) { - var out = serviceClasses[name].apiVersions.map(function(svcVersion) { - if (svcVersion.indexOf('*') >= 0) return null; - return getService(name, svcVersion); - }).filter(function(c) { return c !== null; }).join('\n'); - - return out; - }).join('\n'); - } - - var svc, api; - if (!serviceClasses[service]) { - return null; - } - - try { - var ClassName = serviceClasses[service]; - svc = new ClassName({apiVersion: version, endpoint: 'localhost'}); - api = svc.api; - } catch (e) { - return null; - } - - var serviceFileName = metadata[service].prefix || service; - var lines = []; - var line = util.format( - 'AWS.apiLoader.services[\'%s\'][\'%s\'] = %s;\n', - service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.min\')'); - lines.push(line); - if (Object.prototype.hasOwnProperty.call(api, 'paginators') && Object.keys(api.paginators).length) { - line = util.format( - 'AWS.apiLoader.services[\'%s\'][\'%s\'].paginators = %s;\n', - service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.paginators\').pagination'); - lines.push(line); - } - if (Object.prototype.hasOwnProperty.call(api, 'waiters') && Object.keys(api.waiters).length) { - line = util.format( - 'AWS.apiLoader.services[\'%s\'][\'%s\'].waiters = %s;\n', - service, svc.api.apiVersion, 'require(\'../apis/' + serviceFileName + '-' + svc.api.apiVersion + '.waiters2\').waiters'); - lines.push(line); - } - return lines.join(''); -} - -function ServiceCollector(services) { - var builtServices = {}; - - function buildService(name, usingDefaultServices) { - var match = name.match(/^(.+?)(?:-(.+?))?$/); - var service = match[1], version = match[2] || 'latest'; - var contents = []; - var lines, err; - - if (!builtServices[service]) { - builtServices[service] = {}; - - lines = getServiceHeader(service); - if (lines === null) { - if (!usingDefaultServices) { - err = new Error('Invalid module: ' + service); - err.name = 'InvalidModuleError'; - throw err; - } - } else { - contents.push(lines); - } - } - - if (!builtServices[service][version]) { - builtServices[service][version] = true; - - lines = getService(service, version); - if (lines === null) { - if (!usingDefaultServices) { - err = new Error('Invalid module: ' + service + '-' + version); - err.name = 'InvalidModuleError'; - throw err; - } - } else { - contents.push(lines); - } - } - - return contents.join(''); - } - - var serviceCode = ''; - var usingDefaultServicesToggle = false; - if (!services) { - usingDefaultServicesToggle = true; - services = defaultServices; - } - if (services.match(sanitizeRegex)) { - throw new Error('Incorrectly formatted service names'); - } - - var invalidModules = []; - var stsIncluded = false; - services.split(',').sort().forEach(function(name) { - if (name.match(/^sts\b/) || name === 'all') stsIncluded = true; - try { - serviceCode += buildService(name, usingDefaultServicesToggle) + '\n'; - } catch (e) { - if (e.name === 'InvalidModuleError') invalidModules.push(name); - else throw e; - } - }); - - if (!stsIncluded) { - serviceCode += buildService('sts') + '\n'; - } - - if (invalidModules.length > 0) { - throw new Error('Missing modules: ' + invalidModules.join(', ')); - } - - return serviceCode; -} - -module.exports = ServiceCollector; \ No newline at end of file diff --git a/node_modules/aws-sdk/dist-tools/transform.js b/node_modules/aws-sdk/dist-tools/transform.js deleted file mode 100644 index ff7d2fc..0000000 --- a/node_modules/aws-sdk/dist-tools/transform.js +++ /dev/null @@ -1,43 +0,0 @@ -var Transform = require('stream').Transform; -var collector = require('./service-collector'); -var license = require('./browser-builder').license; - -module.exports = function(file) { - var stream = new Transform(); - - var didDefineServices = !!process.env.AWS_SERVICES; - - var isEntryPoint = !!file.match(/[\/\\]lib[\/\\]browser\.js$/); - - stream._transform = function(data, encoding, callback) { - callback(null, data); - }; - - if (isEntryPoint) { - if (didDefineServices) { - // We need to strip out the default requires statement - stream._transform = function(data, encoding, callback) { - var code = data.toString(); - code = code.trim(); - var lines = code.split('\n'); - lines = lines.filter(function(line) { - return !line.match(/^require\(.+browser_default['"]\);$/); - }); - - code = lines.join('\n'); - data = new Buffer(code); - callback(null, data); - }; - - var src = collector(process.env.AWS_SERVICES); - stream._flush = function(callback) { - stream.push(src); - callback(); - }; - } - - stream.push(license); - } - - return stream; -}; diff --git a/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt b/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt deleted file mode 100644 index 14e4658..0000000 --- a/node_modules/aws-sdk/dist/BUNDLE_LICENSE.txt +++ /dev/null @@ -1,96 +0,0 @@ -The bundled package of the AWS SDK for JavaScript is available under the -Apache License, Version 2.0: - - Copyright 2012-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. - - Licensed under the Apache License, Version 2.0 (the "License"). You - may not use this file except in compliance with the License. A copy of - the License is located at - - http://aws.amazon.com/apache2.0/ - - or in the "license" file accompanying this file. This file is - distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - ANY KIND, either express or implied. See the License for the specific - language governing permissions and limitations under the License. - -This product bundles browserify, which is available under a -"3-clause BSD" license: - - Copyright Joyent, Inc. and other Node contributors. - - Permission is hereby granted, free of charge, to any person obtaining a - copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to permit - persons to whom the Software is furnished to do so, subject to the - following conditions: - - The above copyright notice and this permission notice shall be included - in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS - OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN - NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, - DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR - OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE - USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles crypto-browserify, which is available under -the MIT license: - - Copyright (c) 2013 Dominic Tarr - - Permission is hereby granted, free of charge, - to any person obtaining a copy of this software and - associated documentation files (the "Software"), to - deal in the Software without restriction, including - without limitation the rights to use, copy, modify, - merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom - the Software is furnished to do so, - subject to the following conditions: - - The above copyright notice and this permission notice - shall be included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES - OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. - IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR - ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, - TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE - SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -This product bundles MD5, SHA-1, and SHA-256 hashing algorithm components, -which are available under a BSD license: - - Copyright (c) 1998 - 2009, Paul Johnston & Contributors - All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions are met: - - Redistributions of source code must retain the above copyrightnotice, - this list of conditions and the following disclaimer. Redistributions - in binary form must reproduce the above copyright notice, this list of - conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - - Neither the name of the author nor the names of its contributors may - be used to endorse or promote products derived from this software - without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE - LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - THE POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/aws-sdk/dist/aws-sdk.js b/node_modules/aws-sdk/dist/aws-sdk.js deleted file mode 100644 index 5e12d2b..0000000 --- a/node_modules/aws-sdk/dist/aws-sdk.js +++ /dev/null @@ -1,99711 +0,0 @@ -// AWS SDK for JavaScript v2.6.8 -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt -(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o `0`", - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "BundleTaskComplete": { - "delay": 15, - "operation": "DescribeBundleTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "complete", - "matcher": "pathAll", - "state": "success", - "argument": "BundleTasks[].State" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "BundleTasks[].State" - } - ] - }, - "ConversionTaskCancelled": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskCompleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelled", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - }, - { - "expected": "cancelling", - "matcher": "pathAny", - "state": "failure", - "argument": "ConversionTasks[].State" - } - ] - }, - "ConversionTaskDeleted": { - "delay": 15, - "operation": "DescribeConversionTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "ConversionTasks[].State" - } - ] - }, - "CustomerGatewayAvailable": { - "delay": 15, - "operation": "DescribeCustomerGateways", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "CustomerGateways[].State" - } - ] - }, - "ExportTaskCancelled": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "cancelled", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ExportTaskCompleted": { - "delay": 15, - "operation": "DescribeExportTasks", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "ExportTasks[].State" - } - ] - }, - "ImageExists": { - "operation": "DescribeImages", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(Images[]) > `0`", - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidAMIID.NotFound", - "state": "retry" - } - ] - }, - "ImageAvailable": { - "operation": "DescribeImages", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Images[].State", - "expected": "available" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Images[].State", - "expected": "failed" - } - ] - }, - "InstanceRunning": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "running", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "shutting-down", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "InstanceStatusOk": { - "operation": "DescribeInstanceStatus", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "InstanceStatuses[].InstanceStatus.Status", - "expected": "ok" - }, - { - "matcher": "error", - "expected": "InvalidInstanceID.NotFound", - "state": "retry" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Reservations[].Instances[].State.Name" - } - ] - }, - "KeyPairExists": { - "operation": "DescribeKeyPairs", - "delay": 5, - "maxAttempts": 6, - "acceptors": [ - { - "expected": true, - "matcher": "pathAll", - "state": "success", - "argument": "length(KeyPairs[].KeyName) > `0`" - }, - { - "expected": "InvalidKeyPair.NotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "NatGatewayAvailable": { - "operation": "DescribeNatGateways", - "delay": 15, - "maxAttempts": 40, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "NatGateways[].State", - "expected": "available" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "failed" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "deleting" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "NatGateways[].State", - "expected": "deleted" - }, - { - "state": "retry", - "matcher": "error", - "expected": "NatGatewayNotFound" - } - ] - }, - "NetworkInterfaceAvailable": { - "operation": "DescribeNetworkInterfaces", - "delay": 20, - "maxAttempts": 10, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "NetworkInterfaces[].Status" - }, - { - "expected": "InvalidNetworkInterfaceID.NotFound", - "matcher": "error", - "state": "failure" - } - ] - }, - "PasswordDataAvailable": { - "operation": "GetPasswordData", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "length(PasswordData) > `0`", - "expected": true - } - ] - }, - "SnapshotCompleted": { - "delay": 15, - "operation": "DescribeSnapshots", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "completed", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].State" - } - ] - }, - "SpotInstanceRequestFulfilled": { - "operation": "DescribeSpotInstanceRequests", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "fulfilled" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "schedule-expired" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "canceled-before-fulfillment" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "bad-parameters" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "SpotInstanceRequests[].Status.Code", - "expected": "system-error" - } - ] - }, - "SubnetAvailable": { - "delay": 15, - "operation": "DescribeSubnets", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Subnets[].State" - } - ] - }, - "SystemStatusOk": { - "operation": "DescribeInstanceStatus", - "maxAttempts": 40, - "delay": 15, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "InstanceStatuses[].SystemStatus.Status", - "expected": "ok" - } - ] - }, - "VolumeAvailable": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VolumeDeleted": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "matcher": "error", - "expected": "InvalidVolume.NotFound", - "state": "success" - } - ] - }, - "VolumeInUse": { - "delay": 15, - "operation": "DescribeVolumes", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "in-use", - "matcher": "pathAll", - "state": "success", - "argument": "Volumes[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Volumes[].State" - } - ] - }, - "VpcAvailable": { - "delay": 15, - "operation": "DescribeVpcs", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Vpcs[].State" - } - ] - }, - "VpcExists": { - "operation": "DescribeVpcs", - "delay": 1, - "maxAttempts": 5, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidVpcID.NotFound", - "state": "retry" - } - ] - }, - "VpnConnectionAvailable": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpnConnectionDeleted": { - "delay": 15, - "operation": "DescribeVpnConnections", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "VpnConnections[].State" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "VpnConnections[].State" - } - ] - }, - "VpcPeeringConnectionExists": { - "delay": 15, - "operation": "DescribeVpcPeeringConnections", - "maxAttempts": 40, - "acceptors": [ - { - "matcher": "status", - "expected": 200, - "state": "success" - }, - { - "matcher": "error", - "expected": "InvalidVpcPeeringConnectionID.NotFound", - "state": "retry" - } - ] - } - } -} - -},{}],42:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-09-21", - "endpointPrefix": "ecr", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon ECR", - "serviceFullName": "Amazon EC2 Container Registry", - "signatureVersion": "v4", - "targetPrefix": "AmazonEC2ContainerRegistry_V20150921" - }, - "operations": { - "BatchCheckLayerAvailability": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "layerDigests" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "layerDigests": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "layers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "layerDigest": {}, - "layerAvailability": {}, - "layerSize": { - "type": "long" - } - } - } - }, - "failures": { - "type": "list", - "member": { - "type": "structure", - "members": { - "layerDigest": {}, - "failureCode": {}, - "failureReason": {} - } - } - } - } - } - }, - "BatchDeleteImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageIds" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "imageIds": { - "shape": "Sh" - }, - "failures": { - "shape": "Sm" - } - } - } - }, - "BatchGetImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageIds" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "images": { - "type": "list", - "member": { - "shape": "St" - } - }, - "failures": { - "shape": "Sm" - } - } - } - }, - "CompleteLayerUpload": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "uploadId", - "layerDigests" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "layerDigests": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "layerDigest": {} - } - } - }, - "CreateRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "repository": { - "shape": "S11" - } - } - } - }, - "DeleteRepository": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "repository": { - "shape": "S11" - } - } - } - }, - "DeleteRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "DescribeImages": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageIds": { - "shape": "Sh" - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "imageDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "imageDigest": {}, - "imageTags": { - "type": "list", - "member": {} - }, - "imageSizeInBytes": { - "type": "long" - }, - "imagePushedAt": { - "type": "timestamp" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeRepositories": { - "input": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryNames": { - "type": "list", - "member": {} - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "repositories": { - "type": "list", - "member": { - "shape": "S11" - } - }, - "nextToken": {} - } - } - }, - "GetAuthorizationToken": { - "input": { - "type": "structure", - "members": { - "registryIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "authorizationData": { - "type": "list", - "member": { - "type": "structure", - "members": { - "authorizationToken": {}, - "expiresAt": { - "type": "timestamp" - }, - "proxyEndpoint": {} - } - } - } - } - } - }, - "GetDownloadUrlForLayer": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "layerDigest" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "layerDigest": {} - } - }, - "output": { - "type": "structure", - "members": { - "downloadUrl": {}, - "layerDigest": {} - } - } - }, - "GetRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "InitiateLayerUpload": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {} - } - }, - "output": { - "type": "structure", - "members": { - "uploadId": {}, - "partSize": { - "type": "long" - } - } - } - }, - "ListImages": { - "input": { - "type": "structure", - "required": [ - "repositoryName" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "filter": { - "type": "structure", - "members": { - "tagStatus": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "imageIds": { - "shape": "Sh" - }, - "nextToken": {} - } - } - }, - "PutImage": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "imageManifest" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "imageManifest": {} - } - }, - "output": { - "type": "structure", - "members": { - "image": { - "shape": "St" - } - } - } - }, - "SetRepositoryPolicy": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "policyText" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "policyText": {} - } - } - }, - "UploadLayerPart": { - "input": { - "type": "structure", - "required": [ - "repositoryName", - "uploadId", - "partFirstByte", - "partLastByte", - "layerPartBlob" - ], - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "partFirstByte": { - "type": "long" - }, - "partLastByte": { - "type": "long" - }, - "layerPartBlob": { - "type": "blob" - } - } - }, - "output": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "uploadId": {}, - "lastByteReceived": { - "type": "long" - } - } - } - } - }, - "shapes": { - "Sh": { - "type": "list", - "member": { - "shape": "Si" - } - }, - "Si": { - "type": "structure", - "members": { - "imageDigest": {}, - "imageTag": {} - } - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "members": { - "imageId": { - "shape": "Si" - }, - "failureCode": {}, - "failureReason": {} - } - } - }, - "St": { - "type": "structure", - "members": { - "registryId": {}, - "repositoryName": {}, - "imageId": { - "shape": "Si" - }, - "imageManifest": {} - } - }, - "S11": { - "type": "structure", - "members": { - "repositoryArn": {}, - "registryId": {}, - "repositoryName": {}, - "repositoryUri": {}, - "createdAt": { - "type": "timestamp" - } - } - } - } -} -},{}],43:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-13", - "endpointPrefix": "ecs", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon ECS", - "serviceFullName": "Amazon EC2 Container Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonEC2ContainerServiceV20141113" - }, - "operations": { - "CreateCluster": { - "input": { - "type": "structure", - "members": { - "clusterName": {} - } - }, - "output": { - "type": "structure", - "members": { - "cluster": { - "shape": "S4" - } - } - } - }, - "CreateService": { - "input": { - "type": "structure", - "required": [ - "serviceName", - "taskDefinition", - "desiredCount" - ], - "members": { - "cluster": {}, - "serviceName": {}, - "taskDefinition": {}, - "loadBalancers": { - "shape": "S7" - }, - "desiredCount": { - "type": "integer" - }, - "clientToken": {}, - "role": {}, - "deploymentConfiguration": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Sc" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "cluster" - ], - "members": { - "cluster": {} - } - }, - "output": { - "type": "structure", - "members": { - "cluster": { - "shape": "S4" - } - } - } - }, - "DeleteService": { - "input": { - "type": "structure", - "required": [ - "service" - ], - "members": { - "cluster": {}, - "service": {} - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Sc" - } - } - } - }, - "DeregisterContainerInstance": { - "input": { - "type": "structure", - "required": [ - "containerInstance" - ], - "members": { - "cluster": {}, - "containerInstance": {}, - "force": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "Sp" - } - } - } - }, - "DeregisterTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "taskDefinition": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S12" - } - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "clusters": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "clusters": { - "type": "list", - "member": { - "shape": "S4" - } - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DescribeContainerInstances": { - "input": { - "type": "structure", - "required": [ - "containerInstances" - ], - "members": { - "cluster": {}, - "containerInstances": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstances": { - "type": "list", - "member": { - "shape": "Sp" - } - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DescribeServices": { - "input": { - "type": "structure", - "required": [ - "services" - ], - "members": { - "cluster": {}, - "services": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "services": { - "type": "list", - "member": { - "shape": "Sc" - } - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DescribeTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "taskDefinition": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S12" - } - } - } - }, - "DescribeTasks": { - "input": { - "type": "structure", - "required": [ - "tasks" - ], - "members": { - "cluster": {}, - "tasks": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S28" - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "DiscoverPollEndpoint": { - "input": { - "type": "structure", - "members": { - "containerInstance": {}, - "cluster": {} - } - }, - "output": { - "type": "structure", - "members": { - "endpoint": {}, - "telemetryEndpoint": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "clusterArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListContainerInstances": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstanceArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListServices": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "serviceArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListTaskDefinitionFamilies": { - "input": { - "type": "structure", - "members": { - "familyPrefix": {}, - "status": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "families": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListTaskDefinitions": { - "input": { - "type": "structure", - "members": { - "familyPrefix": {}, - "status": {}, - "sort": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinitionArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "ListTasks": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "containerInstance": {}, - "family": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - }, - "startedBy": {}, - "serviceName": {}, - "desiredStatus": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskArns": { - "shape": "Sv" - }, - "nextToken": {} - } - } - }, - "RegisterContainerInstance": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "instanceIdentityDocument": {}, - "instanceIdentityDocumentSignature": {}, - "totalResources": { - "shape": "Sr" - }, - "versionInfo": { - "shape": "Sq" - }, - "containerInstanceArn": {}, - "attributes": { - "shape": "Sy" - } - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "Sp" - } - } - } - }, - "RegisterTaskDefinition": { - "input": { - "type": "structure", - "required": [ - "family", - "containerDefinitions" - ], - "members": { - "family": {}, - "taskRoleArn": {}, - "networkMode": {}, - "containerDefinitions": { - "shape": "S13" - }, - "volumes": { - "shape": "S1o" - } - } - }, - "output": { - "type": "structure", - "members": { - "taskDefinition": { - "shape": "S12" - } - } - } - }, - "RunTask": { - "input": { - "type": "structure", - "required": [ - "taskDefinition" - ], - "members": { - "cluster": {}, - "taskDefinition": {}, - "overrides": { - "shape": "S2a" - }, - "count": { - "type": "integer" - }, - "startedBy": {} - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S28" - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "StartTask": { - "input": { - "type": "structure", - "required": [ - "taskDefinition", - "containerInstances" - ], - "members": { - "cluster": {}, - "taskDefinition": {}, - "overrides": { - "shape": "S2a" - }, - "containerInstances": { - "shape": "Sv" - }, - "startedBy": {} - } - }, - "output": { - "type": "structure", - "members": { - "tasks": { - "shape": "S28" - }, - "failures": { - "shape": "S1w" - } - } - } - }, - "StopTask": { - "input": { - "type": "structure", - "required": [ - "task" - ], - "members": { - "cluster": {}, - "task": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": { - "task": { - "shape": "S29" - } - } - } - }, - "SubmitContainerStateChange": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "task": {}, - "containerName": {}, - "status": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "networkBindings": { - "shape": "S2f" - } - } - }, - "output": { - "type": "structure", - "members": { - "acknowledgment": {} - } - } - }, - "SubmitTaskStateChange": { - "input": { - "type": "structure", - "members": { - "cluster": {}, - "task": {}, - "status": {}, - "reason": {} - } - }, - "output": { - "type": "structure", - "members": { - "acknowledgment": {} - } - } - }, - "UpdateContainerAgent": { - "input": { - "type": "structure", - "required": [ - "containerInstance" - ], - "members": { - "cluster": {}, - "containerInstance": {} - } - }, - "output": { - "type": "structure", - "members": { - "containerInstance": { - "shape": "Sp" - } - } - } - }, - "UpdateService": { - "input": { - "type": "structure", - "required": [ - "service" - ], - "members": { - "cluster": {}, - "service": {}, - "desiredCount": { - "type": "integer" - }, - "taskDefinition": {}, - "deploymentConfiguration": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "service": { - "shape": "Sc" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "clusterArn": {}, - "clusterName": {}, - "status": {}, - "registeredContainerInstancesCount": { - "type": "integer" - }, - "runningTasksCount": { - "type": "integer" - }, - "pendingTasksCount": { - "type": "integer" - }, - "activeServicesCount": { - "type": "integer" - } - } - }, - "S7": { - "type": "list", - "member": { - "type": "structure", - "members": { - "targetGroupArn": {}, - "loadBalancerName": {}, - "containerName": {}, - "containerPort": { - "type": "integer" - } - } - } - }, - "Sa": { - "type": "structure", - "members": { - "maximumPercent": { - "type": "integer" - }, - "minimumHealthyPercent": { - "type": "integer" - } - } - }, - "Sc": { - "type": "structure", - "members": { - "serviceArn": {}, - "serviceName": {}, - "clusterArn": {}, - "loadBalancers": { - "shape": "S7" - }, - "status": {}, - "desiredCount": { - "type": "integer" - }, - "runningCount": { - "type": "integer" - }, - "pendingCount": { - "type": "integer" - }, - "taskDefinition": {}, - "deploymentConfiguration": { - "shape": "Sa" - }, - "deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "status": {}, - "taskDefinition": {}, - "desiredCount": { - "type": "integer" - }, - "pendingCount": { - "type": "integer" - }, - "runningCount": { - "type": "integer" - }, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "roleArn": {}, - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "id": {}, - "createdAt": { - "type": "timestamp" - }, - "message": {} - } - } - }, - "createdAt": { - "type": "timestamp" - } - } - }, - "Sp": { - "type": "structure", - "members": { - "containerInstanceArn": {}, - "ec2InstanceId": {}, - "versionInfo": { - "shape": "Sq" - }, - "remainingResources": { - "shape": "Sr" - }, - "registeredResources": { - "shape": "Sr" - }, - "status": {}, - "agentConnected": { - "type": "boolean" - }, - "runningTasksCount": { - "type": "integer" - }, - "pendingTasksCount": { - "type": "integer" - }, - "agentUpdateStatus": {}, - "attributes": { - "shape": "Sy" - } - } - }, - "Sq": { - "type": "structure", - "members": { - "agentVersion": {}, - "agentHash": {}, - "dockerVersion": {} - } - }, - "Sr": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "type": {}, - "doubleValue": { - "type": "double" - }, - "longValue": { - "type": "long" - }, - "integerValue": { - "type": "integer" - }, - "stringSetValue": { - "shape": "Sv" - } - } - } - }, - "Sv": { - "type": "list", - "member": {} - }, - "Sy": { - "type": "list", - "member": { - "shape": "Sz" - } - }, - "Sz": { - "type": "structure", - "required": [ - "name" - ], - "members": { - "name": {}, - "value": {} - } - }, - "S12": { - "type": "structure", - "members": { - "taskDefinitionArn": {}, - "containerDefinitions": { - "shape": "S13" - }, - "family": {}, - "taskRoleArn": {}, - "networkMode": {}, - "revision": { - "type": "integer" - }, - "volumes": { - "shape": "S1o" - }, - "status": {}, - "requiresAttributes": { - "type": "list", - "member": { - "shape": "Sz" - } - } - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "image": {}, - "cpu": { - "type": "integer" - }, - "memory": { - "type": "integer" - }, - "memoryReservation": { - "type": "integer" - }, - "links": { - "shape": "Sv" - }, - "portMappings": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerPort": { - "type": "integer" - }, - "hostPort": { - "type": "integer" - }, - "protocol": {} - } - } - }, - "essential": { - "type": "boolean" - }, - "entryPoint": { - "shape": "Sv" - }, - "command": { - "shape": "Sv" - }, - "environment": { - "shape": "S18" - }, - "mountPoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "sourceVolume": {}, - "containerPath": {}, - "readOnly": { - "type": "boolean" - } - } - } - }, - "volumesFrom": { - "type": "list", - "member": { - "type": "structure", - "members": { - "sourceContainer": {}, - "readOnly": { - "type": "boolean" - } - } - } - }, - "hostname": {}, - "user": {}, - "workingDirectory": {}, - "disableNetworking": { - "type": "boolean" - }, - "privileged": { - "type": "boolean" - }, - "readonlyRootFilesystem": { - "type": "boolean" - }, - "dnsServers": { - "shape": "Sv" - }, - "dnsSearchDomains": { - "shape": "Sv" - }, - "extraHosts": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "hostname", - "ipAddress" - ], - "members": { - "hostname": {}, - "ipAddress": {} - } - } - }, - "dockerSecurityOptions": { - "shape": "Sv" - }, - "dockerLabels": { - "type": "map", - "key": {}, - "value": {} - }, - "ulimits": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "name", - "softLimit", - "hardLimit" - ], - "members": { - "name": {}, - "softLimit": { - "type": "integer" - }, - "hardLimit": { - "type": "integer" - } - } - } - }, - "logConfiguration": { - "type": "structure", - "required": [ - "logDriver" - ], - "members": { - "logDriver": {}, - "options": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "S18": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "value": {} - } - } - }, - "S1o": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "host": { - "type": "structure", - "members": { - "sourcePath": {} - } - } - } - } - }, - "S1w": { - "type": "list", - "member": { - "type": "structure", - "members": { - "arn": {}, - "reason": {} - } - } - }, - "S28": { - "type": "list", - "member": { - "shape": "S29" - } - }, - "S29": { - "type": "structure", - "members": { - "taskArn": {}, - "clusterArn": {}, - "taskDefinitionArn": {}, - "containerInstanceArn": {}, - "overrides": { - "shape": "S2a" - }, - "lastStatus": {}, - "desiredStatus": {}, - "containers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "containerArn": {}, - "taskArn": {}, - "name": {}, - "lastStatus": {}, - "exitCode": { - "type": "integer" - }, - "reason": {}, - "networkBindings": { - "shape": "S2f" - } - } - } - }, - "startedBy": {}, - "stoppedReason": {}, - "createdAt": { - "type": "timestamp" - }, - "startedAt": { - "type": "timestamp" - }, - "stoppedAt": { - "type": "timestamp" - } - } - }, - "S2a": { - "type": "structure", - "members": { - "containerOverrides": { - "type": "list", - "member": { - "type": "structure", - "members": { - "name": {}, - "command": { - "shape": "Sv" - }, - "environment": { - "shape": "S18" - } - } - } - }, - "taskRoleArn": {} - } - }, - "S2f": { - "type": "list", - "member": { - "type": "structure", - "members": { - "bindIP": {}, - "containerPort": { - "type": "integer" - }, - "hostPort": { - "type": "integer" - }, - "protocol": {} - } - } - } - } -} -},{}],44:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListClusters": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "clusterArns" - }, - "ListContainerInstances": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "containerInstanceArns" - }, - "ListTaskDefinitions": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "taskDefinitionArns" - }, - "ListTaskDefinitionFamilies": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "families" - }, - "ListTasks": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "taskArns" - }, - "ListServices": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "maxResults", - "result_key": "serviceArns" - } - } -} - -},{}],45:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "TasksRunning": { - "delay": 6, - "operation": "DescribeTasks", - "maxAttempts": 100, - "acceptors": [ - { - "expected": "STOPPED", - "matcher": "pathAny", - "state": "failure", - "argument": "tasks[].lastStatus" - }, - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "RUNNING", - "matcher": "pathAll", - "state": "success", - "argument": "tasks[].lastStatus" - } - ] - }, - "TasksStopped": { - "delay": 6, - "operation": "DescribeTasks", - "maxAttempts": 100, - "acceptors": [ - { - "expected": "STOPPED", - "matcher": "pathAll", - "state": "success", - "argument": "tasks[].lastStatus" - } - ] - }, - "ServicesStable": { - "delay": 15, - "operation": "DescribeServices", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "DRAINING", - "matcher": "pathAny", - "state": "failure", - "argument": "services[].status" - }, - { - "expected": "INACTIVE", - "matcher": "pathAny", - "state": "failure", - "argument": "services[].status" - }, - { - "expected": true, - "matcher": "path", - "state": "success", - "argument": "length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`" - } - ] - }, - "ServicesInactive": { - "delay": 15, - "operation": "DescribeServices", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "MISSING", - "matcher": "pathAny", - "state": "failure", - "argument": "failures[].reason" - }, - { - "expected": "INACTIVE", - "matcher": "pathAny", - "state": "success", - "argument": "services[].status" - } - ] - } - } -} - -},{}],46:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-02-02", - "endpointPrefix": "elasticache", - "protocol": "query", - "serviceFullName": "Amazon ElastiCache", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticache.amazonaws.com/doc/2015-02-02/" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S3" - } - } - }, - "output": { - "shape": "S5", - "resultWrapper": "AddTagsToResourceResult" - } - }, - "AuthorizeCacheSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members": { - "CacheSecurityGroupName": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeCacheSecurityGroupIngressResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "CopySnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceSnapshotName", - "TargetSnapshotName" - ], - "members": { - "SourceSnapshotName": {}, - "TargetSnapshotName": {}, - "TargetBucket": {} - } - }, - "output": { - "resultWrapper": "CopySnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "ReplicationGroupId": {}, - "AZMode": {}, - "PreferredAvailabilityZone": {}, - "PreferredAvailabilityZones": { - "shape": "So" - }, - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "Tags": { - "shape": "S3" - }, - "SnapshotArns": { - "shape": "Sr" - }, - "SnapshotName": {}, - "PreferredMaintenanceWindow": {}, - "Port": { - "type": "integer" - }, - "NotificationTopicArn": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - } - }, - "output": { - "resultWrapper": "CreateCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "CreateCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName", - "CacheParameterGroupFamily", - "Description" - ], - "members": { - "CacheParameterGroupName": {}, - "CacheParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateCacheParameterGroupResult", - "type": "structure", - "members": { - "CacheParameterGroup": { - "shape": "S19" - } - } - } - }, - "CreateCacheSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "Description" - ], - "members": { - "CacheSecurityGroupName": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateCacheSecurityGroupResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - }, - "CreateCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName", - "CacheSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1d" - } - } - }, - "output": { - "resultWrapper": "CreateCacheSubnetGroupResult", - "type": "structure", - "members": { - "CacheSubnetGroup": { - "shape": "S1f" - } - } - } - }, - "CreateReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId", - "ReplicationGroupDescription" - ], - "members": { - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "PrimaryClusterId": {}, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "NumCacheClusters": { - "type": "integer" - }, - "PreferredCacheClusterAZs": { - "shape": "Sl" - }, - "NumNodeGroups": { - "type": "integer" - }, - "ReplicasPerNodeGroup": { - "type": "integer" - }, - "NodeGroupConfiguration": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "NodeGroupConfiguration" - } - }, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "Tags": { - "shape": "S3" - }, - "SnapshotArns": { - "shape": "Sr" - }, - "SnapshotName": {}, - "PreferredMaintenanceWindow": {}, - "Port": { - "type": "integer" - }, - "NotificationTopicArn": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - } - }, - "output": { - "resultWrapper": "CreateReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotName" - ], - "members": { - "ReplicationGroupId": {}, - "CacheClusterId": {}, - "SnapshotName": {} - } - }, - "output": { - "resultWrapper": "CreateSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DeleteCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "FinalSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "DeleteCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {} - } - } - }, - "DeleteCacheSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName" - ], - "members": { - "CacheSecurityGroupName": {} - } - } - }, - "DeleteCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName" - ], - "members": { - "CacheSubnetGroupName": {} - } - } - }, - "DeleteReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "RetainPrimaryCluster": { - "type": "boolean" - }, - "FinalSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "DeleteSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotName" - ], - "members": { - "SnapshotName": {} - } - }, - "output": { - "resultWrapper": "DeleteSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DescribeCacheClusters": { - "input": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "ShowCacheNodeInfo": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeCacheClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheClusters": { - "type": "list", - "member": { - "shape": "Su", - "locationName": "CacheCluster" - } - } - } - } - }, - "DescribeCacheEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeCacheEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheEngineVersions": { - "type": "list", - "member": { - "locationName": "CacheEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "CacheParameterGroupFamily": {}, - "CacheEngineDescription": {}, - "CacheEngineVersionDescription": {} - } - } - } - } - } - }, - "DescribeCacheParameterGroups": { - "input": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheParameterGroups": { - "type": "list", - "member": { - "shape": "S19", - "locationName": "CacheParameterGroup" - } - } - } - } - }, - "DescribeCacheParameters": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheParametersResult", - "type": "structure", - "members": { - "Marker": {}, - "Parameters": { - "shape": "S2h" - }, - "CacheNodeTypeSpecificParameters": { - "shape": "S2k" - } - } - } - }, - "DescribeCacheSecurityGroups": { - "input": { - "type": "structure", - "members": { - "CacheSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheSecurityGroups": { - "type": "list", - "member": { - "shape": "S8", - "locationName": "CacheSecurityGroup" - } - } - } - } - }, - "DescribeCacheSubnetGroups": { - "input": { - "type": "structure", - "members": { - "CacheSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCacheSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "CacheSubnetGroups": { - "type": "list", - "member": { - "shape": "S1f", - "locationName": "CacheSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupFamily" - ], - "members": { - "CacheParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "CacheParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2h" - }, - "CacheNodeTypeSpecificParameters": { - "shape": "S2k" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeReplicationGroups": { - "input": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReplicationGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReplicationGroups": { - "type": "list", - "member": { - "shape": "S1m", - "locationName": "ReplicationGroup" - } - } - } - } - }, - "DescribeReservedCacheNodes": { - "input": { - "type": "structure", - "members": { - "ReservedCacheNodeId": {}, - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedCacheNodesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedCacheNodes": { - "type": "list", - "member": { - "shape": "S38", - "locationName": "ReservedCacheNode" - } - } - } - } - }, - "DescribeReservedCacheNodesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedCacheNodesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedCacheNodesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedCacheNodesOffering", - "type": "structure", - "members": { - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "ProductDescription": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S3a" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeSnapshots": { - "input": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "CacheClusterId": {}, - "SnapshotName": {}, - "SnapshotSource": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "ShowNodeGroupConfig": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "Snapshots": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "Snapshot" - } - } - } - } - }, - "ListAllowedNodeTypeModifications": { - "input": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "ReplicationGroupId": {} - } - }, - "output": { - "resultWrapper": "ListAllowedNodeTypeModificationsResult", - "type": "structure", - "members": { - "ScaleUpModifications": { - "type": "list", - "member": {} - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "shape": "S5", - "resultWrapper": "ListTagsForResourceResult" - } - }, - "ModifyCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId" - ], - "members": { - "CacheClusterId": {}, - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeIdsToRemove": { - "shape": "Sy" - }, - "AZMode": {}, - "NewAvailabilityZones": { - "shape": "So" - }, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "CacheParameterGroupName": {}, - "NotificationTopicStatus": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "CacheNodeType": {} - } - }, - "output": { - "resultWrapper": "ModifyCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "ModifyCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName", - "ParameterNameValues" - ], - "members": { - "CacheParameterGroupName": {}, - "ParameterNameValues": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S3s", - "resultWrapper": "ModifyCacheParameterGroupResult" - } - }, - "ModifyCacheSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "CacheSubnetGroupName" - ], - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1d" - } - } - }, - "output": { - "resultWrapper": "ModifyCacheSubnetGroupResult", - "type": "structure", - "members": { - "CacheSubnetGroup": { - "shape": "S1f" - } - } - } - }, - "ModifyReplicationGroup": { - "input": { - "type": "structure", - "required": [ - "ReplicationGroupId" - ], - "members": { - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "PrimaryClusterId": {}, - "SnapshottingClusterId": {}, - "AutomaticFailoverEnabled": { - "type": "boolean" - }, - "CacheSecurityGroupNames": { - "shape": "Sp" - }, - "SecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "NotificationTopicArn": {}, - "CacheParameterGroupName": {}, - "NotificationTopicStatus": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "CacheNodeType": {} - } - }, - "output": { - "resultWrapper": "ModifyReplicationGroupResult", - "type": "structure", - "members": { - "ReplicationGroup": { - "shape": "S1m" - } - } - } - }, - "PurchaseReservedCacheNodesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedCacheNodesOfferingId" - ], - "members": { - "ReservedCacheNodesOfferingId": {}, - "ReservedCacheNodeId": {}, - "CacheNodeCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedCacheNodesOfferingResult", - "type": "structure", - "members": { - "ReservedCacheNode": { - "shape": "S38" - } - } - } - }, - "RebootCacheCluster": { - "input": { - "type": "structure", - "required": [ - "CacheClusterId", - "CacheNodeIdsToReboot" - ], - "members": { - "CacheClusterId": {}, - "CacheNodeIdsToReboot": { - "shape": "Sy" - } - } - }, - "output": { - "resultWrapper": "RebootCacheClusterResult", - "type": "structure", - "members": { - "CacheCluster": { - "shape": "Su" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "shape": "S5", - "resultWrapper": "RemoveTagsFromResourceResult" - } - }, - "ResetCacheParameterGroup": { - "input": { - "type": "structure", - "required": [ - "CacheParameterGroupName" - ], - "members": { - "CacheParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "ParameterNameValues": { - "shape": "S3q" - } - } - }, - "output": { - "shape": "S3s", - "resultWrapper": "ResetCacheParameterGroupResult" - } - }, - "RevokeCacheSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "CacheSecurityGroupName", - "EC2SecurityGroupName", - "EC2SecurityGroupOwnerId" - ], - "members": { - "CacheSecurityGroupName": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeCacheSecurityGroupIngressResult", - "type": "structure", - "members": { - "CacheSecurityGroup": { - "shape": "S8" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S5": { - "type": "structure", - "members": { - "TagList": { - "shape": "S3" - } - } - }, - "S8": { - "type": "structure", - "members": { - "OwnerId": {}, - "CacheSecurityGroupName": {}, - "Description": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - } - } - }, - "wrapper": true - }, - "Sd": { - "type": "structure", - "members": { - "SnapshotName": {}, - "ReplicationGroupId": {}, - "ReplicationGroupDescription": {}, - "CacheClusterId": {}, - "SnapshotStatus": {}, - "SnapshotSource": {}, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "NumCacheNodes": { - "type": "integer" - }, - "PreferredAvailabilityZone": {}, - "CacheClusterCreateTime": { - "type": "timestamp" - }, - "PreferredMaintenanceWindow": {}, - "TopicArn": {}, - "Port": { - "type": "integer" - }, - "CacheParameterGroupName": {}, - "CacheSubnetGroupName": {}, - "VpcId": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {}, - "NumNodeGroups": { - "type": "integer" - }, - "AutomaticFailover": {}, - "NodeSnapshots": { - "type": "list", - "member": { - "locationName": "NodeSnapshot", - "type": "structure", - "members": { - "CacheClusterId": {}, - "NodeGroupId": {}, - "CacheNodeId": {}, - "NodeGroupConfiguration": { - "shape": "Sk" - }, - "CacheSize": {}, - "CacheNodeCreateTime": { - "type": "timestamp" - }, - "SnapshotCreateTime": { - "type": "timestamp" - } - }, - "wrapper": true - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "Slots": {}, - "ReplicaCount": { - "type": "integer" - }, - "PrimaryAvailabilityZone": {}, - "ReplicaAvailabilityZones": { - "shape": "Sl" - } - } - }, - "Sl": { - "type": "list", - "member": { - "locationName": "AvailabilityZone" - } - }, - "So": { - "type": "list", - "member": { - "locationName": "PreferredAvailabilityZone" - } - }, - "Sp": { - "type": "list", - "member": { - "locationName": "CacheSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "SecurityGroupId" - } - }, - "Sr": { - "type": "list", - "member": { - "locationName": "SnapshotArn" - } - }, - "Su": { - "type": "structure", - "members": { - "CacheClusterId": {}, - "ConfigurationEndpoint": { - "shape": "Sv" - }, - "ClientDownloadLandingPage": {}, - "CacheNodeType": {}, - "Engine": {}, - "EngineVersion": {}, - "CacheClusterStatus": {}, - "NumCacheNodes": { - "type": "integer" - }, - "PreferredAvailabilityZone": {}, - "CacheClusterCreateTime": { - "type": "timestamp" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "NumCacheNodes": { - "type": "integer" - }, - "CacheNodeIdsToRemove": { - "shape": "Sy" - }, - "EngineVersion": {}, - "CacheNodeType": {} - } - }, - "NotificationConfiguration": { - "type": "structure", - "members": { - "TopicArn": {}, - "TopicStatus": {} - } - }, - "CacheSecurityGroups": { - "type": "list", - "member": { - "locationName": "CacheSecurityGroup", - "type": "structure", - "members": { - "CacheSecurityGroupName": {}, - "Status": {} - } - } - }, - "CacheParameterGroup": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "ParameterApplyStatus": {}, - "CacheNodeIdsToReboot": { - "shape": "Sy" - } - } - }, - "CacheSubnetGroupName": {}, - "CacheNodes": { - "type": "list", - "member": { - "locationName": "CacheNode", - "type": "structure", - "members": { - "CacheNodeId": {}, - "CacheNodeStatus": {}, - "CacheNodeCreateTime": { - "type": "timestamp" - }, - "Endpoint": { - "shape": "Sv" - }, - "ParameterGroupStatus": {}, - "SourceCacheNodeId": {}, - "CustomerAvailabilityZone": {} - } - } - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "SecurityGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SecurityGroupId": {}, - "Status": {} - } - } - }, - "ReplicationGroupId": {}, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - }, - "wrapper": true - }, - "Sv": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "Sy": { - "type": "list", - "member": { - "locationName": "CacheNodeId" - } - }, - "S19": { - "type": "structure", - "members": { - "CacheParameterGroupName": {}, - "CacheParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1d": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1f": { - "type": "structure", - "members": { - "CacheSubnetGroupName": {}, - "CacheSubnetGroupDescription": {}, - "VpcId": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - } - } - } - } - }, - "wrapper": true - }, - "S1m": { - "type": "structure", - "members": { - "ReplicationGroupId": {}, - "Description": {}, - "Status": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "PrimaryClusterId": {}, - "AutomaticFailoverStatus": {} - } - }, - "MemberClusters": { - "type": "list", - "member": { - "locationName": "ClusterId" - } - }, - "NodeGroups": { - "type": "list", - "member": { - "locationName": "NodeGroup", - "type": "structure", - "members": { - "NodeGroupId": {}, - "Status": {}, - "PrimaryEndpoint": { - "shape": "Sv" - }, - "Slots": {}, - "NodeGroupMembers": { - "type": "list", - "member": { - "locationName": "NodeGroupMember", - "type": "structure", - "members": { - "CacheClusterId": {}, - "CacheNodeId": {}, - "ReadEndpoint": { - "shape": "Sv" - }, - "PreferredAvailabilityZone": {}, - "CurrentRole": {} - } - } - } - } - } - }, - "SnapshottingClusterId": {}, - "AutomaticFailover": {}, - "ConfigurationEndpoint": { - "shape": "Sv" - }, - "SnapshotRetentionLimit": { - "type": "integer" - }, - "SnapshotWindow": {} - }, - "wrapper": true - }, - "S2h": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ChangeType": {} - } - } - }, - "S2k": { - "type": "list", - "member": { - "locationName": "CacheNodeTypeSpecificParameter", - "type": "structure", - "members": { - "ParameterName": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "CacheNodeTypeSpecificValues": { - "type": "list", - "member": { - "locationName": "CacheNodeTypeSpecificValue", - "type": "structure", - "members": { - "CacheNodeType": {}, - "Value": {} - } - } - }, - "ChangeType": {} - } - } - }, - "S38": { - "type": "structure", - "members": { - "ReservedCacheNodeId": {}, - "ReservedCacheNodesOfferingId": {}, - "CacheNodeType": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CacheNodeCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "State": {}, - "RecurringCharges": { - "shape": "S3a" - } - }, - "wrapper": true - }, - "S3a": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S3q": { - "type": "list", - "member": { - "locationName": "ParameterNameValue", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {} - } - } - }, - "S3s": { - "type": "structure", - "members": { - "CacheParameterGroupName": {} - } - } - } -} -},{}],47:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeCacheClusters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheClusters" - }, - "DescribeCacheEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheEngineVersions" - }, - "DescribeCacheParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheParameterGroups" - }, - "DescribeCacheParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeCacheSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheSecurityGroups" - }, - "DescribeCacheSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "CacheSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeReservedCacheNodes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedCacheNodes" - }, - "DescribeReservedCacheNodesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedCacheNodesOfferings" - }, - "DescribeReplicationGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReplicationGroups" - }, - "DescribeSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Snapshots" - } - } -} - -},{}],48:[function(require,module,exports){ -module.exports={ - "version":2, - "waiters":{ - "CacheClusterAvailable":{ - "acceptors":[ - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"available", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleted", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleting", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"incompatible-network", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"restore-failed", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache cluster is available.", - "maxAttempts":40, - "operation":"DescribeCacheClusters" - }, - "CacheClusterDeleted":{ - "acceptors":[ - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"deleted", - "matcher":"pathAll", - "state":"success" - }, - { - "expected":"CacheClusterNotFound", - "matcher":"error", - "state":"success" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"available", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"creating", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"incompatible-network", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"modifying", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"restore-failed", - "matcher":"pathAny", - "state":"failure" - }, - { - "argument":"CacheClusters[].CacheClusterStatus", - "expected":"snapshotting", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache cluster is deleted.", - "maxAttempts":40, - "operation":"DescribeCacheClusters" - }, - "ReplicationGroupAvailable":{ - "acceptors":[ - { - "argument":"ReplicationGroups[].Status", - "expected":"available", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"ReplicationGroups[].Status", - "expected":"deleted", - "matcher":"pathAny", - "state":"failure" - } - ], - "delay":15, - "description":"Wait until ElastiCache replication group is available.", - "maxAttempts":40, - "operation":"DescribeReplicationGroups" - }, - "ReplicationGroupDeleted":{ - "acceptors":[ - { - "argument":"ReplicationGroups[].Status", - "expected":"deleted", - "matcher":"pathAll", - "state":"success" - }, - { - "argument":"ReplicationGroups[].Status", - "expected":"available", - "matcher":"pathAny", - "state":"failure" - }, - { - "expected":"ReplicationGroupNotFoundFault", - "matcher":"error", - "state":"success" - } - ], - "delay":15, - "description":"Wait until ElastiCache replication group is deleted.", - "maxAttempts":40, - "operation":"DescribeReplicationGroups" - } - } -} - -},{}],49:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2010-12-01", - "endpointPrefix": "elasticbeanstalk", - "protocol": "query", - "serviceAbbreviation": "Elastic Beanstalk", - "serviceFullName": "AWS Elastic Beanstalk", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/" - }, - "operations": { - "AbortEnvironmentUpdate": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "ApplyEnvironmentManagedAction": { - "input": { - "type": "structure", - "required": [ - "ActionId" - ], - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "ActionId": {} - } - }, - "output": { - "resultWrapper": "ApplyEnvironmentManagedActionResult", - "type": "structure", - "members": { - "ActionId": {}, - "ActionDescription": {}, - "ActionType": {}, - "Status": {} - } - } - }, - "CheckDNSAvailability": { - "input": { - "type": "structure", - "required": [ - "CNAMEPrefix" - ], - "members": { - "CNAMEPrefix": {} - } - }, - "output": { - "resultWrapper": "CheckDNSAvailabilityResult", - "type": "structure", - "members": { - "Available": { - "type": "boolean" - }, - "FullyQualifiedCNAME": {} - } - } - }, - "ComposeEnvironments": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "GroupName": {}, - "VersionLabels": { - "type": "list", - "member": {} - } - } - }, - "output": { - "shape": "Si", - "resultWrapper": "ComposeEnvironmentsResult" - } - }, - "CreateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "Description": {} - } - }, - "output": { - "shape": "S14", - "resultWrapper": "CreateApplicationResult" - } - }, - "CreateApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "Description": {}, - "SourceBundle": { - "shape": "S19" - }, - "AutoCreateApplication": { - "type": "boolean" - }, - "Process": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S1e", - "resultWrapper": "CreateApplicationVersionResult" - } - }, - "CreateConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "SourceConfiguration": { - "type": "structure", - "members": { - "ApplicationName": {}, - "TemplateName": {} - } - }, - "EnvironmentId": {}, - "Description": {}, - "OptionSettings": { - "shape": "S1j" - } - } - }, - "output": { - "shape": "S1p", - "resultWrapper": "CreateConfigurationTemplateResult" - } - }, - "CreateEnvironment": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "EnvironmentName": {}, - "GroupName": {}, - "Description": {}, - "CNAMEPrefix": {}, - "Tier": { - "shape": "S10" - }, - "Tags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "VersionLabel": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "OptionSettings": { - "shape": "S1j" - }, - "OptionsToRemove": { - "shape": "S1w" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "CreateEnvironmentResult" - } - }, - "CreateStorageLocation": { - "output": { - "resultWrapper": "CreateStorageLocationResult", - "type": "structure", - "members": { - "S3Bucket": {} - } - } - }, - "DeleteApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "TerminateEnvByForce": { - "type": "boolean" - } - } - } - }, - "DeleteApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "DeleteSourceBundle": { - "type": "boolean" - } - } - } - }, - "DeleteConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {} - } - } - }, - "DeleteEnvironmentConfiguration": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "EnvironmentName" - ], - "members": { - "ApplicationName": {}, - "EnvironmentName": {} - } - } - }, - "DescribeApplicationVersions": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabels": { - "shape": "S16" - } - } - }, - "output": { - "resultWrapper": "DescribeApplicationVersionsResult", - "type": "structure", - "members": { - "ApplicationVersions": { - "type": "list", - "member": { - "shape": "S1f" - } - } - } - } - }, - "DescribeApplications": { - "input": { - "type": "structure", - "members": { - "ApplicationNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeApplicationsResult", - "type": "structure", - "members": { - "Applications": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - } - }, - "DescribeConfigurationOptions": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "SolutionStackName": {}, - "Options": { - "shape": "S1w" - } - } - }, - "output": { - "resultWrapper": "DescribeConfigurationOptionsResult", - "type": "structure", - "members": { - "SolutionStackName": {}, - "Options": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Namespace": {}, - "Name": {}, - "DefaultValue": {}, - "ChangeSeverity": {}, - "UserDefined": { - "type": "boolean" - }, - "ValueType": {}, - "ValueOptions": { - "type": "list", - "member": {} - }, - "MinValue": { - "type": "integer" - }, - "MaxValue": { - "type": "integer" - }, - "MaxLength": { - "type": "integer" - }, - "Regex": { - "type": "structure", - "members": { - "Pattern": {}, - "Label": {} - } - } - } - } - } - } - } - }, - "DescribeConfigurationSettings": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {} - } - }, - "output": { - "resultWrapper": "DescribeConfigurationSettingsResult", - "type": "structure", - "members": { - "ConfigurationSettings": { - "type": "list", - "member": { - "shape": "S1p" - } - } - } - } - }, - "DescribeEnvironmentHealth": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "AttributeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentHealthResult", - "type": "structure", - "members": { - "EnvironmentName": {}, - "HealthStatus": {}, - "Status": {}, - "Color": {}, - "Causes": { - "shape": "S2z" - }, - "ApplicationMetrics": { - "shape": "S31" - }, - "InstancesHealth": { - "type": "structure", - "members": { - "NoData": { - "type": "integer" - }, - "Unknown": { - "type": "integer" - }, - "Pending": { - "type": "integer" - }, - "Ok": { - "type": "integer" - }, - "Info": { - "type": "integer" - }, - "Warning": { - "type": "integer" - }, - "Degraded": { - "type": "integer" - }, - "Severe": { - "type": "integer" - } - } - }, - "RefreshedAt": { - "type": "timestamp" - } - } - } - }, - "DescribeEnvironmentManagedActionHistory": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentManagedActionHistoryResult", - "type": "structure", - "members": { - "ManagedActionHistoryItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionType": {}, - "ActionDescription": {}, - "FailureType": {}, - "Status": {}, - "FailureDescription": {}, - "ExecutedTime": { - "type": "timestamp" - }, - "FinishedTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEnvironmentManagedActions": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "Status": {} - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentManagedActionsResult", - "type": "structure", - "members": { - "ManagedActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActionId": {}, - "ActionDescription": {}, - "ActionType": {}, - "Status": {}, - "WindowStartTime": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeEnvironmentResources": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - }, - "output": { - "resultWrapper": "DescribeEnvironmentResourcesResult", - "type": "structure", - "members": { - "EnvironmentResources": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "AutoScalingGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {} - } - } - }, - "LaunchConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "LoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Triggers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "Queues": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "URL": {} - } - } - } - } - } - } - } - }, - "DescribeEnvironments": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "EnvironmentIds": { - "type": "list", - "member": {} - }, - "EnvironmentNames": { - "type": "list", - "member": {} - }, - "IncludeDeleted": { - "type": "boolean" - }, - "IncludedDeletedBackTo": { - "type": "timestamp" - } - } - }, - "output": { - "shape": "Si", - "resultWrapper": "DescribeEnvironmentsResult" - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "TemplateName": {}, - "EnvironmentId": {}, - "EnvironmentName": {}, - "RequestId": {}, - "Severity": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventDate": { - "type": "timestamp" - }, - "Message": {}, - "ApplicationName": {}, - "VersionLabel": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "RequestId": {}, - "Severity": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeInstancesHealth": { - "input": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "AttributeNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeInstancesHealthResult", - "type": "structure", - "members": { - "InstanceHealthList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "HealthStatus": {}, - "Color": {}, - "Causes": { - "shape": "S2z" - }, - "LaunchedAt": { - "type": "timestamp" - }, - "ApplicationMetrics": { - "shape": "S31" - }, - "System": { - "type": "structure", - "members": { - "CPUUtilization": { - "type": "structure", - "members": { - "User": { - "type": "double" - }, - "Nice": { - "type": "double" - }, - "System": { - "type": "double" - }, - "Idle": { - "type": "double" - }, - "IOWait": { - "type": "double" - }, - "IRQ": { - "type": "double" - }, - "SoftIRQ": { - "type": "double" - } - } - }, - "LoadAverage": { - "type": "list", - "member": { - "type": "double" - } - } - } - }, - "Deployment": { - "type": "structure", - "members": { - "VersionLabel": {}, - "DeploymentId": { - "type": "long" - }, - "Status": {}, - "DeploymentTime": { - "type": "timestamp" - } - } - }, - "AvailabilityZone": {}, - "InstanceType": {} - } - } - }, - "RefreshedAt": { - "type": "timestamp" - }, - "NextToken": {} - } - } - }, - "ListAvailableSolutionStacks": { - "output": { - "resultWrapper": "ListAvailableSolutionStacksResult", - "type": "structure", - "members": { - "SolutionStacks": { - "type": "list", - "member": {} - }, - "SolutionStackDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SolutionStackName": {}, - "PermittedFileTypes": { - "type": "list", - "member": {} - } - } - } - } - } - } - }, - "RebuildEnvironment": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "RequestEnvironmentInfo": { - "input": { - "type": "structure", - "required": [ - "InfoType" - ], - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "InfoType": {} - } - } - }, - "RestartAppServer": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {} - } - } - }, - "RetrieveEnvironmentInfo": { - "input": { - "type": "structure", - "required": [ - "InfoType" - ], - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "InfoType": {} - } - }, - "output": { - "resultWrapper": "RetrieveEnvironmentInfoResult", - "type": "structure", - "members": { - "EnvironmentInfo": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InfoType": {}, - "Ec2InstanceId": {}, - "SampleTimestamp": { - "type": "timestamp" - }, - "Message": {} - } - } - } - } - } - }, - "SwapEnvironmentCNAMEs": { - "input": { - "type": "structure", - "members": { - "SourceEnvironmentId": {}, - "SourceEnvironmentName": {}, - "DestinationEnvironmentId": {}, - "DestinationEnvironmentName": {} - } - } - }, - "TerminateEnvironment": { - "input": { - "type": "structure", - "members": { - "EnvironmentId": {}, - "EnvironmentName": {}, - "TerminateResources": { - "type": "boolean" - }, - "ForceTerminate": { - "type": "boolean" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "TerminateEnvironmentResult" - } - }, - "UpdateApplication": { - "input": { - "type": "structure", - "required": [ - "ApplicationName" - ], - "members": { - "ApplicationName": {}, - "Description": {} - } - }, - "output": { - "shape": "S14", - "resultWrapper": "UpdateApplicationResult" - } - }, - "UpdateApplicationVersion": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "VersionLabel" - ], - "members": { - "ApplicationName": {}, - "VersionLabel": {}, - "Description": {} - } - }, - "output": { - "shape": "S1e", - "resultWrapper": "UpdateApplicationVersionResult" - } - }, - "UpdateConfigurationTemplate": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "TemplateName" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "Description": {}, - "OptionSettings": { - "shape": "S1j" - }, - "OptionsToRemove": { - "shape": "S1w" - } - } - }, - "output": { - "shape": "S1p", - "resultWrapper": "UpdateConfigurationTemplateResult" - } - }, - "UpdateEnvironment": { - "input": { - "type": "structure", - "members": { - "ApplicationName": {}, - "EnvironmentId": {}, - "EnvironmentName": {}, - "GroupName": {}, - "Description": {}, - "Tier": { - "shape": "S10" - }, - "VersionLabel": {}, - "TemplateName": {}, - "SolutionStackName": {}, - "OptionSettings": { - "shape": "S1j" - }, - "OptionsToRemove": { - "shape": "S1w" - } - } - }, - "output": { - "shape": "Sk", - "resultWrapper": "UpdateEnvironmentResult" - } - }, - "ValidateConfigurationSettings": { - "input": { - "type": "structure", - "required": [ - "ApplicationName", - "OptionSettings" - ], - "members": { - "ApplicationName": {}, - "TemplateName": {}, - "EnvironmentName": {}, - "OptionSettings": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "ValidateConfigurationSettingsResult", - "type": "structure", - "members": { - "Messages": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Message": {}, - "Severity": {}, - "Namespace": {}, - "OptionName": {} - } - } - } - } - } - } - }, - "shapes": { - "Si": { - "type": "structure", - "members": { - "Environments": { - "type": "list", - "member": { - "shape": "Sk" - } - } - } - }, - "Sk": { - "type": "structure", - "members": { - "EnvironmentName": {}, - "EnvironmentId": {}, - "ApplicationName": {}, - "VersionLabel": {}, - "SolutionStackName": {}, - "TemplateName": {}, - "Description": {}, - "EndpointURL": {}, - "CNAME": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Status": {}, - "AbortableOperationInProgress": { - "type": "boolean" - }, - "Health": {}, - "HealthStatus": {}, - "Resources": { - "type": "structure", - "members": { - "LoadBalancer": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "Domain": {}, - "Listeners": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Protocol": {}, - "Port": { - "type": "integer" - } - } - } - } - } - } - } - }, - "Tier": { - "shape": "S10" - }, - "EnvironmentLinks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LinkName": {}, - "EnvironmentName": {} - } - } - } - } - }, - "S10": { - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Version": {} - } - }, - "S14": { - "type": "structure", - "members": { - "Application": { - "shape": "S15" - } - } - }, - "S15": { - "type": "structure", - "members": { - "ApplicationName": {}, - "Description": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Versions": { - "shape": "S16" - }, - "ConfigurationTemplates": { - "type": "list", - "member": {} - } - } - }, - "S16": { - "type": "list", - "member": {} - }, - "S19": { - "type": "structure", - "members": { - "S3Bucket": {}, - "S3Key": {} - } - }, - "S1e": { - "type": "structure", - "members": { - "ApplicationVersion": { - "shape": "S1f" - } - } - }, - "S1f": { - "type": "structure", - "members": { - "ApplicationName": {}, - "Description": {}, - "VersionLabel": {}, - "SourceBundle": { - "shape": "S19" - }, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "Status": {} - } - }, - "S1j": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceName": {}, - "Namespace": {}, - "OptionName": {}, - "Value": {} - } - } - }, - "S1p": { - "type": "structure", - "members": { - "SolutionStackName": {}, - "ApplicationName": {}, - "TemplateName": {}, - "Description": {}, - "EnvironmentName": {}, - "DeploymentStatus": {}, - "DateCreated": { - "type": "timestamp" - }, - "DateUpdated": { - "type": "timestamp" - }, - "OptionSettings": { - "shape": "S1j" - } - } - }, - "S1w": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceName": {}, - "Namespace": {}, - "OptionName": {} - } - } - }, - "S2z": { - "type": "list", - "member": {} - }, - "S31": { - "type": "structure", - "members": { - "Duration": { - "type": "integer" - }, - "RequestCount": { - "type": "integer" - }, - "StatusCodes": { - "type": "structure", - "members": { - "Status2xx": { - "type": "integer" - }, - "Status3xx": { - "type": "integer" - }, - "Status4xx": { - "type": "integer" - }, - "Status5xx": { - "type": "integer" - } - } - }, - "Latency": { - "type": "structure", - "members": { - "P999": { - "type": "double" - }, - "P99": { - "type": "double" - }, - "P95": { - "type": "double" - }, - "P90": { - "type": "double" - }, - "P85": { - "type": "double" - }, - "P75": { - "type": "double" - }, - "P50": { - "type": "double" - }, - "P10": { - "type": "double" - } - } - } - } - } - } -} -},{}],50:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeApplicationVersions": { - "result_key": "ApplicationVersions" - }, - "DescribeApplications": { - "result_key": "Applications" - }, - "DescribeConfigurationOptions": { - "result_key": "Options" - }, - "DescribeEnvironments": { - "result_key": "Environments" - }, - "DescribeEvents": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "ListAvailableSolutionStacks": { - "result_key": "SolutionStacks" - } - } -} - -},{}],51:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2012-06-01", - "endpointPrefix": "elasticloadbalancing", - "protocol": "query", - "serviceFullName": "Elastic Load Balancing", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames", - "Tags" - ], - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "AddTagsResult", - "type": "structure", - "members": {} - } - }, - "ApplySecurityGroupsToLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "SecurityGroups" - ], - "members": { - "LoadBalancerName": {}, - "SecurityGroups": { - "shape": "Sa" - } - } - }, - "output": { - "resultWrapper": "ApplySecurityGroupsToLoadBalancerResult", - "type": "structure", - "members": { - "SecurityGroups": { - "shape": "Sa" - } - } - } - }, - "AttachLoadBalancerToSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Subnets" - ], - "members": { - "LoadBalancerName": {}, - "Subnets": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "AttachLoadBalancerToSubnetsResult", - "type": "structure", - "members": { - "Subnets": { - "shape": "Se" - } - } - } - }, - "ConfigureHealthCheck": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "HealthCheck" - ], - "members": { - "LoadBalancerName": {}, - "HealthCheck": { - "shape": "Si" - } - } - }, - "output": { - "resultWrapper": "ConfigureHealthCheckResult", - "type": "structure", - "members": { - "HealthCheck": { - "shape": "Si" - } - } - } - }, - "CreateAppCookieStickinessPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName", - "CookieName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "CookieName": {} - } - }, - "output": { - "resultWrapper": "CreateAppCookieStickinessPolicyResult", - "type": "structure", - "members": {} - } - }, - "CreateLBCookieStickinessPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "CookieExpirationPeriod": { - "type": "long" - } - } - }, - "output": { - "resultWrapper": "CreateLBCookieStickinessPolicyResult", - "type": "structure", - "members": {} - } - }, - "CreateLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Listeners" - ], - "members": { - "LoadBalancerName": {}, - "Listeners": { - "shape": "Sx" - }, - "AvailabilityZones": { - "shape": "S13" - }, - "Subnets": { - "shape": "Se" - }, - "SecurityGroups": { - "shape": "Sa" - }, - "Scheme": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerResult", - "type": "structure", - "members": { - "DNSName": {} - } - } - }, - "CreateLoadBalancerListeners": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Listeners" - ], - "members": { - "LoadBalancerName": {}, - "Listeners": { - "shape": "Sx" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerListenersResult", - "type": "structure", - "members": {} - } - }, - "CreateLoadBalancerPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName", - "PolicyTypeName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {}, - "PolicyTypeName": {}, - "PolicyAttributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValue": {} - } - } - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancerListeners": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPorts" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPorts": { - "type": "list", - "member": { - "type": "integer" - } - } - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerListenersResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancerPolicy": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "PolicyName" - ], - "members": { - "LoadBalancerName": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeregisterInstancesFromLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Instances" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DeregisterInstancesFromLoadBalancerResult", - "type": "structure", - "members": { - "Instances": { - "shape": "S1p" - } - } - } - }, - "DescribeInstanceHealth": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "DescribeInstanceHealthResult", - "type": "structure", - "members": { - "InstanceStates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "State": {}, - "ReasonCode": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName" - ], - "members": { - "LoadBalancerName": {} - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerAttributesResult", - "type": "structure", - "members": { - "LoadBalancerAttributes": { - "shape": "S22" - } - } - } - }, - "DescribeLoadBalancerPolicies": { - "input": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "PolicyNames": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerPoliciesResult", - "type": "structure", - "members": { - "PolicyDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "PolicyTypeName": {}, - "PolicyAttributeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValue": {} - } - } - } - } - } - } - } - } - }, - "DescribeLoadBalancerPolicyTypes": { - "input": { - "type": "structure", - "members": { - "PolicyTypeNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerPolicyTypesResult", - "type": "structure", - "members": { - "PolicyTypeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyTypeName": {}, - "Description": {}, - "PolicyAttributeTypeDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeType": {}, - "Description": {}, - "DefaultValue": {}, - "Cardinality": {} - } - } - } - } - } - } - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "DNSName": {}, - "CanonicalHostedZoneName": {}, - "CanonicalHostedZoneNameID": {}, - "ListenerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Listener": { - "shape": "Sy" - }, - "PolicyNames": { - "shape": "S2k" - } - } - } - }, - "Policies": { - "type": "structure", - "members": { - "AppCookieStickinessPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "CookieName": {} - } - } - }, - "LBCookieStickinessPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PolicyName": {}, - "CookieExpirationPeriod": { - "type": "long" - } - } - } - }, - "OtherPolicies": { - "shape": "S2k" - } - } - }, - "BackendServerDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstancePort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2k" - } - } - } - }, - "AvailabilityZones": { - "shape": "S13" - }, - "Subnets": { - "shape": "Se" - }, - "VPCId": {}, - "Instances": { - "shape": "S1p" - }, - "HealthCheck": { - "shape": "Si" - }, - "SourceSecurityGroup": { - "type": "structure", - "members": { - "OwnerAlias": {}, - "GroupName": {} - } - }, - "SecurityGroups": { - "shape": "Sa" - }, - "CreatedTime": { - "type": "timestamp" - }, - "Scheme": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames" - ], - "members": { - "LoadBalancerNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TagDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerName": {}, - "Tags": { - "shape": "S4" - } - } - } - } - } - } - }, - "DetachLoadBalancerFromSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Subnets" - ], - "members": { - "LoadBalancerName": {}, - "Subnets": { - "shape": "Se" - } - } - }, - "output": { - "resultWrapper": "DetachLoadBalancerFromSubnetsResult", - "type": "structure", - "members": { - "Subnets": { - "shape": "Se" - } - } - } - }, - "DisableAvailabilityZonesForLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "AvailabilityZones" - ], - "members": { - "LoadBalancerName": {}, - "AvailabilityZones": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "DisableAvailabilityZonesForLoadBalancerResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S13" - } - } - } - }, - "EnableAvailabilityZonesForLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "AvailabilityZones" - ], - "members": { - "LoadBalancerName": {}, - "AvailabilityZones": { - "shape": "S13" - } - } - }, - "output": { - "resultWrapper": "EnableAvailabilityZonesForLoadBalancerResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S13" - } - } - } - }, - "ModifyLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerAttributes" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerAttributes": { - "shape": "S22" - } - } - }, - "output": { - "resultWrapper": "ModifyLoadBalancerAttributesResult", - "type": "structure", - "members": { - "LoadBalancerName": {}, - "LoadBalancerAttributes": { - "shape": "S22" - } - } - } - }, - "RegisterInstancesWithLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "Instances" - ], - "members": { - "LoadBalancerName": {}, - "Instances": { - "shape": "S1p" - } - } - }, - "output": { - "resultWrapper": "RegisterInstancesWithLoadBalancerResult", - "type": "structure", - "members": { - "Instances": { - "shape": "S1p" - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerNames", - "Tags" - ], - "members": { - "LoadBalancerNames": { - "shape": "S2" - }, - "Tags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {} - } - } - } - } - }, - "output": { - "resultWrapper": "RemoveTagsResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerListenerSSLCertificate": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPort", - "SSLCertificateId" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "SSLCertificateId": {} - } - }, - "output": { - "resultWrapper": "SetLoadBalancerListenerSSLCertificateResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerPoliciesForBackendServer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "InstancePort", - "PolicyNames" - ], - "members": { - "LoadBalancerName": {}, - "InstancePort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "SetLoadBalancerPoliciesForBackendServerResult", - "type": "structure", - "members": {} - } - }, - "SetLoadBalancerPoliciesOfListener": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerName", - "LoadBalancerPort", - "PolicyNames" - ], - "members": { - "LoadBalancerName": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "PolicyNames": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "SetLoadBalancerPoliciesOfListenerResult", - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sa": { - "type": "list", - "member": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Si": { - "type": "structure", - "required": [ - "Target", - "Interval", - "Timeout", - "UnhealthyThreshold", - "HealthyThreshold" - ], - "members": { - "Target": {}, - "Interval": { - "type": "integer" - }, - "Timeout": { - "type": "integer" - }, - "UnhealthyThreshold": { - "type": "integer" - }, - "HealthyThreshold": { - "type": "integer" - } - } - }, - "Sx": { - "type": "list", - "member": { - "shape": "Sy" - } - }, - "Sy": { - "type": "structure", - "required": [ - "Protocol", - "LoadBalancerPort", - "InstancePort" - ], - "members": { - "Protocol": {}, - "LoadBalancerPort": { - "type": "integer" - }, - "InstanceProtocol": {}, - "InstancePort": { - "type": "integer" - }, - "SSLCertificateId": {} - } - }, - "S13": { - "type": "list", - "member": {} - }, - "S1p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "S22": { - "type": "structure", - "members": { - "CrossZoneLoadBalancing": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - } - } - }, - "AccessLog": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "S3BucketName": {}, - "EmitInterval": { - "type": "integer" - }, - "S3BucketPrefix": {} - } - }, - "ConnectionDraining": { - "type": "structure", - "required": [ - "Enabled" - ], - "members": { - "Enabled": { - "type": "boolean" - }, - "Timeout": { - "type": "integer" - } - } - }, - "ConnectionSettings": { - "type": "structure", - "required": [ - "IdleTimeout" - ], - "members": { - "IdleTimeout": { - "type": "integer" - } - } - }, - "AdditionalAttributes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S2k": { - "type": "list", - "member": {} - } - } -} -},{}],52:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeInstanceHealth": { - "result_key": "InstanceStates" - }, - "DescribeLoadBalancerPolicies": { - "result_key": "PolicyDescriptions" - }, - "DescribeLoadBalancerPolicyTypes": { - "result_key": "PolicyTypeDescriptions" - }, - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancerDescriptions" - } - } -} - -},{}],53:[function(require,module,exports){ -module.exports={ - "version":2, - "waiters":{ - "InstanceDeregistered": { - "delay": 15, - "operation": "DescribeInstanceHealth", - "maxAttempts": 40, - "acceptors": [ - { - "expected": "OutOfService", - "matcher": "pathAll", - "state": "success", - "argument": "InstanceStates[].State" - }, - { - "matcher": "error", - "expected": "InvalidInstance", - "state": "success" - } - ] - }, - "AnyInstanceInService":{ - "acceptors":[ - { - "argument":"InstanceStates[].State", - "expected":"InService", - "matcher":"pathAny", - "state":"success" - } - ], - "delay":15, - "maxAttempts":40, - "operation":"DescribeInstanceHealth" - }, - "InstanceInService":{ - "acceptors":[ - { - "argument":"InstanceStates[].State", - "expected":"InService", - "matcher":"pathAll", - "state":"success" - } - ], - "delay":15, - "maxAttempts":40, - "operation":"DescribeInstanceHealth" - } - } -} - -},{}],54:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-01", - "endpointPrefix": "elasticloadbalancing", - "protocol": "query", - "serviceAbbreviation": "Elastic Load Balancing v2", - "serviceFullName": "Elastic Load Balancing", - "signatureVersion": "v4", - "xmlNamespace": "http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns", - "Tags" - ], - "members": { - "ResourceArns": { - "shape": "S2" - }, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "AddTagsResult", - "type": "structure", - "members": {} - } - }, - "CreateListener": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Protocol", - "Port", - "DefaultActions" - ], - "members": { - "LoadBalancerArn": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "SslPolicy": {}, - "Certificates": { - "shape": "Se" - }, - "DefaultActions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "CreateListenerResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sm" - } - } - } - }, - "CreateLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "Name", - "Subnets" - ], - "members": { - "Name": {}, - "Subnets": { - "shape": "Sr" - }, - "SecurityGroups": { - "shape": "St" - }, - "Scheme": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "resultWrapper": "CreateLoadBalancerResult", - "type": "structure", - "members": { - "LoadBalancers": { - "shape": "Sx" - } - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "ListenerArn", - "Conditions", - "Priority", - "Actions" - ], - "members": { - "ListenerArn": {}, - "Conditions": { - "shape": "S1b" - }, - "Priority": { - "type": "integer" - }, - "Actions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "CreateRuleResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "CreateTargetGroup": { - "input": { - "type": "structure", - "required": [ - "Name", - "Protocol", - "Port", - "VpcId" - ], - "members": { - "Name": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckPath": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "Matcher": { - "shape": "S1u" - } - } - }, - "output": { - "resultWrapper": "CreateTargetGroupResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S1x" - } - } - } - }, - "DeleteListener": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {} - } - }, - "output": { - "resultWrapper": "DeleteListenerResult", - "type": "structure", - "members": {} - } - }, - "DeleteLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn" - ], - "members": { - "LoadBalancerArn": {} - } - }, - "output": { - "resultWrapper": "DeleteLoadBalancerResult", - "type": "structure", - "members": {} - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleArn" - ], - "members": { - "RuleArn": {} - } - }, - "output": { - "resultWrapper": "DeleteRuleResult", - "type": "structure", - "members": {} - } - }, - "DeleteTargetGroup": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {} - } - }, - "output": { - "resultWrapper": "DeleteTargetGroupResult", - "type": "structure", - "members": {} - } - }, - "DeregisterTargets": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Targets" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S29" - } - } - }, - "output": { - "resultWrapper": "DeregisterTargetsResult", - "type": "structure", - "members": {} - } - }, - "DescribeListeners": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "ListenerArns": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeListenersResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sm" - }, - "NextMarker": {} - } - } - }, - "DescribeLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn" - ], - "members": { - "LoadBalancerArn": {} - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancerAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S2k" - } - } - } - }, - "DescribeLoadBalancers": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArns": { - "shape": "S1z" - }, - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeLoadBalancersResult", - "type": "structure", - "members": { - "LoadBalancers": { - "shape": "Sx" - }, - "NextMarker": {} - } - } - }, - "DescribeRules": { - "input": { - "type": "structure", - "members": { - "ListenerArn": {}, - "RuleArns": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "DescribeRulesResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "DescribeSSLPolicies": { - "input": { - "type": "structure", - "members": { - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeSSLPoliciesResult", - "type": "structure", - "members": { - "SslPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SslProtocols": { - "type": "list", - "member": {} - }, - "Ciphers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Priority": { - "type": "integer" - } - } - } - }, - "Name": {} - } - } - }, - "NextMarker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns" - ], - "members": { - "ResourceArns": { - "shape": "S2" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TagDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ResourceArn": {}, - "Tags": { - "shape": "S4" - } - } - } - } - } - } - }, - "DescribeTargetGroupAttributes": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {} - } - }, - "output": { - "resultWrapper": "DescribeTargetGroupAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S3b" - } - } - } - }, - "DescribeTargetGroups": { - "input": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "TargetGroupArns": { - "type": "list", - "member": {} - }, - "Names": { - "type": "list", - "member": {} - }, - "Marker": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribeTargetGroupsResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S1x" - }, - "NextMarker": {} - } - } - }, - "DescribeTargetHealth": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S29" - } - } - }, - "output": { - "resultWrapper": "DescribeTargetHealthResult", - "type": "structure", - "members": { - "TargetHealthDescriptions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Target": { - "shape": "S2a" - }, - "HealthCheckPort": {}, - "TargetHealth": { - "type": "structure", - "members": { - "State": {}, - "Reason": {}, - "Description": {} - } - } - } - } - } - } - } - }, - "ModifyListener": { - "input": { - "type": "structure", - "required": [ - "ListenerArn" - ], - "members": { - "ListenerArn": {}, - "Port": { - "type": "integer" - }, - "Protocol": {}, - "SslPolicy": {}, - "Certificates": { - "shape": "Se" - }, - "DefaultActions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "ModifyListenerResult", - "type": "structure", - "members": { - "Listeners": { - "shape": "Sm" - } - } - } - }, - "ModifyLoadBalancerAttributes": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Attributes" - ], - "members": { - "LoadBalancerArn": {}, - "Attributes": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "ModifyLoadBalancerAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S2k" - } - } - } - }, - "ModifyRule": { - "input": { - "type": "structure", - "required": [ - "RuleArn" - ], - "members": { - "RuleArn": {}, - "Conditions": { - "shape": "S1b" - }, - "Actions": { - "shape": "Sh" - } - } - }, - "output": { - "resultWrapper": "ModifyRuleResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "ModifyTargetGroup": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn" - ], - "members": { - "TargetGroupArn": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckPath": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "Matcher": { - "shape": "S1u" - } - } - }, - "output": { - "resultWrapper": "ModifyTargetGroupResult", - "type": "structure", - "members": { - "TargetGroups": { - "shape": "S1x" - } - } - } - }, - "ModifyTargetGroupAttributes": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Attributes" - ], - "members": { - "TargetGroupArn": {}, - "Attributes": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "ModifyTargetGroupAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "S3b" - } - } - } - }, - "RegisterTargets": { - "input": { - "type": "structure", - "required": [ - "TargetGroupArn", - "Targets" - ], - "members": { - "TargetGroupArn": {}, - "Targets": { - "shape": "S29" - } - } - }, - "output": { - "resultWrapper": "RegisterTargetsResult", - "type": "structure", - "members": {} - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceArns", - "TagKeys" - ], - "members": { - "ResourceArns": { - "shape": "S2" - }, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "RemoveTagsResult", - "type": "structure", - "members": {} - } - }, - "SetRulePriorities": { - "input": { - "type": "structure", - "required": [ - "RulePriorities" - ], - "members": { - "RulePriorities": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RuleArn": {}, - "Priority": { - "type": "integer" - } - } - } - } - } - }, - "output": { - "resultWrapper": "SetRulePrioritiesResult", - "type": "structure", - "members": { - "Rules": { - "shape": "S1i" - } - } - } - }, - "SetSecurityGroups": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "SecurityGroups" - ], - "members": { - "LoadBalancerArn": {}, - "SecurityGroups": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "SetSecurityGroupsResult", - "type": "structure", - "members": { - "SecurityGroupIds": { - "shape": "St" - } - } - } - }, - "SetSubnets": { - "input": { - "type": "structure", - "required": [ - "LoadBalancerArn", - "Subnets" - ], - "members": { - "LoadBalancerArn": {}, - "Subnets": { - "shape": "Sr" - } - } - }, - "output": { - "resultWrapper": "SetSubnetsResult", - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "S17" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Se": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CertificateArn": {} - } - } - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Type", - "TargetGroupArn" - ], - "members": { - "Type": {}, - "TargetGroupArn": {} - } - } - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ListenerArn": {}, - "LoadBalancerArn": {}, - "Port": { - "type": "integer" - }, - "Protocol": {}, - "Certificates": { - "shape": "Se" - }, - "SslPolicy": {}, - "DefaultActions": { - "shape": "Sh" - } - } - } - }, - "Sr": { - "type": "list", - "member": {} - }, - "St": { - "type": "list", - "member": {} - }, - "Sx": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LoadBalancerArn": {}, - "DNSName": {}, - "CanonicalHostedZoneId": {}, - "CreatedTime": { - "type": "timestamp" - }, - "LoadBalancerName": {}, - "Scheme": {}, - "VpcId": {}, - "State": { - "type": "structure", - "members": { - "Code": {}, - "Reason": {} - } - }, - "Type": {}, - "AvailabilityZones": { - "shape": "S17" - }, - "SecurityGroups": { - "shape": "St" - } - } - } - }, - "S17": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ZoneName": {}, - "SubnetId": {} - } - } - }, - "S1b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Field": {}, - "Values": { - "type": "list", - "member": {} - } - } - } - }, - "S1i": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RuleArn": {}, - "Priority": {}, - "Conditions": { - "shape": "S1b" - }, - "Actions": { - "shape": "Sh" - }, - "IsDefault": { - "type": "boolean" - } - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "HttpCode" - ], - "members": { - "HttpCode": {} - } - }, - "S1x": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetGroupArn": {}, - "TargetGroupName": {}, - "Protocol": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "HealthCheckProtocol": {}, - "HealthCheckPort": {}, - "HealthCheckIntervalSeconds": { - "type": "integer" - }, - "HealthCheckTimeoutSeconds": { - "type": "integer" - }, - "HealthyThresholdCount": { - "type": "integer" - }, - "UnhealthyThresholdCount": { - "type": "integer" - }, - "HealthCheckPath": {}, - "Matcher": { - "shape": "S1u" - }, - "LoadBalancerArns": { - "shape": "S1z" - } - } - } - }, - "S1z": { - "type": "list", - "member": {} - }, - "S29": { - "type": "list", - "member": { - "shape": "S2a" - } - }, - "S2a": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {}, - "Port": { - "type": "integer" - } - } - }, - "S2k": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S3b": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } -} -},{}],55:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeTargetGroups": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "TargetGroups" - }, - "DescribeListeners": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "Listeners" - }, - "DescribeLoadBalancers": { - "input_token": "Marker", - "output_token": "NextMarker", - "result_key": "LoadBalancers" - } - } -} - - -},{}],56:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2009-03-31", - "endpointPrefix": "elasticmapreduce", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon EMR", - "serviceFullName": "Amazon Elastic MapReduce", - "signatureVersion": "v4", - "targetPrefix": "ElasticMapReduce", - "timestampFormat": "unixTimestamp" - }, - "operations": { - "AddInstanceGroups": { - "input": { - "type": "structure", - "required": [ - "InstanceGroups", - "JobFlowId" - ], - "members": { - "InstanceGroups": { - "shape": "S2" - }, - "JobFlowId": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobFlowId": {}, - "InstanceGroupIds": { - "type": "list", - "member": {} - } - } - } - }, - "AddJobFlowSteps": { - "input": { - "type": "structure", - "required": [ - "JobFlowId", - "Steps" - ], - "members": { - "JobFlowId": {}, - "Steps": { - "shape": "Sl" - } - } - }, - "output": { - "type": "structure", - "members": { - "StepIds": { - "type": "list", - "member": {} - } - } - } - }, - "AddTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "Tags" - ], - "members": { - "ResourceId": {}, - "Tags": { - "shape": "Sx" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name", - "SecurityConfiguration" - ], - "members": { - "Name": {}, - "SecurityConfiguration": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Name", - "CreationDateTime" - ], - "members": { - "Name": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "DeleteSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Cluster": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "shape": "S19" - }, - "Ec2InstanceAttributes": { - "type": "structure", - "members": { - "Ec2KeyName": {}, - "Ec2SubnetId": {}, - "Ec2AvailabilityZone": {}, - "IamInstanceProfile": {}, - "EmrManagedMasterSecurityGroup": {}, - "EmrManagedSlaveSecurityGroup": {}, - "ServiceAccessSecurityGroup": {}, - "AdditionalMasterSecurityGroups": { - "shape": "S1f" - }, - "AdditionalSlaveSecurityGroups": { - "shape": "S1f" - } - } - }, - "LogUri": {}, - "RequestedAmiVersion": {}, - "RunningAmiVersion": {}, - "ReleaseLabel": {}, - "AutoTerminate": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "Applications": { - "shape": "S1h" - }, - "Tags": { - "shape": "Sx" - }, - "ServiceRole": {}, - "NormalizedInstanceHours": { - "type": "integer" - }, - "MasterPublicDnsName": {}, - "Configurations": { - "shape": "S9" - }, - "SecurityConfiguration": {} - } - } - } - } - }, - "DescribeJobFlows": { - "input": { - "type": "structure", - "members": { - "CreatedAfter": { - "type": "timestamp" - }, - "CreatedBefore": { - "type": "timestamp" - }, - "JobFlowIds": { - "shape": "Ss" - }, - "JobFlowStates": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "JobFlows": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "JobFlowId", - "Name", - "ExecutionStatusDetail", - "Instances" - ], - "members": { - "JobFlowId": {}, - "Name": {}, - "LogUri": {}, - "AmiVersion": {}, - "ExecutionStatusDetail": { - "type": "structure", - "required": [ - "State", - "CreationDateTime" - ], - "members": { - "State": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - }, - "LastStateChangeReason": {} - } - }, - "Instances": { - "type": "structure", - "required": [ - "MasterInstanceType", - "SlaveInstanceType", - "InstanceCount" - ], - "members": { - "MasterInstanceType": {}, - "MasterPublicDnsName": {}, - "MasterInstanceId": {}, - "SlaveInstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Market", - "InstanceRole", - "InstanceType", - "InstanceRequestCount", - "InstanceRunningCount", - "State", - "CreationDateTime" - ], - "members": { - "InstanceGroupId": {}, - "Name": {}, - "Market": {}, - "InstanceRole": {}, - "BidPrice": {}, - "InstanceType": {}, - "InstanceRequestCount": { - "type": "integer" - }, - "InstanceRunningCount": { - "type": "integer" - }, - "State": {}, - "LastStateChangeReason": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - }, - "NormalizedInstanceHours": { - "type": "integer" - }, - "Ec2KeyName": {}, - "Ec2SubnetId": {}, - "Placement": { - "shape": "S1u" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "HadoopVersion": {} - } - }, - "Steps": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "StepConfig", - "ExecutionStatusDetail" - ], - "members": { - "StepConfig": { - "shape": "Sm" - }, - "ExecutionStatusDetail": { - "type": "structure", - "required": [ - "State", - "CreationDateTime" - ], - "members": { - "State": {}, - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - }, - "LastStateChangeReason": {} - } - } - } - } - }, - "BootstrapActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BootstrapActionConfig": { - "shape": "S21" - } - } - } - }, - "SupportedProducts": { - "shape": "S23" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "JobFlowRole": {}, - "ServiceRole": {} - } - } - } - } - }, - "deprecated": true - }, - "DescribeSecurityConfiguration": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "SecurityConfiguration": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "DescribeStep": { - "input": { - "type": "structure", - "required": [ - "ClusterId", - "StepId" - ], - "members": { - "ClusterId": {}, - "StepId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Step": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Config": { - "shape": "S2a" - }, - "ActionOnFailure": {}, - "Status": { - "shape": "S2b" - } - } - } - } - } - }, - "ListBootstrapActions": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "BootstrapActions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "ScriptPath": {}, - "Args": { - "shape": "S1f" - } - } - } - }, - "Marker": {} - } - } - }, - "ListClusters": { - "input": { - "type": "structure", - "members": { - "CreatedAfter": { - "type": "timestamp" - }, - "CreatedBefore": { - "type": "timestamp" - }, - "ClusterStates": { - "type": "list", - "member": {} - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Clusters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Status": { - "shape": "S19" - }, - "NormalizedInstanceHours": { - "type": "integer" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstanceGroups": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Market": {}, - "InstanceGroupType": {}, - "BidPrice": {}, - "InstanceType": {}, - "RequestedInstanceCount": { - "type": "integer" - }, - "RunningInstanceCount": { - "type": "integer" - }, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "Configurations": { - "shape": "S9" - }, - "EbsBlockDevices": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeSpecification": { - "shape": "Sg" - }, - "Device": {} - } - } - }, - "EbsOptimized": { - "type": "boolean" - }, - "ShrinkPolicy": { - "shape": "S33" - } - } - } - }, - "Marker": {} - } - } - }, - "ListInstances": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "InstanceGroupId": {}, - "InstanceGroupTypes": { - "type": "list", - "member": {} - }, - "InstanceStates": { - "type": "list", - "member": {} - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Ec2InstanceId": {}, - "PublicDnsName": {}, - "PublicIpAddress": {}, - "PrivateDnsName": {}, - "PrivateIpAddress": {}, - "Status": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "InstanceGroupId": {}, - "EbsVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Device": {}, - "VolumeId": {} - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "ListSecurityConfigurations": { - "input": { - "type": "structure", - "members": { - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "SecurityConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "CreationDateTime": { - "type": "timestamp" - } - } - } - }, - "Marker": {} - } - } - }, - "ListSteps": { - "input": { - "type": "structure", - "required": [ - "ClusterId" - ], - "members": { - "ClusterId": {}, - "StepStates": { - "type": "list", - "member": {} - }, - "StepIds": { - "shape": "Ss" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Steps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Config": { - "shape": "S2a" - }, - "ActionOnFailure": {}, - "Status": { - "shape": "S2b" - } - } - } - }, - "Marker": {} - } - } - }, - "ModifyInstanceGroups": { - "input": { - "type": "structure", - "members": { - "InstanceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceGroupId" - ], - "members": { - "InstanceGroupId": {}, - "InstanceCount": { - "type": "integer" - }, - "EC2InstanceIdsToTerminate": { - "type": "list", - "member": {} - }, - "ShrinkPolicy": { - "shape": "S33" - } - } - } - } - } - } - }, - "RemoveTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceId": {}, - "TagKeys": { - "shape": "S1f" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RunJobFlow": { - "input": { - "type": "structure", - "required": [ - "Name", - "Instances" - ], - "members": { - "Name": {}, - "LogUri": {}, - "AdditionalInfo": {}, - "AmiVersion": {}, - "ReleaseLabel": {}, - "Instances": { - "type": "structure", - "members": { - "MasterInstanceType": {}, - "SlaveInstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "InstanceGroups": { - "shape": "S2" - }, - "Ec2KeyName": {}, - "Placement": { - "shape": "S1u" - }, - "KeepJobFlowAliveWhenNoSteps": { - "type": "boolean" - }, - "TerminationProtected": { - "type": "boolean" - }, - "HadoopVersion": {}, - "Ec2SubnetId": {}, - "EmrManagedMasterSecurityGroup": {}, - "EmrManagedSlaveSecurityGroup": {}, - "ServiceAccessSecurityGroup": {}, - "AdditionalMasterSecurityGroups": { - "shape": "S41" - }, - "AdditionalSlaveSecurityGroups": { - "shape": "S41" - } - } - }, - "Steps": { - "shape": "Sl" - }, - "BootstrapActions": { - "type": "list", - "member": { - "shape": "S21" - } - }, - "SupportedProducts": { - "shape": "S23" - }, - "NewSupportedProducts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Args": { - "shape": "Ss" - } - } - } - }, - "Applications": { - "shape": "S1h" - }, - "Configurations": { - "shape": "S9" - }, - "VisibleToAllUsers": { - "type": "boolean" - }, - "JobFlowRole": {}, - "ServiceRole": {}, - "Tags": { - "shape": "Sx" - }, - "SecurityConfiguration": {} - } - }, - "output": { - "type": "structure", - "members": { - "JobFlowId": {} - } - } - }, - "SetTerminationProtection": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds", - "TerminationProtected" - ], - "members": { - "JobFlowIds": { - "shape": "Ss" - }, - "TerminationProtected": { - "type": "boolean" - } - } - } - }, - "SetVisibleToAllUsers": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds", - "VisibleToAllUsers" - ], - "members": { - "JobFlowIds": { - "shape": "Ss" - }, - "VisibleToAllUsers": { - "type": "boolean" - } - } - } - }, - "TerminateJobFlows": { - "input": { - "type": "structure", - "required": [ - "JobFlowIds" - ], - "members": { - "JobFlowIds": { - "shape": "Ss" - } - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "InstanceRole", - "InstanceType", - "InstanceCount" - ], - "members": { - "Name": {}, - "Market": {}, - "InstanceRole": {}, - "BidPrice": {}, - "InstanceType": {}, - "InstanceCount": { - "type": "integer" - }, - "Configurations": { - "shape": "S9" - }, - "EbsConfiguration": { - "type": "structure", - "members": { - "EbsBlockDeviceConfigs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "VolumeSpecification" - ], - "members": { - "VolumeSpecification": { - "shape": "Sg" - }, - "VolumesPerInstance": { - "type": "integer" - } - } - } - }, - "EbsOptimized": { - "type": "boolean" - } - } - } - } - } - }, - "S9": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Classification": {}, - "Configurations": { - "shape": "S9" - }, - "Properties": { - "shape": "Sc" - } - } - } - }, - "Sc": { - "type": "map", - "key": {}, - "value": {} - }, - "Sg": { - "type": "structure", - "required": [ - "VolumeType", - "SizeInGB" - ], - "members": { - "VolumeType": {}, - "Iops": { - "type": "integer" - }, - "SizeInGB": { - "type": "integer" - } - } - }, - "Sl": { - "type": "list", - "member": { - "shape": "Sm" - } - }, - "Sm": { - "type": "structure", - "required": [ - "Name", - "HadoopJarStep" - ], - "members": { - "Name": {}, - "ActionOnFailure": {}, - "HadoopJarStep": { - "type": "structure", - "required": [ - "Jar" - ], - "members": { - "Properties": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Jar": {}, - "MainClass": {}, - "Args": { - "shape": "Ss" - } - } - } - } - }, - "Ss": { - "type": "list", - "member": {} - }, - "Sx": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S19": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "ReadyDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "S1f": { - "type": "list", - "member": {} - }, - "S1h": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Version": {}, - "Args": { - "shape": "S1f" - }, - "AdditionalInfo": { - "shape": "Sc" - } - } - } - }, - "S1u": { - "type": "structure", - "required": [ - "AvailabilityZone" - ], - "members": { - "AvailabilityZone": {} - } - }, - "S21": { - "type": "structure", - "required": [ - "Name", - "ScriptBootstrapAction" - ], - "members": { - "Name": {}, - "ScriptBootstrapAction": { - "type": "structure", - "required": [ - "Path" - ], - "members": { - "Path": {}, - "Args": { - "shape": "Ss" - } - } - } - } - }, - "S23": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "structure", - "members": { - "Jar": {}, - "Properties": { - "shape": "Sc" - }, - "MainClass": {}, - "Args": { - "shape": "S1f" - } - } - }, - "S2b": { - "type": "structure", - "members": { - "State": {}, - "StateChangeReason": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - }, - "FailureDetails": { - "type": "structure", - "members": { - "Reason": {}, - "Message": {}, - "LogFile": {} - } - }, - "Timeline": { - "type": "structure", - "members": { - "CreationDateTime": { - "type": "timestamp" - }, - "StartDateTime": { - "type": "timestamp" - }, - "EndDateTime": { - "type": "timestamp" - } - } - } - } - }, - "S33": { - "type": "structure", - "members": { - "DecommissionTimeout": { - "type": "integer" - }, - "InstanceResizePolicy": { - "type": "structure", - "members": { - "InstancesToTerminate": { - "shape": "S35" - }, - "InstancesToProtect": { - "shape": "S35" - }, - "InstanceTerminationTimeout": { - "type": "integer" - } - } - } - } - }, - "S35": { - "type": "list", - "member": {} - }, - "S41": { - "type": "list", - "member": {} - } - } -} -},{}],57:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeJobFlows": { - "result_key": "JobFlows" - }, - "ListBootstrapActions": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "BootstrapActions" - }, - "ListClusters": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Clusters" - }, - "ListInstanceGroups": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "InstanceGroups" - }, - "ListInstances": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Instances" - }, - "ListSteps": { - "input_token": "Marker", - "output_token": "Marker", - "result_key": "Steps" - } - } -} - -},{}],58:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "ClusterRunning": { - "delay": 30, - "operation": "DescribeCluster", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "RUNNING" - }, - { - "state": "success", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "WAITING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATING" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Cluster.Status.State", - "expected": "TERMINATED_WITH_ERRORS" - } - ] - }, - "StepComplete": { - "delay": 30, - "operation": "DescribeStep", - "maxAttempts": 60, - "acceptors": [ - { - "state": "success", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "COMPLETED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "FAILED" - }, - { - "state": "failure", - "matcher": "path", - "argument": "Step.Status.State", - "expected": "CANCELLED" - } - ] - } - } -} - -},{}],59:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2012-09-25", - "endpointPrefix": "elastictranscoder", - "protocol": "rest-json", - "serviceFullName": "Amazon Elastic Transcoder", - "signatureVersion": "v4" - }, - "operations": { - "CancelJob": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/jobs/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateJob": { - "http": { - "requestUri": "/2012-09-25/jobs", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "PipelineId", - "Input" - ], - "members": { - "PipelineId": {}, - "Input": { - "shape": "S5" - }, - "Output": { - "shape": "Sk" - }, - "Outputs": { - "type": "list", - "member": { - "shape": "Sk" - } - }, - "OutputKeyPrefix": {}, - "Playlists": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Format": {}, - "OutputKeys": { - "shape": "S1j" - }, - "HlsContentProtection": { - "shape": "S1k" - }, - "PlayReadyDrm": { - "shape": "S1o" - } - } - } - }, - "UserMetadata": { - "shape": "S1t" - } - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S1w" - } - } - } - }, - "CreatePipeline": { - "http": { - "requestUri": "/2012-09-25/pipelines", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "InputBucket", - "Role" - ], - "members": { - "Name": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S28" - }, - "ContentConfig": { - "shape": "S2a" - }, - "ThumbnailConfig": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - }, - "Warnings": { - "shape": "S2l" - } - } - } - }, - "CreatePreset": { - "http": { - "requestUri": "/2012-09-25/presets", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "Name", - "Container" - ], - "members": { - "Name": {}, - "Description": {}, - "Container": {}, - "Video": { - "shape": "S2p" - }, - "Audio": { - "shape": "S35" - }, - "Thumbnails": { - "shape": "S3g" - } - } - }, - "output": { - "type": "structure", - "members": { - "Preset": { - "shape": "S3k" - }, - "Warning": {} - } - } - }, - "DeletePipeline": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/pipelines/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeletePreset": { - "http": { - "method": "DELETE", - "requestUri": "/2012-09-25/presets/{Id}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListJobsByPipeline": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobsByPipeline/{PipelineId}" - }, - "input": { - "type": "structure", - "required": [ - "PipelineId" - ], - "members": { - "PipelineId": { - "location": "uri", - "locationName": "PipelineId" - }, - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "shape": "S3t" - }, - "NextPageToken": {} - } - } - }, - "ListJobsByStatus": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobsByStatus/{Status}" - }, - "input": { - "type": "structure", - "required": [ - "Status" - ], - "members": { - "Status": { - "location": "uri", - "locationName": "Status" - }, - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Jobs": { - "shape": "S3t" - }, - "NextPageToken": {} - } - } - }, - "ListPipelines": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/pipelines" - }, - "input": { - "type": "structure", - "members": { - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipelines": { - "type": "list", - "member": { - "shape": "S2j" - } - }, - "NextPageToken": {} - } - } - }, - "ListPresets": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/presets" - }, - "input": { - "type": "structure", - "members": { - "Ascending": { - "location": "querystring", - "locationName": "Ascending" - }, - "PageToken": { - "location": "querystring", - "locationName": "PageToken" - } - } - }, - "output": { - "type": "structure", - "members": { - "Presets": { - "type": "list", - "member": { - "shape": "S3k" - } - }, - "NextPageToken": {} - } - } - }, - "ReadJob": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/jobs/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Job": { - "shape": "S1w" - } - } - } - }, - "ReadPipeline": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/pipelines/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - }, - "Warnings": { - "shape": "S2l" - } - } - } - }, - "ReadPreset": { - "http": { - "method": "GET", - "requestUri": "/2012-09-25/presets/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": { - "Preset": { - "shape": "S3k" - } - } - } - }, - "TestRole": { - "http": { - "requestUri": "/2012-09-25/roleTests", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Role", - "InputBucket", - "OutputBucket", - "Topics" - ], - "members": { - "Role": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Topics": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "Success": {}, - "Messages": { - "type": "list", - "member": {} - } - } - } - }, - "UpdatePipeline": { - "http": { - "method": "PUT", - "requestUri": "/2012-09-25/pipelines/{Id}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Name": {}, - "InputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S28" - }, - "ContentConfig": { - "shape": "S2a" - }, - "ThumbnailConfig": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - }, - "Warnings": { - "shape": "S2l" - } - } - } - }, - "UpdatePipelineNotifications": { - "http": { - "requestUri": "/2012-09-25/pipelines/{Id}/notifications" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Notifications" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Notifications": { - "shape": "S28" - } - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - } - } - } - }, - "UpdatePipelineStatus": { - "http": { - "requestUri": "/2012-09-25/pipelines/{Id}/status" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Status" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Status": {} - } - }, - "output": { - "type": "structure", - "members": { - "Pipeline": { - "shape": "S2j" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Key": {}, - "FrameRate": {}, - "Resolution": {}, - "AspectRatio": {}, - "Interlaced": {}, - "Container": {}, - "Encryption": { - "shape": "Sc" - }, - "DetectedProperties": { - "type": "structure", - "members": { - "Width": { - "type": "integer" - }, - "Height": { - "type": "integer" - }, - "FrameRate": {}, - "FileSize": { - "type": "long" - }, - "DurationMillis": { - "type": "long" - } - } - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Mode": {}, - "Key": {}, - "KeyMd5": {}, - "InitializationVector": {} - } - }, - "Sk": { - "type": "structure", - "members": { - "Key": {}, - "ThumbnailPattern": {}, - "ThumbnailEncryption": { - "shape": "Sc" - }, - "Rotate": {}, - "PresetId": {}, - "SegmentDuration": {}, - "Watermarks": { - "shape": "So" - }, - "AlbumArt": { - "shape": "Ss" - }, - "Composition": { - "shape": "S10" - }, - "Captions": { - "shape": "S14" - }, - "Encryption": { - "shape": "Sc" - } - } - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PresetWatermarkId": {}, - "InputKey": {}, - "Encryption": { - "shape": "Sc" - } - } - } - }, - "Ss": { - "type": "structure", - "members": { - "MergePolicy": {}, - "Artwork": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InputKey": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "PaddingPolicy": {}, - "AlbumArtFormat": {}, - "Encryption": { - "shape": "Sc" - } - } - } - } - } - }, - "S10": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TimeSpan": { - "type": "structure", - "members": { - "StartTime": {}, - "Duration": {} - } - } - } - } - }, - "S14": { - "type": "structure", - "members": { - "MergePolicy": {}, - "CaptionSources": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Language": {}, - "TimeOffset": {}, - "Label": {}, - "Encryption": { - "shape": "Sc" - } - } - } - }, - "CaptionFormats": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Format": {}, - "Pattern": {}, - "Encryption": { - "shape": "Sc" - } - } - } - } - } - }, - "S1j": { - "type": "list", - "member": {} - }, - "S1k": { - "type": "structure", - "members": { - "Method": {}, - "Key": {}, - "KeyMd5": {}, - "InitializationVector": {}, - "LicenseAcquisitionUrl": {}, - "KeyStoragePolicy": {} - } - }, - "S1o": { - "type": "structure", - "members": { - "Format": {}, - "Key": {}, - "KeyMd5": {}, - "KeyId": {}, - "InitializationVector": {}, - "LicenseAcquisitionUrl": {} - } - }, - "S1t": { - "type": "map", - "key": {}, - "value": {} - }, - "S1w": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "PipelineId": {}, - "Input": { - "shape": "S5" - }, - "Output": { - "shape": "S1x" - }, - "Outputs": { - "type": "list", - "member": { - "shape": "S1x" - } - }, - "OutputKeyPrefix": {}, - "Playlists": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Format": {}, - "OutputKeys": { - "shape": "S1j" - }, - "HlsContentProtection": { - "shape": "S1k" - }, - "PlayReadyDrm": { - "shape": "S1o" - }, - "Status": {}, - "StatusDetail": {} - } - } - }, - "Status": {}, - "UserMetadata": { - "shape": "S1t" - }, - "Timing": { - "type": "structure", - "members": { - "SubmitTimeMillis": { - "type": "long" - }, - "StartTimeMillis": { - "type": "long" - }, - "FinishTimeMillis": { - "type": "long" - } - } - } - } - }, - "S1x": { - "type": "structure", - "members": { - "Id": {}, - "Key": {}, - "ThumbnailPattern": {}, - "ThumbnailEncryption": { - "shape": "Sc" - }, - "Rotate": {}, - "PresetId": {}, - "SegmentDuration": {}, - "Status": {}, - "StatusDetail": {}, - "Duration": { - "type": "long" - }, - "Width": { - "type": "integer" - }, - "Height": { - "type": "integer" - }, - "FrameRate": {}, - "FileSize": { - "type": "long" - }, - "DurationMillis": { - "type": "long" - }, - "Watermarks": { - "shape": "So" - }, - "AlbumArt": { - "shape": "Ss" - }, - "Composition": { - "shape": "S10" - }, - "Captions": { - "shape": "S14" - }, - "Encryption": { - "shape": "Sc" - }, - "AppliedColorSpaceConversion": {} - } - }, - "S28": { - "type": "structure", - "members": { - "Progressing": {}, - "Completed": {}, - "Warning": {}, - "Error": {} - } - }, - "S2a": { - "type": "structure", - "members": { - "Bucket": {}, - "StorageClass": {}, - "Permissions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GranteeType": {}, - "Grantee": {}, - "Access": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "S2j": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Status": {}, - "InputBucket": {}, - "OutputBucket": {}, - "Role": {}, - "AwsKmsKeyArn": {}, - "Notifications": { - "shape": "S28" - }, - "ContentConfig": { - "shape": "S2a" - }, - "ThumbnailConfig": { - "shape": "S2a" - } - } - }, - "S2l": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Code": {}, - "Message": {} - } - } - }, - "S2p": { - "type": "structure", - "members": { - "Codec": {}, - "CodecOptions": { - "type": "map", - "key": {}, - "value": {} - }, - "KeyframesMaxDist": {}, - "FixedGOP": {}, - "BitRate": {}, - "FrameRate": {}, - "MaxFrameRate": {}, - "Resolution": {}, - "AspectRatio": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "DisplayAspectRatio": {}, - "SizingPolicy": {}, - "PaddingPolicy": {}, - "Watermarks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "HorizontalAlign": {}, - "HorizontalOffset": {}, - "VerticalAlign": {}, - "VerticalOffset": {}, - "Opacity": {}, - "Target": {} - } - } - } - } - }, - "S35": { - "type": "structure", - "members": { - "Codec": {}, - "SampleRate": {}, - "BitRate": {}, - "Channels": {}, - "AudioPackingMode": {}, - "CodecOptions": { - "type": "structure", - "members": { - "Profile": {}, - "BitDepth": {}, - "BitOrder": {}, - "Signed": {} - } - } - } - }, - "S3g": { - "type": "structure", - "members": { - "Format": {}, - "Interval": {}, - "Resolution": {}, - "AspectRatio": {}, - "MaxWidth": {}, - "MaxHeight": {}, - "SizingPolicy": {}, - "PaddingPolicy": {} - } - }, - "S3k": { - "type": "structure", - "members": { - "Id": {}, - "Arn": {}, - "Name": {}, - "Description": {}, - "Container": {}, - "Audio": { - "shape": "S35" - }, - "Video": { - "shape": "S2p" - }, - "Thumbnails": { - "shape": "S3g" - }, - "Type": {} - } - }, - "S3t": { - "type": "list", - "member": { - "shape": "S1w" - } - } - } -} -},{}],60:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListJobsByPipeline": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListJobsByStatus": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Jobs" - }, - "ListPipelines": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Pipelines" - }, - "ListPresets": { - "input_token": "PageToken", - "output_token": "NextPageToken", - "result_key": "Presets" - } - } -} - -},{}],61:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "JobComplete": { - "delay": 30, - "operation": "ReadJob", - "maxAttempts": 120, - "acceptors": [ - { - "expected": "Complete", - "matcher": "path", - "state": "success", - "argument": "Job.Status" - }, - { - "expected": "Canceled", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - }, - { - "expected": "Error", - "matcher": "path", - "state": "failure", - "argument": "Job.Status" - } - ] - } - } -} - -},{}],62:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2010-12-01", - "endpointPrefix": "email", - "protocol": "query", - "serviceAbbreviation": "Amazon SES", - "serviceFullName": "Amazon Simple Email Service", - "signatureVersion": "v4", - "signingName": "ses", - "xmlNamespace": "http://ses.amazonaws.com/doc/2010-12-01/" - }, - "operations": { - "CloneReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "OriginalRuleSetName" - ], - "members": { - "RuleSetName": {}, - "OriginalRuleSetName": {} - } - }, - "output": { - "resultWrapper": "CloneReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptFilter": { - "input": { - "type": "structure", - "required": [ - "Filter" - ], - "members": { - "Filter": { - "shape": "S5" - } - } - }, - "output": { - "resultWrapper": "CreateReceiptFilterResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "Rule" - ], - "members": { - "RuleSetName": {}, - "After": {}, - "Rule": { - "shape": "Sd" - } - } - }, - "output": { - "resultWrapper": "CreateReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "CreateReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "CreateReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteIdentity": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {} - } - }, - "output": { - "resultWrapper": "DeleteIdentityResult", - "type": "structure", - "members": {} - } - }, - "DeleteIdentityPolicy": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyName" - ], - "members": { - "Identity": {}, - "PolicyName": {} - } - }, - "output": { - "resultWrapper": "DeleteIdentityPolicyResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptFilter": { - "input": { - "type": "structure", - "required": [ - "FilterName" - ], - "members": { - "FilterName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptFilterResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "DeleteReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "DeleteReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "DeleteVerifiedEmailAddress": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - } - }, - "DescribeActiveReceiptRuleSet": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "DescribeActiveReceiptRuleSetResult", - "type": "structure", - "members": { - "Metadata": { - "shape": "S1l" - }, - "Rules": { - "shape": "S1n" - } - } - } - }, - "DescribeReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {} - } - }, - "output": { - "resultWrapper": "DescribeReceiptRuleResult", - "type": "structure", - "members": { - "Rule": { - "shape": "Sd" - } - } - } - }, - "DescribeReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName" - ], - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "DescribeReceiptRuleSetResult", - "type": "structure", - "members": { - "Metadata": { - "shape": "S1l" - }, - "Rules": { - "shape": "S1n" - } - } - } - }, - "GetIdentityDkimAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityDkimAttributesResult", - "type": "structure", - "required": [ - "DkimAttributes" - ], - "members": { - "DkimAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "DkimEnabled", - "DkimVerificationStatus" - ], - "members": { - "DkimEnabled": { - "type": "boolean" - }, - "DkimVerificationStatus": {}, - "DkimTokens": { - "shape": "S1y" - } - } - } - } - } - } - }, - "GetIdentityMailFromDomainAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityMailFromDomainAttributesResult", - "type": "structure", - "required": [ - "MailFromDomainAttributes" - ], - "members": { - "MailFromDomainAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "MailFromDomain", - "MailFromDomainStatus", - "BehaviorOnMXFailure" - ], - "members": { - "MailFromDomain": {}, - "MailFromDomainStatus": {}, - "BehaviorOnMXFailure": {} - } - } - } - } - } - }, - "GetIdentityNotificationAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityNotificationAttributesResult", - "type": "structure", - "required": [ - "NotificationAttributes" - ], - "members": { - "NotificationAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "BounceTopic", - "ComplaintTopic", - "DeliveryTopic", - "ForwardingEnabled" - ], - "members": { - "BounceTopic": {}, - "ComplaintTopic": {}, - "DeliveryTopic": {}, - "ForwardingEnabled": { - "type": "boolean" - }, - "HeadersInBounceNotificationsEnabled": { - "type": "boolean" - }, - "HeadersInComplaintNotificationsEnabled": { - "type": "boolean" - }, - "HeadersInDeliveryNotificationsEnabled": { - "type": "boolean" - } - } - } - } - } - } - }, - "GetIdentityPolicies": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyNames" - ], - "members": { - "Identity": {}, - "PolicyNames": { - "shape": "S2d" - } - } - }, - "output": { - "resultWrapper": "GetIdentityPoliciesResult", - "type": "structure", - "required": [ - "Policies" - ], - "members": { - "Policies": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "GetIdentityVerificationAttributes": { - "input": { - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - } - } - }, - "output": { - "resultWrapper": "GetIdentityVerificationAttributesResult", - "type": "structure", - "required": [ - "VerificationAttributes" - ], - "members": { - "VerificationAttributes": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "VerificationStatus" - ], - "members": { - "VerificationStatus": {}, - "VerificationToken": {} - } - } - } - } - } - }, - "GetSendQuota": { - "output": { - "resultWrapper": "GetSendQuotaResult", - "type": "structure", - "members": { - "Max24HourSend": { - "type": "double" - }, - "MaxSendRate": { - "type": "double" - }, - "SentLast24Hours": { - "type": "double" - } - } - } - }, - "GetSendStatistics": { - "output": { - "resultWrapper": "GetSendStatisticsResult", - "type": "structure", - "members": { - "SendDataPoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "DeliveryAttempts": { - "type": "long" - }, - "Bounces": { - "type": "long" - }, - "Complaints": { - "type": "long" - }, - "Rejects": { - "type": "long" - } - } - } - } - } - } - }, - "ListIdentities": { - "input": { - "type": "structure", - "members": { - "IdentityType": {}, - "NextToken": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ListIdentitiesResult", - "type": "structure", - "required": [ - "Identities" - ], - "members": { - "Identities": { - "shape": "S1t" - }, - "NextToken": {} - } - } - }, - "ListIdentityPolicies": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {} - } - }, - "output": { - "resultWrapper": "ListIdentityPoliciesResult", - "type": "structure", - "required": [ - "PolicyNames" - ], - "members": { - "PolicyNames": { - "shape": "S2d" - } - } - } - }, - "ListReceiptFilters": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "ListReceiptFiltersResult", - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "shape": "S5" - } - } - } - } - }, - "ListReceiptRuleSets": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListReceiptRuleSetsResult", - "type": "structure", - "members": { - "RuleSets": { - "type": "list", - "member": { - "shape": "S1l" - } - }, - "NextToken": {} - } - } - }, - "ListVerifiedEmailAddresses": { - "output": { - "resultWrapper": "ListVerifiedEmailAddressesResult", - "type": "structure", - "members": { - "VerifiedEmailAddresses": { - "shape": "S37" - } - } - } - }, - "PutIdentityPolicy": { - "input": { - "type": "structure", - "required": [ - "Identity", - "PolicyName", - "Policy" - ], - "members": { - "Identity": {}, - "PolicyName": {}, - "Policy": {} - } - }, - "output": { - "resultWrapper": "PutIdentityPolicyResult", - "type": "structure", - "members": {} - } - }, - "ReorderReceiptRuleSet": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleNames" - ], - "members": { - "RuleSetName": {}, - "RuleNames": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "ReorderReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "SendBounce": { - "input": { - "type": "structure", - "required": [ - "OriginalMessageId", - "BounceSender", - "BouncedRecipientInfoList" - ], - "members": { - "OriginalMessageId": {}, - "BounceSender": {}, - "Explanation": {}, - "MessageDsn": { - "type": "structure", - "required": [ - "ReportingMta" - ], - "members": { - "ReportingMta": {}, - "ArrivalDate": { - "type": "timestamp" - }, - "ExtensionFields": { - "shape": "S3j" - } - } - }, - "BouncedRecipientInfoList": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Recipient" - ], - "members": { - "Recipient": {}, - "RecipientArn": {}, - "BounceType": {}, - "RecipientDsnFields": { - "type": "structure", - "required": [ - "Action", - "Status" - ], - "members": { - "FinalRecipient": {}, - "Action": {}, - "RemoteMta": {}, - "Status": {}, - "DiagnosticCode": {}, - "LastAttemptDate": { - "type": "timestamp" - }, - "ExtensionFields": { - "shape": "S3j" - } - } - } - } - } - }, - "BounceSenderArn": {} - } - }, - "output": { - "resultWrapper": "SendBounceResult", - "type": "structure", - "members": { - "MessageId": {} - } - } - }, - "SendEmail": { - "input": { - "type": "structure", - "required": [ - "Source", - "Destination", - "Message" - ], - "members": { - "Source": {}, - "Destination": { - "type": "structure", - "members": { - "ToAddresses": { - "shape": "S37" - }, - "CcAddresses": { - "shape": "S37" - }, - "BccAddresses": { - "shape": "S37" - } - } - }, - "Message": { - "type": "structure", - "required": [ - "Subject", - "Body" - ], - "members": { - "Subject": { - "shape": "S40" - }, - "Body": { - "type": "structure", - "members": { - "Text": { - "shape": "S40" - }, - "Html": { - "shape": "S40" - } - } - } - } - }, - "ReplyToAddresses": { - "shape": "S37" - }, - "ReturnPath": {}, - "SourceArn": {}, - "ReturnPathArn": {} - } - }, - "output": { - "resultWrapper": "SendEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SendRawEmail": { - "input": { - "type": "structure", - "required": [ - "RawMessage" - ], - "members": { - "Source": {}, - "Destinations": { - "shape": "S37" - }, - "RawMessage": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": { - "type": "blob" - } - } - }, - "FromArn": {}, - "SourceArn": {}, - "ReturnPathArn": {} - } - }, - "output": { - "resultWrapper": "SendRawEmailResult", - "type": "structure", - "required": [ - "MessageId" - ], - "members": { - "MessageId": {} - } - } - }, - "SetActiveReceiptRuleSet": { - "input": { - "type": "structure", - "members": { - "RuleSetName": {} - } - }, - "output": { - "resultWrapper": "SetActiveReceiptRuleSetResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityDkimEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "DkimEnabled" - ], - "members": { - "Identity": {}, - "DkimEnabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityDkimEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityFeedbackForwardingEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "ForwardingEnabled" - ], - "members": { - "Identity": {}, - "ForwardingEnabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityFeedbackForwardingEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityHeadersInNotificationsEnabled": { - "input": { - "type": "structure", - "required": [ - "Identity", - "NotificationType", - "Enabled" - ], - "members": { - "Identity": {}, - "NotificationType": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "SetIdentityHeadersInNotificationsEnabledResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityMailFromDomain": { - "input": { - "type": "structure", - "required": [ - "Identity" - ], - "members": { - "Identity": {}, - "MailFromDomain": {}, - "BehaviorOnMXFailure": {} - } - }, - "output": { - "resultWrapper": "SetIdentityMailFromDomainResult", - "type": "structure", - "members": {} - } - }, - "SetIdentityNotificationTopic": { - "input": { - "type": "structure", - "required": [ - "Identity", - "NotificationType" - ], - "members": { - "Identity": {}, - "NotificationType": {}, - "SnsTopic": {} - } - }, - "output": { - "resultWrapper": "SetIdentityNotificationTopicResult", - "type": "structure", - "members": {} - } - }, - "SetReceiptRulePosition": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "RuleName" - ], - "members": { - "RuleSetName": {}, - "RuleName": {}, - "After": {} - } - }, - "output": { - "resultWrapper": "SetReceiptRulePositionResult", - "type": "structure", - "members": {} - } - }, - "UpdateReceiptRule": { - "input": { - "type": "structure", - "required": [ - "RuleSetName", - "Rule" - ], - "members": { - "RuleSetName": {}, - "Rule": { - "shape": "Sd" - } - } - }, - "output": { - "resultWrapper": "UpdateReceiptRuleResult", - "type": "structure", - "members": {} - } - }, - "VerifyDomainDkim": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "resultWrapper": "VerifyDomainDkimResult", - "type": "structure", - "required": [ - "DkimTokens" - ], - "members": { - "DkimTokens": { - "shape": "S1y" - } - } - } - }, - "VerifyDomainIdentity": { - "input": { - "type": "structure", - "required": [ - "Domain" - ], - "members": { - "Domain": {} - } - }, - "output": { - "resultWrapper": "VerifyDomainIdentityResult", - "type": "structure", - "required": [ - "VerificationToken" - ], - "members": { - "VerificationToken": {} - } - } - }, - "VerifyEmailAddress": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - } - }, - "VerifyEmailIdentity": { - "input": { - "type": "structure", - "required": [ - "EmailAddress" - ], - "members": { - "EmailAddress": {} - } - }, - "output": { - "resultWrapper": "VerifyEmailIdentityResult", - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "required": [ - "Name", - "IpFilter" - ], - "members": { - "Name": {}, - "IpFilter": { - "type": "structure", - "required": [ - "Policy", - "Cidr" - ], - "members": { - "Policy": {}, - "Cidr": {} - } - } - } - }, - "Sd": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Enabled": { - "type": "boolean" - }, - "TlsPolicy": {}, - "Recipients": { - "type": "list", - "member": {} - }, - "Actions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "S3Action": { - "type": "structure", - "required": [ - "BucketName" - ], - "members": { - "TopicArn": {}, - "BucketName": {}, - "ObjectKeyPrefix": {}, - "KmsKeyArn": {} - } - }, - "BounceAction": { - "type": "structure", - "required": [ - "SmtpReplyCode", - "Message", - "Sender" - ], - "members": { - "TopicArn": {}, - "SmtpReplyCode": {}, - "StatusCode": {}, - "Message": {}, - "Sender": {} - } - }, - "WorkmailAction": { - "type": "structure", - "required": [ - "OrganizationArn" - ], - "members": { - "TopicArn": {}, - "OrganizationArn": {} - } - }, - "LambdaAction": { - "type": "structure", - "required": [ - "FunctionArn" - ], - "members": { - "TopicArn": {}, - "FunctionArn": {}, - "InvocationType": {} - } - }, - "StopAction": { - "type": "structure", - "required": [ - "Scope" - ], - "members": { - "Scope": {}, - "TopicArn": {} - } - }, - "AddHeaderAction": { - "type": "structure", - "required": [ - "HeaderName", - "HeaderValue" - ], - "members": { - "HeaderName": {}, - "HeaderValue": {} - } - }, - "SNSAction": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {}, - "Encoding": {} - } - } - } - } - }, - "ScanEnabled": { - "type": "boolean" - } - } - }, - "S1l": { - "type": "structure", - "members": { - "Name": {}, - "CreatedTimestamp": { - "type": "timestamp" - } - } - }, - "S1n": { - "type": "list", - "member": { - "shape": "Sd" - } - }, - "S1t": { - "type": "list", - "member": {} - }, - "S1y": { - "type": "list", - "member": {} - }, - "S2d": { - "type": "list", - "member": {} - }, - "S37": { - "type": "list", - "member": {} - }, - "S3j": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "S40": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": {}, - "Charset": {} - } - } - } -} -},{}],63:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListIdentities": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxItems", - "result_key": "Identities" - }, - "ListVerifiedEmailAddresses": { - "result_key": "VerifiedEmailAddresses" - } - } -} - -},{}],64:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "IdentityExists": { - "delay": 3, - "operation": "GetIdentityVerificationAttributes", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "Success", - "matcher": "pathAll", - "state": "success", - "argument": "VerificationAttributes.*.VerificationStatus" - } - ] - } - } -} - -},{}],65:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-10-07", - "endpointPrefix": "events", - "jsonVersion": "1.1", - "serviceFullName": "Amazon CloudWatch Events", - "signatureVersion": "v4", - "targetPrefix": "AWSEvents", - "protocol": "json" - }, - "operations": { - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "DescribeRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "EventPattern": {}, - "ScheduleExpression": {}, - "State": {}, - "Description": {}, - "RoleArn": {} - } - } - }, - "DisableRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "EnableRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - } - }, - "ListRuleNamesByTarget": { - "input": { - "type": "structure", - "required": [ - "TargetArn" - ], - "members": { - "TargetArn": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RuleNames": { - "type": "list", - "member": {} - }, - "NextToken": {} - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NamePrefix": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "EventPattern": {}, - "State": {}, - "Description": {}, - "ScheduleExpression": {}, - "RoleArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListTargetsByRule": { - "input": { - "type": "structure", - "required": [ - "Rule" - ], - "members": { - "Rule": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Targets": { - "shape": "Sp" - }, - "NextToken": {} - } - } - }, - "PutEvents": { - "input": { - "type": "structure", - "required": [ - "Entries" - ], - "members": { - "Entries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Time": { - "type": "timestamp" - }, - "Source": {}, - "Resources": { - "type": "list", - "member": {} - }, - "DetailType": {}, - "Detail": {} - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "Entries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "PutRule": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "ScheduleExpression": {}, - "EventPattern": {}, - "State": {}, - "Description": {}, - "RoleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "RuleArn": {} - } - } - }, - "PutTargets": { - "input": { - "type": "structure", - "required": [ - "Rule", - "Targets" - ], - "members": { - "Rule": {}, - "Targets": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "FailedEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "RemoveTargets": { - "input": { - "type": "structure", - "required": [ - "Rule", - "Ids" - ], - "members": { - "Rule": {}, - "Ids": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "FailedEntryCount": { - "type": "integer" - }, - "FailedEntries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "TestEventPattern": { - "input": { - "type": "structure", - "required": [ - "EventPattern", - "Event" - ], - "members": { - "EventPattern": {}, - "Event": {} - } - }, - "output": { - "type": "structure", - "members": { - "Result": { - "type": "boolean" - } - } - } - } - }, - "shapes": { - "Sp": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Id", - "Arn" - ], - "members": { - "Id": {}, - "Arn": {}, - "Input": {}, - "InputPath": {} - } - } - } - }, - "examples": {} -} -},{}],66:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-04", - "endpointPrefix": "firehose", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Firehose", - "serviceFullName": "Amazon Kinesis Firehose", - "signatureVersion": "v4", - "targetPrefix": "Firehose_20150804" - }, - "operations": { - "CreateDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {}, - "S3DestinationConfiguration": { - "shape": "S3" - }, - "RedshiftDestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "ClusterJDBCURL", - "CopyCommand", - "Username", - "Password", - "S3Configuration" - ], - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sl" - }, - "Username": { - "shape": "Sp" - }, - "Password": { - "shape": "Sq" - }, - "RetryOptions": { - "shape": "Sr" - }, - "S3Configuration": { - "shape": "S3" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "ElasticsearchDestinationConfiguration": { - "type": "structure", - "required": [ - "RoleARN", - "DomainARN", - "IndexName", - "TypeName", - "S3Configuration" - ], - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "Sy" - }, - "RetryOptions": { - "shape": "S11" - }, - "S3BackupMode": {}, - "S3Configuration": { - "shape": "S3" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "DeliveryStreamARN": {} - } - } - }, - "DeleteDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeDeliveryStream": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName" - ], - "members": { - "DeliveryStreamName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartDestinationId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DeliveryStreamDescription" - ], - "members": { - "DeliveryStreamDescription": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "DeliveryStreamARN", - "DeliveryStreamStatus", - "VersionId", - "Destinations", - "HasMoreDestinations" - ], - "members": { - "DeliveryStreamName": {}, - "DeliveryStreamARN": {}, - "DeliveryStreamStatus": {}, - "VersionId": {}, - "CreateTimestamp": { - "type": "timestamp" - }, - "LastUpdateTimestamp": { - "type": "timestamp" - }, - "Destinations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DestinationId" - ], - "members": { - "DestinationId": {}, - "S3DestinationDescription": { - "shape": "S1i" - }, - "RedshiftDestinationDescription": { - "type": "structure", - "required": [ - "RoleARN", - "ClusterJDBCURL", - "CopyCommand", - "Username", - "S3DestinationDescription" - ], - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sl" - }, - "Username": { - "shape": "Sp" - }, - "RetryOptions": { - "shape": "Sr" - }, - "S3DestinationDescription": { - "shape": "S1i" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "ElasticsearchDestinationDescription": { - "type": "structure", - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "Sy" - }, - "RetryOptions": { - "shape": "S11" - }, - "S3BackupMode": {}, - "S3DestinationDescription": { - "shape": "S1i" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } - } - }, - "HasMoreDestinations": { - "type": "boolean" - } - } - } - } - } - }, - "ListDeliveryStreams": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartDeliveryStreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DeliveryStreamNames", - "HasMoreDeliveryStreams" - ], - "members": { - "DeliveryStreamNames": { - "type": "list", - "member": {} - }, - "HasMoreDeliveryStreams": { - "type": "boolean" - } - } - } - }, - "PutRecord": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "Record" - ], - "members": { - "DeliveryStreamName": {}, - "Record": { - "shape": "S1q" - } - } - }, - "output": { - "type": "structure", - "required": [ - "RecordId" - ], - "members": { - "RecordId": {} - } - } - }, - "PutRecordBatch": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "Records" - ], - "members": { - "DeliveryStreamName": {}, - "Records": { - "type": "list", - "member": { - "shape": "S1q" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "FailedPutCount", - "RequestResponses" - ], - "members": { - "FailedPutCount": { - "type": "integer" - }, - "RequestResponses": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RecordId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "UpdateDestination": { - "input": { - "type": "structure", - "required": [ - "DeliveryStreamName", - "CurrentDeliveryStreamVersionId", - "DestinationId" - ], - "members": { - "DeliveryStreamName": {}, - "CurrentDeliveryStreamVersionId": {}, - "DestinationId": {}, - "S3DestinationUpdate": { - "shape": "S23" - }, - "RedshiftDestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "ClusterJDBCURL": {}, - "CopyCommand": { - "shape": "Sl" - }, - "Username": { - "shape": "Sp" - }, - "Password": { - "shape": "Sq" - }, - "RetryOptions": { - "shape": "Sr" - }, - "S3Update": { - "shape": "S23" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "ElasticsearchDestinationUpdate": { - "type": "structure", - "members": { - "RoleARN": {}, - "DomainARN": {}, - "IndexName": {}, - "TypeName": {}, - "IndexRotationPeriod": {}, - "BufferingHints": { - "shape": "Sy" - }, - "RetryOptions": { - "shape": "S11" - }, - "S3Update": { - "shape": "S23" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "S7" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Sb" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "S7": { - "type": "structure", - "members": { - "SizeInMBs": { - "type": "integer" - }, - "IntervalInSeconds": { - "type": "integer" - } - } - }, - "Sb": { - "type": "structure", - "members": { - "NoEncryptionConfig": {}, - "KMSEncryptionConfig": { - "type": "structure", - "required": [ - "AWSKMSKeyARN" - ], - "members": { - "AWSKMSKeyARN": {} - } - } - } - }, - "Sf": { - "type": "structure", - "members": { - "Enabled": { - "type": "boolean" - }, - "LogGroupName": {}, - "LogStreamName": {} - } - }, - "Sl": { - "type": "structure", - "required": [ - "DataTableName" - ], - "members": { - "DataTableName": {}, - "DataTableColumns": {}, - "CopyOptions": {} - } - }, - "Sp": { - "type": "string", - "sensitive": true - }, - "Sq": { - "type": "string", - "sensitive": true - }, - "Sr": { - "type": "structure", - "members": { - "DurationInSeconds": { - "type": "integer" - } - } - }, - "Sy": { - "type": "structure", - "members": { - "IntervalInSeconds": { - "type": "integer" - }, - "SizeInMBs": { - "type": "integer" - } - } - }, - "S11": { - "type": "structure", - "members": { - "DurationInSeconds": { - "type": "integer" - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "RoleARN", - "BucketARN", - "BufferingHints", - "CompressionFormat", - "EncryptionConfiguration" - ], - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "S7" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Sb" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - }, - "S1q": { - "type": "structure", - "required": [ - "Data" - ], - "members": { - "Data": { - "type": "blob" - } - } - }, - "S23": { - "type": "structure", - "members": { - "RoleARN": {}, - "BucketARN": {}, - "Prefix": {}, - "BufferingHints": { - "shape": "S7" - }, - "CompressionFormat": {}, - "EncryptionConfiguration": { - "shape": "Sb" - }, - "CloudWatchLoggingOptions": { - "shape": "Sf" - } - } - } - } -} -},{}],67:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-10-01", - "endpointPrefix": "gamelift", - "jsonVersion": "1.1", - "serviceFullName": "Amazon GameLift", - "signatureVersion": "v4", - "targetPrefix": "GameLift", - "protocol": "json" - }, - "operations": { - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "Name", - "RoutingStrategy" - ], - "members": { - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "S8" - } - } - } - }, - "CreateBuild": { - "input": { - "type": "structure", - "members": { - "Name": {}, - "Version": {}, - "StorageLocation": { - "shape": "Sc" - }, - "OperatingSystem": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "Sg" - }, - "UploadCredentials": { - "shape": "Sk" - }, - "StorageLocation": { - "shape": "Sc" - } - } - } - }, - "CreateFleet": { - "input": { - "type": "structure", - "required": [ - "Name", - "BuildId", - "EC2InstanceType" - ], - "members": { - "Name": {}, - "Description": {}, - "BuildId": {}, - "ServerLaunchPath": {}, - "ServerLaunchParameters": {}, - "LogPaths": { - "shape": "Sm" - }, - "EC2InstanceType": {}, - "EC2InboundPermissions": { - "shape": "So" - }, - "NewGameSessionProtectionPolicy": {}, - "RuntimeConfiguration": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetAttributes": { - "shape": "Sz" - } - } - } - }, - "CreateGameSession": { - "input": { - "type": "structure", - "required": [ - "MaximumPlayerSessionCount" - ], - "members": { - "FleetId": {}, - "AliasId": {}, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Name": {}, - "GameProperties": { - "shape": "S13" - } - } - }, - "output": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S18" - } - } - } - }, - "CreatePlayerSession": { - "input": { - "type": "structure", - "required": [ - "GameSessionId", - "PlayerId" - ], - "members": { - "GameSessionId": {}, - "PlayerId": {} - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSession": { - "shape": "S1f" - } - } - } - }, - "CreatePlayerSessions": { - "input": { - "type": "structure", - "required": [ - "GameSessionId", - "PlayerIds" - ], - "members": { - "GameSessionId": {}, - "PlayerIds": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSessions": { - "shape": "S1l" - } - } - } - }, - "DeleteAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - } - }, - "DeleteBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - } - }, - "DeleteFleet": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - } - }, - "DeleteScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "Name", - "FleetId" - ], - "members": { - "Name": {}, - "FleetId": {} - } - } - }, - "DescribeAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "S8" - } - } - } - }, - "DescribeBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "Sg" - } - } - } - }, - "DescribeEC2InstanceLimits": { - "input": { - "type": "structure", - "members": { - "EC2InstanceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "EC2InstanceLimits": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EC2InstanceType": {}, - "CurrentInstances": { - "type": "integer" - }, - "InstanceLimit": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeFleetAttributes": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetAttributes": { - "type": "list", - "member": { - "shape": "Sz" - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetCapacity": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetCapacity": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "InstanceType": {}, - "InstanceCounts": { - "type": "structure", - "members": { - "DESIRED": { - "type": "integer" - }, - "MINIMUM": { - "type": "integer" - }, - "MAXIMUM": { - "type": "integer" - }, - "PENDING": { - "type": "integer" - }, - "ACTIVE": { - "type": "integer" - }, - "IDLE": { - "type": "integer" - }, - "TERMINATING": { - "type": "integer" - } - } - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetEvents": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EventId": {}, - "ResourceId": {}, - "EventCode": {}, - "Message": {}, - "EventTime": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeFleetPortSettings": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "InboundPermissions": { - "shape": "So" - } - } - } - }, - "DescribeFleetUtilization": { - "input": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetUtilization": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "ActiveServerProcessCount": { - "type": "integer" - }, - "ActiveGameSessionCount": { - "type": "integer" - }, - "CurrentPlayerSessionCount": { - "type": "integer" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessionDetails": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "GameSessionId": {}, - "AliasId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessionDetails": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S18" - }, - "ProtectionPolicy": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeGameSessions": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "GameSessionId": {}, - "AliasId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessions": { - "shape": "S2o" - }, - "NextToken": {} - } - } - }, - "DescribePlayerSessions": { - "input": { - "type": "structure", - "members": { - "GameSessionId": {}, - "PlayerId": {}, - "PlayerSessionId": {}, - "PlayerSessionStatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "PlayerSessions": { - "shape": "S1l" - }, - "NextToken": {} - } - } - }, - "DescribeRuntimeConfiguration": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "RuntimeConfiguration": { - "shape": "Su" - } - } - } - }, - "DescribeScalingPolicies": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "StatusFilter": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ScalingPolicies": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FleetId": {}, - "Name": {}, - "Status": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "ScalingAdjustmentType": {}, - "ComparisonOperator": {}, - "Threshold": { - "type": "double" - }, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetGameSessionLogUrl": { - "input": { - "type": "structure", - "required": [ - "GameSessionId" - ], - "members": { - "GameSessionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "PreSignedUrl": {} - } - } - }, - "ListAliases": { - "input": { - "type": "structure", - "members": { - "RoutingStrategyType": {}, - "Name": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Aliases": { - "type": "list", - "member": { - "shape": "S8" - } - }, - "NextToken": {} - } - } - }, - "ListBuilds": { - "input": { - "type": "structure", - "members": { - "Status": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Builds": { - "type": "list", - "member": { - "shape": "Sg" - } - }, - "NextToken": {} - } - } - }, - "ListFleets": { - "input": { - "type": "structure", - "members": { - "BuildId": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetIds": { - "shape": "S1z" - }, - "NextToken": {} - } - } - }, - "PutScalingPolicy": { - "input": { - "type": "structure", - "required": [ - "Name", - "FleetId", - "ScalingAdjustment", - "ScalingAdjustmentType", - "Threshold", - "ComparisonOperator", - "EvaluationPeriods", - "MetricName" - ], - "members": { - "Name": {}, - "FleetId": {}, - "ScalingAdjustment": { - "type": "integer" - }, - "ScalingAdjustmentType": {}, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "MetricName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {} - } - } - }, - "RequestUploadCredentials": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {} - } - }, - "output": { - "type": "structure", - "members": { - "UploadCredentials": { - "shape": "Sk" - }, - "StorageLocation": { - "shape": "Sc" - } - } - } - }, - "ResolveAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "SearchGameSessions": { - "input": { - "type": "structure", - "members": { - "FleetId": {}, - "AliasId": {}, - "FilterExpression": {}, - "SortExpression": {}, - "Limit": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSessions": { - "shape": "S2o" - }, - "NextToken": {} - } - } - }, - "UpdateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasId" - ], - "members": { - "AliasId": {}, - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Alias": { - "shape": "S8" - } - } - } - }, - "UpdateBuild": { - "input": { - "type": "structure", - "required": [ - "BuildId" - ], - "members": { - "BuildId": {}, - "Name": {}, - "Version": {} - } - }, - "output": { - "type": "structure", - "members": { - "Build": { - "shape": "Sg" - } - } - } - }, - "UpdateFleetAttributes": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "Name": {}, - "Description": {}, - "NewGameSessionProtectionPolicy": {} - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateFleetCapacity": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "DesiredInstances": { - "type": "integer" - }, - "MinSize": { - "type": "integer" - }, - "MaxSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateFleetPortSettings": { - "input": { - "type": "structure", - "required": [ - "FleetId" - ], - "members": { - "FleetId": {}, - "InboundPermissionAuthorizations": { - "shape": "So" - }, - "InboundPermissionRevocations": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "FleetId": {} - } - } - }, - "UpdateGameSession": { - "input": { - "type": "structure", - "required": [ - "GameSessionId" - ], - "members": { - "GameSessionId": {}, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Name": {}, - "PlayerSessionCreationPolicy": {}, - "ProtectionPolicy": {} - } - }, - "output": { - "type": "structure", - "members": { - "GameSession": { - "shape": "S18" - } - } - } - }, - "UpdateRuntimeConfiguration": { - "input": { - "type": "structure", - "required": [ - "FleetId", - "RuntimeConfiguration" - ], - "members": { - "FleetId": {}, - "RuntimeConfiguration": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "members": { - "RuntimeConfiguration": { - "shape": "Su" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "members": { - "Type": {}, - "FleetId": {}, - "Message": {} - } - }, - "S8": { - "type": "structure", - "members": { - "AliasId": {}, - "Name": {}, - "Description": {}, - "RoutingStrategy": { - "shape": "S3" - }, - "CreationTime": { - "type": "timestamp" - }, - "LastUpdatedTime": { - "type": "timestamp" - } - } - }, - "Sc": { - "type": "structure", - "members": { - "Bucket": {}, - "Key": {}, - "RoleArn": {} - } - }, - "Sg": { - "type": "structure", - "members": { - "BuildId": {}, - "Name": {}, - "Version": {}, - "Status": {}, - "SizeOnDisk": { - "type": "long" - }, - "OperatingSystem": {}, - "CreationTime": { - "type": "timestamp" - } - } - }, - "Sk": { - "type": "structure", - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {} - }, - "sensitive": true - }, - "Sm": { - "type": "list", - "member": {} - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "FromPort", - "ToPort", - "IpRange", - "Protocol" - ], - "members": { - "FromPort": { - "type": "integer" - }, - "ToPort": { - "type": "integer" - }, - "IpRange": {}, - "Protocol": {} - } - } - }, - "Su": { - "type": "structure", - "members": { - "ServerProcesses": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "LaunchPath", - "ConcurrentExecutions" - ], - "members": { - "LaunchPath": {}, - "Parameters": {}, - "ConcurrentExecutions": { - "type": "integer" - } - } - } - } - } - }, - "Sz": { - "type": "structure", - "members": { - "FleetId": {}, - "Description": {}, - "Name": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "Status": {}, - "BuildId": {}, - "ServerLaunchPath": {}, - "ServerLaunchParameters": {}, - "LogPaths": { - "shape": "Sm" - }, - "NewGameSessionProtectionPolicy": {}, - "OperatingSystem": {} - } - }, - "S13": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S18": { - "type": "structure", - "members": { - "GameSessionId": {}, - "Name": {}, - "FleetId": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "CurrentPlayerSessionCount": { - "type": "integer" - }, - "MaximumPlayerSessionCount": { - "type": "integer" - }, - "Status": {}, - "GameProperties": { - "shape": "S13" - }, - "IpAddress": {}, - "Port": { - "type": "integer" - }, - "PlayerSessionCreationPolicy": {} - } - }, - "S1f": { - "type": "structure", - "members": { - "PlayerSessionId": {}, - "PlayerId": {}, - "GameSessionId": {}, - "FleetId": {}, - "CreationTime": { - "type": "timestamp" - }, - "TerminationTime": { - "type": "timestamp" - }, - "Status": {}, - "IpAddress": {}, - "Port": { - "type": "integer" - } - } - }, - "S1l": { - "type": "list", - "member": { - "shape": "S1f" - } - }, - "S1z": { - "type": "list", - "member": {} - }, - "S2o": { - "type": "list", - "member": { - "shape": "S18" - } - } - }, - "examples": {} -} -},{}],68:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2016-02-16", - "endpointPrefix": "inspector", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Inspector", - "signatureVersion": "v4", - "targetPrefix": "InspectorService" - }, - "operations": { - "AddAttributesToFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns", - "attributes" - ], - "members": { - "findingArns": { - "shape": "S2" - }, - "attributes": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "required": [ - "failedItems" - ], - "members": { - "failedItems": { - "shape": "S9" - } - } - } - }, - "CreateAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetName", - "resourceGroupArn" - ], - "members": { - "assessmentTargetName": {}, - "resourceGroupArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargetArn" - ], - "members": { - "assessmentTargetArn": {} - } - } - }, - "CreateAssessmentTemplate": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn", - "assessmentTemplateName", - "durationInSeconds", - "rulesPackageArns" - ], - "members": { - "assessmentTargetArn": {}, - "assessmentTemplateName": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "shape": "Sj" - }, - "userAttributesForFindings": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {} - } - } - }, - "CreateResourceGroup": { - "input": { - "type": "structure", - "required": [ - "resourceGroupTags" - ], - "members": { - "resourceGroupTags": { - "shape": "Sm" - } - } - }, - "output": { - "type": "structure", - "required": [ - "resourceGroupArn" - ], - "members": { - "resourceGroupArn": {} - } - } - }, - "DeleteAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "DeleteAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn" - ], - "members": { - "assessmentTargetArn": {} - } - } - }, - "DeleteAssessmentTemplate": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {} - } - } - }, - "DescribeAssessmentRuns": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArns" - ], - "members": { - "assessmentRunArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRuns", - "failedItems" - ], - "members": { - "assessmentRuns": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "assessmentTemplateArn", - "state", - "durationInSeconds", - "rulesPackageArns", - "userAttributesForFindings", - "createdAt", - "stateChangedAt", - "dataCollected", - "stateChanges", - "notifications" - ], - "members": { - "arn": {}, - "name": {}, - "assessmentTemplateArn": {}, - "state": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "type": "list", - "member": {} - }, - "userAttributesForFindings": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - }, - "startedAt": { - "type": "timestamp" - }, - "completedAt": { - "type": "timestamp" - }, - "stateChangedAt": { - "type": "timestamp" - }, - "dataCollected": { - "type": "boolean" - }, - "stateChanges": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "stateChangedAt", - "state" - ], - "members": { - "stateChangedAt": { - "type": "timestamp" - }, - "state": {} - } - } - }, - "notifications": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "date", - "event", - "error" - ], - "members": { - "date": { - "type": "timestamp" - }, - "event": {}, - "message": {}, - "error": { - "type": "boolean" - }, - "snsTopicArn": {}, - "snsPublishStatusCode": {} - } - } - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeAssessmentTargets": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArns" - ], - "members": { - "assessmentTargetArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargets", - "failedItems" - ], - "members": { - "assessmentTargets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "resourceGroupArn", - "createdAt", - "updatedAt" - ], - "members": { - "arn": {}, - "name": {}, - "resourceGroupArn": {}, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeAssessmentTemplates": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArns" - ], - "members": { - "assessmentTemplateArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplates", - "failedItems" - ], - "members": { - "assessmentTemplates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "assessmentTargetArn", - "durationInSeconds", - "rulesPackageArns", - "userAttributesForFindings", - "createdAt" - ], - "members": { - "arn": {}, - "name": {}, - "assessmentTargetArn": {}, - "durationInSeconds": { - "type": "integer" - }, - "rulesPackageArns": { - "shape": "Sj" - }, - "userAttributesForFindings": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeCrossAccountAccessRole": { - "output": { - "type": "structure", - "required": [ - "roleArn", - "valid", - "registeredAt" - ], - "members": { - "roleArn": {}, - "valid": { - "type": "boolean" - }, - "registeredAt": { - "type": "timestamp" - } - } - } - }, - "DescribeFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns" - ], - "members": { - "findingArns": { - "shape": "Sv" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "required": [ - "findings", - "failedItems" - ], - "members": { - "findings": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "attributes", - "userAttributes", - "createdAt", - "updatedAt" - ], - "members": { - "arn": {}, - "schemaVersion": { - "type": "integer" - }, - "service": {}, - "serviceAttributes": { - "type": "structure", - "required": [ - "schemaVersion" - ], - "members": { - "schemaVersion": { - "type": "integer" - }, - "assessmentRunArn": {}, - "rulesPackageArn": {} - } - }, - "assetType": {}, - "assetAttributes": { - "type": "structure", - "required": [ - "schemaVersion" - ], - "members": { - "schemaVersion": { - "type": "integer" - }, - "agentId": {}, - "autoScalingGroup": {}, - "amiId": {}, - "hostname": {}, - "ipv4Addresses": { - "type": "list", - "member": {} - } - } - }, - "id": {}, - "title": {}, - "description": {}, - "recommendation": {}, - "severity": {}, - "numericSeverity": { - "type": "double" - }, - "confidence": { - "type": "integer" - }, - "indicatorOfCompromise": { - "type": "boolean" - }, - "attributes": { - "shape": "S24" - }, - "userAttributes": { - "shape": "S4" - }, - "createdAt": { - "type": "timestamp" - }, - "updatedAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeResourceGroups": { - "input": { - "type": "structure", - "required": [ - "resourceGroupArns" - ], - "members": { - "resourceGroupArns": { - "shape": "Sv" - } - } - }, - "output": { - "type": "structure", - "required": [ - "resourceGroups", - "failedItems" - ], - "members": { - "resourceGroups": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "tags", - "createdAt" - ], - "members": { - "arn": {}, - "tags": { - "shape": "Sm" - }, - "createdAt": { - "type": "timestamp" - } - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "DescribeRulesPackages": { - "input": { - "type": "structure", - "required": [ - "rulesPackageArns" - ], - "members": { - "rulesPackageArns": { - "shape": "Sv" - }, - "locale": {} - } - }, - "output": { - "type": "structure", - "required": [ - "rulesPackages", - "failedItems" - ], - "members": { - "rulesPackages": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "arn", - "name", - "version", - "provider" - ], - "members": { - "arn": {}, - "name": {}, - "version": {}, - "provider": {}, - "description": {} - } - } - }, - "failedItems": { - "shape": "S9" - } - } - } - }, - "GetTelemetryMetadata": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "telemetryMetadata" - ], - "members": { - "telemetryMetadata": { - "shape": "S2i" - } - } - } - }, - "ListAssessmentRunAgents": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {}, - "filter": { - "type": "structure", - "required": [ - "agentHealths", - "agentHealthCodes" - ], - "members": { - "agentHealths": { - "type": "list", - "member": {} - }, - "agentHealthCodes": { - "type": "list", - "member": {} - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunAgents" - ], - "members": { - "assessmentRunAgents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "agentId", - "assessmentRunArn", - "agentHealth", - "agentHealthCode", - "telemetryMetadata" - ], - "members": { - "agentId": {}, - "assessmentRunArn": {}, - "agentHealth": {}, - "agentHealthCode": {}, - "agentHealthDetails": {}, - "autoScalingGroup": {}, - "telemetryMetadata": { - "shape": "S2i" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListAssessmentRuns": { - "input": { - "type": "structure", - "members": { - "assessmentTemplateArns": { - "shape": "S2y" - }, - "filter": { - "type": "structure", - "members": { - "namePattern": {}, - "states": { - "type": "list", - "member": {} - }, - "durationRange": { - "shape": "S32" - }, - "rulesPackageArns": { - "shape": "S33" - }, - "startTimeRange": { - "shape": "S34" - }, - "completionTimeRange": { - "shape": "S34" - }, - "stateChangeTimeRange": { - "shape": "S34" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunArns" - ], - "members": { - "assessmentRunArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListAssessmentTargets": { - "input": { - "type": "structure", - "members": { - "filter": { - "type": "structure", - "members": { - "assessmentTargetNamePattern": {} - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTargetArns" - ], - "members": { - "assessmentTargetArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListAssessmentTemplates": { - "input": { - "type": "structure", - "members": { - "assessmentTargetArns": { - "shape": "S2y" - }, - "filter": { - "type": "structure", - "members": { - "namePattern": {}, - "durationRange": { - "shape": "S32" - }, - "rulesPackageArns": { - "shape": "S33" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentTemplateArns" - ], - "members": { - "assessmentTemplateArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "resourceArn": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "subscriptions" - ], - "members": { - "subscriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "resourceArn", - "topicArn", - "eventSubscriptions" - ], - "members": { - "resourceArn": {}, - "topicArn": {}, - "eventSubscriptions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "event", - "subscribedAt" - ], - "members": { - "event": {}, - "subscribedAt": { - "type": "timestamp" - } - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "ListFindings": { - "input": { - "type": "structure", - "members": { - "assessmentRunArns": { - "shape": "S2y" - }, - "filter": { - "type": "structure", - "members": { - "agentIds": { - "type": "list", - "member": {} - }, - "autoScalingGroups": { - "type": "list", - "member": {} - }, - "ruleNames": { - "type": "list", - "member": {} - }, - "severities": { - "type": "list", - "member": {} - }, - "rulesPackageArns": { - "shape": "S33" - }, - "attributes": { - "shape": "S24" - }, - "userAttributes": { - "shape": "S24" - }, - "creationTimeRange": { - "shape": "S34" - } - } - }, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "findingArns" - ], - "members": { - "findingArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListRulesPackages": { - "input": { - "type": "structure", - "members": { - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "rulesPackageArns" - ], - "members": { - "rulesPackageArns": { - "shape": "S36" - }, - "nextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn" - ], - "members": { - "resourceArn": {} - } - }, - "output": { - "type": "structure", - "required": [ - "tags" - ], - "members": { - "tags": { - "shape": "S3w" - } - } - } - }, - "PreviewAgents": { - "input": { - "type": "structure", - "required": [ - "previewAgentsArn" - ], - "members": { - "previewAgentsArn": {}, - "nextToken": {}, - "maxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "agentPreviews" - ], - "members": { - "agentPreviews": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "agentId" - ], - "members": { - "agentId": {}, - "autoScalingGroup": {} - } - } - }, - "nextToken": {} - } - } - }, - "RegisterCrossAccountAccessRole": { - "input": { - "type": "structure", - "required": [ - "roleArn" - ], - "members": { - "roleArn": {} - } - } - }, - "RemoveAttributesFromFindings": { - "input": { - "type": "structure", - "required": [ - "findingArns", - "attributeKeys" - ], - "members": { - "findingArns": { - "shape": "S2" - }, - "attributeKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "required": [ - "failedItems" - ], - "members": { - "failedItems": { - "shape": "S9" - } - } - } - }, - "SetTagsForResource": { - "input": { - "type": "structure", - "required": [ - "resourceArn" - ], - "members": { - "resourceArn": {}, - "tags": { - "shape": "S3w" - } - } - } - }, - "StartAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentTemplateArn" - ], - "members": { - "assessmentTemplateArn": {}, - "assessmentRunName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "StopAssessmentRun": { - "input": { - "type": "structure", - "required": [ - "assessmentRunArn" - ], - "members": { - "assessmentRunArn": {} - } - } - }, - "SubscribeToEvent": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "event", - "topicArn" - ], - "members": { - "resourceArn": {}, - "event": {}, - "topicArn": {} - } - } - }, - "UnsubscribeFromEvent": { - "input": { - "type": "structure", - "required": [ - "resourceArn", - "event", - "topicArn" - ], - "members": { - "resourceArn": {}, - "event": {}, - "topicArn": {} - } - } - }, - "UpdateAssessmentTarget": { - "input": { - "type": "structure", - "required": [ - "assessmentTargetArn", - "assessmentTargetName", - "resourceGroupArn" - ], - "members": { - "assessmentTargetArn": {}, - "assessmentTargetName": {}, - "resourceGroupArn": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "S4": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S5": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - }, - "S9": { - "type": "map", - "key": {}, - "value": { - "type": "structure", - "required": [ - "failureCode", - "retryable" - ], - "members": { - "failureCode": {}, - "retryable": { - "type": "boolean" - } - } - } - }, - "Sj": { - "type": "list", - "member": {} - }, - "Sm": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "Sv": { - "type": "list", - "member": {} - }, - "S24": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "S2i": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "messageType", - "count" - ], - "members": { - "messageType": {}, - "count": { - "type": "long" - }, - "dataSize": { - "type": "long" - } - } - } - }, - "S2y": { - "type": "list", - "member": {} - }, - "S32": { - "type": "structure", - "members": { - "minSeconds": { - "type": "integer" - }, - "maxSeconds": { - "type": "integer" - } - } - }, - "S33": { - "type": "list", - "member": {} - }, - "S34": { - "type": "structure", - "members": { - "beginDate": { - "type": "timestamp" - }, - "endDate": { - "type": "timestamp" - } - } - }, - "S36": { - "type": "list", - "member": {} - }, - "S3w": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key" - ], - "members": { - "key": {}, - "value": {} - } - } - } - } -} -},{}],69:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-05-28", - "endpointPrefix": "iot", - "serviceFullName": "AWS IoT", - "signatureVersion": "v4", - "signingName": "execute-api", - "protocol": "rest-json" - }, - "operations": { - "AcceptCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/accept-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - } - }, - "AttachPrincipalPolicy": { - "http": { - "method": "PUT", - "requestUri": "/principal-policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "principal" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - } - } - } - }, - "AttachThingPrincipal": { - "http": { - "method": "PUT", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "principal" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/cancel-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - } - }, - "CreateCertificateFromCsr": { - "http": { - "requestUri": "/certificates" - }, - "input": { - "type": "structure", - "required": [ - "certificateSigningRequest" - ], - "members": { - "certificateSigningRequest": {}, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "certificatePem": {} - } - } - }, - "CreateKeysAndCertificate": { - "http": { - "requestUri": "/keys-and-certificate" - }, - "input": { - "type": "structure", - "members": { - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "certificatePem": {}, - "keyPair": { - "type": "structure", - "members": { - "PublicKey": {}, - "PrivateKey": { - "type": "string", - "sensitive": true - } - } - } - } - } - }, - "CreatePolicy": { - "http": { - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyDocument" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyDocument": {} - } - }, - "output": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {}, - "policyDocument": {}, - "policyVersionId": {} - } - } - }, - "CreatePolicyVersion": { - "http": { - "requestUri": "/policies/{policyName}/version" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyDocument" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyDocument": {}, - "setAsDefault": { - "location": "querystring", - "locationName": "setAsDefault", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyArn": {}, - "policyDocument": {}, - "policyVersionId": {}, - "isDefaultVersion": { - "type": "boolean" - } - } - } - }, - "CreateThing": { - "http": { - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "thingTypeName": {}, - "attributePayload": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingName": {}, - "thingArn": {} - } - } - }, - "CreateThingType": { - "http": { - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - }, - "thingTypeProperties": { - "shape": "S14" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeArn": {} - } - } - }, - "CreateTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName", - "topicRulePayload" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - }, - "topicRulePayload": { - "shape": "S1b" - } - }, - "payload": "topicRulePayload" - } - }, - "DeleteCACertificate": { - "http": { - "method": "DELETE", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteCertificate": { - "http": { - "method": "DELETE", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - } - }, - "DeletePolicy": { - "http": { - "method": "DELETE", - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - } - }, - "DeletePolicyVersion": { - "http": { - "method": "DELETE", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - } - }, - "DeleteRegistrationCode": { - "http": { - "method": "DELETE", - "requestUri": "/registrationcode" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteThing": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "expectedVersion": { - "location": "querystring", - "locationName": "expectedVersion", - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteThingType": { - "http": { - "method": "DELETE", - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTopicRule": { - "http": { - "method": "DELETE", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - }, - "required": [ - "ruleName" - ] - } - }, - "DeprecateThingType": { - "http": { - "requestUri": "/thing-types/{thingTypeName}/deprecate" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - }, - "undoDeprecate": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeCACertificate": { - "http": { - "method": "GET", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateDescription": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "certificatePem": {}, - "ownedBy": {}, - "creationDate": { - "type": "timestamp" - }, - "autoRegistrationStatus": {} - } - } - } - } - }, - "DescribeCertificate": { - "http": { - "method": "GET", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateDescription": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "caCertificateId": {}, - "status": {}, - "certificatePem": {}, - "ownedBy": {}, - "previousOwnedBy": {}, - "creationDate": { - "type": "timestamp" - }, - "lastModifiedDate": { - "type": "timestamp" - }, - "transferData": { - "type": "structure", - "members": { - "transferMessage": {}, - "rejectReason": {}, - "transferDate": { - "type": "timestamp" - }, - "acceptDate": { - "type": "timestamp" - }, - "rejectDate": { - "type": "timestamp" - } - } - } - } - } - } - } - }, - "DescribeEndpoint": { - "http": { - "method": "GET", - "requestUri": "/endpoint" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "endpointAddress": {} - } - } - }, - "DescribeThing": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "defaultClientId": {}, - "thingName": {}, - "thingTypeName": {}, - "attributes": { - "shape": "Sx" - }, - "version": { - "type": "long" - } - } - } - }, - "DescribeThingType": { - "http": { - "method": "GET", - "requestUri": "/thing-types/{thingTypeName}" - }, - "input": { - "type": "structure", - "required": [ - "thingTypeName" - ], - "members": { - "thingTypeName": { - "location": "uri", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeProperties": { - "shape": "S14" - }, - "thingTypeMetadata": { - "shape": "S3s" - } - } - } - }, - "DetachPrincipalPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/principal-policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "principal" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - } - } - } - }, - "DetachThingPrincipal": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "principal" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}/disable" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "EnableTopicRule": { - "http": { - "requestUri": "/rules/{ruleName}/enable" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - } - }, - "GetLoggingOptions": { - "http": { - "method": "GET", - "requestUri": "/loggingOptions" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "roleArn": {}, - "logLevel": {} - } - } - }, - "GetPolicy": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {}, - "policyDocument": {}, - "defaultVersionId": {} - } - } - }, - "GetPolicyVersion": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyArn": {}, - "policyName": {}, - "policyDocument": {}, - "policyVersionId": {}, - "isDefaultVersion": { - "type": "boolean" - } - } - } - }, - "GetRegistrationCode": { - "http": { - "method": "GET", - "requestUri": "/registrationcode" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "registrationCode": {} - } - } - }, - "GetTopicRule": { - "http": { - "method": "GET", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - } - } - }, - "output": { - "type": "structure", - "members": { - "ruleArn": {}, - "rule": { - "type": "structure", - "members": { - "ruleName": {}, - "sql": {}, - "description": {}, - "createdAt": { - "type": "timestamp" - }, - "actions": { - "shape": "S1e" - }, - "ruleDisabled": { - "type": "boolean" - }, - "awsIotSqlVersion": {} - } - } - } - } - }, - "ListCACertificates": { - "http": { - "method": "GET", - "requestUri": "/cacertificates" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextMarker": {} - } - } - }, - "ListCertificates": { - "http": { - "method": "GET", - "requestUri": "/certificates" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "shape": "S4p" - }, - "nextMarker": {} - } - } - }, - "ListCertificatesByCA": { - "http": { - "method": "GET", - "requestUri": "/certificates-by-ca/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "caCertificateId" - ], - "members": { - "caCertificateId": { - "location": "uri", - "locationName": "caCertificateId" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificates": { - "shape": "S4p" - }, - "nextMarker": {} - } - } - }, - "ListOutgoingCertificates": { - "http": { - "method": "GET", - "requestUri": "/certificates-out-going" - }, - "input": { - "type": "structure", - "members": { - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "outgoingCertificates": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "transferredTo": {}, - "transferDate": { - "type": "timestamp" - }, - "transferMessage": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "nextMarker": {} - } - } - }, - "ListPolicies": { - "http": { - "method": "GET", - "requestUri": "/policies" - }, - "input": { - "type": "structure", - "members": { - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policies": { - "shape": "S4z" - }, - "nextMarker": {} - } - } - }, - "ListPolicyPrincipals": { - "http": { - "method": "GET", - "requestUri": "/policy-principals" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "header", - "locationName": "x-amzn-iot-policy" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "principals": { - "shape": "S53" - }, - "nextMarker": {} - } - } - }, - "ListPolicyVersions": { - "http": { - "method": "GET", - "requestUri": "/policies/{policyName}/version" - }, - "input": { - "type": "structure", - "required": [ - "policyName" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - } - } - }, - "output": { - "type": "structure", - "members": { - "policyVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "versionId": {}, - "isDefaultVersion": { - "type": "boolean" - }, - "createDate": { - "type": "timestamp" - } - } - } - } - } - } - }, - "ListPrincipalPolicies": { - "http": { - "method": "GET", - "requestUri": "/principal-policies" - }, - "input": { - "type": "structure", - "required": [ - "principal" - ], - "members": { - "principal": { - "location": "header", - "locationName": "x-amzn-iot-principal" - }, - "marker": { - "location": "querystring", - "locationName": "marker" - }, - "pageSize": { - "location": "querystring", - "locationName": "pageSize", - "type": "integer" - }, - "ascendingOrder": { - "location": "querystring", - "locationName": "isAscendingOrder", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "policies": { - "shape": "S4z" - }, - "nextMarker": {} - } - } - }, - "ListPrincipalThings": { - "http": { - "method": "GET", - "requestUri": "/principals/things" - }, - "input": { - "type": "structure", - "required": [ - "principal" - ], - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "principal": { - "location": "header", - "locationName": "x-amzn-principal" - } - } - }, - "output": { - "type": "structure", - "members": { - "things": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListThingPrincipals": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}/principals" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "principals": { - "shape": "S53" - } - } - } - }, - "ListThingTypes": { - "http": { - "method": "GET", - "requestUri": "/thing-types" - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "thingTypeName": { - "location": "querystring", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "thingTypes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "thingTypeName": {}, - "thingTypeProperties": { - "shape": "S14" - }, - "thingTypeMetadata": { - "shape": "S3s" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListThings": { - "http": { - "method": "GET", - "requestUri": "/things" - }, - "input": { - "type": "structure", - "members": { - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "attributeName": { - "location": "querystring", - "locationName": "attributeName" - }, - "attributeValue": { - "location": "querystring", - "locationName": "attributeValue" - }, - "thingTypeName": { - "location": "querystring", - "locationName": "thingTypeName" - } - } - }, - "output": { - "type": "structure", - "members": { - "things": { - "type": "list", - "member": { - "type": "structure", - "members": { - "thingName": {}, - "thingTypeName": {}, - "attributes": { - "shape": "Sx" - }, - "version": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "ListTopicRules": { - "http": { - "method": "GET", - "requestUri": "/rules" - }, - "input": { - "type": "structure", - "members": { - "topic": { - "location": "querystring", - "locationName": "topic" - }, - "maxResults": { - "location": "querystring", - "locationName": "maxResults", - "type": "integer" - }, - "nextToken": { - "location": "querystring", - "locationName": "nextToken" - }, - "ruleDisabled": { - "location": "querystring", - "locationName": "ruleDisabled", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "rules": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ruleArn": {}, - "ruleName": {}, - "topicPattern": {}, - "createdAt": { - "type": "timestamp" - }, - "ruleDisabled": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "RegisterCACertificate": { - "http": { - "requestUri": "/cacertificate" - }, - "input": { - "type": "structure", - "required": [ - "caCertificate", - "verificationCertificate" - ], - "members": { - "caCertificate": {}, - "verificationCertificate": {}, - "setAsActive": { - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - }, - "allowAutoRegistration": { - "location": "querystring", - "locationName": "allowAutoRegistration", - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {} - } - } - }, - "RegisterCertificate": { - "http": { - "requestUri": "/certificate/register" - }, - "input": { - "type": "structure", - "required": [ - "certificatePem" - ], - "members": { - "certificatePem": {}, - "caCertificatePem": {}, - "setAsActive": { - "deprecated": true, - "location": "querystring", - "locationName": "setAsActive", - "type": "boolean" - }, - "status": {} - } - }, - "output": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {} - } - } - }, - "RejectCertificateTransfer": { - "http": { - "method": "PATCH", - "requestUri": "/reject-certificate-transfer/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "rejectReason": {} - } - } - }, - "ReplaceTopicRule": { - "http": { - "method": "PATCH", - "requestUri": "/rules/{ruleName}" - }, - "input": { - "type": "structure", - "required": [ - "ruleName", - "topicRulePayload" - ], - "members": { - "ruleName": { - "location": "uri", - "locationName": "ruleName" - }, - "topicRulePayload": { - "shape": "S1b" - } - }, - "payload": "topicRulePayload" - } - }, - "SetDefaultPolicyVersion": { - "http": { - "method": "PATCH", - "requestUri": "/policies/{policyName}/version/{policyVersionId}" - }, - "input": { - "type": "structure", - "required": [ - "policyName", - "policyVersionId" - ], - "members": { - "policyName": { - "location": "uri", - "locationName": "policyName" - }, - "policyVersionId": { - "location": "uri", - "locationName": "policyVersionId" - } - } - } - }, - "SetLoggingOptions": { - "http": { - "requestUri": "/loggingOptions" - }, - "input": { - "type": "structure", - "required": [ - "loggingOptionsPayload" - ], - "members": { - "loggingOptionsPayload": { - "type": "structure", - "required": [ - "roleArn" - ], - "members": { - "roleArn": {}, - "logLevel": {} - } - } - }, - "payload": "loggingOptionsPayload" - } - }, - "TransferCertificate": { - "http": { - "method": "PATCH", - "requestUri": "/transfer-certificate/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId", - "targetAwsAccount" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "targetAwsAccount": { - "location": "querystring", - "locationName": "targetAwsAccount" - }, - "transferMessage": {} - } - }, - "output": { - "type": "structure", - "members": { - "transferredCertificateArn": {} - } - } - }, - "UpdateCACertificate": { - "http": { - "method": "PUT", - "requestUri": "/cacertificate/{caCertificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "caCertificateId" - }, - "newStatus": { - "location": "querystring", - "locationName": "newStatus" - }, - "newAutoRegistrationStatus": { - "location": "querystring", - "locationName": "newAutoRegistrationStatus" - } - } - } - }, - "UpdateCertificate": { - "http": { - "method": "PUT", - "requestUri": "/certificates/{certificateId}" - }, - "input": { - "type": "structure", - "required": [ - "certificateId", - "newStatus" - ], - "members": { - "certificateId": { - "location": "uri", - "locationName": "certificateId" - }, - "newStatus": { - "location": "querystring", - "locationName": "newStatus" - } - } - } - }, - "UpdateThing": { - "http": { - "method": "PATCH", - "requestUri": "/things/{thingName}" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "thingTypeName": {}, - "attributePayload": { - "shape": "Sw" - }, - "expectedVersion": { - "type": "long" - }, - "removeThingType": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "Sw": { - "type": "structure", - "members": { - "attributes": { - "shape": "Sx" - }, - "merge": { - "type": "boolean" - } - } - }, - "Sx": { - "type": "map", - "key": {}, - "value": {} - }, - "S14": { - "type": "structure", - "members": { - "thingTypeDescription": {}, - "searchableAttributes": { - "type": "list", - "member": {} - } - } - }, - "S1b": { - "type": "structure", - "required": [ - "sql", - "actions" - ], - "members": { - "sql": {}, - "description": {}, - "actions": { - "shape": "S1e" - }, - "ruleDisabled": { - "type": "boolean" - }, - "awsIotSqlVersion": {} - } - }, - "S1e": { - "type": "list", - "member": { - "type": "structure", - "members": { - "dynamoDB": { - "type": "structure", - "required": [ - "tableName", - "roleArn", - "hashKeyField", - "hashKeyValue" - ], - "members": { - "tableName": {}, - "roleArn": {}, - "operation": {}, - "hashKeyField": {}, - "hashKeyValue": {}, - "hashKeyType": {}, - "rangeKeyField": {}, - "rangeKeyValue": {}, - "rangeKeyType": {}, - "payloadField": {} - } - }, - "lambda": { - "type": "structure", - "required": [ - "functionArn" - ], - "members": { - "functionArn": {} - } - }, - "sns": { - "type": "structure", - "required": [ - "targetArn", - "roleArn" - ], - "members": { - "targetArn": {}, - "roleArn": {}, - "messageFormat": {} - } - }, - "sqs": { - "type": "structure", - "required": [ - "roleArn", - "queueUrl" - ], - "members": { - "roleArn": {}, - "queueUrl": {}, - "useBase64": { - "type": "boolean" - } - } - }, - "kinesis": { - "type": "structure", - "required": [ - "roleArn", - "streamName" - ], - "members": { - "roleArn": {}, - "streamName": {}, - "partitionKey": {} - } - }, - "republish": { - "type": "structure", - "required": [ - "roleArn", - "topic" - ], - "members": { - "roleArn": {}, - "topic": {} - } - }, - "s3": { - "type": "structure", - "required": [ - "roleArn", - "bucketName", - "key" - ], - "members": { - "roleArn": {}, - "bucketName": {}, - "key": {}, - "cannedAcl": {} - } - }, - "firehose": { - "type": "structure", - "required": [ - "roleArn", - "deliveryStreamName" - ], - "members": { - "roleArn": {}, - "deliveryStreamName": {}, - "separator": {} - } - }, - "cloudwatchMetric": { - "type": "structure", - "required": [ - "roleArn", - "metricNamespace", - "metricName", - "metricValue", - "metricUnit" - ], - "members": { - "roleArn": {}, - "metricNamespace": {}, - "metricName": {}, - "metricValue": {}, - "metricUnit": {}, - "metricTimestamp": {} - } - }, - "cloudwatchAlarm": { - "type": "structure", - "required": [ - "roleArn", - "alarmName", - "stateReason", - "stateValue" - ], - "members": { - "roleArn": {}, - "alarmName": {}, - "stateReason": {}, - "stateValue": {} - } - }, - "elasticsearch": { - "type": "structure", - "required": [ - "roleArn", - "endpoint", - "index", - "type", - "id" - ], - "members": { - "roleArn": {}, - "endpoint": {}, - "index": {}, - "type": {}, - "id": {} - } - } - } - } - }, - "S3s": { - "type": "structure", - "members": { - "deprecated": { - "type": "boolean" - }, - "deprecationDate": { - "type": "timestamp" - }, - "creationDate": { - "type": "timestamp" - } - } - }, - "S4p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "certificateArn": {}, - "certificateId": {}, - "status": {}, - "creationDate": { - "type": "timestamp" - } - } - } - }, - "S4z": { - "type": "list", - "member": { - "type": "structure", - "members": { - "policyName": {}, - "policyArn": {} - } - } - }, - "S53": { - "type": "list", - "member": {} - } - }, - "examples": {} -} -},{}],70:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-05-28", - "endpointPrefix": "data.iot", - "protocol": "rest-json", - "serviceFullName": "AWS IoT Data Plane", - "signatureVersion": "v4", - "signingName": "iotdata" - }, - "operations": { - "DeleteThingShadow": { - "http": { - "method": "DELETE", - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "required": [ - "payload" - ], - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "GetThingShadow": { - "http": { - "method": "GET", - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - } - } - }, - "output": { - "type": "structure", - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "Publish": { - "http": { - "requestUri": "/topics/{topic}" - }, - "input": { - "type": "structure", - "required": [ - "topic" - ], - "members": { - "topic": { - "location": "uri", - "locationName": "topic" - }, - "qos": { - "location": "querystring", - "locationName": "qos", - "type": "integer" - }, - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - }, - "UpdateThingShadow": { - "http": { - "requestUri": "/things/{thingName}/shadow" - }, - "input": { - "type": "structure", - "required": [ - "thingName", - "payload" - ], - "members": { - "thingName": { - "location": "uri", - "locationName": "thingName" - }, - "payload": { - "type": "blob" - } - }, - "payload": "payload" - }, - "output": { - "type": "structure", - "members": { - "payload": { - "type": "blob" - } - }, - "payload": "payload" - } - } - }, - "shapes": {} -} -},{}],71:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-12-02", - "endpointPrefix": "kinesis", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Kinesis", - "serviceFullName": "Amazon Kinesis", - "signatureVersion": "v4", - "targetPrefix": "Kinesis_20131202" - }, - "operations": { - "AddTagsToStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "Tags" - ], - "members": { - "StreamName": {}, - "Tags": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "CreateStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardCount" - ], - "members": { - "StreamName": {}, - "ShardCount": { - "type": "integer" - } - } - } - }, - "DecreaseStreamRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "RetentionPeriodHours" - ], - "members": { - "StreamName": {}, - "RetentionPeriodHours": { - "type": "integer" - } - } - } - }, - "DeleteStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {} - } - } - }, - "DescribeStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartShardId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "StreamDescription" - ], - "members": { - "StreamDescription": { - "type": "structure", - "required": [ - "StreamName", - "StreamARN", - "StreamStatus", - "Shards", - "HasMoreShards", - "RetentionPeriodHours", - "EnhancedMonitoring" - ], - "members": { - "StreamName": {}, - "StreamARN": {}, - "StreamStatus": {}, - "Shards": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ShardId", - "HashKeyRange", - "SequenceNumberRange" - ], - "members": { - "ShardId": {}, - "ParentShardId": {}, - "AdjacentParentShardId": {}, - "HashKeyRange": { - "type": "structure", - "required": [ - "StartingHashKey", - "EndingHashKey" - ], - "members": { - "StartingHashKey": {}, - "EndingHashKey": {} - } - }, - "SequenceNumberRange": { - "type": "structure", - "required": [ - "StartingSequenceNumber" - ], - "members": { - "StartingSequenceNumber": {}, - "EndingSequenceNumber": {} - } - } - } - } - }, - "HasMoreShards": { - "type": "boolean" - }, - "RetentionPeriodHours": { - "type": "integer" - }, - "EnhancedMonitoring": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ShardLevelMetrics": { - "shape": "Sr" - } - } - } - } - } - } - } - } - }, - "DisableEnhancedMonitoring": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardLevelMetrics" - ], - "members": { - "StreamName": {}, - "ShardLevelMetrics": { - "shape": "Sr" - } - } - }, - "output": { - "shape": "Su" - } - }, - "EnableEnhancedMonitoring": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardLevelMetrics" - ], - "members": { - "StreamName": {}, - "ShardLevelMetrics": { - "shape": "Sr" - } - } - }, - "output": { - "shape": "Su" - } - }, - "GetRecords": { - "input": { - "type": "structure", - "required": [ - "ShardIterator" - ], - "members": { - "ShardIterator": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Records" - ], - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SequenceNumber", - "Data", - "PartitionKey" - ], - "members": { - "SequenceNumber": {}, - "ApproximateArrivalTimestamp": { - "type": "timestamp" - }, - "Data": { - "type": "blob" - }, - "PartitionKey": {} - } - } - }, - "NextShardIterator": {}, - "MillisBehindLatest": { - "type": "long" - } - } - } - }, - "GetShardIterator": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardId", - "ShardIteratorType" - ], - "members": { - "StreamName": {}, - "ShardId": {}, - "ShardIteratorType": {}, - "StartingSequenceNumber": {}, - "Timestamp": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ShardIterator": {} - } - } - }, - "IncreaseStreamRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "RetentionPeriodHours" - ], - "members": { - "StreamName": {}, - "RetentionPeriodHours": { - "type": "integer" - } - } - } - }, - "ListStreams": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "ExclusiveStartStreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "StreamNames", - "HasMoreStreams" - ], - "members": { - "StreamNames": { - "type": "list", - "member": {} - }, - "HasMoreStreams": { - "type": "boolean" - } - } - } - }, - "ListTagsForStream": { - "input": { - "type": "structure", - "required": [ - "StreamName" - ], - "members": { - "StreamName": {}, - "ExclusiveStartTagKey": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Tags", - "HasMoreTags" - ], - "members": { - "Tags": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "HasMoreTags": { - "type": "boolean" - } - } - } - }, - "MergeShards": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardToMerge", - "AdjacentShardToMerge" - ], - "members": { - "StreamName": {}, - "ShardToMerge": {}, - "AdjacentShardToMerge": {} - } - } - }, - "PutRecord": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "Data", - "PartitionKey" - ], - "members": { - "StreamName": {}, - "Data": { - "type": "blob" - }, - "PartitionKey": {}, - "ExplicitHashKey": {}, - "SequenceNumberForOrdering": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ShardId", - "SequenceNumber" - ], - "members": { - "ShardId": {}, - "SequenceNumber": {} - } - } - }, - "PutRecords": { - "input": { - "type": "structure", - "required": [ - "Records", - "StreamName" - ], - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Data", - "PartitionKey" - ], - "members": { - "Data": { - "type": "blob" - }, - "ExplicitHashKey": {}, - "PartitionKey": {} - } - } - }, - "StreamName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Records" - ], - "members": { - "FailedRecordCount": { - "type": "integer" - }, - "Records": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SequenceNumber": {}, - "ShardId": {}, - "ErrorCode": {}, - "ErrorMessage": {} - } - } - } - } - } - }, - "RemoveTagsFromStream": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "TagKeys" - ], - "members": { - "StreamName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "SplitShard": { - "input": { - "type": "structure", - "required": [ - "StreamName", - "ShardToSplit", - "NewStartingHashKey" - ], - "members": { - "StreamName": {}, - "ShardToSplit": {}, - "NewStartingHashKey": {} - } - } - } - }, - "shapes": { - "Sr": { - "type": "list", - "member": {} - }, - "Su": { - "type": "structure", - "members": { - "StreamName": {}, - "CurrentShardLevelMetrics": { - "shape": "Sr" - }, - "DesiredShardLevelMetrics": { - "shape": "Sr" - } - } - } - } -} -},{}],72:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeStream": { - "input_token": "ExclusiveStartShardId", - "limit_key": "Limit", - "more_results": "StreamDescription.HasMoreShards", - "output_token": "StreamDescription.Shards[-1].ShardId", - "result_key": "StreamDescription.Shards" - }, - "ListStreams": { - "input_token": "ExclusiveStartStreamName", - "limit_key": "Limit", - "more_results": "HasMoreStreams", - "output_token": "StreamNames[-1]", - "result_key": "StreamNames" - } - } -} - -},{}],73:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "StreamExists": { - "delay": 10, - "operation": "DescribeStream", - "maxAttempts": 18, - "acceptors": [ - { - "expected": "ACTIVE", - "matcher": "path", - "state": "success", - "argument": "StreamDescription.StreamStatus" - } - ] - } - } -} - -},{}],74:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-01", - "endpointPrefix": "kms", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "KMS", - "serviceFullName": "AWS Key Management Service", - "signatureVersion": "v4", - "targetPrefix": "TrentService" - }, - "operations": { - "CancelKeyDeletion": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {} - } - } - }, - "CreateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName", - "TargetKeyId" - ], - "members": { - "AliasName": {}, - "TargetKeyId": {} - } - } - }, - "CreateGrant": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "GranteePrincipal" - ], - "members": { - "KeyId": {}, - "GranteePrincipal": {}, - "RetiringPrincipal": {}, - "Operations": { - "shape": "S8" - }, - "Constraints": { - "shape": "Sa" - }, - "GrantTokens": { - "shape": "Se" - }, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "GrantToken": {}, - "GrantId": {} - } - } - }, - "CreateKey": { - "input": { - "type": "structure", - "members": { - "Policy": {}, - "Description": {}, - "KeyUsage": {}, - "Origin": {}, - "BypassPolicyLockoutSafetyCheck": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyMetadata": { - "shape": "Sq" - } - } - } - }, - "Decrypt": { - "input": { - "type": "structure", - "required": [ - "CiphertextBlob" - ], - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "EncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "Plaintext": { - "shape": "Sz" - } - } - } - }, - "DeleteAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName" - ], - "members": { - "AliasName": {} - } - } - }, - "DeleteImportedKeyMaterial": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "DescribeKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyMetadata": { - "shape": "Sq" - } - } - } - }, - "DisableKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "DisableKeyRotation": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "EnableKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "EnableKeyRotation": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - } - }, - "Encrypt": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Plaintext" - ], - "members": { - "KeyId": {}, - "Plaintext": { - "shape": "Sz" - }, - "EncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "KeyId": {} - } - } - }, - "GenerateDataKey": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "EncryptionContext": { - "shape": "Sb" - }, - "NumberOfBytes": { - "type": "integer" - }, - "KeySpec": {}, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "Plaintext": { - "shape": "Sz" - }, - "KeyId": {} - } - } - }, - "GenerateDataKeyWithoutPlaintext": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "EncryptionContext": { - "shape": "Sb" - }, - "KeySpec": {}, - "NumberOfBytes": { - "type": "integer" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "KeyId": {} - } - } - }, - "GenerateRandom": { - "input": { - "type": "structure", - "members": { - "NumberOfBytes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Plaintext": { - "shape": "Sz" - } - } - } - }, - "GetKeyPolicy": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "PolicyName" - ], - "members": { - "KeyId": {}, - "PolicyName": {} - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "GetKeyRotationStatus": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyRotationEnabled": { - "type": "boolean" - } - } - } - }, - "GetParametersForImport": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "WrappingAlgorithm", - "WrappingKeySpec" - ], - "members": { - "KeyId": {}, - "WrappingAlgorithm": {}, - "WrappingKeySpec": {} - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "ImportToken": { - "type": "blob" - }, - "PublicKey": { - "shape": "Sz" - }, - "ParametersValidTo": { - "type": "timestamp" - } - } - } - }, - "ImportKeyMaterial": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "ImportToken", - "EncryptedKeyMaterial" - ], - "members": { - "KeyId": {}, - "ImportToken": { - "type": "blob" - }, - "EncryptedKeyMaterial": { - "type": "blob" - }, - "ValidTo": { - "type": "timestamp" - }, - "ExpirationModel": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ListAliases": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Aliases": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AliasName": {}, - "AliasArn": {}, - "TargetKeyId": {} - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListGrants": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {}, - "KeyId": {} - } - }, - "output": { - "shape": "S20" - } - }, - "ListKeyPolicies": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "PolicyNames": { - "type": "list", - "member": {} - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListKeys": { - "input": { - "type": "structure", - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "type": "structure", - "members": { - "Keys": { - "type": "list", - "member": { - "type": "structure", - "members": { - "KeyId": {}, - "KeyArn": {} - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - }, - "ListRetirableGrants": { - "input": { - "type": "structure", - "required": [ - "RetiringPrincipal" - ], - "members": { - "Limit": { - "type": "integer" - }, - "Marker": {}, - "RetiringPrincipal": {} - } - }, - "output": { - "shape": "S20" - } - }, - "PutKeyPolicy": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "PolicyName", - "Policy" - ], - "members": { - "KeyId": {}, - "PolicyName": {}, - "Policy": {}, - "BypassPolicyLockoutSafetyCheck": { - "type": "boolean" - } - } - } - }, - "ReEncrypt": { - "input": { - "type": "structure", - "required": [ - "CiphertextBlob", - "DestinationKeyId" - ], - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "SourceEncryptionContext": { - "shape": "Sb" - }, - "DestinationKeyId": {}, - "DestinationEncryptionContext": { - "shape": "Sb" - }, - "GrantTokens": { - "shape": "Se" - } - } - }, - "output": { - "type": "structure", - "members": { - "CiphertextBlob": { - "type": "blob" - }, - "SourceKeyId": {}, - "KeyId": {} - } - } - }, - "RetireGrant": { - "input": { - "type": "structure", - "members": { - "GrantToken": {}, - "KeyId": {}, - "GrantId": {} - } - } - }, - "RevokeGrant": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "GrantId" - ], - "members": { - "KeyId": {}, - "GrantId": {} - } - } - }, - "ScheduleKeyDeletion": { - "input": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "KeyId": {}, - "PendingWindowInDays": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "KeyId": {}, - "DeletionDate": { - "type": "timestamp" - } - } - } - }, - "UpdateAlias": { - "input": { - "type": "structure", - "required": [ - "AliasName", - "TargetKeyId" - ], - "members": { - "AliasName": {}, - "TargetKeyId": {} - } - } - }, - "UpdateKeyDescription": { - "input": { - "type": "structure", - "required": [ - "KeyId", - "Description" - ], - "members": { - "KeyId": {}, - "Description": {} - } - } - } - }, - "shapes": { - "S8": { - "type": "list", - "member": {} - }, - "Sa": { - "type": "structure", - "members": { - "EncryptionContextSubset": { - "shape": "Sb" - }, - "EncryptionContextEquals": { - "shape": "Sb" - } - } - }, - "Sb": { - "type": "map", - "key": {}, - "value": {} - }, - "Se": { - "type": "list", - "member": {} - }, - "Sq": { - "type": "structure", - "required": [ - "KeyId" - ], - "members": { - "AWSAccountId": {}, - "KeyId": {}, - "Arn": {}, - "CreationDate": { - "type": "timestamp" - }, - "Enabled": { - "type": "boolean" - }, - "Description": {}, - "KeyUsage": {}, - "KeyState": {}, - "DeletionDate": { - "type": "timestamp" - }, - "ValidTo": { - "type": "timestamp" - }, - "Origin": {}, - "ExpirationModel": {} - } - }, - "Sz": { - "type": "blob", - "sensitive": true - }, - "S20": { - "type": "structure", - "members": { - "Grants": { - "type": "list", - "member": { - "type": "structure", - "members": { - "KeyId": {}, - "GrantId": {}, - "Name": {}, - "CreationDate": { - "type": "timestamp" - }, - "GranteePrincipal": {}, - "RetiringPrincipal": {}, - "IssuingAccount": {}, - "Operations": { - "shape": "S8" - }, - "Constraints": { - "shape": "Sa" - } - } - } - }, - "NextMarker": {}, - "Truncated": { - "type": "boolean" - } - } - } - } -} -},{}],75:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListAliases": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "Aliases" - }, - "ListGrants": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "Grants" - }, - "ListKeyPolicies": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "PolicyNames" - }, - "ListKeys": { - "limit_key": "Limit", - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "Truncated", - "result_key": "Keys" - } - } -} - -},{}],76:[function(require,module,exports){ -module.exports={ - "metadata": { - "apiVersion": "2014-11-11", - "endpointPrefix": "lambda", - "serviceFullName": "AWS Lambda", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "AddEventSource": { - "http": { - "requestUri": "/2014-11-13/event-source-mappings/" - }, - "input": { - "type": "structure", - "required": [ - "EventSource", - "FunctionName", - "Role" - ], - "members": { - "EventSource": {}, - "FunctionName": {}, - "Role": {}, - "BatchSize": { - "type": "integer" - }, - "Parameters": { - "shape": "S6" - } - } - }, - "output": { - "shape": "S7" - } - }, - "DeleteFunction": { - "http": { - "method": "DELETE", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - } - }, - "GetEventSource": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/event-source-mappings/{UUID}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "S7" - } - }, - "GetFunction": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "Se" - }, - "Code": { - "type": "structure", - "members": { - "RepositoryType": {}, - "Location": {} - } - } - } - } - }, - "GetFunctionConfiguration": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - } - } - }, - "output": { - "shape": "Se" - } - }, - "InvokeAsync": { - "http": { - "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "InvokeArgs" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvokeArgs": { - "shape": "Sq" - } - }, - "payload": "InvokeArgs" - }, - "output": { - "type": "structure", - "members": { - "Status": { - "location": "statusCode", - "type": "integer" - } - } - } - }, - "ListEventSources": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/event-source-mappings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "EventSourceArn": { - "location": "querystring", - "locationName": "EventSource" - }, - "FunctionName": { - "location": "querystring", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "EventSources": { - "type": "list", - "member": { - "shape": "S7" - } - } - } - } - }, - "ListFunctions": { - "http": { - "method": "GET", - "requestUri": "/2014-11-13/functions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Functions": { - "type": "list", - "member": { - "shape": "Se" - } - } - } - } - }, - "RemoveEventSource": { - "http": { - "method": "DELETE", - "requestUri": "/2014-11-13/event-source-mappings/{UUID}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - } - }, - "UpdateFunctionConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/2014-11-13/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Role": { - "location": "querystring", - "locationName": "Role" - }, - "Handler": { - "location": "querystring", - "locationName": "Handler" - }, - "Description": { - "location": "querystring", - "locationName": "Description" - }, - "Timeout": { - "location": "querystring", - "locationName": "Timeout", - "type": "integer" - }, - "MemorySize": { - "location": "querystring", - "locationName": "MemorySize", - "type": "integer" - } - } - }, - "output": { - "shape": "Se" - } - }, - "UploadFunction": { - "http": { - "method": "PUT", - "requestUri": "/2014-11-13/functions/{FunctionName}", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "FunctionZip", - "Runtime", - "Role", - "Handler", - "Mode" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "FunctionZip": { - "shape": "Sq" - }, - "Runtime": { - "location": "querystring", - "locationName": "Runtime" - }, - "Role": { - "location": "querystring", - "locationName": "Role" - }, - "Handler": { - "location": "querystring", - "locationName": "Handler" - }, - "Mode": { - "location": "querystring", - "locationName": "Mode" - }, - "Description": { - "location": "querystring", - "locationName": "Description" - }, - "Timeout": { - "location": "querystring", - "locationName": "Timeout", - "type": "integer" - }, - "MemorySize": { - "location": "querystring", - "locationName": "MemorySize", - "type": "integer" - } - }, - "payload": "FunctionZip" - }, - "output": { - "shape": "Se" - } - } - }, - "shapes": { - "S6": { - "type": "map", - "key": {}, - "value": {} - }, - "S7": { - "type": "structure", - "members": { - "UUID": {}, - "BatchSize": { - "type": "integer" - }, - "EventSource": {}, - "FunctionName": {}, - "Parameters": { - "shape": "S6" - }, - "Role": {}, - "LastModified": { - "type": "timestamp" - }, - "IsActive": { - "type": "boolean" - }, - "Status": {} - } - }, - "Se": { - "type": "structure", - "members": { - "FunctionName": {}, - "FunctionARN": {}, - "ConfigurationId": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "Mode": {}, - "CodeSize": { - "type": "long" - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "LastModified": { - "type": "timestamp" - } - } - }, - "Sq": { - "type": "blob", - "streaming": true - } - } -} -},{}],77:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListEventSources": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "EventSources" - }, - "ListFunctions": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "Functions" - } - } -} - -},{}],78:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-03-31", - "endpointPrefix": "lambda", - "protocol": "rest-json", - "serviceFullName": "AWS Lambda", - "signatureVersion": "v4" - }, - "operations": { - "AddPermission": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/policy", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "StatementId", - "Action", - "Principal" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "StatementId": {}, - "Action": {}, - "Principal": {}, - "SourceArn": {}, - "SourceAccount": {}, - "EventSourceToken": {}, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Statement": {} - } - } - }, - "CreateAlias": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name", - "FunctionVersion" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": {}, - "FunctionVersion": {}, - "Description": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "CreateEventSourceMapping": { - "http": { - "requestUri": "/2015-03-31/event-source-mappings/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "EventSourceArn", - "FunctionName", - "StartingPosition" - ], - "members": { - "EventSourceArn": {}, - "FunctionName": {}, - "Enabled": { - "type": "boolean" - }, - "BatchSize": { - "type": "integer" - }, - "StartingPosition": {} - } - }, - "output": { - "shape": "Sm" - } - }, - "CreateFunction": { - "http": { - "requestUri": "/2015-03-31/functions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Runtime", - "Role", - "Handler", - "Code" - ], - "members": { - "FunctionName": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "Code": { - "type": "structure", - "members": { - "ZipFile": { - "type": "blob" - }, - "S3Bucket": {}, - "S3Key": {}, - "S3ObjectVersion": {} - } - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "Publish": { - "type": "boolean" - }, - "VpcConfig": { - "shape": "S10" - } - } - }, - "output": { - "shape": "S15" - } - }, - "DeleteAlias": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - } - } - } - }, - "DeleteEventSourceMapping": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "Sm" - } - }, - "DeleteFunction": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - } - }, - "GetAlias": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - } - } - }, - "output": { - "shape": "Sg" - } - }, - "GetEventSourceMapping": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - } - } - }, - "output": { - "shape": "Sm" - } - }, - "GetFunction": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Configuration": { - "shape": "S15" - }, - "Code": { - "type": "structure", - "members": { - "RepositoryType": {}, - "Location": {} - } - } - } - } - }, - "GetFunctionConfiguration": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "shape": "S15" - } - }, - "GetPolicy": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/policy", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - } - } - }, - "Invoke": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/invocations" - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvocationType": { - "location": "header", - "locationName": "X-Amz-Invocation-Type" - }, - "LogType": { - "location": "header", - "locationName": "X-Amz-Log-Type" - }, - "ClientContext": { - "location": "header", - "locationName": "X-Amz-Client-Context" - }, - "Payload": { - "type": "blob" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - }, - "payload": "Payload" - }, - "output": { - "type": "structure", - "members": { - "StatusCode": { - "location": "statusCode", - "type": "integer" - }, - "FunctionError": { - "location": "header", - "locationName": "X-Amz-Function-Error" - }, - "LogResult": { - "location": "header", - "locationName": "X-Amz-Log-Result" - }, - "Payload": { - "type": "blob" - } - }, - "payload": "Payload" - } - }, - "InvokeAsync": { - "http": { - "requestUri": "/2014-11-13/functions/{FunctionName}/invoke-async/", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "InvokeArgs" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "InvokeArgs": { - "type": "blob", - "streaming": true - } - }, - "deprecated": true, - "payload": "InvokeArgs" - }, - "output": { - "type": "structure", - "members": { - "Status": { - "location": "statusCode", - "type": "integer" - } - }, - "deprecated": true - }, - "deprecated": true - }, - "ListAliases": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "FunctionVersion": { - "location": "querystring", - "locationName": "FunctionVersion" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Aliases": { - "type": "list", - "member": { - "shape": "Sg" - } - } - } - } - }, - "ListEventSourceMappings": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/event-source-mappings/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "EventSourceArn": { - "location": "querystring", - "locationName": "EventSourceArn" - }, - "FunctionName": { - "location": "querystring", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "EventSourceMappings": { - "type": "list", - "member": { - "shape": "Sm" - } - } - } - } - }, - "ListFunctions": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/", - "responseCode": 200 - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Functions": { - "shape": "S23" - } - } - } - }, - "ListVersionsByFunction": { - "http": { - "method": "GET", - "requestUri": "/2015-03-31/functions/{FunctionName}/versions", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Marker": { - "location": "querystring", - "locationName": "Marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "MaxItems", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Versions": { - "shape": "S23" - } - } - } - }, - "PublishVersion": { - "http": { - "requestUri": "/2015-03-31/functions/{FunctionName}/versions", - "responseCode": 201 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "CodeSha256": {}, - "Description": {} - } - }, - "output": { - "shape": "S15" - } - }, - "RemovePermission": { - "http": { - "method": "DELETE", - "requestUri": "/2015-03-31/functions/{FunctionName}/policy/{StatementId}", - "responseCode": 204 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "StatementId" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "StatementId": { - "location": "uri", - "locationName": "StatementId" - }, - "Qualifier": { - "location": "querystring", - "locationName": "Qualifier" - } - } - } - }, - "UpdateAlias": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/aliases/{Name}", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName", - "Name" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Name": { - "location": "uri", - "locationName": "Name" - }, - "FunctionVersion": {}, - "Description": {} - } - }, - "output": { - "shape": "Sg" - } - }, - "UpdateEventSourceMapping": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/event-source-mappings/{UUID}", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "UUID" - ], - "members": { - "UUID": { - "location": "uri", - "locationName": "UUID" - }, - "FunctionName": {}, - "Enabled": { - "type": "boolean" - }, - "BatchSize": { - "type": "integer" - } - } - }, - "output": { - "shape": "Sm" - } - }, - "UpdateFunctionCode": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/code", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "ZipFile": { - "type": "blob" - }, - "S3Bucket": {}, - "S3Key": {}, - "S3ObjectVersion": {}, - "Publish": { - "type": "boolean" - } - } - }, - "output": { - "shape": "S15" - } - }, - "UpdateFunctionConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/2015-03-31/functions/{FunctionName}/configuration", - "responseCode": 200 - }, - "input": { - "type": "structure", - "required": [ - "FunctionName" - ], - "members": { - "FunctionName": { - "location": "uri", - "locationName": "FunctionName" - }, - "Role": {}, - "Handler": {}, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "VpcConfig": { - "shape": "S10" - }, - "Runtime": {} - } - }, - "output": { - "shape": "S15" - } - } - }, - "shapes": { - "Sg": { - "type": "structure", - "members": { - "AliasArn": {}, - "Name": {}, - "FunctionVersion": {}, - "Description": {} - } - }, - "Sm": { - "type": "structure", - "members": { - "UUID": {}, - "BatchSize": { - "type": "integer" - }, - "EventSourceArn": {}, - "FunctionArn": {}, - "LastModified": { - "type": "timestamp" - }, - "LastProcessingResult": {}, - "State": {}, - "StateTransitionReason": {} - } - }, - "S10": { - "type": "structure", - "members": { - "SubnetIds": { - "shape": "S11" - }, - "SecurityGroupIds": { - "shape": "S13" - } - } - }, - "S11": { - "type": "list", - "member": {} - }, - "S13": { - "type": "list", - "member": {} - }, - "S15": { - "type": "structure", - "members": { - "FunctionName": {}, - "FunctionArn": {}, - "Runtime": {}, - "Role": {}, - "Handler": {}, - "CodeSize": { - "type": "long" - }, - "Description": {}, - "Timeout": { - "type": "integer" - }, - "MemorySize": { - "type": "integer" - }, - "LastModified": {}, - "CodeSha256": {}, - "Version": {}, - "VpcConfig": { - "type": "structure", - "members": { - "SubnetIds": { - "shape": "S11" - }, - "SecurityGroupIds": { - "shape": "S13" - }, - "VpcId": {} - } - } - } - }, - "S23": { - "type": "list", - "member": { - "shape": "S15" - } - } - } -} -},{}],79:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListEventSourceMappings": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "EventSourceMappings" - }, - "ListFunctions": { - "input_token": "Marker", - "output_token": "NextMarker", - "limit_key": "MaxItems", - "result_key": "Functions" - } - } -} - -},{}],80:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-03-28", - "endpointPrefix": "logs", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon CloudWatch Logs", - "signatureVersion": "v4", - "targetPrefix": "Logs_20140328" - }, - "operations": { - "CancelExportTask": { - "input": { - "type": "structure", - "required": [ - "taskId" - ], - "members": { - "taskId": {} - } - } - }, - "CreateExportTask": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "from", - "to", - "destination" - ], - "members": { - "taskName": {}, - "logGroupName": {}, - "logStreamNamePrefix": {}, - "from": { - "type": "long" - }, - "to": { - "type": "long" - }, - "destination": {}, - "destinationPrefix": {} - } - }, - "output": { - "type": "structure", - "members": { - "taskId": {} - } - } - }, - "CreateLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "CreateLogStream": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {} - } - } - }, - "DeleteDestination": { - "input": { - "type": "structure", - "required": [ - "destinationName" - ], - "members": { - "destinationName": {} - } - } - }, - "DeleteLogGroup": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "DeleteLogStream": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {} - } - } - }, - "DeleteMetricFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName" - ], - "members": { - "logGroupName": {}, - "filterName": {} - } - } - }, - "DeleteRetentionPolicy": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {} - } - } - }, - "DeleteSubscriptionFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName" - ], - "members": { - "logGroupName": {}, - "filterName": {} - } - } - }, - "DescribeDestinations": { - "input": { - "type": "structure", - "members": { - "DestinationNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "destinations": { - "type": "list", - "member": { - "shape": "Sq" - } - }, - "nextToken": {} - } - } - }, - "DescribeExportTasks": { - "input": { - "type": "structure", - "members": { - "taskId": {}, - "statusCode": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "exportTasks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "taskId": {}, - "taskName": {}, - "logGroupName": {}, - "from": { - "type": "long" - }, - "to": { - "type": "long" - }, - "destination": {}, - "destinationPrefix": {}, - "status": { - "type": "structure", - "members": { - "code": {}, - "message": {} - } - }, - "executionInfo": { - "type": "structure", - "members": { - "creationTime": { - "type": "long" - }, - "completionTime": { - "type": "long" - } - } - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeLogGroups": { - "input": { - "type": "structure", - "members": { - "logGroupNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "logGroups": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logGroupName": {}, - "creationTime": { - "type": "long" - }, - "retentionInDays": { - "type": "integer" - }, - "metricFilterCount": { - "type": "integer" - }, - "arn": {}, - "storedBytes": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeLogStreams": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "logStreamNamePrefix": {}, - "orderBy": {}, - "descending": { - "type": "boolean" - }, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "logStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "creationTime": { - "type": "long" - }, - "firstEventTimestamp": { - "type": "long" - }, - "lastEventTimestamp": { - "type": "long" - }, - "lastIngestionTime": { - "type": "long" - }, - "uploadSequenceToken": {}, - "arn": {}, - "storedBytes": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeMetricFilters": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "filterNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "metricFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "filterName": {}, - "filterPattern": {}, - "metricTransformations": { - "shape": "S1m" - }, - "creationTime": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "DescribeSubscriptionFilters": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "filterNamePrefix": {}, - "nextToken": {}, - "limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "subscriptionFilters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "filterName": {}, - "logGroupName": {}, - "filterPattern": {}, - "destinationArn": {}, - "roleArn": {}, - "creationTime": { - "type": "long" - } - } - } - }, - "nextToken": {} - } - } - }, - "FilterLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName" - ], - "members": { - "logGroupName": {}, - "logStreamNames": { - "type": "list", - "member": {} - }, - "startTime": { - "type": "long" - }, - "endTime": { - "type": "long" - }, - "filterPattern": {}, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "interleaved": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "timestamp": { - "type": "long" - }, - "message": {}, - "ingestionTime": { - "type": "long" - }, - "eventId": {} - } - } - }, - "searchedLogStreams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "logStreamName": {}, - "searchedCompletely": { - "type": "boolean" - } - } - } - }, - "nextToken": {} - } - } - }, - "GetLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName" - ], - "members": { - "logGroupName": {}, - "logStreamName": {}, - "startTime": { - "type": "long" - }, - "endTime": { - "type": "long" - }, - "nextToken": {}, - "limit": { - "type": "integer" - }, - "startFromHead": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "members": { - "timestamp": { - "type": "long" - }, - "message": {}, - "ingestionTime": { - "type": "long" - } - } - } - }, - "nextForwardToken": {}, - "nextBackwardToken": {} - } - } - }, - "PutDestination": { - "input": { - "type": "structure", - "required": [ - "destinationName", - "targetArn", - "roleArn" - ], - "members": { - "destinationName": {}, - "targetArn": {}, - "roleArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "destination": { - "shape": "Sq" - } - } - } - }, - "PutDestinationPolicy": { - "input": { - "type": "structure", - "required": [ - "destinationName", - "accessPolicy" - ], - "members": { - "destinationName": {}, - "accessPolicy": {} - } - } - }, - "PutLogEvents": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "logStreamName", - "logEvents" - ], - "members": { - "logGroupName": {}, - "logStreamName": {}, - "logEvents": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "timestamp", - "message" - ], - "members": { - "timestamp": { - "type": "long" - }, - "message": {} - } - } - }, - "sequenceToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "nextSequenceToken": {}, - "rejectedLogEventsInfo": { - "type": "structure", - "members": { - "tooNewLogEventStartIndex": { - "type": "integer" - }, - "tooOldLogEventEndIndex": { - "type": "integer" - }, - "expiredLogEventEndIndex": { - "type": "integer" - } - } - } - } - } - }, - "PutMetricFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName", - "filterPattern", - "metricTransformations" - ], - "members": { - "logGroupName": {}, - "filterName": {}, - "filterPattern": {}, - "metricTransformations": { - "shape": "S1m" - } - } - } - }, - "PutRetentionPolicy": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "retentionInDays" - ], - "members": { - "logGroupName": {}, - "retentionInDays": { - "type": "integer" - } - } - } - }, - "PutSubscriptionFilter": { - "input": { - "type": "structure", - "required": [ - "logGroupName", - "filterName", - "filterPattern", - "destinationArn" - ], - "members": { - "logGroupName": {}, - "filterName": {}, - "filterPattern": {}, - "destinationArn": {}, - "roleArn": {} - } - } - }, - "TestMetricFilter": { - "input": { - "type": "structure", - "required": [ - "filterPattern", - "logEventMessages" - ], - "members": { - "filterPattern": {}, - "logEventMessages": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "matches": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventNumber": { - "type": "long" - }, - "eventMessage": {}, - "extractedValues": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - } - } - }, - "shapes": { - "Sq": { - "type": "structure", - "members": { - "destinationName": {}, - "targetArn": {}, - "roleArn": {}, - "accessPolicy": {}, - "arn": {}, - "creationTime": { - "type": "long" - } - } - }, - "S1m": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "metricName", - "metricNamespace", - "metricValue" - ], - "members": { - "metricName": {}, - "metricNamespace": {}, - "metricValue": {}, - "defaultValue": { - "type": "double" - } - } - } - } - } -} -},{}],81:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeDestinations": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "destinations" - }, - "DescribeLogGroups": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "logGroups" - }, - "DescribeLogStreams": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "logStreams" - }, - "DescribeMetricFilters": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "metricFilters" - }, - "DescribeSubscriptionFilters": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": "subscriptionFilters" - }, - "FilterLogEvents": { - "input_token": "nextToken", - "output_token": "nextToken", - "limit_key": "limit", - "result_key": [ - "events", - "searchedLogStreams" - ] - }, - "GetLogEvents": { - "input_token": "nextToken", - "output_token": "nextForwardToken", - "limit_key": "limit", - "result_key": "events" - } - } -} - -},{}],82:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-12-12", - "endpointPrefix": "machinelearning", - "jsonVersion": "1.1", - "serviceFullName": "Amazon Machine Learning", - "signatureVersion": "v4", - "targetPrefix": "AmazonML_20141212", - "protocol": "json" - }, - "operations": { - "AddTags": { - "input": { - "type": "structure", - "required": [ - "Tags", - "ResourceId", - "ResourceType" - ], - "members": { - "Tags": { - "shape": "S2" - }, - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {} - } - } - }, - "CreateBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId", - "MLModelId", - "BatchPredictionDataSourceId", - "OutputUri" - ], - "members": { - "BatchPredictionId": {}, - "BatchPredictionName": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "OutputUri": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "CreateDataSourceFromRDS": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "RDSData", - "RoleARN" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "RDSData": { - "type": "structure", - "required": [ - "DatabaseInformation", - "SelectSqlQuery", - "DatabaseCredentials", - "S3StagingLocation", - "ResourceRole", - "ServiceRole", - "SubnetId", - "SecurityGroupIds" - ], - "members": { - "DatabaseInformation": { - "shape": "Sf" - }, - "SelectSqlQuery": {}, - "DatabaseCredentials": { - "type": "structure", - "required": [ - "Username", - "Password" - ], - "members": { - "Username": {}, - "Password": {} - } - }, - "S3StagingLocation": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaUri": {}, - "ResourceRole": {}, - "ServiceRole": {}, - "SubnetId": {}, - "SecurityGroupIds": { - "type": "list", - "member": {} - } - } - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateDataSourceFromRedshift": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSpec", - "RoleARN" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "DataSpec": { - "type": "structure", - "required": [ - "DatabaseInformation", - "SelectSqlQuery", - "DatabaseCredentials", - "S3StagingLocation" - ], - "members": { - "DatabaseInformation": { - "shape": "Sy" - }, - "SelectSqlQuery": {}, - "DatabaseCredentials": { - "type": "structure", - "required": [ - "Username", - "Password" - ], - "members": { - "Username": {}, - "Password": {} - } - }, - "S3StagingLocation": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaUri": {} - } - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateDataSourceFromS3": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSpec" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {}, - "DataSpec": { - "type": "structure", - "required": [ - "DataLocationS3" - ], - "members": { - "DataLocationS3": {}, - "DataRearrangement": {}, - "DataSchema": {}, - "DataSchemaLocationS3": {} - } - }, - "ComputeStatistics": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "CreateEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId", - "MLModelId", - "EvaluationDataSourceId" - ], - "members": { - "EvaluationId": {}, - "EvaluationName": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "CreateMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId", - "MLModelType", - "TrainingDataSourceId" - ], - "members": { - "MLModelId": {}, - "MLModelName": {}, - "MLModelType": {}, - "Parameters": { - "shape": "S1d" - }, - "TrainingDataSourceId": {}, - "Recipe": {}, - "RecipeUri": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - }, - "CreateRealtimeEndpoint": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "RealtimeEndpointInfo": { - "shape": "S1j" - } - } - } - }, - "DeleteBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId" - ], - "members": { - "BatchPredictionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "DeleteDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId" - ], - "members": { - "DataSourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "DeleteEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId" - ], - "members": { - "EvaluationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "DeleteMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - }, - "DeleteRealtimeEndpoint": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {} - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "RealtimeEndpointInfo": { - "shape": "S1j" - } - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "TagKeys", - "ResourceId", - "ResourceType" - ], - "members": { - "TagKeys": { - "type": "list", - "member": {} - }, - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {} - } - } - }, - "DescribeBatchPredictions": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "BatchPredictionId": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "OutputUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "TotalRecordCount": { - "type": "long" - }, - "InvalidRecordCount": { - "type": "long" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeDataSources": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DataSourceId": {}, - "DataLocationS3": {}, - "DataRearrangement": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "DataSizeInBytes": { - "type": "long" - }, - "NumberOfFiles": { - "type": "long" - }, - "Name": {}, - "Status": {}, - "Message": {}, - "RedshiftMetadata": { - "shape": "S2i" - }, - "RDSMetadata": { - "shape": "S2j" - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - }, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeEvaluations": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EvaluationId": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "PerformanceMetrics": { - "shape": "S2q" - }, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeMLModels": { - "input": { - "type": "structure", - "members": { - "FilterVariable": {}, - "EQ": {}, - "GT": {}, - "LT": {}, - "GE": {}, - "LE": {}, - "NE": {}, - "Prefix": {}, - "SortOrder": {}, - "NextToken": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Results": { - "type": "list", - "member": { - "type": "structure", - "members": { - "MLModelId": {}, - "TrainingDataSourceId": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "SizeInBytes": { - "type": "long" - }, - "EndpointInfo": { - "shape": "S1j" - }, - "TrainingParameters": { - "shape": "S1d" - }, - "InputDataLocationS3": {}, - "Algorithm": {}, - "MLModelType": {}, - "ScoreThreshold": { - "type": "float" - }, - "ScoreThresholdLastUpdatedAt": { - "type": "timestamp" - }, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "required": [ - "ResourceId", - "ResourceType" - ], - "members": { - "ResourceId": {}, - "ResourceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "ResourceId": {}, - "ResourceType": {}, - "Tags": { - "shape": "S2" - } - } - } - }, - "GetBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId" - ], - "members": { - "BatchPredictionId": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {}, - "MLModelId": {}, - "BatchPredictionDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "OutputUri": {}, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "TotalRecordCount": { - "type": "long" - }, - "InvalidRecordCount": { - "type": "long" - } - } - } - }, - "GetDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId" - ], - "members": { - "DataSourceId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {}, - "DataLocationS3": {}, - "DataRearrangement": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "DataSizeInBytes": { - "type": "long" - }, - "NumberOfFiles": { - "type": "long" - }, - "Name": {}, - "Status": {}, - "LogUri": {}, - "Message": {}, - "RedshiftMetadata": { - "shape": "S2i" - }, - "RDSMetadata": { - "shape": "S2j" - }, - "RoleARN": {}, - "ComputeStatistics": { - "type": "boolean" - }, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "DataSourceSchema": {} - } - } - }, - "GetEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId" - ], - "members": { - "EvaluationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {}, - "MLModelId": {}, - "EvaluationDataSourceId": {}, - "InputDataLocationS3": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "PerformanceMetrics": { - "shape": "S2q" - }, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - } - } - } - }, - "GetMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {}, - "Verbose": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {}, - "TrainingDataSourceId": {}, - "CreatedByIamUser": {}, - "CreatedAt": { - "type": "timestamp" - }, - "LastUpdatedAt": { - "type": "timestamp" - }, - "Name": {}, - "Status": {}, - "SizeInBytes": { - "type": "long" - }, - "EndpointInfo": { - "shape": "S1j" - }, - "TrainingParameters": { - "shape": "S1d" - }, - "InputDataLocationS3": {}, - "MLModelType": {}, - "ScoreThreshold": { - "type": "float" - }, - "ScoreThresholdLastUpdatedAt": { - "type": "timestamp" - }, - "LogUri": {}, - "Message": {}, - "ComputeTime": { - "type": "long" - }, - "FinishedAt": { - "type": "timestamp" - }, - "StartedAt": { - "type": "timestamp" - }, - "Recipe": {}, - "Schema": {} - } - } - }, - "Predict": { - "input": { - "type": "structure", - "required": [ - "MLModelId", - "Record", - "PredictEndpoint" - ], - "members": { - "MLModelId": {}, - "Record": { - "type": "map", - "key": {}, - "value": {} - }, - "PredictEndpoint": {} - } - }, - "output": { - "type": "structure", - "members": { - "Prediction": { - "type": "structure", - "members": { - "predictedLabel": {}, - "predictedValue": { - "type": "float" - }, - "predictedScores": { - "type": "map", - "key": {}, - "value": { - "type": "float" - } - }, - "details": { - "type": "map", - "key": {}, - "value": {} - } - } - } - } - } - }, - "UpdateBatchPrediction": { - "input": { - "type": "structure", - "required": [ - "BatchPredictionId", - "BatchPredictionName" - ], - "members": { - "BatchPredictionId": {}, - "BatchPredictionName": {} - } - }, - "output": { - "type": "structure", - "members": { - "BatchPredictionId": {} - } - } - }, - "UpdateDataSource": { - "input": { - "type": "structure", - "required": [ - "DataSourceId", - "DataSourceName" - ], - "members": { - "DataSourceId": {}, - "DataSourceName": {} - } - }, - "output": { - "type": "structure", - "members": { - "DataSourceId": {} - } - } - }, - "UpdateEvaluation": { - "input": { - "type": "structure", - "required": [ - "EvaluationId", - "EvaluationName" - ], - "members": { - "EvaluationId": {}, - "EvaluationName": {} - } - }, - "output": { - "type": "structure", - "members": { - "EvaluationId": {} - } - } - }, - "UpdateMLModel": { - "input": { - "type": "structure", - "required": [ - "MLModelId" - ], - "members": { - "MLModelId": {}, - "MLModelName": {}, - "ScoreThreshold": { - "type": "float" - } - } - }, - "output": { - "type": "structure", - "members": { - "MLModelId": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sf": { - "type": "structure", - "required": [ - "InstanceIdentifier", - "DatabaseName" - ], - "members": { - "InstanceIdentifier": {}, - "DatabaseName": {} - } - }, - "Sy": { - "type": "structure", - "required": [ - "DatabaseName", - "ClusterIdentifier" - ], - "members": { - "DatabaseName": {}, - "ClusterIdentifier": {} - } - }, - "S1d": { - "type": "map", - "key": {}, - "value": {} - }, - "S1j": { - "type": "structure", - "members": { - "PeakRequestsPerSecond": { - "type": "integer" - }, - "CreatedAt": { - "type": "timestamp" - }, - "EndpointUrl": {}, - "EndpointStatus": {} - } - }, - "S2i": { - "type": "structure", - "members": { - "RedshiftDatabase": { - "shape": "Sy" - }, - "DatabaseUserName": {}, - "SelectSqlQuery": {} - } - }, - "S2j": { - "type": "structure", - "members": { - "Database": { - "shape": "Sf" - }, - "DatabaseUserName": {}, - "SelectSqlQuery": {}, - "ResourceRole": {}, - "ServiceRole": {}, - "DataPipelineId": {} - } - }, - "S2q": { - "type": "structure", - "members": { - "Properties": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "examples": {} -} -},{}],83:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeBatchPredictions": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeDataSources": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeEvaluations": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - }, - "DescribeMLModels": { - "limit_key": "Limit", - "output_token": "NextToken", - "input_token": "NextToken", - "result_key": "Results" - } - } -} - -},{}],84:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "DataSourceAvailable": { - "delay": 30, - "operation": "DescribeDataSources", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "MLModelAvailable": { - "delay": 30, - "operation": "DescribeMLModels", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "EvaluationAvailable": { - "delay": 30, - "operation": "DescribeEvaluations", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - }, - "BatchPredictionAvailable": { - "delay": 30, - "operation": "DescribeBatchPredictions", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "COMPLETED", - "matcher": "pathAll", - "state": "success", - "argument": "Results[].Status" - }, - { - "expected": "FAILED", - "matcher": "pathAny", - "state": "failure", - "argument": "Results[].Status" - } - ] - } - } -} - -},{}],85:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-07-01", - "endpointPrefix": "marketplacecommerceanalytics", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Marketplace Commerce Analytics", - "signatureVersion": "v4", - "signingName": "marketplacecommerceanalytics", - "targetPrefix": "MarketplaceCommerceAnalytics20150701" - }, - "operations": { - "GenerateDataSet": { - "input": { - "type": "structure", - "required": [ - "dataSetType", - "dataSetPublicationDate", - "roleNameArn", - "destinationS3BucketName", - "snsTopicArn" - ], - "members": { - "dataSetType": {}, - "dataSetPublicationDate": { - "type": "timestamp" - }, - "roleNameArn": {}, - "destinationS3BucketName": {}, - "destinationS3Prefix": {}, - "snsTopicArn": {}, - "customerDefinedValues": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "dataSetRequestId": {} - } - } - }, - "StartSupportDataExport": { - "input": { - "type": "structure", - "required": [ - "dataSetType", - "fromDate", - "roleNameArn", - "destinationS3BucketName", - "snsTopicArn" - ], - "members": { - "dataSetType": {}, - "fromDate": { - "type": "timestamp" - }, - "roleNameArn": {}, - "destinationS3BucketName": {}, - "destinationS3Prefix": {}, - "snsTopicArn": {}, - "customerDefinedValues": { - "shape": "S8" - } - } - }, - "output": { - "type": "structure", - "members": { - "dataSetRequestId": {} - } - } - } - }, - "shapes": { - "S8": { - "type": "map", - "key": {}, - "value": {} - } - } -} -},{}],86:[function(require,module,exports){ -module.exports={ - "acm": { - "name": "ACM", - "cors": true - }, - "apigateway": { - "name": "APIGateway", - "cors": true - }, - "applicationautoscaling": { - "prefix": "application-autoscaling", - "name": "ApplicationAutoScaling", - "cors": true - }, - "autoscaling": { - "name": "AutoScaling", - "cors": true - }, - "cloudformation": { - "name": "CloudFormation", - "cors": true - }, - "cloudfront": { - "name": "CloudFront", - "versions": ["2013-05-12*", "2013-11-11*", "2014-05-31*", "2014-10-21*", "2014-11-06*", "2015-04-17*", "2015-07-27*", "2015-09-17*", "2016-01-13*", "2016-01-28*", "2016-08-01*", "2016-08-20*"], - "cors": true - }, - "cloudhsm": { - "name": "CloudHSM", - "cors": true - }, - "cloudsearch": { - "name": "CloudSearch" - }, - "cloudsearchdomain": { - "name": "CloudSearchDomain" - }, - "cloudtrail": { - "name": "CloudTrail", - "cors": true - }, - "cloudwatch": { - "prefix": "monitoring", - "name": "CloudWatch", - "cors": true - }, - "cloudwatchevents": { - "prefix": "events", - "name": "CloudWatchEvents", - "versions": ["2014-02-03*"], - "cors": true - }, - "cloudwatchlogs": { - "prefix": "logs", - "name": "CloudWatchLogs", - "cors": true - }, - "codecommit": { - "name": "CodeCommit", - "cors": true - }, - "codedeploy": { - "name": "CodeDeploy", - "cors": true - }, - "codepipeline": { - "name": "CodePipeline", - "cors": true - }, - "cognitoidentity": { - "prefix": "cognito-identity", - "name": "CognitoIdentity", - "cors": true - }, - "cognitoidentityserviceprovider": { - "prefix": "cognito-idp", - "name": "CognitoIdentityServiceProvider", - "cors": true - }, - "cognitosync": { - "prefix": "cognito-sync", - "name": "CognitoSync", - "cors": true - }, - "configservice": { - "prefix": "config", - "name": "ConfigService", - "cors": true - }, - "datapipeline": { - "name": "DataPipeline" - }, - "devicefarm": { - "name": "DeviceFarm", - "cors": true - }, - "directconnect": { - "name": "DirectConnect", - "cors": true - }, - "directoryservice": { - "prefix": "ds", - "name": "DirectoryService" - }, - "discovery": { - "name": "Discovery" - }, - "dms": { - "name": "DMS" - }, - "dynamodb": { - "name": "DynamoDB", - "cors": true - }, - "dynamodbstreams": { - "prefix": "streams.dynamodb", - "name": "DynamoDBStreams", - "cors": true - }, - "ec2": { - "name": "EC2", - "versions": ["2013-06-15*", "2013-10-15*", "2014-02-01*", "2014-05-01*", "2014-06-15*", "2014-09-01*", "2014-10-01*", "2015-03-01*", "2015-04-15*", "2015-10-01*", "2016-04-01*"], - "cors": true - }, - "ecr": { - "name": "ECR", - "cors": true - }, - "ecs": { - "name": "ECS", - "cors": true - }, - "efs": { - "prefix": "elasticfilesystem", - "name": "EFS" - }, - "elasticache": { - "name": "ElastiCache", - "versions": ["2012-11-15*", "2014-03-24*", "2014-07-15*", "2014-09-30*"], - "cors": true - }, - "elasticbeanstalk": { - "name": "ElasticBeanstalk", - "cors": true - }, - "elb": { - "prefix": "elasticloadbalancing", - "name": "ELB", - "cors": true - }, - "elbv2": { - "prefix": "elasticloadbalancingv2", - "name": "ELBv2", - "cors": true - }, - "emr": { - "prefix": "elasticmapreduce", - "name": "EMR", - "cors": true - }, - "es": { - "name": "ES" - }, - "elastictranscoder": { - "name": "ElasticTranscoder", - "cors": true - }, - "firehose": { - "name": "Firehose", - "cors": true - }, - "gamelift": { - "name": "GameLift", - "cors": true - }, - "glacier": { - "name": "Glacier" - }, - "iam": { - "name": "IAM" - }, - "importexport": { - "name": "ImportExport" - }, - "inspector": { - "name": "Inspector", - "versions": ["2015-08-18*"], - "cors": true - }, - "iot": { - "name": "Iot", - "cors": true - }, - "iotdata": { - "prefix": "iot-data", - "name": "IotData", - "cors": true - }, - "kinesis": { - "name": "Kinesis", - "cors": true - }, - "kinesisanalytics": { - "name": "KinesisAnalytics" - }, - "kms": { - "name": "KMS", - "cors": true - }, - "lambda": { - "name": "Lambda", - "cors": true - }, - "machinelearning": { - "name": "MachineLearning", - "cors": true - }, - "marketplacecommerceanalytics": { - "name": "MarketplaceCommerceAnalytics", - "cors": true - }, - "marketplacemetering": { - "prefix": "meteringmarketplace", - "name": "MarketplaceMetering" - }, - "mobileanalytics": { - "name": "MobileAnalytics", - "cors": true - }, - "opsworks": { - "name": "OpsWorks", - "cors": true - }, - "rds": { - "name": "RDS", - "versions": ["2014-09-01*"], - "cors": true - }, - "redshift": { - "name": "Redshift", - "cors": true - }, - "route53": { - "name": "Route53", - "cors": true - }, - "route53domains": { - "name": "Route53Domains", - "cors": true - }, - "s3": { - "name": "S3", - "dualstackAvailable": true, - "cors": true - }, - "servicecatalog": { - "name": "ServiceCatalog", - "cors": true - }, - "ses": { - "prefix": "email", - "name": "SES", - "cors": true - }, - "simpledb": { - "prefix": "sdb", - "name": "SimpleDB" - }, - "snowball": { - "name": "Snowball" - }, - "sns": { - "name": "SNS", - "cors": true - }, - "sqs": { - "name": "SQS", - "cors": true - }, - "ssm": { - "name": "SSM", - "cors": true - }, - "storagegateway": { - "name": "StorageGateway", - "cors": true - }, - "sts": { - "name": "STS", - "cors": true - }, - "support": { - "name": "Support" - }, - "swf": { - "name": "SWF" - }, - "waf": { - "name": "WAF", - "cors": true - }, - "workspaces": { - "name": "WorkSpaces" - } -} - -},{}],87:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-06-05", - "endpointPrefix": "mobileanalytics", - "serviceFullName": "Amazon Mobile Analytics", - "signatureVersion": "v4", - "protocol": "rest-json" - }, - "operations": { - "PutEvents": { - "http": { - "requestUri": "/2014-06-05/events", - "responseCode": 202 - }, - "input": { - "type": "structure", - "required": [ - "events", - "clientContext" - ], - "members": { - "events": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "eventType", - "timestamp" - ], - "members": { - "eventType": {}, - "timestamp": {}, - "session": { - "type": "structure", - "members": { - "id": {}, - "duration": { - "type": "long" - }, - "startTimestamp": {}, - "stopTimestamp": {} - } - }, - "version": {}, - "attributes": { - "type": "map", - "key": {}, - "value": {} - }, - "metrics": { - "type": "map", - "key": {}, - "value": { - "type": "double" - } - } - } - } - }, - "clientContext": { - "location": "header", - "locationName": "x-amz-Client-Context" - }, - "clientContextEncoding": { - "location": "header", - "locationName": "x-amz-Client-Context-Encoding" - } - } - } - } - }, - "shapes": {} -} -},{}],88:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2010-08-01", - "endpointPrefix": "monitoring", - "protocol": "query", - "serviceAbbreviation": "CloudWatch", - "serviceFullName": "Amazon CloudWatch", - "signatureVersion": "v4", - "xmlNamespace": "http://monitoring.amazonaws.com/doc/2010-08-01/" - }, - "operations": { - "DeleteAlarms": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "DescribeAlarmHistory": { - "input": { - "type": "structure", - "members": { - "AlarmName": {}, - "HistoryItemType": {}, - "StartDate": { - "type": "timestamp" - }, - "EndDate": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmHistoryResult", - "type": "structure", - "members": { - "AlarmHistoryItems": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "Timestamp": { - "type": "timestamp" - }, - "HistoryItemType": {}, - "HistorySummary": {}, - "HistoryData": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAlarms": { - "input": { - "type": "structure", - "members": { - "AlarmNames": { - "shape": "S2" - }, - "AlarmNamePrefix": {}, - "StateValue": {}, - "ActionPrefix": {}, - "MaxRecords": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmsResult", - "type": "structure", - "members": { - "MetricAlarms": { - "shape": "Sj" - }, - "NextToken": {} - } - } - }, - "DescribeAlarmsForMetric": { - "input": { - "type": "structure", - "required": [ - "MetricName", - "Namespace" - ], - "members": { - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "shape": "Sv" - }, - "Period": { - "type": "integer" - }, - "Unit": {} - } - }, - "output": { - "resultWrapper": "DescribeAlarmsForMetricResult", - "type": "structure", - "members": { - "MetricAlarms": { - "shape": "Sj" - } - } - } - }, - "DisableAlarmActions": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "EnableAlarmActions": { - "input": { - "type": "structure", - "required": [ - "AlarmNames" - ], - "members": { - "AlarmNames": { - "shape": "S2" - } - } - } - }, - "GetMetricStatistics": { - "input": { - "type": "structure", - "required": [ - "Namespace", - "MetricName", - "StartTime", - "EndTime", - "Period", - "Statistics" - ], - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "shape": "Sv" - }, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Period": { - "type": "integer" - }, - "Statistics": { - "type": "list", - "member": {} - }, - "Unit": {} - } - }, - "output": { - "resultWrapper": "GetMetricStatisticsResult", - "type": "structure", - "members": { - "Label": {}, - "Datapoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Timestamp": { - "type": "timestamp" - }, - "SampleCount": { - "type": "double" - }, - "Average": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "Minimum": { - "type": "double" - }, - "Maximum": { - "type": "double" - }, - "Unit": {} - }, - "xmlOrder": [ - "Timestamp", - "SampleCount", - "Average", - "Sum", - "Minimum", - "Maximum", - "Unit" - ] - } - } - } - } - }, - "ListMetrics": { - "input": { - "type": "structure", - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Value": {} - } - } - }, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListMetricsResult", - "type": "structure", - "members": { - "Metrics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Namespace": {}, - "MetricName": {}, - "Dimensions": { - "shape": "Sv" - } - }, - "xmlOrder": [ - "Namespace", - "MetricName", - "Dimensions" - ] - } - }, - "NextToken": {} - }, - "xmlOrder": [ - "Metrics", - "NextToken" - ] - } - }, - "PutMetricAlarm": { - "input": { - "type": "structure", - "required": [ - "AlarmName", - "MetricName", - "Namespace", - "Statistic", - "Period", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ], - "members": { - "AlarmName": {}, - "AlarmDescription": {}, - "ActionsEnabled": { - "type": "boolean" - }, - "OKActions": { - "shape": "So" - }, - "AlarmActions": { - "shape": "So" - }, - "InsufficientDataActions": { - "shape": "So" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "shape": "Sv" - }, - "Period": { - "type": "integer" - }, - "Unit": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {} - } - } - }, - "PutMetricData": { - "input": { - "type": "structure", - "required": [ - "Namespace", - "MetricData" - ], - "members": { - "Namespace": {}, - "MetricData": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "MetricName" - ], - "members": { - "MetricName": {}, - "Dimensions": { - "shape": "Sv" - }, - "Timestamp": { - "type": "timestamp" - }, - "Value": { - "type": "double" - }, - "StatisticValues": { - "type": "structure", - "required": [ - "SampleCount", - "Sum", - "Minimum", - "Maximum" - ], - "members": { - "SampleCount": { - "type": "double" - }, - "Sum": { - "type": "double" - }, - "Minimum": { - "type": "double" - }, - "Maximum": { - "type": "double" - } - } - }, - "Unit": {} - } - } - } - } - } - }, - "SetAlarmState": { - "input": { - "type": "structure", - "required": [ - "AlarmName", - "StateValue", - "StateReason" - ], - "members": { - "AlarmName": {}, - "StateValue": {}, - "StateReason": {}, - "StateReasonData": {} - } - } - } - }, - "shapes": { - "S2": { - "type": "list", - "member": {} - }, - "Sj": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AlarmName": {}, - "AlarmArn": {}, - "AlarmDescription": {}, - "AlarmConfigurationUpdatedTimestamp": { - "type": "timestamp" - }, - "ActionsEnabled": { - "type": "boolean" - }, - "OKActions": { - "shape": "So" - }, - "AlarmActions": { - "shape": "So" - }, - "InsufficientDataActions": { - "shape": "So" - }, - "StateValue": {}, - "StateReason": {}, - "StateReasonData": {}, - "StateUpdatedTimestamp": { - "type": "timestamp" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "shape": "Sv" - }, - "Period": { - "type": "integer" - }, - "Unit": {}, - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {} - }, - "xmlOrder": [ - "AlarmName", - "AlarmArn", - "AlarmDescription", - "AlarmConfigurationUpdatedTimestamp", - "ActionsEnabled", - "OKActions", - "AlarmActions", - "InsufficientDataActions", - "StateValue", - "StateReason", - "StateReasonData", - "StateUpdatedTimestamp", - "MetricName", - "Namespace", - "Statistic", - "Dimensions", - "Period", - "Unit", - "EvaluationPeriods", - "Threshold", - "ComparisonOperator" - ] - } - }, - "So": { - "type": "list", - "member": {} - }, - "Sv": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - }, - "xmlOrder": [ - "Name", - "Value" - ] - } - } - } -} -},{}],89:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeAlarmHistory": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "AlarmHistoryItems" - }, - "DescribeAlarms": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxRecords", - "result_key": "MetricAlarms" - }, - "DescribeAlarmsForMetric": { - "result_key": "MetricAlarms" - }, - "ListMetrics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Metrics" - } - } -} - -},{}],90:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "AlarmExists": { - "delay": 5, - "maxAttempts": 40, - "operation": "DescribeAlarms", - "acceptors": [ - { - "matcher": "path", - "expected": true, - "argument": "length(MetricAlarms[]) > `0`", - "state": "success" - } - ] - } - } -} - -},{}],91:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-02-18", - "endpointPrefix": "opsworks", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS OpsWorks", - "signatureVersion": "v4", - "targetPrefix": "OpsWorks_20130218" - }, - "operations": { - "AssignInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "LayerIds" - ], - "members": { - "InstanceId": {}, - "LayerIds": { - "shape": "S3" - } - } - } - }, - "AssignVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "InstanceId": {} - } - } - }, - "AssociateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {}, - "InstanceId": {} - } - } - }, - "AttachElasticLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "ElasticLoadBalancerName", - "LayerId" - ], - "members": { - "ElasticLoadBalancerName": {}, - "LayerId": {} - } - } - }, - "CloneStack": { - "input": { - "type": "structure", - "required": [ - "SourceStackId", - "ServiceRoleArn" - ], - "members": { - "SourceStackId": {}, - "Name": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "ClonePermissions": { - "type": "boolean" - }, - "CloneAppIds": { - "shape": "S3" - }, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateApp": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Name", - "Type" - ], - "members": { - "StackId": {}, - "Shortname": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "Environment": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "members": { - "AppId": {} - } - } - }, - "CreateDeployment": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Command" - ], - "members": { - "StackId": {}, - "AppId": {}, - "InstanceIds": { - "shape": "S3" - }, - "LayerIds": { - "shape": "S3" - }, - "Command": { - "shape": "Ss" - }, - "Comment": {}, - "CustomJson": {} - } - }, - "output": { - "type": "structure", - "members": { - "DeploymentId": {} - } - } - }, - "CreateInstance": { - "input": { - "type": "structure", - "required": [ - "StackId", - "LayerIds", - "InstanceType" - ], - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - }, - "InstanceType": {}, - "AutoScalingType": {}, - "Hostname": {}, - "Os": {}, - "AmiId": {}, - "SshKeyName": {}, - "AvailabilityZone": {}, - "VirtualizationType": {}, - "SubnetId": {}, - "Architecture": {}, - "RootDeviceType": {}, - "BlockDeviceMappings": { - "shape": "Sz" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AgentVersion": {}, - "Tenancy": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "CreateLayer": { - "input": { - "type": "structure", - "required": [ - "StackId", - "Type", - "Name", - "Shortname" - ], - "members": { - "StackId": {}, - "Type": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S19" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomRecipes": { - "shape": "S1b" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "members": { - "LayerId": {} - } - } - }, - "CreateStack": { - "input": { - "type": "structure", - "required": [ - "Name", - "Region", - "ServiceRoleArn", - "DefaultInstanceProfileArn" - ], - "members": { - "Name": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackId": {} - } - } - }, - "CreateUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "IamUserArn": {} - } - } - }, - "DeleteApp": { - "input": { - "type": "structure", - "required": [ - "AppId" - ], - "members": { - "AppId": {} - } - } - }, - "DeleteInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "DeleteElasticIp": { - "type": "boolean" - }, - "DeleteVolumes": { - "type": "boolean" - } - } - } - }, - "DeleteLayer": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {} - } - } - }, - "DeleteStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "DeleteUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {} - } - } - }, - "DeregisterEcsCluster": { - "input": { - "type": "structure", - "required": [ - "EcsClusterArn" - ], - "members": { - "EcsClusterArn": {} - } - } - }, - "DeregisterElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {} - } - } - }, - "DeregisterInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "DeregisterRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "RdsDbInstanceArn" - ], - "members": { - "RdsDbInstanceArn": {} - } - } - }, - "DeregisterVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {} - } - } - }, - "DescribeAgentVersions": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "ConfigurationManager": { - "shape": "Sa" - } - } - }, - "output": { - "type": "structure", - "members": { - "AgentVersions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Version": {}, - "ConfigurationManager": { - "shape": "Sa" - } - } - } - } - } - } - }, - "DescribeApps": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "AppIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Apps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AppId": {}, - "StackId": {}, - "Shortname": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "CreatedAt": {}, - "Environment": { - "shape": "So" - } - } - } - } - } - } - }, - "DescribeCommands": { - "input": { - "type": "structure", - "members": { - "DeploymentId": {}, - "InstanceId": {}, - "CommandIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Commands": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "DeploymentId": {}, - "CreatedAt": {}, - "AcknowledgedAt": {}, - "CompletedAt": {}, - "Status": {}, - "ExitCode": { - "type": "integer" - }, - "LogUrl": {}, - "Type": {} - } - } - } - } - } - }, - "DescribeDeployments": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "AppId": {}, - "DeploymentIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Deployments": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeploymentId": {}, - "StackId": {}, - "AppId": {}, - "CreatedAt": {}, - "CompletedAt": {}, - "Duration": { - "type": "integer" - }, - "IamUserArn": {}, - "Comment": {}, - "Command": { - "shape": "Ss" - }, - "Status": {}, - "CustomJson": {}, - "InstanceIds": { - "shape": "S3" - } - } - } - } - } - } - }, - "DescribeEcsClusters": { - "input": { - "type": "structure", - "members": { - "EcsClusterArns": { - "shape": "S3" - }, - "StackId": {}, - "NextToken": {}, - "MaxResults": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "EcsClusters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EcsClusterArn": {}, - "EcsClusterName": {}, - "StackId": {}, - "RegisteredAt": {} - } - } - }, - "NextToken": {} - } - } - }, - "DescribeElasticIps": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "Ips": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticIps": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Ip": {}, - "Name": {}, - "Domain": {}, - "Region": {}, - "InstanceId": {} - } - } - } - } - } - }, - "DescribeElasticLoadBalancers": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ElasticLoadBalancers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ElasticLoadBalancerName": {}, - "Region": {}, - "DnsName": {}, - "StackId": {}, - "LayerId": {}, - "VpcId": {}, - "AvailabilityZones": { - "shape": "S3" - }, - "SubnetIds": { - "shape": "S3" - }, - "Ec2InstanceIds": { - "shape": "S3" - } - } - } - } - } - } - }, - "DescribeInstances": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerId": {}, - "InstanceIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Instances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "AgentVersion": {}, - "AmiId": {}, - "Architecture": {}, - "AutoScalingType": {}, - "AvailabilityZone": {}, - "BlockDeviceMappings": { - "shape": "Sz" - }, - "CreatedAt": {}, - "EbsOptimized": { - "type": "boolean" - }, - "Ec2InstanceId": {}, - "EcsClusterArn": {}, - "EcsContainerInstanceArn": {}, - "ElasticIp": {}, - "Hostname": {}, - "InfrastructureClass": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "InstanceId": {}, - "InstanceProfileArn": {}, - "InstanceType": {}, - "LastServiceErrorId": {}, - "LayerIds": { - "shape": "S3" - }, - "Os": {}, - "Platform": {}, - "PrivateDns": {}, - "PrivateIp": {}, - "PublicDns": {}, - "PublicIp": {}, - "RegisteredBy": {}, - "ReportedAgentVersion": {}, - "ReportedOs": { - "type": "structure", - "members": { - "Family": {}, - "Name": {}, - "Version": {} - } - }, - "RootDeviceType": {}, - "RootDeviceVolumeId": {}, - "SecurityGroupIds": { - "shape": "S3" - }, - "SshHostDsaKeyFingerprint": {}, - "SshHostRsaKeyFingerprint": {}, - "SshKeyName": {}, - "StackId": {}, - "Status": {}, - "SubnetId": {}, - "Tenancy": {}, - "VirtualizationType": {} - } - } - } - } - } - }, - "DescribeLayers": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Layers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "LayerId": {}, - "Type": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "DefaultSecurityGroupNames": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S19" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "DefaultRecipes": { - "shape": "S1b" - }, - "CustomRecipes": { - "shape": "S1b" - }, - "CreatedAt": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1c" - } - } - } - } - } - } - }, - "DescribeLoadBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "LayerIds" - ], - "members": { - "LayerIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "LoadBasedAutoScalingConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "LayerId": {}, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "shape": "S30" - }, - "DownScaling": { - "shape": "S30" - } - } - } - } - } - } - }, - "DescribeMyUserProfile": { - "output": { - "type": "structure", - "members": { - "UserProfile": { - "type": "structure", - "members": { - "IamUserArn": {}, - "Name": {}, - "SshUsername": {}, - "SshPublicKey": {} - } - } - } - } - }, - "DescribePermissions": { - "input": { - "type": "structure", - "members": { - "IamUserArn": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Permissions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "IamUserArn": {}, - "AllowSsh": { - "type": "boolean" - }, - "AllowSudo": { - "type": "boolean" - }, - "Level": {} - } - } - } - } - } - }, - "DescribeRaidArrays": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "RaidArrayIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "RaidArrays": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RaidArrayId": {}, - "InstanceId": {}, - "Name": {}, - "RaidLevel": { - "type": "integer" - }, - "NumberOfDisks": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "Device": {}, - "MountPoint": {}, - "AvailabilityZone": {}, - "CreatedAt": {}, - "StackId": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - } - } - } - }, - "DescribeRdsDbInstances": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "RdsDbInstanceArns": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "RdsDbInstances": { - "type": "list", - "member": { - "type": "structure", - "members": { - "RdsDbInstanceArn": {}, - "DbInstanceIdentifier": {}, - "DbUser": {}, - "DbPassword": {}, - "Region": {}, - "Address": {}, - "Engine": {}, - "StackId": {}, - "MissingOnRds": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeServiceErrors": { - "input": { - "type": "structure", - "members": { - "StackId": {}, - "InstanceId": {}, - "ServiceErrorIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "ServiceErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ServiceErrorId": {}, - "StackId": {}, - "InstanceId": {}, - "Type": {}, - "Message": {}, - "CreatedAt": {} - } - } - } - } - } - }, - "DescribeStackProvisioningParameters": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AgentInstallerUrl": {}, - "Parameters": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "DescribeStackSummary": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StackSummary": { - "type": "structure", - "members": { - "StackId": {}, - "Name": {}, - "Arn": {}, - "LayersCount": { - "type": "integer" - }, - "AppsCount": { - "type": "integer" - }, - "InstancesCount": { - "type": "structure", - "members": { - "Assigning": { - "type": "integer" - }, - "Booting": { - "type": "integer" - }, - "ConnectionLost": { - "type": "integer" - }, - "Deregistering": { - "type": "integer" - }, - "Online": { - "type": "integer" - }, - "Pending": { - "type": "integer" - }, - "Rebooting": { - "type": "integer" - }, - "Registered": { - "type": "integer" - }, - "Registering": { - "type": "integer" - }, - "Requested": { - "type": "integer" - }, - "RunningSetup": { - "type": "integer" - }, - "SetupFailed": { - "type": "integer" - }, - "ShuttingDown": { - "type": "integer" - }, - "StartFailed": { - "type": "integer" - }, - "Stopped": { - "type": "integer" - }, - "Stopping": { - "type": "integer" - }, - "Terminated": { - "type": "integer" - }, - "Terminating": { - "type": "integer" - }, - "Unassigning": { - "type": "integer" - } - } - } - } - } - } - } - }, - "DescribeStacks": { - "input": { - "type": "structure", - "members": { - "StackIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Stacks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StackId": {}, - "Name": {}, - "Arn": {}, - "Region": {}, - "VpcId": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "CreatedAt": {}, - "DefaultRootDeviceType": {}, - "AgentVersion": {} - } - } - } - } - } - }, - "DescribeTimeBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "InstanceIds" - ], - "members": { - "InstanceIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "TimeBasedAutoScalingConfigurations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "InstanceId": {}, - "AutoScalingSchedule": { - "shape": "S40" - } - } - } - } - } - } - }, - "DescribeUserProfiles": { - "input": { - "type": "structure", - "members": { - "IamUserArns": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "UserProfiles": { - "type": "list", - "member": { - "type": "structure", - "members": { - "IamUserArn": {}, - "Name": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - } - } - } - } - }, - "DescribeVolumes": { - "input": { - "type": "structure", - "members": { - "InstanceId": {}, - "StackId": {}, - "RaidArrayId": {}, - "VolumeIds": { - "shape": "S3" - } - } - }, - "output": { - "type": "structure", - "members": { - "Volumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeId": {}, - "Ec2VolumeId": {}, - "Name": {}, - "RaidArrayId": {}, - "InstanceId": {}, - "Status": {}, - "Size": { - "type": "integer" - }, - "Device": {}, - "MountPoint": {}, - "Region": {}, - "AvailabilityZone": {}, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - } - } - } - }, - "DetachElasticLoadBalancer": { - "input": { - "type": "structure", - "required": [ - "ElasticLoadBalancerName", - "LayerId" - ], - "members": { - "ElasticLoadBalancerName": {}, - "LayerId": {} - } - } - }, - "DisassociateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {} - } - } - }, - "GetHostnameSuggestion": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {} - } - }, - "output": { - "type": "structure", - "members": { - "LayerId": {}, - "Hostname": {} - } - } - }, - "GrantAccess": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "ValidForInMinutes": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TemporaryCredential": { - "type": "structure", - "members": { - "Username": {}, - "Password": {}, - "ValidForInMinutes": { - "type": "integer" - }, - "InstanceId": {} - } - } - } - } - }, - "RebootInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "RegisterEcsCluster": { - "input": { - "type": "structure", - "required": [ - "EcsClusterArn", - "StackId" - ], - "members": { - "EcsClusterArn": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "EcsClusterArn": {} - } - } - }, - "RegisterElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp", - "StackId" - ], - "members": { - "ElasticIp": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ElasticIp": {} - } - } - }, - "RegisterInstance": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "Hostname": {}, - "PublicIp": {}, - "PrivateIp": {}, - "RsaPublicKey": {}, - "RsaPublicKeyFingerprint": {}, - "InstanceIdentity": { - "type": "structure", - "members": { - "Document": {}, - "Signature": {} - } - } - } - }, - "output": { - "type": "structure", - "members": { - "InstanceId": {} - } - } - }, - "RegisterRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "StackId", - "RdsDbInstanceArn", - "DbUser", - "DbPassword" - ], - "members": { - "StackId": {}, - "RdsDbInstanceArn": {}, - "DbUser": {}, - "DbPassword": {} - } - } - }, - "RegisterVolume": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "Ec2VolumeId": {}, - "StackId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeId": {} - } - } - }, - "SetLoadBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {}, - "Enable": { - "type": "boolean" - }, - "UpScaling": { - "shape": "S30" - }, - "DownScaling": { - "shape": "S30" - } - } - } - }, - "SetPermission": { - "input": { - "type": "structure", - "required": [ - "StackId", - "IamUserArn" - ], - "members": { - "StackId": {}, - "IamUserArn": {}, - "AllowSsh": { - "type": "boolean" - }, - "AllowSudo": { - "type": "boolean" - }, - "Level": {} - } - } - }, - "SetTimeBasedAutoScaling": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "AutoScalingSchedule": { - "shape": "S40" - } - } - } - }, - "StartInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "StartStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "StopInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "StopStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {} - } - } - }, - "UnassignInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - } - }, - "UnassignVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {} - } - } - }, - "UpdateApp": { - "input": { - "type": "structure", - "required": [ - "AppId" - ], - "members": { - "AppId": {}, - "Name": {}, - "Description": {}, - "DataSources": { - "shape": "Si" - }, - "Type": {}, - "AppSource": { - "shape": "Sd" - }, - "Domains": { - "shape": "S3" - }, - "EnableSsl": { - "type": "boolean" - }, - "SslConfiguration": { - "shape": "Sl" - }, - "Attributes": { - "shape": "Sm" - }, - "Environment": { - "shape": "So" - } - } - } - }, - "UpdateElasticIp": { - "input": { - "type": "structure", - "required": [ - "ElasticIp" - ], - "members": { - "ElasticIp": {}, - "Name": {} - } - } - }, - "UpdateInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {}, - "LayerIds": { - "shape": "S3" - }, - "InstanceType": {}, - "AutoScalingType": {}, - "Hostname": {}, - "Os": {}, - "AmiId": {}, - "SshKeyName": {}, - "Architecture": {}, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "EbsOptimized": { - "type": "boolean" - }, - "AgentVersion": {} - } - } - }, - "UpdateLayer": { - "input": { - "type": "structure", - "required": [ - "LayerId" - ], - "members": { - "LayerId": {}, - "Name": {}, - "Shortname": {}, - "Attributes": { - "shape": "S17" - }, - "CustomInstanceProfileArn": {}, - "CustomJson": {}, - "CustomSecurityGroupIds": { - "shape": "S3" - }, - "Packages": { - "shape": "S3" - }, - "VolumeConfigurations": { - "shape": "S19" - }, - "EnableAutoHealing": { - "type": "boolean" - }, - "AutoAssignElasticIps": { - "type": "boolean" - }, - "AutoAssignPublicIps": { - "type": "boolean" - }, - "CustomRecipes": { - "shape": "S1b" - }, - "InstallUpdatesOnBoot": { - "type": "boolean" - }, - "UseEbsOptimizedInstances": { - "type": "boolean" - }, - "LifecycleEventConfiguration": { - "shape": "S1c" - } - } - } - }, - "UpdateMyUserProfile": { - "input": { - "type": "structure", - "members": { - "SshPublicKey": {} - } - } - }, - "UpdateRdsDbInstance": { - "input": { - "type": "structure", - "required": [ - "RdsDbInstanceArn" - ], - "members": { - "RdsDbInstanceArn": {}, - "DbUser": {}, - "DbPassword": {} - } - } - }, - "UpdateStack": { - "input": { - "type": "structure", - "required": [ - "StackId" - ], - "members": { - "StackId": {}, - "Name": {}, - "Attributes": { - "shape": "S8" - }, - "ServiceRoleArn": {}, - "DefaultInstanceProfileArn": {}, - "DefaultOs": {}, - "HostnameTheme": {}, - "DefaultAvailabilityZone": {}, - "DefaultSubnetId": {}, - "CustomJson": {}, - "ConfigurationManager": { - "shape": "Sa" - }, - "ChefConfiguration": { - "shape": "Sb" - }, - "UseCustomCookbooks": { - "type": "boolean" - }, - "CustomCookbooksSource": { - "shape": "Sd" - }, - "DefaultSshKeyName": {}, - "DefaultRootDeviceType": {}, - "UseOpsworksSecurityGroups": { - "type": "boolean" - }, - "AgentVersion": {} - } - } - }, - "UpdateUserProfile": { - "input": { - "type": "structure", - "required": [ - "IamUserArn" - ], - "members": { - "IamUserArn": {}, - "SshUsername": {}, - "SshPublicKey": {}, - "AllowSelfManagement": { - "type": "boolean" - } - } - } - }, - "UpdateVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeId" - ], - "members": { - "VolumeId": {}, - "Name": {}, - "MountPoint": {} - } - } - } - }, - "shapes": { - "S3": { - "type": "list", - "member": {} - }, - "S8": { - "type": "map", - "key": {}, - "value": {} - }, - "Sa": { - "type": "structure", - "members": { - "Name": {}, - "Version": {} - } - }, - "Sb": { - "type": "structure", - "members": { - "ManageBerkshelf": { - "type": "boolean" - }, - "BerkshelfVersion": {} - } - }, - "Sd": { - "type": "structure", - "members": { - "Type": {}, - "Url": {}, - "Username": {}, - "Password": {}, - "SshKey": {}, - "Revision": {} - } - }, - "Si": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Arn": {}, - "DatabaseName": {} - } - } - }, - "Sl": { - "type": "structure", - "required": [ - "Certificate", - "PrivateKey" - ], - "members": { - "Certificate": {}, - "PrivateKey": {}, - "Chain": {} - } - }, - "Sm": { - "type": "map", - "key": {}, - "value": {} - }, - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {}, - "Secure": { - "type": "boolean" - } - } - } - }, - "Ss": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Args": { - "type": "map", - "key": {}, - "value": { - "shape": "S3" - } - } - } - }, - "Sz": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DeviceName": {}, - "NoDevice": {}, - "VirtualName": {}, - "Ebs": { - "type": "structure", - "members": { - "SnapshotId": {}, - "Iops": { - "type": "integer" - }, - "VolumeSize": { - "type": "integer" - }, - "VolumeType": {}, - "DeleteOnTermination": { - "type": "boolean" - } - } - } - } - } - }, - "S17": { - "type": "map", - "key": {}, - "value": {} - }, - "S19": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "MountPoint", - "NumberOfDisks", - "Size" - ], - "members": { - "MountPoint": {}, - "RaidLevel": { - "type": "integer" - }, - "NumberOfDisks": { - "type": "integer" - }, - "Size": { - "type": "integer" - }, - "VolumeType": {}, - "Iops": { - "type": "integer" - } - } - } - }, - "S1b": { - "type": "structure", - "members": { - "Setup": { - "shape": "S3" - }, - "Configure": { - "shape": "S3" - }, - "Deploy": { - "shape": "S3" - }, - "Undeploy": { - "shape": "S3" - }, - "Shutdown": { - "shape": "S3" - } - } - }, - "S1c": { - "type": "structure", - "members": { - "Shutdown": { - "type": "structure", - "members": { - "ExecutionTimeout": { - "type": "integer" - }, - "DelayUntilElbConnectionsDrained": { - "type": "boolean" - } - } - } - } - }, - "S30": { - "type": "structure", - "members": { - "InstanceCount": { - "type": "integer" - }, - "ThresholdsWaitTime": { - "type": "integer" - }, - "IgnoreMetricsTime": { - "type": "integer" - }, - "CpuThreshold": { - "type": "double" - }, - "MemoryThreshold": { - "type": "double" - }, - "LoadThreshold": { - "type": "double" - }, - "Alarms": { - "shape": "S3" - } - } - }, - "S40": { - "type": "structure", - "members": { - "Monday": { - "shape": "S41" - }, - "Tuesday": { - "shape": "S41" - }, - "Wednesday": { - "shape": "S41" - }, - "Thursday": { - "shape": "S41" - }, - "Friday": { - "shape": "S41" - }, - "Saturday": { - "shape": "S41" - }, - "Sunday": { - "shape": "S41" - } - } - }, - "S41": { - "type": "map", - "key": {}, - "value": {} - } - } -} -},{}],92:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeApps": { - "result_key": "Apps" - }, - "DescribeCommands": { - "result_key": "Commands" - }, - "DescribeDeployments": { - "result_key": "Deployments" - }, - "DescribeEcsClusters": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "EcsClusters" - }, - "DescribeElasticIps": { - "result_key": "ElasticIps" - }, - "DescribeElasticLoadBalancers": { - "result_key": "ElasticLoadBalancers" - }, - "DescribeInstances": { - "result_key": "Instances" - }, - "DescribeLayers": { - "result_key": "Layers" - }, - "DescribeLoadBasedAutoScaling": { - "result_key": "LoadBasedAutoScalingConfigurations" - }, - "DescribePermissions": { - "result_key": "Permissions" - }, - "DescribeRaidArrays": { - "result_key": "RaidArrays" - }, - "DescribeServiceErrors": { - "result_key": "ServiceErrors" - }, - "DescribeStacks": { - "result_key": "Stacks" - }, - "DescribeTimeBasedAutoScaling": { - "result_key": "TimeBasedAutoScalingConfigurations" - }, - "DescribeUserProfiles": { - "result_key": "UserProfiles" - }, - "DescribeVolumes": { - "result_key": "Volumes" - } - } -} - -},{}],93:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "AppExists": { - "delay": 1, - "operation": "DescribeApps", - "maxAttempts": 40, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "matcher": "status", - "expected": 400, - "state": "failure" - } - ] - }, - "DeploymentSuccessful": { - "delay": 15, - "operation": "DescribeDeployments", - "maxAttempts": 40, - "description": "Wait until a deployment has completed successfully", - "acceptors": [ - { - "expected": "successful", - "matcher": "pathAll", - "state": "success", - "argument": "Deployments[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Deployments[].Status" - } - ] - }, - "InstanceOnline": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is online.", - "acceptors": [ - { - "expected": "online", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "shutting_down", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopped", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminating", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceRegistered": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is registered.", - "acceptors": [ - { - "expected": "registered", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "shutting_down", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopped", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stopping", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminating", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "terminated", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceStopped": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is stopped.", - "acceptors": [ - { - "expected": "stopped", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "booting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "online", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "requested", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "running_setup", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "stop_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - }, - "InstanceTerminated": { - "delay": 15, - "operation": "DescribeInstances", - "maxAttempts": 40, - "description": "Wait until OpsWorks instance is terminated.", - "acceptors": [ - { - "expected": "terminated", - "matcher": "pathAll", - "state": "success", - "argument": "Instances[].Status" - }, - { - "expected": "ResourceNotFoundException", - "matcher": "error", - "state": "success" - }, - { - "expected": "booting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "online", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "pending", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "requested", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "running_setup", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "setup_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - }, - { - "expected": "start_failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Instances[].Status" - } - ] - } - } -} - -},{}],94:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-01-10", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-01-10/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1c" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1i" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1o" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S25" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1c", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2f" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2f" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1o", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S3m", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S3o" - } - }, - "wrapper": true - } - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2f" - } - } - }, - "output": { - "shape": "S3z", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1i" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1o" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S3m" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2f" - } - } - }, - "output": { - "shape": "S3z", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "Id": {}, - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - } - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMembership": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1c": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1i": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1o": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2f": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3m": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S3o" - } - }, - "wrapper": true - }, - "S3o": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S3z": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} -},{}],95:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} - -},{}],96:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-02-12", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-02-12/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1d" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {} - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1p" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S28" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S28", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1d", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2n" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2n" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1p", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S3w", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S3y" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {} - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2n" - } - } - }, - "output": { - "shape": "S4b", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1j" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1t", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1p" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S3w" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2n" - } - } - }, - "output": { - "shape": "S4b", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {} - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1d": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1j": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1p": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1t", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S1t": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S28": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2n": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3w": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S3y" - } - }, - "wrapper": true - }, - "S3y": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4b": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} -},{}],97:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeDBEngineVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBEngineVersions" - }, - "DescribeDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBInstances" - }, - "DescribeDBLogFiles": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DescribeDBLogFiles" - }, - "DescribeDBParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBParameterGroups" - }, - "DescribeDBParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeDBSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSecurityGroups" - }, - "DescribeDBSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSnapshots" - }, - "DescribeDBSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "DBSubnetGroups" - }, - "DescribeEngineDefaultParameters": { - "input_token": "Marker", - "output_token": "EngineDefaults.Marker", - "limit_key": "MaxRecords", - "result_key": "EngineDefaults.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeOptionGroupOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupOptions" - }, - "DescribeOptionGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OptionGroupsList" - }, - "DescribeOrderableDBInstanceOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableDBInstanceOptions" - }, - "DescribeReservedDBInstances": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstances" - }, - "DescribeReservedDBInstancesOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedDBInstancesOfferings" - }, - "DownloadDBLogFilePortion": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "NumberOfLines", - "more_results": "AdditionalDataPending", - "result_key": "LogFileData" - }, - "ListTagsForResource": { - "result_key": "TagList" - } - } -} - -},{}],98:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-09-09", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2013-09-09/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "AllocatedStorage", - "DBInstanceClass", - "Engine", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBSubnetGroupName": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "S1f" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1l" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1r" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "Sk" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S2d" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S2d", - "locationName": "CharacterSet" - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "S1f", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2s" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "Sk", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S11", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2s" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S27" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - } - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S27" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S14", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S41", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S27" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S43" - } - }, - "wrapper": true - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S27" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S2s" - } - } - }, - "output": { - "shape": "S4g", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S1l" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S11" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "DBSecurityGroupMemberships": { - "shape": "Sp" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sq" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S1r" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S41" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2s" - } - } - }, - "output": { - "shape": "S4g", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "St" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sd" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - } - }, - "wrapper": true - }, - "Sk": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {} - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "Sv" - }, - "VpcSecurityGroups": { - "shape": "Sx" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S11" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - } - }, - "wrapper": true - }, - "Sv": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "Sx": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S11": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S14" - }, - "SubnetStatus": {} - } - } - } - }, - "wrapper": true - }, - "S14": { - "type": "structure", - "members": { - "Name": {}, - "ProvisionedIopsCapable": { - "type": "boolean" - } - }, - "wrapper": true - }, - "S1f": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {} - }, - "wrapper": true - }, - "S1l": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1r": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "Sv" - }, - "VpcSecurityGroupMemberships": { - "shape": "Sx" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {} - }, - "wrapper": true - }, - "S1v": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S27": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S2d": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S2s": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S41": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S43" - } - }, - "wrapper": true - }, - "S43": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4g": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} -},{}],99:[function(require,module,exports){ -arguments[4][97][0].apply(exports,arguments) -},{"dup":97}],100:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} - -},{}],101:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-10-31", - "endpointPrefix": "rds", - "protocol": "query", - "serviceAbbreviation": "Amazon RDS", - "serviceFullName": "Amazon Relational Database Service", - "signatureVersion": "v4", - "xmlNamespace": "http://rds.amazonaws.com/doc/2014-10-31/" - }, - "operations": { - "AddSourceIdentifierToSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "AddSourceIdentifierToSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S9" - } - } - } - }, - "ApplyPendingMaintenanceAction": { - "input": { - "type": "structure", - "required": [ - "ResourceIdentifier", - "ApplyAction", - "OptInType" - ], - "members": { - "ResourceIdentifier": {}, - "ApplyAction": {}, - "OptInType": {} - } - }, - "output": { - "resultWrapper": "ApplyPendingMaintenanceActionResult", - "type": "structure", - "members": { - "ResourcePendingMaintenanceActions": { - "shape": "Sd" - } - } - } - }, - "AuthorizeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sj" - } - } - } - }, - "CopyDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBClusterParameterGroupIdentifier", - "TargetDBClusterParameterGroupIdentifier", - "TargetDBClusterParameterGroupDescription" - ], - "members": { - "SourceDBClusterParameterGroupIdentifier": {}, - "TargetDBClusterParameterGroupIdentifier": {}, - "TargetDBClusterParameterGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBClusterParameterGroupResult", - "type": "structure", - "members": { - "DBClusterParameterGroup": { - "shape": "Sq" - } - } - } - }, - "CopyDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBClusterSnapshotIdentifier", - "TargetDBClusterSnapshotIdentifier" - ], - "members": { - "SourceDBClusterSnapshotIdentifier": {}, - "TargetDBClusterSnapshotIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "St" - } - } - } - }, - "CopyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "SourceDBParameterGroupIdentifier", - "TargetDBParameterGroupIdentifier", - "TargetDBParameterGroupDescription" - ], - "members": { - "SourceDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupIdentifier": {}, - "TargetDBParameterGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "Sy" - } - } - } - }, - "CopyDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceDBSnapshotIdentifier", - "TargetDBSnapshotIdentifier" - ], - "members": { - "SourceDBSnapshotIdentifier": {}, - "TargetDBSnapshotIdentifier": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S9" - }, - "CopyTags": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "CopyDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S12" - } - } - } - }, - "CopyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "SourceOptionGroupIdentifier", - "TargetOptionGroupIdentifier", - "TargetOptionGroupDescription" - ], - "members": { - "SourceOptionGroupIdentifier": {}, - "TargetOptionGroupIdentifier": {}, - "TargetOptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CopyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S16" - } - } - } - }, - "CreateDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "Engine" - ], - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "DBSubnetGroupName": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "ReplicationSourceIdentifier": {}, - "Tags": { - "shape": "S9" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {} - } - }, - "output": { - "resultWrapper": "CreateDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "CreateDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBClusterParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBClusterParameterGroupResult", - "type": "structure", - "members": { - "DBClusterParameterGroup": { - "shape": "Sq" - } - } - } - }, - "CreateDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier", - "DBClusterIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {}, - "DBClusterIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "St" - } - } - } - }, - "CreateDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBInstanceClass", - "Engine" - ], - "members": { - "DBName": {}, - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "Engine": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "DBSecurityGroups": { - "shape": "S1t" - }, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "PreferredMaintenanceWindow": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "Port": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CharacterSetName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBClusterIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": {}, - "DomainIAMRoleName": {}, - "PromotionTier": { - "type": "integer" - }, - "Timezone": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "CreateDBInstanceReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "SourceDBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SourceDBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "AvailabilityZone": {}, - "Port": { - "type": "integer" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "DBSubnetGroupName": {}, - "StorageType": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "MonitoringRoleArn": {} - } - }, - "output": { - "resultWrapper": "CreateDBInstanceReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "CreateDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "DBParameterGroupFamily", - "Description" - ], - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBParameterGroupResult", - "type": "structure", - "members": { - "DBParameterGroup": { - "shape": "Sy" - } - } - } - }, - "CreateDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName", - "DBSecurityGroupDescription" - ], - "members": { - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSecurityGroupResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sj" - } - } - } - }, - "CreateDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "DBInstanceIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S12" - } - } - } - }, - "CreateDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "DBSubnetGroupDescription", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S2k" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S1z" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "SourceIds": { - "shape": "S5" - }, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "CreateOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName", - "EngineName", - "MajorEngineVersion", - "OptionGroupDescription" - ], - "members": { - "OptionGroupName": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "OptionGroupDescription": {}, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "CreateOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S16" - } - } - } - }, - "DeleteDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "DeleteDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {} - } - } - }, - "DeleteDBClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBClusterSnapshotResult", - "type": "structure", - "members": { - "DBClusterSnapshot": { - "shape": "St" - } - } - } - }, - "DeleteDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "SkipFinalSnapshot": { - "type": "boolean" - }, - "FinalDBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "DeleteDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {} - } - } - }, - "DeleteDBSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {} - } - } - }, - "DeleteDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteDBSnapshotResult", - "type": "structure", - "members": { - "DBSnapshot": { - "shape": "S12" - } - } - } - }, - "DeleteDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName" - ], - "members": { - "DBSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - }, - "output": { - "resultWrapper": "DeleteEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "DeleteOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {} - } - } - }, - "DescribeAccountAttributes": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "DescribeAccountAttributesResult", - "type": "structure", - "members": { - "AccountQuotas": { - "type": "list", - "member": { - "locationName": "AccountQuota", - "type": "structure", - "members": { - "AccountQuotaName": {}, - "Used": { - "type": "long" - }, - "Max": { - "type": "long" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeCertificates": { - "input": { - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeCertificatesResult", - "type": "structure", - "members": { - "Certificates": { - "type": "list", - "member": { - "locationName": "Certificate", - "type": "structure", - "members": { - "CertificateIdentifier": {}, - "CertificateType": {}, - "Thumbprint": {}, - "ValidFrom": { - "type": "timestamp" - }, - "ValidTill": { - "type": "timestamp" - }, - "CertificateArn": {} - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeDBClusterParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusterParameterGroups": { - "type": "list", - "member": { - "shape": "Sq", - "locationName": "DBClusterParameterGroup" - } - } - } - } - }, - "DescribeDBClusterParameters": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S3m" - }, - "Marker": {} - } - } - }, - "DescribeDBClusterSnapshotAttributes": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier" - ], - "members": { - "DBClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClusterSnapshotAttributesResult", - "type": "structure", - "members": { - "DBClusterSnapshotAttributesResult": { - "shape": "S3r" - } - } - } - }, - "DescribeDBClusterSnapshots": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "DBClusterSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "IncludeShared": { - "type": "boolean" - }, - "IncludePublic": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBClusterSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusterSnapshots": { - "type": "list", - "member": { - "shape": "St", - "locationName": "DBClusterSnapshot" - } - } - } - } - }, - "DescribeDBClusters": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "DBClusters": { - "type": "list", - "member": { - "shape": "S1i", - "locationName": "DBCluster" - } - } - } - } - }, - "DescribeDBEngineVersions": { - "input": { - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "DefaultOnly": { - "type": "boolean" - }, - "ListSupportedCharacterSets": { - "type": "boolean" - }, - "ListSupportedTimezones": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBEngineVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBEngineVersions": { - "type": "list", - "member": { - "locationName": "DBEngineVersion", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBParameterGroupFamily": {}, - "DBEngineDescription": {}, - "DBEngineVersionDescription": {}, - "DefaultCharacterSet": { - "shape": "S45" - }, - "SupportedCharacterSets": { - "type": "list", - "member": { - "shape": "S45", - "locationName": "CharacterSet" - } - }, - "ValidUpgradeTarget": { - "type": "list", - "member": { - "locationName": "UpgradeTarget", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "Description": {}, - "AutoUpgrade": { - "type": "boolean" - }, - "IsMajorVersionUpgrade": { - "type": "boolean" - } - } - } - }, - "SupportedTimezones": { - "type": "list", - "member": { - "locationName": "Timezone", - "type": "structure", - "members": { - "TimezoneName": {} - } - } - } - } - } - } - } - } - }, - "DescribeDBInstances": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "DBInstances": { - "type": "list", - "member": { - "shape": "S1v", - "locationName": "DBInstance" - } - } - } - } - }, - "DescribeDBLogFiles": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "FilenameContains": {}, - "FileLastWritten": { - "type": "long" - }, - "FileSize": { - "type": "long" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBLogFilesResult", - "type": "structure", - "members": { - "DescribeDBLogFiles": { - "type": "list", - "member": { - "locationName": "DescribeDBLogFilesDetails", - "type": "structure", - "members": { - "LogFileName": {}, - "LastWritten": { - "type": "long" - }, - "Size": { - "type": "long" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeDBParameterGroups": { - "input": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBParameterGroups": { - "type": "list", - "member": { - "shape": "Sy", - "locationName": "DBParameterGroup" - } - } - } - } - }, - "DescribeDBParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "Source": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S3m" - }, - "Marker": {} - } - } - }, - "DescribeDBSecurityGroups": { - "input": { - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSecurityGroups": { - "type": "list", - "member": { - "shape": "Sj", - "locationName": "DBSecurityGroup" - } - } - } - } - }, - "DescribeDBSnapshotAttributes": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier" - ], - "members": { - "DBSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotAttributesResult", - "type": "structure", - "members": { - "DBSnapshotAttributesResult": { - "shape": "S4s" - } - } - } - }, - "DescribeDBSnapshots": { - "input": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "SnapshotType": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "IncludeShared": { - "type": "boolean" - }, - "IncludePublic": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "DescribeDBSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSnapshots": { - "type": "list", - "member": { - "shape": "S12", - "locationName": "DBSnapshot" - } - } - } - } - }, - "DescribeDBSubnetGroups": { - "input": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDBSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "DBSubnetGroups": { - "type": "list", - "member": { - "shape": "S1z", - "locationName": "DBSubnetGroup" - } - } - } - } - }, - "DescribeEngineDefaultClusterParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultClusterParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "shape": "S53" - } - } - } - }, - "DescribeEngineDefaultParameters": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupFamily" - ], - "members": { - "DBParameterGroupFamily": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEngineDefaultParametersResult", - "type": "structure", - "members": { - "EngineDefaults": { - "shape": "S53" - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {}, - "Filters": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "EventCategories": { - "shape": "S6" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "EventCategories": { - "shape": "S6" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S6" - }, - "Date": { - "type": "timestamp" - }, - "SourceArn": {} - } - } - } - } - } - }, - "DescribeOptionGroupOptions": { - "input": { - "type": "structure", - "required": [ - "EngineName" - ], - "members": { - "EngineName": {}, - "MajorEngineVersion": {}, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupOptionsResult", - "type": "structure", - "members": { - "OptionGroupOptions": { - "type": "list", - "member": { - "locationName": "OptionGroupOption", - "type": "structure", - "members": { - "Name": {}, - "Description": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "MinimumRequiredMinorEngineVersion": {}, - "PortRequired": { - "type": "boolean" - }, - "DefaultPort": { - "type": "integer" - }, - "OptionsDependedOn": { - "type": "list", - "member": { - "locationName": "OptionName" - } - }, - "OptionsConflictsWith": { - "type": "list", - "member": { - "locationName": "OptionConflictName" - } - }, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "OptionGroupOptionSettings": { - "type": "list", - "member": { - "locationName": "OptionGroupOptionSetting", - "type": "structure", - "members": { - "SettingName": {}, - "SettingDescription": {}, - "DefaultValue": {}, - "ApplyType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - } - } - } - }, - "OptionGroupOptionVersions": { - "type": "list", - "member": { - "locationName": "OptionVersion", - "type": "structure", - "members": { - "Version": {}, - "IsDefault": { - "type": "boolean" - } - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeOptionGroups": { - "input": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "Filters": { - "shape": "S3b" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - }, - "EngineName": {}, - "MajorEngineVersion": {} - } - }, - "output": { - "resultWrapper": "DescribeOptionGroupsResult", - "type": "structure", - "members": { - "OptionGroupsList": { - "type": "list", - "member": { - "shape": "S16", - "locationName": "OptionGroup" - } - }, - "Marker": {} - } - } - }, - "DescribeOrderableDBInstanceOptions": { - "input": { - "type": "structure", - "required": [ - "Engine" - ], - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "Vpc": { - "type": "boolean" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableDBInstanceOptionsResult", - "type": "structure", - "members": { - "OrderableDBInstanceOptions": { - "type": "list", - "member": { - "locationName": "OrderableDBInstanceOption", - "type": "structure", - "members": { - "Engine": {}, - "EngineVersion": {}, - "DBInstanceClass": {}, - "LicenseModel": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S22", - "locationName": "AvailabilityZone" - } - }, - "MultiAZCapable": { - "type": "boolean" - }, - "ReadReplicaCapable": { - "type": "boolean" - }, - "Vpc": { - "type": "boolean" - }, - "SupportsStorageEncryption": { - "type": "boolean" - }, - "StorageType": {}, - "SupportsIops": { - "type": "boolean" - }, - "SupportsEnhancedMonitoring": { - "type": "boolean" - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribePendingMaintenanceActions": { - "input": { - "type": "structure", - "members": { - "ResourceIdentifier": {}, - "Filters": { - "shape": "S3b" - }, - "Marker": {}, - "MaxRecords": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DescribePendingMaintenanceActionsResult", - "type": "structure", - "members": { - "PendingMaintenanceActions": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "ResourcePendingMaintenanceActions" - } - }, - "Marker": {} - } - } - }, - "DescribeReservedDBInstances": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstances": { - "type": "list", - "member": { - "shape": "S66", - "locationName": "ReservedDBInstance" - } - } - } - } - }, - "DescribeReservedDBInstancesOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "Filters": { - "shape": "S3b" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedDBInstancesOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedDBInstancesOfferings": { - "type": "list", - "member": { - "locationName": "ReservedDBInstancesOffering", - "type": "structure", - "members": { - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "RecurringCharges": { - "shape": "S68" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeSourceRegions": { - "input": { - "type": "structure", - "members": { - "RegionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "Filters": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "DescribeSourceRegionsResult", - "type": "structure", - "members": { - "Marker": {}, - "SourceRegions": { - "type": "list", - "member": { - "locationName": "SourceRegion", - "type": "structure", - "members": { - "RegionName": {}, - "Endpoint": {}, - "Status": {} - } - } - } - } - } - }, - "DownloadDBLogFilePortion": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "LogFileName" - ], - "members": { - "DBInstanceIdentifier": {}, - "LogFileName": {}, - "Marker": {}, - "NumberOfLines": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "DownloadDBLogFilePortionResult", - "type": "structure", - "members": { - "LogFileData": {}, - "Marker": {}, - "AdditionalDataPending": { - "type": "boolean" - } - } - } - }, - "FailoverDBCluster": { - "input": { - "type": "structure", - "members": { - "DBClusterIdentifier": {}, - "TargetDBInstanceIdentifier": {} - } - }, - "output": { - "resultWrapper": "FailoverDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName" - ], - "members": { - "ResourceName": {}, - "Filters": { - "shape": "S3b" - } - } - }, - "output": { - "resultWrapper": "ListTagsForResourceResult", - "type": "structure", - "members": { - "TagList": { - "shape": "S9" - } - } - } - }, - "ModifyDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "NewDBClusterIdentifier": {}, - "ApplyImmediately": { - "type": "boolean" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "Port": { - "type": "integer" - }, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {} - } - }, - "output": { - "resultWrapper": "ModifyDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "ModifyDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName", - "Parameters" - ], - "members": { - "DBClusterParameterGroupName": {}, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6r", - "resultWrapper": "ModifyDBClusterParameterGroupResult" - } - }, - "ModifyDBClusterSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "DBClusterSnapshotIdentifier", - "AttributeName" - ], - "members": { - "DBClusterSnapshotIdentifier": {}, - "AttributeName": {}, - "ValuesToAdd": { - "shape": "S3u" - }, - "ValuesToRemove": { - "shape": "S3u" - } - } - }, - "output": { - "resultWrapper": "ModifyDBClusterSnapshotAttributeResult", - "type": "structure", - "members": { - "DBClusterSnapshotAttributesResult": { - "shape": "S3r" - } - } - } - }, - "ModifyDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "AllocatedStorage": { - "type": "integer" - }, - "DBInstanceClass": {}, - "DBSubnetGroupName": {}, - "DBSecurityGroups": { - "shape": "S1t" - }, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "ApplyImmediately": { - "type": "boolean" - }, - "MasterUserPassword": {}, - "DBParameterGroupName": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AllowMajorVersionUpgrade": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "NewDBInstanceIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "CACertificateIdentifier": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "DBPortNumber": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "MonitoringRoleArn": {}, - "DomainIAMRoleName": {}, - "PromotionTier": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ModifyDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "ModifyDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName", - "Parameters" - ], - "members": { - "DBParameterGroupName": {}, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6x", - "resultWrapper": "ModifyDBParameterGroupResult" - } - }, - "ModifyDBSnapshotAttribute": { - "input": { - "type": "structure", - "required": [ - "DBSnapshotIdentifier", - "AttributeName" - ], - "members": { - "DBSnapshotIdentifier": {}, - "AttributeName": {}, - "ValuesToAdd": { - "shape": "S3u" - }, - "ValuesToRemove": { - "shape": "S3u" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSnapshotAttributeResult", - "type": "structure", - "members": { - "DBSnapshotAttributesResult": { - "shape": "S4s" - } - } - } - }, - "ModifyDBSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "DBSubnetGroupName", - "SubnetIds" - ], - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "SubnetIds": { - "shape": "S2k" - } - } - }, - "output": { - "resultWrapper": "ModifyDBSubnetGroupResult", - "type": "structure", - "members": { - "DBSubnetGroup": { - "shape": "S1z" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "EventCategories": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "ModifyOptionGroup": { - "input": { - "type": "structure", - "required": [ - "OptionGroupName" - ], - "members": { - "OptionGroupName": {}, - "OptionsToInclude": { - "type": "list", - "member": { - "locationName": "OptionConfiguration", - "type": "structure", - "required": [ - "OptionName" - ], - "members": { - "OptionName": {}, - "Port": { - "type": "integer" - }, - "OptionVersion": {}, - "DBSecurityGroupMemberships": { - "shape": "S1t" - }, - "VpcSecurityGroupMemberships": { - "shape": "S1g" - }, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1a", - "locationName": "OptionSetting" - } - } - } - } - }, - "OptionsToRemove": { - "type": "list", - "member": {} - }, - "ApplyImmediately": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyOptionGroupResult", - "type": "structure", - "members": { - "OptionGroup": { - "shape": "S16" - } - } - } - }, - "PromoteReadReplica": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "PreferredBackupWindow": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "PromoteReadReplicaDBCluster": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "PromoteReadReplicaDBClusterResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "PurchaseReservedDBInstancesOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedDBInstancesOfferingId" - ], - "members": { - "ReservedDBInstancesOfferingId": {}, - "ReservedDBInstanceId": {}, - "DBInstanceCount": { - "type": "integer" - }, - "Tags": { - "shape": "S9" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedDBInstancesOfferingResult", - "type": "structure", - "members": { - "ReservedDBInstance": { - "shape": "S66" - } - } - } - }, - "RebootDBInstance": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "ForceFailover": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "RebootDBInstanceResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "RemoveSourceIdentifierFromSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SourceIdentifier" - ], - "members": { - "SubscriptionName": {}, - "SourceIdentifier": {} - } - }, - "output": { - "resultWrapper": "RemoveSourceIdentifierFromSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S4" - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - } - }, - "ResetDBClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBClusterParameterGroupName" - ], - "members": { - "DBClusterParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6r", - "resultWrapper": "ResetDBClusterParameterGroupResult" - } - }, - "ResetDBParameterGroup": { - "input": { - "type": "structure", - "required": [ - "DBParameterGroupName" - ], - "members": { - "DBParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S3m" - } - } - }, - "output": { - "shape": "S6x", - "resultWrapper": "ResetDBParameterGroupResult" - } - }, - "RestoreDBClusterFromS3": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "Engine", - "MasterUsername", - "MasterUserPassword", - "SourceEngine", - "SourceEngineVersion", - "S3BucketName", - "S3IngestionRoleArn" - ], - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "DBSubnetGroupName": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "MasterUserPassword": {}, - "OptionGroupName": {}, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "Tags": { - "shape": "S9" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "SourceEngine": {}, - "SourceEngineVersion": {}, - "S3BucketName": {}, - "S3Prefix": {}, - "S3IngestionRoleArn": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterFromS3Result", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "RestoreDBClusterFromSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "SnapshotIdentifier", - "Engine" - ], - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "DBClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "Engine": {}, - "EngineVersion": {}, - "Port": { - "type": "integer" - }, - "DBSubnetGroupName": {}, - "DatabaseName": {}, - "OptionGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "Tags": { - "shape": "S9" - }, - "KmsKeyId": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterFromSnapshotResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "RestoreDBClusterToPointInTime": { - "input": { - "type": "structure", - "required": [ - "DBClusterIdentifier", - "SourceDBClusterIdentifier" - ], - "members": { - "DBClusterIdentifier": {}, - "SourceDBClusterIdentifier": {}, - "RestoreToTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "DBSubnetGroupName": {}, - "OptionGroupName": {}, - "VpcSecurityGroupIds": { - "shape": "S1g" - }, - "Tags": { - "shape": "S9" - }, - "KmsKeyId": {} - } - }, - "output": { - "resultWrapper": "RestoreDBClusterToPointInTimeResult", - "type": "structure", - "members": { - "DBCluster": { - "shape": "S1i" - } - } - } - }, - "RestoreDBInstanceFromDBSnapshot": { - "input": { - "type": "structure", - "required": [ - "DBInstanceIdentifier", - "DBSnapshotIdentifier" - ], - "members": { - "DBInstanceIdentifier": {}, - "DBSnapshotIdentifier": {}, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "Domain": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "DomainIAMRoleName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceFromDBSnapshotResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "RestoreDBInstanceToPointInTime": { - "input": { - "type": "structure", - "required": [ - "SourceDBInstanceIdentifier", - "TargetDBInstanceIdentifier" - ], - "members": { - "SourceDBInstanceIdentifier": {}, - "TargetDBInstanceIdentifier": {}, - "RestoreTime": { - "type": "timestamp" - }, - "UseLatestRestorableTime": { - "type": "boolean" - }, - "DBInstanceClass": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "DBSubnetGroupName": {}, - "MultiAZ": { - "type": "boolean" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "LicenseModel": {}, - "DBName": {}, - "Engine": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "Tags": { - "shape": "S9" - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "TdeCredentialPassword": {}, - "Domain": {}, - "DomainIAMRoleName": {} - } - }, - "output": { - "resultWrapper": "RestoreDBInstanceToPointInTimeResult", - "type": "structure", - "members": { - "DBInstance": { - "shape": "S1v" - } - } - } - }, - "RevokeDBSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "DBSecurityGroupName" - ], - "members": { - "DBSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeDBSecurityGroupIngressResult", - "type": "structure", - "members": { - "DBSecurityGroup": { - "shape": "Sj" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": {}, - "SourceType": {}, - "SourceIdsList": { - "shape": "S5" - }, - "EventCategoriesList": { - "shape": "S6" - }, - "Enabled": { - "type": "boolean" - }, - "EventSubscriptionArn": {} - }, - "wrapper": true - }, - "S5": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S6": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S9": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sd": { - "type": "structure", - "members": { - "ResourceIdentifier": {}, - "PendingMaintenanceActionDetails": { - "type": "list", - "member": { - "locationName": "PendingMaintenanceAction", - "type": "structure", - "members": { - "Action": {}, - "AutoAppliedAfterDate": { - "type": "timestamp" - }, - "ForcedApplyDate": { - "type": "timestamp" - }, - "OptInStatus": {}, - "CurrentApplyDate": { - "type": "timestamp" - }, - "Description": {} - } - } - } - }, - "wrapper": true - }, - "Sj": { - "type": "structure", - "members": { - "OwnerId": {}, - "DBSecurityGroupName": {}, - "DBSecurityGroupDescription": {}, - "VpcId": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupId": {}, - "EC2SecurityGroupOwnerId": {} - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {} - } - } - }, - "DBSecurityGroupArn": {} - }, - "wrapper": true - }, - "Sq": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "DBClusterParameterGroupArn": {} - }, - "wrapper": true - }, - "St": { - "type": "structure", - "members": { - "AvailabilityZones": { - "shape": "Su" - }, - "DBClusterSnapshotIdentifier": {}, - "DBClusterIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "VpcId": {}, - "ClusterCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "PercentProgress": { - "type": "integer" - }, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DBClusterSnapshotArn": {} - }, - "wrapper": true - }, - "Su": { - "type": "list", - "member": { - "locationName": "AvailabilityZone" - } - }, - "Sy": { - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "DBParameterGroupFamily": {}, - "Description": {}, - "DBParameterGroupArn": {} - }, - "wrapper": true - }, - "S12": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBInstanceIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Engine": {}, - "AllocatedStorage": { - "type": "integer" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "VpcId": {}, - "InstanceCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "EngineVersion": {}, - "LicenseModel": {}, - "SnapshotType": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupName": {}, - "PercentProgress": { - "type": "integer" - }, - "SourceRegion": {}, - "SourceDBSnapshotIdentifier": {}, - "StorageType": {}, - "TdeCredentialArn": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DBSnapshotArn": {}, - "Timezone": {} - }, - "wrapper": true - }, - "S16": { - "type": "structure", - "members": { - "OptionGroupName": {}, - "OptionGroupDescription": {}, - "EngineName": {}, - "MajorEngineVersion": {}, - "Options": { - "type": "list", - "member": { - "locationName": "Option", - "type": "structure", - "members": { - "OptionName": {}, - "OptionDescription": {}, - "Persistent": { - "type": "boolean" - }, - "Permanent": { - "type": "boolean" - }, - "Port": { - "type": "integer" - }, - "OptionVersion": {}, - "OptionSettings": { - "type": "list", - "member": { - "shape": "S1a", - "locationName": "OptionSetting" - } - }, - "DBSecurityGroupMemberships": { - "shape": "S1b" - }, - "VpcSecurityGroupMemberships": { - "shape": "S1d" - } - } - } - }, - "AllowsVpcAndNonVpcInstanceMemberships": { - "type": "boolean" - }, - "VpcId": {}, - "OptionGroupArn": {} - }, - "wrapper": true - }, - "S1a": { - "type": "structure", - "members": { - "Name": {}, - "Value": {}, - "DefaultValue": {}, - "Description": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "IsCollection": { - "type": "boolean" - } - } - }, - "S1b": { - "type": "list", - "member": { - "locationName": "DBSecurityGroup", - "type": "structure", - "members": { - "DBSecurityGroupName": {}, - "Status": {} - } - } - }, - "S1d": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupMembership", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "S1g": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "S1i": { - "type": "structure", - "members": { - "AllocatedStorage": { - "type": "integer" - }, - "AvailabilityZones": { - "shape": "Su" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "CharacterSetName": {}, - "DatabaseName": {}, - "DBClusterIdentifier": {}, - "DBClusterParameterGroup": {}, - "DBSubnetGroup": {}, - "Status": {}, - "PercentProgress": {}, - "EarliestRestorableTime": { - "type": "timestamp" - }, - "Endpoint": {}, - "ReaderEndpoint": {}, - "Engine": {}, - "EngineVersion": {}, - "LatestRestorableTime": { - "type": "timestamp" - }, - "Port": { - "type": "integer" - }, - "MasterUsername": {}, - "DBClusterOptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "DBClusterOptionGroup", - "type": "structure", - "members": { - "DBClusterOptionGroupName": {}, - "Status": {} - } - } - }, - "PreferredBackupWindow": {}, - "PreferredMaintenanceWindow": {}, - "ReplicationSourceIdentifier": {}, - "ReadReplicaIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaIdentifier" - } - }, - "DBClusterMembers": { - "type": "list", - "member": { - "locationName": "DBClusterMember", - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "IsClusterWriter": { - "type": "boolean" - }, - "DBClusterParameterGroupStatus": {}, - "PromotionTier": { - "type": "integer" - } - }, - "wrapper": true - } - }, - "VpcSecurityGroups": { - "shape": "S1d" - }, - "HostedZoneId": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DbClusterResourceId": {}, - "DBClusterArn": {} - }, - "wrapper": true - }, - "S1t": { - "type": "list", - "member": { - "locationName": "DBSecurityGroupName" - } - }, - "S1v": { - "type": "structure", - "members": { - "DBInstanceIdentifier": {}, - "DBInstanceClass": {}, - "Engine": {}, - "DBInstanceStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - }, - "HostedZoneId": {} - } - }, - "AllocatedStorage": { - "type": "integer" - }, - "InstanceCreateTime": { - "type": "timestamp" - }, - "PreferredBackupWindow": {}, - "BackupRetentionPeriod": { - "type": "integer" - }, - "DBSecurityGroups": { - "shape": "S1b" - }, - "VpcSecurityGroups": { - "shape": "S1d" - }, - "DBParameterGroups": { - "type": "list", - "member": { - "locationName": "DBParameterGroup", - "type": "structure", - "members": { - "DBParameterGroupName": {}, - "ParameterApplyStatus": {} - } - } - }, - "AvailabilityZone": {}, - "DBSubnetGroup": { - "shape": "S1z" - }, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "DBInstanceClass": {}, - "AllocatedStorage": { - "type": "integer" - }, - "MasterUserPassword": {}, - "Port": { - "type": "integer" - }, - "BackupRetentionPeriod": { - "type": "integer" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "DBInstanceIdentifier": {}, - "StorageType": {}, - "CACertificateIdentifier": {}, - "DBSubnetGroupName": {} - } - }, - "LatestRestorableTime": { - "type": "timestamp" - }, - "MultiAZ": { - "type": "boolean" - }, - "EngineVersion": {}, - "AutoMinorVersionUpgrade": { - "type": "boolean" - }, - "ReadReplicaSourceDBInstanceIdentifier": {}, - "ReadReplicaDBInstanceIdentifiers": { - "type": "list", - "member": { - "locationName": "ReadReplicaDBInstanceIdentifier" - } - }, - "LicenseModel": {}, - "Iops": { - "type": "integer" - }, - "OptionGroupMemberships": { - "type": "list", - "member": { - "locationName": "OptionGroupMembership", - "type": "structure", - "members": { - "OptionGroupName": {}, - "Status": {} - } - } - }, - "CharacterSetName": {}, - "SecondaryAvailabilityZone": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "StatusInfos": { - "type": "list", - "member": { - "locationName": "DBInstanceStatusInfo", - "type": "structure", - "members": { - "StatusType": {}, - "Normal": { - "type": "boolean" - }, - "Status": {}, - "Message": {} - } - } - }, - "StorageType": {}, - "TdeCredentialArn": {}, - "DbInstancePort": { - "type": "integer" - }, - "DBClusterIdentifier": {}, - "StorageEncrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "DbiResourceId": {}, - "CACertificateIdentifier": {}, - "DomainMemberships": { - "type": "list", - "member": { - "locationName": "DomainMembership", - "type": "structure", - "members": { - "Domain": {}, - "Status": {}, - "FQDN": {}, - "IAMRoleName": {} - } - } - }, - "CopyTagsToSnapshot": { - "type": "boolean" - }, - "MonitoringInterval": { - "type": "integer" - }, - "EnhancedMonitoringResourceArn": {}, - "MonitoringRoleArn": {}, - "PromotionTier": { - "type": "integer" - }, - "DBInstanceArn": {}, - "Timezone": {} - }, - "wrapper": true - }, - "S1z": { - "type": "structure", - "members": { - "DBSubnetGroupName": {}, - "DBSubnetGroupDescription": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S22" - }, - "SubnetStatus": {} - } - } - }, - "DBSubnetGroupArn": {} - }, - "wrapper": true - }, - "S22": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S2k": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S3b": { - "type": "list", - "member": { - "locationName": "Filter", - "type": "structure", - "required": [ - "Name", - "Values" - ], - "members": { - "Name": {}, - "Values": { - "type": "list", - "member": { - "locationName": "Value" - } - } - } - } - }, - "S3m": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "ApplyType": {}, - "DataType": {}, - "AllowedValues": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {}, - "ApplyMethod": {} - } - } - }, - "S3r": { - "type": "structure", - "members": { - "DBClusterSnapshotIdentifier": {}, - "DBClusterSnapshotAttributes": { - "type": "list", - "member": { - "locationName": "DBClusterSnapshotAttribute", - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValues": { - "shape": "S3u" - } - } - } - } - }, - "wrapper": true - }, - "S3u": { - "type": "list", - "member": { - "locationName": "AttributeValue" - } - }, - "S45": { - "type": "structure", - "members": { - "CharacterSetName": {}, - "CharacterSetDescription": {} - } - }, - "S4s": { - "type": "structure", - "members": { - "DBSnapshotIdentifier": {}, - "DBSnapshotAttributes": { - "type": "list", - "member": { - "locationName": "DBSnapshotAttribute", - "type": "structure", - "members": { - "AttributeName": {}, - "AttributeValues": { - "shape": "S3u" - } - }, - "wrapper": true - } - } - }, - "wrapper": true - }, - "S53": { - "type": "structure", - "members": { - "DBParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S3m" - } - }, - "wrapper": true - }, - "S66": { - "type": "structure", - "members": { - "ReservedDBInstanceId": {}, - "ReservedDBInstancesOfferingId": {}, - "DBInstanceClass": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "DBInstanceCount": { - "type": "integer" - }, - "ProductDescription": {}, - "OfferingType": {}, - "MultiAZ": { - "type": "boolean" - }, - "State": {}, - "RecurringCharges": { - "shape": "S68" - }, - "ReservedDBInstanceArn": {} - }, - "wrapper": true - }, - "S68": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S6r": { - "type": "structure", - "members": { - "DBClusterParameterGroupName": {} - } - }, - "S6x": { - "type": "structure", - "members": { - "DBParameterGroupName": {} - } - } - } -} -},{}],102:[function(require,module,exports){ -arguments[4][97][0].apply(exports,arguments) -},{"dup":97}],103:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "DBInstanceAvailable": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-restore", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "incompatible-parameters", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - }, - "DBInstanceDeleted": { - "delay": 30, - "operation": "DescribeDBInstances", - "maxAttempts": 60, - "acceptors": [ - { - "expected": "deleted", - "matcher": "pathAll", - "state": "success", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "DBInstanceNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "rebooting", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - }, - { - "expected": "resetting-master-credentials", - "matcher": "pathAny", - "state": "failure", - "argument": "DBInstances[].DBInstanceStatus" - } - ] - } - } -} - -},{}],104:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2012-12-01", - "endpointPrefix": "redshift", - "protocol": "query", - "serviceFullName": "Amazon Redshift", - "signatureVersion": "v4", - "xmlNamespace": "http://redshift.amazonaws.com/doc/2012-12-01/" - }, - "operations": { - "AuthorizeClusterSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "AuthorizeClusterSecurityGroupIngressResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "AuthorizeSnapshotAccess": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "AccountWithRestoreAccess": {} - } - }, - "output": { - "resultWrapper": "AuthorizeSnapshotAccessResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CopyClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SourceSnapshotIdentifier", - "TargetSnapshotIdentifier" - ], - "members": { - "SourceSnapshotIdentifier": {}, - "SourceSnapshotClusterIdentifier": {}, - "TargetSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "CopyClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "NodeType", - "MasterUsername", - "MasterUserPassword" - ], - "members": { - "DBName": {}, - "ClusterIdentifier": {}, - "ClusterType": {}, - "NodeType": {}, - "MasterUsername": {}, - "MasterUserPassword": {}, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "ClusterSubnetGroupName": {}, - "AvailabilityZone": {}, - "PreferredMaintenanceWindow": {}, - "ClusterParameterGroupName": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "Port": { - "type": "integer" - }, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "NumberOfNodes": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "ElasticIp": {}, - "Tags": { - "shape": "S7" - }, - "KmsKeyId": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "AdditionalInfo": {}, - "IamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "CreateClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "CreateClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "ParameterGroupFamily", - "Description" - ], - "members": { - "ParameterGroupName": {}, - "ParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterParameterGroupResult", - "type": "structure", - "members": { - "ClusterParameterGroup": { - "shape": "S1g" - } - } - } - }, - "CreateClusterSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName", - "Description" - ], - "members": { - "ClusterSecurityGroupName": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSecurityGroupResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "CreateClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "ClusterIdentifier" - ], - "members": { - "SnapshotIdentifier": {}, - "ClusterIdentifier": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "CreateClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName", - "Description", - "SubnetIds" - ], - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "S1m" - }, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateClusterSubnetGroupResult", - "type": "structure", - "members": { - "ClusterSubnetGroup": { - "shape": "S1o" - } - } - } - }, - "CreateEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName", - "SnsTopicArn" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "SourceIds": { - "shape": "S1t" - }, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S1w" - } - } - } - }, - "CreateHsmClientCertificate": { - "input": { - "type": "structure", - "required": [ - "HsmClientCertificateIdentifier" - ], - "members": { - "HsmClientCertificateIdentifier": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateHsmClientCertificateResult", - "type": "structure", - "members": { - "HsmClientCertificate": { - "shape": "S1z" - } - } - } - }, - "CreateHsmConfiguration": { - "input": { - "type": "structure", - "required": [ - "HsmConfigurationIdentifier", - "Description", - "HsmIpAddress", - "HsmPartitionName", - "HsmPartitionPassword", - "HsmServerPublicCertificate" - ], - "members": { - "HsmConfigurationIdentifier": {}, - "Description": {}, - "HsmIpAddress": {}, - "HsmPartitionName": {}, - "HsmPartitionPassword": {}, - "HsmServerPublicCertificate": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateHsmConfigurationResult", - "type": "structure", - "members": { - "HsmConfiguration": { - "shape": "S22" - } - } - } - }, - "CreateSnapshotCopyGrant": { - "input": { - "type": "structure", - "required": [ - "SnapshotCopyGrantName" - ], - "members": { - "SnapshotCopyGrantName": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S7" - } - } - }, - "output": { - "resultWrapper": "CreateSnapshotCopyGrantResult", - "type": "structure", - "members": { - "SnapshotCopyGrant": { - "shape": "S25" - } - } - } - }, - "CreateTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "Tags" - ], - "members": { - "ResourceName": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "DeleteCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "SkipFinalClusterSnapshot": { - "type": "boolean" - }, - "FinalClusterSnapshotIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "DeleteClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {} - } - } - }, - "DeleteClusterSecurityGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {} - } - } - }, - "DeleteClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DeleteClusterSnapshotResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "DeleteClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName" - ], - "members": { - "ClusterSubnetGroupName": {} - } - } - }, - "DeleteEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {} - } - } - }, - "DeleteHsmClientCertificate": { - "input": { - "type": "structure", - "required": [ - "HsmClientCertificateIdentifier" - ], - "members": { - "HsmClientCertificateIdentifier": {} - } - } - }, - "DeleteHsmConfiguration": { - "input": { - "type": "structure", - "required": [ - "HsmConfigurationIdentifier" - ], - "members": { - "HsmConfigurationIdentifier": {} - } - } - }, - "DeleteSnapshotCopyGrant": { - "input": { - "type": "structure", - "required": [ - "SnapshotCopyGrantName" - ], - "members": { - "SnapshotCopyGrantName": {} - } - } - }, - "DeleteTags": { - "input": { - "type": "structure", - "required": [ - "ResourceName", - "TagKeys" - ], - "members": { - "ResourceName": {}, - "TagKeys": { - "shape": "S2j" - } - } - } - }, - "DescribeClusterParameterGroups": { - "input": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterParameterGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ParameterGroups": { - "type": "list", - "member": { - "shape": "S1g", - "locationName": "ClusterParameterGroup" - } - } - } - } - }, - "DescribeClusterParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "Source": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeClusterParametersResult", - "type": "structure", - "members": { - "Parameters": { - "shape": "S2q" - }, - "Marker": {} - } - } - }, - "DescribeClusterSecurityGroups": { - "input": { - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSecurityGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterSecurityGroups": { - "type": "list", - "member": { - "shape": "S4", - "locationName": "ClusterSecurityGroup" - } - } - } - } - }, - "DescribeClusterSnapshots": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SnapshotType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "OwnerAccount": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSnapshotsResult", - "type": "structure", - "members": { - "Marker": {}, - "Snapshots": { - "type": "list", - "member": { - "shape": "Sd", - "locationName": "Snapshot" - } - } - } - } - }, - "DescribeClusterSubnetGroups": { - "input": { - "type": "structure", - "members": { - "ClusterSubnetGroupName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClusterSubnetGroupsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterSubnetGroups": { - "type": "list", - "member": { - "shape": "S1o", - "locationName": "ClusterSubnetGroup" - } - } - } - } - }, - "DescribeClusterVersions": { - "input": { - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeClusterVersionsResult", - "type": "structure", - "members": { - "Marker": {}, - "ClusterVersions": { - "type": "list", - "member": { - "locationName": "ClusterVersion", - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterParameterGroupFamily": {}, - "Description": {} - } - } - } - } - } - }, - "DescribeClusters": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeClustersResult", - "type": "structure", - "members": { - "Marker": {}, - "Clusters": { - "type": "list", - "member": { - "shape": "Sv", - "locationName": "Cluster" - } - } - } - } - }, - "DescribeDefaultClusterParameters": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupFamily" - ], - "members": { - "ParameterGroupFamily": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeDefaultClusterParametersResult", - "type": "structure", - "members": { - "DefaultClusterParameters": { - "type": "structure", - "members": { - "ParameterGroupFamily": {}, - "Marker": {}, - "Parameters": { - "shape": "S2q" - } - }, - "wrapper": true - } - } - } - }, - "DescribeEventCategories": { - "input": { - "type": "structure", - "members": { - "SourceType": {} - } - }, - "output": { - "resultWrapper": "DescribeEventCategoriesResult", - "type": "structure", - "members": { - "EventCategoriesMapList": { - "type": "list", - "member": { - "locationName": "EventCategoriesMap", - "type": "structure", - "members": { - "SourceType": {}, - "Events": { - "type": "list", - "member": { - "locationName": "EventInfoMap", - "type": "structure", - "members": { - "EventId": {}, - "EventCategories": { - "shape": "S1u" - }, - "EventDescription": {}, - "Severity": {} - }, - "wrapper": true - } - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeEventSubscriptions": { - "input": { - "type": "structure", - "members": { - "SubscriptionName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventSubscriptionsResult", - "type": "structure", - "members": { - "Marker": {}, - "EventSubscriptionsList": { - "type": "list", - "member": { - "shape": "S1w", - "locationName": "EventSubscription" - } - } - } - } - }, - "DescribeEvents": { - "input": { - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeEventsResult", - "type": "structure", - "members": { - "Marker": {}, - "Events": { - "type": "list", - "member": { - "locationName": "Event", - "type": "structure", - "members": { - "SourceIdentifier": {}, - "SourceType": {}, - "Message": {}, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Date": { - "type": "timestamp" - }, - "EventId": {} - } - } - } - } - } - }, - "DescribeHsmClientCertificates": { - "input": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeHsmClientCertificatesResult", - "type": "structure", - "members": { - "Marker": {}, - "HsmClientCertificates": { - "type": "list", - "member": { - "shape": "S1z", - "locationName": "HsmClientCertificate" - } - } - } - } - }, - "DescribeHsmConfigurations": { - "input": { - "type": "structure", - "members": { - "HsmConfigurationIdentifier": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeHsmConfigurationsResult", - "type": "structure", - "members": { - "Marker": {}, - "HsmConfigurations": { - "type": "list", - "member": { - "shape": "S22", - "locationName": "HsmConfiguration" - } - } - } - } - }, - "DescribeLoggingStatus": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "DescribeLoggingStatusResult" - } - }, - "DescribeOrderableClusterOptions": { - "input": { - "type": "structure", - "members": { - "ClusterVersion": {}, - "NodeType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeOrderableClusterOptionsResult", - "type": "structure", - "members": { - "OrderableClusterOptions": { - "type": "list", - "member": { - "locationName": "OrderableClusterOption", - "type": "structure", - "members": { - "ClusterVersion": {}, - "ClusterType": {}, - "NodeType": {}, - "AvailabilityZones": { - "type": "list", - "member": { - "shape": "S1r", - "locationName": "AvailabilityZone" - } - } - }, - "wrapper": true - } - }, - "Marker": {} - } - } - }, - "DescribeReservedNodeOfferings": { - "input": { - "type": "structure", - "members": { - "ReservedNodeOfferingId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedNodeOfferingsResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedNodeOfferings": { - "type": "list", - "member": { - "locationName": "ReservedNodeOffering", - "type": "structure", - "members": { - "ReservedNodeOfferingId": {}, - "NodeType": {}, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - } - } - } - } - }, - "DescribeReservedNodes": { - "input": { - "type": "structure", - "members": { - "ReservedNodeId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeReservedNodesResult", - "type": "structure", - "members": { - "Marker": {}, - "ReservedNodes": { - "type": "list", - "member": { - "shape": "S4c", - "locationName": "ReservedNode" - } - } - } - } - }, - "DescribeResize": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DescribeResizeResult", - "type": "structure", - "members": { - "TargetNodeType": {}, - "TargetNumberOfNodes": { - "type": "integer" - }, - "TargetClusterType": {}, - "Status": {}, - "ImportTablesCompleted": { - "type": "list", - "member": {} - }, - "ImportTablesInProgress": { - "type": "list", - "member": {} - }, - "ImportTablesNotStarted": { - "type": "list", - "member": {} - }, - "AvgResizeRateInMegaBytesPerSecond": { - "type": "double" - }, - "TotalResizeDataInMegaBytes": { - "type": "long" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "EstimatedTimeToCompletionInSeconds": { - "type": "long" - } - } - } - }, - "DescribeSnapshotCopyGrants": { - "input": { - "type": "structure", - "members": { - "SnapshotCopyGrantName": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeSnapshotCopyGrantsResult", - "type": "structure", - "members": { - "Marker": {}, - "SnapshotCopyGrants": { - "type": "list", - "member": { - "shape": "S25", - "locationName": "SnapshotCopyGrant" - } - } - } - } - }, - "DescribeTableRestoreStatus": { - "input": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "TableRestoreRequestId": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {} - } - }, - "output": { - "resultWrapper": "DescribeTableRestoreStatusResult", - "type": "structure", - "members": { - "TableRestoreStatusDetails": { - "type": "list", - "member": { - "shape": "S4q", - "locationName": "TableRestoreStatus" - } - }, - "Marker": {} - } - } - }, - "DescribeTags": { - "input": { - "type": "structure", - "members": { - "ResourceName": {}, - "ResourceType": {}, - "MaxRecords": { - "type": "integer" - }, - "Marker": {}, - "TagKeys": { - "shape": "S2j" - }, - "TagValues": { - "shape": "S2l" - } - } - }, - "output": { - "resultWrapper": "DescribeTagsResult", - "type": "structure", - "members": { - "TaggedResources": { - "type": "list", - "member": { - "locationName": "TaggedResource", - "type": "structure", - "members": { - "Tag": { - "shape": "S8" - }, - "ResourceName": {}, - "ResourceType": {} - } - } - }, - "Marker": {} - } - } - }, - "DisableLogging": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "DisableLoggingResult" - } - }, - "DisableSnapshotCopy": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "DisableSnapshotCopyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "EnableLogging": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "BucketName" - ], - "members": { - "ClusterIdentifier": {}, - "BucketName": {}, - "S3KeyPrefix": {} - } - }, - "output": { - "shape": "S3x", - "resultWrapper": "EnableLoggingResult" - } - }, - "EnableSnapshotCopy": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "DestinationRegion" - ], - "members": { - "ClusterIdentifier": {}, - "DestinationRegion": {}, - "RetentionPeriod": { - "type": "integer" - }, - "SnapshotCopyGrantName": {} - } - }, - "output": { - "resultWrapper": "EnableSnapshotCopyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "ClusterType": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "MasterUserPassword": {}, - "ClusterParameterGroupName": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "PreferredMaintenanceWindow": {}, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "NewClusterIdentifier": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "ElasticIp": {}, - "EnhancedVpcRouting": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyClusterIamRoles": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "AddIamRoles": { - "shape": "St" - }, - "RemoveIamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterIamRolesResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ModifyClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName", - "Parameters" - ], - "members": { - "ParameterGroupName": {}, - "Parameters": { - "shape": "S2q" - } - } - }, - "output": { - "shape": "S57", - "resultWrapper": "ModifyClusterParameterGroupResult" - } - }, - "ModifyClusterSubnetGroup": { - "input": { - "type": "structure", - "required": [ - "ClusterSubnetGroupName", - "SubnetIds" - ], - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "SubnetIds": { - "shape": "S1m" - } - } - }, - "output": { - "resultWrapper": "ModifyClusterSubnetGroupResult", - "type": "structure", - "members": { - "ClusterSubnetGroup": { - "shape": "S1o" - } - } - } - }, - "ModifyEventSubscription": { - "input": { - "type": "structure", - "required": [ - "SubscriptionName" - ], - "members": { - "SubscriptionName": {}, - "SnsTopicArn": {}, - "SourceType": {}, - "SourceIds": { - "shape": "S1t" - }, - "EventCategories": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - } - } - }, - "output": { - "resultWrapper": "ModifyEventSubscriptionResult", - "type": "structure", - "members": { - "EventSubscription": { - "shape": "S1w" - } - } - } - }, - "ModifySnapshotCopyRetentionPeriod": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "RetentionPeriod" - ], - "members": { - "ClusterIdentifier": {}, - "RetentionPeriod": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ModifySnapshotCopyRetentionPeriodResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "PurchaseReservedNodeOffering": { - "input": { - "type": "structure", - "required": [ - "ReservedNodeOfferingId" - ], - "members": { - "ReservedNodeOfferingId": {}, - "NodeCount": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "PurchaseReservedNodeOfferingResult", - "type": "structure", - "members": { - "ReservedNode": { - "shape": "S4c" - } - } - } - }, - "RebootCluster": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "RebootClusterResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "ResetClusterParameterGroup": { - "input": { - "type": "structure", - "required": [ - "ParameterGroupName" - ], - "members": { - "ParameterGroupName": {}, - "ResetAllParameters": { - "type": "boolean" - }, - "Parameters": { - "shape": "S2q" - } - } - }, - "output": { - "shape": "S57", - "resultWrapper": "ResetClusterParameterGroupResult" - } - }, - "RestoreFromClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "SnapshotIdentifier" - ], - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "ClusterSubnetGroupName": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "OwnerAccount": {}, - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "ElasticIp": {}, - "ClusterParameterGroupName": {}, - "ClusterSecurityGroups": { - "shape": "Sp" - }, - "VpcSecurityGroupIds": { - "shape": "Sq" - }, - "PreferredMaintenanceWindow": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "KmsKeyId": {}, - "NodeType": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "AdditionalInfo": {}, - "IamRoles": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "RestoreFromClusterSnapshotResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - }, - "RestoreTableFromClusterSnapshot": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier", - "SnapshotIdentifier", - "SourceDatabaseName", - "SourceTableName", - "NewTableName" - ], - "members": { - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SourceDatabaseName": {}, - "SourceSchemaName": {}, - "SourceTableName": {}, - "TargetDatabaseName": {}, - "TargetSchemaName": {}, - "NewTableName": {} - } - }, - "output": { - "resultWrapper": "RestoreTableFromClusterSnapshotResult", - "type": "structure", - "members": { - "TableRestoreStatus": { - "shape": "S4q" - } - } - } - }, - "RevokeClusterSecurityGroupIngress": { - "input": { - "type": "structure", - "required": [ - "ClusterSecurityGroupName" - ], - "members": { - "ClusterSecurityGroupName": {}, - "CIDRIP": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {} - } - }, - "output": { - "resultWrapper": "RevokeClusterSecurityGroupIngressResult", - "type": "structure", - "members": { - "ClusterSecurityGroup": { - "shape": "S4" - } - } - } - }, - "RevokeSnapshotAccess": { - "input": { - "type": "structure", - "required": [ - "SnapshotIdentifier", - "AccountWithRestoreAccess" - ], - "members": { - "SnapshotIdentifier": {}, - "SnapshotClusterIdentifier": {}, - "AccountWithRestoreAccess": {} - } - }, - "output": { - "resultWrapper": "RevokeSnapshotAccessResult", - "type": "structure", - "members": { - "Snapshot": { - "shape": "Sd" - } - } - } - }, - "RotateEncryptionKey": { - "input": { - "type": "structure", - "required": [ - "ClusterIdentifier" - ], - "members": { - "ClusterIdentifier": {} - } - }, - "output": { - "resultWrapper": "RotateEncryptionKeyResult", - "type": "structure", - "members": { - "Cluster": { - "shape": "Sv" - } - } - } - } - }, - "shapes": { - "S4": { - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "Description": {}, - "EC2SecurityGroups": { - "type": "list", - "member": { - "locationName": "EC2SecurityGroup", - "type": "structure", - "members": { - "Status": {}, - "EC2SecurityGroupName": {}, - "EC2SecurityGroupOwnerId": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "IPRanges": { - "type": "list", - "member": { - "locationName": "IPRange", - "type": "structure", - "members": { - "Status": {}, - "CIDRIP": {}, - "Tags": { - "shape": "S7" - } - } - } - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S7": { - "type": "list", - "member": { - "shape": "S8", - "locationName": "Tag" - } - }, - "S8": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "Sd": { - "type": "structure", - "members": { - "SnapshotIdentifier": {}, - "ClusterIdentifier": {}, - "SnapshotCreateTime": { - "type": "timestamp" - }, - "Status": {}, - "Port": { - "type": "integer" - }, - "AvailabilityZone": {}, - "ClusterCreateTime": { - "type": "timestamp" - }, - "MasterUsername": {}, - "ClusterVersion": {}, - "SnapshotType": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "DBName": {}, - "VpcId": {}, - "Encrypted": { - "type": "boolean" - }, - "KmsKeyId": {}, - "EncryptedWithHSM": { - "type": "boolean" - }, - "AccountsWithRestoreAccess": { - "type": "list", - "member": { - "locationName": "AccountWithRestoreAccess", - "type": "structure", - "members": { - "AccountId": {} - } - } - }, - "OwnerAccount": {}, - "TotalBackupSizeInMegaBytes": { - "type": "double" - }, - "ActualIncrementalBackupSizeInMegaBytes": { - "type": "double" - }, - "BackupProgressInMegaBytes": { - "type": "double" - }, - "CurrentBackupRateInMegaBytesPerSecond": { - "type": "double" - }, - "EstimatedSecondsToCompletion": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "SourceRegion": {}, - "Tags": { - "shape": "S7" - }, - "RestorableNodeTypes": { - "type": "list", - "member": { - "locationName": "NodeType" - } - }, - "EnhancedVpcRouting": { - "type": "boolean" - } - }, - "wrapper": true - }, - "Sp": { - "type": "list", - "member": { - "locationName": "ClusterSecurityGroupName" - } - }, - "Sq": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroupId" - } - }, - "St": { - "type": "list", - "member": { - "locationName": "IamRoleArn" - } - }, - "Sv": { - "type": "structure", - "members": { - "ClusterIdentifier": {}, - "NodeType": {}, - "ClusterStatus": {}, - "ModifyStatus": {}, - "MasterUsername": {}, - "DBName": {}, - "Endpoint": { - "type": "structure", - "members": { - "Address": {}, - "Port": { - "type": "integer" - } - } - }, - "ClusterCreateTime": { - "type": "timestamp" - }, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "ClusterSecurityGroups": { - "type": "list", - "member": { - "locationName": "ClusterSecurityGroup", - "type": "structure", - "members": { - "ClusterSecurityGroupName": {}, - "Status": {} - } - } - }, - "VpcSecurityGroups": { - "type": "list", - "member": { - "locationName": "VpcSecurityGroup", - "type": "structure", - "members": { - "VpcSecurityGroupId": {}, - "Status": {} - } - } - }, - "ClusterParameterGroups": { - "type": "list", - "member": { - "locationName": "ClusterParameterGroup", - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterApplyStatus": {}, - "ClusterParameterStatusList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterApplyStatus": {}, - "ParameterApplyErrorDescription": {} - } - } - } - } - } - }, - "ClusterSubnetGroupName": {}, - "VpcId": {}, - "AvailabilityZone": {}, - "PreferredMaintenanceWindow": {}, - "PendingModifiedValues": { - "type": "structure", - "members": { - "MasterUserPassword": {}, - "NodeType": {}, - "NumberOfNodes": { - "type": "integer" - }, - "ClusterType": {}, - "ClusterVersion": {}, - "AutomatedSnapshotRetentionPeriod": { - "type": "integer" - }, - "ClusterIdentifier": {}, - "PubliclyAccessible": { - "type": "boolean" - }, - "EnhancedVpcRouting": { - "type": "boolean" - } - } - }, - "ClusterVersion": {}, - "AllowVersionUpgrade": { - "type": "boolean" - }, - "NumberOfNodes": { - "type": "integer" - }, - "PubliclyAccessible": { - "type": "boolean" - }, - "Encrypted": { - "type": "boolean" - }, - "RestoreStatus": { - "type": "structure", - "members": { - "Status": {}, - "CurrentRestoreRateInMegaBytesPerSecond": { - "type": "double" - }, - "SnapshotSizeInMegaBytes": { - "type": "long" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "ElapsedTimeInSeconds": { - "type": "long" - }, - "EstimatedTimeToCompletionInSeconds": { - "type": "long" - } - } - }, - "HsmStatus": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "HsmConfigurationIdentifier": {}, - "Status": {} - } - }, - "ClusterSnapshotCopyStatus": { - "type": "structure", - "members": { - "DestinationRegion": {}, - "RetentionPeriod": { - "type": "long" - }, - "SnapshotCopyGrantName": {} - } - }, - "ClusterPublicKey": {}, - "ClusterNodes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "NodeRole": {}, - "PrivateIPAddress": {}, - "PublicIPAddress": {} - } - } - }, - "ElasticIpStatus": { - "type": "structure", - "members": { - "ElasticIp": {}, - "Status": {} - } - }, - "ClusterRevisionNumber": {}, - "Tags": { - "shape": "S7" - }, - "KmsKeyId": {}, - "EnhancedVpcRouting": { - "type": "boolean" - }, - "IamRoles": { - "type": "list", - "member": { - "locationName": "ClusterIamRole", - "type": "structure", - "members": { - "IamRoleArn": {}, - "ApplyStatus": {} - } - } - } - }, - "wrapper": true - }, - "S1g": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterGroupFamily": {}, - "Description": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1m": { - "type": "list", - "member": { - "locationName": "SubnetIdentifier" - } - }, - "S1o": { - "type": "structure", - "members": { - "ClusterSubnetGroupName": {}, - "Description": {}, - "VpcId": {}, - "SubnetGroupStatus": {}, - "Subnets": { - "type": "list", - "member": { - "locationName": "Subnet", - "type": "structure", - "members": { - "SubnetIdentifier": {}, - "SubnetAvailabilityZone": { - "shape": "S1r" - }, - "SubnetStatus": {} - } - } - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1r": { - "type": "structure", - "members": { - "Name": {} - }, - "wrapper": true - }, - "S1t": { - "type": "list", - "member": { - "locationName": "SourceId" - } - }, - "S1u": { - "type": "list", - "member": { - "locationName": "EventCategory" - } - }, - "S1w": { - "type": "structure", - "members": { - "CustomerAwsId": {}, - "CustSubscriptionId": {}, - "SnsTopicArn": {}, - "Status": {}, - "SubscriptionCreationTime": { - "type": "timestamp" - }, - "SourceType": {}, - "SourceIdsList": { - "shape": "S1t" - }, - "EventCategoriesList": { - "shape": "S1u" - }, - "Severity": {}, - "Enabled": { - "type": "boolean" - }, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S1z": { - "type": "structure", - "members": { - "HsmClientCertificateIdentifier": {}, - "HsmClientCertificatePublicKey": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S22": { - "type": "structure", - "members": { - "HsmConfigurationIdentifier": {}, - "Description": {}, - "HsmIpAddress": {}, - "HsmPartitionName": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S25": { - "type": "structure", - "members": { - "SnapshotCopyGrantName": {}, - "KmsKeyId": {}, - "Tags": { - "shape": "S7" - } - }, - "wrapper": true - }, - "S2j": { - "type": "list", - "member": { - "locationName": "TagKey" - } - }, - "S2l": { - "type": "list", - "member": { - "locationName": "TagValue" - } - }, - "S2q": { - "type": "list", - "member": { - "locationName": "Parameter", - "type": "structure", - "members": { - "ParameterName": {}, - "ParameterValue": {}, - "Description": {}, - "Source": {}, - "DataType": {}, - "AllowedValues": {}, - "ApplyType": {}, - "IsModifiable": { - "type": "boolean" - }, - "MinimumEngineVersion": {} - } - } - }, - "S3x": { - "type": "structure", - "members": { - "LoggingEnabled": { - "type": "boolean" - }, - "BucketName": {}, - "S3KeyPrefix": {}, - "LastSuccessfulDeliveryTime": { - "type": "timestamp" - }, - "LastFailureTime": { - "type": "timestamp" - }, - "LastFailureMessage": {} - } - }, - "S47": { - "type": "list", - "member": { - "locationName": "RecurringCharge", - "type": "structure", - "members": { - "RecurringChargeAmount": { - "type": "double" - }, - "RecurringChargeFrequency": {} - }, - "wrapper": true - } - }, - "S4c": { - "type": "structure", - "members": { - "ReservedNodeId": {}, - "ReservedNodeOfferingId": {}, - "NodeType": {}, - "StartTime": { - "type": "timestamp" - }, - "Duration": { - "type": "integer" - }, - "FixedPrice": { - "type": "double" - }, - "UsagePrice": { - "type": "double" - }, - "CurrencyCode": {}, - "NodeCount": { - "type": "integer" - }, - "State": {}, - "OfferingType": {}, - "RecurringCharges": { - "shape": "S47" - } - }, - "wrapper": true - }, - "S4q": { - "type": "structure", - "members": { - "TableRestoreRequestId": {}, - "Status": {}, - "Message": {}, - "RequestTime": { - "type": "timestamp" - }, - "ProgressInMegaBytes": { - "type": "long" - }, - "TotalDataInMegaBytes": { - "type": "long" - }, - "ClusterIdentifier": {}, - "SnapshotIdentifier": {}, - "SourceDatabaseName": {}, - "SourceSchemaName": {}, - "SourceTableName": {}, - "TargetDatabaseName": {}, - "TargetSchemaName": {}, - "NewTableName": {} - }, - "wrapper": true - }, - "S57": { - "type": "structure", - "members": { - "ParameterGroupName": {}, - "ParameterGroupStatus": {} - } - } - } -} -},{}],105:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeClusterParameterGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ParameterGroups" - }, - "DescribeClusterParameters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Parameters" - }, - "DescribeClusterSecurityGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterSecurityGroups" - }, - "DescribeClusterSnapshots": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Snapshots" - }, - "DescribeClusterSubnetGroups": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterSubnetGroups" - }, - "DescribeClusterVersions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ClusterVersions" - }, - "DescribeClusters": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Clusters" - }, - "DescribeDefaultClusterParameters": { - "input_token": "Marker", - "output_token": "DefaultClusterParameters.Marker", - "limit_key": "MaxRecords", - "result_key": "DefaultClusterParameters.Parameters" - }, - "DescribeEventSubscriptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "EventSubscriptionsList" - }, - "DescribeEvents": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "Events" - }, - "DescribeHsmClientCertificates": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "HsmClientCertificates" - }, - "DescribeHsmConfigurations": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "HsmConfigurations" - }, - "DescribeOrderableClusterOptions": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "OrderableClusterOptions" - }, - "DescribeReservedNodeOfferings": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedNodeOfferings" - }, - "DescribeReservedNodes": { - "input_token": "Marker", - "output_token": "Marker", - "limit_key": "MaxRecords", - "result_key": "ReservedNodes" - } - } -} - -},{}],106:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "ClusterAvailable": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "deleting", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "retry" - } - ] - }, - "ClusterDeleted": { - "delay": 60, - "operation": "DescribeClusters", - "maxAttempts": 30, - "acceptors": [ - { - "expected": "ClusterNotFound", - "matcher": "error", - "state": "success" - }, - { - "expected": "creating", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - }, - { - "expected": "modifying", - "matcher": "pathAny", - "state": "failure", - "argument": "Clusters[].ClusterStatus" - } - ] - }, - "ClusterRestored": { - "operation": "DescribeClusters", - "maxAttempts": 30, - "delay": 60, - "acceptors": [ - { - "state": "success", - "matcher": "pathAll", - "argument": "Clusters[].RestoreStatus.Status", - "expected": "completed" - }, - { - "state": "failure", - "matcher": "pathAny", - "argument": "Clusters[].ClusterStatus", - "expected": "deleting" - } - ] - }, - "SnapshotAvailable": { - "delay": 15, - "operation": "DescribeClusterSnapshots", - "maxAttempts": 20, - "acceptors": [ - { - "expected": "available", - "matcher": "pathAll", - "state": "success", - "argument": "Snapshots[].Status" - }, - { - "expected": "failed", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - }, - { - "expected": "deleted", - "matcher": "pathAny", - "state": "failure", - "argument": "Snapshots[].Status" - } - ] - } - } -} - -},{}],107:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-04-01", - "endpointPrefix": "route53", - "globalEndpoint": "route53.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "Route 53", - "serviceFullName": "Amazon Route 53", - "signatureVersion": "v4" - }, - "operations": { - "AssociateVPCWithHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/associatevpc" - }, - "input": { - "locationName": "AssociateVPCWithHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "ChangeResourceRecordSets": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/rrset/" - }, - "input": { - "locationName": "ChangeResourceRecordSetsRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "ChangeBatch" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "ChangeBatch": { - "type": "structure", - "required": [ - "Changes" - ], - "members": { - "Comment": {}, - "Changes": { - "shape": "Se" - } - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "ChangeTagsForResource": { - "http": { - "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input": { - "locationName": "ChangeTagsForResourceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - }, - "AddTags": { - "shape": "S14" - }, - "RemoveTagKeys": { - "type": "list", - "member": { - "locationName": "Key" - } - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateHealthCheck": { - "http": { - "requestUri": "/2013-04-01/healthcheck", - "responseCode": 201 - }, - "input": { - "locationName": "CreateHealthCheckRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "CallerReference", - "HealthCheckConfig" - ], - "members": { - "CallerReference": {}, - "HealthCheckConfig": { - "shape": "S1c" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck", - "Location" - ], - "members": { - "HealthCheck": { - "shape": "S1x" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone", - "responseCode": 201 - }, - "input": { - "locationName": "CreateHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Name", - "CallerReference" - ], - "members": { - "Name": {}, - "VPC": { - "shape": "S3" - }, - "CallerReference": {}, - "HostedZoneConfig": { - "shape": "S2d" - }, - "DelegationSetId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone", - "ChangeInfo", - "DelegationSet", - "Location" - ], - "members": { - "HostedZone": { - "shape": "S2g" - }, - "ChangeInfo": { - "shape": "S8" - }, - "DelegationSet": { - "shape": "S2i" - }, - "VPC": { - "shape": "S3" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateReusableDelegationSet": { - "http": { - "requestUri": "/2013-04-01/delegationset", - "responseCode": 201 - }, - "input": { - "locationName": "CreateReusableDelegationSetRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "CallerReference" - ], - "members": { - "CallerReference": {}, - "HostedZoneId": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSet", - "Location" - ], - "members": { - "DelegationSet": { - "shape": "S2i" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicy": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Name", - "Document" - ], - "members": { - "Name": {}, - "Document": {}, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy", - "Location" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicyInstance": { - "http": { - "requestUri": "/2013-04-01/trafficpolicyinstance", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyInstanceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "Name", - "TTL", - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "HostedZoneId": {}, - "Name": {}, - "TTL": { - "type": "long" - }, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance", - "Location" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S2w" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "CreateTrafficPolicyVersion": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy/{Id}", - "responseCode": 201 - }, - "input": { - "locationName": "CreateTrafficPolicyVersionRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "Document" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Document": {}, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy", - "Location" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - }, - "Location": { - "location": "header", - "locationName": "Location" - } - } - } - }, - "DeleteHealthCheck": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteHostedZone": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "DeleteReusableDelegationSet": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/delegationset/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrafficPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Version" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteTrafficPolicyInstance": { - "http": { - "method": "DELETE", - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisassociateVPCFromHostedZone": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}/disassociatevpc" - }, - "input": { - "locationName": "DisassociateVPCFromHostedZoneRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HostedZoneId", - "VPC" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "VPC": { - "shape": "S3" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "GetChange": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/change/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ChangeInfo" - ], - "members": { - "ChangeInfo": { - "shape": "S8" - } - } - } - }, - "GetChangeDetails": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/changedetails/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "required": [ - "ChangeBatchRecord" - ], - "members": { - "ChangeBatchRecord": { - "shape": "S3i" - } - }, - "deprecated": true - }, - "deprecated": true - }, - "GetCheckerIpRanges": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/checkeripranges" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "CheckerIpRanges" - ], - "members": { - "CheckerIpRanges": { - "type": "list", - "member": {} - } - } - } - }, - "GetGeoLocation": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/geolocation" - }, - "input": { - "type": "structure", - "members": { - "ContinentCode": { - "location": "querystring", - "locationName": "continentcode" - }, - "CountryCode": { - "location": "querystring", - "locationName": "countrycode" - }, - "SubdivisionCode": { - "location": "querystring", - "locationName": "subdivisioncode" - } - } - }, - "output": { - "type": "structure", - "required": [ - "GeoLocationDetails" - ], - "members": { - "GeoLocationDetails": { - "shape": "S3q" - } - } - } - }, - "GetHealthCheck": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck" - ], - "members": { - "HealthCheck": { - "shape": "S1x" - } - } - } - }, - "GetHealthCheckCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheckcount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckCount" - ], - "members": { - "HealthCheckCount": { - "type": "long" - } - } - } - }, - "GetHealthCheckLastFailureReason": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckObservations" - ], - "members": { - "HealthCheckObservations": { - "shape": "S41" - } - } - } - }, - "GetHealthCheckStatus": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}/status" - }, - "input": { - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheckObservations" - ], - "members": { - "HealthCheckObservations": { - "shape": "S41" - } - } - } - }, - "GetHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone" - ], - "members": { - "HostedZone": { - "shape": "S2g" - }, - "DelegationSet": { - "shape": "S2i" - }, - "VPCs": { - "type": "list", - "member": { - "shape": "S3", - "locationName": "VPC" - } - } - } - } - }, - "GetHostedZoneCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzonecount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "HostedZoneCount" - ], - "members": { - "HostedZoneCount": { - "type": "long" - } - } - } - }, - "GetReusableDelegationSet": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/delegationset/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSet" - ], - "members": { - "DelegationSet": { - "shape": "S2i" - } - } - } - }, - "GetTrafficPolicy": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "type": "structure", - "required": [ - "Id", - "Version" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - } - } - } - }, - "GetTrafficPolicyInstance": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S2w" - } - } - } - }, - "GetTrafficPolicyInstanceCount": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstancecount" - }, - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstanceCount" - ], - "members": { - "TrafficPolicyInstanceCount": { - "type": "integer" - } - } - } - }, - "ListChangeBatchesByHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/changes" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "StartDate", - "EndDate" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "StartDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "startDate" - }, - "EndDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "endDate" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxItems" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "required": [ - "MaxItems", - "Marker", - "ChangeBatchRecords" - ], - "members": { - "MaxItems": {}, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "ChangeBatchRecords": { - "shape": "S4s" - }, - "NextMarker": {} - }, - "deprecated": true - }, - "deprecated": true - }, - "ListChangeBatchesByRRSet": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/rrsChanges" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "Name", - "Type", - "StartDate", - "EndDate" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "Name": { - "location": "querystring", - "locationName": "rrSet_name" - }, - "Type": { - "location": "querystring", - "locationName": "type" - }, - "SetIdentifier": { - "location": "querystring", - "locationName": "identifier" - }, - "StartDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "startDate" - }, - "EndDate": { - "shape": "S4n", - "location": "querystring", - "locationName": "endDate" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxItems" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - } - }, - "deprecated": true - }, - "output": { - "type": "structure", - "required": [ - "MaxItems", - "Marker", - "ChangeBatchRecords" - ], - "members": { - "MaxItems": {}, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "ChangeBatchRecords": { - "shape": "S4s" - }, - "NextMarker": {} - }, - "deprecated": true - }, - "deprecated": true - }, - "ListGeoLocations": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/geolocations" - }, - "input": { - "type": "structure", - "members": { - "StartContinentCode": { - "location": "querystring", - "locationName": "startcontinentcode" - }, - "StartCountryCode": { - "location": "querystring", - "locationName": "startcountrycode" - }, - "StartSubdivisionCode": { - "location": "querystring", - "locationName": "startsubdivisioncode" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "GeoLocationDetailsList", - "IsTruncated", - "MaxItems" - ], - "members": { - "GeoLocationDetailsList": { - "type": "list", - "member": { - "shape": "S3q", - "locationName": "GeoLocationDetails" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "NextContinentCode": {}, - "NextCountryCode": {}, - "NextSubdivisionCode": {}, - "MaxItems": {} - } - } - }, - "ListHealthChecks": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/healthcheck" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HealthChecks", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "HealthChecks": { - "type": "list", - "member": { - "shape": "S1x", - "locationName": "HealthCheck" - } - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListHostedZones": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - }, - "DelegationSetId": { - "location": "querystring", - "locationName": "delegationsetid" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZones", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "HostedZones": { - "shape": "S53" - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListHostedZonesByName": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzonesbyname" - }, - "input": { - "type": "structure", - "members": { - "DNSName": { - "location": "querystring", - "locationName": "dnsname" - }, - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZones", - "IsTruncated", - "MaxItems" - ], - "members": { - "HostedZones": { - "shape": "S53" - }, - "DNSName": {}, - "HostedZoneId": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextDNSName": {}, - "NextHostedZoneId": {}, - "MaxItems": {} - } - } - }, - "ListResourceRecordSets": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/hostedzone/{Id}/rrset" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "uri", - "locationName": "Id" - }, - "StartRecordName": { - "location": "querystring", - "locationName": "name" - }, - "StartRecordType": { - "location": "querystring", - "locationName": "type" - }, - "StartRecordIdentifier": { - "location": "querystring", - "locationName": "identifier" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceRecordSets", - "IsTruncated", - "MaxItems" - ], - "members": { - "ResourceRecordSets": { - "type": "list", - "member": { - "shape": "Sh", - "locationName": "ResourceRecordSet" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "NextRecordName": {}, - "NextRecordType": {}, - "NextRecordIdentifier": {}, - "MaxItems": {} - } - } - }, - "ListReusableDelegationSets": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/delegationset" - }, - "input": { - "type": "structure", - "members": { - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "DelegationSets", - "Marker", - "IsTruncated", - "MaxItems" - ], - "members": { - "DelegationSets": { - "type": "list", - "member": { - "shape": "S2i", - "locationName": "DelegationSet" - } - }, - "Marker": {}, - "IsTruncated": { - "type": "boolean" - }, - "NextMarker": {}, - "MaxItems": {} - } - } - }, - "ListTagsForResource": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/tags/{ResourceType}/{ResourceId}" - }, - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceId": { - "location": "uri", - "locationName": "ResourceId" - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceTagSet" - ], - "members": { - "ResourceTagSet": { - "shape": "S5e" - } - } - } - }, - "ListTagsForResources": { - "http": { - "requestUri": "/2013-04-01/tags/{ResourceType}" - }, - "input": { - "locationName": "ListTagsForResourcesRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "ResourceType", - "ResourceIds" - ], - "members": { - "ResourceType": { - "location": "uri", - "locationName": "ResourceType" - }, - "ResourceIds": { - "type": "list", - "member": { - "locationName": "ResourceId" - } - } - } - }, - "output": { - "type": "structure", - "required": [ - "ResourceTagSets" - ], - "members": { - "ResourceTagSets": { - "type": "list", - "member": { - "shape": "S5e", - "locationName": "ResourceTagSet" - } - } - } - } - }, - "ListTrafficPolicies": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicies" - }, - "input": { - "type": "structure", - "members": { - "TrafficPolicyIdMarker": { - "location": "querystring", - "locationName": "trafficpolicyid" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicySummaries", - "IsTruncated", - "TrafficPolicyIdMarker", - "MaxItems" - ], - "members": { - "TrafficPolicySummaries": { - "type": "list", - "member": { - "locationName": "TrafficPolicySummary", - "type": "structure", - "required": [ - "Id", - "Name", - "Type", - "LatestVersion", - "TrafficPolicyCount" - ], - "members": { - "Id": {}, - "Name": {}, - "Type": {}, - "LatestVersion": { - "type": "integer" - }, - "TrafficPolicyCount": { - "type": "integer" - } - } - } - }, - "IsTruncated": { - "type": "boolean" - }, - "TrafficPolicyIdMarker": {}, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstances": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances" - }, - "input": { - "type": "structure", - "members": { - "HostedZoneIdMarker": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5p" - }, - "HostedZoneIdMarker": {}, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstancesByHostedZone": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances/hostedzone" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId" - ], - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "id" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5p" - }, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyInstancesByPolicy": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicyinstances/trafficpolicy" - }, - "input": { - "type": "structure", - "required": [ - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "TrafficPolicyId": { - "location": "querystring", - "locationName": "id" - }, - "TrafficPolicyVersion": { - "location": "querystring", - "locationName": "version", - "type": "integer" - }, - "HostedZoneIdMarker": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "TrafficPolicyInstanceNameMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancename" - }, - "TrafficPolicyInstanceTypeMarker": { - "location": "querystring", - "locationName": "trafficpolicyinstancetype" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstances", - "IsTruncated", - "MaxItems" - ], - "members": { - "TrafficPolicyInstances": { - "shape": "S5p" - }, - "HostedZoneIdMarker": {}, - "TrafficPolicyInstanceNameMarker": {}, - "TrafficPolicyInstanceTypeMarker": {}, - "IsTruncated": { - "type": "boolean" - }, - "MaxItems": {} - } - } - }, - "ListTrafficPolicyVersions": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/trafficpolicies/{Id}/versions" - }, - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "TrafficPolicyVersionMarker": { - "location": "querystring", - "locationName": "trafficpolicyversion" - }, - "MaxItems": { - "location": "querystring", - "locationName": "maxitems" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicies", - "IsTruncated", - "TrafficPolicyVersionMarker", - "MaxItems" - ], - "members": { - "TrafficPolicies": { - "type": "list", - "member": { - "shape": "S2r", - "locationName": "TrafficPolicy" - } - }, - "IsTruncated": { - "type": "boolean" - }, - "TrafficPolicyVersionMarker": {}, - "MaxItems": {} - } - } - }, - "TestDNSAnswer": { - "http": { - "method": "GET", - "requestUri": "/2013-04-01/testdnsanswer" - }, - "input": { - "type": "structure", - "required": [ - "HostedZoneId", - "RecordName", - "RecordType" - ], - "members": { - "HostedZoneId": { - "location": "querystring", - "locationName": "hostedzoneid" - }, - "RecordName": { - "location": "querystring", - "locationName": "recordname" - }, - "RecordType": { - "location": "querystring", - "locationName": "recordtype" - }, - "ResolverIP": { - "location": "querystring", - "locationName": "resolverip" - }, - "EDNS0ClientSubnetIP": { - "location": "querystring", - "locationName": "edns0clientsubnetip" - }, - "EDNS0ClientSubnetMask": { - "location": "querystring", - "locationName": "edns0clientsubnetmask" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Nameserver", - "RecordName", - "RecordType", - "RecordData", - "ResponseCode", - "Protocol" - ], - "members": { - "Nameserver": {}, - "RecordName": {}, - "RecordType": {}, - "RecordData": { - "type": "list", - "member": { - "locationName": "RecordDataEntry" - } - }, - "ResponseCode": {}, - "Protocol": {} - } - } - }, - "UpdateHealthCheck": { - "http": { - "requestUri": "/2013-04-01/healthcheck/{HealthCheckId}" - }, - "input": { - "locationName": "UpdateHealthCheckRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "HealthCheckId" - ], - "members": { - "HealthCheckId": { - "location": "uri", - "locationName": "HealthCheckId" - }, - "HealthCheckVersion": { - "type": "long" - }, - "IPAddress": {}, - "Port": { - "type": "integer" - }, - "ResourcePath": {}, - "FullyQualifiedDomainName": {}, - "SearchString": {}, - "FailureThreshold": { - "type": "integer" - }, - "Inverted": { - "type": "boolean" - }, - "HealthThreshold": { - "type": "integer" - }, - "ChildHealthChecks": { - "shape": "S1o" - }, - "EnableSNI": { - "type": "boolean" - }, - "Regions": { - "shape": "S1q" - }, - "AlarmIdentifier": { - "shape": "S1s" - }, - "InsufficientDataHealthStatus": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HealthCheck" - ], - "members": { - "HealthCheck": { - "shape": "S1x" - } - } - } - }, - "UpdateHostedZoneComment": { - "http": { - "requestUri": "/2013-04-01/hostedzone/{Id}" - }, - "input": { - "locationName": "UpdateHostedZoneCommentRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "HostedZone" - ], - "members": { - "HostedZone": { - "shape": "S2g" - } - } - } - }, - "UpdateTrafficPolicyComment": { - "http": { - "requestUri": "/2013-04-01/trafficpolicy/{Id}/{Version}" - }, - "input": { - "locationName": "UpdateTrafficPolicyCommentRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "Version", - "Comment" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "Version": { - "location": "uri", - "locationName": "Version", - "type": "integer" - }, - "Comment": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicy" - ], - "members": { - "TrafficPolicy": { - "shape": "S2r" - } - } - } - }, - "UpdateTrafficPolicyInstance": { - "http": { - "requestUri": "/2013-04-01/trafficpolicyinstance/{Id}" - }, - "input": { - "locationName": "UpdateTrafficPolicyInstanceRequest", - "xmlNamespace": { - "uri": "https://route53.amazonaws.com/doc/2013-04-01/" - }, - "type": "structure", - "required": [ - "Id", - "TTL", - "TrafficPolicyId", - "TrafficPolicyVersion" - ], - "members": { - "Id": { - "location": "uri", - "locationName": "Id" - }, - "TTL": { - "type": "long" - }, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TrafficPolicyInstance" - ], - "members": { - "TrafficPolicyInstance": { - "shape": "S2w" - } - } - } - } - }, - "shapes": { - "S3": { - "type": "structure", - "members": { - "VPCRegion": {}, - "VPCId": {} - } - }, - "S8": { - "type": "structure", - "required": [ - "Id", - "Status", - "SubmittedAt" - ], - "members": { - "Id": {}, - "Status": {}, - "SubmittedAt": { - "type": "timestamp" - }, - "Comment": {} - } - }, - "Se": { - "type": "list", - "member": { - "locationName": "Change", - "type": "structure", - "required": [ - "Action", - "ResourceRecordSet" - ], - "members": { - "Action": {}, - "ResourceRecordSet": { - "shape": "Sh" - } - } - } - }, - "Sh": { - "type": "structure", - "required": [ - "Name", - "Type" - ], - "members": { - "Name": {}, - "Type": {}, - "SetIdentifier": {}, - "Weight": { - "type": "long" - }, - "Region": {}, - "GeoLocation": { - "type": "structure", - "members": { - "ContinentCode": {}, - "CountryCode": {}, - "SubdivisionCode": {} - } - }, - "Failover": {}, - "TTL": { - "type": "long" - }, - "ResourceRecords": { - "type": "list", - "member": { - "locationName": "ResourceRecord", - "type": "structure", - "required": [ - "Value" - ], - "members": { - "Value": {} - } - } - }, - "AliasTarget": { - "type": "structure", - "required": [ - "HostedZoneId", - "DNSName", - "EvaluateTargetHealth" - ], - "members": { - "HostedZoneId": {}, - "DNSName": {}, - "EvaluateTargetHealth": { - "type": "boolean" - } - } - }, - "HealthCheckId": {}, - "TrafficPolicyInstanceId": {} - } - }, - "S14": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1c": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "IPAddress": {}, - "Port": { - "type": "integer" - }, - "Type": {}, - "ResourcePath": {}, - "FullyQualifiedDomainName": {}, - "SearchString": {}, - "RequestInterval": { - "type": "integer" - }, - "FailureThreshold": { - "type": "integer" - }, - "MeasureLatency": { - "type": "boolean" - }, - "Inverted": { - "type": "boolean" - }, - "HealthThreshold": { - "type": "integer" - }, - "ChildHealthChecks": { - "shape": "S1o" - }, - "EnableSNI": { - "type": "boolean" - }, - "Regions": { - "shape": "S1q" - }, - "AlarmIdentifier": { - "shape": "S1s" - }, - "InsufficientDataHealthStatus": {} - } - }, - "S1o": { - "type": "list", - "member": { - "locationName": "ChildHealthCheck" - } - }, - "S1q": { - "type": "list", - "member": { - "locationName": "Region" - } - }, - "S1s": { - "type": "structure", - "required": [ - "Region", - "Name" - ], - "members": { - "Region": {}, - "Name": {} - } - }, - "S1x": { - "type": "structure", - "required": [ - "Id", - "CallerReference", - "HealthCheckConfig", - "HealthCheckVersion" - ], - "members": { - "Id": {}, - "CallerReference": {}, - "HealthCheckConfig": { - "shape": "S1c" - }, - "HealthCheckVersion": { - "type": "long" - }, - "CloudWatchAlarmConfiguration": { - "type": "structure", - "required": [ - "EvaluationPeriods", - "Threshold", - "ComparisonOperator", - "Period", - "MetricName", - "Namespace", - "Statistic" - ], - "members": { - "EvaluationPeriods": { - "type": "integer" - }, - "Threshold": { - "type": "double" - }, - "ComparisonOperator": {}, - "Period": { - "type": "integer" - }, - "MetricName": {}, - "Namespace": {}, - "Statistic": {}, - "Dimensions": { - "type": "list", - "member": { - "locationName": "Dimension", - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - } - } - } - } - }, - "S2d": { - "type": "structure", - "members": { - "Comment": {}, - "PrivateZone": { - "type": "boolean" - } - } - }, - "S2g": { - "type": "structure", - "required": [ - "Id", - "Name", - "CallerReference" - ], - "members": { - "Id": {}, - "Name": {}, - "CallerReference": {}, - "Config": { - "shape": "S2d" - }, - "ResourceRecordSetCount": { - "type": "long" - } - } - }, - "S2i": { - "type": "structure", - "required": [ - "NameServers" - ], - "members": { - "Id": {}, - "CallerReference": {}, - "NameServers": { - "type": "list", - "member": { - "locationName": "NameServer" - } - } - } - }, - "S2r": { - "type": "structure", - "required": [ - "Id", - "Version", - "Name", - "Type", - "Document" - ], - "members": { - "Id": {}, - "Version": { - "type": "integer" - }, - "Name": {}, - "Type": {}, - "Document": {}, - "Comment": {} - } - }, - "S2w": { - "type": "structure", - "required": [ - "Id", - "HostedZoneId", - "Name", - "TTL", - "State", - "Message", - "TrafficPolicyId", - "TrafficPolicyVersion", - "TrafficPolicyType" - ], - "members": { - "Id": {}, - "HostedZoneId": {}, - "Name": {}, - "TTL": { - "type": "long" - }, - "State": {}, - "Message": {}, - "TrafficPolicyId": {}, - "TrafficPolicyVersion": { - "type": "integer" - }, - "TrafficPolicyType": {} - } - }, - "S3i": { - "type": "structure", - "required": [ - "Id", - "Status" - ], - "members": { - "Id": {}, - "SubmittedAt": { - "type": "timestamp" - }, - "Status": {}, - "Comment": {}, - "Submitter": {}, - "Changes": { - "shape": "Se" - } - }, - "deprecated": true - }, - "S3q": { - "type": "structure", - "members": { - "ContinentCode": {}, - "ContinentName": {}, - "CountryCode": {}, - "CountryName": {}, - "SubdivisionCode": {}, - "SubdivisionName": {} - } - }, - "S41": { - "type": "list", - "member": { - "locationName": "HealthCheckObservation", - "type": "structure", - "members": { - "Region": {}, - "IPAddress": {}, - "StatusReport": { - "type": "structure", - "members": { - "Status": {}, - "CheckedTime": { - "type": "timestamp" - } - } - } - } - } - }, - "S4n": { - "type": "string", - "deprecated": true - }, - "S4s": { - "type": "list", - "member": { - "shape": "S3i", - "locationName": "ChangeBatchRecord" - }, - "deprecated": true - }, - "S53": { - "type": "list", - "member": { - "shape": "S2g", - "locationName": "HostedZone" - } - }, - "S5e": { - "type": "structure", - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Tags": { - "shape": "S14" - } - } - }, - "S5p": { - "type": "list", - "member": { - "shape": "S2w", - "locationName": "TrafficPolicyInstance" - } - } - } -} -},{}],108:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListHealthChecks": { - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "HealthChecks" - }, - "ListHostedZones": { - "input_token": "Marker", - "output_token": "NextMarker", - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "HostedZones" - }, - "ListResourceRecordSets": { - "more_results": "IsTruncated", - "limit_key": "MaxItems", - "result_key": "ResourceRecordSets", - "input_token": [ - "StartRecordName", - "StartRecordType", - "StartRecordIdentifier" - ], - "output_token": [ - "NextRecordName", - "NextRecordType", - "NextRecordIdentifier" - ] - } - } -} - -},{}],109:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "ResourceRecordSetsChanged": { - "delay": 30, - "maxAttempts": 60, - "operation": "GetChange", - "acceptors": [ - { - "matcher": "path", - "expected": "INSYNC", - "argument": "ChangeInfo.Status", - "state": "success" - } - ] - } - } -} - -},{}],110:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-05-15", - "endpointPrefix": "route53domains", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "Amazon Route 53 Domains", - "signatureVersion": "v4", - "targetPrefix": "Route53Domains_v20140515" - }, - "operations": { - "CheckDomainAvailability": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {} - } - }, - "output": { - "type": "structure", - "required": [ - "Availability" - ], - "members": { - "Availability": {} - } - } - }, - "DeleteTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "TagsToDelete" - ], - "members": { - "DomainName": {}, - "TagsToDelete": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableDomainAutoRenew": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DisableDomainTransferLock": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "EnableDomainAutoRenew": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "EnableDomainTransferLock": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "GetContactReachabilityStatus": { - "input": { - "type": "structure", - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domainName": {}, - "status": {} - } - } - }, - "GetDomainDetail": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "DomainName", - "Nameservers", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "Nameservers": { - "shape": "So" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - }, - "AdminPrivacy": { - "type": "boolean" - }, - "RegistrantPrivacy": { - "type": "boolean" - }, - "TechPrivacy": { - "type": "boolean" - }, - "RegistrarName": {}, - "WhoIsServer": {}, - "RegistrarUrl": {}, - "AbuseContactEmail": {}, - "AbuseContactPhone": {}, - "RegistryDomainId": {}, - "CreationDate": { - "type": "timestamp" - }, - "UpdatedDate": { - "type": "timestamp" - }, - "ExpirationDate": { - "type": "timestamp" - }, - "Reseller": {}, - "DnsSec": {}, - "StatusList": { - "type": "list", - "member": {} - } - } - } - }, - "GetDomainSuggestions": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "SuggestionCount", - "OnlyAvailable" - ], - "members": { - "DomainName": {}, - "SuggestionCount": { - "type": "integer" - }, - "OnlyAvailable": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "SuggestionsList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {}, - "Availability": {} - } - } - } - } - } - }, - "GetOperationDetail": { - "input": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - }, - "output": { - "type": "structure", - "members": { - "OperationId": {}, - "Status": {}, - "Message": {}, - "DomainName": {}, - "Type": {}, - "SubmittedDate": { - "type": "timestamp" - } - } - } - }, - "ListDomains": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Domains" - ], - "members": { - "Domains": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AutoRenew": { - "type": "boolean" - }, - "TransferLock": { - "type": "boolean" - }, - "Expiry": { - "type": "timestamp" - } - } - } - }, - "NextPageMarker": {} - } - } - }, - "ListOperations": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "Operations" - ], - "members": { - "Operations": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "OperationId", - "Status", - "Type", - "SubmittedDate" - ], - "members": { - "OperationId": {}, - "Status": {}, - "Type": {}, - "SubmittedDate": { - "type": "timestamp" - } - } - } - }, - "NextPageMarker": {} - } - } - }, - "ListTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "TagList" - ], - "members": { - "TagList": { - "shape": "S24" - } - } - } - }, - "RegisterDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {}, - "DurationInYears": { - "type": "integer" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - }, - "PrivacyProtectAdminContact": { - "type": "boolean" - }, - "PrivacyProtectRegistrantContact": { - "type": "boolean" - }, - "PrivacyProtectTechContact": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "RenewDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "CurrentExpiryYear" - ], - "members": { - "DomainName": {}, - "DurationInYears": { - "type": "integer" - }, - "CurrentExpiryYear": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "ResendContactReachabilityEmail": { - "input": { - "type": "structure", - "members": { - "domainName": {} - } - }, - "output": { - "type": "structure", - "members": { - "domainName": {}, - "emailAddress": {}, - "isAlreadyVerified": { - "type": "boolean" - } - } - } - }, - "RetrieveDomainAuthCode": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {} - } - }, - "output": { - "type": "structure", - "required": [ - "AuthCode" - ], - "members": { - "AuthCode": { - "shape": "S2h" - } - } - } - }, - "TransferDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "DurationInYears", - "AdminContact", - "RegistrantContact", - "TechContact" - ], - "members": { - "DomainName": {}, - "IdnLangCode": {}, - "DurationInYears": { - "type": "integer" - }, - "Nameservers": { - "shape": "So" - }, - "AuthCode": { - "shape": "S2h" - }, - "AutoRenew": { - "type": "boolean" - }, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - }, - "PrivacyProtectAdminContact": { - "type": "boolean" - }, - "PrivacyProtectRegistrantContact": { - "type": "boolean" - }, - "PrivacyProtectTechContact": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainContact": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AdminContact": { - "shape": "Su" - }, - "RegistrantContact": { - "shape": "Su" - }, - "TechContact": { - "shape": "Su" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainContactPrivacy": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "AdminPrivacy": { - "type": "boolean" - }, - "RegistrantPrivacy": { - "type": "boolean" - }, - "TechPrivacy": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateDomainNameservers": { - "input": { - "type": "structure", - "required": [ - "DomainName", - "Nameservers" - ], - "members": { - "DomainName": {}, - "FIAuthKey": {}, - "Nameservers": { - "shape": "So" - } - } - }, - "output": { - "type": "structure", - "required": [ - "OperationId" - ], - "members": { - "OperationId": {} - } - } - }, - "UpdateTagsForDomain": { - "input": { - "type": "structure", - "required": [ - "DomainName" - ], - "members": { - "DomainName": {}, - "TagsToUpdate": { - "shape": "S24" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "ViewBilling": { - "input": { - "type": "structure", - "members": { - "Start": { - "type": "timestamp" - }, - "End": { - "type": "timestamp" - }, - "Marker": {}, - "MaxItems": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextPageMarker": {}, - "BillingRecords": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DomainName": {}, - "Operation": {}, - "InvoiceId": {}, - "BillDate": { - "type": "timestamp" - }, - "Price": { - "type": "double" - } - } - } - } - } - } - } - }, - "shapes": { - "So": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "GlueIps": { - "type": "list", - "member": {} - } - } - } - }, - "Su": { - "type": "structure", - "members": { - "FirstName": {}, - "LastName": {}, - "ContactType": {}, - "OrganizationName": {}, - "AddressLine1": {}, - "AddressLine2": {}, - "City": {}, - "State": {}, - "CountryCode": {}, - "ZipCode": {}, - "PhoneNumber": {}, - "Email": {}, - "Fax": {}, - "ExtraParams": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Name", - "Value" - ], - "members": { - "Name": {}, - "Value": {} - } - } - } - }, - "sensitive": true - }, - "S24": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S2h": { - "type": "string", - "sensitive": true - } - } -} -},{}],111:[function(require,module,exports){ -module.exports={ - "version": "1.0", - "pagination": { - "ListDomains": { - "limit_key": "MaxItems", - "input_token": "Marker", - "output_token": "NextPageMarker", - "result_key": "Domains" - }, - "ListOperations": { - "limit_key": "MaxItems", - "input_token": "Marker", - "output_token": "NextPageMarker", - "result_key": "Operations" - } - } -} - -},{}],112:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2006-03-01", - "checksumFormat": "md5", - "endpointPrefix": "s3", - "globalEndpoint": "s3.amazonaws.com", - "protocol": "rest-xml", - "serviceAbbreviation": "Amazon S3", - "serviceFullName": "Amazon Simple Storage Service", - "signatureVersion": "s3", - "timestampFormat": "rfc822" - }, - "operations": { - "AbortMultipartUpload": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "CompleteMultipartUpload": { - "http": { - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MultipartUpload": { - "locationName": "CompleteMultipartUpload", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "Parts": { - "locationName": "Part", - "type": "list", - "member": { - "type": "structure", - "members": { - "ETag": {}, - "PartNumber": { - "type": "integer" - } - } - }, - "flattened": true - } - } - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "MultipartUpload" - }, - "output": { - "type": "structure", - "members": { - "Location": {}, - "Bucket": {}, - "Key": {}, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "ETag": {}, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "CopyObject": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CopySource", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "CopySource": { - "location": "header", - "locationName": "x-amz-copy-source" - }, - "CopySourceIfMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-match" - }, - "CopySourceIfModifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-modified-since", - "type": "timestamp" - }, - "CopySourceIfNoneMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-none-match" - }, - "CopySourceIfUnmodifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-unmodified-since", - "type": "timestamp" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "MetadataDirective": { - "location": "header", - "locationName": "x-amz-metadata-directive" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "CopySourceSSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" - }, - "CopySourceSSECustomerKey": { - "shape": "S1b", - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key" - }, - "CopySourceSSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CopyObjectResult": { - "type": "structure", - "members": { - "ETag": {}, - "LastModified": { - "type": "timestamp" - } - } - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "CopySourceVersionId": { - "location": "header", - "locationName": "x-amz-copy-source-version-id" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "CopyObjectResult" - }, - "alias": "PutObjectCopy" - }, - "CreateBucket": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CreateBucketConfiguration": { - "locationName": "CreateBucketConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "LocationConstraint": {} - } - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - } - }, - "payload": "CreateBucketConfiguration" - }, - "output": { - "type": "structure", - "members": { - "Location": { - "location": "header", - "locationName": "Location" - } - } - }, - "alias": "PutBucket" - }, - "CreateMultipartUpload": { - "http": { - "requestUri": "/{Bucket}/{Key+}?uploads" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AbortDate": { - "location": "header", - "locationName": "x-amz-abort-date", - "type": "timestamp" - }, - "AbortRuleId": { - "location": "header", - "locationName": "x-amz-abort-rule-id" - }, - "Bucket": { - "locationName": "Bucket" - }, - "Key": {}, - "UploadId": {}, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - }, - "alias": "InitiateMultipartUpload" - }, - "DeleteBucket": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketCors": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketLifecycle": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketPolicy": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketReplication": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketTagging": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteBucketWebsite": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "DeleteObject": { - "http": { - "method": "DELETE", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "DeleteObjects": { - "http": { - "requestUri": "/{Bucket}?delete" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Delete" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delete": { - "locationName": "Delete", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Objects" - ], - "members": { - "Objects": { - "locationName": "Object", - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {}, - "VersionId": {} - } - }, - "flattened": true - }, - "Quiet": { - "type": "boolean" - } - } - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Delete" - }, - "output": { - "type": "structure", - "members": { - "Deleted": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "VersionId": {}, - "DeleteMarker": { - "type": "boolean" - }, - "DeleteMarkerVersionId": {} - } - }, - "flattened": true - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "Errors": { - "locationName": "Error", - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "VersionId": {}, - "Code": {}, - "Message": {} - } - }, - "flattened": true - } - } - }, - "alias": "DeleteMultipleObjects" - }, - "GetBucketAccelerateConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?accelerate" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": {} - } - } - }, - "GetBucketAcl": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2k" - }, - "Grants": { - "shape": "S2n", - "locationName": "AccessControlList" - } - } - } - }, - "GetBucketCors": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "CORSRules": { - "shape": "S2w", - "locationName": "CORSRule" - } - } - } - }, - "GetBucketLifecycle": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "shape": "S39", - "locationName": "Rule" - } - } - }, - "deprecated": true - }, - "GetBucketLifecycleConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Rules": { - "shape": "S3p", - "locationName": "Rule" - } - } - } - }, - "GetBucketLocation": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?location" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "LocationConstraint": {} - } - } - }, - "GetBucketLogging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?logging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "LoggingEnabled": { - "shape": "S3x" - } - } - } - }, - "GetBucketNotification": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "shape": "S43" - }, - "output": { - "shape": "S44" - }, - "deprecated": true - }, - "GetBucketNotificationConfiguration": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "shape": "S43" - }, - "output": { - "shape": "S4f" - } - }, - "GetBucketPolicy": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Policy": {} - }, - "payload": "Policy" - } - }, - "GetBucketReplication": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "ReplicationConfiguration": { - "shape": "S4y" - } - }, - "payload": "ReplicationConfiguration" - } - }, - "GetBucketRequestPayment": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?requestPayment" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Payer": {} - } - } - }, - "GetBucketTagging": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "TagSet": { - "shape": "S59" - } - } - } - }, - "GetBucketVersioning": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?versioning" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "Status": {}, - "MFADelete": { - "locationName": "MfaDelete" - } - } - } - }, - "GetBucketWebsite": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "output": { - "type": "structure", - "members": { - "RedirectAllRequestsTo": { - "shape": "S5i" - }, - "IndexDocument": { - "shape": "S5l" - }, - "ErrorDocument": { - "shape": "S5n" - }, - "RoutingRules": { - "shape": "S5o" - } - } - } - }, - "GetObject": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - }, - "IfModifiedSince": { - "location": "header", - "locationName": "If-Modified-Since", - "type": "timestamp" - }, - "IfNoneMatch": { - "location": "header", - "locationName": "If-None-Match" - }, - "IfUnmodifiedSince": { - "location": "header", - "locationName": "If-Unmodified-Since", - "type": "timestamp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Range": { - "location": "header", - "locationName": "Range" - }, - "ResponseCacheControl": { - "location": "querystring", - "locationName": "response-cache-control" - }, - "ResponseContentDisposition": { - "location": "querystring", - "locationName": "response-content-disposition" - }, - "ResponseContentEncoding": { - "location": "querystring", - "locationName": "response-content-encoding" - }, - "ResponseContentLanguage": { - "location": "querystring", - "locationName": "response-content-language" - }, - "ResponseContentType": { - "location": "querystring", - "locationName": "response-content-type" - }, - "ResponseExpires": { - "location": "querystring", - "locationName": "response-expires", - "type": "timestamp" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "AcceptRanges": { - "location": "header", - "locationName": "accept-ranges" - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "Restore": { - "location": "header", - "locationName": "x-amz-restore" - }, - "LastModified": { - "location": "header", - "locationName": "Last-Modified", - "type": "timestamp" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "MissingMeta": { - "location": "header", - "locationName": "x-amz-missing-meta", - "type": "integer" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentRange": { - "location": "header", - "locationName": "Content-Range" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "ReplicationStatus": { - "location": "header", - "locationName": "x-amz-replication-status" - }, - "PartsCount": { - "location": "header", - "locationName": "x-amz-mp-parts-count", - "type": "integer" - } - }, - "payload": "Body" - } - }, - "GetObjectAcl": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2k" - }, - "Grants": { - "shape": "S2n", - "locationName": "AccessControlList" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "GetObjectTorrent": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}?torrent" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "Body" - } - }, - "HeadBucket": { - "http": { - "method": "HEAD", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - } - }, - "HeadObject": { - "http": { - "method": "HEAD", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "IfMatch": { - "location": "header", - "locationName": "If-Match" - }, - "IfModifiedSince": { - "location": "header", - "locationName": "If-Modified-Since", - "type": "timestamp" - }, - "IfNoneMatch": { - "location": "header", - "locationName": "If-None-Match" - }, - "IfUnmodifiedSince": { - "location": "header", - "locationName": "If-Unmodified-Since", - "type": "timestamp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Range": { - "location": "header", - "locationName": "Range" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "DeleteMarker": { - "location": "header", - "locationName": "x-amz-delete-marker", - "type": "boolean" - }, - "AcceptRanges": { - "location": "header", - "locationName": "accept-ranges" - }, - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "Restore": { - "location": "header", - "locationName": "x-amz-restore" - }, - "LastModified": { - "location": "header", - "locationName": "Last-Modified", - "type": "timestamp" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "MissingMeta": { - "location": "header", - "locationName": "x-amz-missing-meta", - "type": "integer" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - }, - "ReplicationStatus": { - "location": "header", - "locationName": "x-amz-replication-status" - }, - "PartsCount": { - "location": "header", - "locationName": "x-amz-mp-parts-count", - "type": "integer" - } - } - } - }, - "ListBuckets": { - "http": { - "method": "GET" - }, - "output": { - "type": "structure", - "members": { - "Buckets": { - "type": "list", - "member": { - "locationName": "Bucket", - "type": "structure", - "members": { - "Name": {}, - "CreationDate": { - "type": "timestamp" - } - } - } - }, - "Owner": { - "shape": "S2k" - } - } - }, - "alias": "GetService" - }, - "ListMultipartUploads": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?uploads" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "KeyMarker": { - "location": "querystring", - "locationName": "key-marker" - }, - "MaxUploads": { - "location": "querystring", - "locationName": "max-uploads", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "UploadIdMarker": { - "location": "querystring", - "locationName": "upload-id-marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "Bucket": {}, - "KeyMarker": {}, - "UploadIdMarker": {}, - "NextKeyMarker": {}, - "Prefix": {}, - "Delimiter": {}, - "NextUploadIdMarker": {}, - "MaxUploads": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Uploads": { - "locationName": "Upload", - "type": "list", - "member": { - "type": "structure", - "members": { - "UploadId": {}, - "Key": {}, - "Initiated": { - "type": "timestamp" - }, - "StorageClass": {}, - "Owner": { - "shape": "S2k" - }, - "Initiator": { - "shape": "S76" - } - } - }, - "flattened": true - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {} - } - } - }, - "ListObjectVersions": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?versions" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "KeyMarker": { - "location": "querystring", - "locationName": "key-marker" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "VersionIdMarker": { - "location": "querystring", - "locationName": "version-id-marker" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "KeyMarker": {}, - "VersionIdMarker": {}, - "NextKeyMarker": {}, - "NextVersionIdMarker": {}, - "Versions": { - "locationName": "Version", - "type": "list", - "member": { - "type": "structure", - "members": { - "ETag": {}, - "Size": { - "type": "integer" - }, - "StorageClass": {}, - "Key": {}, - "VersionId": {}, - "IsLatest": { - "type": "boolean" - }, - "LastModified": { - "type": "timestamp" - }, - "Owner": { - "shape": "S2k" - } - } - }, - "flattened": true - }, - "DeleteMarkers": { - "locationName": "DeleteMarker", - "type": "list", - "member": { - "type": "structure", - "members": { - "Owner": { - "shape": "S2k" - }, - "Key": {}, - "VersionId": {}, - "IsLatest": { - "type": "boolean" - }, - "LastModified": { - "type": "timestamp" - } - } - }, - "flattened": true - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {} - } - }, - "alias": "GetBucketObjectVersions" - }, - "ListObjects": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "Marker": { - "location": "querystring", - "locationName": "marker" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "Marker": {}, - "NextMarker": {}, - "Contents": { - "shape": "S7p" - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {} - } - }, - "alias": "GetBucket" - }, - "ListObjectsV2": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}?list-type=2" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Delimiter": { - "location": "querystring", - "locationName": "delimiter" - }, - "EncodingType": { - "location": "querystring", - "locationName": "encoding-type" - }, - "MaxKeys": { - "location": "querystring", - "locationName": "max-keys", - "type": "integer" - }, - "Prefix": { - "location": "querystring", - "locationName": "prefix" - }, - "ContinuationToken": { - "location": "querystring", - "locationName": "continuation-token" - }, - "FetchOwner": { - "location": "querystring", - "locationName": "fetch-owner", - "type": "boolean" - }, - "StartAfter": { - "location": "querystring", - "locationName": "start-after" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "IsTruncated": { - "type": "boolean" - }, - "Contents": { - "shape": "S7p" - }, - "Name": {}, - "Prefix": {}, - "Delimiter": {}, - "MaxKeys": { - "type": "integer" - }, - "CommonPrefixes": { - "shape": "S77" - }, - "EncodingType": {}, - "KeyCount": { - "type": "integer" - }, - "ContinuationToken": {}, - "NextContinuationToken": {}, - "StartAfter": {} - } - } - }, - "ListParts": { - "http": { - "method": "GET", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "MaxParts": { - "location": "querystring", - "locationName": "max-parts", - "type": "integer" - }, - "PartNumberMarker": { - "location": "querystring", - "locationName": "part-number-marker", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "AbortDate": { - "location": "header", - "locationName": "x-amz-abort-date", - "type": "timestamp" - }, - "AbortRuleId": { - "location": "header", - "locationName": "x-amz-abort-rule-id" - }, - "Bucket": {}, - "Key": {}, - "UploadId": {}, - "PartNumberMarker": { - "type": "integer" - }, - "NextPartNumberMarker": { - "type": "integer" - }, - "MaxParts": { - "type": "integer" - }, - "IsTruncated": { - "type": "boolean" - }, - "Parts": { - "locationName": "Part", - "type": "list", - "member": { - "type": "structure", - "members": { - "PartNumber": { - "type": "integer" - }, - "LastModified": { - "type": "timestamp" - }, - "ETag": {}, - "Size": { - "type": "integer" - } - } - }, - "flattened": true - }, - "Initiator": { - "shape": "S76" - }, - "Owner": { - "shape": "S2k" - }, - "StorageClass": {}, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutBucketAccelerateConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?accelerate" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "AccelerateConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "AccelerateConfiguration": { - "locationName": "AccelerateConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "Status": {} - } - } - }, - "payload": "AccelerateConfiguration" - } - }, - "PutBucketAcl": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "AccessControlPolicy": { - "shape": "S89", - "locationName": "AccessControlPolicy", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - } - }, - "payload": "AccessControlPolicy" - } - }, - "PutBucketCors": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?cors" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CORSConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CORSConfiguration": { - "locationName": "CORSConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "CORSRules" - ], - "members": { - "CORSRules": { - "shape": "S2w", - "locationName": "CORSRule" - } - } - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - } - }, - "payload": "CORSConfiguration" - } - }, - "PutBucketLifecycle": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "LifecycleConfiguration": { - "locationName": "LifecycleConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "shape": "S39", - "locationName": "Rule" - } - } - } - }, - "payload": "LifecycleConfiguration" - }, - "deprecated": true - }, - "PutBucketLifecycleConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?lifecycle" - }, - "input": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "LifecycleConfiguration": { - "locationName": "LifecycleConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Rules" - ], - "members": { - "Rules": { - "shape": "S3p", - "locationName": "Rule" - } - } - } - }, - "payload": "LifecycleConfiguration" - } - }, - "PutBucketLogging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?logging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "BucketLoggingStatus" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "BucketLoggingStatus": { - "locationName": "BucketLoggingStatus", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "LoggingEnabled": { - "shape": "S3x" - } - } - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - } - }, - "payload": "BucketLoggingStatus" - } - }, - "PutBucketNotification": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "NotificationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "NotificationConfiguration": { - "shape": "S44", - "locationName": "NotificationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "NotificationConfiguration" - }, - "deprecated": true - }, - "PutBucketNotificationConfiguration": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?notification" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "NotificationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "NotificationConfiguration": { - "shape": "S4f", - "locationName": "NotificationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "NotificationConfiguration" - } - }, - "PutBucketPolicy": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?policy" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Policy" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Policy": {} - }, - "payload": "Policy" - } - }, - "PutBucketReplication": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?replication" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "ReplicationConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "ReplicationConfiguration": { - "shape": "S4y", - "locationName": "ReplicationConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - } - }, - "payload": "ReplicationConfiguration" - } - }, - "PutBucketRequestPayment": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?requestPayment" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "RequestPaymentConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "RequestPaymentConfiguration": { - "locationName": "RequestPaymentConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Payer" - ], - "members": { - "Payer": {} - } - } - }, - "payload": "RequestPaymentConfiguration" - } - }, - "PutBucketTagging": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?tagging" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Tagging" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Tagging": { - "locationName": "Tagging", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "TagSet" - ], - "members": { - "TagSet": { - "shape": "S59" - } - } - } - }, - "payload": "Tagging" - } - }, - "PutBucketVersioning": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?versioning" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "VersioningConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "MFA": { - "location": "header", - "locationName": "x-amz-mfa" - }, - "VersioningConfiguration": { - "locationName": "VersioningConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "MFADelete": { - "locationName": "MfaDelete" - }, - "Status": {} - } - } - }, - "payload": "VersioningConfiguration" - } - }, - "PutBucketWebsite": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}?website" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "WebsiteConfiguration" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "WebsiteConfiguration": { - "locationName": "WebsiteConfiguration", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "members": { - "ErrorDocument": { - "shape": "S5n" - }, - "IndexDocument": { - "shape": "S5l" - }, - "RedirectAllRequestsTo": { - "shape": "S5i" - }, - "RoutingRules": { - "shape": "S5o" - } - } - } - }, - "payload": "WebsiteConfiguration" - } - }, - "PutObject": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "Body": { - "streaming": true, - "type": "blob" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CacheControl": { - "location": "header", - "locationName": "Cache-Control" - }, - "ContentDisposition": { - "location": "header", - "locationName": "Content-Disposition" - }, - "ContentEncoding": { - "location": "header", - "locationName": "Content-Encoding" - }, - "ContentLanguage": { - "location": "header", - "locationName": "Content-Language" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "ContentType": { - "location": "header", - "locationName": "Content-Type" - }, - "Expires": { - "location": "header", - "locationName": "Expires", - "type": "timestamp" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "Metadata": { - "shape": "S11", - "location": "headers", - "locationName": "x-amz-meta-" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "StorageClass": { - "location": "header", - "locationName": "x-amz-storage-class" - }, - "WebsiteRedirectLocation": { - "location": "header", - "locationName": "x-amz-website-redirect-location" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Body" - }, - "output": { - "type": "structure", - "members": { - "Expiration": { - "location": "header", - "locationName": "x-amz-expiration" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "VersionId": { - "location": "header", - "locationName": "x-amz-version-id" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "PutObjectAcl": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}?acl" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "ACL": { - "location": "header", - "locationName": "x-amz-acl" - }, - "AccessControlPolicy": { - "shape": "S89", - "locationName": "AccessControlPolicy", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - } - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "GrantFullControl": { - "location": "header", - "locationName": "x-amz-grant-full-control" - }, - "GrantRead": { - "location": "header", - "locationName": "x-amz-grant-read" - }, - "GrantReadACP": { - "location": "header", - "locationName": "x-amz-grant-read-acp" - }, - "GrantWrite": { - "location": "header", - "locationName": "x-amz-grant-write" - }, - "GrantWriteACP": { - "location": "header", - "locationName": "x-amz-grant-write-acp" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - } - }, - "payload": "AccessControlPolicy" - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "RestoreObject": { - "http": { - "requestUri": "/{Bucket}/{Key+}?restore" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "VersionId": { - "location": "querystring", - "locationName": "versionId" - }, - "RestoreRequest": { - "locationName": "RestoreRequest", - "xmlNamespace": { - "uri": "http://s3.amazonaws.com/doc/2006-03-01/" - }, - "type": "structure", - "required": [ - "Days" - ], - "members": { - "Days": { - "type": "integer" - } - } - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "RestoreRequest" - }, - "output": { - "type": "structure", - "members": { - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - }, - "alias": "PostObjectRestore" - }, - "UploadPart": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "Key", - "PartNumber", - "UploadId" - ], - "members": { - "Body": { - "streaming": true, - "type": "blob" - }, - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "ContentLength": { - "location": "header", - "locationName": "Content-Length", - "type": "long" - }, - "ContentMD5": { - "location": "header", - "locationName": "Content-MD5" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - }, - "payload": "Body" - }, - "output": { - "type": "structure", - "members": { - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "ETag": { - "location": "header", - "locationName": "ETag" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - } - } - }, - "UploadPartCopy": { - "http": { - "method": "PUT", - "requestUri": "/{Bucket}/{Key+}" - }, - "input": { - "type": "structure", - "required": [ - "Bucket", - "CopySource", - "Key", - "PartNumber", - "UploadId" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - }, - "CopySource": { - "location": "header", - "locationName": "x-amz-copy-source" - }, - "CopySourceIfMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-match" - }, - "CopySourceIfModifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-modified-since", - "type": "timestamp" - }, - "CopySourceIfNoneMatch": { - "location": "header", - "locationName": "x-amz-copy-source-if-none-match" - }, - "CopySourceIfUnmodifiedSince": { - "location": "header", - "locationName": "x-amz-copy-source-if-unmodified-since", - "type": "timestamp" - }, - "CopySourceRange": { - "location": "header", - "locationName": "x-amz-copy-source-range" - }, - "Key": { - "location": "uri", - "locationName": "Key" - }, - "PartNumber": { - "location": "querystring", - "locationName": "partNumber", - "type": "integer" - }, - "UploadId": { - "location": "querystring", - "locationName": "uploadId" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKey": { - "shape": "S18", - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "CopySourceSSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-algorithm" - }, - "CopySourceSSECustomerKey": { - "shape": "S1b", - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key" - }, - "CopySourceSSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-copy-source-server-side-encryption-customer-key-MD5" - }, - "RequestPayer": { - "location": "header", - "locationName": "x-amz-request-payer" - } - } - }, - "output": { - "type": "structure", - "members": { - "CopySourceVersionId": { - "location": "header", - "locationName": "x-amz-copy-source-version-id" - }, - "CopyPartResult": { - "type": "structure", - "members": { - "ETag": {}, - "LastModified": { - "type": "timestamp" - } - } - }, - "ServerSideEncryption": { - "location": "header", - "locationName": "x-amz-server-side-encryption" - }, - "SSECustomerAlgorithm": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-algorithm" - }, - "SSECustomerKeyMD5": { - "location": "header", - "locationName": "x-amz-server-side-encryption-customer-key-MD5" - }, - "SSEKMSKeyId": { - "shape": "Sj", - "location": "header", - "locationName": "x-amz-server-side-encryption-aws-kms-key-id" - }, - "RequestCharged": { - "location": "header", - "locationName": "x-amz-request-charged" - } - }, - "payload": "CopyPartResult" - } - } - }, - "shapes": { - "Sj": { - "type": "string", - "sensitive": true - }, - "S11": { - "type": "map", - "key": {}, - "value": {} - }, - "S18": { - "type": "blob", - "sensitive": true - }, - "S1b": { - "type": "blob", - "sensitive": true - }, - "S2k": { - "type": "structure", - "members": { - "DisplayName": {}, - "ID": {} - } - }, - "S2n": { - "type": "list", - "member": { - "locationName": "Grant", - "type": "structure", - "members": { - "Grantee": { - "shape": "S2p" - }, - "Permission": {} - } - } - }, - "S2p": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "DisplayName": {}, - "EmailAddress": {}, - "ID": {}, - "Type": { - "locationName": "xsi:type", - "xmlAttribute": true - }, - "URI": {} - }, - "xmlNamespace": { - "prefix": "xsi", - "uri": "http://www.w3.org/2001/XMLSchema-instance" - } - }, - "S2w": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AllowedMethods", - "AllowedOrigins" - ], - "members": { - "AllowedHeaders": { - "locationName": "AllowedHeader", - "type": "list", - "member": {}, - "flattened": true - }, - "AllowedMethods": { - "locationName": "AllowedMethod", - "type": "list", - "member": {}, - "flattened": true - }, - "AllowedOrigins": { - "locationName": "AllowedOrigin", - "type": "list", - "member": {}, - "flattened": true - }, - "ExposeHeaders": { - "locationName": "ExposeHeader", - "type": "list", - "member": {}, - "flattened": true - }, - "MaxAgeSeconds": { - "type": "integer" - } - } - }, - "flattened": true - }, - "S39": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status" - ], - "members": { - "Expiration": { - "shape": "S3b" - }, - "ID": {}, - "Prefix": {}, - "Status": {}, - "Transition": { - "shape": "S3h" - }, - "NoncurrentVersionTransition": { - "shape": "S3j" - }, - "NoncurrentVersionExpiration": { - "shape": "S3k" - }, - "AbortIncompleteMultipartUpload": { - "shape": "S3l" - } - } - }, - "flattened": true - }, - "S3b": { - "type": "structure", - "members": { - "Date": { - "shape": "S3c" - }, - "Days": { - "type": "integer" - }, - "ExpiredObjectDeleteMarker": { - "type": "boolean" - } - } - }, - "S3c": { - "type": "timestamp", - "timestampFormat": "iso8601" - }, - "S3h": { - "type": "structure", - "members": { - "Date": { - "shape": "S3c" - }, - "Days": { - "type": "integer" - }, - "StorageClass": {} - } - }, - "S3j": { - "type": "structure", - "members": { - "NoncurrentDays": { - "type": "integer" - }, - "StorageClass": {} - } - }, - "S3k": { - "type": "structure", - "members": { - "NoncurrentDays": { - "type": "integer" - } - } - }, - "S3l": { - "type": "structure", - "members": { - "DaysAfterInitiation": { - "type": "integer" - } - } - }, - "S3p": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status" - ], - "members": { - "Expiration": { - "shape": "S3b" - }, - "ID": {}, - "Prefix": {}, - "Status": {}, - "Transitions": { - "locationName": "Transition", - "type": "list", - "member": { - "shape": "S3h" - }, - "flattened": true - }, - "NoncurrentVersionTransitions": { - "locationName": "NoncurrentVersionTransition", - "type": "list", - "member": { - "shape": "S3j" - }, - "flattened": true - }, - "NoncurrentVersionExpiration": { - "shape": "S3k" - }, - "AbortIncompleteMultipartUpload": { - "shape": "S3l" - } - } - }, - "flattened": true - }, - "S3x": { - "type": "structure", - "members": { - "TargetBucket": {}, - "TargetGrants": { - "type": "list", - "member": { - "locationName": "Grant", - "type": "structure", - "members": { - "Grantee": { - "shape": "S2p" - }, - "Permission": {} - } - } - }, - "TargetPrefix": {} - } - }, - "S43": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": { - "location": "uri", - "locationName": "Bucket" - } - } - }, - "S44": { - "type": "structure", - "members": { - "TopicConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Event": { - "deprecated": true - }, - "Topic": {} - } - }, - "QueueConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Event": { - "deprecated": true - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Queue": {} - } - }, - "CloudFunctionConfiguration": { - "type": "structure", - "members": { - "Id": {}, - "Event": { - "deprecated": true - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "CloudFunction": {}, - "InvocationRole": {} - } - } - } - }, - "S47": { - "type": "list", - "member": {}, - "flattened": true - }, - "S4f": { - "type": "structure", - "members": { - "TopicConfigurations": { - "locationName": "TopicConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "TopicArn", - "Events" - ], - "members": { - "Id": {}, - "TopicArn": { - "locationName": "Topic" - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Filter": { - "shape": "S4i" - } - } - }, - "flattened": true - }, - "QueueConfigurations": { - "locationName": "QueueConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "QueueArn", - "Events" - ], - "members": { - "Id": {}, - "QueueArn": { - "locationName": "Queue" - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Filter": { - "shape": "S4i" - } - } - }, - "flattened": true - }, - "LambdaFunctionConfigurations": { - "locationName": "CloudFunctionConfiguration", - "type": "list", - "member": { - "type": "structure", - "required": [ - "LambdaFunctionArn", - "Events" - ], - "members": { - "Id": {}, - "LambdaFunctionArn": { - "locationName": "CloudFunction" - }, - "Events": { - "shape": "S47", - "locationName": "Event" - }, - "Filter": { - "shape": "S4i" - } - } - }, - "flattened": true - } - } - }, - "S4i": { - "type": "structure", - "members": { - "Key": { - "locationName": "S3Key", - "type": "structure", - "members": { - "FilterRules": { - "locationName": "FilterRule", - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - }, - "flattened": true - } - } - } - } - }, - "S4y": { - "type": "structure", - "required": [ - "Role", - "Rules" - ], - "members": { - "Role": {}, - "Rules": { - "locationName": "Rule", - "type": "list", - "member": { - "type": "structure", - "required": [ - "Prefix", - "Status", - "Destination" - ], - "members": { - "ID": {}, - "Prefix": {}, - "Status": {}, - "Destination": { - "type": "structure", - "required": [ - "Bucket" - ], - "members": { - "Bucket": {}, - "StorageClass": {} - } - } - } - }, - "flattened": true - } - } - }, - "S59": { - "type": "list", - "member": { - "locationName": "Tag", - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S5i": { - "type": "structure", - "required": [ - "HostName" - ], - "members": { - "HostName": {}, - "Protocol": {} - } - }, - "S5l": { - "type": "structure", - "required": [ - "Suffix" - ], - "members": { - "Suffix": {} - } - }, - "S5n": { - "type": "structure", - "required": [ - "Key" - ], - "members": { - "Key": {} - } - }, - "S5o": { - "type": "list", - "member": { - "locationName": "RoutingRule", - "type": "structure", - "required": [ - "Redirect" - ], - "members": { - "Condition": { - "type": "structure", - "members": { - "HttpErrorCodeReturnedEquals": {}, - "KeyPrefixEquals": {} - } - }, - "Redirect": { - "type": "structure", - "members": { - "HostName": {}, - "HttpRedirectCode": {}, - "Protocol": {}, - "ReplaceKeyPrefixWith": {}, - "ReplaceKeyWith": {} - } - } - } - } - }, - "S76": { - "type": "structure", - "members": { - "ID": {}, - "DisplayName": {} - } - }, - "S77": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Prefix": {} - } - }, - "flattened": true - }, - "S7p": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "LastModified": { - "type": "timestamp" - }, - "ETag": {}, - "Size": { - "type": "integer" - }, - "StorageClass": {}, - "Owner": { - "shape": "S2k" - } - } - }, - "flattened": true - }, - "S89": { - "type": "structure", - "members": { - "Grants": { - "shape": "S2n", - "locationName": "AccessControlList" - }, - "Owner": { - "shape": "S2k" - } - } - } - } -} -},{}],113:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListBuckets": { - "result_key": "Buckets" - }, - "ListMultipartUploads": { - "limit_key": "MaxUploads", - "more_results": "IsTruncated", - "output_token": [ - "NextKeyMarker", - "NextUploadIdMarker" - ], - "input_token": [ - "KeyMarker", - "UploadIdMarker" - ], - "result_key": [ - "Uploads", - "CommonPrefixes" - ] - }, - "ListObjectVersions": { - "more_results": "IsTruncated", - "limit_key": "MaxKeys", - "output_token": [ - "NextKeyMarker", - "NextVersionIdMarker" - ], - "input_token": [ - "KeyMarker", - "VersionIdMarker" - ], - "result_key": [ - "Versions", - "DeleteMarkers", - "CommonPrefixes" - ] - }, - "ListObjects": { - "more_results": "IsTruncated", - "limit_key": "MaxKeys", - "output_token": "NextMarker || Contents[-1].Key", - "input_token": "Marker", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListObjectsV2": { - "limit_key": "MaxKeys", - "output_token": "NextContinuationToken", - "input_token": "ContinuationToken", - "result_key": [ - "Contents", - "CommonPrefixes" - ] - }, - "ListParts": { - "more_results": "IsTruncated", - "limit_key": "MaxParts", - "output_token": "NextPartNumberMarker", - "input_token": "PartNumberMarker", - "result_key": "Parts" - } - } -} - -},{}],114:[function(require,module,exports){ -module.exports={ - "version": 2, - "waiters": { - "BucketExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 301, - "matcher": "status", - "state": "success" - }, - { - "expected": 403, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "BucketNotExists": { - "delay": 5, - "operation": "HeadBucket", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - }, - "ObjectExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 200, - "matcher": "status", - "state": "success" - }, - { - "expected": 404, - "matcher": "status", - "state": "retry" - } - ] - }, - "ObjectNotExists": { - "delay": 5, - "operation": "HeadObject", - "maxAttempts": 20, - "acceptors": [ - { - "expected": 404, - "matcher": "status", - "state": "success" - } - ] - } - } -} - -},{}],115:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-12-10", - "endpointPrefix": "servicecatalog", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Service Catalog", - "signatureVersion": "v4", - "targetPrefix": "AWS242ServiceCatalogService" - }, - "operations": { - "DescribeProduct": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S5" - }, - "ProvisioningArtifacts": { - "shape": "Sf" - } - } - } - }, - "DescribeProductView": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummary": { - "shape": "S5" - }, - "ProvisioningArtifacts": { - "shape": "Sf" - } - } - } - }, - "DescribeProvisioningParameters": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisioningArtifactParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ParameterKey": {}, - "DefaultValue": {}, - "ParameterType": {}, - "IsNoEcho": { - "type": "boolean" - }, - "Description": {}, - "ParameterConstraints": { - "type": "structure", - "members": { - "AllowedValues": { - "type": "list", - "member": {} - } - } - } - } - } - }, - "ConstraintSummaries": { - "shape": "Sy" - }, - "UsageInstructions": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Value": {} - } - } - } - } - } - }, - "DescribeRecord": { - "input": { - "type": "structure", - "required": [ - "Id" - ], - "members": { - "AcceptLanguage": {}, - "Id": {}, - "PageToken": {}, - "PageSize": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - }, - "RecordOutputs": { - "type": "list", - "member": { - "type": "structure", - "members": { - "OutputKey": {}, - "OutputValue": {}, - "Description": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "ListLaunchPaths": { - "input": { - "type": "structure", - "required": [ - "ProductId" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "LaunchPathSummaries": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "ConstraintSummaries": { - "shape": "Sy" - }, - "Tags": { - "shape": "S1x" - }, - "Name": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "ListRecordHistory": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "AccessLevelFilter": { - "shape": "S23" - }, - "SearchFilter": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetails": { - "type": "list", - "member": { - "shape": "S1a" - } - }, - "NextPageToken": {} - } - } - }, - "ProvisionProduct": { - "input": { - "type": "structure", - "required": [ - "ProductId", - "ProvisioningArtifactId", - "ProvisionedProductName", - "ProvisionToken" - ], - "members": { - "AcceptLanguage": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "ProvisionedProductName": {}, - "ProvisioningParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Tags": { - "shape": "S1x" - }, - "NotificationArns": { - "type": "list", - "member": {} - }, - "ProvisionToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - } - } - } - }, - "ScanProvisionedProducts": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "AccessLevelFilter": { - "shape": "S23" - }, - "PageSize": { - "type": "integer" - }, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProvisionedProducts": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Arn": {}, - "Type": {}, - "Id": {}, - "Status": {}, - "StatusMessage": {}, - "CreatedTime": { - "type": "timestamp" - }, - "IdempotencyToken": {}, - "LastRecordId": {} - } - } - }, - "NextPageToken": {} - } - } - }, - "SearchProducts": { - "input": { - "type": "structure", - "members": { - "AcceptLanguage": {}, - "Filters": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "PageSize": { - "type": "integer" - }, - "SortBy": {}, - "SortOrder": {}, - "PageToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ProductViewSummaries": { - "type": "list", - "member": { - "shape": "S5" - } - }, - "ProductViewAggregations": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Value": {}, - "ApproximateCount": { - "type": "integer" - } - } - } - } - }, - "NextPageToken": {} - } - } - }, - "TerminateProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "TerminateToken" - ], - "members": { - "ProvisionedProductName": {}, - "ProvisionedProductId": {}, - "TerminateToken": { - "idempotencyToken": true - }, - "IgnoreErrors": { - "type": "boolean" - }, - "AcceptLanguage": {} - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - } - } - } - }, - "UpdateProvisionedProduct": { - "input": { - "type": "structure", - "required": [ - "UpdateToken" - ], - "members": { - "AcceptLanguage": {}, - "ProvisionedProductName": {}, - "ProvisionedProductId": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "ProvisioningParameters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {}, - "UsePreviousValue": { - "type": "boolean" - } - } - } - }, - "UpdateToken": { - "idempotencyToken": true - } - } - }, - "output": { - "type": "structure", - "members": { - "RecordDetail": { - "shape": "S1a" - } - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "members": { - "Id": {}, - "ProductId": {}, - "Name": {}, - "Owner": {}, - "ShortDescription": {}, - "Type": {}, - "Distributor": {}, - "HasDefaultPath": { - "type": "boolean" - }, - "SupportEmail": {}, - "SupportDescription": {}, - "SupportUrl": {} - } - }, - "Sf": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Id": {}, - "Name": {}, - "Description": {}, - "CreatedTime": { - "type": "timestamp" - } - } - } - }, - "Sy": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Type": {}, - "Description": {} - } - } - }, - "S1a": { - "type": "structure", - "members": { - "RecordId": {}, - "ProvisionedProductName": {}, - "Status": {}, - "CreatedTime": { - "type": "timestamp" - }, - "UpdatedTime": { - "type": "timestamp" - }, - "ProvisionedProductType": {}, - "RecordType": {}, - "ProvisionedProductId": {}, - "ProductId": {}, - "ProvisioningArtifactId": {}, - "PathId": {}, - "RecordErrors": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Code": {}, - "Description": {} - } - } - }, - "RecordTags": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } - } - }, - "S1x": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S23": { - "type": "structure", - "members": { - "Key": {}, - "Value": {} - } - } - } -} -},{}],116:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2010-03-31", - "endpointPrefix": "sns", - "protocol": "query", - "serviceAbbreviation": "Amazon SNS", - "serviceFullName": "Amazon Simple Notification Service", - "signatureVersion": "v4", - "xmlNamespace": "http://sns.amazonaws.com/doc/2010-03-31/" - }, - "operations": { - "AddPermission": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Label", - "AWSAccountId", - "ActionName" - ], - "members": { - "TopicArn": {}, - "Label": {}, - "AWSAccountId": { - "type": "list", - "member": {} - }, - "ActionName": { - "type": "list", - "member": {} - } - } - } - }, - "CheckIfPhoneNumberIsOptedOut": { - "input": { - "type": "structure", - "required": [ - "phoneNumber" - ], - "members": { - "phoneNumber": {} - } - }, - "output": { - "resultWrapper": "CheckIfPhoneNumberIsOptedOutResult", - "type": "structure", - "members": { - "isOptedOut": { - "type": "boolean" - } - } - } - }, - "ConfirmSubscription": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Token" - ], - "members": { - "TopicArn": {}, - "Token": {}, - "AuthenticateOnUnsubscribe": {} - } - }, - "output": { - "resultWrapper": "ConfirmSubscriptionResult", - "type": "structure", - "members": { - "SubscriptionArn": {} - } - } - }, - "CreatePlatformApplication": { - "input": { - "type": "structure", - "required": [ - "Name", - "Platform", - "Attributes" - ], - "members": { - "Name": {}, - "Platform": {}, - "Attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformApplicationResult", - "type": "structure", - "members": { - "PlatformApplicationArn": {} - } - } - }, - "CreatePlatformEndpoint": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn", - "Token" - ], - "members": { - "PlatformApplicationArn": {}, - "Token": {}, - "CustomUserData": {}, - "Attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "CreatePlatformEndpointResult", - "type": "structure", - "members": { - "EndpointArn": {} - } - } - }, - "CreateTopic": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "resultWrapper": "CreateTopicResult", - "type": "structure", - "members": { - "TopicArn": {} - } - } - }, - "DeleteEndpoint": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - } - }, - "DeletePlatformApplication": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {} - } - } - }, - "DeleteTopic": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {} - } - } - }, - "GetEndpointAttributes": { - "input": { - "type": "structure", - "required": [ - "EndpointArn" - ], - "members": { - "EndpointArn": {} - } - }, - "output": { - "resultWrapper": "GetEndpointAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sj" - } - } - } - }, - "GetPlatformApplicationAttributes": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {} - } - }, - "output": { - "resultWrapper": "GetPlatformApplicationAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sj" - } - } - } - }, - "GetSMSAttributes": { - "input": { - "type": "structure", - "members": { - "attributes": { - "type": "list", - "member": {} - } - } - }, - "output": { - "resultWrapper": "GetSMSAttributesResult", - "type": "structure", - "members": { - "attributes": { - "shape": "Sj" - } - } - } - }, - "GetSubscriptionAttributes": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn" - ], - "members": { - "SubscriptionArn": {} - } - }, - "output": { - "resultWrapper": "GetSubscriptionAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "GetTopicAttributes": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {} - } - }, - "output": { - "resultWrapper": "GetTopicAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "type": "map", - "key": {}, - "value": {} - } - } - } - }, - "ListEndpointsByPlatformApplication": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn" - ], - "members": { - "PlatformApplicationArn": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListEndpointsByPlatformApplicationResult", - "type": "structure", - "members": { - "Endpoints": { - "type": "list", - "member": { - "type": "structure", - "members": { - "EndpointArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListPhoneNumbersOptedOut": { - "input": { - "type": "structure", - "members": { - "nextToken": {} - } - }, - "output": { - "resultWrapper": "ListPhoneNumbersOptedOutResult", - "type": "structure", - "members": { - "phoneNumbers": { - "type": "list", - "member": {} - }, - "nextToken": {} - } - } - }, - "ListPlatformApplications": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListPlatformApplicationsResult", - "type": "structure", - "members": { - "PlatformApplications": { - "type": "list", - "member": { - "type": "structure", - "members": { - "PlatformApplicationArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListSubscriptions": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListSubscriptionsResult", - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1n" - }, - "NextToken": {} - } - } - }, - "ListSubscriptionsByTopic": { - "input": { - "type": "structure", - "required": [ - "TopicArn" - ], - "members": { - "TopicArn": {}, - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListSubscriptionsByTopicResult", - "type": "structure", - "members": { - "Subscriptions": { - "shape": "S1n" - }, - "NextToken": {} - } - } - }, - "ListTopics": { - "input": { - "type": "structure", - "members": { - "NextToken": {} - } - }, - "output": { - "resultWrapper": "ListTopicsResult", - "type": "structure", - "members": { - "Topics": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TopicArn": {} - } - } - }, - "NextToken": {} - } - } - }, - "OptInPhoneNumber": { - "input": { - "type": "structure", - "required": [ - "phoneNumber" - ], - "members": { - "phoneNumber": {} - } - }, - "output": { - "resultWrapper": "OptInPhoneNumberResult", - "type": "structure", - "members": {} - } - }, - "Publish": { - "input": { - "type": "structure", - "required": [ - "Message" - ], - "members": { - "TopicArn": {}, - "TargetArn": {}, - "PhoneNumber": {}, - "Message": {}, - "Subject": {}, - "MessageStructure": {}, - "MessageAttributes": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value", - "type": "structure", - "required": [ - "DataType" - ], - "members": { - "DataType": {}, - "StringValue": {}, - "BinaryValue": { - "type": "blob" - } - } - } - } - } - }, - "output": { - "resultWrapper": "PublishResult", - "type": "structure", - "members": { - "MessageId": {} - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Label" - ], - "members": { - "TopicArn": {}, - "Label": {} - } - } - }, - "SetEndpointAttributes": { - "input": { - "type": "structure", - "required": [ - "EndpointArn", - "Attributes" - ], - "members": { - "EndpointArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "SetPlatformApplicationAttributes": { - "input": { - "type": "structure", - "required": [ - "PlatformApplicationArn", - "Attributes" - ], - "members": { - "PlatformApplicationArn": {}, - "Attributes": { - "shape": "Sj" - } - } - } - }, - "SetSMSAttributes": { - "input": { - "type": "structure", - "required": [ - "attributes" - ], - "members": { - "attributes": { - "shape": "Sj" - } - } - }, - "output": { - "resultWrapper": "SetSMSAttributesResult", - "type": "structure", - "members": {} - } - }, - "SetSubscriptionAttributes": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn", - "AttributeName" - ], - "members": { - "SubscriptionArn": {}, - "AttributeName": {}, - "AttributeValue": {} - } - } - }, - "SetTopicAttributes": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "AttributeName" - ], - "members": { - "TopicArn": {}, - "AttributeName": {}, - "AttributeValue": {} - } - } - }, - "Subscribe": { - "input": { - "type": "structure", - "required": [ - "TopicArn", - "Protocol" - ], - "members": { - "TopicArn": {}, - "Protocol": {}, - "Endpoint": {} - } - }, - "output": { - "resultWrapper": "SubscribeResult", - "type": "structure", - "members": { - "SubscriptionArn": {} - } - } - }, - "Unsubscribe": { - "input": { - "type": "structure", - "required": [ - "SubscriptionArn" - ], - "members": { - "SubscriptionArn": {} - } - } - } - }, - "shapes": { - "Sj": { - "type": "map", - "key": {}, - "value": {} - }, - "S1n": { - "type": "list", - "member": { - "type": "structure", - "members": { - "SubscriptionArn": {}, - "Owner": {}, - "Protocol": {}, - "Endpoint": {}, - "TopicArn": {} - } - } - } - } -} -},{}],117:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListEndpointsByPlatformApplication": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Endpoints" - }, - "ListPlatformApplications": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "PlatformApplications" - }, - "ListSubscriptions": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListSubscriptionsByTopic": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Subscriptions" - }, - "ListTopics": { - "input_token": "NextToken", - "output_token": "NextToken", - "result_key": "Topics" - } - } -} - -},{}],118:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2012-11-05", - "endpointPrefix": "sqs", - "protocol": "query", - "serviceAbbreviation": "Amazon SQS", - "serviceFullName": "Amazon Simple Queue Service", - "signatureVersion": "v4", - "xmlNamespace": "http://queue.amazonaws.com/doc/2012-11-05/" - }, - "operations": { - "AddPermission": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Label", - "AWSAccountIds", - "Actions" - ], - "members": { - "QueueUrl": {}, - "Label": {}, - "AWSAccountIds": { - "type": "list", - "member": { - "locationName": "AWSAccountId" - }, - "flattened": true - }, - "Actions": { - "type": "list", - "member": { - "locationName": "ActionName" - }, - "flattened": true - } - } - } - }, - "ChangeMessageVisibility": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "ReceiptHandle", - "VisibilityTimeout" - ], - "members": { - "QueueUrl": {}, - "ReceiptHandle": {}, - "VisibilityTimeout": { - "type": "integer" - } - } - } - }, - "ChangeMessageVisibilityBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "ChangeMessageVisibilityBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "ReceiptHandle" - ], - "members": { - "Id": {}, - "ReceiptHandle": {}, - "VisibilityTimeout": { - "type": "integer" - } - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "ChangeMessageVisibilityBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "ChangeMessageVisibilityBatchResultEntry", - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "CreateQueue": { - "input": { - "type": "structure", - "required": [ - "QueueName" - ], - "members": { - "QueueName": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - }, - "output": { - "resultWrapper": "CreateQueueResult", - "type": "structure", - "members": { - "QueueUrl": {} - } - } - }, - "DeleteMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "ReceiptHandle" - ], - "members": { - "QueueUrl": {}, - "ReceiptHandle": {} - } - } - }, - "DeleteMessageBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "DeleteMessageBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "ReceiptHandle" - ], - "members": { - "Id": {}, - "ReceiptHandle": {} - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "DeleteMessageBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "DeleteMessageBatchResultEntry", - "type": "structure", - "required": [ - "Id" - ], - "members": { - "Id": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "DeleteQueue": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - } - }, - "GetQueueAttributes": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {}, - "AttributeNames": { - "shape": "St" - } - } - }, - "output": { - "resultWrapper": "GetQueueAttributesResult", - "type": "structure", - "members": { - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - } - }, - "GetQueueUrl": { - "input": { - "type": "structure", - "required": [ - "QueueName" - ], - "members": { - "QueueName": {}, - "QueueOwnerAWSAccountId": {} - } - }, - "output": { - "resultWrapper": "GetQueueUrlResult", - "type": "structure", - "members": { - "QueueUrl": {} - } - } - }, - "ListDeadLetterSourceQueues": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - }, - "output": { - "resultWrapper": "ListDeadLetterSourceQueuesResult", - "type": "structure", - "required": [ - "queueUrls" - ], - "members": { - "queueUrls": { - "shape": "Sz" - } - } - } - }, - "ListQueues": { - "input": { - "type": "structure", - "members": { - "QueueNamePrefix": {} - } - }, - "output": { - "resultWrapper": "ListQueuesResult", - "type": "structure", - "members": { - "QueueUrls": { - "shape": "Sz" - } - } - } - }, - "PurgeQueue": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {} - } - } - }, - "ReceiveMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl" - ], - "members": { - "QueueUrl": {}, - "AttributeNames": { - "shape": "St" - }, - "MessageAttributeNames": { - "type": "list", - "member": { - "locationName": "MessageAttributeName" - }, - "flattened": true - }, - "MaxNumberOfMessages": { - "type": "integer" - }, - "VisibilityTimeout": { - "type": "integer" - }, - "WaitTimeSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "ReceiveMessageResult", - "type": "structure", - "members": { - "Messages": { - "type": "list", - "member": { - "locationName": "Message", - "type": "structure", - "members": { - "MessageId": {}, - "ReceiptHandle": {}, - "MD5OfBody": {}, - "Body": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - }, - "MD5OfMessageAttributes": {}, - "MessageAttributes": { - "shape": "S19", - "locationName": "MessageAttribute" - } - } - }, - "flattened": true - } - } - } - }, - "RemovePermission": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Label" - ], - "members": { - "QueueUrl": {}, - "Label": {} - } - } - }, - "SendMessage": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "MessageBody" - ], - "members": { - "QueueUrl": {}, - "MessageBody": {}, - "DelaySeconds": { - "type": "integer" - }, - "MessageAttributes": { - "shape": "S19", - "locationName": "MessageAttribute" - } - } - }, - "output": { - "resultWrapper": "SendMessageResult", - "type": "structure", - "members": { - "MD5OfMessageBody": {}, - "MD5OfMessageAttributes": {}, - "MessageId": {} - } - } - }, - "SendMessageBatch": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Entries" - ], - "members": { - "QueueUrl": {}, - "Entries": { - "type": "list", - "member": { - "locationName": "SendMessageBatchRequestEntry", - "type": "structure", - "required": [ - "Id", - "MessageBody" - ], - "members": { - "Id": {}, - "MessageBody": {}, - "DelaySeconds": { - "type": "integer" - }, - "MessageAttributes": { - "shape": "S19", - "locationName": "MessageAttribute" - } - } - }, - "flattened": true - } - } - }, - "output": { - "resultWrapper": "SendMessageBatchResult", - "type": "structure", - "required": [ - "Successful", - "Failed" - ], - "members": { - "Successful": { - "type": "list", - "member": { - "locationName": "SendMessageBatchResultEntry", - "type": "structure", - "required": [ - "Id", - "MessageId", - "MD5OfMessageBody" - ], - "members": { - "Id": {}, - "MessageId": {}, - "MD5OfMessageBody": {}, - "MD5OfMessageAttributes": {} - } - }, - "flattened": true - }, - "Failed": { - "shape": "Sd" - } - } - } - }, - "SetQueueAttributes": { - "input": { - "type": "structure", - "required": [ - "QueueUrl", - "Attributes" - ], - "members": { - "QueueUrl": {}, - "Attributes": { - "shape": "Sh", - "locationName": "Attribute" - } - } - } - } - }, - "shapes": { - "Sd": { - "type": "list", - "member": { - "locationName": "BatchResultErrorEntry", - "type": "structure", - "required": [ - "Id", - "SenderFault", - "Code" - ], - "members": { - "Id": {}, - "SenderFault": { - "type": "boolean" - }, - "Code": {}, - "Message": {} - } - }, - "flattened": true - }, - "Sh": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value" - }, - "flattened": true, - "locationName": "Attribute" - }, - "St": { - "type": "list", - "member": { - "locationName": "AttributeName" - }, - "flattened": true - }, - "Sz": { - "type": "list", - "member": { - "locationName": "QueueUrl" - }, - "flattened": true - }, - "S19": { - "type": "map", - "key": { - "locationName": "Name" - }, - "value": { - "locationName": "Value", - "type": "structure", - "required": [ - "DataType" - ], - "members": { - "StringValue": {}, - "BinaryValue": { - "type": "blob" - }, - "StringListValues": { - "flattened": true, - "locationName": "StringListValue", - "type": "list", - "member": { - "locationName": "StringListValue" - } - }, - "BinaryListValues": { - "flattened": true, - "locationName": "BinaryListValue", - "type": "list", - "member": { - "locationName": "BinaryListValue", - "type": "blob" - } - }, - "DataType": {} - } - }, - "flattened": true - } - } -} -},{}],119:[function(require,module,exports){ -module.exports={ - "pagination": { - "ListQueues": { - "result_key": "QueueUrls" - } - } -} - -},{}],120:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2014-11-06", - "endpointPrefix": "ssm", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "Amazon SSM", - "serviceFullName": "Amazon Simple Systems Management Service", - "signatureVersion": "v4", - "targetPrefix": "AmazonSSM" - }, - "operations": { - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId", - "Tags" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "Tags": { - "shape": "S4" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CancelCommand": { - "input": { - "type": "structure", - "required": [ - "CommandId" - ], - "members": { - "CommandId": {}, - "InstanceIds": { - "shape": "Sb" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "CreateActivation": { - "input": { - "type": "structure", - "required": [ - "IamRole" - ], - "members": { - "Description": {}, - "DefaultInstanceName": {}, - "IamRole": {}, - "RegistrationLimit": { - "type": "integer" - }, - "ExpirationDate": { - "type": "timestamp" - } - } - }, - "output": { - "type": "structure", - "members": { - "ActivationId": {}, - "ActivationCode": {} - } - } - }, - "CreateAssociation": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId" - ], - "members": { - "Name": {}, - "InstanceId": {}, - "Parameters": { - "shape": "Sp" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "Su" - } - } - } - }, - "CreateAssociationBatch": { - "input": { - "type": "structure", - "required": [ - "Entries" - ], - "members": { - "Entries": { - "type": "list", - "member": { - "shape": "S12", - "locationName": "entries" - } - } - } - }, - "output": { - "type": "structure", - "members": { - "Successful": { - "type": "list", - "member": { - "shape": "Su", - "locationName": "AssociationDescription" - } - }, - "Failed": { - "type": "list", - "member": { - "locationName": "FailedCreateAssociationEntry", - "type": "structure", - "members": { - "Entry": { - "shape": "S12" - }, - "Message": {}, - "Fault": {} - } - } - } - } - } - }, - "CreateDocument": { - "input": { - "type": "structure", - "required": [ - "Content", - "Name" - ], - "members": { - "Content": {}, - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentDescription": { - "shape": "S1c" - } - } - } - }, - "DeleteActivation": { - "input": { - "type": "structure", - "required": [ - "ActivationId" - ], - "members": { - "ActivationId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteAssociation": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId" - ], - "members": { - "Name": {}, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeleteDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DeregisterManagedInstance": { - "input": { - "type": "structure", - "required": [ - "InstanceId" - ], - "members": { - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "DescribeActivations": { - "input": { - "type": "structure", - "members": { - "Filters": { - "type": "list", - "member": { - "type": "structure", - "members": { - "FilterKey": {}, - "FilterValues": { - "type": "list", - "member": {} - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ActivationList": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ActivationId": {}, - "Description": {}, - "DefaultInstanceName": {}, - "IamRole": {}, - "RegistrationLimit": { - "type": "integer" - }, - "RegistrationsCount": { - "type": "integer" - }, - "ExpirationDate": { - "type": "timestamp" - }, - "Expired": { - "type": "boolean" - }, - "CreatedDate": { - "type": "timestamp" - } - } - } - }, - "NextToken": {} - } - } - }, - "DescribeAssociation": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId" - ], - "members": { - "Name": {}, - "InstanceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "Su" - } - } - } - }, - "DescribeDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Document": { - "shape": "S1c" - } - } - } - }, - "DescribeDocumentPermission": { - "input": { - "type": "structure", - "required": [ - "Name", - "PermissionType" - ], - "members": { - "Name": {}, - "PermissionType": {} - } - }, - "output": { - "type": "structure", - "members": { - "AccountIds": { - "shape": "S2m" - } - } - } - }, - "DescribeInstanceInformation": { - "input": { - "type": "structure", - "members": { - "InstanceInformationFilterList": { - "type": "list", - "member": { - "locationName": "InstanceInformationFilter", - "type": "structure", - "required": [ - "key", - "valueSet" - ], - "members": { - "key": {}, - "valueSet": { - "type": "list", - "member": { - "locationName": "InstanceInformationFilterValue" - } - } - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "InstanceInformationList": { - "type": "list", - "member": { - "locationName": "InstanceInformation", - "type": "structure", - "members": { - "InstanceId": {}, - "PingStatus": {}, - "LastPingDateTime": { - "type": "timestamp" - }, - "AgentVersion": {}, - "IsLatestVersion": { - "type": "boolean" - }, - "PlatformType": {}, - "PlatformName": {}, - "PlatformVersion": {}, - "ActivationId": {}, - "IamRole": {}, - "RegistrationDate": { - "type": "timestamp" - }, - "ResourceType": {}, - "Name": {}, - "IPAddress": {}, - "ComputerName": {} - } - } - }, - "NextToken": {} - } - } - }, - "GetDocument": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {} - } - }, - "output": { - "type": "structure", - "members": { - "Name": {}, - "Content": {} - } - } - }, - "ListAssociations": { - "input": { - "type": "structure", - "required": [ - "AssociationFilterList" - ], - "members": { - "AssociationFilterList": { - "type": "list", - "member": { - "locationName": "AssociationFilter", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Associations": { - "type": "list", - "member": { - "locationName": "Association", - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {} - } - } - }, - "NextToken": {} - } - } - }, - "ListCommandInvocations": { - "input": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "Filters": { - "shape": "S3f" - }, - "Details": { - "type": "boolean" - } - } - }, - "output": { - "type": "structure", - "members": { - "CommandInvocations": { - "type": "list", - "member": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "Comment": {}, - "DocumentName": {}, - "RequestedDateTime": { - "type": "timestamp" - }, - "Status": {}, - "TraceOutput": {}, - "CommandPlugins": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Status": {}, - "ResponseCode": { - "type": "integer" - }, - "ResponseStartDateTime": { - "type": "timestamp" - }, - "ResponseFinishDateTime": { - "type": "timestamp" - }, - "Output": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {} - } - } - }, - "ServiceRole": {}, - "NotificationConfig": { - "shape": "S3y" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListCommands": { - "input": { - "type": "structure", - "members": { - "CommandId": {}, - "InstanceId": {}, - "MaxResults": { - "type": "integer" - }, - "NextToken": {}, - "Filters": { - "shape": "S3f" - } - } - }, - "output": { - "type": "structure", - "members": { - "Commands": { - "type": "list", - "member": { - "shape": "S46" - } - }, - "NextToken": {} - } - } - }, - "ListDocuments": { - "input": { - "type": "structure", - "members": { - "DocumentFilterList": { - "type": "list", - "member": { - "locationName": "DocumentFilter", - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "MaxResults": { - "type": "integer" - }, - "NextToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "DocumentIdentifiers": { - "type": "list", - "member": { - "locationName": "DocumentIdentifier", - "type": "structure", - "members": { - "Name": {}, - "Owner": {}, - "PlatformTypes": { - "shape": "S1q" - } - } - } - }, - "NextToken": {} - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId" - ], - "members": { - "ResourceType": {}, - "ResourceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "TagList": { - "shape": "S4" - } - } - } - }, - "ModifyDocumentPermission": { - "input": { - "type": "structure", - "required": [ - "Name", - "PermissionType" - ], - "members": { - "Name": {}, - "PermissionType": {}, - "AccountIdsToAdd": { - "shape": "S2m" - }, - "AccountIdsToRemove": { - "shape": "S2m" - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceType", - "ResourceId", - "TagKeys" - ], - "members": { - "ResourceType": {}, - "ResourceId": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": {} - } - }, - "SendCommand": { - "input": { - "type": "structure", - "required": [ - "InstanceIds", - "DocumentName" - ], - "members": { - "InstanceIds": { - "shape": "Sb" - }, - "DocumentName": {}, - "DocumentHash": {}, - "DocumentHashType": {}, - "TimeoutSeconds": { - "type": "integer" - }, - "Comment": {}, - "Parameters": { - "shape": "Sp" - }, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "ServiceRoleArn": {}, - "NotificationConfig": { - "shape": "S3y" - } - } - }, - "output": { - "type": "structure", - "members": { - "Command": { - "shape": "S46" - } - } - } - }, - "UpdateAssociationStatus": { - "input": { - "type": "structure", - "required": [ - "Name", - "InstanceId", - "AssociationStatus" - ], - "members": { - "Name": {}, - "InstanceId": {}, - "AssociationStatus": { - "shape": "Sw" - } - } - }, - "output": { - "type": "structure", - "members": { - "AssociationDescription": { - "shape": "Su" - } - } - } - }, - "UpdateManagedInstanceRole": { - "input": { - "type": "structure", - "required": [ - "InstanceId", - "IamRole" - ], - "members": { - "InstanceId": {}, - "IamRole": {} - } - }, - "output": { - "type": "structure", - "members": {} - } - } - }, - "shapes": { - "S4": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "Sb": { - "type": "list", - "member": {} - }, - "Sp": { - "type": "map", - "key": {}, - "value": { - "type": "list", - "member": {} - } - }, - "Su": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "Date": { - "type": "timestamp" - }, - "Status": { - "shape": "Sw" - }, - "Parameters": { - "shape": "Sp" - } - } - }, - "Sw": { - "type": "structure", - "required": [ - "Date", - "Name", - "Message" - ], - "members": { - "Date": { - "type": "timestamp" - }, - "Name": {}, - "Message": {}, - "AdditionalInfo": {} - } - }, - "S12": { - "type": "structure", - "members": { - "Name": {}, - "InstanceId": {}, - "Parameters": { - "shape": "Sp" - } - } - }, - "S1c": { - "type": "structure", - "members": { - "Sha1": {}, - "Hash": {}, - "HashType": {}, - "Name": {}, - "Owner": {}, - "CreatedDate": { - "type": "timestamp" - }, - "Status": {}, - "Description": {}, - "Parameters": { - "type": "list", - "member": { - "locationName": "DocumentParameter", - "type": "structure", - "members": { - "Name": {}, - "Type": {}, - "Description": {}, - "DefaultValue": {} - } - } - }, - "PlatformTypes": { - "shape": "S1q" - } - } - }, - "S1q": { - "type": "list", - "member": { - "locationName": "PlatformType" - } - }, - "S2m": { - "type": "list", - "member": { - "locationName": "AccountId" - } - }, - "S3f": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "key", - "value" - ], - "members": { - "key": {}, - "value": {} - } - } - }, - "S3y": { - "type": "structure", - "members": { - "NotificationArn": {}, - "NotificationEvents": { - "type": "list", - "member": {} - }, - "NotificationType": {} - } - }, - "S46": { - "type": "structure", - "members": { - "CommandId": {}, - "DocumentName": {}, - "Comment": {}, - "ExpiresAfter": { - "type": "timestamp" - }, - "Parameters": { - "shape": "Sp" - }, - "InstanceIds": { - "shape": "Sb" - }, - "RequestedDateTime": { - "type": "timestamp" - }, - "Status": {}, - "OutputS3BucketName": {}, - "OutputS3KeyPrefix": {}, - "ServiceRole": {}, - "NotificationConfig": { - "shape": "S3y" - } - } - } - } -} -},{}],121:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeInstanceInformation": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "InstanceInformationList" - }, - "ListAssociations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Associations" - }, - "ListCommandInvocations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "CommandInvocations" - }, - "ListCommands": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "Commands" - }, - "ListDocuments": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "DocumentIdentifiers" - }, - "DescribeActivations": { - "input_token": "NextToken", - "output_token": "NextToken", - "limit_key": "MaxResults", - "result_key": "ActivationList" - } - } -} - -},{}],122:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2013-06-30", - "endpointPrefix": "storagegateway", - "jsonVersion": "1.1", - "protocol": "json", - "serviceFullName": "AWS Storage Gateway", - "signatureVersion": "v4", - "targetPrefix": "StorageGateway_20130630" - }, - "operations": { - "ActivateGateway": { - "input": { - "type": "structure", - "required": [ - "ActivationKey", - "GatewayName", - "GatewayTimezone", - "GatewayRegion" - ], - "members": { - "ActivationKey": {}, - "GatewayName": {}, - "GatewayTimezone": {}, - "GatewayRegion": {}, - "GatewayType": {}, - "TapeDriveType": {}, - "MediumChangerType": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddTagsToResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "Tags" - ], - "members": { - "ResourceARN": {}, - "Tags": { - "shape": "Sh" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {} - } - } - }, - "AddUploadBuffer": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "AddWorkingStorage": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskIds" - ], - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "CancelArchival": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CancelRetrieval": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CreateCachediSCSIVolume": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "VolumeSizeInBytes", - "TargetName", - "NetworkInterfaceId", - "ClientToken" - ], - "members": { - "GatewayARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "SnapshotId": {}, - "TargetName": {}, - "NetworkInterfaceId": {}, - "ClientToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "TargetARN": {} - } - } - }, - "CreateSnapshot": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "SnapshotDescription" - ], - "members": { - "VolumeARN": {}, - "SnapshotDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "SnapshotId": {} - } - } - }, - "CreateSnapshotFromVolumeRecoveryPoint": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "SnapshotDescription" - ], - "members": { - "VolumeARN": {}, - "SnapshotDescription": {} - } - }, - "output": { - "type": "structure", - "members": { - "SnapshotId": {}, - "VolumeARN": {}, - "VolumeRecoveryPointTime": {} - } - } - }, - "CreateStorediSCSIVolume": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "DiskId", - "PreserveExistingData", - "TargetName", - "NetworkInterfaceId" - ], - "members": { - "GatewayARN": {}, - "DiskId": {}, - "SnapshotId": {}, - "PreserveExistingData": { - "type": "boolean" - }, - "TargetName": {}, - "NetworkInterfaceId": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "TargetARN": {} - } - } - }, - "CreateTapeWithBarcode": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeSizeInBytes", - "TapeBarcode" - ], - "members": { - "GatewayARN": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeBarcode": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "CreateTapes": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeSizeInBytes", - "ClientToken", - "NumTapesToCreate", - "TapeBarcodePrefix" - ], - "members": { - "GatewayARN": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "ClientToken": {}, - "NumTapesToCreate": { - "type": "integer" - }, - "TapeBarcodePrefix": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1l" - } - } - } - }, - "DeleteBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "BandwidthType" - ], - "members": { - "GatewayARN": {}, - "BandwidthType": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "DeleteChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN", - "InitiatorName" - ], - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - }, - "output": { - "type": "structure", - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - } - }, - "DeleteGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "DeleteSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "DeleteTape": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "TapeARN" - ], - "members": { - "GatewayARN": {}, - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "DeleteTapeArchive": { - "input": { - "type": "structure", - "required": [ - "TapeARN" - ], - "members": { - "TapeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "DeleteVolume": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "DescribeBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "AverageUploadRateLimitInBitsPerSec": { - "type": "long" - }, - "AverageDownloadRateLimitInBitsPerSec": { - "type": "long" - } - } - } - }, - "DescribeCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "CacheAllocatedInBytes": { - "type": "long" - }, - "CacheUsedPercentage": { - "type": "double" - }, - "CacheDirtyPercentage": { - "type": "double" - }, - "CacheHitPercentage": { - "type": "double" - }, - "CacheMissPercentage": { - "type": "double" - } - } - } - }, - "DescribeCachediSCSIVolumes": { - "input": { - "type": "structure", - "required": [ - "VolumeARNs" - ], - "members": { - "VolumeARNs": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "CachediSCSIVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "VolumeType": {}, - "VolumeStatus": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeProgress": { - "type": "double" - }, - "SourceSnapshotId": {}, - "VolumeiSCSIAttributes": { - "shape": "S2i" - } - } - } - } - } - } - }, - "DescribeChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN" - ], - "members": { - "TargetARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChapCredentials": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TargetARN": {}, - "SecretToAuthenticateInitiator": {}, - "InitiatorName": {}, - "SecretToAuthenticateTarget": {} - } - } - } - } - } - }, - "DescribeGatewayInformation": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "GatewayId": {}, - "GatewayName": {}, - "GatewayTimezone": {}, - "GatewayState": {}, - "GatewayNetworkInterfaces": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Ipv4Address": {}, - "MacAddress": {}, - "Ipv6Address": {} - } - } - }, - "GatewayType": {}, - "NextUpdateAvailabilityDate": {}, - "LastSoftwareUpdate": {} - } - } - }, - "DescribeMaintenanceStartTime": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "HourOfDay": { - "type": "integer" - }, - "MinuteOfHour": { - "type": "integer" - }, - "DayOfWeek": { - "type": "integer" - }, - "Timezone": {} - } - } - }, - "DescribeSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {}, - "StartAt": { - "type": "integer" - }, - "RecurrenceInHours": { - "type": "integer" - }, - "Description": {}, - "Timezone": {} - } - } - }, - "DescribeStorediSCSIVolumes": { - "input": { - "type": "structure", - "required": [ - "VolumeARNs" - ], - "members": { - "VolumeARNs": { - "shape": "S2a" - } - } - }, - "output": { - "type": "structure", - "members": { - "StorediSCSIVolumes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "VolumeType": {}, - "VolumeStatus": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeProgress": { - "type": "double" - }, - "VolumeDiskId": {}, - "SourceSnapshotId": {}, - "PreservedExistingData": { - "type": "boolean" - }, - "VolumeiSCSIAttributes": { - "shape": "S2i" - } - } - } - } - } - } - }, - "DescribeTapeArchives": { - "input": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1l" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TapeArchives": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "CompletionTime": { - "type": "timestamp" - }, - "RetrievedTo": {}, - "TapeStatus": {} - } - } - }, - "Marker": {} - } - } - }, - "DescribeTapeRecoveryPoints": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "TapeRecoveryPointInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeRecoveryPointTime": { - "type": "timestamp" - }, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {} - } - } - }, - "Marker": {} - } - } - }, - "DescribeTapes": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "TapeARNs": { - "shape": "S1l" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Tapes": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {}, - "VTLDevice": {}, - "Progress": { - "type": "double" - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeUploadBuffer": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "UploadBufferUsedInBytes": { - "type": "long" - }, - "UploadBufferAllocatedInBytes": { - "type": "long" - } - } - } - }, - "DescribeVTLDevices": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "VTLDeviceARNs": { - "type": "list", - "member": {} - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "VTLDevices": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VTLDeviceARN": {}, - "VTLDeviceType": {}, - "VTLDeviceVendor": {}, - "VTLDeviceProductIdentifier": {}, - "DeviceiSCSIAttributes": { - "type": "structure", - "members": { - "TargetARN": {}, - "NetworkInterfaceId": {}, - "NetworkInterfacePort": { - "type": "integer" - }, - "ChapEnabled": { - "type": "boolean" - } - } - } - } - } - }, - "Marker": {} - } - } - }, - "DescribeWorkingStorage": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "DiskIds": { - "shape": "Sc" - }, - "WorkingStorageUsedInBytes": { - "type": "long" - }, - "WorkingStorageAllocatedInBytes": { - "type": "long" - } - } - } - }, - "DisableGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "ListGateways": { - "input": { - "type": "structure", - "members": { - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Gateways": { - "type": "list", - "member": { - "type": "structure", - "members": { - "GatewayId": {}, - "GatewayARN": {}, - "GatewayType": {}, - "GatewayOperationalState": {}, - "GatewayName": {} - } - } - }, - "Marker": {} - } - } - }, - "ListLocalDisks": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Disks": { - "type": "list", - "member": { - "type": "structure", - "members": { - "DiskId": {}, - "DiskPath": {}, - "DiskNode": {}, - "DiskStatus": {}, - "DiskSizeInBytes": { - "type": "long" - }, - "DiskAllocationType": {}, - "DiskAllocationResource": {} - } - } - } - } - } - }, - "ListTagsForResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN" - ], - "members": { - "ResourceARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {}, - "Marker": {}, - "Tags": { - "shape": "Sh" - } - } - } - }, - "ListTapes": { - "input": { - "type": "structure", - "members": { - "TapeARNs": { - "shape": "S1l" - }, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "TapeInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "TapeARN": {}, - "TapeBarcode": {}, - "TapeSizeInBytes": { - "type": "long" - }, - "TapeStatus": {}, - "GatewayARN": {} - } - } - }, - "Marker": {} - } - } - }, - "ListVolumeInitiators": { - "input": { - "type": "structure", - "required": [ - "VolumeARN" - ], - "members": { - "VolumeARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "Initiators": { - "type": "list", - "member": {} - } - } - } - }, - "ListVolumeRecoveryPoints": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "VolumeRecoveryPointInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeSizeInBytes": { - "type": "long" - }, - "VolumeUsageInBytes": { - "type": "long" - }, - "VolumeRecoveryPointTime": {} - } - } - } - } - } - }, - "ListVolumes": { - "input": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Marker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "Marker": {}, - "VolumeInfos": { - "type": "list", - "member": { - "type": "structure", - "members": { - "VolumeARN": {}, - "VolumeId": {}, - "GatewayARN": {}, - "GatewayId": {}, - "VolumeType": {}, - "VolumeSizeInBytes": { - "type": "long" - } - } - } - } - } - } - }, - "RemoveTagsFromResource": { - "input": { - "type": "structure", - "required": [ - "ResourceARN", - "TagKeys" - ], - "members": { - "ResourceARN": {}, - "TagKeys": { - "type": "list", - "member": {} - } - } - }, - "output": { - "type": "structure", - "members": { - "ResourceARN": {} - } - } - }, - "ResetCache": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "RetrieveTapeArchive": { - "input": { - "type": "structure", - "required": [ - "TapeARN", - "GatewayARN" - ], - "members": { - "TapeARN": {}, - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "RetrieveTapeRecoveryPoint": { - "input": { - "type": "structure", - "required": [ - "TapeARN", - "GatewayARN" - ], - "members": { - "TapeARN": {}, - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "TapeARN": {} - } - } - }, - "SetLocalConsolePassword": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "LocalConsolePassword" - ], - "members": { - "GatewayARN": {}, - "LocalConsolePassword": { - "type": "string", - "sensitive": true - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "ShutdownGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "StartGateway": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateBandwidthRateLimit": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "AverageUploadRateLimitInBitsPerSec": { - "type": "long" - }, - "AverageDownloadRateLimitInBitsPerSec": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateChapCredentials": { - "input": { - "type": "structure", - "required": [ - "TargetARN", - "SecretToAuthenticateInitiator", - "InitiatorName" - ], - "members": { - "TargetARN": {}, - "SecretToAuthenticateInitiator": {}, - "InitiatorName": {}, - "SecretToAuthenticateTarget": {} - } - }, - "output": { - "type": "structure", - "members": { - "TargetARN": {}, - "InitiatorName": {} - } - } - }, - "UpdateGatewayInformation": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {}, - "GatewayName": {}, - "GatewayTimezone": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {}, - "GatewayName": {} - } - } - }, - "UpdateGatewaySoftwareNow": { - "input": { - "type": "structure", - "required": [ - "GatewayARN" - ], - "members": { - "GatewayARN": {} - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateMaintenanceStartTime": { - "input": { - "type": "structure", - "required": [ - "GatewayARN", - "HourOfDay", - "MinuteOfHour", - "DayOfWeek" - ], - "members": { - "GatewayARN": {}, - "HourOfDay": { - "type": "integer" - }, - "MinuteOfHour": { - "type": "integer" - }, - "DayOfWeek": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "GatewayARN": {} - } - } - }, - "UpdateSnapshotSchedule": { - "input": { - "type": "structure", - "required": [ - "VolumeARN", - "StartAt", - "RecurrenceInHours" - ], - "members": { - "VolumeARN": {}, - "StartAt": { - "type": "integer" - }, - "RecurrenceInHours": { - "type": "integer" - }, - "Description": {} - } - }, - "output": { - "type": "structure", - "members": { - "VolumeARN": {} - } - } - }, - "UpdateVTLDeviceType": { - "input": { - "type": "structure", - "required": [ - "VTLDeviceARN", - "DeviceType" - ], - "members": { - "VTLDeviceARN": {}, - "DeviceType": {} - } - }, - "output": { - "type": "structure", - "members": { - "VTLDeviceARN": {} - } - } - } - }, - "shapes": { - "Sc": { - "type": "list", - "member": {} - }, - "Sh": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Key", - "Value" - ], - "members": { - "Key": {}, - "Value": {} - } - } - }, - "S1l": { - "type": "list", - "member": {} - }, - "S2a": { - "type": "list", - "member": {} - }, - "S2i": { - "type": "structure", - "members": { - "TargetARN": {}, - "NetworkInterfaceId": {}, - "NetworkInterfacePort": { - "type": "integer" - }, - "LunNumber": { - "type": "integer" - }, - "ChapEnabled": { - "type": "boolean" - } - } - } - } -} -},{}],123:[function(require,module,exports){ -module.exports={ - "pagination": { - "DescribeCachediSCSIVolumes": { - "result_key": "CachediSCSIVolumes" - }, - "DescribeStorediSCSIVolumes": { - "result_key": "StorediSCSIVolumes" - }, - "DescribeTapeArchives": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeArchives" - }, - "DescribeTapeRecoveryPoints": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "TapeRecoveryPointInfos" - }, - "DescribeTapes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Tapes" - }, - "DescribeVTLDevices": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VTLDevices" - }, - "ListGateways": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "Gateways" - }, - "ListLocalDisks": { - "result_key": "Disks" - }, - "ListVolumeRecoveryPoints": { - "result_key": "VolumeRecoveryPointInfos" - }, - "ListVolumes": { - "input_token": "Marker", - "limit_key": "Limit", - "output_token": "Marker", - "result_key": "VolumeInfos" - } - } -} - -},{}],124:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2012-08-10", - "endpointPrefix": "streams.dynamodb", - "jsonVersion": "1.0", - "protocol": "json", - "serviceFullName": "Amazon DynamoDB Streams", - "signatureVersion": "v4", - "signingName": "dynamodb", - "targetPrefix": "DynamoDBStreams_20120810" - }, - "operations": { - "DescribeStream": { - "input": { - "type": "structure", - "required": [ - "StreamArn" - ], - "members": { - "StreamArn": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartShardId": {} - } - }, - "output": { - "type": "structure", - "members": { - "StreamDescription": { - "type": "structure", - "members": { - "StreamArn": {}, - "StreamLabel": {}, - "StreamStatus": {}, - "StreamViewType": {}, - "CreationRequestDateTime": { - "type": "timestamp" - }, - "TableName": {}, - "KeySchema": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "AttributeName", - "KeyType" - ], - "members": { - "AttributeName": {}, - "KeyType": {} - } - } - }, - "Shards": { - "type": "list", - "member": { - "type": "structure", - "members": { - "ShardId": {}, - "SequenceNumberRange": { - "type": "structure", - "members": { - "StartingSequenceNumber": {}, - "EndingSequenceNumber": {} - } - }, - "ParentShardId": {} - } - } - }, - "LastEvaluatedShardId": {} - } - } - } - } - }, - "GetRecords": { - "input": { - "type": "structure", - "required": [ - "ShardIterator" - ], - "members": { - "ShardIterator": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "Records": { - "type": "list", - "member": { - "type": "structure", - "members": { - "eventID": {}, - "eventName": {}, - "eventVersion": {}, - "eventSource": {}, - "awsRegion": {}, - "dynamodb": { - "type": "structure", - "members": { - "ApproximateCreationDateTime": { - "type": "timestamp" - }, - "Keys": { - "shape": "Sr" - }, - "NewImage": { - "shape": "Sr" - }, - "OldImage": { - "shape": "Sr" - }, - "SequenceNumber": {}, - "SizeBytes": { - "type": "long" - }, - "StreamViewType": {} - } - } - } - } - }, - "NextShardIterator": {} - } - } - }, - "GetShardIterator": { - "input": { - "type": "structure", - "required": [ - "StreamArn", - "ShardId", - "ShardIteratorType" - ], - "members": { - "StreamArn": {}, - "ShardId": {}, - "ShardIteratorType": {}, - "SequenceNumber": {} - } - }, - "output": { - "type": "structure", - "members": { - "ShardIterator": {} - } - } - }, - "ListStreams": { - "input": { - "type": "structure", - "members": { - "TableName": {}, - "Limit": { - "type": "integer" - }, - "ExclusiveStartStreamArn": {} - } - }, - "output": { - "type": "structure", - "members": { - "Streams": { - "type": "list", - "member": { - "type": "structure", - "members": { - "StreamArn": {}, - "TableName": {}, - "StreamLabel": {} - } - } - }, - "LastEvaluatedStreamArn": {} - } - } - } - }, - "shapes": { - "Sr": { - "type": "map", - "key": {}, - "value": { - "shape": "St" - } - }, - "St": { - "type": "structure", - "members": { - "S": {}, - "N": {}, - "B": { - "type": "blob" - }, - "SS": { - "type": "list", - "member": {} - }, - "NS": { - "type": "list", - "member": {} - }, - "BS": { - "type": "list", - "member": { - "type": "blob" - } - }, - "M": { - "type": "map", - "key": {}, - "value": { - "shape": "St" - } - }, - "L": { - "type": "list", - "member": { - "shape": "St" - } - }, - "NULL": { - "type": "boolean" - }, - "BOOL": { - "type": "boolean" - } - } - } - } -} -},{}],125:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2011-06-15", - "endpointPrefix": "sts", - "globalEndpoint": "sts.amazonaws.com", - "protocol": "query", - "serviceAbbreviation": "AWS STS", - "serviceFullName": "AWS Security Token Service", - "signatureVersion": "v4", - "xmlNamespace": "https://sts.amazonaws.com/doc/2011-06-15/" - }, - "operations": { - "AssumeRole": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "RoleSessionName" - ], - "members": { - "RoleArn": {}, - "RoleSessionName": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - }, - "ExternalId": {}, - "SerialNumber": {}, - "TokenCode": {} - } - }, - "output": { - "resultWrapper": "AssumeRoleResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - } - } - } - }, - "AssumeRoleWithSAML": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "PrincipalArn", - "SAMLAssertion" - ], - "members": { - "RoleArn": {}, - "PrincipalArn": {}, - "SAMLAssertion": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "AssumeRoleWithSAMLResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - }, - "Subject": {}, - "SubjectType": {}, - "Issuer": {}, - "Audience": {}, - "NameQualifier": {} - } - } - }, - "AssumeRoleWithWebIdentity": { - "input": { - "type": "structure", - "required": [ - "RoleArn", - "RoleSessionName", - "WebIdentityToken" - ], - "members": { - "RoleArn": {}, - "RoleSessionName": {}, - "WebIdentityToken": {}, - "ProviderId": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "AssumeRoleWithWebIdentityResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "SubjectFromWebIdentityToken": {}, - "AssumedRoleUser": { - "shape": "Sf" - }, - "PackedPolicySize": { - "type": "integer" - }, - "Provider": {}, - "Audience": {} - } - } - }, - "DecodeAuthorizationMessage": { - "input": { - "type": "structure", - "required": [ - "EncodedMessage" - ], - "members": { - "EncodedMessage": {} - } - }, - "output": { - "resultWrapper": "DecodeAuthorizationMessageResult", - "type": "structure", - "members": { - "DecodedMessage": {} - } - } - }, - "GetCallerIdentity": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "resultWrapper": "GetCallerIdentityResult", - "type": "structure", - "members": { - "UserId": {}, - "Account": {}, - "Arn": {} - } - } - }, - "GetFederationToken": { - "input": { - "type": "structure", - "required": [ - "Name" - ], - "members": { - "Name": {}, - "Policy": {}, - "DurationSeconds": { - "type": "integer" - } - } - }, - "output": { - "resultWrapper": "GetFederationTokenResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - }, - "FederatedUser": { - "type": "structure", - "required": [ - "FederatedUserId", - "Arn" - ], - "members": { - "FederatedUserId": {}, - "Arn": {} - } - }, - "PackedPolicySize": { - "type": "integer" - } - } - } - }, - "GetSessionToken": { - "input": { - "type": "structure", - "members": { - "DurationSeconds": { - "type": "integer" - }, - "SerialNumber": {}, - "TokenCode": {} - } - }, - "output": { - "resultWrapper": "GetSessionTokenResult", - "type": "structure", - "members": { - "Credentials": { - "shape": "Sa" - } - } - } - } - }, - "shapes": { - "Sa": { - "type": "structure", - "required": [ - "AccessKeyId", - "SecretAccessKey", - "SessionToken", - "Expiration" - ], - "members": { - "AccessKeyId": {}, - "SecretAccessKey": {}, - "SessionToken": {}, - "Expiration": { - "type": "timestamp" - } - } - }, - "Sf": { - "type": "structure", - "required": [ - "AssumedRoleId", - "Arn" - ], - "members": { - "AssumedRoleId": {}, - "Arn": {} - } - } - } -} -},{}],126:[function(require,module,exports){ -module.exports={ - "version": "2.0", - "metadata": { - "apiVersion": "2015-08-24", - "endpointPrefix": "waf", - "jsonVersion": "1.1", - "protocol": "json", - "serviceAbbreviation": "WAF", - "serviceFullName": "AWS WAF", - "signatureVersion": "v4", - "targetPrefix": "AWSWAF_20150824" - }, - "operations": { - "CreateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S5" - }, - "ChangeToken": {} - } - } - }, - "CreateIPSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sh" - }, - "ChangeToken": {} - } - } - }, - "CreateRule": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sp" - }, - "ChangeToken": {} - } - } - }, - "CreateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "Sw" - }, - "ChangeToken": {} - } - } - }, - "CreateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S13" - }, - "ChangeToken": {} - } - } - }, - "CreateWebACL": { - "input": { - "type": "structure", - "required": [ - "Name", - "MetricName", - "DefaultAction", - "ChangeToken" - ], - "members": { - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S17" - }, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1a" - }, - "ChangeToken": {} - } - } - }, - "CreateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "Name", - "ChangeToken" - ], - "members": { - "Name": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1g" - }, - "ChangeToken": {} - } - } - }, - "DeleteByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken" - ], - "members": { - "RuleId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "DeleteXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId" - ], - "members": { - "ByteMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "ByteMatchSet": { - "shape": "S5" - } - } - } - }, - "GetChangeToken": { - "input": { - "type": "structure", - "members": {} - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "GetChangeTokenStatus": { - "input": { - "type": "structure", - "required": [ - "ChangeToken" - ], - "members": { - "ChangeToken": {} - } - }, - "output": { - "type": "structure", - "members": { - "ChangeTokenStatus": {} - } - } - }, - "GetIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId" - ], - "members": { - "IPSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "IPSet": { - "shape": "Sh" - } - } - } - }, - "GetRule": { - "input": { - "type": "structure", - "required": [ - "RuleId" - ], - "members": { - "RuleId": {} - } - }, - "output": { - "type": "structure", - "members": { - "Rule": { - "shape": "Sp" - } - } - } - }, - "GetSampledRequests": { - "input": { - "type": "structure", - "required": [ - "WebAclId", - "RuleId", - "TimeWindow", - "MaxItems" - ], - "members": { - "WebAclId": {}, - "RuleId": {}, - "TimeWindow": { - "shape": "S29" - }, - "MaxItems": { - "type": "long" - } - } - }, - "output": { - "type": "structure", - "members": { - "SampledRequests": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Request", - "Weight" - ], - "members": { - "Request": { - "type": "structure", - "members": { - "ClientIP": {}, - "Country": {}, - "URI": {}, - "Method": {}, - "HTTPVersion": {}, - "Headers": { - "type": "list", - "member": { - "type": "structure", - "members": { - "Name": {}, - "Value": {} - } - } - } - } - }, - "Weight": { - "type": "long" - }, - "Timestamp": { - "type": "timestamp" - }, - "Action": {} - } - } - }, - "PopulationSize": { - "type": "long" - }, - "TimeWindow": { - "shape": "S29" - } - } - } - }, - "GetSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId" - ], - "members": { - "SizeConstraintSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SizeConstraintSet": { - "shape": "Sw" - } - } - } - }, - "GetSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId" - ], - "members": { - "SqlInjectionMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "SqlInjectionMatchSet": { - "shape": "S13" - } - } - } - }, - "GetWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId" - ], - "members": { - "WebACLId": {} - } - }, - "output": { - "type": "structure", - "members": { - "WebACL": { - "shape": "S1a" - } - } - } - }, - "GetXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId" - ], - "members": { - "XssMatchSetId": {} - } - }, - "output": { - "type": "structure", - "members": { - "XssMatchSet": { - "shape": "S1g" - } - } - } - }, - "ListByteMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "ByteMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "Name" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListIPSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "IPSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "IPSetId", - "Name" - ], - "members": { - "IPSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListRules": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "Rules": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "RuleId", - "Name" - ], - "members": { - "RuleId": {}, - "Name": {} - } - } - } - } - } - }, - "ListSizeConstraintSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SizeConstraintSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "Name" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListSqlInjectionMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "SqlInjectionMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "Name" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "ListWebACLs": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "WebACLs": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "WebACLId", - "Name" - ], - "members": { - "WebACLId": {}, - "Name": {} - } - } - } - } - } - }, - "ListXssMatchSets": { - "input": { - "type": "structure", - "members": { - "NextMarker": {}, - "Limit": { - "type": "integer" - } - } - }, - "output": { - "type": "structure", - "members": { - "NextMarker": {}, - "XssMatchSets": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "XssMatchSetId", - "Name" - ], - "members": { - "XssMatchSetId": {}, - "Name": {} - } - } - } - } - } - }, - "UpdateByteMatchSet": { - "input": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "ByteMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ByteMatchTuple" - ], - "members": { - "Action": {}, - "ByteMatchTuple": { - "shape": "S8" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateIPSet": { - "input": { - "type": "structure", - "required": [ - "IPSetId", - "ChangeToken", - "Updates" - ], - "members": { - "IPSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "IPSetDescriptor" - ], - "members": { - "Action": {}, - "IPSetDescriptor": { - "shape": "Sj" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateRule": { - "input": { - "type": "structure", - "required": [ - "RuleId", - "ChangeToken", - "Updates" - ], - "members": { - "RuleId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "Predicate" - ], - "members": { - "Action": {}, - "Predicate": { - "shape": "Sr" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSizeConstraintSet": { - "input": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SizeConstraintSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SizeConstraint" - ], - "members": { - "Action": {}, - "SizeConstraint": { - "shape": "Sy" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateSqlInjectionMatchSet": { - "input": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "SqlInjectionMatchTuple" - ], - "members": { - "Action": {}, - "SqlInjectionMatchTuple": { - "shape": "S15" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateWebACL": { - "input": { - "type": "structure", - "required": [ - "WebACLId", - "ChangeToken" - ], - "members": { - "WebACLId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "ActivatedRule" - ], - "members": { - "Action": {}, - "ActivatedRule": { - "shape": "S1c" - } - } - } - }, - "DefaultAction": { - "shape": "S17" - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - }, - "UpdateXssMatchSet": { - "input": { - "type": "structure", - "required": [ - "XssMatchSetId", - "ChangeToken", - "Updates" - ], - "members": { - "XssMatchSetId": {}, - "ChangeToken": {}, - "Updates": { - "type": "list", - "member": { - "type": "structure", - "required": [ - "Action", - "XssMatchTuple" - ], - "members": { - "Action": {}, - "XssMatchTuple": { - "shape": "S1i" - } - } - } - } - } - }, - "output": { - "type": "structure", - "members": { - "ChangeToken": {} - } - } - } - }, - "shapes": { - "S5": { - "type": "structure", - "required": [ - "ByteMatchSetId", - "ByteMatchTuples" - ], - "members": { - "ByteMatchSetId": {}, - "Name": {}, - "ByteMatchTuples": { - "type": "list", - "member": { - "shape": "S8" - } - } - } - }, - "S8": { - "type": "structure", - "required": [ - "FieldToMatch", - "TargetString", - "TextTransformation", - "PositionalConstraint" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TargetString": { - "type": "blob" - }, - "TextTransformation": {}, - "PositionalConstraint": {} - } - }, - "S9": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {}, - "Data": {} - } - }, - "Sh": { - "type": "structure", - "required": [ - "IPSetId", - "IPSetDescriptors" - ], - "members": { - "IPSetId": {}, - "Name": {}, - "IPSetDescriptors": { - "type": "list", - "member": { - "shape": "Sj" - } - } - } - }, - "Sj": { - "type": "structure", - "required": [ - "Type", - "Value" - ], - "members": { - "Type": {}, - "Value": {} - } - }, - "Sp": { - "type": "structure", - "required": [ - "RuleId", - "Predicates" - ], - "members": { - "RuleId": {}, - "Name": {}, - "MetricName": {}, - "Predicates": { - "type": "list", - "member": { - "shape": "Sr" - } - } - } - }, - "Sr": { - "type": "structure", - "required": [ - "Negated", - "Type", - "DataId" - ], - "members": { - "Negated": { - "type": "boolean" - }, - "Type": {}, - "DataId": {} - } - }, - "Sw": { - "type": "structure", - "required": [ - "SizeConstraintSetId", - "SizeConstraints" - ], - "members": { - "SizeConstraintSetId": {}, - "Name": {}, - "SizeConstraints": { - "type": "list", - "member": { - "shape": "Sy" - } - } - } - }, - "Sy": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation", - "ComparisonOperator", - "Size" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {}, - "ComparisonOperator": {}, - "Size": { - "type": "long" - } - } - }, - "S13": { - "type": "structure", - "required": [ - "SqlInjectionMatchSetId", - "SqlInjectionMatchTuples" - ], - "members": { - "SqlInjectionMatchSetId": {}, - "Name": {}, - "SqlInjectionMatchTuples": { - "type": "list", - "member": { - "shape": "S15" - } - } - } - }, - "S15": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {} - } - }, - "S17": { - "type": "structure", - "required": [ - "Type" - ], - "members": { - "Type": {} - } - }, - "S1a": { - "type": "structure", - "required": [ - "WebACLId", - "DefaultAction", - "Rules" - ], - "members": { - "WebACLId": {}, - "Name": {}, - "MetricName": {}, - "DefaultAction": { - "shape": "S17" - }, - "Rules": { - "type": "list", - "member": { - "shape": "S1c" - } - } - } - }, - "S1c": { - "type": "structure", - "required": [ - "Priority", - "RuleId", - "Action" - ], - "members": { - "Priority": { - "type": "integer" - }, - "RuleId": {}, - "Action": { - "shape": "S17" - } - } - }, - "S1g": { - "type": "structure", - "required": [ - "XssMatchSetId", - "XssMatchTuples" - ], - "members": { - "XssMatchSetId": {}, - "Name": {}, - "XssMatchTuples": { - "type": "list", - "member": { - "shape": "S1i" - } - } - } - }, - "S1i": { - "type": "structure", - "required": [ - "FieldToMatch", - "TextTransformation" - ], - "members": { - "FieldToMatch": { - "shape": "S9" - }, - "TextTransformation": {} - } - }, - "S29": { - "type": "structure", - "required": [ - "StartTime", - "EndTime" - ], - "members": { - "StartTime": { - "type": "timestamp" - }, - "EndTime": { - "type": "timestamp" - } - } - } - } -} -},{}],127:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['acm'] = {}; -AWS.ACM = Service.defineService('acm', ['2015-12-08']); -Object.defineProperty(apiLoader.services['acm'], '2015-12-08', { - get: function get() { - var model = require('../apis/acm-2015-12-08.min.json'); - model.paginators = require('../apis/acm-2015-12-08.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ACM; - -},{"../apis/acm-2015-12-08.min.json":1,"../apis/acm-2015-12-08.paginators.json":2,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],128:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['apigateway'] = {}; -AWS.APIGateway = Service.defineService('apigateway', ['2015-07-09']); -require('../lib/services/apigateway'); -Object.defineProperty(apiLoader.services['apigateway'], '2015-07-09', { - get: function get() { - var model = require('../apis/apigateway-2015-07-09.min.json'); - model.paginators = require('../apis/apigateway-2015-07-09.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.APIGateway; - -},{"../apis/apigateway-2015-07-09.min.json":3,"../apis/apigateway-2015-07-09.paginators.json":4,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/apigateway":226}],129:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['applicationautoscaling'] = {}; -AWS.ApplicationAutoScaling = Service.defineService('applicationautoscaling', ['2016-02-06']); -Object.defineProperty(apiLoader.services['applicationautoscaling'], '2016-02-06', { - get: function get() { - var model = require('../apis/application-autoscaling-2016-02-06.min.json'); - model.paginators = require('../apis/application-autoscaling-2016-02-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ApplicationAutoScaling; - -},{"../apis/application-autoscaling-2016-02-06.min.json":5,"../apis/application-autoscaling-2016-02-06.paginators.json":6,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],130:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['autoscaling'] = {}; -AWS.AutoScaling = Service.defineService('autoscaling', ['2011-01-01']); -Object.defineProperty(apiLoader.services['autoscaling'], '2011-01-01', { - get: function get() { - var model = require('../apis/autoscaling-2011-01-01.min.json'); - model.paginators = require('../apis/autoscaling-2011-01-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.AutoScaling; - -},{"../apis/autoscaling-2011-01-01.min.json":7,"../apis/autoscaling-2011-01-01.paginators.json":8,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],131:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); - -module.exports = { - ACM: require('./acm'), - APIGateway: require('./apigateway'), - ApplicationAutoScaling: require('./applicationautoscaling'), - AutoScaling: require('./autoscaling'), - CloudFormation: require('./cloudformation'), - CloudFront: require('./cloudfront'), - CloudHSM: require('./cloudhsm'), - CloudTrail: require('./cloudtrail'), - CloudWatch: require('./cloudwatch'), - CloudWatchEvents: require('./cloudwatchevents'), - CloudWatchLogs: require('./cloudwatchlogs'), - CodeCommit: require('./codecommit'), - CodeDeploy: require('./codedeploy'), - CodePipeline: require('./codepipeline'), - CognitoIdentity: require('./cognitoidentity'), - CognitoIdentityServiceProvider: require('./cognitoidentityserviceprovider'), - CognitoSync: require('./cognitosync'), - ConfigService: require('./configservice'), - DeviceFarm: require('./devicefarm'), - DirectConnect: require('./directconnect'), - DynamoDB: require('./dynamodb'), - DynamoDBStreams: require('./dynamodbstreams'), - EC2: require('./ec2'), - ECR: require('./ecr'), - ECS: require('./ecs'), - ElastiCache: require('./elasticache'), - ElasticBeanstalk: require('./elasticbeanstalk'), - ELB: require('./elb'), - ELBv2: require('./elbv2'), - EMR: require('./emr'), - ElasticTranscoder: require('./elastictranscoder'), - Firehose: require('./firehose'), - GameLift: require('./gamelift'), - Inspector: require('./inspector'), - Iot: require('./iot'), - IotData: require('./iotdata'), - Kinesis: require('./kinesis'), - KMS: require('./kms'), - Lambda: require('./lambda'), - MachineLearning: require('./machinelearning'), - MarketplaceCommerceAnalytics: require('./marketplacecommerceanalytics'), - MobileAnalytics: require('./mobileanalytics'), - OpsWorks: require('./opsworks'), - RDS: require('./rds'), - Redshift: require('./redshift'), - Route53: require('./route53'), - Route53Domains: require('./route53domains'), - S3: require('./s3'), - ServiceCatalog: require('./servicecatalog'), - SES: require('./ses'), - SNS: require('./sns'), - SQS: require('./sqs'), - SSM: require('./ssm'), - StorageGateway: require('./storagegateway'), - STS: require('./sts'), - WAF: require('./waf') -}; -},{"../lib/core":188,"../lib/node_loader":185,"./acm":127,"./apigateway":128,"./applicationautoscaling":129,"./autoscaling":130,"./cloudformation":132,"./cloudfront":133,"./cloudhsm":134,"./cloudtrail":135,"./cloudwatch":136,"./cloudwatchevents":137,"./cloudwatchlogs":138,"./codecommit":139,"./codedeploy":140,"./codepipeline":141,"./cognitoidentity":142,"./cognitoidentityserviceprovider":143,"./cognitosync":144,"./configservice":145,"./devicefarm":146,"./directconnect":147,"./dynamodb":148,"./dynamodbstreams":149,"./ec2":150,"./ecr":151,"./ecs":152,"./elasticache":153,"./elasticbeanstalk":154,"./elastictranscoder":155,"./elb":156,"./elbv2":157,"./emr":158,"./firehose":159,"./gamelift":160,"./inspector":161,"./iot":162,"./iotdata":163,"./kinesis":164,"./kms":165,"./lambda":166,"./machinelearning":167,"./marketplacecommerceanalytics":168,"./mobileanalytics":169,"./opsworks":170,"./rds":171,"./redshift":172,"./route53":173,"./route53domains":174,"./s3":175,"./servicecatalog":176,"./ses":177,"./sns":178,"./sqs":179,"./ssm":180,"./storagegateway":181,"./sts":182,"./waf":183}],132:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudformation'] = {}; -AWS.CloudFormation = Service.defineService('cloudformation', ['2010-05-15']); -Object.defineProperty(apiLoader.services['cloudformation'], '2010-05-15', { - get: function get() { - var model = require('../apis/cloudformation-2010-05-15.min.json'); - model.paginators = require('../apis/cloudformation-2010-05-15.paginators.json').pagination; - model.waiters = require('../apis/cloudformation-2010-05-15.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudFormation; - -},{"../apis/cloudformation-2010-05-15.min.json":9,"../apis/cloudformation-2010-05-15.paginators.json":10,"../apis/cloudformation-2010-05-15.waiters2.json":11,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],133:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudfront'] = {}; -AWS.CloudFront = Service.defineService('cloudfront', ['2013-05-12*', '2013-11-11*', '2014-05-31*', '2014-10-21*', '2014-11-06*', '2015-04-17*', '2015-07-27*', '2015-09-17*', '2016-01-13*', '2016-01-28*', '2016-08-01*', '2016-08-20*', '2016-09-07']); -require('../lib/services/cloudfront'); -Object.defineProperty(apiLoader.services['cloudfront'], '2016-09-07', { - get: function get() { - var model = require('../apis/cloudfront-2016-09-07.min.json'); - model.paginators = require('../apis/cloudfront-2016-09-07.paginators.json').pagination; - model.waiters = require('../apis/cloudfront-2016-09-07.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudFront; - -},{"../apis/cloudfront-2016-09-07.min.json":12,"../apis/cloudfront-2016-09-07.paginators.json":13,"../apis/cloudfront-2016-09-07.waiters2.json":14,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cloudfront":227}],134:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudhsm'] = {}; -AWS.CloudHSM = Service.defineService('cloudhsm', ['2014-05-30']); -Object.defineProperty(apiLoader.services['cloudhsm'], '2014-05-30', { - get: function get() { - var model = require('../apis/cloudhsm-2014-05-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudHSM; - -},{"../apis/cloudhsm-2014-05-30.min.json":15,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],135:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudtrail'] = {}; -AWS.CloudTrail = Service.defineService('cloudtrail', ['2013-11-01']); -Object.defineProperty(apiLoader.services['cloudtrail'], '2013-11-01', { - get: function get() { - var model = require('../apis/cloudtrail-2013-11-01.min.json'); - model.paginators = require('../apis/cloudtrail-2013-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudTrail; - -},{"../apis/cloudtrail-2013-11-01.min.json":16,"../apis/cloudtrail-2013-11-01.paginators.json":17,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],136:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudwatch'] = {}; -AWS.CloudWatch = Service.defineService('cloudwatch', ['2010-08-01']); -Object.defineProperty(apiLoader.services['cloudwatch'], '2010-08-01', { - get: function get() { - var model = require('../apis/monitoring-2010-08-01.min.json'); - model.paginators = require('../apis/monitoring-2010-08-01.paginators.json').pagination; - model.waiters = require('../apis/monitoring-2010-08-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatch; - -},{"../apis/monitoring-2010-08-01.min.json":88,"../apis/monitoring-2010-08-01.paginators.json":89,"../apis/monitoring-2010-08-01.waiters2.json":90,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],137:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudwatchevents'] = {}; -AWS.CloudWatchEvents = Service.defineService('cloudwatchevents', ['2014-02-03*', '2015-10-07']); -Object.defineProperty(apiLoader.services['cloudwatchevents'], '2015-10-07', { - get: function get() { - var model = require('../apis/events-2015-10-07.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatchEvents; - -},{"../apis/events-2015-10-07.min.json":65,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],138:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cloudwatchlogs'] = {}; -AWS.CloudWatchLogs = Service.defineService('cloudwatchlogs', ['2014-03-28']); -Object.defineProperty(apiLoader.services['cloudwatchlogs'], '2014-03-28', { - get: function get() { - var model = require('../apis/logs-2014-03-28.min.json'); - model.paginators = require('../apis/logs-2014-03-28.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CloudWatchLogs; - -},{"../apis/logs-2014-03-28.min.json":80,"../apis/logs-2014-03-28.paginators.json":81,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],139:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['codecommit'] = {}; -AWS.CodeCommit = Service.defineService('codecommit', ['2015-04-13']); -Object.defineProperty(apiLoader.services['codecommit'], '2015-04-13', { - get: function get() { - var model = require('../apis/codecommit-2015-04-13.min.json'); - model.paginators = require('../apis/codecommit-2015-04-13.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeCommit; - -},{"../apis/codecommit-2015-04-13.min.json":18,"../apis/codecommit-2015-04-13.paginators.json":19,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],140:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['codedeploy'] = {}; -AWS.CodeDeploy = Service.defineService('codedeploy', ['2014-10-06']); -Object.defineProperty(apiLoader.services['codedeploy'], '2014-10-06', { - get: function get() { - var model = require('../apis/codedeploy-2014-10-06.min.json'); - model.paginators = require('../apis/codedeploy-2014-10-06.paginators.json').pagination; - model.waiters = require('../apis/codedeploy-2014-10-06.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodeDeploy; - -},{"../apis/codedeploy-2014-10-06.min.json":20,"../apis/codedeploy-2014-10-06.paginators.json":21,"../apis/codedeploy-2014-10-06.waiters2.json":22,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],141:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['codepipeline'] = {}; -AWS.CodePipeline = Service.defineService('codepipeline', ['2015-07-09']); -Object.defineProperty(apiLoader.services['codepipeline'], '2015-07-09', { - get: function get() { - var model = require('../apis/codepipeline-2015-07-09.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CodePipeline; - -},{"../apis/codepipeline-2015-07-09.min.json":23,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],142:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cognitoidentity'] = {}; -AWS.CognitoIdentity = Service.defineService('cognitoidentity', ['2014-06-30']); -require('../lib/services/cognitoidentity'); -Object.defineProperty(apiLoader.services['cognitoidentity'], '2014-06-30', { - get: function get() { - var model = require('../apis/cognito-identity-2014-06-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoIdentity; - -},{"../apis/cognito-identity-2014-06-30.min.json":24,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cognitoidentity":228}],143:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cognitoidentityserviceprovider'] = {}; -AWS.CognitoIdentityServiceProvider = Service.defineService('cognitoidentityserviceprovider', ['2016-04-18']); -Object.defineProperty(apiLoader.services['cognitoidentityserviceprovider'], '2016-04-18', { - get: function get() { - var model = require('../apis/cognito-idp-2016-04-18.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoIdentityServiceProvider; - -},{"../apis/cognito-idp-2016-04-18.min.json":25,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],144:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['cognitosync'] = {}; -AWS.CognitoSync = Service.defineService('cognitosync', ['2014-06-30']); -Object.defineProperty(apiLoader.services['cognitosync'], '2014-06-30', { - get: function get() { - var model = require('../apis/cognito-sync-2014-06-30.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.CognitoSync; - -},{"../apis/cognito-sync-2014-06-30.min.json":26,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],145:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['configservice'] = {}; -AWS.ConfigService = Service.defineService('configservice', ['2014-11-12']); -Object.defineProperty(apiLoader.services['configservice'], '2014-11-12', { - get: function get() { - var model = require('../apis/config-2014-11-12.min.json'); - model.paginators = require('../apis/config-2014-11-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ConfigService; - -},{"../apis/config-2014-11-12.min.json":27,"../apis/config-2014-11-12.paginators.json":28,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],146:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['devicefarm'] = {}; -AWS.DeviceFarm = Service.defineService('devicefarm', ['2015-06-23']); -Object.defineProperty(apiLoader.services['devicefarm'], '2015-06-23', { - get: function get() { - var model = require('../apis/devicefarm-2015-06-23.min.json'); - model.paginators = require('../apis/devicefarm-2015-06-23.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DeviceFarm; - -},{"../apis/devicefarm-2015-06-23.min.json":29,"../apis/devicefarm-2015-06-23.paginators.json":30,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],147:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['directconnect'] = {}; -AWS.DirectConnect = Service.defineService('directconnect', ['2012-10-25']); -Object.defineProperty(apiLoader.services['directconnect'], '2012-10-25', { - get: function get() { - var model = require('../apis/directconnect-2012-10-25.min.json'); - model.paginators = require('../apis/directconnect-2012-10-25.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DirectConnect; - -},{"../apis/directconnect-2012-10-25.min.json":31,"../apis/directconnect-2012-10-25.paginators.json":32,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],148:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['dynamodb'] = {}; -AWS.DynamoDB = Service.defineService('dynamodb', ['2011-12-05', '2012-08-10']); -require('../lib/services/dynamodb'); -Object.defineProperty(apiLoader.services['dynamodb'], '2011-12-05', { - get: function get() { - var model = require('../apis/dynamodb-2011-12-05.min.json'); - model.paginators = require('../apis/dynamodb-2011-12-05.paginators.json').pagination; - model.waiters = require('../apis/dynamodb-2011-12-05.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['dynamodb'], '2012-08-10', { - get: function get() { - var model = require('../apis/dynamodb-2012-08-10.min.json'); - model.paginators = require('../apis/dynamodb-2012-08-10.paginators.json').pagination; - model.waiters = require('../apis/dynamodb-2012-08-10.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DynamoDB; - -},{"../apis/dynamodb-2011-12-05.min.json":33,"../apis/dynamodb-2011-12-05.paginators.json":34,"../apis/dynamodb-2011-12-05.waiters2.json":35,"../apis/dynamodb-2012-08-10.min.json":36,"../apis/dynamodb-2012-08-10.paginators.json":37,"../apis/dynamodb-2012-08-10.waiters2.json":38,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/dynamodb":229}],149:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['dynamodbstreams'] = {}; -AWS.DynamoDBStreams = Service.defineService('dynamodbstreams', ['2012-08-10']); -Object.defineProperty(apiLoader.services['dynamodbstreams'], '2012-08-10', { - get: function get() { - var model = require('../apis/streams.dynamodb-2012-08-10.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.DynamoDBStreams; - -},{"../apis/streams.dynamodb-2012-08-10.min.json":124,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],150:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ec2'] = {}; -AWS.EC2 = Service.defineService('ec2', ['2013-06-15*', '2013-10-15*', '2014-02-01*', '2014-05-01*', '2014-06-15*', '2014-09-01*', '2014-10-01*', '2015-03-01*', '2015-04-15*', '2015-10-01*', '2016-04-01*', '2016-09-15']); -require('../lib/services/ec2'); -Object.defineProperty(apiLoader.services['ec2'], '2016-09-15', { - get: function get() { - var model = require('../apis/ec2-2016-09-15.min.json'); - model.paginators = require('../apis/ec2-2016-09-15.paginators.json').pagination; - model.waiters = require('../apis/ec2-2016-09-15.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EC2; - -},{"../apis/ec2-2016-09-15.min.json":39,"../apis/ec2-2016-09-15.paginators.json":40,"../apis/ec2-2016-09-15.waiters2.json":41,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/ec2":230}],151:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ecr'] = {}; -AWS.ECR = Service.defineService('ecr', ['2015-09-21']); -Object.defineProperty(apiLoader.services['ecr'], '2015-09-21', { - get: function get() { - var model = require('../apis/ecr-2015-09-21.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ECR; - -},{"../apis/ecr-2015-09-21.min.json":42,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],152:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ecs'] = {}; -AWS.ECS = Service.defineService('ecs', ['2014-11-13']); -Object.defineProperty(apiLoader.services['ecs'], '2014-11-13', { - get: function get() { - var model = require('../apis/ecs-2014-11-13.min.json'); - model.paginators = require('../apis/ecs-2014-11-13.paginators.json').pagination; - model.waiters = require('../apis/ecs-2014-11-13.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ECS; - -},{"../apis/ecs-2014-11-13.min.json":43,"../apis/ecs-2014-11-13.paginators.json":44,"../apis/ecs-2014-11-13.waiters2.json":45,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],153:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elasticache'] = {}; -AWS.ElastiCache = Service.defineService('elasticache', ['2012-11-15*', '2014-03-24*', '2014-07-15*', '2014-09-30*', '2015-02-02']); -Object.defineProperty(apiLoader.services['elasticache'], '2015-02-02', { - get: function get() { - var model = require('../apis/elasticache-2015-02-02.min.json'); - model.paginators = require('../apis/elasticache-2015-02-02.paginators.json').pagination; - model.waiters = require('../apis/elasticache-2015-02-02.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElastiCache; - -},{"../apis/elasticache-2015-02-02.min.json":46,"../apis/elasticache-2015-02-02.paginators.json":47,"../apis/elasticache-2015-02-02.waiters2.json":48,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],154:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elasticbeanstalk'] = {}; -AWS.ElasticBeanstalk = Service.defineService('elasticbeanstalk', ['2010-12-01']); -Object.defineProperty(apiLoader.services['elasticbeanstalk'], '2010-12-01', { - get: function get() { - var model = require('../apis/elasticbeanstalk-2010-12-01.min.json'); - model.paginators = require('../apis/elasticbeanstalk-2010-12-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElasticBeanstalk; - -},{"../apis/elasticbeanstalk-2010-12-01.min.json":49,"../apis/elasticbeanstalk-2010-12-01.paginators.json":50,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],155:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elastictranscoder'] = {}; -AWS.ElasticTranscoder = Service.defineService('elastictranscoder', ['2012-09-25']); -Object.defineProperty(apiLoader.services['elastictranscoder'], '2012-09-25', { - get: function get() { - var model = require('../apis/elastictranscoder-2012-09-25.min.json'); - model.paginators = require('../apis/elastictranscoder-2012-09-25.paginators.json').pagination; - model.waiters = require('../apis/elastictranscoder-2012-09-25.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ElasticTranscoder; - -},{"../apis/elastictranscoder-2012-09-25.min.json":59,"../apis/elastictranscoder-2012-09-25.paginators.json":60,"../apis/elastictranscoder-2012-09-25.waiters2.json":61,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],156:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elb'] = {}; -AWS.ELB = Service.defineService('elb', ['2012-06-01']); -Object.defineProperty(apiLoader.services['elb'], '2012-06-01', { - get: function get() { - var model = require('../apis/elasticloadbalancing-2012-06-01.min.json'); - model.paginators = require('../apis/elasticloadbalancing-2012-06-01.paginators.json').pagination; - model.waiters = require('../apis/elasticloadbalancing-2012-06-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ELB; - -},{"../apis/elasticloadbalancing-2012-06-01.min.json":51,"../apis/elasticloadbalancing-2012-06-01.paginators.json":52,"../apis/elasticloadbalancing-2012-06-01.waiters2.json":53,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],157:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['elbv2'] = {}; -AWS.ELBv2 = Service.defineService('elbv2', ['2015-12-01']); -Object.defineProperty(apiLoader.services['elbv2'], '2015-12-01', { - get: function get() { - var model = require('../apis/elasticloadbalancingv2-2015-12-01.min.json'); - model.paginators = require('../apis/elasticloadbalancingv2-2015-12-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ELBv2; - -},{"../apis/elasticloadbalancingv2-2015-12-01.min.json":54,"../apis/elasticloadbalancingv2-2015-12-01.paginators.json":55,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],158:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['emr'] = {}; -AWS.EMR = Service.defineService('emr', ['2009-03-31']); -Object.defineProperty(apiLoader.services['emr'], '2009-03-31', { - get: function get() { - var model = require('../apis/elasticmapreduce-2009-03-31.min.json'); - model.paginators = require('../apis/elasticmapreduce-2009-03-31.paginators.json').pagination; - model.waiters = require('../apis/elasticmapreduce-2009-03-31.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.EMR; - -},{"../apis/elasticmapreduce-2009-03-31.min.json":56,"../apis/elasticmapreduce-2009-03-31.paginators.json":57,"../apis/elasticmapreduce-2009-03-31.waiters2.json":58,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],159:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['firehose'] = {}; -AWS.Firehose = Service.defineService('firehose', ['2015-08-04']); -Object.defineProperty(apiLoader.services['firehose'], '2015-08-04', { - get: function get() { - var model = require('../apis/firehose-2015-08-04.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Firehose; - -},{"../apis/firehose-2015-08-04.min.json":66,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],160:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['gamelift'] = {}; -AWS.GameLift = Service.defineService('gamelift', ['2015-10-01']); -Object.defineProperty(apiLoader.services['gamelift'], '2015-10-01', { - get: function get() { - var model = require('../apis/gamelift-2015-10-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.GameLift; - -},{"../apis/gamelift-2015-10-01.min.json":67,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],161:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['inspector'] = {}; -AWS.Inspector = Service.defineService('inspector', ['2015-08-18*', '2016-02-16']); -Object.defineProperty(apiLoader.services['inspector'], '2016-02-16', { - get: function get() { - var model = require('../apis/inspector-2016-02-16.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Inspector; - -},{"../apis/inspector-2016-02-16.min.json":68,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],162:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['iot'] = {}; -AWS.Iot = Service.defineService('iot', ['2015-05-28']); -Object.defineProperty(apiLoader.services['iot'], '2015-05-28', { - get: function get() { - var model = require('../apis/iot-2015-05-28.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Iot; - -},{"../apis/iot-2015-05-28.min.json":69,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],163:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['iotdata'] = {}; -AWS.IotData = Service.defineService('iotdata', ['2015-05-28']); -require('../lib/services/iotdata'); -Object.defineProperty(apiLoader.services['iotdata'], '2015-05-28', { - get: function get() { - var model = require('../apis/iot-data-2015-05-28.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.IotData; - -},{"../apis/iot-data-2015-05-28.min.json":70,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/iotdata":231}],164:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['kinesis'] = {}; -AWS.Kinesis = Service.defineService('kinesis', ['2013-12-02']); -Object.defineProperty(apiLoader.services['kinesis'], '2013-12-02', { - get: function get() { - var model = require('../apis/kinesis-2013-12-02.min.json'); - model.paginators = require('../apis/kinesis-2013-12-02.paginators.json').pagination; - model.waiters = require('../apis/kinesis-2013-12-02.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Kinesis; - -},{"../apis/kinesis-2013-12-02.min.json":71,"../apis/kinesis-2013-12-02.paginators.json":72,"../apis/kinesis-2013-12-02.waiters2.json":73,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],165:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['kms'] = {}; -AWS.KMS = Service.defineService('kms', ['2014-11-01']); -Object.defineProperty(apiLoader.services['kms'], '2014-11-01', { - get: function get() { - var model = require('../apis/kms-2014-11-01.min.json'); - model.paginators = require('../apis/kms-2014-11-01.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.KMS; - -},{"../apis/kms-2014-11-01.min.json":74,"../apis/kms-2014-11-01.paginators.json":75,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],166:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['lambda'] = {}; -AWS.Lambda = Service.defineService('lambda', ['2014-11-11', '2015-03-31']); -Object.defineProperty(apiLoader.services['lambda'], '2014-11-11', { - get: function get() { - var model = require('../apis/lambda-2014-11-11.min.json'); - model.paginators = require('../apis/lambda-2014-11-11.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['lambda'], '2015-03-31', { - get: function get() { - var model = require('../apis/lambda-2015-03-31.min.json'); - model.paginators = require('../apis/lambda-2015-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Lambda; - -},{"../apis/lambda-2014-11-11.min.json":76,"../apis/lambda-2014-11-11.paginators.json":77,"../apis/lambda-2015-03-31.min.json":78,"../apis/lambda-2015-03-31.paginators.json":79,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],167:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['machinelearning'] = {}; -AWS.MachineLearning = Service.defineService('machinelearning', ['2014-12-12']); -require('../lib/services/machinelearning'); -Object.defineProperty(apiLoader.services['machinelearning'], '2014-12-12', { - get: function get() { - var model = require('../apis/machinelearning-2014-12-12.min.json'); - model.paginators = require('../apis/machinelearning-2014-12-12.paginators.json').pagination; - model.waiters = require('../apis/machinelearning-2014-12-12.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MachineLearning; - -},{"../apis/machinelearning-2014-12-12.min.json":82,"../apis/machinelearning-2014-12-12.paginators.json":83,"../apis/machinelearning-2014-12-12.waiters2.json":84,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/machinelearning":232}],168:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['marketplacecommerceanalytics'] = {}; -AWS.MarketplaceCommerceAnalytics = Service.defineService('marketplacecommerceanalytics', ['2015-07-01']); -Object.defineProperty(apiLoader.services['marketplacecommerceanalytics'], '2015-07-01', { - get: function get() { - var model = require('../apis/marketplacecommerceanalytics-2015-07-01.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MarketplaceCommerceAnalytics; - -},{"../apis/marketplacecommerceanalytics-2015-07-01.min.json":85,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],169:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['mobileanalytics'] = {}; -AWS.MobileAnalytics = Service.defineService('mobileanalytics', ['2014-06-05']); -Object.defineProperty(apiLoader.services['mobileanalytics'], '2014-06-05', { - get: function get() { - var model = require('../apis/mobileanalytics-2014-06-05.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.MobileAnalytics; - -},{"../apis/mobileanalytics-2014-06-05.min.json":87,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],170:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['opsworks'] = {}; -AWS.OpsWorks = Service.defineService('opsworks', ['2013-02-18']); -Object.defineProperty(apiLoader.services['opsworks'], '2013-02-18', { - get: function get() { - var model = require('../apis/opsworks-2013-02-18.min.json'); - model.paginators = require('../apis/opsworks-2013-02-18.paginators.json').pagination; - model.waiters = require('../apis/opsworks-2013-02-18.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.OpsWorks; - -},{"../apis/opsworks-2013-02-18.min.json":91,"../apis/opsworks-2013-02-18.paginators.json":92,"../apis/opsworks-2013-02-18.waiters2.json":93,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],171:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['rds'] = {}; -AWS.RDS = Service.defineService('rds', ['2013-01-10', '2013-02-12', '2013-09-09', '2014-09-01*', '2014-10-31']); -Object.defineProperty(apiLoader.services['rds'], '2013-01-10', { - get: function get() { - var model = require('../apis/rds-2013-01-10.min.json'); - model.paginators = require('../apis/rds-2013-01-10.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2013-02-12', { - get: function get() { - var model = require('../apis/rds-2013-02-12.min.json'); - model.paginators = require('../apis/rds-2013-02-12.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2013-09-09', { - get: function get() { - var model = require('../apis/rds-2013-09-09.min.json'); - model.paginators = require('../apis/rds-2013-09-09.paginators.json').pagination; - model.waiters = require('../apis/rds-2013-09-09.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); -Object.defineProperty(apiLoader.services['rds'], '2014-10-31', { - get: function get() { - var model = require('../apis/rds-2014-10-31.min.json'); - model.paginators = require('../apis/rds-2014-10-31.paginators.json').pagination; - model.waiters = require('../apis/rds-2014-10-31.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.RDS; - -},{"../apis/rds-2013-01-10.min.json":94,"../apis/rds-2013-01-10.paginators.json":95,"../apis/rds-2013-02-12.min.json":96,"../apis/rds-2013-02-12.paginators.json":97,"../apis/rds-2013-09-09.min.json":98,"../apis/rds-2013-09-09.paginators.json":99,"../apis/rds-2013-09-09.waiters2.json":100,"../apis/rds-2014-10-31.min.json":101,"../apis/rds-2014-10-31.paginators.json":102,"../apis/rds-2014-10-31.waiters2.json":103,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],172:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['redshift'] = {}; -AWS.Redshift = Service.defineService('redshift', ['2012-12-01']); -Object.defineProperty(apiLoader.services['redshift'], '2012-12-01', { - get: function get() { - var model = require('../apis/redshift-2012-12-01.min.json'); - model.paginators = require('../apis/redshift-2012-12-01.paginators.json').pagination; - model.waiters = require('../apis/redshift-2012-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Redshift; - -},{"../apis/redshift-2012-12-01.min.json":104,"../apis/redshift-2012-12-01.paginators.json":105,"../apis/redshift-2012-12-01.waiters2.json":106,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],173:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['route53'] = {}; -AWS.Route53 = Service.defineService('route53', ['2013-04-01']); -require('../lib/services/route53'); -Object.defineProperty(apiLoader.services['route53'], '2013-04-01', { - get: function get() { - var model = require('../apis/route53-2013-04-01.min.json'); - model.paginators = require('../apis/route53-2013-04-01.paginators.json').pagination; - model.waiters = require('../apis/route53-2013-04-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Route53; - -},{"../apis/route53-2013-04-01.min.json":107,"../apis/route53-2013-04-01.paginators.json":108,"../apis/route53-2013-04-01.waiters2.json":109,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/route53":233}],174:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['route53domains'] = {}; -AWS.Route53Domains = Service.defineService('route53domains', ['2014-05-15']); -Object.defineProperty(apiLoader.services['route53domains'], '2014-05-15', { - get: function get() { - var model = require('../apis/route53domains-2014-05-15.min.json'); - model.paginators = require('../apis/route53domains-2014-05-15.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.Route53Domains; - -},{"../apis/route53domains-2014-05-15.min.json":110,"../apis/route53domains-2014-05-15.paginators.json":111,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],175:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['s3'] = {}; -AWS.S3 = Service.defineService('s3', ['2006-03-01']); -require('../lib/services/s3'); -Object.defineProperty(apiLoader.services['s3'], '2006-03-01', { - get: function get() { - var model = require('../apis/s3-2006-03-01.min.json'); - model.paginators = require('../apis/s3-2006-03-01.paginators.json').pagination; - model.waiters = require('../apis/s3-2006-03-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.S3; - -},{"../apis/s3-2006-03-01.min.json":112,"../apis/s3-2006-03-01.paginators.json":113,"../apis/s3-2006-03-01.waiters2.json":114,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/s3":234}],176:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['servicecatalog'] = {}; -AWS.ServiceCatalog = Service.defineService('servicecatalog', ['2015-12-10']); -Object.defineProperty(apiLoader.services['servicecatalog'], '2015-12-10', { - get: function get() { - var model = require('../apis/servicecatalog-2015-12-10.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.ServiceCatalog; - -},{"../apis/servicecatalog-2015-12-10.min.json":115,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],177:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ses'] = {}; -AWS.SES = Service.defineService('ses', ['2010-12-01']); -Object.defineProperty(apiLoader.services['ses'], '2010-12-01', { - get: function get() { - var model = require('../apis/email-2010-12-01.min.json'); - model.paginators = require('../apis/email-2010-12-01.paginators.json').pagination; - model.waiters = require('../apis/email-2010-12-01.waiters2.json').waiters; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SES; - -},{"../apis/email-2010-12-01.min.json":62,"../apis/email-2010-12-01.paginators.json":63,"../apis/email-2010-12-01.waiters2.json":64,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],178:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['sns'] = {}; -AWS.SNS = Service.defineService('sns', ['2010-03-31']); -Object.defineProperty(apiLoader.services['sns'], '2010-03-31', { - get: function get() { - var model = require('../apis/sns-2010-03-31.min.json'); - model.paginators = require('../apis/sns-2010-03-31.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SNS; - -},{"../apis/sns-2010-03-31.min.json":116,"../apis/sns-2010-03-31.paginators.json":117,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],179:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['sqs'] = {}; -AWS.SQS = Service.defineService('sqs', ['2012-11-05']); -require('../lib/services/sqs'); -Object.defineProperty(apiLoader.services['sqs'], '2012-11-05', { - get: function get() { - var model = require('../apis/sqs-2012-11-05.min.json'); - model.paginators = require('../apis/sqs-2012-11-05.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SQS; - -},{"../apis/sqs-2012-11-05.min.json":118,"../apis/sqs-2012-11-05.paginators.json":119,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sqs":235}],180:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['ssm'] = {}; -AWS.SSM = Service.defineService('ssm', ['2014-11-06']); -Object.defineProperty(apiLoader.services['ssm'], '2014-11-06', { - get: function get() { - var model = require('../apis/ssm-2014-11-06.min.json'); - model.paginators = require('../apis/ssm-2014-11-06.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.SSM; - -},{"../apis/ssm-2014-11-06.min.json":120,"../apis/ssm-2014-11-06.paginators.json":121,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],181:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['storagegateway'] = {}; -AWS.StorageGateway = Service.defineService('storagegateway', ['2013-06-30']); -Object.defineProperty(apiLoader.services['storagegateway'], '2013-06-30', { - get: function get() { - var model = require('../apis/storagegateway-2013-06-30.min.json'); - model.paginators = require('../apis/storagegateway-2013-06-30.paginators.json').pagination; - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.StorageGateway; - -},{"../apis/storagegateway-2013-06-30.min.json":122,"../apis/storagegateway-2013-06-30.paginators.json":123,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],182:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['sts'] = {}; -AWS.STS = Service.defineService('sts', ['2011-06-15']); -require('../lib/services/sts'); -Object.defineProperty(apiLoader.services['sts'], '2011-06-15', { - get: function get() { - var model = require('../apis/sts-2011-06-15.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.STS; - -},{"../apis/sts-2011-06-15.min.json":125,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sts":236}],183:[function(require,module,exports){ -require('../lib/node_loader'); -var AWS = require('../lib/core'); -var Service = require('../lib/service'); -var apiLoader = require('../lib/api_loader'); - -apiLoader.services['waf'] = {}; -AWS.WAF = Service.defineService('waf', ['2015-08-24']); -Object.defineProperty(apiLoader.services['waf'], '2015-08-24', { - get: function get() { - var model = require('../apis/waf-2015-08-24.min.json'); - return model; - }, - enumerable: true, - configurable: true -}); - -module.exports = AWS.WAF; - -},{"../apis/waf-2015-08-24.min.json":126,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],184:[function(require,module,exports){ -var AWS = require('./core'); - -AWS.apiLoader = function(svc, version) { - if (!AWS.apiLoader.services.hasOwnProperty(svc)) { - throw new Error('InvalidService: Failed to load api for ' + svc); - } - return AWS.apiLoader.services[svc][version]; -}; - -AWS.apiLoader.services = {}; - -module.exports = AWS.apiLoader; -},{"./core":188}],185:[function(require,module,exports){ -(function (process){ -var util = require('./util'); - -util.crypto.lib = require('crypto-browserify'); -util.Buffer = require('buffer/').Buffer; -util.url = require('url/'); -util.querystring = require('querystring/'); - -var AWS = require('./core'); - -require('./api_loader'); - -AWS.XML.Parser = require('./xml/browser_parser'); - -require('./http/xhr'); - -if (typeof process === 'undefined') { - process = { - browser: true - }; -} -}).call(this,require('_process')) -},{"./api_loader":184,"./core":188,"./http/xhr":202,"./util":245,"./xml/browser_parser":246,"_process":250,"buffer/":258,"crypto-browserify":263,"querystring/":271,"url/":272}],186:[function(require,module,exports){ -var AWS = require('../core'), - url = AWS.util.url, - crypto = AWS.util.crypto.lib, - base64Encode = AWS.util.base64.encode, - inherit = AWS.util.inherit; - -var queryEncode = function (string) { - var replacements = { - '+': '-', - '=': '_', - '/': '~' - }; - return string.replace(/[\+=\/]/g, function (match) { - return replacements[match]; - }); -}; - -var signPolicy = function (policy, privateKey) { - var sign = crypto.createSign('RSA-SHA1'); - sign.write(policy); - return queryEncode(sign.sign(privateKey, 'base64')) -}; - -var signWithCannedPolicy = function (url, expires, keyPairId, privateKey) { - var policy = JSON.stringify({ - Statement: [ - { - Resource: url, - Condition: { DateLessThan: { 'AWS:EpochTime': expires } } - } - ] - }); - - return { - Expires: expires, - 'Key-Pair-Id': keyPairId, - Signature: signPolicy(policy.toString(), privateKey) - }; -}; - -var signWithCustomPolicy = function (policy, keyPairId, privateKey) { - policy = policy.replace(/\s/mg, policy); - - return { - Policy: queryEncode(base64Encode(policy)), - 'Key-Pair-Id': keyPairId, - Signature: signPolicy(policy, privateKey) - } -}; - -var determineScheme = function (url) { - var parts = url.split('://'); - if (parts.length < 2) { - throw new Error('Invalid URL.'); - } - - return parts[0].replace('*', ''); -}; - -var getRtmpUrl = function (rtmpUrl) { - var parsed = url.parse(rtmpUrl); - return parsed.path.replace(/^\//, '') + (parsed.hash || ''); -}; - -var getResource = function (url) { - switch (determineScheme(url)) { - case 'http': - case 'https': - return url; - case 'rtmp': - return getRtmpUrl(url); - default: - throw new Error('Invalid URI scheme. Scheme must be one of' - + ' http, https, or rtmp'); - } -}; - -var handleError = function (err, callback) { - if (!callback || typeof callback !== 'function') { - throw err; - } - - callback(err); -}; - -var handleSuccess = function (result, callback) { - if (!callback || typeof callback !== 'function') { - return result; - } - - callback(null, result); -}; - -AWS.CloudFront.Signer = inherit({ - - constructor: function Signer(keyPairId, privateKey) { - if (keyPairId === void 0 || privateKey === void 0) { - throw new Error('A key pair ID and private key are required'); - } - - this.keyPairId = keyPairId; - this.privateKey = privateKey; - }, - - - getSignedCookie: function (options, cb) { - var signatureHash = 'policy' in options - ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) - : signWithCannedPolicy(options.url, options.expires, this.keyPairId, this.privateKey); - - var cookieHash = {}; - for (var key in signatureHash) { - if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { - cookieHash['CloudFront-' + key] = signatureHash[key]; - } - } - - return handleSuccess(cookieHash, cb); - }, - - - getSignedUrl: function (options, cb) { - try { - var resource = getResource(options.url); - } catch (err) { - return handleError(err, cb); - } - - var parsedUrl = url.parse(options.url, true), - signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy') - ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) - : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey); - - parsedUrl.search = null; - for (var key in signatureHash) { - if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { - parsedUrl.query[key] = signatureHash[key]; - } - } - - try { - var signedUrl = determineScheme(options.url) === 'rtmp' - ? getRtmpUrl(url.format(parsedUrl)) - : url.format(parsedUrl); - } catch (err) { - return handleError(err, cb); - } - - return handleSuccess(signedUrl, cb); - } -}); - -module.exports = AWS.CloudFront.Signer; - -},{"../core":188}],187:[function(require,module,exports){ -var AWS = require('./core'); -require('./credentials'); -require('./credentials/credential_provider_chain'); - - -AWS.Config = AWS.util.inherit({ - - - - constructor: function Config(options) { - if (options === undefined) options = {}; - options = this.extractCredentials(options); - - AWS.util.each.call(this, this.keys, function (key, value) { - this.set(key, options[key], value); - }); - }, - - - - - getCredentials: function getCredentials(callback) { - var self = this; - - function finish(err) { - callback(err, err ? null : self.credentials); - } - - function credError(msg, err) { - return new AWS.util.error(err || new Error(), { - code: 'CredentialsError', message: msg - }); - } - - function getAsyncCredentials() { - self.credentials.get(function(err) { - if (err) { - var msg = 'Could not load credentials from ' + - self.credentials.constructor.name; - err = credError(msg, err); - } - finish(err); - }); - } - - function getStaticCredentials() { - var err = null; - if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) { - err = credError('Missing credentials'); - } - finish(err); - } - - if (self.credentials) { - if (typeof self.credentials.get === 'function') { - getAsyncCredentials(); - } else { // static credentials - getStaticCredentials(); - } - } else if (self.credentialProvider) { - self.credentialProvider.resolve(function(err, creds) { - if (err) { - err = credError('Could not load credentials from any providers', err); - } - self.credentials = creds; - finish(err); - }); - } else { - finish(credError('No credentials to load')); - } - }, - - - - - update: function update(options, allowUnknownKeys) { - allowUnknownKeys = allowUnknownKeys || false; - options = this.extractCredentials(options); - AWS.util.each.call(this, options, function (key, value) { - if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) || - AWS.Service.hasService(key)) { - this.set(key, value); - } - }); - }, - - - loadFromPath: function loadFromPath(path) { - this.clear(); - - var options = JSON.parse(AWS.util.readFileSync(path)); - var fileSystemCreds = new AWS.FileSystemCredentials(path); - var chain = new AWS.CredentialProviderChain(); - chain.providers.unshift(fileSystemCreds); - chain.resolve(function (err, creds) { - if (err) throw err; - else options.credentials = creds; - }); - - this.constructor(options); - - return this; - }, - - - clear: function clear() { - - AWS.util.each.call(this, this.keys, function (key) { - delete this[key]; - }); - - this.set('credentials', undefined); - this.set('credentialProvider', undefined); - }, - - - set: function set(property, value, defaultValue) { - if (value === undefined) { - if (defaultValue === undefined) { - defaultValue = this.keys[property]; - } - if (typeof defaultValue === 'function') { - this[property] = defaultValue.call(this); - } else { - this[property] = defaultValue; - } - } else if (property === 'httpOptions' && this[property]) { - this[property] = AWS.util.merge(this[property], value); - } else { - this[property] = value; - } - }, - - - keys: { - credentials: null, - credentialProvider: null, - region: null, - logger: null, - apiVersions: {}, - apiVersion: null, - endpoint: undefined, - httpOptions: { - timeout: 120000 - }, - maxRetries: undefined, - maxRedirects: 10, - paramValidation: true, - sslEnabled: true, - s3ForcePathStyle: false, - s3BucketEndpoint: false, - s3DisableBodySigning: true, - computeChecksums: true, - convertResponseTypes: true, - correctClockSkew: false, - customUserAgent: null, - dynamoDbCrc32: true, - systemClockOffset: 0, - signatureVersion: null, - signatureCache: true, - retryDelayOptions: { - base: 100 - }, - useAccelerateEndpoint: false - }, - - - extractCredentials: function extractCredentials(options) { - if (options.accessKeyId && options.secretAccessKey) { - options = AWS.util.copy(options); - options.credentials = new AWS.Credentials(options); - } - return options; - }, - - - setPromisesDependency: function setPromisesDependency(dep) { - AWS.util.addPromisesToRequests(AWS.Request, dep); - } -}); - - -AWS.config = new AWS.Config(); - -},{"./core":188,"./credentials":189,"./credentials/credential_provider_chain":191}],188:[function(require,module,exports){ - -var AWS = { util: require('./util') }; - - -var _hidden = {}; _hidden.toString(); // hack to parse macro - -module.exports = AWS; - -AWS.util.update(AWS, { - - - VERSION: '2.6.8', - - - Signers: {}, - - - Protocol: { - Json: require('./protocol/json'), - Query: require('./protocol/query'), - Rest: require('./protocol/rest'), - RestJson: require('./protocol/rest_json'), - RestXml: require('./protocol/rest_xml') - }, - - - XML: { - Builder: require('./xml/builder'), - Parser: null // conditionally set based on environment - }, - - - JSON: { - Builder: require('./json/builder'), - Parser: require('./json/parser') - }, - - - Model: { - Api: require('./model/api'), - Operation: require('./model/operation'), - Shape: require('./model/shape'), - Paginator: require('./model/paginator'), - ResourceWaiter: require('./model/resource_waiter') - }, - - util: require('./util'), - - - apiLoader: function() { throw new Error('No API loader set'); } -}); - -require('./service'); - -require('./credentials'); -require('./credentials/credential_provider_chain'); -require('./credentials/temporary_credentials'); -require('./credentials/web_identity_credentials'); -require('./credentials/cognito_identity_credentials'); -require('./credentials/saml_credentials'); - -require('./config'); -require('./http'); -require('./sequential_executor'); -require('./event_listeners'); -require('./request'); -require('./response'); -require('./resource_waiter'); -require('./signers/request_signer'); -require('./param_validator'); - - -AWS.events = new AWS.SequentialExecutor(); - -},{"./config":187,"./credentials":189,"./credentials/cognito_identity_credentials":190,"./credentials/credential_provider_chain":191,"./credentials/saml_credentials":192,"./credentials/temporary_credentials":193,"./credentials/web_identity_credentials":194,"./event_listeners":200,"./http":201,"./json/builder":203,"./json/parser":204,"./model/api":205,"./model/operation":207,"./model/paginator":208,"./model/resource_waiter":209,"./model/shape":210,"./param_validator":211,"./protocol/json":212,"./protocol/query":213,"./protocol/rest":214,"./protocol/rest_json":215,"./protocol/rest_xml":216,"./request":220,"./resource_waiter":221,"./response":222,"./sequential_executor":224,"./service":225,"./signers/request_signer":238,"./util":245,"./xml/builder":247}],189:[function(require,module,exports){ -var AWS = require('./core'); - - -AWS.Credentials = AWS.util.inherit({ - - constructor: function Credentials() { - AWS.util.hideProperties(this, ['secretAccessKey']); - - this.expired = false; - this.expireTime = null; - if (arguments.length === 1 && typeof arguments[0] === 'object') { - var creds = arguments[0].credentials || arguments[0]; - this.accessKeyId = creds.accessKeyId; - this.secretAccessKey = creds.secretAccessKey; - this.sessionToken = creds.sessionToken; - } else { - this.accessKeyId = arguments[0]; - this.secretAccessKey = arguments[1]; - this.sessionToken = arguments[2]; - } - }, - - - expiryWindow: 15, - - - needsRefresh: function needsRefresh() { - var currentTime = AWS.util.date.getDate().getTime(); - var adjustedTime = new Date(currentTime + this.expiryWindow * 1000); - - if (this.expireTime && adjustedTime > this.expireTime) { - return true; - } else { - return this.expired || !this.accessKeyId || !this.secretAccessKey; - } - }, - - - get: function get(callback) { - var self = this; - if (this.needsRefresh()) { - this.refresh(function(err) { - if (!err) self.expired = false; // reset expired flag - if (callback) callback(err); - }); - } else if (callback) { - callback(); - } - }, - - - refresh: function refresh(callback) { - this.expired = false; - callback(); - } -}); - -},{"./core":188}],190:[function(require,module,exports){ -var AWS = require('../core'); -var CognitoIdentity = require('../../clients/cognitoidentity'); -var STS = require('../../clients/sts'); - - -AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { - - localStorageKey: { - id: 'aws.cognito.identity-id.', - providers: 'aws.cognito.identity-providers.' - }, - - - constructor: function CognitoIdentityCredentials(params) { - AWS.Credentials.call(this); - this.expired = true; - this.params = params; - this.data = null; - this.identityId = null; - this.loadCachedId(); - }, - - - refresh: function refresh(callback) { - var self = this; - self.createClients(); - self.data = null; - self.identityId = null; - self.getId(function(err) { - if (!err) { - if (!self.params.RoleArn) { - self.getCredentialsForIdentity(callback); - } else { - self.getCredentialsFromSTS(callback); - } - } else { - self.clearIdOnNotAuthorized(err); - callback(err); - } - }); - }, - - - clearCachedId: function clearCache() { - this.identityId = null; - delete this.params.IdentityId; - - var poolId = this.params.IdentityPoolId; - var loginId = this.params.LoginId || ''; - delete this.storage[this.localStorageKey.id + poolId + loginId]; - delete this.storage[this.localStorageKey.providers + poolId + loginId]; - }, - - - clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) { - var self = this; - if (err.code == 'NotAuthorizedException') { - self.clearCachedId(); - } - }, - - - getId: function getId(callback) { - var self = this; - if (typeof self.params.IdentityId === 'string') { - return callback(null, self.params.IdentityId); - } - - self.cognito.getId(function(err, data) { - if (!err && data.IdentityId) { - self.params.IdentityId = data.IdentityId; - callback(null, data.IdentityId); - } else { - callback(err); - } - }); - }, - - - - loadCredentials: function loadCredentials(data, credentials) { - if (!data || !credentials) return; - credentials.expired = false; - credentials.accessKeyId = data.Credentials.AccessKeyId; - credentials.secretAccessKey = data.Credentials.SecretKey; - credentials.sessionToken = data.Credentials.SessionToken; - credentials.expireTime = data.Credentials.Expiration; - }, - - - getCredentialsForIdentity: function getCredentialsForIdentity(callback) { - var self = this; - self.cognito.getCredentialsForIdentity(function(err, data) { - if (!err) { - self.cacheId(data); - self.data = data; - self.loadCredentials(self.data, self); - } else { - self.clearIdOnNotAuthorized(err); - } - callback(err); - }); - }, - - - getCredentialsFromSTS: function getCredentialsFromSTS(callback) { - var self = this; - self.cognito.getOpenIdToken(function(err, data) { - if (!err) { - self.cacheId(data); - self.params.WebIdentityToken = data.Token; - self.webIdentityCredentials.refresh(function(webErr) { - if (!webErr) { - self.data = self.webIdentityCredentials.data; - self.sts.credentialsFrom(self.data, self); - } - callback(webErr); - }); - } else { - self.clearIdOnNotAuthorized(err); - callback(err); - } - }); - }, - - - loadCachedId: function loadCachedId() { - var self = this; - - if (AWS.util.isBrowser() && !self.params.IdentityId) { - var id = self.getStorage('id'); - if (id && self.params.Logins) { - var actualProviders = Object.keys(self.params.Logins); - var cachedProviders = - (self.getStorage('providers') || '').split(','); - - var intersect = cachedProviders.filter(function(n) { - return actualProviders.indexOf(n) !== -1; - }); - if (intersect.length !== 0) { - self.params.IdentityId = id; - } - } else if (id) { - self.params.IdentityId = id; - } - } - }, - - - createClients: function() { - this.webIdentityCredentials = this.webIdentityCredentials || - new AWS.WebIdentityCredentials(this.params); - this.cognito = this.cognito || - new CognitoIdentity({params: this.params}); - this.sts = this.sts || new STS(); - }, - - - cacheId: function cacheId(data) { - this.identityId = data.IdentityId; - this.params.IdentityId = this.identityId; - - if (AWS.util.isBrowser()) { - this.setStorage('id', data.IdentityId); - - if (this.params.Logins) { - this.setStorage('providers', Object.keys(this.params.Logins).join(',')); - } - } - }, - - - getStorage: function getStorage(key) { - return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')]; - }, - - - setStorage: function setStorage(key, val) { - try { - this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val; - } catch (_) {} - }, - - - storage: (function() { - try { - return AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ? - window.localStorage : {}; - } catch (_) { - return {}; - } - })() -}); - -},{"../../clients/cognitoidentity":142,"../../clients/sts":182,"../core":188}],191:[function(require,module,exports){ -var AWS = require('../core'); - - -AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, { - - - constructor: function CredentialProviderChain(providers) { - if (providers) { - this.providers = providers; - } else { - this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0); - } - }, - - - resolve: function resolve(callback) { - if (this.providers.length === 0) { - callback(new Error('No providers')); - return this; - } - - var index = 0; - var providers = this.providers.slice(0); - - function resolveNext(err, creds) { - if ((!err && creds) || index === providers.length) { - callback(err, creds); - return; - } - - var provider = providers[index++]; - if (typeof provider === 'function') { - creds = provider.call(); - } else { - creds = provider; - } - - if (creds.get) { - creds.get(function(getErr) { - resolveNext(getErr, getErr ? null : creds); - }); - } else { - resolveNext(null, creds); - } - } - - resolveNext(); - return this; - } - -}); - - -AWS.CredentialProviderChain.defaultProviders = []; - -},{"../core":188}],192:[function(require,module,exports){ -var AWS = require('../core'); -var STS = require('../../clients/sts'); - - -AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { - - constructor: function SAMLCredentials(params) { - AWS.Credentials.call(this); - this.expired = true; - this.params = params; - }, - - - refresh: function refresh(callback) { - var self = this; - self.createClients(); - if (!callback) callback = function(err) { if (err) throw err; }; - - self.service.assumeRoleWithSAML(function (err, data) { - if (!err) { - self.service.credentialsFrom(data, self); - } - callback(err); - }); - }, - - - createClients: function() { - this.service = this.service || new STS({params: this.params}); - } - -}); - -},{"../../clients/sts":182,"../core":188}],193:[function(require,module,exports){ -var AWS = require('../core'); -var STS = require('../../clients/sts'); - - -AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { - - constructor: function TemporaryCredentials(params) { - AWS.Credentials.call(this); - this.loadMasterCredentials(); - this.expired = true; - - this.params = params || {}; - if (this.params.RoleArn) { - this.params.RoleSessionName = - this.params.RoleSessionName || 'temporary-credentials'; - } - }, - - - refresh: function refresh(callback) { - var self = this; - self.createClients(); - if (!callback) callback = function(err) { if (err) throw err; }; - - self.service.config.credentials = self.masterCredentials; - var operation = self.params.RoleArn ? - self.service.assumeRole : self.service.getSessionToken; - operation.call(self.service, function (err, data) { - if (!err) { - self.service.credentialsFrom(data, self); - } - callback(err); - }); - }, - - - loadMasterCredentials: function loadMasterCredentials() { - this.masterCredentials = AWS.config.credentials; - while (this.masterCredentials.masterCredentials) { - this.masterCredentials = this.masterCredentials.masterCredentials; - } - }, - - - createClients: function() { - this.service = this.service || new STS({params: this.params}); - } - -}); - -},{"../../clients/sts":182,"../core":188}],194:[function(require,module,exports){ -var AWS = require('../core'); -var STS = require('../../clients/sts'); - - -AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { - - constructor: function WebIdentityCredentials(params) { - AWS.Credentials.call(this); - this.expired = true; - this.params = params; - this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity'; - this.data = null; - }, - - - refresh: function refresh(callback) { - var self = this; - self.createClients(); - if (!callback) callback = function(err) { if (err) throw err; }; - - self.service.assumeRoleWithWebIdentity(function (err, data) { - self.data = null; - if (!err) { - self.data = data; - self.service.credentialsFrom(data, self); - } - callback(err); - }); - }, - - - createClients: function() { - this.service = this.service || new STS({params: this.params}); - } - -}); - -},{"../../clients/sts":182,"../core":188}],195:[function(require,module,exports){ -var util = require('../core').util; -var typeOf = require('./types').typeOf; -var DynamoDBSet = require('./set'); - -function convertInput(data) { - if (typeOf(data) === 'Object') { - var map = {M: {}}; - for (var key in data) { - map['M'][key] = convertInput(data[key]); - } - return map; - } else if (typeOf(data) === 'Array') { - var list = {L: []}; - for (var i = 0; i < data.length; i++) { - list['L'].push(convertInput(data[i])); - } - return list; - } else if (typeOf(data) === 'Set') { - return formatSet(data); - } else if (typeOf(data) === 'String') { - return { 'S': data }; - } else if (typeOf(data) === 'Number') { - return { 'N': data.toString() }; - } else if (typeOf(data) === 'Binary') { - return { 'B': data }; - } else if (typeOf(data) === 'Boolean') { - return {'BOOL': data}; - } else if (typeOf(data) === 'null') { - return {'NULL': true}; - } -} - -function formatSet(data) { - var map = {}; - switch (data.type) { - case 'String': map['SS'] = data.values; break; - case 'Binary': map['BS'] = data.values; break; - case 'Number': map['NS'] = data.values.map(function (value) { - return value.toString(); - }); - } - return map; -} - -function convertOutput(data) { - var list, map, i; - for (var type in data) { - var values = data[type]; - if (type === 'M') { - map = {}; - for (var key in values) { - map[key] = convertOutput(values[key]); - } - return map; - } else if (type === 'L') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(convertOutput(values[i])); - } - return list; - } else if (type === 'SS') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(values[i] + ''); - } - return new DynamoDBSet(list); - } else if (type === 'NS') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(Number(values[i])); - } - return new DynamoDBSet(list); - } else if (type === 'BS') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(new util.Buffer(values[i])); - } - return new DynamoDBSet(list); - } else if (type === 'S') { - return values + ''; - } else if (type === 'N') { - return Number(values); - } else if (type === 'B') { - return new util.Buffer(values); - } else if (type === 'BOOL') { - return (values === 'true' || values === 'TRUE' || values === true); - } else if (type === 'NULL') { - return null; - } - } -} - -module.exports = { - input: convertInput, - output: convertOutput -}; - -},{"../core":188,"./set":197,"./types":199}],196:[function(require,module,exports){ -var AWS = require('../core'); -var Translator = require('./translator'); -var DynamoDBSet = require('./set'); - - -AWS.DynamoDB.DocumentClient = AWS.util.inherit({ - - - operations: { - batchGetItem: 'batchGet', - batchWriteItem: 'batchWrite', - putItem: 'put', - getItem: 'get', - deleteItem: 'delete', - updateItem: 'update', - scan: 'scan', - query: 'query' - }, - - - constructor: function DocumentClient(options) { - var self = this; - self.options = options || {}; - self.configure(self.options); - }, - - - configure: function configure(options) { - var self = this; - self.service = options.service; - self.bindServiceObject(options); - self.attrValue = - self.service.api.operations.putItem.input.members.Item.value.shape; - }, - - - bindServiceObject: function bindServiceObject(options) { - var self = this; - options = options || {}; - - if (!self.service) { - self.service = new AWS.DynamoDB(options); - } else { - var config = AWS.util.copy(self.service.config); - self.service = new self.service.constructor.__super__(config); - self.service.config.params = - AWS.util.merge(self.service.config.params || {}, options.params); - } - }, - - - batchGet: function(params, callback) { - var self = this; - var request = self.service.batchGetItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - batchWrite: function(params, callback) { - var self = this; - var request = self.service.batchWriteItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - delete: function(params, callback) { - var self = this; - var request = self.service.deleteItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - get: function(params, callback) { - var self = this; - var request = self.service.getItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - put: function put(params, callback) { - var self = this; - var request = self.service.putItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - update: function(params, callback) { - var self = this; - var request = self.service.updateItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - scan: function(params, callback) { - var self = this; - var request = self.service.scan(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - query: function(params, callback) { - var self = this; - var request = self.service.query(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - - createSet: function(list, options) { - options = options || {}; - return new DynamoDBSet(list, options); - }, - - - getTranslator: function() { - return new Translator({attrValue: this.attrValue}); - }, - - - setupRequest: function setupRequest(request) { - var self = this; - var translator = self.getTranslator(); - var operation = request.operation; - var inputShape = request.service.api.operations[operation].input; - request._events.validate.unshift(function(req) { - req.rawParams = AWS.util.copy(req.params); - req.params = translator.translateInput(req.rawParams, inputShape); - }); - }, - - - setupResponse: function setupResponse(request) { - var self = this; - var translator = self.getTranslator(); - var outputShape = self.service.api.operations[request.operation].output; - request.on('extractData', function(response) { - response.data = translator.translateOutput(response.data, outputShape); - }); - - var response = request.response; - response.nextPage = function(cb) { - var resp = this; - var req = resp.request; - var config; - var service = req.service; - var operation = req.operation; - try { - config = service.paginationConfig(operation, true); - } catch (e) { resp.error = e; } - - if (!resp.hasNextPage()) { - if (cb) cb(resp.error, null); - else if (resp.error) throw resp.error; - return null; - } - - var params = AWS.util.copy(req.rawParams); - if (!resp.nextPageTokens) { - return cb ? cb(null, null) : null; - } else { - var inputTokens = config.inputToken; - if (typeof inputTokens === 'string') inputTokens = [inputTokens]; - for (var i = 0; i < inputTokens.length; i++) { - params[inputTokens[i]] = resp.nextPageTokens[i]; - } - return self[operation](params, cb); - } - }; - } - -}); - -module.exports = AWS.DynamoDB.DocumentClient; - -},{"../core":188,"./set":197,"./translator":198}],197:[function(require,module,exports){ -var util = require('../core').util; -var typeOf = require('./types').typeOf; - -var DynamoDBSet = util.inherit({ - - constructor: function Set(list, options) { - options = options || {}; - this.initialize(list, options.validate); - }, - - initialize: function(list, validate) { - var self = this; - self.values = [].concat(list); - self.detectType(); - if (validate) { - self.validate(); - } - }, - - detectType: function() { - var self = this; - var value = self.values[0]; - if (typeOf(value) === 'String') { - self.type = 'String'; - } else if (typeOf(value) === 'Number') { - self.type = 'Number'; - } else if (typeOf(value) === 'Binary') { - self.type = 'Binary'; - } else { - throw util.error(new Error(), { - code: 'InvalidSetType', - message: 'Sets can contain string, number, or binary values' - }); - } - }, - - validate: function() { - var self = this; - var length = self.values.length; - var values = self.values; - for (var i = 0; i < length; i++) { - if (typeOf(values[i]) !== self.type) { - throw util.error(new Error(), { - code: 'InvalidType', - message: self.type + ' Set contains ' + typeOf(values[i]) + ' value' - }); - } - } - } - -}); - -module.exports = DynamoDBSet; - -},{"../core":188,"./types":199}],198:[function(require,module,exports){ -var util = require('../core').util; -var convert = require('./converter'); - -var Translator = function(options) { - options = options || {}; - this.attrValue = options.attrValue; -}; - -Translator.prototype.translateInput = function(value, shape) { - this.mode = 'input'; - return this.translate(value, shape); -}; - -Translator.prototype.translateOutput = function(value, shape) { - this.mode = 'output'; - return this.translate(value, shape); -}; - -Translator.prototype.translate = function(value, shape) { - var self = this; - if (!shape || value === undefined) return undefined; - - if (shape.shape === self.attrValue) { - return convert[self.mode](value); - } - switch (shape.type) { - case 'structure': return self.translateStructure(value, shape); - case 'map': return self.translateMap(value, shape); - case 'list': return self.translateList(value, shape); - default: return self.translateScalar(value, shape); - } -}; - -Translator.prototype.translateStructure = function(structure, shape) { - var self = this; - if (structure == null) return undefined; - - var struct = {}; - util.each(structure, function(name, value) { - var memberShape = shape.members[name]; - if (memberShape) { - var result = self.translate(value, memberShape); - if (result !== undefined) struct[name] = result; - } - }); - return struct; -}; - -Translator.prototype.translateList = function(list, shape) { - var self = this; - if (list == null) return undefined; - - var out = []; - util.arrayEach(list, function(value) { - var result = self.translate(value, shape.member); - if (result === undefined) out.push(null); - else out.push(result); - }); - return out; -}; - -Translator.prototype.translateMap = function(map, shape) { - var self = this; - if (map == null) return undefined; - - var out = {}; - util.each(map, function(key, value) { - var result = self.translate(value, shape.value); - if (result === undefined) out[key] = null; - else out[key] = result; - }); - return out; -}; - -Translator.prototype.translateScalar = function(value, shape) { - return shape.toType(value); -}; - -module.exports = Translator; - -},{"../core":188,"./converter":195}],199:[function(require,module,exports){ -var util = require('../core').util; - -function typeOf(data) { - if (data === null && typeof data === 'object') { - return 'null'; - } else if (data !== undefined && isBinary(data)) { - return 'Binary'; - } else if (data !== undefined && data.constructor) { - return util.typeName(data.constructor); - } else { - return 'undefined'; - } -} - -function isBinary(data) { - var types = [ - 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView', - 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', - 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', - 'Float32Array', 'Float64Array' - ]; - if (util.isNode()) { - var Stream = util.stream.Stream; - if (util.Buffer.isBuffer(data) || data instanceof Stream) - return true; - } else { - for (var i = 0; i < types.length; i++) { - if (data !== undefined && data.constructor) { - if (util.isType(data, types[i])) return true; - if (util.typeName(data.constructor) === types[i]) return true; - } - } - } - return false; -} - -module.exports = { - typeOf: typeOf, - isBinary: isBinary -}; - -},{"../core":188}],200:[function(require,module,exports){ -var AWS = require('./core'); -var SequentialExecutor = require('./sequential_executor'); - - -AWS.EventListeners = { - - Core: {} /* doc hack */ -}; - -AWS.EventListeners = { - Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) { - addAsync('VALIDATE_CREDENTIALS', 'validate', - function VALIDATE_CREDENTIALS(req, done) { - if (!req.service.api.signatureVersion) return done(); // none - req.service.config.getCredentials(function(err) { - if (err) { - req.response.error = AWS.util.error(err, - {code: 'CredentialsError', message: 'Missing credentials in config'}); - } - done(); - }); - }); - - add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) { - if (!req.service.config.region && !req.service.isGlobalEndpoint) { - req.response.error = AWS.util.error(new Error(), - {code: 'ConfigError', message: 'Missing region in config'}); - } - }); - - add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) { - var rules = req.service.api.operations[req.operation].input; - var validation = req.service.config.paramValidation; - new AWS.ParamValidator(validation).validate(rules, req.params); - }); - - addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) { - req.haltHandlersOnError(); - if (!req.service.api.signatureVersion) return done(); // none - if (req.service.getSignerClass(req) === AWS.Signers.V4) { - var body = req.httpRequest.body || ''; - AWS.util.computeSha256(body, function(err, sha) { - if (err) { - done(err); - } - else { - req.httpRequest.headers['X-Amz-Content-Sha256'] = sha; - done(); - } - }); - } else { - done(); - } - }); - - add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) { - if (req.httpRequest.headers['Content-Length'] === undefined) { - var length = AWS.util.string.byteLength(req.httpRequest.body); - req.httpRequest.headers['Content-Length'] = length; - } - }); - - add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) { - req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host; - }); - - add('RESTART', 'restart', function RESTART() { - var err = this.response.error; - if (!err || !err.retryable) return; - - this.httpRequest = new AWS.HttpRequest( - this.service.endpoint, - this.service.region - ); - - if (this.response.retryCount < this.service.config.maxRetries) { - this.response.retryCount++; - } else { - this.response.error = null; - } - }); - - addAsync('SIGN', 'sign', function SIGN(req, done) { - var service = req.service; - if (!service.api.signatureVersion) return done(); // none - - service.config.getCredentials(function (err, credentials) { - if (err) { - req.response.error = err; - return done(); - } - - try { - var date = AWS.util.date.getDate(); - var SignerClass = service.getSignerClass(req); - var signer = new SignerClass(req.httpRequest, - service.api.signingName || service.api.endpointPrefix, - service.config.signatureCache); - signer.setServiceClientId(service._clientId); - - delete req.httpRequest.headers['Authorization']; - delete req.httpRequest.headers['Date']; - delete req.httpRequest.headers['X-Amz-Date']; - - signer.addAuthorization(credentials, date); - req.signedAt = date; - } catch (e) { - req.response.error = e; - } - done(); - }); - }); - - add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) { - if (this.service.successfulResponse(resp, this)) { - resp.data = {}; - resp.error = null; - } else { - resp.data = null; - resp.error = AWS.util.error(new Error(), - {code: 'UnknownError', message: 'An unknown error occurred.'}); - } - }); - - addAsync('SEND', 'send', function SEND(resp, done) { - resp.httpResponse._abortCallback = done; - resp.error = null; - resp.data = null; - - function callback(httpResp) { - resp.httpResponse.stream = httpResp; - - httpResp.on('headers', function onHeaders(statusCode, headers) { - resp.request.emit('httpHeaders', [statusCode, headers, resp]); - - if (!resp.httpResponse.streaming) { - if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check - httpResp.on('readable', function onReadable() { - var data = httpResp.read(); - if (data !== null) { - resp.request.emit('httpData', [data, resp]); - } - }); - } else { // legacy streams API - httpResp.on('data', function onData(data) { - resp.request.emit('httpData', [data, resp]); - }); - } - } - }); - - httpResp.on('end', function onEnd() { - resp.request.emit('httpDone'); - done(); - }); - } - - function progress(httpResp) { - httpResp.on('sendProgress', function onSendProgress(value) { - resp.request.emit('httpUploadProgress', [value, resp]); - }); - - httpResp.on('receiveProgress', function onReceiveProgress(value) { - resp.request.emit('httpDownloadProgress', [value, resp]); - }); - } - - function error(err) { - resp.error = AWS.util.error(err, { - code: 'NetworkingError', - region: resp.request.httpRequest.region, - hostname: resp.request.httpRequest.endpoint.hostname, - retryable: true - }); - resp.request.emit('httpError', [resp.error, resp], function() { - done(); - }); - } - - function executeSend() { - var http = AWS.HttpClient.getInstance(); - var httpOptions = resp.request.service.config.httpOptions || {}; - try { - var stream = http.handleRequest(resp.request.httpRequest, httpOptions, - callback, error); - progress(stream); - } catch (err) { - error(err); - } - } - - var timeDiff = (AWS.util.date.getDate() - this.signedAt) / 1000; - if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign - this.emit('sign', [this], function(err) { - if (err) done(err); - else executeSend(); - }); - } else { - executeSend(); - } - }); - - add('HTTP_HEADERS', 'httpHeaders', - function HTTP_HEADERS(statusCode, headers, resp) { - resp.httpResponse.statusCode = statusCode; - resp.httpResponse.headers = headers; - resp.httpResponse.body = new AWS.util.Buffer(''); - resp.httpResponse.buffers = []; - resp.httpResponse.numBytes = 0; - var dateHeader = headers.date || headers.Date; - if (dateHeader) { - var serverTime = Date.parse(dateHeader); - if (resp.request.service.config.correctClockSkew - && AWS.util.isClockSkewed(serverTime)) { - AWS.util.applyClockOffset(serverTime); - } - } - }); - - add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) { - if (chunk) { - if (AWS.util.isNode()) { - resp.httpResponse.numBytes += chunk.length; - - var total = resp.httpResponse.headers['content-length']; - var progress = { loaded: resp.httpResponse.numBytes, total: total }; - resp.request.emit('httpDownloadProgress', [progress, resp]); - } - - resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk)); - } - }); - - add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) { - if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) { - var body = AWS.util.buffer.concat(resp.httpResponse.buffers); - resp.httpResponse.body = body; - } - delete resp.httpResponse.numBytes; - delete resp.httpResponse.buffers; - }); - - add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) { - if (resp.httpResponse.statusCode) { - resp.error.statusCode = resp.httpResponse.statusCode; - if (resp.error.retryable === undefined) { - resp.error.retryable = this.service.retryableError(resp.error, this); - } - } - }); - - add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) { - if (!resp.error) return; - switch (resp.error.code) { - case 'RequestExpired': // EC2 only - case 'ExpiredTokenException': - case 'ExpiredToken': - resp.error.retryable = true; - resp.request.service.config.credentials.expired = true; - } - }); - - add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) { - var err = resp.error; - if (!err) return; - if (typeof err.code === 'string' && typeof err.message === 'string') { - if (err.code.match(/Signature/) && err.message.match(/expired/)) { - resp.error.retryable = true; - } - } - }); - - add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) { - if (!resp.error) return; - if (this.service.clockSkewError(resp.error) - && this.service.config.correctClockSkew - && AWS.config.isClockSkewed) { - resp.error.retryable = true; - } - }); - - add('REDIRECT', 'retry', function REDIRECT(resp) { - if (resp.error && resp.error.statusCode >= 300 && - resp.error.statusCode < 400 && resp.httpResponse.headers['location']) { - this.httpRequest.endpoint = - new AWS.Endpoint(resp.httpResponse.headers['location']); - this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host; - resp.error.redirect = true; - resp.error.retryable = true; - } - }); - - add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) { - if (resp.error) { - if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { - resp.error.retryDelay = 0; - } else if (resp.retryCount < resp.maxRetries) { - resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0; - } - } - }); - - addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) { - var delay, willRetry = false; - - if (resp.error) { - delay = resp.error.retryDelay || 0; - if (resp.error.retryable && resp.retryCount < resp.maxRetries) { - resp.retryCount++; - willRetry = true; - } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { - resp.redirectCount++; - willRetry = true; - } - } - - if (willRetry) { - resp.error = null; - setTimeout(done, delay); - } else { - done(); - } - }); - }), - - CorePost: new SequentialExecutor().addNamedListeners(function(add) { - add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId); - add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId); - - add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) { - if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') { - var message = 'Inaccessible host: `' + err.hostname + - '\'. This service may not be available in the `' + err.region + - '\' region.'; - this.response.error = AWS.util.error(new Error(message), { - code: 'UnknownEndpoint', - region: err.region, - hostname: err.hostname, - retryable: true, - originalError: err - }); - } - }); - }), - - Logger: new SequentialExecutor().addNamedListeners(function(add) { - add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) { - var req = resp.request; - var logger = req.service.config.logger; - if (!logger) return; - - function buildMessage() { - var time = AWS.util.date.getDate().getTime(); - var delta = (time - req.startTime.getTime()) / 1000; - var ansi = logger.isTTY ? true : false; - var status = resp.httpResponse.statusCode; - var params = require('util').inspect(req.params, true, null); - - var message = ''; - if (ansi) message += '\x1B[33m'; - message += '[AWS ' + req.service.serviceIdentifier + ' ' + status; - message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]'; - if (ansi) message += '\x1B[0;1m'; - message += ' ' + AWS.util.string.lowerFirst(req.operation); - message += '(' + params + ')'; - if (ansi) message += '\x1B[0m'; - return message; - } - - var line = buildMessage(); - if (typeof logger.log === 'function') { - logger.log(line); - } else if (typeof logger.write === 'function') { - logger.write(line + '\n'); - } - }); - }), - - Json: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/json'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - Rest: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/rest'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - RestJson: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/rest_json'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - RestXml: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/rest_xml'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - Query: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/query'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }) -}; - -},{"./core":188,"./protocol/json":212,"./protocol/query":213,"./protocol/rest":214,"./protocol/rest_json":215,"./protocol/rest_xml":216,"./sequential_executor":224,"util":257}],201:[function(require,module,exports){ -var AWS = require('./core'); -var inherit = AWS.util.inherit; - - -AWS.Endpoint = inherit({ - - - constructor: function Endpoint(endpoint, config) { - AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']); - - if (typeof endpoint === 'undefined' || endpoint === null) { - throw new Error('Invalid endpoint: ' + endpoint); - } else if (typeof endpoint !== 'string') { - return AWS.util.copy(endpoint); - } - - if (!endpoint.match(/^http/)) { - var useSSL = config && config.sslEnabled !== undefined ? - config.sslEnabled : AWS.config.sslEnabled; - endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint; - } - - AWS.util.update(this, AWS.util.urlParse(endpoint)); - - if (this.port) { - this.port = parseInt(this.port, 10); - } else { - this.port = this.protocol === 'https:' ? 443 : 80; - } - } - -}); - - -AWS.HttpRequest = inherit({ - - - constructor: function HttpRequest(endpoint, region, customUserAgent) { - endpoint = new AWS.Endpoint(endpoint); - this.method = 'POST'; - this.path = endpoint.path || '/'; - this.headers = {}; - this.body = ''; - this.endpoint = endpoint; - this.region = region; - this.setUserAgent(customUserAgent); - }, - - - setUserAgent: function setUserAgent(customUserAgent) { - var prefix = AWS.util.isBrowser() ? 'X-Amz-' : ''; - var customSuffix = ''; - if (typeof customUserAgent === 'string' && customUserAgent) { - customSuffix += ' ' + customUserAgent; - } - this.headers[prefix + 'User-Agent'] = AWS.util.userAgent() + customSuffix; - }, - - - pathname: function pathname() { - return this.path.split('?', 1)[0]; - }, - - - search: function search() { - var query = this.path.split('?', 2)[1]; - if (query) { - query = AWS.util.queryStringParse(query); - return AWS.util.queryParamsToString(query); - } - return ''; - } - -}); - - -AWS.HttpResponse = inherit({ - - - constructor: function HttpResponse() { - this.statusCode = undefined; - this.headers = {}; - this.body = undefined; - this.streaming = false; - this.stream = null; - }, - - - createUnbufferedStream: function createUnbufferedStream() { - this.streaming = true; - return this.stream; - } -}); - - -AWS.HttpClient = inherit({}); - - -AWS.HttpClient.getInstance = function getInstance() { - if (this.singleton === undefined) { - this.singleton = new this(); - } - return this.singleton; -}; - -},{"./core":188}],202:[function(require,module,exports){ -var AWS = require('../core'); -var EventEmitter = require('events').EventEmitter; -require('../http'); - - -AWS.XHRClient = AWS.util.inherit({ - handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { - var self = this; - var endpoint = httpRequest.endpoint; - var emitter = new EventEmitter(); - var href = endpoint.protocol + '//' + endpoint.hostname; - if (endpoint.port !== 80 && endpoint.port !== 443) { - href += ':' + endpoint.port; - } - href += httpRequest.path; - - var xhr = new XMLHttpRequest(), headersEmitted = false; - httpRequest.stream = xhr; - - xhr.addEventListener('readystatechange', function() { - try { - if (xhr.status === 0) return; // 0 code is invalid - } catch (e) { return; } - - if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) { - try { xhr.responseType = 'arraybuffer'; } catch (e) {} - emitter.statusCode = xhr.status; - emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders()); - emitter.emit('headers', emitter.statusCode, emitter.headers); - headersEmitted = true; - } - if (this.readyState === this.DONE) { - self.finishRequest(xhr, emitter); - } - }, false); - xhr.upload.addEventListener('progress', function (evt) { - emitter.emit('sendProgress', evt); - }); - xhr.addEventListener('progress', function (evt) { - emitter.emit('receiveProgress', evt); - }, false); - xhr.addEventListener('timeout', function () { - errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'})); - }, false); - xhr.addEventListener('error', function () { - errCallback(AWS.util.error(new Error('Network Failure'), { - code: 'NetworkingError' - })); - }, false); - - callback(emitter); - xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false); - AWS.util.each(httpRequest.headers, function (key, value) { - if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') { - xhr.setRequestHeader(key, value); - } - }); - - if (httpOptions.timeout && httpOptions.xhrAsync !== false) { - xhr.timeout = httpOptions.timeout; - } - - if (httpOptions.xhrWithCredentials) { - xhr.withCredentials = true; - } - - try { - xhr.send(httpRequest.body); - } catch (err) { - if (httpRequest.body && typeof httpRequest.body.buffer === 'object') { - xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly - } else { - throw err; - } - } - - return emitter; - }, - - parseHeaders: function parseHeaders(rawHeaders) { - var headers = {}; - AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) { - var key = line.split(':', 1)[0]; - var value = line.substring(key.length + 2); - if (key.length > 0) headers[key.toLowerCase()] = value; - }); - return headers; - }, - - finishRequest: function finishRequest(xhr, emitter) { - var buffer; - if (xhr.responseType === 'arraybuffer' && xhr.response) { - var ab = xhr.response; - buffer = new AWS.util.Buffer(ab.byteLength); - var view = new Uint8Array(ab); - for (var i = 0; i < buffer.length; ++i) { - buffer[i] = view[i]; - } - } - - try { - if (!buffer && typeof xhr.responseText === 'string') { - buffer = new AWS.util.Buffer(xhr.responseText); - } - } catch (e) {} - - if (buffer) emitter.emit('data', buffer); - emitter.emit('end'); - } -}); - - -AWS.HttpClient.prototype = AWS.XHRClient.prototype; - - -AWS.HttpClient.streamsApiVersion = 1; - -},{"../core":188,"../http":201,"events":249}],203:[function(require,module,exports){ -var util = require('../util'); - -function JsonBuilder() { } - -JsonBuilder.prototype.build = function(value, shape) { - return JSON.stringify(translate(value, shape)); -}; - -function translate(value, shape) { - if (!shape || value === undefined || value === null) return undefined; - - switch (shape.type) { - case 'structure': return translateStructure(value, shape); - case 'map': return translateMap(value, shape); - case 'list': return translateList(value, shape); - default: return translateScalar(value, shape); - } -} - -function translateStructure(structure, shape) { - var struct = {}; - util.each(structure, function(name, value) { - var memberShape = shape.members[name]; - if (memberShape) { - if (memberShape.location !== 'body') return; - var locationName = memberShape.isLocationName ? memberShape.name : name; - var result = translate(value, memberShape); - if (result !== undefined) struct[locationName] = result; - } - }); - return struct; -} - -function translateList(list, shape) { - var out = []; - util.arrayEach(list, function(value) { - var result = translate(value, shape.member); - if (result !== undefined) out.push(result); - }); - return out; -} - -function translateMap(map, shape) { - var out = {}; - util.each(map, function(key, value) { - var result = translate(value, shape.value); - if (result !== undefined) out[key] = result; - }); - return out; -} - -function translateScalar(value, shape) { - return shape.toWireFormat(value); -} - -module.exports = JsonBuilder; - -},{"../util":245}],204:[function(require,module,exports){ -var util = require('../util'); - -function JsonParser() { } - -JsonParser.prototype.parse = function(value, shape) { - return translate(JSON.parse(value), shape); -}; - -function translate(value, shape) { - if (!shape || value === undefined) return undefined; - - switch (shape.type) { - case 'structure': return translateStructure(value, shape); - case 'map': return translateMap(value, shape); - case 'list': return translateList(value, shape); - default: return translateScalar(value, shape); - } -} - -function translateStructure(structure, shape) { - if (structure == null) return undefined; - - var struct = {}; - var shapeMembers = shape.members; - util.each(shapeMembers, function(name, memberShape) { - var locationName = memberShape.isLocationName ? memberShape.name : name; - if (Object.prototype.hasOwnProperty.call(structure, locationName)) { - var value = structure[locationName]; - var result = translate(value, memberShape); - if (result !== undefined) struct[name] = result; - } - }); - return struct; -} - -function translateList(list, shape) { - if (list == null) return undefined; - - var out = []; - util.arrayEach(list, function(value) { - var result = translate(value, shape.member); - if (result === undefined) out.push(null); - else out.push(result); - }); - return out; -} - -function translateMap(map, shape) { - if (map == null) return undefined; - - var out = {}; - util.each(map, function(key, value) { - var result = translate(value, shape.value); - if (result === undefined) out[key] = null; - else out[key] = result; - }); - return out; -} - -function translateScalar(value, shape) { - return shape.toType(value); -} - -module.exports = JsonParser; - -},{"../util":245}],205:[function(require,module,exports){ -var Collection = require('./collection'); -var Operation = require('./operation'); -var Shape = require('./shape'); -var Paginator = require('./paginator'); -var ResourceWaiter = require('./resource_waiter'); - -var util = require('../util'); -var property = util.property; -var memoizedProperty = util.memoizedProperty; - -function Api(api, options) { - api = api || {}; - options = options || {}; - options.api = this; - - api.metadata = api.metadata || {}; - - property(this, 'isApi', true, false); - property(this, 'apiVersion', api.metadata.apiVersion); - property(this, 'endpointPrefix', api.metadata.endpointPrefix); - property(this, 'signingName', api.metadata.signingName); - property(this, 'globalEndpoint', api.metadata.globalEndpoint); - property(this, 'signatureVersion', api.metadata.signatureVersion); - property(this, 'jsonVersion', api.metadata.jsonVersion); - property(this, 'targetPrefix', api.metadata.targetPrefix); - property(this, 'protocol', api.metadata.protocol); - property(this, 'timestampFormat', api.metadata.timestampFormat); - property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace); - property(this, 'abbreviation', api.metadata.serviceAbbreviation); - property(this, 'fullName', api.metadata.serviceFullName); - - memoizedProperty(this, 'className', function() { - var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName; - if (!name) return null; - - name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, ''); - if (name === 'ElasticLoadBalancing') name = 'ELB'; - return name; - }); - - property(this, 'operations', new Collection(api.operations, options, function(name, operation) { - return new Operation(name, operation, options); - }, util.string.lowerFirst)); - - property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) { - return Shape.create(shape, options); - })); - - property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) { - return new Paginator(name, paginator, options); - })); - - property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) { - return new ResourceWaiter(name, waiter, options); - }, util.string.lowerFirst)); - - if (options.documentation) { - property(this, 'documentation', api.documentation); - property(this, 'documentationUrl', api.documentationUrl); - } -} - -module.exports = Api; - -},{"../util":245,"./collection":206,"./operation":207,"./paginator":208,"./resource_waiter":209,"./shape":210}],206:[function(require,module,exports){ -var memoizedProperty = require('../util').memoizedProperty; - -function memoize(name, value, fn, nameTr) { - memoizedProperty(this, nameTr(name), function() { - return fn(name, value); - }); -} - -function Collection(iterable, options, fn, nameTr) { - nameTr = nameTr || String; - var self = this; - - for (var id in iterable) { - if (Object.prototype.hasOwnProperty.call(iterable, id)) { - memoize.call(self, id, iterable[id], fn, nameTr); - } - } -} - -module.exports = Collection; - -},{"../util":245}],207:[function(require,module,exports){ -var Shape = require('./shape'); - -var util = require('../util'); -var property = util.property; -var memoizedProperty = util.memoizedProperty; - -function Operation(name, operation, options) { - options = options || {}; - - property(this, 'name', operation.name || name); - property(this, 'api', options.api, false); - - operation.http = operation.http || {}; - property(this, 'httpMethod', operation.http.method || 'POST'); - property(this, 'httpPath', operation.http.requestUri || '/'); - property(this, 'authtype', operation.authtype || ''); - - memoizedProperty(this, 'input', function() { - if (!operation.input) { - return new Shape.create({type: 'structure'}, options); - } - return Shape.create(operation.input, options); - }); - - memoizedProperty(this, 'output', function() { - if (!operation.output) { - return new Shape.create({type: 'structure'}, options); - } - return Shape.create(operation.output, options); - }); - - memoizedProperty(this, 'errors', function() { - var list = []; - if (!operation.errors) return null; - - for (var i = 0; i < operation.errors.length; i++) { - list.push(Shape.create(operation.errors[i], options)); - } - - return list; - }); - - memoizedProperty(this, 'paginator', function() { - return options.api.paginators[name]; - }); - - if (options.documentation) { - property(this, 'documentation', operation.documentation); - property(this, 'documentationUrl', operation.documentationUrl); - } -} - -module.exports = Operation; - -},{"../util":245,"./shape":210}],208:[function(require,module,exports){ -var property = require('../util').property; - -function Paginator(name, paginator) { - property(this, 'inputToken', paginator.input_token); - property(this, 'limitKey', paginator.limit_key); - property(this, 'moreResults', paginator.more_results); - property(this, 'outputToken', paginator.output_token); - property(this, 'resultKey', paginator.result_key); -} - -module.exports = Paginator; - -},{"../util":245}],209:[function(require,module,exports){ -var util = require('../util'); -var property = util.property; - -function ResourceWaiter(name, waiter, options) { - options = options || {}; - property(this, 'name', name); - property(this, 'api', options.api, false); - - if (waiter.operation) { - property(this, 'operation', util.string.lowerFirst(waiter.operation)); - } - - var self = this; - var keys = [ - 'type', - 'description', - 'delay', - 'maxAttempts', - 'acceptors' - ]; - - keys.forEach(function(key) { - var value = waiter[key]; - if (value) { - property(self, key, value); - } - }); -} - -module.exports = ResourceWaiter; - -},{"../util":245}],210:[function(require,module,exports){ -var Collection = require('./collection'); - -var util = require('../util'); - -function property(obj, name, value) { - if (value !== null && value !== undefined) { - util.property.apply(this, arguments); - } -} - -function memoizedProperty(obj, name) { - if (!obj.constructor.prototype[name]) { - util.memoizedProperty.apply(this, arguments); - } -} - -function Shape(shape, options, memberName) { - options = options || {}; - - property(this, 'shape', shape.shape); - property(this, 'api', options.api, false); - property(this, 'type', shape.type); - property(this, 'enum', shape.enum); - property(this, 'min', shape.min); - property(this, 'max', shape.max); - property(this, 'pattern', shape.pattern); - property(this, 'location', shape.location || this.location || 'body'); - property(this, 'name', this.name || shape.xmlName || shape.queryName || - shape.locationName || memberName); - property(this, 'isStreaming', shape.streaming || this.isStreaming || false); - property(this, 'isComposite', shape.isComposite || false); - property(this, 'isShape', true, false); - property(this, 'isQueryName', shape.queryName ? true : false, false); - property(this, 'isLocationName', shape.locationName ? true : false, false); - - if (options.documentation) { - property(this, 'documentation', shape.documentation); - property(this, 'documentationUrl', shape.documentationUrl); - } - - if (shape.xmlAttribute) { - property(this, 'isXmlAttribute', shape.xmlAttribute || false); - } - - property(this, 'defaultValue', null); - this.toWireFormat = function(value) { - if (value === null || value === undefined) return ''; - return value; - }; - this.toType = function(value) { return value; }; -} - - -Shape.normalizedTypes = { - character: 'string', - double: 'float', - long: 'integer', - short: 'integer', - biginteger: 'integer', - bigdecimal: 'float', - blob: 'binary' -}; - - -Shape.types = { - 'structure': StructureShape, - 'list': ListShape, - 'map': MapShape, - 'boolean': BooleanShape, - 'timestamp': TimestampShape, - 'float': FloatShape, - 'integer': IntegerShape, - 'string': StringShape, - 'base64': Base64Shape, - 'binary': BinaryShape -}; - -Shape.resolve = function resolve(shape, options) { - if (shape.shape) { - var refShape = options.api.shapes[shape.shape]; - if (!refShape) { - throw new Error('Cannot find shape reference: ' + shape.shape); - } - - return refShape; - } else { - return null; - } -}; - -Shape.create = function create(shape, options, memberName) { - if (shape.isShape) return shape; - - var refShape = Shape.resolve(shape, options); - if (refShape) { - var filteredKeys = Object.keys(shape); - if (!options.documentation) { - filteredKeys = filteredKeys.filter(function(name) { - return !name.match(/documentation/); - }); - } - if (filteredKeys === ['shape']) { // no inline customizations - return refShape; - } - - var InlineShape = function() { - refShape.constructor.call(this, shape, options, memberName); - }; - InlineShape.prototype = refShape; - return new InlineShape(); - } else { - if (!shape.type) { - if (shape.members) shape.type = 'structure'; - else if (shape.member) shape.type = 'list'; - else if (shape.key) shape.type = 'map'; - else shape.type = 'string'; - } - - var origType = shape.type; - if (Shape.normalizedTypes[shape.type]) { - shape.type = Shape.normalizedTypes[shape.type]; - } - - if (Shape.types[shape.type]) { - return new Shape.types[shape.type](shape, options, memberName); - } else { - throw new Error('Unrecognized shape type: ' + origType); - } - } -}; - -function CompositeShape(shape) { - Shape.apply(this, arguments); - property(this, 'isComposite', true); - - if (shape.flattened) { - property(this, 'flattened', shape.flattened || false); - } -} - -function StructureShape(shape, options) { - var requiredMap = null, firstInit = !this.isShape; - - CompositeShape.apply(this, arguments); - - if (firstInit) { - property(this, 'defaultValue', function() { return {}; }); - property(this, 'members', {}); - property(this, 'memberNames', []); - property(this, 'required', []); - property(this, 'isRequired', function() { return false; }); - } - - if (shape.members) { - property(this, 'members', new Collection(shape.members, options, function(name, member) { - return Shape.create(member, options, name); - })); - memoizedProperty(this, 'memberNames', function() { - return shape.xmlOrder || Object.keys(shape.members); - }); - } - - if (shape.required) { - property(this, 'required', shape.required); - property(this, 'isRequired', function(name) { - if (!requiredMap) { - requiredMap = {}; - for (var i = 0; i < shape.required.length; i++) { - requiredMap[shape.required[i]] = true; - } - } - - return requiredMap[name]; - }, false, true); - } - - property(this, 'resultWrapper', shape.resultWrapper || null); - - if (shape.payload) { - property(this, 'payload', shape.payload); - } - - if (typeof shape.xmlNamespace === 'string') { - property(this, 'xmlNamespaceUri', shape.xmlNamespace); - } else if (typeof shape.xmlNamespace === 'object') { - property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix); - property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri); - } -} - -function ListShape(shape, options) { - var self = this, firstInit = !this.isShape; - CompositeShape.apply(this, arguments); - - if (firstInit) { - property(this, 'defaultValue', function() { return []; }); - } - - if (shape.member) { - memoizedProperty(this, 'member', function() { - return Shape.create(shape.member, options); - }); - } - - if (this.flattened) { - var oldName = this.name; - memoizedProperty(this, 'name', function() { - return self.member.name || oldName; - }); - } -} - -function MapShape(shape, options) { - var firstInit = !this.isShape; - CompositeShape.apply(this, arguments); - - if (firstInit) { - property(this, 'defaultValue', function() { return {}; }); - property(this, 'key', Shape.create({type: 'string'}, options)); - property(this, 'value', Shape.create({type: 'string'}, options)); - } - - if (shape.key) { - memoizedProperty(this, 'key', function() { - return Shape.create(shape.key, options); - }); - } - if (shape.value) { - memoizedProperty(this, 'value', function() { - return Shape.create(shape.value, options); - }); - } -} - -function TimestampShape(shape) { - var self = this; - Shape.apply(this, arguments); - - if (this.location === 'header') { - property(this, 'timestampFormat', 'rfc822'); - } else if (shape.timestampFormat) { - property(this, 'timestampFormat', shape.timestampFormat); - } else if (this.api) { - if (this.api.timestampFormat) { - property(this, 'timestampFormat', this.api.timestampFormat); - } else { - switch (this.api.protocol) { - case 'json': - case 'rest-json': - property(this, 'timestampFormat', 'unixTimestamp'); - break; - case 'rest-xml': - case 'query': - case 'ec2': - property(this, 'timestampFormat', 'iso8601'); - break; - } - } - } - - this.toType = function(value) { - if (value === null || value === undefined) return null; - if (typeof value.toUTCString === 'function') return value; - return typeof value === 'string' || typeof value === 'number' ? - util.date.parseTimestamp(value) : null; - }; - - this.toWireFormat = function(value) { - return util.date.format(value, self.timestampFormat); - }; -} - -function StringShape() { - Shape.apply(this, arguments); - - if (this.api) { - switch (this.api.protocol) { - case 'rest-xml': - case 'query': - case 'ec2': - this.toType = function(value) { return value || ''; }; - } - } -} - -function FloatShape() { - Shape.apply(this, arguments); - - this.toType = function(value) { - if (value === null || value === undefined) return null; - return parseFloat(value); - }; - this.toWireFormat = this.toType; -} - -function IntegerShape() { - Shape.apply(this, arguments); - - this.toType = function(value) { - if (value === null || value === undefined) return null; - return parseInt(value, 10); - }; - this.toWireFormat = this.toType; -} - -function BinaryShape() { - Shape.apply(this, arguments); - this.toType = util.base64.decode; - this.toWireFormat = util.base64.encode; -} - -function Base64Shape() { - BinaryShape.apply(this, arguments); -} - -function BooleanShape() { - Shape.apply(this, arguments); - - this.toType = function(value) { - if (typeof value === 'boolean') return value; - if (value === null || value === undefined) return null; - return value === 'true'; - }; -} - - -Shape.shapes = { - StructureShape: StructureShape, - ListShape: ListShape, - MapShape: MapShape, - StringShape: StringShape, - BooleanShape: BooleanShape, - Base64Shape: Base64Shape -}; - -module.exports = Shape; - -},{"../util":245,"./collection":206}],211:[function(require,module,exports){ -var AWS = require('./core'); - - -AWS.ParamValidator = AWS.util.inherit({ - - constructor: function ParamValidator(validation) { - if (validation === true || validation === undefined) { - validation = {'min': true}; - } - this.validation = validation; - }, - - validate: function validate(shape, params, context) { - this.errors = []; - this.validateMember(shape, params || {}, context || 'params'); - - if (this.errors.length > 1) { - var msg = this.errors.join('\n* '); - msg = 'There were ' + this.errors.length + - ' validation errors:\n* ' + msg; - throw AWS.util.error(new Error(msg), - {code: 'MultipleValidationErrors', errors: this.errors}); - } else if (this.errors.length === 1) { - throw this.errors[0]; - } else { - return true; - } - }, - - fail: function fail(code, message) { - this.errors.push(AWS.util.error(new Error(message), {code: code})); - }, - - validateStructure: function validateStructure(shape, params, context) { - this.validateType(params, context, ['object'], 'structure'); - - var paramName; - for (var i = 0; shape.required && i < shape.required.length; i++) { - paramName = shape.required[i]; - var value = params[paramName]; - if (value === undefined || value === null) { - this.fail('MissingRequiredParameter', - 'Missing required key \'' + paramName + '\' in ' + context); - } - } - - for (paramName in params) { - if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue; - - var paramValue = params[paramName], - memberShape = shape.members[paramName]; - - if (memberShape !== undefined) { - var memberContext = [context, paramName].join('.'); - this.validateMember(memberShape, paramValue, memberContext); - } else { - this.fail('UnexpectedParameter', - 'Unexpected key \'' + paramName + '\' found in ' + context); - } - } - - return true; - }, - - validateMember: function validateMember(shape, param, context) { - switch (shape.type) { - case 'structure': - return this.validateStructure(shape, param, context); - case 'list': - return this.validateList(shape, param, context); - case 'map': - return this.validateMap(shape, param, context); - default: - return this.validateScalar(shape, param, context); - } - }, - - validateList: function validateList(shape, params, context) { - if (this.validateType(params, context, [Array])) { - this.validateRange(shape, params.length, context, 'list member count'); - for (var i = 0; i < params.length; i++) { - this.validateMember(shape.member, params[i], context + '[' + i + ']'); - } - } - }, - - validateMap: function validateMap(shape, params, context) { - if (this.validateType(params, context, ['object'], 'map')) { - var mapCount = 0; - for (var param in params) { - if (!Object.prototype.hasOwnProperty.call(params, param)) continue; - this.validateMember(shape.key, param, - context + '[key=\'' + param + '\']') - this.validateMember(shape.value, params[param], - context + '[\'' + param + '\']'); - mapCount++; - } - this.validateRange(shape, mapCount, context, 'map member count'); - } - }, - - validateScalar: function validateScalar(shape, value, context) { - switch (shape.type) { - case null: - case undefined: - case 'string': - return this.validateString(shape, value, context); - case 'base64': - case 'binary': - return this.validatePayload(value, context); - case 'integer': - case 'float': - return this.validateNumber(shape, value, context); - case 'boolean': - return this.validateType(value, context, ['boolean']); - case 'timestamp': - return this.validateType(value, context, [Date, - /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'], - 'Date object, ISO-8601 string, or a UNIX timestamp'); - default: - return this.fail('UnkownType', 'Unhandled type ' + - shape.type + ' for ' + context); - } - }, - - validateString: function validateString(shape, value, context) { - if (this.validateType(value, context, ['string'])) { - this.validateEnum(shape, value, context); - this.validateRange(shape, value.length, context, 'string length'); - this.validatePattern(shape, value, context); - } - }, - - validatePattern: function validatePattern(shape, value, context) { - if (this.validation['pattern'] && shape['pattern'] !== undefined) { - if (!(new RegExp(shape['pattern'])).test(value)) { - this.fail('PatternMatchError', 'Provided value "' + value + '" ' - + 'does not match regex pattern /' + shape['pattern'] + '/ for ' - + context); - } - } - }, - - validateRange: function validateRange(shape, value, context, descriptor) { - if (this.validation['min']) { - if (shape['min'] !== undefined && value < shape['min']) { - this.fail('MinRangeError', 'Expected ' + descriptor + ' >= ' - + shape['min'] + ', but found ' + value + ' for ' + context); - } - } - if (this.validation['max']) { - if (shape['max'] !== undefined && value > shape['max']) { - this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= ' - + shape['max'] + ', but found ' + value + ' for ' + context); - } - } - }, - - validateEnum: function validateRange(shape, value, context) { - if (this.validation['enum'] && shape['enum'] !== undefined) { - if (shape['enum'].indexOf(value) === -1) { - this.fail('EnumError', 'Found string value of ' + value + ', but ' - + 'expected ' + shape['enum'].join('|') + ' for ' + context); - } - } - }, - - validateType: function validateType(value, context, acceptedTypes, type) { - if (value === null || value === undefined) return false; - - var foundInvalidType = false; - for (var i = 0; i < acceptedTypes.length; i++) { - if (typeof acceptedTypes[i] === 'string') { - if (typeof value === acceptedTypes[i]) return true; - } else if (acceptedTypes[i] instanceof RegExp) { - if ((value || '').toString().match(acceptedTypes[i])) return true; - } else { - if (value instanceof acceptedTypes[i]) return true; - if (AWS.util.isType(value, acceptedTypes[i])) return true; - if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice(); - acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]); - } - foundInvalidType = true; - } - - var acceptedType = type; - if (!acceptedType) { - acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1'); - } - - var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : ''; - this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' + - vowel + ' ' + acceptedType); - return false; - }, - - validateNumber: function validateNumber(shape, value, context) { - if (value === null || value === undefined) return; - if (typeof value === 'string') { - var castedValue = parseFloat(value); - if (castedValue.toString() === value) value = castedValue; - } - if (this.validateType(value, context, ['number'])) { - this.validateRange(shape, value, context, 'numeric value'); - } - }, - - validatePayload: function validatePayload(value, context) { - if (value === null || value === undefined) return; - if (typeof value === 'string') return; - if (value && typeof value.byteLength === 'number') return; // typed arrays - if (AWS.util.isNode()) { // special check for buffer/stream in Node.js - var Stream = AWS.util.stream.Stream; - if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; - } - - var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView']; - if (value) { - for (var i = 0; i < types.length; i++) { - if (AWS.util.isType(value, types[i])) return; - if (AWS.util.typeName(value.constructor) === types[i]) return; - } - } - - this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' + - 'string, Buffer, Stream, Blob, or typed array object'); - } -}); - -},{"./core":188}],212:[function(require,module,exports){ -var util = require('../util'); -var JsonBuilder = require('../json/builder'); -var JsonParser = require('../json/parser'); - -function buildRequest(req) { - var httpRequest = req.httpRequest; - var api = req.service.api; - var target = api.targetPrefix + '.' + api.operations[req.operation].name; - var version = api.jsonVersion || '1.0'; - var input = api.operations[req.operation].input; - var builder = new JsonBuilder(); - - if (version === 1) version = '1.0'; - httpRequest.body = builder.build(req.params || {}, input); - httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; - httpRequest.headers['X-Amz-Target'] = target; -} - -function extractError(resp) { - var error = {}; - var httpResponse = resp.httpResponse; - - error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError'; - if (typeof error.code === 'string') { - error.code = error.code.split(':')[0]; - } - - if (httpResponse.body.length > 0) { - var e = JSON.parse(httpResponse.body.toString()); - if (e.__type || e.code) { - error.code = (e.__type || e.code).split('#').pop(); - } - if (error.code === 'RequestEntityTooLarge') { - error.message = 'Request body must be less than 1 MB'; - } else { - error.message = (e.message || e.Message || null); - } - } else { - error.statusCode = httpResponse.statusCode; - error.message = httpResponse.statusCode.toString(); - } - - resp.error = util.error(new Error(), error); -} - -function extractData(resp) { - var body = resp.httpResponse.body.toString() || '{}'; - if (resp.request.service.config.convertResponseTypes === false) { - resp.data = JSON.parse(body); - } else { - var operation = resp.request.service.api.operations[resp.request.operation]; - var shape = operation.output || {}; - var parser = new JsonParser(); - resp.data = parser.parse(body, shape); - } -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; - -},{"../json/builder":203,"../json/parser":204,"../util":245}],213:[function(require,module,exports){ -var AWS = require('../core'); -var util = require('../util'); -var QueryParamSerializer = require('../query/query_param_serializer'); -var Shape = require('../model/shape'); - -function buildRequest(req) { - var operation = req.service.api.operations[req.operation]; - var httpRequest = req.httpRequest; - httpRequest.headers['Content-Type'] = - 'application/x-www-form-urlencoded; charset=utf-8'; - httpRequest.params = { - Version: req.service.api.apiVersion, - Action: operation.name - }; - - var builder = new QueryParamSerializer(); - builder.serialize(req.params, operation.input, function(name, value) { - httpRequest.params[name] = value; - }); - httpRequest.body = util.queryParamsToString(httpRequest.params); -} - -function extractError(resp) { - var data, body = resp.httpResponse.body.toString(); - if (body.match('= 0 ? '&' : '?'); - var parts = []; - util.arrayEach(Object.keys(queryString).sort(), function(key) { - if (!Array.isArray(queryString[key])) { - queryString[key] = [queryString[key]]; - } - for (var i = 0; i < queryString[key].length; i++) { - parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]); - } - }); - uri += parts.join('&'); - } - - req.httpRequest.path = uri; -} - -function populateHeaders(req) { - var operation = req.service.api.operations[req.operation]; - util.each(operation.input.members, function (name, member) { - var value = req.params[name]; - if (value === null || value === undefined) return; - - if (member.location === 'headers' && member.type === 'map') { - util.each(value, function(key, memberValue) { - req.httpRequest.headers[member.name + key] = memberValue; - }); - } else if (member.location === 'header') { - value = member.toWireFormat(value).toString(); - req.httpRequest.headers[member.name] = value; - } - }); -} - -function buildRequest(req) { - populateMethod(req); - populateURI(req); - populateHeaders(req); -} - -function extractError() { -} - -function extractData(resp) { - var req = resp.request; - var data = {}; - var r = resp.httpResponse; - var operation = req.service.api.operations[req.operation]; - var output = operation.output; - - var headers = {}; - util.each(r.headers, function (k, v) { - headers[k.toLowerCase()] = v; - }); - - util.each(output.members, function(name, member) { - var header = (member.name || name).toLowerCase(); - if (member.location === 'headers' && member.type === 'map') { - data[name] = {}; - var location = member.isLocationName ? member.name : ''; - var pattern = new RegExp('^' + location + '(.+)', 'i'); - util.each(r.headers, function (k, v) { - var result = k.match(pattern); - if (result !== null) { - data[name][result[1]] = v; - } - }); - } else if (member.location === 'header') { - if (headers[header] !== undefined) { - data[name] = headers[header]; - } - } else if (member.location === 'statusCode') { - data[name] = parseInt(r.statusCode, 10); - } - }); - - resp.data = data; -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; - -},{"../util":245}],215:[function(require,module,exports){ -var util = require('../util'); -var Rest = require('./rest'); -var Json = require('./json'); -var JsonBuilder = require('../json/builder'); -var JsonParser = require('../json/parser'); - -function populateBody(req) { - var builder = new JsonBuilder(); - var input = req.service.api.operations[req.operation].input; - - if (input.payload) { - var params = {}; - var payloadShape = input.members[input.payload]; - params = req.params[input.payload]; - if (params === undefined) return; - - if (payloadShape.type === 'structure') { - req.httpRequest.body = builder.build(params, payloadShape); - } else { // non-JSON payload - req.httpRequest.body = params; - } - } else { - req.httpRequest.body = builder.build(req.params, input); - } -} - -function buildRequest(req) { - Rest.buildRequest(req); - - if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) { - populateBody(req); - } -} - -function extractError(resp) { - Json.extractError(resp); -} - -function extractData(resp) { - Rest.extractData(resp); - - var req = resp.request; - var rules = req.service.api.operations[req.operation].output || {}; - if (rules.payload) { - var payloadMember = rules.members[rules.payload]; - var body = resp.httpResponse.body; - if (payloadMember.isStreaming) { - resp.data[rules.payload] = body; - } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') { - var parser = new JsonParser(); - resp.data[rules.payload] = parser.parse(body, payloadMember); - } else { - resp.data[rules.payload] = body.toString(); - } - } else { - var data = resp.data; - Json.extractData(resp); - resp.data = util.merge(data, resp.data); - } -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; - -},{"../json/builder":203,"../json/parser":204,"../util":245,"./json":212,"./rest":214}],216:[function(require,module,exports){ -var AWS = require('../core'); -var util = require('../util'); -var Rest = require('./rest'); - -function populateBody(req) { - var input = req.service.api.operations[req.operation].input; - var builder = new AWS.XML.Builder(); - var params = req.params; - - var payload = input.payload; - if (payload) { - var payloadMember = input.members[payload]; - params = params[payload]; - if (params === undefined) return; - - if (payloadMember.type === 'structure') { - var rootElement = payloadMember.name; - req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true); - } else { // non-xml payload - req.httpRequest.body = params; - } - } else { - req.httpRequest.body = builder.toXML(params, input, input.name || - input.shape || util.string.upperFirst(req.operation) + 'Request'); - } -} - -function buildRequest(req) { - Rest.buildRequest(req); - - if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) { - populateBody(req); - } -} - -function extractError(resp) { - Rest.extractError(resp); - - var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString()); - if (data.Errors) data = data.Errors; - if (data.Error) data = data.Error; - if (data.Code) { - resp.error = util.error(new Error(), { - code: data.Code, - message: data.Message - }); - } else { - resp.error = util.error(new Error(), { - code: resp.httpResponse.statusCode, - message: null - }); - } -} - -function extractData(resp) { - Rest.extractData(resp); - - var parser; - var req = resp.request; - var body = resp.httpResponse.body; - var operation = req.service.api.operations[req.operation]; - var output = operation.output; - - var payload = output.payload; - if (payload) { - var payloadMember = output.members[payload]; - if (payloadMember.isStreaming) { - resp.data[payload] = body; - } else if (payloadMember.type === 'structure') { - parser = new AWS.XML.Parser(); - resp.data[payload] = parser.parse(body.toString(), payloadMember); - } else { - resp.data[payload] = body.toString(); - } - } else if (body.length > 0) { - parser = new AWS.XML.Parser(); - var data = parser.parse(body.toString(), output); - util.update(resp.data, data); - } -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; - -},{"../core":188,"../util":245,"./rest":214}],217:[function(require,module,exports){ -var util = require('../util'); - -function QueryParamSerializer() { -} - -QueryParamSerializer.prototype.serialize = function(params, shape, fn) { - serializeStructure('', params, shape, fn); -}; - -function ucfirst(shape) { - if (shape.isQueryName || shape.api.protocol !== 'ec2') { - return shape.name; - } else { - return shape.name[0].toUpperCase() + shape.name.substr(1); - } -} - -function serializeStructure(prefix, struct, rules, fn) { - util.each(rules.members, function(name, member) { - var value = struct[name]; - if (value === null || value === undefined) return; - - var memberName = ucfirst(member); - memberName = prefix ? prefix + '.' + memberName : memberName; - serializeMember(memberName, value, member, fn); - }); -} - -function serializeMap(name, map, rules, fn) { - var i = 1; - util.each(map, function (key, value) { - var prefix = rules.flattened ? '.' : '.entry.'; - var position = prefix + (i++) + '.'; - var keyName = position + (rules.key.name || 'key'); - var valueName = position + (rules.value.name || 'value'); - serializeMember(name + keyName, key, rules.key, fn); - serializeMember(name + valueName, value, rules.value, fn); - }); -} - -function serializeList(name, list, rules, fn) { - var memberRules = rules.member || {}; - - if (list.length === 0) { - fn.call(this, name, null); - return; - } - - util.arrayEach(list, function (v, n) { - var suffix = '.' + (n + 1); - if (rules.api.protocol === 'ec2') { - suffix = suffix + ''; // make linter happy - } else if (rules.flattened) { - if (memberRules.name) { - var parts = name.split('.'); - parts.pop(); - parts.push(ucfirst(memberRules)); - name = parts.join('.'); - } - } else { - suffix = '.member' + suffix; - } - serializeMember(name + suffix, v, memberRules, fn); - }); -} - -function serializeMember(name, value, rules, fn) { - if (value === null || value === undefined) return; - if (rules.type === 'structure') { - serializeStructure(name, value, rules, fn); - } else if (rules.type === 'list') { - serializeList(name, value, rules, fn); - } else if (rules.type === 'map') { - serializeMap(name, value, rules, fn); - } else { - fn(name, rules.toWireFormat(value).toString()); - } -} - -module.exports = QueryParamSerializer; - -},{"../util":245}],218:[function(require,module,exports){ -module.exports={ - "rules": { - "*/*": { - "endpoint": "{service}.{region}.amazonaws.com" - }, - "cn-*/*": { - "endpoint": "{service}.{region}.amazonaws.com.cn" - }, - "*/cloudfront": "globalSSL", - "*/iam": "globalSSL", - "*/sts": "globalSSL", - "*/importexport": { - "endpoint": "{service}.amazonaws.com", - "signatureVersion": "v2", - "globalEndpoint": true - }, - "*/route53": { - "endpoint": "https://{service}.amazonaws.com", - "signatureVersion": "v3https", - "globalEndpoint": true - }, - "*/waf": "globalSSL", - "us-gov-*/iam": "globalGovCloud", - "us-gov-*/sts": { - "endpoint": "{service}.{region}.amazonaws.com" - }, - "us-gov-west-1/s3": "s3dash", - "us-west-1/s3": "s3dash", - "us-west-2/s3": "s3dash", - "eu-west-1/s3": "s3dash", - "ap-southeast-1/s3": "s3dash", - "ap-southeast-2/s3": "s3dash", - "ap-northeast-1/s3": "s3dash", - "sa-east-1/s3": "s3dash", - "us-east-1/s3": { - "endpoint": "{service}.amazonaws.com", - "signatureVersion": "s3" - }, - "us-east-1/sdb": { - "endpoint": "{service}.amazonaws.com", - "signatureVersion": "v2" - }, - "*/sdb": { - "endpoint": "{service}.{region}.amazonaws.com", - "signatureVersion": "v2" - } - }, - - "patterns": { - "globalSSL": { - "endpoint": "https://{service}.amazonaws.com", - "globalEndpoint": true - }, - "globalGovCloud": { - "endpoint": "{service}.us-gov.amazonaws.com" - }, - "s3dash": { - "endpoint": "{service}-{region}.amazonaws.com", - "signatureVersion": "s3" - } - } -} - -},{}],219:[function(require,module,exports){ -var util = require('./util'); -var regionConfig = require('./region_config.json'); - -function generateRegionPrefix(region) { - if (!region) return null; - - var parts = region.split('-'); - if (parts.length < 3) return null; - return parts.slice(0, parts.length - 2).join('-') + '-*'; -} - -function derivedKeys(service) { - var region = service.config.region; - var regionPrefix = generateRegionPrefix(region); - var endpointPrefix = service.api.endpointPrefix; - - return [ - [region, endpointPrefix], - [regionPrefix, endpointPrefix], - [region, '*'], - [regionPrefix, '*'], - ['*', endpointPrefix], - ['*', '*'] - ].map(function(item) { - return item[0] && item[1] ? item.join('/') : null; - }); -} - -function applyConfig(service, config) { - util.each(config, function(key, value) { - if (key === 'globalEndpoint') return; - if (service.config[key] === undefined || service.config[key] === null) { - service.config[key] = value; - } - }); -} - -function configureEndpoint(service) { - var keys = derivedKeys(service); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!key) continue; - - if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) { - var config = regionConfig.rules[key]; - if (typeof config === 'string') { - config = regionConfig.patterns[config]; - } - - if (service.config.useDualstack && util.isDualstackAvailable(service)) { - config = util.copy(config); - config.endpoint = '{service}.dualstack.{region}.amazonaws.com'; - } - - service.isGlobalEndpoint = !!config.globalEndpoint; - - if (!config.signatureVersion) config.signatureVersion = 'v4'; - - applyConfig(service, config); - return; - } - } -} - -module.exports = configureEndpoint; - -},{"./region_config.json":218,"./util":245}],220:[function(require,module,exports){ -(function (process){ -var AWS = require('./core'); -var AcceptorStateMachine = require('./state_machine'); -var inherit = AWS.util.inherit; -var domain = AWS.util.domain; -var jmespath = require('jmespath'); - - -var hardErrorStates = {success: 1, error: 1, complete: 1}; - -function isTerminalState(machine) { - return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState); -} - -var fsm = new AcceptorStateMachine(); -fsm.setupStates = function() { - var transition = function(_, done) { - var self = this; - self._haltHandlersOnError = false; - - self.emit(self._asm.currentState, function(err) { - if (err) { - if (isTerminalState(self)) { - if (domain && self.domain instanceof domain.Domain) { - err.domainEmitter = self; - err.domain = self.domain; - err.domainThrown = false; - self.domain.emit('error', err); - } else { - throw err; - } - } else { - self.response.error = err; - done(err); - } - } else { - done(self.response.error); - } - }); - - }; - - this.addState('validate', 'build', 'error', transition); - this.addState('build', 'afterBuild', 'restart', transition); - this.addState('afterBuild', 'sign', 'restart', transition); - this.addState('sign', 'send', 'retry', transition); - this.addState('retry', 'afterRetry', 'afterRetry', transition); - this.addState('afterRetry', 'sign', 'error', transition); - this.addState('send', 'validateResponse', 'retry', transition); - this.addState('validateResponse', 'extractData', 'extractError', transition); - this.addState('extractError', 'extractData', 'retry', transition); - this.addState('extractData', 'success', 'retry', transition); - this.addState('restart', 'build', 'error', transition); - this.addState('success', 'complete', 'complete', transition); - this.addState('error', 'complete', 'complete', transition); - this.addState('complete', null, null, transition); -}; -fsm.setupStates(); - - -AWS.Request = inherit({ - - - constructor: function Request(service, operation, params) { - var endpoint = service.endpoint; - var region = service.config.region; - var customUserAgent = service.config.customUserAgent; - - if (service.isGlobalEndpoint) region = 'us-east-1'; - - this.domain = domain && domain.active; - this.service = service; - this.operation = operation; - this.params = params || {}; - this.httpRequest = new AWS.HttpRequest(endpoint, region, customUserAgent); - this.startTime = AWS.util.date.getDate(); - - this.response = new AWS.Response(this); - this._asm = new AcceptorStateMachine(fsm.states, 'validate'); - this._haltHandlersOnError = false; - - AWS.SequentialExecutor.call(this); - this.emit = this.emitEvent; - }, - - - - - send: function send(callback) { - if (callback) { - this.on('complete', function (resp) { - callback.call(resp, resp.error, resp.data); - }); - } - this.runTo(); - - return this.response; - }, - - - - - build: function build(callback) { - return this.runTo('send', callback); - }, - - - runTo: function runTo(state, done) { - this._asm.runTo(state, done, this); - return this; - }, - - - abort: function abort() { - this.removeAllListeners('validateResponse'); - this.removeAllListeners('extractError'); - this.on('validateResponse', function addAbortedError(resp) { - resp.error = AWS.util.error(new Error('Request aborted by user'), { - code: 'RequestAbortedError', retryable: false - }); - }); - - if (this.httpRequest.stream) { // abort HTTP stream - this.httpRequest.stream.abort(); - if (this.httpRequest._abortCallback) { - this.httpRequest._abortCallback(); - } else { - this.removeAllListeners('send'); // haven't sent yet, so let's not - } - } - - return this; - }, - - - eachPage: function eachPage(callback) { - callback = AWS.util.fn.makeAsync(callback, 3); - - function wrappedCallback(response) { - callback.call(response, response.error, response.data, function (result) { - if (result === false) return; - - if (response.hasNextPage()) { - response.nextPage().on('complete', wrappedCallback).send(); - } else { - callback.call(response, null, null, AWS.util.fn.noop); - } - }); - } - - this.on('complete', wrappedCallback).send(); - }, - - - eachItem: function eachItem(callback) { - var self = this; - function wrappedCallback(err, data) { - if (err) return callback(err, null); - if (data === null) return callback(null, null); - - var config = self.service.paginationConfig(self.operation); - var resultKey = config.resultKey; - if (Array.isArray(resultKey)) resultKey = resultKey[0]; - var items = jmespath.search(data, resultKey); - var continueIteration = true; - AWS.util.arrayEach(items, function(item) { - continueIteration = callback(null, item); - if (continueIteration === false) { - return AWS.util.abort; - } - }); - return continueIteration; - } - - this.eachPage(wrappedCallback); - }, - - - isPageable: function isPageable() { - return this.service.paginationConfig(this.operation) ? true : false; - }, - - - createReadStream: function createReadStream() { - var streams = AWS.util.stream; - var req = this; - var stream = null; - - if (AWS.HttpClient.streamsApiVersion === 2) { - stream = new streams.PassThrough(); - req.send(); - } else { - stream = new streams.Stream(); - stream.readable = true; - - stream.sent = false; - stream.on('newListener', function(event) { - if (!stream.sent && event === 'data') { - stream.sent = true; - process.nextTick(function() { req.send(); }); - } - }); - } - - this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) { - if (statusCode < 300) { - req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA); - req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR); - req.on('httpError', function streamHttpError(error) { - resp.error = error; - resp.error.retryable = false; - }); - - var shouldCheckContentLength = false; - var expectedLen; - if (req.httpRequest.method !== 'HEAD') { - expectedLen = parseInt(headers['content-length'], 10); - } - if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) { - shouldCheckContentLength = true; - var receivedLen = 0; - } - - var checkContentLengthAndEmit = function checkContentLengthAndEmit() { - if (shouldCheckContentLength && receivedLen !== expectedLen) { - stream.emit('error', AWS.util.error( - new Error('Stream content length mismatch. Received ' + - receivedLen + ' of ' + expectedLen + ' bytes.'), - { code: 'StreamContentLengthMismatch' } - )); - } else if (AWS.HttpClient.streamsApiVersion === 2) { - stream.end(); - } else { - stream.emit('end') - } - } - - var httpStream = resp.httpResponse.createUnbufferedStream(); - - if (AWS.HttpClient.streamsApiVersion === 2) { - if (shouldCheckContentLength) { - var lengthAccumulator = new streams.PassThrough(); - lengthAccumulator._write = function(chunk) { - if (chunk && chunk.length) { - receivedLen += chunk.length; - } - return streams.PassThrough.prototype._write.apply(this, arguments); - }; - - lengthAccumulator.on('end', checkContentLengthAndEmit); - httpStream.pipe(lengthAccumulator).pipe(stream, { end: false }); - } else { - httpStream.pipe(stream); - } - } else { - - if (shouldCheckContentLength) { - httpStream.on('data', function(arg) { - if (arg && arg.length) { - receivedLen += arg.length; - } - }); - } - - httpStream.on('data', function(arg) { - stream.emit('data', arg); - }); - httpStream.on('end', checkContentLengthAndEmit); - } - - httpStream.on('error', function(err) { - shouldCheckContentLength = false; - stream.emit('error', err); - }); - } - }); - - this.on('error', function(err) { - stream.emit('error', err); - }); - - return stream; - }, - - - emitEvent: function emit(eventName, args, done) { - if (typeof args === 'function') { done = args; args = null; } - if (!done) done = function() { }; - if (!args) args = this.eventParameters(eventName, this.response); - - var origEmit = AWS.SequentialExecutor.prototype.emit; - origEmit.call(this, eventName, args, function (err) { - if (err) this.response.error = err; - done.call(this, err); - }); - }, - - - eventParameters: function eventParameters(eventName) { - switch (eventName) { - case 'restart': - case 'validate': - case 'sign': - case 'build': - case 'afterValidate': - case 'afterBuild': - return [this]; - case 'error': - return [this.response.error, this.response]; - default: - return [this.response]; - } - }, - - - presign: function presign(expires, callback) { - if (!callback && typeof expires === 'function') { - callback = expires; - expires = null; - } - return new AWS.Signers.Presign().sign(this.toGet(), expires, callback); - }, - - - isPresigned: function isPresigned() { - return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires'); - }, - - - toUnauthenticated: function toUnauthenticated() { - this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS); - this.removeListener('sign', AWS.EventListeners.Core.SIGN); - return this; - }, - - - toGet: function toGet() { - if (this.service.api.protocol === 'query' || - this.service.api.protocol === 'ec2') { - this.removeListener('build', this.buildAsGet); - this.addListener('build', this.buildAsGet); - } - return this; - }, - - - buildAsGet: function buildAsGet(request) { - request.httpRequest.method = 'GET'; - request.httpRequest.path = request.service.endpoint.path + - '?' + request.httpRequest.body; - request.httpRequest.body = ''; - - delete request.httpRequest.headers['Content-Length']; - delete request.httpRequest.headers['Content-Type']; - }, - - - haltHandlersOnError: function haltHandlersOnError() { - this._haltHandlersOnError = true; - } -}); - -AWS.util.addPromisesToRequests(AWS.Request); - -AWS.util.mixin(AWS.Request, AWS.SequentialExecutor); - -}).call(this,require('_process')) -},{"./core":188,"./state_machine":244,"_process":250,"jmespath":268}],221:[function(require,module,exports){ - - -var AWS = require('./core'); -var inherit = AWS.util.inherit; -var jmespath = require('jmespath'); - - -function CHECK_ACCEPTORS(resp) { - var waiter = resp.request._waiter; - var acceptors = waiter.config.acceptors; - var acceptorMatched = false; - var state = 'retry'; - - acceptors.forEach(function(acceptor) { - if (!acceptorMatched) { - var matcher = waiter.matchers[acceptor.matcher]; - if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) { - acceptorMatched = true; - state = acceptor.state; - } - } - }); - - if (!acceptorMatched && resp.error) state = 'failure'; - - if (state === 'success') { - waiter.setSuccess(resp); - } else { - waiter.setError(resp, state === 'retry'); - } -} - - -AWS.ResourceWaiter = inherit({ - - constructor: function constructor(service, state) { - this.service = service; - this.state = state; - this.loadWaiterConfig(this.state); - }, - - service: null, - - state: null, - - config: null, - - matchers: { - path: function(resp, expected, argument) { - var result = jmespath.search(resp.data, argument); - return jmespath.strictDeepEqual(result,expected); - }, - - pathAll: function(resp, expected, argument) { - var results = jmespath.search(resp.data, argument); - if (!Array.isArray(results)) results = [results]; - var numResults = results.length; - if (!numResults) return false; - for (var ind = 0 ; ind < numResults; ind++) { - if (!jmespath.strictDeepEqual(results[ind], expected)) { - return false; - } - } - return true; - }, - - pathAny: function(resp, expected, argument) { - var results = jmespath.search(resp.data, argument); - if (!Array.isArray(results)) results = [results]; - var numResults = results.length; - for (var ind = 0 ; ind < numResults; ind++) { - if (jmespath.strictDeepEqual(results[ind], expected)) { - return true; - } - } - return false; - }, - - status: function(resp, expected) { - var statusCode = resp.httpResponse.statusCode; - return (typeof statusCode === 'number') && (statusCode === expected); - }, - - error: function(resp, expected) { - if (typeof expected === 'string' && resp.error) { - return expected === resp.error.code; - } - return expected === !!resp.error; - } - }, - - listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) { - add('RETRY_CHECK', 'retry', function(resp) { - var waiter = resp.request._waiter; - if (resp.error && resp.error.code === 'ResourceNotReady') { - resp.error.retryDelay = (waiter.config.delay || 0) * 1000; - } - }); - - add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS); - - add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS); - }), - - - wait: function wait(params, callback) { - if (typeof params === 'function') { - callback = params; params = undefined; - } - - var request = this.service.makeRequest(this.config.operation, params); - request._waiter = this; - request.response.maxRetries = this.config.maxAttempts; - request.addListeners(this.listeners); - - if (callback) request.send(callback); - return request; - }, - - setSuccess: function setSuccess(resp) { - resp.error = null; - resp.data = resp.data || {}; - resp.request.removeAllListeners('extractData'); - }, - - setError: function setError(resp, retryable) { - resp.data = null; - resp.error = AWS.util.error(resp.error || new Error(), { - code: 'ResourceNotReady', - message: 'Resource is not in the state ' + this.state, - retryable: retryable - }); - }, - - - loadWaiterConfig: function loadWaiterConfig(state) { - if (!this.service.api.waiters[state]) { - throw new AWS.util.error(new Error(), { - code: 'StateNotFoundError', - message: 'State ' + state + ' not found.' - }); - } - - this.config = this.service.api.waiters[state]; - } -}); - -},{"./core":188,"jmespath":268}],222:[function(require,module,exports){ -var AWS = require('./core'); -var inherit = AWS.util.inherit; -var jmespath = require('jmespath'); - - -AWS.Response = inherit({ - - - constructor: function Response(request) { - this.request = request; - this.data = null; - this.error = null; - this.retryCount = 0; - this.redirectCount = 0; - this.httpResponse = new AWS.HttpResponse(); - if (request) { - this.maxRetries = request.service.numRetries(); - this.maxRedirects = request.service.config.maxRedirects; - } - }, - - - nextPage: function nextPage(callback) { - var config; - var service = this.request.service; - var operation = this.request.operation; - try { - config = service.paginationConfig(operation, true); - } catch (e) { this.error = e; } - - if (!this.hasNextPage()) { - if (callback) callback(this.error, null); - else if (this.error) throw this.error; - return null; - } - - var params = AWS.util.copy(this.request.params); - if (!this.nextPageTokens) { - return callback ? callback(null, null) : null; - } else { - var inputTokens = config.inputToken; - if (typeof inputTokens === 'string') inputTokens = [inputTokens]; - for (var i = 0; i < inputTokens.length; i++) { - params[inputTokens[i]] = this.nextPageTokens[i]; - } - return service.makeRequest(this.request.operation, params, callback); - } - }, - - - hasNextPage: function hasNextPage() { - this.cacheNextPageTokens(); - if (this.nextPageTokens) return true; - if (this.nextPageTokens === undefined) return undefined; - else return false; - }, - - - cacheNextPageTokens: function cacheNextPageTokens() { - if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens; - this.nextPageTokens = undefined; - - var config = this.request.service.paginationConfig(this.request.operation); - if (!config) return this.nextPageTokens; - - this.nextPageTokens = null; - if (config.moreResults) { - if (!jmespath.search(this.data, config.moreResults)) { - return this.nextPageTokens; - } - } - - var exprs = config.outputToken; - if (typeof exprs === 'string') exprs = [exprs]; - AWS.util.arrayEach.call(this, exprs, function (expr) { - var output = jmespath.search(this.data, expr); - if (output) { - this.nextPageTokens = this.nextPageTokens || []; - this.nextPageTokens.push(output); - } - }); - - return this.nextPageTokens; - } - -}); - -},{"./core":188,"jmespath":268}],223:[function(require,module,exports){ -var AWS = require('../core'); -var byteLength = AWS.util.string.byteLength; -var Buffer = AWS.util.Buffer; - - -AWS.S3.ManagedUpload = AWS.util.inherit({ - - constructor: function ManagedUpload(options) { - var self = this; - AWS.SequentialExecutor.call(self); - self.body = null; - self.sliceFn = null; - self.callback = null; - self.parts = {}; - self.completeInfo = []; - self.fillQueue = function() { - self.callback(new Error('Unsupported body payload ' + typeof self.body)); - }; - - self.configure(options); - }, - - - configure: function configure(options) { - options = options || {}; - this.partSize = this.minPartSize; - - if (options.queueSize) this.queueSize = options.queueSize; - if (options.partSize) this.partSize = options.partSize; - if (options.leavePartsOnError) this.leavePartsOnError = true; - - if (this.partSize < this.minPartSize) { - throw new Error('partSize must be greater than ' + - this.minPartSize); - } - - this.service = options.service; - this.bindServiceObject(options.params); - this.validateBody(); - this.adjustTotalBytes(); - }, - - - leavePartsOnError: false, - - - queueSize: 4, - - - partSize: null, - - - minPartSize: 1024 * 1024 * 5, - - - maxTotalParts: 10000, - - - send: function(callback) { - var self = this; - self.failed = false; - self.callback = callback || function(err) { if (err) throw err; }; - - var runFill = true; - if (self.sliceFn) { - self.fillQueue = self.fillBuffer; - } else if (AWS.util.isNode()) { - var Stream = AWS.util.stream.Stream; - if (self.body instanceof Stream) { - runFill = false; - self.fillQueue = self.fillStream; - self.partBuffers = []; - self.body. - on('readable', function() { self.fillQueue(); }). - on('end', function() { - self.isDoneChunking = true; - self.numParts = self.totalPartNumbers; - self.fillQueue.call(self); - }); - } - } - - if (runFill) self.fillQueue.call(self); - }, - - - abort: function() { - this.cleanup(AWS.util.error(new Error('Request aborted by user'), { - code: 'RequestAbortedError', retryable: false - })); - }, - - - validateBody: function validateBody() { - var self = this; - self.body = self.service.config.params.Body; - if (!self.body) throw new Error('params.Body is required'); - if (typeof self.body === 'string') { - self.body = new AWS.util.Buffer(self.body); - } - self.sliceFn = AWS.util.arraySliceFn(self.body); - }, - - - bindServiceObject: function bindServiceObject(params) { - params = params || {}; - var self = this; - - if (!self.service) { - self.service = new AWS.S3({params: params}); - } else { - var config = AWS.util.copy(self.service.config); - self.service = new self.service.constructor.__super__(config); - self.service.config.params = - AWS.util.merge(self.service.config.params || {}, params); - } - }, - - - adjustTotalBytes: function adjustTotalBytes() { - var self = this; - try { // try to get totalBytes - self.totalBytes = byteLength(self.body); - } catch (e) { } - - if (self.totalBytes) { - var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts); - if (newPartSize > self.partSize) self.partSize = newPartSize; - } else { - self.totalBytes = undefined; - } - }, - - - isDoneChunking: false, - - - partPos: 0, - - - totalChunkedBytes: 0, - - - totalUploadedBytes: 0, - - - totalBytes: undefined, - - - numParts: 0, - - - totalPartNumbers: 0, - - - activeParts: 0, - - - doneParts: 0, - - - parts: null, - - - completeInfo: null, - - - failed: false, - - - multipartReq: null, - - - partBuffers: null, - - - partBufferLength: 0, - - - fillBuffer: function fillBuffer() { - var self = this; - var bodyLen = byteLength(self.body); - - if (bodyLen === 0) { - self.isDoneChunking = true; - self.numParts = 1; - self.nextChunk(self.body); - return; - } - - while (self.activeParts < self.queueSize && self.partPos < bodyLen) { - var endPos = Math.min(self.partPos + self.partSize, bodyLen); - var buf = self.sliceFn.call(self.body, self.partPos, endPos); - self.partPos += self.partSize; - - if (byteLength(buf) < self.partSize || self.partPos === bodyLen) { - self.isDoneChunking = true; - self.numParts = self.totalPartNumbers + 1; - } - self.nextChunk(buf); - } - }, - - - fillStream: function fillStream() { - var self = this; - if (self.activeParts >= self.queueSize) return; - - var buf = self.body.read(self.partSize - self.partBufferLength) || - self.body.read(); - if (buf) { - self.partBuffers.push(buf); - self.partBufferLength += buf.length; - self.totalChunkedBytes += buf.length; - } - - if (self.partBufferLength >= self.partSize) { - var pbuf = self.partBuffers.length === 1 ? - self.partBuffers[0] : Buffer.concat(self.partBuffers); - self.partBuffers = []; - self.partBufferLength = 0; - - if (pbuf.length > self.partSize) { - var rest = pbuf.slice(self.partSize); - self.partBuffers.push(rest); - self.partBufferLength += rest.length; - pbuf = pbuf.slice(0, self.partSize); - } - - self.nextChunk(pbuf); - } - - if (self.isDoneChunking && !self.isDoneSending) { - pbuf = self.partBuffers.length === 1 ? - self.partBuffers[0] : Buffer.concat(self.partBuffers); - self.partBuffers = []; - self.partBufferLength = 0; - self.totalBytes = self.totalChunkedBytes; - self.isDoneSending = true; - - if (self.numParts === 0 || pbuf.length > 0) { - self.numParts++; - self.nextChunk(pbuf); - } - } - - self.body.read(0); - }, - - - nextChunk: function nextChunk(chunk) { - var self = this; - if (self.failed) return null; - - var partNumber = ++self.totalPartNumbers; - if (self.isDoneChunking && partNumber === 1) { - var req = self.service.putObject({Body: chunk}); - req._managedUpload = self; - req.on('httpUploadProgress', self.progress).send(self.finishSinglePart); - return null; - } else if (self.service.config.params.ContentMD5) { - var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), { - code: 'InvalidDigest', retryable: false - }); - - self.cleanup(err); - return null; - } - - if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) { - return null; // Already uploaded this part. - } - - self.activeParts++; - if (!self.service.config.params.UploadId) { - - if (!self.multipartReq) { // create multipart - self.multipartReq = self.service.createMultipartUpload(); - self.multipartReq.on('success', function(resp) { - self.service.config.params.UploadId = resp.data.UploadId; - self.multipartReq = null; - }); - self.queueChunks(chunk, partNumber); - self.multipartReq.on('error', function(err) { - self.cleanup(err); - }); - self.multipartReq.send(); - } else { - self.queueChunks(chunk, partNumber); - } - } else { // multipart is created, just send - self.uploadPart(chunk, partNumber); - } - }, - - - uploadPart: function uploadPart(chunk, partNumber) { - var self = this; - - var partParams = { - Body: chunk, - ContentLength: AWS.util.string.byteLength(chunk), - PartNumber: partNumber - }; - - var partInfo = {ETag: null, PartNumber: partNumber}; - self.completeInfo[partNumber] = partInfo; - - var req = self.service.uploadPart(partParams); - self.parts[partNumber] = req; - req._lastUploadedBytes = 0; - req._managedUpload = self; - req.on('httpUploadProgress', self.progress); - req.send(function(err, data) { - delete self.parts[partParams.PartNumber]; - self.activeParts--; - - if (!err && (!data || !data.ETag)) { - var message = 'No access to ETag property on response.'; - if (AWS.util.isBrowser()) { - message += ' Check CORS configuration to expose ETag header.'; - } - - err = AWS.util.error(new Error(message), { - code: 'ETagMissing', retryable: false - }); - } - if (err) return self.cleanup(err); - - partInfo.ETag = data.ETag; - self.doneParts++; - if (self.isDoneChunking && self.doneParts === self.numParts) { - self.finishMultiPart(); - } else { - self.fillQueue.call(self); - } - }); - }, - - - queueChunks: function queueChunks(chunk, partNumber) { - var self = this; - self.multipartReq.on('success', function() { - self.uploadPart(chunk, partNumber); - }); - }, - - - cleanup: function cleanup(err) { - var self = this; - if (self.failed) return; - - if (typeof self.body.removeAllListeners === 'function' && - typeof self.body.resume === 'function') { - self.body.removeAllListeners('readable'); - self.body.removeAllListeners('end'); - self.body.resume(); - } - - if (self.service.config.params.UploadId && !self.leavePartsOnError) { - self.service.abortMultipartUpload().send(); - } - - AWS.util.each(self.parts, function(partNumber, part) { - part.removeAllListeners('complete'); - part.abort(); - }); - - self.activeParts = 0; - self.partPos = 0; - self.numParts = 0; - self.totalPartNumbers = 0; - self.parts = {}; - self.failed = true; - self.callback(err); - }, - - - finishMultiPart: function finishMultiPart() { - var self = this; - var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } }; - self.service.completeMultipartUpload(completeParams, function(err, data) { - if (err) return self.cleanup(err); - else self.callback(err, data); - }); - }, - - - finishSinglePart: function finishSinglePart(err, data) { - var upload = this.request._managedUpload; - var httpReq = this.request.httpRequest; - var endpoint = httpReq.endpoint; - if (err) return upload.callback(err); - data.Location = - [endpoint.protocol, '//', endpoint.host, httpReq.path].join(''); - data.key = this.request.params.Key; // will stay undocumented - data.Key = this.request.params.Key; - data.Bucket = this.request.params.Bucket; - upload.callback(err, data); - }, - - - progress: function progress(info) { - var upload = this._managedUpload; - if (this.operation === 'putObject') { - info.part = 1; - info.key = this.params.Key; - } else { - upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes; - this._lastUploadedBytes = info.loaded; - info = { - loaded: upload.totalUploadedBytes, - total: upload.totalBytes, - part: this.params.PartNumber, - key: this.params.Key - }; - } - upload.emit('httpUploadProgress', [info]); - } -}); - -AWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor); -module.exports = AWS.S3.ManagedUpload; - -},{"../core":188}],224:[function(require,module,exports){ -var AWS = require('./core'); - - -AWS.SequentialExecutor = AWS.util.inherit({ - - constructor: function SequentialExecutor() { - this._events = {}; - }, - - - listeners: function listeners(eventName) { - return this._events[eventName] ? this._events[eventName].slice(0) : []; - }, - - on: function on(eventName, listener) { - if (this._events[eventName]) { - this._events[eventName].push(listener); - } else { - this._events[eventName] = [listener]; - } - return this; - }, - - - onAsync: function onAsync(eventName, listener) { - listener._isAsync = true; - return this.on(eventName, listener); - }, - - removeListener: function removeListener(eventName, listener) { - var listeners = this._events[eventName]; - if (listeners) { - var length = listeners.length; - var position = -1; - for (var i = 0; i < length; ++i) { - if (listeners[i] === listener) { - position = i; - } - } - if (position > -1) { - listeners.splice(position, 1); - } - } - return this; - }, - - removeAllListeners: function removeAllListeners(eventName) { - if (eventName) { - delete this._events[eventName]; - } else { - this._events = {}; - } - return this; - }, - - - emit: function emit(eventName, eventArgs, doneCallback) { - if (!doneCallback) doneCallback = function() { }; - var listeners = this.listeners(eventName); - var count = listeners.length; - this.callListeners(listeners, eventArgs, doneCallback); - return count > 0; - }, - - - callListeners: function callListeners(listeners, args, doneCallback, prevError) { - var self = this; - var error = prevError || null; - - function callNextListener(err) { - if (err) { - error = AWS.util.error(error || new Error(), err); - if (self._haltHandlersOnError) { - return doneCallback.call(self, error); - } - } - self.callListeners(listeners, args, doneCallback, error); - } - - while (listeners.length > 0) { - var listener = listeners.shift(); - if (listener._isAsync) { // asynchronous listener - listener.apply(self, args.concat([callNextListener])); - return; // stop here, callNextListener will continue - } else { // synchronous listener - try { - listener.apply(self, args); - } catch (err) { - error = AWS.util.error(error || new Error(), err); - } - if (error && self._haltHandlersOnError) { - doneCallback.call(self, error); - return; - } - } - } - doneCallback.call(self, error); - }, - - - addListeners: function addListeners(listeners) { - var self = this; - - if (listeners._events) listeners = listeners._events; - - AWS.util.each(listeners, function(event, callbacks) { - if (typeof callbacks === 'function') callbacks = [callbacks]; - AWS.util.arrayEach(callbacks, function(callback) { - self.on(event, callback); - }); - }); - - return self; - }, - - - addNamedListener: function addNamedListener(name, eventName, callback) { - this[name] = callback; - this.addListener(eventName, callback); - return this; - }, - - - addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) { - callback._isAsync = true; - return this.addNamedListener(name, eventName, callback); - }, - - - addNamedListeners: function addNamedListeners(callback) { - var self = this; - callback( - function() { - self.addNamedListener.apply(self, arguments); - }, - function() { - self.addNamedAsyncListener.apply(self, arguments); - } - ); - return this; - } -}); - - -AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on; - -module.exports = AWS.SequentialExecutor; - -},{"./core":188}],225:[function(require,module,exports){ -var AWS = require('./core'); -var Api = require('./model/api'); -var regionConfig = require('./region_config'); -var inherit = AWS.util.inherit; -var clientCount = 0; - - -AWS.Service = inherit({ - - constructor: function Service(config) { - if (!this.loadServiceClass) { - throw AWS.util.error(new Error(), - 'Service must be constructed with `new\' operator'); - } - var ServiceClass = this.loadServiceClass(config || {}); - if (ServiceClass) { - var originalConfig = AWS.util.copy(config); - var svc = new ServiceClass(config); - Object.defineProperty(svc, '_originalConfig', { - get: function() { return originalConfig; }, - enumerable: false, - configurable: true - }); - svc._clientId = ++clientCount; - return svc; - } - this.initialize(config); - }, - - - initialize: function initialize(config) { - var svcConfig = AWS.config[this.serviceIdentifier]; - - this.config = new AWS.Config(AWS.config); - if (svcConfig) this.config.update(svcConfig, true); - if (config) this.config.update(config, true); - - this.validateService(); - if (!this.config.endpoint) regionConfig(this); - - this.config.endpoint = this.endpointFromTemplate(this.config.endpoint); - this.setEndpoint(this.config.endpoint); - }, - - - validateService: function validateService() { - }, - - - loadServiceClass: function loadServiceClass(serviceConfig) { - var config = serviceConfig; - if (!AWS.util.isEmpty(this.api)) { - return null; - } else if (config.apiConfig) { - return AWS.Service.defineServiceApi(this.constructor, config.apiConfig); - } else if (!this.constructor.services) { - return null; - } else { - config = new AWS.Config(AWS.config); - config.update(serviceConfig, true); - var version = config.apiVersions[this.constructor.serviceIdentifier]; - version = version || config.apiVersion; - return this.getLatestServiceClass(version); - } - }, - - - getLatestServiceClass: function getLatestServiceClass(version) { - version = this.getLatestServiceVersion(version); - if (this.constructor.services[version] === null) { - AWS.Service.defineServiceApi(this.constructor, version); - } - - return this.constructor.services[version]; - }, - - - getLatestServiceVersion: function getLatestServiceVersion(version) { - if (!this.constructor.services || this.constructor.services.length === 0) { - throw new Error('No services defined on ' + - this.constructor.serviceIdentifier); - } - - if (!version) { - version = 'latest'; - } else if (AWS.util.isType(version, Date)) { - version = AWS.util.date.iso8601(version).split('T')[0]; - } - - if (Object.hasOwnProperty(this.constructor.services, version)) { - return version; - } - - var keys = Object.keys(this.constructor.services).sort(); - var selectedVersion = null; - for (var i = keys.length - 1; i >= 0; i--) { - if (keys[i][keys[i].length - 1] !== '*') { - selectedVersion = keys[i]; - } - if (keys[i].substr(0, 10) <= version) { - return selectedVersion; - } - } - - throw new Error('Could not find ' + this.constructor.serviceIdentifier + - ' API to satisfy version constraint `' + version + '\''); - }, - - - api: {}, - - - defaultRetryCount: 3, - - - makeRequest: function makeRequest(operation, params, callback) { - if (typeof params === 'function') { - callback = params; - params = null; - } - - params = params || {}; - if (this.config.params) { // copy only toplevel bound params - var rules = this.api.operations[operation]; - if (rules) { - params = AWS.util.copy(params); - AWS.util.each(this.config.params, function(key, value) { - if (rules.input.members[key]) { - if (params[key] === undefined || params[key] === null) { - params[key] = value; - } - } - }); - } - } - - var request = new AWS.Request(this, operation, params); - this.addAllRequestListeners(request); - - if (callback) request.send(callback); - return request; - }, - - - makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) { - if (typeof params === 'function') { - callback = params; - params = {}; - } - - var request = this.makeRequest(operation, params).toUnauthenticated(); - return callback ? request.send(callback) : request; - }, - - - waitFor: function waitFor(state, params, callback) { - var waiter = new AWS.ResourceWaiter(this, state); - return waiter.wait(params, callback); - }, - - - addAllRequestListeners: function addAllRequestListeners(request) { - var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(), - AWS.EventListeners.CorePost]; - for (var i = 0; i < list.length; i++) { - if (list[i]) request.addListeners(list[i]); - } - - if (!this.config.paramValidation) { - request.removeListener('validate', - AWS.EventListeners.Core.VALIDATE_PARAMETERS); - } - - if (this.config.logger) { // add logging events - request.addListeners(AWS.EventListeners.Logger); - } - - this.setupRequestListeners(request); - }, - - - setupRequestListeners: function setupRequestListeners() { - }, - - - getSignerClass: function getSignerClass() { - var version; - if (this.config.signatureVersion) { - version = this.config.signatureVersion; - } else { - version = this.api.signatureVersion; - } - return AWS.Signers.RequestSigner.getVersion(version); - }, - - - serviceInterface: function serviceInterface() { - switch (this.api.protocol) { - case 'ec2': return AWS.EventListeners.Query; - case 'query': return AWS.EventListeners.Query; - case 'json': return AWS.EventListeners.Json; - case 'rest-json': return AWS.EventListeners.RestJson; - case 'rest-xml': return AWS.EventListeners.RestXml; - } - if (this.api.protocol) { - throw new Error('Invalid service `protocol\' ' + - this.api.protocol + ' in API config'); - } - }, - - - successfulResponse: function successfulResponse(resp) { - return resp.httpResponse.statusCode < 300; - }, - - - numRetries: function numRetries() { - if (this.config.maxRetries !== undefined) { - return this.config.maxRetries; - } else { - return this.defaultRetryCount; - } - }, - - - retryDelays: function retryDelays(retryCount) { - return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions); - }, - - - retryableError: function retryableError(error) { - if (this.networkingError(error)) return true; - if (this.expiredCredentialsError(error)) return true; - if (this.throttledError(error)) return true; - if (error.statusCode >= 500) return true; - return false; - }, - - - networkingError: function networkingError(error) { - return error.code === 'NetworkingError'; - }, - - - expiredCredentialsError: function expiredCredentialsError(error) { - return (error.code === 'ExpiredTokenException'); - }, - - - clockSkewError: function clockSkewError(error) { - switch (error.code) { - case 'RequestTimeTooSkewed': - case 'RequestExpired': - case 'InvalidSignatureException': - case 'SignatureDoesNotMatch': - case 'AuthFailure': - case 'RequestInTheFuture': - return true; - default: return false; - } - }, - - - throttledError: function throttledError(error) { - switch (error.code) { - case 'ProvisionedThroughputExceededException': - case 'Throttling': - case 'ThrottlingException': - case 'RequestLimitExceeded': - case 'RequestThrottled': - return true; - default: - return false; - } - }, - - - endpointFromTemplate: function endpointFromTemplate(endpoint) { - if (typeof endpoint !== 'string') return endpoint; - - var e = endpoint; - e = e.replace(/\{service\}/g, this.api.endpointPrefix); - e = e.replace(/\{region\}/g, this.config.region); - e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http'); - return e; - }, - - - setEndpoint: function setEndpoint(endpoint) { - this.endpoint = new AWS.Endpoint(endpoint, this.config); - }, - - - paginationConfig: function paginationConfig(operation, throwException) { - var paginator = this.api.operations[operation].paginator; - if (!paginator) { - if (throwException) { - var e = new Error(); - throw AWS.util.error(e, 'No pagination configuration for ' + operation); - } - return null; - } - - return paginator; - } -}); - -AWS.util.update(AWS.Service, { - - - defineMethods: function defineMethods(svc) { - AWS.util.each(svc.prototype.api.operations, function iterator(method) { - if (svc.prototype[method]) return; - var operation = svc.prototype.api.operations[method]; - if (operation.authtype === 'none') { - svc.prototype[method] = function (params, callback) { - return this.makeUnauthenticatedRequest(method, params, callback); - }; - } else { - svc.prototype[method] = function (params, callback) { - return this.makeRequest(method, params, callback); - }; - } - }); - }, - - - defineService: function defineService(serviceIdentifier, versions, features) { - AWS.Service._serviceMap[serviceIdentifier] = true; - if (!Array.isArray(versions)) { - features = versions; - versions = []; - } - - var svc = inherit(AWS.Service, features || {}); - - if (typeof serviceIdentifier === 'string') { - AWS.Service.addVersions(svc, versions); - - var identifier = svc.serviceIdentifier || serviceIdentifier; - svc.serviceIdentifier = identifier; - } else { // defineService called with an API - svc.prototype.api = serviceIdentifier; - AWS.Service.defineMethods(svc); - } - - return svc; - }, - - - addVersions: function addVersions(svc, versions) { - if (!Array.isArray(versions)) versions = [versions]; - - svc.services = svc.services || {}; - for (var i = 0; i < versions.length; i++) { - if (svc.services[versions[i]] === undefined) { - svc.services[versions[i]] = null; - } - } - - svc.apiVersions = Object.keys(svc.services).sort(); - }, - - - defineServiceApi: function defineServiceApi(superclass, version, apiConfig) { - var svc = inherit(superclass, { - serviceIdentifier: superclass.serviceIdentifier - }); - - function setApi(api) { - if (api.isApi) { - svc.prototype.api = api; - } else { - svc.prototype.api = new Api(api); - } - } - - if (typeof version === 'string') { - if (apiConfig) { - setApi(apiConfig); - } else { - try { - setApi(AWS.apiLoader(superclass.serviceIdentifier, version)); - } catch (err) { - throw AWS.util.error(err, { - message: 'Could not find API configuration ' + - superclass.serviceIdentifier + '-' + version - }); - } - } - if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) { - superclass.apiVersions = superclass.apiVersions.concat(version).sort(); - } - superclass.services[version] = svc; - } else { - setApi(version); - } - - AWS.Service.defineMethods(svc); - return svc; - }, - - - hasService: function(identifier) { - return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier); - }, - - - _serviceMap: {} -}); - -module.exports = AWS.Service; -},{"./core":188,"./model/api":205,"./region_config":219}],226:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.APIGateway.prototype, { - - setAcceptHeader: function setAcceptHeader(req) { - var httpRequest = req.httpRequest; - httpRequest.headers['Accept'] = 'application/json'; - }, - - - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('build', this.setAcceptHeader); - if (request.operation === 'getSdk') { - request.addListener('extractData', this.useRawPayload); - } - }, - - useRawPayload: function useRawPayload(resp) { - var req = resp.request; - var operation = req.operation; - var rules = req.service.api.operations[operation].output || {}; - if (rules.payload) { - var body = resp.httpResponse.body; - resp.data[rules.payload] = body; - } - } -}); - - -},{"../core":188}],227:[function(require,module,exports){ -var AWS = require('../core'); - -require('../cloudfront/signer'); - -AWS.util.update(AWS.CloudFront.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('extractData', AWS.util.hoistPayloadMember); - } - -}); - -},{"../cloudfront/signer":186,"../core":188}],228:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.CognitoIdentity.prototype, { - getOpenIdToken: function getOpenIdToken(params, callback) { - return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback); - }, - - getId: function getId(params, callback) { - return this.makeUnauthenticatedRequest('getId', params, callback); - }, - - getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) { - return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback); - } -}); - -},{"../core":188}],229:[function(require,module,exports){ -var AWS = require('../core'); -require('../dynamodb/document_client'); - -AWS.util.update(AWS.DynamoDB.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - if (request.service.config.dynamoDbCrc32) { - request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); - request.addListener('extractData', this.checkCrc32); - request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); - } - }, - - - checkCrc32: function checkCrc32(resp) { - if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) { - resp.data = null; - resp.error = AWS.util.error(new Error(), { - code: 'CRC32CheckFailed', - message: 'CRC32 integrity check failed', - retryable: true - }); - resp.request.haltHandlersOnError(); - throw (resp.error); - } - }, - - - crc32IsValid: function crc32IsValid(resp) { - var crc = resp.httpResponse.headers['x-amz-crc32']; - if (!crc) return true; // no (valid) CRC32 header - return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body); - }, - - - defaultRetryCount: 10, - - - retryDelays: function retryDelays(retryCount) { - var delay = retryCount > 0 ? (50 * Math.pow(2, retryCount - 1)) : 0; - return delay; - } -}); - -},{"../core":188,"../dynamodb/document_client":196}],230:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.EC2.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR); - request.addListener('extractError', this.extractError); - - if (request.operation === 'copySnapshot') { - request.onAsync('validate', this.buildCopySnapshotPresignedUrl); - } - }, - - - buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) { - if (req.params.PresignedUrl || req._subRequest) { - return done(); - } - - req.params = AWS.util.copy(req.params); - req.params.DestinationRegion = req.service.config.region; - - var config = AWS.util.copy(req.service.config); - delete config.endpoint; - config.region = req.params.SourceRegion; - var svc = new req.service.constructor(config); - var newReq = svc[req.operation](req.params); - newReq._subRequest = true; - newReq.presign(function(err, url) { - if (err) done(err); - else { - req.params.PresignedUrl = url; - done(); - } - }); - }, - - - extractError: function extractError(resp) { - var httpResponse = resp.httpResponse; - var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || ''); - if (data.Errors) { - resp.error = AWS.util.error(new Error(), { - code: data.Errors.Error.Code, - message: data.Errors.Error.Message - }); - } else { - resp.error = AWS.util.error(new Error(), { - code: httpResponse.statusCode, - message: null - }); - } - resp.error.requestId = data.RequestID || null; - } -}); - -},{"../core":188}],231:[function(require,module,exports){ -var AWS = require('../core'); - - -AWS.util.update(AWS.IotData.prototype, { - - validateService: function validateService() { - if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { - var msg = 'AWS.IotData requires an explicit ' + - '`endpoint\' configuration option.'; - throw AWS.util.error(new Error(), - {name: 'InvalidEndpoint', message: msg}); - } - }, - - - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('validateResponse', this.validateResponseBody) - }, - - - validateResponseBody: function validateResponseBody(resp) { - var body = resp.httpResponse.body.toString() || '{}'; - var bodyCheck = body.trim(); - if (!bodyCheck || bodyCheck.charAt(0) !== '{') { - resp.httpResponse.body = ''; - } - } - -}); - -},{"../core":188}],232:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.MachineLearning.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - if (request.operation === 'predict') { - request.addListener('build', this.buildEndpoint); - } - }, - - - buildEndpoint: function buildEndpoint(request) { - var url = request.params.PredictEndpoint; - if (url) { - request.httpRequest.endpoint = new AWS.Endpoint(url); - } - } - -}); - -},{"../core":188}],233:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.Route53.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - request.on('build', this.sanitizeUrl); - }, - - - sanitizeUrl: function sanitizeUrl(request) { - var path = request.httpRequest.path; - request.httpRequest.path = path.replace(/\/%2F\w+%2F/, '/'); - }, - - - retryableError: function retryableError(error) { - if (error.code === 'PriorRequestNotComplete' && - error.statusCode === 400) { - return true; - } else { - var _super = AWS.Service.prototype.retryableError; - return _super.call(this, error); - } - } -}); - -},{"../core":188}],234:[function(require,module,exports){ -var AWS = require('../core'); - -require('../s3/managed_upload'); - - -var operationsWith200StatusCodeError = { - 'completeMultipartUpload': true, - 'copyObject': true, - 'uploadPartCopy': true -}; - - - var regionRedirectErrorCodes = [ - 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints - 'BadRequest', // head operations on virtual-hosted global bucket endpoints - 'PermanentRedirect', // non-head operations on path-style or regional endpoints - 301 // head operations on path-style or regional endpoints - ]; - -AWS.util.update(AWS.S3.prototype, { - - getSignerClass: function getSignerClass(request) { - var defaultApiVersion = this.api.signatureVersion; - var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null; - var regionDefinedVersion = this.config.signatureVersion; - var isPresigned = request ? request.isPresigned() : false; - - if (userDefinedVersion) { - userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion; - return AWS.Signers.RequestSigner.getVersion(userDefinedVersion); - } - if (regionDefinedVersion) { - defaultApiVersion = regionDefinedVersion; - } - - return AWS.Signers.RequestSigner.getVersion(defaultApiVersion); - }, - - - validateService: function validateService() { - var msg; - var messages = []; - - if (!this.config.region) this.config.region = 'us-east-1'; - - if (!this.config.endpoint && this.config.s3BucketEndpoint) { - messages.push('An endpoint must be provided when configuring ' + - '`s3BucketEndpoint` to true.'); - } - if (this.config.useAccelerateEndpoint && this.config.useDualstack) { - messages.push('`useAccelerateEndpoint` and `useDualstack` ' + - 'cannot both be configured to true.'); - } - if (messages.length === 1) { - msg = messages[0]; - } else if (messages.length > 1) { - msg = 'Multiple configuration errors:\n' + messages.join('\n'); - } - if (msg) { - throw AWS.util.error(new Error(), - {name: 'InvalidEndpoint', message: msg}); - } - }, - - - shouldDisableBodySigning: function shouldDisableBodySigning(request) { - var signerClass = this.getSignerClass(); - if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4 - && request.httpRequest.endpoint.protocol === 'https:') { - return true; - } - return false; - }, - - - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('validate', this.validateScheme); - request.addListener('validate', this.validateBucketEndpoint); - request.addListener('validate', this.correctBucketRegionFromCache); - request.addListener('build', this.addContentType); - request.addListener('build', this.populateURI); - request.addListener('build', this.computeContentMd5); - request.addListener('build', this.computeSseCustomerKeyMd5); - request.addListener('afterBuild', this.addExpect100Continue); - request.removeListener('validate', - AWS.EventListeners.Core.VALIDATE_REGION); - request.addListener('extractError', this.extractError); - request.onAsync('extractError', this.requestBucketRegion); - request.addListener('extractData', this.extractData); - request.addListener('extractData', AWS.util.hoistPayloadMember); - request.addListener('beforePresign', this.prepareSignedUrl); - if (AWS.util.isBrowser()) { - request.onAsync('retry', this.reqRegionForNetworkingError); - } - if (this.shouldDisableBodySigning(request)) { - request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); - request.addListener('afterBuild', this.disableBodySigning); - } - }, - - - validateScheme: function(req) { - var params = req.params, - scheme = req.httpRequest.endpoint.protocol, - sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey; - if (sensitive && scheme !== 'https:') { - var msg = 'Cannot send SSE keys over HTTP. Set \'sslEnabled\'' + - 'to \'true\' in your configuration'; - throw AWS.util.error(new Error(), - { code: 'ConfigError', message: msg }); - } - }, - - - validateBucketEndpoint: function(req) { - if (!req.params.Bucket && req.service.config.s3BucketEndpoint) { - var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.'; - throw AWS.util.error(new Error(), - { code: 'ConfigError', message: msg }); - } - }, - - - isValidAccelerateOperation: function isValidAccelerateOperation(operation) { - var invalidOperations = [ - 'createBucket', - 'deleteBucket', - 'listBuckets' - ]; - return invalidOperations.indexOf(operation) === -1; - }, - - - - populateURI: function populateURI(req) { - var httpRequest = req.httpRequest; - var b = req.params.Bucket; - var service = req.service; - var endpoint = httpRequest.endpoint; - - if (b) { - if (!service.pathStyleBucketName(b)) { - if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) { - endpoint.hostname = b + '.s3-accelerate.amazonaws.com'; - } else if (!service.config.s3BucketEndpoint) { - endpoint.hostname = - b + '.' + endpoint.hostname; - } - - var port = endpoint.port; - if (port !== 80 && port !== 443) { - endpoint.host = endpoint.hostname + ':' + - endpoint.port; - } else { - endpoint.host = endpoint.hostname; - } - - httpRequest.virtualHostedBucket = b; // needed for signing the request - service.removeVirtualHostedBucketFromPath(req); - } - } - }, - - - removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) { - var httpRequest = req.httpRequest; - var bucket = httpRequest.virtualHostedBucket; - if (bucket && httpRequest.path) { - httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), ''); - if (httpRequest.path[0] !== '/') { - httpRequest.path = '/' + httpRequest.path; - } - } - }, - - - addExpect100Continue: function addExpect100Continue(req) { - var len = req.httpRequest.headers['Content-Length']; - if (AWS.util.isNode() && len >= 1024 * 1024) { - req.httpRequest.headers['Expect'] = '100-continue'; - } - }, - - - addContentType: function addContentType(req) { - var httpRequest = req.httpRequest; - if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') { - delete httpRequest.headers['Content-Type']; - return; - } - - if (!httpRequest.headers['Content-Type']) { // always have a Content-Type - httpRequest.headers['Content-Type'] = 'application/octet-stream'; - } - - var contentType = httpRequest.headers['Content-Type']; - if (AWS.util.isBrowser()) { - if (typeof httpRequest.body === 'string' && !contentType.match(/;\s*charset=/)) { - var charset = '; charset=UTF-8'; - httpRequest.headers['Content-Type'] += charset; - } else { - var replaceFn = function(_, prefix, charsetName) { - return prefix + charsetName.toUpperCase(); - }; - - httpRequest.headers['Content-Type'] = - contentType.replace(/(;\s*charset=)(.+)$/, replaceFn); - } - } - }, - - - computableChecksumOperations: { - putBucketCors: true, - putBucketLifecycle: true, - putBucketLifecycleConfiguration: true, - putBucketTagging: true, - deleteObjects: true, - putBucketReplication: true - }, - - - willComputeChecksums: function willComputeChecksums(req) { - if (this.computableChecksumOperations[req.operation]) return true; - if (!this.config.computeChecksums) return false; - - if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) && - typeof req.httpRequest.body !== 'string') { - return false; - } - - var rules = req.service.api.operations[req.operation].input.members; - - if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) { - if (rules.ContentMD5 && !req.params.ContentMD5) { - return true; - } - } - - if (req.service.getSignerClass(req) === AWS.Signers.V4) { - if (rules.ContentMD5 && !rules.ContentMD5.required) return false; - } - - if (rules.ContentMD5 && !req.params.ContentMD5) return true; - }, - - - computeContentMd5: function computeContentMd5(req) { - if (req.service.willComputeChecksums(req)) { - var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64'); - req.httpRequest.headers['Content-MD5'] = md5; - } - }, - - - computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) { - var keys = { - SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5', - CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5' - }; - AWS.util.each(keys, function(key, header) { - if (req.params[key]) { - var value = AWS.util.crypto.md5(req.params[key], 'base64'); - req.httpRequest.headers[header] = value; - } - }); - }, - - - pathStyleBucketName: function pathStyleBucketName(bucketName) { - if (this.config.s3ForcePathStyle) return true; - if (this.config.s3BucketEndpoint) return false; - - if (this.dnsCompatibleBucketName(bucketName)) { - return (this.config.sslEnabled && bucketName.match(/\./)) ? true : false; - } else { - return true; // not dns compatible names must always use path style - } - }, - - - dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) { - var b = bucketName; - var domain = new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/); - var ipAddress = new RegExp(/(\d+\.){3}\d+/); - var dots = new RegExp(/\.\./); - return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false; - }, - - - successfulResponse: function successfulResponse(resp) { - var req = resp.request; - var httpResponse = resp.httpResponse; - if (operationsWith200StatusCodeError[req.operation] && - httpResponse.body.toString().match('')) { - return false; - } else { - return httpResponse.statusCode < 300; - } - }, - - - retryableError: function retryableError(error, request) { - if (operationsWith200StatusCodeError[request.operation] && - error.statusCode === 200) { - return true; - } else if (request._requestRegionForBucket && - request.service.bucketRegionCache[request._requestRegionForBucket]) { - return false; - } else if (error && error.code === 'RequestTimeout') { - return true; - } else if (error && - regionRedirectErrorCodes.indexOf(error.code) != -1 && - error.region && error.region != request.httpRequest.region) { - request.httpRequest.region = error.region; - if (error.statusCode === 301) { - request.service.updateReqBucketRegion(request); - } - return true; - } else { - var _super = AWS.Service.prototype.retryableError; - return _super.call(this, error, request); - } - }, - - - updateReqBucketRegion: function updateReqBucketRegion(request, region) { - var httpRequest = request.httpRequest; - if (typeof region === 'string' && region.length) { - httpRequest.region = region; - } - if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)) { - return; - } - var service = request.service; - var s3Config = service.config; - var s3BucketEndpoint = s3Config.s3BucketEndpoint; - if (s3BucketEndpoint) { - delete s3Config.s3BucketEndpoint; - } - var newConfig = AWS.util.copy(s3Config); - delete newConfig.endpoint; - newConfig.region = httpRequest.region; - - httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint; - service.populateURI(request); - s3Config.s3BucketEndpoint = s3BucketEndpoint; - httpRequest.headers.Host = httpRequest.endpoint.host; - - if (request._asm.currentState === 'validate') { - request.removeListener('build', service.populateURI); - request.addListener('build', service.removeVirtualHostedBucketFromPath); - } - }, - - - extractData: function extractData(resp) { - var req = resp.request; - if (req.operation === 'getBucketLocation') { - var match = resp.httpResponse.body.toString().match(/>(.+)<\/Location/); - delete resp.data['_']; - if (match) { - resp.data.LocationConstraint = match[1]; - } else { - resp.data.LocationConstraint = ''; - } - } - var bucket = req.params.Bucket || null; - if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) { - req.service.clearBucketRegionCache(bucket); - } else { - var headers = resp.httpResponse.headers || {}; - var region = headers['x-amz-bucket-region'] || null; - if (!region && req.operation === 'createBucket' && !resp.error) { - var createBucketConfiguration = req.params.CreateBucketConfiguration; - if (!createBucketConfiguration) { - region = 'us-east-1'; - } else if (createBucketConfiguration.LocationConstraint === 'EU') { - region = 'eu-west-1'; - } else { - region = createBucketConfiguration.LocationConstraint; - } - } - if (region) { - if (bucket && region !== req.service.bucketRegionCache[bucket]) { - req.service.bucketRegionCache[bucket] = region; - } - } - } - req.service.extractRequestIds(resp); - }, - - - extractError: function extractError(resp) { - var codes = { - 304: 'NotModified', - 403: 'Forbidden', - 400: 'BadRequest', - 404: 'NotFound' - }; - - var req = resp.request; - var code = resp.httpResponse.statusCode; - var body = resp.httpResponse.body || ''; - - var headers = resp.httpResponse.headers || {}; - var region = headers['x-amz-bucket-region'] || null; - var bucket = req.params.Bucket || null; - var bucketRegionCache = req.service.bucketRegionCache; - if (region && bucket && region !== bucketRegionCache[bucket]) { - bucketRegionCache[bucket] = region; - } - - var cachedRegion; - if (codes[code] && body.length === 0) { - if (bucket && !region) { - cachedRegion = bucketRegionCache[bucket] || null; - if (cachedRegion !== req.httpRequest.region) { - region = cachedRegion; - } - } - resp.error = AWS.util.error(new Error(), { - code: codes[code], - message: null, - region: region - }); - } else { - var data = new AWS.XML.Parser().parse(body.toString()); - - if (data.Region && !region) { - region = data.Region; - if (bucket && region !== bucketRegionCache[bucket]) { - bucketRegionCache[bucket] = region; - } - } else if (bucket && !region && !data.Region) { - cachedRegion = bucketRegionCache[bucket] || null; - if (cachedRegion !== req.httpRequest.region) { - region = cachedRegion; - } - } - - resp.error = AWS.util.error(new Error(), { - code: data.Code || code, - message: data.Message || null, - region: region - }); - } - req.service.extractRequestIds(resp); - }, - - - requestBucketRegion: function requestBucketRegion(resp, done) { - var error = resp.error; - var req = resp.request; - var bucket = req.params.Bucket || null; - - if (!error || !bucket || error.region || req.operation === 'listObjects' || - (AWS.util.isNode() && req.operation === 'headBucket') || - (error.statusCode === 400 && req.operation !== 'headObject') || - regionRedirectErrorCodes.indexOf(error.code) === -1) { - return done(); - } - var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects'; - var reqParams = {Bucket: bucket}; - if (reqOperation === 'listObjects') reqParams.MaxKeys = 0; - var regionReq = req.service[reqOperation](reqParams); - regionReq._requestRegionForBucket = bucket; - regionReq.send(function() { - var region = req.service.bucketRegionCache[bucket] || null; - error.region = region; - done(); - }); - }, - - - reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) { - if (!AWS.util.isBrowser()) { - return done(); - } - var error = resp.error; - var request = resp.request; - var bucket = request.params.Bucket; - if (!error || error.code !== 'NetworkingError' || !bucket || - request.httpRequest.region === 'us-east-1') { - return done(); - } - var service = request.service; - var bucketRegionCache = service.bucketRegionCache; - var cachedRegion = bucketRegionCache[bucket] || null; - - if (cachedRegion && cachedRegion !== request.httpRequest.region) { - service.updateReqBucketRegion(request, cachedRegion); - done(); - } else if (!service.dnsCompatibleBucketName(bucket)) { - service.updateReqBucketRegion(request, 'us-east-1'); - if (bucketRegionCache[bucket] !== 'us-east-1') { - bucketRegionCache[bucket] = 'us-east-1'; - } - done(); - } else if (request.httpRequest.virtualHostedBucket) { - var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0}); - service.updateReqBucketRegion(getRegionReq, 'us-east-1'); - getRegionReq._requestRegionForBucket = bucket; - - getRegionReq.send(function() { - var region = service.bucketRegionCache[bucket] || null; - if (region && region !== request.httpRequest.region) { - service.updateReqBucketRegion(request, region); - } - done(); - }); - } else { - done(); - } - }, - - - bucketRegionCache: {}, - - - clearBucketRegionCache: function(buckets) { - var bucketRegionCache = this.bucketRegionCache; - if (!buckets) { - buckets = Object.keys(bucketRegionCache); - } else if (typeof buckets === 'string') { - buckets = [buckets]; - } - for (var i = 0; i < buckets.length; i++) { - delete bucketRegionCache[buckets[i]]; - } - return bucketRegionCache; - }, - - - correctBucketRegionFromCache: function correctBucketRegionFromCache(req) { - var bucket = req.params.Bucket || null; - if (bucket) { - var service = req.service; - var requestRegion = req.httpRequest.region; - var cachedRegion = service.bucketRegionCache[bucket]; - if (cachedRegion && cachedRegion !== requestRegion) { - service.updateReqBucketRegion(req, cachedRegion); - } - } - }, - - - extractRequestIds: function extractRequestIds(resp) { - var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null; - var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null; - resp.extendedRequestId = extendedRequestId; - resp.cfId = cfId; - - if (resp.error) { - resp.error.requestId = resp.requestId || null; - resp.error.extendedRequestId = extendedRequestId; - resp.error.cfId = cfId; - } - }, - - - getSignedUrl: function getSignedUrl(operation, params, callback) { - params = AWS.util.copy(params || {}); - var expires = params.Expires || 900; - delete params.Expires; // we can't validate this - var request = this.makeRequest(operation, params); - return request.presign(expires, callback); - }, - - - prepareSignedUrl: function prepareSignedUrl(request) { - request.addListener('validate', request.service.noPresignedContentLength); - request.removeListener('build', request.service.addContentType); - if (!request.params.Body) { - request.removeListener('build', request.service.computeContentMd5); - } else { - request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); - } - }, - - - disableBodySigning: function disableBodySigning(request) { - var headers = request.httpRequest.headers; - if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) { - headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD'; - } - }, - - - noPresignedContentLength: function noPresignedContentLength(request) { - if (request.params.ContentLength !== undefined) { - throw AWS.util.error(new Error(), {code: 'UnexpectedParameter', - message: 'ContentLength is not supported in pre-signed URLs.'}); - } - }, - - createBucket: function createBucket(params, callback) { - if (typeof params === 'function' || !params) { - callback = callback || params; - params = {}; - } - var hostname = this.endpoint.hostname; - if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) { - params.CreateBucketConfiguration = { LocationConstraint: this.config.region }; - } - return this.makeRequest('createBucket', params, callback); - }, - - - upload: function upload(params, options, callback) { - if (typeof options === 'function' && callback === undefined) { - callback = options; - options = null; - } - - options = options || {}; - options = AWS.util.merge(options || {}, {service: this, params: params}); - - var uploader = new AWS.S3.ManagedUpload(options); - if (typeof callback === 'function') uploader.send(callback); - return uploader; - } -}); - -},{"../core":188,"../s3/managed_upload":223}],235:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.SQS.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('build', this.buildEndpoint); - - if (request.service.config.computeChecksums) { - if (request.operation === 'sendMessage') { - request.addListener('extractData', this.verifySendMessageChecksum); - } else if (request.operation === 'sendMessageBatch') { - request.addListener('extractData', this.verifySendMessageBatchChecksum); - } else if (request.operation === 'receiveMessage') { - request.addListener('extractData', this.verifyReceiveMessageChecksum); - } - } - }, - - - verifySendMessageChecksum: function verifySendMessageChecksum(response) { - if (!response.data) return; - - var md5 = response.data.MD5OfMessageBody; - var body = this.params.MessageBody; - var calculatedMd5 = this.service.calculateChecksum(body); - if (calculatedMd5 !== md5) { - var msg = 'Got "' + response.data.MD5OfMessageBody + - '", expecting "' + calculatedMd5 + '".'; - this.service.throwInvalidChecksumError(response, - [response.data.MessageId], msg); - } - }, - - - verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) { - if (!response.data) return; - - var service = this.service; - var entries = {}; - var errors = []; - var messageIds = []; - AWS.util.arrayEach(response.data.Successful, function (entry) { - entries[entry.Id] = entry; - }); - AWS.util.arrayEach(this.params.Entries, function (entry) { - if (entries[entry.Id]) { - var md5 = entries[entry.Id].MD5OfMessageBody; - var body = entry.MessageBody; - if (!service.isChecksumValid(md5, body)) { - errors.push(entry.Id); - messageIds.push(entries[entry.Id].MessageId); - } - } - }); - - if (errors.length > 0) { - service.throwInvalidChecksumError(response, messageIds, - 'Invalid messages: ' + errors.join(', ')); - } - }, - - - verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) { - if (!response.data) return; - - var service = this.service; - var messageIds = []; - AWS.util.arrayEach(response.data.Messages, function(message) { - var md5 = message.MD5OfBody; - var body = message.Body; - if (!service.isChecksumValid(md5, body)) { - messageIds.push(message.MessageId); - } - }); - - if (messageIds.length > 0) { - service.throwInvalidChecksumError(response, messageIds, - 'Invalid messages: ' + messageIds.join(', ')); - } - }, - - - throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) { - response.error = AWS.util.error(new Error(), { - retryable: true, - code: 'InvalidChecksum', - messageIds: ids, - message: response.request.operation + - ' returned an invalid MD5 response. ' + message - }); - }, - - - isChecksumValid: function isChecksumValid(checksum, data) { - return this.calculateChecksum(data) === checksum; - }, - - - calculateChecksum: function calculateChecksum(data) { - return AWS.util.crypto.md5(data, 'hex'); - }, - - - buildEndpoint: function buildEndpoint(request) { - var url = request.httpRequest.params.QueueUrl; - if (url) { - request.httpRequest.endpoint = new AWS.Endpoint(url); - - var matches = request.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./); - if (matches) request.httpRequest.region = matches[1]; - } - } -}); - -},{"../core":188}],236:[function(require,module,exports){ -var AWS = require('../core'); - -AWS.util.update(AWS.STS.prototype, { - - credentialsFrom: function credentialsFrom(data, credentials) { - if (!data) return null; - if (!credentials) credentials = new AWS.TemporaryCredentials(); - credentials.expired = false; - credentials.accessKeyId = data.Credentials.AccessKeyId; - credentials.secretAccessKey = data.Credentials.SecretAccessKey; - credentials.sessionToken = data.Credentials.SessionToken; - credentials.expireTime = data.Credentials.Expiration; - return credentials; - }, - - assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) { - return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback); - }, - - assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) { - return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback); - } -}); - -},{"../core":188}],237:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - - -var expiresHeader = 'presigned-expires'; - - -function signedUrlBuilder(request) { - var expires = request.httpRequest.headers[expiresHeader]; - var signerClass = request.service.getSignerClass(request); - - delete request.httpRequest.headers['User-Agent']; - delete request.httpRequest.headers['X-Amz-User-Agent']; - - if (signerClass === AWS.Signers.V4) { - if (expires > 604800) { // one week expiry is invalid - var message = 'Presigning does not support expiry time greater ' + - 'than a week with SigV4 signing.'; - throw AWS.util.error(new Error(), { - code: 'InvalidExpiryTime', message: message, retryable: false - }); - } - request.httpRequest.headers[expiresHeader] = expires; - } else if (signerClass === AWS.Signers.S3) { - request.httpRequest.headers[expiresHeader] = parseInt( - AWS.util.date.unixTimestamp() + expires, 10).toString(); - } else { - throw AWS.util.error(new Error(), { - message: 'Presigning only supports S3 or SigV4 signing.', - code: 'UnsupportedSigner', retryable: false - }); - } -} - - -function signedUrlSigner(request) { - var endpoint = request.httpRequest.endpoint; - var parsedUrl = AWS.util.urlParse(request.httpRequest.path); - var queryParams = {}; - - if (parsedUrl.search) { - queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1)); - } - - AWS.util.each(request.httpRequest.headers, function (key, value) { - if (key === expiresHeader) key = 'Expires'; - if (key.indexOf('x-amz-meta-') === 0) { - delete queryParams[key]; - key = key.toLowerCase(); - } - queryParams[key] = value; - }); - delete request.httpRequest.headers[expiresHeader]; - - var auth = queryParams['Authorization'].split(' '); - if (auth[0] === 'AWS') { - auth = auth[1].split(':'); - queryParams['AWSAccessKeyId'] = auth[0]; - queryParams['Signature'] = auth[1]; - } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing - auth.shift(); - var rest = auth.join(' '); - var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1]; - queryParams['X-Amz-Signature'] = signature; - delete queryParams['Expires']; - } - delete queryParams['Authorization']; - delete queryParams['Host']; - - endpoint.pathname = parsedUrl.pathname; - endpoint.search = AWS.util.queryParamsToString(queryParams); -} - - -AWS.Signers.Presign = inherit({ - - sign: function sign(request, expireTime, callback) { - request.httpRequest.headers[expiresHeader] = expireTime || 3600; - request.on('build', signedUrlBuilder); - request.on('sign', signedUrlSigner); - request.removeListener('afterBuild', - AWS.EventListeners.Core.SET_CONTENT_LENGTH); - request.removeListener('afterBuild', - AWS.EventListeners.Core.COMPUTE_SHA256); - - request.emit('beforePresign', [request]); - - if (callback) { - request.build(function() { - if (this.response.error) callback(this.response.error); - else { - callback(null, AWS.util.urlFormat(request.httpRequest.endpoint)); - } - }); - } else { - request.build(); - if (request.response.error) throw request.response.error; - return AWS.util.urlFormat(request.httpRequest.endpoint); - } - } -}); - -module.exports = AWS.Signers.Presign; - -},{"../core":188}],238:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - - -AWS.Signers.RequestSigner = inherit({ - constructor: function RequestSigner(request) { - this.request = request; - }, - - setServiceClientId: function setServiceClientId(id) { - this.serviceClientId = id; - }, - - getServiceClientId: function getServiceClientId() { - return this.serviceClientId; - } -}); - -AWS.Signers.RequestSigner.getVersion = function getVersion(version) { - switch (version) { - case 'v2': return AWS.Signers.V2; - case 'v3': return AWS.Signers.V3; - case 'v4': return AWS.Signers.V4; - case 's3': return AWS.Signers.S3; - case 'v3https': return AWS.Signers.V3Https; - } - throw new Error('Unknown signing version ' + version); -}; - -require('./v2'); -require('./v3'); -require('./v3https'); -require('./v4'); -require('./s3'); -require('./presign'); - -},{"../core":188,"./presign":237,"./s3":239,"./v2":240,"./v3":241,"./v3https":242,"./v4":243}],239:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - - -AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, { - - subResources: { - 'acl': 1, - 'accelerate': 1, - 'cors': 1, - 'lifecycle': 1, - 'delete': 1, - 'location': 1, - 'logging': 1, - 'notification': 1, - 'partNumber': 1, - 'policy': 1, - 'requestPayment': 1, - 'replication': 1, - 'restore': 1, - 'tagging': 1, - 'torrent': 1, - 'uploadId': 1, - 'uploads': 1, - 'versionId': 1, - 'versioning': 1, - 'versions': 1, - 'website': 1 - }, - - responseHeaders: { - 'response-content-type': 1, - 'response-content-language': 1, - 'response-expires': 1, - 'response-cache-control': 1, - 'response-content-disposition': 1, - 'response-content-encoding': 1 - }, - - addAuthorization: function addAuthorization(credentials, date) { - if (!this.request.headers['presigned-expires']) { - this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date); - } - - if (credentials.sessionToken) { - this.request.headers['x-amz-security-token'] = credentials.sessionToken; - } - - var signature = this.sign(credentials.secretAccessKey, this.stringToSign()); - var auth = 'AWS ' + credentials.accessKeyId + ':' + signature; - - this.request.headers['Authorization'] = auth; - }, - - stringToSign: function stringToSign() { - var r = this.request; - - var parts = []; - parts.push(r.method); - parts.push(r.headers['Content-MD5'] || ''); - parts.push(r.headers['Content-Type'] || ''); - - parts.push(r.headers['presigned-expires'] || ''); - - var headers = this.canonicalizedAmzHeaders(); - if (headers) parts.push(headers); - parts.push(this.canonicalizedResource()); - - return parts.join('\n'); - - }, - - canonicalizedAmzHeaders: function canonicalizedAmzHeaders() { - - var amzHeaders = []; - - AWS.util.each(this.request.headers, function (name) { - if (name.match(/^x-amz-/i)) - amzHeaders.push(name); - }); - - amzHeaders.sort(function (a, b) { - return a.toLowerCase() < b.toLowerCase() ? -1 : 1; - }); - - var parts = []; - AWS.util.arrayEach.call(this, amzHeaders, function (name) { - parts.push(name.toLowerCase() + ':' + String(this.request.headers[name])); - }); - - return parts.join('\n'); - - }, - - canonicalizedResource: function canonicalizedResource() { - - var r = this.request; - - var parts = r.path.split('?'); - var path = parts[0]; - var querystring = parts[1]; - - var resource = ''; - - if (r.virtualHostedBucket) - resource += '/' + r.virtualHostedBucket; - - resource += path; - - if (querystring) { - - var resources = []; - - AWS.util.arrayEach.call(this, querystring.split('&'), function (param) { - var name = param.split('=')[0]; - var value = param.split('=')[1]; - if (this.subResources[name] || this.responseHeaders[name]) { - var subresource = { name: name }; - if (value !== undefined) { - if (this.subResources[name]) { - subresource.value = value; - } else { - subresource.value = decodeURIComponent(value); - } - } - resources.push(subresource); - } - }); - - resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); - - if (resources.length) { - - querystring = []; - AWS.util.arrayEach(resources, function (res) { - if (res.value === undefined) { - querystring.push(res.name); - } else { - querystring.push(res.name + '=' + res.value); - } - }); - - resource += '?' + querystring.join('&'); - } - - } - - return resource; - - }, - - sign: function sign(secret, string) { - return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1'); - } -}); - -module.exports = AWS.Signers.S3; - -},{"../core":188}],240:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - - -AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, { - addAuthorization: function addAuthorization(credentials, date) { - - if (!date) date = AWS.util.date.getDate(); - - var r = this.request; - - r.params.Timestamp = AWS.util.date.iso8601(date); - r.params.SignatureVersion = '2'; - r.params.SignatureMethod = 'HmacSHA256'; - r.params.AWSAccessKeyId = credentials.accessKeyId; - - if (credentials.sessionToken) { - r.params.SecurityToken = credentials.sessionToken; - } - - delete r.params.Signature; // delete old Signature for re-signing - r.params.Signature = this.signature(credentials); - - r.body = AWS.util.queryParamsToString(r.params); - r.headers['Content-Length'] = r.body.length; - }, - - signature: function signature(credentials) { - return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); - }, - - stringToSign: function stringToSign() { - var parts = []; - parts.push(this.request.method); - parts.push(this.request.endpoint.host.toLowerCase()); - parts.push(this.request.pathname()); - parts.push(AWS.util.queryParamsToString(this.request.params)); - return parts.join('\n'); - } - -}); - -module.exports = AWS.Signers.V2; - -},{"../core":188}],241:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - - -AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, { - addAuthorization: function addAuthorization(credentials, date) { - - var datetime = AWS.util.date.rfc822(date); - - this.request.headers['X-Amz-Date'] = datetime; - - if (credentials.sessionToken) { - this.request.headers['x-amz-security-token'] = credentials.sessionToken; - } - - this.request.headers['X-Amzn-Authorization'] = - this.authorization(credentials, datetime); - - }, - - authorization: function authorization(credentials) { - return 'AWS3 ' + - 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + - 'Algorithm=HmacSHA256,' + - 'SignedHeaders=' + this.signedHeaders() + ',' + - 'Signature=' + this.signature(credentials); - }, - - signedHeaders: function signedHeaders() { - var headers = []; - AWS.util.arrayEach(this.headersToSign(), function iterator(h) { - headers.push(h.toLowerCase()); - }); - return headers.sort().join(';'); - }, - - canonicalHeaders: function canonicalHeaders() { - var headers = this.request.headers; - var parts = []; - AWS.util.arrayEach(this.headersToSign(), function iterator(h) { - parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim()); - }); - return parts.sort().join('\n') + '\n'; - }, - - headersToSign: function headersToSign() { - var headers = []; - AWS.util.each(this.request.headers, function iterator(k) { - if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) { - headers.push(k); - } - }); - return headers; - }, - - signature: function signature(credentials) { - return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); - }, - - stringToSign: function stringToSign() { - var parts = []; - parts.push(this.request.method); - parts.push('/'); - parts.push(''); - parts.push(this.canonicalHeaders()); - parts.push(this.request.body); - return AWS.util.crypto.sha256(parts.join('\n')); - } - -}); - -module.exports = AWS.Signers.V3; - -},{"../core":188}],242:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -require('./v3'); - - -AWS.Signers.V3Https = inherit(AWS.Signers.V3, { - authorization: function authorization(credentials) { - return 'AWS3-HTTPS ' + - 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + - 'Algorithm=HmacSHA256,' + - 'Signature=' + this.signature(credentials); - }, - - stringToSign: function stringToSign() { - return this.request.headers['X-Amz-Date']; - } -}); - -module.exports = AWS.Signers.V3Https; - -},{"../core":188,"./v3":241}],243:[function(require,module,exports){ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - - -var cachedSecret = {}; - - -var cacheQueue = []; - - -var maxCacheEntries = 50; - - -var expiresHeader = 'presigned-expires'; - - -AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, { - constructor: function V4(request, serviceName, signatureCache) { - AWS.Signers.RequestSigner.call(this, request); - this.serviceName = serviceName; - this.signatureCache = signatureCache; - }, - - algorithm: 'AWS4-HMAC-SHA256', - - addAuthorization: function addAuthorization(credentials, date) { - var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, ''); - - if (this.isPresigned()) { - this.updateForPresigned(credentials, datetime); - } else { - this.addHeaders(credentials, datetime); - } - - this.request.headers['Authorization'] = - this.authorization(credentials, datetime); - }, - - addHeaders: function addHeaders(credentials, datetime) { - this.request.headers['X-Amz-Date'] = datetime; - if (credentials.sessionToken) { - this.request.headers['x-amz-security-token'] = credentials.sessionToken; - } - }, - - updateForPresigned: function updateForPresigned(credentials, datetime) { - var credString = this.credentialString(datetime); - var qs = { - 'X-Amz-Date': datetime, - 'X-Amz-Algorithm': this.algorithm, - 'X-Amz-Credential': credentials.accessKeyId + '/' + credString, - 'X-Amz-Expires': this.request.headers[expiresHeader], - 'X-Amz-SignedHeaders': this.signedHeaders() - }; - - if (credentials.sessionToken) { - qs['X-Amz-Security-Token'] = credentials.sessionToken; - } - - if (this.request.headers['Content-Type']) { - qs['Content-Type'] = this.request.headers['Content-Type']; - } - if (this.request.headers['Content-MD5']) { - qs['Content-MD5'] = this.request.headers['Content-MD5']; - } - if (this.request.headers['Cache-Control']) { - qs['Cache-Control'] = this.request.headers['Cache-Control']; - } - - AWS.util.each.call(this, this.request.headers, function(key, value) { - if (key === expiresHeader) return; - if (this.isSignableHeader(key)) { - var lowerKey = key.toLowerCase(); - if (lowerKey.indexOf('x-amz-meta-') === 0) { - qs[lowerKey] = value; - } else if (lowerKey.indexOf('x-amz-') === 0) { - qs[key] = value; - } - } - }); - - var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?'; - this.request.path += sep + AWS.util.queryParamsToString(qs); - }, - - authorization: function authorization(credentials, datetime) { - var parts = []; - var credString = this.credentialString(datetime); - parts.push(this.algorithm + ' Credential=' + - credentials.accessKeyId + '/' + credString); - parts.push('SignedHeaders=' + this.signedHeaders()); - parts.push('Signature=' + this.signature(credentials, datetime)); - return parts.join(', '); - }, - - signature: function signature(credentials, datetime) { - var cache = null; - var cacheIdentifier = this.serviceName + (this.getServiceClientId() ? '_' + this.getServiceClientId() : ''); - if (this.signatureCache) { - var cache = cachedSecret[cacheIdentifier]; - if (!cache) { - cacheQueue.push(cacheIdentifier); - if (cacheQueue.length > maxCacheEntries) { - delete cachedSecret[cacheQueue.shift()]; - } - } - - } - var date = datetime.substr(0, 8); - - if (!cache || - cache.akid !== credentials.accessKeyId || - cache.region !== this.request.region || - cache.date !== date) { - - var kSecret = credentials.secretAccessKey; - var kDate = AWS.util.crypto.hmac('AWS4' + kSecret, date, 'buffer'); - var kRegion = AWS.util.crypto.hmac(kDate, this.request.region, 'buffer'); - var kService = AWS.util.crypto.hmac(kRegion, this.serviceName, 'buffer'); - var kCredentials = AWS.util.crypto.hmac(kService, 'aws4_request', 'buffer'); - - if (!this.signatureCache) { - return AWS.util.crypto.hmac(kCredentials, this.stringToSign(datetime), 'hex'); - } - - cachedSecret[cacheIdentifier] = { - region: this.request.region, date: date, - key: kCredentials, akid: credentials.accessKeyId - }; - } - - var key = cachedSecret[cacheIdentifier].key; - return AWS.util.crypto.hmac(key, this.stringToSign(datetime), 'hex'); - }, - - stringToSign: function stringToSign(datetime) { - var parts = []; - parts.push('AWS4-HMAC-SHA256'); - parts.push(datetime); - parts.push(this.credentialString(datetime)); - parts.push(this.hexEncodedHash(this.canonicalString())); - return parts.join('\n'); - }, - - canonicalString: function canonicalString() { - var parts = [], pathname = this.request.pathname(); - if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname); - - parts.push(this.request.method); - parts.push(pathname); - parts.push(this.request.search()); - parts.push(this.canonicalHeaders() + '\n'); - parts.push(this.signedHeaders()); - parts.push(this.hexEncodedBodyHash()); - return parts.join('\n'); - }, - - canonicalHeaders: function canonicalHeaders() { - var headers = []; - AWS.util.each.call(this, this.request.headers, function (key, item) { - headers.push([key, item]); - }); - headers.sort(function (a, b) { - return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1; - }); - var parts = []; - AWS.util.arrayEach.call(this, headers, function (item) { - var key = item[0].toLowerCase(); - if (this.isSignableHeader(key)) { - parts.push(key + ':' + - this.canonicalHeaderValues(item[1].toString())); - } - }); - return parts.join('\n'); - }, - - canonicalHeaderValues: function canonicalHeaderValues(values) { - return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); - }, - - signedHeaders: function signedHeaders() { - var keys = []; - AWS.util.each.call(this, this.request.headers, function (key) { - key = key.toLowerCase(); - if (this.isSignableHeader(key)) keys.push(key); - }); - return keys.sort().join(';'); - }, - - credentialString: function credentialString(datetime) { - var parts = []; - parts.push(datetime.substr(0, 8)); - parts.push(this.request.region); - parts.push(this.serviceName); - parts.push('aws4_request'); - return parts.join('/'); - }, - - hexEncodedHash: function hash(string) { - return AWS.util.crypto.sha256(string, 'hex'); - }, - - hexEncodedBodyHash: function hexEncodedBodyHash() { - if (this.isPresigned() && this.serviceName === 's3' && !this.request.body) { - return 'UNSIGNED-PAYLOAD'; - } else if (this.request.headers['X-Amz-Content-Sha256']) { - return this.request.headers['X-Amz-Content-Sha256']; - } else { - return this.hexEncodedHash(this.request.body || ''); - } - }, - - unsignableHeaders: ['authorization', 'content-type', 'content-length', - 'user-agent', expiresHeader, 'expect'], - - isSignableHeader: function isSignableHeader(key) { - if (key.toLowerCase().indexOf('x-amz-') === 0) return true; - return this.unsignableHeaders.indexOf(key) < 0; - }, - - isPresigned: function isPresigned() { - return this.request.headers[expiresHeader] ? true : false; - } - -}); - -module.exports = AWS.Signers.V4; - -},{"../core":188}],244:[function(require,module,exports){ -function AcceptorStateMachine(states, state) { - this.currentState = state || null; - this.states = states || {}; -} - -AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) { - if (typeof finalState === 'function') { - inputError = bindObject; bindObject = done; - done = finalState; finalState = null; - } - - var self = this; - var state = self.states[self.currentState]; - state.fn.call(bindObject || self, inputError, function(err) { - if (err) { - if (state.fail) self.currentState = state.fail; - else return done ? done.call(bindObject, err) : null; - } else { - if (state.accept) self.currentState = state.accept; - else return done ? done.call(bindObject) : null; - } - if (self.currentState === finalState) { - return done ? done.call(bindObject, err) : null; - } - - self.runTo(finalState, done, bindObject, err); - }); -}; - -AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) { - if (typeof acceptState === 'function') { - fn = acceptState; acceptState = null; failState = null; - } else if (typeof failState === 'function') { - fn = failState; failState = null; - } - - if (!this.currentState) this.currentState = name; - this.states[name] = { accept: acceptState, fail: failState, fn: fn }; - return this; -}; - -module.exports = AcceptorStateMachine; - -},{}],245:[function(require,module,exports){ -(function (process){ - -var AWS; - - -var util = { - engine: function engine() { - if (util.isBrowser() && typeof navigator !== 'undefined') { - return navigator.userAgent; - } else { - return process.platform + '/' + process.version; - } - }, - - userAgent: function userAgent() { - var name = util.isBrowser() ? 'js' : 'nodejs'; - var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION; - if (name === 'nodejs') agent += ' ' + util.engine(); - return agent; - }, - - isBrowser: function isBrowser() { return process && process.browser; }, - isNode: function isNode() { return !util.isBrowser(); }, - uriEscape: function uriEscape(string) { - var output = encodeURIComponent(string); - output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); - - output = output.replace(/[*]/g, function(ch) { - return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); - }); - - return output; - }, - - uriEscapePath: function uriEscapePath(string) { - var parts = []; - util.arrayEach(string.split('/'), function (part) { - parts.push(util.uriEscape(part)); - }); - return parts.join('/'); - }, - - urlParse: function urlParse(url) { - return util.url.parse(url); - }, - - urlFormat: function urlFormat(url) { - return util.url.format(url); - }, - - queryStringParse: function queryStringParse(qs) { - return util.querystring.parse(qs); - }, - - queryParamsToString: function queryParamsToString(params) { - var items = []; - var escape = util.uriEscape; - var sortedKeys = Object.keys(params).sort(); - - util.arrayEach(sortedKeys, function(name) { - var value = params[name]; - var ename = escape(name); - var result = ename + '='; - if (Array.isArray(value)) { - var vals = []; - util.arrayEach(value, function(item) { vals.push(escape(item)); }); - result = ename + '=' + vals.sort().join('&' + ename + '='); - } else if (value !== undefined && value !== null) { - result = ename + '=' + escape(value); - } - items.push(result); - }); - - return items.join('&'); - }, - - readFileSync: function readFileSync(path) { - if (util.isBrowser()) return null; - return require('fs').readFileSync(path, 'utf-8'); - }, - - base64: { - - encode: function encode64(string) { - return new util.Buffer(string).toString('base64'); - }, - - decode: function decode64(string) { - return new util.Buffer(string, 'base64'); - } - - }, - - buffer: { - toStream: function toStream(buffer) { - if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); - - var readable = new (util.stream.Readable)(); - var pos = 0; - readable._read = function(size) { - if (pos >= buffer.length) return readable.push(null); - - var end = pos + size; - if (end > buffer.length) end = buffer.length; - readable.push(buffer.slice(pos, end)); - pos = end; - }; - - return readable; - }, - - - concat: function(buffers) { - var length = 0, - offset = 0, - buffer = null, i; - - for (i = 0; i < buffers.length; i++) { - length += buffers[i].length; - } - - buffer = new util.Buffer(length); - - for (i = 0; i < buffers.length; i++) { - buffers[i].copy(buffer, offset); - offset += buffers[i].length; - } - - return buffer; - } - }, - - string: { - byteLength: function byteLength(string) { - if (string === null || string === undefined) return 0; - if (typeof string === 'string') string = new util.Buffer(string); - - if (typeof string.byteLength === 'number') { - return string.byteLength; - } else if (typeof string.length === 'number') { - return string.length; - } else if (typeof string.size === 'number') { - return string.size; - } else if (typeof string.path === 'string') { - return require('fs').lstatSync(string.path).size; - } else { - throw util.error(new Error('Cannot determine length of ' + string), - { object: string }); - } - }, - - upperFirst: function upperFirst(string) { - return string[0].toUpperCase() + string.substr(1); - }, - - lowerFirst: function lowerFirst(string) { - return string[0].toLowerCase() + string.substr(1); - } - }, - - ini: { - parse: function string(ini) { - var currentSection, map = {}; - util.arrayEach(ini.split(/\r?\n/), function(line) { - line = line.split(/(^|\s)[;#]/)[0]; // remove comments - var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); - if (section) { - currentSection = section[1]; - } else if (currentSection) { - var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); - if (item) { - map[currentSection] = map[currentSection] || {}; - map[currentSection][item[1]] = item[2]; - } - } - }); - - return map; - } - }, - - fn: { - noop: function() {}, - - - makeAsync: function makeAsync(fn, expectedArgs) { - if (expectedArgs && expectedArgs <= fn.length) { - return fn; - } - - return function() { - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var result = fn.apply(null, args); - callback(result); - }; - } - }, - - - date: { - - - getDate: function getDate() { - if (!AWS) AWS = require('./core'); - if (AWS.config.systemClockOffset) { // use offset when non-zero - return new Date(new Date().getTime() + AWS.config.systemClockOffset); - } else { - return new Date(); - } - }, - - - iso8601: function iso8601(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); - }, - - - rfc822: function rfc822(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.toUTCString(); - }, - - - unixTimestamp: function unixTimestamp(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.getTime() / 1000; - }, - - - from: function format(date) { - if (typeof date === 'number') { - return new Date(date * 1000); // unix timestamp - } else { - return new Date(date); - } - }, - - - format: function format(date, formatter) { - if (!formatter) formatter = 'iso8601'; - return util.date[formatter](util.date.from(date)); - }, - - parseTimestamp: function parseTimestamp(value) { - if (typeof value === 'number') { // unix timestamp (number) - return new Date(value * 1000); - } else if (value.match(/^\d+$/)) { // unix timestamp - return new Date(value * 1000); - } else if (value.match(/^\d{4}/)) { // iso8601 - return new Date(value); - } else if (value.match(/^\w{3},/)) { // rfc822 - return new Date(value); - } else { - throw util.error( - new Error('unhandled timestamp format: ' + value), - {code: 'TimestampParserError'}); - } - } - - }, - - crypto: { - crc32Table: [ - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, - 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, - 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, - 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, - 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, - 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, - 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, - 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, - 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, - 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, - 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, - 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, - 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, - 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, - 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, - 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, - 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, - 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, - 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, - 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, - 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, - 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, - 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, - 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, - 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, - 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, - 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, - 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, - 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, - 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, - 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, - 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, - 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, - 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, - 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, - 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, - 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, - 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, - 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, - 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, - 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, - 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, - 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, - 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, - 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, - 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, - 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, - 0x2D02EF8D], - - crc32: function crc32(data) { - var tbl = util.crypto.crc32Table; - var crc = 0 ^ -1; - - if (typeof data === 'string') { - data = new util.Buffer(data); - } - - for (var i = 0; i < data.length; i++) { - var code = data.readUInt8(i); - crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; - } - return (crc ^ -1) >>> 0; - }, - - hmac: function hmac(key, string, digest, fn) { - if (!digest) digest = 'binary'; - if (digest === 'buffer') { digest = undefined; } - if (!fn) fn = 'sha256'; - if (typeof string === 'string') string = new util.Buffer(string); - return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); - }, - - md5: function md5(data, digest, callback) { - return util.crypto.hash('md5', data, digest, callback); - }, - - sha256: function sha256(data, digest, callback) { - return util.crypto.hash('sha256', data, digest, callback); - }, - - hash: function(algorithm, data, digest, callback) { - var hash = util.crypto.createHash(algorithm); - if (!digest) { digest = 'binary'; } - if (digest === 'buffer') { digest = undefined; } - if (typeof data === 'string') data = new util.Buffer(data); - var sliceFn = util.arraySliceFn(data); - var isBuffer = util.Buffer.isBuffer(data); - if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; - - if (callback && typeof data === 'object' && - typeof data.on === 'function' && !isBuffer) { - data.on('data', function(chunk) { hash.update(chunk); }); - data.on('error', function(err) { callback(err); }); - data.on('end', function() { callback(null, hash.digest(digest)); }); - } else if (callback && sliceFn && !isBuffer && - typeof FileReader !== 'undefined') { - var index = 0, size = 1024 * 512; - var reader = new FileReader(); - reader.onerror = function() { - callback(new Error('Failed to read data.')); - }; - reader.onload = function() { - var buf = new util.Buffer(new Uint8Array(reader.result)); - hash.update(buf); - index += buf.length; - reader._continueReading(); - }; - reader._continueReading = function() { - if (index >= data.size) { - callback(null, hash.digest(digest)); - return; - } - - var back = index + size; - if (back > data.size) back = data.size; - reader.readAsArrayBuffer(sliceFn.call(data, index, back)); - }; - - reader._continueReading(); - } else { - if (util.isBrowser() && typeof data === 'object' && !isBuffer) { - data = new util.Buffer(new Uint8Array(data)); - } - var out = hash.update(data).digest(digest); - if (callback) callback(null, out); - return out; - } - }, - - toHex: function toHex(data) { - var out = []; - for (var i = 0; i < data.length; i++) { - out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); - } - return out.join(''); - }, - - createHash: function createHash(algorithm) { - return util.crypto.lib.createHash(algorithm); - } - - }, - - - - - abort: {}, - - each: function each(object, iterFunction) { - for (var key in object) { - if (Object.prototype.hasOwnProperty.call(object, key)) { - var ret = iterFunction.call(this, key, object[key]); - if (ret === util.abort) break; - } - } - }, - - arrayEach: function arrayEach(array, iterFunction) { - for (var idx in array) { - if (Object.prototype.hasOwnProperty.call(array, idx)) { - var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); - if (ret === util.abort) break; - } - } - }, - - update: function update(obj1, obj2) { - util.each(obj2, function iterator(key, item) { - obj1[key] = item; - }); - return obj1; - }, - - merge: function merge(obj1, obj2) { - return util.update(util.copy(obj1), obj2); - }, - - copy: function copy(object) { - if (object === null || object === undefined) return object; - var dupe = {}; - for (var key in object) { - dupe[key] = object[key]; - } - return dupe; - }, - - isEmpty: function isEmpty(obj) { - for (var prop in obj) { - if (Object.prototype.hasOwnProperty.call(obj, prop)) { - return false; - } - } - return true; - }, - - arraySliceFn: function arraySliceFn(obj) { - var fn = obj.slice || obj.webkitSlice || obj.mozSlice; - return typeof fn === 'function' ? fn : null; - }, - - isType: function isType(obj, type) { - if (typeof type === 'function') type = util.typeName(type); - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - typeName: function typeName(type) { - if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; - var str = type.toString(); - var match = str.match(/^\s*function (.+)\(/); - return match ? match[1] : str; - }, - - error: function error(err, options) { - var originalError = null; - if (typeof err.message === 'string' && err.message !== '') { - if (typeof options === 'string' || (options && options.message)) { - originalError = util.copy(err); - originalError.message = err.message; - } - } - err.message = err.message || null; - - if (typeof options === 'string') { - err.message = options; - } else if (typeof options === 'object' && options !== null) { - util.update(err, options); - if (options.message) - err.message = options.message; - if (options.code || options.name) - err.code = options.code || options.name; - if (options.stack) - err.stack = options.stack; - } - - if (typeof Object.defineProperty === 'function') { - Object.defineProperty(err, 'name', {writable: true, enumerable: false}); - Object.defineProperty(err, 'message', {enumerable: true}); - } - - err.name = options && options.name || err.name || err.code || 'Error'; - err.time = new Date(); - - if (originalError) err.originalError = originalError; - - return err; - }, - - - inherit: function inherit(klass, features) { - var newObject = null; - if (features === undefined) { - features = klass; - klass = Object; - newObject = {}; - } else { - var ctor = function ConstructorWrapper() {}; - ctor.prototype = klass.prototype; - newObject = new ctor(); - } - - if (features.constructor === Object) { - features.constructor = function() { - if (klass !== Object) { - return klass.apply(this, arguments); - } - }; - } - - features.constructor.prototype = newObject; - util.update(features.constructor.prototype, features); - features.constructor.__super__ = klass; - return features.constructor; - }, - - - mixin: function mixin() { - var klass = arguments[0]; - for (var i = 1; i < arguments.length; i++) { - for (var prop in arguments[i].prototype) { - var fn = arguments[i].prototype[prop]; - if (prop !== 'constructor') { - klass.prototype[prop] = fn; - } - } - } - return klass; - }, - - - hideProperties: function hideProperties(obj, props) { - if (typeof Object.defineProperty !== 'function') return; - - util.arrayEach(props, function (key) { - Object.defineProperty(obj, key, { - enumerable: false, writable: true, configurable: true }); - }); - }, - - - property: function property(obj, name, value, enumerable, isValue) { - var opts = { - configurable: true, - enumerable: enumerable !== undefined ? enumerable : true - }; - if (typeof value === 'function' && !isValue) { - opts.get = value; - } - else { - opts.value = value; opts.writable = true; - } - - Object.defineProperty(obj, name, opts); - }, - - - memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { - var cachedValue = null; - - util.property(obj, name, function() { - if (cachedValue === null) { - cachedValue = get(); - } - return cachedValue; - }, enumerable); - }, - - - hoistPayloadMember: function hoistPayloadMember(resp) { - var req = resp.request; - var operation = req.operation; - var output = req.service.api.operations[operation].output; - if (output.payload) { - var payloadMember = output.members[output.payload]; - var responsePayload = resp.data[output.payload]; - if (payloadMember.type === 'structure') { - util.each(responsePayload, function(key, value) { - util.property(resp.data, key, value, false); - }); - } - } - }, - - - computeSha256: function computeSha256(body, done) { - if (util.isNode()) { - var Stream = util.stream.Stream; - var fs = require('fs'); - if (body instanceof Stream) { - if (typeof body.path === 'string') { // assume file object - var settings = {}; - if (typeof body.start === 'number') { - settings.start = body.start; - } - if (typeof body.end === 'number') { - settings.end = body.end; - } - body = fs.createReadStream(body.path, settings); - } else { // TODO support other stream types - return done(new Error('Non-file stream objects are ' + - 'not supported with SigV4')); - } - } - } - - util.crypto.sha256(body, 'hex', function(err, sha) { - if (err) done(err); - else done(null, sha); - }); - }, - - - isClockSkewed: function isClockSkewed(serverTime) { - if (serverTime) { - util.property(AWS.config, 'isClockSkewed', - Math.abs(new Date().getTime() - serverTime) >= 300000, false); - return AWS.config.isClockSkewed; - } - }, - - applyClockOffset: function applyClockOffset(serverTime) { - if (serverTime) - AWS.config.systemClockOffset = serverTime - new Date().getTime(); - }, - - - extractRequestId: function extractRequestId(resp) { - var requestId = resp.httpResponse.headers['x-amz-request-id'] || - resp.httpResponse.headers['x-amzn-requestid']; - - if (!requestId && resp.data && resp.data.ResponseMetadata) { - requestId = resp.data.ResponseMetadata.RequestId; - } - - if (requestId) { - resp.requestId = requestId; - } - - if (resp.error) { - resp.error.requestId = requestId; - } - }, - - - addPromisesToRequests: function addPromisesToRequests(constructor, PromiseDependency) { - PromiseDependency = PromiseDependency || null; - if (!PromiseDependency && typeof Promise !== 'undefined') { - PromiseDependency = Promise; - } - if (typeof PromiseDependency !== 'function') { - delete constructor.prototype.promise; - return; - } - constructor.prototype.promise = function promise() { - var self = this; - return new PromiseDependency(function(resolve, reject) { - self.on('complete', function(resp) { - if (resp.error) { - reject(resp.error); - } else { - resolve(resp.data); - } - }); - self.runTo(); - }); - } - }, - - - isDualstackAvailable: function isDualstackAvailable(service) { - if (!service) return false; - var metadata = require('../apis/metadata.json'); - if (typeof service !== 'string') service = service.serviceIdentifier; - if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; - return !!metadata[service].dualstackAvailable; - }, - - - calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { - if (!retryDelayOptions) retryDelayOptions = {}; - var customBackoff = retryDelayOptions.customBackoff || null; - if (typeof customBackoff === 'function') { - return customBackoff(retryCount); - } - var base = retryDelayOptions.base || 100; - var delay = Math.random() * (Math.pow(2, retryCount) * base); - return delay; - }, - - - handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { - if (!options) options = {}; - var http = AWS.HttpClient.getInstance(); - var httpOptions = options.httpOptions || {}; - var retryCount = 0; - - var errCallback = function(err) { - var maxRetries = options.maxRetries || 0; - if (err && err.code === 'TimeoutError') err.retryable = true; - if (err && err.retryable && retryCount < maxRetries) { - retryCount++; - var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); - setTimeout(sendRequest, delay + (err.retryAfter || 0)); - } else { - cb(err); - } - }; - - var sendRequest = function() { - var data = ''; - http.handleRequest(httpRequest, httpOptions, function(httpResponse) { - httpResponse.on('data', function(chunk) { data += chunk.toString(); }); - httpResponse.on('end', function() { - var statusCode = httpResponse.statusCode; - if (statusCode < 300) { - cb(null, data); - } else { - var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; - var err = util.error(new Error(), - { retryable: statusCode >= 500 || statusCode === 429 } - ); - if (retryAfter && err.retryable) err.retryAfter = retryAfter; - errCallback(err); - } - }); - }, errCallback); - }; - - process.nextTick(sendRequest); - } - -}; - -module.exports = util; - -}).call(this,require('_process')) -},{"../apis/metadata.json":86,"./core":188,"_process":250,"fs":248}],246:[function(require,module,exports){ -var util = require('../util'); -var Shape = require('../model/shape'); - -function DomXmlParser() { } - -DomXmlParser.prototype.parse = function(xml, shape) { - if (xml.replace(/^\s+/, '') === '') return {}; - - var result, error; - try { - if (window.DOMParser) { - try { - var parser = new DOMParser(); - result = parser.parseFromString(xml, 'text/xml'); - } catch (syntaxError) { - throw util.error(new Error('Parse error in document'), - { - originalError: syntaxError, - code: 'XMLParserError', - retryable: true - }); - } - - if (result.documentElement === null) { - throw util.error(new Error('Cannot parse empty document.'), - { - code: 'XMLParserError', - retryable: true - }); - } - - var isError = result.getElementsByTagName('parsererror')[0]; - if (isError && (isError.parentNode === result || - isError.parentNode.nodeName === 'body' || - isError.parentNode.parentNode === result || - isError.parentNode.parentNode.nodeName === 'body')) { - var errorElement = isError.getElementsByTagName('div')[0] || isError; - throw util.error(new Error(errorElement.textContent || 'Parser error in document'), - { - code: 'XMLParserError', - retryable: true - }); - } - } else if (window.ActiveXObject) { - result = new window.ActiveXObject('Microsoft.XMLDOM'); - result.async = false; - - if (!result.loadXML(xml)) { - throw util.error(new Error('Parse error in document'), - { - code: 'XMLParserError', - retryable: true - }); - } - } else { - throw new Error('Cannot load XML parser'); - } - } catch (e) { - error = e; - } - - if (result && result.documentElement && !error) { - var data = parseXml(result.documentElement, shape); - var metadata = result.getElementsByTagName('ResponseMetadata')[0]; - if (metadata) { - data.ResponseMetadata = parseXml(metadata, {}); - } - return data; - } else if (error) { - throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true}); - } else { // empty xml document - return {}; - } -}; - -function parseXml(xml, shape) { - if (!shape) shape = {}; - switch (shape.type) { - case 'structure': return parseStructure(xml, shape); - case 'map': return parseMap(xml, shape); - case 'list': return parseList(xml, shape); - case undefined: case null: return parseUnknown(xml); - default: return parseScalar(xml, shape); - } -} - -function parseStructure(xml, shape) { - var data = {}; - if (xml === null) return data; - - util.each(shape.members, function(memberName, memberShape) { - if (memberShape.isXmlAttribute) { - if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) { - var value = xml.attributes[memberShape.name].value; - data[memberName] = parseXml({textContent: value}, memberShape); - } - } else { - var xmlChild = memberShape.flattened ? xml : - xml.getElementsByTagName(memberShape.name)[0]; - if (xmlChild) { - data[memberName] = parseXml(xmlChild, memberShape); - } else if (!memberShape.flattened && memberShape.type === 'list') { - data[memberName] = memberShape.defaultValue; - } - } - }); - - return data; -} - -function parseMap(xml, shape) { - var data = {}; - var xmlKey = shape.key.name || 'key'; - var xmlValue = shape.value.name || 'value'; - var tagName = shape.flattened ? shape.name : 'entry'; - - var child = xml.firstElementChild; - while (child) { - if (child.nodeName === tagName) { - var key = child.getElementsByTagName(xmlKey)[0].textContent; - var value = child.getElementsByTagName(xmlValue)[0]; - data[key] = parseXml(value, shape.value); - } - child = child.nextElementSibling; - } - return data; -} - -function parseList(xml, shape) { - var data = []; - var tagName = shape.flattened ? shape.name : (shape.member.name || 'member'); - - var child = xml.firstElementChild; - while (child) { - if (child.nodeName === tagName) { - data.push(parseXml(child, shape.member)); - } - child = child.nextElementSibling; - } - return data; -} - -function parseScalar(xml, shape) { - if (xml.getAttribute) { - var encoding = xml.getAttribute('encoding'); - if (encoding === 'base64') { - shape = new Shape.create({type: encoding}); - } - } - - var text = xml.textContent; - if (text === '') text = null; - if (typeof shape.toType === 'function') { - return shape.toType(text); - } else { - return text; - } -} - -function parseUnknown(xml) { - if (xml === undefined || xml === null) return ''; - - if (!xml.firstElementChild) { - if (xml.parentNode.parentNode === null) return {}; - if (xml.childNodes.length === 0) return ''; - else return xml.textContent; - } - - var shape = {type: 'structure', members: {}}; - var child = xml.firstElementChild; - while (child) { - var tag = child.nodeName; - if (Object.prototype.hasOwnProperty.call(shape.members, tag)) { - shape.members[tag].type = 'list'; - } else { - shape.members[tag] = {name: tag}; - } - child = child.nextElementSibling; - } - return parseStructure(xml, shape); -} - -module.exports = DomXmlParser; - -},{"../model/shape":210,"../util":245}],247:[function(require,module,exports){ -var util = require('../util'); -var builder = require('xmlbuilder'); - -function XmlBuilder() { } - -XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) { - var xml = builder.create(rootElement); - applyNamespaces(xml, shape); - serialize(xml, params, shape); - return xml.children.length > 0 || noEmpty ? xml.root().toString() : ''; -}; - -function serialize(xml, value, shape) { - switch (shape.type) { - case 'structure': return serializeStructure(xml, value, shape); - case 'map': return serializeMap(xml, value, shape); - case 'list': return serializeList(xml, value, shape); - default: return serializeScalar(xml, value, shape); - } -} - -function serializeStructure(xml, params, shape) { - util.arrayEach(shape.memberNames, function(memberName) { - var memberShape = shape.members[memberName]; - if (memberShape.location !== 'body') return; - - var value = params[memberName]; - var name = memberShape.name; - if (value !== undefined && value !== null) { - if (memberShape.isXmlAttribute) { - xml.att(name, value); - } else if (memberShape.flattened) { - serialize(xml, value, memberShape); - } else { - var element = xml.ele(name); - applyNamespaces(element, memberShape); - serialize(element, value, memberShape); - } - } - }); -} - -function serializeMap(xml, map, shape) { - var xmlKey = shape.key.name || 'key'; - var xmlValue = shape.value.name || 'value'; - - util.each(map, function(key, value) { - var entry = xml.ele(shape.flattened ? shape.name : 'entry'); - serialize(entry.ele(xmlKey), key, shape.key); - serialize(entry.ele(xmlValue), value, shape.value); - }); -} - -function serializeList(xml, list, shape) { - if (shape.flattened) { - util.arrayEach(list, function(value) { - var name = shape.member.name || shape.name; - var element = xml.ele(name); - serialize(element, value, shape.member); - }); - } else { - util.arrayEach(list, function(value) { - var name = shape.member.name || 'member'; - var element = xml.ele(name); - serialize(element, value, shape.member); - }); - } -} - -function serializeScalar(xml, value, shape) { - xml.txt(shape.toWireFormat(value)); -} - -function applyNamespaces(xml, shape) { - var uri, prefix = 'xmlns'; - if (shape.xmlNamespaceUri) { - uri = shape.xmlNamespaceUri; - if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix; - } else if (xml.isRoot && shape.api.xmlNamespaceUri) { - uri = shape.api.xmlNamespaceUri; - } - - if (uri) xml.att(prefix, uri); -} - -module.exports = XmlBuilder; - -},{"../util":245,"xmlbuilder":289}],248:[function(require,module,exports){ - -},{}],249:[function(require,module,exports){ - -function EventEmitter() { - this._events = this._events || {}; - this._maxListeners = this._maxListeners || undefined; -} -module.exports = EventEmitter; - -EventEmitter.EventEmitter = EventEmitter; - -EventEmitter.prototype._events = undefined; -EventEmitter.prototype._maxListeners = undefined; - -EventEmitter.defaultMaxListeners = 10; - -EventEmitter.prototype.setMaxListeners = function(n) { - if (!isNumber(n) || n < 0 || isNaN(n)) - throw TypeError('n must be a positive number'); - this._maxListeners = n; - return this; -}; - -EventEmitter.prototype.emit = function(type) { - var er, handler, len, args, i, listeners; - - if (!this._events) - this._events = {}; - - if (type === 'error') { - if (!this._events.error || - (isObject(this._events.error) && !this._events.error.length)) { - er = arguments[1]; - if (er instanceof Error) { - throw er; // Unhandled 'error' event - } else { - var err = new Error('Uncaught, unspecified "error" event. (' + er + ')'); - err.context = er; - throw err; - } - } - } - - handler = this._events[type]; - - if (isUndefined(handler)) - return false; - - if (isFunction(handler)) { - switch (arguments.length) { - case 1: - handler.call(this); - break; - case 2: - handler.call(this, arguments[1]); - break; - case 3: - handler.call(this, arguments[1], arguments[2]); - break; - default: - args = Array.prototype.slice.call(arguments, 1); - handler.apply(this, args); - } - } else if (isObject(handler)) { - args = Array.prototype.slice.call(arguments, 1); - listeners = handler.slice(); - len = listeners.length; - for (i = 0; i < len; i++) - listeners[i].apply(this, args); - } - - return true; -}; - -EventEmitter.prototype.addListener = function(type, listener) { - var m; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events) - this._events = {}; - - if (this._events.newListener) - this.emit('newListener', type, - isFunction(listener.listener) ? - listener.listener : listener); - - if (!this._events[type]) - this._events[type] = listener; - else if (isObject(this._events[type])) - this._events[type].push(listener); - else - this._events[type] = [this._events[type], listener]; - - if (isObject(this._events[type]) && !this._events[type].warned) { - if (!isUndefined(this._maxListeners)) { - m = this._maxListeners; - } else { - m = EventEmitter.defaultMaxListeners; - } - - if (m && m > 0 && this._events[type].length > m) { - this._events[type].warned = true; - console.error('(node) warning: possible EventEmitter memory ' + - 'leak detected. %d listeners added. ' + - 'Use emitter.setMaxListeners() to increase limit.', - this._events[type].length); - if (typeof console.trace === 'function') { - console.trace(); - } - } - } - - return this; -}; - -EventEmitter.prototype.on = EventEmitter.prototype.addListener; - -EventEmitter.prototype.once = function(type, listener) { - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - var fired = false; - - function g() { - this.removeListener(type, g); - - if (!fired) { - fired = true; - listener.apply(this, arguments); - } - } - - g.listener = listener; - this.on(type, g); - - return this; -}; - -EventEmitter.prototype.removeListener = function(type, listener) { - var list, position, length, i; - - if (!isFunction(listener)) - throw TypeError('listener must be a function'); - - if (!this._events || !this._events[type]) - return this; - - list = this._events[type]; - length = list.length; - position = -1; - - if (list === listener || - (isFunction(list.listener) && list.listener === listener)) { - delete this._events[type]; - if (this._events.removeListener) - this.emit('removeListener', type, listener); - - } else if (isObject(list)) { - for (i = length; i-- > 0;) { - if (list[i] === listener || - (list[i].listener && list[i].listener === listener)) { - position = i; - break; - } - } - - if (position < 0) - return this; - - if (list.length === 1) { - list.length = 0; - delete this._events[type]; - } else { - list.splice(position, 1); - } - - if (this._events.removeListener) - this.emit('removeListener', type, listener); - } - - return this; -}; - -EventEmitter.prototype.removeAllListeners = function(type) { - var key, listeners; - - if (!this._events) - return this; - - if (!this._events.removeListener) { - if (arguments.length === 0) - this._events = {}; - else if (this._events[type]) - delete this._events[type]; - return this; - } - - if (arguments.length === 0) { - for (key in this._events) { - if (key === 'removeListener') continue; - this.removeAllListeners(key); - } - this.removeAllListeners('removeListener'); - this._events = {}; - return this; - } - - listeners = this._events[type]; - - if (isFunction(listeners)) { - this.removeListener(type, listeners); - } else if (listeners) { - while (listeners.length) - this.removeListener(type, listeners[listeners.length - 1]); - } - delete this._events[type]; - - return this; -}; - -EventEmitter.prototype.listeners = function(type) { - var ret; - if (!this._events || !this._events[type]) - ret = []; - else if (isFunction(this._events[type])) - ret = [this._events[type]]; - else - ret = this._events[type].slice(); - return ret; -}; - -EventEmitter.prototype.listenerCount = function(type) { - if (this._events) { - var evlistener = this._events[type]; - - if (isFunction(evlistener)) - return 1; - else if (evlistener) - return evlistener.length; - } - return 0; -}; - -EventEmitter.listenerCount = function(emitter, type) { - return emitter.listenerCount(type); -}; - -function isFunction(arg) { - return typeof arg === 'function'; -} - -function isNumber(arg) { - return typeof arg === 'number'; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isUndefined(arg) { - return arg === void 0; -} - -},{}],250:[function(require,module,exports){ -var process = module.exports = {}; - - -var cachedSetTimeout; -var cachedClearTimeout; - -function defaultSetTimout() { - throw new Error('setTimeout has not been defined'); -} -function defaultClearTimeout () { - throw new Error('clearTimeout has not been defined'); -} -(function () { - try { - if (typeof setTimeout === 'function') { - cachedSetTimeout = setTimeout; - } else { - cachedSetTimeout = defaultSetTimout; - } - } catch (e) { - cachedSetTimeout = defaultSetTimout; - } - try { - if (typeof clearTimeout === 'function') { - cachedClearTimeout = clearTimeout; - } else { - cachedClearTimeout = defaultClearTimeout; - } - } catch (e) { - cachedClearTimeout = defaultClearTimeout; - } -} ()) -function runTimeout(fun) { - if (cachedSetTimeout === setTimeout) { - return setTimeout(fun, 0); - } - if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) { - cachedSetTimeout = setTimeout; - return setTimeout(fun, 0); - } - try { - return cachedSetTimeout(fun, 0); - } catch(e){ - try { - return cachedSetTimeout.call(null, fun, 0); - } catch(e){ - return cachedSetTimeout.call(this, fun, 0); - } - } - - -} -function runClearTimeout(marker) { - if (cachedClearTimeout === clearTimeout) { - return clearTimeout(marker); - } - if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) { - cachedClearTimeout = clearTimeout; - return clearTimeout(marker); - } - try { - return cachedClearTimeout(marker); - } catch (e){ - try { - return cachedClearTimeout.call(null, marker); - } catch (e){ - return cachedClearTimeout.call(this, marker); - } - } - - - -} -var queue = []; -var draining = false; -var currentQueue; -var queueIndex = -1; - -function cleanUpNextTick() { - if (!draining || !currentQueue) { - return; - } - draining = false; - if (currentQueue.length) { - queue = currentQueue.concat(queue); - } else { - queueIndex = -1; - } - if (queue.length) { - drainQueue(); - } -} - -function drainQueue() { - if (draining) { - return; - } - var timeout = runTimeout(cleanUpNextTick); - draining = true; - - var len = queue.length; - while(len) { - currentQueue = queue; - queue = []; - while (++queueIndex < len) { - if (currentQueue) { - currentQueue[queueIndex].run(); - } - } - queueIndex = -1; - len = queue.length; - } - currentQueue = null; - draining = false; - runClearTimeout(timeout); -} - -process.nextTick = function (fun) { - var args = new Array(arguments.length - 1); - if (arguments.length > 1) { - for (var i = 1; i < arguments.length; i++) { - args[i - 1] = arguments[i]; - } - } - queue.push(new Item(fun, args)); - if (queue.length === 1 && !draining) { - runTimeout(drainQueue); - } -}; - -function Item(fun, array) { - this.fun = fun; - this.array = array; -} -Item.prototype.run = function () { - this.fun.apply(null, this.array); -}; -process.title = 'browser'; -process.browser = true; -process.env = {}; -process.argv = []; -process.version = ''; // empty string to avoid regexp issues -process.versions = {}; - -function noop() {} - -process.on = noop; -process.addListener = noop; -process.once = noop; -process.off = noop; -process.removeListener = noop; -process.removeAllListeners = noop; -process.emit = noop; - -process.binding = function (name) { - throw new Error('process.binding is not supported'); -}; - -process.cwd = function () { return '/' }; -process.chdir = function (dir) { - throw new Error('process.chdir is not supported'); -}; -process.umask = function() { return 0; }; - -},{}],251:[function(require,module,exports){ -(function (global){ - -;(function(root) { - - - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - - var punycode, - - - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - - key; - - - - - function error(type) { - throw new RangeError(errors[type]); - } - - - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - result = parts[0] + '@'; - string = parts[1]; - } - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - - function digitToBasic(digit, flag) { - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - - function decode(input) { - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - - baseMinusT; - - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - - inputLength, - - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - input = ucs2decode(input); - - inputLength = input.length; - - n = initialN; - delta = 0; - bias = initialBias; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - - if (basicLength) { - output.push(delimiter); - } - - while (handledCPCount < inputLength) { - - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - - - - punycode = { - - 'version': '1.4.1', - - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { - freeModule.exports = punycode; - } else { - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { - root.punycode = punycode; - } - -}(this)); - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{}],252:[function(require,module,exports){ - -'use strict'; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -},{}],253:[function(require,module,exports){ - -'use strict'; - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return map(objectKeys(obj), function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (isArray(obj[k])) { - return map(obj[k], function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; - -var isArray = Array.isArray || function (xs) { - return Object.prototype.toString.call(xs) === '[object Array]'; -}; - -function map (xs, f) { - if (xs.map) return xs.map(f); - var res = []; - for (var i = 0; i < xs.length; i++) { - res.push(f(xs[i], i)); - } - return res; -} - -var objectKeys = Object.keys || function (obj) { - var res = []; - for (var key in obj) { - if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key); - } - return res; -}; - -},{}],254:[function(require,module,exports){ -'use strict'; - -exports.decode = exports.parse = require('./decode'); -exports.encode = exports.stringify = require('./encode'); - -},{"./decode":252,"./encode":253}],255:[function(require,module,exports){ -if (typeof Object.create === 'function') { - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - ctor.prototype = Object.create(superCtor.prototype, { - constructor: { - value: ctor, - enumerable: false, - writable: true, - configurable: true - } - }); - }; -} else { - module.exports = function inherits(ctor, superCtor) { - ctor.super_ = superCtor - var TempCtor = function () {} - TempCtor.prototype = superCtor.prototype - ctor.prototype = new TempCtor() - ctor.prototype.constructor = ctor - } -} - -},{}],256:[function(require,module,exports){ -module.exports = function isBuffer(arg) { - return arg && typeof arg === 'object' - && typeof arg.copy === 'function' - && typeof arg.fill === 'function' - && typeof arg.readUInt8 === 'function'; -} -},{}],257:[function(require,module,exports){ -(function (process,global){ - -var formatRegExp = /%[sdj%]/g; -exports.format = function(f) { - if (!isString(f)) { - var objects = []; - for (var i = 0; i < arguments.length; i++) { - objects.push(inspect(arguments[i])); - } - return objects.join(' '); - } - - var i = 1; - var args = arguments; - var len = args.length; - var str = String(f).replace(formatRegExp, function(x) { - if (x === '%') return '%'; - if (i >= len) return x; - switch (x) { - case '%s': return String(args[i++]); - case '%d': return Number(args[i++]); - case '%j': - try { - return JSON.stringify(args[i++]); - } catch (_) { - return '[Circular]'; - } - default: - return x; - } - }); - for (var x = args[i]; i < len; x = args[++i]) { - if (isNull(x) || !isObject(x)) { - str += ' ' + x; - } else { - str += ' ' + inspect(x); - } - } - return str; -}; - - -exports.deprecate = function(fn, msg) { - if (isUndefined(global.process)) { - return function() { - return exports.deprecate(fn, msg).apply(this, arguments); - }; - } - - if (process.noDeprecation === true) { - return fn; - } - - var warned = false; - function deprecated() { - if (!warned) { - if (process.throwDeprecation) { - throw new Error(msg); - } else if (process.traceDeprecation) { - console.trace(msg); - } else { - console.error(msg); - } - warned = true; - } - return fn.apply(this, arguments); - } - - return deprecated; -}; - - -var debugs = {}; -var debugEnviron; -exports.debuglog = function(set) { - if (isUndefined(debugEnviron)) - debugEnviron = process.env.NODE_DEBUG || ''; - set = set.toUpperCase(); - if (!debugs[set]) { - if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) { - var pid = process.pid; - debugs[set] = function() { - var msg = exports.format.apply(exports, arguments); - console.error('%s %d: %s', set, pid, msg); - }; - } else { - debugs[set] = function() {}; - } - } - return debugs[set]; -}; - - - - -function inspect(obj, opts) { - var ctx = { - seen: [], - stylize: stylizeNoColor - }; - if (arguments.length >= 3) ctx.depth = arguments[2]; - if (arguments.length >= 4) ctx.colors = arguments[3]; - if (isBoolean(opts)) { - ctx.showHidden = opts; - } else if (opts) { - exports._extend(ctx, opts); - } - if (isUndefined(ctx.showHidden)) ctx.showHidden = false; - if (isUndefined(ctx.depth)) ctx.depth = 2; - if (isUndefined(ctx.colors)) ctx.colors = false; - if (isUndefined(ctx.customInspect)) ctx.customInspect = true; - if (ctx.colors) ctx.stylize = stylizeWithColor; - return formatValue(ctx, obj, ctx.depth); -} -exports.inspect = inspect; - - -inspect.colors = { - 'bold' : [1, 22], - 'italic' : [3, 23], - 'underline' : [4, 24], - 'inverse' : [7, 27], - 'white' : [37, 39], - 'grey' : [90, 39], - 'black' : [30, 39], - 'blue' : [34, 39], - 'cyan' : [36, 39], - 'green' : [32, 39], - 'magenta' : [35, 39], - 'red' : [31, 39], - 'yellow' : [33, 39] -}; - -inspect.styles = { - 'special': 'cyan', - 'number': 'yellow', - 'boolean': 'yellow', - 'undefined': 'grey', - 'null': 'bold', - 'string': 'green', - 'date': 'magenta', - 'regexp': 'red' -}; - - -function stylizeWithColor(str, styleType) { - var style = inspect.styles[styleType]; - - if (style) { - return '\u001b[' + inspect.colors[style][0] + 'm' + str + - '\u001b[' + inspect.colors[style][1] + 'm'; - } else { - return str; - } -} - - -function stylizeNoColor(str, styleType) { - return str; -} - - -function arrayToHash(array) { - var hash = {}; - - array.forEach(function(val, idx) { - hash[val] = true; - }); - - return hash; -} - - -function formatValue(ctx, value, recurseTimes) { - if (ctx.customInspect && - value && - isFunction(value.inspect) && - value.inspect !== exports.inspect && - !(value.constructor && value.constructor.prototype === value)) { - var ret = value.inspect(recurseTimes, ctx); - if (!isString(ret)) { - ret = formatValue(ctx, ret, recurseTimes); - } - return ret; - } - - var primitive = formatPrimitive(ctx, value); - if (primitive) { - return primitive; - } - - var keys = Object.keys(value); - var visibleKeys = arrayToHash(keys); - - if (ctx.showHidden) { - keys = Object.getOwnPropertyNames(value); - } - - if (isError(value) - && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) { - return formatError(value); - } - - if (keys.length === 0) { - if (isFunction(value)) { - var name = value.name ? ': ' + value.name : ''; - return ctx.stylize('[Function' + name + ']', 'special'); - } - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } - if (isDate(value)) { - return ctx.stylize(Date.prototype.toString.call(value), 'date'); - } - if (isError(value)) { - return formatError(value); - } - } - - var base = '', array = false, braces = ['{', '}']; - - if (isArray(value)) { - array = true; - braces = ['[', ']']; - } - - if (isFunction(value)) { - var n = value.name ? ': ' + value.name : ''; - base = ' [Function' + n + ']'; - } - - if (isRegExp(value)) { - base = ' ' + RegExp.prototype.toString.call(value); - } - - if (isDate(value)) { - base = ' ' + Date.prototype.toUTCString.call(value); - } - - if (isError(value)) { - base = ' ' + formatError(value); - } - - if (keys.length === 0 && (!array || value.length == 0)) { - return braces[0] + base + braces[1]; - } - - if (recurseTimes < 0) { - if (isRegExp(value)) { - return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp'); - } else { - return ctx.stylize('[Object]', 'special'); - } - } - - ctx.seen.push(value); - - var output; - if (array) { - output = formatArray(ctx, value, recurseTimes, visibleKeys, keys); - } else { - output = keys.map(function(key) { - return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array); - }); - } - - ctx.seen.pop(); - - return reduceToSingleString(output, base, braces); -} - - -function formatPrimitive(ctx, value) { - if (isUndefined(value)) - return ctx.stylize('undefined', 'undefined'); - if (isString(value)) { - var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '') - .replace(/'/g, "\\'") - .replace(/\\"/g, '"') + '\''; - return ctx.stylize(simple, 'string'); - } - if (isNumber(value)) - return ctx.stylize('' + value, 'number'); - if (isBoolean(value)) - return ctx.stylize('' + value, 'boolean'); - if (isNull(value)) - return ctx.stylize('null', 'null'); -} - - -function formatError(value) { - return '[' + Error.prototype.toString.call(value) + ']'; -} - - -function formatArray(ctx, value, recurseTimes, visibleKeys, keys) { - var output = []; - for (var i = 0, l = value.length; i < l; ++i) { - if (hasOwnProperty(value, String(i))) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - String(i), true)); - } else { - output.push(''); - } - } - keys.forEach(function(key) { - if (!key.match(/^\d+$/)) { - output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, - key, true)); - } - }); - return output; -} - - -function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) { - var name, str, desc; - desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] }; - if (desc.get) { - if (desc.set) { - str = ctx.stylize('[Getter/Setter]', 'special'); - } else { - str = ctx.stylize('[Getter]', 'special'); - } - } else { - if (desc.set) { - str = ctx.stylize('[Setter]', 'special'); - } - } - if (!hasOwnProperty(visibleKeys, key)) { - name = '[' + key + ']'; - } - if (!str) { - if (ctx.seen.indexOf(desc.value) < 0) { - if (isNull(recurseTimes)) { - str = formatValue(ctx, desc.value, null); - } else { - str = formatValue(ctx, desc.value, recurseTimes - 1); - } - if (str.indexOf('\n') > -1) { - if (array) { - str = str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n').substr(2); - } else { - str = '\n' + str.split('\n').map(function(line) { - return ' ' + line; - }).join('\n'); - } - } - } else { - str = ctx.stylize('[Circular]', 'special'); - } - } - if (isUndefined(name)) { - if (array && key.match(/^\d+$/)) { - return str; - } - name = JSON.stringify('' + key); - if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) { - name = name.substr(1, name.length - 2); - name = ctx.stylize(name, 'name'); - } else { - name = name.replace(/'/g, "\\'") - .replace(/\\"/g, '"') - .replace(/(^"|"$)/g, "'"); - name = ctx.stylize(name, 'string'); - } - } - - return name + ': ' + str; -} - - -function reduceToSingleString(output, base, braces) { - var numLinesEst = 0; - var length = output.reduce(function(prev, cur) { - numLinesEst++; - if (cur.indexOf('\n') >= 0) numLinesEst++; - return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1; - }, 0); - - if (length > 60) { - return braces[0] + - (base === '' ? '' : base + '\n ') + - ' ' + - output.join(',\n ') + - ' ' + - braces[1]; - } - - return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1]; -} - - -function isArray(ar) { - return Array.isArray(ar); -} -exports.isArray = isArray; - -function isBoolean(arg) { - return typeof arg === 'boolean'; -} -exports.isBoolean = isBoolean; - -function isNull(arg) { - return arg === null; -} -exports.isNull = isNull; - -function isNullOrUndefined(arg) { - return arg == null; -} -exports.isNullOrUndefined = isNullOrUndefined; - -function isNumber(arg) { - return typeof arg === 'number'; -} -exports.isNumber = isNumber; - -function isString(arg) { - return typeof arg === 'string'; -} -exports.isString = isString; - -function isSymbol(arg) { - return typeof arg === 'symbol'; -} -exports.isSymbol = isSymbol; - -function isUndefined(arg) { - return arg === void 0; -} -exports.isUndefined = isUndefined; - -function isRegExp(re) { - return isObject(re) && objectToString(re) === '[object RegExp]'; -} -exports.isRegExp = isRegExp; - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} -exports.isObject = isObject; - -function isDate(d) { - return isObject(d) && objectToString(d) === '[object Date]'; -} -exports.isDate = isDate; - -function isError(e) { - return isObject(e) && - (objectToString(e) === '[object Error]' || e instanceof Error); -} -exports.isError = isError; - -function isFunction(arg) { - return typeof arg === 'function'; -} -exports.isFunction = isFunction; - -function isPrimitive(arg) { - return arg === null || - typeof arg === 'boolean' || - typeof arg === 'number' || - typeof arg === 'string' || - typeof arg === 'symbol' || // ES6 symbol - typeof arg === 'undefined'; -} -exports.isPrimitive = isPrimitive; - -exports.isBuffer = require('./support/isBuffer'); - -function objectToString(o) { - return Object.prototype.toString.call(o); -} - - -function pad(n) { - return n < 10 ? '0' + n.toString(10) : n.toString(10); -} - - -var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', - 'Oct', 'Nov', 'Dec']; - -function timestamp() { - var d = new Date(); - var time = [pad(d.getHours()), - pad(d.getMinutes()), - pad(d.getSeconds())].join(':'); - return [d.getDate(), months[d.getMonth()], time].join(' '); -} - - -exports.log = function() { - console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments)); -}; - - - -exports.inherits = require('inherits'); - -exports._extend = function(origin, add) { - if (!add || !isObject(add)) return origin; - - var keys = Object.keys(add); - var i = keys.length; - while (i--) { - origin[keys[i]] = add[keys[i]]; - } - return origin; -}; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./support/isBuffer":256,"_process":250,"inherits":255}],258:[function(require,module,exports){ -(function (global){ - - - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var isArray = require('isarray') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - - -Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined - ? global.TYPED_ARRAY_SUPPORT - : typedArraySupport() - - -exports.kMaxLength = kMaxLength() - -function typedArraySupport () { - try { - var arr = new Uint8Array(1) - arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} - return arr.foo() === 42 && // typed array instances can be augmented - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` - } catch (e) { - return false - } -} - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - that = new Uint8Array(length) - that.__proto__ = Buffer.prototype - } else { - if (that === null) { - that = new Buffer(length) - } - that.length = length - } - - return that -} - - - -function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192 // not used by this implementation - -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype - return arr -} - -function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - - -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) -} - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype - Buffer.__proto__ = Uint8Array - if (typeof Symbol !== 'undefined' && Symbol.species && - Buffer[Symbol.species] === Buffer) { - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true - }) - } -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - - -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -} - -function allocUnsafe (that, size) { - assertSize(size) - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0 - } - } - return that -} - - -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) -} - -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -} - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0 - that = createBuffer(that, length) - - var actual = that.write(string, encoding) - - if (actual !== length) { - that = that.slice(0, actual) - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - that = createBuffer(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array) - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset) - } else { - array = new Uint8Array(array, byteOffset, length) - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - that = array - that.__proto__ = Buffer.prototype - } else { - that = fromArrayLike(that, array) - } - return that -} - -function fromObject (that, obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - that = createBuffer(that, len) - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len) - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string - } - - var len = string.length - if (len === 0) return 0 - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - - if (start === undefined || start < 0) { - start = 0 - } - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length | 0 - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') - if (this.length > max) str += ' ... ' - } - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!Buffer.isBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - if (buffer.length === 0) return -1 - - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (isNaN(byteOffset)) { - byteOffset = dir ? 0 : (buffer.length - 1) - } - - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - if (Buffer.isBuffer(val)) { - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - var strLen = string.length - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - } else if (isFinite(offset)) { - offset = offset | 0 - if (isFinite(length)) { - length = length | 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end) - newBuf.__proto__ = Buffer.prototype - } else { - var sliceLen = end - start - newBuf = new Buffer(sliceLen, undefined) - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start] - } - } - - return newBuf -} - - -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - this[offset] = (value & 0xff) - return offset + 1 -} - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - var i - - if (this === target && start < targetStart && targetStart < end) { - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ) - } - - return len -} - -Buffer.prototype.fill = function fill (val, start, end, encoding) { - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if (code < 256) { - val = code - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255 - } - - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()) - var len = bytes.length - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g - -function base64clean (str) { - str = stringtrim(str).replace(INVALID_BASE64_RE, '') - if (str.length < 2) return '' - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - if (codePoint > 0xD7FF && codePoint < 0xE000) { - if (!leadSurrogate) { - if (codePoint > 0xDBFF) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - leadSurrogate = codePoint - - continue - } - - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"base64-js":259,"ieee754":260,"isarray":261}],259:[function(require,module,exports){ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function placeHoldersCount (b64) { - var len = b64.length - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 -} - -function byteLength (b64) { - return b64.length * 3 / 4 - placeHoldersCount(b64) -} - -function toByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - var len = b64.length - placeHolders = placeHoldersCount(b64) - - arr = new Arr(len * 3 / 4 - placeHolders) - - l = placeHolders > 0 ? len - 4 : len - - var L = 0 - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] - arr[L++] = (tmp >> 16) & 0xFF - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[L++] = tmp & 0xFF - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var output = '' - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) - } - - if (extraBytes === 1) { - tmp = uint8[len - 1] - output += lookup[tmp >> 2] - output += lookup[(tmp << 4) & 0x3F] - output += '==' - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) - output += lookup[tmp >> 10] - output += lookup[(tmp >> 4) & 0x3F] - output += lookup[(tmp << 2) & 0x3F] - output += '=' - } - - parts.push(output) - - return parts.join('') -} - -},{}],260:[function(require,module,exports){ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} - -},{}],261:[function(require,module,exports){ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; - -},{}],262:[function(require,module,exports){ -var Buffer = require('buffer').Buffer; -var intSize = 4; -var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); -var chrsz = 8; - -function toArray(buf, bigEndian) { - if ((buf.length % intSize) !== 0) { - var len = buf.length + (intSize - (buf.length % intSize)); - buf = Buffer.concat([buf, zeroBuffer], len); - } - - var arr = []; - var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; - for (var i = 0; i < buf.length; i += intSize) { - arr.push(fn.call(buf, i)); - } - return arr; -} - -function toBuffer(arr, size, bigEndian) { - var buf = new Buffer(size); - var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; - for (var i = 0; i < arr.length; i++) { - fn.call(buf, arr[i], i * 4, true); - } - return buf; -} - -function hash(buf, fn, hashSize, bigEndian) { - if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); - var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); - return toBuffer(arr, hashSize, bigEndian); -} - -module.exports = { hash: hash }; - -},{"buffer":258}],263:[function(require,module,exports){ -var Buffer = require('buffer').Buffer -var sha = require('./sha') -var sha256 = require('./sha256') -var rng = require('./rng') -var md5 = require('./md5') - -var algorithms = { - sha1: sha, - sha256: sha256, - md5: md5 -} - -var blocksize = 64 -var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0) -function hmac(fn, key, data) { - if(!Buffer.isBuffer(key)) key = new Buffer(key) - if(!Buffer.isBuffer(data)) data = new Buffer(data) - - if(key.length > blocksize) { - key = fn(key) - } else if(key.length < blocksize) { - key = Buffer.concat([key, zeroBuffer], blocksize) - } - - var ipad = new Buffer(blocksize), opad = new Buffer(blocksize) - for(var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - - var hash = fn(Buffer.concat([ipad, data])) - return fn(Buffer.concat([opad, hash])) -} - -function hash(alg, key) { - alg = alg || 'sha1' - var fn = algorithms[alg] - var bufs = [] - var length = 0 - if(!fn) error('algorithm:', alg, 'is not yet supported') - return { - update: function (data) { - if(!Buffer.isBuffer(data)) data = new Buffer(data) - - bufs.push(data) - length += data.length - return this - }, - digest: function (enc) { - var buf = Buffer.concat(bufs) - var r = key ? hmac(fn, key, buf) : fn(buf) - bufs = null - return enc ? r.toString(enc) : r - } - } -} - -function error () { - var m = [].slice.call(arguments).join(' ') - throw new Error([ - m, - 'we accept pull requests', - 'http://github.com/dominictarr/crypto-browserify' - ].join('\n')) -} - -exports.createHash = function (alg) { return hash(alg) } -exports.createHmac = function (alg, key) { return hash(alg, key) } -exports.randomBytes = function(size, callback) { - if (callback && callback.call) { - try { - callback.call(this, undefined, new Buffer(rng(size))) - } catch (err) { callback(err) } - } else { - return new Buffer(rng(size)) - } -} - -function each(a, f) { - for(var i in a) - f(a[i], i) -} - -each(['createCredentials' -, 'createCipher' -, 'createCipheriv' -, 'createDecipher' -, 'createDecipheriv' -, 'createSign' -, 'createVerify' -, 'createDiffieHellman' -, 'pbkdf2'], function (name) { - exports[name] = function () { - error('sorry,', name, 'is not implemented yet') - } -}) - -},{"./md5":264,"./rng":265,"./sha":266,"./sha256":267,"buffer":258}],264:[function(require,module,exports){ - - -var helpers = require('./helpers'); - - -function md5_vm_test() -{ - return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; -} - - -function core_md5(x, len) -{ - - x[len >> 5] |= 0x80 << ((len) % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - - a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); - d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); - c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); - b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); - a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); - d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); - c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); - b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); - a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); - d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); - c = md5_ff(c, d, a, b, x[i+10], 17, -42063); - b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); - a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); - d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); - c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); - b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); - - a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); - d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); - c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); - b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); - a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); - d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); - c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); - b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); - a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); - d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); - c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); - b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); - a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); - d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); - c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); - b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); - - a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); - d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); - c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); - b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); - a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); - d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); - c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); - b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); - a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); - d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); - c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); - b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); - a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); - d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); - c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); - b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); - - a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); - d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); - c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); - b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); - a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); - d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); - c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); - b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); - a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); - d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); - c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); - b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); - a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); - d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); - c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); - b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - } - return Array(a, b, c, d); - -} - - -function md5_cmn(q, a, b, x, s, t) -{ - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); -} -function md5_ff(a, b, c, d, x, s, t) -{ - return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); -} -function md5_gg(a, b, c, d, x, s, t) -{ - return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); -} -function md5_hh(a, b, c, d, x, s, t) -{ - return md5_cmn(b ^ c ^ d, a, b, x, s, t); -} -function md5_ii(a, b, c, d, x, s, t) -{ - return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); -} - - -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - - -function bit_rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -module.exports = function md5(buf) { - return helpers.hash(buf, core_md5, 16); -}; - -},{"./helpers":262}],265:[function(require,module,exports){ -(function() { - var _global = this; - - var mathRNG, whatwgRNG; - - mathRNG = function(size) { - var bytes = new Array(size); - var r; - - for (var i = 0, r; i < size; i++) { - if ((i & 0x03) == 0) r = Math.random() * 0x100000000; - bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return bytes; - } - - if (_global.crypto && crypto.getRandomValues) { - whatwgRNG = function(size) { - var bytes = new Uint8Array(size); - crypto.getRandomValues(bytes); - return bytes; - } - } - - module.exports = whatwgRNG || mathRNG; - -}()) - -},{}],266:[function(require,module,exports){ - - -var helpers = require('./helpers'); - - -function core_sha1(x, len) -{ - - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - var w = Array(80); - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - var e = -1009589776; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - var olde = e; - - for(var j = 0; j < 80; j++) - { - if(j < 16) w[j] = x[i + j]; - else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); - var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - -} - - -function sha1_ft(t, b, c, d) -{ - if(t < 20) return (b & c) | ((~b) & d); - if(t < 40) return b ^ c ^ d; - if(t < 60) return (b & c) | (b & d) | (c & d); - return b ^ c ^ d; -} - - -function sha1_kt(t) -{ - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; -} - - -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - - -function rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -module.exports = function sha1(buf) { - return helpers.hash(buf, core_sha1, 20, true); -}; - -},{"./helpers":262}],267:[function(require,module,exports){ - - - -var helpers = require('./helpers'); - -var safe_add = function(x, y) { - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -}; - -var S = function(X, n) { - return (X >>> n) | (X << (32 - n)); -}; - -var R = function(X, n) { - return (X >>> n); -}; - -var Ch = function(x, y, z) { - return ((x & y) ^ ((~x) & z)); -}; - -var Maj = function(x, y, z) { - return ((x & y) ^ (x & z) ^ (y & z)); -}; - -var Sigma0256 = function(x) { - return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); -}; - -var Sigma1256 = function(x) { - return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); -}; - -var Gamma0256 = function(x) { - return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); -}; - -var Gamma1256 = function(x) { - return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); -}; - -var core_sha256 = function(m, l) { - var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); - var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); - var W = new Array(64); - var a, b, c, d, e, f, g, h, i, j; - var T1, T2; - - m[l >> 5] |= 0x80 << (24 - l % 32); - m[((l + 64 >> 9) << 4) + 15] = l; - for (var i = 0; i < m.length; i += 16) { - a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; - for (var j = 0; j < 64; j++) { - if (j < 16) { - W[j] = m[j + i]; - } else { - W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); - } - T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); - T2 = safe_add(Sigma0256(a), Maj(a, b, c)); - h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); - } - HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); - HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); - } - return HASH; -}; - -module.exports = function sha256(buf) { - return helpers.hash(buf, core_sha256, 32, true); -}; - -},{"./helpers":262}],268:[function(require,module,exports){ -(function(exports) { - "use strict"; - - function isArray(obj) { - if (obj !== null) { - return Object.prototype.toString.call(obj) === "[object Array]"; - } else { - return false; - } - } - - function isObject(obj) { - if (obj !== null) { - return Object.prototype.toString.call(obj) === "[object Object]"; - } else { - return false; - } - } - - function strictDeepEqual(first, second) { - if (first === second) { - return true; - } - - var firstType = Object.prototype.toString.call(first); - if (firstType !== Object.prototype.toString.call(second)) { - return false; - } - if (isArray(first) === true) { - if (first.length !== second.length) { - return false; - } - for (var i = 0; i < first.length; i++) { - if (strictDeepEqual(first[i], second[i]) === false) { - return false; - } - } - return true; - } - if (isObject(first) === true) { - var keysSeen = {}; - for (var key in first) { - if (hasOwnProperty.call(first, key)) { - if (strictDeepEqual(first[key], second[key]) === false) { - return false; - } - keysSeen[key] = true; - } - } - for (var key2 in second) { - if (hasOwnProperty.call(second, key2)) { - if (keysSeen[key2] !== true) { - return false; - } - } - } - return true; - } - return false; - } - - function isFalse(obj) { - - if (obj === "" || obj === false || obj === null) { - return true; - } else if (isArray(obj) && obj.length === 0) { - return true; - } else if (isObject(obj)) { - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - return false; - } - } - return true; - } else { - return false; - } - } - - function objValues(obj) { - var keys = Object.keys(obj); - var values = []; - for (var i = 0; i < keys.length; i++) { - values.push(obj[keys[i]]); - } - return values; - } - - function merge(a, b) { - var merged = {}; - for (var key in a) { - merged[key] = a[key]; - } - for (var key2 in b) { - merged[key2] = b[key2]; - } - return merged; - } - - var trimLeft; - if (typeof String.prototype.trimLeft === "function") { - trimLeft = function(str) { - return str.trimLeft(); - }; - } else { - trimLeft = function(str) { - return str.match(/^\s*(.*)/)[1]; - }; - } - - var TYPE_NUMBER = 0; - var TYPE_ANY = 1; - var TYPE_STRING = 2; - var TYPE_ARRAY = 3; - var TYPE_OBJECT = 4; - var TYPE_BOOLEAN = 5; - var TYPE_EXPREF = 6; - var TYPE_NULL = 7; - var TYPE_ARRAY_NUMBER = 8; - var TYPE_ARRAY_STRING = 9; - - var TOK_EOF = "EOF"; - var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier"; - var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier"; - var TOK_RBRACKET = "Rbracket"; - var TOK_RPAREN = "Rparen"; - var TOK_COMMA = "Comma"; - var TOK_COLON = "Colon"; - var TOK_RBRACE = "Rbrace"; - var TOK_NUMBER = "Number"; - var TOK_CURRENT = "Current"; - var TOK_EXPREF = "Expref"; - var TOK_PIPE = "Pipe"; - var TOK_OR = "Or"; - var TOK_AND = "And"; - var TOK_EQ = "EQ"; - var TOK_GT = "GT"; - var TOK_LT = "LT"; - var TOK_GTE = "GTE"; - var TOK_LTE = "LTE"; - var TOK_NE = "NE"; - var TOK_FLATTEN = "Flatten"; - var TOK_STAR = "Star"; - var TOK_FILTER = "Filter"; - var TOK_DOT = "Dot"; - var TOK_NOT = "Not"; - var TOK_LBRACE = "Lbrace"; - var TOK_LBRACKET = "Lbracket"; - var TOK_LPAREN= "Lparen"; - var TOK_LITERAL= "Literal"; - - - var basicTokens = { - ".": TOK_DOT, - "*": TOK_STAR, - ",": TOK_COMMA, - ":": TOK_COLON, - "{": TOK_LBRACE, - "}": TOK_RBRACE, - "]": TOK_RBRACKET, - "(": TOK_LPAREN, - ")": TOK_RPAREN, - "@": TOK_CURRENT - }; - - var operatorStartToken = { - "<": true, - ">": true, - "=": true, - "!": true - }; - - var skipChars = { - " ": true, - "\t": true, - "\n": true - }; - - - function isAlpha(ch) { - return (ch >= "a" && ch <= "z") || - (ch >= "A" && ch <= "Z") || - ch === "_"; - } - - function isNum(ch) { - return (ch >= "0" && ch <= "9") || - ch === "-"; - } - function isAlphaNum(ch) { - return (ch >= "a" && ch <= "z") || - (ch >= "A" && ch <= "Z") || - (ch >= "0" && ch <= "9") || - ch === "_"; - } - - function Lexer() { - } - Lexer.prototype = { - tokenize: function(stream) { - var tokens = []; - this._current = 0; - var start; - var identifier; - var token; - while (this._current < stream.length) { - if (isAlpha(stream[this._current])) { - start = this._current; - identifier = this._consumeUnquotedIdentifier(stream); - tokens.push({type: TOK_UNQUOTEDIDENTIFIER, - value: identifier, - start: start}); - } else if (basicTokens[stream[this._current]] !== undefined) { - tokens.push({type: basicTokens[stream[this._current]], - value: stream[this._current], - start: this._current}); - this._current++; - } else if (isNum(stream[this._current])) { - token = this._consumeNumber(stream); - tokens.push(token); - } else if (stream[this._current] === "[") { - token = this._consumeLBracket(stream); - tokens.push(token); - } else if (stream[this._current] === "\"") { - start = this._current; - identifier = this._consumeQuotedIdentifier(stream); - tokens.push({type: TOK_QUOTEDIDENTIFIER, - value: identifier, - start: start}); - } else if (stream[this._current] === "'") { - start = this._current; - identifier = this._consumeRawStringLiteral(stream); - tokens.push({type: TOK_LITERAL, - value: identifier, - start: start}); - } else if (stream[this._current] === "`") { - start = this._current; - var literal = this._consumeLiteral(stream); - tokens.push({type: TOK_LITERAL, - value: literal, - start: start}); - } else if (operatorStartToken[stream[this._current]] !== undefined) { - tokens.push(this._consumeOperator(stream)); - } else if (skipChars[stream[this._current]] !== undefined) { - this._current++; - } else if (stream[this._current] === "&") { - start = this._current; - this._current++; - if (stream[this._current] === "&") { - this._current++; - tokens.push({type: TOK_AND, value: "&&", start: start}); - } else { - tokens.push({type: TOK_EXPREF, value: "&", start: start}); - } - } else if (stream[this._current] === "|") { - start = this._current; - this._current++; - if (stream[this._current] === "|") { - this._current++; - tokens.push({type: TOK_OR, value: "||", start: start}); - } else { - tokens.push({type: TOK_PIPE, value: "|", start: start}); - } - } else { - var error = new Error("Unknown character:" + stream[this._current]); - error.name = "LexerError"; - throw error; - } - } - return tokens; - }, - - _consumeUnquotedIdentifier: function(stream) { - var start = this._current; - this._current++; - while (this._current < stream.length && isAlphaNum(stream[this._current])) { - this._current++; - } - return stream.slice(start, this._current); - }, - - _consumeQuotedIdentifier: function(stream) { - var start = this._current; - this._current++; - var maxLength = stream.length; - while (stream[this._current] !== "\"" && this._current < maxLength) { - var current = this._current; - if (stream[current] === "\\" && (stream[current + 1] === "\\" || - stream[current + 1] === "\"")) { - current += 2; - } else { - current++; - } - this._current = current; - } - this._current++; - return JSON.parse(stream.slice(start, this._current)); - }, - - _consumeRawStringLiteral: function(stream) { - var start = this._current; - this._current++; - var maxLength = stream.length; - while (stream[this._current] !== "'" && this._current < maxLength) { - var current = this._current; - if (stream[current] === "\\" && (stream[current + 1] === "\\" || - stream[current + 1] === "'")) { - current += 2; - } else { - current++; - } - this._current = current; - } - this._current++; - var literal = stream.slice(start + 1, this._current - 1); - return literal.replace("\\'", "'"); - }, - - _consumeNumber: function(stream) { - var start = this._current; - this._current++; - var maxLength = stream.length; - while (isNum(stream[this._current]) && this._current < maxLength) { - this._current++; - } - var value = parseInt(stream.slice(start, this._current)); - return {type: TOK_NUMBER, value: value, start: start}; - }, - - _consumeLBracket: function(stream) { - var start = this._current; - this._current++; - if (stream[this._current] === "?") { - this._current++; - return {type: TOK_FILTER, value: "[?", start: start}; - } else if (stream[this._current] === "]") { - this._current++; - return {type: TOK_FLATTEN, value: "[]", start: start}; - } else { - return {type: TOK_LBRACKET, value: "[", start: start}; - } - }, - - _consumeOperator: function(stream) { - var start = this._current; - var startingChar = stream[start]; - this._current++; - if (startingChar === "!") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_NE, value: "!=", start: start}; - } else { - return {type: TOK_NOT, value: "!", start: start}; - } - } else if (startingChar === "<") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_LTE, value: "<=", start: start}; - } else { - return {type: TOK_LT, value: "<", start: start}; - } - } else if (startingChar === ">") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_GTE, value: ">=", start: start}; - } else { - return {type: TOK_GT, value: ">", start: start}; - } - } else if (startingChar === "=") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_EQ, value: "==", start: start}; - } - } - }, - - _consumeLiteral: function(stream) { - this._current++; - var start = this._current; - var maxLength = stream.length; - var literal; - while(stream[this._current] !== "`" && this._current < maxLength) { - var current = this._current; - if (stream[current] === "\\" && (stream[current + 1] === "\\" || - stream[current + 1] === "`")) { - current += 2; - } else { - current++; - } - this._current = current; - } - var literalString = trimLeft(stream.slice(start, this._current)); - literalString = literalString.replace("\\`", "`"); - if (this._looksLikeJSON(literalString)) { - literal = JSON.parse(literalString); - } else { - literal = JSON.parse("\"" + literalString + "\""); - } - this._current++; - return literal; - }, - - _looksLikeJSON: function(literalString) { - var startingChars = "[{\""; - var jsonLiterals = ["true", "false", "null"]; - var numberLooking = "-0123456789"; - - if (literalString === "") { - return false; - } else if (startingChars.indexOf(literalString[0]) >= 0) { - return true; - } else if (jsonLiterals.indexOf(literalString) >= 0) { - return true; - } else if (numberLooking.indexOf(literalString[0]) >= 0) { - try { - JSON.parse(literalString); - return true; - } catch (ex) { - return false; - } - } else { - return false; - } - } - }; - - var bindingPower = {}; - bindingPower[TOK_EOF] = 0; - bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0; - bindingPower[TOK_QUOTEDIDENTIFIER] = 0; - bindingPower[TOK_RBRACKET] = 0; - bindingPower[TOK_RPAREN] = 0; - bindingPower[TOK_COMMA] = 0; - bindingPower[TOK_RBRACE] = 0; - bindingPower[TOK_NUMBER] = 0; - bindingPower[TOK_CURRENT] = 0; - bindingPower[TOK_EXPREF] = 0; - bindingPower[TOK_PIPE] = 1; - bindingPower[TOK_OR] = 2; - bindingPower[TOK_AND] = 3; - bindingPower[TOK_EQ] = 5; - bindingPower[TOK_GT] = 5; - bindingPower[TOK_LT] = 5; - bindingPower[TOK_GTE] = 5; - bindingPower[TOK_LTE] = 5; - bindingPower[TOK_NE] = 5; - bindingPower[TOK_FLATTEN] = 9; - bindingPower[TOK_STAR] = 20; - bindingPower[TOK_FILTER] = 21; - bindingPower[TOK_DOT] = 40; - bindingPower[TOK_NOT] = 45; - bindingPower[TOK_LBRACE] = 50; - bindingPower[TOK_LBRACKET] = 55; - bindingPower[TOK_LPAREN] = 60; - - function Parser() { - } - - Parser.prototype = { - parse: function(expression) { - this._loadTokens(expression); - this.index = 0; - var ast = this.expression(0); - if (this._lookahead(0) !== TOK_EOF) { - var t = this._lookaheadToken(0); - var error = new Error( - "Unexpected token type: " + t.type + ", value: " + t.value); - error.name = "ParserError"; - throw error; - } - return ast; - }, - - _loadTokens: function(expression) { - var lexer = new Lexer(); - var tokens = lexer.tokenize(expression); - tokens.push({type: TOK_EOF, value: "", start: expression.length}); - this.tokens = tokens; - }, - - expression: function(rbp) { - var leftToken = this._lookaheadToken(0); - this._advance(); - var left = this.nud(leftToken); - var currentToken = this._lookahead(0); - while (rbp < bindingPower[currentToken]) { - this._advance(); - left = this.led(currentToken, left); - currentToken = this._lookahead(0); - } - return left; - }, - - _lookahead: function(number) { - return this.tokens[this.index + number].type; - }, - - _lookaheadToken: function(number) { - return this.tokens[this.index + number]; - }, - - _advance: function() { - this.index++; - }, - - nud: function(token) { - var left; - var right; - var expression; - switch (token.type) { - case TOK_LITERAL: - return {type: "Literal", value: token.value}; - case TOK_UNQUOTEDIDENTIFIER: - return {type: "Field", name: token.value}; - case TOK_QUOTEDIDENTIFIER: - var node = {type: "Field", name: token.value}; - if (this._lookahead(0) === TOK_LPAREN) { - throw new Error("Quoted identifier not allowed for function names."); - } else { - return node; - } - break; - case TOK_NOT: - right = this.expression(bindingPower.Not); - return {type: "NotExpression", children: [right]}; - case TOK_STAR: - left = {type: "Identity"}; - right = null; - if (this._lookahead(0) === TOK_RBRACKET) { - right = {type: "Identity"}; - } else { - right = this._parseProjectionRHS(bindingPower.Star); - } - return {type: "ValueProjection", children: [left, right]}; - case TOK_FILTER: - return this.led(token.type, {type: "Identity"}); - case TOK_LBRACE: - return this._parseMultiselectHash(); - case TOK_FLATTEN: - left = {type: TOK_FLATTEN, children: [{type: "Identity"}]}; - right = this._parseProjectionRHS(bindingPower.Flatten); - return {type: "Projection", children: [left, right]}; - case TOK_LBRACKET: - if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) { - right = this._parseIndexExpression(); - return this._projectIfSlice({type: "Identity"}, right); - } else if (this._lookahead(0) === TOK_STAR && - this._lookahead(1) === TOK_RBRACKET) { - this._advance(); - this._advance(); - right = this._parseProjectionRHS(bindingPower.Star); - return {type: "Projection", - children: [{type: "Identity"}, right]}; - } else { - return this._parseMultiselectList(); - } - break; - case TOK_CURRENT: - return {type: TOK_CURRENT}; - case TOK_EXPREF: - expression = this.expression(bindingPower.Expref); - return {type: "ExpressionReference", children: [expression]}; - case TOK_LPAREN: - var args = []; - while (this._lookahead(0) !== TOK_RPAREN) { - if (this._lookahead(0) === TOK_CURRENT) { - expression = {type: TOK_CURRENT}; - this._advance(); - } else { - expression = this.expression(0); - } - args.push(expression); - } - this._match(TOK_RPAREN); - return args[0]; - default: - this._errorToken(token); - } - }, - - led: function(tokenName, left) { - var right; - switch(tokenName) { - case TOK_DOT: - var rbp = bindingPower.Dot; - if (this._lookahead(0) !== TOK_STAR) { - right = this._parseDotRHS(rbp); - return {type: "Subexpression", children: [left, right]}; - } else { - this._advance(); - right = this._parseProjectionRHS(rbp); - return {type: "ValueProjection", children: [left, right]}; - } - break; - case TOK_PIPE: - right = this.expression(bindingPower.Pipe); - return {type: TOK_PIPE, children: [left, right]}; - case TOK_OR: - right = this.expression(bindingPower.Or); - return {type: "OrExpression", children: [left, right]}; - case TOK_AND: - right = this.expression(bindingPower.And); - return {type: "AndExpression", children: [left, right]}; - case TOK_LPAREN: - var name = left.name; - var args = []; - var expression, node; - while (this._lookahead(0) !== TOK_RPAREN) { - if (this._lookahead(0) === TOK_CURRENT) { - expression = {type: TOK_CURRENT}; - this._advance(); - } else { - expression = this.expression(0); - } - if (this._lookahead(0) === TOK_COMMA) { - this._match(TOK_COMMA); - } - args.push(expression); - } - this._match(TOK_RPAREN); - node = {type: "Function", name: name, children: args}; - return node; - case TOK_FILTER: - var condition = this.expression(0); - this._match(TOK_RBRACKET); - if (this._lookahead(0) === TOK_FLATTEN) { - right = {type: "Identity"}; - } else { - right = this._parseProjectionRHS(bindingPower.Filter); - } - return {type: "FilterProjection", children: [left, right, condition]}; - case TOK_FLATTEN: - var leftNode = {type: TOK_FLATTEN, children: [left]}; - var rightNode = this._parseProjectionRHS(bindingPower.Flatten); - return {type: "Projection", children: [leftNode, rightNode]}; - case TOK_EQ: - case TOK_NE: - case TOK_GT: - case TOK_GTE: - case TOK_LT: - case TOK_LTE: - return this._parseComparator(left, tokenName); - case TOK_LBRACKET: - var token = this._lookaheadToken(0); - if (token.type === TOK_NUMBER || token.type === TOK_COLON) { - right = this._parseIndexExpression(); - return this._projectIfSlice(left, right); - } else { - this._match(TOK_STAR); - this._match(TOK_RBRACKET); - right = this._parseProjectionRHS(bindingPower.Star); - return {type: "Projection", children: [left, right]}; - } - break; - default: - this._errorToken(this._lookaheadToken(0)); - } - }, - - _match: function(tokenType) { - if (this._lookahead(0) === tokenType) { - this._advance(); - } else { - var t = this._lookaheadToken(0); - var error = new Error("Expected " + tokenType + ", got: " + t.type); - error.name = "ParserError"; - throw error; - } - }, - - _errorToken: function(token) { - var error = new Error("Invalid token (" + - token.type + "): \"" + - token.value + "\""); - error.name = "ParserError"; - throw error; - }, - - - _parseIndexExpression: function() { - if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) { - return this._parseSliceExpression(); - } else { - var node = { - type: "Index", - value: this._lookaheadToken(0).value}; - this._advance(); - this._match(TOK_RBRACKET); - return node; - } - }, - - _projectIfSlice: function(left, right) { - var indexExpr = {type: "IndexExpression", children: [left, right]}; - if (right.type === "Slice") { - return { - type: "Projection", - children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)] - }; - } else { - return indexExpr; - } - }, - - _parseSliceExpression: function() { - var parts = [null, null, null]; - var index = 0; - var currentToken = this._lookahead(0); - while (currentToken !== TOK_RBRACKET && index < 3) { - if (currentToken === TOK_COLON) { - index++; - this._advance(); - } else if (currentToken === TOK_NUMBER) { - parts[index] = this._lookaheadToken(0).value; - this._advance(); - } else { - var t = this._lookahead(0); - var error = new Error("Syntax error, unexpected token: " + - t.value + "(" + t.type + ")"); - error.name = "Parsererror"; - throw error; - } - currentToken = this._lookahead(0); - } - this._match(TOK_RBRACKET); - return { - type: "Slice", - children: parts - }; - }, - - _parseComparator: function(left, comparator) { - var right = this.expression(bindingPower[comparator]); - return {type: "Comparator", name: comparator, children: [left, right]}; - }, - - _parseDotRHS: function(rbp) { - var lookahead = this._lookahead(0); - var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR]; - if (exprTokens.indexOf(lookahead) >= 0) { - return this.expression(rbp); - } else if (lookahead === TOK_LBRACKET) { - this._match(TOK_LBRACKET); - return this._parseMultiselectList(); - } else if (lookahead === TOK_LBRACE) { - this._match(TOK_LBRACE); - return this._parseMultiselectHash(); - } - }, - - _parseProjectionRHS: function(rbp) { - var right; - if (bindingPower[this._lookahead(0)] < 10) { - right = {type: "Identity"}; - } else if (this._lookahead(0) === TOK_LBRACKET) { - right = this.expression(rbp); - } else if (this._lookahead(0) === TOK_FILTER) { - right = this.expression(rbp); - } else if (this._lookahead(0) === TOK_DOT) { - this._match(TOK_DOT); - right = this._parseDotRHS(rbp); - } else { - var t = this._lookaheadToken(0); - var error = new Error("Sytanx error, unexpected token: " + - t.value + "(" + t.type + ")"); - error.name = "ParserError"; - throw error; - } - return right; - }, - - _parseMultiselectList: function() { - var expressions = []; - while (this._lookahead(0) !== TOK_RBRACKET) { - var expression = this.expression(0); - expressions.push(expression); - if (this._lookahead(0) === TOK_COMMA) { - this._match(TOK_COMMA); - if (this._lookahead(0) === TOK_RBRACKET) { - throw new Error("Unexpected token Rbracket"); - } - } - } - this._match(TOK_RBRACKET); - return {type: "MultiSelectList", children: expressions}; - }, - - _parseMultiselectHash: function() { - var pairs = []; - var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER]; - var keyToken, keyName, value, node; - for (;;) { - keyToken = this._lookaheadToken(0); - if (identifierTypes.indexOf(keyToken.type) < 0) { - throw new Error("Expecting an identifier token, got: " + - keyToken.type); - } - keyName = keyToken.value; - this._advance(); - this._match(TOK_COLON); - value = this.expression(0); - node = {type: "KeyValuePair", name: keyName, value: value}; - pairs.push(node); - if (this._lookahead(0) === TOK_COMMA) { - this._match(TOK_COMMA); - } else if (this._lookahead(0) === TOK_RBRACE) { - this._match(TOK_RBRACE); - break; - } - } - return {type: "MultiSelectHash", children: pairs}; - } - }; - - - function TreeInterpreter(runtime) { - this.runtime = runtime; - } - - TreeInterpreter.prototype = { - search: function(node, value) { - return this.visit(node, value); - }, - - visit: function(node, value) { - var matched, current, result, first, second, field, left, right, collected, i; - switch (node.type) { - case "Field": - if (value === null ) { - return null; - } else if (isObject(value)) { - field = value[node.name]; - if (field === undefined) { - return null; - } else { - return field; - } - } else { - return null; - } - break; - case "Subexpression": - result = this.visit(node.children[0], value); - for (i = 1; i < node.children.length; i++) { - result = this.visit(node.children[1], result); - if (result === null) { - return null; - } - } - return result; - case "IndexExpression": - left = this.visit(node.children[0], value); - right = this.visit(node.children[1], left); - return right; - case "Index": - if (!isArray(value)) { - return null; - } - var index = node.value; - if (index < 0) { - index = value.length + index; - } - result = value[index]; - if (result === undefined) { - result = null; - } - return result; - case "Slice": - if (!isArray(value)) { - return null; - } - var sliceParams = node.children.slice(0); - var computed = this.computeSliceParams(value.length, sliceParams); - var start = computed[0]; - var stop = computed[1]; - var step = computed[2]; - result = []; - if (step > 0) { - for (i = start; i < stop; i += step) { - result.push(value[i]); - } - } else { - for (i = start; i > stop; i += step) { - result.push(value[i]); - } - } - return result; - case "Projection": - var base = this.visit(node.children[0], value); - if (!isArray(base)) { - return null; - } - collected = []; - for (i = 0; i < base.length; i++) { - current = this.visit(node.children[1], base[i]); - if (current !== null) { - collected.push(current); - } - } - return collected; - case "ValueProjection": - base = this.visit(node.children[0], value); - if (!isObject(base)) { - return null; - } - collected = []; - var values = objValues(base); - for (i = 0; i < values.length; i++) { - current = this.visit(node.children[1], values[i]); - if (current !== null) { - collected.push(current); - } - } - return collected; - case "FilterProjection": - base = this.visit(node.children[0], value); - if (!isArray(base)) { - return null; - } - var filtered = []; - var finalResults = []; - for (i = 0; i < base.length; i++) { - matched = this.visit(node.children[2], base[i]); - if (!isFalse(matched)) { - filtered.push(base[i]); - } - } - for (var j = 0; j < filtered.length; j++) { - current = this.visit(node.children[1], filtered[j]); - if (current !== null) { - finalResults.push(current); - } - } - return finalResults; - case "Comparator": - first = this.visit(node.children[0], value); - second = this.visit(node.children[1], value); - switch(node.name) { - case TOK_EQ: - result = strictDeepEqual(first, second); - break; - case TOK_NE: - result = !strictDeepEqual(first, second); - break; - case TOK_GT: - result = first > second; - break; - case TOK_GTE: - result = first >= second; - break; - case TOK_LT: - result = first < second; - break; - case TOK_LTE: - result = first <= second; - break; - default: - throw new Error("Unknown comparator: " + node.name); - } - return result; - case TOK_FLATTEN: - var original = this.visit(node.children[0], value); - if (!isArray(original)) { - return null; - } - var merged = []; - for (i = 0; i < original.length; i++) { - current = original[i]; - if (isArray(current)) { - merged.push.apply(merged, current); - } else { - merged.push(current); - } - } - return merged; - case "Identity": - return value; - case "MultiSelectList": - if (value === null) { - return null; - } - collected = []; - for (i = 0; i < node.children.length; i++) { - collected.push(this.visit(node.children[i], value)); - } - return collected; - case "MultiSelectHash": - if (value === null) { - return null; - } - collected = {}; - var child; - for (i = 0; i < node.children.length; i++) { - child = node.children[i]; - collected[child.name] = this.visit(child.value, value); - } - return collected; - case "OrExpression": - matched = this.visit(node.children[0], value); - if (isFalse(matched)) { - matched = this.visit(node.children[1], value); - } - return matched; - case "AndExpression": - first = this.visit(node.children[0], value); - - if (isFalse(first) === true) { - return first; - } - return this.visit(node.children[1], value); - case "NotExpression": - first = this.visit(node.children[0], value); - return isFalse(first); - case "Literal": - return node.value; - case TOK_PIPE: - left = this.visit(node.children[0], value); - return this.visit(node.children[1], left); - case TOK_CURRENT: - return value; - case "Function": - var resolvedArgs = []; - for (i = 0; i < node.children.length; i++) { - resolvedArgs.push(this.visit(node.children[i], value)); - } - return this.runtime.callFunction(node.name, resolvedArgs); - case "ExpressionReference": - var refNode = node.children[0]; - refNode.jmespathType = TOK_EXPREF; - return refNode; - default: - throw new Error("Unknown node type: " + node.type); - } - }, - - computeSliceParams: function(arrayLength, sliceParams) { - var start = sliceParams[0]; - var stop = sliceParams[1]; - var step = sliceParams[2]; - var computed = [null, null, null]; - if (step === null) { - step = 1; - } else if (step === 0) { - var error = new Error("Invalid slice, step cannot be 0"); - error.name = "RuntimeError"; - throw error; - } - var stepValueNegative = step < 0 ? true : false; - - if (start === null) { - start = stepValueNegative ? arrayLength - 1 : 0; - } else { - start = this.capSliceRange(arrayLength, start, step); - } - - if (stop === null) { - stop = stepValueNegative ? -1 : arrayLength; - } else { - stop = this.capSliceRange(arrayLength, stop, step); - } - computed[0] = start; - computed[1] = stop; - computed[2] = step; - return computed; - }, - - capSliceRange: function(arrayLength, actualValue, step) { - if (actualValue < 0) { - actualValue += arrayLength; - if (actualValue < 0) { - actualValue = step < 0 ? -1 : 0; - } - } else if (actualValue >= arrayLength) { - actualValue = step < 0 ? arrayLength - 1 : arrayLength; - } - return actualValue; - } - - }; - - function Runtime(interpreter) { - this._interpreter = interpreter; - this.functionTable = { - abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]}, - avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, - ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]}, - contains: { - _func: this._functionContains, - _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}, - {types: [TYPE_ANY]}]}, - "ends_with": { - _func: this._functionEndsWith, - _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, - floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]}, - length: { - _func: this._functionLength, - _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]}, - map: { - _func: this._functionMap, - _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]}, - max: { - _func: this._functionMax, - _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, - "merge": { - _func: this._functionMerge, - _signature: [{types: [TYPE_OBJECT], variadic: true}] - }, - "max_by": { - _func: this._functionMaxBy, - _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] - }, - sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, - "starts_with": { - _func: this._functionStartsWith, - _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, - min: { - _func: this._functionMin, - _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, - "min_by": { - _func: this._functionMinBy, - _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] - }, - type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]}, - keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]}, - values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]}, - sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, - "sort_by": { - _func: this._functionSortBy, - _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] - }, - join: { - _func: this._functionJoin, - _signature: [ - {types: [TYPE_STRING]}, - {types: [TYPE_ARRAY_STRING]} - ] - }, - reverse: { - _func: this._functionReverse, - _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]}, - "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]}, - "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]}, - "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]}, - "not_null": { - _func: this._functionNotNull, - _signature: [{types: [TYPE_ANY], variadic: true}] - } - }; - } - - Runtime.prototype = { - callFunction: function(name, resolvedArgs) { - var functionEntry = this.functionTable[name]; - if (functionEntry === undefined) { - throw new Error("Unknown function: " + name + "()"); - } - this._validateArgs(name, resolvedArgs, functionEntry._signature); - return functionEntry._func.call(this, resolvedArgs); - }, - - _validateArgs: function(name, args, signature) { - var pluralized; - if (signature[signature.length - 1].variadic) { - if (args.length < signature.length) { - pluralized = signature.length === 1 ? " argument" : " arguments"; - throw new Error("ArgumentError: " + name + "() " + - "takes at least" + signature.length + pluralized + - " but received " + args.length); - } - } else if (args.length !== signature.length) { - pluralized = signature.length === 1 ? " argument" : " arguments"; - throw new Error("ArgumentError: " + name + "() " + - "takes " + signature.length + pluralized + - " but received " + args.length); - } - var currentSpec; - var actualType; - var typeMatched; - for (var i = 0; i < signature.length; i++) { - typeMatched = false; - currentSpec = signature[i].types; - actualType = this._getTypeName(args[i]); - for (var j = 0; j < currentSpec.length; j++) { - if (this._typeMatches(actualType, currentSpec[j], args[i])) { - typeMatched = true; - break; - } - } - if (!typeMatched) { - throw new Error("TypeError: " + name + "() " + - "expected argument " + (i + 1) + - " to be type " + currentSpec + - " but received type " + actualType + - " instead."); - } - } - }, - - _typeMatches: function(actual, expected, argValue) { - if (expected === TYPE_ANY) { - return true; - } - if (expected === TYPE_ARRAY_STRING || - expected === TYPE_ARRAY_NUMBER || - expected === TYPE_ARRAY) { - if (expected === TYPE_ARRAY) { - return actual === TYPE_ARRAY; - } else if (actual === TYPE_ARRAY) { - var subtype; - if (expected === TYPE_ARRAY_NUMBER) { - subtype = TYPE_NUMBER; - } else if (expected === TYPE_ARRAY_STRING) { - subtype = TYPE_STRING; - } - for (var i = 0; i < argValue.length; i++) { - if (!this._typeMatches( - this._getTypeName(argValue[i]), subtype, - argValue[i])) { - return false; - } - } - return true; - } - } else { - return actual === expected; - } - }, - _getTypeName: function(obj) { - switch (Object.prototype.toString.call(obj)) { - case "[object String]": - return TYPE_STRING; - case "[object Number]": - return TYPE_NUMBER; - case "[object Array]": - return TYPE_ARRAY; - case "[object Boolean]": - return TYPE_BOOLEAN; - case "[object Null]": - return TYPE_NULL; - case "[object Object]": - if (obj.jmespathType === TOK_EXPREF) { - return TYPE_EXPREF; - } else { - return TYPE_OBJECT; - } - } - }, - - _functionStartsWith: function(resolvedArgs) { - return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0; - }, - - _functionEndsWith: function(resolvedArgs) { - var searchStr = resolvedArgs[0]; - var suffix = resolvedArgs[1]; - return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1; - }, - - _functionReverse: function(resolvedArgs) { - var typeName = this._getTypeName(resolvedArgs[0]); - if (typeName === TYPE_STRING) { - var originalStr = resolvedArgs[0]; - var reversedStr = ""; - for (var i = originalStr.length - 1; i >= 0; i--) { - reversedStr += originalStr[i]; - } - return reversedStr; - } else { - var reversedArray = resolvedArgs[0].slice(0); - reversedArray.reverse(); - return reversedArray; - } - }, - - _functionAbs: function(resolvedArgs) { - return Math.abs(resolvedArgs[0]); - }, - - _functionCeil: function(resolvedArgs) { - return Math.ceil(resolvedArgs[0]); - }, - - _functionAvg: function(resolvedArgs) { - var sum = 0; - var inputArray = resolvedArgs[0]; - for (var i = 0; i < inputArray.length; i++) { - sum += inputArray[i]; - } - return sum / inputArray.length; - }, - - _functionContains: function(resolvedArgs) { - return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0; - }, - - _functionFloor: function(resolvedArgs) { - return Math.floor(resolvedArgs[0]); - }, - - _functionLength: function(resolvedArgs) { - if (!isObject(resolvedArgs[0])) { - return resolvedArgs[0].length; - } else { - return Object.keys(resolvedArgs[0]).length; - } - }, - - _functionMap: function(resolvedArgs) { - var mapped = []; - var interpreter = this._interpreter; - var exprefNode = resolvedArgs[0]; - var elements = resolvedArgs[1]; - for (var i = 0; i < elements.length; i++) { - mapped.push(interpreter.visit(exprefNode, elements[i])); - } - return mapped; - }, - - _functionMerge: function(resolvedArgs) { - var merged = {}; - for (var i = 0; i < resolvedArgs.length; i++) { - var current = resolvedArgs[i]; - for (var key in current) { - merged[key] = current[key]; - } - } - return merged; - }, - - _functionMax: function(resolvedArgs) { - if (resolvedArgs[0].length > 0) { - var typeName = this._getTypeName(resolvedArgs[0][0]); - if (typeName === TYPE_NUMBER) { - return Math.max.apply(Math, resolvedArgs[0]); - } else { - var elements = resolvedArgs[0]; - var maxElement = elements[0]; - for (var i = 1; i < elements.length; i++) { - if (maxElement.localeCompare(elements[i]) < 0) { - maxElement = elements[i]; - } - } - return maxElement; - } - } else { - return null; - } - }, - - _functionMin: function(resolvedArgs) { - if (resolvedArgs[0].length > 0) { - var typeName = this._getTypeName(resolvedArgs[0][0]); - if (typeName === TYPE_NUMBER) { - return Math.min.apply(Math, resolvedArgs[0]); - } else { - var elements = resolvedArgs[0]; - var minElement = elements[0]; - for (var i = 1; i < elements.length; i++) { - if (elements[i].localeCompare(minElement) < 0) { - minElement = elements[i]; - } - } - return minElement; - } - } else { - return null; - } - }, - - _functionSum: function(resolvedArgs) { - var sum = 0; - var listToSum = resolvedArgs[0]; - for (var i = 0; i < listToSum.length; i++) { - sum += listToSum[i]; - } - return sum; - }, - - _functionType: function(resolvedArgs) { - switch (this._getTypeName(resolvedArgs[0])) { - case TYPE_NUMBER: - return "number"; - case TYPE_STRING: - return "string"; - case TYPE_ARRAY: - return "array"; - case TYPE_OBJECT: - return "object"; - case TYPE_BOOLEAN: - return "boolean"; - case TYPE_EXPREF: - return "expref"; - case TYPE_NULL: - return "null"; - } - }, - - _functionKeys: function(resolvedArgs) { - return Object.keys(resolvedArgs[0]); - }, - - _functionValues: function(resolvedArgs) { - var obj = resolvedArgs[0]; - var keys = Object.keys(obj); - var values = []; - for (var i = 0; i < keys.length; i++) { - values.push(obj[keys[i]]); - } - return values; - }, - - _functionJoin: function(resolvedArgs) { - var joinChar = resolvedArgs[0]; - var listJoin = resolvedArgs[1]; - return listJoin.join(joinChar); - }, - - _functionToArray: function(resolvedArgs) { - if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) { - return resolvedArgs[0]; - } else { - return [resolvedArgs[0]]; - } - }, - - _functionToString: function(resolvedArgs) { - if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) { - return resolvedArgs[0]; - } else { - return JSON.stringify(resolvedArgs[0]); - } - }, - - _functionToNumber: function(resolvedArgs) { - var typeName = this._getTypeName(resolvedArgs[0]); - var convertedValue; - if (typeName === TYPE_NUMBER) { - return resolvedArgs[0]; - } else if (typeName === TYPE_STRING) { - convertedValue = +resolvedArgs[0]; - if (!isNaN(convertedValue)) { - return convertedValue; - } - } - return null; - }, - - _functionNotNull: function(resolvedArgs) { - for (var i = 0; i < resolvedArgs.length; i++) { - if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) { - return resolvedArgs[i]; - } - } - return null; - }, - - _functionSort: function(resolvedArgs) { - var sortedArray = resolvedArgs[0].slice(0); - sortedArray.sort(); - return sortedArray; - }, - - _functionSortBy: function(resolvedArgs) { - var sortedArray = resolvedArgs[0].slice(0); - if (sortedArray.length === 0) { - return sortedArray; - } - var interpreter = this._interpreter; - var exprefNode = resolvedArgs[1]; - var requiredType = this._getTypeName( - interpreter.visit(exprefNode, sortedArray[0])); - if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) { - throw new Error("TypeError"); - } - var that = this; - var decorated = []; - for (var i = 0; i < sortedArray.length; i++) { - decorated.push([i, sortedArray[i]]); - } - decorated.sort(function(a, b) { - var exprA = interpreter.visit(exprefNode, a[1]); - var exprB = interpreter.visit(exprefNode, b[1]); - if (that._getTypeName(exprA) !== requiredType) { - throw new Error( - "TypeError: expected " + requiredType + ", received " + - that._getTypeName(exprA)); - } else if (that._getTypeName(exprB) !== requiredType) { - throw new Error( - "TypeError: expected " + requiredType + ", received " + - that._getTypeName(exprB)); - } - if (exprA > exprB) { - return 1; - } else if (exprA < exprB) { - return -1; - } else { - return a[0] - b[0]; - } - }); - for (var j = 0; j < decorated.length; j++) { - sortedArray[j] = decorated[j][1]; - } - return sortedArray; - }, - - _functionMaxBy: function(resolvedArgs) { - var exprefNode = resolvedArgs[1]; - var resolvedArray = resolvedArgs[0]; - var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); - var maxNumber = -Infinity; - var maxRecord; - var current; - for (var i = 0; i < resolvedArray.length; i++) { - current = keyFunction(resolvedArray[i]); - if (current > maxNumber) { - maxNumber = current; - maxRecord = resolvedArray[i]; - } - } - return maxRecord; - }, - - _functionMinBy: function(resolvedArgs) { - var exprefNode = resolvedArgs[1]; - var resolvedArray = resolvedArgs[0]; - var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); - var minNumber = Infinity; - var minRecord; - var current; - for (var i = 0; i < resolvedArray.length; i++) { - current = keyFunction(resolvedArray[i]); - if (current < minNumber) { - minNumber = current; - minRecord = resolvedArray[i]; - } - } - return minRecord; - }, - - createKeyFunction: function(exprefNode, allowedTypes) { - var that = this; - var interpreter = this._interpreter; - var keyFunc = function(x) { - var current = interpreter.visit(exprefNode, x); - if (allowedTypes.indexOf(that._getTypeName(current)) < 0) { - var msg = "TypeError: expected one of " + allowedTypes + - ", received " + that._getTypeName(current); - throw new Error(msg); - } - return current; - }; - return keyFunc; - } - - }; - - function compile(stream) { - var parser = new Parser(); - var ast = parser.parse(stream); - return ast; - } - - function tokenize(stream) { - var lexer = new Lexer(); - return lexer.tokenize(stream); - } - - function search(data, expression) { - var parser = new Parser(); - var runtime = new Runtime(); - var interpreter = new TreeInterpreter(runtime); - runtime._interpreter = interpreter; - var node = parser.parse(expression); - return interpreter.search(node, data); - } - - exports.tokenize = tokenize; - exports.compile = compile; - exports.search = search; - exports.strictDeepEqual = strictDeepEqual; -})(typeof exports === "undefined" ? this.jmespath = {} : exports); - -},{}],269:[function(require,module,exports){ - -'use strict'; - -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (Array.isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; - -},{}],270:[function(require,module,exports){ - -'use strict'; - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return Object.keys(obj).map(function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (Array.isArray(obj[k])) { - return obj[k].map(function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; - -},{}],271:[function(require,module,exports){ -arguments[4][254][0].apply(exports,arguments) -},{"./decode":269,"./encode":270,"dup":254}],272:[function(require,module,exports){ - -var punycode = require('punycode'); - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -exports.Url = Url; - -function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; -} - - -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - autoEscape = ['\''].concat(unwise), - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - var rest = url; - - rest = rest.trim(); - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - - - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - var auth, atSign; - if (hostEnd === -1) { - atSign = rest.lastIndexOf('@'); - } else { - atSign = rest.lastIndexOf('@', hostEnd); - } - - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - this.parseHost(); - - this.hostname = this.hostname || ''; - - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - newpart += 'x'; - } else { - newpart += part[j]; - } - } - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - var domainArray = this.hostname.split('.'); - var newOut = []; - for (var i = 0; i < domainArray.length; ++i) { - var s = domainArray[i]; - newOut.push(s.match(/[^A-Za-z0-9_-]/) ? - 'xn--' + punycode.encode(s) : s); - } - this.hostname = newOut.join('.'); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - if (!unsafeProtocol[lowerProto]) { - - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - var hash = rest.indexOf('#'); - if (hash !== -1) { - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - this.href = this.format(); - return this; -}; - -function urlFormat(obj) { - if (isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); -} - -Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; -}; - -function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); -} - -Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); -}; - -function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); -} - -Url.prototype.resolveObject = function(relative) { - if (isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - Object.keys(this).forEach(function(k) { - result[k] = this[k]; - }, this); - - result.hash = relative.hash; - - if (relative.href === '') { - result.href = result.format(); - return result; - } - - if (relative.slashes && !relative.protocol) { - Object.keys(relative).forEach(function(k) { - if (k !== 'protocol') - result[k] = relative[k]; - }); - - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - if (!slashedProtocol[relative.protocol]) { - Object.keys(relative).forEach(function(k) { - result[k] = relative[k]; - }); - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - } else if (relPath.length) { - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!isNullOrUndefined(relative.search)) { - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - result.pathname = null; - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host) && (last === '.' || last === '..') || - last === ''); - - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last == '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; -}; - -Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; -}; - -function isString(arg) { - return typeof arg === "string"; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isNull(arg) { - return arg === null; -} -function isNullOrUndefined(arg) { - return arg == null; -} - -},{"punycode":251,"querystring":254}],273:[function(require,module,exports){ -(function() { - var XMLAttribute, create; - - create = require('lodash/object/create'); - - module.exports = XMLAttribute = (function() { - function XMLAttribute(parent, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing attribute name of element " + parent.name); - } - if (value == null) { - throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); - } - this.name = this.stringify.attName(name); - this.value = this.stringify.attValue(value); - } - - XMLAttribute.prototype.clone = function() { - return create(XMLAttribute.prototype, this); - }; - - XMLAttribute.prototype.toString = function(options, level) { - return ' ' + this.name + '="' + this.value + '"'; - }; - - return XMLAttribute; - - })(); - -}).call(this); - -},{"lodash/object/create":332}],274:[function(require,module,exports){ -(function() { - var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; - - XMLStringifier = require('./XMLStringifier'); - - XMLDeclaration = require('./XMLDeclaration'); - - XMLDocType = require('./XMLDocType'); - - XMLElement = require('./XMLElement'); - - module.exports = XMLBuilder = (function() { - function XMLBuilder(name, options) { - var root, temp; - if (name == null) { - throw new Error("Root element needs a name"); - } - if (options == null) { - options = {}; - } - this.options = options; - this.stringify = new XMLStringifier(options); - temp = new XMLElement(this, 'doc'); - root = temp.element(name); - root.isRoot = true; - root.documentObject = this; - this.rootObject = root; - if (!options.headless) { - root.declaration(options); - if ((options.pubID != null) || (options.sysID != null)) { - root.doctype(options); - } - } - } - - XMLBuilder.prototype.root = function() { - return this.rootObject; - }; - - XMLBuilder.prototype.end = function(options) { - return this.toString(options); - }; - - XMLBuilder.prototype.toString = function(options) { - var indent, newline, offset, pretty, r, ref, ref1, ref2; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - r = ''; - if (this.xmldec != null) { - r += this.xmldec.toString(options); - } - if (this.doctype != null) { - r += this.doctype.toString(options); - } - r += this.rootObject.toString(options); - if (pretty && r.slice(-newline.length) === newline) { - r = r.slice(0, -newline.length); - } - return r; - }; - - return XMLBuilder; - - })(); - -}).call(this); - -},{"./XMLDeclaration":281,"./XMLDocType":282,"./XMLElement":283,"./XMLStringifier":287}],275:[function(require,module,exports){ -(function() { - var XMLCData, XMLNode, create, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLCData = (function(superClass) { - extend(XMLCData, superClass); - - function XMLCData(parent, text) { - XMLCData.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing CDATA text"); - } - this.text = this.stringify.cdata(text); - } - - XMLCData.prototype.clone = function() { - return create(XMLCData.prototype, this); - }; - - XMLCData.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLCData; - - })(XMLNode); - -}).call(this); - -},{"./XMLNode":284,"lodash/object/create":332}],276:[function(require,module,exports){ -(function() { - var XMLComment, XMLNode, create, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLComment = (function(superClass) { - extend(XMLComment, superClass); - - function XMLComment(parent, text) { - XMLComment.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing comment text"); - } - this.text = this.stringify.comment(text); - } - - XMLComment.prototype.clone = function() { - return create(XMLComment.prototype, this); - }; - - XMLComment.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLComment; - - })(XMLNode); - -}).call(this); - -},{"./XMLNode":284,"lodash/object/create":332}],277:[function(require,module,exports){ -(function() { - var XMLDTDAttList, create; - - create = require('lodash/object/create'); - - module.exports = XMLDTDAttList = (function() { - function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { - this.stringify = parent.stringify; - if (elementName == null) { - throw new Error("Missing DTD element name"); - } - if (attributeName == null) { - throw new Error("Missing DTD attribute name"); - } - if (!attributeType) { - throw new Error("Missing DTD attribute type"); - } - if (!defaultValueType) { - throw new Error("Missing DTD attribute default"); - } - if (defaultValueType.indexOf('#') !== 0) { - defaultValueType = '#' + defaultValueType; - } - if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { - throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); - } - if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { - throw new Error("Default value only applies to #FIXED or #DEFAULT"); - } - this.elementName = this.stringify.eleName(elementName); - this.attributeName = this.stringify.attName(attributeName); - this.attributeType = this.stringify.dtdAttType(attributeType); - this.defaultValue = this.stringify.dtdAttDefault(defaultValue); - this.defaultValueType = defaultValueType; - } - - XMLDTDAttList.prototype.clone = function() { - return create(XMLDTDAttList.prototype, this); - }; - - XMLDTDAttList.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDAttList; - - })(); - -}).call(this); - -},{"lodash/object/create":332}],278:[function(require,module,exports){ -(function() { - var XMLDTDElement, create, isArray; - - create = require('lodash/object/create'); - - isArray = require('lodash/lang/isArray'); - - module.exports = XMLDTDElement = (function() { - function XMLDTDElement(parent, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing DTD element name"); - } - if (!value) { - value = '(#PCDATA)'; - } - if (isArray(value)) { - value = '(' + value.join(',') + ')'; - } - this.name = this.stringify.eleName(name); - this.value = this.stringify.dtdElementValue(value); - } - - XMLDTDElement.prototype.clone = function() { - return create(XMLDTDElement.prototype, this); - }; - - XMLDTDElement.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDElement; - - })(); - -}).call(this); - -},{"lodash/lang/isArray":324,"lodash/object/create":332}],279:[function(require,module,exports){ -(function() { - var XMLDTDEntity, create, isObject; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - module.exports = XMLDTDEntity = (function() { - function XMLDTDEntity(parent, pe, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing entity name"); - } - if (value == null) { - throw new Error("Missing entity value"); - } - this.pe = !!pe; - this.name = this.stringify.eleName(name); - if (!isObject(value)) { - this.value = this.stringify.dtdEntityValue(value); - } else { - if (!value.pubID && !value.sysID) { - throw new Error("Public and/or system identifiers are required for an external entity"); - } - if (value.pubID && !value.sysID) { - throw new Error("System identifier is required for a public external entity"); - } - if (value.pubID != null) { - this.pubID = this.stringify.dtdPubID(value.pubID); - } - if (value.sysID != null) { - this.sysID = this.stringify.dtdSysID(value.sysID); - } - if (value.nData != null) { - this.nData = this.stringify.dtdNData(value.nData); - } - if (this.pe && this.nData) { - throw new Error("Notation declaration is not allowed in a parameter entity"); - } - } - } - - XMLDTDEntity.prototype.clone = function() { - return create(XMLDTDEntity.prototype, this); - }; - - XMLDTDEntity.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDEntity; - - })(); - -}).call(this); - -},{"lodash/lang/isObject":328,"lodash/object/create":332}],280:[function(require,module,exports){ -(function() { - var XMLDTDNotation, create; - - create = require('lodash/object/create'); - - module.exports = XMLDTDNotation = (function() { - function XMLDTDNotation(parent, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing notation name"); - } - if (!value.pubID && !value.sysID) { - throw new Error("Public or system identifiers are required for an external entity"); - } - this.name = this.stringify.eleName(name); - if (value.pubID != null) { - this.pubID = this.stringify.dtdPubID(value.pubID); - } - if (value.sysID != null) { - this.sysID = this.stringify.dtdSysID(value.sysID); - } - } - - XMLDTDNotation.prototype.clone = function() { - return create(XMLDTDNotation.prototype, this); - }; - - XMLDTDNotation.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDNotation; - - })(); - -}).call(this); - -},{"lodash/object/create":332}],281:[function(require,module,exports){ -(function() { - var XMLDeclaration, XMLNode, create, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLDeclaration = (function(superClass) { - extend(XMLDeclaration, superClass); - - function XMLDeclaration(parent, version, encoding, standalone) { - var ref; - XMLDeclaration.__super__.constructor.call(this, parent); - if (isObject(version)) { - ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; - } - if (!version) { - version = '1.0'; - } - if (version != null) { - this.version = this.stringify.xmlVersion(version); - } - if (encoding != null) { - this.encoding = this.stringify.xmlEncoding(encoding); - } - if (standalone != null) { - this.standalone = this.stringify.xmlStandalone(standalone); - } - } - - XMLDeclaration.prototype.clone = function() { - return create(XMLDeclaration.prototype, this); - }; - - XMLDeclaration.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDeclaration; - - })(XMLNode); - -}).call(this); - -},{"./XMLNode":284,"lodash/lang/isObject":328,"lodash/object/create":332}],282:[function(require,module,exports){ -(function() { - var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - XMLCData = require('./XMLCData'); - - XMLComment = require('./XMLComment'); - - XMLDTDAttList = require('./XMLDTDAttList'); - - XMLDTDEntity = require('./XMLDTDEntity'); - - XMLDTDElement = require('./XMLDTDElement'); - - XMLDTDNotation = require('./XMLDTDNotation'); - - XMLProcessingInstruction = require('./XMLProcessingInstruction'); - - module.exports = XMLDocType = (function() { - function XMLDocType(parent, pubID, sysID) { - var ref, ref1; - this.documentObject = parent; - this.stringify = this.documentObject.stringify; - this.children = []; - if (isObject(pubID)) { - ref = pubID, pubID = ref.pubID, sysID = ref.sysID; - } - if (sysID == null) { - ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; - } - if (pubID != null) { - this.pubID = this.stringify.dtdPubID(pubID); - } - if (sysID != null) { - this.sysID = this.stringify.dtdSysID(sysID); - } - } - - XMLDocType.prototype.clone = function() { - return create(XMLDocType.prototype, this); - }; - - XMLDocType.prototype.element = function(name, value) { - var child; - child = new XMLDTDElement(this, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - var child; - child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.entity = function(name, value) { - var child; - child = new XMLDTDEntity(this, false, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.pEntity = function(name, value) { - var child; - child = new XMLDTDEntity(this, true, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.notation = function(name, value) { - var child; - child = new XMLDTDNotation(this, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.cdata = function(value) { - var child; - child = new XMLCData(this, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.comment = function(value) { - var child; - child = new XMLComment(this, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.instruction = function(target, value) { - var child; - child = new XMLProcessingInstruction(this, target, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.root = function() { - return this.documentObject.root(); - }; - - XMLDocType.prototype.document = function() { - return this.documentObject; - }; - - XMLDocType.prototype.toString = function(options, level) { - var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ' 0) { - r += ' ['; - if (pretty) { - r += newline; - } - ref3 = this.children; - for (i = 0, len = ref3.length; i < len; i++) { - child = ref3[i]; - r += child.toString(options, level + 1); - } - r += ']'; - } - r += '>'; - if (pretty) { - r += newline; - } - return r; - }; - - XMLDocType.prototype.ele = function(name, value) { - return this.element(name, value); - }; - - XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); - }; - - XMLDocType.prototype.ent = function(name, value) { - return this.entity(name, value); - }; - - XMLDocType.prototype.pent = function(name, value) { - return this.pEntity(name, value); - }; - - XMLDocType.prototype.not = function(name, value) { - return this.notation(name, value); - }; - - XMLDocType.prototype.dat = function(value) { - return this.cdata(value); - }; - - XMLDocType.prototype.com = function(value) { - return this.comment(value); - }; - - XMLDocType.prototype.ins = function(target, value) { - return this.instruction(target, value); - }; - - XMLDocType.prototype.up = function() { - return this.root(); - }; - - XMLDocType.prototype.doc = function() { - return this.document(); - }; - - return XMLDocType; - - })(); - -}).call(this); - -},{"./XMLCData":275,"./XMLComment":276,"./XMLDTDAttList":277,"./XMLDTDElement":278,"./XMLDTDEntity":279,"./XMLDTDNotation":280,"./XMLProcessingInstruction":285,"lodash/lang/isObject":328,"lodash/object/create":332}],283:[function(require,module,exports){ -(function() { - var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isArray, isFunction, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - isArray = require('lodash/lang/isArray'); - - isFunction = require('lodash/lang/isFunction'); - - every = require('lodash/collection/every'); - - XMLNode = require('./XMLNode'); - - XMLAttribute = require('./XMLAttribute'); - - XMLProcessingInstruction = require('./XMLProcessingInstruction'); - - module.exports = XMLElement = (function(superClass) { - extend(XMLElement, superClass); - - function XMLElement(parent, name, attributes) { - XMLElement.__super__.constructor.call(this, parent); - if (name == null) { - throw new Error("Missing element name"); - } - this.name = this.stringify.eleName(name); - this.children = []; - this.instructions = []; - this.attributes = {}; - if (attributes != null) { - this.attribute(attributes); - } - } - - XMLElement.prototype.clone = function() { - var att, attName, clonedSelf, i, len, pi, ref, ref1; - clonedSelf = create(XMLElement.prototype, this); - if (clonedSelf.isRoot) { - clonedSelf.documentObject = null; - } - clonedSelf.attributes = {}; - ref = this.attributes; - for (attName in ref) { - if (!hasProp.call(ref, attName)) continue; - att = ref[attName]; - clonedSelf.attributes[attName] = att.clone(); - } - clonedSelf.instructions = []; - ref1 = this.instructions; - for (i = 0, len = ref1.length; i < len; i++) { - pi = ref1[i]; - clonedSelf.instructions.push(pi.clone()); - } - clonedSelf.children = []; - this.children.forEach(function(child) { - var clonedChild; - clonedChild = child.clone(); - clonedChild.parent = clonedSelf; - return clonedSelf.children.push(clonedChild); - }); - return clonedSelf; - }; - - XMLElement.prototype.attribute = function(name, value) { - var attName, attValue; - if (name != null) { - name = name.valueOf(); - } - if (isObject(name)) { - for (attName in name) { - if (!hasProp.call(name, attName)) continue; - attValue = name[attName]; - this.attribute(attName, attValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - if (!this.options.skipNullAttributes || (value != null)) { - this.attributes[name] = new XMLAttribute(this, name, value); - } - } - return this; - }; - - XMLElement.prototype.removeAttribute = function(name) { - var attName, i, len; - if (name == null) { - throw new Error("Missing attribute name"); - } - name = name.valueOf(); - if (isArray(name)) { - for (i = 0, len = name.length; i < len; i++) { - attName = name[i]; - delete this.attributes[attName]; - } - } else { - delete this.attributes[name]; - } - return this; - }; - - XMLElement.prototype.instruction = function(target, value) { - var i, insTarget, insValue, instruction, len; - if (target != null) { - target = target.valueOf(); - } - if (value != null) { - value = value.valueOf(); - } - if (isArray(target)) { - for (i = 0, len = target.length; i < len; i++) { - insTarget = target[i]; - this.instruction(insTarget); - } - } else if (isObject(target)) { - for (insTarget in target) { - if (!hasProp.call(target, insTarget)) continue; - insValue = target[insTarget]; - this.instruction(insTarget, insValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - instruction = new XMLProcessingInstruction(this, target, value); - this.instructions.push(instruction); - } - return this; - }; - - XMLElement.prototype.toString = function(options, level) { - var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - ref3 = this.instructions; - for (i = 0, len = ref3.length; i < len; i++) { - instruction = ref3[i]; - r += instruction.toString(options, level + 1); - } - if (pretty) { - r += space; - } - r += '<' + this.name; - ref4 = this.attributes; - for (name in ref4) { - if (!hasProp.call(ref4, name)) continue; - att = ref4[name]; - r += att.toString(options); - } - if (this.children.length === 0 || every(this.children, function(e) { - return e.value === ''; - })) { - r += '/>'; - if (pretty) { - r += newline; - } - } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) { - r += '>'; - r += this.children[0].value; - r += ''; - r += newline; - } else { - r += '>'; - if (pretty) { - r += newline; - } - ref5 = this.children; - for (j = 0, len1 = ref5.length; j < len1; j++) { - child = ref5[j]; - r += child.toString(options, level + 1); - } - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - } - return r; - }; - - XMLElement.prototype.att = function(name, value) { - return this.attribute(name, value); - }; - - XMLElement.prototype.ins = function(target, value) { - return this.instruction(target, value); - }; - - XMLElement.prototype.a = function(name, value) { - return this.attribute(name, value); - }; - - XMLElement.prototype.i = function(target, value) { - return this.instruction(target, value); - }; - - return XMLElement; - - })(XMLNode); - -}).call(this); - -},{"./XMLAttribute":273,"./XMLNode":284,"./XMLProcessingInstruction":285,"lodash/collection/every":290,"lodash/lang/isArray":324,"lodash/lang/isFunction":326,"lodash/lang/isObject":328,"lodash/object/create":332}],284:[function(require,module,exports){ -(function() { - var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isArray, isEmpty, isFunction, isObject, - hasProp = {}.hasOwnProperty; - - isObject = require('lodash/lang/isObject'); - - isArray = require('lodash/lang/isArray'); - - isFunction = require('lodash/lang/isFunction'); - - isEmpty = require('lodash/lang/isEmpty'); - - XMLElement = null; - - XMLCData = null; - - XMLComment = null; - - XMLDeclaration = null; - - XMLDocType = null; - - XMLRaw = null; - - XMLText = null; - - module.exports = XMLNode = (function() { - function XMLNode(parent) { - this.parent = parent; - this.options = this.parent.options; - this.stringify = this.parent.stringify; - if (XMLElement === null) { - XMLElement = require('./XMLElement'); - XMLCData = require('./XMLCData'); - XMLComment = require('./XMLComment'); - XMLDeclaration = require('./XMLDeclaration'); - XMLDocType = require('./XMLDocType'); - XMLRaw = require('./XMLRaw'); - XMLText = require('./XMLText'); - } - } - - XMLNode.prototype.clone = function() { - throw new Error("Cannot clone generic XMLNode"); - }; - - XMLNode.prototype.element = function(name, attributes, text) { - var item, j, key, lastChild, len, ref, val; - lastChild = null; - if (attributes == null) { - attributes = {}; - } - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref = [attributes, text], text = ref[0], attributes = ref[1]; - } - if (name != null) { - name = name.valueOf(); - } - if (isArray(name)) { - for (j = 0, len = name.length; j < len; j++) { - item = name[j]; - lastChild = this.element(item); - } - } else if (isFunction(name)) { - lastChild = this.element(name.apply()); - } else if (isObject(name)) { - for (key in name) { - if (!hasProp.call(name, key)) continue; - val = name[key]; - if (isFunction(val)) { - val = val.apply(); - } - if ((isObject(val)) && (isEmpty(val))) { - val = null; - } - if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { - lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); - } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) { - lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val); - } else if (isObject(val)) { - if (!this.options.ignoreDecorators && this.stringify.convertListKey && key.indexOf(this.stringify.convertListKey) === 0 && isArray(val)) { - lastChild = this.element(val); - } else { - lastChild = this.element(key); - lastChild.element(val); - } - } else { - lastChild = this.element(key, val); - } - } - } else { - if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { - lastChild = this.text(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { - lastChild = this.cdata(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { - lastChild = this.comment(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { - lastChild = this.raw(text); - } else { - lastChild = this.node(name, attributes, text); - } - } - if (lastChild == null) { - throw new Error("Could not create any elements with: " + name); - } - return lastChild; - }; - - XMLNode.prototype.insertBefore = function(name, attributes, text) { - var child, i, removed; - if (this.isRoot) { - throw new Error("Cannot insert elements at root level"); - } - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i); - child = this.parent.element(name, attributes, text); - Array.prototype.push.apply(this.parent.children, removed); - return child; - }; - - XMLNode.prototype.insertAfter = function(name, attributes, text) { - var child, i, removed; - if (this.isRoot) { - throw new Error("Cannot insert elements at root level"); - } - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i + 1); - child = this.parent.element(name, attributes, text); - Array.prototype.push.apply(this.parent.children, removed); - return child; - }; - - XMLNode.prototype.remove = function() { - var i, ref; - if (this.isRoot) { - throw new Error("Cannot remove the root element"); - } - i = this.parent.children.indexOf(this); - [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref; - return this.parent; - }; - - XMLNode.prototype.node = function(name, attributes, text) { - var child, ref; - if (name != null) { - name = name.valueOf(); - } - if (attributes == null) { - attributes = {}; - } - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref = [attributes, text], text = ref[0], attributes = ref[1]; - } - child = new XMLElement(this, name, attributes); - if (text != null) { - child.text(text); - } - this.children.push(child); - return child; - }; - - XMLNode.prototype.text = function(value) { - var child; - child = new XMLText(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.cdata = function(value) { - var child; - child = new XMLCData(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.comment = function(value) { - var child; - child = new XMLComment(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.raw = function(value) { - var child; - child = new XMLRaw(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.declaration = function(version, encoding, standalone) { - var doc, xmldec; - doc = this.document(); - xmldec = new XMLDeclaration(doc, version, encoding, standalone); - doc.xmldec = xmldec; - return doc.root(); - }; - - XMLNode.prototype.doctype = function(pubID, sysID) { - var doc, doctype; - doc = this.document(); - doctype = new XMLDocType(doc, pubID, sysID); - doc.doctype = doctype; - return doctype; - }; - - XMLNode.prototype.up = function() { - if (this.isRoot) { - throw new Error("The root node has no parent. Use doc() if you need to get the document object."); - } - return this.parent; - }; - - XMLNode.prototype.root = function() { - var child; - if (this.isRoot) { - return this; - } - child = this.parent; - while (!child.isRoot) { - child = child.parent; - } - return child; - }; - - XMLNode.prototype.document = function() { - return this.root().documentObject; - }; - - XMLNode.prototype.end = function(options) { - return this.document().toString(options); - }; - - XMLNode.prototype.prev = function() { - var i; - if (this.isRoot) { - throw new Error("Root node has no siblings"); - } - i = this.parent.children.indexOf(this); - if (i < 1) { - throw new Error("Already at the first node"); - } - return this.parent.children[i - 1]; - }; - - XMLNode.prototype.next = function() { - var i; - if (this.isRoot) { - throw new Error("Root node has no siblings"); - } - i = this.parent.children.indexOf(this); - if (i === -1 || i === this.parent.children.length - 1) { - throw new Error("Already at the last node"); - } - return this.parent.children[i + 1]; - }; - - XMLNode.prototype.importXMLBuilder = function(xmlbuilder) { - var clonedRoot; - clonedRoot = xmlbuilder.root().clone(); - clonedRoot.parent = this; - clonedRoot.isRoot = false; - this.children.push(clonedRoot); - return this; - }; - - XMLNode.prototype.ele = function(name, attributes, text) { - return this.element(name, attributes, text); - }; - - XMLNode.prototype.nod = function(name, attributes, text) { - return this.node(name, attributes, text); - }; - - XMLNode.prototype.txt = function(value) { - return this.text(value); - }; - - XMLNode.prototype.dat = function(value) { - return this.cdata(value); - }; - - XMLNode.prototype.com = function(value) { - return this.comment(value); - }; - - XMLNode.prototype.doc = function() { - return this.document(); - }; - - XMLNode.prototype.dec = function(version, encoding, standalone) { - return this.declaration(version, encoding, standalone); - }; - - XMLNode.prototype.dtd = function(pubID, sysID) { - return this.doctype(pubID, sysID); - }; - - XMLNode.prototype.e = function(name, attributes, text) { - return this.element(name, attributes, text); - }; - - XMLNode.prototype.n = function(name, attributes, text) { - return this.node(name, attributes, text); - }; - - XMLNode.prototype.t = function(value) { - return this.text(value); - }; - - XMLNode.prototype.d = function(value) { - return this.cdata(value); - }; - - XMLNode.prototype.c = function(value) { - return this.comment(value); - }; - - XMLNode.prototype.r = function(value) { - return this.raw(value); - }; - - XMLNode.prototype.u = function() { - return this.up(); - }; - - return XMLNode; - - })(); - -}).call(this); - -},{"./XMLCData":275,"./XMLComment":276,"./XMLDeclaration":281,"./XMLDocType":282,"./XMLElement":283,"./XMLRaw":286,"./XMLText":288,"lodash/lang/isArray":324,"lodash/lang/isEmpty":325,"lodash/lang/isFunction":326,"lodash/lang/isObject":328}],285:[function(require,module,exports){ -(function() { - var XMLProcessingInstruction, create; - - create = require('lodash/object/create'); - - module.exports = XMLProcessingInstruction = (function() { - function XMLProcessingInstruction(parent, target, value) { - this.stringify = parent.stringify; - if (target == null) { - throw new Error("Missing instruction target"); - } - this.target = this.stringify.insTarget(target); - if (value) { - this.value = this.stringify.insValue(value); - } - } - - XMLProcessingInstruction.prototype.clone = function() { - return create(XMLProcessingInstruction.prototype, this); - }; - - XMLProcessingInstruction.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLProcessingInstruction; - - })(); - -}).call(this); - -},{"lodash/object/create":332}],286:[function(require,module,exports){ -(function() { - var XMLNode, XMLRaw, create, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLRaw = (function(superClass) { - extend(XMLRaw, superClass); - - function XMLRaw(parent, text) { - XMLRaw.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing raw text"); - } - this.value = this.stringify.raw(text); - } - - XMLRaw.prototype.clone = function() { - return create(XMLRaw.prototype, this); - }; - - XMLRaw.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += this.value; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLRaw; - - })(XMLNode); - -}).call(this); - -},{"./XMLNode":284,"lodash/object/create":332}],287:[function(require,module,exports){ -(function() { - var XMLStringifier, - bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - hasProp = {}.hasOwnProperty; - - module.exports = XMLStringifier = (function() { - function XMLStringifier(options) { - this.assertLegalChar = bind(this.assertLegalChar, this); - var key, ref, value; - this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0; - ref = (options != null ? options.stringify : void 0) || {}; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - value = ref[key]; - this[key] = value; - } - } - - XMLStringifier.prototype.eleName = function(val) { - val = '' + val || ''; - return this.assertLegalChar(val); - }; - - XMLStringifier.prototype.eleText = function(val) { - val = '' + val || ''; - return this.assertLegalChar(this.elEscape(val)); - }; - - XMLStringifier.prototype.cdata = function(val) { - val = '' + val || ''; - if (val.match(/]]>/)) { - throw new Error("Invalid CDATA text: " + val); - } - return this.assertLegalChar(val); - }; - - XMLStringifier.prototype.comment = function(val) { - val = '' + val || ''; - if (val.match(/--/)) { - throw new Error("Comment text cannot contain double-hypen: " + val); - } - return this.assertLegalChar(val); - }; - - XMLStringifier.prototype.raw = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.attName = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.attValue = function(val) { - val = '' + val || ''; - return this.attEscape(val); - }; - - XMLStringifier.prototype.insTarget = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.insValue = function(val) { - val = '' + val || ''; - if (val.match(/\?>/)) { - throw new Error("Invalid processing instruction value: " + val); - } - return val; - }; - - XMLStringifier.prototype.xmlVersion = function(val) { - val = '' + val || ''; - if (!val.match(/1\.[0-9]+/)) { - throw new Error("Invalid version number: " + val); - } - return val; - }; - - XMLStringifier.prototype.xmlEncoding = function(val) { - val = '' + val || ''; - if (!val.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) { - throw new Error("Invalid encoding: " + val); - } - return val; - }; - - XMLStringifier.prototype.xmlStandalone = function(val) { - if (val) { - return "yes"; - } else { - return "no"; - } - }; - - XMLStringifier.prototype.dtdPubID = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdSysID = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdElementValue = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdAttType = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdAttDefault = function(val) { - if (val != null) { - return '' + val || ''; - } else { - return val; - } - }; - - XMLStringifier.prototype.dtdEntityValue = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdNData = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.convertAttKey = '@'; - - XMLStringifier.prototype.convertPIKey = '?'; - - XMLStringifier.prototype.convertTextKey = '#text'; - - XMLStringifier.prototype.convertCDataKey = '#cdata'; - - XMLStringifier.prototype.convertCommentKey = '#comment'; - - XMLStringifier.prototype.convertRawKey = '#raw'; - - XMLStringifier.prototype.convertListKey = '#list'; - - XMLStringifier.prototype.assertLegalChar = function(str) { - var chars, chr; - if (this.allowSurrogateChars) { - chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/; - } else { - chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/; - } - chr = str.match(chars); - if (chr) { - throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index); - } - return str; - }; - - XMLStringifier.prototype.elEscape = function(str) { - return str.replace(/&/g, '&').replace(//g, '>').replace(/\r/g, ' '); - }; - - XMLStringifier.prototype.attEscape = function(str) { - return str.replace(/&/g, '&').replace(/ 3 && typeof customizer == 'function') { - customizer = bindCallback(customizer, thisArg, 5); - length -= 2; - } else { - customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null; - length -= (customizer ? 1 : 0); - } - if (guard && isIterateeCall(args[1], args[2], guard)) { - customizer = length == 3 ? null : customizer; - length = 2; - } - var index = 0; - while (++index < length) { - var source = args[index]; - if (source) { - assigner(object, source, customizer); - } - } - return object; - }; -} - -module.exports = createAssigner; - -},{"./bindCallback":309,"./isIterateeCall":316}],311:[function(require,module,exports){ - -function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) { - var index = -1, - arrLength = array.length, - othLength = other.length, - result = true; - - if (arrLength != othLength && !(isWhere && othLength > arrLength)) { - return false; - } - while (result && ++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - result = undefined; - if (customizer) { - result = isWhere - ? customizer(othValue, arrValue, index) - : customizer(arrValue, othValue, index); - } - if (typeof result == 'undefined') { - if (isWhere) { - var othIndex = othLength; - while (othIndex--) { - othValue = other[othIndex]; - result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); - if (result) { - break; - } - } - } else { - result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); - } - } - } - return !!result; -} - -module.exports = equalArrays; - -},{}],312:[function(require,module,exports){ - -var boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - numberTag = '[object Number]', - regexpTag = '[object RegExp]', - stringTag = '[object String]'; - - -function equalByTag(object, other, tag) { - switch (tag) { - case boolTag: - case dateTag: - return +object == +other; - - case errorTag: - return object.name == other.name && object.message == other.message; - - case numberTag: - return (object != +object) - ? other != +other - : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); - - case regexpTag: - case stringTag: - return object == (other + ''); - } - return false; -} - -module.exports = equalByTag; - -},{}],313:[function(require,module,exports){ -var keys = require('../object/keys'); - - -var objectProto = Object.prototype; - - -var hasOwnProperty = objectProto.hasOwnProperty; - - -function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) { - var objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; - - if (objLength != othLength && !isWhere) { - return false; - } - var hasCtor, - index = -1; - - while (++index < objLength) { - var key = objProps[index], - result = hasOwnProperty.call(other, key); - - if (result) { - var objValue = object[key], - othValue = other[key]; - - result = undefined; - if (customizer) { - result = isWhere - ? customizer(othValue, objValue, key) - : customizer(objValue, othValue, key); - } - if (typeof result == 'undefined') { - result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB); - } - } - if (!result) { - return false; - } - hasCtor || (hasCtor = key == 'constructor'); - } - if (!hasCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - return false; - } - } - return true; -} - -module.exports = equalObjects; - -},{"../object/keys":333}],314:[function(require,module,exports){ -var baseSetData = require('./baseSetData'), - isNative = require('../lang/isNative'), - support = require('../support'); - - -var reFuncName = /^\s*function[ \n\r\t]+\w/; - - -var reThis = /\bthis\b/; - - -var fnToString = Function.prototype.toString; - - -function isBindable(func) { - var result = !(support.funcNames ? func.name : support.funcDecomp); - - if (!result) { - var source = fnToString.call(func); - if (!support.funcNames) { - result = !reFuncName.test(source); - } - if (!result) { - result = reThis.test(source) || isNative(func); - baseSetData(func, result); - } - } - return result; -} - -module.exports = isBindable; - -},{"../lang/isNative":327,"../support":336,"./baseSetData":307}],315:[function(require,module,exports){ - -var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; - - -function isIndex(value, length) { - value = +value; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; -} - -module.exports = isIndex; - -},{}],316:[function(require,module,exports){ -var isIndex = require('./isIndex'), - isLength = require('./isLength'), - isObject = require('../lang/isObject'); - - -function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number') { - var length = object.length, - prereq = isLength(length) && isIndex(index, length); - } else { - prereq = type == 'string' && index in object; - } - if (prereq) { - var other = object[index]; - return value === value ? (value === other) : (other !== other); - } - return false; -} - -module.exports = isIterateeCall; - -},{"../lang/isObject":328,"./isIndex":315,"./isLength":317}],317:[function(require,module,exports){ - -var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; - - -function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; -} - -module.exports = isLength; - -},{}],318:[function(require,module,exports){ - -function isObjectLike(value) { - return (value && typeof value == 'object') || false; -} - -module.exports = isObjectLike; - -},{}],319:[function(require,module,exports){ -var isObject = require('../lang/isObject'); - - -function isStrictComparable(value) { - return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); -} - -module.exports = isStrictComparable; - -},{"../lang/isObject":328}],320:[function(require,module,exports){ -(function (global){ -var isNative = require('../lang/isNative'); - - -var WeakMap = isNative(WeakMap = global.WeakMap) && WeakMap; - - -var metaMap = WeakMap && new WeakMap; - -module.exports = metaMap; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../lang/isNative":327}],321:[function(require,module,exports){ -var isArguments = require('../lang/isArguments'), - isArray = require('../lang/isArray'), - isIndex = require('./isIndex'), - isLength = require('./isLength'), - keysIn = require('../object/keysIn'), - support = require('../support'); - - -var objectProto = Object.prototype; - - -var hasOwnProperty = objectProto.hasOwnProperty; - - -function shimKeys(object) { - var props = keysIn(object), - propsLength = props.length, - length = propsLength && object.length; - - var allowIndexes = length && isLength(length) && - (isArray(object) || (support.nonEnumArgs && isArguments(object))); - - var index = -1, - result = []; - - while (++index < propsLength) { - var key = props[index]; - if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { - result.push(key); - } - } - return result; -} - -module.exports = shimKeys; - -},{"../lang/isArguments":323,"../lang/isArray":324,"../object/keysIn":334,"../support":336,"./isIndex":315,"./isLength":317}],322:[function(require,module,exports){ -var isObject = require('../lang/isObject'); - - -function toObject(value) { - return isObject(value) ? value : Object(value); -} - -module.exports = toObject; - -},{"../lang/isObject":328}],323:[function(require,module,exports){ -var isLength = require('../internal/isLength'), - isObjectLike = require('../internal/isObjectLike'); - - -var argsTag = '[object Arguments]'; - - -var objectProto = Object.prototype; - - -var objToString = objectProto.toString; - - -function isArguments(value) { - var length = isObjectLike(value) ? value.length : undefined; - return (isLength(length) && objToString.call(value) == argsTag) || false; -} - -module.exports = isArguments; - -},{"../internal/isLength":317,"../internal/isObjectLike":318}],324:[function(require,module,exports){ -var isLength = require('../internal/isLength'), - isNative = require('./isNative'), - isObjectLike = require('../internal/isObjectLike'); - - -var arrayTag = '[object Array]'; - - -var objectProto = Object.prototype; - - -var objToString = objectProto.toString; - - -var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray; - - -var isArray = nativeIsArray || function(value) { - return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false; -}; - -module.exports = isArray; - -},{"../internal/isLength":317,"../internal/isObjectLike":318,"./isNative":327}],325:[function(require,module,exports){ -var isArguments = require('./isArguments'), - isArray = require('./isArray'), - isFunction = require('./isFunction'), - isLength = require('../internal/isLength'), - isObjectLike = require('../internal/isObjectLike'), - isString = require('./isString'), - keys = require('../object/keys'); - - -function isEmpty(value) { - if (value == null) { - return true; - } - var length = value.length; - if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || - (isObjectLike(value) && isFunction(value.splice)))) { - return !length; - } - return !keys(value).length; -} - -module.exports = isEmpty; - -},{"../internal/isLength":317,"../internal/isObjectLike":318,"../object/keys":333,"./isArguments":323,"./isArray":324,"./isFunction":326,"./isString":329}],326:[function(require,module,exports){ -(function (global){ -var baseIsFunction = require('../internal/baseIsFunction'), - isNative = require('./isNative'); - - -var funcTag = '[object Function]'; - - -var objectProto = Object.prototype; - - -var objToString = objectProto.toString; - - -var Uint8Array = isNative(Uint8Array = global.Uint8Array) && Uint8Array; - - -var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { - return objToString.call(value) == funcTag; -}; - -module.exports = isFunction; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"../internal/baseIsFunction":302,"./isNative":327}],327:[function(require,module,exports){ -var escapeRegExp = require('../string/escapeRegExp'), - isObjectLike = require('../internal/isObjectLike'); - - -var funcTag = '[object Function]'; - - -var reHostCtor = /^\[object .+?Constructor\]$/; - - -var objectProto = Object.prototype; - - -var fnToString = Function.prototype.toString; - - -var objToString = objectProto.toString; - - -var reNative = RegExp('^' + - escapeRegExp(objToString) - .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' -); - - -function isNative(value) { - if (value == null) { - return false; - } - if (objToString.call(value) == funcTag) { - return reNative.test(fnToString.call(value)); - } - return (isObjectLike(value) && reHostCtor.test(value)) || false; -} - -module.exports = isNative; - -},{"../internal/isObjectLike":318,"../string/escapeRegExp":335}],328:[function(require,module,exports){ - -function isObject(value) { - var type = typeof value; - return type == 'function' || (value && type == 'object') || false; -} - -module.exports = isObject; - -},{}],329:[function(require,module,exports){ -var isObjectLike = require('../internal/isObjectLike'); - - -var stringTag = '[object String]'; - - -var objectProto = Object.prototype; - - -var objToString = objectProto.toString; - - -function isString(value) { - return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; -} - -module.exports = isString; - -},{"../internal/isObjectLike":318}],330:[function(require,module,exports){ -var isLength = require('../internal/isLength'), - isObjectLike = require('../internal/isObjectLike'); - - -var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - -var arrayBufferTag = '[object ArrayBuffer]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - -var typedArrayTags = {}; -typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = -typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = -typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = -typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = -typedArrayTags[uint32Tag] = true; -typedArrayTags[argsTag] = typedArrayTags[arrayTag] = -typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = -typedArrayTags[dateTag] = typedArrayTags[errorTag] = -typedArrayTags[funcTag] = typedArrayTags[mapTag] = -typedArrayTags[numberTag] = typedArrayTags[objectTag] = -typedArrayTags[regexpTag] = typedArrayTags[setTag] = -typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; - - -var objectProto = Object.prototype; - - -var objToString = objectProto.toString; - - -function isTypedArray(value) { - return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false; -} - -module.exports = isTypedArray; - -},{"../internal/isLength":317,"../internal/isObjectLike":318}],331:[function(require,module,exports){ -var baseAssign = require('../internal/baseAssign'), - createAssigner = require('../internal/createAssigner'); - - -var assign = createAssigner(baseAssign); - -module.exports = assign; - -},{"../internal/baseAssign":292,"../internal/createAssigner":310}],332:[function(require,module,exports){ -var baseCopy = require('../internal/baseCopy'), - baseCreate = require('../internal/baseCreate'), - isIterateeCall = require('../internal/isIterateeCall'), - keys = require('./keys'); - - -function create(prototype, properties, guard) { - var result = baseCreate(prototype); - if (guard && isIterateeCall(prototype, properties, guard)) { - properties = null; - } - return properties ? baseCopy(properties, result, keys(properties)) : result; -} - -module.exports = create; - -},{"../internal/baseCopy":294,"../internal/baseCreate":295,"../internal/isIterateeCall":316,"./keys":333}],333:[function(require,module,exports){ -var isLength = require('../internal/isLength'), - isNative = require('../lang/isNative'), - isObject = require('../lang/isObject'), - shimKeys = require('../internal/shimKeys'); - - -var nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys; - - -var keys = !nativeKeys ? shimKeys : function(object) { - if (object) { - var Ctor = object.constructor, - length = object.length; - } - if ((typeof Ctor == 'function' && Ctor.prototype === object) || - (typeof object != 'function' && (length && isLength(length)))) { - return shimKeys(object); - } - return isObject(object) ? nativeKeys(object) : []; -}; - -module.exports = keys; - -},{"../internal/isLength":317,"../internal/shimKeys":321,"../lang/isNative":327,"../lang/isObject":328}],334:[function(require,module,exports){ -var isArguments = require('../lang/isArguments'), - isArray = require('../lang/isArray'), - isIndex = require('../internal/isIndex'), - isLength = require('../internal/isLength'), - isObject = require('../lang/isObject'), - support = require('../support'); - - -var objectProto = Object.prototype; - - -var hasOwnProperty = objectProto.hasOwnProperty; - - -function keysIn(object) { - if (object == null) { - return []; - } - if (!isObject(object)) { - object = Object(object); - } - var length = object.length; - length = (length && isLength(length) && - (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; - - var Ctor = object.constructor, - index = -1, - isProto = typeof Ctor == 'function' && Ctor.prototype === object, - result = Array(length), - skipIndexes = length > 0; - - while (++index < length) { - result[index] = (index + ''); - } - for (var key in object) { - if (!(skipIndexes && isIndex(key, length)) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; -} - -module.exports = keysIn; - -},{"../internal/isIndex":315,"../internal/isLength":317,"../lang/isArguments":323,"../lang/isArray":324,"../lang/isObject":328,"../support":336}],335:[function(require,module,exports){ -var baseToString = require('../internal/baseToString'); - - -var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, - reHasRegExpChars = RegExp(reRegExpChars.source); - - -function escapeRegExp(string) { - string = baseToString(string); - return (string && reHasRegExpChars.test(string)) - ? string.replace(reRegExpChars, '\\$&') - : string; -} - -module.exports = escapeRegExp; - -},{"../internal/baseToString":308}],336:[function(require,module,exports){ -(function (global){ -var isNative = require('./lang/isNative'); - - -var reThis = /\bthis\b/; - - -var objectProto = Object.prototype; - - -var document = (document = global.window) && document.document; - - -var propertyIsEnumerable = objectProto.propertyIsEnumerable; - - -var support = {}; - -(function(x) { - - - support.funcDecomp = !isNative(global.WinRTError) && reThis.test(function() { return this; }); - - - support.funcNames = typeof Function.name == 'string'; - - - try { - support.dom = document.createDocumentFragment().nodeType === 11; - } catch(e) { - support.dom = false; - } - - - try { - support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); - } catch(e) { - support.nonEnumArgs = true; - } -}(0, 0)); - -module.exports = support; - -}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}) -},{"./lang/isNative":327}],337:[function(require,module,exports){ - -function identity(value) { - return value; -} - -module.exports = identity; - -},{}],338:[function(require,module,exports){ -require('./browser_loader'); - -var AWS = require('./core'); - -if (typeof window !== 'undefined') window.AWS = AWS; -if (typeof module !== 'undefined') module.exports = AWS; -if (typeof self !== 'undefined') self.AWS = AWS; - - -require('../clients/browser_default'); -},{"../clients/browser_default":131,"./browser_loader":185,"./core":188}]},{},[338]); - diff --git a/node_modules/aws-sdk/dist/aws-sdk.min.js b/node_modules/aws-sdk/dist/aws-sdk.min.js deleted file mode 100644 index 6a3e233..0000000 --- a/node_modules/aws-sdk/dist/aws-sdk.min.js +++ /dev/null @@ -1,40 +0,0 @@ -// AWS SDK for JavaScript v2.6.8 -// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. -// License at https://sdk.amazonaws.com/js/BUNDLE_LICENSE.txt -!function e(t,r,a){function s(n,o){if(!r[n]){if(!t[n]){var u="function"==typeof require&&require;if(!o&&u)return u(n,!0);if(i)return i(n,!0);var p=new Error("Cannot find module '"+n+"'");throw p.code="MODULE_NOT_FOUND",p}var c=r[n]={exports:{}};t[n][0].call(c.exports,function(e){var r=t[n][1][e];return s(r?r:e)},c,c.exports,e,t,r,a)}return r[n].exports}for(var i="function"==typeof require&&require,n=0;n `0`",state:"success"},{matcher:"error",expected:"InvalidInstanceID.NotFound",state:"retry"}]},BundleTaskComplete:{delay:15,operation:"DescribeBundleTasks",maxAttempts:40,acceptors:[{expected:"complete",matcher:"pathAll",state:"success",argument:"BundleTasks[].State"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"BundleTasks[].State"}]},ConversionTaskCancelled:{delay:15,operation:"DescribeConversionTasks",maxAttempts:40,acceptors:[{expected:"cancelled",matcher:"pathAll",state:"success",argument:"ConversionTasks[].State"}]},ConversionTaskCompleted:{delay:15,operation:"DescribeConversionTasks",maxAttempts:40,acceptors:[{expected:"completed",matcher:"pathAll",state:"success",argument:"ConversionTasks[].State"},{expected:"cancelled",matcher:"pathAny",state:"failure",argument:"ConversionTasks[].State"},{expected:"cancelling",matcher:"pathAny",state:"failure",argument:"ConversionTasks[].State"}]},ConversionTaskDeleted:{delay:15,operation:"DescribeConversionTasks",maxAttempts:40,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"ConversionTasks[].State"}]},CustomerGatewayAvailable:{delay:15,operation:"DescribeCustomerGateways",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"CustomerGateways[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"CustomerGateways[].State"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"CustomerGateways[].State"}]},ExportTaskCancelled:{delay:15,operation:"DescribeExportTasks",maxAttempts:40,acceptors:[{expected:"cancelled",matcher:"pathAll",state:"success",argument:"ExportTasks[].State"}]},ExportTaskCompleted:{delay:15,operation:"DescribeExportTasks",maxAttempts:40,acceptors:[{expected:"completed",matcher:"pathAll",state:"success",argument:"ExportTasks[].State"}]},ImageExists:{operation:"DescribeImages",maxAttempts:40,delay:15,acceptors:[{matcher:"path",expected:!0,argument:"length(Images[]) > `0`",state:"success"},{matcher:"error",expected:"InvalidAMIID.NotFound",state:"retry"}]},ImageAvailable:{operation:"DescribeImages",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"Images[].State",expected:"available"},{state:"failure",matcher:"pathAny",argument:"Images[].State",expected:"failed"}]},InstanceRunning:{delay:15,operation:"DescribeInstances",maxAttempts:40,acceptors:[{expected:"running",matcher:"pathAll",state:"success",argument:"Reservations[].Instances[].State.Name"},{expected:"shutting-down",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{matcher:"error",expected:"InvalidInstanceID.NotFound",state:"retry"}]},InstanceStatusOk:{operation:"DescribeInstanceStatus",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"InstanceStatuses[].InstanceStatus.Status",expected:"ok"},{matcher:"error",expected:"InvalidInstanceID.NotFound",state:"retry"}]},InstanceStopped:{delay:15,operation:"DescribeInstances",maxAttempts:40,acceptors:[{expected:"stopped",matcher:"pathAll",state:"success",argument:"Reservations[].Instances[].State.Name"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"}]},InstanceTerminated:{delay:15,operation:"DescribeInstances",maxAttempts:40,acceptors:[{expected:"terminated",matcher:"pathAll",state:"success",argument:"Reservations[].Instances[].State.Name"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Reservations[].Instances[].State.Name"}]},KeyPairExists:{operation:"DescribeKeyPairs",delay:5,maxAttempts:6,acceptors:[{expected:!0,matcher:"pathAll",state:"success",argument:"length(KeyPairs[].KeyName) > `0`"},{expected:"InvalidKeyPair.NotFound",matcher:"error",state:"retry"}]},NatGatewayAvailable:{operation:"DescribeNatGateways",delay:15,maxAttempts:40,acceptors:[{state:"success",matcher:"pathAll",argument:"NatGateways[].State",expected:"available"},{state:"failure",matcher:"pathAny",argument:"NatGateways[].State",expected:"failed"},{state:"failure",matcher:"pathAny",argument:"NatGateways[].State",expected:"deleting"},{state:"failure",matcher:"pathAny",argument:"NatGateways[].State",expected:"deleted"},{state:"retry",matcher:"error",expected:"NatGatewayNotFound"}]},NetworkInterfaceAvailable:{operation:"DescribeNetworkInterfaces",delay:20,maxAttempts:10,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"NetworkInterfaces[].Status"},{expected:"InvalidNetworkInterfaceID.NotFound",matcher:"error",state:"failure"}]},PasswordDataAvailable:{operation:"GetPasswordData",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"path",argument:"length(PasswordData) > `0`",expected:!0}]},SnapshotCompleted:{delay:15,operation:"DescribeSnapshots",maxAttempts:40,acceptors:[{expected:"completed",matcher:"pathAll",state:"success",argument:"Snapshots[].State"}]},SpotInstanceRequestFulfilled:{operation:"DescribeSpotInstanceRequests",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"SpotInstanceRequests[].Status.Code",expected:"fulfilled"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"schedule-expired"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"canceled-before-fulfillment"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"bad-parameters"},{state:"failure",matcher:"pathAny",argument:"SpotInstanceRequests[].Status.Code",expected:"system-error"}]},SubnetAvailable:{delay:15,operation:"DescribeSubnets",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Subnets[].State"}]},SystemStatusOk:{operation:"DescribeInstanceStatus",maxAttempts:40,delay:15,acceptors:[{state:"success",matcher:"pathAll",argument:"InstanceStatuses[].SystemStatus.Status",expected:"ok"}]},VolumeAvailable:{delay:15,operation:"DescribeVolumes",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Volumes[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"Volumes[].State"}]},VolumeDeleted:{delay:15,operation:"DescribeVolumes",maxAttempts:40,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"Volumes[].State"},{matcher:"error",expected:"InvalidVolume.NotFound",state:"success"}]},VolumeInUse:{delay:15,operation:"DescribeVolumes",maxAttempts:40,acceptors:[{expected:"in-use",matcher:"pathAll",state:"success",argument:"Volumes[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"Volumes[].State"}]},VpcAvailable:{delay:15,operation:"DescribeVpcs",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Vpcs[].State"}]},VpcExists:{operation:"DescribeVpcs",delay:1,maxAttempts:5,acceptors:[{matcher:"status",expected:200,state:"success"},{matcher:"error",expected:"InvalidVpcID.NotFound",state:"retry"}]},VpnConnectionAvailable:{delay:15,operation:"DescribeVpnConnections",maxAttempts:40,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"VpnConnections[].State"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"VpnConnections[].State"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"VpnConnections[].State"}]},VpnConnectionDeleted:{delay:15,operation:"DescribeVpnConnections",maxAttempts:40,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"VpnConnections[].State"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"VpnConnections[].State"}]},VpcPeeringConnectionExists:{delay:15,operation:"DescribeVpcPeeringConnections",maxAttempts:40,acceptors:[{matcher:"status",expected:200,state:"success"},{matcher:"error",expected:"InvalidVpcPeeringConnectionID.NotFound",state:"retry"}]}}}},{}],42:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-09-21",endpointPrefix:"ecr",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon ECR",serviceFullName:"Amazon EC2 Container Registry",signatureVersion:"v4",targetPrefix:"AmazonEC2ContainerRegistry_V20150921"},operations:{BatchCheckLayerAvailability:{input:{type:"structure",required:["repositoryName","layerDigests"],members:{registryId:{},repositoryName:{},layerDigests:{type:"list",member:{}}}},output:{type:"structure",members:{layers:{type:"list",member:{type:"structure",members:{layerDigest:{},layerAvailability:{},layerSize:{type:"long"}}}},failures:{type:"list",member:{type:"structure",members:{layerDigest:{},failureCode:{},failureReason:{}}}}}}},BatchDeleteImage:{input:{type:"structure",required:["repositoryName","imageIds"],members:{registryId:{},repositoryName:{},imageIds:{shape:"Sh"}}},output:{type:"structure",members:{imageIds:{shape:"Sh"},failures:{shape:"Sm"}}}},BatchGetImage:{input:{type:"structure",required:["repositoryName","imageIds"],members:{registryId:{},repositoryName:{},imageIds:{shape:"Sh"}}},output:{type:"structure",members:{images:{type:"list",member:{shape:"St"}},failures:{shape:"Sm"}}}},CompleteLayerUpload:{input:{type:"structure",required:["repositoryName","uploadId","layerDigests"],members:{registryId:{},repositoryName:{},uploadId:{},layerDigests:{type:"list",member:{}}}},output:{type:"structure",members:{registryId:{},repositoryName:{},uploadId:{},layerDigest:{}}}},CreateRepository:{input:{type:"structure",required:["repositoryName"],members:{repositoryName:{}}},output:{type:"structure",members:{repository:{shape:"S11"}}}},DeleteRepository:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{},force:{type:"boolean"}}},output:{type:"structure",members:{repository:{shape:"S11"}}}},DeleteRepositoryPolicy:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{}}},output:{type:"structure",members:{registryId:{},repositoryName:{},policyText:{}}}},DescribeImages:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{},imageIds:{shape:"Sh"},nextToken:{},maxResults:{type:"integer"},filter:{type:"structure",members:{tagStatus:{}}}}},output:{type:"structure",members:{imageDetails:{type:"list",member:{type:"structure",members:{registryId:{},repositoryName:{},imageDigest:{},imageTags:{type:"list",member:{}},imageSizeInBytes:{type:"long"},imagePushedAt:{type:"timestamp"}}}},nextToken:{}}}},DescribeRepositories:{input:{type:"structure",members:{registryId:{},repositoryNames:{type:"list",member:{}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{repositories:{type:"list",member:{shape:"S11"}},nextToken:{}}}},GetAuthorizationToken:{input:{type:"structure",members:{registryIds:{type:"list",member:{}}}},output:{type:"structure",members:{authorizationData:{type:"list",member:{type:"structure",members:{authorizationToken:{},expiresAt:{type:"timestamp"},proxyEndpoint:{}}}}}}},GetDownloadUrlForLayer:{input:{type:"structure",required:["repositoryName","layerDigest"],members:{registryId:{},repositoryName:{},layerDigest:{}}},output:{type:"structure",members:{downloadUrl:{},layerDigest:{}}}},GetRepositoryPolicy:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{}}},output:{type:"structure",members:{registryId:{},repositoryName:{},policyText:{}}}},InitiateLayerUpload:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{}}},output:{type:"structure",members:{uploadId:{},partSize:{type:"long"}}}},ListImages:{input:{type:"structure",required:["repositoryName"],members:{registryId:{},repositoryName:{},nextToken:{},maxResults:{type:"integer"},filter:{type:"structure",members:{tagStatus:{}}}}},output:{type:"structure",members:{imageIds:{shape:"Sh"},nextToken:{}}}},PutImage:{input:{type:"structure",required:["repositoryName","imageManifest"],members:{registryId:{},repositoryName:{},imageManifest:{}}},output:{type:"structure",members:{image:{shape:"St"}}}},SetRepositoryPolicy:{input:{type:"structure",required:["repositoryName","policyText"],members:{registryId:{},repositoryName:{},policyText:{},force:{type:"boolean"}}},output:{type:"structure",members:{registryId:{},repositoryName:{},policyText:{}}}},UploadLayerPart:{input:{type:"structure",required:["repositoryName","uploadId","partFirstByte","partLastByte","layerPartBlob"],members:{registryId:{},repositoryName:{},uploadId:{},partFirstByte:{type:"long"},partLastByte:{type:"long"},layerPartBlob:{type:"blob"}}},output:{type:"structure",members:{registryId:{},repositoryName:{},uploadId:{},lastByteReceived:{type:"long"}}}}},shapes:{Sh:{type:"list",member:{shape:"Si"}},Si:{type:"structure",members:{imageDigest:{},imageTag:{}}},Sm:{type:"list",member:{type:"structure",members:{imageId:{shape:"Si"},failureCode:{},failureReason:{}}}},St:{type:"structure",members:{registryId:{},repositoryName:{},imageId:{shape:"Si"},imageManifest:{}}},S11:{type:"structure",members:{repositoryArn:{},registryId:{},repositoryName:{},repositoryUri:{},createdAt:{type:"timestamp"}}}}}},{}],43:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-11-13",endpointPrefix:"ecs",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon ECS",serviceFullName:"Amazon EC2 Container Service",signatureVersion:"v4",targetPrefix:"AmazonEC2ContainerServiceV20141113"},operations:{ -CreateCluster:{input:{type:"structure",members:{clusterName:{}}},output:{type:"structure",members:{cluster:{shape:"S4"}}}},CreateService:{input:{type:"structure",required:["serviceName","taskDefinition","desiredCount"],members:{cluster:{},serviceName:{},taskDefinition:{},loadBalancers:{shape:"S7"},desiredCount:{type:"integer"},clientToken:{},role:{},deploymentConfiguration:{shape:"Sa"}}},output:{type:"structure",members:{service:{shape:"Sc"}}}},DeleteCluster:{input:{type:"structure",required:["cluster"],members:{cluster:{}}},output:{type:"structure",members:{cluster:{shape:"S4"}}}},DeleteService:{input:{type:"structure",required:["service"],members:{cluster:{},service:{}}},output:{type:"structure",members:{service:{shape:"Sc"}}}},DeregisterContainerInstance:{input:{type:"structure",required:["containerInstance"],members:{cluster:{},containerInstance:{},force:{type:"boolean"}}},output:{type:"structure",members:{containerInstance:{shape:"Sp"}}}},DeregisterTaskDefinition:{input:{type:"structure",required:["taskDefinition"],members:{taskDefinition:{}}},output:{type:"structure",members:{taskDefinition:{shape:"S12"}}}},DescribeClusters:{input:{type:"structure",members:{clusters:{shape:"Sv"}}},output:{type:"structure",members:{clusters:{type:"list",member:{shape:"S4"}},failures:{shape:"S1w"}}}},DescribeContainerInstances:{input:{type:"structure",required:["containerInstances"],members:{cluster:{},containerInstances:{shape:"Sv"}}},output:{type:"structure",members:{containerInstances:{type:"list",member:{shape:"Sp"}},failures:{shape:"S1w"}}}},DescribeServices:{input:{type:"structure",required:["services"],members:{cluster:{},services:{shape:"Sv"}}},output:{type:"structure",members:{services:{type:"list",member:{shape:"Sc"}},failures:{shape:"S1w"}}}},DescribeTaskDefinition:{input:{type:"structure",required:["taskDefinition"],members:{taskDefinition:{}}},output:{type:"structure",members:{taskDefinition:{shape:"S12"}}}},DescribeTasks:{input:{type:"structure",required:["tasks"],members:{cluster:{},tasks:{shape:"Sv"}}},output:{type:"structure",members:{tasks:{shape:"S28"},failures:{shape:"S1w"}}}},DiscoverPollEndpoint:{input:{type:"structure",members:{containerInstance:{},cluster:{}}},output:{type:"structure",members:{endpoint:{},telemetryEndpoint:{}}}},ListClusters:{input:{type:"structure",members:{nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{clusterArns:{shape:"Sv"},nextToken:{}}}},ListContainerInstances:{input:{type:"structure",members:{cluster:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{containerInstanceArns:{shape:"Sv"},nextToken:{}}}},ListServices:{input:{type:"structure",members:{cluster:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{serviceArns:{shape:"Sv"},nextToken:{}}}},ListTaskDefinitionFamilies:{input:{type:"structure",members:{familyPrefix:{},status:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{families:{shape:"Sv"},nextToken:{}}}},ListTaskDefinitions:{input:{type:"structure",members:{familyPrefix:{},status:{},sort:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",members:{taskDefinitionArns:{shape:"Sv"},nextToken:{}}}},ListTasks:{input:{type:"structure",members:{cluster:{},containerInstance:{},family:{},nextToken:{},maxResults:{type:"integer"},startedBy:{},serviceName:{},desiredStatus:{}}},output:{type:"structure",members:{taskArns:{shape:"Sv"},nextToken:{}}}},RegisterContainerInstance:{input:{type:"structure",members:{cluster:{},instanceIdentityDocument:{},instanceIdentityDocumentSignature:{},totalResources:{shape:"Sr"},versionInfo:{shape:"Sq"},containerInstanceArn:{},attributes:{shape:"Sy"}}},output:{type:"structure",members:{containerInstance:{shape:"Sp"}}}},RegisterTaskDefinition:{input:{type:"structure",required:["family","containerDefinitions"],members:{family:{},taskRoleArn:{},networkMode:{},containerDefinitions:{shape:"S13"},volumes:{shape:"S1o"}}},output:{type:"structure",members:{taskDefinition:{shape:"S12"}}}},RunTask:{input:{type:"structure",required:["taskDefinition"],members:{cluster:{},taskDefinition:{},overrides:{shape:"S2a"},count:{type:"integer"},startedBy:{}}},output:{type:"structure",members:{tasks:{shape:"S28"},failures:{shape:"S1w"}}}},StartTask:{input:{type:"structure",required:["taskDefinition","containerInstances"],members:{cluster:{},taskDefinition:{},overrides:{shape:"S2a"},containerInstances:{shape:"Sv"},startedBy:{}}},output:{type:"structure",members:{tasks:{shape:"S28"},failures:{shape:"S1w"}}}},StopTask:{input:{type:"structure",required:["task"],members:{cluster:{},task:{},reason:{}}},output:{type:"structure",members:{task:{shape:"S29"}}}},SubmitContainerStateChange:{input:{type:"structure",members:{cluster:{},task:{},containerName:{},status:{},exitCode:{type:"integer"},reason:{},networkBindings:{shape:"S2f"}}},output:{type:"structure",members:{acknowledgment:{}}}},SubmitTaskStateChange:{input:{type:"structure",members:{cluster:{},task:{},status:{},reason:{}}},output:{type:"structure",members:{acknowledgment:{}}}},UpdateContainerAgent:{input:{type:"structure",required:["containerInstance"],members:{cluster:{},containerInstance:{}}},output:{type:"structure",members:{containerInstance:{shape:"Sp"}}}},UpdateService:{input:{type:"structure",required:["service"],members:{cluster:{},service:{},desiredCount:{type:"integer"},taskDefinition:{},deploymentConfiguration:{shape:"Sa"}}},output:{type:"structure",members:{service:{shape:"Sc"}}}}},shapes:{S4:{type:"structure",members:{clusterArn:{},clusterName:{},status:{},registeredContainerInstancesCount:{type:"integer"},runningTasksCount:{type:"integer"},pendingTasksCount:{type:"integer"},activeServicesCount:{type:"integer"}}},S7:{type:"list",member:{type:"structure",members:{targetGroupArn:{},loadBalancerName:{},containerName:{},containerPort:{type:"integer"}}}},Sa:{type:"structure",members:{maximumPercent:{type:"integer"},minimumHealthyPercent:{type:"integer"}}},Sc:{type:"structure",members:{serviceArn:{},serviceName:{},clusterArn:{},loadBalancers:{shape:"S7"},status:{},desiredCount:{type:"integer"},runningCount:{type:"integer"},pendingCount:{type:"integer"},taskDefinition:{},deploymentConfiguration:{shape:"Sa"},deployments:{type:"list",member:{type:"structure",members:{id:{},status:{},taskDefinition:{},desiredCount:{type:"integer"},pendingCount:{type:"integer"},runningCount:{type:"integer"},createdAt:{type:"timestamp"},updatedAt:{type:"timestamp"}}}},roleArn:{},events:{type:"list",member:{type:"structure",members:{id:{},createdAt:{type:"timestamp"},message:{}}}},createdAt:{type:"timestamp"}}},Sp:{type:"structure",members:{containerInstanceArn:{},ec2InstanceId:{},versionInfo:{shape:"Sq"},remainingResources:{shape:"Sr"},registeredResources:{shape:"Sr"},status:{},agentConnected:{type:"boolean"},runningTasksCount:{type:"integer"},pendingTasksCount:{type:"integer"},agentUpdateStatus:{},attributes:{shape:"Sy"}}},Sq:{type:"structure",members:{agentVersion:{},agentHash:{},dockerVersion:{}}},Sr:{type:"list",member:{type:"structure",members:{name:{},type:{},doubleValue:{type:"double"},longValue:{type:"long"},integerValue:{type:"integer"},stringSetValue:{shape:"Sv"}}}},Sv:{type:"list",member:{}},Sy:{type:"list",member:{shape:"Sz"}},Sz:{type:"structure",required:["name"],members:{name:{},value:{}}},S12:{type:"structure",members:{taskDefinitionArn:{},containerDefinitions:{shape:"S13"},family:{},taskRoleArn:{},networkMode:{},revision:{type:"integer"},volumes:{shape:"S1o"},status:{},requiresAttributes:{type:"list",member:{shape:"Sz"}}}},S13:{type:"list",member:{type:"structure",members:{name:{},image:{},cpu:{type:"integer"},memory:{type:"integer"},memoryReservation:{type:"integer"},links:{shape:"Sv"},portMappings:{type:"list",member:{type:"structure",members:{containerPort:{type:"integer"},hostPort:{type:"integer"},protocol:{}}}},essential:{type:"boolean"},entryPoint:{shape:"Sv"},command:{shape:"Sv"},environment:{shape:"S18"},mountPoints:{type:"list",member:{type:"structure",members:{sourceVolume:{},containerPath:{},readOnly:{type:"boolean"}}}},volumesFrom:{type:"list",member:{type:"structure",members:{sourceContainer:{},readOnly:{type:"boolean"}}}},hostname:{},user:{},workingDirectory:{},disableNetworking:{type:"boolean"},privileged:{type:"boolean"},readonlyRootFilesystem:{type:"boolean"},dnsServers:{shape:"Sv"},dnsSearchDomains:{shape:"Sv"},extraHosts:{type:"list",member:{type:"structure",required:["hostname","ipAddress"],members:{hostname:{},ipAddress:{}}}},dockerSecurityOptions:{shape:"Sv"},dockerLabels:{type:"map",key:{},value:{}},ulimits:{type:"list",member:{type:"structure",required:["name","softLimit","hardLimit"],members:{name:{},softLimit:{type:"integer"},hardLimit:{type:"integer"}}}},logConfiguration:{type:"structure",required:["logDriver"],members:{logDriver:{},options:{type:"map",key:{},value:{}}}}}}},S18:{type:"list",member:{type:"structure",members:{name:{},value:{}}}},S1o:{type:"list",member:{type:"structure",members:{name:{},host:{type:"structure",members:{sourcePath:{}}}}}},S1w:{type:"list",member:{type:"structure",members:{arn:{},reason:{}}}},S28:{type:"list",member:{shape:"S29"}},S29:{type:"structure",members:{taskArn:{},clusterArn:{},taskDefinitionArn:{},containerInstanceArn:{},overrides:{shape:"S2a"},lastStatus:{},desiredStatus:{},containers:{type:"list",member:{type:"structure",members:{containerArn:{},taskArn:{},name:{},lastStatus:{},exitCode:{type:"integer"},reason:{},networkBindings:{shape:"S2f"}}}},startedBy:{},stoppedReason:{},createdAt:{type:"timestamp"},startedAt:{type:"timestamp"},stoppedAt:{type:"timestamp"}}},S2a:{type:"structure",members:{containerOverrides:{type:"list",member:{type:"structure",members:{name:{},command:{shape:"Sv"},environment:{shape:"S18"}}}},taskRoleArn:{}}},S2f:{type:"list",member:{type:"structure",members:{bindIP:{},containerPort:{type:"integer"},hostPort:{type:"integer"},protocol:{}}}}}}},{}],44:[function(e,t,r){t.exports={pagination:{ListClusters:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"clusterArns"},ListContainerInstances:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"containerInstanceArns"},ListTaskDefinitions:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"taskDefinitionArns"},ListTaskDefinitionFamilies:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"families"},ListTasks:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"taskArns"},ListServices:{input_token:"nextToken",output_token:"nextToken",limit_key:"maxResults",result_key:"serviceArns"}}}},{}],45:[function(e,t,r){t.exports={version:2,waiters:{TasksRunning:{delay:6,operation:"DescribeTasks",maxAttempts:100,acceptors:[{expected:"STOPPED",matcher:"pathAny",state:"failure",argument:"tasks[].lastStatus"},{expected:"MISSING",matcher:"pathAny",state:"failure",argument:"failures[].reason"},{expected:"RUNNING",matcher:"pathAll",state:"success",argument:"tasks[].lastStatus"}]},TasksStopped:{delay:6,operation:"DescribeTasks",maxAttempts:100,acceptors:[{expected:"STOPPED",matcher:"pathAll",state:"success",argument:"tasks[].lastStatus"}]},ServicesStable:{delay:15,operation:"DescribeServices",maxAttempts:40,acceptors:[{expected:"MISSING",matcher:"pathAny",state:"failure",argument:"failures[].reason"},{expected:"DRAINING",matcher:"pathAny",state:"failure",argument:"services[].status"},{expected:"INACTIVE",matcher:"pathAny",state:"failure",argument:"services[].status"},{expected:!0,matcher:"path",state:"success",argument:"length(services[?!(length(deployments) == `1` && runningCount == desiredCount)]) == `0`"}]},ServicesInactive:{delay:15,operation:"DescribeServices",maxAttempts:40,acceptors:[{expected:"MISSING",matcher:"pathAny",state:"failure",argument:"failures[].reason"},{expected:"INACTIVE",matcher:"pathAny",state:"success",argument:"services[].status"}]}}}},{}],46:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-02-02",endpointPrefix:"elasticache",protocol:"query",serviceFullName:"Amazon ElastiCache",signatureVersion:"v4",xmlNamespace:"http://elasticache.amazonaws.com/doc/2015-02-02/"},operations:{AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S3"}}},output:{shape:"S5",resultWrapper:"AddTagsToResourceResult"}},AuthorizeCacheSecurityGroupIngress:{input:{type:"structure",required:["CacheSecurityGroupName","EC2SecurityGroupName","EC2SecurityGroupOwnerId"],members:{CacheSecurityGroupName:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeCacheSecurityGroupIngressResult",type:"structure",members:{CacheSecurityGroup:{shape:"S8"}}}},CopySnapshot:{input:{type:"structure",required:["SourceSnapshotName","TargetSnapshotName"],members:{SourceSnapshotName:{},TargetSnapshotName:{},TargetBucket:{}}},output:{resultWrapper:"CopySnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CreateCacheCluster:{input:{type:"structure",required:["CacheClusterId"],members:{CacheClusterId:{},ReplicationGroupId:{},AZMode:{},PreferredAvailabilityZone:{},PreferredAvailabilityZones:{shape:"So"},NumCacheNodes:{type:"integer"},CacheNodeType:{},Engine:{},EngineVersion:{},CacheParameterGroupName:{},CacheSubnetGroupName:{},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},Tags:{shape:"S3"},SnapshotArns:{shape:"Sr"},SnapshotName:{},PreferredMaintenanceWindow:{},Port:{type:"integer"},NotificationTopicArn:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}}},output:{resultWrapper:"CreateCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},CreateCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName","CacheParameterGroupFamily","Description"],members:{CacheParameterGroupName:{},CacheParameterGroupFamily:{},Description:{}}},output:{resultWrapper:"CreateCacheParameterGroupResult",type:"structure",members:{CacheParameterGroup:{shape:"S19"}}}},CreateCacheSecurityGroup:{input:{type:"structure",required:["CacheSecurityGroupName","Description"],members:{CacheSecurityGroupName:{},Description:{}}},output:{resultWrapper:"CreateCacheSecurityGroupResult",type:"structure",members:{CacheSecurityGroup:{shape:"S8"}}}},CreateCacheSubnetGroup:{input:{type:"structure",required:["CacheSubnetGroupName","CacheSubnetGroupDescription","SubnetIds"],members:{CacheSubnetGroupName:{},CacheSubnetGroupDescription:{},SubnetIds:{shape:"S1d"}}},output:{resultWrapper:"CreateCacheSubnetGroupResult",type:"structure",members:{CacheSubnetGroup:{shape:"S1f"}}}},CreateReplicationGroup:{input:{type:"structure",required:["ReplicationGroupId","ReplicationGroupDescription"],members:{ReplicationGroupId:{},ReplicationGroupDescription:{},PrimaryClusterId:{},AutomaticFailoverEnabled:{type:"boolean"},NumCacheClusters:{type:"integer"},PreferredCacheClusterAZs:{shape:"Sl"},NumNodeGroups:{type:"integer"},ReplicasPerNodeGroup:{type:"integer"},NodeGroupConfiguration:{type:"list",member:{shape:"Sk",locationName:"NodeGroupConfiguration"}},CacheNodeType:{},Engine:{},EngineVersion:{},CacheParameterGroupName:{},CacheSubnetGroupName:{},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},Tags:{shape:"S3"},SnapshotArns:{shape:"Sr"},SnapshotName:{},PreferredMaintenanceWindow:{},Port:{type:"integer"},NotificationTopicArn:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}}},output:{resultWrapper:"CreateReplicationGroupResult",type:"structure",members:{ReplicationGroup:{shape:"S1m"}}}},CreateSnapshot:{input:{type:"structure",required:["SnapshotName"],members:{ReplicationGroupId:{},CacheClusterId:{},SnapshotName:{}}},output:{resultWrapper:"CreateSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},DeleteCacheCluster:{input:{type:"structure",required:["CacheClusterId"],members:{CacheClusterId:{},FinalSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},DeleteCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName"],members:{CacheParameterGroupName:{}}}},DeleteCacheSecurityGroup:{input:{type:"structure",required:["CacheSecurityGroupName"],members:{CacheSecurityGroupName:{}}}},DeleteCacheSubnetGroup:{input:{type:"structure",required:["CacheSubnetGroupName"],members:{CacheSubnetGroupName:{}}}},DeleteReplicationGroup:{input:{type:"structure",required:["ReplicationGroupId"],members:{ReplicationGroupId:{},RetainPrimaryCluster:{type:"boolean"},FinalSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteReplicationGroupResult",type:"structure",members:{ReplicationGroup:{shape:"S1m"}}}},DeleteSnapshot:{input:{type:"structure",required:["SnapshotName"],members:{SnapshotName:{}}},output:{resultWrapper:"DeleteSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},DescribeCacheClusters:{input:{type:"structure",members:{CacheClusterId:{},MaxRecords:{type:"integer"},Marker:{},ShowCacheNodeInfo:{type:"boolean"}}},output:{resultWrapper:"DescribeCacheClustersResult",type:"structure",members:{Marker:{},CacheClusters:{type:"list",member:{shape:"Su",locationName:"CacheCluster"}}}}},DescribeCacheEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},CacheParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"}}},output:{resultWrapper:"DescribeCacheEngineVersionsResult",type:"structure",members:{Marker:{},CacheEngineVersions:{type:"list",member:{locationName:"CacheEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},CacheParameterGroupFamily:{},CacheEngineDescription:{},CacheEngineVersionDescription:{}}}}}}},DescribeCacheParameterGroups:{input:{type:"structure",members:{CacheParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheParameterGroupsResult",type:"structure",members:{Marker:{},CacheParameterGroups:{type:"list",member:{shape:"S19",locationName:"CacheParameterGroup"}}}}},DescribeCacheParameters:{input:{type:"structure",required:["CacheParameterGroupName"],members:{CacheParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheParametersResult",type:"structure",members:{Marker:{},Parameters:{shape:"S2h"},CacheNodeTypeSpecificParameters:{shape:"S2k"}}}},DescribeCacheSecurityGroups:{input:{type:"structure",members:{CacheSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheSecurityGroupsResult",type:"structure",members:{Marker:{},CacheSecurityGroups:{type:"list",member:{shape:"S8",locationName:"CacheSecurityGroup"}}}}},DescribeCacheSubnetGroups:{input:{type:"structure",members:{CacheSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCacheSubnetGroupsResult",type:"structure",members:{Marker:{},CacheSubnetGroups:{type:"list",member:{shape:"S1f",locationName:"CacheSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["CacheParameterGroupFamily"],members:{CacheParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{CacheParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2h"},CacheNodeTypeSpecificParameters:{shape:"S2k"}},wrapper:!0}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},Date:{type:"timestamp"}}}}}}},DescribeReplicationGroups:{input:{type:"structure",members:{ReplicationGroupId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReplicationGroupsResult",type:"structure",members:{Marker:{},ReplicationGroups:{type:"list",member:{shape:"S1m",locationName:"ReplicationGroup"}}}}},DescribeReservedCacheNodes:{input:{type:"structure",members:{ReservedCacheNodeId:{},ReservedCacheNodesOfferingId:{},CacheNodeType:{},Duration:{},ProductDescription:{},OfferingType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedCacheNodesResult",type:"structure",members:{Marker:{},ReservedCacheNodes:{type:"list",member:{shape:"S38",locationName:"ReservedCacheNode"}}}}},DescribeReservedCacheNodesOfferings:{input:{type:"structure",members:{ReservedCacheNodesOfferingId:{},CacheNodeType:{},Duration:{},ProductDescription:{},OfferingType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedCacheNodesOfferingsResult",type:"structure",members:{Marker:{},ReservedCacheNodesOfferings:{type:"list",member:{locationName:"ReservedCacheNodesOffering",type:"structure",members:{ReservedCacheNodesOfferingId:{},CacheNodeType:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},ProductDescription:{},OfferingType:{},RecurringCharges:{shape:"S3a"}},wrapper:!0}}}}},DescribeSnapshots:{input:{type:"structure",members:{ReplicationGroupId:{},CacheClusterId:{},SnapshotName:{},SnapshotSource:{},Marker:{},MaxRecords:{type:"integer"},ShowNodeGroupConfig:{type:"boolean"}}},output:{resultWrapper:"DescribeSnapshotsResult",type:"structure",members:{Marker:{},Snapshots:{type:"list",member:{shape:"Sd",locationName:"Snapshot"}}}}},ListAllowedNodeTypeModifications:{input:{type:"structure",members:{CacheClusterId:{},ReplicationGroupId:{}}},output:{resultWrapper:"ListAllowedNodeTypeModificationsResult",type:"structure",members:{ScaleUpModifications:{type:"list",member:{}}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{}}},output:{shape:"S5",resultWrapper:"ListTagsForResourceResult"}},ModifyCacheCluster:{input:{type:"structure",required:["CacheClusterId"],members:{CacheClusterId:{},NumCacheNodes:{type:"integer"},CacheNodeIdsToRemove:{shape:"Sy"},AZMode:{},NewAvailabilityZones:{shape:"So"},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},PreferredMaintenanceWindow:{},NotificationTopicArn:{},CacheParameterGroupName:{},NotificationTopicStatus:{},ApplyImmediately:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{},CacheNodeType:{}}},output:{resultWrapper:"ModifyCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},ModifyCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName","ParameterNameValues"],members:{CacheParameterGroupName:{},ParameterNameValues:{shape:"S3q"}}},output:{shape:"S3s",resultWrapper:"ModifyCacheParameterGroupResult"}},ModifyCacheSubnetGroup:{input:{type:"structure",required:["CacheSubnetGroupName"],members:{CacheSubnetGroupName:{},CacheSubnetGroupDescription:{},SubnetIds:{shape:"S1d"}}},output:{resultWrapper:"ModifyCacheSubnetGroupResult",type:"structure",members:{CacheSubnetGroup:{shape:"S1f"}}}},ModifyReplicationGroup:{input:{type:"structure",required:["ReplicationGroupId"],members:{ReplicationGroupId:{},ReplicationGroupDescription:{},PrimaryClusterId:{},SnapshottingClusterId:{},AutomaticFailoverEnabled:{type:"boolean"},CacheSecurityGroupNames:{shape:"Sp"},SecurityGroupIds:{shape:"Sq"},PreferredMaintenanceWindow:{},NotificationTopicArn:{},CacheParameterGroupName:{},NotificationTopicStatus:{},ApplyImmediately:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{},CacheNodeType:{}}},output:{resultWrapper:"ModifyReplicationGroupResult",type:"structure",members:{ReplicationGroup:{shape:"S1m"}}}},PurchaseReservedCacheNodesOffering:{input:{type:"structure",required:["ReservedCacheNodesOfferingId"],members:{ReservedCacheNodesOfferingId:{},ReservedCacheNodeId:{},CacheNodeCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedCacheNodesOfferingResult",type:"structure",members:{ReservedCacheNode:{shape:"S38"}}}},RebootCacheCluster:{input:{type:"structure",required:["CacheClusterId","CacheNodeIdsToReboot"],members:{CacheClusterId:{},CacheNodeIdsToReboot:{shape:"Sy"}}},output:{resultWrapper:"RebootCacheClusterResult",type:"structure",members:{CacheCluster:{shape:"Su"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}},output:{shape:"S5",resultWrapper:"RemoveTagsFromResourceResult"}},ResetCacheParameterGroup:{input:{type:"structure",required:["CacheParameterGroupName"],members:{CacheParameterGroupName:{},ResetAllParameters:{type:"boolean"},ParameterNameValues:{shape:"S3q"}}},output:{shape:"S3s",resultWrapper:"ResetCacheParameterGroupResult"}},RevokeCacheSecurityGroupIngress:{input:{type:"structure",required:["CacheSecurityGroupName","EC2SecurityGroupName","EC2SecurityGroupOwnerId"],members:{CacheSecurityGroupName:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeCacheSecurityGroupIngressResult",type:"structure",members:{CacheSecurityGroup:{shape:"S8"}}}}},shapes:{S3:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},S5:{type:"structure",members:{TagList:{shape:"S3"}}},S8:{type:"structure",members:{OwnerId:{},CacheSecurityGroupName:{},Description:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}}}},wrapper:!0},Sd:{type:"structure",members:{SnapshotName:{},ReplicationGroupId:{},ReplicationGroupDescription:{},CacheClusterId:{},SnapshotStatus:{},SnapshotSource:{},CacheNodeType:{},Engine:{},EngineVersion:{},NumCacheNodes:{type:"integer"},PreferredAvailabilityZone:{},CacheClusterCreateTime:{type:"timestamp"},PreferredMaintenanceWindow:{},TopicArn:{},Port:{type:"integer"},CacheParameterGroupName:{},CacheSubnetGroupName:{},VpcId:{},AutoMinorVersionUpgrade:{type:"boolean"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{},NumNodeGroups:{type:"integer"},AutomaticFailover:{},NodeSnapshots:{type:"list",member:{locationName:"NodeSnapshot",type:"structure",members:{CacheClusterId:{},NodeGroupId:{},CacheNodeId:{},NodeGroupConfiguration:{shape:"Sk"},CacheSize:{},CacheNodeCreateTime:{type:"timestamp"},SnapshotCreateTime:{type:"timestamp"}},wrapper:!0}}},wrapper:!0},Sk:{type:"structure",members:{Slots:{},ReplicaCount:{type:"integer"},PrimaryAvailabilityZone:{},ReplicaAvailabilityZones:{shape:"Sl"}}},Sl:{type:"list",member:{locationName:"AvailabilityZone"}},So:{type:"list",member:{locationName:"PreferredAvailabilityZone"}},Sp:{type:"list",member:{locationName:"CacheSecurityGroupName"}},Sq:{type:"list",member:{locationName:"SecurityGroupId"}},Sr:{type:"list",member:{locationName:"SnapshotArn"}},Su:{type:"structure",members:{CacheClusterId:{},ConfigurationEndpoint:{shape:"Sv"},ClientDownloadLandingPage:{},CacheNodeType:{},Engine:{},EngineVersion:{},CacheClusterStatus:{},NumCacheNodes:{type:"integer"},PreferredAvailabilityZone:{},CacheClusterCreateTime:{type:"timestamp"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{NumCacheNodes:{type:"integer"},CacheNodeIdsToRemove:{shape:"Sy"},EngineVersion:{},CacheNodeType:{}}},NotificationConfiguration:{type:"structure",members:{TopicArn:{},TopicStatus:{}}},CacheSecurityGroups:{type:"list",member:{locationName:"CacheSecurityGroup",type:"structure",members:{CacheSecurityGroupName:{},Status:{}}}},CacheParameterGroup:{type:"structure",members:{CacheParameterGroupName:{},ParameterApplyStatus:{},CacheNodeIdsToReboot:{shape:"Sy"}}},CacheSubnetGroupName:{},CacheNodes:{type:"list",member:{locationName:"CacheNode",type:"structure",members:{CacheNodeId:{},CacheNodeStatus:{},CacheNodeCreateTime:{type:"timestamp"},Endpoint:{shape:"Sv"},ParameterGroupStatus:{},SourceCacheNodeId:{},CustomerAvailabilityZone:{}}}},AutoMinorVersionUpgrade:{type:"boolean"},SecurityGroups:{type:"list",member:{type:"structure",members:{SecurityGroupId:{},Status:{}}}},ReplicationGroupId:{},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}},wrapper:!0},Sv:{type:"structure",members:{Address:{},Port:{type:"integer"}}},Sy:{type:"list",member:{locationName:"CacheNodeId"}},S19:{type:"structure",members:{CacheParameterGroupName:{},CacheParameterGroupFamily:{},Description:{}},wrapper:!0},S1d:{type:"list",member:{locationName:"SubnetIdentifier"}},S1f:{type:"structure",members:{CacheSubnetGroupName:{},CacheSubnetGroupDescription:{},VpcId:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{type:"structure",members:{Name:{}},wrapper:!0}}}}},wrapper:!0},S1m:{type:"structure",members:{ReplicationGroupId:{},Description:{},Status:{},PendingModifiedValues:{type:"structure",members:{PrimaryClusterId:{},AutomaticFailoverStatus:{}}},MemberClusters:{type:"list",member:{locationName:"ClusterId"}},NodeGroups:{type:"list",member:{locationName:"NodeGroup",type:"structure",members:{NodeGroupId:{},Status:{},PrimaryEndpoint:{shape:"Sv"},Slots:{},NodeGroupMembers:{type:"list",member:{locationName:"NodeGroupMember",type:"structure",members:{CacheClusterId:{},CacheNodeId:{},ReadEndpoint:{shape:"Sv"},PreferredAvailabilityZone:{},CurrentRole:{}}}}}}},SnapshottingClusterId:{},AutomaticFailover:{},ConfigurationEndpoint:{shape:"Sv"},SnapshotRetentionLimit:{type:"integer"},SnapshotWindow:{}},wrapper:!0},S2h:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ChangeType:{}}}},S2k:{type:"list",member:{locationName:"CacheNodeTypeSpecificParameter",type:"structure",members:{ParameterName:{},Description:{},Source:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},CacheNodeTypeSpecificValues:{type:"list",member:{locationName:"CacheNodeTypeSpecificValue",type:"structure",members:{CacheNodeType:{},Value:{}}}},ChangeType:{}}}},S38:{type:"structure",members:{ReservedCacheNodeId:{},ReservedCacheNodesOfferingId:{},CacheNodeType:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CacheNodeCount:{type:"integer"},ProductDescription:{},OfferingType:{},State:{},RecurringCharges:{shape:"S3a"}},wrapper:!0},S3a:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S3q:{type:"list",member:{locationName:"ParameterNameValue",type:"structure",members:{ParameterName:{},ParameterValue:{}}}},S3s:{type:"structure",members:{CacheParameterGroupName:{}}}}}},{}],47:[function(e,t,r){t.exports={pagination:{DescribeCacheClusters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheClusters"},DescribeCacheEngineVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheEngineVersions"},DescribeCacheParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheParameterGroups"},DescribeCacheParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeCacheSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheSecurityGroups"},DescribeCacheSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"CacheSubnetGroups"},DescribeEngineDefaultParameters:{input_token:"Marker",output_token:"EngineDefaults.Marker",limit_key:"MaxRecords",result_key:"EngineDefaults.Parameters"},DescribeEvents:{input_token:"Marker",output_token:"Marker", -limit_key:"MaxRecords",result_key:"Events"},DescribeReservedCacheNodes:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedCacheNodes"},DescribeReservedCacheNodesOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedCacheNodesOfferings"},DescribeReplicationGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReplicationGroups"},DescribeSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Snapshots"}}}},{}],48:[function(e,t,r){t.exports={version:2,waiters:{CacheClusterAvailable:{acceptors:[{argument:"CacheClusters[].CacheClusterStatus",expected:"available",matcher:"pathAll",state:"success"},{argument:"CacheClusters[].CacheClusterStatus",expected:"deleted",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"deleting",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"incompatible-network",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"restore-failed",matcher:"pathAny",state:"failure"}],delay:15,description:"Wait until ElastiCache cluster is available.",maxAttempts:40,operation:"DescribeCacheClusters"},CacheClusterDeleted:{acceptors:[{argument:"CacheClusters[].CacheClusterStatus",expected:"deleted",matcher:"pathAll",state:"success"},{expected:"CacheClusterNotFound",matcher:"error",state:"success"},{argument:"CacheClusters[].CacheClusterStatus",expected:"available",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"creating",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"incompatible-network",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"modifying",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"restore-failed",matcher:"pathAny",state:"failure"},{argument:"CacheClusters[].CacheClusterStatus",expected:"snapshotting",matcher:"pathAny",state:"failure"}],delay:15,description:"Wait until ElastiCache cluster is deleted.",maxAttempts:40,operation:"DescribeCacheClusters"},ReplicationGroupAvailable:{acceptors:[{argument:"ReplicationGroups[].Status",expected:"available",matcher:"pathAll",state:"success"},{argument:"ReplicationGroups[].Status",expected:"deleted",matcher:"pathAny",state:"failure"}],delay:15,description:"Wait until ElastiCache replication group is available.",maxAttempts:40,operation:"DescribeReplicationGroups"},ReplicationGroupDeleted:{acceptors:[{argument:"ReplicationGroups[].Status",expected:"deleted",matcher:"pathAll",state:"success"},{argument:"ReplicationGroups[].Status",expected:"available",matcher:"pathAny",state:"failure"},{expected:"ReplicationGroupNotFoundFault",matcher:"error",state:"success"}],delay:15,description:"Wait until ElastiCache replication group is deleted.",maxAttempts:40,operation:"DescribeReplicationGroups"}}}},{}],49:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-12-01",endpointPrefix:"elasticbeanstalk",protocol:"query",serviceAbbreviation:"Elastic Beanstalk",serviceFullName:"AWS Elastic Beanstalk",signatureVersion:"v4",xmlNamespace:"http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/"},operations:{AbortEnvironmentUpdate:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}}},ApplyEnvironmentManagedAction:{input:{type:"structure",required:["ActionId"],members:{EnvironmentName:{},EnvironmentId:{},ActionId:{}}},output:{resultWrapper:"ApplyEnvironmentManagedActionResult",type:"structure",members:{ActionId:{},ActionDescription:{},ActionType:{},Status:{}}}},CheckDNSAvailability:{input:{type:"structure",required:["CNAMEPrefix"],members:{CNAMEPrefix:{}}},output:{resultWrapper:"CheckDNSAvailabilityResult",type:"structure",members:{Available:{type:"boolean"},FullyQualifiedCNAME:{}}}},ComposeEnvironments:{input:{type:"structure",members:{ApplicationName:{},GroupName:{},VersionLabels:{type:"list",member:{}}}},output:{shape:"Si",resultWrapper:"ComposeEnvironmentsResult"}},CreateApplication:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},Description:{}}},output:{shape:"S14",resultWrapper:"CreateApplicationResult"}},CreateApplicationVersion:{input:{type:"structure",required:["ApplicationName","VersionLabel"],members:{ApplicationName:{},VersionLabel:{},Description:{},SourceBundle:{shape:"S19"},AutoCreateApplication:{type:"boolean"},Process:{type:"boolean"}}},output:{shape:"S1e",resultWrapper:"CreateApplicationVersionResult"}},CreateConfigurationTemplate:{input:{type:"structure",required:["ApplicationName","TemplateName"],members:{ApplicationName:{},TemplateName:{},SolutionStackName:{},SourceConfiguration:{type:"structure",members:{ApplicationName:{},TemplateName:{}}},EnvironmentId:{},Description:{},OptionSettings:{shape:"S1j"}}},output:{shape:"S1p",resultWrapper:"CreateConfigurationTemplateResult"}},CreateEnvironment:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},EnvironmentName:{},GroupName:{},Description:{},CNAMEPrefix:{},Tier:{shape:"S10"},Tags:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},VersionLabel:{},TemplateName:{},SolutionStackName:{},OptionSettings:{shape:"S1j"},OptionsToRemove:{shape:"S1w"}}},output:{shape:"Sk",resultWrapper:"CreateEnvironmentResult"}},CreateStorageLocation:{output:{resultWrapper:"CreateStorageLocationResult",type:"structure",members:{S3Bucket:{}}}},DeleteApplication:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},TerminateEnvByForce:{type:"boolean"}}}},DeleteApplicationVersion:{input:{type:"structure",required:["ApplicationName","VersionLabel"],members:{ApplicationName:{},VersionLabel:{},DeleteSourceBundle:{type:"boolean"}}}},DeleteConfigurationTemplate:{input:{type:"structure",required:["ApplicationName","TemplateName"],members:{ApplicationName:{},TemplateName:{}}}},DeleteEnvironmentConfiguration:{input:{type:"structure",required:["ApplicationName","EnvironmentName"],members:{ApplicationName:{},EnvironmentName:{}}}},DescribeApplicationVersions:{input:{type:"structure",members:{ApplicationName:{},VersionLabels:{shape:"S16"}}},output:{resultWrapper:"DescribeApplicationVersionsResult",type:"structure",members:{ApplicationVersions:{type:"list",member:{shape:"S1f"}}}}},DescribeApplications:{input:{type:"structure",members:{ApplicationNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeApplicationsResult",type:"structure",members:{Applications:{type:"list",member:{shape:"S15"}}}}},DescribeConfigurationOptions:{input:{type:"structure",members:{ApplicationName:{},TemplateName:{},EnvironmentName:{},SolutionStackName:{},Options:{shape:"S1w"}}},output:{resultWrapper:"DescribeConfigurationOptionsResult",type:"structure",members:{SolutionStackName:{},Options:{type:"list",member:{type:"structure",members:{Namespace:{},Name:{},DefaultValue:{},ChangeSeverity:{},UserDefined:{type:"boolean"},ValueType:{},ValueOptions:{type:"list",member:{}},MinValue:{type:"integer"},MaxValue:{type:"integer"},MaxLength:{type:"integer"},Regex:{type:"structure",members:{Pattern:{},Label:{}}}}}}}}},DescribeConfigurationSettings:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},TemplateName:{},EnvironmentName:{}}},output:{resultWrapper:"DescribeConfigurationSettingsResult",type:"structure",members:{ConfigurationSettings:{type:"list",member:{shape:"S1p"}}}}},DescribeEnvironmentHealth:{input:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},AttributeNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeEnvironmentHealthResult",type:"structure",members:{EnvironmentName:{},HealthStatus:{},Status:{},Color:{},Causes:{shape:"S2z"},ApplicationMetrics:{shape:"S31"},InstancesHealth:{type:"structure",members:{NoData:{type:"integer"},Unknown:{type:"integer"},Pending:{type:"integer"},Ok:{type:"integer"},Info:{type:"integer"},Warning:{type:"integer"},Degraded:{type:"integer"},Severe:{type:"integer"}}},RefreshedAt:{type:"timestamp"}}}},DescribeEnvironmentManagedActionHistory:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{},NextToken:{},MaxItems:{type:"integer"}}},output:{resultWrapper:"DescribeEnvironmentManagedActionHistoryResult",type:"structure",members:{ManagedActionHistoryItems:{type:"list",member:{type:"structure",members:{ActionId:{},ActionType:{},ActionDescription:{},FailureType:{},Status:{},FailureDescription:{},ExecutedTime:{type:"timestamp"},FinishedTime:{type:"timestamp"}}}},NextToken:{}}}},DescribeEnvironmentManagedActions:{input:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},Status:{}}},output:{resultWrapper:"DescribeEnvironmentManagedActionsResult",type:"structure",members:{ManagedActions:{type:"list",member:{type:"structure",members:{ActionId:{},ActionDescription:{},ActionType:{},Status:{},WindowStartTime:{type:"timestamp"}}}}}}},DescribeEnvironmentResources:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}},output:{resultWrapper:"DescribeEnvironmentResourcesResult",type:"structure",members:{EnvironmentResources:{type:"structure",members:{EnvironmentName:{},AutoScalingGroups:{type:"list",member:{type:"structure",members:{Name:{}}}},Instances:{type:"list",member:{type:"structure",members:{Id:{}}}},LaunchConfigurations:{type:"list",member:{type:"structure",members:{Name:{}}}},LoadBalancers:{type:"list",member:{type:"structure",members:{Name:{}}}},Triggers:{type:"list",member:{type:"structure",members:{Name:{}}}},Queues:{type:"list",member:{type:"structure",members:{Name:{},URL:{}}}}}}}}},DescribeEnvironments:{input:{type:"structure",members:{ApplicationName:{},VersionLabel:{},EnvironmentIds:{type:"list",member:{}},EnvironmentNames:{type:"list",member:{}},IncludeDeleted:{type:"boolean"},IncludedDeletedBackTo:{type:"timestamp"}}},output:{shape:"Si",resultWrapper:"DescribeEnvironmentsResult"}},DescribeEvents:{input:{type:"structure",members:{ApplicationName:{},VersionLabel:{},TemplateName:{},EnvironmentId:{},EnvironmentName:{},RequestId:{},Severity:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},MaxRecords:{type:"integer"},NextToken:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Events:{type:"list",member:{type:"structure",members:{EventDate:{type:"timestamp"},Message:{},ApplicationName:{},VersionLabel:{},TemplateName:{},EnvironmentName:{},RequestId:{},Severity:{}}}},NextToken:{}}}},DescribeInstancesHealth:{input:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},AttributeNames:{type:"list",member:{}},NextToken:{}}},output:{resultWrapper:"DescribeInstancesHealthResult",type:"structure",members:{InstanceHealthList:{type:"list",member:{type:"structure",members:{InstanceId:{},HealthStatus:{},Color:{},Causes:{shape:"S2z"},LaunchedAt:{type:"timestamp"},ApplicationMetrics:{shape:"S31"},System:{type:"structure",members:{CPUUtilization:{type:"structure",members:{User:{type:"double"},Nice:{type:"double"},System:{type:"double"},Idle:{type:"double"},IOWait:{type:"double"},IRQ:{type:"double"},SoftIRQ:{type:"double"}}},LoadAverage:{type:"list",member:{type:"double"}}}},Deployment:{type:"structure",members:{VersionLabel:{},DeploymentId:{type:"long"},Status:{},DeploymentTime:{type:"timestamp"}}},AvailabilityZone:{},InstanceType:{}}}},RefreshedAt:{type:"timestamp"},NextToken:{}}}},ListAvailableSolutionStacks:{output:{resultWrapper:"ListAvailableSolutionStacksResult",type:"structure",members:{SolutionStacks:{type:"list",member:{}},SolutionStackDetails:{type:"list",member:{type:"structure",members:{SolutionStackName:{},PermittedFileTypes:{type:"list",member:{}}}}}}}},RebuildEnvironment:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}}},RequestEnvironmentInfo:{input:{type:"structure",required:["InfoType"],members:{EnvironmentId:{},EnvironmentName:{},InfoType:{}}}},RestartAppServer:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{}}}},RetrieveEnvironmentInfo:{input:{type:"structure",required:["InfoType"],members:{EnvironmentId:{},EnvironmentName:{},InfoType:{}}},output:{resultWrapper:"RetrieveEnvironmentInfoResult",type:"structure",members:{EnvironmentInfo:{type:"list",member:{type:"structure",members:{InfoType:{},Ec2InstanceId:{},SampleTimestamp:{type:"timestamp"},Message:{}}}}}}},SwapEnvironmentCNAMEs:{input:{type:"structure",members:{SourceEnvironmentId:{},SourceEnvironmentName:{},DestinationEnvironmentId:{},DestinationEnvironmentName:{}}}},TerminateEnvironment:{input:{type:"structure",members:{EnvironmentId:{},EnvironmentName:{},TerminateResources:{type:"boolean"},ForceTerminate:{type:"boolean"}}},output:{shape:"Sk",resultWrapper:"TerminateEnvironmentResult"}},UpdateApplication:{input:{type:"structure",required:["ApplicationName"],members:{ApplicationName:{},Description:{}}},output:{shape:"S14",resultWrapper:"UpdateApplicationResult"}},UpdateApplicationVersion:{input:{type:"structure",required:["ApplicationName","VersionLabel"],members:{ApplicationName:{},VersionLabel:{},Description:{}}},output:{shape:"S1e",resultWrapper:"UpdateApplicationVersionResult"}},UpdateConfigurationTemplate:{input:{type:"structure",required:["ApplicationName","TemplateName"],members:{ApplicationName:{},TemplateName:{},Description:{},OptionSettings:{shape:"S1j"},OptionsToRemove:{shape:"S1w"}}},output:{shape:"S1p",resultWrapper:"UpdateConfigurationTemplateResult"}},UpdateEnvironment:{input:{type:"structure",members:{ApplicationName:{},EnvironmentId:{},EnvironmentName:{},GroupName:{},Description:{},Tier:{shape:"S10"},VersionLabel:{},TemplateName:{},SolutionStackName:{},OptionSettings:{shape:"S1j"},OptionsToRemove:{shape:"S1w"}}},output:{shape:"Sk",resultWrapper:"UpdateEnvironmentResult"}},ValidateConfigurationSettings:{input:{type:"structure",required:["ApplicationName","OptionSettings"],members:{ApplicationName:{},TemplateName:{},EnvironmentName:{},OptionSettings:{shape:"S1j"}}},output:{resultWrapper:"ValidateConfigurationSettingsResult",type:"structure",members:{Messages:{type:"list",member:{type:"structure",members:{Message:{},Severity:{},Namespace:{},OptionName:{}}}}}}}},shapes:{Si:{type:"structure",members:{Environments:{type:"list",member:{shape:"Sk"}}}},Sk:{type:"structure",members:{EnvironmentName:{},EnvironmentId:{},ApplicationName:{},VersionLabel:{},SolutionStackName:{},TemplateName:{},Description:{},EndpointURL:{},CNAME:{},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},Status:{},AbortableOperationInProgress:{type:"boolean"},Health:{},HealthStatus:{},Resources:{type:"structure",members:{LoadBalancer:{type:"structure",members:{LoadBalancerName:{},Domain:{},Listeners:{type:"list",member:{type:"structure",members:{Protocol:{},Port:{type:"integer"}}}}}}}},Tier:{shape:"S10"},EnvironmentLinks:{type:"list",member:{type:"structure",members:{LinkName:{},EnvironmentName:{}}}}}},S10:{type:"structure",members:{Name:{},Type:{},Version:{}}},S14:{type:"structure",members:{Application:{shape:"S15"}}},S15:{type:"structure",members:{ApplicationName:{},Description:{},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},Versions:{shape:"S16"},ConfigurationTemplates:{type:"list",member:{}}}},S16:{type:"list",member:{}},S19:{type:"structure",members:{S3Bucket:{},S3Key:{}}},S1e:{type:"structure",members:{ApplicationVersion:{shape:"S1f"}}},S1f:{type:"structure",members:{ApplicationName:{},Description:{},VersionLabel:{},SourceBundle:{shape:"S19"},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},Status:{}}},S1j:{type:"list",member:{type:"structure",members:{ResourceName:{},Namespace:{},OptionName:{},Value:{}}}},S1p:{type:"structure",members:{SolutionStackName:{},ApplicationName:{},TemplateName:{},Description:{},EnvironmentName:{},DeploymentStatus:{},DateCreated:{type:"timestamp"},DateUpdated:{type:"timestamp"},OptionSettings:{shape:"S1j"}}},S1w:{type:"list",member:{type:"structure",members:{ResourceName:{},Namespace:{},OptionName:{}}}},S2z:{type:"list",member:{}},S31:{type:"structure",members:{Duration:{type:"integer"},RequestCount:{type:"integer"},StatusCodes:{type:"structure",members:{Status2xx:{type:"integer"},Status3xx:{type:"integer"},Status4xx:{type:"integer"},Status5xx:{type:"integer"}}},Latency:{type:"structure",members:{P999:{type:"double"},P99:{type:"double"},P95:{type:"double"},P90:{type:"double"},P85:{type:"double"},P75:{type:"double"},P50:{type:"double"},P10:{type:"double"}}}}}}}},{}],50:[function(e,t,r){t.exports={pagination:{DescribeApplicationVersions:{result_key:"ApplicationVersions"},DescribeApplications:{result_key:"Applications"},DescribeConfigurationOptions:{result_key:"Options"},DescribeEnvironments:{result_key:"Environments"},DescribeEvents:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxRecords",result_key:"Events"},ListAvailableSolutionStacks:{result_key:"SolutionStacks"}}}},{}],51:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-06-01",endpointPrefix:"elasticloadbalancing",protocol:"query",serviceFullName:"Elastic Load Balancing",signatureVersion:"v4",xmlNamespace:"http://elasticloadbalancing.amazonaws.com/doc/2012-06-01/"},operations:{AddTags:{input:{type:"structure",required:["LoadBalancerNames","Tags"],members:{LoadBalancerNames:{shape:"S2"},Tags:{shape:"S4"}}},output:{resultWrapper:"AddTagsResult",type:"structure",members:{}}},ApplySecurityGroupsToLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","SecurityGroups"],members:{LoadBalancerName:{},SecurityGroups:{shape:"Sa"}}},output:{resultWrapper:"ApplySecurityGroupsToLoadBalancerResult",type:"structure",members:{SecurityGroups:{shape:"Sa"}}}},AttachLoadBalancerToSubnets:{input:{type:"structure",required:["LoadBalancerName","Subnets"],members:{LoadBalancerName:{},Subnets:{shape:"Se"}}},output:{resultWrapper:"AttachLoadBalancerToSubnetsResult",type:"structure",members:{Subnets:{shape:"Se"}}}},ConfigureHealthCheck:{input:{type:"structure",required:["LoadBalancerName","HealthCheck"],members:{LoadBalancerName:{},HealthCheck:{shape:"Si"}}},output:{resultWrapper:"ConfigureHealthCheckResult",type:"structure",members:{HealthCheck:{shape:"Si"}}}},CreateAppCookieStickinessPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName","CookieName"],members:{LoadBalancerName:{},PolicyName:{},CookieName:{}}},output:{resultWrapper:"CreateAppCookieStickinessPolicyResult",type:"structure",members:{}}},CreateLBCookieStickinessPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName"],members:{LoadBalancerName:{},PolicyName:{},CookieExpirationPeriod:{type:"long"}}},output:{resultWrapper:"CreateLBCookieStickinessPolicyResult",type:"structure",members:{}}},CreateLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","Listeners"],members:{LoadBalancerName:{},Listeners:{shape:"Sx"},AvailabilityZones:{shape:"S13"},Subnets:{shape:"Se"},SecurityGroups:{shape:"Sa"},Scheme:{},Tags:{shape:"S4"}}},output:{resultWrapper:"CreateLoadBalancerResult",type:"structure",members:{DNSName:{}}}},CreateLoadBalancerListeners:{input:{type:"structure",required:["LoadBalancerName","Listeners"],members:{LoadBalancerName:{},Listeners:{shape:"Sx"}}},output:{resultWrapper:"CreateLoadBalancerListenersResult",type:"structure",members:{}}},CreateLoadBalancerPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName","PolicyTypeName"],members:{LoadBalancerName:{},PolicyName:{},PolicyTypeName:{},PolicyAttributes:{type:"list",member:{type:"structure",members:{AttributeName:{},AttributeValue:{}}}}}},output:{resultWrapper:"CreateLoadBalancerPolicyResult",type:"structure",members:{}}},DeleteLoadBalancer:{input:{type:"structure",required:["LoadBalancerName"],members:{LoadBalancerName:{}}},output:{resultWrapper:"DeleteLoadBalancerResult",type:"structure",members:{}}},DeleteLoadBalancerListeners:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerPorts"],members:{LoadBalancerName:{},LoadBalancerPorts:{type:"list",member:{type:"integer"}}}},output:{resultWrapper:"DeleteLoadBalancerListenersResult",type:"structure",members:{}}},DeleteLoadBalancerPolicy:{input:{type:"structure",required:["LoadBalancerName","PolicyName"],members:{LoadBalancerName:{},PolicyName:{}}},output:{resultWrapper:"DeleteLoadBalancerPolicyResult",type:"structure",members:{}}},DeregisterInstancesFromLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","Instances"],members:{LoadBalancerName:{},Instances:{shape:"S1p"}}},output:{resultWrapper:"DeregisterInstancesFromLoadBalancerResult",type:"structure",members:{Instances:{shape:"S1p"}}}},DescribeInstanceHealth:{input:{type:"structure",required:["LoadBalancerName"],members:{LoadBalancerName:{},Instances:{shape:"S1p"}}},output:{resultWrapper:"DescribeInstanceHealthResult",type:"structure",members:{InstanceStates:{type:"list",member:{type:"structure",members:{InstanceId:{},State:{},ReasonCode:{},Description:{}}}}}}},DescribeLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerName"],members:{LoadBalancerName:{}}},output:{resultWrapper:"DescribeLoadBalancerAttributesResult",type:"structure",members:{LoadBalancerAttributes:{shape:"S22"}}}},DescribeLoadBalancerPolicies:{input:{type:"structure",members:{LoadBalancerName:{},PolicyNames:{shape:"S2k"}}},output:{resultWrapper:"DescribeLoadBalancerPoliciesResult",type:"structure",members:{PolicyDescriptions:{type:"list",member:{type:"structure",members:{PolicyName:{},PolicyTypeName:{},PolicyAttributeDescriptions:{type:"list",member:{type:"structure",members:{AttributeName:{},AttributeValue:{}}}}}}}}}},DescribeLoadBalancerPolicyTypes:{input:{type:"structure",members:{PolicyTypeNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeLoadBalancerPolicyTypesResult",type:"structure",members:{PolicyTypeDescriptions:{type:"list",member:{type:"structure",members:{PolicyTypeName:{},Description:{},PolicyAttributeTypeDescriptions:{type:"list",member:{type:"structure",members:{AttributeName:{},AttributeType:{},Description:{},DefaultValue:{},Cardinality:{}}}}}}}}}},DescribeLoadBalancers:{input:{type:"structure",members:{LoadBalancerNames:{shape:"S2"},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeLoadBalancersResult",type:"structure",members:{LoadBalancerDescriptions:{type:"list",member:{type:"structure",members:{LoadBalancerName:{},DNSName:{},CanonicalHostedZoneName:{},CanonicalHostedZoneNameID:{},ListenerDescriptions:{type:"list",member:{type:"structure",members:{Listener:{shape:"Sy"},PolicyNames:{shape:"S2k"}}}},Policies:{type:"structure",members:{AppCookieStickinessPolicies:{type:"list",member:{type:"structure",members:{PolicyName:{},CookieName:{}}}},LBCookieStickinessPolicies:{type:"list",member:{type:"structure",members:{PolicyName:{},CookieExpirationPeriod:{type:"long"}}}},OtherPolicies:{shape:"S2k"}}},BackendServerDescriptions:{type:"list",member:{type:"structure",members:{InstancePort:{type:"integer"},PolicyNames:{shape:"S2k"}}}},AvailabilityZones:{shape:"S13"},Subnets:{shape:"Se"},VPCId:{},Instances:{shape:"S1p"},HealthCheck:{shape:"Si"},SourceSecurityGroup:{type:"structure",members:{OwnerAlias:{},GroupName:{}}},SecurityGroups:{shape:"Sa"},CreatedTime:{type:"timestamp"},Scheme:{}}}},NextMarker:{}}}},DescribeTags:{input:{type:"structure",required:["LoadBalancerNames"],members:{LoadBalancerNames:{type:"list",member:{}}}},output:{resultWrapper:"DescribeTagsResult",type:"structure",members:{TagDescriptions:{type:"list",member:{type:"structure",members:{LoadBalancerName:{},Tags:{shape:"S4"}}}}}}},DetachLoadBalancerFromSubnets:{input:{type:"structure",required:["LoadBalancerName","Subnets"],members:{LoadBalancerName:{},Subnets:{shape:"Se"}}},output:{resultWrapper:"DetachLoadBalancerFromSubnetsResult",type:"structure",members:{Subnets:{shape:"Se"}}}},DisableAvailabilityZonesForLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","AvailabilityZones"],members:{LoadBalancerName:{},AvailabilityZones:{shape:"S13"}}},output:{resultWrapper:"DisableAvailabilityZonesForLoadBalancerResult",type:"structure",members:{AvailabilityZones:{shape:"S13"}}}},EnableAvailabilityZonesForLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","AvailabilityZones"],members:{LoadBalancerName:{},AvailabilityZones:{shape:"S13"}}},output:{resultWrapper:"EnableAvailabilityZonesForLoadBalancerResult",type:"structure",members:{AvailabilityZones:{shape:"S13"}}}},ModifyLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerAttributes"],members:{LoadBalancerName:{},LoadBalancerAttributes:{shape:"S22"}}},output:{resultWrapper:"ModifyLoadBalancerAttributesResult",type:"structure",members:{LoadBalancerName:{},LoadBalancerAttributes:{shape:"S22"}}}},RegisterInstancesWithLoadBalancer:{input:{type:"structure",required:["LoadBalancerName","Instances"],members:{LoadBalancerName:{},Instances:{shape:"S1p"}}},output:{resultWrapper:"RegisterInstancesWithLoadBalancerResult",type:"structure",members:{Instances:{shape:"S1p"}}}},RemoveTags:{input:{type:"structure",required:["LoadBalancerNames","Tags"],members:{LoadBalancerNames:{shape:"S2"},Tags:{type:"list",member:{type:"structure",members:{Key:{}}}}}},output:{resultWrapper:"RemoveTagsResult",type:"structure",members:{}}},SetLoadBalancerListenerSSLCertificate:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerPort","SSLCertificateId"],members:{LoadBalancerName:{},LoadBalancerPort:{type:"integer"},SSLCertificateId:{}}},output:{resultWrapper:"SetLoadBalancerListenerSSLCertificateResult",type:"structure",members:{}}},SetLoadBalancerPoliciesForBackendServer:{input:{type:"structure",required:["LoadBalancerName","InstancePort","PolicyNames"],members:{LoadBalancerName:{},InstancePort:{type:"integer"},PolicyNames:{shape:"S2k"}}},output:{resultWrapper:"SetLoadBalancerPoliciesForBackendServerResult",type:"structure",members:{}}},SetLoadBalancerPoliciesOfListener:{input:{type:"structure",required:["LoadBalancerName","LoadBalancerPort","PolicyNames"],members:{LoadBalancerName:{},LoadBalancerPort:{type:"integer"},PolicyNames:{shape:"S2k"}}},output:{resultWrapper:"SetLoadBalancerPoliciesOfListenerResult",type:"structure",members:{}}}},shapes:{S2:{type:"list",member:{}},S4:{type:"list",member:{type:"structure",required:["Key"],members:{Key:{},Value:{}}}},Sa:{type:"list",member:{}},Se:{type:"list",member:{}},Si:{type:"structure",required:["Target","Interval","Timeout","UnhealthyThreshold","HealthyThreshold"],members:{Target:{},Interval:{type:"integer"},Timeout:{type:"integer"},UnhealthyThreshold:{type:"integer"},HealthyThreshold:{type:"integer"}}},Sx:{type:"list",member:{shape:"Sy"}},Sy:{type:"structure",required:["Protocol","LoadBalancerPort","InstancePort"],members:{Protocol:{},LoadBalancerPort:{type:"integer"},InstanceProtocol:{},InstancePort:{type:"integer"},SSLCertificateId:{}}},S13:{type:"list",member:{}},S1p:{type:"list",member:{type:"structure",members:{InstanceId:{}}}},S22:{type:"structure",members:{CrossZoneLoadBalancing:{type:"structure",required:["Enabled"],members:{Enabled:{type:"boolean"}}},AccessLog:{type:"structure",required:["Enabled"],members:{Enabled:{type:"boolean"},S3BucketName:{},EmitInterval:{type:"integer"},S3BucketPrefix:{}}},ConnectionDraining:{type:"structure",required:["Enabled"],members:{Enabled:{type:"boolean"},Timeout:{type:"integer"}}},ConnectionSettings:{type:"structure",required:["IdleTimeout"],members:{IdleTimeout:{type:"integer"}}},AdditionalAttributes:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}}}},S2k:{type:"list",member:{}}}}},{}],52:[function(e,t,r){t.exports={pagination:{DescribeInstanceHealth:{result_key:"InstanceStates"},DescribeLoadBalancerPolicies:{result_key:"PolicyDescriptions"},DescribeLoadBalancerPolicyTypes:{result_key:"PolicyTypeDescriptions"},DescribeLoadBalancers:{input_token:"Marker",output_token:"NextMarker",result_key:"LoadBalancerDescriptions"}}}},{}],53:[function(e,t,r){t.exports={version:2,waiters:{InstanceDeregistered:{delay:15,operation:"DescribeInstanceHealth",maxAttempts:40,acceptors:[{expected:"OutOfService",matcher:"pathAll",state:"success",argument:"InstanceStates[].State"},{matcher:"error",expected:"InvalidInstance",state:"success"}]},AnyInstanceInService:{acceptors:[{argument:"InstanceStates[].State",expected:"InService",matcher:"pathAny",state:"success"}],delay:15,maxAttempts:40,operation:"DescribeInstanceHealth"},InstanceInService:{acceptors:[{argument:"InstanceStates[].State",expected:"InService",matcher:"pathAll",state:"success"}],delay:15,maxAttempts:40,operation:"DescribeInstanceHealth"}}}},{}],54:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-12-01",endpointPrefix:"elasticloadbalancing",protocol:"query",serviceAbbreviation:"Elastic Load Balancing v2",serviceFullName:"Elastic Load Balancing",signatureVersion:"v4",xmlNamespace:"http://elasticloadbalancing.amazonaws.com/doc/2015-12-01/"},operations:{AddTags:{input:{type:"structure",required:["ResourceArns","Tags"],members:{ResourceArns:{shape:"S2"},Tags:{shape:"S4"}}},output:{resultWrapper:"AddTagsResult",type:"structure",members:{}}},CreateListener:{input:{type:"structure",required:["LoadBalancerArn","Protocol","Port","DefaultActions"],members:{LoadBalancerArn:{},Protocol:{},Port:{type:"integer"},SslPolicy:{},Certificates:{shape:"Se"},DefaultActions:{shape:"Sh"}}},output:{resultWrapper:"CreateListenerResult",type:"structure",members:{Listeners:{shape:"Sm"}}}},CreateLoadBalancer:{input:{type:"structure",required:["Name","Subnets"],members:{Name:{},Subnets:{shape:"Sr"},SecurityGroups:{shape:"St"},Scheme:{},Tags:{shape:"S4"}}},output:{resultWrapper:"CreateLoadBalancerResult",type:"structure",members:{LoadBalancers:{shape:"Sx"}}}},CreateRule:{input:{type:"structure",required:["ListenerArn","Conditions","Priority","Actions"],members:{ListenerArn:{},Conditions:{shape:"S1b"},Priority:{type:"integer"},Actions:{shape:"Sh"}}},output:{resultWrapper:"CreateRuleResult",type:"structure",members:{Rules:{shape:"S1i"}}}},CreateTargetGroup:{input:{type:"structure",required:["Name","Protocol","Port","VpcId"],members:{Name:{},Protocol:{},Port:{type:"integer"},VpcId:{},HealthCheckProtocol:{},HealthCheckPort:{},HealthCheckPath:{},HealthCheckIntervalSeconds:{type:"integer"},HealthCheckTimeoutSeconds:{type:"integer"},HealthyThresholdCount:{type:"integer"},UnhealthyThresholdCount:{type:"integer"},Matcher:{shape:"S1u"}}},output:{resultWrapper:"CreateTargetGroupResult",type:"structure",members:{TargetGroups:{shape:"S1x"}}}},DeleteListener:{input:{type:"structure",required:["ListenerArn"],members:{ListenerArn:{}}},output:{resultWrapper:"DeleteListenerResult",type:"structure",members:{}}},DeleteLoadBalancer:{input:{type:"structure",required:["LoadBalancerArn"],members:{LoadBalancerArn:{}}},output:{resultWrapper:"DeleteLoadBalancerResult",type:"structure",members:{}}},DeleteRule:{input:{type:"structure",required:["RuleArn"],members:{RuleArn:{}}},output:{resultWrapper:"DeleteRuleResult",type:"structure",members:{}}},DeleteTargetGroup:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{}}},output:{resultWrapper:"DeleteTargetGroupResult",type:"structure",members:{}}},DeregisterTargets:{input:{type:"structure",required:["TargetGroupArn","Targets"],members:{TargetGroupArn:{},Targets:{shape:"S29"}}},output:{resultWrapper:"DeregisterTargetsResult",type:"structure",members:{}}},DescribeListeners:{input:{type:"structure",members:{LoadBalancerArn:{},ListenerArns:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeListenersResult",type:"structure",members:{Listeners:{shape:"Sm"},NextMarker:{}}}},DescribeLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerArn"],members:{LoadBalancerArn:{}}},output:{resultWrapper:"DescribeLoadBalancerAttributesResult",type:"structure",members:{Attributes:{shape:"S2k"}}}},DescribeLoadBalancers:{input:{type:"structure",members:{LoadBalancerArns:{shape:"S1z" -},Names:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeLoadBalancersResult",type:"structure",members:{LoadBalancers:{shape:"Sx"},NextMarker:{}}}},DescribeRules:{input:{type:"structure",members:{ListenerArn:{},RuleArns:{type:"list",member:{}}}},output:{resultWrapper:"DescribeRulesResult",type:"structure",members:{Rules:{shape:"S1i"}}}},DescribeSSLPolicies:{input:{type:"structure",members:{Names:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeSSLPoliciesResult",type:"structure",members:{SslPolicies:{type:"list",member:{type:"structure",members:{SslProtocols:{type:"list",member:{}},Ciphers:{type:"list",member:{type:"structure",members:{Name:{},Priority:{type:"integer"}}}},Name:{}}}},NextMarker:{}}}},DescribeTags:{input:{type:"structure",required:["ResourceArns"],members:{ResourceArns:{shape:"S2"}}},output:{resultWrapper:"DescribeTagsResult",type:"structure",members:{TagDescriptions:{type:"list",member:{type:"structure",members:{ResourceArn:{},Tags:{shape:"S4"}}}}}}},DescribeTargetGroupAttributes:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{}}},output:{resultWrapper:"DescribeTargetGroupAttributesResult",type:"structure",members:{Attributes:{shape:"S3b"}}}},DescribeTargetGroups:{input:{type:"structure",members:{LoadBalancerArn:{},TargetGroupArns:{type:"list",member:{}},Names:{type:"list",member:{}},Marker:{},PageSize:{type:"integer"}}},output:{resultWrapper:"DescribeTargetGroupsResult",type:"structure",members:{TargetGroups:{shape:"S1x"},NextMarker:{}}}},DescribeTargetHealth:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{},Targets:{shape:"S29"}}},output:{resultWrapper:"DescribeTargetHealthResult",type:"structure",members:{TargetHealthDescriptions:{type:"list",member:{type:"structure",members:{Target:{shape:"S2a"},HealthCheckPort:{},TargetHealth:{type:"structure",members:{State:{},Reason:{},Description:{}}}}}}}}},ModifyListener:{input:{type:"structure",required:["ListenerArn"],members:{ListenerArn:{},Port:{type:"integer"},Protocol:{},SslPolicy:{},Certificates:{shape:"Se"},DefaultActions:{shape:"Sh"}}},output:{resultWrapper:"ModifyListenerResult",type:"structure",members:{Listeners:{shape:"Sm"}}}},ModifyLoadBalancerAttributes:{input:{type:"structure",required:["LoadBalancerArn","Attributes"],members:{LoadBalancerArn:{},Attributes:{shape:"S2k"}}},output:{resultWrapper:"ModifyLoadBalancerAttributesResult",type:"structure",members:{Attributes:{shape:"S2k"}}}},ModifyRule:{input:{type:"structure",required:["RuleArn"],members:{RuleArn:{},Conditions:{shape:"S1b"},Actions:{shape:"Sh"}}},output:{resultWrapper:"ModifyRuleResult",type:"structure",members:{Rules:{shape:"S1i"}}}},ModifyTargetGroup:{input:{type:"structure",required:["TargetGroupArn"],members:{TargetGroupArn:{},HealthCheckProtocol:{},HealthCheckPort:{},HealthCheckPath:{},HealthCheckIntervalSeconds:{type:"integer"},HealthCheckTimeoutSeconds:{type:"integer"},HealthyThresholdCount:{type:"integer"},UnhealthyThresholdCount:{type:"integer"},Matcher:{shape:"S1u"}}},output:{resultWrapper:"ModifyTargetGroupResult",type:"structure",members:{TargetGroups:{shape:"S1x"}}}},ModifyTargetGroupAttributes:{input:{type:"structure",required:["TargetGroupArn","Attributes"],members:{TargetGroupArn:{},Attributes:{shape:"S3b"}}},output:{resultWrapper:"ModifyTargetGroupAttributesResult",type:"structure",members:{Attributes:{shape:"S3b"}}}},RegisterTargets:{input:{type:"structure",required:["TargetGroupArn","Targets"],members:{TargetGroupArn:{},Targets:{shape:"S29"}}},output:{resultWrapper:"RegisterTargetsResult",type:"structure",members:{}}},RemoveTags:{input:{type:"structure",required:["ResourceArns","TagKeys"],members:{ResourceArns:{shape:"S2"},TagKeys:{type:"list",member:{}}}},output:{resultWrapper:"RemoveTagsResult",type:"structure",members:{}}},SetRulePriorities:{input:{type:"structure",required:["RulePriorities"],members:{RulePriorities:{type:"list",member:{type:"structure",members:{RuleArn:{},Priority:{type:"integer"}}}}}},output:{resultWrapper:"SetRulePrioritiesResult",type:"structure",members:{Rules:{shape:"S1i"}}}},SetSecurityGroups:{input:{type:"structure",required:["LoadBalancerArn","SecurityGroups"],members:{LoadBalancerArn:{},SecurityGroups:{shape:"St"}}},output:{resultWrapper:"SetSecurityGroupsResult",type:"structure",members:{SecurityGroupIds:{shape:"St"}}}},SetSubnets:{input:{type:"structure",required:["LoadBalancerArn","Subnets"],members:{LoadBalancerArn:{},Subnets:{shape:"Sr"}}},output:{resultWrapper:"SetSubnetsResult",type:"structure",members:{AvailabilityZones:{shape:"S17"}}}}},shapes:{S2:{type:"list",member:{}},S4:{type:"list",member:{type:"structure",required:["Key"],members:{Key:{},Value:{}}}},Se:{type:"list",member:{type:"structure",members:{CertificateArn:{}}}},Sh:{type:"list",member:{type:"structure",required:["Type","TargetGroupArn"],members:{Type:{},TargetGroupArn:{}}}},Sm:{type:"list",member:{type:"structure",members:{ListenerArn:{},LoadBalancerArn:{},Port:{type:"integer"},Protocol:{},Certificates:{shape:"Se"},SslPolicy:{},DefaultActions:{shape:"Sh"}}}},Sr:{type:"list",member:{}},St:{type:"list",member:{}},Sx:{type:"list",member:{type:"structure",members:{LoadBalancerArn:{},DNSName:{},CanonicalHostedZoneId:{},CreatedTime:{type:"timestamp"},LoadBalancerName:{},Scheme:{},VpcId:{},State:{type:"structure",members:{Code:{},Reason:{}}},Type:{},AvailabilityZones:{shape:"S17"},SecurityGroups:{shape:"St"}}}},S17:{type:"list",member:{type:"structure",members:{ZoneName:{},SubnetId:{}}}},S1b:{type:"list",member:{type:"structure",members:{Field:{},Values:{type:"list",member:{}}}}},S1i:{type:"list",member:{type:"structure",members:{RuleArn:{},Priority:{},Conditions:{shape:"S1b"},Actions:{shape:"Sh"},IsDefault:{type:"boolean"}}}},S1u:{type:"structure",required:["HttpCode"],members:{HttpCode:{}}},S1x:{type:"list",member:{type:"structure",members:{TargetGroupArn:{},TargetGroupName:{},Protocol:{},Port:{type:"integer"},VpcId:{},HealthCheckProtocol:{},HealthCheckPort:{},HealthCheckIntervalSeconds:{type:"integer"},HealthCheckTimeoutSeconds:{type:"integer"},HealthyThresholdCount:{type:"integer"},UnhealthyThresholdCount:{type:"integer"},HealthCheckPath:{},Matcher:{shape:"S1u"},LoadBalancerArns:{shape:"S1z"}}}},S1z:{type:"list",member:{}},S29:{type:"list",member:{shape:"S2a"}},S2a:{type:"structure",required:["Id"],members:{Id:{},Port:{type:"integer"}}},S2k:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S3b:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}}}}},{}],55:[function(e,t,r){t.exports={pagination:{DescribeTargetGroups:{input_token:"Marker",output_token:"NextMarker",result_key:"TargetGroups"},DescribeListeners:{input_token:"Marker",output_token:"NextMarker",result_key:"Listeners"},DescribeLoadBalancers:{input_token:"Marker",output_token:"NextMarker",result_key:"LoadBalancers"}}}},{}],56:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2009-03-31",endpointPrefix:"elasticmapreduce",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon EMR",serviceFullName:"Amazon Elastic MapReduce",signatureVersion:"v4",targetPrefix:"ElasticMapReduce",timestampFormat:"unixTimestamp"},operations:{AddInstanceGroups:{input:{type:"structure",required:["InstanceGroups","JobFlowId"],members:{InstanceGroups:{shape:"S2"},JobFlowId:{}}},output:{type:"structure",members:{JobFlowId:{},InstanceGroupIds:{type:"list",member:{}}}}},AddJobFlowSteps:{input:{type:"structure",required:["JobFlowId","Steps"],members:{JobFlowId:{},Steps:{shape:"Sl"}}},output:{type:"structure",members:{StepIds:{type:"list",member:{}}}}},AddTags:{input:{type:"structure",required:["ResourceId","Tags"],members:{ResourceId:{},Tags:{shape:"Sx"}}},output:{type:"structure",members:{}}},CreateSecurityConfiguration:{input:{type:"structure",required:["Name","SecurityConfiguration"],members:{Name:{},SecurityConfiguration:{}}},output:{type:"structure",required:["Name","CreationDateTime"],members:{Name:{},CreationDateTime:{type:"timestamp"}}}},DeleteSecurityConfiguration:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{}}},DescribeCluster:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{}}},output:{type:"structure",members:{Cluster:{type:"structure",members:{Id:{},Name:{},Status:{shape:"S19"},Ec2InstanceAttributes:{type:"structure",members:{Ec2KeyName:{},Ec2SubnetId:{},Ec2AvailabilityZone:{},IamInstanceProfile:{},EmrManagedMasterSecurityGroup:{},EmrManagedSlaveSecurityGroup:{},ServiceAccessSecurityGroup:{},AdditionalMasterSecurityGroups:{shape:"S1f"},AdditionalSlaveSecurityGroups:{shape:"S1f"}}},LogUri:{},RequestedAmiVersion:{},RunningAmiVersion:{},ReleaseLabel:{},AutoTerminate:{type:"boolean"},TerminationProtected:{type:"boolean"},VisibleToAllUsers:{type:"boolean"},Applications:{shape:"S1h"},Tags:{shape:"Sx"},ServiceRole:{},NormalizedInstanceHours:{type:"integer"},MasterPublicDnsName:{},Configurations:{shape:"S9"},SecurityConfiguration:{}}}}}},DescribeJobFlows:{input:{type:"structure",members:{CreatedAfter:{type:"timestamp"},CreatedBefore:{type:"timestamp"},JobFlowIds:{shape:"Ss"},JobFlowStates:{type:"list",member:{}}}},output:{type:"structure",members:{JobFlows:{type:"list",member:{type:"structure",required:["JobFlowId","Name","ExecutionStatusDetail","Instances"],members:{JobFlowId:{},Name:{},LogUri:{},AmiVersion:{},ExecutionStatusDetail:{type:"structure",required:["State","CreationDateTime"],members:{State:{},CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"},LastStateChangeReason:{}}},Instances:{type:"structure",required:["MasterInstanceType","SlaveInstanceType","InstanceCount"],members:{MasterInstanceType:{},MasterPublicDnsName:{},MasterInstanceId:{},SlaveInstanceType:{},InstanceCount:{type:"integer"},InstanceGroups:{type:"list",member:{type:"structure",required:["Market","InstanceRole","InstanceType","InstanceRequestCount","InstanceRunningCount","State","CreationDateTime"],members:{InstanceGroupId:{},Name:{},Market:{},InstanceRole:{},BidPrice:{},InstanceType:{},InstanceRequestCount:{type:"integer"},InstanceRunningCount:{type:"integer"},State:{},LastStateChangeReason:{},CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}},NormalizedInstanceHours:{type:"integer"},Ec2KeyName:{},Ec2SubnetId:{},Placement:{shape:"S1u"},KeepJobFlowAliveWhenNoSteps:{type:"boolean"},TerminationProtected:{type:"boolean"},HadoopVersion:{}}},Steps:{type:"list",member:{type:"structure",required:["StepConfig","ExecutionStatusDetail"],members:{StepConfig:{shape:"Sm"},ExecutionStatusDetail:{type:"structure",required:["State","CreationDateTime"],members:{State:{},CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"},LastStateChangeReason:{}}}}}},BootstrapActions:{type:"list",member:{type:"structure",members:{BootstrapActionConfig:{shape:"S21"}}}},SupportedProducts:{shape:"S23"},VisibleToAllUsers:{type:"boolean"},JobFlowRole:{},ServiceRole:{}}}}}},deprecated:!0},DescribeSecurityConfiguration:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Name:{},SecurityConfiguration:{},CreationDateTime:{type:"timestamp"}}}},DescribeStep:{input:{type:"structure",required:["ClusterId","StepId"],members:{ClusterId:{},StepId:{}}},output:{type:"structure",members:{Step:{type:"structure",members:{Id:{},Name:{},Config:{shape:"S2a"},ActionOnFailure:{},Status:{shape:"S2b"}}}}}},ListBootstrapActions:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},Marker:{}}},output:{type:"structure",members:{BootstrapActions:{type:"list",member:{type:"structure",members:{Name:{},ScriptPath:{},Args:{shape:"S1f"}}}},Marker:{}}}},ListClusters:{input:{type:"structure",members:{CreatedAfter:{type:"timestamp"},CreatedBefore:{type:"timestamp"},ClusterStates:{type:"list",member:{}},Marker:{}}},output:{type:"structure",members:{Clusters:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Status:{shape:"S19"},NormalizedInstanceHours:{type:"integer"}}}},Marker:{}}}},ListInstanceGroups:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},Marker:{}}},output:{type:"structure",members:{InstanceGroups:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Market:{},InstanceGroupType:{},BidPrice:{},InstanceType:{},RequestedInstanceCount:{type:"integer"},RunningInstanceCount:{type:"integer"},Status:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},Configurations:{shape:"S9"},EbsBlockDevices:{type:"list",member:{type:"structure",members:{VolumeSpecification:{shape:"Sg"},Device:{}}}},EbsOptimized:{type:"boolean"},ShrinkPolicy:{shape:"S33"}}}},Marker:{}}}},ListInstances:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},InstanceGroupId:{},InstanceGroupTypes:{type:"list",member:{}},InstanceStates:{type:"list",member:{}},Marker:{}}},output:{type:"structure",members:{Instances:{type:"list",member:{type:"structure",members:{Id:{},Ec2InstanceId:{},PublicDnsName:{},PublicIpAddress:{},PrivateDnsName:{},PrivateIpAddress:{},Status:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},InstanceGroupId:{},EbsVolumes:{type:"list",member:{type:"structure",members:{Device:{},VolumeId:{}}}}}}},Marker:{}}}},ListSecurityConfigurations:{input:{type:"structure",members:{Marker:{}}},output:{type:"structure",members:{SecurityConfigurations:{type:"list",member:{type:"structure",members:{Name:{},CreationDateTime:{type:"timestamp"}}}},Marker:{}}}},ListSteps:{input:{type:"structure",required:["ClusterId"],members:{ClusterId:{},StepStates:{type:"list",member:{}},StepIds:{shape:"Ss"},Marker:{}}},output:{type:"structure",members:{Steps:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Config:{shape:"S2a"},ActionOnFailure:{},Status:{shape:"S2b"}}}},Marker:{}}}},ModifyInstanceGroups:{input:{type:"structure",members:{InstanceGroups:{type:"list",member:{type:"structure",required:["InstanceGroupId"],members:{InstanceGroupId:{},InstanceCount:{type:"integer"},EC2InstanceIdsToTerminate:{type:"list",member:{}},ShrinkPolicy:{shape:"S33"}}}}}}},RemoveTags:{input:{type:"structure",required:["ResourceId","TagKeys"],members:{ResourceId:{},TagKeys:{shape:"S1f"}}},output:{type:"structure",members:{}}},RunJobFlow:{input:{type:"structure",required:["Name","Instances"],members:{Name:{},LogUri:{},AdditionalInfo:{},AmiVersion:{},ReleaseLabel:{},Instances:{type:"structure",members:{MasterInstanceType:{},SlaveInstanceType:{},InstanceCount:{type:"integer"},InstanceGroups:{shape:"S2"},Ec2KeyName:{},Placement:{shape:"S1u"},KeepJobFlowAliveWhenNoSteps:{type:"boolean"},TerminationProtected:{type:"boolean"},HadoopVersion:{},Ec2SubnetId:{},EmrManagedMasterSecurityGroup:{},EmrManagedSlaveSecurityGroup:{},ServiceAccessSecurityGroup:{},AdditionalMasterSecurityGroups:{shape:"S41"},AdditionalSlaveSecurityGroups:{shape:"S41"}}},Steps:{shape:"Sl"},BootstrapActions:{type:"list",member:{shape:"S21"}},SupportedProducts:{shape:"S23"},NewSupportedProducts:{type:"list",member:{type:"structure",members:{Name:{},Args:{shape:"Ss"}}}},Applications:{shape:"S1h"},Configurations:{shape:"S9"},VisibleToAllUsers:{type:"boolean"},JobFlowRole:{},ServiceRole:{},Tags:{shape:"Sx"},SecurityConfiguration:{}}},output:{type:"structure",members:{JobFlowId:{}}}},SetTerminationProtection:{input:{type:"structure",required:["JobFlowIds","TerminationProtected"],members:{JobFlowIds:{shape:"Ss"},TerminationProtected:{type:"boolean"}}}},SetVisibleToAllUsers:{input:{type:"structure",required:["JobFlowIds","VisibleToAllUsers"],members:{JobFlowIds:{shape:"Ss"},VisibleToAllUsers:{type:"boolean"}}}},TerminateJobFlows:{input:{type:"structure",required:["JobFlowIds"],members:{JobFlowIds:{shape:"Ss"}}}}},shapes:{S2:{type:"list",member:{type:"structure",required:["InstanceRole","InstanceType","InstanceCount"],members:{Name:{},Market:{},InstanceRole:{},BidPrice:{},InstanceType:{},InstanceCount:{type:"integer"},Configurations:{shape:"S9"},EbsConfiguration:{type:"structure",members:{EbsBlockDeviceConfigs:{type:"list",member:{type:"structure",required:["VolumeSpecification"],members:{VolumeSpecification:{shape:"Sg"},VolumesPerInstance:{type:"integer"}}}},EbsOptimized:{type:"boolean"}}}}}},S9:{type:"list",member:{type:"structure",members:{Classification:{},Configurations:{shape:"S9"},Properties:{shape:"Sc"}}}},Sc:{type:"map",key:{},value:{}},Sg:{type:"structure",required:["VolumeType","SizeInGB"],members:{VolumeType:{},Iops:{type:"integer"},SizeInGB:{type:"integer"}}},Sl:{type:"list",member:{shape:"Sm"}},Sm:{type:"structure",required:["Name","HadoopJarStep"],members:{Name:{},ActionOnFailure:{},HadoopJarStep:{type:"structure",required:["Jar"],members:{Properties:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},Jar:{},MainClass:{},Args:{shape:"Ss"}}}}},Ss:{type:"list",member:{}},Sx:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S19:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},ReadyDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},S1f:{type:"list",member:{}},S1h:{type:"list",member:{type:"structure",members:{Name:{},Version:{},Args:{shape:"S1f"},AdditionalInfo:{shape:"Sc"}}}},S1u:{type:"structure",required:["AvailabilityZone"],members:{AvailabilityZone:{}}},S21:{type:"structure",required:["Name","ScriptBootstrapAction"],members:{Name:{},ScriptBootstrapAction:{type:"structure",required:["Path"],members:{Path:{},Args:{shape:"Ss"}}}}},S23:{type:"list",member:{}},S2a:{type:"structure",members:{Jar:{},Properties:{shape:"Sc"},MainClass:{},Args:{shape:"S1f"}}},S2b:{type:"structure",members:{State:{},StateChangeReason:{type:"structure",members:{Code:{},Message:{}}},FailureDetails:{type:"structure",members:{Reason:{},Message:{},LogFile:{}}},Timeline:{type:"structure",members:{CreationDateTime:{type:"timestamp"},StartDateTime:{type:"timestamp"},EndDateTime:{type:"timestamp"}}}}},S33:{type:"structure",members:{DecommissionTimeout:{type:"integer"},InstanceResizePolicy:{type:"structure",members:{InstancesToTerminate:{shape:"S35"},InstancesToProtect:{shape:"S35"},InstanceTerminationTimeout:{type:"integer"}}}}},S35:{type:"list",member:{}},S41:{type:"list",member:{}}}}},{}],57:[function(e,t,r){t.exports={pagination:{DescribeJobFlows:{result_key:"JobFlows"},ListBootstrapActions:{input_token:"Marker",output_token:"Marker",result_key:"BootstrapActions"},ListClusters:{input_token:"Marker",output_token:"Marker",result_key:"Clusters"},ListInstanceGroups:{input_token:"Marker",output_token:"Marker",result_key:"InstanceGroups"},ListInstances:{input_token:"Marker",output_token:"Marker",result_key:"Instances"},ListSteps:{input_token:"Marker",output_token:"Marker",result_key:"Steps"}}}},{}],58:[function(e,t,r){t.exports={version:2,waiters:{ClusterRunning:{delay:30,operation:"DescribeCluster",maxAttempts:60,acceptors:[{state:"success",matcher:"path",argument:"Cluster.Status.State",expected:"RUNNING"},{state:"success",matcher:"path",argument:"Cluster.Status.State",expected:"WAITING"},{state:"failure",matcher:"path",argument:"Cluster.Status.State",expected:"TERMINATING"},{state:"failure",matcher:"path",argument:"Cluster.Status.State",expected:"TERMINATED"},{state:"failure",matcher:"path",argument:"Cluster.Status.State",expected:"TERMINATED_WITH_ERRORS"}]},StepComplete:{delay:30,operation:"DescribeStep",maxAttempts:60,acceptors:[{state:"success",matcher:"path",argument:"Step.Status.State",expected:"COMPLETED"},{state:"failure",matcher:"path",argument:"Step.Status.State",expected:"FAILED"},{state:"failure",matcher:"path",argument:"Step.Status.State",expected:"CANCELLED"}]}}}},{}],59:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-09-25",endpointPrefix:"elastictranscoder",protocol:"rest-json",serviceFullName:"Amazon Elastic Transcoder",signatureVersion:"v4"},operations:{CancelJob:{http:{method:"DELETE",requestUri:"/2012-09-25/jobs/{Id}",responseCode:202},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},CreateJob:{http:{requestUri:"/2012-09-25/jobs",responseCode:201},input:{type:"structure",required:["PipelineId","Input"],members:{PipelineId:{},Input:{shape:"S5"},Output:{shape:"Sk"},Outputs:{type:"list",member:{shape:"Sk"}},OutputKeyPrefix:{},Playlists:{type:"list",member:{type:"structure",members:{Name:{},Format:{},OutputKeys:{shape:"S1j"},HlsContentProtection:{shape:"S1k"},PlayReadyDrm:{shape:"S1o"}}}},UserMetadata:{shape:"S1t"}}},output:{type:"structure",members:{Job:{shape:"S1w"}}}},CreatePipeline:{http:{requestUri:"/2012-09-25/pipelines",responseCode:201},input:{type:"structure",required:["Name","InputBucket","Role"],members:{Name:{},InputBucket:{},OutputBucket:{},Role:{},AwsKmsKeyArn:{},Notifications:{shape:"S28"},ContentConfig:{shape:"S2a"},ThumbnailConfig:{shape:"S2a"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"},Warnings:{shape:"S2l"}}}},CreatePreset:{http:{requestUri:"/2012-09-25/presets",responseCode:201},input:{type:"structure",required:["Name","Container"],members:{Name:{},Description:{},Container:{},Video:{shape:"S2p"},Audio:{shape:"S35"},Thumbnails:{shape:"S3g"}}},output:{type:"structure",members:{Preset:{shape:"S3k"},Warning:{}}}},DeletePipeline:{http:{method:"DELETE",requestUri:"/2012-09-25/pipelines/{Id}",responseCode:202},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},DeletePreset:{http:{method:"DELETE",requestUri:"/2012-09-25/presets/{Id}",responseCode:202},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},ListJobsByPipeline:{http:{method:"GET",requestUri:"/2012-09-25/jobsByPipeline/{PipelineId}"},input:{type:"structure",required:["PipelineId"],members:{PipelineId:{location:"uri",locationName:"PipelineId"},Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Jobs:{shape:"S3t"},NextPageToken:{}}}},ListJobsByStatus:{http:{method:"GET",requestUri:"/2012-09-25/jobsByStatus/{Status}"},input:{type:"structure",required:["Status"],members:{Status:{location:"uri",locationName:"Status"},Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Jobs:{shape:"S3t"},NextPageToken:{}}}},ListPipelines:{http:{method:"GET",requestUri:"/2012-09-25/pipelines"},input:{type:"structure",members:{Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Pipelines:{type:"list",member:{shape:"S2j"}},NextPageToken:{}}}},ListPresets:{http:{method:"GET",requestUri:"/2012-09-25/presets"},input:{type:"structure",members:{Ascending:{location:"querystring",locationName:"Ascending"},PageToken:{location:"querystring",locationName:"PageToken"}}},output:{type:"structure",members:{Presets:{type:"list",member:{shape:"S3k"}},NextPageToken:{}}}},ReadJob:{http:{method:"GET",requestUri:"/2012-09-25/jobs/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{Job:{shape:"S1w"}}}},ReadPipeline:{http:{method:"GET",requestUri:"/2012-09-25/pipelines/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"},Warnings:{shape:"S2l"}}}},ReadPreset:{http:{method:"GET",requestUri:"/2012-09-25/presets/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{Preset:{shape:"S3k"}}}},TestRole:{http:{requestUri:"/2012-09-25/roleTests",responseCode:200},input:{type:"structure",required:["Role","InputBucket","OutputBucket","Topics"],members:{Role:{},InputBucket:{},OutputBucket:{},Topics:{type:"list",member:{}}}},output:{type:"structure",members:{Success:{},Messages:{type:"list",member:{}}}}},UpdatePipeline:{http:{method:"PUT",requestUri:"/2012-09-25/pipelines/{Id}",responseCode:200},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"},Name:{},InputBucket:{},Role:{},AwsKmsKeyArn:{},Notifications:{shape:"S28"},ContentConfig:{shape:"S2a"},ThumbnailConfig:{shape:"S2a"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"},Warnings:{shape:"S2l"}}}},UpdatePipelineNotifications:{http:{requestUri:"/2012-09-25/pipelines/{Id}/notifications"},input:{type:"structure",required:["Id","Notifications"],members:{Id:{location:"uri",locationName:"Id"},Notifications:{shape:"S28"}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"}}}},UpdatePipelineStatus:{http:{requestUri:"/2012-09-25/pipelines/{Id}/status"},input:{type:"structure",required:["Id","Status"],members:{Id:{location:"uri",locationName:"Id"},Status:{}}},output:{type:"structure",members:{Pipeline:{shape:"S2j"}}}}},shapes:{S5:{type:"structure",members:{Key:{},FrameRate:{},Resolution:{},AspectRatio:{},Interlaced:{},Container:{},Encryption:{shape:"Sc"},DetectedProperties:{type:"structure",members:{Width:{type:"integer"},Height:{type:"integer"},FrameRate:{},FileSize:{type:"long"},DurationMillis:{type:"long"}}}}},Sc:{type:"structure",members:{Mode:{},Key:{},KeyMd5:{},InitializationVector:{}}},Sk:{type:"structure",members:{Key:{},ThumbnailPattern:{},ThumbnailEncryption:{shape:"Sc"},Rotate:{},PresetId:{},SegmentDuration:{},Watermarks:{shape:"So"},AlbumArt:{shape:"Ss"},Composition:{shape:"S10"},Captions:{shape:"S14"},Encryption:{shape:"Sc"}}},So:{type:"list",member:{type:"structure",members:{PresetWatermarkId:{},InputKey:{},Encryption:{shape:"Sc"}}}},Ss:{type:"structure",members:{MergePolicy:{},Artwork:{type:"list",member:{type:"structure",members:{InputKey:{},MaxWidth:{},MaxHeight:{},SizingPolicy:{},PaddingPolicy:{},AlbumArtFormat:{},Encryption:{shape:"Sc"}}}}}},S10:{type:"list",member:{type:"structure",members:{TimeSpan:{type:"structure",members:{StartTime:{},Duration:{}}}}}},S14:{type:"structure",members:{MergePolicy:{},CaptionSources:{type:"list",member:{type:"structure",members:{Key:{},Language:{},TimeOffset:{},Label:{},Encryption:{shape:"Sc"}}}},CaptionFormats:{type:"list",member:{type:"structure",members:{Format:{},Pattern:{},Encryption:{shape:"Sc"}}}}}},S1j:{type:"list",member:{}},S1k:{type:"structure",members:{Method:{},Key:{},KeyMd5:{},InitializationVector:{},LicenseAcquisitionUrl:{},KeyStoragePolicy:{}}},S1o:{type:"structure",members:{Format:{},Key:{},KeyMd5:{},KeyId:{},InitializationVector:{},LicenseAcquisitionUrl:{}}},S1t:{type:"map",key:{},value:{}},S1w:{type:"structure",members:{Id:{},Arn:{},PipelineId:{},Input:{shape:"S5"},Output:{shape:"S1x"},Outputs:{type:"list",member:{shape:"S1x"}},OutputKeyPrefix:{},Playlists:{type:"list",member:{type:"structure",members:{Name:{},Format:{},OutputKeys:{shape:"S1j"},HlsContentProtection:{shape:"S1k"},PlayReadyDrm:{shape:"S1o"},Status:{},StatusDetail:{}}}},Status:{},UserMetadata:{shape:"S1t"},Timing:{type:"structure",members:{SubmitTimeMillis:{type:"long"},StartTimeMillis:{type:"long"},FinishTimeMillis:{type:"long"}}}}},S1x:{type:"structure",members:{Id:{},Key:{},ThumbnailPattern:{},ThumbnailEncryption:{shape:"Sc"},Rotate:{},PresetId:{},SegmentDuration:{},Status:{},StatusDetail:{},Duration:{type:"long"},Width:{type:"integer"},Height:{type:"integer"},FrameRate:{},FileSize:{type:"long"},DurationMillis:{type:"long"},Watermarks:{shape:"So"},AlbumArt:{shape:"Ss"},Composition:{shape:"S10"},Captions:{shape:"S14"},Encryption:{shape:"Sc"},AppliedColorSpaceConversion:{}}},S28:{type:"structure",members:{Progressing:{},Completed:{},Warning:{},Error:{}}},S2a:{type:"structure",members:{Bucket:{},StorageClass:{},Permissions:{type:"list",member:{type:"structure",members:{GranteeType:{},Grantee:{},Access:{type:"list",member:{}}}}}}},S2j:{type:"structure",members:{Id:{},Arn:{},Name:{},Status:{},InputBucket:{},OutputBucket:{},Role:{},AwsKmsKeyArn:{},Notifications:{shape:"S28"},ContentConfig:{shape:"S2a"},ThumbnailConfig:{shape:"S2a"}}},S2l:{type:"list",member:{type:"structure",members:{Code:{},Message:{}}}},S2p:{type:"structure",members:{Codec:{},CodecOptions:{type:"map",key:{},value:{}},KeyframesMaxDist:{},FixedGOP:{},BitRate:{},FrameRate:{},MaxFrameRate:{},Resolution:{},AspectRatio:{},MaxWidth:{},MaxHeight:{},DisplayAspectRatio:{},SizingPolicy:{},PaddingPolicy:{},Watermarks:{type:"list",member:{type:"structure",members:{Id:{},MaxWidth:{},MaxHeight:{},SizingPolicy:{},HorizontalAlign:{},HorizontalOffset:{},VerticalAlign:{},VerticalOffset:{},Opacity:{},Target:{}}}}}},S35:{type:"structure",members:{Codec:{},SampleRate:{},BitRate:{},Channels:{},AudioPackingMode:{},CodecOptions:{type:"structure",members:{Profile:{},BitDepth:{},BitOrder:{},Signed:{}}}}},S3g:{type:"structure",members:{Format:{},Interval:{},Resolution:{},AspectRatio:{},MaxWidth:{},MaxHeight:{},SizingPolicy:{},PaddingPolicy:{}}},S3k:{type:"structure",members:{Id:{},Arn:{},Name:{},Description:{},Container:{},Audio:{shape:"S35"},Video:{shape:"S2p"},Thumbnails:{shape:"S3g"},Type:{}}},S3t:{type:"list",member:{shape:"S1w"}}}}},{}],60:[function(e,t,r){t.exports={pagination:{ListJobsByPipeline:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Jobs"},ListJobsByStatus:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Jobs"},ListPipelines:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Pipelines"},ListPresets:{input_token:"PageToken",output_token:"NextPageToken",result_key:"Presets"}}}},{}],61:[function(e,t,r){t.exports={version:2,waiters:{JobComplete:{delay:30,operation:"ReadJob",maxAttempts:120,acceptors:[{expected:"Complete",matcher:"path",state:"success",argument:"Job.Status"},{expected:"Canceled",matcher:"path",state:"failure",argument:"Job.Status"},{expected:"Error",matcher:"path",state:"failure",argument:"Job.Status"}]}}}},{}],62:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-12-01",endpointPrefix:"email",protocol:"query",serviceAbbreviation:"Amazon SES",serviceFullName:"Amazon Simple Email Service",signatureVersion:"v4",signingName:"ses",xmlNamespace:"http://ses.amazonaws.com/doc/2010-12-01/"},operations:{CloneReceiptRuleSet:{input:{type:"structure",required:["RuleSetName","OriginalRuleSetName"],members:{RuleSetName:{},OriginalRuleSetName:{}}},output:{resultWrapper:"CloneReceiptRuleSetResult",type:"structure",members:{}}},CreateReceiptFilter:{input:{type:"structure",required:["Filter"],members:{Filter:{shape:"S5"}}},output:{resultWrapper:"CreateReceiptFilterResult",type:"structure",members:{}}},CreateReceiptRule:{input:{type:"structure",required:["RuleSetName","Rule"],members:{RuleSetName:{},After:{},Rule:{shape:"Sd"}}},output:{resultWrapper:"CreateReceiptRuleResult",type:"structure",members:{}}},CreateReceiptRuleSet:{input:{type:"structure",required:["RuleSetName"],members:{RuleSetName:{}}},output:{resultWrapper:"CreateReceiptRuleSetResult",type:"structure",members:{}}},DeleteIdentity:{input:{type:"structure",required:["Identity"],members:{Identity:{}}},output:{resultWrapper:"DeleteIdentityResult",type:"structure",members:{}}},DeleteIdentityPolicy:{input:{type:"structure",required:["Identity","PolicyName"],members:{Identity:{},PolicyName:{}}},output:{resultWrapper:"DeleteIdentityPolicyResult",type:"structure", -members:{}}},DeleteReceiptFilter:{input:{type:"structure",required:["FilterName"],members:{FilterName:{}}},output:{resultWrapper:"DeleteReceiptFilterResult",type:"structure",members:{}}},DeleteReceiptRule:{input:{type:"structure",required:["RuleSetName","RuleName"],members:{RuleSetName:{},RuleName:{}}},output:{resultWrapper:"DeleteReceiptRuleResult",type:"structure",members:{}}},DeleteReceiptRuleSet:{input:{type:"structure",required:["RuleSetName"],members:{RuleSetName:{}}},output:{resultWrapper:"DeleteReceiptRuleSetResult",type:"structure",members:{}}},DeleteVerifiedEmailAddress:{input:{type:"structure",required:["EmailAddress"],members:{EmailAddress:{}}}},DescribeActiveReceiptRuleSet:{input:{type:"structure",members:{}},output:{resultWrapper:"DescribeActiveReceiptRuleSetResult",type:"structure",members:{Metadata:{shape:"S1l"},Rules:{shape:"S1n"}}}},DescribeReceiptRule:{input:{type:"structure",required:["RuleSetName","RuleName"],members:{RuleSetName:{},RuleName:{}}},output:{resultWrapper:"DescribeReceiptRuleResult",type:"structure",members:{Rule:{shape:"Sd"}}}},DescribeReceiptRuleSet:{input:{type:"structure",required:["RuleSetName"],members:{RuleSetName:{}}},output:{resultWrapper:"DescribeReceiptRuleSetResult",type:"structure",members:{Metadata:{shape:"S1l"},Rules:{shape:"S1n"}}}},GetIdentityDkimAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityDkimAttributesResult",type:"structure",required:["DkimAttributes"],members:{DkimAttributes:{type:"map",key:{},value:{type:"structure",required:["DkimEnabled","DkimVerificationStatus"],members:{DkimEnabled:{type:"boolean"},DkimVerificationStatus:{},DkimTokens:{shape:"S1y"}}}}}}},GetIdentityMailFromDomainAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityMailFromDomainAttributesResult",type:"structure",required:["MailFromDomainAttributes"],members:{MailFromDomainAttributes:{type:"map",key:{},value:{type:"structure",required:["MailFromDomain","MailFromDomainStatus","BehaviorOnMXFailure"],members:{MailFromDomain:{},MailFromDomainStatus:{},BehaviorOnMXFailure:{}}}}}}},GetIdentityNotificationAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityNotificationAttributesResult",type:"structure",required:["NotificationAttributes"],members:{NotificationAttributes:{type:"map",key:{},value:{type:"structure",required:["BounceTopic","ComplaintTopic","DeliveryTopic","ForwardingEnabled"],members:{BounceTopic:{},ComplaintTopic:{},DeliveryTopic:{},ForwardingEnabled:{type:"boolean"},HeadersInBounceNotificationsEnabled:{type:"boolean"},HeadersInComplaintNotificationsEnabled:{type:"boolean"},HeadersInDeliveryNotificationsEnabled:{type:"boolean"}}}}}}},GetIdentityPolicies:{input:{type:"structure",required:["Identity","PolicyNames"],members:{Identity:{},PolicyNames:{shape:"S2d"}}},output:{resultWrapper:"GetIdentityPoliciesResult",type:"structure",required:["Policies"],members:{Policies:{type:"map",key:{},value:{}}}}},GetIdentityVerificationAttributes:{input:{type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"}}},output:{resultWrapper:"GetIdentityVerificationAttributesResult",type:"structure",required:["VerificationAttributes"],members:{VerificationAttributes:{type:"map",key:{},value:{type:"structure",required:["VerificationStatus"],members:{VerificationStatus:{},VerificationToken:{}}}}}}},GetSendQuota:{output:{resultWrapper:"GetSendQuotaResult",type:"structure",members:{Max24HourSend:{type:"double"},MaxSendRate:{type:"double"},SentLast24Hours:{type:"double"}}}},GetSendStatistics:{output:{resultWrapper:"GetSendStatisticsResult",type:"structure",members:{SendDataPoints:{type:"list",member:{type:"structure",members:{Timestamp:{type:"timestamp"},DeliveryAttempts:{type:"long"},Bounces:{type:"long"},Complaints:{type:"long"},Rejects:{type:"long"}}}}}}},ListIdentities:{input:{type:"structure",members:{IdentityType:{},NextToken:{},MaxItems:{type:"integer"}}},output:{resultWrapper:"ListIdentitiesResult",type:"structure",required:["Identities"],members:{Identities:{shape:"S1t"},NextToken:{}}}},ListIdentityPolicies:{input:{type:"structure",required:["Identity"],members:{Identity:{}}},output:{resultWrapper:"ListIdentityPoliciesResult",type:"structure",required:["PolicyNames"],members:{PolicyNames:{shape:"S2d"}}}},ListReceiptFilters:{input:{type:"structure",members:{}},output:{resultWrapper:"ListReceiptFiltersResult",type:"structure",members:{Filters:{type:"list",member:{shape:"S5"}}}}},ListReceiptRuleSets:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListReceiptRuleSetsResult",type:"structure",members:{RuleSets:{type:"list",member:{shape:"S1l"}},NextToken:{}}}},ListVerifiedEmailAddresses:{output:{resultWrapper:"ListVerifiedEmailAddressesResult",type:"structure",members:{VerifiedEmailAddresses:{shape:"S37"}}}},PutIdentityPolicy:{input:{type:"structure",required:["Identity","PolicyName","Policy"],members:{Identity:{},PolicyName:{},Policy:{}}},output:{resultWrapper:"PutIdentityPolicyResult",type:"structure",members:{}}},ReorderReceiptRuleSet:{input:{type:"structure",required:["RuleSetName","RuleNames"],members:{RuleSetName:{},RuleNames:{type:"list",member:{}}}},output:{resultWrapper:"ReorderReceiptRuleSetResult",type:"structure",members:{}}},SendBounce:{input:{type:"structure",required:["OriginalMessageId","BounceSender","BouncedRecipientInfoList"],members:{OriginalMessageId:{},BounceSender:{},Explanation:{},MessageDsn:{type:"structure",required:["ReportingMta"],members:{ReportingMta:{},ArrivalDate:{type:"timestamp"},ExtensionFields:{shape:"S3j"}}},BouncedRecipientInfoList:{type:"list",member:{type:"structure",required:["Recipient"],members:{Recipient:{},RecipientArn:{},BounceType:{},RecipientDsnFields:{type:"structure",required:["Action","Status"],members:{FinalRecipient:{},Action:{},RemoteMta:{},Status:{},DiagnosticCode:{},LastAttemptDate:{type:"timestamp"},ExtensionFields:{shape:"S3j"}}}}}},BounceSenderArn:{}}},output:{resultWrapper:"SendBounceResult",type:"structure",members:{MessageId:{}}}},SendEmail:{input:{type:"structure",required:["Source","Destination","Message"],members:{Source:{},Destination:{type:"structure",members:{ToAddresses:{shape:"S37"},CcAddresses:{shape:"S37"},BccAddresses:{shape:"S37"}}},Message:{type:"structure",required:["Subject","Body"],members:{Subject:{shape:"S40"},Body:{type:"structure",members:{Text:{shape:"S40"},Html:{shape:"S40"}}}}},ReplyToAddresses:{shape:"S37"},ReturnPath:{},SourceArn:{},ReturnPathArn:{}}},output:{resultWrapper:"SendEmailResult",type:"structure",required:["MessageId"],members:{MessageId:{}}}},SendRawEmail:{input:{type:"structure",required:["RawMessage"],members:{Source:{},Destinations:{shape:"S37"},RawMessage:{type:"structure",required:["Data"],members:{Data:{type:"blob"}}},FromArn:{},SourceArn:{},ReturnPathArn:{}}},output:{resultWrapper:"SendRawEmailResult",type:"structure",required:["MessageId"],members:{MessageId:{}}}},SetActiveReceiptRuleSet:{input:{type:"structure",members:{RuleSetName:{}}},output:{resultWrapper:"SetActiveReceiptRuleSetResult",type:"structure",members:{}}},SetIdentityDkimEnabled:{input:{type:"structure",required:["Identity","DkimEnabled"],members:{Identity:{},DkimEnabled:{type:"boolean"}}},output:{resultWrapper:"SetIdentityDkimEnabledResult",type:"structure",members:{}}},SetIdentityFeedbackForwardingEnabled:{input:{type:"structure",required:["Identity","ForwardingEnabled"],members:{Identity:{},ForwardingEnabled:{type:"boolean"}}},output:{resultWrapper:"SetIdentityFeedbackForwardingEnabledResult",type:"structure",members:{}}},SetIdentityHeadersInNotificationsEnabled:{input:{type:"structure",required:["Identity","NotificationType","Enabled"],members:{Identity:{},NotificationType:{},Enabled:{type:"boolean"}}},output:{resultWrapper:"SetIdentityHeadersInNotificationsEnabledResult",type:"structure",members:{}}},SetIdentityMailFromDomain:{input:{type:"structure",required:["Identity"],members:{Identity:{},MailFromDomain:{},BehaviorOnMXFailure:{}}},output:{resultWrapper:"SetIdentityMailFromDomainResult",type:"structure",members:{}}},SetIdentityNotificationTopic:{input:{type:"structure",required:["Identity","NotificationType"],members:{Identity:{},NotificationType:{},SnsTopic:{}}},output:{resultWrapper:"SetIdentityNotificationTopicResult",type:"structure",members:{}}},SetReceiptRulePosition:{input:{type:"structure",required:["RuleSetName","RuleName"],members:{RuleSetName:{},RuleName:{},After:{}}},output:{resultWrapper:"SetReceiptRulePositionResult",type:"structure",members:{}}},UpdateReceiptRule:{input:{type:"structure",required:["RuleSetName","Rule"],members:{RuleSetName:{},Rule:{shape:"Sd"}}},output:{resultWrapper:"UpdateReceiptRuleResult",type:"structure",members:{}}},VerifyDomainDkim:{input:{type:"structure",required:["Domain"],members:{Domain:{}}},output:{resultWrapper:"VerifyDomainDkimResult",type:"structure",required:["DkimTokens"],members:{DkimTokens:{shape:"S1y"}}}},VerifyDomainIdentity:{input:{type:"structure",required:["Domain"],members:{Domain:{}}},output:{resultWrapper:"VerifyDomainIdentityResult",type:"structure",required:["VerificationToken"],members:{VerificationToken:{}}}},VerifyEmailAddress:{input:{type:"structure",required:["EmailAddress"],members:{EmailAddress:{}}}},VerifyEmailIdentity:{input:{type:"structure",required:["EmailAddress"],members:{EmailAddress:{}}},output:{resultWrapper:"VerifyEmailIdentityResult",type:"structure",members:{}}}},shapes:{S5:{type:"structure",required:["Name","IpFilter"],members:{Name:{},IpFilter:{type:"structure",required:["Policy","Cidr"],members:{Policy:{},Cidr:{}}}}},Sd:{type:"structure",required:["Name"],members:{Name:{},Enabled:{type:"boolean"},TlsPolicy:{},Recipients:{type:"list",member:{}},Actions:{type:"list",member:{type:"structure",members:{S3Action:{type:"structure",required:["BucketName"],members:{TopicArn:{},BucketName:{},ObjectKeyPrefix:{},KmsKeyArn:{}}},BounceAction:{type:"structure",required:["SmtpReplyCode","Message","Sender"],members:{TopicArn:{},SmtpReplyCode:{},StatusCode:{},Message:{},Sender:{}}},WorkmailAction:{type:"structure",required:["OrganizationArn"],members:{TopicArn:{},OrganizationArn:{}}},LambdaAction:{type:"structure",required:["FunctionArn"],members:{TopicArn:{},FunctionArn:{},InvocationType:{}}},StopAction:{type:"structure",required:["Scope"],members:{Scope:{},TopicArn:{}}},AddHeaderAction:{type:"structure",required:["HeaderName","HeaderValue"],members:{HeaderName:{},HeaderValue:{}}},SNSAction:{type:"structure",required:["TopicArn"],members:{TopicArn:{},Encoding:{}}}}}},ScanEnabled:{type:"boolean"}}},S1l:{type:"structure",members:{Name:{},CreatedTimestamp:{type:"timestamp"}}},S1n:{type:"list",member:{shape:"Sd"}},S1t:{type:"list",member:{}},S1y:{type:"list",member:{}},S2d:{type:"list",member:{}},S37:{type:"list",member:{}},S3j:{type:"list",member:{type:"structure",required:["Name","Value"],members:{Name:{},Value:{}}}},S40:{type:"structure",required:["Data"],members:{Data:{},Charset:{}}}}}},{}],63:[function(e,t,r){t.exports={pagination:{ListIdentities:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxItems",result_key:"Identities"},ListVerifiedEmailAddresses:{result_key:"VerifiedEmailAddresses"}}}},{}],64:[function(e,t,r){t.exports={version:2,waiters:{IdentityExists:{delay:3,operation:"GetIdentityVerificationAttributes",maxAttempts:20,acceptors:[{expected:"Success",matcher:"pathAll",state:"success",argument:"VerificationAttributes.*.VerificationStatus"}]}}}},{}],65:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-10-07",endpointPrefix:"events",jsonVersion:"1.1",serviceFullName:"Amazon CloudWatch Events",signatureVersion:"v4",targetPrefix:"AWSEvents",protocol:"json"},operations:{DeleteRule:{input:{type:"structure",required:["Name"],members:{Name:{}}}},DescribeRule:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Name:{},Arn:{},EventPattern:{},ScheduleExpression:{},State:{},Description:{},RoleArn:{}}}},DisableRule:{input:{type:"structure",required:["Name"],members:{Name:{}}}},EnableRule:{input:{type:"structure",required:["Name"],members:{Name:{}}}},ListRuleNamesByTarget:{input:{type:"structure",required:["TargetArn"],members:{TargetArn:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{RuleNames:{type:"list",member:{}},NextToken:{}}}},ListRules:{input:{type:"structure",members:{NamePrefix:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Rules:{type:"list",member:{type:"structure",members:{Name:{},Arn:{},EventPattern:{},State:{},Description:{},ScheduleExpression:{},RoleArn:{}}}},NextToken:{}}}},ListTargetsByRule:{input:{type:"structure",required:["Rule"],members:{Rule:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Targets:{shape:"Sp"},NextToken:{}}}},PutEvents:{input:{type:"structure",required:["Entries"],members:{Entries:{type:"list",member:{type:"structure",members:{Time:{type:"timestamp"},Source:{},Resources:{type:"list",member:{}},DetailType:{},Detail:{}}}}}},output:{type:"structure",members:{FailedEntryCount:{type:"integer"},Entries:{type:"list",member:{type:"structure",members:{EventId:{},ErrorCode:{},ErrorMessage:{}}}}}}},PutRule:{input:{type:"structure",required:["Name"],members:{Name:{},ScheduleExpression:{},EventPattern:{},State:{},Description:{},RoleArn:{}}},output:{type:"structure",members:{RuleArn:{}}}},PutTargets:{input:{type:"structure",required:["Rule","Targets"],members:{Rule:{},Targets:{shape:"Sp"}}},output:{type:"structure",members:{FailedEntryCount:{type:"integer"},FailedEntries:{type:"list",member:{type:"structure",members:{TargetId:{},ErrorCode:{},ErrorMessage:{}}}}}}},RemoveTargets:{input:{type:"structure",required:["Rule","Ids"],members:{Rule:{},Ids:{type:"list",member:{}}}},output:{type:"structure",members:{FailedEntryCount:{type:"integer"},FailedEntries:{type:"list",member:{type:"structure",members:{TargetId:{},ErrorCode:{},ErrorMessage:{}}}}}}},TestEventPattern:{input:{type:"structure",required:["EventPattern","Event"],members:{EventPattern:{},Event:{}}},output:{type:"structure",members:{Result:{type:"boolean"}}}}},shapes:{Sp:{type:"list",member:{type:"structure",required:["Id","Arn"],members:{Id:{},Arn:{},Input:{},InputPath:{}}}}},examples:{}}},{}],66:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-08-04",endpointPrefix:"firehose",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Firehose",serviceFullName:"Amazon Kinesis Firehose",signatureVersion:"v4",targetPrefix:"Firehose_20150804"},operations:{CreateDeliveryStream:{input:{type:"structure",required:["DeliveryStreamName"],members:{DeliveryStreamName:{},S3DestinationConfiguration:{shape:"S3"},RedshiftDestinationConfiguration:{type:"structure",required:["RoleARN","ClusterJDBCURL","CopyCommand","Username","Password","S3Configuration"],members:{RoleARN:{},ClusterJDBCURL:{},CopyCommand:{shape:"Sl"},Username:{shape:"Sp"},Password:{shape:"Sq"},RetryOptions:{shape:"Sr"},S3Configuration:{shape:"S3"},CloudWatchLoggingOptions:{shape:"Sf"}}},ElasticsearchDestinationConfiguration:{type:"structure",required:["RoleARN","DomainARN","IndexName","TypeName","S3Configuration"],members:{RoleARN:{},DomainARN:{},IndexName:{},TypeName:{},IndexRotationPeriod:{},BufferingHints:{shape:"Sy"},RetryOptions:{shape:"S11"},S3BackupMode:{},S3Configuration:{shape:"S3"},CloudWatchLoggingOptions:{shape:"Sf"}}}}},output:{type:"structure",members:{DeliveryStreamARN:{}}}},DeleteDeliveryStream:{input:{type:"structure",required:["DeliveryStreamName"],members:{DeliveryStreamName:{}}},output:{type:"structure",members:{}}},DescribeDeliveryStream:{input:{type:"structure",required:["DeliveryStreamName"],members:{DeliveryStreamName:{},Limit:{type:"integer"},ExclusiveStartDestinationId:{}}},output:{type:"structure",required:["DeliveryStreamDescription"],members:{DeliveryStreamDescription:{type:"structure",required:["DeliveryStreamName","DeliveryStreamARN","DeliveryStreamStatus","VersionId","Destinations","HasMoreDestinations"],members:{DeliveryStreamName:{},DeliveryStreamARN:{},DeliveryStreamStatus:{},VersionId:{},CreateTimestamp:{type:"timestamp"},LastUpdateTimestamp:{type:"timestamp"},Destinations:{type:"list",member:{type:"structure",required:["DestinationId"],members:{DestinationId:{},S3DestinationDescription:{shape:"S1i"},RedshiftDestinationDescription:{type:"structure",required:["RoleARN","ClusterJDBCURL","CopyCommand","Username","S3DestinationDescription"],members:{RoleARN:{},ClusterJDBCURL:{},CopyCommand:{shape:"Sl"},Username:{shape:"Sp"},RetryOptions:{shape:"Sr"},S3DestinationDescription:{shape:"S1i"},CloudWatchLoggingOptions:{shape:"Sf"}}},ElasticsearchDestinationDescription:{type:"structure",members:{RoleARN:{},DomainARN:{},IndexName:{},TypeName:{},IndexRotationPeriod:{},BufferingHints:{shape:"Sy"},RetryOptions:{shape:"S11"},S3BackupMode:{},S3DestinationDescription:{shape:"S1i"},CloudWatchLoggingOptions:{shape:"Sf"}}}}}},HasMoreDestinations:{type:"boolean"}}}}}},ListDeliveryStreams:{input:{type:"structure",members:{Limit:{type:"integer"},ExclusiveStartDeliveryStreamName:{}}},output:{type:"structure",required:["DeliveryStreamNames","HasMoreDeliveryStreams"],members:{DeliveryStreamNames:{type:"list",member:{}},HasMoreDeliveryStreams:{type:"boolean"}}}},PutRecord:{input:{type:"structure",required:["DeliveryStreamName","Record"],members:{DeliveryStreamName:{},Record:{shape:"S1q"}}},output:{type:"structure",required:["RecordId"],members:{RecordId:{}}}},PutRecordBatch:{input:{type:"structure",required:["DeliveryStreamName","Records"],members:{DeliveryStreamName:{},Records:{type:"list",member:{shape:"S1q"}}}},output:{type:"structure",required:["FailedPutCount","RequestResponses"],members:{FailedPutCount:{type:"integer"},RequestResponses:{type:"list",member:{type:"structure",members:{RecordId:{},ErrorCode:{},ErrorMessage:{}}}}}}},UpdateDestination:{input:{type:"structure",required:["DeliveryStreamName","CurrentDeliveryStreamVersionId","DestinationId"],members:{DeliveryStreamName:{},CurrentDeliveryStreamVersionId:{},DestinationId:{},S3DestinationUpdate:{shape:"S23"},RedshiftDestinationUpdate:{type:"structure",members:{RoleARN:{},ClusterJDBCURL:{},CopyCommand:{shape:"Sl"},Username:{shape:"Sp"},Password:{shape:"Sq"},RetryOptions:{shape:"Sr"},S3Update:{shape:"S23"},CloudWatchLoggingOptions:{shape:"Sf"}}},ElasticsearchDestinationUpdate:{type:"structure",members:{RoleARN:{},DomainARN:{},IndexName:{},TypeName:{},IndexRotationPeriod:{},BufferingHints:{shape:"Sy"},RetryOptions:{shape:"S11"},S3Update:{shape:"S23"},CloudWatchLoggingOptions:{shape:"Sf"}}}}},output:{type:"structure",members:{}}}},shapes:{S3:{type:"structure",required:["RoleARN","BucketARN"],members:{RoleARN:{},BucketARN:{},Prefix:{},BufferingHints:{shape:"S7"},CompressionFormat:{},EncryptionConfiguration:{shape:"Sb"},CloudWatchLoggingOptions:{shape:"Sf"}}},S7:{type:"structure",members:{SizeInMBs:{type:"integer"},IntervalInSeconds:{type:"integer"}}},Sb:{type:"structure",members:{NoEncryptionConfig:{},KMSEncryptionConfig:{type:"structure",required:["AWSKMSKeyARN"],members:{AWSKMSKeyARN:{}}}}},Sf:{type:"structure",members:{Enabled:{type:"boolean"},LogGroupName:{},LogStreamName:{}}},Sl:{type:"structure",required:["DataTableName"],members:{DataTableName:{},DataTableColumns:{},CopyOptions:{}}},Sp:{type:"string",sensitive:!0},Sq:{type:"string",sensitive:!0},Sr:{type:"structure",members:{DurationInSeconds:{type:"integer"}}},Sy:{type:"structure",members:{IntervalInSeconds:{type:"integer"},SizeInMBs:{type:"integer"}}},S11:{type:"structure",members:{DurationInSeconds:{type:"integer"}}},S1i:{type:"structure",required:["RoleARN","BucketARN","BufferingHints","CompressionFormat","EncryptionConfiguration"],members:{RoleARN:{},BucketARN:{},Prefix:{},BufferingHints:{shape:"S7"},CompressionFormat:{},EncryptionConfiguration:{shape:"Sb"},CloudWatchLoggingOptions:{shape:"Sf"}}},S1q:{type:"structure",required:["Data"],members:{Data:{type:"blob"}}},S23:{type:"structure",members:{RoleARN:{},BucketARN:{},Prefix:{},BufferingHints:{shape:"S7"},CompressionFormat:{},EncryptionConfiguration:{shape:"Sb"},CloudWatchLoggingOptions:{shape:"Sf"}}}}}},{}],67:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-10-01",endpointPrefix:"gamelift",jsonVersion:"1.1",serviceFullName:"Amazon GameLift",signatureVersion:"v4",targetPrefix:"GameLift",protocol:"json"},operations:{CreateAlias:{input:{type:"structure",required:["Name","RoutingStrategy"],members:{Name:{},Description:{},RoutingStrategy:{shape:"S3"}}},output:{type:"structure",members:{Alias:{shape:"S8"}}}},CreateBuild:{input:{type:"structure",members:{Name:{},Version:{},StorageLocation:{shape:"Sc"},OperatingSystem:{}}},output:{type:"structure",members:{Build:{shape:"Sg"},UploadCredentials:{shape:"Sk"},StorageLocation:{shape:"Sc"}}}},CreateFleet:{input:{type:"structure",required:["Name","BuildId","EC2InstanceType"],members:{Name:{},Description:{},BuildId:{},ServerLaunchPath:{},ServerLaunchParameters:{},LogPaths:{shape:"Sm"},EC2InstanceType:{},EC2InboundPermissions:{shape:"So"},NewGameSessionProtectionPolicy:{},RuntimeConfiguration:{shape:"Su"}}},output:{type:"structure",members:{FleetAttributes:{shape:"Sz"}}}},CreateGameSession:{input:{type:"structure",required:["MaximumPlayerSessionCount"],members:{FleetId:{},AliasId:{},MaximumPlayerSessionCount:{type:"integer"},Name:{},GameProperties:{shape:"S13"}}},output:{type:"structure",members:{GameSession:{shape:"S18"}}}},CreatePlayerSession:{input:{type:"structure",required:["GameSessionId","PlayerId"],members:{GameSessionId:{},PlayerId:{}}},output:{type:"structure",members:{PlayerSession:{shape:"S1f"}}}},CreatePlayerSessions:{input:{type:"structure",required:["GameSessionId","PlayerIds"],members:{GameSessionId:{},PlayerIds:{type:"list",member:{}}}},output:{type:"structure",members:{PlayerSessions:{shape:"S1l"}}}},DeleteAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{}}}},DeleteBuild:{input:{type:"structure",required:["BuildId"],members:{BuildId:{}}}},DeleteFleet:{input:{type:"structure",required:["FleetId"],members:{FleetId:{}}}},DeleteScalingPolicy:{input:{type:"structure",required:["Name","FleetId"],members:{Name:{},FleetId:{}}}},DescribeAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{}}},output:{type:"structure",members:{Alias:{shape:"S8"}}}},DescribeBuild:{input:{type:"structure",required:["BuildId"],members:{BuildId:{}}},output:{type:"structure",members:{Build:{shape:"Sg"}}}},DescribeEC2InstanceLimits:{input:{type:"structure",members:{EC2InstanceType:{}}},output:{type:"structure",members:{EC2InstanceLimits:{type:"list",member:{type:"structure",members:{EC2InstanceType:{},CurrentInstances:{type:"integer"},InstanceLimit:{type:"integer"}}}}}}},DescribeFleetAttributes:{input:{type:"structure",members:{FleetIds:{shape:"S1z"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetAttributes:{type:"list",member:{shape:"Sz"}},NextToken:{}}}},DescribeFleetCapacity:{input:{type:"structure",members:{FleetIds:{shape:"S1z"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetCapacity:{type:"list",member:{type:"structure",members:{FleetId:{},InstanceType:{},InstanceCounts:{type:"structure",members:{DESIRED:{type:"integer"},MINIMUM:{type:"integer"},MAXIMUM:{type:"integer"},PENDING:{type:"integer"},ACTIVE:{type:"integer"},IDLE:{type:"integer"},TERMINATING:{type:"integer"}}}}}},NextToken:{}}}},DescribeFleetEvents:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Events:{type:"list",member:{type:"structure",members:{EventId:{},ResourceId:{},EventCode:{},Message:{},EventTime:{type:"timestamp"}}}},NextToken:{}}}},DescribeFleetPortSettings:{input:{type:"structure",required:["FleetId"],members:{FleetId:{}}},output:{type:"structure",members:{InboundPermissions:{shape:"So"}}}},DescribeFleetUtilization:{input:{type:"structure",members:{FleetIds:{shape:"S1z"},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetUtilization:{type:"list",member:{type:"structure",members:{FleetId:{},ActiveServerProcessCount:{type:"integer"},ActiveGameSessionCount:{type:"integer"},CurrentPlayerSessionCount:{type:"integer"},MaximumPlayerSessionCount:{type:"integer"}}}},NextToken:{}}}},DescribeGameSessionDetails:{input:{type:"structure",members:{FleetId:{},GameSessionId:{},AliasId:{},StatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{GameSessionDetails:{type:"list",member:{type:"structure",members:{GameSession:{shape:"S18"},ProtectionPolicy:{}}}},NextToken:{}}}},DescribeGameSessions:{input:{type:"structure",members:{FleetId:{},GameSessionId:{},AliasId:{},StatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{GameSessions:{shape:"S2o"},NextToken:{}}}},DescribePlayerSessions:{input:{type:"structure",members:{GameSessionId:{},PlayerId:{},PlayerSessionId:{},PlayerSessionStatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{PlayerSessions:{shape:"S1l"},NextToken:{}}}},DescribeRuntimeConfiguration:{input:{type:"structure",required:["FleetId"],members:{FleetId:{}}},output:{type:"structure",members:{RuntimeConfiguration:{shape:"Su"}}}},DescribeScalingPolicies:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},StatusFilter:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{ScalingPolicies:{type:"list",member:{type:"structure",members:{FleetId:{},Name:{},Status:{},ScalingAdjustment:{type:"integer"},ScalingAdjustmentType:{},ComparisonOperator:{},Threshold:{type:"double"},EvaluationPeriods:{type:"integer"},MetricName:{}}}},NextToken:{}}}},GetGameSessionLogUrl:{input:{type:"structure",required:["GameSessionId"],members:{GameSessionId:{}}},output:{type:"structure",members:{PreSignedUrl:{}}}},ListAliases:{input:{type:"structure",members:{RoutingStrategyType:{},Name:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Aliases:{type:"list",member:{shape:"S8"}},NextToken:{}}}},ListBuilds:{input:{type:"structure",members:{Status:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Builds:{type:"list",member:{shape:"Sg"}},NextToken:{}}}},ListFleets:{input:{type:"structure",members:{BuildId:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{FleetIds:{shape:"S1z"},NextToken:{}}}},PutScalingPolicy:{input:{type:"structure",required:["Name","FleetId","ScalingAdjustment","ScalingAdjustmentType","Threshold","ComparisonOperator","EvaluationPeriods","MetricName"],members:{Name:{},FleetId:{},ScalingAdjustment:{type:"integer"},ScalingAdjustmentType:{},Threshold:{type:"double"},ComparisonOperator:{},EvaluationPeriods:{type:"integer"},MetricName:{}}},output:{type:"structure",members:{Name:{}}}},RequestUploadCredentials:{input:{type:"structure",required:["BuildId"],members:{BuildId:{}}},output:{type:"structure",members:{UploadCredentials:{shape:"Sk"},StorageLocation:{shape:"Sc"}}}},ResolveAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{}}},output:{type:"structure",members:{FleetId:{}}}},SearchGameSessions:{input:{type:"structure",members:{FleetId:{},AliasId:{},FilterExpression:{},SortExpression:{},Limit:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{GameSessions:{shape:"S2o"},NextToken:{}}}},UpdateAlias:{input:{type:"structure",required:["AliasId"],members:{AliasId:{},Name:{},Description:{},RoutingStrategy:{shape:"S3"}}},output:{type:"structure",members:{Alias:{shape:"S8"}}}},UpdateBuild:{input:{type:"structure",required:["BuildId"],members:{BuildId:{},Name:{},Version:{}}},output:{type:"structure",members:{Build:{shape:"Sg"}}}},UpdateFleetAttributes:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},Name:{},Description:{},NewGameSessionProtectionPolicy:{}}},output:{type:"structure",members:{FleetId:{}}}},UpdateFleetCapacity:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},DesiredInstances:{type:"integer"},MinSize:{type:"integer"},MaxSize:{type:"integer"}}},output:{type:"structure",members:{FleetId:{}}}},UpdateFleetPortSettings:{input:{type:"structure",required:["FleetId"],members:{FleetId:{},InboundPermissionAuthorizations:{shape:"So"},InboundPermissionRevocations:{shape:"So"}}},output:{type:"structure",members:{FleetId:{}}}},UpdateGameSession:{input:{type:"structure",required:["GameSessionId"],members:{GameSessionId:{},MaximumPlayerSessionCount:{type:"integer"},Name:{},PlayerSessionCreationPolicy:{},ProtectionPolicy:{}}},output:{type:"structure",members:{GameSession:{shape:"S18"}}}},UpdateRuntimeConfiguration:{input:{type:"structure",required:["FleetId","RuntimeConfiguration"],members:{FleetId:{},RuntimeConfiguration:{shape:"Su"}}},output:{type:"structure",members:{RuntimeConfiguration:{shape:"Su"}}}}},shapes:{S3:{type:"structure",members:{Type:{},FleetId:{},Message:{}}},S8:{type:"structure",members:{AliasId:{},Name:{},Description:{},RoutingStrategy:{shape:"S3"},CreationTime:{type:"timestamp"},LastUpdatedTime:{type:"timestamp"}}},Sc:{type:"structure",members:{Bucket:{},Key:{},RoleArn:{}}},Sg:{type:"structure",members:{BuildId:{},Name:{},Version:{},Status:{},SizeOnDisk:{type:"long"},OperatingSystem:{},CreationTime:{type:"timestamp"}}},Sk:{type:"structure",members:{AccessKeyId:{},SecretAccessKey:{},SessionToken:{}},sensitive:!0},Sm:{type:"list",member:{}},So:{type:"list",member:{type:"structure",required:["FromPort","ToPort","IpRange","Protocol"],members:{FromPort:{type:"integer"},ToPort:{type:"integer"},IpRange:{},Protocol:{}}}},Su:{type:"structure",members:{ServerProcesses:{type:"list",member:{type:"structure",required:["LaunchPath","ConcurrentExecutions"],members:{LaunchPath:{},Parameters:{},ConcurrentExecutions:{type:"integer"}}}}}},Sz:{type:"structure",members:{FleetId:{},Description:{},Name:{},CreationTime:{type:"timestamp"},TerminationTime:{type:"timestamp"},Status:{},BuildId:{},ServerLaunchPath:{},ServerLaunchParameters:{},LogPaths:{shape:"Sm"},NewGameSessionProtectionPolicy:{},OperatingSystem:{}}},S13:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},S18:{type:"structure",members:{GameSessionId:{},Name:{},FleetId:{},CreationTime:{type:"timestamp"},TerminationTime:{type:"timestamp"},CurrentPlayerSessionCount:{type:"integer"},MaximumPlayerSessionCount:{type:"integer"},Status:{},GameProperties:{shape:"S13"},IpAddress:{},Port:{type:"integer"},PlayerSessionCreationPolicy:{}}},S1f:{type:"structure",members:{PlayerSessionId:{},PlayerId:{},GameSessionId:{},FleetId:{},CreationTime:{type:"timestamp"},TerminationTime:{type:"timestamp"},Status:{},IpAddress:{},Port:{type:"integer"}}},S1l:{type:"list",member:{shape:"S1f"}},S1z:{type:"list",member:{}},S2o:{type:"list",member:{shape:"S18"}}},examples:{}}},{}],68:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2016-02-16",endpointPrefix:"inspector",jsonVersion:"1.1",protocol:"json",serviceFullName:"Amazon Inspector",signatureVersion:"v4",targetPrefix:"InspectorService"},operations:{AddAttributesToFindings:{input:{type:"structure",required:["findingArns","attributes"],members:{findingArns:{shape:"S2"},attributes:{shape:"S4"}}},output:{type:"structure",required:["failedItems"],members:{failedItems:{shape:"S9"}}}},CreateAssessmentTarget:{input:{type:"structure",required:["assessmentTargetName","resourceGroupArn"],members:{assessmentTargetName:{},resourceGroupArn:{}}},output:{type:"structure",required:["assessmentTargetArn"],members:{assessmentTargetArn:{}}}},CreateAssessmentTemplate:{input:{type:"structure",required:["assessmentTargetArn","assessmentTemplateName","durationInSeconds","rulesPackageArns"],members:{assessmentTargetArn:{},assessmentTemplateName:{},durationInSeconds:{ -type:"integer"},rulesPackageArns:{shape:"Sj"},userAttributesForFindings:{shape:"S4"}}},output:{type:"structure",required:["assessmentTemplateArn"],members:{assessmentTemplateArn:{}}}},CreateResourceGroup:{input:{type:"structure",required:["resourceGroupTags"],members:{resourceGroupTags:{shape:"Sm"}}},output:{type:"structure",required:["resourceGroupArn"],members:{resourceGroupArn:{}}}},DeleteAssessmentRun:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}}},DeleteAssessmentTarget:{input:{type:"structure",required:["assessmentTargetArn"],members:{assessmentTargetArn:{}}}},DeleteAssessmentTemplate:{input:{type:"structure",required:["assessmentTemplateArn"],members:{assessmentTemplateArn:{}}}},DescribeAssessmentRuns:{input:{type:"structure",required:["assessmentRunArns"],members:{assessmentRunArns:{shape:"Sv"}}},output:{type:"structure",required:["assessmentRuns","failedItems"],members:{assessmentRuns:{type:"list",member:{type:"structure",required:["arn","name","assessmentTemplateArn","state","durationInSeconds","rulesPackageArns","userAttributesForFindings","createdAt","stateChangedAt","dataCollected","stateChanges","notifications"],members:{arn:{},name:{},assessmentTemplateArn:{},state:{},durationInSeconds:{type:"integer"},rulesPackageArns:{type:"list",member:{}},userAttributesForFindings:{shape:"S4"},createdAt:{type:"timestamp"},startedAt:{type:"timestamp"},completedAt:{type:"timestamp"},stateChangedAt:{type:"timestamp"},dataCollected:{type:"boolean"},stateChanges:{type:"list",member:{type:"structure",required:["stateChangedAt","state"],members:{stateChangedAt:{type:"timestamp"},state:{}}}},notifications:{type:"list",member:{type:"structure",required:["date","event","error"],members:{date:{type:"timestamp"},event:{},message:{},error:{type:"boolean"},snsTopicArn:{},snsPublishStatusCode:{}}}}}}},failedItems:{shape:"S9"}}}},DescribeAssessmentTargets:{input:{type:"structure",required:["assessmentTargetArns"],members:{assessmentTargetArns:{shape:"Sv"}}},output:{type:"structure",required:["assessmentTargets","failedItems"],members:{assessmentTargets:{type:"list",member:{type:"structure",required:["arn","name","resourceGroupArn","createdAt","updatedAt"],members:{arn:{},name:{},resourceGroupArn:{},createdAt:{type:"timestamp"},updatedAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeAssessmentTemplates:{input:{type:"structure",required:["assessmentTemplateArns"],members:{assessmentTemplateArns:{shape:"Sv"}}},output:{type:"structure",required:["assessmentTemplates","failedItems"],members:{assessmentTemplates:{type:"list",member:{type:"structure",required:["arn","name","assessmentTargetArn","durationInSeconds","rulesPackageArns","userAttributesForFindings","createdAt"],members:{arn:{},name:{},assessmentTargetArn:{},durationInSeconds:{type:"integer"},rulesPackageArns:{shape:"Sj"},userAttributesForFindings:{shape:"S4"},createdAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeCrossAccountAccessRole:{output:{type:"structure",required:["roleArn","valid","registeredAt"],members:{roleArn:{},valid:{type:"boolean"},registeredAt:{type:"timestamp"}}}},DescribeFindings:{input:{type:"structure",required:["findingArns"],members:{findingArns:{shape:"Sv"},locale:{}}},output:{type:"structure",required:["findings","failedItems"],members:{findings:{type:"list",member:{type:"structure",required:["arn","attributes","userAttributes","createdAt","updatedAt"],members:{arn:{},schemaVersion:{type:"integer"},service:{},serviceAttributes:{type:"structure",required:["schemaVersion"],members:{schemaVersion:{type:"integer"},assessmentRunArn:{},rulesPackageArn:{}}},assetType:{},assetAttributes:{type:"structure",required:["schemaVersion"],members:{schemaVersion:{type:"integer"},agentId:{},autoScalingGroup:{},amiId:{},hostname:{},ipv4Addresses:{type:"list",member:{}}}},id:{},title:{},description:{},recommendation:{},severity:{},numericSeverity:{type:"double"},confidence:{type:"integer"},indicatorOfCompromise:{type:"boolean"},attributes:{shape:"S24"},userAttributes:{shape:"S4"},createdAt:{type:"timestamp"},updatedAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeResourceGroups:{input:{type:"structure",required:["resourceGroupArns"],members:{resourceGroupArns:{shape:"Sv"}}},output:{type:"structure",required:["resourceGroups","failedItems"],members:{resourceGroups:{type:"list",member:{type:"structure",required:["arn","tags","createdAt"],members:{arn:{},tags:{shape:"Sm"},createdAt:{type:"timestamp"}}}},failedItems:{shape:"S9"}}}},DescribeRulesPackages:{input:{type:"structure",required:["rulesPackageArns"],members:{rulesPackageArns:{shape:"Sv"},locale:{}}},output:{type:"structure",required:["rulesPackages","failedItems"],members:{rulesPackages:{type:"list",member:{type:"structure",required:["arn","name","version","provider"],members:{arn:{},name:{},version:{},provider:{},description:{}}}},failedItems:{shape:"S9"}}}},GetTelemetryMetadata:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}},output:{type:"structure",required:["telemetryMetadata"],members:{telemetryMetadata:{shape:"S2i"}}}},ListAssessmentRunAgents:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{},filter:{type:"structure",required:["agentHealths","agentHealthCodes"],members:{agentHealths:{type:"list",member:{}},agentHealthCodes:{type:"list",member:{}}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentRunAgents"],members:{assessmentRunAgents:{type:"list",member:{type:"structure",required:["agentId","assessmentRunArn","agentHealth","agentHealthCode","telemetryMetadata"],members:{agentId:{},assessmentRunArn:{},agentHealth:{},agentHealthCode:{},agentHealthDetails:{},autoScalingGroup:{},telemetryMetadata:{shape:"S2i"}}}},nextToken:{}}}},ListAssessmentRuns:{input:{type:"structure",members:{assessmentTemplateArns:{shape:"S2y"},filter:{type:"structure",members:{namePattern:{},states:{type:"list",member:{}},durationRange:{shape:"S32"},rulesPackageArns:{shape:"S33"},startTimeRange:{shape:"S34"},completionTimeRange:{shape:"S34"},stateChangeTimeRange:{shape:"S34"}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentRunArns"],members:{assessmentRunArns:{shape:"S36"},nextToken:{}}}},ListAssessmentTargets:{input:{type:"structure",members:{filter:{type:"structure",members:{assessmentTargetNamePattern:{}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentTargetArns"],members:{assessmentTargetArns:{shape:"S36"},nextToken:{}}}},ListAssessmentTemplates:{input:{type:"structure",members:{assessmentTargetArns:{shape:"S2y"},filter:{type:"structure",members:{namePattern:{},durationRange:{shape:"S32"},rulesPackageArns:{shape:"S33"}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["assessmentTemplateArns"],members:{assessmentTemplateArns:{shape:"S36"},nextToken:{}}}},ListEventSubscriptions:{input:{type:"structure",members:{resourceArn:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["subscriptions"],members:{subscriptions:{type:"list",member:{type:"structure",required:["resourceArn","topicArn","eventSubscriptions"],members:{resourceArn:{},topicArn:{},eventSubscriptions:{type:"list",member:{type:"structure",required:["event","subscribedAt"],members:{event:{},subscribedAt:{type:"timestamp"}}}}}}},nextToken:{}}}},ListFindings:{input:{type:"structure",members:{assessmentRunArns:{shape:"S2y"},filter:{type:"structure",members:{agentIds:{type:"list",member:{}},autoScalingGroups:{type:"list",member:{}},ruleNames:{type:"list",member:{}},severities:{type:"list",member:{}},rulesPackageArns:{shape:"S33"},attributes:{shape:"S24"},userAttributes:{shape:"S24"},creationTimeRange:{shape:"S34"}}},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["findingArns"],members:{findingArns:{shape:"S36"},nextToken:{}}}},ListRulesPackages:{input:{type:"structure",members:{nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["rulesPackageArns"],members:{rulesPackageArns:{shape:"S36"},nextToken:{}}}},ListTagsForResource:{input:{type:"structure",required:["resourceArn"],members:{resourceArn:{}}},output:{type:"structure",required:["tags"],members:{tags:{shape:"S3w"}}}},PreviewAgents:{input:{type:"structure",required:["previewAgentsArn"],members:{previewAgentsArn:{},nextToken:{},maxResults:{type:"integer"}}},output:{type:"structure",required:["agentPreviews"],members:{agentPreviews:{type:"list",member:{type:"structure",required:["agentId"],members:{agentId:{},autoScalingGroup:{}}}},nextToken:{}}}},RegisterCrossAccountAccessRole:{input:{type:"structure",required:["roleArn"],members:{roleArn:{}}}},RemoveAttributesFromFindings:{input:{type:"structure",required:["findingArns","attributeKeys"],members:{findingArns:{shape:"S2"},attributeKeys:{type:"list",member:{}}}},output:{type:"structure",required:["failedItems"],members:{failedItems:{shape:"S9"}}}},SetTagsForResource:{input:{type:"structure",required:["resourceArn"],members:{resourceArn:{},tags:{shape:"S3w"}}}},StartAssessmentRun:{input:{type:"structure",required:["assessmentTemplateArn"],members:{assessmentTemplateArn:{},assessmentRunName:{}}},output:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}}},StopAssessmentRun:{input:{type:"structure",required:["assessmentRunArn"],members:{assessmentRunArn:{}}}},SubscribeToEvent:{input:{type:"structure",required:["resourceArn","event","topicArn"],members:{resourceArn:{},event:{},topicArn:{}}}},UnsubscribeFromEvent:{input:{type:"structure",required:["resourceArn","event","topicArn"],members:{resourceArn:{},event:{},topicArn:{}}}},UpdateAssessmentTarget:{input:{type:"structure",required:["assessmentTargetArn","assessmentTargetName","resourceGroupArn"],members:{assessmentTargetArn:{},assessmentTargetName:{},resourceGroupArn:{}}}}},shapes:{S2:{type:"list",member:{}},S4:{type:"list",member:{shape:"S5"}},S5:{type:"structure",required:["key"],members:{key:{},value:{}}},S9:{type:"map",key:{},value:{type:"structure",required:["failureCode","retryable"],members:{failureCode:{},retryable:{type:"boolean"}}}},Sj:{type:"list",member:{}},Sm:{type:"list",member:{type:"structure",required:["key"],members:{key:{},value:{}}}},Sv:{type:"list",member:{}},S24:{type:"list",member:{shape:"S5"}},S2i:{type:"list",member:{type:"structure",required:["messageType","count"],members:{messageType:{},count:{type:"long"},dataSize:{type:"long"}}}},S2y:{type:"list",member:{}},S32:{type:"structure",members:{minSeconds:{type:"integer"},maxSeconds:{type:"integer"}}},S33:{type:"list",member:{}},S34:{type:"structure",members:{beginDate:{type:"timestamp"},endDate:{type:"timestamp"}}},S36:{type:"list",member:{}},S3w:{type:"list",member:{type:"structure",required:["key"],members:{key:{},value:{}}}}}}},{}],69:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-05-28",endpointPrefix:"iot",serviceFullName:"AWS IoT",signatureVersion:"v4",signingName:"execute-api",protocol:"rest-json"},operations:{AcceptCertificateTransfer:{http:{method:"PATCH",requestUri:"/accept-certificate-transfer/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"},setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"}}}},AttachPrincipalPolicy:{http:{method:"PUT",requestUri:"/principal-policies/{policyName}"},input:{type:"structure",required:["policyName","principal"],members:{policyName:{location:"uri",locationName:"policyName"},principal:{location:"header",locationName:"x-amzn-iot-principal"}}}},AttachThingPrincipal:{http:{method:"PUT",requestUri:"/things/{thingName}/principals"},input:{type:"structure",required:["thingName","principal"],members:{thingName:{location:"uri",locationName:"thingName"},principal:{location:"header",locationName:"x-amzn-principal"}}},output:{type:"structure",members:{}}},CancelCertificateTransfer:{http:{method:"PATCH",requestUri:"/cancel-certificate-transfer/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"}}}},CreateCertificateFromCsr:{http:{requestUri:"/certificates"},input:{type:"structure",required:["certificateSigningRequest"],members:{certificateSigningRequest:{},setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"}}},output:{type:"structure",members:{certificateArn:{},certificateId:{},certificatePem:{}}}},CreateKeysAndCertificate:{http:{requestUri:"/keys-and-certificate"},input:{type:"structure",members:{setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"}}},output:{type:"structure",members:{certificateArn:{},certificateId:{},certificatePem:{},keyPair:{type:"structure",members:{PublicKey:{},PrivateKey:{type:"string",sensitive:!0}}}}}},CreatePolicy:{http:{requestUri:"/policies/{policyName}"},input:{type:"structure",required:["policyName","policyDocument"],members:{policyName:{location:"uri",locationName:"policyName"},policyDocument:{}}},output:{type:"structure",members:{policyName:{},policyArn:{},policyDocument:{},policyVersionId:{}}}},CreatePolicyVersion:{http:{requestUri:"/policies/{policyName}/version"},input:{type:"structure",required:["policyName","policyDocument"],members:{policyName:{location:"uri",locationName:"policyName"},policyDocument:{},setAsDefault:{location:"querystring",locationName:"setAsDefault",type:"boolean"}}},output:{type:"structure",members:{policyArn:{},policyDocument:{},policyVersionId:{},isDefaultVersion:{type:"boolean"}}}},CreateThing:{http:{requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"},thingTypeName:{},attributePayload:{shape:"Sw"}}},output:{type:"structure",members:{thingName:{},thingArn:{}}}},CreateThingType:{http:{requestUri:"/thing-types/{thingTypeName}"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"},thingTypeProperties:{shape:"S14"}}},output:{type:"structure",members:{thingTypeName:{},thingTypeArn:{}}}},CreateTopicRule:{http:{requestUri:"/rules/{ruleName}"},input:{type:"structure",required:["ruleName","topicRulePayload"],members:{ruleName:{location:"uri",locationName:"ruleName"},topicRulePayload:{shape:"S1b"}},payload:"topicRulePayload"}},DeleteCACertificate:{http:{method:"DELETE",requestUri:"/cacertificate/{caCertificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"caCertificateId"}}},output:{type:"structure",members:{}}},DeleteCertificate:{http:{method:"DELETE",requestUri:"/certificates/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"}}}},DeletePolicy:{http:{method:"DELETE",requestUri:"/policies/{policyName}"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"uri",locationName:"policyName"}}}},DeletePolicyVersion:{http:{method:"DELETE",requestUri:"/policies/{policyName}/version/{policyVersionId}"},input:{type:"structure",required:["policyName","policyVersionId"],members:{policyName:{location:"uri",locationName:"policyName"},policyVersionId:{location:"uri",locationName:"policyVersionId"}}}},DeleteRegistrationCode:{http:{method:"DELETE",requestUri:"/registrationcode"},input:{type:"structure",members:{}},output:{type:"structure",members:{}}},DeleteThing:{http:{method:"DELETE",requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"},expectedVersion:{location:"querystring",locationName:"expectedVersion",type:"long"}}},output:{type:"structure",members:{}}},DeleteThingType:{http:{method:"DELETE",requestUri:"/thing-types/{thingTypeName}"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"}}},output:{type:"structure",members:{}}},DeleteTopicRule:{http:{method:"DELETE",requestUri:"/rules/{ruleName}"},input:{type:"structure",members:{ruleName:{location:"uri",locationName:"ruleName"}},required:["ruleName"]}},DeprecateThingType:{http:{requestUri:"/thing-types/{thingTypeName}/deprecate"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"},undoDeprecate:{type:"boolean"}}},output:{type:"structure",members:{}}},DescribeCACertificate:{http:{method:"GET",requestUri:"/cacertificate/{caCertificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"caCertificateId"}}},output:{type:"structure",members:{certificateDescription:{type:"structure",members:{certificateArn:{},certificateId:{},status:{},certificatePem:{},ownedBy:{},creationDate:{type:"timestamp"},autoRegistrationStatus:{}}}}}},DescribeCertificate:{http:{method:"GET",requestUri:"/certificates/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"}}},output:{type:"structure",members:{certificateDescription:{type:"structure",members:{certificateArn:{},certificateId:{},caCertificateId:{},status:{},certificatePem:{},ownedBy:{},previousOwnedBy:{},creationDate:{type:"timestamp"},lastModifiedDate:{type:"timestamp"},transferData:{type:"structure",members:{transferMessage:{},rejectReason:{},transferDate:{type:"timestamp"},acceptDate:{type:"timestamp"},rejectDate:{type:"timestamp"}}}}}}}},DescribeEndpoint:{http:{method:"GET",requestUri:"/endpoint"},input:{type:"structure",members:{}},output:{type:"structure",members:{endpointAddress:{}}}},DescribeThing:{http:{method:"GET",requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",members:{defaultClientId:{},thingName:{},thingTypeName:{},attributes:{shape:"Sx"},version:{type:"long"}}}},DescribeThingType:{http:{method:"GET",requestUri:"/thing-types/{thingTypeName}"},input:{type:"structure",required:["thingTypeName"],members:{thingTypeName:{location:"uri",locationName:"thingTypeName"}}},output:{type:"structure",members:{thingTypeName:{},thingTypeProperties:{shape:"S14"},thingTypeMetadata:{shape:"S3s"}}}},DetachPrincipalPolicy:{http:{method:"DELETE",requestUri:"/principal-policies/{policyName}"},input:{type:"structure",required:["policyName","principal"],members:{policyName:{location:"uri",locationName:"policyName"},principal:{location:"header",locationName:"x-amzn-iot-principal"}}}},DetachThingPrincipal:{http:{method:"DELETE",requestUri:"/things/{thingName}/principals"},input:{type:"structure",required:["thingName","principal"],members:{thingName:{location:"uri",locationName:"thingName"},principal:{location:"header",locationName:"x-amzn-principal"}}},output:{type:"structure",members:{}}},DisableTopicRule:{http:{requestUri:"/rules/{ruleName}/disable"},input:{type:"structure",required:["ruleName"],members:{ruleName:{location:"uri",locationName:"ruleName"}}}},EnableTopicRule:{http:{requestUri:"/rules/{ruleName}/enable"},input:{type:"structure",required:["ruleName"],members:{ruleName:{location:"uri",locationName:"ruleName"}}}},GetLoggingOptions:{http:{method:"GET",requestUri:"/loggingOptions"},input:{type:"structure",members:{}},output:{type:"structure",members:{roleArn:{},logLevel:{}}}},GetPolicy:{http:{method:"GET",requestUri:"/policies/{policyName}"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"uri",locationName:"policyName"}}},output:{type:"structure",members:{policyName:{},policyArn:{},policyDocument:{},defaultVersionId:{}}}},GetPolicyVersion:{http:{method:"GET",requestUri:"/policies/{policyName}/version/{policyVersionId}"},input:{type:"structure",required:["policyName","policyVersionId"],members:{policyName:{location:"uri",locationName:"policyName"},policyVersionId:{location:"uri",locationName:"policyVersionId"}}},output:{type:"structure",members:{policyArn:{},policyName:{},policyDocument:{},policyVersionId:{},isDefaultVersion:{type:"boolean"}}}},GetRegistrationCode:{http:{method:"GET",requestUri:"/registrationcode"},input:{type:"structure",members:{}},output:{type:"structure",members:{registrationCode:{}}}},GetTopicRule:{http:{method:"GET",requestUri:"/rules/{ruleName}"},input:{type:"structure",required:["ruleName"],members:{ruleName:{location:"uri",locationName:"ruleName"}}},output:{type:"structure",members:{ruleArn:{},rule:{type:"structure",members:{ruleName:{},sql:{},description:{},createdAt:{type:"timestamp"},actions:{shape:"S1e"},ruleDisabled:{type:"boolean"},awsIotSqlVersion:{}}}}}},ListCACertificates:{http:{method:"GET",requestUri:"/cacertificates"},input:{type:"structure",members:{pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{certificates:{type:"list",member:{type:"structure",members:{certificateArn:{},certificateId:{},status:{},creationDate:{type:"timestamp"}}}},nextMarker:{}}}},ListCertificates:{http:{method:"GET",requestUri:"/certificates"},input:{type:"structure",members:{pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{certificates:{shape:"S4p"},nextMarker:{}}}},ListCertificatesByCA:{http:{method:"GET",requestUri:"/certificates-by-ca/{caCertificateId}"},input:{type:"structure",required:["caCertificateId"],members:{caCertificateId:{location:"uri",locationName:"caCertificateId"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{certificates:{shape:"S4p"},nextMarker:{}}}},ListOutgoingCertificates:{http:{method:"GET",requestUri:"/certificates-out-going"},input:{type:"structure",members:{pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},marker:{location:"querystring",locationName:"marker"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{outgoingCertificates:{type:"list",member:{type:"structure",members:{certificateArn:{},certificateId:{},transferredTo:{},transferDate:{type:"timestamp"},transferMessage:{},creationDate:{type:"timestamp"}}}},nextMarker:{}}}},ListPolicies:{http:{method:"GET",requestUri:"/policies"},input:{type:"structure",members:{marker:{location:"querystring",locationName:"marker"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{policies:{shape:"S4z"},nextMarker:{}}}},ListPolicyPrincipals:{http:{method:"GET",requestUri:"/policy-principals"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"header",locationName:"x-amzn-iot-policy"},marker:{location:"querystring",locationName:"marker"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{principals:{shape:"S53"},nextMarker:{}}}},ListPolicyVersions:{http:{method:"GET",requestUri:"/policies/{policyName}/version"},input:{type:"structure",required:["policyName"],members:{policyName:{location:"uri",locationName:"policyName"}}},output:{type:"structure",members:{policyVersions:{type:"list",member:{type:"structure",members:{versionId:{},isDefaultVersion:{type:"boolean"},createDate:{type:"timestamp"}}}}}}},ListPrincipalPolicies:{http:{method:"GET",requestUri:"/principal-policies"},input:{type:"structure",required:["principal"],members:{principal:{location:"header",locationName:"x-amzn-iot-principal"},marker:{location:"querystring",locationName:"marker"},pageSize:{location:"querystring",locationName:"pageSize",type:"integer"},ascendingOrder:{location:"querystring",locationName:"isAscendingOrder",type:"boolean"}}},output:{type:"structure",members:{policies:{shape:"S4z"},nextMarker:{}}}},ListPrincipalThings:{http:{method:"GET",requestUri:"/principals/things"},input:{type:"structure",required:["principal"],members:{nextToken:{location:"querystring",locationName:"nextToken"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},principal:{location:"header",locationName:"x-amzn-principal"}}},output:{type:"structure",members:{things:{type:"list",member:{}},nextToken:{}}}},ListThingPrincipals:{http:{method:"GET",requestUri:"/things/{thingName}/principals"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",members:{principals:{shape:"S53"}}}},ListThingTypes:{http:{method:"GET",requestUri:"/thing-types"},input:{type:"structure",members:{nextToken:{location:"querystring",locationName:"nextToken"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},thingTypeName:{location:"querystring",locationName:"thingTypeName"}}},output:{type:"structure",members:{thingTypes:{type:"list",member:{type:"structure",members:{thingTypeName:{},thingTypeProperties:{shape:"S14"},thingTypeMetadata:{shape:"S3s"}}}},nextToken:{}}}},ListThings:{http:{method:"GET",requestUri:"/things"},input:{type:"structure",members:{nextToken:{location:"querystring",locationName:"nextToken"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},attributeName:{location:"querystring",locationName:"attributeName"},attributeValue:{location:"querystring",locationName:"attributeValue"},thingTypeName:{location:"querystring",locationName:"thingTypeName"}}},output:{type:"structure",members:{things:{type:"list",member:{type:"structure",members:{thingName:{},thingTypeName:{},attributes:{shape:"Sx"},version:{type:"long"}}}},nextToken:{}}}},ListTopicRules:{http:{method:"GET",requestUri:"/rules"},input:{type:"structure",members:{topic:{location:"querystring",locationName:"topic"},maxResults:{location:"querystring",locationName:"maxResults",type:"integer"},nextToken:{location:"querystring",locationName:"nextToken"},ruleDisabled:{location:"querystring",locationName:"ruleDisabled",type:"boolean"}}},output:{type:"structure",members:{rules:{type:"list",member:{type:"structure",members:{ruleArn:{},ruleName:{},topicPattern:{},createdAt:{type:"timestamp"},ruleDisabled:{type:"boolean"}}}},nextToken:{}}}},RegisterCACertificate:{http:{requestUri:"/cacertificate"},input:{type:"structure",required:["caCertificate","verificationCertificate"],members:{caCertificate:{},verificationCertificate:{},setAsActive:{location:"querystring",locationName:"setAsActive",type:"boolean"},allowAutoRegistration:{location:"querystring",locationName:"allowAutoRegistration",type:"boolean"}}},output:{type:"structure",members:{certificateArn:{},certificateId:{}}}},RegisterCertificate:{http:{requestUri:"/certificate/register"},input:{type:"structure",required:["certificatePem"],members:{certificatePem:{},caCertificatePem:{},setAsActive:{deprecated:!0,location:"querystring",locationName:"setAsActive",type:"boolean"},status:{}}},output:{type:"structure",members:{certificateArn:{},certificateId:{}}}},RejectCertificateTransfer:{http:{method:"PATCH",requestUri:"/reject-certificate-transfer/{certificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"certificateId"},rejectReason:{}}}},ReplaceTopicRule:{http:{method:"PATCH",requestUri:"/rules/{ruleName}"},input:{type:"structure",required:["ruleName","topicRulePayload"],members:{ruleName:{location:"uri",locationName:"ruleName"},topicRulePayload:{shape:"S1b"}},payload:"topicRulePayload"}},SetDefaultPolicyVersion:{http:{method:"PATCH",requestUri:"/policies/{policyName}/version/{policyVersionId}"},input:{type:"structure",required:["policyName","policyVersionId"],members:{policyName:{location:"uri",locationName:"policyName"},policyVersionId:{location:"uri",locationName:"policyVersionId"}}}},SetLoggingOptions:{http:{requestUri:"/loggingOptions"},input:{type:"structure",required:["loggingOptionsPayload"],members:{loggingOptionsPayload:{type:"structure",required:["roleArn"],members:{roleArn:{},logLevel:{}}}},payload:"loggingOptionsPayload"}},TransferCertificate:{http:{method:"PATCH",requestUri:"/transfer-certificate/{certificateId}"},input:{type:"structure",required:["certificateId","targetAwsAccount"],members:{certificateId:{location:"uri",locationName:"certificateId"},targetAwsAccount:{location:"querystring",locationName:"targetAwsAccount"},transferMessage:{}}},output:{type:"structure",members:{transferredCertificateArn:{}}}},UpdateCACertificate:{http:{method:"PUT",requestUri:"/cacertificate/{caCertificateId}"},input:{type:"structure",required:["certificateId"],members:{certificateId:{location:"uri",locationName:"caCertificateId"},newStatus:{location:"querystring",locationName:"newStatus"},newAutoRegistrationStatus:{location:"querystring",locationName:"newAutoRegistrationStatus"}}}},UpdateCertificate:{http:{method:"PUT",requestUri:"/certificates/{certificateId}"},input:{type:"structure",required:["certificateId","newStatus"],members:{certificateId:{location:"uri",locationName:"certificateId"},newStatus:{location:"querystring",locationName:"newStatus"}}}},UpdateThing:{http:{method:"PATCH",requestUri:"/things/{thingName}"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"},thingTypeName:{},attributePayload:{shape:"Sw"},expectedVersion:{type:"long"},removeThingType:{type:"boolean"}}},output:{type:"structure",members:{}}}},shapes:{Sw:{type:"structure",members:{attributes:{shape:"Sx"},merge:{type:"boolean"}}},Sx:{type:"map",key:{},value:{}},S14:{type:"structure",members:{thingTypeDescription:{},searchableAttributes:{type:"list",member:{}}}},S1b:{type:"structure",required:["sql","actions"],members:{sql:{},description:{},actions:{shape:"S1e"},ruleDisabled:{type:"boolean"},awsIotSqlVersion:{}}},S1e:{type:"list",member:{type:"structure",members:{dynamoDB:{type:"structure",required:["tableName","roleArn","hashKeyField","hashKeyValue"],members:{tableName:{},roleArn:{},operation:{},hashKeyField:{},hashKeyValue:{},hashKeyType:{},rangeKeyField:{},rangeKeyValue:{},rangeKeyType:{},payloadField:{}}},lambda:{type:"structure",required:["functionArn"],members:{functionArn:{}}},sns:{type:"structure",required:["targetArn","roleArn"],members:{targetArn:{},roleArn:{},messageFormat:{}}},sqs:{type:"structure",required:["roleArn","queueUrl"],members:{roleArn:{},queueUrl:{},useBase64:{type:"boolean"}}},kinesis:{type:"structure",required:["roleArn","streamName"],members:{roleArn:{},streamName:{},partitionKey:{}}},republish:{type:"structure",required:["roleArn","topic"],members:{roleArn:{},topic:{}}},s3:{type:"structure",required:["roleArn","bucketName","key"],members:{roleArn:{},bucketName:{},key:{},cannedAcl:{}}},firehose:{type:"structure",required:["roleArn","deliveryStreamName"],members:{roleArn:{},deliveryStreamName:{},separator:{}}},cloudwatchMetric:{type:"structure",required:["roleArn","metricNamespace","metricName","metricValue","metricUnit"],members:{roleArn:{},metricNamespace:{},metricName:{},metricValue:{},metricUnit:{},metricTimestamp:{}}},cloudwatchAlarm:{type:"structure",required:["roleArn","alarmName","stateReason","stateValue"],members:{roleArn:{},alarmName:{},stateReason:{},stateValue:{}}},elasticsearch:{type:"structure",required:["roleArn","endpoint","index","type","id"],members:{roleArn:{},endpoint:{},index:{},type:{},id:{} -}}}}},S3s:{type:"structure",members:{deprecated:{type:"boolean"},deprecationDate:{type:"timestamp"},creationDate:{type:"timestamp"}}},S4p:{type:"list",member:{type:"structure",members:{certificateArn:{},certificateId:{},status:{},creationDate:{type:"timestamp"}}}},S4z:{type:"list",member:{type:"structure",members:{policyName:{},policyArn:{}}}},S53:{type:"list",member:{}}},examples:{}}},{}],70:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-05-28",endpointPrefix:"data.iot",protocol:"rest-json",serviceFullName:"AWS IoT Data Plane",signatureVersion:"v4",signingName:"iotdata"},operations:{DeleteThingShadow:{http:{method:"DELETE",requestUri:"/things/{thingName}/shadow"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",required:["payload"],members:{payload:{type:"blob"}},payload:"payload"}},GetThingShadow:{http:{method:"GET",requestUri:"/things/{thingName}/shadow"},input:{type:"structure",required:["thingName"],members:{thingName:{location:"uri",locationName:"thingName"}}},output:{type:"structure",members:{payload:{type:"blob"}},payload:"payload"}},Publish:{http:{requestUri:"/topics/{topic}"},input:{type:"structure",required:["topic"],members:{topic:{location:"uri",locationName:"topic"},qos:{location:"querystring",locationName:"qos",type:"integer"},payload:{type:"blob"}},payload:"payload"}},UpdateThingShadow:{http:{requestUri:"/things/{thingName}/shadow"},input:{type:"structure",required:["thingName","payload"],members:{thingName:{location:"uri",locationName:"thingName"},payload:{type:"blob"}},payload:"payload"},output:{type:"structure",members:{payload:{type:"blob"}},payload:"payload"}}},shapes:{}}},{}],71:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-12-02",endpointPrefix:"kinesis",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Kinesis",serviceFullName:"Amazon Kinesis",signatureVersion:"v4",targetPrefix:"Kinesis_20131202"},operations:{AddTagsToStream:{input:{type:"structure",required:["StreamName","Tags"],members:{StreamName:{},Tags:{type:"map",key:{},value:{}}}}},CreateStream:{input:{type:"structure",required:["StreamName","ShardCount"],members:{StreamName:{},ShardCount:{type:"integer"}}}},DecreaseStreamRetentionPeriod:{input:{type:"structure",required:["StreamName","RetentionPeriodHours"],members:{StreamName:{},RetentionPeriodHours:{type:"integer"}}}},DeleteStream:{input:{type:"structure",required:["StreamName"],members:{StreamName:{}}}},DescribeStream:{input:{type:"structure",required:["StreamName"],members:{StreamName:{},Limit:{type:"integer"},ExclusiveStartShardId:{}}},output:{type:"structure",required:["StreamDescription"],members:{StreamDescription:{type:"structure",required:["StreamName","StreamARN","StreamStatus","Shards","HasMoreShards","RetentionPeriodHours","EnhancedMonitoring"],members:{StreamName:{},StreamARN:{},StreamStatus:{},Shards:{type:"list",member:{type:"structure",required:["ShardId","HashKeyRange","SequenceNumberRange"],members:{ShardId:{},ParentShardId:{},AdjacentParentShardId:{},HashKeyRange:{type:"structure",required:["StartingHashKey","EndingHashKey"],members:{StartingHashKey:{},EndingHashKey:{}}},SequenceNumberRange:{type:"structure",required:["StartingSequenceNumber"],members:{StartingSequenceNumber:{},EndingSequenceNumber:{}}}}}},HasMoreShards:{type:"boolean"},RetentionPeriodHours:{type:"integer"},EnhancedMonitoring:{type:"list",member:{type:"structure",members:{ShardLevelMetrics:{shape:"Sr"}}}}}}}}},DisableEnhancedMonitoring:{input:{type:"structure",required:["StreamName","ShardLevelMetrics"],members:{StreamName:{},ShardLevelMetrics:{shape:"Sr"}}},output:{shape:"Su"}},EnableEnhancedMonitoring:{input:{type:"structure",required:["StreamName","ShardLevelMetrics"],members:{StreamName:{},ShardLevelMetrics:{shape:"Sr"}}},output:{shape:"Su"}},GetRecords:{input:{type:"structure",required:["ShardIterator"],members:{ShardIterator:{},Limit:{type:"integer"}}},output:{type:"structure",required:["Records"],members:{Records:{type:"list",member:{type:"structure",required:["SequenceNumber","Data","PartitionKey"],members:{SequenceNumber:{},ApproximateArrivalTimestamp:{type:"timestamp"},Data:{type:"blob"},PartitionKey:{}}}},NextShardIterator:{},MillisBehindLatest:{type:"long"}}}},GetShardIterator:{input:{type:"structure",required:["StreamName","ShardId","ShardIteratorType"],members:{StreamName:{},ShardId:{},ShardIteratorType:{},StartingSequenceNumber:{},Timestamp:{type:"timestamp"}}},output:{type:"structure",members:{ShardIterator:{}}}},IncreaseStreamRetentionPeriod:{input:{type:"structure",required:["StreamName","RetentionPeriodHours"],members:{StreamName:{},RetentionPeriodHours:{type:"integer"}}}},ListStreams:{input:{type:"structure",members:{Limit:{type:"integer"},ExclusiveStartStreamName:{}}},output:{type:"structure",required:["StreamNames","HasMoreStreams"],members:{StreamNames:{type:"list",member:{}},HasMoreStreams:{type:"boolean"}}}},ListTagsForStream:{input:{type:"structure",required:["StreamName"],members:{StreamName:{},ExclusiveStartTagKey:{},Limit:{type:"integer"}}},output:{type:"structure",required:["Tags","HasMoreTags"],members:{Tags:{type:"list",member:{type:"structure",required:["Key"],members:{Key:{},Value:{}}}},HasMoreTags:{type:"boolean"}}}},MergeShards:{input:{type:"structure",required:["StreamName","ShardToMerge","AdjacentShardToMerge"],members:{StreamName:{},ShardToMerge:{},AdjacentShardToMerge:{}}}},PutRecord:{input:{type:"structure",required:["StreamName","Data","PartitionKey"],members:{StreamName:{},Data:{type:"blob"},PartitionKey:{},ExplicitHashKey:{},SequenceNumberForOrdering:{}}},output:{type:"structure",required:["ShardId","SequenceNumber"],members:{ShardId:{},SequenceNumber:{}}}},PutRecords:{input:{type:"structure",required:["Records","StreamName"],members:{Records:{type:"list",member:{type:"structure",required:["Data","PartitionKey"],members:{Data:{type:"blob"},ExplicitHashKey:{},PartitionKey:{}}}},StreamName:{}}},output:{type:"structure",required:["Records"],members:{FailedRecordCount:{type:"integer"},Records:{type:"list",member:{type:"structure",members:{SequenceNumber:{},ShardId:{},ErrorCode:{},ErrorMessage:{}}}}}}},RemoveTagsFromStream:{input:{type:"structure",required:["StreamName","TagKeys"],members:{StreamName:{},TagKeys:{type:"list",member:{}}}}},SplitShard:{input:{type:"structure",required:["StreamName","ShardToSplit","NewStartingHashKey"],members:{StreamName:{},ShardToSplit:{},NewStartingHashKey:{}}}}},shapes:{Sr:{type:"list",member:{}},Su:{type:"structure",members:{StreamName:{},CurrentShardLevelMetrics:{shape:"Sr"},DesiredShardLevelMetrics:{shape:"Sr"}}}}}},{}],72:[function(e,t,r){t.exports={pagination:{DescribeStream:{input_token:"ExclusiveStartShardId",limit_key:"Limit",more_results:"StreamDescription.HasMoreShards",output_token:"StreamDescription.Shards[-1].ShardId",result_key:"StreamDescription.Shards"},ListStreams:{input_token:"ExclusiveStartStreamName",limit_key:"Limit",more_results:"HasMoreStreams",output_token:"StreamNames[-1]",result_key:"StreamNames"}}}},{}],73:[function(e,t,r){t.exports={version:2,waiters:{StreamExists:{delay:10,operation:"DescribeStream",maxAttempts:18,acceptors:[{expected:"ACTIVE",matcher:"path",state:"success",argument:"StreamDescription.StreamStatus"}]}}}},{}],74:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-11-01",endpointPrefix:"kms",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"KMS",serviceFullName:"AWS Key Management Service",signatureVersion:"v4",targetPrefix:"TrentService"},operations:{CancelKeyDeletion:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}},output:{type:"structure",members:{KeyId:{}}}},CreateAlias:{input:{type:"structure",required:["AliasName","TargetKeyId"],members:{AliasName:{},TargetKeyId:{}}}},CreateGrant:{input:{type:"structure",required:["KeyId","GranteePrincipal"],members:{KeyId:{},GranteePrincipal:{},RetiringPrincipal:{},Operations:{shape:"S8"},Constraints:{shape:"Sa"},GrantTokens:{shape:"Se"},Name:{}}},output:{type:"structure",members:{GrantToken:{},GrantId:{}}}},CreateKey:{input:{type:"structure",members:{Policy:{},Description:{},KeyUsage:{},Origin:{},BypassPolicyLockoutSafetyCheck:{type:"boolean"}}},output:{type:"structure",members:{KeyMetadata:{shape:"Sq"}}}},Decrypt:{input:{type:"structure",required:["CiphertextBlob"],members:{CiphertextBlob:{type:"blob"},EncryptionContext:{shape:"Sb"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{KeyId:{},Plaintext:{shape:"Sz"}}}},DeleteAlias:{input:{type:"structure",required:["AliasName"],members:{AliasName:{}}}},DeleteImportedKeyMaterial:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},DescribeKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{KeyMetadata:{shape:"Sq"}}}},DisableKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},DisableKeyRotation:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},EnableKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},EnableKeyRotation:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}}},Encrypt:{input:{type:"structure",required:["KeyId","Plaintext"],members:{KeyId:{},Plaintext:{shape:"Sz"},EncryptionContext:{shape:"Sb"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},KeyId:{}}}},GenerateDataKey:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},EncryptionContext:{shape:"Sb"},NumberOfBytes:{type:"integer"},KeySpec:{},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},Plaintext:{shape:"Sz"},KeyId:{}}}},GenerateDataKeyWithoutPlaintext:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},EncryptionContext:{shape:"Sb"},KeySpec:{},NumberOfBytes:{type:"integer"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},KeyId:{}}}},GenerateRandom:{input:{type:"structure",members:{NumberOfBytes:{type:"integer"}}},output:{type:"structure",members:{Plaintext:{shape:"Sz"}}}},GetKeyPolicy:{input:{type:"structure",required:["KeyId","PolicyName"],members:{KeyId:{},PolicyName:{}}},output:{type:"structure",members:{Policy:{}}}},GetKeyRotationStatus:{input:{type:"structure",required:["KeyId"],members:{KeyId:{}}},output:{type:"structure",members:{KeyRotationEnabled:{type:"boolean"}}}},GetParametersForImport:{input:{type:"structure",required:["KeyId","WrappingAlgorithm","WrappingKeySpec"],members:{KeyId:{},WrappingAlgorithm:{},WrappingKeySpec:{}}},output:{type:"structure",members:{KeyId:{},ImportToken:{type:"blob"},PublicKey:{shape:"Sz"},ParametersValidTo:{type:"timestamp"}}}},ImportKeyMaterial:{input:{type:"structure",required:["KeyId","ImportToken","EncryptedKeyMaterial"],members:{KeyId:{},ImportToken:{type:"blob"},EncryptedKeyMaterial:{type:"blob"},ValidTo:{type:"timestamp"},ExpirationModel:{}}},output:{type:"structure",members:{}}},ListAliases:{input:{type:"structure",members:{Limit:{type:"integer"},Marker:{}}},output:{type:"structure",members:{Aliases:{type:"list",member:{type:"structure",members:{AliasName:{},AliasArn:{},TargetKeyId:{}}}},NextMarker:{},Truncated:{type:"boolean"}}}},ListGrants:{input:{type:"structure",required:["KeyId"],members:{Limit:{type:"integer"},Marker:{},KeyId:{}}},output:{shape:"S20"}},ListKeyPolicies:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},Limit:{type:"integer"},Marker:{}}},output:{type:"structure",members:{PolicyNames:{type:"list",member:{}},NextMarker:{},Truncated:{type:"boolean"}}}},ListKeys:{input:{type:"structure",members:{Limit:{type:"integer"},Marker:{}}},output:{type:"structure",members:{Keys:{type:"list",member:{type:"structure",members:{KeyId:{},KeyArn:{}}}},NextMarker:{},Truncated:{type:"boolean"}}}},ListRetirableGrants:{input:{type:"structure",required:["RetiringPrincipal"],members:{Limit:{type:"integer"},Marker:{},RetiringPrincipal:{}}},output:{shape:"S20"}},PutKeyPolicy:{input:{type:"structure",required:["KeyId","PolicyName","Policy"],members:{KeyId:{},PolicyName:{},Policy:{},BypassPolicyLockoutSafetyCheck:{type:"boolean"}}}},ReEncrypt:{input:{type:"structure",required:["CiphertextBlob","DestinationKeyId"],members:{CiphertextBlob:{type:"blob"},SourceEncryptionContext:{shape:"Sb"},DestinationKeyId:{},DestinationEncryptionContext:{shape:"Sb"},GrantTokens:{shape:"Se"}}},output:{type:"structure",members:{CiphertextBlob:{type:"blob"},SourceKeyId:{},KeyId:{}}}},RetireGrant:{input:{type:"structure",members:{GrantToken:{},KeyId:{},GrantId:{}}}},RevokeGrant:{input:{type:"structure",required:["KeyId","GrantId"],members:{KeyId:{},GrantId:{}}}},ScheduleKeyDeletion:{input:{type:"structure",required:["KeyId"],members:{KeyId:{},PendingWindowInDays:{type:"integer"}}},output:{type:"structure",members:{KeyId:{},DeletionDate:{type:"timestamp"}}}},UpdateAlias:{input:{type:"structure",required:["AliasName","TargetKeyId"],members:{AliasName:{},TargetKeyId:{}}}},UpdateKeyDescription:{input:{type:"structure",required:["KeyId","Description"],members:{KeyId:{},Description:{}}}}},shapes:{S8:{type:"list",member:{}},Sa:{type:"structure",members:{EncryptionContextSubset:{shape:"Sb"},EncryptionContextEquals:{shape:"Sb"}}},Sb:{type:"map",key:{},value:{}},Se:{type:"list",member:{}},Sq:{type:"structure",required:["KeyId"],members:{AWSAccountId:{},KeyId:{},Arn:{},CreationDate:{type:"timestamp"},Enabled:{type:"boolean"},Description:{},KeyUsage:{},KeyState:{},DeletionDate:{type:"timestamp"},ValidTo:{type:"timestamp"},Origin:{},ExpirationModel:{}}},Sz:{type:"blob",sensitive:!0},S20:{type:"structure",members:{Grants:{type:"list",member:{type:"structure",members:{KeyId:{},GrantId:{},Name:{},CreationDate:{type:"timestamp"},GranteePrincipal:{},RetiringPrincipal:{},IssuingAccount:{},Operations:{shape:"S8"},Constraints:{shape:"Sa"}}}},NextMarker:{},Truncated:{type:"boolean"}}}}}},{}],75:[function(e,t,r){t.exports={pagination:{ListAliases:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"Aliases"},ListGrants:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"Grants"},ListKeyPolicies:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"PolicyNames"},ListKeys:{limit_key:"Limit",input_token:"Marker",output_token:"NextMarker",more_results:"Truncated",result_key:"Keys"}}}},{}],76:[function(e,t,r){t.exports={metadata:{apiVersion:"2014-11-11",endpointPrefix:"lambda",serviceFullName:"AWS Lambda",signatureVersion:"v4",protocol:"rest-json"},operations:{AddEventSource:{http:{requestUri:"/2014-11-13/event-source-mappings/"},input:{type:"structure",required:["EventSource","FunctionName","Role"],members:{EventSource:{},FunctionName:{},Role:{},BatchSize:{type:"integer"},Parameters:{shape:"S6"}}},output:{shape:"S7"}},DeleteFunction:{http:{method:"DELETE",requestUri:"/2014-11-13/functions/{FunctionName}",responseCode:204},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"}}}},GetEventSource:{http:{method:"GET",requestUri:"/2014-11-13/event-source-mappings/{UUID}",responseCode:200},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}},output:{shape:"S7"}},GetFunction:{http:{method:"GET",requestUri:"/2014-11-13/functions/{FunctionName}",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"}}},output:{type:"structure",members:{Configuration:{shape:"Se"},Code:{type:"structure",members:{RepositoryType:{},Location:{}}}}}},GetFunctionConfiguration:{http:{method:"GET",requestUri:"/2014-11-13/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"}}},output:{shape:"Se"}},InvokeAsync:{http:{requestUri:"/2014-11-13/functions/{FunctionName}/invoke-async/",responseCode:202},input:{type:"structure",required:["FunctionName","InvokeArgs"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},InvokeArgs:{shape:"Sq"}},payload:"InvokeArgs"},output:{type:"structure",members:{Status:{location:"statusCode",type:"integer"}}}},ListEventSources:{http:{method:"GET",requestUri:"/2014-11-13/event-source-mappings/",responseCode:200},input:{type:"structure",members:{EventSourceArn:{location:"querystring",locationName:"EventSource"},FunctionName:{location:"querystring",locationName:"FunctionName"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},EventSources:{type:"list",member:{shape:"S7"}}}}},ListFunctions:{http:{method:"GET",requestUri:"/2014-11-13/functions/",responseCode:200},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Functions:{type:"list",member:{shape:"Se"}}}}},RemoveEventSource:{http:{method:"DELETE",requestUri:"/2014-11-13/event-source-mappings/{UUID}",responseCode:204},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}}},UpdateFunctionConfiguration:{http:{method:"PUT",requestUri:"/2014-11-13/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Role:{location:"querystring",locationName:"Role"},Handler:{location:"querystring",locationName:"Handler"},Description:{location:"querystring",locationName:"Description"},Timeout:{location:"querystring",locationName:"Timeout",type:"integer"},MemorySize:{location:"querystring",locationName:"MemorySize",type:"integer"}}},output:{shape:"Se"}},UploadFunction:{http:{method:"PUT",requestUri:"/2014-11-13/functions/{FunctionName}",responseCode:201},input:{type:"structure",required:["FunctionName","FunctionZip","Runtime","Role","Handler","Mode"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},FunctionZip:{shape:"Sq"},Runtime:{location:"querystring",locationName:"Runtime"},Role:{location:"querystring",locationName:"Role"},Handler:{location:"querystring",locationName:"Handler"},Mode:{location:"querystring",locationName:"Mode"},Description:{location:"querystring",locationName:"Description"},Timeout:{location:"querystring",locationName:"Timeout",type:"integer"},MemorySize:{location:"querystring",locationName:"MemorySize",type:"integer"}},payload:"FunctionZip"},output:{shape:"Se"}}},shapes:{S6:{type:"map",key:{},value:{}},S7:{type:"structure",members:{UUID:{},BatchSize:{type:"integer"},EventSource:{},FunctionName:{},Parameters:{shape:"S6"},Role:{},LastModified:{type:"timestamp"},IsActive:{type:"boolean"},Status:{}}},Se:{type:"structure",members:{FunctionName:{},FunctionARN:{},ConfigurationId:{},Runtime:{},Role:{},Handler:{},Mode:{},CodeSize:{type:"long"},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},LastModified:{type:"timestamp"}}},Sq:{type:"blob",streaming:!0}}}},{}],77:[function(e,t,r){t.exports={pagination:{ListEventSources:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"EventSources"},ListFunctions:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"Functions"}}}},{}],78:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-03-31",endpointPrefix:"lambda",protocol:"rest-json",serviceFullName:"AWS Lambda",signatureVersion:"v4"},operations:{AddPermission:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/policy",responseCode:201},input:{type:"structure",required:["FunctionName","StatementId","Action","Principal"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},StatementId:{},Action:{},Principal:{},SourceArn:{},SourceAccount:{},EventSourceToken:{},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{type:"structure",members:{Statement:{}}}},CreateAlias:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/aliases",responseCode:201},input:{type:"structure",required:["FunctionName","Name","FunctionVersion"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{},FunctionVersion:{},Description:{}}},output:{shape:"Sg"}},CreateEventSourceMapping:{http:{requestUri:"/2015-03-31/event-source-mappings/",responseCode:202},input:{type:"structure",required:["EventSourceArn","FunctionName","StartingPosition"],members:{EventSourceArn:{},FunctionName:{},Enabled:{type:"boolean"},BatchSize:{type:"integer"},StartingPosition:{}}},output:{shape:"Sm"}},CreateFunction:{http:{requestUri:"/2015-03-31/functions",responseCode:201},input:{type:"structure",required:["FunctionName","Runtime","Role","Handler","Code"],members:{FunctionName:{},Runtime:{},Role:{},Handler:{},Code:{type:"structure",members:{ZipFile:{type:"blob"},S3Bucket:{},S3Key:{},S3ObjectVersion:{}}},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},Publish:{type:"boolean"},VpcConfig:{shape:"S10"}}},output:{shape:"S15"}},DeleteAlias:{http:{method:"DELETE",requestUri:"/2015-03-31/functions/{FunctionName}/aliases/{Name}",responseCode:204},input:{type:"structure",required:["FunctionName","Name"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{location:"uri",locationName:"Name"}}}},DeleteEventSourceMapping:{http:{method:"DELETE",requestUri:"/2015-03-31/event-source-mappings/{UUID}",responseCode:202},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}},output:{shape:"Sm"}},DeleteFunction:{http:{method:"DELETE",requestUri:"/2015-03-31/functions/{FunctionName}",responseCode:204},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}}},GetAlias:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/aliases/{Name}",responseCode:200},input:{type:"structure",required:["FunctionName","Name"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{location:"uri",locationName:"Name"}}},output:{shape:"Sg"}},GetEventSourceMapping:{http:{method:"GET",requestUri:"/2015-03-31/event-source-mappings/{UUID}",responseCode:200},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"}}},output:{shape:"Sm"}},GetFunction:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{type:"structure",members:{Configuration:{shape:"S15"},Code:{type:"structure",members:{RepositoryType:{},Location:{}}}}}},GetFunctionConfiguration:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{shape:"S15"}},GetPolicy:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/policy",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Qualifier:{location:"querystring",locationName:"Qualifier"}}},output:{type:"structure",members:{Policy:{}}}},Invoke:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/invocations"},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},InvocationType:{location:"header",locationName:"X-Amz-Invocation-Type"},LogType:{location:"header",locationName:"X-Amz-Log-Type"},ClientContext:{location:"header",locationName:"X-Amz-Client-Context"},Payload:{type:"blob"},Qualifier:{location:"querystring",locationName:"Qualifier"}},payload:"Payload"},output:{type:"structure",members:{StatusCode:{location:"statusCode",type:"integer"},FunctionError:{location:"header",locationName:"X-Amz-Function-Error"},LogResult:{location:"header",locationName:"X-Amz-Log-Result"},Payload:{type:"blob"}},payload:"Payload"}},InvokeAsync:{http:{requestUri:"/2014-11-13/functions/{FunctionName}/invoke-async/",responseCode:202},input:{type:"structure",required:["FunctionName","InvokeArgs"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},InvokeArgs:{type:"blob",streaming:!0}},deprecated:!0,payload:"InvokeArgs"},output:{type:"structure",members:{Status:{location:"statusCode",type:"integer"}},deprecated:!0},deprecated:!0},ListAliases:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/aliases",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},FunctionVersion:{location:"querystring",locationName:"FunctionVersion"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Aliases:{type:"list",member:{shape:"Sg"}}}}},ListEventSourceMappings:{http:{method:"GET",requestUri:"/2015-03-31/event-source-mappings/",responseCode:200},input:{type:"structure",members:{EventSourceArn:{location:"querystring",locationName:"EventSourceArn"},FunctionName:{location:"querystring",locationName:"FunctionName"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},EventSourceMappings:{type:"list",member:{shape:"Sm"}}}}},ListFunctions:{http:{method:"GET",requestUri:"/2015-03-31/functions/",responseCode:200},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Functions:{shape:"S23"}}}},ListVersionsByFunction:{http:{method:"GET",requestUri:"/2015-03-31/functions/{FunctionName}/versions",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Marker:{location:"querystring",locationName:"Marker"},MaxItems:{location:"querystring",locationName:"MaxItems",type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Versions:{shape:"S23"}}}},PublishVersion:{http:{requestUri:"/2015-03-31/functions/{FunctionName}/versions",responseCode:201},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},CodeSha256:{},Description:{}}},output:{shape:"S15"}},RemovePermission:{http:{method:"DELETE",requestUri:"/2015-03-31/functions/{FunctionName}/policy/{StatementId}",responseCode:204},input:{type:"structure",required:["FunctionName","StatementId"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},StatementId:{location:"uri",locationName:"StatementId"},Qualifier:{location:"querystring",locationName:"Qualifier"}}}},UpdateAlias:{http:{method:"PUT",requestUri:"/2015-03-31/functions/{FunctionName}/aliases/{Name}",responseCode:200},input:{type:"structure",required:["FunctionName","Name"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Name:{location:"uri",locationName:"Name"},FunctionVersion:{},Description:{}}},output:{shape:"Sg"}},UpdateEventSourceMapping:{http:{method:"PUT",requestUri:"/2015-03-31/event-source-mappings/{UUID}",responseCode:202},input:{type:"structure",required:["UUID"],members:{UUID:{location:"uri",locationName:"UUID"},FunctionName:{},Enabled:{type:"boolean"},BatchSize:{type:"integer"}}},output:{shape:"Sm"}},UpdateFunctionCode:{http:{method:"PUT",requestUri:"/2015-03-31/functions/{FunctionName}/code",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},ZipFile:{type:"blob"},S3Bucket:{},S3Key:{},S3ObjectVersion:{},Publish:{type:"boolean"}}},output:{shape:"S15"}},UpdateFunctionConfiguration:{http:{method:"PUT",requestUri:"/2015-03-31/functions/{FunctionName}/configuration",responseCode:200},input:{type:"structure",required:["FunctionName"],members:{FunctionName:{location:"uri",locationName:"FunctionName"},Role:{},Handler:{},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},VpcConfig:{shape:"S10"},Runtime:{}}},output:{shape:"S15"}}},shapes:{Sg:{type:"structure",members:{AliasArn:{},Name:{},FunctionVersion:{},Description:{}}},Sm:{type:"structure",members:{UUID:{},BatchSize:{type:"integer"},EventSourceArn:{},FunctionArn:{},LastModified:{type:"timestamp"},LastProcessingResult:{},State:{},StateTransitionReason:{}}},S10:{type:"structure",members:{SubnetIds:{shape:"S11"},SecurityGroupIds:{shape:"S13"}}},S11:{type:"list",member:{}},S13:{type:"list",member:{}},S15:{type:"structure",members:{FunctionName:{},FunctionArn:{},Runtime:{},Role:{},Handler:{},CodeSize:{type:"long"},Description:{},Timeout:{type:"integer"},MemorySize:{type:"integer"},LastModified:{},CodeSha256:{},Version:{},VpcConfig:{type:"structure",members:{SubnetIds:{shape:"S11"},SecurityGroupIds:{shape:"S13"},VpcId:{}}}}},S23:{type:"list",member:{shape:"S15"}}}}},{}],79:[function(e,t,r){t.exports={pagination:{ListEventSourceMappings:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"EventSourceMappings"},ListFunctions:{input_token:"Marker",output_token:"NextMarker",limit_key:"MaxItems",result_key:"Functions"}}}},{}],80:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-03-28",endpointPrefix:"logs",jsonVersion:"1.1",protocol:"json",serviceFullName:"Amazon CloudWatch Logs",signatureVersion:"v4",targetPrefix:"Logs_20140328"},operations:{CancelExportTask:{input:{type:"structure",required:["taskId"],members:{taskId:{}}}},CreateExportTask:{input:{type:"structure",required:["logGroupName","from","to","destination"],members:{taskName:{},logGroupName:{},logStreamNamePrefix:{},from:{type:"long"},to:{type:"long"},destination:{},destinationPrefix:{}}},output:{type:"structure",members:{taskId:{}}}},CreateLogGroup:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{}}}},CreateLogStream:{input:{type:"structure",required:["logGroupName","logStreamName"],members:{logGroupName:{},logStreamName:{}}}},DeleteDestination:{input:{type:"structure",required:["destinationName"],members:{destinationName:{}}}},DeleteLogGroup:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{}}}},DeleteLogStream:{input:{type:"structure",required:["logGroupName","logStreamName"],members:{logGroupName:{},logStreamName:{}}}},DeleteMetricFilter:{input:{type:"structure",required:["logGroupName","filterName"],members:{logGroupName:{},filterName:{}}}},DeleteRetentionPolicy:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{}}}},DeleteSubscriptionFilter:{input:{type:"structure",required:["logGroupName","filterName"],members:{logGroupName:{},filterName:{}}}},DescribeDestinations:{input:{type:"structure",members:{DestinationNamePrefix:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{destinations:{type:"list",member:{shape:"Sq"}},nextToken:{}}}},DescribeExportTasks:{input:{type:"structure",members:{taskId:{},statusCode:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{exportTasks:{type:"list",member:{type:"structure",members:{taskId:{},taskName:{},logGroupName:{},from:{type:"long"},to:{type:"long"},destination:{},destinationPrefix:{},status:{type:"structure",members:{code:{},message:{}}},executionInfo:{type:"structure",members:{creationTime:{type:"long"},completionTime:{type:"long"}}}}}},nextToken:{}}}},DescribeLogGroups:{input:{type:"structure",members:{logGroupNamePrefix:{},nextToken:{}, -limit:{type:"integer"}}},output:{type:"structure",members:{logGroups:{type:"list",member:{type:"structure",members:{logGroupName:{},creationTime:{type:"long"},retentionInDays:{type:"integer"},metricFilterCount:{type:"integer"},arn:{},storedBytes:{type:"long"}}}},nextToken:{}}}},DescribeLogStreams:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},logStreamNamePrefix:{},orderBy:{},descending:{type:"boolean"},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{logStreams:{type:"list",member:{type:"structure",members:{logStreamName:{},creationTime:{type:"long"},firstEventTimestamp:{type:"long"},lastEventTimestamp:{type:"long"},lastIngestionTime:{type:"long"},uploadSequenceToken:{},arn:{},storedBytes:{type:"long"}}}},nextToken:{}}}},DescribeMetricFilters:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},filterNamePrefix:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{metricFilters:{type:"list",member:{type:"structure",members:{filterName:{},filterPattern:{},metricTransformations:{shape:"S1m"},creationTime:{type:"long"}}}},nextToken:{}}}},DescribeSubscriptionFilters:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},filterNamePrefix:{},nextToken:{},limit:{type:"integer"}}},output:{type:"structure",members:{subscriptionFilters:{type:"list",member:{type:"structure",members:{filterName:{},logGroupName:{},filterPattern:{},destinationArn:{},roleArn:{},creationTime:{type:"long"}}}},nextToken:{}}}},FilterLogEvents:{input:{type:"structure",required:["logGroupName"],members:{logGroupName:{},logStreamNames:{type:"list",member:{}},startTime:{type:"long"},endTime:{type:"long"},filterPattern:{},nextToken:{},limit:{type:"integer"},interleaved:{type:"boolean"}}},output:{type:"structure",members:{events:{type:"list",member:{type:"structure",members:{logStreamName:{},timestamp:{type:"long"},message:{},ingestionTime:{type:"long"},eventId:{}}}},searchedLogStreams:{type:"list",member:{type:"structure",members:{logStreamName:{},searchedCompletely:{type:"boolean"}}}},nextToken:{}}}},GetLogEvents:{input:{type:"structure",required:["logGroupName","logStreamName"],members:{logGroupName:{},logStreamName:{},startTime:{type:"long"},endTime:{type:"long"},nextToken:{},limit:{type:"integer"},startFromHead:{type:"boolean"}}},output:{type:"structure",members:{events:{type:"list",member:{type:"structure",members:{timestamp:{type:"long"},message:{},ingestionTime:{type:"long"}}}},nextForwardToken:{},nextBackwardToken:{}}}},PutDestination:{input:{type:"structure",required:["destinationName","targetArn","roleArn"],members:{destinationName:{},targetArn:{},roleArn:{}}},output:{type:"structure",members:{destination:{shape:"Sq"}}}},PutDestinationPolicy:{input:{type:"structure",required:["destinationName","accessPolicy"],members:{destinationName:{},accessPolicy:{}}}},PutLogEvents:{input:{type:"structure",required:["logGroupName","logStreamName","logEvents"],members:{logGroupName:{},logStreamName:{},logEvents:{type:"list",member:{type:"structure",required:["timestamp","message"],members:{timestamp:{type:"long"},message:{}}}},sequenceToken:{}}},output:{type:"structure",members:{nextSequenceToken:{},rejectedLogEventsInfo:{type:"structure",members:{tooNewLogEventStartIndex:{type:"integer"},tooOldLogEventEndIndex:{type:"integer"},expiredLogEventEndIndex:{type:"integer"}}}}}},PutMetricFilter:{input:{type:"structure",required:["logGroupName","filterName","filterPattern","metricTransformations"],members:{logGroupName:{},filterName:{},filterPattern:{},metricTransformations:{shape:"S1m"}}}},PutRetentionPolicy:{input:{type:"structure",required:["logGroupName","retentionInDays"],members:{logGroupName:{},retentionInDays:{type:"integer"}}}},PutSubscriptionFilter:{input:{type:"structure",required:["logGroupName","filterName","filterPattern","destinationArn"],members:{logGroupName:{},filterName:{},filterPattern:{},destinationArn:{},roleArn:{}}}},TestMetricFilter:{input:{type:"structure",required:["filterPattern","logEventMessages"],members:{filterPattern:{},logEventMessages:{type:"list",member:{}}}},output:{type:"structure",members:{matches:{type:"list",member:{type:"structure",members:{eventNumber:{type:"long"},eventMessage:{},extractedValues:{type:"map",key:{},value:{}}}}}}}}},shapes:{Sq:{type:"structure",members:{destinationName:{},targetArn:{},roleArn:{},accessPolicy:{},arn:{},creationTime:{type:"long"}}},S1m:{type:"list",member:{type:"structure",required:["metricName","metricNamespace","metricValue"],members:{metricName:{},metricNamespace:{},metricValue:{},defaultValue:{type:"double"}}}}}}},{}],81:[function(e,t,r){t.exports={pagination:{DescribeDestinations:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"destinations"},DescribeLogGroups:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"logGroups"},DescribeLogStreams:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"logStreams"},DescribeMetricFilters:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"metricFilters"},DescribeSubscriptionFilters:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:"subscriptionFilters"},FilterLogEvents:{input_token:"nextToken",output_token:"nextToken",limit_key:"limit",result_key:["events","searchedLogStreams"]},GetLogEvents:{input_token:"nextToken",output_token:"nextForwardToken",limit_key:"limit",result_key:"events"}}}},{}],82:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-12-12",endpointPrefix:"machinelearning",jsonVersion:"1.1",serviceFullName:"Amazon Machine Learning",signatureVersion:"v4",targetPrefix:"AmazonML_20141212",protocol:"json"},operations:{AddTags:{input:{type:"structure",required:["Tags","ResourceId","ResourceType"],members:{Tags:{shape:"S2"},ResourceId:{},ResourceType:{}}},output:{type:"structure",members:{ResourceId:{},ResourceType:{}}}},CreateBatchPrediction:{input:{type:"structure",required:["BatchPredictionId","MLModelId","BatchPredictionDataSourceId","OutputUri"],members:{BatchPredictionId:{},BatchPredictionName:{},MLModelId:{},BatchPredictionDataSourceId:{},OutputUri:{}}},output:{type:"structure",members:{BatchPredictionId:{}}}},CreateDataSourceFromRDS:{input:{type:"structure",required:["DataSourceId","RDSData","RoleARN"],members:{DataSourceId:{},DataSourceName:{},RDSData:{type:"structure",required:["DatabaseInformation","SelectSqlQuery","DatabaseCredentials","S3StagingLocation","ResourceRole","ServiceRole","SubnetId","SecurityGroupIds"],members:{DatabaseInformation:{shape:"Sf"},SelectSqlQuery:{},DatabaseCredentials:{type:"structure",required:["Username","Password"],members:{Username:{},Password:{}}},S3StagingLocation:{},DataRearrangement:{},DataSchema:{},DataSchemaUri:{},ResourceRole:{},ServiceRole:{},SubnetId:{},SecurityGroupIds:{type:"list",member:{}}}},RoleARN:{},ComputeStatistics:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{}}}},CreateDataSourceFromRedshift:{input:{type:"structure",required:["DataSourceId","DataSpec","RoleARN"],members:{DataSourceId:{},DataSourceName:{},DataSpec:{type:"structure",required:["DatabaseInformation","SelectSqlQuery","DatabaseCredentials","S3StagingLocation"],members:{DatabaseInformation:{shape:"Sy"},SelectSqlQuery:{},DatabaseCredentials:{type:"structure",required:["Username","Password"],members:{Username:{},Password:{}}},S3StagingLocation:{},DataRearrangement:{},DataSchema:{},DataSchemaUri:{}}},RoleARN:{},ComputeStatistics:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{}}}},CreateDataSourceFromS3:{input:{type:"structure",required:["DataSourceId","DataSpec"],members:{DataSourceId:{},DataSourceName:{},DataSpec:{type:"structure",required:["DataLocationS3"],members:{DataLocationS3:{},DataRearrangement:{},DataSchema:{},DataSchemaLocationS3:{}}},ComputeStatistics:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{}}}},CreateEvaluation:{input:{type:"structure",required:["EvaluationId","MLModelId","EvaluationDataSourceId"],members:{EvaluationId:{},EvaluationName:{},MLModelId:{},EvaluationDataSourceId:{}}},output:{type:"structure",members:{EvaluationId:{}}}},CreateMLModel:{input:{type:"structure",required:["MLModelId","MLModelType","TrainingDataSourceId"],members:{MLModelId:{},MLModelName:{},MLModelType:{},Parameters:{shape:"S1d"},TrainingDataSourceId:{},Recipe:{},RecipeUri:{}}},output:{type:"structure",members:{MLModelId:{}}}},CreateRealtimeEndpoint:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{}}},output:{type:"structure",members:{MLModelId:{},RealtimeEndpointInfo:{shape:"S1j"}}}},DeleteBatchPrediction:{input:{type:"structure",required:["BatchPredictionId"],members:{BatchPredictionId:{}}},output:{type:"structure",members:{BatchPredictionId:{}}}},DeleteDataSource:{input:{type:"structure",required:["DataSourceId"],members:{DataSourceId:{}}},output:{type:"structure",members:{DataSourceId:{}}}},DeleteEvaluation:{input:{type:"structure",required:["EvaluationId"],members:{EvaluationId:{}}},output:{type:"structure",members:{EvaluationId:{}}}},DeleteMLModel:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{}}},output:{type:"structure",members:{MLModelId:{}}}},DeleteRealtimeEndpoint:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{}}},output:{type:"structure",members:{MLModelId:{},RealtimeEndpointInfo:{shape:"S1j"}}}},DeleteTags:{input:{type:"structure",required:["TagKeys","ResourceId","ResourceType"],members:{TagKeys:{type:"list",member:{}},ResourceId:{},ResourceType:{}}},output:{type:"structure",members:{ResourceId:{},ResourceType:{}}}},DescribeBatchPredictions:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{BatchPredictionId:{},MLModelId:{},BatchPredictionDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},OutputUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},TotalRecordCount:{type:"long"},InvalidRecordCount:{type:"long"}}}},NextToken:{}}}},DescribeDataSources:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{DataSourceId:{},DataLocationS3:{},DataRearrangement:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},DataSizeInBytes:{type:"long"},NumberOfFiles:{type:"long"},Name:{},Status:{},Message:{},RedshiftMetadata:{shape:"S2i"},RDSMetadata:{shape:"S2j"},RoleARN:{},ComputeStatistics:{type:"boolean"},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},NextToken:{}}}},DescribeEvaluations:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{EvaluationId:{},MLModelId:{},EvaluationDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},PerformanceMetrics:{shape:"S2q"},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},NextToken:{}}}},DescribeMLModels:{input:{type:"structure",members:{FilterVariable:{},EQ:{},GT:{},LT:{},GE:{},LE:{},NE:{},Prefix:{},SortOrder:{},NextToken:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Results:{type:"list",member:{type:"structure",members:{MLModelId:{},TrainingDataSourceId:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},SizeInBytes:{type:"long"},EndpointInfo:{shape:"S1j"},TrainingParameters:{shape:"S1d"},InputDataLocationS3:{},Algorithm:{},MLModelType:{},ScoreThreshold:{type:"float"},ScoreThresholdLastUpdatedAt:{type:"timestamp"},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},NextToken:{}}}},DescribeTags:{input:{type:"structure",required:["ResourceId","ResourceType"],members:{ResourceId:{},ResourceType:{}}},output:{type:"structure",members:{ResourceId:{},ResourceType:{},Tags:{shape:"S2"}}}},GetBatchPrediction:{input:{type:"structure",required:["BatchPredictionId"],members:{BatchPredictionId:{}}},output:{type:"structure",members:{BatchPredictionId:{},MLModelId:{},BatchPredictionDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},OutputUri:{},LogUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},TotalRecordCount:{type:"long"},InvalidRecordCount:{type:"long"}}}},GetDataSource:{input:{type:"structure",required:["DataSourceId"],members:{DataSourceId:{},Verbose:{type:"boolean"}}},output:{type:"structure",members:{DataSourceId:{},DataLocationS3:{},DataRearrangement:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},DataSizeInBytes:{type:"long"},NumberOfFiles:{type:"long"},Name:{},Status:{},LogUri:{},Message:{},RedshiftMetadata:{shape:"S2i"},RDSMetadata:{shape:"S2j"},RoleARN:{},ComputeStatistics:{type:"boolean"},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},DataSourceSchema:{}}}},GetEvaluation:{input:{type:"structure",required:["EvaluationId"],members:{EvaluationId:{}}},output:{type:"structure",members:{EvaluationId:{},MLModelId:{},EvaluationDataSourceId:{},InputDataLocationS3:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},PerformanceMetrics:{shape:"S2q"},LogUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"}}}},GetMLModel:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{},Verbose:{type:"boolean"}}},output:{type:"structure",members:{MLModelId:{},TrainingDataSourceId:{},CreatedByIamUser:{},CreatedAt:{type:"timestamp"},LastUpdatedAt:{type:"timestamp"},Name:{},Status:{},SizeInBytes:{type:"long"},EndpointInfo:{shape:"S1j"},TrainingParameters:{shape:"S1d"},InputDataLocationS3:{},MLModelType:{},ScoreThreshold:{type:"float"},ScoreThresholdLastUpdatedAt:{type:"timestamp"},LogUri:{},Message:{},ComputeTime:{type:"long"},FinishedAt:{type:"timestamp"},StartedAt:{type:"timestamp"},Recipe:{},Schema:{}}}},Predict:{input:{type:"structure",required:["MLModelId","Record","PredictEndpoint"],members:{MLModelId:{},Record:{type:"map",key:{},value:{}},PredictEndpoint:{}}},output:{type:"structure",members:{Prediction:{type:"structure",members:{predictedLabel:{},predictedValue:{type:"float"},predictedScores:{type:"map",key:{},value:{type:"float"}},details:{type:"map",key:{},value:{}}}}}}},UpdateBatchPrediction:{input:{type:"structure",required:["BatchPredictionId","BatchPredictionName"],members:{BatchPredictionId:{},BatchPredictionName:{}}},output:{type:"structure",members:{BatchPredictionId:{}}}},UpdateDataSource:{input:{type:"structure",required:["DataSourceId","DataSourceName"],members:{DataSourceId:{},DataSourceName:{}}},output:{type:"structure",members:{DataSourceId:{}}}},UpdateEvaluation:{input:{type:"structure",required:["EvaluationId","EvaluationName"],members:{EvaluationId:{},EvaluationName:{}}},output:{type:"structure",members:{EvaluationId:{}}}},UpdateMLModel:{input:{type:"structure",required:["MLModelId"],members:{MLModelId:{},MLModelName:{},ScoreThreshold:{type:"float"}}},output:{type:"structure",members:{MLModelId:{}}}}},shapes:{S2:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},Sf:{type:"structure",required:["InstanceIdentifier","DatabaseName"],members:{InstanceIdentifier:{},DatabaseName:{}}},Sy:{type:"structure",required:["DatabaseName","ClusterIdentifier"],members:{DatabaseName:{},ClusterIdentifier:{}}},S1d:{type:"map",key:{},value:{}},S1j:{type:"structure",members:{PeakRequestsPerSecond:{type:"integer"},CreatedAt:{type:"timestamp"},EndpointUrl:{},EndpointStatus:{}}},S2i:{type:"structure",members:{RedshiftDatabase:{shape:"Sy"},DatabaseUserName:{},SelectSqlQuery:{}}},S2j:{type:"structure",members:{Database:{shape:"Sf"},DatabaseUserName:{},SelectSqlQuery:{},ResourceRole:{},ServiceRole:{},DataPipelineId:{}}},S2q:{type:"structure",members:{Properties:{type:"map",key:{},value:{}}}}},examples:{}}},{}],83:[function(e,t,r){t.exports={pagination:{DescribeBatchPredictions:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"},DescribeDataSources:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"},DescribeEvaluations:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"},DescribeMLModels:{limit_key:"Limit",output_token:"NextToken",input_token:"NextToken",result_key:"Results"}}}},{}],84:[function(e,t,r){t.exports={version:2,waiters:{DataSourceAvailable:{delay:30,operation:"DescribeDataSources",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]},MLModelAvailable:{delay:30,operation:"DescribeMLModels",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]},EvaluationAvailable:{delay:30,operation:"DescribeEvaluations",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]},BatchPredictionAvailable:{delay:30,operation:"DescribeBatchPredictions",maxAttempts:60,acceptors:[{expected:"COMPLETED",matcher:"pathAll",state:"success",argument:"Results[].Status"},{expected:"FAILED",matcher:"pathAny",state:"failure",argument:"Results[].Status"}]}}}},{}],85:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-07-01",endpointPrefix:"marketplacecommerceanalytics",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS Marketplace Commerce Analytics",signatureVersion:"v4",signingName:"marketplacecommerceanalytics",targetPrefix:"MarketplaceCommerceAnalytics20150701"},operations:{GenerateDataSet:{input:{type:"structure",required:["dataSetType","dataSetPublicationDate","roleNameArn","destinationS3BucketName","snsTopicArn"],members:{dataSetType:{},dataSetPublicationDate:{type:"timestamp"},roleNameArn:{},destinationS3BucketName:{},destinationS3Prefix:{},snsTopicArn:{},customerDefinedValues:{shape:"S8"}}},output:{type:"structure",members:{dataSetRequestId:{}}}},StartSupportDataExport:{input:{type:"structure",required:["dataSetType","fromDate","roleNameArn","destinationS3BucketName","snsTopicArn"],members:{dataSetType:{},fromDate:{type:"timestamp"},roleNameArn:{},destinationS3BucketName:{},destinationS3Prefix:{},snsTopicArn:{},customerDefinedValues:{shape:"S8"}}},output:{type:"structure",members:{dataSetRequestId:{}}}}},shapes:{S8:{type:"map",key:{},value:{}}}}},{}],86:[function(e,t,r){t.exports={acm:{name:"ACM",cors:!0},apigateway:{name:"APIGateway",cors:!0},applicationautoscaling:{prefix:"application-autoscaling",name:"ApplicationAutoScaling",cors:!0},autoscaling:{name:"AutoScaling",cors:!0},cloudformation:{name:"CloudFormation",cors:!0},cloudfront:{name:"CloudFront",versions:["2013-05-12*","2013-11-11*","2014-05-31*","2014-10-21*","2014-11-06*","2015-04-17*","2015-07-27*","2015-09-17*","2016-01-13*","2016-01-28*","2016-08-01*","2016-08-20*"],cors:!0},cloudhsm:{name:"CloudHSM",cors:!0},cloudsearch:{name:"CloudSearch"},cloudsearchdomain:{name:"CloudSearchDomain"},cloudtrail:{name:"CloudTrail",cors:!0},cloudwatch:{prefix:"monitoring",name:"CloudWatch",cors:!0},cloudwatchevents:{prefix:"events",name:"CloudWatchEvents",versions:["2014-02-03*"],cors:!0},cloudwatchlogs:{prefix:"logs",name:"CloudWatchLogs",cors:!0},codecommit:{name:"CodeCommit",cors:!0},codedeploy:{name:"CodeDeploy",cors:!0},codepipeline:{name:"CodePipeline",cors:!0},cognitoidentity:{prefix:"cognito-identity",name:"CognitoIdentity",cors:!0},cognitoidentityserviceprovider:{prefix:"cognito-idp",name:"CognitoIdentityServiceProvider",cors:!0},cognitosync:{prefix:"cognito-sync",name:"CognitoSync",cors:!0},configservice:{prefix:"config",name:"ConfigService",cors:!0},datapipeline:{name:"DataPipeline"},devicefarm:{name:"DeviceFarm",cors:!0},directconnect:{name:"DirectConnect",cors:!0},directoryservice:{prefix:"ds",name:"DirectoryService"},discovery:{name:"Discovery"},dms:{name:"DMS"},dynamodb:{name:"DynamoDB",cors:!0},dynamodbstreams:{prefix:"streams.dynamodb",name:"DynamoDBStreams",cors:!0},ec2:{name:"EC2",versions:["2013-06-15*","2013-10-15*","2014-02-01*","2014-05-01*","2014-06-15*","2014-09-01*","2014-10-01*","2015-03-01*","2015-04-15*","2015-10-01*","2016-04-01*"],cors:!0},ecr:{name:"ECR",cors:!0},ecs:{name:"ECS",cors:!0},efs:{prefix:"elasticfilesystem",name:"EFS"},elasticache:{name:"ElastiCache",versions:["2012-11-15*","2014-03-24*","2014-07-15*","2014-09-30*"],cors:!0},elasticbeanstalk:{name:"ElasticBeanstalk",cors:!0},elb:{prefix:"elasticloadbalancing",name:"ELB",cors:!0},elbv2:{prefix:"elasticloadbalancingv2",name:"ELBv2",cors:!0},emr:{prefix:"elasticmapreduce",name:"EMR",cors:!0},es:{name:"ES"},elastictranscoder:{name:"ElasticTranscoder",cors:!0},firehose:{name:"Firehose",cors:!0},gamelift:{name:"GameLift",cors:!0},glacier:{name:"Glacier"},iam:{name:"IAM"},importexport:{name:"ImportExport"},inspector:{name:"Inspector",versions:["2015-08-18*"],cors:!0},iot:{name:"Iot",cors:!0},iotdata:{prefix:"iot-data",name:"IotData",cors:!0},kinesis:{name:"Kinesis",cors:!0},kinesisanalytics:{name:"KinesisAnalytics"},kms:{name:"KMS",cors:!0},lambda:{name:"Lambda",cors:!0},machinelearning:{name:"MachineLearning",cors:!0},marketplacecommerceanalytics:{name:"MarketplaceCommerceAnalytics",cors:!0},marketplacemetering:{prefix:"meteringmarketplace",name:"MarketplaceMetering"},mobileanalytics:{name:"MobileAnalytics",cors:!0},opsworks:{name:"OpsWorks",cors:!0},rds:{name:"RDS",versions:["2014-09-01*"],cors:!0},redshift:{name:"Redshift",cors:!0},route53:{name:"Route53",cors:!0},route53domains:{name:"Route53Domains",cors:!0},s3:{name:"S3",dualstackAvailable:!0,cors:!0},servicecatalog:{name:"ServiceCatalog",cors:!0},ses:{prefix:"email",name:"SES",cors:!0},simpledb:{prefix:"sdb",name:"SimpleDB"},snowball:{name:"Snowball"},sns:{name:"SNS",cors:!0},sqs:{name:"SQS",cors:!0},ssm:{name:"SSM",cors:!0},storagegateway:{name:"StorageGateway",cors:!0},sts:{name:"STS",cors:!0},support:{name:"Support"},swf:{name:"SWF"},waf:{name:"WAF",cors:!0},workspaces:{name:"WorkSpaces"}}},{}],87:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-06-05",endpointPrefix:"mobileanalytics",serviceFullName:"Amazon Mobile Analytics",signatureVersion:"v4",protocol:"rest-json"},operations:{PutEvents:{http:{requestUri:"/2014-06-05/events",responseCode:202},input:{type:"structure",required:["events","clientContext"],members:{events:{type:"list",member:{type:"structure",required:["eventType","timestamp"],members:{eventType:{},timestamp:{},session:{type:"structure",members:{id:{},duration:{type:"long"},startTimestamp:{},stopTimestamp:{}}},version:{},attributes:{type:"map",key:{},value:{}},metrics:{type:"map",key:{},value:{type:"double"}}}}},clientContext:{location:"header",locationName:"x-amz-Client-Context"},clientContextEncoding:{location:"header",locationName:"x-amz-Client-Context-Encoding"}}}}},shapes:{}}},{}],88:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-08-01",endpointPrefix:"monitoring",protocol:"query",serviceAbbreviation:"CloudWatch",serviceFullName:"Amazon CloudWatch",signatureVersion:"v4",xmlNamespace:"http://monitoring.amazonaws.com/doc/2010-08-01/"},operations:{DeleteAlarms:{input:{type:"structure",required:["AlarmNames"],members:{AlarmNames:{shape:"S2"}}}},DescribeAlarmHistory:{input:{type:"structure",members:{AlarmName:{},HistoryItemType:{},StartDate:{type:"timestamp"},EndDate:{type:"timestamp"},MaxRecords:{type:"integer"},NextToken:{}}},output:{resultWrapper:"DescribeAlarmHistoryResult",type:"structure",members:{AlarmHistoryItems:{type:"list",member:{type:"structure",members:{AlarmName:{},Timestamp:{type:"timestamp"},HistoryItemType:{},HistorySummary:{},HistoryData:{}}}},NextToken:{}}}},DescribeAlarms:{input:{type:"structure",members:{AlarmNames:{shape:"S2"},AlarmNamePrefix:{},StateValue:{},ActionPrefix:{},MaxRecords:{type:"integer"},NextToken:{}}},output:{resultWrapper:"DescribeAlarmsResult",type:"structure",members:{MetricAlarms:{shape:"Sj"},NextToken:{}}}},DescribeAlarmsForMetric:{input:{type:"structure",required:["MetricName","Namespace"],members:{MetricName:{},Namespace:{},Statistic:{},Dimensions:{shape:"Sv"},Period:{type:"integer"},Unit:{}}},output:{resultWrapper:"DescribeAlarmsForMetricResult",type:"structure",members:{MetricAlarms:{shape:"Sj"}}}},DisableAlarmActions:{input:{type:"structure",required:["AlarmNames"],members:{AlarmNames:{shape:"S2"}}}},EnableAlarmActions:{input:{type:"structure",required:["AlarmNames"],members:{AlarmNames:{shape:"S2"}}}},GetMetricStatistics:{input:{type:"structure",required:["Namespace","MetricName","StartTime","EndTime","Period","Statistics"],members:{Namespace:{},MetricName:{},Dimensions:{shape:"Sv"},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Period:{type:"integer"},Statistics:{type:"list",member:{}},Unit:{}}},output:{resultWrapper:"GetMetricStatisticsResult",type:"structure",members:{Label:{},Datapoints:{type:"list",member:{type:"structure",members:{Timestamp:{type:"timestamp"},SampleCount:{type:"double"},Average:{type:"double"},Sum:{type:"double"},Minimum:{type:"double"},Maximum:{type:"double"},Unit:{}},xmlOrder:["Timestamp","SampleCount","Average","Sum","Minimum","Maximum","Unit"]}}}}},ListMetrics:{input:{type:"structure",members:{Namespace:{},MetricName:{},Dimensions:{type:"list",member:{type:"structure",required:["Name"],members:{Name:{},Value:{}}}},NextToken:{}}},output:{resultWrapper:"ListMetricsResult",type:"structure",members:{Metrics:{type:"list",member:{type:"structure",members:{Namespace:{},MetricName:{},Dimensions:{shape:"Sv"}},xmlOrder:["Namespace","MetricName","Dimensions"]}},NextToken:{}},xmlOrder:["Metrics","NextToken"]}},PutMetricAlarm:{input:{type:"structure",required:["AlarmName","MetricName","Namespace","Statistic","Period","EvaluationPeriods","Threshold","ComparisonOperator"],members:{AlarmName:{},AlarmDescription:{},ActionsEnabled:{type:"boolean"},OKActions:{shape:"So"},AlarmActions:{shape:"So"},InsufficientDataActions:{shape:"So"},MetricName:{},Namespace:{},Statistic:{},Dimensions:{shape:"Sv"},Period:{type:"integer"},Unit:{},EvaluationPeriods:{type:"integer"},Threshold:{type:"double"},ComparisonOperator:{}}}},PutMetricData:{input:{type:"structure",required:["Namespace","MetricData"],members:{Namespace:{},MetricData:{type:"list",member:{type:"structure",required:["MetricName"],members:{MetricName:{},Dimensions:{shape:"Sv"},Timestamp:{type:"timestamp"},Value:{type:"double"},StatisticValues:{type:"structure",required:["SampleCount","Sum","Minimum","Maximum"],members:{SampleCount:{type:"double"},Sum:{type:"double"},Minimum:{type:"double"},Maximum:{type:"double"}}},Unit:{}}}}}}},SetAlarmState:{input:{type:"structure",required:["AlarmName","StateValue","StateReason"],members:{AlarmName:{},StateValue:{},StateReason:{},StateReasonData:{}}}}},shapes:{S2:{type:"list",member:{}},Sj:{type:"list",member:{type:"structure",members:{AlarmName:{},AlarmArn:{},AlarmDescription:{},AlarmConfigurationUpdatedTimestamp:{type:"timestamp"},ActionsEnabled:{type:"boolean"},OKActions:{shape:"So"},AlarmActions:{shape:"So"},InsufficientDataActions:{shape:"So"},StateValue:{},StateReason:{},StateReasonData:{},StateUpdatedTimestamp:{type:"timestamp"},MetricName:{},Namespace:{},Statistic:{},Dimensions:{shape:"Sv"},Period:{type:"integer"},Unit:{},EvaluationPeriods:{type:"integer"},Threshold:{type:"double"},ComparisonOperator:{}},xmlOrder:["AlarmName","AlarmArn","AlarmDescription","AlarmConfigurationUpdatedTimestamp","ActionsEnabled","OKActions","AlarmActions","InsufficientDataActions","StateValue","StateReason","StateReasonData","StateUpdatedTimestamp","MetricName","Namespace","Statistic","Dimensions","Period","Unit","EvaluationPeriods","Threshold","ComparisonOperator"]}},So:{type:"list",member:{}},Sv:{type:"list",member:{type:"structure",required:["Name","Value"],members:{Name:{},Value:{}},xmlOrder:["Name","Value"]}}}}},{}],89:[function(e,t,r){t.exports={pagination:{DescribeAlarmHistory:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxRecords",result_key:"AlarmHistoryItems"},DescribeAlarms:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxRecords",result_key:"MetricAlarms"},DescribeAlarmsForMetric:{result_key:"MetricAlarms"},ListMetrics:{input_token:"NextToken",output_token:"NextToken",result_key:"Metrics"}}}},{}],90:[function(e,t,r){t.exports={version:2,waiters:{AlarmExists:{delay:5,maxAttempts:40,operation:"DescribeAlarms",acceptors:[{matcher:"path",expected:!0,argument:"length(MetricAlarms[]) > `0`",state:"success"}]}}}},{}],91:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-02-18",endpointPrefix:"opsworks",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS OpsWorks",signatureVersion:"v4",targetPrefix:"OpsWorks_20130218"},operations:{AssignInstance:{input:{type:"structure",required:["InstanceId","LayerIds"],members:{InstanceId:{},LayerIds:{shape:"S3"}}}},AssignVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{},InstanceId:{}}}},AssociateElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{},InstanceId:{}}}},AttachElasticLoadBalancer:{input:{type:"structure",required:["ElasticLoadBalancerName","LayerId"],members:{ElasticLoadBalancerName:{},LayerId:{}}}},CloneStack:{input:{type:"structure",required:["SourceStackId","ServiceRoleArn"],members:{SourceStackId:{},Name:{},Region:{},VpcId:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},UseOpsworksSecurityGroups:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},ClonePermissions:{type:"boolean"},CloneAppIds:{shape:"S3"},DefaultRootDeviceType:{},AgentVersion:{}}},output:{type:"structure",members:{StackId:{}}}},CreateApp:{input:{type:"structure",required:["StackId","Name","Type"],members:{StackId:{},Shortname:{},Name:{},Description:{},DataSources:{shape:"Si"},Type:{},AppSource:{shape:"Sd"},Domains:{shape:"S3"},EnableSsl:{type:"boolean"},SslConfiguration:{shape:"Sl"},Attributes:{shape:"Sm"},Environment:{shape:"So"}}},output:{type:"structure",members:{AppId:{}}}},CreateDeployment:{input:{type:"structure",required:["StackId","Command"],members:{StackId:{},AppId:{},InstanceIds:{shape:"S3"},LayerIds:{shape:"S3"},Command:{shape:"Ss"},Comment:{},CustomJson:{}}},output:{type:"structure",members:{DeploymentId:{}}}},CreateInstance:{input:{type:"structure",required:["StackId","LayerIds","InstanceType"],members:{StackId:{},LayerIds:{shape:"S3"},InstanceType:{},AutoScalingType:{},Hostname:{},Os:{},AmiId:{},SshKeyName:{},AvailabilityZone:{},VirtualizationType:{},SubnetId:{},Architecture:{},RootDeviceType:{},BlockDeviceMappings:{shape:"Sz"},InstallUpdatesOnBoot:{type:"boolean"},EbsOptimized:{type:"boolean"},AgentVersion:{},Tenancy:{}}},output:{type:"structure",members:{InstanceId:{}}}},CreateLayer:{input:{type:"structure",required:["StackId","Type","Name","Shortname"],members:{StackId:{},Type:{}, -Name:{},Shortname:{},Attributes:{shape:"S17"},CustomInstanceProfileArn:{},CustomJson:{},CustomSecurityGroupIds:{shape:"S3"},Packages:{shape:"S3"},VolumeConfigurations:{shape:"S19"},EnableAutoHealing:{type:"boolean"},AutoAssignElasticIps:{type:"boolean"},AutoAssignPublicIps:{type:"boolean"},CustomRecipes:{shape:"S1b"},InstallUpdatesOnBoot:{type:"boolean"},UseEbsOptimizedInstances:{type:"boolean"},LifecycleEventConfiguration:{shape:"S1c"}}},output:{type:"structure",members:{LayerId:{}}}},CreateStack:{input:{type:"structure",required:["Name","Region","ServiceRoleArn","DefaultInstanceProfileArn"],members:{Name:{},Region:{},VpcId:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},UseOpsworksSecurityGroups:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},DefaultRootDeviceType:{},AgentVersion:{}}},output:{type:"structure",members:{StackId:{}}}},CreateUserProfile:{input:{type:"structure",required:["IamUserArn"],members:{IamUserArn:{},SshUsername:{},SshPublicKey:{},AllowSelfManagement:{type:"boolean"}}},output:{type:"structure",members:{IamUserArn:{}}}},DeleteApp:{input:{type:"structure",required:["AppId"],members:{AppId:{}}}},DeleteInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},DeleteElasticIp:{type:"boolean"},DeleteVolumes:{type:"boolean"}}}},DeleteLayer:{input:{type:"structure",required:["LayerId"],members:{LayerId:{}}}},DeleteStack:{input:{type:"structure",required:["StackId"],members:{StackId:{}}}},DeleteUserProfile:{input:{type:"structure",required:["IamUserArn"],members:{IamUserArn:{}}}},DeregisterEcsCluster:{input:{type:"structure",required:["EcsClusterArn"],members:{EcsClusterArn:{}}}},DeregisterElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{}}}},DeregisterInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},DeregisterRdsDbInstance:{input:{type:"structure",required:["RdsDbInstanceArn"],members:{RdsDbInstanceArn:{}}}},DeregisterVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{}}}},DescribeAgentVersions:{input:{type:"structure",members:{StackId:{},ConfigurationManager:{shape:"Sa"}}},output:{type:"structure",members:{AgentVersions:{type:"list",member:{type:"structure",members:{Version:{},ConfigurationManager:{shape:"Sa"}}}}}}},DescribeApps:{input:{type:"structure",members:{StackId:{},AppIds:{shape:"S3"}}},output:{type:"structure",members:{Apps:{type:"list",member:{type:"structure",members:{AppId:{},StackId:{},Shortname:{},Name:{},Description:{},DataSources:{shape:"Si"},Type:{},AppSource:{shape:"Sd"},Domains:{shape:"S3"},EnableSsl:{type:"boolean"},SslConfiguration:{shape:"Sl"},Attributes:{shape:"Sm"},CreatedAt:{},Environment:{shape:"So"}}}}}}},DescribeCommands:{input:{type:"structure",members:{DeploymentId:{},InstanceId:{},CommandIds:{shape:"S3"}}},output:{type:"structure",members:{Commands:{type:"list",member:{type:"structure",members:{CommandId:{},InstanceId:{},DeploymentId:{},CreatedAt:{},AcknowledgedAt:{},CompletedAt:{},Status:{},ExitCode:{type:"integer"},LogUrl:{},Type:{}}}}}}},DescribeDeployments:{input:{type:"structure",members:{StackId:{},AppId:{},DeploymentIds:{shape:"S3"}}},output:{type:"structure",members:{Deployments:{type:"list",member:{type:"structure",members:{DeploymentId:{},StackId:{},AppId:{},CreatedAt:{},CompletedAt:{},Duration:{type:"integer"},IamUserArn:{},Comment:{},Command:{shape:"Ss"},Status:{},CustomJson:{},InstanceIds:{shape:"S3"}}}}}}},DescribeEcsClusters:{input:{type:"structure",members:{EcsClusterArns:{shape:"S3"},StackId:{},NextToken:{},MaxResults:{type:"integer"}}},output:{type:"structure",members:{EcsClusters:{type:"list",member:{type:"structure",members:{EcsClusterArn:{},EcsClusterName:{},StackId:{},RegisteredAt:{}}}},NextToken:{}}}},DescribeElasticIps:{input:{type:"structure",members:{InstanceId:{},StackId:{},Ips:{shape:"S3"}}},output:{type:"structure",members:{ElasticIps:{type:"list",member:{type:"structure",members:{Ip:{},Name:{},Domain:{},Region:{},InstanceId:{}}}}}}},DescribeElasticLoadBalancers:{input:{type:"structure",members:{StackId:{},LayerIds:{shape:"S3"}}},output:{type:"structure",members:{ElasticLoadBalancers:{type:"list",member:{type:"structure",members:{ElasticLoadBalancerName:{},Region:{},DnsName:{},StackId:{},LayerId:{},VpcId:{},AvailabilityZones:{shape:"S3"},SubnetIds:{shape:"S3"},Ec2InstanceIds:{shape:"S3"}}}}}}},DescribeInstances:{input:{type:"structure",members:{StackId:{},LayerId:{},InstanceIds:{shape:"S3"}}},output:{type:"structure",members:{Instances:{type:"list",member:{type:"structure",members:{AgentVersion:{},AmiId:{},Architecture:{},AutoScalingType:{},AvailabilityZone:{},BlockDeviceMappings:{shape:"Sz"},CreatedAt:{},EbsOptimized:{type:"boolean"},Ec2InstanceId:{},EcsClusterArn:{},EcsContainerInstanceArn:{},ElasticIp:{},Hostname:{},InfrastructureClass:{},InstallUpdatesOnBoot:{type:"boolean"},InstanceId:{},InstanceProfileArn:{},InstanceType:{},LastServiceErrorId:{},LayerIds:{shape:"S3"},Os:{},Platform:{},PrivateDns:{},PrivateIp:{},PublicDns:{},PublicIp:{},RegisteredBy:{},ReportedAgentVersion:{},ReportedOs:{type:"structure",members:{Family:{},Name:{},Version:{}}},RootDeviceType:{},RootDeviceVolumeId:{},SecurityGroupIds:{shape:"S3"},SshHostDsaKeyFingerprint:{},SshHostRsaKeyFingerprint:{},SshKeyName:{},StackId:{},Status:{},SubnetId:{},Tenancy:{},VirtualizationType:{}}}}}}},DescribeLayers:{input:{type:"structure",members:{StackId:{},LayerIds:{shape:"S3"}}},output:{type:"structure",members:{Layers:{type:"list",member:{type:"structure",members:{StackId:{},LayerId:{},Type:{},Name:{},Shortname:{},Attributes:{shape:"S17"},CustomInstanceProfileArn:{},CustomJson:{},CustomSecurityGroupIds:{shape:"S3"},DefaultSecurityGroupNames:{shape:"S3"},Packages:{shape:"S3"},VolumeConfigurations:{shape:"S19"},EnableAutoHealing:{type:"boolean"},AutoAssignElasticIps:{type:"boolean"},AutoAssignPublicIps:{type:"boolean"},DefaultRecipes:{shape:"S1b"},CustomRecipes:{shape:"S1b"},CreatedAt:{},InstallUpdatesOnBoot:{type:"boolean"},UseEbsOptimizedInstances:{type:"boolean"},LifecycleEventConfiguration:{shape:"S1c"}}}}}}},DescribeLoadBasedAutoScaling:{input:{type:"structure",required:["LayerIds"],members:{LayerIds:{shape:"S3"}}},output:{type:"structure",members:{LoadBasedAutoScalingConfigurations:{type:"list",member:{type:"structure",members:{LayerId:{},Enable:{type:"boolean"},UpScaling:{shape:"S30"},DownScaling:{shape:"S30"}}}}}}},DescribeMyUserProfile:{output:{type:"structure",members:{UserProfile:{type:"structure",members:{IamUserArn:{},Name:{},SshUsername:{},SshPublicKey:{}}}}}},DescribePermissions:{input:{type:"structure",members:{IamUserArn:{},StackId:{}}},output:{type:"structure",members:{Permissions:{type:"list",member:{type:"structure",members:{StackId:{},IamUserArn:{},AllowSsh:{type:"boolean"},AllowSudo:{type:"boolean"},Level:{}}}}}}},DescribeRaidArrays:{input:{type:"structure",members:{InstanceId:{},StackId:{},RaidArrayIds:{shape:"S3"}}},output:{type:"structure",members:{RaidArrays:{type:"list",member:{type:"structure",members:{RaidArrayId:{},InstanceId:{},Name:{},RaidLevel:{type:"integer"},NumberOfDisks:{type:"integer"},Size:{type:"integer"},Device:{},MountPoint:{},AvailabilityZone:{},CreatedAt:{},StackId:{},VolumeType:{},Iops:{type:"integer"}}}}}}},DescribeRdsDbInstances:{input:{type:"structure",required:["StackId"],members:{StackId:{},RdsDbInstanceArns:{shape:"S3"}}},output:{type:"structure",members:{RdsDbInstances:{type:"list",member:{type:"structure",members:{RdsDbInstanceArn:{},DbInstanceIdentifier:{},DbUser:{},DbPassword:{},Region:{},Address:{},Engine:{},StackId:{},MissingOnRds:{type:"boolean"}}}}}}},DescribeServiceErrors:{input:{type:"structure",members:{StackId:{},InstanceId:{},ServiceErrorIds:{shape:"S3"}}},output:{type:"structure",members:{ServiceErrors:{type:"list",member:{type:"structure",members:{ServiceErrorId:{},StackId:{},InstanceId:{},Type:{},Message:{},CreatedAt:{}}}}}}},DescribeStackProvisioningParameters:{input:{type:"structure",required:["StackId"],members:{StackId:{}}},output:{type:"structure",members:{AgentInstallerUrl:{},Parameters:{type:"map",key:{},value:{}}}}},DescribeStackSummary:{input:{type:"structure",required:["StackId"],members:{StackId:{}}},output:{type:"structure",members:{StackSummary:{type:"structure",members:{StackId:{},Name:{},Arn:{},LayersCount:{type:"integer"},AppsCount:{type:"integer"},InstancesCount:{type:"structure",members:{Assigning:{type:"integer"},Booting:{type:"integer"},ConnectionLost:{type:"integer"},Deregistering:{type:"integer"},Online:{type:"integer"},Pending:{type:"integer"},Rebooting:{type:"integer"},Registered:{type:"integer"},Registering:{type:"integer"},Requested:{type:"integer"},RunningSetup:{type:"integer"},SetupFailed:{type:"integer"},ShuttingDown:{type:"integer"},StartFailed:{type:"integer"},Stopped:{type:"integer"},Stopping:{type:"integer"},Terminated:{type:"integer"},Terminating:{type:"integer"},Unassigning:{type:"integer"}}}}}}}},DescribeStacks:{input:{type:"structure",members:{StackIds:{shape:"S3"}}},output:{type:"structure",members:{Stacks:{type:"list",member:{type:"structure",members:{StackId:{},Name:{},Arn:{},Region:{},VpcId:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},UseOpsworksSecurityGroups:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},CreatedAt:{},DefaultRootDeviceType:{},AgentVersion:{}}}}}}},DescribeTimeBasedAutoScaling:{input:{type:"structure",required:["InstanceIds"],members:{InstanceIds:{shape:"S3"}}},output:{type:"structure",members:{TimeBasedAutoScalingConfigurations:{type:"list",member:{type:"structure",members:{InstanceId:{},AutoScalingSchedule:{shape:"S40"}}}}}}},DescribeUserProfiles:{input:{type:"structure",members:{IamUserArns:{shape:"S3"}}},output:{type:"structure",members:{UserProfiles:{type:"list",member:{type:"structure",members:{IamUserArn:{},Name:{},SshUsername:{},SshPublicKey:{},AllowSelfManagement:{type:"boolean"}}}}}}},DescribeVolumes:{input:{type:"structure",members:{InstanceId:{},StackId:{},RaidArrayId:{},VolumeIds:{shape:"S3"}}},output:{type:"structure",members:{Volumes:{type:"list",member:{type:"structure",members:{VolumeId:{},Ec2VolumeId:{},Name:{},RaidArrayId:{},InstanceId:{},Status:{},Size:{type:"integer"},Device:{},MountPoint:{},Region:{},AvailabilityZone:{},VolumeType:{},Iops:{type:"integer"}}}}}}},DetachElasticLoadBalancer:{input:{type:"structure",required:["ElasticLoadBalancerName","LayerId"],members:{ElasticLoadBalancerName:{},LayerId:{}}}},DisassociateElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{}}}},GetHostnameSuggestion:{input:{type:"structure",required:["LayerId"],members:{LayerId:{}}},output:{type:"structure",members:{LayerId:{},Hostname:{}}}},GrantAccess:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},ValidForInMinutes:{type:"integer"}}},output:{type:"structure",members:{TemporaryCredential:{type:"structure",members:{Username:{},Password:{},ValidForInMinutes:{type:"integer"},InstanceId:{}}}}}},RebootInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},RegisterEcsCluster:{input:{type:"structure",required:["EcsClusterArn","StackId"],members:{EcsClusterArn:{},StackId:{}}},output:{type:"structure",members:{EcsClusterArn:{}}}},RegisterElasticIp:{input:{type:"structure",required:["ElasticIp","StackId"],members:{ElasticIp:{},StackId:{}}},output:{type:"structure",members:{ElasticIp:{}}}},RegisterInstance:{input:{type:"structure",required:["StackId"],members:{StackId:{},Hostname:{},PublicIp:{},PrivateIp:{},RsaPublicKey:{},RsaPublicKeyFingerprint:{},InstanceIdentity:{type:"structure",members:{Document:{},Signature:{}}}}},output:{type:"structure",members:{InstanceId:{}}}},RegisterRdsDbInstance:{input:{type:"structure",required:["StackId","RdsDbInstanceArn","DbUser","DbPassword"],members:{StackId:{},RdsDbInstanceArn:{},DbUser:{},DbPassword:{}}}},RegisterVolume:{input:{type:"structure",required:["StackId"],members:{Ec2VolumeId:{},StackId:{}}},output:{type:"structure",members:{VolumeId:{}}}},SetLoadBasedAutoScaling:{input:{type:"structure",required:["LayerId"],members:{LayerId:{},Enable:{type:"boolean"},UpScaling:{shape:"S30"},DownScaling:{shape:"S30"}}}},SetPermission:{input:{type:"structure",required:["StackId","IamUserArn"],members:{StackId:{},IamUserArn:{},AllowSsh:{type:"boolean"},AllowSudo:{type:"boolean"},Level:{}}}},SetTimeBasedAutoScaling:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},AutoScalingSchedule:{shape:"S40"}}}},StartInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},StartStack:{input:{type:"structure",required:["StackId"],members:{StackId:{}}}},StopInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},StopStack:{input:{type:"structure",required:["StackId"],members:{StackId:{}}}},UnassignInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}}},UnassignVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{}}}},UpdateApp:{input:{type:"structure",required:["AppId"],members:{AppId:{},Name:{},Description:{},DataSources:{shape:"Si"},Type:{},AppSource:{shape:"Sd"},Domains:{shape:"S3"},EnableSsl:{type:"boolean"},SslConfiguration:{shape:"Sl"},Attributes:{shape:"Sm"},Environment:{shape:"So"}}}},UpdateElasticIp:{input:{type:"structure",required:["ElasticIp"],members:{ElasticIp:{},Name:{}}}},UpdateInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{},LayerIds:{shape:"S3"},InstanceType:{},AutoScalingType:{},Hostname:{},Os:{},AmiId:{},SshKeyName:{},Architecture:{},InstallUpdatesOnBoot:{type:"boolean"},EbsOptimized:{type:"boolean"},AgentVersion:{}}}},UpdateLayer:{input:{type:"structure",required:["LayerId"],members:{LayerId:{},Name:{},Shortname:{},Attributes:{shape:"S17"},CustomInstanceProfileArn:{},CustomJson:{},CustomSecurityGroupIds:{shape:"S3"},Packages:{shape:"S3"},VolumeConfigurations:{shape:"S19"},EnableAutoHealing:{type:"boolean"},AutoAssignElasticIps:{type:"boolean"},AutoAssignPublicIps:{type:"boolean"},CustomRecipes:{shape:"S1b"},InstallUpdatesOnBoot:{type:"boolean"},UseEbsOptimizedInstances:{type:"boolean"},LifecycleEventConfiguration:{shape:"S1c"}}}},UpdateMyUserProfile:{input:{type:"structure",members:{SshPublicKey:{}}}},UpdateRdsDbInstance:{input:{type:"structure",required:["RdsDbInstanceArn"],members:{RdsDbInstanceArn:{},DbUser:{},DbPassword:{}}}},UpdateStack:{input:{type:"structure",required:["StackId"],members:{StackId:{},Name:{},Attributes:{shape:"S8"},ServiceRoleArn:{},DefaultInstanceProfileArn:{},DefaultOs:{},HostnameTheme:{},DefaultAvailabilityZone:{},DefaultSubnetId:{},CustomJson:{},ConfigurationManager:{shape:"Sa"},ChefConfiguration:{shape:"Sb"},UseCustomCookbooks:{type:"boolean"},CustomCookbooksSource:{shape:"Sd"},DefaultSshKeyName:{},DefaultRootDeviceType:{},UseOpsworksSecurityGroups:{type:"boolean"},AgentVersion:{}}}},UpdateUserProfile:{input:{type:"structure",required:["IamUserArn"],members:{IamUserArn:{},SshUsername:{},SshPublicKey:{},AllowSelfManagement:{type:"boolean"}}}},UpdateVolume:{input:{type:"structure",required:["VolumeId"],members:{VolumeId:{},Name:{},MountPoint:{}}}}},shapes:{S3:{type:"list",member:{}},S8:{type:"map",key:{},value:{}},Sa:{type:"structure",members:{Name:{},Version:{}}},Sb:{type:"structure",members:{ManageBerkshelf:{type:"boolean"},BerkshelfVersion:{}}},Sd:{type:"structure",members:{Type:{},Url:{},Username:{},Password:{},SshKey:{},Revision:{}}},Si:{type:"list",member:{type:"structure",members:{Type:{},Arn:{},DatabaseName:{}}}},Sl:{type:"structure",required:["Certificate","PrivateKey"],members:{Certificate:{},PrivateKey:{},Chain:{}}},Sm:{type:"map",key:{},value:{}},So:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{},Secure:{type:"boolean"}}}},Ss:{type:"structure",required:["Name"],members:{Name:{},Args:{type:"map",key:{},value:{shape:"S3"}}}},Sz:{type:"list",member:{type:"structure",members:{DeviceName:{},NoDevice:{},VirtualName:{},Ebs:{type:"structure",members:{SnapshotId:{},Iops:{type:"integer"},VolumeSize:{type:"integer"},VolumeType:{},DeleteOnTermination:{type:"boolean"}}}}}},S17:{type:"map",key:{},value:{}},S19:{type:"list",member:{type:"structure",required:["MountPoint","NumberOfDisks","Size"],members:{MountPoint:{},RaidLevel:{type:"integer"},NumberOfDisks:{type:"integer"},Size:{type:"integer"},VolumeType:{},Iops:{type:"integer"}}}},S1b:{type:"structure",members:{Setup:{shape:"S3"},Configure:{shape:"S3"},Deploy:{shape:"S3"},Undeploy:{shape:"S3"},Shutdown:{shape:"S3"}}},S1c:{type:"structure",members:{Shutdown:{type:"structure",members:{ExecutionTimeout:{type:"integer"},DelayUntilElbConnectionsDrained:{type:"boolean"}}}}},S30:{type:"structure",members:{InstanceCount:{type:"integer"},ThresholdsWaitTime:{type:"integer"},IgnoreMetricsTime:{type:"integer"},CpuThreshold:{type:"double"},MemoryThreshold:{type:"double"},LoadThreshold:{type:"double"},Alarms:{shape:"S3"}}},S40:{type:"structure",members:{Monday:{shape:"S41"},Tuesday:{shape:"S41"},Wednesday:{shape:"S41"},Thursday:{shape:"S41"},Friday:{shape:"S41"},Saturday:{shape:"S41"},Sunday:{shape:"S41"}}},S41:{type:"map",key:{},value:{}}}}},{}],92:[function(e,t,r){t.exports={pagination:{DescribeApps:{result_key:"Apps"},DescribeCommands:{result_key:"Commands"},DescribeDeployments:{result_key:"Deployments"},DescribeEcsClusters:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"EcsClusters"},DescribeElasticIps:{result_key:"ElasticIps"},DescribeElasticLoadBalancers:{result_key:"ElasticLoadBalancers"},DescribeInstances:{result_key:"Instances"},DescribeLayers:{result_key:"Layers"},DescribeLoadBasedAutoScaling:{result_key:"LoadBasedAutoScalingConfigurations"},DescribePermissions:{result_key:"Permissions"},DescribeRaidArrays:{result_key:"RaidArrays"},DescribeServiceErrors:{result_key:"ServiceErrors"},DescribeStacks:{result_key:"Stacks"},DescribeTimeBasedAutoScaling:{result_key:"TimeBasedAutoScalingConfigurations"},DescribeUserProfiles:{result_key:"UserProfiles"},DescribeVolumes:{result_key:"Volumes"}}}},{}],93:[function(e,t,r){t.exports={version:2,waiters:{AppExists:{delay:1,operation:"DescribeApps",maxAttempts:40,acceptors:[{expected:200,matcher:"status",state:"success"},{matcher:"status",expected:400,state:"failure"}]},DeploymentSuccessful:{delay:15,operation:"DescribeDeployments",maxAttempts:40,description:"Wait until a deployment has completed successfully",acceptors:[{expected:"successful",matcher:"pathAll",state:"success",argument:"Deployments[].Status"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"Deployments[].Status"}]},InstanceOnline:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is online.",acceptors:[{expected:"online",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"shutting_down",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"start_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopped",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminating",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stop_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]},InstanceRegistered:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is registered.",acceptors:[{expected:"registered",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"shutting_down",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopped",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stopping",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminating",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"terminated",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stop_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]},InstanceStopped:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is stopped.",acceptors:[{expected:"stopped",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"booting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"online",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"requested",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"running_setup",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"start_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"stop_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]},InstanceTerminated:{delay:15,operation:"DescribeInstances",maxAttempts:40,description:"Wait until OpsWorks instance is terminated.",acceptors:[{expected:"terminated",matcher:"pathAll",state:"success",argument:"Instances[].Status"},{expected:"ResourceNotFoundException",matcher:"error",state:"success"},{expected:"booting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"online",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"pending",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"requested",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"running_setup",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"setup_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"},{expected:"start_failed",matcher:"pathAny",state:"failure",argument:"Instances[].Status"}]}}}},{}],94:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-01-10",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2013-01-10/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","AllocatedStorage","DBInstanceClass","Engine","MasterUsername","MasterUserPassword"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"S1c"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1i"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1o"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S25"},SupportedCharacterSets:{type:"list",member:{shape:"S25",locationName:"CharacterSet"}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"St",locationName:"DBInstance"}}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"S1c",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S2f"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sd",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"Sk",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S11",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2f"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{ -type:"integer"},EventCategories:{shape:"S6"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S1o",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S14",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S3m",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S3o"}},wrapper:!0}}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S2f"}}},output:{shape:"S3z",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1i"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sp"},VpcSecurityGroupMemberships:{shape:"Sq"}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1o"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S3m"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RemoveSourceIdentifierFromSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2f"}}},output:{shape:"S3z",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}}},shapes:{S4:{type:"structure",members:{Id:{},CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}}},wrapper:!0},Sk:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"}},wrapper:!0},Sp:{type:"list",member:{locationName:"DBSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"Sv"},VpcSecurityGroups:{shape:"Sx"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S11"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},Iops:{type:"integer"},DBInstanceIdentifier:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMembership:{type:"structure",members:{OptionGroupName:{},Status:{}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"}},wrapper:!0},Sv:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},Sx:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S11:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S14"},SubnetStatus:{}}}}},wrapper:!0},S14:{type:"structure",members:{Name:{},ProvisionedIopsCapable:{type:"boolean"}},wrapper:!0},S1c:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}},wrapper:!0},S1i:{type:"list",member:{locationName:"SubnetIdentifier"}},S1o:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sv"},VpcSecurityGroupMemberships:{shape:"Sx"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{}},wrapper:!0},S25:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S2f:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S3m:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S3o"}},wrapper:!0},S3o:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S3z:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],95:[function(e,t,r){t.exports={pagination:{DescribeDBEngineVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBEngineVersions"},DescribeDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBInstances"},DescribeDBParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBParameterGroups"},DescribeDBParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeDBSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSecurityGroups"},DescribeDBSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSnapshots"},DescribeDBSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSubnetGroups"},DescribeEngineDefaultParameters:{input_token:"Marker",output_token:"EngineDefaults.Marker",limit_key:"MaxRecords",result_key:"EngineDefaults.Parameters"},DescribeEventSubscriptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"EventSubscriptionsList"},DescribeEvents:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Events"},DescribeOptionGroupOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupOptions"},DescribeOptionGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupsList"},DescribeOrderableDBInstanceOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OrderableDBInstanceOptions"},DescribeReservedDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstances"},DescribeReservedDBInstancesOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstancesOfferings"},ListTagsForResource:{result_key:"TagList"}}}},{}],96:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-02-12",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2013-02-12/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","AllocatedStorage","DBInstanceClass","Engine","MasterUsername","MasterUserPassword"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"S1d"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1j"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1p"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S28"},SupportedCharacterSets:{type:"list",member:{shape:"S28",locationName:"CharacterSet"}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"St",locationName:"DBInstance"}}}}},DescribeDBLogFiles:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},FilenameContains:{},FileLastWritten:{type:"long"},FileSize:{type:"long"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBLogFilesResult",type:"structure",members:{DescribeDBLogFiles:{type:"list",member:{locationName:"DescribeDBLogFilesDetails",type:"structure",members:{LogFileName:{},LastWritten:{type:"long"},Size:{type:"long"}}}},Marker:{}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"S1d",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S2n"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sd",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"Sk",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S11",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2n"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},EventCategories:{shape:"S6"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}},Persistent:{type:"boolean"},OptionGroupOptionSettings:{type:"list",member:{locationName:"OptionGroupOptionSetting",type:"structure",members:{SettingName:{},SettingDescription:{},DefaultValue:{},ApplyType:{},AllowedValues:{},IsModifiable:{type:"boolean"}}}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S1p",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S14",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S3w",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S3y"}},wrapper:!0}}}}},DownloadDBLogFilePortion:{input:{type:"structure",required:["DBInstanceIdentifier","LogFileName"],members:{DBInstanceIdentifier:{},LogFileName:{},Marker:{},NumberOfLines:{type:"integer"}}},output:{resultWrapper:"DownloadDBLogFilePortionResult",type:"structure",members:{LogFileData:{},Marker:{},AdditionalDataPending:{type:"boolean"}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S2n"}}},output:{shape:"S4b",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1j"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sp"},VpcSecurityGroupMemberships:{shape:"Sq"},OptionSettings:{type:"list",member:{shape:"S1t",locationName:"OptionSetting"}}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1p"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S3w"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RemoveSourceIdentifierFromSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"], -members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2n"}}},output:{shape:"S4b",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}}},shapes:{S4:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}}},wrapper:!0},Sk:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"},OptionGroupName:{}},wrapper:!0},Sp:{type:"list",member:{locationName:"DBSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"Sv"},VpcSecurityGroups:{shape:"Sx"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S11"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},Iops:{type:"integer"},DBInstanceIdentifier:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMemberships:{type:"list",member:{locationName:"OptionGroupMembership",type:"structure",members:{OptionGroupName:{},Status:{}}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"}},wrapper:!0},Sv:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},Sx:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S11:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S14"},SubnetStatus:{}}}}},wrapper:!0},S14:{type:"structure",members:{Name:{},ProvisionedIopsCapable:{type:"boolean"}},wrapper:!0},S1d:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}},wrapper:!0},S1j:{type:"list",member:{locationName:"SubnetIdentifier"}},S1p:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Persistent:{type:"boolean"},Port:{type:"integer"},OptionSettings:{type:"list",member:{shape:"S1t",locationName:"OptionSetting"}},DBSecurityGroupMemberships:{shape:"Sv"},VpcSecurityGroupMemberships:{shape:"Sx"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{}},wrapper:!0},S1t:{type:"structure",members:{Name:{},Value:{},DefaultValue:{},Description:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},IsCollection:{type:"boolean"}}},S28:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S2n:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S3w:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S3y"}},wrapper:!0},S3y:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S4b:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],97:[function(e,t,r){t.exports={pagination:{DescribeDBEngineVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBEngineVersions"},DescribeDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBInstances"},DescribeDBLogFiles:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DescribeDBLogFiles"},DescribeDBParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBParameterGroups"},DescribeDBParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeDBSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSecurityGroups"},DescribeDBSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSnapshots"},DescribeDBSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"DBSubnetGroups"},DescribeEngineDefaultParameters:{input_token:"Marker",output_token:"EngineDefaults.Marker",limit_key:"MaxRecords",result_key:"EngineDefaults.Parameters"},DescribeEventSubscriptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"EventSubscriptionsList"},DescribeEvents:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Events"},DescribeOptionGroupOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupOptions"},DescribeOptionGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OptionGroupsList"},DescribeOrderableDBInstanceOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OrderableDBInstanceOptions"},DescribeReservedDBInstances:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstances"},DescribeReservedDBInstancesOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedDBInstancesOfferings"},DownloadDBLogFilePortion:{input_token:"Marker",output_token:"Marker",limit_key:"NumberOfLines",more_results:"AdditionalDataPending",result_key:"LogFileData"},ListTagsForResource:{result_key:"TagList"}}}},{}],98:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-09-09",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2013-09-09/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","AllocatedStorage","DBInstanceClass","Engine","MasterUsername","MasterUserPassword"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"},DBSubnetGroupName:{}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"S1f"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1l"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1r"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"Sk"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S2d"},SupportedCharacterSets:{type:"list",member:{shape:"S2d",locationName:"CharacterSet"}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"St",locationName:"DBInstance"}}}}},DescribeDBLogFiles:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},FilenameContains:{},FileLastWritten:{type:"long"},FileSize:{type:"long"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBLogFilesResult",type:"structure",members:{DescribeDBLogFiles:{type:"list",member:{locationName:"DescribeDBLogFilesDetails",type:"structure",members:{LogFileName:{},LastWritten:{type:"long"},Size:{type:"long"}}}},Marker:{}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"S1f",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S2s"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sd",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"Sk",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S11",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2s"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{},Filters:{shape:"S27"}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},EventCategories:{shape:"S6"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}},Persistent:{type:"boolean"},Permanent:{type:"boolean"},OptionGroupOptionSettings:{type:"list",member:{locationName:"OptionGroupOptionSetting",type:"structure",members:{SettingName:{},SettingDescription:{},DefaultValue:{},ApplyType:{},AllowedValues:{},IsModifiable:{type:"boolean"}}}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Filters:{shape:"S27"},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S1r",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S14",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S41",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S27"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S43"}},wrapper:!0}}}}},DownloadDBLogFilePortion:{input:{type:"structure",required:["DBInstanceIdentifier","LogFileName"],members:{DBInstanceIdentifier:{},LogFileName:{},Marker:{},NumberOfLines:{type:"integer"}}},output:{resultWrapper:"DownloadDBLogFilePortionResult",type:"structure",members:{LogFileData:{},Marker:{},AdditionalDataPending:{type:"boolean"}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{},Filters:{shape:"S27"}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S2s"}}},output:{shape:"S4g",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S1l"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S11"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},DBSecurityGroupMemberships:{shape:"Sp"},VpcSecurityGroupMemberships:{shape:"Sq"},OptionSettings:{type:"list",member:{shape:"S1v",locationName:"OptionSetting"}}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S1r"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"St"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"},Tags:{shape:"S9"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S41"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RemoveSourceIdentifierFromSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2s"}}},output:{shape:"S4g",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},Tags:{shape:"S9"}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},Tags:{shape:"S9"}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"St"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sd"}}}}},shapes:{S4:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}}},wrapper:!0},Sk:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"},OptionGroupName:{},PercentProgress:{type:"integer"},SourceRegion:{}},wrapper:!0},Sp:{type:"list",member:{locationName:"DBSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"Sv"},VpcSecurityGroups:{shape:"Sx"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S11"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},Iops:{type:"integer"},DBInstanceIdentifier:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMemberships:{type:"list",member:{locationName:"OptionGroupMembership",type:"structure",members:{OptionGroupName:{},Status:{}}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"},StatusInfos:{type:"list",member:{locationName:"DBInstanceStatusInfo",type:"structure",members:{StatusType:{},Normal:{type:"boolean"},Status:{},Message:{}}}}},wrapper:!0},Sv:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},Sx:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S11:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure", -members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S14"},SubnetStatus:{}}}}},wrapper:!0},S14:{type:"structure",members:{Name:{},ProvisionedIopsCapable:{type:"boolean"}},wrapper:!0},S1f:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{}},wrapper:!0},S1l:{type:"list",member:{locationName:"SubnetIdentifier"}},S1r:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Persistent:{type:"boolean"},Permanent:{type:"boolean"},Port:{type:"integer"},OptionSettings:{type:"list",member:{shape:"S1v",locationName:"OptionSetting"}},DBSecurityGroupMemberships:{shape:"Sv"},VpcSecurityGroupMemberships:{shape:"Sx"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{}},wrapper:!0},S1v:{type:"structure",members:{Name:{},Value:{},DefaultValue:{},Description:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},IsCollection:{type:"boolean"}}},S27:{type:"list",member:{locationName:"Filter",type:"structure",required:["Name","Values"],members:{Name:{},Values:{type:"list",member:{locationName:"Value"}}}}},S2d:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S2s:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S41:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S43"}},wrapper:!0},S43:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S4g:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],99:[function(e,t,r){arguments[4][97][0].apply(r,arguments)},{dup:97}],100:[function(e,t,r){t.exports={version:2,waiters:{DBInstanceAvailable:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-restore",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-parameters",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-parameters",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-restore",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]},DBInstanceDeleted:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"creating",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"modifying",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"resetting-master-credentials",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]}}}},{}],101:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-10-31",endpointPrefix:"rds",protocol:"query",serviceAbbreviation:"Amazon RDS",serviceFullName:"Amazon Relational Database Service",signatureVersion:"v4",xmlNamespace:"http://rds.amazonaws.com/doc/2014-10-31/"},operations:{AddSourceIdentifierToSubscription:{input:{type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"AddSourceIdentifierToSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S9"}}}},ApplyPendingMaintenanceAction:{input:{type:"structure",required:["ResourceIdentifier","ApplyAction","OptInType"],members:{ResourceIdentifier:{},ApplyAction:{},OptInType:{}}},output:{resultWrapper:"ApplyPendingMaintenanceActionResult",type:"structure",members:{ResourcePendingMaintenanceActions:{shape:"Sd"}}}},AuthorizeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sj"}}}},CopyDBClusterParameterGroup:{input:{type:"structure",required:["SourceDBClusterParameterGroupIdentifier","TargetDBClusterParameterGroupIdentifier","TargetDBClusterParameterGroupDescription"],members:{SourceDBClusterParameterGroupIdentifier:{},TargetDBClusterParameterGroupIdentifier:{},TargetDBClusterParameterGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBClusterParameterGroupResult",type:"structure",members:{DBClusterParameterGroup:{shape:"Sq"}}}},CopyDBClusterSnapshot:{input:{type:"structure",required:["SourceDBClusterSnapshotIdentifier","TargetDBClusterSnapshotIdentifier"],members:{SourceDBClusterSnapshotIdentifier:{},TargetDBClusterSnapshotIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBClusterSnapshotResult",type:"structure",members:{DBClusterSnapshot:{shape:"St"}}}},CopyDBParameterGroup:{input:{type:"structure",required:["SourceDBParameterGroupIdentifier","TargetDBParameterGroupIdentifier","TargetDBParameterGroupDescription"],members:{SourceDBParameterGroupIdentifier:{},TargetDBParameterGroupIdentifier:{},TargetDBParameterGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"Sy"}}}},CopyDBSnapshot:{input:{type:"structure",required:["SourceDBSnapshotIdentifier","TargetDBSnapshotIdentifier"],members:{SourceDBSnapshotIdentifier:{},TargetDBSnapshotIdentifier:{},KmsKeyId:{},Tags:{shape:"S9"},CopyTags:{type:"boolean"}}},output:{resultWrapper:"CopyDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"S12"}}}},CopyOptionGroup:{input:{type:"structure",required:["SourceOptionGroupIdentifier","TargetOptionGroupIdentifier","TargetOptionGroupDescription"],members:{SourceOptionGroupIdentifier:{},TargetOptionGroupIdentifier:{},TargetOptionGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CopyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S16"}}}},CreateDBCluster:{input:{type:"structure",required:["DBClusterIdentifier","Engine"],members:{AvailabilityZones:{shape:"Su"},BackupRetentionPeriod:{type:"integer"},CharacterSetName:{},DatabaseName:{},DBClusterIdentifier:{},DBClusterParameterGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},DBSubnetGroupName:{},Engine:{},EngineVersion:{},Port:{type:"integer"},MasterUsername:{},MasterUserPassword:{},OptionGroupName:{},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},ReplicationSourceIdentifier:{},Tags:{shape:"S9"},StorageEncrypted:{type:"boolean"},KmsKeyId:{}}},output:{resultWrapper:"CreateDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},CreateDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName","DBParameterGroupFamily","Description"],members:{DBClusterParameterGroupName:{},DBParameterGroupFamily:{},Description:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBClusterParameterGroupResult",type:"structure",members:{DBClusterParameterGroup:{shape:"Sq"}}}},CreateDBClusterSnapshot:{input:{type:"structure",required:["DBClusterSnapshotIdentifier","DBClusterIdentifier"],members:{DBClusterSnapshotIdentifier:{},DBClusterIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBClusterSnapshotResult",type:"structure",members:{DBClusterSnapshot:{shape:"St"}}}},CreateDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier","DBInstanceClass","Engine"],members:{DBName:{},DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},Engine:{},MasterUsername:{},MasterUserPassword:{},DBSecurityGroups:{shape:"S1t"},VpcSecurityGroupIds:{shape:"S1g"},AvailabilityZone:{},DBSubnetGroupName:{},PreferredMaintenanceWindow:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},Port:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},CharacterSetName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"},DBClusterIdentifier:{},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},StorageEncrypted:{type:"boolean"},KmsKeyId:{},Domain:{},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},MonitoringRoleArn:{},DomainIAMRoleName:{},PromotionTier:{type:"integer"},Timezone:{}}},output:{resultWrapper:"CreateDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},CreateDBInstanceReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier","SourceDBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SourceDBInstanceIdentifier:{},DBInstanceClass:{},AvailabilityZone:{},Port:{type:"integer"},AutoMinorVersionUpgrade:{type:"boolean"},Iops:{type:"integer"},OptionGroupName:{},PubliclyAccessible:{type:"boolean"},Tags:{shape:"S9"},DBSubnetGroupName:{},StorageType:{},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},MonitoringRoleArn:{}}},output:{resultWrapper:"CreateDBInstanceReadReplicaResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},CreateDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","DBParameterGroupFamily","Description"],members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBParameterGroupResult",type:"structure",members:{DBParameterGroup:{shape:"Sy"}}}},CreateDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName","DBSecurityGroupDescription"],members:{DBSecurityGroupName:{},DBSecurityGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSecurityGroupResult",type:"structure",members:{DBSecurityGroup:{shape:"Sj"}}}},CreateDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier","DBInstanceIdentifier"],members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"S12"}}}},CreateDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","DBSubnetGroupDescription","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S2k"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S1z"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},SourceIds:{shape:"S5"},Enabled:{type:"boolean"},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},CreateOptionGroup:{input:{type:"structure",required:["OptionGroupName","EngineName","MajorEngineVersion","OptionGroupDescription"],members:{OptionGroupName:{},EngineName:{},MajorEngineVersion:{},OptionGroupDescription:{},Tags:{shape:"S9"}}},output:{resultWrapper:"CreateOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S16"}}}},DeleteDBCluster:{input:{type:"structure",required:["DBClusterIdentifier"],members:{DBClusterIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},DeleteDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName"],members:{DBClusterParameterGroupName:{}}}},DeleteDBClusterSnapshot:{input:{type:"structure",required:["DBClusterSnapshotIdentifier"],members:{DBClusterSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBClusterSnapshotResult",type:"structure",members:{DBClusterSnapshot:{shape:"St"}}}},DeleteDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},SkipFinalSnapshot:{type:"boolean"},FinalDBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},DeleteDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{}}}},DeleteDBSecurityGroup:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{}}}},DeleteDBSnapshot:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteDBSnapshotResult",type:"structure",members:{DBSnapshot:{shape:"S12"}}}},DeleteDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName"],members:{DBSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}},output:{resultWrapper:"DeleteEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},DeleteOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{}}}},DescribeAccountAttributes:{input:{type:"structure",members:{}},output:{resultWrapper:"DescribeAccountAttributesResult",type:"structure",members:{AccountQuotas:{type:"list",member:{locationName:"AccountQuota",type:"structure",members:{AccountQuotaName:{},Used:{type:"long"},Max:{type:"long"}},wrapper:!0}}}}},DescribeCertificates:{input:{type:"structure",members:{CertificateIdentifier:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeCertificatesResult",type:"structure",members:{Certificates:{type:"list",member:{locationName:"Certificate",type:"structure",members:{CertificateIdentifier:{},CertificateType:{},Thumbprint:{},ValidFrom:{type:"timestamp"},ValidTill:{type:"timestamp"},CertificateArn:{}},wrapper:!0}},Marker:{}}}},DescribeDBClusterParameterGroups:{input:{type:"structure",members:{DBClusterParameterGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBClusterParameterGroupsResult",type:"structure",members:{Marker:{},DBClusterParameterGroups:{type:"list",member:{shape:"Sq",locationName:"DBClusterParameterGroup"}}}}},DescribeDBClusterParameters:{input:{type:"structure",required:["DBClusterParameterGroupName"],members:{DBClusterParameterGroupName:{},Source:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBClusterParametersResult",type:"structure",members:{Parameters:{shape:"S3m"},Marker:{}}}},DescribeDBClusterSnapshotAttributes:{input:{type:"structure",required:["DBClusterSnapshotIdentifier"],members:{DBClusterSnapshotIdentifier:{}}},output:{resultWrapper:"DescribeDBClusterSnapshotAttributesResult",type:"structure",members:{DBClusterSnapshotAttributesResult:{shape:"S3r"}}}},DescribeDBClusterSnapshots:{input:{type:"structure",members:{DBClusterIdentifier:{},DBClusterSnapshotIdentifier:{},SnapshotType:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{},IncludeShared:{type:"boolean"},IncludePublic:{type:"boolean"}}},output:{resultWrapper:"DescribeDBClusterSnapshotsResult",type:"structure",members:{Marker:{},DBClusterSnapshots:{type:"list",member:{shape:"St",locationName:"DBClusterSnapshot"}}}}},DescribeDBClusters:{input:{type:"structure",members:{DBClusterIdentifier:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBClustersResult",type:"structure",members:{Marker:{},DBClusters:{type:"list",member:{shape:"S1i",locationName:"DBCluster"}}}}},DescribeDBEngineVersions:{input:{type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{},DefaultOnly:{type:"boolean"},ListSupportedCharacterSets:{type:"boolean"},ListSupportedTimezones:{type:"boolean"}}},output:{resultWrapper:"DescribeDBEngineVersionsResult",type:"structure",members:{Marker:{},DBEngineVersions:{type:"list",member:{locationName:"DBEngineVersion",type:"structure",members:{Engine:{},EngineVersion:{},DBParameterGroupFamily:{},DBEngineDescription:{},DBEngineVersionDescription:{},DefaultCharacterSet:{shape:"S45"},SupportedCharacterSets:{type:"list",member:{shape:"S45",locationName:"CharacterSet"}},ValidUpgradeTarget:{type:"list",member:{locationName:"UpgradeTarget",type:"structure",members:{Engine:{},EngineVersion:{},Description:{},AutoUpgrade:{type:"boolean"},IsMajorVersionUpgrade:{type:"boolean"}}}},SupportedTimezones:{type:"list",member:{locationName:"Timezone",type:"structure",members:{TimezoneName:{}}}}}}}}}},DescribeDBInstances:{input:{type:"structure",members:{DBInstanceIdentifier:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBInstancesResult",type:"structure",members:{Marker:{},DBInstances:{type:"list",member:{shape:"S1v",locationName:"DBInstance"}}}}},DescribeDBLogFiles:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},FilenameContains:{},FileLastWritten:{type:"long"},FileSize:{type:"long"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBLogFilesResult",type:"structure",members:{DescribeDBLogFiles:{type:"list",member:{locationName:"DescribeDBLogFilesDetails",type:"structure",members:{LogFileName:{},LastWritten:{type:"long"},Size:{type:"long"}}}},Marker:{}}}},DescribeDBParameterGroups:{input:{type:"structure",members:{DBParameterGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParameterGroupsResult",type:"structure",members:{Marker:{},DBParameterGroups:{type:"list",member:{shape:"Sy",locationName:"DBParameterGroup"}}}}},DescribeDBParameters:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},Source:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBParametersResult",type:"structure",members:{Parameters:{shape:"S3m"},Marker:{}}}},DescribeDBSecurityGroups:{input:{type:"structure",members:{DBSecurityGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSecurityGroupsResult",type:"structure",members:{Marker:{},DBSecurityGroups:{type:"list",member:{shape:"Sj",locationName:"DBSecurityGroup"}}}}},DescribeDBSnapshotAttributes:{input:{type:"structure",required:["DBSnapshotIdentifier"],members:{DBSnapshotIdentifier:{}}},output:{resultWrapper:"DescribeDBSnapshotAttributesResult",type:"structure",members:{DBSnapshotAttributesResult:{shape:"S4s"}}}},DescribeDBSnapshots:{input:{type:"structure",members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},SnapshotType:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{},IncludeShared:{type:"boolean"},IncludePublic:{type:"boolean"}}},output:{resultWrapper:"DescribeDBSnapshotsResult",type:"structure",members:{Marker:{},DBSnapshots:{type:"list",member:{shape:"S12",locationName:"DBSnapshot"}}}}},DescribeDBSubnetGroups:{input:{type:"structure",members:{DBSubnetGroupName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDBSubnetGroupsResult",type:"structure",members:{Marker:{},DBSubnetGroups:{type:"list",member:{shape:"S1z",locationName:"DBSubnetGroup"}}}}},DescribeEngineDefaultClusterParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultClusterParametersResult",type:"structure",members:{EngineDefaults:{shape:"S53"}}}},DescribeEngineDefaultParameters:{input:{type:"structure",required:["DBParameterGroupFamily"],members:{DBParameterGroupFamily:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEngineDefaultParametersResult",type:"structure",members:{EngineDefaults:{shape:"S53"}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{},Filters:{shape:"S3b"}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},EventCategories:{shape:"S6"}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S4",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},EventCategories:{shape:"S6"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S6"},Date:{type:"timestamp"},SourceArn:{}}}}}}},DescribeOptionGroupOptions:{input:{type:"structure",required:["EngineName"],members:{EngineName:{},MajorEngineVersion:{},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOptionGroupOptionsResult",type:"structure",members:{OptionGroupOptions:{type:"list",member:{locationName:"OptionGroupOption",type:"structure",members:{Name:{},Description:{},EngineName:{},MajorEngineVersion:{},MinimumRequiredMinorEngineVersion:{},PortRequired:{type:"boolean"},DefaultPort:{type:"integer"},OptionsDependedOn:{type:"list",member:{locationName:"OptionName"}},OptionsConflictsWith:{type:"list",member:{locationName:"OptionConflictName"}},Persistent:{type:"boolean"},Permanent:{type:"boolean"},OptionGroupOptionSettings:{type:"list",member:{locationName:"OptionGroupOptionSetting",type:"structure",members:{SettingName:{},SettingDescription:{},DefaultValue:{},ApplyType:{},AllowedValues:{},IsModifiable:{type:"boolean"}}}},OptionGroupOptionVersions:{type:"list",member:{locationName:"OptionVersion",type:"structure",members:{Version:{},IsDefault:{type:"boolean"}}}}}}},Marker:{}}}},DescribeOptionGroups:{input:{type:"structure",members:{OptionGroupName:{},Filters:{shape:"S3b"},Marker:{},MaxRecords:{type:"integer"},EngineName:{},MajorEngineVersion:{}}},output:{resultWrapper:"DescribeOptionGroupsResult",type:"structure",members:{OptionGroupsList:{type:"list",member:{shape:"S16",locationName:"OptionGroup"}},Marker:{}}}},DescribeOrderableDBInstanceOptions:{input:{type:"structure",required:["Engine"],members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},Vpc:{type:"boolean"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableDBInstanceOptionsResult",type:"structure",members:{OrderableDBInstanceOptions:{type:"list",member:{locationName:"OrderableDBInstanceOption",type:"structure",members:{Engine:{},EngineVersion:{},DBInstanceClass:{},LicenseModel:{},AvailabilityZones:{type:"list",member:{shape:"S22",locationName:"AvailabilityZone"}},MultiAZCapable:{type:"boolean"},ReadReplicaCapable:{type:"boolean"},Vpc:{type:"boolean"},SupportsStorageEncryption:{type:"boolean"},StorageType:{},SupportsIops:{type:"boolean"},SupportsEnhancedMonitoring:{type:"boolean"}},wrapper:!0}},Marker:{}}}},DescribePendingMaintenanceActions:{input:{type:"structure",members:{ResourceIdentifier:{},Filters:{shape:"S3b"},Marker:{},MaxRecords:{type:"integer"}}},output:{resultWrapper:"DescribePendingMaintenanceActionsResult",type:"structure",members:{PendingMaintenanceActions:{type:"list",member:{shape:"Sd",locationName:"ResourcePendingMaintenanceActions"}},Marker:{}}}},DescribeReservedDBInstances:{input:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesResult",type:"structure",members:{Marker:{},ReservedDBInstances:{type:"list",member:{shape:"S66",locationName:"ReservedDBInstance"}}}}},DescribeReservedDBInstancesOfferings:{input:{type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},Filters:{shape:"S3b"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedDBInstancesOfferingsResult",type:"structure",members:{Marker:{},ReservedDBInstancesOfferings:{type:"list",member:{locationName:"ReservedDBInstancesOffering",type:"structure",members:{ReservedDBInstancesOfferingId:{},DBInstanceClass:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},RecurringCharges:{shape:"S68"}},wrapper:!0}}}}},DescribeSourceRegions:{input:{type:"structure",members:{RegionName:{},MaxRecords:{type:"integer"},Marker:{},Filters:{shape:"S3b"}}},output:{resultWrapper:"DescribeSourceRegionsResult",type:"structure",members:{Marker:{},SourceRegions:{type:"list",member:{locationName:"SourceRegion",type:"structure",members:{RegionName:{},Endpoint:{},Status:{}}}}}}},DownloadDBLogFilePortion:{input:{type:"structure",required:["DBInstanceIdentifier","LogFileName"],members:{DBInstanceIdentifier:{},LogFileName:{},Marker:{},NumberOfLines:{type:"integer"}}},output:{resultWrapper:"DownloadDBLogFilePortionResult",type:"structure",members:{LogFileData:{},Marker:{},AdditionalDataPending:{type:"boolean"}}}},FailoverDBCluster:{input:{type:"structure",members:{DBClusterIdentifier:{},TargetDBInstanceIdentifier:{}}},output:{resultWrapper:"FailoverDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceName"],members:{ResourceName:{},Filters:{shape:"S3b"}}},output:{resultWrapper:"ListTagsForResourceResult",type:"structure",members:{TagList:{shape:"S9"}}}},ModifyDBCluster:{input:{type:"structure",required:["DBClusterIdentifier"],members:{DBClusterIdentifier:{},NewDBClusterIdentifier:{},ApplyImmediately:{type:"boolean"},BackupRetentionPeriod:{type:"integer"},DBClusterParameterGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},Port:{type:"integer"},MasterUserPassword:{},OptionGroupName:{},PreferredBackupWindow:{},PreferredMaintenanceWindow:{}}},output:{resultWrapper:"ModifyDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},ModifyDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName","Parameters"],members:{DBClusterParameterGroupName:{},Parameters:{shape:"S3m"}}},output:{shape:"S6r",resultWrapper:"ModifyDBClusterParameterGroupResult"}},ModifyDBClusterSnapshotAttribute:{input:{type:"structure",required:["DBClusterSnapshotIdentifier","AttributeName"],members:{DBClusterSnapshotIdentifier:{},AttributeName:{},ValuesToAdd:{shape:"S3u"},ValuesToRemove:{shape:"S3u"}}},output:{resultWrapper:"ModifyDBClusterSnapshotAttributeResult",type:"structure",members:{DBClusterSnapshotAttributesResult:{shape:"S3r"}}}},ModifyDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},AllocatedStorage:{type:"integer"},DBInstanceClass:{},DBSubnetGroupName:{},DBSecurityGroups:{shape:"S1t"},VpcSecurityGroupIds:{shape:"S1g"},ApplyImmediately:{type:"boolean"},MasterUserPassword:{},DBParameterGroupName:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},MultiAZ:{type:"boolean"},EngineVersion:{},AllowMajorVersionUpgrade:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},Iops:{type:"integer"},OptionGroupName:{},NewDBInstanceIdentifier:{},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},CACertificateIdentifier:{},Domain:{},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},DBPortNumber:{type:"integer"},PubliclyAccessible:{type:"boolean"},MonitoringRoleArn:{},DomainIAMRoleName:{},PromotionTier:{type:"integer"}}},output:{resultWrapper:"ModifyDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},ModifyDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName","Parameters"],members:{DBParameterGroupName:{},Parameters:{shape:"S3m"}}},output:{shape:"S6x",resultWrapper:"ModifyDBParameterGroupResult"}},ModifyDBSnapshotAttribute:{input:{type:"structure",required:["DBSnapshotIdentifier","AttributeName"],members:{DBSnapshotIdentifier:{},AttributeName:{},ValuesToAdd:{shape:"S3u"},ValuesToRemove:{shape:"S3u"}}},output:{resultWrapper:"ModifyDBSnapshotAttributeResult",type:"structure",members:{DBSnapshotAttributesResult:{shape:"S4s"}}}},ModifyDBSubnetGroup:{input:{type:"structure",required:["DBSubnetGroupName","SubnetIds"],members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},SubnetIds:{shape:"S2k"}}},output:{resultWrapper:"ModifyDBSubnetGroupResult",type:"structure",members:{DBSubnetGroup:{shape:"S1z"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},EventCategories:{shape:"S6"},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},ModifyOptionGroup:{input:{type:"structure",required:["OptionGroupName"],members:{OptionGroupName:{},OptionsToInclude:{type:"list",member:{locationName:"OptionConfiguration",type:"structure",required:["OptionName"],members:{OptionName:{},Port:{type:"integer"},OptionVersion:{},DBSecurityGroupMemberships:{shape:"S1t"},VpcSecurityGroupMemberships:{shape:"S1g"},OptionSettings:{type:"list",member:{shape:"S1a",locationName:"OptionSetting"}}}}},OptionsToRemove:{type:"list",member:{}},ApplyImmediately:{type:"boolean"}}},output:{resultWrapper:"ModifyOptionGroupResult",type:"structure",members:{OptionGroup:{shape:"S16"}}}},PromoteReadReplica:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},BackupRetentionPeriod:{type:"integer"},PreferredBackupWindow:{}}},output:{resultWrapper:"PromoteReadReplicaResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},PromoteReadReplicaDBCluster:{input:{type:"structure",required:["DBClusterIdentifier"],members:{DBClusterIdentifier:{}}},output:{resultWrapper:"PromoteReadReplicaDBClusterResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},PurchaseReservedDBInstancesOffering:{input:{type:"structure",required:["ReservedDBInstancesOfferingId"],members:{ReservedDBInstancesOfferingId:{},ReservedDBInstanceId:{},DBInstanceCount:{type:"integer"},Tags:{shape:"S9"}}},output:{resultWrapper:"PurchaseReservedDBInstancesOfferingResult",type:"structure",members:{ReservedDBInstance:{shape:"S66"}}}},RebootDBInstance:{input:{type:"structure",required:["DBInstanceIdentifier"],members:{DBInstanceIdentifier:{},ForceFailover:{type:"boolean"}}},output:{resultWrapper:"RebootDBInstanceResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},RemoveSourceIdentifierFromSubscription:{input:{ -type:"structure",required:["SubscriptionName","SourceIdentifier"],members:{SubscriptionName:{},SourceIdentifier:{}}},output:{resultWrapper:"RemoveSourceIdentifierFromSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S4"}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{type:"list",member:{}}}}},ResetDBClusterParameterGroup:{input:{type:"structure",required:["DBClusterParameterGroupName"],members:{DBClusterParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S3m"}}},output:{shape:"S6r",resultWrapper:"ResetDBClusterParameterGroupResult"}},ResetDBParameterGroup:{input:{type:"structure",required:["DBParameterGroupName"],members:{DBParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S3m"}}},output:{shape:"S6x",resultWrapper:"ResetDBParameterGroupResult"}},RestoreDBClusterFromS3:{input:{type:"structure",required:["DBClusterIdentifier","Engine","MasterUsername","MasterUserPassword","SourceEngine","SourceEngineVersion","S3BucketName","S3IngestionRoleArn"],members:{AvailabilityZones:{shape:"Su"},BackupRetentionPeriod:{type:"integer"},CharacterSetName:{},DatabaseName:{},DBClusterIdentifier:{},DBClusterParameterGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},DBSubnetGroupName:{},Engine:{},EngineVersion:{},Port:{type:"integer"},MasterUsername:{},MasterUserPassword:{},OptionGroupName:{},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},Tags:{shape:"S9"},StorageEncrypted:{type:"boolean"},KmsKeyId:{},SourceEngine:{},SourceEngineVersion:{},S3BucketName:{},S3Prefix:{},S3IngestionRoleArn:{}}},output:{resultWrapper:"RestoreDBClusterFromS3Result",type:"structure",members:{DBCluster:{shape:"S1i"}}}},RestoreDBClusterFromSnapshot:{input:{type:"structure",required:["DBClusterIdentifier","SnapshotIdentifier","Engine"],members:{AvailabilityZones:{shape:"Su"},DBClusterIdentifier:{},SnapshotIdentifier:{},Engine:{},EngineVersion:{},Port:{type:"integer"},DBSubnetGroupName:{},DatabaseName:{},OptionGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},Tags:{shape:"S9"},KmsKeyId:{}}},output:{resultWrapper:"RestoreDBClusterFromSnapshotResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},RestoreDBClusterToPointInTime:{input:{type:"structure",required:["DBClusterIdentifier","SourceDBClusterIdentifier"],members:{DBClusterIdentifier:{},SourceDBClusterIdentifier:{},RestoreToTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},Port:{type:"integer"},DBSubnetGroupName:{},OptionGroupName:{},VpcSecurityGroupIds:{shape:"S1g"},Tags:{shape:"S9"},KmsKeyId:{}}},output:{resultWrapper:"RestoreDBClusterToPointInTimeResult",type:"structure",members:{DBCluster:{shape:"S1i"}}}},RestoreDBInstanceFromDBSnapshot:{input:{type:"structure",required:["DBInstanceIdentifier","DBSnapshotIdentifier"],members:{DBInstanceIdentifier:{},DBSnapshotIdentifier:{},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},Tags:{shape:"S9"},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},Domain:{},CopyTagsToSnapshot:{type:"boolean"},DomainIAMRoleName:{}}},output:{resultWrapper:"RestoreDBInstanceFromDBSnapshotResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},RestoreDBInstanceToPointInTime:{input:{type:"structure",required:["SourceDBInstanceIdentifier","TargetDBInstanceIdentifier"],members:{SourceDBInstanceIdentifier:{},TargetDBInstanceIdentifier:{},RestoreTime:{type:"timestamp"},UseLatestRestorableTime:{type:"boolean"},DBInstanceClass:{},Port:{type:"integer"},AvailabilityZone:{},DBSubnetGroupName:{},MultiAZ:{type:"boolean"},PubliclyAccessible:{type:"boolean"},AutoMinorVersionUpgrade:{type:"boolean"},LicenseModel:{},DBName:{},Engine:{},Iops:{type:"integer"},OptionGroupName:{},CopyTagsToSnapshot:{type:"boolean"},Tags:{shape:"S9"},StorageType:{},TdeCredentialArn:{},TdeCredentialPassword:{},Domain:{},DomainIAMRoleName:{}}},output:{resultWrapper:"RestoreDBInstanceToPointInTimeResult",type:"structure",members:{DBInstance:{shape:"S1v"}}}},RevokeDBSecurityGroupIngress:{input:{type:"structure",required:["DBSecurityGroupName"],members:{DBSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeDBSecurityGroupIngressResult",type:"structure",members:{DBSecurityGroup:{shape:"Sj"}}}}},shapes:{S4:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{},SourceType:{},SourceIdsList:{shape:"S5"},EventCategoriesList:{shape:"S6"},Enabled:{type:"boolean"},EventSubscriptionArn:{}},wrapper:!0},S5:{type:"list",member:{locationName:"SourceId"}},S6:{type:"list",member:{locationName:"EventCategory"}},S9:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},Sd:{type:"structure",members:{ResourceIdentifier:{},PendingMaintenanceActionDetails:{type:"list",member:{locationName:"PendingMaintenanceAction",type:"structure",members:{Action:{},AutoAppliedAfterDate:{type:"timestamp"},ForcedApplyDate:{type:"timestamp"},OptInStatus:{},CurrentApplyDate:{type:"timestamp"},Description:{}}}}},wrapper:!0},Sj:{type:"structure",members:{OwnerId:{},DBSecurityGroupName:{},DBSecurityGroupDescription:{},VpcId:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupId:{},EC2SecurityGroupOwnerId:{}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{}}}},DBSecurityGroupArn:{}},wrapper:!0},Sq:{type:"structure",members:{DBClusterParameterGroupName:{},DBParameterGroupFamily:{},Description:{},DBClusterParameterGroupArn:{}},wrapper:!0},St:{type:"structure",members:{AvailabilityZones:{shape:"Su"},DBClusterSnapshotIdentifier:{},DBClusterIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},VpcId:{},ClusterCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},PercentProgress:{type:"integer"},StorageEncrypted:{type:"boolean"},KmsKeyId:{},DBClusterSnapshotArn:{}},wrapper:!0},Su:{type:"list",member:{locationName:"AvailabilityZone"}},Sy:{type:"structure",members:{DBParameterGroupName:{},DBParameterGroupFamily:{},Description:{},DBParameterGroupArn:{}},wrapper:!0},S12:{type:"structure",members:{DBSnapshotIdentifier:{},DBInstanceIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Engine:{},AllocatedStorage:{type:"integer"},Status:{},Port:{type:"integer"},AvailabilityZone:{},VpcId:{},InstanceCreateTime:{type:"timestamp"},MasterUsername:{},EngineVersion:{},LicenseModel:{},SnapshotType:{},Iops:{type:"integer"},OptionGroupName:{},PercentProgress:{type:"integer"},SourceRegion:{},SourceDBSnapshotIdentifier:{},StorageType:{},TdeCredentialArn:{},Encrypted:{type:"boolean"},KmsKeyId:{},DBSnapshotArn:{},Timezone:{}},wrapper:!0},S16:{type:"structure",members:{OptionGroupName:{},OptionGroupDescription:{},EngineName:{},MajorEngineVersion:{},Options:{type:"list",member:{locationName:"Option",type:"structure",members:{OptionName:{},OptionDescription:{},Persistent:{type:"boolean"},Permanent:{type:"boolean"},Port:{type:"integer"},OptionVersion:{},OptionSettings:{type:"list",member:{shape:"S1a",locationName:"OptionSetting"}},DBSecurityGroupMemberships:{shape:"S1b"},VpcSecurityGroupMemberships:{shape:"S1d"}}}},AllowsVpcAndNonVpcInstanceMemberships:{type:"boolean"},VpcId:{},OptionGroupArn:{}},wrapper:!0},S1a:{type:"structure",members:{Name:{},Value:{},DefaultValue:{},Description:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},IsCollection:{type:"boolean"}}},S1b:{type:"list",member:{locationName:"DBSecurityGroup",type:"structure",members:{DBSecurityGroupName:{},Status:{}}}},S1d:{type:"list",member:{locationName:"VpcSecurityGroupMembership",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},S1g:{type:"list",member:{locationName:"VpcSecurityGroupId"}},S1i:{type:"structure",members:{AllocatedStorage:{type:"integer"},AvailabilityZones:{shape:"Su"},BackupRetentionPeriod:{type:"integer"},CharacterSetName:{},DatabaseName:{},DBClusterIdentifier:{},DBClusterParameterGroup:{},DBSubnetGroup:{},Status:{},PercentProgress:{},EarliestRestorableTime:{type:"timestamp"},Endpoint:{},ReaderEndpoint:{},Engine:{},EngineVersion:{},LatestRestorableTime:{type:"timestamp"},Port:{type:"integer"},MasterUsername:{},DBClusterOptionGroupMemberships:{type:"list",member:{locationName:"DBClusterOptionGroup",type:"structure",members:{DBClusterOptionGroupName:{},Status:{}}}},PreferredBackupWindow:{},PreferredMaintenanceWindow:{},ReplicationSourceIdentifier:{},ReadReplicaIdentifiers:{type:"list",member:{locationName:"ReadReplicaIdentifier"}},DBClusterMembers:{type:"list",member:{locationName:"DBClusterMember",type:"structure",members:{DBInstanceIdentifier:{},IsClusterWriter:{type:"boolean"},DBClusterParameterGroupStatus:{},PromotionTier:{type:"integer"}},wrapper:!0}},VpcSecurityGroups:{shape:"S1d"},HostedZoneId:{},StorageEncrypted:{type:"boolean"},KmsKeyId:{},DbClusterResourceId:{},DBClusterArn:{}},wrapper:!0},S1t:{type:"list",member:{locationName:"DBSecurityGroupName"}},S1v:{type:"structure",members:{DBInstanceIdentifier:{},DBInstanceClass:{},Engine:{},DBInstanceStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"},HostedZoneId:{}}},AllocatedStorage:{type:"integer"},InstanceCreateTime:{type:"timestamp"},PreferredBackupWindow:{},BackupRetentionPeriod:{type:"integer"},DBSecurityGroups:{shape:"S1b"},VpcSecurityGroups:{shape:"S1d"},DBParameterGroups:{type:"list",member:{locationName:"DBParameterGroup",type:"structure",members:{DBParameterGroupName:{},ParameterApplyStatus:{}}}},AvailabilityZone:{},DBSubnetGroup:{shape:"S1z"},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{DBInstanceClass:{},AllocatedStorage:{type:"integer"},MasterUserPassword:{},Port:{type:"integer"},BackupRetentionPeriod:{type:"integer"},MultiAZ:{type:"boolean"},EngineVersion:{},LicenseModel:{},Iops:{type:"integer"},DBInstanceIdentifier:{},StorageType:{},CACertificateIdentifier:{},DBSubnetGroupName:{}}},LatestRestorableTime:{type:"timestamp"},MultiAZ:{type:"boolean"},EngineVersion:{},AutoMinorVersionUpgrade:{type:"boolean"},ReadReplicaSourceDBInstanceIdentifier:{},ReadReplicaDBInstanceIdentifiers:{type:"list",member:{locationName:"ReadReplicaDBInstanceIdentifier"}},LicenseModel:{},Iops:{type:"integer"},OptionGroupMemberships:{type:"list",member:{locationName:"OptionGroupMembership",type:"structure",members:{OptionGroupName:{},Status:{}}}},CharacterSetName:{},SecondaryAvailabilityZone:{},PubliclyAccessible:{type:"boolean"},StatusInfos:{type:"list",member:{locationName:"DBInstanceStatusInfo",type:"structure",members:{StatusType:{},Normal:{type:"boolean"},Status:{},Message:{}}}},StorageType:{},TdeCredentialArn:{},DbInstancePort:{type:"integer"},DBClusterIdentifier:{},StorageEncrypted:{type:"boolean"},KmsKeyId:{},DbiResourceId:{},CACertificateIdentifier:{},DomainMemberships:{type:"list",member:{locationName:"DomainMembership",type:"structure",members:{Domain:{},Status:{},FQDN:{},IAMRoleName:{}}}},CopyTagsToSnapshot:{type:"boolean"},MonitoringInterval:{type:"integer"},EnhancedMonitoringResourceArn:{},MonitoringRoleArn:{},PromotionTier:{type:"integer"},DBInstanceArn:{},Timezone:{}},wrapper:!0},S1z:{type:"structure",members:{DBSubnetGroupName:{},DBSubnetGroupDescription:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S22"},SubnetStatus:{}}}},DBSubnetGroupArn:{}},wrapper:!0},S22:{type:"structure",members:{Name:{}},wrapper:!0},S2k:{type:"list",member:{locationName:"SubnetIdentifier"}},S3b:{type:"list",member:{locationName:"Filter",type:"structure",required:["Name","Values"],members:{Name:{},Values:{type:"list",member:{locationName:"Value"}}}}},S3m:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},ApplyType:{},DataType:{},AllowedValues:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{},ApplyMethod:{}}}},S3r:{type:"structure",members:{DBClusterSnapshotIdentifier:{},DBClusterSnapshotAttributes:{type:"list",member:{locationName:"DBClusterSnapshotAttribute",type:"structure",members:{AttributeName:{},AttributeValues:{shape:"S3u"}}}}},wrapper:!0},S3u:{type:"list",member:{locationName:"AttributeValue"}},S45:{type:"structure",members:{CharacterSetName:{},CharacterSetDescription:{}}},S4s:{type:"structure",members:{DBSnapshotIdentifier:{},DBSnapshotAttributes:{type:"list",member:{locationName:"DBSnapshotAttribute",type:"structure",members:{AttributeName:{},AttributeValues:{shape:"S3u"}},wrapper:!0}}},wrapper:!0},S53:{type:"structure",members:{DBParameterGroupFamily:{},Marker:{},Parameters:{shape:"S3m"}},wrapper:!0},S66:{type:"structure",members:{ReservedDBInstanceId:{},ReservedDBInstancesOfferingId:{},DBInstanceClass:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},DBInstanceCount:{type:"integer"},ProductDescription:{},OfferingType:{},MultiAZ:{type:"boolean"},State:{},RecurringCharges:{shape:"S68"},ReservedDBInstanceArn:{}},wrapper:!0},S68:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S6r:{type:"structure",members:{DBClusterParameterGroupName:{}}},S6x:{type:"structure",members:{DBParameterGroupName:{}}}}}},{}],102:[function(e,t,r){arguments[4][97][0].apply(r,arguments)},{dup:97}],103:[function(e,t,r){t.exports={version:2,waiters:{DBInstanceAvailable:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-restore",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"incompatible-parameters",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]},DBInstanceDeleted:{delay:30,operation:"DescribeDBInstances",maxAttempts:60,acceptors:[{expected:"deleted",matcher:"pathAll",state:"success",argument:"DBInstances[].DBInstanceStatus"},{expected:"DBInstanceNotFound",matcher:"error",state:"success"},{expected:"creating",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"modifying",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"rebooting",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"},{expected:"resetting-master-credentials",matcher:"pathAny",state:"failure",argument:"DBInstances[].DBInstanceStatus"}]}}}},{}],104:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-12-01",endpointPrefix:"redshift",protocol:"query",serviceFullName:"Amazon Redshift",signatureVersion:"v4",xmlNamespace:"http://redshift.amazonaws.com/doc/2012-12-01/"},operations:{AuthorizeClusterSecurityGroupIngress:{input:{type:"structure",required:["ClusterSecurityGroupName"],members:{ClusterSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"AuthorizeClusterSecurityGroupIngressResult",type:"structure",members:{ClusterSecurityGroup:{shape:"S4"}}}},AuthorizeSnapshotAccess:{input:{type:"structure",required:["SnapshotIdentifier","AccountWithRestoreAccess"],members:{SnapshotIdentifier:{},SnapshotClusterIdentifier:{},AccountWithRestoreAccess:{}}},output:{resultWrapper:"AuthorizeSnapshotAccessResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CopyClusterSnapshot:{input:{type:"structure",required:["SourceSnapshotIdentifier","TargetSnapshotIdentifier"],members:{SourceSnapshotIdentifier:{},SourceSnapshotClusterIdentifier:{},TargetSnapshotIdentifier:{}}},output:{resultWrapper:"CopyClusterSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CreateCluster:{input:{type:"structure",required:["ClusterIdentifier","NodeType","MasterUsername","MasterUserPassword"],members:{DBName:{},ClusterIdentifier:{},ClusterType:{},NodeType:{},MasterUsername:{},MasterUserPassword:{},ClusterSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},ClusterSubnetGroupName:{},AvailabilityZone:{},PreferredMaintenanceWindow:{},ClusterParameterGroupName:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},Port:{type:"integer"},ClusterVersion:{},AllowVersionUpgrade:{type:"boolean"},NumberOfNodes:{type:"integer"},PubliclyAccessible:{type:"boolean"},Encrypted:{type:"boolean"},HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},ElasticIp:{},Tags:{shape:"S7"},KmsKeyId:{},EnhancedVpcRouting:{type:"boolean"},AdditionalInfo:{},IamRoles:{shape:"St"}}},output:{resultWrapper:"CreateClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},CreateClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName","ParameterGroupFamily","Description"],members:{ParameterGroupName:{},ParameterGroupFamily:{},Description:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterParameterGroupResult",type:"structure",members:{ClusterParameterGroup:{shape:"S1g"}}}},CreateClusterSecurityGroup:{input:{type:"structure",required:["ClusterSecurityGroupName","Description"],members:{ClusterSecurityGroupName:{},Description:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterSecurityGroupResult",type:"structure",members:{ClusterSecurityGroup:{shape:"S4"}}}},CreateClusterSnapshot:{input:{type:"structure",required:["SnapshotIdentifier","ClusterIdentifier"],members:{SnapshotIdentifier:{},ClusterIdentifier:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},CreateClusterSubnetGroup:{input:{type:"structure",required:["ClusterSubnetGroupName","Description","SubnetIds"],members:{ClusterSubnetGroupName:{},Description:{},SubnetIds:{shape:"S1m"},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateClusterSubnetGroupResult",type:"structure",members:{ClusterSubnetGroup:{shape:"S1o"}}}},CreateEventSubscription:{input:{type:"structure",required:["SubscriptionName","SnsTopicArn"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},SourceIds:{shape:"S1t"},EventCategories:{shape:"S1u"},Severity:{},Enabled:{type:"boolean"},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S1w"}}}},CreateHsmClientCertificate:{input:{type:"structure",required:["HsmClientCertificateIdentifier"],members:{HsmClientCertificateIdentifier:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateHsmClientCertificateResult",type:"structure",members:{HsmClientCertificate:{shape:"S1z"}}}},CreateHsmConfiguration:{input:{type:"structure",required:["HsmConfigurationIdentifier","Description","HsmIpAddress","HsmPartitionName","HsmPartitionPassword","HsmServerPublicCertificate"],members:{HsmConfigurationIdentifier:{},Description:{},HsmIpAddress:{},HsmPartitionName:{},HsmPartitionPassword:{},HsmServerPublicCertificate:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateHsmConfigurationResult",type:"structure",members:{HsmConfiguration:{shape:"S22"}}}},CreateSnapshotCopyGrant:{input:{type:"structure",required:["SnapshotCopyGrantName"],members:{SnapshotCopyGrantName:{},KmsKeyId:{},Tags:{shape:"S7"}}},output:{resultWrapper:"CreateSnapshotCopyGrantResult",type:"structure",members:{SnapshotCopyGrant:{shape:"S25"}}}},CreateTags:{input:{type:"structure",required:["ResourceName","Tags"],members:{ResourceName:{},Tags:{shape:"S7"}}}},DeleteCluster:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{},SkipFinalClusterSnapshot:{type:"boolean"},FinalClusterSnapshotIdentifier:{}}},output:{resultWrapper:"DeleteClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},DeleteClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName"],members:{ParameterGroupName:{}}}},DeleteClusterSecurityGroup:{input:{type:"structure",required:["ClusterSecurityGroupName"],members:{ClusterSecurityGroupName:{}}}},DeleteClusterSnapshot:{input:{type:"structure",required:["SnapshotIdentifier"],members:{SnapshotIdentifier:{},SnapshotClusterIdentifier:{}}},output:{resultWrapper:"DeleteClusterSnapshotResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},DeleteClusterSubnetGroup:{input:{type:"structure",required:["ClusterSubnetGroupName"],members:{ClusterSubnetGroupName:{}}}},DeleteEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{}}}},DeleteHsmClientCertificate:{input:{type:"structure",required:["HsmClientCertificateIdentifier"],members:{HsmClientCertificateIdentifier:{}}}},DeleteHsmConfiguration:{input:{type:"structure",required:["HsmConfigurationIdentifier"],members:{HsmConfigurationIdentifier:{}}}},DeleteSnapshotCopyGrant:{input:{type:"structure",required:["SnapshotCopyGrantName"],members:{SnapshotCopyGrantName:{}}}},DeleteTags:{input:{type:"structure",required:["ResourceName","TagKeys"],members:{ResourceName:{},TagKeys:{shape:"S2j"}}}},DescribeClusterParameterGroups:{input:{type:"structure",members:{ParameterGroupName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterParameterGroupsResult",type:"structure",members:{Marker:{},ParameterGroups:{type:"list",member:{shape:"S1g",locationName:"ClusterParameterGroup"}}}}},DescribeClusterParameters:{input:{type:"structure",required:["ParameterGroupName"],members:{ParameterGroupName:{},Source:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeClusterParametersResult",type:"structure",members:{Parameters:{shape:"S2q"},Marker:{}}}},DescribeClusterSecurityGroups:{input:{type:"structure",members:{ClusterSecurityGroupName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterSecurityGroupsResult",type:"structure",members:{Marker:{},ClusterSecurityGroups:{type:"list",member:{shape:"S4",locationName:"ClusterSecurityGroup"}}}}},DescribeClusterSnapshots:{input:{type:"structure",members:{ClusterIdentifier:{},SnapshotIdentifier:{},SnapshotType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},MaxRecords:{type:"integer"},Marker:{},OwnerAccount:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterSnapshotsResult",type:"structure",members:{Marker:{},Snapshots:{type:"list",member:{shape:"Sd",locationName:"Snapshot"}}}}},DescribeClusterSubnetGroups:{input:{type:"structure",members:{ClusterSubnetGroupName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClusterSubnetGroupsResult",type:"structure",members:{Marker:{},ClusterSubnetGroups:{type:"list",member:{shape:"S1o",locationName:"ClusterSubnetGroup"}}}}},DescribeClusterVersions:{input:{type:"structure",members:{ClusterVersion:{},ClusterParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeClusterVersionsResult",type:"structure",members:{Marker:{},ClusterVersions:{type:"list",member:{locationName:"ClusterVersion",type:"structure",members:{ClusterVersion:{},ClusterParameterGroupFamily:{},Description:{}}}}}}},DescribeClusters:{input:{type:"structure",members:{ClusterIdentifier:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeClustersResult",type:"structure",members:{Marker:{},Clusters:{type:"list",member:{shape:"Sv",locationName:"Cluster"}}}}},DescribeDefaultClusterParameters:{input:{type:"structure",required:["ParameterGroupFamily"],members:{ParameterGroupFamily:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeDefaultClusterParametersResult",type:"structure",members:{DefaultClusterParameters:{type:"structure",members:{ParameterGroupFamily:{},Marker:{},Parameters:{shape:"S2q"}},wrapper:!0}}}},DescribeEventCategories:{input:{type:"structure",members:{SourceType:{}}},output:{resultWrapper:"DescribeEventCategoriesResult",type:"structure",members:{EventCategoriesMapList:{type:"list",member:{locationName:"EventCategoriesMap",type:"structure",members:{SourceType:{},Events:{type:"list",member:{locationName:"EventInfoMap",type:"structure",members:{EventId:{},EventCategories:{shape:"S1u"},EventDescription:{},Severity:{}},wrapper:!0}}},wrapper:!0}}}}},DescribeEventSubscriptions:{input:{type:"structure",members:{SubscriptionName:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventSubscriptionsResult",type:"structure",members:{Marker:{},EventSubscriptionsList:{type:"list",member:{shape:"S1w",locationName:"EventSubscription"}}}}},DescribeEvents:{input:{type:"structure",members:{SourceIdentifier:{},SourceType:{},StartTime:{type:"timestamp"},EndTime:{type:"timestamp"},Duration:{type:"integer"},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeEventsResult",type:"structure",members:{Marker:{},Events:{type:"list",member:{locationName:"Event",type:"structure",members:{SourceIdentifier:{},SourceType:{},Message:{},EventCategories:{shape:"S1u"},Severity:{},Date:{type:"timestamp"},EventId:{}}}}}}},DescribeHsmClientCertificates:{input:{type:"structure",members:{HsmClientCertificateIdentifier:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeHsmClientCertificatesResult",type:"structure",members:{Marker:{},HsmClientCertificates:{type:"list",member:{shape:"S1z",locationName:"HsmClientCertificate"}}}}},DescribeHsmConfigurations:{input:{type:"structure",members:{HsmConfigurationIdentifier:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeHsmConfigurationsResult",type:"structure",members:{Marker:{},HsmConfigurations:{type:"list",member:{shape:"S22",locationName:"HsmConfiguration"}}}}},DescribeLoggingStatus:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{shape:"S3x",resultWrapper:"DescribeLoggingStatusResult"}},DescribeOrderableClusterOptions:{input:{type:"structure",members:{ClusterVersion:{},NodeType:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeOrderableClusterOptionsResult",type:"structure",members:{OrderableClusterOptions:{type:"list",member:{locationName:"OrderableClusterOption",type:"structure",members:{ClusterVersion:{},ClusterType:{},NodeType:{},AvailabilityZones:{type:"list",member:{shape:"S1r",locationName:"AvailabilityZone"}}},wrapper:!0}},Marker:{}}}},DescribeReservedNodeOfferings:{input:{type:"structure",members:{ReservedNodeOfferingId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedNodeOfferingsResult",type:"structure",members:{Marker:{},ReservedNodeOfferings:{type:"list",member:{locationName:"ReservedNodeOffering",type:"structure",members:{ReservedNodeOfferingId:{},NodeType:{},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},OfferingType:{},RecurringCharges:{shape:"S47"}},wrapper:!0}}}}},DescribeReservedNodes:{input:{type:"structure",members:{ReservedNodeId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeReservedNodesResult",type:"structure",members:{Marker:{},ReservedNodes:{type:"list",member:{shape:"S4c",locationName:"ReservedNode"}}}}},DescribeResize:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"DescribeResizeResult",type:"structure",members:{TargetNodeType:{},TargetNumberOfNodes:{type:"integer"},TargetClusterType:{},Status:{},ImportTablesCompleted:{type:"list",member:{}},ImportTablesInProgress:{type:"list",member:{}},ImportTablesNotStarted:{type:"list",member:{}},AvgResizeRateInMegaBytesPerSecond:{type:"double"},TotalResizeDataInMegaBytes:{type:"long"},ProgressInMegaBytes:{type:"long"},ElapsedTimeInSeconds:{type:"long"},EstimatedTimeToCompletionInSeconds:{type:"long"}}}},DescribeSnapshotCopyGrants:{input:{type:"structure",members:{SnapshotCopyGrantName:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeSnapshotCopyGrantsResult",type:"structure",members:{Marker:{},SnapshotCopyGrants:{type:"list",member:{shape:"S25",locationName:"SnapshotCopyGrant"}}}}},DescribeTableRestoreStatus:{input:{type:"structure",members:{ClusterIdentifier:{},TableRestoreRequestId:{},MaxRecords:{type:"integer"},Marker:{}}},output:{resultWrapper:"DescribeTableRestoreStatusResult",type:"structure",members:{TableRestoreStatusDetails:{type:"list",member:{shape:"S4q",locationName:"TableRestoreStatus"}},Marker:{}}}},DescribeTags:{input:{type:"structure",members:{ResourceName:{},ResourceType:{},MaxRecords:{type:"integer"},Marker:{},TagKeys:{shape:"S2j"},TagValues:{shape:"S2l"}}},output:{resultWrapper:"DescribeTagsResult",type:"structure",members:{TaggedResources:{type:"list",member:{locationName:"TaggedResource",type:"structure",members:{Tag:{shape:"S8"},ResourceName:{},ResourceType:{}}}},Marker:{}}}},DisableLogging:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{shape:"S3x",resultWrapper:"DisableLoggingResult"}},DisableSnapshotCopy:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"DisableSnapshotCopyResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},EnableLogging:{input:{type:"structure",required:["ClusterIdentifier","BucketName"],members:{ClusterIdentifier:{},BucketName:{},S3KeyPrefix:{}}},output:{shape:"S3x",resultWrapper:"EnableLoggingResult"}},EnableSnapshotCopy:{input:{type:"structure",required:["ClusterIdentifier","DestinationRegion"],members:{ClusterIdentifier:{},DestinationRegion:{},RetentionPeriod:{type:"integer"},SnapshotCopyGrantName:{}}},output:{resultWrapper:"EnableSnapshotCopyResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ModifyCluster:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{},ClusterType:{},NodeType:{},NumberOfNodes:{type:"integer"},ClusterSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},MasterUserPassword:{},ClusterParameterGroupName:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},PreferredMaintenanceWindow:{},ClusterVersion:{},AllowVersionUpgrade:{type:"boolean"},HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},NewClusterIdentifier:{},PubliclyAccessible:{type:"boolean"},ElasticIp:{},EnhancedVpcRouting:{type:"boolean"}}},output:{resultWrapper:"ModifyClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ModifyClusterIamRoles:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{},AddIamRoles:{shape:"St"},RemoveIamRoles:{shape:"St"}}},output:{resultWrapper:"ModifyClusterIamRolesResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ModifyClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName","Parameters"],members:{ParameterGroupName:{},Parameters:{shape:"S2q"}}},output:{shape:"S57",resultWrapper:"ModifyClusterParameterGroupResult"}},ModifyClusterSubnetGroup:{input:{type:"structure",required:["ClusterSubnetGroupName","SubnetIds"],members:{ClusterSubnetGroupName:{},Description:{},SubnetIds:{shape:"S1m"}}},output:{resultWrapper:"ModifyClusterSubnetGroupResult", -type:"structure",members:{ClusterSubnetGroup:{shape:"S1o"}}}},ModifyEventSubscription:{input:{type:"structure",required:["SubscriptionName"],members:{SubscriptionName:{},SnsTopicArn:{},SourceType:{},SourceIds:{shape:"S1t"},EventCategories:{shape:"S1u"},Severity:{},Enabled:{type:"boolean"}}},output:{resultWrapper:"ModifyEventSubscriptionResult",type:"structure",members:{EventSubscription:{shape:"S1w"}}}},ModifySnapshotCopyRetentionPeriod:{input:{type:"structure",required:["ClusterIdentifier","RetentionPeriod"],members:{ClusterIdentifier:{},RetentionPeriod:{type:"integer"}}},output:{resultWrapper:"ModifySnapshotCopyRetentionPeriodResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},PurchaseReservedNodeOffering:{input:{type:"structure",required:["ReservedNodeOfferingId"],members:{ReservedNodeOfferingId:{},NodeCount:{type:"integer"}}},output:{resultWrapper:"PurchaseReservedNodeOfferingResult",type:"structure",members:{ReservedNode:{shape:"S4c"}}}},RebootCluster:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"RebootClusterResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},ResetClusterParameterGroup:{input:{type:"structure",required:["ParameterGroupName"],members:{ParameterGroupName:{},ResetAllParameters:{type:"boolean"},Parameters:{shape:"S2q"}}},output:{shape:"S57",resultWrapper:"ResetClusterParameterGroupResult"}},RestoreFromClusterSnapshot:{input:{type:"structure",required:["ClusterIdentifier","SnapshotIdentifier"],members:{ClusterIdentifier:{},SnapshotIdentifier:{},SnapshotClusterIdentifier:{},Port:{type:"integer"},AvailabilityZone:{},AllowVersionUpgrade:{type:"boolean"},ClusterSubnetGroupName:{},PubliclyAccessible:{type:"boolean"},OwnerAccount:{},HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},ElasticIp:{},ClusterParameterGroupName:{},ClusterSecurityGroups:{shape:"Sp"},VpcSecurityGroupIds:{shape:"Sq"},PreferredMaintenanceWindow:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},KmsKeyId:{},NodeType:{},EnhancedVpcRouting:{type:"boolean"},AdditionalInfo:{},IamRoles:{shape:"St"}}},output:{resultWrapper:"RestoreFromClusterSnapshotResult",type:"structure",members:{Cluster:{shape:"Sv"}}}},RestoreTableFromClusterSnapshot:{input:{type:"structure",required:["ClusterIdentifier","SnapshotIdentifier","SourceDatabaseName","SourceTableName","NewTableName"],members:{ClusterIdentifier:{},SnapshotIdentifier:{},SourceDatabaseName:{},SourceSchemaName:{},SourceTableName:{},TargetDatabaseName:{},TargetSchemaName:{},NewTableName:{}}},output:{resultWrapper:"RestoreTableFromClusterSnapshotResult",type:"structure",members:{TableRestoreStatus:{shape:"S4q"}}}},RevokeClusterSecurityGroupIngress:{input:{type:"structure",required:["ClusterSecurityGroupName"],members:{ClusterSecurityGroupName:{},CIDRIP:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{}}},output:{resultWrapper:"RevokeClusterSecurityGroupIngressResult",type:"structure",members:{ClusterSecurityGroup:{shape:"S4"}}}},RevokeSnapshotAccess:{input:{type:"structure",required:["SnapshotIdentifier","AccountWithRestoreAccess"],members:{SnapshotIdentifier:{},SnapshotClusterIdentifier:{},AccountWithRestoreAccess:{}}},output:{resultWrapper:"RevokeSnapshotAccessResult",type:"structure",members:{Snapshot:{shape:"Sd"}}}},RotateEncryptionKey:{input:{type:"structure",required:["ClusterIdentifier"],members:{ClusterIdentifier:{}}},output:{resultWrapper:"RotateEncryptionKeyResult",type:"structure",members:{Cluster:{shape:"Sv"}}}}},shapes:{S4:{type:"structure",members:{ClusterSecurityGroupName:{},Description:{},EC2SecurityGroups:{type:"list",member:{locationName:"EC2SecurityGroup",type:"structure",members:{Status:{},EC2SecurityGroupName:{},EC2SecurityGroupOwnerId:{},Tags:{shape:"S7"}}}},IPRanges:{type:"list",member:{locationName:"IPRange",type:"structure",members:{Status:{},CIDRIP:{},Tags:{shape:"S7"}}}},Tags:{shape:"S7"}},wrapper:!0},S7:{type:"list",member:{shape:"S8",locationName:"Tag"}},S8:{type:"structure",members:{Key:{},Value:{}}},Sd:{type:"structure",members:{SnapshotIdentifier:{},ClusterIdentifier:{},SnapshotCreateTime:{type:"timestamp"},Status:{},Port:{type:"integer"},AvailabilityZone:{},ClusterCreateTime:{type:"timestamp"},MasterUsername:{},ClusterVersion:{},SnapshotType:{},NodeType:{},NumberOfNodes:{type:"integer"},DBName:{},VpcId:{},Encrypted:{type:"boolean"},KmsKeyId:{},EncryptedWithHSM:{type:"boolean"},AccountsWithRestoreAccess:{type:"list",member:{locationName:"AccountWithRestoreAccess",type:"structure",members:{AccountId:{}}}},OwnerAccount:{},TotalBackupSizeInMegaBytes:{type:"double"},ActualIncrementalBackupSizeInMegaBytes:{type:"double"},BackupProgressInMegaBytes:{type:"double"},CurrentBackupRateInMegaBytesPerSecond:{type:"double"},EstimatedSecondsToCompletion:{type:"long"},ElapsedTimeInSeconds:{type:"long"},SourceRegion:{},Tags:{shape:"S7"},RestorableNodeTypes:{type:"list",member:{locationName:"NodeType"}},EnhancedVpcRouting:{type:"boolean"}},wrapper:!0},Sp:{type:"list",member:{locationName:"ClusterSecurityGroupName"}},Sq:{type:"list",member:{locationName:"VpcSecurityGroupId"}},St:{type:"list",member:{locationName:"IamRoleArn"}},Sv:{type:"structure",members:{ClusterIdentifier:{},NodeType:{},ClusterStatus:{},ModifyStatus:{},MasterUsername:{},DBName:{},Endpoint:{type:"structure",members:{Address:{},Port:{type:"integer"}}},ClusterCreateTime:{type:"timestamp"},AutomatedSnapshotRetentionPeriod:{type:"integer"},ClusterSecurityGroups:{type:"list",member:{locationName:"ClusterSecurityGroup",type:"structure",members:{ClusterSecurityGroupName:{},Status:{}}}},VpcSecurityGroups:{type:"list",member:{locationName:"VpcSecurityGroup",type:"structure",members:{VpcSecurityGroupId:{},Status:{}}}},ClusterParameterGroups:{type:"list",member:{locationName:"ClusterParameterGroup",type:"structure",members:{ParameterGroupName:{},ParameterApplyStatus:{},ClusterParameterStatusList:{type:"list",member:{type:"structure",members:{ParameterName:{},ParameterApplyStatus:{},ParameterApplyErrorDescription:{}}}}}}},ClusterSubnetGroupName:{},VpcId:{},AvailabilityZone:{},PreferredMaintenanceWindow:{},PendingModifiedValues:{type:"structure",members:{MasterUserPassword:{},NodeType:{},NumberOfNodes:{type:"integer"},ClusterType:{},ClusterVersion:{},AutomatedSnapshotRetentionPeriod:{type:"integer"},ClusterIdentifier:{},PubliclyAccessible:{type:"boolean"},EnhancedVpcRouting:{type:"boolean"}}},ClusterVersion:{},AllowVersionUpgrade:{type:"boolean"},NumberOfNodes:{type:"integer"},PubliclyAccessible:{type:"boolean"},Encrypted:{type:"boolean"},RestoreStatus:{type:"structure",members:{Status:{},CurrentRestoreRateInMegaBytesPerSecond:{type:"double"},SnapshotSizeInMegaBytes:{type:"long"},ProgressInMegaBytes:{type:"long"},ElapsedTimeInSeconds:{type:"long"},EstimatedTimeToCompletionInSeconds:{type:"long"}}},HsmStatus:{type:"structure",members:{HsmClientCertificateIdentifier:{},HsmConfigurationIdentifier:{},Status:{}}},ClusterSnapshotCopyStatus:{type:"structure",members:{DestinationRegion:{},RetentionPeriod:{type:"long"},SnapshotCopyGrantName:{}}},ClusterPublicKey:{},ClusterNodes:{type:"list",member:{type:"structure",members:{NodeRole:{},PrivateIPAddress:{},PublicIPAddress:{}}}},ElasticIpStatus:{type:"structure",members:{ElasticIp:{},Status:{}}},ClusterRevisionNumber:{},Tags:{shape:"S7"},KmsKeyId:{},EnhancedVpcRouting:{type:"boolean"},IamRoles:{type:"list",member:{locationName:"ClusterIamRole",type:"structure",members:{IamRoleArn:{},ApplyStatus:{}}}}},wrapper:!0},S1g:{type:"structure",members:{ParameterGroupName:{},ParameterGroupFamily:{},Description:{},Tags:{shape:"S7"}},wrapper:!0},S1m:{type:"list",member:{locationName:"SubnetIdentifier"}},S1o:{type:"structure",members:{ClusterSubnetGroupName:{},Description:{},VpcId:{},SubnetGroupStatus:{},Subnets:{type:"list",member:{locationName:"Subnet",type:"structure",members:{SubnetIdentifier:{},SubnetAvailabilityZone:{shape:"S1r"},SubnetStatus:{}}}},Tags:{shape:"S7"}},wrapper:!0},S1r:{type:"structure",members:{Name:{}},wrapper:!0},S1t:{type:"list",member:{locationName:"SourceId"}},S1u:{type:"list",member:{locationName:"EventCategory"}},S1w:{type:"structure",members:{CustomerAwsId:{},CustSubscriptionId:{},SnsTopicArn:{},Status:{},SubscriptionCreationTime:{type:"timestamp"},SourceType:{},SourceIdsList:{shape:"S1t"},EventCategoriesList:{shape:"S1u"},Severity:{},Enabled:{type:"boolean"},Tags:{shape:"S7"}},wrapper:!0},S1z:{type:"structure",members:{HsmClientCertificateIdentifier:{},HsmClientCertificatePublicKey:{},Tags:{shape:"S7"}},wrapper:!0},S22:{type:"structure",members:{HsmConfigurationIdentifier:{},Description:{},HsmIpAddress:{},HsmPartitionName:{},Tags:{shape:"S7"}},wrapper:!0},S25:{type:"structure",members:{SnapshotCopyGrantName:{},KmsKeyId:{},Tags:{shape:"S7"}},wrapper:!0},S2j:{type:"list",member:{locationName:"TagKey"}},S2l:{type:"list",member:{locationName:"TagValue"}},S2q:{type:"list",member:{locationName:"Parameter",type:"structure",members:{ParameterName:{},ParameterValue:{},Description:{},Source:{},DataType:{},AllowedValues:{},ApplyType:{},IsModifiable:{type:"boolean"},MinimumEngineVersion:{}}}},S3x:{type:"structure",members:{LoggingEnabled:{type:"boolean"},BucketName:{},S3KeyPrefix:{},LastSuccessfulDeliveryTime:{type:"timestamp"},LastFailureTime:{type:"timestamp"},LastFailureMessage:{}}},S47:{type:"list",member:{locationName:"RecurringCharge",type:"structure",members:{RecurringChargeAmount:{type:"double"},RecurringChargeFrequency:{}},wrapper:!0}},S4c:{type:"structure",members:{ReservedNodeId:{},ReservedNodeOfferingId:{},NodeType:{},StartTime:{type:"timestamp"},Duration:{type:"integer"},FixedPrice:{type:"double"},UsagePrice:{type:"double"},CurrencyCode:{},NodeCount:{type:"integer"},State:{},OfferingType:{},RecurringCharges:{shape:"S47"}},wrapper:!0},S4q:{type:"structure",members:{TableRestoreRequestId:{},Status:{},Message:{},RequestTime:{type:"timestamp"},ProgressInMegaBytes:{type:"long"},TotalDataInMegaBytes:{type:"long"},ClusterIdentifier:{},SnapshotIdentifier:{},SourceDatabaseName:{},SourceSchemaName:{},SourceTableName:{},TargetDatabaseName:{},TargetSchemaName:{},NewTableName:{}},wrapper:!0},S57:{type:"structure",members:{ParameterGroupName:{},ParameterGroupStatus:{}}}}}},{}],105:[function(e,t,r){t.exports={pagination:{DescribeClusterParameterGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ParameterGroups"},DescribeClusterParameters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Parameters"},DescribeClusterSecurityGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ClusterSecurityGroups"},DescribeClusterSnapshots:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Snapshots"},DescribeClusterSubnetGroups:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ClusterSubnetGroups"},DescribeClusterVersions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ClusterVersions"},DescribeClusters:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Clusters"},DescribeDefaultClusterParameters:{input_token:"Marker",output_token:"DefaultClusterParameters.Marker",limit_key:"MaxRecords",result_key:"DefaultClusterParameters.Parameters"},DescribeEventSubscriptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"EventSubscriptionsList"},DescribeEvents:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"Events"},DescribeHsmClientCertificates:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"HsmClientCertificates"},DescribeHsmConfigurations:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"HsmConfigurations"},DescribeOrderableClusterOptions:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"OrderableClusterOptions"},DescribeReservedNodeOfferings:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedNodeOfferings"},DescribeReservedNodes:{input_token:"Marker",output_token:"Marker",limit_key:"MaxRecords",result_key:"ReservedNodes"}}}},{}],106:[function(e,t,r){t.exports={version:2,waiters:{ClusterAvailable:{delay:60,operation:"DescribeClusters",maxAttempts:30,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Clusters[].ClusterStatus"},{expected:"deleting",matcher:"pathAny",state:"failure",argument:"Clusters[].ClusterStatus"},{expected:"ClusterNotFound",matcher:"error",state:"retry"}]},ClusterDeleted:{delay:60,operation:"DescribeClusters",maxAttempts:30,acceptors:[{expected:"ClusterNotFound",matcher:"error",state:"success"},{expected:"creating",matcher:"pathAny",state:"failure",argument:"Clusters[].ClusterStatus"},{expected:"modifying",matcher:"pathAny",state:"failure",argument:"Clusters[].ClusterStatus"}]},ClusterRestored:{operation:"DescribeClusters",maxAttempts:30,delay:60,acceptors:[{state:"success",matcher:"pathAll",argument:"Clusters[].RestoreStatus.Status",expected:"completed"},{state:"failure",matcher:"pathAny",argument:"Clusters[].ClusterStatus",expected:"deleting"}]},SnapshotAvailable:{delay:15,operation:"DescribeClusterSnapshots",maxAttempts:20,acceptors:[{expected:"available",matcher:"pathAll",state:"success",argument:"Snapshots[].Status"},{expected:"failed",matcher:"pathAny",state:"failure",argument:"Snapshots[].Status"},{expected:"deleted",matcher:"pathAny",state:"failure",argument:"Snapshots[].Status"}]}}}},{}],107:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-04-01",endpointPrefix:"route53",globalEndpoint:"route53.amazonaws.com",protocol:"rest-xml",serviceAbbreviation:"Route 53",serviceFullName:"Amazon Route 53",signatureVersion:"v4"},operations:{AssociateVPCWithHostedZone:{http:{requestUri:"/2013-04-01/hostedzone/{Id}/associatevpc"},input:{locationName:"AssociateVPCWithHostedZoneRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","VPC"],members:{HostedZoneId:{location:"uri",locationName:"Id"},VPC:{shape:"S3"},Comment:{}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},ChangeResourceRecordSets:{http:{requestUri:"/2013-04-01/hostedzone/{Id}/rrset/"},input:{locationName:"ChangeResourceRecordSetsRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","ChangeBatch"],members:{HostedZoneId:{location:"uri",locationName:"Id"},ChangeBatch:{type:"structure",required:["Changes"],members:{Comment:{},Changes:{shape:"Se"}}}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},ChangeTagsForResource:{http:{requestUri:"/2013-04-01/tags/{ResourceType}/{ResourceId}"},input:{locationName:"ChangeTagsForResourceRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["ResourceType","ResourceId"],members:{ResourceType:{location:"uri",locationName:"ResourceType"},ResourceId:{location:"uri",locationName:"ResourceId"},AddTags:{shape:"S14"},RemoveTagKeys:{type:"list",member:{locationName:"Key"}}}},output:{type:"structure",members:{}}},CreateHealthCheck:{http:{requestUri:"/2013-04-01/healthcheck",responseCode:201},input:{locationName:"CreateHealthCheckRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["CallerReference","HealthCheckConfig"],members:{CallerReference:{},HealthCheckConfig:{shape:"S1c"}}},output:{type:"structure",required:["HealthCheck","Location"],members:{HealthCheck:{shape:"S1x"},Location:{location:"header",locationName:"Location"}}}},CreateHostedZone:{http:{requestUri:"/2013-04-01/hostedzone",responseCode:201},input:{locationName:"CreateHostedZoneRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Name","CallerReference"],members:{Name:{},VPC:{shape:"S3"},CallerReference:{},HostedZoneConfig:{shape:"S2d"},DelegationSetId:{}}},output:{type:"structure",required:["HostedZone","ChangeInfo","DelegationSet","Location"],members:{HostedZone:{shape:"S2g"},ChangeInfo:{shape:"S8"},DelegationSet:{shape:"S2i"},VPC:{shape:"S3"},Location:{location:"header",locationName:"Location"}}}},CreateReusableDelegationSet:{http:{requestUri:"/2013-04-01/delegationset",responseCode:201},input:{locationName:"CreateReusableDelegationSetRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["CallerReference"],members:{CallerReference:{},HostedZoneId:{}}},output:{type:"structure",required:["DelegationSet","Location"],members:{DelegationSet:{shape:"S2i"},Location:{location:"header",locationName:"Location"}}}},CreateTrafficPolicy:{http:{requestUri:"/2013-04-01/trafficpolicy",responseCode:201},input:{locationName:"CreateTrafficPolicyRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Name","Document"],members:{Name:{},Document:{},Comment:{}}},output:{type:"structure",required:["TrafficPolicy","Location"],members:{TrafficPolicy:{shape:"S2r"},Location:{location:"header",locationName:"Location"}}}},CreateTrafficPolicyInstance:{http:{requestUri:"/2013-04-01/trafficpolicyinstance",responseCode:201},input:{locationName:"CreateTrafficPolicyInstanceRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","Name","TTL","TrafficPolicyId","TrafficPolicyVersion"],members:{HostedZoneId:{},Name:{},TTL:{type:"long"},TrafficPolicyId:{},TrafficPolicyVersion:{type:"integer"}}},output:{type:"structure",required:["TrafficPolicyInstance","Location"],members:{TrafficPolicyInstance:{shape:"S2w"},Location:{location:"header",locationName:"Location"}}}},CreateTrafficPolicyVersion:{http:{requestUri:"/2013-04-01/trafficpolicy/{Id}",responseCode:201},input:{locationName:"CreateTrafficPolicyVersionRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id","Document"],members:{Id:{location:"uri",locationName:"Id"},Document:{},Comment:{}}},output:{type:"structure",required:["TrafficPolicy","Location"],members:{TrafficPolicy:{shape:"S2r"},Location:{location:"header",locationName:"Location"}}}},DeleteHealthCheck:{http:{method:"DELETE",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",members:{}}},DeleteHostedZone:{http:{method:"DELETE",requestUri:"/2013-04-01/hostedzone/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},DeleteReusableDelegationSet:{http:{method:"DELETE",requestUri:"/2013-04-01/delegationset/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},DeleteTrafficPolicy:{http:{method:"DELETE",requestUri:"/2013-04-01/trafficpolicy/{Id}/{Version}"},input:{type:"structure",required:["Id","Version"],members:{Id:{location:"uri",locationName:"Id"},Version:{location:"uri",locationName:"Version",type:"integer"}}},output:{type:"structure",members:{}}},DeleteTrafficPolicyInstance:{http:{method:"DELETE",requestUri:"/2013-04-01/trafficpolicyinstance/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",members:{}}},DisassociateVPCFromHostedZone:{http:{requestUri:"/2013-04-01/hostedzone/{Id}/disassociatevpc"},input:{locationName:"DisassociateVPCFromHostedZoneRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HostedZoneId","VPC"],members:{HostedZoneId:{location:"uri",locationName:"Id"},VPC:{shape:"S3"},Comment:{}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},GetChange:{http:{method:"GET",requestUri:"/2013-04-01/change/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["ChangeInfo"],members:{ChangeInfo:{shape:"S8"}}}},GetChangeDetails:{http:{method:"GET",requestUri:"/2013-04-01/changedetails/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}},deprecated:!0},output:{type:"structure",required:["ChangeBatchRecord"],members:{ChangeBatchRecord:{shape:"S3i"}},deprecated:!0},deprecated:!0},GetCheckerIpRanges:{http:{method:"GET",requestUri:"/2013-04-01/checkeripranges"},input:{type:"structure",members:{}},output:{type:"structure",required:["CheckerIpRanges"],members:{CheckerIpRanges:{type:"list",member:{}}}}},GetGeoLocation:{http:{method:"GET",requestUri:"/2013-04-01/geolocation"},input:{type:"structure",members:{ContinentCode:{location:"querystring",locationName:"continentcode"},CountryCode:{location:"querystring",locationName:"countrycode"},SubdivisionCode:{location:"querystring",locationName:"subdivisioncode"}}},output:{type:"structure",required:["GeoLocationDetails"],members:{GeoLocationDetails:{shape:"S3q"}}}},GetHealthCheck:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",required:["HealthCheck"],members:{HealthCheck:{shape:"S1x"}}}},GetHealthCheckCount:{http:{method:"GET",requestUri:"/2013-04-01/healthcheckcount"},input:{type:"structure",members:{}},output:{type:"structure",required:["HealthCheckCount"],members:{HealthCheckCount:{type:"long"}}}},GetHealthCheckLastFailureReason:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}/lastfailurereason"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",required:["HealthCheckObservations"],members:{HealthCheckObservations:{shape:"S41"}}}},GetHealthCheckStatus:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck/{HealthCheckId}/status"},input:{type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"}}},output:{type:"structure",required:["HealthCheckObservations"],members:{HealthCheckObservations:{shape:"S41"}}}},GetHostedZone:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["HostedZone"],members:{HostedZone:{shape:"S2g"},DelegationSet:{shape:"S2i"},VPCs:{type:"list",member:{shape:"S3",locationName:"VPC"}}}}},GetHostedZoneCount:{http:{method:"GET",requestUri:"/2013-04-01/hostedzonecount"},input:{type:"structure",members:{}},output:{type:"structure",required:["HostedZoneCount"],members:{HostedZoneCount:{type:"long"}}}},GetReusableDelegationSet:{http:{method:"GET",requestUri:"/2013-04-01/delegationset/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["DelegationSet"],members:{DelegationSet:{shape:"S2i"}}}},GetTrafficPolicy:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicy/{Id}/{Version}"},input:{type:"structure",required:["Id","Version"],members:{Id:{location:"uri",locationName:"Id"},Version:{location:"uri",locationName:"Version",type:"integer"}}},output:{type:"structure",required:["TrafficPolicy"],members:{TrafficPolicy:{shape:"S2r"}}}},GetTrafficPolicyInstance:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstance/{Id}"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"}}},output:{type:"structure",required:["TrafficPolicyInstance"],members:{TrafficPolicyInstance:{shape:"S2w"}}}},GetTrafficPolicyInstanceCount:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstancecount"},input:{type:"structure",members:{}},output:{type:"structure",required:["TrafficPolicyInstanceCount"],members:{TrafficPolicyInstanceCount:{type:"integer"}}}},ListChangeBatchesByHostedZone:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}/changes"},input:{type:"structure",required:["HostedZoneId","StartDate","EndDate"],members:{HostedZoneId:{location:"uri",locationName:"Id"},StartDate:{shape:"S4n",location:"querystring",locationName:"startDate"},EndDate:{shape:"S4n",location:"querystring",locationName:"endDate"},MaxItems:{location:"querystring",locationName:"maxItems"},Marker:{location:"querystring",locationName:"marker"}},deprecated:!0},output:{type:"structure",required:["MaxItems","Marker","ChangeBatchRecords"],members:{MaxItems:{},Marker:{},IsTruncated:{type:"boolean"},ChangeBatchRecords:{shape:"S4s"},NextMarker:{}},deprecated:!0},deprecated:!0},ListChangeBatchesByRRSet:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}/rrsChanges"},input:{type:"structure",required:["HostedZoneId","Name","Type","StartDate","EndDate"],members:{HostedZoneId:{location:"uri",locationName:"Id"},Name:{location:"querystring",locationName:"rrSet_name"},Type:{location:"querystring",locationName:"type"},SetIdentifier:{location:"querystring",locationName:"identifier"},StartDate:{shape:"S4n",location:"querystring",locationName:"startDate"},EndDate:{shape:"S4n",location:"querystring",locationName:"endDate"},MaxItems:{location:"querystring",locationName:"maxItems"},Marker:{location:"querystring",locationName:"marker"}},deprecated:!0},output:{type:"structure",required:["MaxItems","Marker","ChangeBatchRecords"],members:{MaxItems:{},Marker:{},IsTruncated:{type:"boolean"},ChangeBatchRecords:{shape:"S4s"},NextMarker:{}},deprecated:!0},deprecated:!0},ListGeoLocations:{http:{method:"GET",requestUri:"/2013-04-01/geolocations"},input:{type:"structure",members:{StartContinentCode:{location:"querystring",locationName:"startcontinentcode"},StartCountryCode:{location:"querystring",locationName:"startcountrycode"},StartSubdivisionCode:{location:"querystring",locationName:"startsubdivisioncode"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["GeoLocationDetailsList","IsTruncated","MaxItems"],members:{GeoLocationDetailsList:{type:"list",member:{shape:"S3q",locationName:"GeoLocationDetails"}},IsTruncated:{type:"boolean"},NextContinentCode:{},NextCountryCode:{},NextSubdivisionCode:{},MaxItems:{}}}},ListHealthChecks:{http:{method:"GET",requestUri:"/2013-04-01/healthcheck"},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"marker"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["HealthChecks","Marker","IsTruncated","MaxItems"],members:{HealthChecks:{type:"list",member:{shape:"S1x",locationName:"HealthCheck"}},Marker:{},IsTruncated:{type:"boolean"},NextMarker:{},MaxItems:{}}}},ListHostedZones:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone"},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"marker"},MaxItems:{location:"querystring",locationName:"maxitems"},DelegationSetId:{location:"querystring",locationName:"delegationsetid"}}},output:{type:"structure",required:["HostedZones","Marker","IsTruncated","MaxItems"],members:{HostedZones:{shape:"S53"},Marker:{},IsTruncated:{type:"boolean"},NextMarker:{},MaxItems:{}}}},ListHostedZonesByName:{http:{method:"GET",requestUri:"/2013-04-01/hostedzonesbyname"},input:{type:"structure",members:{DNSName:{location:"querystring",locationName:"dnsname"},HostedZoneId:{location:"querystring",locationName:"hostedzoneid"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["HostedZones","IsTruncated","MaxItems"],members:{HostedZones:{shape:"S53"},DNSName:{},HostedZoneId:{},IsTruncated:{type:"boolean"},NextDNSName:{},NextHostedZoneId:{},MaxItems:{}}}},ListResourceRecordSets:{http:{method:"GET",requestUri:"/2013-04-01/hostedzone/{Id}/rrset"},input:{type:"structure",required:["HostedZoneId"],members:{HostedZoneId:{location:"uri",locationName:"Id"},StartRecordName:{location:"querystring",locationName:"name"},StartRecordType:{location:"querystring",locationName:"type"},StartRecordIdentifier:{location:"querystring",locationName:"identifier"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["ResourceRecordSets","IsTruncated","MaxItems"],members:{ResourceRecordSets:{type:"list",member:{shape:"Sh",locationName:"ResourceRecordSet"}},IsTruncated:{type:"boolean"},NextRecordName:{},NextRecordType:{},NextRecordIdentifier:{},MaxItems:{}}}},ListReusableDelegationSets:{http:{method:"GET",requestUri:"/2013-04-01/delegationset"},input:{type:"structure",members:{Marker:{location:"querystring",locationName:"marker"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["DelegationSets","Marker","IsTruncated","MaxItems"],members:{DelegationSets:{type:"list",member:{shape:"S2i",locationName:"DelegationSet"}},Marker:{},IsTruncated:{type:"boolean"},NextMarker:{},MaxItems:{}}}},ListTagsForResource:{http:{method:"GET",requestUri:"/2013-04-01/tags/{ResourceType}/{ResourceId}"},input:{type:"structure",required:["ResourceType","ResourceId"],members:{ResourceType:{location:"uri",locationName:"ResourceType"},ResourceId:{location:"uri",locationName:"ResourceId"}}},output:{type:"structure",required:["ResourceTagSet"],members:{ResourceTagSet:{shape:"S5e"}}}},ListTagsForResources:{http:{requestUri:"/2013-04-01/tags/{ResourceType}"},input:{locationName:"ListTagsForResourcesRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["ResourceType","ResourceIds"],members:{ResourceType:{location:"uri",locationName:"ResourceType"},ResourceIds:{type:"list",member:{locationName:"ResourceId"}}}},output:{type:"structure",required:["ResourceTagSets"],members:{ResourceTagSets:{type:"list",member:{shape:"S5e",locationName:"ResourceTagSet"}}}}},ListTrafficPolicies:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicies"},input:{type:"structure",members:{TrafficPolicyIdMarker:{location:"querystring",locationName:"trafficpolicyid"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicySummaries","IsTruncated","TrafficPolicyIdMarker","MaxItems"],members:{TrafficPolicySummaries:{type:"list",member:{locationName:"TrafficPolicySummary",type:"structure",required:["Id","Name","Type","LatestVersion","TrafficPolicyCount"],members:{Id:{},Name:{},Type:{},LatestVersion:{type:"integer"},TrafficPolicyCount:{type:"integer"}}}},IsTruncated:{type:"boolean"},TrafficPolicyIdMarker:{},MaxItems:{}}}},ListTrafficPolicyInstances:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstances"},input:{type:"structure",members:{HostedZoneIdMarker:{location:"querystring",locationName:"hostedzoneid"},TrafficPolicyInstanceNameMarker:{location:"querystring",locationName:"trafficpolicyinstancename"},TrafficPolicyInstanceTypeMarker:{location:"querystring",locationName:"trafficpolicyinstancetype"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicyInstances","IsTruncated","MaxItems"],members:{TrafficPolicyInstances:{shape:"S5p"},HostedZoneIdMarker:{},TrafficPolicyInstanceNameMarker:{},TrafficPolicyInstanceTypeMarker:{},IsTruncated:{type:"boolean"},MaxItems:{}}}},ListTrafficPolicyInstancesByHostedZone:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstances/hostedzone"},input:{type:"structure",required:["HostedZoneId"],members:{HostedZoneId:{location:"querystring",locationName:"id"},TrafficPolicyInstanceNameMarker:{location:"querystring",locationName:"trafficpolicyinstancename"},TrafficPolicyInstanceTypeMarker:{location:"querystring",locationName:"trafficpolicyinstancetype"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicyInstances","IsTruncated","MaxItems"],members:{TrafficPolicyInstances:{ -shape:"S5p"},TrafficPolicyInstanceNameMarker:{},TrafficPolicyInstanceTypeMarker:{},IsTruncated:{type:"boolean"},MaxItems:{}}}},ListTrafficPolicyInstancesByPolicy:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicyinstances/trafficpolicy"},input:{type:"structure",required:["TrafficPolicyId","TrafficPolicyVersion"],members:{TrafficPolicyId:{location:"querystring",locationName:"id"},TrafficPolicyVersion:{location:"querystring",locationName:"version",type:"integer"},HostedZoneIdMarker:{location:"querystring",locationName:"hostedzoneid"},TrafficPolicyInstanceNameMarker:{location:"querystring",locationName:"trafficpolicyinstancename"},TrafficPolicyInstanceTypeMarker:{location:"querystring",locationName:"trafficpolicyinstancetype"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicyInstances","IsTruncated","MaxItems"],members:{TrafficPolicyInstances:{shape:"S5p"},HostedZoneIdMarker:{},TrafficPolicyInstanceNameMarker:{},TrafficPolicyInstanceTypeMarker:{},IsTruncated:{type:"boolean"},MaxItems:{}}}},ListTrafficPolicyVersions:{http:{method:"GET",requestUri:"/2013-04-01/trafficpolicies/{Id}/versions"},input:{type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"},TrafficPolicyVersionMarker:{location:"querystring",locationName:"trafficpolicyversion"},MaxItems:{location:"querystring",locationName:"maxitems"}}},output:{type:"structure",required:["TrafficPolicies","IsTruncated","TrafficPolicyVersionMarker","MaxItems"],members:{TrafficPolicies:{type:"list",member:{shape:"S2r",locationName:"TrafficPolicy"}},IsTruncated:{type:"boolean"},TrafficPolicyVersionMarker:{},MaxItems:{}}}},TestDNSAnswer:{http:{method:"GET",requestUri:"/2013-04-01/testdnsanswer"},input:{type:"structure",required:["HostedZoneId","RecordName","RecordType"],members:{HostedZoneId:{location:"querystring",locationName:"hostedzoneid"},RecordName:{location:"querystring",locationName:"recordname"},RecordType:{location:"querystring",locationName:"recordtype"},ResolverIP:{location:"querystring",locationName:"resolverip"},EDNS0ClientSubnetIP:{location:"querystring",locationName:"edns0clientsubnetip"},EDNS0ClientSubnetMask:{location:"querystring",locationName:"edns0clientsubnetmask"}}},output:{type:"structure",required:["Nameserver","RecordName","RecordType","RecordData","ResponseCode","Protocol"],members:{Nameserver:{},RecordName:{},RecordType:{},RecordData:{type:"list",member:{locationName:"RecordDataEntry"}},ResponseCode:{},Protocol:{}}}},UpdateHealthCheck:{http:{requestUri:"/2013-04-01/healthcheck/{HealthCheckId}"},input:{locationName:"UpdateHealthCheckRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["HealthCheckId"],members:{HealthCheckId:{location:"uri",locationName:"HealthCheckId"},HealthCheckVersion:{type:"long"},IPAddress:{},Port:{type:"integer"},ResourcePath:{},FullyQualifiedDomainName:{},SearchString:{},FailureThreshold:{type:"integer"},Inverted:{type:"boolean"},HealthThreshold:{type:"integer"},ChildHealthChecks:{shape:"S1o"},EnableSNI:{type:"boolean"},Regions:{shape:"S1q"},AlarmIdentifier:{shape:"S1s"},InsufficientDataHealthStatus:{}}},output:{type:"structure",required:["HealthCheck"],members:{HealthCheck:{shape:"S1x"}}}},UpdateHostedZoneComment:{http:{requestUri:"/2013-04-01/hostedzone/{Id}"},input:{locationName:"UpdateHostedZoneCommentRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id"],members:{Id:{location:"uri",locationName:"Id"},Comment:{}}},output:{type:"structure",required:["HostedZone"],members:{HostedZone:{shape:"S2g"}}}},UpdateTrafficPolicyComment:{http:{requestUri:"/2013-04-01/trafficpolicy/{Id}/{Version}"},input:{locationName:"UpdateTrafficPolicyCommentRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id","Version","Comment"],members:{Id:{location:"uri",locationName:"Id"},Version:{location:"uri",locationName:"Version",type:"integer"},Comment:{}}},output:{type:"structure",required:["TrafficPolicy"],members:{TrafficPolicy:{shape:"S2r"}}}},UpdateTrafficPolicyInstance:{http:{requestUri:"/2013-04-01/trafficpolicyinstance/{Id}"},input:{locationName:"UpdateTrafficPolicyInstanceRequest",xmlNamespace:{uri:"https://route53.amazonaws.com/doc/2013-04-01/"},type:"structure",required:["Id","TTL","TrafficPolicyId","TrafficPolicyVersion"],members:{Id:{location:"uri",locationName:"Id"},TTL:{type:"long"},TrafficPolicyId:{},TrafficPolicyVersion:{type:"integer"}}},output:{type:"structure",required:["TrafficPolicyInstance"],members:{TrafficPolicyInstance:{shape:"S2w"}}}}},shapes:{S3:{type:"structure",members:{VPCRegion:{},VPCId:{}}},S8:{type:"structure",required:["Id","Status","SubmittedAt"],members:{Id:{},Status:{},SubmittedAt:{type:"timestamp"},Comment:{}}},Se:{type:"list",member:{locationName:"Change",type:"structure",required:["Action","ResourceRecordSet"],members:{Action:{},ResourceRecordSet:{shape:"Sh"}}}},Sh:{type:"structure",required:["Name","Type"],members:{Name:{},Type:{},SetIdentifier:{},Weight:{type:"long"},Region:{},GeoLocation:{type:"structure",members:{ContinentCode:{},CountryCode:{},SubdivisionCode:{}}},Failover:{},TTL:{type:"long"},ResourceRecords:{type:"list",member:{locationName:"ResourceRecord",type:"structure",required:["Value"],members:{Value:{}}}},AliasTarget:{type:"structure",required:["HostedZoneId","DNSName","EvaluateTargetHealth"],members:{HostedZoneId:{},DNSName:{},EvaluateTargetHealth:{type:"boolean"}}},HealthCheckId:{},TrafficPolicyInstanceId:{}}},S14:{type:"list",member:{locationName:"Tag",type:"structure",members:{Key:{},Value:{}}}},S1c:{type:"structure",required:["Type"],members:{IPAddress:{},Port:{type:"integer"},Type:{},ResourcePath:{},FullyQualifiedDomainName:{},SearchString:{},RequestInterval:{type:"integer"},FailureThreshold:{type:"integer"},MeasureLatency:{type:"boolean"},Inverted:{type:"boolean"},HealthThreshold:{type:"integer"},ChildHealthChecks:{shape:"S1o"},EnableSNI:{type:"boolean"},Regions:{shape:"S1q"},AlarmIdentifier:{shape:"S1s"},InsufficientDataHealthStatus:{}}},S1o:{type:"list",member:{locationName:"ChildHealthCheck"}},S1q:{type:"list",member:{locationName:"Region"}},S1s:{type:"structure",required:["Region","Name"],members:{Region:{},Name:{}}},S1x:{type:"structure",required:["Id","CallerReference","HealthCheckConfig","HealthCheckVersion"],members:{Id:{},CallerReference:{},HealthCheckConfig:{shape:"S1c"},HealthCheckVersion:{type:"long"},CloudWatchAlarmConfiguration:{type:"structure",required:["EvaluationPeriods","Threshold","ComparisonOperator","Period","MetricName","Namespace","Statistic"],members:{EvaluationPeriods:{type:"integer"},Threshold:{type:"double"},ComparisonOperator:{},Period:{type:"integer"},MetricName:{},Namespace:{},Statistic:{},Dimensions:{type:"list",member:{locationName:"Dimension",type:"structure",required:["Name","Value"],members:{Name:{},Value:{}}}}}}}},S2d:{type:"structure",members:{Comment:{},PrivateZone:{type:"boolean"}}},S2g:{type:"structure",required:["Id","Name","CallerReference"],members:{Id:{},Name:{},CallerReference:{},Config:{shape:"S2d"},ResourceRecordSetCount:{type:"long"}}},S2i:{type:"structure",required:["NameServers"],members:{Id:{},CallerReference:{},NameServers:{type:"list",member:{locationName:"NameServer"}}}},S2r:{type:"structure",required:["Id","Version","Name","Type","Document"],members:{Id:{},Version:{type:"integer"},Name:{},Type:{},Document:{},Comment:{}}},S2w:{type:"structure",required:["Id","HostedZoneId","Name","TTL","State","Message","TrafficPolicyId","TrafficPolicyVersion","TrafficPolicyType"],members:{Id:{},HostedZoneId:{},Name:{},TTL:{type:"long"},State:{},Message:{},TrafficPolicyId:{},TrafficPolicyVersion:{type:"integer"},TrafficPolicyType:{}}},S3i:{type:"structure",required:["Id","Status"],members:{Id:{},SubmittedAt:{type:"timestamp"},Status:{},Comment:{},Submitter:{},Changes:{shape:"Se"}},deprecated:!0},S3q:{type:"structure",members:{ContinentCode:{},ContinentName:{},CountryCode:{},CountryName:{},SubdivisionCode:{},SubdivisionName:{}}},S41:{type:"list",member:{locationName:"HealthCheckObservation",type:"structure",members:{Region:{},IPAddress:{},StatusReport:{type:"structure",members:{Status:{},CheckedTime:{type:"timestamp"}}}}}},S4n:{type:"string",deprecated:!0},S4s:{type:"list",member:{shape:"S3i",locationName:"ChangeBatchRecord"},deprecated:!0},S53:{type:"list",member:{shape:"S2g",locationName:"HostedZone"}},S5e:{type:"structure",members:{ResourceType:{},ResourceId:{},Tags:{shape:"S14"}}},S5p:{type:"list",member:{shape:"S2w",locationName:"TrafficPolicyInstance"}}}}},{}],108:[function(e,t,r){t.exports={pagination:{ListHealthChecks:{input_token:"Marker",output_token:"NextMarker",more_results:"IsTruncated",limit_key:"MaxItems",result_key:"HealthChecks"},ListHostedZones:{input_token:"Marker",output_token:"NextMarker",more_results:"IsTruncated",limit_key:"MaxItems",result_key:"HostedZones"},ListResourceRecordSets:{more_results:"IsTruncated",limit_key:"MaxItems",result_key:"ResourceRecordSets",input_token:["StartRecordName","StartRecordType","StartRecordIdentifier"],output_token:["NextRecordName","NextRecordType","NextRecordIdentifier"]}}}},{}],109:[function(e,t,r){t.exports={version:2,waiters:{ResourceRecordSetsChanged:{delay:30,maxAttempts:60,operation:"GetChange",acceptors:[{matcher:"path",expected:"INSYNC",argument:"ChangeInfo.Status",state:"success"}]}}}},{}],110:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-05-15",endpointPrefix:"route53domains",jsonVersion:"1.1",protocol:"json",serviceFullName:"Amazon Route 53 Domains",signatureVersion:"v4",targetPrefix:"Route53Domains_v20140515"},operations:{CheckDomainAvailability:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},IdnLangCode:{}}},output:{type:"structure",required:["Availability"],members:{Availability:{}}}},DeleteTagsForDomain:{input:{type:"structure",required:["DomainName","TagsToDelete"],members:{DomainName:{},TagsToDelete:{type:"list",member:{}}}},output:{type:"structure",members:{}}},DisableDomainAutoRenew:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",members:{}}},DisableDomainTransferLock:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},EnableDomainAutoRenew:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",members:{}}},EnableDomainTransferLock:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},GetContactReachabilityStatus:{input:{type:"structure",members:{domainName:{}}},output:{type:"structure",members:{domainName:{},status:{}}}},GetDomainDetail:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["DomainName","Nameservers","AdminContact","RegistrantContact","TechContact"],members:{DomainName:{},Nameservers:{shape:"So"},AutoRenew:{type:"boolean"},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"},AdminPrivacy:{type:"boolean"},RegistrantPrivacy:{type:"boolean"},TechPrivacy:{type:"boolean"},RegistrarName:{},WhoIsServer:{},RegistrarUrl:{},AbuseContactEmail:{},AbuseContactPhone:{},RegistryDomainId:{},CreationDate:{type:"timestamp"},UpdatedDate:{type:"timestamp"},ExpirationDate:{type:"timestamp"},Reseller:{},DnsSec:{},StatusList:{type:"list",member:{}}}}},GetDomainSuggestions:{input:{type:"structure",required:["DomainName","SuggestionCount","OnlyAvailable"],members:{DomainName:{},SuggestionCount:{type:"integer"},OnlyAvailable:{type:"boolean"}}},output:{type:"structure",members:{SuggestionsList:{type:"list",member:{type:"structure",members:{DomainName:{},Availability:{}}}}}}},GetOperationDetail:{input:{type:"structure",required:["OperationId"],members:{OperationId:{}}},output:{type:"structure",members:{OperationId:{},Status:{},Message:{},DomainName:{},Type:{},SubmittedDate:{type:"timestamp"}}}},ListDomains:{input:{type:"structure",members:{Marker:{},MaxItems:{type:"integer"}}},output:{type:"structure",required:["Domains"],members:{Domains:{type:"list",member:{type:"structure",required:["DomainName"],members:{DomainName:{},AutoRenew:{type:"boolean"},TransferLock:{type:"boolean"},Expiry:{type:"timestamp"}}}},NextPageMarker:{}}}},ListOperations:{input:{type:"structure",members:{Marker:{},MaxItems:{type:"integer"}}},output:{type:"structure",required:["Operations"],members:{Operations:{type:"list",member:{type:"structure",required:["OperationId","Status","Type","SubmittedDate"],members:{OperationId:{},Status:{},Type:{},SubmittedDate:{type:"timestamp"}}}},NextPageMarker:{}}}},ListTagsForDomain:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["TagList"],members:{TagList:{shape:"S24"}}}},RegisterDomain:{input:{type:"structure",required:["DomainName","DurationInYears","AdminContact","RegistrantContact","TechContact"],members:{DomainName:{},IdnLangCode:{},DurationInYears:{type:"integer"},AutoRenew:{type:"boolean"},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"},PrivacyProtectAdminContact:{type:"boolean"},PrivacyProtectRegistrantContact:{type:"boolean"},PrivacyProtectTechContact:{type:"boolean"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},RenewDomain:{input:{type:"structure",required:["DomainName","CurrentExpiryYear"],members:{DomainName:{},DurationInYears:{type:"integer"},CurrentExpiryYear:{type:"integer"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},ResendContactReachabilityEmail:{input:{type:"structure",members:{domainName:{}}},output:{type:"structure",members:{domainName:{},emailAddress:{},isAlreadyVerified:{type:"boolean"}}}},RetrieveDomainAuthCode:{input:{type:"structure",required:["DomainName"],members:{DomainName:{}}},output:{type:"structure",required:["AuthCode"],members:{AuthCode:{shape:"S2h"}}}},TransferDomain:{input:{type:"structure",required:["DomainName","DurationInYears","AdminContact","RegistrantContact","TechContact"],members:{DomainName:{},IdnLangCode:{},DurationInYears:{type:"integer"},Nameservers:{shape:"So"},AuthCode:{shape:"S2h"},AutoRenew:{type:"boolean"},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"},PrivacyProtectAdminContact:{type:"boolean"},PrivacyProtectRegistrantContact:{type:"boolean"},PrivacyProtectTechContact:{type:"boolean"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateDomainContact:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},AdminContact:{shape:"Su"},RegistrantContact:{shape:"Su"},TechContact:{shape:"Su"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateDomainContactPrivacy:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},AdminPrivacy:{type:"boolean"},RegistrantPrivacy:{type:"boolean"},TechPrivacy:{type:"boolean"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateDomainNameservers:{input:{type:"structure",required:["DomainName","Nameservers"],members:{DomainName:{},FIAuthKey:{},Nameservers:{shape:"So"}}},output:{type:"structure",required:["OperationId"],members:{OperationId:{}}}},UpdateTagsForDomain:{input:{type:"structure",required:["DomainName"],members:{DomainName:{},TagsToUpdate:{shape:"S24"}}},output:{type:"structure",members:{}}},ViewBilling:{input:{type:"structure",members:{Start:{type:"timestamp"},End:{type:"timestamp"},Marker:{},MaxItems:{type:"integer"}}},output:{type:"structure",members:{NextPageMarker:{},BillingRecords:{type:"list",member:{type:"structure",members:{DomainName:{},Operation:{},InvoiceId:{},BillDate:{type:"timestamp"},Price:{type:"double"}}}}}}}},shapes:{So:{type:"list",member:{type:"structure",required:["Name"],members:{Name:{},GlueIps:{type:"list",member:{}}}}},Su:{type:"structure",members:{FirstName:{},LastName:{},ContactType:{},OrganizationName:{},AddressLine1:{},AddressLine2:{},City:{},State:{},CountryCode:{},ZipCode:{},PhoneNumber:{},Email:{},Fax:{},ExtraParams:{type:"list",member:{type:"structure",required:["Name","Value"],members:{Name:{},Value:{}}}}},sensitive:!0},S24:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S2h:{type:"string",sensitive:!0}}}},{}],111:[function(e,t,r){t.exports={version:"1.0",pagination:{ListDomains:{limit_key:"MaxItems",input_token:"Marker",output_token:"NextPageMarker",result_key:"Domains"},ListOperations:{limit_key:"MaxItems",input_token:"Marker",output_token:"NextPageMarker",result_key:"Operations"}}}},{}],112:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2006-03-01",checksumFormat:"md5",endpointPrefix:"s3",globalEndpoint:"s3.amazonaws.com",protocol:"rest-xml",serviceAbbreviation:"Amazon S3",serviceFullName:"Amazon Simple Storage Service",signatureVersion:"s3",timestampFormat:"rfc822"},operations:{AbortMultipartUpload:{http:{method:"DELETE",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},UploadId:{location:"querystring",locationName:"uploadId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},CompleteMultipartUpload:{http:{requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},MultipartUpload:{locationName:"CompleteMultipartUpload",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{Parts:{locationName:"Part",type:"list",member:{type:"structure",members:{ETag:{},PartNumber:{type:"integer"}}},flattened:!0}}},UploadId:{location:"querystring",locationName:"uploadId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"MultipartUpload"},output:{type:"structure",members:{Location:{},Bucket:{},Key:{},Expiration:{location:"header",locationName:"x-amz-expiration"},ETag:{},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},VersionId:{location:"header",locationName:"x-amz-version-id"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},CopyObject:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","CopySource","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Bucket:{location:"uri",locationName:"Bucket"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentType:{location:"header",locationName:"Content-Type"},CopySource:{location:"header",locationName:"x-amz-copy-source"},CopySourceIfMatch:{location:"header",locationName:"x-amz-copy-source-if-match"},CopySourceIfModifiedSince:{location:"header",locationName:"x-amz-copy-source-if-modified-since",type:"timestamp"},CopySourceIfNoneMatch:{location:"header",locationName:"x-amz-copy-source-if-none-match"},CopySourceIfUnmodifiedSince:{location:"header",locationName:"x-amz-copy-source-if-unmodified-since",type:"timestamp"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},MetadataDirective:{location:"header",locationName:"x-amz-metadata-directive"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},CopySourceSSECustomerAlgorithm:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm"},CopySourceSSECustomerKey:{shape:"S1b",location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key"},CopySourceSSECustomerKeyMD5:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{CopyObjectResult:{type:"structure",members:{ETag:{},LastModified:{type:"timestamp"}}},Expiration:{location:"header",locationName:"x-amz-expiration"},CopySourceVersionId:{location:"header",locationName:"x-amz-copy-source-version-id"},VersionId:{location:"header",locationName:"x-amz-version-id"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}},payload:"CopyObjectResult"},alias:"PutObjectCopy"},CreateBucket:{http:{method:"PUT",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Bucket:{location:"uri",locationName:"Bucket"},CreateBucketConfiguration:{locationName:"CreateBucketConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{LocationConstraint:{}}},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWrite:{location:"header",locationName:"x-amz-grant-write"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"}},payload:"CreateBucketConfiguration"},output:{type:"structure",members:{Location:{location:"header",locationName:"Location"}}},alias:"PutBucket"},CreateMultipartUpload:{http:{requestUri:"/{Bucket}/{Key+}?uploads"},input:{type:"structure",required:["Bucket","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Bucket:{location:"uri",locationName:"Bucket"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{AbortDate:{location:"header",locationName:"x-amz-abort-date",type:"timestamp"},AbortRuleId:{location:"header",locationName:"x-amz-abort-rule-id"},Bucket:{locationName:"Bucket"},Key:{},UploadId:{},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}},alias:"InitiateMultipartUpload"},DeleteBucket:{http:{method:"DELETE",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketCors:{http:{method:"DELETE",requestUri:"/{Bucket}?cors"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketLifecycle:{http:{method:"DELETE",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketPolicy:{http:{method:"DELETE",requestUri:"/{Bucket}?policy"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketReplication:{http:{method:"DELETE",requestUri:"/{Bucket}?replication"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketTagging:{http:{method:"DELETE",requestUri:"/{Bucket}?tagging"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteBucketWebsite:{http:{method:"DELETE",requestUri:"/{Bucket}?website"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},DeleteObject:{http:{method:"DELETE",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},MFA:{location:"header",locationName:"x-amz-mfa"},VersionId:{location:"querystring",locationName:"versionId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{DeleteMarker:{location:"header",locationName:"x-amz-delete-marker",type:"boolean"},VersionId:{location:"header",locationName:"x-amz-version-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},DeleteObjects:{http:{requestUri:"/{Bucket}?delete"},input:{type:"structure",required:["Bucket","Delete"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delete:{locationName:"Delete",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Objects"],members:{Objects:{locationName:"Object",type:"list",member:{type:"structure",required:["Key"],members:{Key:{},VersionId:{}}},flattened:!0},Quiet:{type:"boolean"}}},MFA:{location:"header",locationName:"x-amz-mfa"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"Delete"},output:{type:"structure",members:{Deleted:{type:"list",member:{type:"structure",members:{Key:{},VersionId:{},DeleteMarker:{type:"boolean"},DeleteMarkerVersionId:{}}},flattened:!0},RequestCharged:{location:"header",locationName:"x-amz-request-charged"},Errors:{locationName:"Error",type:"list",member:{type:"structure",members:{Key:{},VersionId:{},Code:{},Message:{}}},flattened:!0}}},alias:"DeleteMultipleObjects"},GetBucketAccelerateConfiguration:{http:{method:"GET",requestUri:"/{Bucket}?accelerate"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Status:{}}}},GetBucketAcl:{http:{method:"GET",requestUri:"/{Bucket}?acl"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Owner:{shape:"S2k"},Grants:{shape:"S2n",locationName:"AccessControlList"}}}},GetBucketCors:{http:{method:"GET",requestUri:"/{Bucket}?cors"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{CORSRules:{shape:"S2w",locationName:"CORSRule"}}}},GetBucketLifecycle:{http:{method:"GET",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Rules:{shape:"S39",locationName:"Rule"}}},deprecated:!0},GetBucketLifecycleConfiguration:{http:{method:"GET",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Rules:{shape:"S3p",locationName:"Rule"}}}},GetBucketLocation:{http:{method:"GET",requestUri:"/{Bucket}?location"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{LocationConstraint:{}}}},GetBucketLogging:{http:{method:"GET",requestUri:"/{Bucket}?logging"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{LoggingEnabled:{shape:"S3x"}}}},GetBucketNotification:{http:{method:"GET",requestUri:"/{Bucket}?notification"},input:{shape:"S43"},output:{shape:"S44"},deprecated:!0},GetBucketNotificationConfiguration:{http:{method:"GET",requestUri:"/{Bucket}?notification"},input:{shape:"S43"},output:{shape:"S4f"}},GetBucketPolicy:{http:{method:"GET",requestUri:"/{Bucket}?policy"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Policy:{}},payload:"Policy"}},GetBucketReplication:{http:{method:"GET",requestUri:"/{Bucket}?replication"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{ReplicationConfiguration:{shape:"S4y"}},payload:"ReplicationConfiguration"}},GetBucketRequestPayment:{http:{method:"GET",requestUri:"/{Bucket}?requestPayment"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Payer:{}}}},GetBucketTagging:{http:{method:"GET",requestUri:"/{Bucket}?tagging"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",required:["TagSet"],members:{TagSet:{shape:"S59"}}}},GetBucketVersioning:{http:{method:"GET",requestUri:"/{Bucket}?versioning"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{Status:{},MFADelete:{locationName:"MfaDelete"}}}},GetBucketWebsite:{http:{method:"GET",requestUri:"/{Bucket}?website"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},output:{type:"structure",members:{RedirectAllRequestsTo:{shape:"S5i"},IndexDocument:{shape:"S5l"},ErrorDocument:{shape:"S5n"},RoutingRules:{shape:"S5o"}}}},GetObject:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}" -},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},IfMatch:{location:"header",locationName:"If-Match"},IfModifiedSince:{location:"header",locationName:"If-Modified-Since",type:"timestamp"},IfNoneMatch:{location:"header",locationName:"If-None-Match"},IfUnmodifiedSince:{location:"header",locationName:"If-Unmodified-Since",type:"timestamp"},Key:{location:"uri",locationName:"Key"},Range:{location:"header",locationName:"Range"},ResponseCacheControl:{location:"querystring",locationName:"response-cache-control"},ResponseContentDisposition:{location:"querystring",locationName:"response-content-disposition"},ResponseContentEncoding:{location:"querystring",locationName:"response-content-encoding"},ResponseContentLanguage:{location:"querystring",locationName:"response-content-language"},ResponseContentType:{location:"querystring",locationName:"response-content-type"},ResponseExpires:{location:"querystring",locationName:"response-expires",type:"timestamp"},VersionId:{location:"querystring",locationName:"versionId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"}}},output:{type:"structure",members:{Body:{streaming:!0,type:"blob"},DeleteMarker:{location:"header",locationName:"x-amz-delete-marker",type:"boolean"},AcceptRanges:{location:"header",locationName:"accept-ranges"},Expiration:{location:"header",locationName:"x-amz-expiration"},Restore:{location:"header",locationName:"x-amz-restore"},LastModified:{location:"header",locationName:"Last-Modified",type:"timestamp"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ETag:{location:"header",locationName:"ETag"},MissingMeta:{location:"header",locationName:"x-amz-missing-meta",type:"integer"},VersionId:{location:"header",locationName:"x-amz-version-id"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentRange:{location:"header",locationName:"Content-Range"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"},ReplicationStatus:{location:"header",locationName:"x-amz-replication-status"},PartsCount:{location:"header",locationName:"x-amz-mp-parts-count",type:"integer"}},payload:"Body"}},GetObjectAcl:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}?acl"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},VersionId:{location:"querystring",locationName:"versionId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{Owner:{shape:"S2k"},Grants:{shape:"S2n",locationName:"AccessControlList"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},GetObjectTorrent:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}?torrent"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{Body:{streaming:!0,type:"blob"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}},payload:"Body"}},HeadBucket:{http:{method:"HEAD",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}}},HeadObject:{http:{method:"HEAD",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},IfMatch:{location:"header",locationName:"If-Match"},IfModifiedSince:{location:"header",locationName:"If-Modified-Since",type:"timestamp"},IfNoneMatch:{location:"header",locationName:"If-None-Match"},IfUnmodifiedSince:{location:"header",locationName:"If-Unmodified-Since",type:"timestamp"},Key:{location:"uri",locationName:"Key"},Range:{location:"header",locationName:"Range"},VersionId:{location:"querystring",locationName:"versionId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"}}},output:{type:"structure",members:{DeleteMarker:{location:"header",locationName:"x-amz-delete-marker",type:"boolean"},AcceptRanges:{location:"header",locationName:"accept-ranges"},Expiration:{location:"header",locationName:"x-amz-expiration"},Restore:{location:"header",locationName:"x-amz-restore"},LastModified:{location:"header",locationName:"Last-Modified",type:"timestamp"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ETag:{location:"header",locationName:"ETag"},MissingMeta:{location:"header",locationName:"x-amz-missing-meta",type:"integer"},VersionId:{location:"header",locationName:"x-amz-version-id"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"},ReplicationStatus:{location:"header",locationName:"x-amz-replication-status"},PartsCount:{location:"header",locationName:"x-amz-mp-parts-count",type:"integer"}}}},ListBuckets:{http:{method:"GET"},output:{type:"structure",members:{Buckets:{type:"list",member:{locationName:"Bucket",type:"structure",members:{Name:{},CreationDate:{type:"timestamp"}}}},Owner:{shape:"S2k"}}},alias:"GetService"},ListMultipartUploads:{http:{method:"GET",requestUri:"/{Bucket}?uploads"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},KeyMarker:{location:"querystring",locationName:"key-marker"},MaxUploads:{location:"querystring",locationName:"max-uploads",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},UploadIdMarker:{location:"querystring",locationName:"upload-id-marker"}}},output:{type:"structure",members:{Bucket:{},KeyMarker:{},UploadIdMarker:{},NextKeyMarker:{},Prefix:{},Delimiter:{},NextUploadIdMarker:{},MaxUploads:{type:"integer"},IsTruncated:{type:"boolean"},Uploads:{locationName:"Upload",type:"list",member:{type:"structure",members:{UploadId:{},Key:{},Initiated:{type:"timestamp"},StorageClass:{},Owner:{shape:"S2k"},Initiator:{shape:"S76"}}},flattened:!0},CommonPrefixes:{shape:"S77"},EncodingType:{}}}},ListObjectVersions:{http:{method:"GET",requestUri:"/{Bucket}?versions"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},KeyMarker:{location:"querystring",locationName:"key-marker"},MaxKeys:{location:"querystring",locationName:"max-keys",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},VersionIdMarker:{location:"querystring",locationName:"version-id-marker"}}},output:{type:"structure",members:{IsTruncated:{type:"boolean"},KeyMarker:{},VersionIdMarker:{},NextKeyMarker:{},NextVersionIdMarker:{},Versions:{locationName:"Version",type:"list",member:{type:"structure",members:{ETag:{},Size:{type:"integer"},StorageClass:{},Key:{},VersionId:{},IsLatest:{type:"boolean"},LastModified:{type:"timestamp"},Owner:{shape:"S2k"}}},flattened:!0},DeleteMarkers:{locationName:"DeleteMarker",type:"list",member:{type:"structure",members:{Owner:{shape:"S2k"},Key:{},VersionId:{},IsLatest:{type:"boolean"},LastModified:{type:"timestamp"}}},flattened:!0},Name:{},Prefix:{},Delimiter:{},MaxKeys:{type:"integer"},CommonPrefixes:{shape:"S77"},EncodingType:{}}},alias:"GetBucketObjectVersions"},ListObjects:{http:{method:"GET",requestUri:"/{Bucket}"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},Marker:{location:"querystring",locationName:"marker"},MaxKeys:{location:"querystring",locationName:"max-keys",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{IsTruncated:{type:"boolean"},Marker:{},NextMarker:{},Contents:{shape:"S7p"},Name:{},Prefix:{},Delimiter:{},MaxKeys:{type:"integer"},CommonPrefixes:{shape:"S77"},EncodingType:{}}},alias:"GetBucket"},ListObjectsV2:{http:{method:"GET",requestUri:"/{Bucket}?list-type=2"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},Delimiter:{location:"querystring",locationName:"delimiter"},EncodingType:{location:"querystring",locationName:"encoding-type"},MaxKeys:{location:"querystring",locationName:"max-keys",type:"integer"},Prefix:{location:"querystring",locationName:"prefix"},ContinuationToken:{location:"querystring",locationName:"continuation-token"},FetchOwner:{location:"querystring",locationName:"fetch-owner",type:"boolean"},StartAfter:{location:"querystring",locationName:"start-after"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{IsTruncated:{type:"boolean"},Contents:{shape:"S7p"},Name:{},Prefix:{},Delimiter:{},MaxKeys:{type:"integer"},CommonPrefixes:{shape:"S77"},EncodingType:{},KeyCount:{type:"integer"},ContinuationToken:{},NextContinuationToken:{},StartAfter:{}}}},ListParts:{http:{method:"GET",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},MaxParts:{location:"querystring",locationName:"max-parts",type:"integer"},PartNumberMarker:{location:"querystring",locationName:"part-number-marker",type:"integer"},UploadId:{location:"querystring",locationName:"uploadId"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{AbortDate:{location:"header",locationName:"x-amz-abort-date",type:"timestamp"},AbortRuleId:{location:"header",locationName:"x-amz-abort-rule-id"},Bucket:{},Key:{},UploadId:{},PartNumberMarker:{type:"integer"},NextPartNumberMarker:{type:"integer"},MaxParts:{type:"integer"},IsTruncated:{type:"boolean"},Parts:{locationName:"Part",type:"list",member:{type:"structure",members:{PartNumber:{type:"integer"},LastModified:{type:"timestamp"},ETag:{},Size:{type:"integer"}}},flattened:!0},Initiator:{shape:"S76"},Owner:{shape:"S2k"},StorageClass:{},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},PutBucketAccelerateConfiguration:{http:{method:"PUT",requestUri:"/{Bucket}?accelerate"},input:{type:"structure",required:["Bucket","AccelerateConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},AccelerateConfiguration:{locationName:"AccelerateConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{Status:{}}}},payload:"AccelerateConfiguration"}},PutBucketAcl:{http:{method:"PUT",requestUri:"/{Bucket}?acl"},input:{type:"structure",required:["Bucket"],members:{ACL:{location:"header",locationName:"x-amz-acl"},AccessControlPolicy:{shape:"S89",locationName:"AccessControlPolicy",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}},Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWrite:{location:"header",locationName:"x-amz-grant-write"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"}},payload:"AccessControlPolicy"}},PutBucketCors:{http:{method:"PUT",requestUri:"/{Bucket}?cors"},input:{type:"structure",required:["Bucket","CORSConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},CORSConfiguration:{locationName:"CORSConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["CORSRules"],members:{CORSRules:{shape:"S2w",locationName:"CORSRule"}}},ContentMD5:{location:"header",locationName:"Content-MD5"}},payload:"CORSConfiguration"}},PutBucketLifecycle:{http:{method:"PUT",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},LifecycleConfiguration:{locationName:"LifecycleConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Rules"],members:{Rules:{shape:"S39",locationName:"Rule"}}}},payload:"LifecycleConfiguration"},deprecated:!0},PutBucketLifecycleConfiguration:{http:{method:"PUT",requestUri:"/{Bucket}?lifecycle"},input:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"},LifecycleConfiguration:{locationName:"LifecycleConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Rules"],members:{Rules:{shape:"S3p",locationName:"Rule"}}}},payload:"LifecycleConfiguration"}},PutBucketLogging:{http:{method:"PUT",requestUri:"/{Bucket}?logging"},input:{type:"structure",required:["Bucket","BucketLoggingStatus"],members:{Bucket:{location:"uri",locationName:"Bucket"},BucketLoggingStatus:{locationName:"BucketLoggingStatus",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{LoggingEnabled:{shape:"S3x"}}},ContentMD5:{location:"header",locationName:"Content-MD5"}},payload:"BucketLoggingStatus"}},PutBucketNotification:{http:{method:"PUT",requestUri:"/{Bucket}?notification"},input:{type:"structure",required:["Bucket","NotificationConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},NotificationConfiguration:{shape:"S44",locationName:"NotificationConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}}},payload:"NotificationConfiguration"},deprecated:!0},PutBucketNotificationConfiguration:{http:{method:"PUT",requestUri:"/{Bucket}?notification"},input:{type:"structure",required:["Bucket","NotificationConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},NotificationConfiguration:{shape:"S4f",locationName:"NotificationConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}}},payload:"NotificationConfiguration"}},PutBucketPolicy:{http:{method:"PUT",requestUri:"/{Bucket}?policy"},input:{type:"structure",required:["Bucket","Policy"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},Policy:{}},payload:"Policy"}},PutBucketReplication:{http:{method:"PUT",requestUri:"/{Bucket}?replication"},input:{type:"structure",required:["Bucket","ReplicationConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},ReplicationConfiguration:{shape:"S4y",locationName:"ReplicationConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}}},payload:"ReplicationConfiguration"}},PutBucketRequestPayment:{http:{method:"PUT",requestUri:"/{Bucket}?requestPayment"},input:{type:"structure",required:["Bucket","RequestPaymentConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},RequestPaymentConfiguration:{locationName:"RequestPaymentConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Payer"],members:{Payer:{}}}},payload:"RequestPaymentConfiguration"}},PutBucketTagging:{http:{method:"PUT",requestUri:"/{Bucket}?tagging"},input:{type:"structure",required:["Bucket","Tagging"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},Tagging:{locationName:"Tagging",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["TagSet"],members:{TagSet:{shape:"S59"}}}},payload:"Tagging"}},PutBucketVersioning:{http:{method:"PUT",requestUri:"/{Bucket}?versioning"},input:{type:"structure",required:["Bucket","VersioningConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},MFA:{location:"header",locationName:"x-amz-mfa"},VersioningConfiguration:{locationName:"VersioningConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{MFADelete:{locationName:"MfaDelete"},Status:{}}}},payload:"VersioningConfiguration"}},PutBucketWebsite:{http:{method:"PUT",requestUri:"/{Bucket}?website"},input:{type:"structure",required:["Bucket","WebsiteConfiguration"],members:{Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},WebsiteConfiguration:{locationName:"WebsiteConfiguration",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",members:{ErrorDocument:{shape:"S5n"},IndexDocument:{shape:"S5l"},RedirectAllRequestsTo:{shape:"S5i"},RoutingRules:{shape:"S5o"}}}},payload:"WebsiteConfiguration"}},PutObject:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},Body:{streaming:!0,type:"blob"},Bucket:{location:"uri",locationName:"Bucket"},CacheControl:{location:"header",locationName:"Cache-Control"},ContentDisposition:{location:"header",locationName:"Content-Disposition"},ContentEncoding:{location:"header",locationName:"Content-Encoding"},ContentLanguage:{location:"header",locationName:"Content-Language"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ContentMD5:{location:"header",locationName:"Content-MD5"},ContentType:{location:"header",locationName:"Content-Type"},Expires:{location:"header",locationName:"Expires",type:"timestamp"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},Metadata:{shape:"S11",location:"headers",locationName:"x-amz-meta-"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},StorageClass:{location:"header",locationName:"x-amz-storage-class"},WebsiteRedirectLocation:{location:"header",locationName:"x-amz-website-redirect-location"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"Body"},output:{type:"structure",members:{Expiration:{location:"header",locationName:"x-amz-expiration"},ETag:{location:"header",locationName:"ETag"},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},VersionId:{location:"header",locationName:"x-amz-version-id"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},PutObjectAcl:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}?acl"},input:{type:"structure",required:["Bucket","Key"],members:{ACL:{location:"header",locationName:"x-amz-acl"},AccessControlPolicy:{shape:"S89",locationName:"AccessControlPolicy",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"}},Bucket:{location:"uri",locationName:"Bucket"},ContentMD5:{location:"header",locationName:"Content-MD5"},GrantFullControl:{location:"header",locationName:"x-amz-grant-full-control"},GrantRead:{location:"header",locationName:"x-amz-grant-read"},GrantReadACP:{location:"header",locationName:"x-amz-grant-read-acp"},GrantWrite:{location:"header",locationName:"x-amz-grant-write"},GrantWriteACP:{location:"header",locationName:"x-amz-grant-write-acp"},Key:{location:"uri",locationName:"Key"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"},VersionId:{location:"querystring",locationName:"versionId"}},payload:"AccessControlPolicy"},output:{type:"structure",members:{RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},RestoreObject:{http:{requestUri:"/{Bucket}/{Key+}?restore"},input:{type:"structure",required:["Bucket","Key"],members:{Bucket:{location:"uri",locationName:"Bucket"},Key:{location:"uri",locationName:"Key"},VersionId:{location:"querystring",locationName:"versionId"},RestoreRequest:{locationName:"RestoreRequest",xmlNamespace:{uri:"http://s3.amazonaws.com/doc/2006-03-01/"},type:"structure",required:["Days"],members:{Days:{type:"integer"}}},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"RestoreRequest"},output:{type:"structure",members:{RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}},alias:"PostObjectRestore"},UploadPart:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","Key","PartNumber","UploadId"],members:{Body:{streaming:!0,type:"blob"},Bucket:{location:"uri",locationName:"Bucket"},ContentLength:{location:"header",locationName:"Content-Length",type:"long"},ContentMD5:{location:"header",locationName:"Content-MD5"},Key:{location:"uri",locationName:"Key"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"},UploadId:{location:"querystring",locationName:"uploadId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}},payload:"Body"},output:{type:"structure",members:{ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},ETag:{location:"header",locationName:"ETag"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}}}},UploadPartCopy:{http:{method:"PUT",requestUri:"/{Bucket}/{Key+}"},input:{type:"structure",required:["Bucket","CopySource","Key","PartNumber","UploadId"],members:{Bucket:{location:"uri",locationName:"Bucket"},CopySource:{location:"header",locationName:"x-amz-copy-source"},CopySourceIfMatch:{location:"header",locationName:"x-amz-copy-source-if-match"},CopySourceIfModifiedSince:{location:"header",locationName:"x-amz-copy-source-if-modified-since",type:"timestamp"},CopySourceIfNoneMatch:{location:"header",locationName:"x-amz-copy-source-if-none-match"},CopySourceIfUnmodifiedSince:{location:"header",locationName:"x-amz-copy-source-if-unmodified-since",type:"timestamp"},CopySourceRange:{location:"header",locationName:"x-amz-copy-source-range"},Key:{location:"uri",locationName:"Key"},PartNumber:{location:"querystring",locationName:"partNumber",type:"integer"},UploadId:{location:"querystring",locationName:"uploadId"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKey:{shape:"S18",location:"header",locationName:"x-amz-server-side-encryption-customer-key"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},CopySourceSSECustomerAlgorithm:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-algorithm"},CopySourceSSECustomerKey:{shape:"S1b",location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key"},CopySourceSSECustomerKeyMD5:{location:"header",locationName:"x-amz-copy-source-server-side-encryption-customer-key-MD5"},RequestPayer:{location:"header",locationName:"x-amz-request-payer"}}},output:{type:"structure",members:{CopySourceVersionId:{location:"header",locationName:"x-amz-copy-source-version-id"},CopyPartResult:{type:"structure",members:{ETag:{},LastModified:{type:"timestamp"}}},ServerSideEncryption:{location:"header",locationName:"x-amz-server-side-encryption"},SSECustomerAlgorithm:{location:"header",locationName:"x-amz-server-side-encryption-customer-algorithm"},SSECustomerKeyMD5:{location:"header",locationName:"x-amz-server-side-encryption-customer-key-MD5"},SSEKMSKeyId:{shape:"Sj",location:"header",locationName:"x-amz-server-side-encryption-aws-kms-key-id"},RequestCharged:{location:"header",locationName:"x-amz-request-charged"}},payload:"CopyPartResult"}}},shapes:{Sj:{type:"string",sensitive:!0},S11:{type:"map",key:{},value:{}},S18:{type:"blob",sensitive:!0},S1b:{type:"blob",sensitive:!0},S2k:{type:"structure",members:{DisplayName:{},ID:{}}},S2n:{type:"list",member:{locationName:"Grant",type:"structure",members:{Grantee:{shape:"S2p"},Permission:{}}}},S2p:{type:"structure",required:["Type"],members:{DisplayName:{},EmailAddress:{},ID:{},Type:{locationName:"xsi:type",xmlAttribute:!0},URI:{}},xmlNamespace:{prefix:"xsi",uri:"http://www.w3.org/2001/XMLSchema-instance"}},S2w:{type:"list",member:{type:"structure",required:["AllowedMethods","AllowedOrigins"],members:{AllowedHeaders:{locationName:"AllowedHeader",type:"list",member:{},flattened:!0},AllowedMethods:{locationName:"AllowedMethod",type:"list",member:{},flattened:!0},AllowedOrigins:{locationName:"AllowedOrigin",type:"list",member:{},flattened:!0},ExposeHeaders:{locationName:"ExposeHeader",type:"list",member:{},flattened:!0},MaxAgeSeconds:{type:"integer"}}},flattened:!0},S39:{type:"list",member:{type:"structure",required:["Prefix","Status"],members:{Expiration:{shape:"S3b"},ID:{},Prefix:{},Status:{},Transition:{shape:"S3h"},NoncurrentVersionTransition:{shape:"S3j"},NoncurrentVersionExpiration:{shape:"S3k"},AbortIncompleteMultipartUpload:{shape:"S3l"}}},flattened:!0},S3b:{type:"structure",members:{Date:{shape:"S3c"},Days:{type:"integer"},ExpiredObjectDeleteMarker:{type:"boolean"}}},S3c:{type:"timestamp",timestampFormat:"iso8601"},S3h:{type:"structure",members:{Date:{shape:"S3c"},Days:{type:"integer"},StorageClass:{}}},S3j:{type:"structure",members:{NoncurrentDays:{type:"integer"},StorageClass:{}}},S3k:{type:"structure",members:{NoncurrentDays:{type:"integer"}}},S3l:{type:"structure",members:{DaysAfterInitiation:{type:"integer"}}},S3p:{type:"list",member:{type:"structure",required:["Prefix","Status"],members:{Expiration:{shape:"S3b"},ID:{},Prefix:{},Status:{},Transitions:{locationName:"Transition",type:"list",member:{shape:"S3h"},flattened:!0},NoncurrentVersionTransitions:{locationName:"NoncurrentVersionTransition",type:"list",member:{shape:"S3j"},flattened:!0},NoncurrentVersionExpiration:{shape:"S3k"},AbortIncompleteMultipartUpload:{shape:"S3l"}}},flattened:!0},S3x:{type:"structure",members:{TargetBucket:{},TargetGrants:{type:"list",member:{locationName:"Grant",type:"structure",members:{Grantee:{shape:"S2p"},Permission:{}}}},TargetPrefix:{}}},S43:{type:"structure",required:["Bucket"],members:{Bucket:{location:"uri",locationName:"Bucket"}}},S44:{type:"structure",members:{TopicConfiguration:{type:"structure",members:{Id:{},Events:{shape:"S47",locationName:"Event"},Event:{deprecated:!0},Topic:{}}},QueueConfiguration:{type:"structure",members:{Id:{},Event:{deprecated:!0},Events:{shape:"S47",locationName:"Event"},Queue:{}}},CloudFunctionConfiguration:{type:"structure",members:{Id:{},Event:{deprecated:!0},Events:{shape:"S47",locationName:"Event"},CloudFunction:{},InvocationRole:{}}}}},S47:{type:"list",member:{},flattened:!0},S4f:{type:"structure",members:{TopicConfigurations:{locationName:"TopicConfiguration",type:"list",member:{type:"structure",required:["TopicArn","Events"],members:{Id:{},TopicArn:{locationName:"Topic"},Events:{shape:"S47",locationName:"Event"},Filter:{shape:"S4i"}}},flattened:!0},QueueConfigurations:{locationName:"QueueConfiguration",type:"list",member:{type:"structure",required:["QueueArn","Events"],members:{Id:{},QueueArn:{locationName:"Queue"},Events:{shape:"S47",locationName:"Event"},Filter:{shape:"S4i"}}},flattened:!0},LambdaFunctionConfigurations:{locationName:"CloudFunctionConfiguration",type:"list",member:{type:"structure",required:["LambdaFunctionArn","Events"],members:{Id:{},LambdaFunctionArn:{locationName:"CloudFunction"},Events:{shape:"S47",locationName:"Event"},Filter:{shape:"S4i"}}},flattened:!0}}},S4i:{type:"structure",members:{Key:{locationName:"S3Key",type:"structure",members:{FilterRules:{locationName:"FilterRule",type:"list",member:{type:"structure",members:{Name:{},Value:{}}},flattened:!0}}}}},S4y:{type:"structure",required:["Role","Rules"],members:{Role:{},Rules:{locationName:"Rule",type:"list",member:{type:"structure",required:["Prefix","Status","Destination"],members:{ID:{},Prefix:{},Status:{}, -Destination:{type:"structure",required:["Bucket"],members:{Bucket:{},StorageClass:{}}}}},flattened:!0}}},S59:{type:"list",member:{locationName:"Tag",type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},S5i:{type:"structure",required:["HostName"],members:{HostName:{},Protocol:{}}},S5l:{type:"structure",required:["Suffix"],members:{Suffix:{}}},S5n:{type:"structure",required:["Key"],members:{Key:{}}},S5o:{type:"list",member:{locationName:"RoutingRule",type:"structure",required:["Redirect"],members:{Condition:{type:"structure",members:{HttpErrorCodeReturnedEquals:{},KeyPrefixEquals:{}}},Redirect:{type:"structure",members:{HostName:{},HttpRedirectCode:{},Protocol:{},ReplaceKeyPrefixWith:{},ReplaceKeyWith:{}}}}}},S76:{type:"structure",members:{ID:{},DisplayName:{}}},S77:{type:"list",member:{type:"structure",members:{Prefix:{}}},flattened:!0},S7p:{type:"list",member:{type:"structure",members:{Key:{},LastModified:{type:"timestamp"},ETag:{},Size:{type:"integer"},StorageClass:{},Owner:{shape:"S2k"}}},flattened:!0},S89:{type:"structure",members:{Grants:{shape:"S2n",locationName:"AccessControlList"},Owner:{shape:"S2k"}}}}}},{}],113:[function(e,t,r){t.exports={pagination:{ListBuckets:{result_key:"Buckets"},ListMultipartUploads:{limit_key:"MaxUploads",more_results:"IsTruncated",output_token:["NextKeyMarker","NextUploadIdMarker"],input_token:["KeyMarker","UploadIdMarker"],result_key:["Uploads","CommonPrefixes"]},ListObjectVersions:{more_results:"IsTruncated",limit_key:"MaxKeys",output_token:["NextKeyMarker","NextVersionIdMarker"],input_token:["KeyMarker","VersionIdMarker"],result_key:["Versions","DeleteMarkers","CommonPrefixes"]},ListObjects:{more_results:"IsTruncated",limit_key:"MaxKeys",output_token:"NextMarker || Contents[-1].Key",input_token:"Marker",result_key:["Contents","CommonPrefixes"]},ListObjectsV2:{limit_key:"MaxKeys",output_token:"NextContinuationToken",input_token:"ContinuationToken",result_key:["Contents","CommonPrefixes"]},ListParts:{more_results:"IsTruncated",limit_key:"MaxParts",output_token:"NextPartNumberMarker",input_token:"PartNumberMarker",result_key:"Parts"}}}},{}],114:[function(e,t,r){t.exports={version:2,waiters:{BucketExists:{delay:5,operation:"HeadBucket",maxAttempts:20,acceptors:[{expected:200,matcher:"status",state:"success"},{expected:301,matcher:"status",state:"success"},{expected:403,matcher:"status",state:"success"},{expected:404,matcher:"status",state:"retry"}]},BucketNotExists:{delay:5,operation:"HeadBucket",maxAttempts:20,acceptors:[{expected:404,matcher:"status",state:"success"}]},ObjectExists:{delay:5,operation:"HeadObject",maxAttempts:20,acceptors:[{expected:200,matcher:"status",state:"success"},{expected:404,matcher:"status",state:"retry"}]},ObjectNotExists:{delay:5,operation:"HeadObject",maxAttempts:20,acceptors:[{expected:404,matcher:"status",state:"success"}]}}}},{}],115:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-12-10",endpointPrefix:"servicecatalog",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS Service Catalog",signatureVersion:"v4",targetPrefix:"AWS242ServiceCatalogService"},operations:{DescribeProduct:{input:{type:"structure",required:["Id"],members:{AcceptLanguage:{},Id:{}}},output:{type:"structure",members:{ProductViewSummary:{shape:"S5"},ProvisioningArtifacts:{shape:"Sf"}}}},DescribeProductView:{input:{type:"structure",required:["Id"],members:{AcceptLanguage:{},Id:{}}},output:{type:"structure",members:{ProductViewSummary:{shape:"S5"},ProvisioningArtifacts:{shape:"Sf"}}}},DescribeProvisioningParameters:{input:{type:"structure",required:["ProductId","ProvisioningArtifactId"],members:{AcceptLanguage:{},ProductId:{},ProvisioningArtifactId:{},PathId:{}}},output:{type:"structure",members:{ProvisioningArtifactParameters:{type:"list",member:{type:"structure",members:{ParameterKey:{},DefaultValue:{},ParameterType:{},IsNoEcho:{type:"boolean"},Description:{},ParameterConstraints:{type:"structure",members:{AllowedValues:{type:"list",member:{}}}}}}},ConstraintSummaries:{shape:"Sy"},UsageInstructions:{type:"list",member:{type:"structure",members:{Type:{},Value:{}}}}}}},DescribeRecord:{input:{type:"structure",required:["Id"],members:{AcceptLanguage:{},Id:{},PageToken:{},PageSize:{type:"integer"}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"},RecordOutputs:{type:"list",member:{type:"structure",members:{OutputKey:{},OutputValue:{},Description:{}}}},NextPageToken:{}}}},ListLaunchPaths:{input:{type:"structure",required:["ProductId"],members:{AcceptLanguage:{},ProductId:{},PageSize:{type:"integer"},PageToken:{}}},output:{type:"structure",members:{LaunchPathSummaries:{type:"list",member:{type:"structure",members:{Id:{},ConstraintSummaries:{shape:"Sy"},Tags:{shape:"S1x"},Name:{}}}},NextPageToken:{}}}},ListRecordHistory:{input:{type:"structure",members:{AcceptLanguage:{},AccessLevelFilter:{shape:"S23"},SearchFilter:{type:"structure",members:{Key:{},Value:{}}},PageSize:{type:"integer"},PageToken:{}}},output:{type:"structure",members:{RecordDetails:{type:"list",member:{shape:"S1a"}},NextPageToken:{}}}},ProvisionProduct:{input:{type:"structure",required:["ProductId","ProvisioningArtifactId","ProvisionedProductName","ProvisionToken"],members:{AcceptLanguage:{},ProductId:{},ProvisioningArtifactId:{},PathId:{},ProvisionedProductName:{},ProvisioningParameters:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},Tags:{shape:"S1x"},NotificationArns:{type:"list",member:{}},ProvisionToken:{idempotencyToken:!0}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"}}}},ScanProvisionedProducts:{input:{type:"structure",members:{AcceptLanguage:{},AccessLevelFilter:{shape:"S23"},PageSize:{type:"integer"},PageToken:{}}},output:{type:"structure",members:{ProvisionedProducts:{type:"list",member:{type:"structure",members:{Name:{},Arn:{},Type:{},Id:{},Status:{},StatusMessage:{},CreatedTime:{type:"timestamp"},IdempotencyToken:{},LastRecordId:{}}}},NextPageToken:{}}}},SearchProducts:{input:{type:"structure",members:{AcceptLanguage:{},Filters:{type:"map",key:{},value:{type:"list",member:{}}},PageSize:{type:"integer"},SortBy:{},SortOrder:{},PageToken:{}}},output:{type:"structure",members:{ProductViewSummaries:{type:"list",member:{shape:"S5"}},ProductViewAggregations:{type:"map",key:{},value:{type:"list",member:{type:"structure",members:{Value:{},ApproximateCount:{type:"integer"}}}}},NextPageToken:{}}}},TerminateProvisionedProduct:{input:{type:"structure",required:["TerminateToken"],members:{ProvisionedProductName:{},ProvisionedProductId:{},TerminateToken:{idempotencyToken:!0},IgnoreErrors:{type:"boolean"},AcceptLanguage:{}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"}}}},UpdateProvisionedProduct:{input:{type:"structure",required:["UpdateToken"],members:{AcceptLanguage:{},ProvisionedProductName:{},ProvisionedProductId:{},ProductId:{},ProvisioningArtifactId:{},PathId:{},ProvisioningParameters:{type:"list",member:{type:"structure",members:{Key:{},Value:{},UsePreviousValue:{type:"boolean"}}}},UpdateToken:{idempotencyToken:!0}}},output:{type:"structure",members:{RecordDetail:{shape:"S1a"}}}}},shapes:{S5:{type:"structure",members:{Id:{},ProductId:{},Name:{},Owner:{},ShortDescription:{},Type:{},Distributor:{},HasDefaultPath:{type:"boolean"},SupportEmail:{},SupportDescription:{},SupportUrl:{}}},Sf:{type:"list",member:{type:"structure",members:{Id:{},Name:{},Description:{},CreatedTime:{type:"timestamp"}}}},Sy:{type:"list",member:{type:"structure",members:{Type:{},Description:{}}}},S1a:{type:"structure",members:{RecordId:{},ProvisionedProductName:{},Status:{},CreatedTime:{type:"timestamp"},UpdatedTime:{type:"timestamp"},ProvisionedProductType:{},RecordType:{},ProvisionedProductId:{},ProductId:{},ProvisioningArtifactId:{},PathId:{},RecordErrors:{type:"list",member:{type:"structure",members:{Code:{},Description:{}}}},RecordTags:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}}}},S1x:{type:"list",member:{type:"structure",members:{Key:{},Value:{}}}},S23:{type:"structure",members:{Key:{},Value:{}}}}}},{}],116:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2010-03-31",endpointPrefix:"sns",protocol:"query",serviceAbbreviation:"Amazon SNS",serviceFullName:"Amazon Simple Notification Service",signatureVersion:"v4",xmlNamespace:"http://sns.amazonaws.com/doc/2010-03-31/"},operations:{AddPermission:{input:{type:"structure",required:["TopicArn","Label","AWSAccountId","ActionName"],members:{TopicArn:{},Label:{},AWSAccountId:{type:"list",member:{}},ActionName:{type:"list",member:{}}}}},CheckIfPhoneNumberIsOptedOut:{input:{type:"structure",required:["phoneNumber"],members:{phoneNumber:{}}},output:{resultWrapper:"CheckIfPhoneNumberIsOptedOutResult",type:"structure",members:{isOptedOut:{type:"boolean"}}}},ConfirmSubscription:{input:{type:"structure",required:["TopicArn","Token"],members:{TopicArn:{},Token:{},AuthenticateOnUnsubscribe:{}}},output:{resultWrapper:"ConfirmSubscriptionResult",type:"structure",members:{SubscriptionArn:{}}}},CreatePlatformApplication:{input:{type:"structure",required:["Name","Platform","Attributes"],members:{Name:{},Platform:{},Attributes:{shape:"Sj"}}},output:{resultWrapper:"CreatePlatformApplicationResult",type:"structure",members:{PlatformApplicationArn:{}}}},CreatePlatformEndpoint:{input:{type:"structure",required:["PlatformApplicationArn","Token"],members:{PlatformApplicationArn:{},Token:{},CustomUserData:{},Attributes:{shape:"Sj"}}},output:{resultWrapper:"CreatePlatformEndpointResult",type:"structure",members:{EndpointArn:{}}}},CreateTopic:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{resultWrapper:"CreateTopicResult",type:"structure",members:{TopicArn:{}}}},DeleteEndpoint:{input:{type:"structure",required:["EndpointArn"],members:{EndpointArn:{}}}},DeletePlatformApplication:{input:{type:"structure",required:["PlatformApplicationArn"],members:{PlatformApplicationArn:{}}}},DeleteTopic:{input:{type:"structure",required:["TopicArn"],members:{TopicArn:{}}}},GetEndpointAttributes:{input:{type:"structure",required:["EndpointArn"],members:{EndpointArn:{}}},output:{resultWrapper:"GetEndpointAttributesResult",type:"structure",members:{Attributes:{shape:"Sj"}}}},GetPlatformApplicationAttributes:{input:{type:"structure",required:["PlatformApplicationArn"],members:{PlatformApplicationArn:{}}},output:{resultWrapper:"GetPlatformApplicationAttributesResult",type:"structure",members:{Attributes:{shape:"Sj"}}}},GetSMSAttributes:{input:{type:"structure",members:{attributes:{type:"list",member:{}}}},output:{resultWrapper:"GetSMSAttributesResult",type:"structure",members:{attributes:{shape:"Sj"}}}},GetSubscriptionAttributes:{input:{type:"structure",required:["SubscriptionArn"],members:{SubscriptionArn:{}}},output:{resultWrapper:"GetSubscriptionAttributesResult",type:"structure",members:{Attributes:{type:"map",key:{},value:{}}}}},GetTopicAttributes:{input:{type:"structure",required:["TopicArn"],members:{TopicArn:{}}},output:{resultWrapper:"GetTopicAttributesResult",type:"structure",members:{Attributes:{type:"map",key:{},value:{}}}}},ListEndpointsByPlatformApplication:{input:{type:"structure",required:["PlatformApplicationArn"],members:{PlatformApplicationArn:{},NextToken:{}}},output:{resultWrapper:"ListEndpointsByPlatformApplicationResult",type:"structure",members:{Endpoints:{type:"list",member:{type:"structure",members:{EndpointArn:{},Attributes:{shape:"Sj"}}}},NextToken:{}}}},ListPhoneNumbersOptedOut:{input:{type:"structure",members:{nextToken:{}}},output:{resultWrapper:"ListPhoneNumbersOptedOutResult",type:"structure",members:{phoneNumbers:{type:"list",member:{}},nextToken:{}}}},ListPlatformApplications:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListPlatformApplicationsResult",type:"structure",members:{PlatformApplications:{type:"list",member:{type:"structure",members:{PlatformApplicationArn:{},Attributes:{shape:"Sj"}}}},NextToken:{}}}},ListSubscriptions:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListSubscriptionsResult",type:"structure",members:{Subscriptions:{shape:"S1n"},NextToken:{}}}},ListSubscriptionsByTopic:{input:{type:"structure",required:["TopicArn"],members:{TopicArn:{},NextToken:{}}},output:{resultWrapper:"ListSubscriptionsByTopicResult",type:"structure",members:{Subscriptions:{shape:"S1n"},NextToken:{}}}},ListTopics:{input:{type:"structure",members:{NextToken:{}}},output:{resultWrapper:"ListTopicsResult",type:"structure",members:{Topics:{type:"list",member:{type:"structure",members:{TopicArn:{}}}},NextToken:{}}}},OptInPhoneNumber:{input:{type:"structure",required:["phoneNumber"],members:{phoneNumber:{}}},output:{resultWrapper:"OptInPhoneNumberResult",type:"structure",members:{}}},Publish:{input:{type:"structure",required:["Message"],members:{TopicArn:{},TargetArn:{},PhoneNumber:{},Message:{},Subject:{},MessageStructure:{},MessageAttributes:{type:"map",key:{locationName:"Name"},value:{locationName:"Value",type:"structure",required:["DataType"],members:{DataType:{},StringValue:{},BinaryValue:{type:"blob"}}}}}},output:{resultWrapper:"PublishResult",type:"structure",members:{MessageId:{}}}},RemovePermission:{input:{type:"structure",required:["TopicArn","Label"],members:{TopicArn:{},Label:{}}}},SetEndpointAttributes:{input:{type:"structure",required:["EndpointArn","Attributes"],members:{EndpointArn:{},Attributes:{shape:"Sj"}}}},SetPlatformApplicationAttributes:{input:{type:"structure",required:["PlatformApplicationArn","Attributes"],members:{PlatformApplicationArn:{},Attributes:{shape:"Sj"}}}},SetSMSAttributes:{input:{type:"structure",required:["attributes"],members:{attributes:{shape:"Sj"}}},output:{resultWrapper:"SetSMSAttributesResult",type:"structure",members:{}}},SetSubscriptionAttributes:{input:{type:"structure",required:["SubscriptionArn","AttributeName"],members:{SubscriptionArn:{},AttributeName:{},AttributeValue:{}}}},SetTopicAttributes:{input:{type:"structure",required:["TopicArn","AttributeName"],members:{TopicArn:{},AttributeName:{},AttributeValue:{}}}},Subscribe:{input:{type:"structure",required:["TopicArn","Protocol"],members:{TopicArn:{},Protocol:{},Endpoint:{}}},output:{resultWrapper:"SubscribeResult",type:"structure",members:{SubscriptionArn:{}}}},Unsubscribe:{input:{type:"structure",required:["SubscriptionArn"],members:{SubscriptionArn:{}}}}},shapes:{Sj:{type:"map",key:{},value:{}},S1n:{type:"list",member:{type:"structure",members:{SubscriptionArn:{},Owner:{},Protocol:{},Endpoint:{},TopicArn:{}}}}}}},{}],117:[function(e,t,r){t.exports={pagination:{ListEndpointsByPlatformApplication:{input_token:"NextToken",output_token:"NextToken",result_key:"Endpoints"},ListPlatformApplications:{input_token:"NextToken",output_token:"NextToken",result_key:"PlatformApplications"},ListSubscriptions:{input_token:"NextToken",output_token:"NextToken",result_key:"Subscriptions"},ListSubscriptionsByTopic:{input_token:"NextToken",output_token:"NextToken",result_key:"Subscriptions"},ListTopics:{input_token:"NextToken",output_token:"NextToken",result_key:"Topics"}}}},{}],118:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-11-05",endpointPrefix:"sqs",protocol:"query",serviceAbbreviation:"Amazon SQS",serviceFullName:"Amazon Simple Queue Service",signatureVersion:"v4",xmlNamespace:"http://queue.amazonaws.com/doc/2012-11-05/"},operations:{AddPermission:{input:{type:"structure",required:["QueueUrl","Label","AWSAccountIds","Actions"],members:{QueueUrl:{},Label:{},AWSAccountIds:{type:"list",member:{locationName:"AWSAccountId"},flattened:!0},Actions:{type:"list",member:{locationName:"ActionName"},flattened:!0}}}},ChangeMessageVisibility:{input:{type:"structure",required:["QueueUrl","ReceiptHandle","VisibilityTimeout"],members:{QueueUrl:{},ReceiptHandle:{},VisibilityTimeout:{type:"integer"}}}},ChangeMessageVisibilityBatch:{input:{type:"structure",required:["QueueUrl","Entries"],members:{QueueUrl:{},Entries:{type:"list",member:{locationName:"ChangeMessageVisibilityBatchRequestEntry",type:"structure",required:["Id","ReceiptHandle"],members:{Id:{},ReceiptHandle:{},VisibilityTimeout:{type:"integer"}}},flattened:!0}}},output:{resultWrapper:"ChangeMessageVisibilityBatchResult",type:"structure",required:["Successful","Failed"],members:{Successful:{type:"list",member:{locationName:"ChangeMessageVisibilityBatchResultEntry",type:"structure",required:["Id"],members:{Id:{}}},flattened:!0},Failed:{shape:"Sd"}}}},CreateQueue:{input:{type:"structure",required:["QueueName"],members:{QueueName:{},Attributes:{shape:"Sh",locationName:"Attribute"}}},output:{resultWrapper:"CreateQueueResult",type:"structure",members:{QueueUrl:{}}}},DeleteMessage:{input:{type:"structure",required:["QueueUrl","ReceiptHandle"],members:{QueueUrl:{},ReceiptHandle:{}}}},DeleteMessageBatch:{input:{type:"structure",required:["QueueUrl","Entries"],members:{QueueUrl:{},Entries:{type:"list",member:{locationName:"DeleteMessageBatchRequestEntry",type:"structure",required:["Id","ReceiptHandle"],members:{Id:{},ReceiptHandle:{}}},flattened:!0}}},output:{resultWrapper:"DeleteMessageBatchResult",type:"structure",required:["Successful","Failed"],members:{Successful:{type:"list",member:{locationName:"DeleteMessageBatchResultEntry",type:"structure",required:["Id"],members:{Id:{}}},flattened:!0},Failed:{shape:"Sd"}}}},DeleteQueue:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{}}}},GetQueueAttributes:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{},AttributeNames:{shape:"St"}}},output:{resultWrapper:"GetQueueAttributesResult",type:"structure",members:{Attributes:{shape:"Sh",locationName:"Attribute"}}}},GetQueueUrl:{input:{type:"structure",required:["QueueName"],members:{QueueName:{},QueueOwnerAWSAccountId:{}}},output:{resultWrapper:"GetQueueUrlResult",type:"structure",members:{QueueUrl:{}}}},ListDeadLetterSourceQueues:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{}}},output:{resultWrapper:"ListDeadLetterSourceQueuesResult",type:"structure",required:["queueUrls"],members:{queueUrls:{shape:"Sz"}}}},ListQueues:{input:{type:"structure",members:{QueueNamePrefix:{}}},output:{resultWrapper:"ListQueuesResult",type:"structure",members:{QueueUrls:{shape:"Sz"}}}},PurgeQueue:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{}}}},ReceiveMessage:{input:{type:"structure",required:["QueueUrl"],members:{QueueUrl:{},AttributeNames:{shape:"St"},MessageAttributeNames:{type:"list",member:{locationName:"MessageAttributeName"},flattened:!0},MaxNumberOfMessages:{type:"integer"},VisibilityTimeout:{type:"integer"},WaitTimeSeconds:{type:"integer"}}},output:{resultWrapper:"ReceiveMessageResult",type:"structure",members:{Messages:{type:"list",member:{locationName:"Message",type:"structure",members:{MessageId:{},ReceiptHandle:{},MD5OfBody:{},Body:{},Attributes:{shape:"Sh",locationName:"Attribute"},MD5OfMessageAttributes:{},MessageAttributes:{shape:"S19",locationName:"MessageAttribute"}}},flattened:!0}}}},RemovePermission:{input:{type:"structure",required:["QueueUrl","Label"],members:{QueueUrl:{},Label:{}}}},SendMessage:{input:{type:"structure",required:["QueueUrl","MessageBody"],members:{QueueUrl:{},MessageBody:{},DelaySeconds:{type:"integer"},MessageAttributes:{shape:"S19",locationName:"MessageAttribute"}}},output:{resultWrapper:"SendMessageResult",type:"structure",members:{MD5OfMessageBody:{},MD5OfMessageAttributes:{},MessageId:{}}}},SendMessageBatch:{input:{type:"structure",required:["QueueUrl","Entries"],members:{QueueUrl:{},Entries:{type:"list",member:{locationName:"SendMessageBatchRequestEntry",type:"structure",required:["Id","MessageBody"],members:{Id:{},MessageBody:{},DelaySeconds:{type:"integer"},MessageAttributes:{shape:"S19",locationName:"MessageAttribute"}}},flattened:!0}}},output:{resultWrapper:"SendMessageBatchResult",type:"structure",required:["Successful","Failed"],members:{Successful:{type:"list",member:{locationName:"SendMessageBatchResultEntry",type:"structure",required:["Id","MessageId","MD5OfMessageBody"],members:{Id:{},MessageId:{},MD5OfMessageBody:{},MD5OfMessageAttributes:{}}},flattened:!0},Failed:{shape:"Sd"}}}},SetQueueAttributes:{input:{type:"structure",required:["QueueUrl","Attributes"],members:{QueueUrl:{},Attributes:{shape:"Sh",locationName:"Attribute"}}}}},shapes:{Sd:{type:"list",member:{locationName:"BatchResultErrorEntry",type:"structure",required:["Id","SenderFault","Code"],members:{Id:{},SenderFault:{type:"boolean"},Code:{},Message:{}}},flattened:!0},Sh:{type:"map",key:{locationName:"Name"},value:{locationName:"Value"},flattened:!0,locationName:"Attribute"},St:{type:"list",member:{locationName:"AttributeName"},flattened:!0},Sz:{type:"list",member:{locationName:"QueueUrl"},flattened:!0},S19:{type:"map",key:{locationName:"Name"},value:{locationName:"Value",type:"structure",required:["DataType"],members:{StringValue:{},BinaryValue:{type:"blob"},StringListValues:{flattened:!0,locationName:"StringListValue",type:"list",member:{locationName:"StringListValue"}},BinaryListValues:{flattened:!0,locationName:"BinaryListValue",type:"list",member:{locationName:"BinaryListValue",type:"blob"}},DataType:{}}},flattened:!0}}}},{}],119:[function(e,t,r){t.exports={pagination:{ListQueues:{result_key:"QueueUrls"}}}},{}],120:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2014-11-06",endpointPrefix:"ssm",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"Amazon SSM",serviceFullName:"Amazon Simple Systems Management Service",signatureVersion:"v4",targetPrefix:"AmazonSSM"},operations:{AddTagsToResource:{input:{type:"structure",required:["ResourceType","ResourceId","Tags"],members:{ResourceType:{},ResourceId:{},Tags:{shape:"S4"}}},output:{type:"structure",members:{}}},CancelCommand:{input:{type:"structure",required:["CommandId"],members:{CommandId:{},InstanceIds:{shape:"Sb"}}},output:{type:"structure",members:{}}},CreateActivation:{input:{type:"structure",required:["IamRole"],members:{Description:{},DefaultInstanceName:{},IamRole:{},RegistrationLimit:{type:"integer"},ExpirationDate:{type:"timestamp"}}},output:{type:"structure",members:{ActivationId:{},ActivationCode:{}}}},CreateAssociation:{input:{type:"structure",required:["Name","InstanceId"],members:{Name:{},InstanceId:{},Parameters:{shape:"Sp"}}},output:{type:"structure",members:{AssociationDescription:{shape:"Su"}}}},CreateAssociationBatch:{input:{type:"structure",required:["Entries"],members:{Entries:{type:"list",member:{shape:"S12",locationName:"entries"}}}},output:{type:"structure",members:{Successful:{type:"list",member:{shape:"Su",locationName:"AssociationDescription"}},Failed:{type:"list",member:{locationName:"FailedCreateAssociationEntry",type:"structure",members:{Entry:{shape:"S12"},Message:{},Fault:{}}}}}}},CreateDocument:{input:{type:"structure",required:["Content","Name"],members:{Content:{},Name:{}}},output:{type:"structure",members:{DocumentDescription:{shape:"S1c"}}}},DeleteActivation:{input:{type:"structure",required:["ActivationId"],members:{ActivationId:{}}},output:{type:"structure",members:{}}},DeleteAssociation:{input:{type:"structure",required:["Name","InstanceId"],members:{Name:{},InstanceId:{}}},output:{type:"structure",members:{}}},DeleteDocument:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{}}},DeregisterManagedInstance:{input:{type:"structure",required:["InstanceId"],members:{InstanceId:{}}},output:{type:"structure",members:{}}},DescribeActivations:{input:{type:"structure",members:{Filters:{type:"list",member:{type:"structure",members:{FilterKey:{},FilterValues:{type:"list",member:{}}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{ActivationList:{type:"list",member:{type:"structure",members:{ActivationId:{},Description:{},DefaultInstanceName:{},IamRole:{},RegistrationLimit:{type:"integer"},RegistrationsCount:{type:"integer"},ExpirationDate:{type:"timestamp"},Expired:{type:"boolean"},CreatedDate:{type:"timestamp"}}}},NextToken:{}}}},DescribeAssociation:{input:{type:"structure",required:["Name","InstanceId"],members:{Name:{},InstanceId:{}}},output:{type:"structure",members:{AssociationDescription:{shape:"Su"}}}},DescribeDocument:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Document:{shape:"S1c"}}}},DescribeDocumentPermission:{input:{type:"structure",required:["Name","PermissionType"],members:{Name:{},PermissionType:{}}},output:{type:"structure",members:{AccountIds:{shape:"S2m"}}}},DescribeInstanceInformation:{input:{type:"structure",members:{InstanceInformationFilterList:{type:"list",member:{locationName:"InstanceInformationFilter",type:"structure",required:["key","valueSet"],members:{key:{},valueSet:{type:"list",member:{locationName:"InstanceInformationFilterValue"}}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{InstanceInformationList:{type:"list",member:{locationName:"InstanceInformation",type:"structure",members:{InstanceId:{},PingStatus:{},LastPingDateTime:{type:"timestamp"},AgentVersion:{},IsLatestVersion:{type:"boolean"},PlatformType:{},PlatformName:{},PlatformVersion:{},ActivationId:{},IamRole:{},RegistrationDate:{type:"timestamp"},ResourceType:{},Name:{},IPAddress:{},ComputerName:{}}}},NextToken:{}}}},GetDocument:{input:{type:"structure",required:["Name"],members:{Name:{}}},output:{type:"structure",members:{Name:{},Content:{}}}},ListAssociations:{input:{type:"structure",required:["AssociationFilterList"],members:{AssociationFilterList:{type:"list",member:{locationName:"AssociationFilter",type:"structure",required:["key","value"],members:{key:{},value:{}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{Associations:{type:"list",member:{locationName:"Association",type:"structure",members:{Name:{},InstanceId:{}}}},NextToken:{}}}},ListCommandInvocations:{input:{type:"structure",members:{CommandId:{},InstanceId:{},MaxResults:{type:"integer"},NextToken:{},Filters:{shape:"S3f"},Details:{type:"boolean"}}},output:{type:"structure",members:{CommandInvocations:{type:"list",member:{type:"structure",members:{CommandId:{},InstanceId:{},Comment:{},DocumentName:{},RequestedDateTime:{type:"timestamp"},Status:{},TraceOutput:{},CommandPlugins:{type:"list",member:{type:"structure",members:{Name:{},Status:{},ResponseCode:{type:"integer"},ResponseStartDateTime:{type:"timestamp"},ResponseFinishDateTime:{type:"timestamp"},Output:{},OutputS3BucketName:{},OutputS3KeyPrefix:{}}}},ServiceRole:{},NotificationConfig:{shape:"S3y"}}}},NextToken:{}}}},ListCommands:{input:{type:"structure",members:{CommandId:{},InstanceId:{},MaxResults:{type:"integer"},NextToken:{},Filters:{shape:"S3f"}}},output:{type:"structure",members:{Commands:{type:"list",member:{shape:"S46"}},NextToken:{}}}},ListDocuments:{input:{type:"structure",members:{DocumentFilterList:{type:"list",member:{locationName:"DocumentFilter",type:"structure",required:["key","value"],members:{key:{},value:{}}}},MaxResults:{type:"integer"},NextToken:{}}},output:{type:"structure",members:{DocumentIdentifiers:{type:"list",member:{locationName:"DocumentIdentifier",type:"structure",members:{Name:{},Owner:{},PlatformTypes:{shape:"S1q"}}}},NextToken:{}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceType","ResourceId"],members:{ResourceType:{},ResourceId:{}}},output:{type:"structure",members:{TagList:{shape:"S4"}}}},ModifyDocumentPermission:{input:{type:"structure",required:["Name","PermissionType"],members:{Name:{},PermissionType:{},AccountIdsToAdd:{shape:"S2m"},AccountIdsToRemove:{shape:"S2m"}}},output:{type:"structure",members:{}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceType","ResourceId","TagKeys"],members:{ResourceType:{},ResourceId:{},TagKeys:{type:"list",member:{}}}},output:{type:"structure",members:{}}},SendCommand:{input:{type:"structure",required:["InstanceIds","DocumentName"],members:{InstanceIds:{shape:"Sb"},DocumentName:{},DocumentHash:{},DocumentHashType:{},TimeoutSeconds:{type:"integer"},Comment:{},Parameters:{shape:"Sp"},OutputS3BucketName:{},OutputS3KeyPrefix:{},ServiceRoleArn:{},NotificationConfig:{shape:"S3y"}}},output:{type:"structure",members:{Command:{shape:"S46"}}}},UpdateAssociationStatus:{input:{type:"structure",required:["Name","InstanceId","AssociationStatus"],members:{Name:{},InstanceId:{},AssociationStatus:{shape:"Sw"}}},output:{type:"structure",members:{AssociationDescription:{shape:"Su"}}}},UpdateManagedInstanceRole:{input:{type:"structure",required:["InstanceId","IamRole"],members:{InstanceId:{},IamRole:{}}},output:{type:"structure",members:{}}}},shapes:{S4:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},Sb:{type:"list",member:{}},Sp:{type:"map",key:{},value:{type:"list",member:{}}},Su:{type:"structure",members:{Name:{},InstanceId:{},Date:{type:"timestamp"},Status:{shape:"Sw"},Parameters:{shape:"Sp"}}},Sw:{type:"structure",required:["Date","Name","Message"],members:{Date:{type:"timestamp"},Name:{},Message:{},AdditionalInfo:{}}},S12:{type:"structure",members:{Name:{},InstanceId:{},Parameters:{shape:"Sp"}}},S1c:{type:"structure",members:{Sha1:{},Hash:{},HashType:{},Name:{},Owner:{},CreatedDate:{type:"timestamp"},Status:{},Description:{},Parameters:{type:"list",member:{locationName:"DocumentParameter",type:"structure",members:{Name:{},Type:{},Description:{},DefaultValue:{}}}},PlatformTypes:{shape:"S1q"}}},S1q:{type:"list",member:{locationName:"PlatformType"}},S2m:{type:"list",member:{locationName:"AccountId"}},S3f:{type:"list",member:{type:"structure",required:["key","value"],members:{key:{},value:{}}}},S3y:{type:"structure",members:{NotificationArn:{},NotificationEvents:{type:"list",member:{}},NotificationType:{}}},S46:{type:"structure",members:{CommandId:{},DocumentName:{},Comment:{},ExpiresAfter:{type:"timestamp"},Parameters:{shape:"Sp"},InstanceIds:{shape:"Sb"},RequestedDateTime:{type:"timestamp"},Status:{},OutputS3BucketName:{},OutputS3KeyPrefix:{},ServiceRole:{},NotificationConfig:{shape:"S3y"}}}}}},{}],121:[function(e,t,r){t.exports={pagination:{DescribeInstanceInformation:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"InstanceInformationList"},ListAssociations:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"Associations"},ListCommandInvocations:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"CommandInvocations"},ListCommands:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"Commands"},ListDocuments:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"DocumentIdentifiers"},DescribeActivations:{input_token:"NextToken",output_token:"NextToken",limit_key:"MaxResults",result_key:"ActivationList"}}}},{}],122:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2013-06-30",endpointPrefix:"storagegateway",jsonVersion:"1.1",protocol:"json",serviceFullName:"AWS Storage Gateway",signatureVersion:"v4",targetPrefix:"StorageGateway_20130630"},operations:{ActivateGateway:{input:{type:"structure",required:["ActivationKey","GatewayName","GatewayTimezone","GatewayRegion"],members:{ActivationKey:{},GatewayName:{},GatewayTimezone:{},GatewayRegion:{},GatewayType:{},TapeDriveType:{},MediumChangerType:{}}},output:{type:"structure",members:{GatewayARN:{}}}},AddCache:{input:{type:"structure",required:["GatewayARN","DiskIds"],members:{GatewayARN:{},DiskIds:{shape:"Sc"}}},output:{type:"structure",members:{GatewayARN:{}}}},AddTagsToResource:{input:{type:"structure",required:["ResourceARN","Tags"],members:{ResourceARN:{},Tags:{shape:"Sh"}}},output:{type:"structure",members:{ResourceARN:{}}}},AddUploadBuffer:{input:{type:"structure",required:["GatewayARN","DiskIds"],members:{GatewayARN:{},DiskIds:{shape:"Sc"}}},output:{type:"structure",members:{GatewayARN:{}}}},AddWorkingStorage:{input:{type:"structure",required:["GatewayARN","DiskIds"],members:{GatewayARN:{},DiskIds:{shape:"Sc"}}},output:{ -type:"structure",members:{GatewayARN:{}}}},CancelArchival:{input:{type:"structure",required:["GatewayARN","TapeARN"],members:{GatewayARN:{},TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},CancelRetrieval:{input:{type:"structure",required:["GatewayARN","TapeARN"],members:{GatewayARN:{},TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},CreateCachediSCSIVolume:{input:{type:"structure",required:["GatewayARN","VolumeSizeInBytes","TargetName","NetworkInterfaceId","ClientToken"],members:{GatewayARN:{},VolumeSizeInBytes:{type:"long"},SnapshotId:{},TargetName:{},NetworkInterfaceId:{},ClientToken:{}}},output:{type:"structure",members:{VolumeARN:{},TargetARN:{}}}},CreateSnapshot:{input:{type:"structure",required:["VolumeARN","SnapshotDescription"],members:{VolumeARN:{},SnapshotDescription:{}}},output:{type:"structure",members:{VolumeARN:{},SnapshotId:{}}}},CreateSnapshotFromVolumeRecoveryPoint:{input:{type:"structure",required:["VolumeARN","SnapshotDescription"],members:{VolumeARN:{},SnapshotDescription:{}}},output:{type:"structure",members:{SnapshotId:{},VolumeARN:{},VolumeRecoveryPointTime:{}}}},CreateStorediSCSIVolume:{input:{type:"structure",required:["GatewayARN","DiskId","PreserveExistingData","TargetName","NetworkInterfaceId"],members:{GatewayARN:{},DiskId:{},SnapshotId:{},PreserveExistingData:{type:"boolean"},TargetName:{},NetworkInterfaceId:{}}},output:{type:"structure",members:{VolumeARN:{},VolumeSizeInBytes:{type:"long"},TargetARN:{}}}},CreateTapeWithBarcode:{input:{type:"structure",required:["GatewayARN","TapeSizeInBytes","TapeBarcode"],members:{GatewayARN:{},TapeSizeInBytes:{type:"long"},TapeBarcode:{}}},output:{type:"structure",members:{TapeARN:{}}}},CreateTapes:{input:{type:"structure",required:["GatewayARN","TapeSizeInBytes","ClientToken","NumTapesToCreate","TapeBarcodePrefix"],members:{GatewayARN:{},TapeSizeInBytes:{type:"long"},ClientToken:{},NumTapesToCreate:{type:"integer"},TapeBarcodePrefix:{}}},output:{type:"structure",members:{TapeARNs:{shape:"S1l"}}}},DeleteBandwidthRateLimit:{input:{type:"structure",required:["GatewayARN","BandwidthType"],members:{GatewayARN:{},BandwidthType:{}}},output:{type:"structure",members:{GatewayARN:{}}}},DeleteChapCredentials:{input:{type:"structure",required:["TargetARN","InitiatorName"],members:{TargetARN:{},InitiatorName:{}}},output:{type:"structure",members:{TargetARN:{},InitiatorName:{}}}},DeleteGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},DeleteSnapshotSchedule:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{VolumeARN:{}}}},DeleteTape:{input:{type:"structure",required:["GatewayARN","TapeARN"],members:{GatewayARN:{},TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},DeleteTapeArchive:{input:{type:"structure",required:["TapeARN"],members:{TapeARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},DeleteVolume:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{VolumeARN:{}}}},DescribeBandwidthRateLimit:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},AverageUploadRateLimitInBitsPerSec:{type:"long"},AverageDownloadRateLimitInBitsPerSec:{type:"long"}}}},DescribeCache:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},DiskIds:{shape:"Sc"},CacheAllocatedInBytes:{type:"long"},CacheUsedPercentage:{type:"double"},CacheDirtyPercentage:{type:"double"},CacheHitPercentage:{type:"double"},CacheMissPercentage:{type:"double"}}}},DescribeCachediSCSIVolumes:{input:{type:"structure",required:["VolumeARNs"],members:{VolumeARNs:{shape:"S2a"}}},output:{type:"structure",members:{CachediSCSIVolumes:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeId:{},VolumeType:{},VolumeStatus:{},VolumeSizeInBytes:{type:"long"},VolumeProgress:{type:"double"},SourceSnapshotId:{},VolumeiSCSIAttributes:{shape:"S2i"}}}}}}},DescribeChapCredentials:{input:{type:"structure",required:["TargetARN"],members:{TargetARN:{}}},output:{type:"structure",members:{ChapCredentials:{type:"list",member:{type:"structure",members:{TargetARN:{},SecretToAuthenticateInitiator:{},InitiatorName:{},SecretToAuthenticateTarget:{}}}}}}},DescribeGatewayInformation:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},GatewayId:{},GatewayName:{},GatewayTimezone:{},GatewayState:{},GatewayNetworkInterfaces:{type:"list",member:{type:"structure",members:{Ipv4Address:{},MacAddress:{},Ipv6Address:{}}}},GatewayType:{},NextUpdateAvailabilityDate:{},LastSoftwareUpdate:{}}}},DescribeMaintenanceStartTime:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},HourOfDay:{type:"integer"},MinuteOfHour:{type:"integer"},DayOfWeek:{type:"integer"},Timezone:{}}}},DescribeSnapshotSchedule:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{VolumeARN:{},StartAt:{type:"integer"},RecurrenceInHours:{type:"integer"},Description:{},Timezone:{}}}},DescribeStorediSCSIVolumes:{input:{type:"structure",required:["VolumeARNs"],members:{VolumeARNs:{shape:"S2a"}}},output:{type:"structure",members:{StorediSCSIVolumes:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeId:{},VolumeType:{},VolumeStatus:{},VolumeSizeInBytes:{type:"long"},VolumeProgress:{type:"double"},VolumeDiskId:{},SourceSnapshotId:{},PreservedExistingData:{type:"boolean"},VolumeiSCSIAttributes:{shape:"S2i"}}}}}}},DescribeTapeArchives:{input:{type:"structure",members:{TapeARNs:{shape:"S1l"},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{TapeArchives:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeBarcode:{},TapeSizeInBytes:{type:"long"},CompletionTime:{type:"timestamp"},RetrievedTo:{},TapeStatus:{}}}},Marker:{}}}},DescribeTapeRecoveryPoints:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{},TapeRecoveryPointInfos:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeRecoveryPointTime:{type:"timestamp"},TapeSizeInBytes:{type:"long"},TapeStatus:{}}}},Marker:{}}}},DescribeTapes:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},TapeARNs:{shape:"S1l"},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Tapes:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeBarcode:{},TapeSizeInBytes:{type:"long"},TapeStatus:{},VTLDevice:{},Progress:{type:"double"}}}},Marker:{}}}},DescribeUploadBuffer:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},DiskIds:{shape:"Sc"},UploadBufferUsedInBytes:{type:"long"},UploadBufferAllocatedInBytes:{type:"long"}}}},DescribeVTLDevices:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},VTLDeviceARNs:{type:"list",member:{}},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{},VTLDevices:{type:"list",member:{type:"structure",members:{VTLDeviceARN:{},VTLDeviceType:{},VTLDeviceVendor:{},VTLDeviceProductIdentifier:{},DeviceiSCSIAttributes:{type:"structure",members:{TargetARN:{},NetworkInterfaceId:{},NetworkInterfacePort:{type:"integer"},ChapEnabled:{type:"boolean"}}}}}},Marker:{}}}},DescribeWorkingStorage:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},DiskIds:{shape:"Sc"},WorkingStorageUsedInBytes:{type:"long"},WorkingStorageAllocatedInBytes:{type:"long"}}}},DisableGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},ListGateways:{input:{type:"structure",members:{Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Gateways:{type:"list",member:{type:"structure",members:{GatewayId:{},GatewayARN:{},GatewayType:{},GatewayOperationalState:{},GatewayName:{}}}},Marker:{}}}},ListLocalDisks:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},Disks:{type:"list",member:{type:"structure",members:{DiskId:{},DiskPath:{},DiskNode:{},DiskStatus:{},DiskSizeInBytes:{type:"long"},DiskAllocationType:{},DiskAllocationResource:{}}}}}}},ListTagsForResource:{input:{type:"structure",required:["ResourceARN"],members:{ResourceARN:{},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{ResourceARN:{},Marker:{},Tags:{shape:"Sh"}}}},ListTapes:{input:{type:"structure",members:{TapeARNs:{shape:"S1l"},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{TapeInfos:{type:"list",member:{type:"structure",members:{TapeARN:{},TapeBarcode:{},TapeSizeInBytes:{type:"long"},TapeStatus:{},GatewayARN:{}}}},Marker:{}}}},ListVolumeInitiators:{input:{type:"structure",required:["VolumeARN"],members:{VolumeARN:{}}},output:{type:"structure",members:{Initiators:{type:"list",member:{}}}}},ListVolumeRecoveryPoints:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{},VolumeRecoveryPointInfos:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeSizeInBytes:{type:"long"},VolumeUsageInBytes:{type:"long"},VolumeRecoveryPointTime:{}}}}}}},ListVolumes:{input:{type:"structure",members:{GatewayARN:{},Marker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{},Marker:{},VolumeInfos:{type:"list",member:{type:"structure",members:{VolumeARN:{},VolumeId:{},GatewayARN:{},GatewayId:{},VolumeType:{},VolumeSizeInBytes:{type:"long"}}}}}}},RemoveTagsFromResource:{input:{type:"structure",required:["ResourceARN","TagKeys"],members:{ResourceARN:{},TagKeys:{type:"list",member:{}}}},output:{type:"structure",members:{ResourceARN:{}}}},ResetCache:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},RetrieveTapeArchive:{input:{type:"structure",required:["TapeARN","GatewayARN"],members:{TapeARN:{},GatewayARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},RetrieveTapeRecoveryPoint:{input:{type:"structure",required:["TapeARN","GatewayARN"],members:{TapeARN:{},GatewayARN:{}}},output:{type:"structure",members:{TapeARN:{}}}},SetLocalConsolePassword:{input:{type:"structure",required:["GatewayARN","LocalConsolePassword"],members:{GatewayARN:{},LocalConsolePassword:{type:"string",sensitive:!0}}},output:{type:"structure",members:{GatewayARN:{}}}},ShutdownGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},StartGateway:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateBandwidthRateLimit:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},AverageUploadRateLimitInBitsPerSec:{type:"long"},AverageDownloadRateLimitInBitsPerSec:{type:"long"}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateChapCredentials:{input:{type:"structure",required:["TargetARN","SecretToAuthenticateInitiator","InitiatorName"],members:{TargetARN:{},SecretToAuthenticateInitiator:{},InitiatorName:{},SecretToAuthenticateTarget:{}}},output:{type:"structure",members:{TargetARN:{},InitiatorName:{}}}},UpdateGatewayInformation:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{},GatewayName:{},GatewayTimezone:{}}},output:{type:"structure",members:{GatewayARN:{},GatewayName:{}}}},UpdateGatewaySoftwareNow:{input:{type:"structure",required:["GatewayARN"],members:{GatewayARN:{}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateMaintenanceStartTime:{input:{type:"structure",required:["GatewayARN","HourOfDay","MinuteOfHour","DayOfWeek"],members:{GatewayARN:{},HourOfDay:{type:"integer"},MinuteOfHour:{type:"integer"},DayOfWeek:{type:"integer"}}},output:{type:"structure",members:{GatewayARN:{}}}},UpdateSnapshotSchedule:{input:{type:"structure",required:["VolumeARN","StartAt","RecurrenceInHours"],members:{VolumeARN:{},StartAt:{type:"integer"},RecurrenceInHours:{type:"integer"},Description:{}}},output:{type:"structure",members:{VolumeARN:{}}}},UpdateVTLDeviceType:{input:{type:"structure",required:["VTLDeviceARN","DeviceType"],members:{VTLDeviceARN:{},DeviceType:{}}},output:{type:"structure",members:{VTLDeviceARN:{}}}}},shapes:{Sc:{type:"list",member:{}},Sh:{type:"list",member:{type:"structure",required:["Key","Value"],members:{Key:{},Value:{}}}},S1l:{type:"list",member:{}},S2a:{type:"list",member:{}},S2i:{type:"structure",members:{TargetARN:{},NetworkInterfaceId:{},NetworkInterfacePort:{type:"integer"},LunNumber:{type:"integer"},ChapEnabled:{type:"boolean"}}}}}},{}],123:[function(e,t,r){t.exports={pagination:{DescribeCachediSCSIVolumes:{result_key:"CachediSCSIVolumes"},DescribeStorediSCSIVolumes:{result_key:"StorediSCSIVolumes"},DescribeTapeArchives:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"TapeArchives"},DescribeTapeRecoveryPoints:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"TapeRecoveryPointInfos"},DescribeTapes:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"Tapes"},DescribeVTLDevices:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"VTLDevices"},ListGateways:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"Gateways"},ListLocalDisks:{result_key:"Disks"},ListVolumeRecoveryPoints:{result_key:"VolumeRecoveryPointInfos"},ListVolumes:{input_token:"Marker",limit_key:"Limit",output_token:"Marker",result_key:"VolumeInfos"}}}},{}],124:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2012-08-10",endpointPrefix:"streams.dynamodb",jsonVersion:"1.0",protocol:"json",serviceFullName:"Amazon DynamoDB Streams",signatureVersion:"v4",signingName:"dynamodb",targetPrefix:"DynamoDBStreams_20120810"},operations:{DescribeStream:{input:{type:"structure",required:["StreamArn"],members:{StreamArn:{},Limit:{type:"integer"},ExclusiveStartShardId:{}}},output:{type:"structure",members:{StreamDescription:{type:"structure",members:{StreamArn:{},StreamLabel:{},StreamStatus:{},StreamViewType:{},CreationRequestDateTime:{type:"timestamp"},TableName:{},KeySchema:{type:"list",member:{type:"structure",required:["AttributeName","KeyType"],members:{AttributeName:{},KeyType:{}}}},Shards:{type:"list",member:{type:"structure",members:{ShardId:{},SequenceNumberRange:{type:"structure",members:{StartingSequenceNumber:{},EndingSequenceNumber:{}}},ParentShardId:{}}}},LastEvaluatedShardId:{}}}}}},GetRecords:{input:{type:"structure",required:["ShardIterator"],members:{ShardIterator:{},Limit:{type:"integer"}}},output:{type:"structure",members:{Records:{type:"list",member:{type:"structure",members:{eventID:{},eventName:{},eventVersion:{},eventSource:{},awsRegion:{},dynamodb:{type:"structure",members:{ApproximateCreationDateTime:{type:"timestamp"},Keys:{shape:"Sr"},NewImage:{shape:"Sr"},OldImage:{shape:"Sr"},SequenceNumber:{},SizeBytes:{type:"long"},StreamViewType:{}}}}}},NextShardIterator:{}}}},GetShardIterator:{input:{type:"structure",required:["StreamArn","ShardId","ShardIteratorType"],members:{StreamArn:{},ShardId:{},ShardIteratorType:{},SequenceNumber:{}}},output:{type:"structure",members:{ShardIterator:{}}}},ListStreams:{input:{type:"structure",members:{TableName:{},Limit:{type:"integer"},ExclusiveStartStreamArn:{}}},output:{type:"structure",members:{Streams:{type:"list",member:{type:"structure",members:{StreamArn:{},TableName:{},StreamLabel:{}}}},LastEvaluatedStreamArn:{}}}}},shapes:{Sr:{type:"map",key:{},value:{shape:"St"}},St:{type:"structure",members:{S:{},N:{},B:{type:"blob"},SS:{type:"list",member:{}},NS:{type:"list",member:{}},BS:{type:"list",member:{type:"blob"}},M:{type:"map",key:{},value:{shape:"St"}},L:{type:"list",member:{shape:"St"}},NULL:{type:"boolean"},BOOL:{type:"boolean"}}}}}},{}],125:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2011-06-15",endpointPrefix:"sts",globalEndpoint:"sts.amazonaws.com",protocol:"query",serviceAbbreviation:"AWS STS",serviceFullName:"AWS Security Token Service",signatureVersion:"v4",xmlNamespace:"https://sts.amazonaws.com/doc/2011-06-15/"},operations:{AssumeRole:{input:{type:"structure",required:["RoleArn","RoleSessionName"],members:{RoleArn:{},RoleSessionName:{},Policy:{},DurationSeconds:{type:"integer"},ExternalId:{},SerialNumber:{},TokenCode:{}}},output:{resultWrapper:"AssumeRoleResult",type:"structure",members:{Credentials:{shape:"Sa"},AssumedRoleUser:{shape:"Sf"},PackedPolicySize:{type:"integer"}}}},AssumeRoleWithSAML:{input:{type:"structure",required:["RoleArn","PrincipalArn","SAMLAssertion"],members:{RoleArn:{},PrincipalArn:{},SAMLAssertion:{},Policy:{},DurationSeconds:{type:"integer"}}},output:{resultWrapper:"AssumeRoleWithSAMLResult",type:"structure",members:{Credentials:{shape:"Sa"},AssumedRoleUser:{shape:"Sf"},PackedPolicySize:{type:"integer"},Subject:{},SubjectType:{},Issuer:{},Audience:{},NameQualifier:{}}}},AssumeRoleWithWebIdentity:{input:{type:"structure",required:["RoleArn","RoleSessionName","WebIdentityToken"],members:{RoleArn:{},RoleSessionName:{},WebIdentityToken:{},ProviderId:{},Policy:{},DurationSeconds:{type:"integer"}}},output:{resultWrapper:"AssumeRoleWithWebIdentityResult",type:"structure",members:{Credentials:{shape:"Sa"},SubjectFromWebIdentityToken:{},AssumedRoleUser:{shape:"Sf"},PackedPolicySize:{type:"integer"},Provider:{},Audience:{}}}},DecodeAuthorizationMessage:{input:{type:"structure",required:["EncodedMessage"],members:{EncodedMessage:{}}},output:{resultWrapper:"DecodeAuthorizationMessageResult",type:"structure",members:{DecodedMessage:{}}}},GetCallerIdentity:{input:{type:"structure",members:{}},output:{resultWrapper:"GetCallerIdentityResult",type:"structure",members:{UserId:{},Account:{},Arn:{}}}},GetFederationToken:{input:{type:"structure",required:["Name"],members:{Name:{},Policy:{},DurationSeconds:{type:"integer"}}},output:{resultWrapper:"GetFederationTokenResult",type:"structure",members:{Credentials:{shape:"Sa"},FederatedUser:{type:"structure",required:["FederatedUserId","Arn"],members:{FederatedUserId:{},Arn:{}}},PackedPolicySize:{type:"integer"}}}},GetSessionToken:{input:{type:"structure",members:{DurationSeconds:{type:"integer"},SerialNumber:{},TokenCode:{}}},output:{resultWrapper:"GetSessionTokenResult",type:"structure",members:{Credentials:{shape:"Sa"}}}}},shapes:{Sa:{type:"structure",required:["AccessKeyId","SecretAccessKey","SessionToken","Expiration"],members:{AccessKeyId:{},SecretAccessKey:{},SessionToken:{},Expiration:{type:"timestamp"}}},Sf:{type:"structure",required:["AssumedRoleId","Arn"],members:{AssumedRoleId:{},Arn:{}}}}}},{}],126:[function(e,t,r){t.exports={version:"2.0",metadata:{apiVersion:"2015-08-24",endpointPrefix:"waf",jsonVersion:"1.1",protocol:"json",serviceAbbreviation:"WAF",serviceFullName:"AWS WAF",signatureVersion:"v4",targetPrefix:"AWSWAF_20150824"},operations:{CreateByteMatchSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{ByteMatchSet:{shape:"S5"},ChangeToken:{}}}},CreateIPSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{IPSet:{shape:"Sh"},ChangeToken:{}}}},CreateRule:{input:{type:"structure",required:["Name","MetricName","ChangeToken"],members:{Name:{},MetricName:{},ChangeToken:{}}},output:{type:"structure",members:{Rule:{shape:"Sp"},ChangeToken:{}}}},CreateSizeConstraintSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{SizeConstraintSet:{shape:"Sw"},ChangeToken:{}}}},CreateSqlInjectionMatchSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{SqlInjectionMatchSet:{shape:"S13"},ChangeToken:{}}}},CreateWebACL:{input:{type:"structure",required:["Name","MetricName","DefaultAction","ChangeToken"],members:{Name:{},MetricName:{},DefaultAction:{shape:"S17"},ChangeToken:{}}},output:{type:"structure",members:{WebACL:{shape:"S1a"},ChangeToken:{}}}},CreateXssMatchSet:{input:{type:"structure",required:["Name","ChangeToken"],members:{Name:{},ChangeToken:{}}},output:{type:"structure",members:{XssMatchSet:{shape:"S1g"},ChangeToken:{}}}},DeleteByteMatchSet:{input:{type:"structure",required:["ByteMatchSetId","ChangeToken"],members:{ByteMatchSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteIPSet:{input:{type:"structure",required:["IPSetId","ChangeToken"],members:{IPSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteRule:{input:{type:"structure",required:["RuleId","ChangeToken"],members:{RuleId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteSizeConstraintSet:{input:{type:"structure",required:["SizeConstraintSetId","ChangeToken"],members:{SizeConstraintSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteSqlInjectionMatchSet:{input:{type:"structure",required:["SqlInjectionMatchSetId","ChangeToken"],members:{SqlInjectionMatchSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteWebACL:{input:{type:"structure",required:["WebACLId","ChangeToken"],members:{WebACLId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},DeleteXssMatchSet:{input:{type:"structure",required:["XssMatchSetId","ChangeToken"],members:{XssMatchSetId:{},ChangeToken:{}}},output:{type:"structure",members:{ChangeToken:{}}}},GetByteMatchSet:{input:{type:"structure",required:["ByteMatchSetId"],members:{ByteMatchSetId:{}}},output:{type:"structure",members:{ByteMatchSet:{shape:"S5"}}}},GetChangeToken:{input:{type:"structure",members:{}},output:{type:"structure",members:{ChangeToken:{}}}},GetChangeTokenStatus:{input:{type:"structure",required:["ChangeToken"],members:{ChangeToken:{}}},output:{type:"structure",members:{ChangeTokenStatus:{}}}},GetIPSet:{input:{type:"structure",required:["IPSetId"],members:{IPSetId:{}}},output:{type:"structure",members:{IPSet:{shape:"Sh"}}}},GetRule:{input:{type:"structure",required:["RuleId"],members:{RuleId:{}}},output:{type:"structure",members:{Rule:{shape:"Sp"}}}},GetSampledRequests:{input:{type:"structure",required:["WebAclId","RuleId","TimeWindow","MaxItems"],members:{WebAclId:{},RuleId:{},TimeWindow:{shape:"S29"},MaxItems:{type:"long"}}},output:{type:"structure",members:{SampledRequests:{type:"list",member:{type:"structure",required:["Request","Weight"],members:{Request:{type:"structure",members:{ClientIP:{},Country:{},URI:{},Method:{},HTTPVersion:{},Headers:{type:"list",member:{type:"structure",members:{Name:{},Value:{}}}}}},Weight:{type:"long"},Timestamp:{type:"timestamp"},Action:{}}}},PopulationSize:{type:"long"},TimeWindow:{shape:"S29"}}}},GetSizeConstraintSet:{input:{type:"structure",required:["SizeConstraintSetId"],members:{SizeConstraintSetId:{}}},output:{type:"structure",members:{SizeConstraintSet:{shape:"Sw"}}}},GetSqlInjectionMatchSet:{input:{type:"structure",required:["SqlInjectionMatchSetId"],members:{SqlInjectionMatchSetId:{}}},output:{type:"structure",members:{SqlInjectionMatchSet:{shape:"S13"}}}},GetWebACL:{input:{type:"structure",required:["WebACLId"],members:{WebACLId:{}}},output:{type:"structure",members:{WebACL:{shape:"S1a"}}}},GetXssMatchSet:{input:{type:"structure",required:["XssMatchSetId"],members:{XssMatchSetId:{}}},output:{type:"structure",members:{XssMatchSet:{shape:"S1g"}}}},ListByteMatchSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},ByteMatchSets:{type:"list",member:{type:"structure",required:["ByteMatchSetId","Name"],members:{ByteMatchSetId:{},Name:{}}}}}}},ListIPSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},IPSets:{type:"list",member:{type:"structure",required:["IPSetId","Name"],members:{IPSetId:{},Name:{}}}}}}},ListRules:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},Rules:{type:"list",member:{type:"structure",required:["RuleId","Name"],members:{RuleId:{},Name:{}}}}}}},ListSizeConstraintSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},SizeConstraintSets:{type:"list",member:{type:"structure",required:["SizeConstraintSetId","Name"],members:{SizeConstraintSetId:{},Name:{}}}}}}},ListSqlInjectionMatchSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},SqlInjectionMatchSets:{type:"list",member:{type:"structure",required:["SqlInjectionMatchSetId","Name"],members:{SqlInjectionMatchSetId:{},Name:{}}}}}}},ListWebACLs:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},WebACLs:{type:"list",member:{type:"structure",required:["WebACLId","Name"],members:{WebACLId:{},Name:{}}}}}}},ListXssMatchSets:{input:{type:"structure",members:{NextMarker:{},Limit:{type:"integer"}}},output:{type:"structure",members:{NextMarker:{},XssMatchSets:{type:"list",member:{type:"structure",required:["XssMatchSetId","Name"],members:{XssMatchSetId:{},Name:{}}}}}}},UpdateByteMatchSet:{input:{type:"structure",required:["ByteMatchSetId","ChangeToken","Updates"],members:{ByteMatchSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","ByteMatchTuple"],members:{Action:{},ByteMatchTuple:{shape:"S8"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateIPSet:{input:{type:"structure",required:["IPSetId","ChangeToken","Updates"],members:{IPSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","IPSetDescriptor"],members:{Action:{},IPSetDescriptor:{shape:"Sj"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateRule:{input:{type:"structure",required:["RuleId","ChangeToken","Updates"],members:{RuleId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","Predicate"],members:{Action:{},Predicate:{shape:"Sr"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateSizeConstraintSet:{input:{type:"structure",required:["SizeConstraintSetId","ChangeToken","Updates"],members:{SizeConstraintSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","SizeConstraint"],members:{Action:{},SizeConstraint:{shape:"Sy"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateSqlInjectionMatchSet:{input:{type:"structure",required:["SqlInjectionMatchSetId","ChangeToken","Updates"],members:{SqlInjectionMatchSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","SqlInjectionMatchTuple"],members:{Action:{},SqlInjectionMatchTuple:{shape:"S15"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateWebACL:{input:{type:"structure",required:["WebACLId","ChangeToken"],members:{WebACLId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","ActivatedRule"],members:{Action:{},ActivatedRule:{shape:"S1c"}}}},DefaultAction:{shape:"S17"}}},output:{type:"structure",members:{ChangeToken:{}}}},UpdateXssMatchSet:{input:{type:"structure",required:["XssMatchSetId","ChangeToken","Updates"],members:{XssMatchSetId:{},ChangeToken:{},Updates:{type:"list",member:{type:"structure",required:["Action","XssMatchTuple"],members:{Action:{},XssMatchTuple:{shape:"S1i"}}}}}},output:{type:"structure",members:{ChangeToken:{}}}}},shapes:{S5:{type:"structure",required:["ByteMatchSetId","ByteMatchTuples"],members:{ByteMatchSetId:{},Name:{},ByteMatchTuples:{type:"list",member:{shape:"S8"}}}},S8:{type:"structure",required:["FieldToMatch","TargetString","TextTransformation","PositionalConstraint"],members:{FieldToMatch:{shape:"S9"},TargetString:{type:"blob"},TextTransformation:{},PositionalConstraint:{}}},S9:{type:"structure",required:["Type"],members:{Type:{},Data:{}}},Sh:{type:"structure",required:["IPSetId","IPSetDescriptors"],members:{IPSetId:{},Name:{},IPSetDescriptors:{type:"list",member:{shape:"Sj"}}}},Sj:{type:"structure",required:["Type","Value"],members:{Type:{},Value:{}}},Sp:{type:"structure",required:["RuleId","Predicates"],members:{RuleId:{},Name:{},MetricName:{},Predicates:{type:"list",member:{shape:"Sr"}}}},Sr:{type:"structure",required:["Negated","Type","DataId"],members:{Negated:{type:"boolean"},Type:{},DataId:{}}},Sw:{type:"structure",required:["SizeConstraintSetId","SizeConstraints"],members:{SizeConstraintSetId:{},Name:{},SizeConstraints:{type:"list",member:{shape:"Sy"}}}},Sy:{type:"structure",required:["FieldToMatch","TextTransformation","ComparisonOperator","Size"],members:{FieldToMatch:{shape:"S9"},TextTransformation:{},ComparisonOperator:{},Size:{type:"long"}}},S13:{type:"structure",required:["SqlInjectionMatchSetId","SqlInjectionMatchTuples"],members:{SqlInjectionMatchSetId:{},Name:{},SqlInjectionMatchTuples:{type:"list",member:{shape:"S15"}}}},S15:{type:"structure",required:["FieldToMatch","TextTransformation"],members:{FieldToMatch:{shape:"S9"},TextTransformation:{}}},S17:{type:"structure",required:["Type"],members:{Type:{}}},S1a:{type:"structure",required:["WebACLId","DefaultAction","Rules"],members:{WebACLId:{},Name:{},MetricName:{},DefaultAction:{shape:"S17"},Rules:{type:"list",member:{shape:"S1c"}}}},S1c:{type:"structure",required:["Priority","RuleId","Action"],members:{Priority:{type:"integer"},RuleId:{},Action:{shape:"S17"}}},S1g:{type:"structure",required:["XssMatchSetId","XssMatchTuples"],members:{XssMatchSetId:{},Name:{},XssMatchTuples:{type:"list",member:{shape:"S1i"}}}},S1i:{type:"structure",required:["FieldToMatch","TextTransformation"],members:{FieldToMatch:{shape:"S9"},TextTransformation:{}}},S29:{type:"structure",required:["StartTime","EndTime"],members:{StartTime:{type:"timestamp"},EndTime:{type:"timestamp"}}}}}},{}],127:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.acm={},a.ACM=s.defineService("acm",["2015-12-08"]),Object.defineProperty(i.services.acm,"2015-12-08",{get:function(){var t=e("../apis/acm-2015-12-08.min.json");return t.paginators=e("../apis/acm-2015-12-08.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ACM},{"../apis/acm-2015-12-08.min.json":1,"../apis/acm-2015-12-08.paginators.json":2,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],128:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.apigateway={},a.APIGateway=s.defineService("apigateway",["2015-07-09"]),e("../lib/services/apigateway"),Object.defineProperty(i.services.apigateway,"2015-07-09",{get:function(){var t=e("../apis/apigateway-2015-07-09.min.json");return t.paginators=e("../apis/apigateway-2015-07-09.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.APIGateway},{"../apis/apigateway-2015-07-09.min.json":3,"../apis/apigateway-2015-07-09.paginators.json":4,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/apigateway":226}],129:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.applicationautoscaling={},a.ApplicationAutoScaling=s.defineService("applicationautoscaling",["2016-02-06"]),Object.defineProperty(i.services.applicationautoscaling,"2016-02-06",{get:function(){var t=e("../apis/application-autoscaling-2016-02-06.min.json");return t.paginators=e("../apis/application-autoscaling-2016-02-06.paginators.json").pagination, -t},enumerable:!0,configurable:!0}),t.exports=a.ApplicationAutoScaling},{"../apis/application-autoscaling-2016-02-06.min.json":5,"../apis/application-autoscaling-2016-02-06.paginators.json":6,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],130:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.autoscaling={},a.AutoScaling=s.defineService("autoscaling",["2011-01-01"]),Object.defineProperty(i.services.autoscaling,"2011-01-01",{get:function(){var t=e("../apis/autoscaling-2011-01-01.min.json");return t.paginators=e("../apis/autoscaling-2011-01-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.AutoScaling},{"../apis/autoscaling-2011-01-01.min.json":7,"../apis/autoscaling-2011-01-01.paginators.json":8,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],131:[function(e,t,r){e("../lib/node_loader");e("../lib/core");t.exports={ACM:e("./acm"),APIGateway:e("./apigateway"),ApplicationAutoScaling:e("./applicationautoscaling"),AutoScaling:e("./autoscaling"),CloudFormation:e("./cloudformation"),CloudFront:e("./cloudfront"),CloudHSM:e("./cloudhsm"),CloudTrail:e("./cloudtrail"),CloudWatch:e("./cloudwatch"),CloudWatchEvents:e("./cloudwatchevents"),CloudWatchLogs:e("./cloudwatchlogs"),CodeCommit:e("./codecommit"),CodeDeploy:e("./codedeploy"),CodePipeline:e("./codepipeline"),CognitoIdentity:e("./cognitoidentity"),CognitoIdentityServiceProvider:e("./cognitoidentityserviceprovider"),CognitoSync:e("./cognitosync"),ConfigService:e("./configservice"),DeviceFarm:e("./devicefarm"),DirectConnect:e("./directconnect"),DynamoDB:e("./dynamodb"),DynamoDBStreams:e("./dynamodbstreams"),EC2:e("./ec2"),ECR:e("./ecr"),ECS:e("./ecs"),ElastiCache:e("./elasticache"),ElasticBeanstalk:e("./elasticbeanstalk"),ELB:e("./elb"),ELBv2:e("./elbv2"),EMR:e("./emr"),ElasticTranscoder:e("./elastictranscoder"),Firehose:e("./firehose"),GameLift:e("./gamelift"),Inspector:e("./inspector"),Iot:e("./iot"),IotData:e("./iotdata"),Kinesis:e("./kinesis"),KMS:e("./kms"),Lambda:e("./lambda"),MachineLearning:e("./machinelearning"),MarketplaceCommerceAnalytics:e("./marketplacecommerceanalytics"),MobileAnalytics:e("./mobileanalytics"),OpsWorks:e("./opsworks"),RDS:e("./rds"),Redshift:e("./redshift"),Route53:e("./route53"),Route53Domains:e("./route53domains"),S3:e("./s3"),ServiceCatalog:e("./servicecatalog"),SES:e("./ses"),SNS:e("./sns"),SQS:e("./sqs"),SSM:e("./ssm"),StorageGateway:e("./storagegateway"),STS:e("./sts"),WAF:e("./waf")}},{"../lib/core":188,"../lib/node_loader":185,"./acm":127,"./apigateway":128,"./applicationautoscaling":129,"./autoscaling":130,"./cloudformation":132,"./cloudfront":133,"./cloudhsm":134,"./cloudtrail":135,"./cloudwatch":136,"./cloudwatchevents":137,"./cloudwatchlogs":138,"./codecommit":139,"./codedeploy":140,"./codepipeline":141,"./cognitoidentity":142,"./cognitoidentityserviceprovider":143,"./cognitosync":144,"./configservice":145,"./devicefarm":146,"./directconnect":147,"./dynamodb":148,"./dynamodbstreams":149,"./ec2":150,"./ecr":151,"./ecs":152,"./elasticache":153,"./elasticbeanstalk":154,"./elastictranscoder":155,"./elb":156,"./elbv2":157,"./emr":158,"./firehose":159,"./gamelift":160,"./inspector":161,"./iot":162,"./iotdata":163,"./kinesis":164,"./kms":165,"./lambda":166,"./machinelearning":167,"./marketplacecommerceanalytics":168,"./mobileanalytics":169,"./opsworks":170,"./rds":171,"./redshift":172,"./route53":173,"./route53domains":174,"./s3":175,"./servicecatalog":176,"./ses":177,"./sns":178,"./sqs":179,"./ssm":180,"./storagegateway":181,"./sts":182,"./waf":183}],132:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudformation={},a.CloudFormation=s.defineService("cloudformation",["2010-05-15"]),Object.defineProperty(i.services.cloudformation,"2010-05-15",{get:function(){var t=e("../apis/cloudformation-2010-05-15.min.json");return t.paginators=e("../apis/cloudformation-2010-05-15.paginators.json").pagination,t.waiters=e("../apis/cloudformation-2010-05-15.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CloudFormation},{"../apis/cloudformation-2010-05-15.min.json":9,"../apis/cloudformation-2010-05-15.paginators.json":10,"../apis/cloudformation-2010-05-15.waiters2.json":11,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],133:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudfront={},a.CloudFront=s.defineService("cloudfront",["2013-05-12*","2013-11-11*","2014-05-31*","2014-10-21*","2014-11-06*","2015-04-17*","2015-07-27*","2015-09-17*","2016-01-13*","2016-01-28*","2016-08-01*","2016-08-20*","2016-09-07"]),e("../lib/services/cloudfront"),Object.defineProperty(i.services.cloudfront,"2016-09-07",{get:function(){var t=e("../apis/cloudfront-2016-09-07.min.json");return t.paginators=e("../apis/cloudfront-2016-09-07.paginators.json").pagination,t.waiters=e("../apis/cloudfront-2016-09-07.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CloudFront},{"../apis/cloudfront-2016-09-07.min.json":12,"../apis/cloudfront-2016-09-07.paginators.json":13,"../apis/cloudfront-2016-09-07.waiters2.json":14,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cloudfront":227}],134:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudhsm={},a.CloudHSM=s.defineService("cloudhsm",["2014-05-30"]),Object.defineProperty(i.services.cloudhsm,"2014-05-30",{get:function(){var t=e("../apis/cloudhsm-2014-05-30.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CloudHSM},{"../apis/cloudhsm-2014-05-30.min.json":15,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],135:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudtrail={},a.CloudTrail=s.defineService("cloudtrail",["2013-11-01"]),Object.defineProperty(i.services.cloudtrail,"2013-11-01",{get:function(){var t=e("../apis/cloudtrail-2013-11-01.min.json");return t.paginators=e("../apis/cloudtrail-2013-11-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.CloudTrail},{"../apis/cloudtrail-2013-11-01.min.json":16,"../apis/cloudtrail-2013-11-01.paginators.json":17,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],136:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudwatch={},a.CloudWatch=s.defineService("cloudwatch",["2010-08-01"]),Object.defineProperty(i.services.cloudwatch,"2010-08-01",{get:function(){var t=e("../apis/monitoring-2010-08-01.min.json");return t.paginators=e("../apis/monitoring-2010-08-01.paginators.json").pagination,t.waiters=e("../apis/monitoring-2010-08-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CloudWatch},{"../apis/monitoring-2010-08-01.min.json":88,"../apis/monitoring-2010-08-01.paginators.json":89,"../apis/monitoring-2010-08-01.waiters2.json":90,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],137:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudwatchevents={},a.CloudWatchEvents=s.defineService("cloudwatchevents",["2014-02-03*","2015-10-07"]),Object.defineProperty(i.services.cloudwatchevents,"2015-10-07",{get:function(){var t=e("../apis/events-2015-10-07.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CloudWatchEvents},{"../apis/events-2015-10-07.min.json":65,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],138:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cloudwatchlogs={},a.CloudWatchLogs=s.defineService("cloudwatchlogs",["2014-03-28"]),Object.defineProperty(i.services.cloudwatchlogs,"2014-03-28",{get:function(){var t=e("../apis/logs-2014-03-28.min.json");return t.paginators=e("../apis/logs-2014-03-28.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.CloudWatchLogs},{"../apis/logs-2014-03-28.min.json":80,"../apis/logs-2014-03-28.paginators.json":81,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],139:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.codecommit={},a.CodeCommit=s.defineService("codecommit",["2015-04-13"]),Object.defineProperty(i.services.codecommit,"2015-04-13",{get:function(){var t=e("../apis/codecommit-2015-04-13.min.json");return t.paginators=e("../apis/codecommit-2015-04-13.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.CodeCommit},{"../apis/codecommit-2015-04-13.min.json":18,"../apis/codecommit-2015-04-13.paginators.json":19,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],140:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.codedeploy={},a.CodeDeploy=s.defineService("codedeploy",["2014-10-06"]),Object.defineProperty(i.services.codedeploy,"2014-10-06",{get:function(){var t=e("../apis/codedeploy-2014-10-06.min.json");return t.paginators=e("../apis/codedeploy-2014-10-06.paginators.json").pagination,t.waiters=e("../apis/codedeploy-2014-10-06.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.CodeDeploy},{"../apis/codedeploy-2014-10-06.min.json":20,"../apis/codedeploy-2014-10-06.paginators.json":21,"../apis/codedeploy-2014-10-06.waiters2.json":22,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],141:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.codepipeline={},a.CodePipeline=s.defineService("codepipeline",["2015-07-09"]),Object.defineProperty(i.services.codepipeline,"2015-07-09",{get:function(){var t=e("../apis/codepipeline-2015-07-09.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CodePipeline},{"../apis/codepipeline-2015-07-09.min.json":23,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],142:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cognitoidentity={},a.CognitoIdentity=s.defineService("cognitoidentity",["2014-06-30"]),e("../lib/services/cognitoidentity"),Object.defineProperty(i.services.cognitoidentity,"2014-06-30",{get:function(){var t=e("../apis/cognito-identity-2014-06-30.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CognitoIdentity},{"../apis/cognito-identity-2014-06-30.min.json":24,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/cognitoidentity":228}],143:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cognitoidentityserviceprovider={},a.CognitoIdentityServiceProvider=s.defineService("cognitoidentityserviceprovider",["2016-04-18"]),Object.defineProperty(i.services.cognitoidentityserviceprovider,"2016-04-18",{get:function(){var t=e("../apis/cognito-idp-2016-04-18.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CognitoIdentityServiceProvider},{"../apis/cognito-idp-2016-04-18.min.json":25,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],144:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.cognitosync={},a.CognitoSync=s.defineService("cognitosync",["2014-06-30"]),Object.defineProperty(i.services.cognitosync,"2014-06-30",{get:function(){var t=e("../apis/cognito-sync-2014-06-30.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.CognitoSync},{"../apis/cognito-sync-2014-06-30.min.json":26,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],145:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.configservice={},a.ConfigService=s.defineService("configservice",["2014-11-12"]),Object.defineProperty(i.services.configservice,"2014-11-12",{get:function(){var t=e("../apis/config-2014-11-12.min.json");return t.paginators=e("../apis/config-2014-11-12.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ConfigService},{"../apis/config-2014-11-12.min.json":27,"../apis/config-2014-11-12.paginators.json":28,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],146:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.devicefarm={},a.DeviceFarm=s.defineService("devicefarm",["2015-06-23"]),Object.defineProperty(i.services.devicefarm,"2015-06-23",{get:function(){var t=e("../apis/devicefarm-2015-06-23.min.json");return t.paginators=e("../apis/devicefarm-2015-06-23.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.DeviceFarm},{"../apis/devicefarm-2015-06-23.min.json":29,"../apis/devicefarm-2015-06-23.paginators.json":30,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],147:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.directconnect={},a.DirectConnect=s.defineService("directconnect",["2012-10-25"]),Object.defineProperty(i.services.directconnect,"2012-10-25",{get:function(){var t=e("../apis/directconnect-2012-10-25.min.json");return t.paginators=e("../apis/directconnect-2012-10-25.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.DirectConnect},{"../apis/directconnect-2012-10-25.min.json":31,"../apis/directconnect-2012-10-25.paginators.json":32,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],148:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.dynamodb={},a.DynamoDB=s.defineService("dynamodb",["2011-12-05","2012-08-10"]),e("../lib/services/dynamodb"),Object.defineProperty(i.services.dynamodb,"2011-12-05",{get:function(){var t=e("../apis/dynamodb-2011-12-05.min.json");return t.paginators=e("../apis/dynamodb-2011-12-05.paginators.json").pagination,t.waiters=e("../apis/dynamodb-2011-12-05.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.dynamodb,"2012-08-10",{get:function(){var t=e("../apis/dynamodb-2012-08-10.min.json");return t.paginators=e("../apis/dynamodb-2012-08-10.paginators.json").pagination,t.waiters=e("../apis/dynamodb-2012-08-10.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.DynamoDB},{"../apis/dynamodb-2011-12-05.min.json":33,"../apis/dynamodb-2011-12-05.paginators.json":34,"../apis/dynamodb-2011-12-05.waiters2.json":35,"../apis/dynamodb-2012-08-10.min.json":36,"../apis/dynamodb-2012-08-10.paginators.json":37,"../apis/dynamodb-2012-08-10.waiters2.json":38,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/dynamodb":229}],149:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.dynamodbstreams={},a.DynamoDBStreams=s.defineService("dynamodbstreams",["2012-08-10"]),Object.defineProperty(i.services.dynamodbstreams,"2012-08-10",{get:function(){var t=e("../apis/streams.dynamodb-2012-08-10.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.DynamoDBStreams},{"../apis/streams.dynamodb-2012-08-10.min.json":124,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],150:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ec2={},a.EC2=s.defineService("ec2",["2013-06-15*","2013-10-15*","2014-02-01*","2014-05-01*","2014-06-15*","2014-09-01*","2014-10-01*","2015-03-01*","2015-04-15*","2015-10-01*","2016-04-01*","2016-09-15"]),e("../lib/services/ec2"),Object.defineProperty(i.services.ec2,"2016-09-15",{get:function(){var t=e("../apis/ec2-2016-09-15.min.json");return t.paginators=e("../apis/ec2-2016-09-15.paginators.json").pagination,t.waiters=e("../apis/ec2-2016-09-15.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.EC2},{"../apis/ec2-2016-09-15.min.json":39,"../apis/ec2-2016-09-15.paginators.json":40,"../apis/ec2-2016-09-15.waiters2.json":41,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/ec2":230}],151:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ecr={},a.ECR=s.defineService("ecr",["2015-09-21"]),Object.defineProperty(i.services.ecr,"2015-09-21",{get:function(){var t=e("../apis/ecr-2015-09-21.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.ECR},{"../apis/ecr-2015-09-21.min.json":42,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],152:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ecs={},a.ECS=s.defineService("ecs",["2014-11-13"]),Object.defineProperty(i.services.ecs,"2014-11-13",{get:function(){var t=e("../apis/ecs-2014-11-13.min.json");return t.paginators=e("../apis/ecs-2014-11-13.paginators.json").pagination,t.waiters=e("../apis/ecs-2014-11-13.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ECS},{"../apis/ecs-2014-11-13.min.json":43,"../apis/ecs-2014-11-13.paginators.json":44,"../apis/ecs-2014-11-13.waiters2.json":45,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],153:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elasticache={},a.ElastiCache=s.defineService("elasticache",["2012-11-15*","2014-03-24*","2014-07-15*","2014-09-30*","2015-02-02"]),Object.defineProperty(i.services.elasticache,"2015-02-02",{get:function(){var t=e("../apis/elasticache-2015-02-02.min.json");return t.paginators=e("../apis/elasticache-2015-02-02.paginators.json").pagination,t.waiters=e("../apis/elasticache-2015-02-02.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ElastiCache},{"../apis/elasticache-2015-02-02.min.json":46,"../apis/elasticache-2015-02-02.paginators.json":47,"../apis/elasticache-2015-02-02.waiters2.json":48,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],154:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elasticbeanstalk={},a.ElasticBeanstalk=s.defineService("elasticbeanstalk",["2010-12-01"]),Object.defineProperty(i.services.elasticbeanstalk,"2010-12-01",{get:function(){var t=e("../apis/elasticbeanstalk-2010-12-01.min.json");return t.paginators=e("../apis/elasticbeanstalk-2010-12-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ElasticBeanstalk},{"../apis/elasticbeanstalk-2010-12-01.min.json":49,"../apis/elasticbeanstalk-2010-12-01.paginators.json":50,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],155:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elastictranscoder={},a.ElasticTranscoder=s.defineService("elastictranscoder",["2012-09-25"]),Object.defineProperty(i.services.elastictranscoder,"2012-09-25",{get:function(){var t=e("../apis/elastictranscoder-2012-09-25.min.json");return t.paginators=e("../apis/elastictranscoder-2012-09-25.paginators.json").pagination,t.waiters=e("../apis/elastictranscoder-2012-09-25.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ElasticTranscoder},{"../apis/elastictranscoder-2012-09-25.min.json":59,"../apis/elastictranscoder-2012-09-25.paginators.json":60,"../apis/elastictranscoder-2012-09-25.waiters2.json":61,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],156:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elb={},a.ELB=s.defineService("elb",["2012-06-01"]),Object.defineProperty(i.services.elb,"2012-06-01",{get:function(){var t=e("../apis/elasticloadbalancing-2012-06-01.min.json");return t.paginators=e("../apis/elasticloadbalancing-2012-06-01.paginators.json").pagination,t.waiters=e("../apis/elasticloadbalancing-2012-06-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.ELB},{"../apis/elasticloadbalancing-2012-06-01.min.json":51,"../apis/elasticloadbalancing-2012-06-01.paginators.json":52,"../apis/elasticloadbalancing-2012-06-01.waiters2.json":53,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],157:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.elbv2={},a.ELBv2=s.defineService("elbv2",["2015-12-01"]),Object.defineProperty(i.services.elbv2,"2015-12-01",{get:function(){var t=e("../apis/elasticloadbalancingv2-2015-12-01.min.json");return t.paginators=e("../apis/elasticloadbalancingv2-2015-12-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.ELBv2},{"../apis/elasticloadbalancingv2-2015-12-01.min.json":54,"../apis/elasticloadbalancingv2-2015-12-01.paginators.json":55,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],158:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.emr={},a.EMR=s.defineService("emr",["2009-03-31"]),Object.defineProperty(i.services.emr,"2009-03-31",{get:function(){var t=e("../apis/elasticmapreduce-2009-03-31.min.json");return t.paginators=e("../apis/elasticmapreduce-2009-03-31.paginators.json").pagination,t.waiters=e("../apis/elasticmapreduce-2009-03-31.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.EMR},{"../apis/elasticmapreduce-2009-03-31.min.json":56,"../apis/elasticmapreduce-2009-03-31.paginators.json":57,"../apis/elasticmapreduce-2009-03-31.waiters2.json":58,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],159:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.firehose={},a.Firehose=s.defineService("firehose",["2015-08-04"]),Object.defineProperty(i.services.firehose,"2015-08-04",{get:function(){var t=e("../apis/firehose-2015-08-04.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.Firehose},{"../apis/firehose-2015-08-04.min.json":66,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],160:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.gamelift={},a.GameLift=s.defineService("gamelift",["2015-10-01"]),Object.defineProperty(i.services.gamelift,"2015-10-01",{get:function(){var t=e("../apis/gamelift-2015-10-01.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.GameLift},{"../apis/gamelift-2015-10-01.min.json":67,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],161:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.inspector={},a.Inspector=s.defineService("inspector",["2015-08-18*","2016-02-16"]),Object.defineProperty(i.services.inspector,"2016-02-16",{get:function(){var t=e("../apis/inspector-2016-02-16.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.Inspector},{"../apis/inspector-2016-02-16.min.json":68,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],162:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.iot={},a.Iot=s.defineService("iot",["2015-05-28"]),Object.defineProperty(i.services.iot,"2015-05-28",{get:function(){var t=e("../apis/iot-2015-05-28.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.Iot},{"../apis/iot-2015-05-28.min.json":69,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],163:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.iotdata={},a.IotData=s.defineService("iotdata",["2015-05-28"]),e("../lib/services/iotdata"),Object.defineProperty(i.services.iotdata,"2015-05-28",{get:function(){var t=e("../apis/iot-data-2015-05-28.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.IotData},{"../apis/iot-data-2015-05-28.min.json":70,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/iotdata":231}],164:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.kinesis={},a.Kinesis=s.defineService("kinesis",["2013-12-02"]),Object.defineProperty(i.services.kinesis,"2013-12-02",{get:function(){var t=e("../apis/kinesis-2013-12-02.min.json");return t.paginators=e("../apis/kinesis-2013-12-02.paginators.json").pagination,t.waiters=e("../apis/kinesis-2013-12-02.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.Kinesis},{"../apis/kinesis-2013-12-02.min.json":71,"../apis/kinesis-2013-12-02.paginators.json":72,"../apis/kinesis-2013-12-02.waiters2.json":73,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],165:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.kms={},a.KMS=s.defineService("kms",["2014-11-01"]),Object.defineProperty(i.services.kms,"2014-11-01",{get:function(){var t=e("../apis/kms-2014-11-01.min.json");return t.paginators=e("../apis/kms-2014-11-01.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.KMS},{"../apis/kms-2014-11-01.min.json":74,"../apis/kms-2014-11-01.paginators.json":75,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],166:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.lambda={},a.Lambda=s.defineService("lambda",["2014-11-11","2015-03-31"]),Object.defineProperty(i.services.lambda,"2014-11-11",{get:function(){var t=e("../apis/lambda-2014-11-11.min.json");return t.paginators=e("../apis/lambda-2014-11-11.paginators.json").pagination,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.lambda,"2015-03-31",{get:function(){var t=e("../apis/lambda-2015-03-31.min.json");return t.paginators=e("../apis/lambda-2015-03-31.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.Lambda},{"../apis/lambda-2014-11-11.min.json":76,"../apis/lambda-2014-11-11.paginators.json":77,"../apis/lambda-2015-03-31.min.json":78,"../apis/lambda-2015-03-31.paginators.json":79,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],167:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.machinelearning={},a.MachineLearning=s.defineService("machinelearning",["2014-12-12"]),e("../lib/services/machinelearning"),Object.defineProperty(i.services.machinelearning,"2014-12-12",{get:function(){var t=e("../apis/machinelearning-2014-12-12.min.json");return t.paginators=e("../apis/machinelearning-2014-12-12.paginators.json").pagination,t.waiters=e("../apis/machinelearning-2014-12-12.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.MachineLearning},{"../apis/machinelearning-2014-12-12.min.json":82,"../apis/machinelearning-2014-12-12.paginators.json":83,"../apis/machinelearning-2014-12-12.waiters2.json":84,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/machinelearning":232}],168:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.marketplacecommerceanalytics={},a.MarketplaceCommerceAnalytics=s.defineService("marketplacecommerceanalytics",["2015-07-01"]),Object.defineProperty(i.services.marketplacecommerceanalytics,"2015-07-01",{get:function(){var t=e("../apis/marketplacecommerceanalytics-2015-07-01.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.MarketplaceCommerceAnalytics},{"../apis/marketplacecommerceanalytics-2015-07-01.min.json":85,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],169:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.mobileanalytics={},a.MobileAnalytics=s.defineService("mobileanalytics",["2014-06-05"]),Object.defineProperty(i.services.mobileanalytics,"2014-06-05",{get:function(){var t=e("../apis/mobileanalytics-2014-06-05.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.MobileAnalytics},{"../apis/mobileanalytics-2014-06-05.min.json":87,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],170:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.opsworks={},a.OpsWorks=s.defineService("opsworks",["2013-02-18"]),Object.defineProperty(i.services.opsworks,"2013-02-18",{get:function(){var t=e("../apis/opsworks-2013-02-18.min.json");return t.paginators=e("../apis/opsworks-2013-02-18.paginators.json").pagination,t.waiters=e("../apis/opsworks-2013-02-18.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.OpsWorks},{"../apis/opsworks-2013-02-18.min.json":91,"../apis/opsworks-2013-02-18.paginators.json":92,"../apis/opsworks-2013-02-18.waiters2.json":93,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],171:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.rds={},a.RDS=s.defineService("rds",["2013-01-10","2013-02-12","2013-09-09","2014-09-01*","2014-10-31"]),Object.defineProperty(i.services.rds,"2013-01-10",{get:function(){var t=e("../apis/rds-2013-01-10.min.json");return t.paginators=e("../apis/rds-2013-01-10.paginators.json").pagination,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.rds,"2013-02-12",{get:function(){var t=e("../apis/rds-2013-02-12.min.json");return t.paginators=e("../apis/rds-2013-02-12.paginators.json").pagination,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.rds,"2013-09-09",{get:function(){var t=e("../apis/rds-2013-09-09.min.json");return t.paginators=e("../apis/rds-2013-09-09.paginators.json").pagination,t.waiters=e("../apis/rds-2013-09-09.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),Object.defineProperty(i.services.rds,"2014-10-31",{get:function(){var t=e("../apis/rds-2014-10-31.min.json");return t.paginators=e("../apis/rds-2014-10-31.paginators.json").pagination,t.waiters=e("../apis/rds-2014-10-31.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.RDS},{"../apis/rds-2013-01-10.min.json":94,"../apis/rds-2013-01-10.paginators.json":95,"../apis/rds-2013-02-12.min.json":96,"../apis/rds-2013-02-12.paginators.json":97,"../apis/rds-2013-09-09.min.json":98,"../apis/rds-2013-09-09.paginators.json":99,"../apis/rds-2013-09-09.waiters2.json":100,"../apis/rds-2014-10-31.min.json":101, -"../apis/rds-2014-10-31.paginators.json":102,"../apis/rds-2014-10-31.waiters2.json":103,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],172:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.redshift={},a.Redshift=s.defineService("redshift",["2012-12-01"]),Object.defineProperty(i.services.redshift,"2012-12-01",{get:function(){var t=e("../apis/redshift-2012-12-01.min.json");return t.paginators=e("../apis/redshift-2012-12-01.paginators.json").pagination,t.waiters=e("../apis/redshift-2012-12-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.Redshift},{"../apis/redshift-2012-12-01.min.json":104,"../apis/redshift-2012-12-01.paginators.json":105,"../apis/redshift-2012-12-01.waiters2.json":106,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],173:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.route53={},a.Route53=s.defineService("route53",["2013-04-01"]),e("../lib/services/route53"),Object.defineProperty(i.services.route53,"2013-04-01",{get:function(){var t=e("../apis/route53-2013-04-01.min.json");return t.paginators=e("../apis/route53-2013-04-01.paginators.json").pagination,t.waiters=e("../apis/route53-2013-04-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.Route53},{"../apis/route53-2013-04-01.min.json":107,"../apis/route53-2013-04-01.paginators.json":108,"../apis/route53-2013-04-01.waiters2.json":109,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/route53":233}],174:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.route53domains={},a.Route53Domains=s.defineService("route53domains",["2014-05-15"]),Object.defineProperty(i.services.route53domains,"2014-05-15",{get:function(){var t=e("../apis/route53domains-2014-05-15.min.json");return t.paginators=e("../apis/route53domains-2014-05-15.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.Route53Domains},{"../apis/route53domains-2014-05-15.min.json":110,"../apis/route53domains-2014-05-15.paginators.json":111,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],175:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.s3={},a.S3=s.defineService("s3",["2006-03-01"]),e("../lib/services/s3"),Object.defineProperty(i.services.s3,"2006-03-01",{get:function(){var t=e("../apis/s3-2006-03-01.min.json");return t.paginators=e("../apis/s3-2006-03-01.paginators.json").pagination,t.waiters=e("../apis/s3-2006-03-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.S3},{"../apis/s3-2006-03-01.min.json":112,"../apis/s3-2006-03-01.paginators.json":113,"../apis/s3-2006-03-01.waiters2.json":114,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/s3":234}],176:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.servicecatalog={},a.ServiceCatalog=s.defineService("servicecatalog",["2015-12-10"]),Object.defineProperty(i.services.servicecatalog,"2015-12-10",{get:function(){var t=e("../apis/servicecatalog-2015-12-10.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.ServiceCatalog},{"../apis/servicecatalog-2015-12-10.min.json":115,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],177:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ses={},a.SES=s.defineService("ses",["2010-12-01"]),Object.defineProperty(i.services.ses,"2010-12-01",{get:function(){var t=e("../apis/email-2010-12-01.min.json");return t.paginators=e("../apis/email-2010-12-01.paginators.json").pagination,t.waiters=e("../apis/email-2010-12-01.waiters2.json").waiters,t},enumerable:!0,configurable:!0}),t.exports=a.SES},{"../apis/email-2010-12-01.min.json":62,"../apis/email-2010-12-01.paginators.json":63,"../apis/email-2010-12-01.waiters2.json":64,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],178:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.sns={},a.SNS=s.defineService("sns",["2010-03-31"]),Object.defineProperty(i.services.sns,"2010-03-31",{get:function(){var t=e("../apis/sns-2010-03-31.min.json");return t.paginators=e("../apis/sns-2010-03-31.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.SNS},{"../apis/sns-2010-03-31.min.json":116,"../apis/sns-2010-03-31.paginators.json":117,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],179:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.sqs={},a.SQS=s.defineService("sqs",["2012-11-05"]),e("../lib/services/sqs"),Object.defineProperty(i.services.sqs,"2012-11-05",{get:function(){var t=e("../apis/sqs-2012-11-05.min.json");return t.paginators=e("../apis/sqs-2012-11-05.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.SQS},{"../apis/sqs-2012-11-05.min.json":118,"../apis/sqs-2012-11-05.paginators.json":119,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sqs":235}],180:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.ssm={},a.SSM=s.defineService("ssm",["2014-11-06"]),Object.defineProperty(i.services.ssm,"2014-11-06",{get:function(){var t=e("../apis/ssm-2014-11-06.min.json");return t.paginators=e("../apis/ssm-2014-11-06.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.SSM},{"../apis/ssm-2014-11-06.min.json":120,"../apis/ssm-2014-11-06.paginators.json":121,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],181:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.storagegateway={},a.StorageGateway=s.defineService("storagegateway",["2013-06-30"]),Object.defineProperty(i.services.storagegateway,"2013-06-30",{get:function(){var t=e("../apis/storagegateway-2013-06-30.min.json");return t.paginators=e("../apis/storagegateway-2013-06-30.paginators.json").pagination,t},enumerable:!0,configurable:!0}),t.exports=a.StorageGateway},{"../apis/storagegateway-2013-06-30.min.json":122,"../apis/storagegateway-2013-06-30.paginators.json":123,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],182:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.sts={},a.STS=s.defineService("sts",["2011-06-15"]),e("../lib/services/sts"),Object.defineProperty(i.services.sts,"2011-06-15",{get:function(){var t=e("../apis/sts-2011-06-15.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.STS},{"../apis/sts-2011-06-15.min.json":125,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225,"../lib/services/sts":236}],183:[function(e,t,r){e("../lib/node_loader");var a=e("../lib/core"),s=e("../lib/service"),i=e("../lib/api_loader");i.services.waf={},a.WAF=s.defineService("waf",["2015-08-24"]),Object.defineProperty(i.services.waf,"2015-08-24",{get:function(){var t=e("../apis/waf-2015-08-24.min.json");return t},enumerable:!0,configurable:!0}),t.exports=a.WAF},{"../apis/waf-2015-08-24.min.json":126,"../lib/api_loader":184,"../lib/core":188,"../lib/node_loader":185,"../lib/service":225}],184:[function(e,t,r){var a=e("./core");a.apiLoader=function(e,t){if(!a.apiLoader.services.hasOwnProperty(e))throw new Error("InvalidService: Failed to load api for "+e);return a.apiLoader.services[e][t]},a.apiLoader.services={},t.exports=a.apiLoader},{"./core":188}],185:[function(e,t,r){(function(t){var r=e("./util");r.crypto.lib=e("crypto-browserify"),r.Buffer=e("buffer/").Buffer,r.url=e("url/"),r.querystring=e("querystring/");var a=e("./core");e("./api_loader"),a.XML.Parser=e("./xml/browser_parser"),e("./http/xhr"),"undefined"==typeof t&&(t={browser:!0})}).call(this,e("_process"))},{"./api_loader":184,"./core":188,"./http/xhr":202,"./util":245,"./xml/browser_parser":246,_process:250,"buffer/":258,"crypto-browserify":263,"querystring/":271,"url/":272}],186:[function(e,t,r){var a=e("../core"),s=a.util.url,i=a.util.crypto.lib,n=a.util.base64.encode,o=a.util.inherit,u=function(e){var t={"+":"-","=":"_","/":"~"};return e.replace(/[\+=\/]/g,function(e){return t[e]})},p=function(e,t){var r=i.createSign("RSA-SHA1");return r.write(e),u(r.sign(t,"base64"))},c=function(e,t,r,a){var s=JSON.stringify({Statement:[{Resource:e,Condition:{DateLessThan:{"AWS:EpochTime":t}}}]});return{Expires:t,"Key-Pair-Id":r,Signature:p(s.toString(),a)}},m=function(e,t,r){return e=e.replace(/\s/gm,e),{Policy:u(n(e)),"Key-Pair-Id":t,Signature:p(e,r)}},l=function(e){var t=e.split("://");if(t.length<2)throw new Error("Invalid URL.");return t[0].replace("*","")},d=function(e){var t=s.parse(e);return t.path.replace(/^\//,"")+(t.hash||"")},y=function(e){switch(l(e)){case"http":case"https":return e;case"rtmp":return d(e);default:throw new Error("Invalid URI scheme. Scheme must be one of http, https, or rtmp")}},b=function(e,t){if(!t||"function"!=typeof t)throw e;t(e)},h=function(e,t){return t&&"function"==typeof t?void t(null,e):e};a.CloudFront.Signer=o({constructor:function(e,t){if(void 0===e||void 0===t)throw new Error("A key pair ID and private key are required");this.keyPairId=e,this.privateKey=t},getSignedCookie:function(e,t){var r="policy"in e?m(e.policy,this.keyPairId,this.privateKey):c(e.url,e.expires,this.keyPairId,this.privateKey),a={};for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(a["CloudFront-"+s]=r[s]);return h(a,t)},getSignedUrl:function(e,t){try{var r=y(e.url)}catch(e){return b(e,t)}var a=s.parse(e.url,!0),i=Object.prototype.hasOwnProperty.call(e,"policy")?m(e.policy,this.keyPairId,this.privateKey):c(r,e.expires,this.keyPairId,this.privateKey);a.search=null;for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(a.query[n]=i[n]);try{var o="rtmp"===l(e.url)?d(s.format(a)):s.format(a)}catch(e){return b(e,t)}return h(o,t)}}),t.exports=a.CloudFront.Signer},{"../core":188}],187:[function(e,t,r){var a=e("./core");e("./credentials"),e("./credentials/credential_provider_chain"),a.Config=a.util.inherit({constructor:function(e){void 0===e&&(e={}),e=this.extractCredentials(e),a.util.each.call(this,this.keys,function(t,r){this.set(t,e[t],r)})},getCredentials:function(e){function t(t){e(t,t?null:n.credentials)}function r(e,t){return new a.util.error(t||new Error,{code:"CredentialsError",message:e})}function s(){n.credentials.get(function(e){if(e){var a="Could not load credentials from "+n.credentials.constructor.name;e=r(a,e)}t(e)})}function i(){var e=null;n.credentials.accessKeyId&&n.credentials.secretAccessKey||(e=r("Missing credentials")),t(e)}var n=this;n.credentials?"function"==typeof n.credentials.get?s():i():n.credentialProvider?n.credentialProvider.resolve(function(e,a){e&&(e=r("Could not load credentials from any providers",e)),n.credentials=a,t(e)}):t(r("No credentials to load"))},update:function(e,t){t=t||!1,e=this.extractCredentials(e),a.util.each.call(this,e,function(e,r){(t||Object.prototype.hasOwnProperty.call(this.keys,e)||a.Service.hasService(e))&&this.set(e,r)})},loadFromPath:function(e){this.clear();var t=JSON.parse(a.util.readFileSync(e)),r=new a.FileSystemCredentials(e),s=new a.CredentialProviderChain;return s.providers.unshift(r),s.resolve(function(e,r){if(e)throw e;t.credentials=r}),this.constructor(t),this},clear:function(){a.util.each.call(this,this.keys,function(e){delete this[e]}),this.set("credentials",void 0),this.set("credentialProvider",void 0)},set:function(e,t,r){void 0===t?(void 0===r&&(r=this.keys[e]),"function"==typeof r?this[e]=r.call(this):this[e]=r):"httpOptions"===e&&this[e]?this[e]=a.util.merge(this[e],t):this[e]=t},keys:{credentials:null,credentialProvider:null,region:null,logger:null,apiVersions:{},apiVersion:null,endpoint:void 0,httpOptions:{timeout:12e4},maxRetries:void 0,maxRedirects:10,paramValidation:!0,sslEnabled:!0,s3ForcePathStyle:!1,s3BucketEndpoint:!1,s3DisableBodySigning:!0,computeChecksums:!0,convertResponseTypes:!0,correctClockSkew:!1,customUserAgent:null,dynamoDbCrc32:!0,systemClockOffset:0,signatureVersion:null,signatureCache:!0,retryDelayOptions:{base:100},useAccelerateEndpoint:!1},extractCredentials:function(e){return e.accessKeyId&&e.secretAccessKey&&(e=a.util.copy(e),e.credentials=new a.Credentials(e)),e},setPromisesDependency:function(e){a.util.addPromisesToRequests(a.Request,e)}}),a.config=new a.Config},{"./core":188,"./credentials":189,"./credentials/credential_provider_chain":191}],188:[function(e,t,r){var a={util:e("./util")},s={};s.toString(),t.exports=a,a.util.update(a,{VERSION:"2.6.8",Signers:{},Protocol:{Json:e("./protocol/json"),Query:e("./protocol/query"),Rest:e("./protocol/rest"),RestJson:e("./protocol/rest_json"),RestXml:e("./protocol/rest_xml")},XML:{Builder:e("./xml/builder"),Parser:null},JSON:{Builder:e("./json/builder"),Parser:e("./json/parser")},Model:{Api:e("./model/api"),Operation:e("./model/operation"),Shape:e("./model/shape"),Paginator:e("./model/paginator"),ResourceWaiter:e("./model/resource_waiter")},util:e("./util"),apiLoader:function(){throw new Error("No API loader set")}}),e("./service"),e("./credentials"),e("./credentials/credential_provider_chain"),e("./credentials/temporary_credentials"),e("./credentials/web_identity_credentials"),e("./credentials/cognito_identity_credentials"),e("./credentials/saml_credentials"),e("./config"),e("./http"),e("./sequential_executor"),e("./event_listeners"),e("./request"),e("./response"),e("./resource_waiter"),e("./signers/request_signer"),e("./param_validator"),a.events=new a.SequentialExecutor},{"./config":187,"./credentials":189,"./credentials/cognito_identity_credentials":190,"./credentials/credential_provider_chain":191,"./credentials/saml_credentials":192,"./credentials/temporary_credentials":193,"./credentials/web_identity_credentials":194,"./event_listeners":200,"./http":201,"./json/builder":203,"./json/parser":204,"./model/api":205,"./model/operation":207,"./model/paginator":208,"./model/resource_waiter":209,"./model/shape":210,"./param_validator":211,"./protocol/json":212,"./protocol/query":213,"./protocol/rest":214,"./protocol/rest_json":215,"./protocol/rest_xml":216,"./request":220,"./resource_waiter":221,"./response":222,"./sequential_executor":224,"./service":225,"./signers/request_signer":238,"./util":245,"./xml/builder":247}],189:[function(e,t,r){var a=e("./core");a.Credentials=a.util.inherit({constructor:function(){if(a.util.hideProperties(this,["secretAccessKey"]),this.expired=!1,this.expireTime=null,1===arguments.length&&"object"==typeof arguments[0]){var e=arguments[0].credentials||arguments[0];this.accessKeyId=e.accessKeyId,this.secretAccessKey=e.secretAccessKey,this.sessionToken=e.sessionToken}else this.accessKeyId=arguments[0],this.secretAccessKey=arguments[1],this.sessionToken=arguments[2]},expiryWindow:15,needsRefresh:function(){var e=a.util.date.getDate().getTime(),t=new Date(e+1e3*this.expiryWindow);return!!(this.expireTime&&t>this.expireTime)||(this.expired||!this.accessKeyId||!this.secretAccessKey)},get:function(e){var t=this;this.needsRefresh()?this.refresh(function(r){r||(t.expired=!1),e&&e(r)}):e&&e()},refresh:function(e){this.expired=!1,e()}})},{"./core":188}],190:[function(e,t,r){var a=e("../core"),s=e("../../clients/cognitoidentity"),i=e("../../clients/sts");a.CognitoIdentityCredentials=a.util.inherit(a.Credentials,{localStorageKey:{id:"aws.cognito.identity-id.",providers:"aws.cognito.identity-providers."},constructor:function(e){a.Credentials.call(this),this.expired=!0,this.params=e,this.data=null,this.identityId=null,this.loadCachedId()},refresh:function(e){var t=this;t.createClients(),t.data=null,t.identityId=null,t.getId(function(r){r?(t.clearIdOnNotAuthorized(r),e(r)):t.params.RoleArn?t.getCredentialsFromSTS(e):t.getCredentialsForIdentity(e)})},clearCachedId:function(){this.identityId=null,delete this.params.IdentityId;var e=this.params.IdentityPoolId,t=this.params.LoginId||"";delete this.storage[this.localStorageKey.id+e+t],delete this.storage[this.localStorageKey.providers+e+t]},clearIdOnNotAuthorized:function(e){var t=this;"NotAuthorizedException"==e.code&&t.clearCachedId()},getId:function(e){var t=this;return"string"==typeof t.params.IdentityId?e(null,t.params.IdentityId):void t.cognito.getId(function(r,a){!r&&a.IdentityId?(t.params.IdentityId=a.IdentityId,e(null,a.IdentityId)):e(r)})},loadCredentials:function(e,t){e&&t&&(t.expired=!1,t.accessKeyId=e.Credentials.AccessKeyId,t.secretAccessKey=e.Credentials.SecretKey,t.sessionToken=e.Credentials.SessionToken,t.expireTime=e.Credentials.Expiration)},getCredentialsForIdentity:function(e){var t=this;t.cognito.getCredentialsForIdentity(function(r,a){r?t.clearIdOnNotAuthorized(r):(t.cacheId(a),t.data=a,t.loadCredentials(t.data,t)),e(r)})},getCredentialsFromSTS:function(e){var t=this;t.cognito.getOpenIdToken(function(r,a){r?(t.clearIdOnNotAuthorized(r),e(r)):(t.cacheId(a),t.params.WebIdentityToken=a.Token,t.webIdentityCredentials.refresh(function(r){r||(t.data=t.webIdentityCredentials.data,t.sts.credentialsFrom(t.data,t)),e(r)}))})},loadCachedId:function(){var e=this;if(a.util.isBrowser()&&!e.params.IdentityId){var t=e.getStorage("id");if(t&&e.params.Logins){var r=Object.keys(e.params.Logins),s=(e.getStorage("providers")||"").split(","),i=s.filter(function(e){return r.indexOf(e)!==-1});0!==i.length&&(e.params.IdentityId=t)}else t&&(e.params.IdentityId=t)}},createClients:function(){this.webIdentityCredentials=this.webIdentityCredentials||new a.WebIdentityCredentials(this.params),this.cognito=this.cognito||new s({params:this.params}),this.sts=this.sts||new i},cacheId:function(e){this.identityId=e.IdentityId,this.params.IdentityId=this.identityId,a.util.isBrowser()&&(this.setStorage("id",e.IdentityId),this.params.Logins&&this.setStorage("providers",Object.keys(this.params.Logins).join(",")))},getStorage:function(e){return this.storage[this.localStorageKey[e]+this.params.IdentityPoolId+(this.params.LoginId||"")]},setStorage:function(e,t){try{this.storage[this.localStorageKey[e]+this.params.IdentityPoolId+(this.params.LoginId||"")]=t}catch(e){}},storage:function(){try{return a.util.isBrowser()&&null!==window.localStorage&&"object"==typeof window.localStorage?window.localStorage:{}}catch(e){return{}}}()})},{"../../clients/cognitoidentity":142,"../../clients/sts":182,"../core":188}],191:[function(e,t,r){var a=e("../core");a.CredentialProviderChain=a.util.inherit(a.Credentials,{constructor:function(e){e?this.providers=e:this.providers=a.CredentialProviderChain.defaultProviders.slice(0)},resolve:function(e){function t(s,i){if(!s&&i||r===a.length)return void e(s,i);var n=a[r++];i="function"==typeof n?n.call():n,i.get?i.get(function(e){t(e,e?null:i)}):t(null,i)}if(0===this.providers.length)return e(new Error("No providers")),this;var r=0,a=this.providers.slice(0);return t(),this}}),a.CredentialProviderChain.defaultProviders=[]},{"../core":188}],192:[function(e,t,r){var a=e("../core"),s=e("../../clients/sts");a.SAMLCredentials=a.util.inherit(a.Credentials,{constructor:function(e){a.Credentials.call(this),this.expired=!0,this.params=e},refresh:function(e){var t=this;t.createClients(),e||(e=function(e){if(e)throw e}),t.service.assumeRoleWithSAML(function(r,a){r||t.service.credentialsFrom(a,t),e(r)})},createClients:function(){this.service=this.service||new s({params:this.params})}})},{"../../clients/sts":182,"../core":188}],193:[function(e,t,r){var a=e("../core"),s=e("../../clients/sts");a.TemporaryCredentials=a.util.inherit(a.Credentials,{constructor:function(e){a.Credentials.call(this),this.loadMasterCredentials(),this.expired=!0,this.params=e||{},this.params.RoleArn&&(this.params.RoleSessionName=this.params.RoleSessionName||"temporary-credentials")},refresh:function(e){var t=this;t.createClients(),e||(e=function(e){if(e)throw e}),t.service.config.credentials=t.masterCredentials;var r=t.params.RoleArn?t.service.assumeRole:t.service.getSessionToken;r.call(t.service,function(r,a){r||t.service.credentialsFrom(a,t),e(r)})},loadMasterCredentials:function(){for(this.masterCredentials=a.config.credentials;this.masterCredentials.masterCredentials;)this.masterCredentials=this.masterCredentials.masterCredentials},createClients:function(){this.service=this.service||new s({params:this.params})}})},{"../../clients/sts":182,"../core":188}],194:[function(e,t,r){var a=e("../core"),s=e("../../clients/sts");a.WebIdentityCredentials=a.util.inherit(a.Credentials,{constructor:function(e){a.Credentials.call(this),this.expired=!0,this.params=e,this.params.RoleSessionName=this.params.RoleSessionName||"web-identity",this.data=null},refresh:function(e){var t=this;t.createClients(),e||(e=function(e){if(e)throw e}),t.service.assumeRoleWithWebIdentity(function(r,a){t.data=null,r||(t.data=a,t.service.credentialsFrom(a,t)),e(r)})},createClients:function(){this.service=this.service||new s({params:this.params})}})},{"../../clients/sts":182,"../core":188}],195:[function(e,t,r){function a(e){if("Object"===o(e)){var t={M:{}};for(var r in e)t.M[r]=a(e[r]);return t}if("Array"===o(e)){for(var i={L:[]},n=0;n=600?this.emit("sign",[this],function(e){e?t(e):n()}):n()}),e("HTTP_HEADERS","httpHeaders",function(e,t,r){r.httpResponse.statusCode=e,r.httpResponse.headers=t,r.httpResponse.body=new a.util.Buffer(""),r.httpResponse.buffers=[],r.httpResponse.numBytes=0;var s=t.date||t.Date;if(s){ -var i=Date.parse(s);r.request.service.config.correctClockSkew&&a.util.isClockSkewed(i)&&a.util.applyClockOffset(i)}}),e("HTTP_DATA","httpData",function(e,t){if(e){if(a.util.isNode()){t.httpResponse.numBytes+=e.length;var r=t.httpResponse.headers["content-length"],s={loaded:t.httpResponse.numBytes,total:r};t.request.emit("httpDownloadProgress",[s,t])}t.httpResponse.buffers.push(new a.util.Buffer(e))}}),e("HTTP_DONE","httpDone",function(e){if(e.httpResponse.buffers&&e.httpResponse.buffers.length>0){var t=a.util.buffer.concat(e.httpResponse.buffers);e.httpResponse.body=t}delete e.httpResponse.numBytes,delete e.httpResponse.buffers}),e("FINALIZE_ERROR","retry",function(e){e.httpResponse.statusCode&&(e.error.statusCode=e.httpResponse.statusCode,void 0===e.error.retryable&&(e.error.retryable=this.service.retryableError(e.error,this)))}),e("INVALIDATE_CREDENTIALS","retry",function(e){if(e.error)switch(e.error.code){case"RequestExpired":case"ExpiredTokenException":case"ExpiredToken":e.error.retryable=!0,e.request.service.config.credentials.expired=!0}}),e("EXPIRED_SIGNATURE","retry",function(e){var t=e.error;t&&"string"==typeof t.code&&"string"==typeof t.message&&t.code.match(/Signature/)&&t.message.match(/expired/)&&(e.error.retryable=!0)}),e("CLOCK_SKEWED","retry",function(e){e.error&&this.service.clockSkewError(e.error)&&this.service.config.correctClockSkew&&a.config.isClockSkewed&&(e.error.retryable=!0)}),e("REDIRECT","retry",function(e){e.error&&e.error.statusCode>=300&&e.error.statusCode<400&&e.httpResponse.headers.location&&(this.httpRequest.endpoint=new a.Endpoint(e.httpResponse.headers.location),this.httpRequest.headers.Host=this.httpRequest.endpoint.host,e.error.redirect=!0,e.error.retryable=!0)}),e("RETRY_CHECK","retry",function(e){e.error&&(e.error.redirect&&e.redirectCount=this.HEADERS_RECEIVED&&!m){try{c.responseType="arraybuffer"}catch(e){}u.statusCode=c.status,u.headers=n.parseHeaders(c.getAllResponseHeaders()),u.emit("headers",u.statusCode,u.headers),m=!0}this.readyState===this.DONE&&n.finishRequest(c,u)},!1),c.upload.addEventListener("progress",function(e){u.emit("sendProgress",e)}),c.addEventListener("progress",function(e){u.emit("receiveProgress",e)},!1),c.addEventListener("timeout",function(){i(a.util.error(new Error("Timeout"),{code:"TimeoutError"}))},!1),c.addEventListener("error",function(){i(a.util.error(new Error("Network Failure"),{code:"NetworkingError"}))},!1),r(u),c.open(e.method,p,t.xhrAsync!==!1),a.util.each(e.headers,function(e,t){"Content-Length"!==e&&"User-Agent"!==e&&"Host"!==e&&c.setRequestHeader(e,t)}),t.timeout&&t.xhrAsync!==!1&&(c.timeout=t.timeout),t.xhrWithCredentials&&(c.withCredentials=!0);try{c.send(e.body)}catch(t){if(!e.body||"object"!=typeof e.body.buffer)throw t;c.send(e.body.buffer)}return u},parseHeaders:function(e){var t={};return a.util.arrayEach(e.split(/\r?\n/),function(e){var r=e.split(":",1)[0],a=e.substring(r.length+2);r.length>0&&(t[r.toLowerCase()]=a)}),t},finishRequest:function(e,t){var r;if("arraybuffer"===e.responseType&&e.response){var s=e.response;r=new a.util.Buffer(s.byteLength);for(var i=new Uint8Array(s),n=0;n1){var s=this.errors.join("\n* ");throw s="There were "+this.errors.length+" validation errors:\n* "+s,a.util.error(new Error(s),{code:"MultipleValidationErrors",errors:this.errors})}if(1===this.errors.length)throw this.errors[0];return!0},fail:function(e,t){this.errors.push(a.util.error(new Error(t),{code:e}))},validateStructure:function(e,t,r){this.validateType(t,r,["object"],"structure");for(var a,s=0;e.required&&s= "+e.min+", but found "+t+" for "+r),this.validation.max&&void 0!==e.max&&t>e.max&&this.fail("MaxRangeError","Expected "+a+" <= "+e.max+", but found "+t+" for "+r)},validateEnum:function(e,t,r){this.validation.enum&&void 0!==e.enum&&e.enum.indexOf(t)===-1&&this.fail("EnumError","Found string value of "+t+", but expected "+e.enum.join("|")+" for "+r)},validateType:function(e,t,r,s){if(null===e||void 0===e)return!1;for(var i=!1,n=0;n0){var a=JSON.parse(r.body.toString());(a.__type||a.code)&&(t.code=(a.__type||a.code).split("#").pop()),"RequestEntityTooLarge"===t.code?t.message="Request body must be less than 1 MB":t.message=a.message||a.Message||null}else t.statusCode=r.statusCode,t.message=r.statusCode.toString();e.error=n.error(new Error,t)}function i(e){var t=e.httpResponse.body.toString()||"{}";if(e.request.service.config.convertResponseTypes===!1)e.data=JSON.parse(t);else{var r=e.request.service.api.operations[e.request.operation],a=r.output||{},s=new u;e.data=s.parse(t,a)}}var n=e("../util"),o=e("../json/builder"),u=e("../json/parser");t.exports={buildRequest:a,extractError:s,extractData:i}},{"../json/builder":203,"../json/parser":204,"../util":245}],213:[function(e,t,r){function a(e){var t=e.service.api.operations[e.operation],r=e.httpRequest;r.headers["Content-Type"]="application/x-www-form-urlencoded; charset=utf-8",r.params={Version:e.service.api.apiVersion,Action:t.name};var a=new u;a.serialize(e.params,t.input,function(e,t){r.params[e]=t}),r.body=o.queryParamsToString(r.params)}function s(e){var t,r=e.httpResponse.body.toString();t=r.match("=0?"&":"?";var n=[];p.arrayEach(Object.keys(s).sort(),function(e){Array.isArray(s[e])||(s[e]=[s[e]]);for(var t=0;t0){t=new o.XML.Parser;var m=t.parse(a.toString(),i);u.update(e.data,m)}}var o=e("../core"),u=e("../util"),p=e("./rest");t.exports={buildRequest:s,extractError:i,extractData:n}},{"../core":188,"../util":245,"./rest":214}],217:[function(e,t,r){function a(){}function s(e){return e.isQueryName||"ec2"!==e.api.protocol?e.name:e.name[0].toUpperCase()+e.name.substr(1)}function i(e,t,r,a){p.each(r.members,function(r,i){var n=t[r];if(null!==n&&void 0!==n){var o=s(i);o=e?e+"."+o:o,u(o,n,i,a)}})}function n(e,t,r,a){var s=1;p.each(t,function(t,i){var n=r.flattened?".":".entry.",o=n+s++ +".",p=o+(r.key.name||"key"),c=o+(r.value.name||"value");u(e+p,t,r.key,a),u(e+c,i,r.value,a)})}function o(e,t,r,a){var i=r.member||{};return 0===t.length?void a.call(this,e,null):void p.arrayEach(t,function(t,n){var o="."+(n+1);if("ec2"===r.api.protocol)o+="";else if(r.flattened){if(i.name){var p=e.split(".");p.pop(),p.push(s(i)),e=p.join(".")}}else o=".member"+o;u(e+o,t,i,a)})}function u(e,t,r,a){null!==t&&void 0!==t&&("structure"===r.type?i(e,t,r,a):"list"===r.type?o(e,t,r,a):"map"===r.type?n(e,t,r,a):a(e,r.toWireFormat(t).toString()))}var p=e("../util");a.prototype.serialize=function(e,t,r){i("",e,t,r)},t.exports=a},{"../util":245}],218:[function(e,t,r){t.exports={rules:{"*/*":{endpoint:"{service}.{region}.amazonaws.com"},"cn-*/*":{endpoint:"{service}.{region}.amazonaws.com.cn"},"*/cloudfront":"globalSSL","*/iam":"globalSSL","*/sts":"globalSSL","*/importexport":{endpoint:"{service}.amazonaws.com",signatureVersion:"v2",globalEndpoint:!0},"*/route53":{endpoint:"https://{service}.amazonaws.com",signatureVersion:"v3https",globalEndpoint:!0},"*/waf":"globalSSL","us-gov-*/iam":"globalGovCloud","us-gov-*/sts":{endpoint:"{service}.{region}.amazonaws.com"},"us-gov-west-1/s3":"s3dash","us-west-1/s3":"s3dash","us-west-2/s3":"s3dash","eu-west-1/s3":"s3dash","ap-southeast-1/s3":"s3dash","ap-southeast-2/s3":"s3dash","ap-northeast-1/s3":"s3dash","sa-east-1/s3":"s3dash","us-east-1/s3":{endpoint:"{service}.amazonaws.com",signatureVersion:"s3"},"us-east-1/sdb":{endpoint:"{service}.amazonaws.com",signatureVersion:"v2"},"*/sdb":{endpoint:"{service}.{region}.amazonaws.com",signatureVersion:"v2"}},patterns:{globalSSL:{endpoint:"https://{service}.amazonaws.com",globalEndpoint:!0},globalGovCloud:{endpoint:"{service}.us-gov.amazonaws.com"},s3dash:{endpoint:"{service}-{region}.amazonaws.com",signatureVersion:"s3"}}}},{}],219:[function(e,t,r){function a(e){if(!e)return null;var t=e.split("-");return t.length<3?null:t.slice(0,t.length-2).join("-")+"-*"}function s(e){var t=e.config.region,r=a(t),s=e.api.endpointPrefix;return[[t,s],[r,s],[t,"*"],[r,"*"],["*",s],["*","*"]].map(function(e){return e[0]&&e[1]?e.join("/"):null})}function i(e,t){o.each(t,function(t,r){"globalEndpoint"!==t&&(void 0!==e.config[t]&&null!==e.config[t]||(e.config[t]=r))})}function n(e){ -for(var t=s(e),r=0;r=0){u=!0;var p=0}var c=function(){u&&p!==o?s.emit("error",a.util.error(new Error("Stream content length mismatch. Received "+p+" of "+o+" bytes."),{code:"StreamContentLengthMismatch"})):2===a.HttpClient.streamsApiVersion?s.end():s.emit("end")},m=n.httpResponse.createUnbufferedStream();if(2===a.HttpClient.streamsApiVersion)if(u){var l=new e.PassThrough;l._write=function(t){return t&&t.length&&(p+=t.length),e.PassThrough.prototype._write.apply(this,arguments)},l.on("end",c),m.pipe(l).pipe(s,{end:!1})}else m.pipe(s);else u&&m.on("data",function(e){e&&e.length&&(p+=e.length)}),m.on("data",function(e){s.emit("data",e)}),m.on("end",c);m.on("error",function(e){u=!1,s.emit("error",e)})}}),this.on("error",function(e){s.emit("error",e)}),s},emitEvent:function(e,t,r){"function"==typeof t&&(r=t,t=null),r||(r=function(){}),t||(t=this.eventParameters(e,this.response));var s=a.SequentialExecutor.prototype.emit;s.call(this,e,t,function(e){e&&(this.response.error=e),r.call(this,e)})},eventParameters:function(e){switch(e){case"restart":case"validate":case"sign":case"build":case"afterValidate":case"afterBuild":return[this];case"error":return[this.response.error,this.response];default:return[this.response]}},presign:function(e,t){return t||"function"!=typeof e||(t=e,e=null),(new a.Signers.Presign).sign(this.toGet(),e,t)},isPresigned:function(){return Object.prototype.hasOwnProperty.call(this.httpRequest.headers,"presigned-expires")},toUnauthenticated:function(){return this.removeListener("validate",a.EventListeners.Core.VALIDATE_CREDENTIALS),this.removeListener("sign",a.EventListeners.Core.SIGN),this},toGet:function(){return"query"!==this.service.api.protocol&&"ec2"!==this.service.api.protocol||(this.removeListener("build",this.buildAsGet),this.addListener("build",this.buildAsGet)),this},buildAsGet:function(e){e.httpRequest.method="GET",e.httpRequest.path=e.service.endpoint.path+"?"+e.httpRequest.body,e.httpRequest.body="",delete e.httpRequest.headers["Content-Length"],delete e.httpRequest.headers["Content-Type"]},haltHandlersOnError:function(){this._haltHandlersOnError=!0}}),a.util.addPromisesToRequests(a.Request),a.util.mixin(a.Request,a.SequentialExecutor)}).call(this,e("_process"))},{"./core":188,"./state_machine":244,_process:250,jmespath:268}],221:[function(e,t,r){function a(e){var t=e.request._waiter,r=t.config.acceptors,a=!1,s="retry";r.forEach(function(r){if(!a){var i=t.matchers[r.matcher];i&&i(e,r.expected,r.argument)&&(a=!0,s=r.state)}}),!a&&e.error&&(s="failure"),"success"===s?t.setSuccess(e):t.setError(e,"retry"===s)}var s=e("./core"),i=s.util.inherit,n=e("jmespath");s.ResourceWaiter=i({constructor:function(e,t){this.service=e,this.state=t,this.loadWaiterConfig(this.state)},service:null,state:null,config:null,matchers:{path:function(e,t,r){var a=n.search(e.data,r);return n.strictDeepEqual(a,t)},pathAll:function(e,t,r){var a=n.search(e.data,r);Array.isArray(a)||(a=[a]);var s=a.length;if(!s)return!1;for(var i=0;ie.partSize&&(e.partSize=t)}else e.totalBytes=void 0},isDoneChunking:!1,partPos:0,totalChunkedBytes:0,totalUploadedBytes:0,totalBytes:void 0,numParts:0,totalPartNumbers:0,activeParts:0,doneParts:0,parts:null,completeInfo:null,failed:!1,multipartReq:null,partBuffers:null,partBufferLength:0,fillBuffer:function(){var e=this,t=s(e.body);if(0===t)return e.isDoneChunking=!0,e.numParts=1,void e.nextChunk(e.body);for(;e.activeParts=e.queueSize)){var t=e.body.read(e.partSize-e.partBufferLength)||e.body.read();if(t&&(e.partBuffers.push(t),e.partBufferLength+=t.length,e.totalChunkedBytes+=t.length),e.partBufferLength>=e.partSize){var r=1===e.partBuffers.length?e.partBuffers[0]:i.concat(e.partBuffers);if(e.partBuffers=[],e.partBufferLength=0,r.length>e.partSize){var a=r.slice(e.partSize);e.partBuffers.push(a),e.partBufferLength+=a.length,r=r.slice(0,e.partSize)}e.nextChunk(r)}e.isDoneChunking&&!e.isDoneSending&&(r=1===e.partBuffers.length?e.partBuffers[0]:i.concat(e.partBuffers),e.partBuffers=[],e.partBufferLength=0,e.totalBytes=e.totalChunkedBytes,e.isDoneSending=!0,(0===e.numParts||r.length>0)&&(e.numParts++,e.nextChunk(r))),e.body.read(0)}},nextChunk:function(e){var t=this;if(t.failed)return null;var r=++t.totalPartNumbers;if(t.isDoneChunking&&1===r){var s=t.service.putObject({Body:e});return s._managedUpload=t,s.on("httpUploadProgress",t.progress).send(t.finishSinglePart),null}if(t.service.config.params.ContentMD5){var i=a.util.error(new Error("The Content-MD5 you specified is invalid for multi-part uploads."),{code:"InvalidDigest",retryable:!1});return t.cleanup(i),null}return t.completeInfo[r]&&null!==t.completeInfo[r].ETag?null:(t.activeParts++,void(t.service.config.params.UploadId?t.uploadPart(e,r):t.multipartReq?t.queueChunks(e,r):(t.multipartReq=t.service.createMultipartUpload(),t.multipartReq.on("success",function(e){t.service.config.params.UploadId=e.data.UploadId,t.multipartReq=null}),t.queueChunks(e,r),t.multipartReq.on("error",function(e){t.cleanup(e)}),t.multipartReq.send())))},uploadPart:function(e,t){var r=this,s={Body:e,ContentLength:a.util.string.byteLength(e),PartNumber:t},i={ETag:null,PartNumber:t};r.completeInfo[t]=i;var n=r.service.uploadPart(s);r.parts[t]=n,n._lastUploadedBytes=0,n._managedUpload=r,n.on("httpUploadProgress",r.progress),n.send(function(e,t){if(delete r.parts[s.PartNumber],r.activeParts--,!(e||t&&t.ETag)){var n="No access to ETag property on response.";a.util.isBrowser()&&(n+=" Check CORS configuration to expose ETag header."),e=a.util.error(new Error(n),{code:"ETagMissing",retryable:!1})}return e?r.cleanup(e):(i.ETag=t.ETag,r.doneParts++,void(r.isDoneChunking&&r.doneParts===r.numParts?r.finishMultiPart():r.fillQueue.call(r)))})},queueChunks:function(e,t){var r=this;r.multipartReq.on("success",function(){r.uploadPart(e,t)})},cleanup:function(e){var t=this;t.failed||("function"==typeof t.body.removeAllListeners&&"function"==typeof t.body.resume&&(t.body.removeAllListeners("readable"),t.body.removeAllListeners("end"),t.body.resume()),t.service.config.params.UploadId&&!t.leavePartsOnError&&t.service.abortMultipartUpload().send(),a.util.each(t.parts,function(e,t){t.removeAllListeners("complete"),t.abort()}),t.activeParts=0,t.partPos=0,t.numParts=0,t.totalPartNumbers=0,t.parts={},t.failed=!0,t.callback(e))},finishMultiPart:function(){var e=this,t={MultipartUpload:{Parts:e.completeInfo.slice(1)}};e.service.completeMultipartUpload(t,function(t,r){return t?e.cleanup(t):void e.callback(t,r)})},finishSinglePart:function(e,t){var r=this.request._managedUpload,a=this.request.httpRequest,s=a.endpoint;return e?r.callback(e):(t.Location=[s.protocol,"//",s.host,a.path].join(""),t.key=this.request.params.Key,t.Key=this.request.params.Key,t.Bucket=this.request.params.Bucket,void r.callback(e,t))},progress:function(e){var t=this._managedUpload;"putObject"===this.operation?(e.part=1,e.key=this.params.Key):(t.totalUploadedBytes+=e.loaded-this._lastUploadedBytes,this._lastUploadedBytes=e.loaded,e={loaded:t.totalUploadedBytes,total:t.totalBytes,part:this.params.PartNumber,key:this.params.Key}),t.emit("httpUploadProgress",[e])}}),a.util.mixin(a.S3.ManagedUpload,a.SequentialExecutor),t.exports=a.S3.ManagedUpload},{"../core":188}],224:[function(e,t,r){var a=e("./core");a.SequentialExecutor=a.util.inherit({constructor:function(){this._events={}},listeners:function(e){return this._events[e]?this._events[e].slice(0):[]},on:function(e,t){return this._events[e]?this._events[e].push(t):this._events[e]=[t],this},onAsync:function(e,t){return t._isAsync=!0,this.on(e,t)},removeListener:function(e,t){var r=this._events[e];if(r){for(var a=r.length,s=-1,i=0;i-1&&r.splice(s,1)}return this},removeAllListeners:function(e){return e?delete this._events[e]:this._events={},this},emit:function(e,t,r){r||(r=function(){});var a=this.listeners(e),s=a.length;return this.callListeners(a,t,r),s>0},callListeners:function(e,t,r,s){function i(s){return s&&(o=a.util.error(o||new Error,s),n._haltHandlersOnError)?r.call(n,o):void n.callListeners(e,t,r,o)}for(var n=this,o=s||null;e.length>0;){var u=e.shift();if(u._isAsync)return void u.apply(n,t.concat([i]));try{u.apply(n,t)}catch(e){o=a.util.error(o||new Error,e)}if(o&&n._haltHandlersOnError)return void r.call(n,o)}r.call(n,o)},addListeners:function(e){var t=this;return e._events&&(e=e._events),a.util.each(e,function(e,r){"function"==typeof r&&(r=[r]),a.util.arrayEach(r,function(r){t.on(e,r)})}),t},addNamedListener:function(e,t,r){return this[e]=r,this.addListener(t,r),this},addNamedAsyncListener:function(e,t,r){return r._isAsync=!0,this.addNamedListener(e,t,r)},addNamedListeners:function(e){var t=this;return e(function(){t.addNamedListener.apply(t,arguments)},function(){t.addNamedAsyncListener.apply(t,arguments)}),this}}),a.SequentialExecutor.prototype.addListener=a.SequentialExecutor.prototype.on,t.exports=a.SequentialExecutor},{"./core":188}],225:[function(e,t,r){var a=e("./core"),s=e("./model/api"),i=e("./region_config"),n=a.util.inherit,o=0;a.Service=n({constructor:function(e){if(!this.loadServiceClass)throw a.util.error(new Error,"Service must be constructed with `new' operator");var t=this.loadServiceClass(e||{});if(t){var r=a.util.copy(e),s=new t(e);return Object.defineProperty(s,"_originalConfig",{get:function(){return r},enumerable:!1,configurable:!0}),s._clientId=++o,s}this.initialize(e)},initialize:function(e){var t=a.config[this.serviceIdentifier];this.config=new a.Config(a.config),t&&this.config.update(t,!0),e&&this.config.update(e,!0),this.validateService(),this.config.endpoint||i(this),this.config.endpoint=this.endpointFromTemplate(this.config.endpoint),this.setEndpoint(this.config.endpoint)},validateService:function(){},loadServiceClass:function(e){var t=e;if(a.util.isEmpty(this.api)){if(t.apiConfig)return a.Service.defineServiceApi(this.constructor,t.apiConfig);if(this.constructor.services){t=new a.Config(a.config),t.update(e,!0);var r=t.apiVersions[this.constructor.serviceIdentifier];return r=r||t.apiVersion,this.getLatestServiceClass(r)}return null}return null},getLatestServiceClass:function(e){return e=this.getLatestServiceVersion(e),null===this.constructor.services[e]&&a.Service.defineServiceApi(this.constructor,e),this.constructor.services[e]},getLatestServiceVersion:function(e){if(!this.constructor.services||0===this.constructor.services.length)throw new Error("No services defined on "+this.constructor.serviceIdentifier);if(e?a.util.isType(e,Date)&&(e=a.util.date.iso8601(e).split("T")[0]):e="latest",Object.hasOwnProperty(this.constructor.services,e))return e;for(var t=Object.keys(this.constructor.services).sort(),r=null,s=t.length-1;s>=0;s--)if("*"!==t[s][t[s].length-1]&&(r=t[s]),t[s].substr(0,10)<=e)return r;throw new Error("Could not find "+this.constructor.serviceIdentifier+" API to satisfy version constraint `"+e+"'")},api:{},defaultRetryCount:3,makeRequest:function(e,t,r){if("function"==typeof t&&(r=t,t=null),t=t||{},this.config.params){var s=this.api.operations[e];s&&(t=a.util.copy(t),a.util.each(this.config.params,function(e,r){s.input.members[e]&&(void 0!==t[e]&&null!==t[e]||(t[e]=r))}))}var i=new a.Request(this,e,t);return this.addAllRequestListeners(i),r&&i.send(r),i},makeUnauthenticatedRequest:function(e,t,r){"function"==typeof t&&(r=t,t={});var a=this.makeRequest(e,t).toUnauthenticated();return r?a.send(r):a},waitFor:function(e,t,r){var s=new a.ResourceWaiter(this,e);return s.wait(t,r)},addAllRequestListeners:function(e){for(var t=[a.events,a.EventListeners.Core,this.serviceInterface(),a.EventListeners.CorePost],r=0;r=500))},networkingError:function(e){return"NetworkingError"===e.code},expiredCredentialsError:function(e){return"ExpiredTokenException"===e.code},clockSkewError:function(e){switch(e.code){case"RequestTimeTooSkewed":case"RequestExpired":case"InvalidSignatureException":case"SignatureDoesNotMatch":case"AuthFailure":case"RequestInTheFuture":return!0;default:return!1}},throttledError:function(e){switch(e.code){case"ProvisionedThroughputExceededException":case"Throttling":case"ThrottlingException":case"RequestLimitExceeded":case"RequestThrottled":return!0;default:return!1}},endpointFromTemplate:function(e){if("string"!=typeof e)return e;var t=e;return t=t.replace(/\{service\}/g,this.api.endpointPrefix),t=t.replace(/\{region\}/g,this.config.region),t=t.replace(/\{scheme\}/g,this.config.sslEnabled?"https":"http")},setEndpoint:function(e){this.endpoint=new a.Endpoint(e,this.config)},paginationConfig:function(e,t){var r=this.api.operations[e].paginator;if(!r){if(t){var s=new Error;throw a.util.error(s,"No pagination configuration for "+e)}return null}return r}}),a.util.update(a.Service,{defineMethods:function(e){a.util.each(e.prototype.api.operations,function(t){if(!e.prototype[t]){var r=e.prototype.api.operations[t];"none"===r.authtype?e.prototype[t]=function(e,r){return this.makeUnauthenticatedRequest(t,e,r)}:e.prototype[t]=function(e,r){return this.makeRequest(t,e,r)}}})},defineService:function(e,t,r){a.Service._serviceMap[e]=!0,Array.isArray(t)||(r=t,t=[]);var s=n(a.Service,r||{});if("string"==typeof e){a.Service.addVersions(s,t);var i=s.serviceIdentifier||e;s.serviceIdentifier=i}else s.prototype.api=e,a.Service.defineMethods(s);return s},addVersions:function(e,t){Array.isArray(t)||(t=[t]),e.services=e.services||{};for(var r=0;r0?50*Math.pow(2,e-1):0;return t}})},{"../core":188,"../dynamodb/document_client":196}],230:[function(e,t,r){var a=e("../core");a.util.update(a.EC2.prototype,{setupRequestListeners:function(e){e.removeListener("extractError",a.EventListeners.Query.EXTRACT_ERROR),e.addListener("extractError",this.extractError),"copySnapshot"===e.operation&&e.onAsync("validate",this.buildCopySnapshotPresignedUrl)},buildCopySnapshotPresignedUrl:function(e,t){if(e.params.PresignedUrl||e._subRequest)return t();e.params=a.util.copy(e.params),e.params.DestinationRegion=e.service.config.region;var r=a.util.copy(e.service.config);delete r.endpoint,r.region=e.params.SourceRegion;var s=new e.service.constructor(r),i=s[e.operation](e.params);i._subRequest=!0,i.presign(function(r,a){r?t(r):(e.params.PresignedUrl=a,t())})},extractError:function(e){var t=e.httpResponse,r=(new a.XML.Parser).parse(t.body.toString()||"");r.Errors?e.error=a.util.error(new Error,{code:r.Errors.Error.Code,message:r.Errors.Error.Message}):e.error=a.util.error(new Error,{code:t.statusCode,message:null}),e.error.requestId=r.RequestID||null}})},{"../core":188}],231:[function(e,t,r){var a=e("../core");a.util.update(a.IotData.prototype,{validateService:function(){if(!this.config.endpoint||this.config.endpoint.indexOf("{")>=0){var e="AWS.IotData requires an explicit `endpoint' configuration option.";throw a.util.error(new Error,{name:"InvalidEndpoint",message:e})}},setupRequestListeners:function(e){e.addListener("validateResponse",this.validateResponseBody)},validateResponseBody:function(e){var t=e.httpResponse.body.toString()||"{}",r=t.trim();r&&"{"===r.charAt(0)||(e.httpResponse.body="")}})},{"../core":188}],232:[function(e,t,r){var a=e("../core");a.util.update(a.MachineLearning.prototype,{setupRequestListeners:function(e){"predict"===e.operation&&e.addListener("build",this.buildEndpoint)},buildEndpoint:function(e){var t=e.params.PredictEndpoint;t&&(e.httpRequest.endpoint=new a.Endpoint(t))}})},{"../core":188}],233:[function(e,t,r){var a=e("../core");a.util.update(a.Route53.prototype,{setupRequestListeners:function(e){e.on("build",this.sanitizeUrl)},sanitizeUrl:function(e){var t=e.httpRequest.path;e.httpRequest.path=t.replace(/\/%2F\w+%2F/,"/")},retryableError:function(e){if("PriorRequestNotComplete"===e.code&&400===e.statusCode)return!0;var t=a.Service.prototype.retryableError;return t.call(this,e)}})},{"../core":188}],234:[function(e,t,r){var a=e("../core");e("../s3/managed_upload");var s={completeMultipartUpload:!0,copyObject:!0,uploadPartCopy:!0},i=["AuthorizationHeaderMalformed","BadRequest","PermanentRedirect",301];a.util.update(a.S3.prototype,{getSignerClass:function(e){var t=this.api.signatureVersion,r=this._originalConfig?this._originalConfig.signatureVersion:null,s=this.config.signatureVersion;!!e&&e.isPresigned();return r?(r="v2"===r?"s3":r,a.Signers.RequestSigner.getVersion(r)):(s&&(t=s),a.Signers.RequestSigner.getVersion(t))},validateService:function(){var e,t=[];if(this.config.region||(this.config.region="us-east-1"),!this.config.endpoint&&this.config.s3BucketEndpoint&&t.push("An endpoint must be provided when configuring `s3BucketEndpoint` to true."),this.config.useAccelerateEndpoint&&this.config.useDualstack&&t.push("`useAccelerateEndpoint` and `useDualstack` cannot both be configured to true."),1===t.length?e=t[0]:t.length>1&&(e="Multiple configuration errors:\n"+t.join("\n")),e)throw a.util.error(new Error,{name:"InvalidEndpoint",message:e})},shouldDisableBodySigning:function(e){var t=this.getSignerClass();return this.config.s3DisableBodySigning===!0&&t===a.Signers.V4&&"https:"===e.httpRequest.endpoint.protocol},setupRequestListeners:function(e){e.addListener("validate",this.validateScheme),e.addListener("validate",this.validateBucketEndpoint),e.addListener("validate",this.correctBucketRegionFromCache),e.addListener("build",this.addContentType),e.addListener("build",this.populateURI),e.addListener("build",this.computeContentMd5),e.addListener("build",this.computeSseCustomerKeyMd5),e.addListener("afterBuild",this.addExpect100Continue),e.removeListener("validate",a.EventListeners.Core.VALIDATE_REGION),e.addListener("extractError",this.extractError),e.onAsync("extractError",this.requestBucketRegion),e.addListener("extractData",this.extractData),e.addListener("extractData",a.util.hoistPayloadMember),e.addListener("beforePresign",this.prepareSignedUrl),a.util.isBrowser()&&e.onAsync("retry",this.reqRegionForNetworkingError),this.shouldDisableBodySigning(e)&&(e.removeListener("afterBuild",a.EventListeners.Core.COMPUTE_SHA256),e.addListener("afterBuild",this.disableBodySigning))},validateScheme:function(e){var t=e.params,r=e.httpRequest.endpoint.protocol,s=t.SSECustomerKey||t.CopySourceSSECustomerKey;if(s&&"https:"!==r){var i="Cannot send SSE keys over HTTP. Set 'sslEnabled'to 'true' in your configuration";throw a.util.error(new Error,{code:"ConfigError",message:i})}},validateBucketEndpoint:function(e){if(!e.params.Bucket&&e.service.config.s3BucketEndpoint){var t="Cannot send requests to root API with `s3BucketEndpoint` set.";throw a.util.error(new Error,{code:"ConfigError",message:t})}},isValidAccelerateOperation:function(e){var t=["createBucket","deleteBucket","listBuckets"];return t.indexOf(e)===-1},populateURI:function(e){var t=e.httpRequest,r=e.params.Bucket,a=e.service,s=t.endpoint;if(r&&!a.pathStyleBucketName(r)){a.config.useAccelerateEndpoint&&a.isValidAccelerateOperation(e.operation)?s.hostname=r+".s3-accelerate.amazonaws.com":a.config.s3BucketEndpoint||(s.hostname=r+"."+s.hostname);var i=s.port;80!==i&&443!==i?s.host=s.hostname+":"+s.port:s.host=s.hostname, -t.virtualHostedBucket=r,a.removeVirtualHostedBucketFromPath(e)}},removeVirtualHostedBucketFromPath:function(e){var t=e.httpRequest,r=t.virtualHostedBucket;r&&t.path&&(t.path=t.path.replace(new RegExp("/"+r),""),"/"!==t.path[0]&&(t.path="/"+t.path))},addExpect100Continue:function(e){var t=e.httpRequest.headers["Content-Length"];a.util.isNode()&&t>=1048576&&(e.httpRequest.headers.Expect="100-continue")},addContentType:function(e){var t=e.httpRequest;if("GET"===t.method||"HEAD"===t.method)return void delete t.headers["Content-Type"];t.headers["Content-Type"]||(t.headers["Content-Type"]="application/octet-stream");var r=t.headers["Content-Type"];if(a.util.isBrowser())if("string"!=typeof t.body||r.match(/;\s*charset=/)){var s=function(e,t,r){return t+r.toUpperCase()};t.headers["Content-Type"]=r.replace(/(;\s*charset=)(.+)$/,s)}else{var i="; charset=UTF-8";t.headers["Content-Type"]+=i}},computableChecksumOperations:{putBucketCors:!0,putBucketLifecycle:!0,putBucketLifecycleConfiguration:!0,putBucketTagging:!0,deleteObjects:!0,putBucketReplication:!0},willComputeChecksums:function(e){if(this.computableChecksumOperations[e.operation])return!0;if(!this.config.computeChecksums)return!1;if(!a.util.Buffer.isBuffer(e.httpRequest.body)&&"string"!=typeof e.httpRequest.body)return!1;var t=e.service.api.operations[e.operation].input.members;return!(!e.service.shouldDisableBodySigning(e)||Object.prototype.hasOwnProperty.call(e.httpRequest.headers,"presigned-expires")||!t.ContentMD5||e.params.ContentMD5)||!(e.service.getSignerClass(e)===a.Signers.V4&&t.ContentMD5&&!t.ContentMD5.required)&&(!(!t.ContentMD5||e.params.ContentMD5)||void 0)},computeContentMd5:function(e){if(e.service.willComputeChecksums(e)){var t=a.util.crypto.md5(e.httpRequest.body,"base64");e.httpRequest.headers["Content-MD5"]=t}},computeSseCustomerKeyMd5:function(e){var t={SSECustomerKey:"x-amz-server-side-encryption-customer-key-MD5",CopySourceSSECustomerKey:"x-amz-copy-source-server-side-encryption-customer-key-MD5"};a.util.each(t,function(t,r){if(e.params[t]){var s=a.util.crypto.md5(e.params[t],"base64");e.httpRequest.headers[r]=s}})},pathStyleBucketName:function(e){return!!this.config.s3ForcePathStyle||!this.config.s3BucketEndpoint&&(!this.dnsCompatibleBucketName(e)||!(!this.config.sslEnabled||!e.match(/\./)))},dnsCompatibleBucketName:function(e){var t=e,r=new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/),a=new RegExp(/(\d+\.){3}\d+/),s=new RegExp(/\.\./);return!(!t.match(r)||t.match(a)||t.match(s))},successfulResponse:function(e){var t=e.request,r=e.httpResponse;return(!s[t.operation]||!r.body.toString().match(""))&&r.statusCode<300},retryableError:function(e,t){if(s[t.operation]&&200===e.statusCode)return!0;if(t._requestRegionForBucket&&t.service.bucketRegionCache[t._requestRegionForBucket])return!1;if(e&&"RequestTimeout"===e.code)return!0;if(e&&i.indexOf(e.code)!=-1&&e.region&&e.region!=t.httpRequest.region)return t.httpRequest.region=e.region,301===e.statusCode&&t.service.updateReqBucketRegion(t),!0;var r=a.Service.prototype.retryableError;return r.call(this,e,t)},updateReqBucketRegion:function(e,t){var r=e.httpRequest;if("string"==typeof t&&t.length&&(r.region=t),r.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)){var s=e.service,i=s.config,n=i.s3BucketEndpoint;n&&delete i.s3BucketEndpoint;var o=a.util.copy(i);delete o.endpoint,o.region=r.region,r.endpoint=new a.S3(o).endpoint,s.populateURI(e),i.s3BucketEndpoint=n,r.headers.Host=r.endpoint.host,"validate"===e._asm.currentState&&(e.removeListener("build",s.populateURI),e.addListener("build",s.removeVirtualHostedBucketFromPath))}},extractData:function(e){var t=e.request;if("getBucketLocation"===t.operation){var r=e.httpResponse.body.toString().match(/>(.+)<\/Location/);delete e.data._,r?e.data.LocationConstraint=r[1]:e.data.LocationConstraint=""}var a=t.params.Bucket||null;if("deleteBucket"!==t.operation||"string"!=typeof a||e.error){var s=e.httpResponse.headers||{},i=s["x-amz-bucket-region"]||null;if(!i&&"createBucket"===t.operation&&!e.error){var n=t.params.CreateBucketConfiguration;i=n?"EU"===n.LocationConstraint?"eu-west-1":n.LocationConstraint:"us-east-1"}i&&a&&i!==t.service.bucketRegionCache[a]&&(t.service.bucketRegionCache[a]=i)}else t.service.clearBucketRegionCache(a);t.service.extractRequestIds(e)},extractError:function(e){var t={304:"NotModified",403:"Forbidden",400:"BadRequest",404:"NotFound"},r=e.request,s=e.httpResponse.statusCode,i=e.httpResponse.body||"",n=e.httpResponse.headers||{},o=n["x-amz-bucket-region"]||null,u=r.params.Bucket||null,p=r.service.bucketRegionCache;o&&u&&o!==p[u]&&(p[u]=o);var c;if(t[s]&&0===i.length)u&&!o&&(c=p[u]||null,c!==r.httpRequest.region&&(o=c)),e.error=a.util.error(new Error,{code:t[s],message:null,region:o});else{var m=(new a.XML.Parser).parse(i.toString());m.Region&&!o?(o=m.Region,u&&o!==p[u]&&(p[u]=o)):!u||o||m.Region||(c=p[u]||null,c!==r.httpRequest.region&&(o=c)),e.error=a.util.error(new Error,{code:m.Code||s,message:m.Message||null,region:o})}r.service.extractRequestIds(e)},requestBucketRegion:function(e,t){var r=e.error,s=e.request,n=s.params.Bucket||null;if(!r||!n||r.region||"listObjects"===s.operation||a.util.isNode()&&"headBucket"===s.operation||400===r.statusCode&&"headObject"!==s.operation||i.indexOf(r.code)===-1)return t();var o=a.util.isNode()?"headBucket":"listObjects",u={Bucket:n};"listObjects"===o&&(u.MaxKeys=0);var p=s.service[o](u);p._requestRegionForBucket=n,p.send(function(){var e=s.service.bucketRegionCache[n]||null;r.region=e,t()})},reqRegionForNetworkingError:function(e,t){if(!a.util.isBrowser())return t();var r=e.error,s=e.request,i=s.params.Bucket;if(!r||"NetworkingError"!==r.code||!i||"us-east-1"===s.httpRequest.region)return t();var n=s.service,o=n.bucketRegionCache,u=o[i]||null;if(u&&u!==s.httpRequest.region)n.updateReqBucketRegion(s,u),t();else if(n.dnsCompatibleBucketName(i))if(s.httpRequest.virtualHostedBucket){var p=n.listObjects({Bucket:i,MaxKeys:0});n.updateReqBucketRegion(p,"us-east-1"),p._requestRegionForBucket=i,p.send(function(){var e=n.bucketRegionCache[i]||null;e&&e!==s.httpRequest.region&&n.updateReqBucketRegion(s,e),t()})}else t();else n.updateReqBucketRegion(s,"us-east-1"),"us-east-1"!==o[i]&&(o[i]="us-east-1"),t()},bucketRegionCache:{},clearBucketRegionCache:function(e){var t=this.bucketRegionCache;e?"string"==typeof e&&(e=[e]):e=Object.keys(t);for(var r=0;r0&&t.throwInvalidChecksumError(e,i,"Invalid messages: "+s.join(", "))}},verifyReceiveMessageChecksum:function(e){if(e.data){var t=this.service,r=[];a.util.arrayEach(e.data.Messages,function(e){var a=e.MD5OfBody,s=e.Body;t.isChecksumValid(a,s)||r.push(e.MessageId)}),r.length>0&&t.throwInvalidChecksumError(e,r,"Invalid messages: "+r.join(", "))}},throwInvalidChecksumError:function(e,t,r){e.error=a.util.error(new Error,{retryable:!0,code:"InvalidChecksum",messageIds:t,message:e.request.operation+" returned an invalid MD5 response. "+r})},isChecksumValid:function(e,t){return this.calculateChecksum(t)===e},calculateChecksum:function(e){return a.util.crypto.md5(e,"hex")},buildEndpoint:function(e){var t=e.httpRequest.params.QueueUrl;if(t){e.httpRequest.endpoint=new a.Endpoint(t);var r=e.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./);r&&(e.httpRequest.region=r[1])}}})},{"../core":188}],236:[function(e,t,r){var a=e("../core");a.util.update(a.STS.prototype,{credentialsFrom:function(e,t){return e?(t||(t=new a.TemporaryCredentials),t.expired=!1,t.accessKeyId=e.Credentials.AccessKeyId,t.secretAccessKey=e.Credentials.SecretAccessKey,t.sessionToken=e.Credentials.SessionToken,t.expireTime=e.Credentials.Expiration,t):null},assumeRoleWithWebIdentity:function(e,t){return this.makeUnauthenticatedRequest("assumeRoleWithWebIdentity",e,t)},assumeRoleWithSAML:function(e,t){return this.makeUnauthenticatedRequest("assumeRoleWithSAML",e,t)}})},{"../core":188}],237:[function(e,t,r){function a(e){var t=e.httpRequest.headers[o],r=e.service.getSignerClass(e);if(delete e.httpRequest.headers["User-Agent"],delete e.httpRequest.headers["X-Amz-User-Agent"],r===i.Signers.V4){if(t>604800){var a="Presigning does not support expiry time greater than a week with SigV4 signing.";throw i.util.error(new Error,{code:"InvalidExpiryTime",message:a,retryable:!1})}e.httpRequest.headers[o]=t}else{if(r!==i.Signers.S3)throw i.util.error(new Error,{message:"Presigning only supports S3 or SigV4 signing.",code:"UnsupportedSigner",retryable:!1});e.httpRequest.headers[o]=parseInt(i.util.date.unixTimestamp()+t,10).toString()}}function s(e){var t=e.httpRequest.endpoint,r=i.util.urlParse(e.httpRequest.path),a={};r.search&&(a=i.util.queryStringParse(r.search.substr(1))),i.util.each(e.httpRequest.headers,function(e,t){e===o&&(e="Expires"),0===e.indexOf("x-amz-meta-")&&(delete a[e],e=e.toLowerCase()),a[e]=t}),delete e.httpRequest.headers[o];var s=a.Authorization.split(" ");if("AWS"===s[0])s=s[1].split(":"),a.AWSAccessKeyId=s[0],a.Signature=s[1];else if("AWS4-HMAC-SHA256"===s[0]){s.shift();var n=s.join(" "),u=n.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1];a["X-Amz-Signature"]=u,delete a.Expires}delete a.Authorization,delete a.Host,t.pathname=r.pathname,t.search=i.util.queryParamsToString(a)}var i=e("../core"),n=i.util.inherit,o="presigned-expires";i.Signers.Presign=n({sign:function(e,t,r){if(e.httpRequest.headers[o]=t||3600,e.on("build",a),e.on("sign",s),e.removeListener("afterBuild",i.EventListeners.Core.SET_CONTENT_LENGTH),e.removeListener("afterBuild",i.EventListeners.Core.COMPUTE_SHA256),e.emit("beforePresign",[e]),!r){if(e.build(),e.response.error)throw e.response.error;return i.util.urlFormat(e.httpRequest.endpoint)}e.build(function(){this.response.error?r(this.response.error):r(null,i.util.urlFormat(e.httpRequest.endpoint))})}}),t.exports=i.Signers.Presign},{"../core":188}],238:[function(e,t,r){var a=e("../core"),s=a.util.inherit;a.Signers.RequestSigner=s({constructor:function(e){this.request=e},setServiceClientId:function(e){this.serviceClientId=e},getServiceClientId:function(){return this.serviceClientId}}),a.Signers.RequestSigner.getVersion=function(e){switch(e){case"v2":return a.Signers.V2;case"v3":return a.Signers.V3;case"v4":return a.Signers.V4;case"s3":return a.Signers.S3;case"v3https":return a.Signers.V3Https}throw new Error("Unknown signing version "+e)},e("./v2"),e("./v3"),e("./v3https"),e("./v4"),e("./s3"),e("./presign")},{"../core":188,"./presign":237,"./s3":239,"./v2":240,"./v3":241,"./v3https":242,"./v4":243}],239:[function(e,t,r){var a=e("../core"),s=a.util.inherit;a.Signers.S3=s(a.Signers.RequestSigner,{subResources:{acl:1,accelerate:1,cors:1,lifecycle:1,delete:1,location:1,logging:1,notification:1,partNumber:1,policy:1,requestPayment:1,replication:1,restore:1,tagging:1,torrent:1,uploadId:1,uploads:1,versionId:1,versioning:1,versions:1,website:1},responseHeaders:{"response-content-type":1,"response-content-language":1,"response-expires":1,"response-cache-control":1,"response-content-disposition":1,"response-content-encoding":1},addAuthorization:function(e,t){this.request.headers["presigned-expires"]||(this.request.headers["X-Amz-Date"]=a.util.date.rfc822(t)),e.sessionToken&&(this.request.headers["x-amz-security-token"]=e.sessionToken);var r=this.sign(e.secretAccessKey,this.stringToSign()),s="AWS "+e.accessKeyId+":"+r;this.request.headers.Authorization=s},stringToSign:function(){var e=this.request,t=[];t.push(e.method),t.push(e.headers["Content-MD5"]||""),t.push(e.headers["Content-Type"]||""),t.push(e.headers["presigned-expires"]||"");var r=this.canonicalizedAmzHeaders();return r&&t.push(r),t.push(this.canonicalizedResource()),t.join("\n")},canonicalizedAmzHeaders:function(){var e=[];a.util.each(this.request.headers,function(t){t.match(/^x-amz-/i)&&e.push(t)}),e.sort(function(e,t){return e.toLowerCase()=0?"&":"?";this.request.path+=i+a.util.queryParamsToString(s)},authorization:function(e,t){var r=[],a=this.credentialString(t);return r.push(this.algorithm+" Credential="+e.accessKeyId+"/"+a),r.push("SignedHeaders="+this.signedHeaders()),r.push("Signature="+this.signature(e,t)),r.join(", ")},signature:function(e,t){var r=null,s=this.serviceName+(this.getServiceClientId()?"_"+this.getServiceClientId():"");if(this.signatureCache){var r=i[s];r||(n.push(s),n.length>o&&delete i[n.shift()])}var u=t.substr(0,8);if(!r||r.akid!==e.accessKeyId||r.region!==this.request.region||r.date!==u){var p=e.secretAccessKey,c=a.util.crypto.hmac("AWS4"+p,u,"buffer"),m=a.util.crypto.hmac(c,this.request.region,"buffer"),l=a.util.crypto.hmac(m,this.serviceName,"buffer"),d=a.util.crypto.hmac(l,"aws4_request","buffer");if(!this.signatureCache)return a.util.crypto.hmac(d,this.stringToSign(t),"hex");i[s]={region:this.request.region,date:u,key:d,akid:e.accessKeyId}}var y=i[s].key;return a.util.crypto.hmac(y,this.stringToSign(t),"hex")},stringToSign:function(e){var t=[];return t.push("AWS4-HMAC-SHA256"),t.push(e),t.push(this.credentialString(e)),t.push(this.hexEncodedHash(this.canonicalString())),t.join("\n")},canonicalString:function(){var e=[],t=this.request.pathname();return"s3"!==this.serviceName&&(t=a.util.uriEscapePath(t)),e.push(this.request.method),e.push(t),e.push(this.request.search()),e.push(this.canonicalHeaders()+"\n"),e.push(this.signedHeaders()),e.push(this.hexEncodedBodyHash()),e.join("\n")},canonicalHeaders:function(){var e=[];a.util.each.call(this,this.request.headers,function(t,r){e.push([t,r])}),e.sort(function(e,t){return e[0].toLowerCase()=e.length)return t.push(null);var s=r+a;s>e.length&&(s=e.length),t.push(e.slice(r,s)),r=s},t},concat:function(e){var t,r=0,a=0,i=null;for(t=0;t>>8^t[255&(r^i)]}return(r^-1)>>>0},hmac:function(e,t,r,a){return r||(r="binary"),"buffer"===r&&(r=void 0),a||(a="sha256"),"string"==typeof t&&(t=new s.Buffer(t)),s.crypto.lib.createHmac(a,e).update(t).digest(r)},md5:function(e,t,r){return s.crypto.hash("md5",e,t,r)},sha256:function(e,t,r){return s.crypto.hash("sha256",e,t,r)},hash:function(e,t,r,a){var i=s.crypto.createHash(e);r||(r="binary"),"buffer"===r&&(r=void 0),"string"==typeof t&&(t=new s.Buffer(t));var n=s.arraySliceFn(t),o=s.Buffer.isBuffer(t);if(s.isBrowser()&&"undefined"!=typeof ArrayBuffer&&t&&t.buffer instanceof ArrayBuffer&&(o=!0),a&&"object"==typeof t&&"function"==typeof t.on&&!o)t.on("data",function(e){i.update(e)}),t.on("error",function(e){a(e)}),t.on("end",function(){a(null,i.digest(r))});else{if(!a||!n||o||"undefined"==typeof FileReader){s.isBrowser()&&"object"==typeof t&&!o&&(t=new s.Buffer(new Uint8Array(t)));var u=i.update(t).digest(r);return a&&a(null,u),u}var p=0,c=524288,m=new FileReader;m.onerror=function(){a(new Error("Failed to read data."))},m.onload=function(){var e=new s.Buffer(new Uint8Array(m.result));i.update(e),p+=e.length,m._continueReading()},m._continueReading=function(){if(p>=t.size)return void a(null,i.digest(r));var e=p+c;e>t.size&&(e=t.size),m.readAsArrayBuffer(n.call(t,p,e))},m._continueReading()}},toHex:function(e){for(var t=[],r=0;r=3e5,!1),a.config.isClockSkewed},applyClockOffset:function(e){e&&(a.config.systemClockOffset=e-(new Date).getTime())},extractRequestId:function(e){var t=e.httpResponse.headers["x-amz-request-id"]||e.httpResponse.headers["x-amzn-requestid"];!t&&e.data&&e.data.ResponseMetadata&&(t=e.data.ResponseMetadata.RequestId),t&&(e.requestId=t),e.error&&(e.error.requestId=t)},addPromisesToRequests:function(e,t){return t=t||null,t||"undefined"==typeof Promise||(t=Promise),"function"!=typeof t?void delete e.prototype.promise:void(e.prototype.promise=function(){var e=this;return new t(function(t,r){e.on("complete",function(e){e.error?r(e.error):t(e.data)}),e.runTo()})})},isDualstackAvailable:function(t){if(!t)return!1;var r=e("../apis/metadata.json");return"string"!=typeof t&&(t=t.serviceIdentifier),!("string"!=typeof t||!r.hasOwnProperty(t))&&!!r[t].dualstackAvailable},calculateRetryDelay:function(e,t){t||(t={});var r=t.customBackoff||null;if("function"==typeof r)return r(e);var a=t.base||100,s=Math.random()*(Math.pow(2,e)*a);return s},handleRequestWithRetries:function(e,t,i){t||(t={});var n=a.HttpClient.getInstance(),o=t.httpOptions||{},u=0,p=function(e){var r=t.maxRetries||0;if(e&&"TimeoutError"===e.code&&(e.retryable=!0),e&&e.retryable&&u=500||429===r});a&&n.retryable&&(n.retryAfter=a),p(n)}})},p)};r.nextTick(c)}};t.exports=s}).call(this,e("_process"))},{"../apis/metadata.json":86,"./core":188,_process:250,fs:248}],246:[function(e,t,r){function a(){}function s(e,t){switch(t||(t={}),t.type){case"structure":return i(e,t);case"map":return n(e,t);case"list":return o(e,t);case void 0:case null:return p(e);default:return u(e,t)}}function i(e,t){var r={};return null===e?r:(c.each(t.members,function(t,a){if(a.isXmlAttribute){if(Object.prototype.hasOwnProperty.call(e.attributes,a.name)){var i=e.attributes[a.name].value;r[t]=s({textContent:i},a)}}else{var n=a.flattened?e:e.getElementsByTagName(a.name)[0];n?r[t]=s(n,a):a.flattened||"list"!==a.type||(r[t]=a.defaultValue)}}),r)}function n(e,t){for(var r={},a=t.key.name||"key",i=t.value.name||"value",n=t.flattened?t.name:"entry",o=e.firstElementChild;o;){if(o.nodeName===n){var u=o.getElementsByTagName(a)[0].textContent,p=o.getElementsByTagName(i)[0];r[u]=s(p,t.value)}o=o.nextElementSibling}return r}function o(e,t){for(var r=[],a=t.flattened?t.name:t.member.name||"member",i=e.firstElementChild;i;)i.nodeName===a&&r.push(s(i,t.member)),i=i.nextElementSibling;return r}function u(e,t){if(e.getAttribute){var r=e.getAttribute("encoding");"base64"===r&&(t=new m.create({type:r}))}var a=e.textContent;return""===a&&(a=null),"function"==typeof t.toType?t.toType(a):a}function p(e){if(void 0===e||null===e)return"";if(!e.firstElementChild)return null===e.parentNode.parentNode?{}:0===e.childNodes.length?"":e.textContent;for(var t={type:"structure",members:{}},r=e.firstElementChild;r;){var a=r.nodeName;Object.prototype.hasOwnProperty.call(t.members,a)?t.members[a].type="list":t.members[a]={name:a},r=r.nextElementSibling}return i(e,t)}var c=e("../util"),m=e("../model/shape");a.prototype.parse=function(e,t){if(""===e.replace(/^\s+/,""))return{};var r,a;try{if(window.DOMParser){try{var i=new DOMParser;r=i.parseFromString(e,"text/xml")}catch(e){throw c.error(new Error("Parse error in document"),{originalError:e,code:"XMLParserError",retryable:!0})}if(null===r.documentElement)throw c.error(new Error("Cannot parse empty document."),{code:"XMLParserError",retryable:!0});var n=r.getElementsByTagName("parsererror")[0];if(n&&(n.parentNode===r||"body"===n.parentNode.nodeName||n.parentNode.parentNode===r||"body"===n.parentNode.parentNode.nodeName)){var o=n.getElementsByTagName("div")[0]||n;throw c.error(new Error(o.textContent||"Parser error in document"),{code:"XMLParserError",retryable:!0})}}else{if(!window.ActiveXObject)throw new Error("Cannot load XML parser");if(r=new window.ActiveXObject("Microsoft.XMLDOM"),r.async=!1,!r.loadXML(e))throw c.error(new Error("Parse error in document"),{code:"XMLParserError",retryable:!0})}}catch(e){a=e}if(r&&r.documentElement&&!a){var u=s(r.documentElement,t),p=r.getElementsByTagName("ResponseMetadata")[0];return p&&(u.ResponseMetadata=s(p,{})),u}if(a)throw c.error(a||new Error,{code:"XMLParserError",retryable:!0});return{}},t.exports=a},{"../model/shape":210,"../util":245}],247:[function(e,t,r){function a(){}function s(e,t,r){switch(r.type){case"structure":return i(e,t,r);case"map":return n(e,t,r);case"list":return o(e,t,r);default:return u(e,t,r)}}function i(e,t,r){c.arrayEach(r.memberNames,function(a){var i=r.members[a];if("body"===i.location){var n=t[a],o=i.name;if(void 0!==n&&null!==n)if(i.isXmlAttribute)e.att(o,n);else if(i.flattened)s(e,n,i);else{var u=e.ele(o);p(u,i),s(u,n,i)}}})}function n(e,t,r){var a=r.key.name||"key",i=r.value.name||"value";c.each(t,function(t,n){var o=e.ele(r.flattened?r.name:"entry");s(o.ele(a),t,r.key),s(o.ele(i),n,r.value)})}function o(e,t,r){r.flattened?c.arrayEach(t,function(t){var a=r.member.name||r.name,i=e.ele(a);s(i,t,r.member)}):c.arrayEach(t,function(t){var a=r.member.name||"member",i=e.ele(a);s(i,t,r.member)})}function u(e,t,r){e.txt(r.toWireFormat(t))}function p(e,t){var r,a="xmlns";t.xmlNamespaceUri?(r=t.xmlNamespaceUri,t.xmlNamespacePrefix&&(a+=":"+t.xmlNamespacePrefix)):e.isRoot&&t.api.xmlNamespaceUri&&(r=t.api.xmlNamespaceUri),r&&e.att(a,r)}var c=e("../util"),m=e("xmlbuilder");a.prototype.toXML=function(e,t,r,a){var i=m.create(r);return p(i,t),s(i,e,t),i.children.length>0||a?i.root().toString():""},t.exports=a},{"../util":245,xmlbuilder:289}],248:[function(e,t,r){},{}],249:[function(e,t,r){function a(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function s(e){return"function"==typeof e}function i(e){return"number"==typeof e}function n(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=a,a.EventEmitter=a,a.prototype._events=void 0,a.prototype._maxListeners=void 0,a.defaultMaxListeners=10,a.prototype.setMaxListeners=function(e){if(!i(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},a.prototype.emit=function(e){var t,r,a,i,u,p;if(this._events||(this._events={}),"error"===e&&(!this._events.error||n(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(r=this._events[e],o(r))return!1;if(s(r))switch(arguments.length){case 1:r.call(this);break;case 2:r.call(this,arguments[1]);break;case 3:r.call(this,arguments[1],arguments[2]);break;default:i=Array.prototype.slice.call(arguments,1),r.apply(this,i)}else if(n(r))for(i=Array.prototype.slice.call(arguments,1),p=r.slice(),a=p.length,u=0;u0&&this._events[e].length>r&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},a.prototype.on=a.prototype.addListener,a.prototype.once=function(e,t){function r(){this.removeListener(e,r),a||(a=!0,t.apply(this,arguments))}if(!s(t))throw TypeError("listener must be a function");var a=!1;return r.listener=t,this.on(e,r),this},a.prototype.removeListener=function(e,t){var r,a,i,o;if(!s(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(r=this._events[e],i=r.length,a=-1,r===t||s(r.listener)&&r.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(n(r)){for(o=i;o-- >0;)if(r[o]===t||r[o].listener&&r[o].listener===t){a=o;break}if(a<0)return this;1===r.length?(r.length=0,delete this._events[e]):r.splice(a,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},a.prototype.removeAllListeners=function(e){var t,r;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(r=this._events[e],s(r))this.removeListener(e,r);else if(r)for(;r.length;)this.removeListener(e,r[r.length-1]);return delete this._events[e],this},a.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?s(this._events[e])?[this._events[e]]:this._events[e].slice():[]},a.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(s(t))return 1;if(t)return t.length}return 0},a.listenerCount=function(e,t){return e.listenerCount(t)}},{}],250:[function(e,t,r){function a(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function i(e){if(m===setTimeout)return setTimeout(e,0);if((m===a||!m)&&setTimeout)return m=setTimeout,setTimeout(e,0);try{return m(e,0)}catch(t){try{return m.call(null,e,0)}catch(t){return m.call(this,e,0)}}}function n(e){if(l===clearTimeout)return clearTimeout(e);if((l===s||!l)&&clearTimeout)return l=clearTimeout,clearTimeout(e);try{return l(e)}catch(t){try{return l.call(null,e)}catch(t){return l.call(this,e)}}}function o(){h&&y&&(h=!1,y.length?b=y.concat(b):S=-1,b.length&&u())}function u(){if(!h){var e=i(o);h=!0;for(var t=b.length;t;){for(y=b,b=[];++S1)for(var r=1;r1&&(a=r[0]+"@",e=r[1]),e=e.replace(E,".");var s=e.split("."),n=i(s,t).join(".");return a+n}function o(e){for(var t,r,a=[],s=0,i=e.length;s=55296&&t<=56319&&s65535&&(e-=65536,t+=G(e>>>10&1023|55296),e=56320|1023&e),t+=G(e)}).join("")}function p(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:v}function c(e,t){return e+22+75*(e<26)-((0!=t)<<5)}function m(e,t,r){var a=0;for(e=r?w(e/T):e>>1,e+=w(e/t);e>B*C>>1;a+=v)e=w(e/B);return w(a+(B+1)*e/(e+R))}function l(e){var t,r,a,i,n,o,c,l,d,y,b=[],h=e.length,S=0,g=A,f=k;for(r=e.lastIndexOf(P),r<0&&(r=0),a=0;a=128&&s("not-basic"),b.push(e.charCodeAt(a));for(i=r>0?r+1:0;i=h&&s("invalid-input"),l=p(e.charCodeAt(i++)),(l>=v||l>w((I-S)/o))&&s("overflow"),S+=l*o,d=c<=f?D:c>=f+C?C:c-f,!(lw(I/y)&&s("overflow"),o*=y;t=b.length+1,f=m(S-n,t,0==n),w(S/t)>I-g&&s("overflow"),g+=w(S/t),S%=t,b.splice(S++,0,g)}return u(b)}function d(e){var t,r,a,i,n,u,p,l,d,y,b,h,S,g,f,N=[];for(e=o(e),h=e.length,t=A,r=0,n=k,u=0;u=t&&bw((I-r)/S)&&s("overflow"),r+=(p-t)*S,t=p,u=0;uI&&s("overflow"),b==t){for(l=r,d=v;y=d<=n?D:d>=n+C?C:d-n,!(l= 0x80 (not a basic code point)","invalid-input":"Invalid input"},B=v-D,w=Math.floor,G=String.fromCharCode;if(f={version:"1.4.1",ucs2:{decode:o,encode:u},decode:l,encode:d,toASCII:b,toUnicode:y},"function"==typeof define&&"object"==typeof define.amd&&define.amd)define("punycode",function(){return f});else if(h&&S)if(t.exports==h)S.exports=f;else for(N in f)f.hasOwnProperty(N)&&(h[N]=f[N]);else a.punycode=f}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],252:[function(e,t,r){"use strict";function a(e,t){return Object.prototype.hasOwnProperty.call(e,t)}t.exports=function(e,t,r,i){t=t||"&",r=r||"=";var n={};if("string"!=typeof e||0===e.length)return n;var o=/\+/g;e=e.split(t);var u=1e3;i&&"number"==typeof i.maxKeys&&(u=i.maxKeys);var p=e.length;u>0&&p>u&&(p=u);for(var c=0;c=0?(m=b.substr(0,h),l=b.substr(h+1)):(m=b,l=""),d=decodeURIComponent(m),y=decodeURIComponent(l),a(n,d)?s(n[d])?n[d].push(y):n[d]=[n[d],y]:n[d]=y}return n};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],253:[function(e,t,r){"use strict";function a(e,t){if(e.map)return e.map(t);for(var r=[],a=0;a=3&&(a.depth=arguments[2]),arguments.length>=4&&(a.colors=arguments[3]),b(t)?a.showHidden=t:t&&r._extend(a,t),I(a.showHidden)&&(a.showHidden=!1),I(a.depth)&&(a.depth=2),I(a.colors)&&(a.colors=!1),I(a.customInspect)&&(a.customInspect=!0),a.colors&&(a.stylize=i),u(a,e,a.depth)}function i(e,t){var r=s.styles[t];return r?"["+s.colors[r][0]+"m"+e+"["+s.colors[r][1]+"m":e}function n(e,t){return e}function o(e){var t={};return e.forEach(function(e,r){t[e]=!0}),t}function u(e,t,a){if(e.customInspect&&t&&T(t.inspect)&&t.inspect!==r.inspect&&(!t.constructor||t.constructor.prototype!==t)){var s=t.inspect(a,e);return f(s)||(s=u(e,s,a)),s}var i=p(e,t);if(i)return i;var n=Object.keys(t),b=o(n);if(e.showHidden&&(n=Object.getOwnPropertyNames(t)),R(t)&&(n.indexOf("message")>=0||n.indexOf("description")>=0))return c(t);if(0===n.length){if(T(t)){var h=t.name?": "+t.name:"";return e.stylize("[Function"+h+"]","special")}if(v(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(C(t))return e.stylize(Date.prototype.toString.call(t),"date");if(R(t))return c(t)}var S="",g=!1,N=["{","}"];if(y(t)&&(g=!0,N=["[","]"]),T(t)){var I=t.name?": "+t.name:"";S=" [Function"+I+"]"}if(v(t)&&(S=" "+RegExp.prototype.toString.call(t)),C(t)&&(S=" "+Date.prototype.toUTCString.call(t)),R(t)&&(S=" "+c(t)),0===n.length&&(!g||0==t.length))return N[0]+S+N[1];if(a<0)return v(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var D;return D=g?m(e,t,a,b,n):n.map(function(r){return l(e,t,a,b,r,g)}),e.seen.pop(),d(D,S,N)}function p(e,t){if(I(t))return e.stylize("undefined","undefined");if(f(t)){var r="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(r,"string")}return g(t)?e.stylize(""+t,"number"):b(t)?e.stylize(""+t,"boolean"):h(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function m(e,t,r,a,s){for(var i=[],n=0,o=t.length;n-1&&(o=i?o.split("\n").map(function(e){return" "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return" "+e}).join("\n"))):o=e.stylize("[Circular]","special")),I(n)){if(i&&s.match(/^\d+$/))return o;n=JSON.stringify(""+s),n.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(n=n.substr(1,n.length-2),n=e.stylize(n,"name")):(n=n.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),n=e.stylize(n,"string"))}return n+": "+o}function d(e,t,r){var a=0,s=e.reduce(function(e,t){return a++,t.indexOf("\n")>=0&&a++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return s>60?r[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+r[1]:r[0]+t+" "+e.join(", ")+" "+r[1]}function y(e){return Array.isArray(e)}function b(e){return"boolean"==typeof e}function h(e){return null===e}function S(e){return null==e}function g(e){return"number"==typeof e}function f(e){return"string"==typeof e}function N(e){return"symbol"==typeof e}function I(e){return void 0===e}function v(e){return D(e)&&"[object RegExp]"===A(e)}function D(e){return"object"==typeof e&&null!==e}function C(e){return D(e)&&"[object Date]"===A(e)}function R(e){return D(e)&&("[object Error]"===A(e)||e instanceof Error)}function T(e){return"function"==typeof e}function k(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function A(e){return Object.prototype.toString.call(e)}function P(e){return e<10?"0"+e.toString(10):e.toString(10)}function q(){var e=new Date,t=[P(e.getHours()),P(e.getMinutes()),P(e.getSeconds())].join(":");return[e.getDate(),w[e.getMonth()],t].join(" ")}function x(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var E=/%[sdj%]/g;r.format=function(e){if(!f(e)){for(var t=[],r=0;r=i)return e;switch(e){case"%s":return String(a[r++]);case"%d":return Number(a[r++]);case"%j":try{return JSON.stringify(a[r++])}catch(e){return"[Circular]"}default:return e}}),o=a[r];r=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|e}function h(e){return+e!=e&&(e=0),n.alloc(+e)}function S(e,t){if(n.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var r=e.length;if(0===r)return 0;for(var a=!1;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return Z(e).length;default:if(a)return z(e).length;t=(""+t).toLowerCase(),a=!0}}function g(e,t,r){var a=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if(r>>>=0,t>>>=0,r<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return M(this,t,r);case"utf8":case"utf-8":return P(this,t,r);case"ascii":return x(this,t,r);case"latin1":case"binary":return E(this,t,r);case"base64":return A(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return B(this,t,r);default:if(a)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),a=!0}}function f(e,t,r){var a=e[t];e[t]=e[r],e[r]=a}function N(e,t,r,a,s){if(0===e.length)return-1;if("string"==typeof r?(a=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=s?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(s)return-1;r=e.length-1}else if(r<0){if(!s)return-1;r=0}if("string"==typeof t&&(t=n.from(t,a)),n.isBuffer(t))return 0===t.length?-1:I(e,t,r,a,s);if("number"==typeof t)return t=255&t,n.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?s?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):I(e,[t],r,a,s);throw new TypeError("val must be string, number or Buffer")}function I(e,t,r,a,s){function i(e,t){return 1===n?e[t]:e.readUInt16BE(t*n)}var n=1,o=e.length,u=t.length;if(void 0!==a&&(a=String(a).toLowerCase(),"ucs2"===a||"ucs-2"===a||"utf16le"===a||"utf-16le"===a)){if(e.length<2||t.length<2)return-1;n=2,o/=2,u/=2,r/=2}var p;if(s){var c=-1;for(p=r;po&&(r=o-u),p=r;p>=0;p--){for(var m=!0,l=0;ls&&(a=s)):a=s;var i=t.length;if(i%2!==0)throw new TypeError("Invalid hex string");a>i/2&&(a=i/2);for(var n=0;n239?4:i>223?3:i>191?2:1;if(s+o<=r){var u,p,c,m;switch(o){case 1:i<128&&(n=i);break;case 2:u=e[s+1],128===(192&u)&&(m=(31&i)<<6|63&u,m>127&&(n=m));break;case 3:u=e[s+1],p=e[s+2],128===(192&u)&&128===(192&p)&&(m=(15&i)<<12|(63&u)<<6|63&p,m>2047&&(m<55296||m>57343)&&(n=m));break;case 4:u=e[s+1],p=e[s+2],c=e[s+3],128===(192&u)&&128===(192&p)&&128===(192&c)&&(m=(15&i)<<18|(63&u)<<12|(63&p)<<6|63&c,m>65535&&m<1114112&&(n=m))}}null===n?(n=65533,o=1):n>65535&&(n-=65536,a.push(n>>>10&1023|55296),n=56320|1023&n),a.push(n),s+=o}return q(a)}function q(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var r="",a=0;aa)&&(r=a);for(var s="",i=t;ir)throw new RangeError("Trying to access beyond buffer length")}function G(e,t,r,a,s,i){if(!n.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>s||te.length)throw new RangeError("Index out of range")}function L(e,t,r,a){t<0&&(t=65535+t+1);for(var s=0,i=Math.min(e.length-r,2);s>>8*(a?s:1-s)}function _(e,t,r,a){t<0&&(t=4294967295+t+1);for(var s=0,i=Math.min(e.length-r,4);s>>8*(a?s:3-s)&255}function U(e,t,r,a,s,i){if(r+a>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function V(e,t,r,a,s){return s||U(e,t,r,4,3.4028234663852886e38,-3.4028234663852886e38), -Y.write(e,t,r,a,23,4),r+4}function O(e,t,r,a,s){return s||U(e,t,r,8,1.7976931348623157e308,-1.7976931348623157e308),Y.write(e,t,r,a,52,8),r+8}function F(e){if(e=j(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function j(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function W(e){return e<16?"0"+e.toString(16):e.toString(16)}function z(e,t){t=t||1/0;for(var r,a=e.length,s=null,i=[],n=0;n55295&&r<57344){if(!s){if(r>56319){(t-=3)>-1&&i.push(239,191,189);continue}if(n+1===a){(t-=3)>-1&&i.push(239,191,189);continue}s=r;continue}if(r<56320){(t-=3)>-1&&i.push(239,191,189),s=r;continue}r=(s-55296<<10|r-56320)+65536}else s&&(t-=3)>-1&&i.push(239,191,189);if(s=null,r<128){if((t-=1)<0)break;i.push(r)}else if(r<2048){if((t-=2)<0)break;i.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;i.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;i.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return i}function K(e){for(var t=[],r=0;r>8,s=r%256,i.push(s),i.push(a);return i}function Z(e){return J.toByteArray(F(e))}function Q(e,t,r,a){for(var s=0;s=t.length||s>=e.length);++s)t[s+r]=e[s];return s}function X(e){return e!==e}var J=e("base64-js"),Y=e("ieee754"),$=e("isarray");r.Buffer=n,r.SlowBuffer=h,r.INSPECT_MAX_BYTES=50,n.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:a(),r.kMaxLength=s(),n.poolSize=8192,n._augment=function(e){return e.__proto__=n.prototype,e},n.from=function(e,t,r){return o(null,e,t,r)},n.TYPED_ARRAY_SUPPORT&&(n.prototype.__proto__=Uint8Array.prototype,n.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&n[Symbol.species]===n&&Object.defineProperty(n,Symbol.species,{value:null,configurable:!0})),n.alloc=function(e,t,r){return p(null,e,t,r)},n.allocUnsafe=function(e){return c(null,e)},n.allocUnsafeSlow=function(e){return c(null,e)},n.isBuffer=function(e){return!(null==e||!e._isBuffer)},n.compare=function(e,t){if(!n.isBuffer(e)||!n.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var r=e.length,a=t.length,s=0,i=Math.min(r,a);s0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},n.prototype.compare=function(e,t,r,a,s){if(!n.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===a&&(a=0),void 0===s&&(s=this.length),t<0||r>e.length||a<0||s>this.length)throw new RangeError("out of range index");if(a>=s&&t>=r)return 0;if(a>=s)return-1;if(t>=r)return 1;if(t>>>=0,r>>>=0,a>>>=0,s>>>=0,this===e)return 0;for(var i=s-a,o=r-t,u=Math.min(i,o),p=this.slice(a,s),c=e.slice(t,r),m=0;ms)&&(r=s),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");a||(a="utf8");for(var i=!1;;)switch(a){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return D(this,e,t,r);case"ascii":return C(this,e,t,r);case"latin1":case"binary":return R(this,e,t,r);case"base64":return T(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return k(this,e,t,r);default:if(i)throw new TypeError("Unknown encoding: "+a);a=(""+a).toLowerCase(),i=!0}},n.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;n.prototype.slice=function(e,t){var r=this.length;e=~~e,t=void 0===t?r:~~t,e<0?(e+=r,e<0&&(e=0)):e>r&&(e=r),t<0?(t+=r,t<0&&(t=0)):t>r&&(t=r),t0&&(s*=256);)a+=this[e+--t]*s;return a},n.prototype.readUInt8=function(e,t){return t||w(e,1,this.length),this[e]},n.prototype.readUInt16LE=function(e,t){return t||w(e,2,this.length),this[e]|this[e+1]<<8},n.prototype.readUInt16BE=function(e,t){return t||w(e,2,this.length),this[e]<<8|this[e+1]},n.prototype.readUInt32LE=function(e,t){return t||w(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},n.prototype.readUInt32BE=function(e,t){return t||w(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},n.prototype.readIntLE=function(e,t,r){e=0|e,t=0|t,r||w(e,t,this.length);for(var a=this[e],s=1,i=0;++i=s&&(a-=Math.pow(2,8*t)),a},n.prototype.readIntBE=function(e,t,r){e=0|e,t=0|t,r||w(e,t,this.length);for(var a=t,s=1,i=this[e+--a];a>0&&(s*=256);)i+=this[e+--a]*s;return s*=128,i>=s&&(i-=Math.pow(2,8*t)),i},n.prototype.readInt8=function(e,t){return t||w(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},n.prototype.readInt16LE=function(e,t){t||w(e,2,this.length);var r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},n.prototype.readInt16BE=function(e,t){t||w(e,2,this.length);var r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},n.prototype.readInt32LE=function(e,t){return t||w(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},n.prototype.readInt32BE=function(e,t){return t||w(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},n.prototype.readFloatLE=function(e,t){return t||w(e,4,this.length),Y.read(this,e,!0,23,4)},n.prototype.readFloatBE=function(e,t){return t||w(e,4,this.length),Y.read(this,e,!1,23,4)},n.prototype.readDoubleLE=function(e,t){return t||w(e,8,this.length),Y.read(this,e,!0,52,8)},n.prototype.readDoubleBE=function(e,t){return t||w(e,8,this.length),Y.read(this,e,!1,52,8)},n.prototype.writeUIntLE=function(e,t,r,a){if(e=+e,t=0|t,r=0|r,!a){var s=Math.pow(2,8*r)-1;G(this,e,t,r,s,0)}var i=1,n=0;for(this[t]=255&e;++n=0&&(n*=256);)this[t+i]=e/n&255;return t+r},n.prototype.writeUInt8=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,1,255,0),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},n.prototype.writeUInt16LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},n.prototype.writeUInt16BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,65535,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},n.prototype.writeUInt32LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):_(this,e,t,!0),t+4},n.prototype.writeUInt32BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,4294967295,0),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):_(this,e,t,!1),t+4},n.prototype.writeIntLE=function(e,t,r,a){if(e=+e,t=0|t,!a){var s=Math.pow(2,8*r-1);G(this,e,t,r,s-1,-s)}var i=0,n=1,o=0;for(this[t]=255&e;++i>0)-o&255;return t+r},n.prototype.writeIntBE=function(e,t,r,a){if(e=+e,t=0|t,!a){var s=Math.pow(2,8*r-1);G(this,e,t,r,s-1,-s)}var i=r-1,n=1,o=0;for(this[t+i]=255&e;--i>=0&&(n*=256);)e<0&&0===o&&0!==this[t+i+1]&&(o=1),this[t+i]=(e/n>>0)-o&255;return t+r},n.prototype.writeInt8=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,1,127,-128),n.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},n.prototype.writeInt16LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},n.prototype.writeInt16BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,2,32767,-32768),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},n.prototype.writeInt32LE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,2147483647,-2147483648),n.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):_(this,e,t,!0),t+4},n.prototype.writeInt32BE=function(e,t,r){return e=+e,t=0|t,r||G(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),n.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):_(this,e,t,!1),t+4},n.prototype.writeFloatLE=function(e,t,r){return V(this,e,t,!0,r)},n.prototype.writeFloatBE=function(e,t,r){return V(this,e,t,!1,r)},n.prototype.writeDoubleLE=function(e,t,r){return O(this,e,t,!0,r)},n.prototype.writeDoubleBE=function(e,t,r){return O(this,e,t,!1,r)},n.prototype.copy=function(e,t,r,a){if(r||(r=0),a||0===a||(a=this.length),t>=e.length&&(t=e.length),t||(t=0),a>0&&a=this.length)throw new RangeError("sourceStart out of bounds");if(a<0)throw new RangeError("sourceEnd out of bounds");a>this.length&&(a=this.length),e.length-t=0;--s)e[s+t]=this[s+r];else if(i<1e3||!n.TYPED_ARRAY_SUPPORT)for(s=0;s>>=0,r=void 0===r?this.length:r>>>0,e||(e=0);var i;if("number"==typeof e)for(i=t;i0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function s(e){return 3*e.length/4-a(e)}function i(e){var t,r,s,i,n,o,u=e.length;n=a(e),o=new m(3*u/4-n),s=n>0?u-4:u;var p=0;for(t=0,r=0;t>16&255,o[p++]=i>>8&255,o[p++]=255&i;return 2===n?(i=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,o[p++]=255&i):1===n&&(i=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,o[p++]=i>>8&255,o[p++]=255&i),o}function n(e){return p[e>>18&63]+p[e>>12&63]+p[e>>6&63]+p[63&e]}function o(e,t,r){for(var a,s=[],i=t;ic?c:u+n));return 1===a?(t=e[r-1],s+=p[t>>2],s+=p[t<<4&63],s+="=="):2===a&&(t=(e[r-2]<<8)+e[r-1],s+=p[t>>10],s+=p[t>>4&63],s+=p[t<<2&63],s+="="),i.push(s),i.join("")}r.byteLength=s,r.toByteArray=i,r.fromByteArray=u;for(var p=[],c=[],m="undefined"!=typeof Uint8Array?Uint8Array:Array,l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",d=0,y=l.length;d>1,c=-7,m=r?s-1:0,l=r?-1:1,d=e[t+m];for(m+=l,i=d&(1<<-c)-1,d>>=-c,c+=o;c>0;i=256*i+e[t+m],m+=l,c-=8);for(n=i&(1<<-c)-1,i>>=-c,c+=a;c>0;n=256*n+e[t+m],m+=l,c-=8);if(0===i)i=1-p;else{if(i===u)return n?NaN:(d?-1:1)*(1/0);n+=Math.pow(2,a),i-=p}return(d?-1:1)*n*Math.pow(2,i-a)},r.write=function(e,t,r,a,s,i){var n,o,u,p=8*i-s-1,c=(1<>1,l=23===s?Math.pow(2,-24)-Math.pow(2,-77):0,d=a?0:i-1,y=a?1:-1,b=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,n=c):(n=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-n))<1&&(n--,u*=2),t+=n+m>=1?l/u:l*Math.pow(2,1-m),t*u>=2&&(n++,u/=2),n+m>=c?(o=0,n=c):n+m>=1?(o=(t*u-1)*Math.pow(2,s),n+=m):(o=t*Math.pow(2,m-1)*Math.pow(2,s),n=0));s>=8;e[r+d]=255&o,d+=y,o/=256,s-=8);for(n=n<0;e[r+d]=255&n,d+=y,n/=256,p-=8);e[r+d-y]|=128*b}},{}],261:[function(e,t,r){var a={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==a.call(e)}},{}],262:[function(e,t,r){function a(e,t){if(e.length%o!==0){var r=e.length+(o-e.length%o);e=n.concat([e,u],r)}for(var a=[],s=t?e.readInt32BE:e.readInt32LE,i=0;id?t=e(t):t.length>5]|=128<>>9<<4)+14]=t;for(var r=1732584193,a=-271733879,s=-1732584194,c=271733878,m=0;m>16)+(t>>16)+(r>>16);return a<<16|65535&r}function c(e,t){return e<>>32-t}var m=e("./helpers");t.exports=function(e){return m.hash(e,a,16)}},{"./helpers":262}],265:[function(e,t,r){!function(){var e,r,a=this;e=function(e){for(var t,t,r=new Array(e),a=0;a>>((3&a)<<3)&255;return r},a.crypto&&crypto.getRandomValues&&(r=function(e){var t=new Uint8Array(e);return crypto.getRandomValues(t),t}),t.exports=r||e}()},{}],266:[function(e,t,r){function a(e,t){e[t>>5]|=128<<24-t%32,e[(t+64>>9<<4)+15]=t;for(var r=Array(80),a=1732584193,u=-271733879,p=-1732584194,c=271733878,m=-1009589776,l=0;l>16)+(t>>16)+(r>>16);return a<<16|65535&r}function o(e,t){return e<>>32-t}var u=e("./helpers");t.exports=function(e){return u.hash(e,a,20,!0)}},{"./helpers":262}],267:[function(e,t,r){var a=e("./helpers"),s=function(e,t){var r=(65535&e)+(65535&t),a=(e>>16)+(t>>16)+(r>>16);return a<<16|65535&r},i=function(e,t){return e>>>t|e<<32-t},n=function(e,t){return e>>>t},o=function(e,t,r){return e&t^~e&r},u=function(e,t,r){return e&t^e&r^t&r},p=function(e){return i(e,2)^i(e,13)^i(e,22)},c=function(e){return i(e,6)^i(e,11)^i(e,25)},m=function(e){return i(e,7)^i(e,18)^n(e,3)},l=function(e){return i(e,17)^i(e,19)^n(e,10)},d=function(e,t){var r,a,i,n,d,y,b,h,S,g,f,N,I=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),v=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),D=new Array(64);e[t>>5]|=128<<24-t%32,e[(t+64>>9<<4)+15]=t;for(var S=0;S="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e}function o(e){return e>="0"&&e<="9"||"-"===e}function u(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e}function p(){}function c(){}function m(e){this.runtime=e}function l(e){this._interpreter=e,this.functionTable={abs:{_func:this._functionAbs,_signature:[{types:[S]}]},avg:{_func:this._functionAvg,_signature:[{types:[R]}]},ceil:{_func:this._functionCeil,_signature:[{types:[S]}]},contains:{_func:this._functionContains,_signature:[{types:[f,N]},{types:[g]}]},ends_with:{_func:this._functionEndsWith,_signature:[{types:[f]},{types:[f]}]},floor:{_func:this._functionFloor,_signature:[{types:[S]}]},length:{_func:this._functionLength,_signature:[{types:[f,N,I]}]},map:{_func:this._functionMap,_signature:[{types:[D]},{types:[N]}]},max:{_func:this._functionMax,_signature:[{types:[R,T]}]},merge:{_func:this._functionMerge,_signature:[{types:[I],variadic:!0}]},max_by:{_func:this._functionMaxBy,_signature:[{types:[N]},{types:[D]}]},sum:{_func:this._functionSum,_signature:[{types:[R]}]},starts_with:{_func:this._functionStartsWith,_signature:[{types:[f]},{types:[f]}]},min:{_func:this._functionMin,_signature:[{types:[R,T]}]},min_by:{_func:this._functionMinBy,_signature:[{types:[N]},{types:[D]}]},type:{_func:this._functionType,_signature:[{types:[g]}]},keys:{_func:this._functionKeys,_signature:[{types:[I]}]},values:{_func:this._functionValues,_signature:[{types:[I]}]},sort:{_func:this._functionSort,_signature:[{types:[T,R]}]},sort_by:{_func:this._functionSortBy,_signature:[{types:[N]},{types:[D]}]},join:{_func:this._functionJoin,_signature:[{types:[f]},{types:[T]}]},reverse:{_func:this._functionReverse,_signature:[{types:[f,N]}]},to_array:{_func:this._functionToArray,_signature:[{types:[g]}]},to_string:{_func:this._functionToString,_signature:[{types:[g]}]},to_number:{_func:this._functionToNumber,_signature:[{types:[g]}]},not_null:{_func:this._functionNotNull,_signature:[{types:[g],variadic:!0}]}}}function d(e){var t=new c,r=t.parse(e);return r}function y(e){var t=new p;return t.tokenize(e)}function b(e,t){var r=new c,a=new l,s=new m(a);a._interpreter=s;var i=r.parse(t);return s.search(i,e)}var h;h="function"==typeof String.prototype.trimLeft?function(e){return e.trimLeft()}:function(e){return e.match(/^\s*(.*)/)[1]};var S=0,g=1,f=2,N=3,I=4,v=5,D=6,C=7,R=8,T=9,k="EOF",A="UnquotedIdentifier",P="QuotedIdentifier",q="Rbracket",x="Rparen",E="Comma",M="Colon",B="Rbrace",w="Number",G="Current",L="Expref",_="Pipe",U="Or",V="And",O="EQ",F="GT",j="LT",W="GTE",z="LTE",K="NE",H="Flatten",Z="Star",Q="Filter",X="Dot",J="Not",Y="Lbrace",$="Lbracket",ee="Lparen",te="Literal",re={".":X,"*":Z,",":E,":":M,"{":Y,"}":B,"]":q,"(":ee,")":x,"@":G},ae={"<":!0,">":!0,"=":!0,"!":!0},se={" ":!0,"\t":!0,"\n":!0};p.prototype={tokenize:function(e){var t=[];this._current=0;for(var r,a,s;this._current"===r?"="===e[this._current]?(this._current++,{type:W,value:">=",start:t}):{type:F,value:">",start:t}:"="===r&&"="===e[this._current]?(this._current++,{type:O,value:"==",start:t}):void 0},_consumeLiteral:function(e){this._current++;for(var t,r=this._current,a=e.length;"`"!==e[this._current]&&this._current=0)return!0;if(r.indexOf(e)>=0)return!0;if(!(a.indexOf(e[0])>=0))return!1;try{return JSON.parse(e),!0}catch(e){return!1}}};var ie={};ie[k]=0,ie[A]=0,ie[P]=0,ie[q]=0,ie[x]=0,ie[E]=0,ie[B]=0,ie[w]=0,ie[G]=0,ie[L]=0,ie[_]=1,ie[U]=2,ie[V]=3,ie[O]=5,ie[F]=5,ie[j]=5,ie[W]=5,ie[z]=5,ie[K]=5,ie[H]=9,ie[Z]=20,ie[Q]=21,ie[X]=40,ie[J]=45,ie[Y]=50,ie[$]=55,ie[ee]=60,c.prototype={parse:function(e){this._loadTokens(e),this.index=0;var t=this.expression(0);if(this._lookahead(0)!==k){var r=this._lookaheadToken(0),a=new Error("Unexpected token type: "+r.type+", value: "+r.value);throw a.name="ParserError",a}return t},_loadTokens:function(e){var t=new p,r=t.tokenize(e);r.push({type:k,value:"",start:e.length}),this.tokens=r},expression:function(e){var t=this._lookaheadToken(0);this._advance();for(var r=this.nud(t),a=this._lookahead(0);e=0?this.expression(e):t===$?(this._match($),this._parseMultiselectList()):t===Y?(this._match(Y),this._parseMultiselectHash()):void 0},_parseProjectionRHS:function(e){var t;if(ie[this._lookahead(0)]<10)t={type:"Identity"};else if(this._lookahead(0)===$)t=this.expression(e);else if(this._lookahead(0)===Q)t=this.expression(e);else{if(this._lookahead(0)!==X){var r=this._lookaheadToken(0),a=new Error("Sytanx error, unexpected token: "+r.value+"("+r.type+")");throw a.name="ParserError",a}this._match(X),t=this._parseDotRHS(e)}return t},_parseMultiselectList:function(){for(var e=[];this._lookahead(0)!==q;){var t=this.expression(0);if(e.push(t),this._lookahead(0)===E&&(this._match(E),this._lookahead(0)===q))throw new Error("Unexpected token Rbracket")}return this._match(q),{type:"MultiSelectList",children:e}},_parseMultiselectHash:function(){for(var e,t,r,a,s=[],i=[A,P];;){if(e=this._lookaheadToken(0),i.indexOf(e.type)<0)throw new Error("Expecting an identifier token, got: "+e.type);if(t=e.value,this._advance(),this._match(M),r=this.expression(0),a={type:"KeyValuePair",name:t,value:r},s.push(a),this._lookahead(0)===E)this._match(E);else if(this._lookahead(0)===B){this._match(B);break}}return{type:"MultiSelectHash",children:s}}},m.prototype={search:function(e,t){return this.visit(e,t)},visit:function(e,n){var o,u,p,c,m,l,d,y,b,h;switch(e.type){case"Field":return null===n?null:r(n)?(l=n[e.name],void 0===l?null:l):null;case"Subexpression":for(p=this.visit(e.children[0],n),h=1;h0)for(h=N;hI;h+=v)p.push(n[h]);return p;case"Projection":var D=this.visit(e.children[0],n);if(!t(D))return null;for(b=[],h=0;hm;break;case W:p=c>=m;break;case j:p=c=e&&(t=r<0?e-1:e),t}},l.prototype={callFunction:function(e,t){var r=this.functionTable[e];if(void 0===r)throw new Error("Unknown function: "+e+"()");return this._validateArgs(e,t,r._signature),r._func.call(this,t)},_validateArgs:function(e,t,r){var a;if(r[r.length-1].variadic){if(t.length=0;s--)a+=r[s];return a}var i=e[0].slice(0);return i.reverse(),i},_functionAbs:function(e){return Math.abs(e[0])},_functionCeil:function(e){return Math.ceil(e[0])},_functionAvg:function(e){for(var t=0,r=e[0],a=0;a=0},_functionFloor:function(e){return Math.floor(e[0])},_functionLength:function(e){return r(e[0])?Object.keys(e[0]).length:e[0].length},_functionMap:function(e){for(var t=[],r=this._interpreter,a=e[0],s=e[1],i=0;i0){var t=this._getTypeName(e[0][0]);if(t===S)return Math.max.apply(Math,e[0]);for(var r=e[0],a=r[0],s=1;s0){var t=this._getTypeName(e[0][0]);if(t===S)return Math.min.apply(Math,e[0]);for(var r=e[0],a=r[0],s=1;so?1:nn&&(n=r,t=s[o]);return t},_functionMinBy:function(e){for(var t,r,a=e[1],s=e[0],i=this.createKeyFunction(a,[S,f]),n=1/0,o=0;o0&&u>o&&(u=o);for(var p=0;p=0?(c=y.substr(0,b),m=y.substr(b+1)):(c=y,m=""),l=decodeURIComponent(c),d=decodeURIComponent(m),a(i,l)?Array.isArray(i[l])?i[l].push(d):i[l]=[i[l],d]:i[l]=d}return i}},{}],270:[function(e,t,r){"use strict";var a=function(e){switch(typeof e){case"string":return e;case"boolean":return e?"true":"false";case"number":return isFinite(e)?e:"";default:return""}};t.exports=function(e,t,r,s){return t=t||"&",r=r||"=",null===e&&(e=void 0),"object"==typeof e?Object.keys(e).map(function(s){var i=encodeURIComponent(a(s))+r;return Array.isArray(e[s])?e[s].map(function(e){return i+encodeURIComponent(a(e))}).join(t):i+encodeURIComponent(a(e[s]))}).join(t):s?encodeURIComponent(a(s))+r+encodeURIComponent(a(e)):""}},{}],271:[function(e,t,r){arguments[4][254][0].apply(r,arguments)},{"./decode":269,"./encode":270,dup:254}],272:[function(e,t,r){function a(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}function s(e,t,r){if(e&&p(e)&&e instanceof a)return e;var s=new a;return s.parse(e,t,r),s}function i(e){return u(e)&&(e=s(e)),e instanceof a?e.format():a.prototype.format.call(e)}function n(e,t){return s(e,!1,!0).resolve(t)}function o(e,t){return e?s(e,!1,!0).resolveObject(t):t}function u(e){return"string"==typeof e}function p(e){return"object"==typeof e&&null!==e}function c(e){return null===e}function m(e){return null==e}var l=e("punycode");r.parse=s,r.resolve=n,r.resolveObject=o,r.format=i,r.Url=a;var d=/^([a-z0-9.+-]+:)/i,y=/:[0-9]*$/,b=["<",">",'"',"`"," ","\r","\n","\t"],h=["{","}","|","\\","^","`"].concat(b),S=["'"].concat(h),g=["%","/","?",";","#"].concat(S),f=["/","?","#"],N=255,I=/^[a-z0-9A-Z_-]{0,63}$/,v=/^([a-z0-9A-Z_-]{0,63})(.*)$/,D={javascript:!0,"javascript:":!0},C={javascript:!0,"javascript:":!0},R={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},T=e("querystring");a.prototype.parse=function(e,t,r){if(!u(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e;a=a.trim();var s=d.exec(a);if(s){s=s[0];var i=s.toLowerCase();this.protocol=i,a=a.substr(s.length)}if(r||s||a.match(/^\/\/[^@\/]+@[^@\/]+/)){var n="//"===a.substr(0,2);!n||s&&C[s]||(a=a.substr(2),this.slashes=!0)}if(!C[s]&&(n||s&&!R[s])){for(var o=-1,p=0;p127?"x":A[q];if(!P.match(I)){var E=h.slice(0,p),M=h.slice(p+1),B=A.match(v);B&&(E.push(B[1]),M.unshift(B[2])),M.length&&(a="/"+M.join(".")+a),this.hostname=E.join(".");break}}}if(this.hostname.length>N?this.hostname="":this.hostname=this.hostname.toLowerCase(),!b){for(var w=this.hostname.split("."),G=[],p=0;p0)&&r.host.split("@");h&&(r.auth=h.shift(),r.host=r.hostname=h.shift())}return r.search=e.search,r.query=e.query,c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.href=r.format(),r}if(!y.length)return r.pathname=null,r.search?r.path="/"+r.search:r.path=null,r.href=r.format(),r;for(var S=y.slice(-1)[0],g=(r.host||e.host)&&("."===S||".."===S)||""===S,f=0,N=y.length;N>=0;N--)S=y[N],"."==S?y.splice(N,1):".."===S?(y.splice(N,1),f++):f&&(y.splice(N,1),f--);if(!l&&!d)for(;f--;f)y.unshift("..");!l||""===y[0]||y[0]&&"/"===y[0].charAt(0)||y.unshift(""),g&&"/"!==y.join("/").substr(-1)&&y.push("");var I=""===y[0]||y[0]&&"/"===y[0].charAt(0);if(b){r.hostname=r.host=I?"":y.length?y.shift():"";var h=!!(r.host&&r.host.indexOf("@")>0)&&r.host.split("@");h&&(r.auth=h.shift(),r.host=r.hostname=h.shift())}return l=l||r.host&&y.length,l&&!I&&y.unshift(""),y.length?r.pathname=y.join("/"):(r.pathname=null,r.path=null),c(r.pathname)&&c(r.search)||(r.path=(r.pathname?r.pathname:"")+(r.search?r.search:"")),r.auth=e.auth||r.auth,r.slashes=r.slashes||e.slashes,r.href=r.format(),r},a.prototype.parseHost=function(){var e=this.host,t=y.exec(e);t&&(t=t[0],":"!==t&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)}},{punycode:251,querystring:254}],273:[function(e,t,r){(function(){var r,a;a=e("lodash/object/create"),t.exports=r=function(){function e(e,t,r){if(this.stringify=e.stringify,null==t)throw new Error("Missing attribute name of element "+e.name);if(null==r)throw new Error("Missing attribute value for attribute "+t+" of element "+e.name);this.name=this.stringify.attName(t),this.value=this.stringify.attValue(r)}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){return" "+this.name+'="'+this.value+'"'},e}()}).call(this)},{"lodash/object/create":332}],274:[function(e,t,r){(function(){var r,a,s,i,n;n=e("./XMLStringifier"),a=e("./XMLDeclaration"),s=e("./XMLDocType"),i=e("./XMLElement"),t.exports=r=function(){function e(e,t){var r,a;if(null==e)throw new Error("Root element needs a name");null==t&&(t={}),this.options=t,this.stringify=new n(t),a=new i(this,"doc"),r=a.element(e),r.isRoot=!0,r.documentObject=this,this.rootObject=r,t.headless||(r.declaration(t),null==t.pubID&&null==t.sysID||r.doctype(t))}return e.prototype.root=function(){return this.rootObject},e.prototype.end=function(e){return this.toString(e)},e.prototype.toString=function(e){var t,r,a,s,i,n,o,u;return s=(null!=e?e.pretty:void 0)||!1,t=null!=(n=null!=e?e.indent:void 0)?n:" ",a=null!=(o=null!=e?e.offset:void 0)?o:0,r=null!=(u=null!=e?e.newline:void 0)?u:"\n",i="",null!=this.xmldec&&(i+=this.xmldec.toString(e)),null!=this.doctype&&(i+=this.doctype.toString(e)),i+=this.rootObject.toString(e),s&&i.slice(-r.length)===r&&(i=i.slice(0,-r.length)),i},e}()}).call(this)},{"./XMLDeclaration":281,"./XMLDocType":282,"./XMLElement":283,"./XMLStringifier":287}],275:[function(e,t,r){(function(){var r,a,s,i=function(e,t){function r(){this.constructor=e}for(var a in t)n.call(t,a)&&(e[a]=t[a]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},n={}.hasOwnProperty;s=e("lodash/object/create"),a=e("./XMLNode"),t.exports=r=function(e){function t(e,r){if(t.__super__.constructor.call(this,e),null==r)throw new Error("Missing CDATA text");this.text=this.stringify.cdata(r)}return i(t,e),t.prototype.clone=function(){return s(t.prototype,this)},t.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},t}(a)}).call(this)},{"./XMLNode":284,"lodash/object/create":332}],276:[function(e,t,r){(function(){var r,a,s,i=function(e,t){function r(){this.constructor=e}for(var a in t)n.call(t,a)&&(e[a]=t[a]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},n={}.hasOwnProperty;s=e("lodash/object/create"),a=e("./XMLNode"),t.exports=r=function(e){function t(e,r){if(t.__super__.constructor.call(this,e),null==r)throw new Error("Missing comment text");this.text=this.stringify.comment(r)}return i(t,e),t.prototype.clone=function(){return s(t.prototype,this)},t.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},t}(a)}).call(this)},{"./XMLNode":284,"lodash/object/create":332}],277:[function(e,t,r){(function(){var r,a;a=e("lodash/object/create"),t.exports=r=function(){function e(e,t,r,a,s,i){if(this.stringify=e.stringify,null==t)throw new Error("Missing DTD element name");if(null==r)throw new Error("Missing DTD attribute name");if(!a)throw new Error("Missing DTD attribute type");if(!s)throw new Error("Missing DTD attribute default");if(0!==s.indexOf("#")&&(s="#"+s),!s.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/))throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT");if(i&&!s.match(/^(#FIXED|#DEFAULT)$/))throw new Error("Default value only applies to #FIXED or #DEFAULT");this.elementName=this.stringify.eleName(t),this.attributeName=this.stringify.attName(r),this.attributeType=this.stringify.dtdAttType(a),this.defaultValue=this.stringify.dtdAttDefault(i),this.defaultValueType=s}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/object/create":332}],278:[function(e,t,r){(function(){var r,a,s;a=e("lodash/object/create"),s=e("lodash/lang/isArray"),t.exports=r=function(){function e(e,t,r){if(this.stringify=e.stringify,null==t)throw new Error("Missing DTD element name");r||(r="(#PCDATA)"),s(r)&&(r="("+r.join(",")+")"),this.name=this.stringify.eleName(t),this.value=this.stringify.dtdElementValue(r)}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/lang/isArray":324,"lodash/object/create":332}],279:[function(e,t,r){(function(){var r,a,s;a=e("lodash/object/create"),s=e("lodash/lang/isObject"),t.exports=r=function(){function e(e,t,r,a){if(this.stringify=e.stringify,null==r)throw new Error("Missing entity name");if(null==a)throw new Error("Missing entity value");if(this.pe=!!t,this.name=this.stringify.eleName(r),s(a)){if(!a.pubID&&!a.sysID)throw new Error("Public and/or system identifiers are required for an external entity");if(a.pubID&&!a.sysID)throw new Error("System identifier is required for a public external entity");if(null!=a.pubID&&(this.pubID=this.stringify.dtdPubID(a.pubID)),null!=a.sysID&&(this.sysID=this.stringify.dtdSysID(a.sysID)),null!=a.nData&&(this.nData=this.stringify.dtdNData(a.nData)),this.pe&&this.nData)throw new Error("Notation declaration is not allowed in a parameter entity")}else this.value=this.stringify.dtdEntityValue(a)}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/lang/isObject":328,"lodash/object/create":332}],280:[function(e,t,r){(function(){var r,a;a=e("lodash/object/create"),t.exports=r=function(){function e(e,t,r){if(this.stringify=e.stringify,null==t)throw new Error("Missing notation name");if(!r.pubID&&!r.sysID)throw new Error("Public or system identifiers are required for an external entity");this.name=this.stringify.eleName(t),null!=r.pubID&&(this.pubID=this.stringify.dtdPubID(r.pubID)),null!=r.sysID&&(this.sysID=this.stringify.dtdSysID(r.sysID))}return e.prototype.clone=function(){return a(e.prototype,this)},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},e}()}).call(this)},{"lodash/object/create":332}],281:[function(e,t,r){(function(){var r,a,s,i,n=function(e,t){function r(){this.constructor=e}for(var a in t)o.call(t,a)&&(e[a]=t[a]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e},o={}.hasOwnProperty;s=e("lodash/object/create"),i=e("lodash/lang/isObject"),a=e("./XMLNode"),t.exports=r=function(e){function t(e,r,a,s){var n;t.__super__.constructor.call(this,e),i(r)&&(n=r,r=n.version,a=n.encoding,s=n.standalone),r||(r="1.0"),null!=r&&(this.version=this.stringify.xmlVersion(r)),null!=a&&(this.encoding=this.stringify.xmlEncoding(a)),null!=s&&(this.standalone=this.stringify.xmlStandalone(s))}return n(t,e),t.prototype.clone=function(){return s(t.prototype,this)},t.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c;return i=(null!=e?e.pretty:void 0)||!1,r=null!=(o=null!=e?e.indent:void 0)?o:" ",s=null!=(u=null!=e?e.offset:void 0)?u:0,a=null!=(p=null!=e?e.newline:void 0)?p:"\n",t||(t=0),c=new Array(t+s+1).join(r),n="",i&&(n+=c),n+="",i&&(n+=a),n},t}(a)}).call(this)},{"./XMLNode":284,"lodash/lang/isObject":328,"lodash/object/create":332}],282:[function(e,t,r){(function(){var r,a,s,i,n,o,u,p,c,m;c=e("lodash/object/create"),m=e("lodash/lang/isObject"),r=e("./XMLCData"),a=e("./XMLComment"),s=e("./XMLDTDAttList"),n=e("./XMLDTDEntity"),i=e("./XMLDTDElement"),o=e("./XMLDTDNotation"),p=e("./XMLProcessingInstruction"),t.exports=u=function(){function e(e,t,r){var a,s;this.documentObject=e,this.stringify=this.documentObject.stringify,this.children=[],m(t)&&(a=t,t=a.pubID,r=a.sysID),null==r&&(s=[t,r],r=s[0],t=s[1]),null!=t&&(this.pubID=this.stringify.dtdPubID(t)),null!=r&&(this.sysID=this.stringify.dtdSysID(r))}return e.prototype.clone=function(){return c(e.prototype,this)},e.prototype.element=function(e,t){var r;return r=new i(this,e,t),this.children.push(r),this},e.prototype.attList=function(e,t,r,a,i){var n;return n=new s(this,e,t,r,a,i),this.children.push(n),this},e.prototype.entity=function(e,t){var r;return r=new n(this,!1,e,t),this.children.push(r),this},e.prototype.pEntity=function(e,t){var r;return r=new n(this,!0,e,t),this.children.push(r),this},e.prototype.notation=function(e,t){var r;return r=new o(this,e,t),this.children.push(r),this},e.prototype.cdata=function(e){var t;return t=new r(this,e),this.children.push(t),this},e.prototype.comment=function(e){var t;return t=new a(this,e),this.children.push(t),this},e.prototype.instruction=function(e,t){var r;return r=new p(this,e,t),this.children.push(r),this},e.prototype.root=function(){return this.documentObject.root()},e.prototype.document=function(){return this.documentObject},e.prototype.toString=function(e,t){var r,a,s,i,n,o,u,p,c,m,l,d,y;if(u=(null!=e?e.pretty:void 0)||!1,s=null!=(c=null!=e?e.indent:void 0)?c:" ",o=null!=(m=null!=e?e.offset:void 0)?m:0,n=null!=(l=null!=e?e.newline:void 0)?l:"\n",t||(t=0),y=new Array(t+o+1).join(s),p="",u&&(p+=y),p+="0){for(p+=" [",u&&(p+=n),d=this.children,a=0,i=d.length;a",b&&(h+=d);else if(b&&1===this.children.length&&null!=this.children[0].value)h+=">",h+=this.children[0].value,h+="",h+=d;else{for(h+=">",b&&(h+=d),v=this.children,u=0,c=v.length;u",b&&(h+=d)}return h},t.prototype.att=function(e,t){return this.attribute(e,t)},t.prototype.ins=function(e,t){return this.instruction(e,t)},t.prototype.a=function(e,t){return this.attribute(e,t)},t.prototype.i=function(e,t){return this.instruction(e,t)},t}(s)}).call(this)},{"./XMLAttribute":273,"./XMLNode":284,"./XMLProcessingInstruction":285,"lodash/collection/every":290,"lodash/lang/isArray":324,"lodash/lang/isFunction":326,"lodash/lang/isObject":328,"lodash/object/create":332}],284:[function(e,t,r){(function(){var r,a,s,i,n,o,u,p,c,m,l,d,y={}.hasOwnProperty;d=e("lodash/lang/isObject"),c=e("lodash/lang/isArray"),l=e("lodash/lang/isFunction"),m=e("lodash/lang/isEmpty"),n=null,r=null,a=null,s=null,i=null,u=null,p=null,t.exports=o=function(){function t(t){this.parent=t,this.options=this.parent.options,this.stringify=this.parent.stringify,null===n&&(n=e("./XMLElement"),r=e("./XMLCData"),a=e("./XMLComment"),s=e("./XMLDeclaration"),i=e("./XMLDocType"),u=e("./XMLRaw"),p=e("./XMLText"))}return t.prototype.clone=function(){throw new Error("Cannot clone generic XMLNode")},t.prototype.element=function(e,t,r){var a,s,i,n,o,u,p;if(n=null,null==t&&(t={}),t=t.valueOf(),d(t)||(u=[t,r],r=u[0],t=u[1]),null!=e&&(e=e.valueOf()),c(e))for(s=0,o=e.length;s/))throw new Error("Invalid CDATA text: "+e);return this.assertLegalChar(e)},e.prototype.comment=function(e){if(e=""+e||"",e.match(/--/))throw new Error("Comment text cannot contain double-hypen: "+e);return this.assertLegalChar(e)},e.prototype.raw=function(e){return""+e||""},e.prototype.attName=function(e){return""+e||""},e.prototype.attValue=function(e){return e=""+e||"",this.attEscape(e)},e.prototype.insTarget=function(e){return""+e||""},e.prototype.insValue=function(e){if(e=""+e||"",e.match(/\?>/))throw new Error("Invalid processing instruction value: "+e);return e},e.prototype.xmlVersion=function(e){if(e=""+e||"",!e.match(/1\.[0-9]+/))throw new Error("Invalid version number: "+e);return e},e.prototype.xmlEncoding=function(e){if(e=""+e||"",!e.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/))throw new Error("Invalid encoding: "+e);return e},e.prototype.xmlStandalone=function(e){return e?"yes":"no"},e.prototype.dtdPubID=function(e){return""+e||""},e.prototype.dtdSysID=function(e){return""+e||""},e.prototype.dtdElementValue=function(e){return""+e||""},e.prototype.dtdAttType=function(e){return""+e||""},e.prototype.dtdAttDefault=function(e){return null!=e?""+e||"":e},e.prototype.dtdEntityValue=function(e){return""+e||""},e.prototype.dtdNData=function(e){return""+e||""},e.prototype.convertAttKey="@",e.prototype.convertPIKey="?",e.prototype.convertTextKey="#text",e.prototype.convertCDataKey="#cdata",e.prototype.convertCommentKey="#comment",e.prototype.convertRawKey="#raw",e.prototype.convertListKey="#list",e.prototype.assertLegalChar=function(e){var t,r;if(t=this.allowSurrogateChars?/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/:/[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/,r=e.match(t))throw new Error("Invalid character ("+r+") in string: "+e+" at index "+r.index);return e},e.prototype.elEscape=function(e){return e.replace(/&/g,"&").replace(//g,">").replace(/\r/g," ")},e.prototype.attEscape=function(e){return e.replace(/&/g,"&").replace(/3&&"function"==typeof n?(n=s(n,o,5),r-=2):(n=r>2&&"function"==typeof o?o:null,r-=n?1:0),u&&i(t[1],t[2],u)&&(n=3==r?null:n,r=2);for(var p=0;++pu))return!1;for(;c&&++o-1&&e%1==0&&e-1&&e%1==0&&e<=s}var s=Math.pow(2,53)-1;t.exports=a},{}],318:[function(e,t,r){function a(e){return e&&"object"==typeof e||!1}t.exports=a},{}],319:[function(e,t,r){function a(e){return e===e&&(0===e?1/e>0:!s(e))}var s=e("../lang/isObject");t.exports=a},{"../lang/isObject":328}],320:[function(e,t,r){(function(r){var a=e("../lang/isNative"),s=a(s=r.WeakMap)&&s,i=s&&new s;t.exports=i}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"../lang/isNative":327}],321:[function(e,t,r){function a(e){for(var t=u(e),r=t.length,a=r&&e.length,c=a&&o(a)&&(i(e)||p.nonEnumArgs&&s(e)),l=-1,d=[];++l0;++a, some require you to add "/cfx/st" into your URL). - * - * @param options [Object] The options to create a signed URL. - * @option options url [String] The URL to which the signature will grant - * access. Required. - * @option options expires [Number] A Unix UTC timestamp indicating when the - * signature should expire. Required unless you - * pass in a full policy. - * @option options policy [String] A CloudFront JSON policy. Required unless - * you pass in a url and an expiry time. - * - * @param cb [Function] if a callback is provided, this function will - * pass the URL as the second parameter (after the error parameter) to - * the callback function. - * - * @return [String] if called synchronously (with no callback), returns the - * signed URL. - * @return [null] nothing is returned if a callback is provided. - */ - getSignedUrl: function (options, cb) { - try { - var resource = getResource(options.url); - } catch (err) { - return handleError(err, cb); - } - - var parsedUrl = url.parse(options.url, true), - signatureHash = Object.prototype.hasOwnProperty.call(options, 'policy') - ? signWithCustomPolicy(options.policy, this.keyPairId, this.privateKey) - : signWithCannedPolicy(resource, options.expires, this.keyPairId, this.privateKey); - - parsedUrl.search = null; - for (var key in signatureHash) { - if (Object.prototype.hasOwnProperty.call(signatureHash, key)) { - parsedUrl.query[key] = signatureHash[key]; - } - } - - try { - var signedUrl = determineScheme(options.url) === 'rtmp' - ? getRtmpUrl(url.format(parsedUrl)) - : url.format(parsedUrl); - } catch (err) { - return handleError(err, cb); - } - - return handleSuccess(signedUrl, cb); - } -}); - -module.exports = AWS.CloudFront.Signer; diff --git a/node_modules/aws-sdk/lib/config.js b/node_modules/aws-sdk/lib/config.js deleted file mode 100644 index 856b5ad..0000000 --- a/node_modules/aws-sdk/lib/config.js +++ /dev/null @@ -1,511 +0,0 @@ -var AWS = require('./core'); -require('./credentials'); -require('./credentials/credential_provider_chain'); - -/** - * The main configuration class used by all service objects to set - * the region, credentials, and other options for requests. - * - * By default, credentials and region settings are left unconfigured. - * This should be configured by the application before using any - * AWS service APIs. - * - * In order to set global configuration options, properties should - * be assigned to the global {AWS.config} object. - * - * @see AWS.config - * - * @!group General Configuration Options - * - * @!attribute credentials - * @return [AWS.Credentials] the AWS credentials to sign requests with. - * - * @!attribute region - * @example Set the global region setting to us-west-2 - * AWS.config.update({region: 'us-west-2'}); - * @return [AWS.Credentials] The region to send service requests to. - * @see http://docs.amazonwebservices.com/general/latest/gr/rande.html - * A list of available endpoints for each AWS service - * - * @!attribute maxRetries - * @return [Integer] the maximum amount of retries to perform for a - * service request. By default this value is calculated by the specific - * service object that the request is being made to. - * - * @!attribute maxRedirects - * @return [Integer] the maximum amount of redirects to follow for a - * service request. Defaults to 10. - * - * @!attribute paramValidation - * @return [Boolean|map] whether input parameters should be validated against - * the operation description before sending the request. Defaults to true. - * Pass a map to enable any of the following specific validation features: - * - * * **min** [Boolean] — Validates that a value meets the min - * constraint. This is enabled by default when paramValidation is set - * to `true`. - * * **max** [Boolean] — Validates that a value meets the max - * constraint. - * * **pattern** [Boolean] — Validates that a string value matches a - * regular expression. - * * **enum** [Boolean] — Validates that a string value matches one - * of the allowable enum values. - * - * @!attribute computeChecksums - * @return [Boolean] whether to compute checksums for payload bodies when - * the service accepts it (currently supported in S3 only). - * - * @!attribute convertResponseTypes - * @return [Boolean] whether types are converted when parsing response data. - * Currently only supported for JSON based services. Turning this off may - * improve performance on large response payloads. Defaults to `true`. - * - * @!attribute correctClockSkew - * @return [Boolean] whether to apply a clock skew correction and retry - * requests that fail because of an skewed client clock. Defaults to - * `false`. - * - * @!attribute sslEnabled - * @return [Boolean] whether SSL is enabled for requests - * - * @!attribute s3ForcePathStyle - * @return [Boolean] whether to force path style URLs for S3 objects - * - * @!attribute s3BucketEndpoint - * @note Setting this configuration option requires an `endpoint` to be - * provided explicitly to the service constructor. - * @return [Boolean] whether the provided endpoint addresses an individual - * bucket (false if it addresses the root API endpoint). - * - * @!attribute s3DisableBodySigning - * @return [Boolean] whether to disable S3 body signing when using signature version `v4`. - * Body signing can only be disabled when using https. Defaults to `true`. - * - * @!attribute useAccelerateEndpoint - * @note This configuration option is only compatible with S3 while accessing - * dns-compatible buckets. - * @return [Boolean] Whether to use the Accelerate endpoint with the S3 service. - * Defaults to `false`. - * - * @!attribute retryDelayOptions - * @example Set the base retry delay for all services to 300 ms - * AWS.config.update({retryDelayOptions: {base: 300}}); - * // Delays with maxRetries = 3: 300, 600, 1200 - * @example Set a custom backoff function to provide delay values on retries - * AWS.config.update({retryDelayOptions: {customBackoff: function(retryCount) { - * // returns delay in ms - * }}}); - * @note This works with all services except DynamoDB. - * @return [map] A set of options to configure the retry delay on retryable errors. - * Currently supported options are: - * - * * **base** [Integer] — The base number of milliseconds to use in the - * exponential backoff for operation retries. Defaults to 100 ms. - * * **customBackoff ** [function] — A custom function that accepts a retry count - * and returns the amount of time to delay in milliseconds. The `base` option will be - * ignored if this option is supplied. - * - * @!attribute httpOptions - * @return [map] A set of options to pass to the low-level HTTP request. - * Currently supported options are: - * - * * **proxy** [String] — the URL to proxy requests through - * * **agent** [http.Agent, https.Agent] — the Agent object to perform - * HTTP requests with. Used for connection pooling. Defaults to the global - * agent (`http.globalAgent`) for non-SSL connections. Note that for - * SSL connections, a special Agent object is used in order to enable - * peer certificate verification. This feature is only supported in the - * Node.js environment. - * * **timeout** [Integer] — The number of milliseconds to wait before - * giving up on a connection attempt. Defaults to two minutes (120000). - * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous - * HTTP requests. Used in the browser environment only. Set to false to - * send requests synchronously. Defaults to true (async on). - * * **xhrWithCredentials** [Boolean] — Sets the "withCredentials" - * property of an XMLHttpRequest object. Used in the browser environment - * only. Defaults to false. - * @!attribute logger - * @return [#write,#log] an object that responds to .write() (like a stream) - * or .log() (like the console object) in order to log information about - * requests - * - * @!attribute systemClockOffset - * @return [Number] an offset value in milliseconds to apply to all signing - * times. Use this to compensate for clock skew when your system may be - * out of sync with the service time. Note that this configuration option - * can only be applied to the global `AWS.config` object and cannot be - * overridden in service-specific configuration. Defaults to 0 milliseconds. - * - * @!attribute signatureVersion - * @return [String] the signature version to sign requests with (overriding - * the API configuration). Possible values are: 'v2', 'v3', 'v4'. - * - * @!attribute signatureCache - * @return [Boolean] whether the signature to sign requests with (overriding - * the API configuration) is cached. Only applies to the signature version 'v4'. - * Defaults to `true`. - */ -AWS.Config = AWS.util.inherit({ - /** - * @!endgroup - */ - - /** - * Creates a new configuration object. This is the object that passes - * option data along to service requests, including credentials, security, - * region information, and some service specific settings. - * - * @example Creating a new configuration object with credentials and region - * var config = new AWS.Config({ - * accessKeyId: 'AKID', secretAccessKey: 'SECRET', region: 'us-west-2' - * }); - * @option options accessKeyId [String] your AWS access key ID. - * @option options secretAccessKey [String] your AWS secret access key. - * @option options sessionToken [AWS.Credentials] the optional AWS - * session token to sign requests with. - * @option options credentials [AWS.Credentials] the AWS credentials - * to sign requests with. You can either specify this object, or - * specify the accessKeyId and secretAccessKey options directly. - * @option options credentialProvider [AWS.CredentialProviderChain] the - * provider chain used to resolve credentials if no static `credentials` - * property is set. - * @option options region [String] the region to send service requests to. - * See {region} for more information. - * @option options maxRetries [Integer] the maximum amount of retries to - * attempt with a request. See {maxRetries} for more information. - * @option options maxRedirects [Integer] the maximum amount of redirects to - * follow with a request. See {maxRedirects} for more information. - * @option options sslEnabled [Boolean] whether to enable SSL for - * requests. - * @option options paramValidation [Boolean|map] whether input parameters - * should be validated against the operation description before sending - * the request. Defaults to true. Pass a map to enable any of the - * following specific validation features: - * - * * **min** [Boolean] — Validates that a value meets the min - * constraint. This is enabled by default when paramValidation is set - * to `true`. - * * **max** [Boolean] — Validates that a value meets the max - * constraint. - * * **pattern** [Boolean] — Validates that a string value matches a - * regular expression. - * * **enum** [Boolean] — Validates that a string value matches one - * of the allowable enum values. - * @option options computeChecksums [Boolean] whether to compute checksums - * for payload bodies when the service accepts it (currently supported - * in S3 only) - * @option options convertResponseTypes [Boolean] whether types are converted - * when parsing response data. Currently only supported for JSON based - * services. Turning this off may improve performance on large response - * payloads. Defaults to `true`. - * @option options correctClockSkew [Boolean] whether to apply a clock skew - * correction and retry requests that fail because of an skewed client - * clock. Defaults to `false`. - * @option options s3ForcePathStyle [Boolean] whether to force path - * style URLs for S3 objects. - * @option options s3BucketEndpoint [Boolean] whether the provided endpoint - * addresses an individual bucket (false if it addresses the root API - * endpoint). Note that setting this configuration option requires an - * `endpoint` to be provided explicitly to the service constructor. - * @option options s3DisableBodySigning [Boolean] whether S3 body signing - * should be disabled when using signature version `v4`. Body signing - * can only be disabled when using https. Defaults to `true`. - * - * @option options retryDelayOptions [map] A set of options to configure - * the retry delay on retryable errors. Currently supported options are: - * - * * **base** [Integer] — The base number of milliseconds to use in the - * exponential backoff for operation retries. Defaults to 100 ms. - * * **customBackoff ** [function] — A custom function that accepts a retry count - * and returns the amount of time to delay in milliseconds. The `base` option will be - * ignored if this option is supplied. - * @option options httpOptions [map] A set of options to pass to the low-level - * HTTP request. Currently supported options are: - * - * * **proxy** [String] — the URL to proxy requests through - * * **agent** [http.Agent, https.Agent] — the Agent object to perform - * HTTP requests with. Used for connection pooling. Defaults to the global - * agent (`http.globalAgent`) for non-SSL connections. Note that for - * SSL connections, a special Agent object is used in order to enable - * peer certificate verification. This feature is only available in the - * Node.js environment. - * * **timeout** [Integer] — Sets the socket to timeout after timeout - * milliseconds of inactivity on the socket. Defaults to two minutes - * (120000). - * * **xhrAsync** [Boolean] — Whether the SDK will send asynchronous - * HTTP requests. Used in the browser environment only. Set to false to - * send requests synchronously. Defaults to true (async on). - * * **xhrWithCredentials** [Boolean] — Sets the "withCredentials" - * property of an XMLHttpRequest object. Used in the browser environment - * only. Defaults to false. - * @option options apiVersion [String, Date] a String in YYYY-MM-DD format - * (or a date) that represents the latest possible API version that can be - * used in all services (unless overridden by `apiVersions`). Specify - * 'latest' to use the latest possible version. - * @option options apiVersions [map] a map of service - * identifiers (the lowercase service class name) with the API version to - * use when instantiating a service. Specify 'latest' for each individual - * that can use the latest available version. - * @option options logger [#write,#log] an object that responds to .write() - * (like a stream) or .log() (like the console object) in order to log - * information about requests - * @option options systemClockOffset [Number] an offset value in milliseconds - * to apply to all signing times. Use this to compensate for clock skew - * when your system may be out of sync with the service time. Note that - * this configuration option can only be applied to the global `AWS.config` - * object and cannot be overridden in service-specific configuration. - * Defaults to 0 milliseconds. - * @option options signatureVersion [String] the signature version to sign - * requests with (overriding the API configuration). Possible values are: - * 'v2', 'v3', 'v4'. - * @option options signatureCache [Boolean] whether the signature to sign - * requests with (overriding the API configuration) is cached. Only applies - * to the signature version 'v4'. Defaults to `true`. - */ - constructor: function Config(options) { - if (options === undefined) options = {}; - options = this.extractCredentials(options); - - AWS.util.each.call(this, this.keys, function (key, value) { - this.set(key, options[key], value); - }); - }, - - /** - * @!group Managing Credentials - */ - - /** - * Loads credentials from the configuration object. This is used internally - * by the SDK to ensure that refreshable {Credentials} objects are properly - * refreshed and loaded when sending a request. If you want to ensure that - * your credentials are loaded prior to a request, you can use this method - * directly to provide accurate credential data stored in the object. - * - * @note If you configure the SDK with static or environment credentials, - * the credential data should already be present in {credentials} attribute. - * This method is primarily necessary to load credentials from asynchronous - * sources, or sources that can refresh credentials periodically. - * @example Getting your access key - * AWS.config.getCredentials(function(err) { - * if (err) console.log(err.stack); // credentials not loaded - * else console.log("Access Key:", AWS.config.credentials.accessKeyId); - * }) - * @callback callback function(err) - * Called when the {credentials} have been properly set on the configuration - * object. - * - * @param err [Error] if this is set, credentials were not successfuly - * loaded and this error provides information why. - * @see credentials - * @see Credentials - */ - getCredentials: function getCredentials(callback) { - var self = this; - - function finish(err) { - callback(err, err ? null : self.credentials); - } - - function credError(msg, err) { - return new AWS.util.error(err || new Error(), { - code: 'CredentialsError', message: msg - }); - } - - function getAsyncCredentials() { - self.credentials.get(function(err) { - if (err) { - var msg = 'Could not load credentials from ' + - self.credentials.constructor.name; - err = credError(msg, err); - } - finish(err); - }); - } - - function getStaticCredentials() { - var err = null; - if (!self.credentials.accessKeyId || !self.credentials.secretAccessKey) { - err = credError('Missing credentials'); - } - finish(err); - } - - if (self.credentials) { - if (typeof self.credentials.get === 'function') { - getAsyncCredentials(); - } else { // static credentials - getStaticCredentials(); - } - } else if (self.credentialProvider) { - self.credentialProvider.resolve(function(err, creds) { - if (err) { - err = credError('Could not load credentials from any providers', err); - } - self.credentials = creds; - finish(err); - }); - } else { - finish(credError('No credentials to load')); - } - }, - - /** - * @!group Loading and Setting Configuration Options - */ - - /** - * @overload update(options, allowUnknownKeys = false) - * Updates the current configuration object with new options. - * - * @example Update maxRetries property of a configuration object - * config.update({maxRetries: 10}); - * @param [Object] options a map of option keys and values. - * @param [Boolean] allowUnknownKeys whether unknown keys can be set on - * the configuration object. Defaults to `false`. - * @see constructor - */ - update: function update(options, allowUnknownKeys) { - allowUnknownKeys = allowUnknownKeys || false; - options = this.extractCredentials(options); - AWS.util.each.call(this, options, function (key, value) { - if (allowUnknownKeys || Object.prototype.hasOwnProperty.call(this.keys, key) || - AWS.Service.hasService(key)) { - this.set(key, value); - } - }); - }, - - /** - * Loads configuration data from a JSON file into this config object. - * @note Loading configuration will reset all existing configuration - * on the object. - * @!macro nobrowser - * @param path [String] the path relative to your process's current - * working directory to load configuration from. - * @return [AWS.Config] the same configuration object - */ - loadFromPath: function loadFromPath(path) { - this.clear(); - - var options = JSON.parse(AWS.util.readFileSync(path)); - var fileSystemCreds = new AWS.FileSystemCredentials(path); - var chain = new AWS.CredentialProviderChain(); - chain.providers.unshift(fileSystemCreds); - chain.resolve(function (err, creds) { - if (err) throw err; - else options.credentials = creds; - }); - - this.constructor(options); - - return this; - }, - - /** - * Clears configuration data on this object - * - * @api private - */ - clear: function clear() { - /*jshint forin:false */ - AWS.util.each.call(this, this.keys, function (key) { - delete this[key]; - }); - - // reset credential provider - this.set('credentials', undefined); - this.set('credentialProvider', undefined); - }, - - /** - * Sets a property on the configuration object, allowing for a - * default value - * @api private - */ - set: function set(property, value, defaultValue) { - if (value === undefined) { - if (defaultValue === undefined) { - defaultValue = this.keys[property]; - } - if (typeof defaultValue === 'function') { - this[property] = defaultValue.call(this); - } else { - this[property] = defaultValue; - } - } else if (property === 'httpOptions' && this[property]) { - // deep merge httpOptions - this[property] = AWS.util.merge(this[property], value); - } else { - this[property] = value; - } - }, - - /** - * All of the keys with their default values. - * - * @constant - * @api private - */ - keys: { - credentials: null, - credentialProvider: null, - region: null, - logger: null, - apiVersions: {}, - apiVersion: null, - endpoint: undefined, - httpOptions: { - timeout: 120000 - }, - maxRetries: undefined, - maxRedirects: 10, - paramValidation: true, - sslEnabled: true, - s3ForcePathStyle: false, - s3BucketEndpoint: false, - s3DisableBodySigning: true, - computeChecksums: true, - convertResponseTypes: true, - correctClockSkew: false, - customUserAgent: null, - dynamoDbCrc32: true, - systemClockOffset: 0, - signatureVersion: null, - signatureCache: true, - retryDelayOptions: { - base: 100 - }, - useAccelerateEndpoint: false - }, - - /** - * Extracts accessKeyId, secretAccessKey and sessionToken - * from a configuration hash. - * - * @api private - */ - extractCredentials: function extractCredentials(options) { - if (options.accessKeyId && options.secretAccessKey) { - options = AWS.util.copy(options); - options.credentials = new AWS.Credentials(options); - } - return options; - }, - - /** - * Sets the promise dependency the SDK will use wherever Promises are returned. - * @param [Constructor] dep A reference to a Promise constructor - */ - setPromisesDependency: function setPromisesDependency(dep) { - AWS.util.addPromisesToRequests(AWS.Request, dep); - } -}); - -/** - * @return [AWS.Config] The global configuration object singleton instance - * @readonly - * @see AWS.Config - */ -AWS.config = new AWS.Config(); diff --git a/node_modules/aws-sdk/lib/core.js b/node_modules/aws-sdk/lib/core.js deleted file mode 100644 index a1d5c7b..0000000 --- a/node_modules/aws-sdk/lib/core.js +++ /dev/null @@ -1,107 +0,0 @@ -/** - * The main AWS namespace - */ -var AWS = { util: require('./util') }; - -/** - * @api private - * @!macro [new] nobrowser - * @note This feature is not supported in the browser environment of the SDK. - */ -var _hidden = {}; _hidden.toString(); // hack to parse macro - -module.exports = AWS; - -AWS.util.update(AWS, { - - /** - * @constant - */ - VERSION: '2.6.8', - - /** - * @api private - */ - Signers: {}, - - /** - * @api private - */ - Protocol: { - Json: require('./protocol/json'), - Query: require('./protocol/query'), - Rest: require('./protocol/rest'), - RestJson: require('./protocol/rest_json'), - RestXml: require('./protocol/rest_xml') - }, - - /** - * @api private - */ - XML: { - Builder: require('./xml/builder'), - Parser: null // conditionally set based on environment - }, - - /** - * @api private - */ - JSON: { - Builder: require('./json/builder'), - Parser: require('./json/parser') - }, - - /** - * @api private - */ - Model: { - Api: require('./model/api'), - Operation: require('./model/operation'), - Shape: require('./model/shape'), - Paginator: require('./model/paginator'), - ResourceWaiter: require('./model/resource_waiter') - }, - - util: require('./util'), - - /** - * @api private - */ - apiLoader: function() { throw new Error('No API loader set'); } -}); - -require('./service'); - -require('./credentials'); -require('./credentials/credential_provider_chain'); -require('./credentials/temporary_credentials'); -require('./credentials/web_identity_credentials'); -require('./credentials/cognito_identity_credentials'); -require('./credentials/saml_credentials'); - -require('./config'); -require('./http'); -require('./sequential_executor'); -require('./event_listeners'); -require('./request'); -require('./response'); -require('./resource_waiter'); -require('./signers/request_signer'); -require('./param_validator'); - -/** - * @readonly - * @return [AWS.SequentialExecutor] a collection of global event listeners that - * are attached to every sent request. - * @see AWS.Request AWS.Request for a list of events to listen for - * @example Logging the time taken to send a request - * AWS.events.on('send', function startSend(resp) { - * resp.startTime = new Date().getTime(); - * }).on('complete', function calculateTime(resp) { - * var time = (new Date().getTime() - resp.startTime) / 1000; - * console.log('Request took ' + time + ' seconds'); - * }); - * - * new AWS.S3().listBuckets(); // prints 'Request took 0.285 seconds' - */ -AWS.events = new AWS.SequentialExecutor(); diff --git a/node_modules/aws-sdk/lib/credentials.js b/node_modules/aws-sdk/lib/credentials.js deleted file mode 100644 index 43ecdcf..0000000 --- a/node_modules/aws-sdk/lib/credentials.js +++ /dev/null @@ -1,150 +0,0 @@ -var AWS = require('./core'); - -/** - * Represents your AWS security credentials, specifically the - * {accessKeyId}, {secretAccessKey}, and optional {sessionToken}. - * Creating a `Credentials` object allows you to pass around your - * security information to configuration and service objects. - * - * Note that this class typically does not need to be constructed manually, - * as the {AWS.Config} and {AWS.Service} classes both accept simple - * options hashes with the three keys. These structures will be converted - * into Credentials objects automatically. - * - * ## Expiring and Refreshing Credentials - * - * Occasionally credentials can expire in the middle of a long-running - * application. In this case, the SDK will automatically attempt to - * refresh the credentials from the storage location if the Credentials - * class implements the {refresh} method. - * - * If you are implementing a credential storage location, you - * will want to create a subclass of the `Credentials` class and - * override the {refresh} method. This method allows credentials to be - * retrieved from the backing store, be it a file system, database, or - * some network storage. The method should reset the credential attributes - * on the object. - * - * @!attribute expired - * @return [Boolean] whether the credentials have been expired and - * require a refresh. Used in conjunction with {expireTime}. - * @!attribute expireTime - * @return [Date] a time when credentials should be considered expired. Used - * in conjunction with {expired}. - * @!attribute accessKeyId - * @return [String] the AWS access key ID - * @!attribute secretAccessKey - * @return [String] the AWS secret access key - * @!attribute sessionToken - * @return [String] an optional AWS session token - */ -AWS.Credentials = AWS.util.inherit({ - /** - * A credentials object can be created using positional arguments or an options - * hash. - * - * @overload AWS.Credentials(accessKeyId, secretAccessKey, sessionToken=null) - * Creates a Credentials object with a given set of credential information - * as positional arguments. - * @param accessKeyId [String] the AWS access key ID - * @param secretAccessKey [String] the AWS secret access key - * @param sessionToken [String] the optional AWS session token - * @example Create a credentials object with AWS credentials - * var creds = new AWS.Credentials('akid', 'secret', 'session'); - * @overload AWS.Credentials(options) - * Creates a Credentials object with a given set of credential information - * as an options hash. - * @option options accessKeyId [String] the AWS access key ID - * @option options secretAccessKey [String] the AWS secret access key - * @option options sessionToken [String] the optional AWS session token - * @example Create a credentials object with AWS credentials - * var creds = new AWS.Credentials({ - * accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'session' - * }); - */ - constructor: function Credentials() { - // hide secretAccessKey from being displayed with util.inspect - AWS.util.hideProperties(this, ['secretAccessKey']); - - this.expired = false; - this.expireTime = null; - if (arguments.length === 1 && typeof arguments[0] === 'object') { - var creds = arguments[0].credentials || arguments[0]; - this.accessKeyId = creds.accessKeyId; - this.secretAccessKey = creds.secretAccessKey; - this.sessionToken = creds.sessionToken; - } else { - this.accessKeyId = arguments[0]; - this.secretAccessKey = arguments[1]; - this.sessionToken = arguments[2]; - } - }, - - /** - * @return [Integer] the window size in seconds to attempt refreshing of - * credentials before the expireTime occurs. - */ - expiryWindow: 15, - - /** - * @return [Boolean] whether the credentials object should call {refresh} - * @note Subclasses should override this method to provide custom refresh - * logic. - */ - needsRefresh: function needsRefresh() { - var currentTime = AWS.util.date.getDate().getTime(); - var adjustedTime = new Date(currentTime + this.expiryWindow * 1000); - - if (this.expireTime && adjustedTime > this.expireTime) { - return true; - } else { - return this.expired || !this.accessKeyId || !this.secretAccessKey; - } - }, - - /** - * Gets the existing credentials, refreshing them if they are not yet loaded - * or have expired. Users should call this method before using {refresh}, - * as this will not attempt to reload credentials when they are already - * loaded into the object. - * - * @callback callback function(err) - * Called when the instance metadata service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - */ - get: function get(callback) { - var self = this; - if (this.needsRefresh()) { - this.refresh(function(err) { - if (!err) self.expired = false; // reset expired flag - if (callback) callback(err); - }); - } else if (callback) { - callback(); - } - }, - - /** - * Refreshes the credentials. Users should call {get} before attempting - * to forcibly refresh credentials. - * - * @callback callback function(err) - * Called when the instance metadata service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @note Subclasses should override this class to reset the - * {accessKeyId}, {secretAccessKey} and optional {sessionToken} - * on the credentials object and then call the callback with - * any error information. - * @see get - */ - refresh: function refresh(callback) { - this.expired = false; - callback(); - } -}); diff --git a/node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js b/node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js deleted file mode 100644 index aa59b87..0000000 --- a/node_modules/aws-sdk/lib/credentials/cognito_identity_credentials.js +++ /dev/null @@ -1,340 +0,0 @@ -var AWS = require('../core'); -var CognitoIdentity = require('../../clients/cognitoidentity'); -var STS = require('../../clients/sts'); - -/** - * Represents credentials retrieved from STS Web Identity Federation using - * the Amazon Cognito Identity service. - * - * By default this provider gets credentials using the - * {AWS.CognitoIdentity.getCredentialsForIdentity} service operation, which - * requires either an `IdentityId` or an `IdentityPoolId` (Amazon Cognito - * Identity Pool ID), which is used to call {AWS.CognitoIdentity.getId} to - * obtain an `IdentityId`. If the identity or identity pool is not configured in - * the Amazon Cognito Console to use IAM roles with the appropriate permissions, - * then additionally a `RoleArn` is required containing the ARN of the IAM trust - * policy for the Amazon Cognito role that the user will log into. If a `RoleArn` - * is provided, then this provider gets credentials using the - * {AWS.STS.assumeRoleWithWebIdentity} service operation, after first getting an - * Open ID token from {AWS.CognitoIdentity.getOpenIdToken}. - * - * In addition, if this credential provider is used to provide authenticated - * login, the `Logins` map may be set to the tokens provided by the respective - * identity providers. See {constructor} for an example on creating a credentials - * object with proper property values. - * - * ## Refreshing Credentials from Identity Service - * - * In addition to AWS credentials expiring after a given amount of time, the - * login token from the identity provider will also expire. Once this token - * expires, it will not be usable to refresh AWS credentials, and another - * token will be needed. The SDK does not manage refreshing of the token value, - * but this can be done through a "refresh token" supported by most identity - * providers. Consult the documentation for the identity provider for refreshing - * tokens. Once the refreshed token is acquired, you should make sure to update - * this new token in the credentials object's {params} property. The following - * code will update the WebIdentityToken, assuming you have retrieved an updated - * token from the identity provider: - * - * ```javascript - * AWS.config.credentials.params.Logins['graph.facebook.com'] = updatedToken; - * ``` - * - * Future calls to `credentials.refresh()` will now use the new token. - * - * @!attribute params - * @return [map] the map of params passed to - * {AWS.CognitoIdentity.getId}, - * {AWS.CognitoIdentity.getOpenIdToken}, and - * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the - * `params.WebIdentityToken` property. - * @!attribute data - * @return [map] the raw data response from the call to - * {AWS.CognitoIdentity.getCredentialsForIdentity}, or - * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get - * access to other properties from the response. - * @!attribute identityId - * @return [String] the Cognito ID returned by the last call to - * {AWS.CognitoIdentity.getOpenIdToken}. This ID represents the actual - * final resolved identity ID from Amazon Cognito. - */ -AWS.CognitoIdentityCredentials = AWS.util.inherit(AWS.Credentials, { - /** - * @api private - */ - localStorageKey: { - id: 'aws.cognito.identity-id.', - providers: 'aws.cognito.identity-providers.' - }, - - /** - * Creates a new credentials object. - * @example Creating a new credentials object - * AWS.config.credentials = new AWS.CognitoIdentityCredentials({ - * - * // either IdentityPoolId or IdentityId is required - * // See the IdentityPoolId param for AWS.CognitoIdentity.getID (linked below) - * // See the IdentityId param for AWS.CognitoIdentity.getCredentialsForIdentity - * // or AWS.CognitoIdentity.getOpenIdToken (linked below) - * IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', - * IdentityId: 'us-east-1:128d0a74-c82f-4553-916d-90053e4a8b0f' - * - * // optional, only necessary when the identity pool is not configured - * // to use IAM roles in the Amazon Cognito Console - * // See the RoleArn param for AWS.STS.assumeRoleWithWebIdentity (linked below) - * RoleArn: 'arn:aws:iam::1234567890:role/MYAPP-CognitoIdentity', - * - * // optional tokens, used for authenticated login - * // See the Logins param for AWS.CognitoIdentity.getID (linked below) - * Logins: { - * 'graph.facebook.com': 'FBTOKEN', - * 'www.amazon.com': 'AMAZONTOKEN', - * 'accounts.google.com': 'GOOGLETOKEN', - * 'api.twitter.com': 'TWITTERTOKEN', - * 'www.digits.com': 'DIGITSTOKEN' - * }, - * - * // optional name, defaults to web-identity - * // See the RoleSessionName param for AWS.STS.assumeRoleWithWebIdentity (linked below) - * RoleSessionName: 'web', - * - * // optional, only necessary when application runs in a browser - * // and multiple users are signed in at once, used for caching - * LoginId: 'example@gmail.com' - * - * }); - * @see AWS.CognitoIdentity.getId - * @see AWS.CognitoIdentity.getCredentialsForIdentity - * @see AWS.STS.assumeRoleWithWebIdentity - * @see AWS.CognitoIdentity.getOpenIdToken - */ - constructor: function CognitoIdentityCredentials(params) { - AWS.Credentials.call(this); - this.expired = true; - this.params = params; - this.data = null; - this.identityId = null; - this.loadCachedId(); - }, - - /** - * Refreshes credentials using {AWS.CognitoIdentity.getCredentialsForIdentity}, - * or {AWS.STS.assumeRoleWithWebIdentity}. - * - * @callback callback function(err) - * Called when the STS service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - var self = this; - self.createClients(); - self.data = null; - self.identityId = null; - self.getId(function(err) { - if (!err) { - if (!self.params.RoleArn) { - self.getCredentialsForIdentity(callback); - } else { - self.getCredentialsFromSTS(callback); - } - } else { - self.clearIdOnNotAuthorized(err); - callback(err); - } - }); - }, - - /** - * Clears the cached Cognito ID associated with the currently configured - * identity pool ID. Use this to manually invalidate your cache if - * the identity pool ID was deleted. - */ - clearCachedId: function clearCache() { - this.identityId = null; - delete this.params.IdentityId; - - var poolId = this.params.IdentityPoolId; - var loginId = this.params.LoginId || ''; - delete this.storage[this.localStorageKey.id + poolId + loginId]; - delete this.storage[this.localStorageKey.providers + poolId + loginId]; - }, - - /** - * @api private - */ - clearIdOnNotAuthorized: function clearIdOnNotAuthorized(err) { - var self = this; - if (err.code == 'NotAuthorizedException') { - self.clearCachedId(); - } - }, - - /** - * Retrieves a Cognito ID, loading from cache if it was already retrieved - * on this device. - * - * @callback callback function(err, identityId) - * @param err [Error, null] an error object if the call failed or null if - * it succeeded. - * @param identityId [String, null] if successful, the callback will return - * the Cognito ID. - * @note If not loaded explicitly, the Cognito ID is loaded and stored in - * localStorage in the browser environment of a device. - * @api private - */ - getId: function getId(callback) { - var self = this; - if (typeof self.params.IdentityId === 'string') { - return callback(null, self.params.IdentityId); - } - - self.cognito.getId(function(err, data) { - if (!err && data.IdentityId) { - self.params.IdentityId = data.IdentityId; - callback(null, data.IdentityId); - } else { - callback(err); - } - }); - }, - - - /** - * @api private - */ - loadCredentials: function loadCredentials(data, credentials) { - if (!data || !credentials) return; - credentials.expired = false; - credentials.accessKeyId = data.Credentials.AccessKeyId; - credentials.secretAccessKey = data.Credentials.SecretKey; - credentials.sessionToken = data.Credentials.SessionToken; - credentials.expireTime = data.Credentials.Expiration; - }, - - /** - * @api private - */ - getCredentialsForIdentity: function getCredentialsForIdentity(callback) { - var self = this; - self.cognito.getCredentialsForIdentity(function(err, data) { - if (!err) { - self.cacheId(data); - self.data = data; - self.loadCredentials(self.data, self); - } else { - self.clearIdOnNotAuthorized(err); - } - callback(err); - }); - }, - - /** - * @api private - */ - getCredentialsFromSTS: function getCredentialsFromSTS(callback) { - var self = this; - self.cognito.getOpenIdToken(function(err, data) { - if (!err) { - self.cacheId(data); - self.params.WebIdentityToken = data.Token; - self.webIdentityCredentials.refresh(function(webErr) { - if (!webErr) { - self.data = self.webIdentityCredentials.data; - self.sts.credentialsFrom(self.data, self); - } - callback(webErr); - }); - } else { - self.clearIdOnNotAuthorized(err); - callback(err); - } - }); - }, - - /** - * @api private - */ - loadCachedId: function loadCachedId() { - var self = this; - - // in the browser we source default IdentityId from localStorage - if (AWS.util.isBrowser() && !self.params.IdentityId) { - var id = self.getStorage('id'); - if (id && self.params.Logins) { - var actualProviders = Object.keys(self.params.Logins); - var cachedProviders = - (self.getStorage('providers') || '').split(','); - - // only load ID if at least one provider used this ID before - var intersect = cachedProviders.filter(function(n) { - return actualProviders.indexOf(n) !== -1; - }); - if (intersect.length !== 0) { - self.params.IdentityId = id; - } - } else if (id) { - self.params.IdentityId = id; - } - } - }, - - /** - * @api private - */ - createClients: function() { - this.webIdentityCredentials = this.webIdentityCredentials || - new AWS.WebIdentityCredentials(this.params); - this.cognito = this.cognito || - new CognitoIdentity({params: this.params}); - this.sts = this.sts || new STS(); - }, - - /** - * @api private - */ - cacheId: function cacheId(data) { - this.identityId = data.IdentityId; - this.params.IdentityId = this.identityId; - - // cache this IdentityId in browser localStorage if possible - if (AWS.util.isBrowser()) { - this.setStorage('id', data.IdentityId); - - if (this.params.Logins) { - this.setStorage('providers', Object.keys(this.params.Logins).join(',')); - } - } - }, - - /** - * @api private - */ - getStorage: function getStorage(key) { - return this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')]; - }, - - /** - * @api private - */ - setStorage: function setStorage(key, val) { - try { - this.storage[this.localStorageKey[key] + this.params.IdentityPoolId + (this.params.LoginId || '')] = val; - } catch (_) {} - }, - - /** - * @api private - */ - storage: (function() { - try { - return AWS.util.isBrowser() && window.localStorage !== null && typeof window.localStorage === 'object' ? - window.localStorage : {}; - } catch (_) { - return {}; - } - })() -}); diff --git a/node_modules/aws-sdk/lib/credentials/credential_provider_chain.js b/node_modules/aws-sdk/lib/credentials/credential_provider_chain.js deleted file mode 100644 index 79bed3d..0000000 --- a/node_modules/aws-sdk/lib/credentials/credential_provider_chain.js +++ /dev/null @@ -1,135 +0,0 @@ -var AWS = require('../core'); - -/** - * Creates a credential provider chain that searches for AWS credentials - * in a list of credential providers specified by the {providers} property. - * - * By default, the chain will use the {defaultProviders} to resolve credentials. - * These providers will look in the environment using the - * {AWS.EnvironmentCredentials} class with the 'AWS' and 'AMAZON' prefixes. - * - * ## Setting Providers - * - * Each provider in the {providers} list should be a function that returns - * a {AWS.Credentials} object, or a hardcoded credentials object. The function - * form allows for delayed execution of the credential construction. - * - * ## Resolving Credentials from a Chain - * - * Call {resolve} to return the first valid credential object that can be - * loaded by the provider chain. - * - * For example, to resolve a chain with a custom provider that checks a file - * on disk after the set of {defaultProviders}: - * - * ```javascript - * var diskProvider = new AWS.FileSystemCredentials('./creds.json'); - * var chain = new AWS.CredentialProviderChain(); - * chain.providers.push(diskProvider); - * chain.resolve(); - * ``` - * - * The above code will return the `diskProvider` object if the - * file contains credentials and the `defaultProviders` do not contain - * any credential settings. - * - * @!attribute providers - * @return [Array] - * a list of credentials objects or functions that return credentials - * objects. If the provider is a function, the function will be - * executed lazily when the provider needs to be checked for valid - * credentials. By default, this object will be set to the - * {defaultProviders}. - * @see defaultProviders - */ -AWS.CredentialProviderChain = AWS.util.inherit(AWS.Credentials, { - - /** - * Creates a new CredentialProviderChain with a default set of providers - * specified by {defaultProviders}. - */ - constructor: function CredentialProviderChain(providers) { - if (providers) { - this.providers = providers; - } else { - this.providers = AWS.CredentialProviderChain.defaultProviders.slice(0); - } - }, - - /** - * Resolves the provider chain by searching for the first set of - * credentials in {providers}. - * - * @callback callback function(err, credentials) - * Called when the provider resolves the chain to a credentials object - * or null if no credentials can be found. - * - * @param err [Error] the error object returned if no credentials are - * found. - * @param credentials [AWS.Credentials] the credentials object resolved - * by the provider chain. - * @return [AWS.CredentialProviderChain] the provider, for chaining. - */ - resolve: function resolve(callback) { - if (this.providers.length === 0) { - callback(new Error('No providers')); - return this; - } - - var index = 0; - var providers = this.providers.slice(0); - - function resolveNext(err, creds) { - if ((!err && creds) || index === providers.length) { - callback(err, creds); - return; - } - - var provider = providers[index++]; - if (typeof provider === 'function') { - creds = provider.call(); - } else { - creds = provider; - } - - if (creds.get) { - creds.get(function(getErr) { - resolveNext(getErr, getErr ? null : creds); - }); - } else { - resolveNext(null, creds); - } - } - - resolveNext(); - return this; - } - -}); - -/** - * The default set of providers used by a vanilla CredentialProviderChain. - * - * In the browser: - * - * ```javascript - * AWS.CredentialProviderChain.defaultProviders = [] - * ``` - * - * In Node.js: - * - * ```javascript - * AWS.CredentialProviderChain.defaultProviders = [ - * function () { return new AWS.EnvironmentCredentials('AWS'); }, - * function () { return new AWS.EnvironmentCredentials('AMAZON'); }, - * function () { return new AWS.SharedIniFileCredentials(); }, - * function () { - * // if AWS_CONTAINER_CREDENTIALS_RELATIVE_URI is set - * return new AWS.ECSCredentials(); - * // else - * return new AWS.EC2MetadataCredentials(); - * } - * ] - * ``` - */ -AWS.CredentialProviderChain.defaultProviders = []; diff --git a/node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js b/node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js deleted file mode 100644 index 42e1f7e..0000000 --- a/node_modules/aws-sdk/lib/credentials/ec2_metadata_credentials.js +++ /dev/null @@ -1,81 +0,0 @@ -var AWS = require('../core'); -require('../metadata_service'); - -/** - * Represents credentials received from the metadata service on an EC2 instance. - * - * By default, this class will connect to the metadata service using - * {AWS.MetadataService} and attempt to load any available credentials. If it - * can connect, and credentials are available, these will be used with zero - * configuration. - * - * This credentials class will by default timeout after 1 second of inactivity - * and retry 3 times. - * If your requests to the EC2 metadata service are timing out, you can increase - * these values by configuring them directly: - * - * ```javascript - * AWS.config.credentials = new AWS.EC2MetadataCredentials({ - * httpOptions: { timeout: 5000 }, // 5 second timeout - * maxRetries: 10, // retry 10 times - * retryDelayOptions: { base: 200 } // see AWS.Config for information - * }); - * ``` - * - * @see AWS.Config.retryDelayOptions - * - * @!macro nobrowser - */ -AWS.EC2MetadataCredentials = AWS.util.inherit(AWS.Credentials, { - constructor: function EC2MetadataCredentials(options) { - AWS.Credentials.call(this); - - options = options ? AWS.util.copy(options) : {}; - options = AWS.util.merge( - {maxRetries: this.defaultMaxRetries}, options); - if (!options.httpOptions) options.httpOptions = {}; - options.httpOptions = AWS.util.merge( - {timeout: this.defaultTimeout}, options.httpOptions); - - this.metadataService = new AWS.MetadataService(options); - this.metadata = {}; - }, - - /** - * @api private - */ - defaultTimeout: 1000, - - /** - * @api private - */ - defaultMaxRetries: 3, - - /** - * Loads the credentials from the instance metadata service - * - * @callback callback function(err) - * Called when the instance metadata service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - var self = this; - if (!callback) callback = function(err) { if (err) throw err; }; - - self.metadataService.loadCredentials(function (err, creds) { - if (!err) { - self.expired = false; - self.metadata = creds; - self.accessKeyId = creds.AccessKeyId; - self.secretAccessKey = creds.SecretAccessKey; - self.sessionToken = creds.Token; - self.expireTime = new Date(creds.Expiration); - } - callback(err); - }); - } -}); diff --git a/node_modules/aws-sdk/lib/credentials/ecs_credentials.js b/node_modules/aws-sdk/lib/credentials/ecs_credentials.js deleted file mode 100644 index 7eab957..0000000 --- a/node_modules/aws-sdk/lib/credentials/ecs_credentials.js +++ /dev/null @@ -1,164 +0,0 @@ -var AWS = require('../core'); - -/** - * Represents credentials received from relative URI specified in the ECS container. - * - * This class will request refreshable credentials from the relative URI - * specified by the AWS_CONTAINER_CREDENTIALS_RELATIVE_URI environment variable - * in the container. If valid credentials are returned in the response, these - * will be used with zero configuration. - * - * This credentials class will by default timeout after 1 second of inactivity - * and retry 3 times. - * If your requests to the relative URI are timing out, you can increase - * the value by configuring them directly: - * - * ```javascript - * AWS.config.credentials = new AWS.ECSCredentials({ - * httpOptions: { timeout: 5000 }, // 5 second timeout - * maxRetries: 10, // retry 10 times - * retryDelayOptions: { base: 200 } // see AWS.Config for information - * }); - * ``` - * - * @see AWS.Config.retryDelayOptions - * - * @!macro nobrowser - */ -AWS.ECSCredentials = AWS.util.inherit(AWS.Credentials, { - constructor: function ECSCredentials(options) { - AWS.Credentials.call(this); - options = options ? AWS.util.copy(options) : {}; - if (!options.httpOptions) options.httpOptions = {}; - options.httpOptions = AWS.util.merge( - this.httpOptions, options.httpOptions); - AWS.util.update(this, options); - }, - - /** - * @api private - */ - httpOptions: { timeout: 1000 }, - - /** - * @api private - */ - host: '169.254.170.2', - - /** - * @api private - */ - maxRetries: 3, - - /** - * Sets the name of the ECS environment variable to check for relative URI - * If changed, please change the name in the documentation for defaultProvider - * in credential_provider_chain.js and in all tests in test/credentials.spec.coffee - * - * @api private - */ - environmentVar: 'AWS_CONTAINER_CREDENTIALS_RELATIVE_URI', - - /** - * @api private - */ - getECSRelativeUri: function getECSRelativeUri() { - if (process && process.env) return process.env[this.environmentVar]; - }, - - /** - * @api private - */ - credsFormatIsValid: function credsFormatIsValid(credData) { - return (!!credData.AccessKeyId && !!credData.SecretAccessKey && - !!credData.Token && !!credData.Expiration); - }, - - /** - * @api private - */ - request: function request(path, callback) { - path = path || '/'; - var httpRequest = new AWS.HttpRequest('http://' + this.host + path); - httpRequest.method = 'GET'; - httpRequest.headers.Accept = 'application/json'; - AWS.util.handleRequestWithRetries(httpRequest, this, callback); - }, - - /** - * @api private - */ - refreshQueue: [], - - /** - * Loads the credentials from the relative URI specified by container - * - * @callback callback function(err) - * Called when the request to the relative URI responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, `sessionToken`, and `expireTime` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - var self = this; - var refreshQueue = self.refreshQueue; - if (!callback) callback = function(err) { if (err) throw err; }; - refreshQueue.push({ - provider: self, - errCallback: callback - }); - if (refreshQueue.length > 1) { return; } - - function callbacks(err, creds) { - var call, cb; - while ((call = refreshQueue.shift()) !== undefined) { - cb = call.errCallback; - if (!err) AWS.util.update(call.provider, creds); - cb(err); - } - } - - if (process === undefined) { - callbacks(AWS.util.error( - new Error('No process info available'), - { code: 'ECSCredentialsProviderFailure' } - )); - return; - } - var relativeUri = this.getECSRelativeUri(); - if (relativeUri === undefined) { - callbacks(AWS.util.error( - new Error('Variable ' + this.environmentVar + ' not set.'), - { code: 'ECSCredentialsProviderFailure' } - )); - return; - } - - this.request(relativeUri, function(err, data) { - if (!err) { - try { - data = JSON.parse(data); - if (self.credsFormatIsValid(data)) { - var creds = { - expired: false, - accessKeyId: data.AccessKeyId, - secretAccessKey: data.SecretAccessKey, - sessionToken: data.Token, - expireTime: new Date(data.Expiration) - }; - } else { - throw AWS.util.error( - new Error('Response data is not in valid format'), - { code: 'ECSCredentialsProviderFailure' } - ); - } - } catch (dataError) { - err = dataError; - } - } - callbacks(err, creds); - }); - } -}); diff --git a/node_modules/aws-sdk/lib/credentials/environment_credentials.js b/node_modules/aws-sdk/lib/credentials/environment_credentials.js deleted file mode 100644 index b406518..0000000 --- a/node_modules/aws-sdk/lib/credentials/environment_credentials.js +++ /dev/null @@ -1,91 +0,0 @@ -var AWS = require('../core'); - -/** - * Represents credentials from the environment. - * - * By default, this class will look for the matching environment variables - * prefixed by a given {envPrefix}. The un-prefixed environment variable names - * for each credential value is listed below: - * - * ```javascript - * accessKeyId: ACCESS_KEY_ID - * secretAccessKey: SECRET_ACCESS_KEY - * sessionToken: SESSION_TOKEN - * ``` - * - * With the default prefix of 'AWS', the environment variables would be: - * - * AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN - * - * @!attribute envPrefix - * @readonly - * @return [String] the prefix for the environment variable names excluding - * the separating underscore ('_'). - */ -AWS.EnvironmentCredentials = AWS.util.inherit(AWS.Credentials, { - - /** - * Creates a new EnvironmentCredentials class with a given variable - * prefix {envPrefix}. For example, to load credentials using the 'AWS' - * prefix: - * - * ```javascript - * var creds = new AWS.EnvironmentCredentials('AWS'); - * creds.accessKeyId == 'AKID' // from AWS_ACCESS_KEY_ID env var - * ``` - * - * @param envPrefix [String] the prefix to use (e.g., 'AWS') for environment - * variables. Do not include the separating underscore. - */ - constructor: function EnvironmentCredentials(envPrefix) { - AWS.Credentials.call(this); - this.envPrefix = envPrefix; - this.get(function() {}); - }, - - /** - * Loads credentials from the environment using the prefixed - * environment variables. - * - * @callback callback function(err) - * Called after the (prefixed) ACCESS_KEY_ID, SECRET_ACCESS_KEY, and - * SESSION_TOKEN environment variables are read. When this callback is - * called with no error, it means that the credentials information has - * been loaded into the object (as the `accessKeyId`, `secretAccessKey`, - * and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - if (!callback) callback = function(err) { if (err) throw err; }; - - if (!process || !process.env) { - callback(AWS.util.error( - new Error('No process info or environment variables available'), - { code: 'EnvironmentCredentialsProviderFailure' } - )); - return; - } - - var keys = ['ACCESS_KEY_ID', 'SECRET_ACCESS_KEY', 'SESSION_TOKEN']; - var values = []; - - for (var i = 0; i < keys.length; i++) { - var prefix = ''; - if (this.envPrefix) prefix = this.envPrefix + '_'; - values[i] = process.env[prefix + keys[i]]; - if (!values[i] && keys[i] !== 'SESSION_TOKEN') { - callback(AWS.util.error( - new Error('Variable ' + prefix + keys[i] + ' not set.'), - { code: 'EnvironmentCredentialsProviderFailure' } - )); - return; - } - } - - this.expired = false; - AWS.Credentials.apply(this, values); - callback(); - } - -}); diff --git a/node_modules/aws-sdk/lib/credentials/file_system_credentials.js b/node_modules/aws-sdk/lib/credentials/file_system_credentials.js deleted file mode 100644 index f6d6fc1..0000000 --- a/node_modules/aws-sdk/lib/credentials/file_system_credentials.js +++ /dev/null @@ -1,68 +0,0 @@ -var AWS = require('../core'); - -/** - * Represents credentials from a JSON file on disk. - * If the credentials expire, the SDK can {refresh} the credentials - * from the file. - * - * The format of the file should be similar to the options passed to - * {AWS.Config}: - * - * ```javascript - * {accessKeyId: 'akid', secretAccessKey: 'secret', sessionToken: 'optional'} - * ``` - * - * @example Loading credentials from disk - * var creds = new AWS.FileSystemCredentials('./configuration.json'); - * creds.accessKeyId == 'AKID' - * - * @!attribute filename - * @readonly - * @return [String] the path to the JSON file on disk containing the - * credentials. - * @!macro nobrowser - */ -AWS.FileSystemCredentials = AWS.util.inherit(AWS.Credentials, { - - /** - * @overload AWS.FileSystemCredentials(filename) - * Creates a new FileSystemCredentials object from a filename - * - * @param filename [String] the path on disk to the JSON file to load. - */ - constructor: function FileSystemCredentials(filename) { - AWS.Credentials.call(this); - this.filename = filename; - this.get(function() {}); - }, - - /** - * Loads the credentials from the {filename} on disk. - * - * @callback callback function(err) - * Called after the JSON file on disk is read and parsed. When this callback - * is called with no error, it means that the credentials information - * has been loaded into the object (as the `accessKeyId`, `secretAccessKey`, - * and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - if (!callback) callback = function(err) { if (err) throw err; }; - try { - var creds = JSON.parse(AWS.util.readFileSync(this.filename)); - AWS.Credentials.call(this, creds); - if (!this.accessKeyId || !this.secretAccessKey) { - throw AWS.util.error( - new Error('Credentials not set in ' + this.filename), - { code: 'FileSystemCredentialsProviderFailure' } - ); - } - this.expired = false; - callback(); - } catch (err) { - callback(err); - } - } - -}); diff --git a/node_modules/aws-sdk/lib/credentials/saml_credentials.js b/node_modules/aws-sdk/lib/credentials/saml_credentials.js deleted file mode 100644 index 0034384..0000000 --- a/node_modules/aws-sdk/lib/credentials/saml_credentials.js +++ /dev/null @@ -1,89 +0,0 @@ -var AWS = require('../core'); -var STS = require('../../clients/sts'); - -/** - * Represents credentials retrieved from STS SAML support. - * - * By default this provider gets credentials using the - * {AWS.STS.assumeRoleWithSAML} service operation. This operation - * requires a `RoleArn` containing the ARN of the IAM trust policy for the - * application for which credentials will be given, as well as a `PrincipalArn` - * representing the ARN for the SAML identity provider. In addition, the - * `SAMLAssertion` must be set to the token provided by the identity - * provider. See {constructor} for an example on creating a credentials - * object with proper `RoleArn`, `PrincipalArn`, and `SAMLAssertion` values. - * - * ## Refreshing Credentials from Identity Service - * - * In addition to AWS credentials expiring after a given amount of time, the - * login token from the identity provider will also expire. Once this token - * expires, it will not be usable to refresh AWS credentials, and another - * token will be needed. The SDK does not manage refreshing of the token value, - * but this can be done through a "refresh token" supported by most identity - * providers. Consult the documentation for the identity provider for refreshing - * tokens. Once the refreshed token is acquired, you should make sure to update - * this new token in the credentials object's {params} property. The following - * code will update the SAMLAssertion, assuming you have retrieved an updated - * token from the identity provider: - * - * ```javascript - * AWS.config.credentials.params.SAMLAssertion = updatedToken; - * ``` - * - * Future calls to `credentials.refresh()` will now use the new token. - * - * @!attribute params - * @return [map] the map of params passed to - * {AWS.STS.assumeRoleWithSAML}. To update the token, set the - * `params.SAMLAssertion` property. - */ -AWS.SAMLCredentials = AWS.util.inherit(AWS.Credentials, { - /** - * Creates a new credentials object. - * @param (see AWS.STS.assumeRoleWithSAML) - * @example Creating a new credentials object - * AWS.config.credentials = new AWS.SAMLCredentials({ - * RoleArn: 'arn:aws:iam::1234567890:role/SAMLRole', - * PrincipalArn: 'arn:aws:iam::1234567890:role/SAMLPrincipal', - * SAMLAssertion: 'base64-token', // base64-encoded token from IdP - * }); - * @see AWS.STS.assumeRoleWithSAML - */ - constructor: function SAMLCredentials(params) { - AWS.Credentials.call(this); - this.expired = true; - this.params = params; - }, - - /** - * Refreshes credentials using {AWS.STS.assumeRoleWithSAML} - * - * @callback callback function(err) - * Called when the STS service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - var self = this; - self.createClients(); - if (!callback) callback = function(err) { if (err) throw err; }; - - self.service.assumeRoleWithSAML(function (err, data) { - if (!err) { - self.service.credentialsFrom(data, self); - } - callback(err); - }); - }, - - /** - * @api private - */ - createClients: function() { - this.service = this.service || new STS({params: this.params}); - } - -}); diff --git a/node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js b/node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js deleted file mode 100644 index 4e958fb..0000000 --- a/node_modules/aws-sdk/lib/credentials/shared_ini_file_credentials.js +++ /dev/null @@ -1,204 +0,0 @@ -var AWS = require('../core'); -var path = require('path'); -var STS = require('../../clients/sts'); - -/** - * Represents credentials loaded from shared credentials file - * (defaulting to ~/.aws/credentials). - * - * ## Using the shared credentials file - * - * This provider is checked by default in the Node.js environment. To use the - * credentials file provider, simply add your access and secret keys to the - * ~/.aws/credentials file in the following format: - * - * [default] - * aws_access_key_id = AKID... - * aws_secret_access_key = YOUR_SECRET_KEY - * - * ## Using custom profiles - * - * The SDK supports loading credentials for separate profiles. This can be done - * in two ways: - * - * 1. Set the `AWS_PROFILE` environment variable in your process prior to - * loading the SDK. - * 2. Directly load the AWS.SharedIniFileCredentials provider: - * - * ```javascript - * var creds = new AWS.SharedIniFileCredentials({profile: 'myprofile'}); - * AWS.config.credentials = creds; - * ``` - * - * @!macro nobrowser - */ -AWS.SharedIniFileCredentials = AWS.util.inherit(AWS.Credentials, { - /** - * Creates a new SharedIniFileCredentials object. - * - * @param options [map] a set of options - * @option options profile [String] (AWS_PROFILE env var or 'default') - * the name of the profile to load. - * @option options filename [String] ('~/.aws/credentials') the filename - * to use when loading credentials. - * @option options disableAssumeRole [Boolean] (false) True to disable - * support for profiles that assume an IAM role. If true, and an assume - * role profile is selected, an error is raised. - */ - constructor: function SharedIniFileCredentials(options) { - AWS.Credentials.call(this); - - options = options || {}; - - this.filename = options.filename; - this.profile = options.profile || process.env.AWS_PROFILE || 'default'; - this.disableAssumeRole = !!options.disableAssumeRole; - this.get(function() {}); - }, - - /** - * Loads the credentials from the shared credentials file - * - * @callback callback function(err) - * Called after the shared INI file on disk is read and parsed. When this - * callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - if (!callback) callback = function(err) { if (err) throw err; }; - try { - if (!this.filename) this.loadDefaultFilename(); - var creds = AWS.util.ini.parse(AWS.util.readFileSync(this.filename)); - var profile = creds[this.profile]; - - if (typeof profile !== 'object') { - throw AWS.util.error( - new Error('Profile ' + this.profile + ' not found in ' + this.filename), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - - if (profile['role_arn']) { - this.loadRoleProfile(creds, profile, callback); - return; - } - - this.accessKeyId = profile['aws_access_key_id']; - this.secretAccessKey = profile['aws_secret_access_key']; - this.sessionToken = profile['aws_session_token']; - - if (!this.accessKeyId || !this.secretAccessKey) { - throw AWS.util.error( - new Error('Credentials not set in ' + this.filename + - ' using profile ' + this.profile), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - this.expired = false; - callback(); - } catch (err) { - callback(err); - } - }, - - /** - * @api private - */ - loadRoleProfile: function loadRoleProfile(creds, roleProfile, callback) { - if (this.disableAssumeRole) { - throw AWS.util.error( - new Error('Role assumption profiles are disabled. ' + - 'Failed to load profile ' + this.profile + ' from ' + - this.filename), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - - var self = this; - var roleArn = roleProfile['role_arn']; - var roleSessionName = roleProfile['role_session_name']; - var externalId = roleProfile['external_id']; - var sourceProfileName = roleProfile['source_profile']; - - if (!sourceProfileName) { - throw AWS.util.error( - new Error('source_profile is not set in ' + this.filename + - ' using profile ' + this.profile), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - - var sourceProfile = creds[sourceProfileName]; - - if (typeof sourceProfile !== 'object') { - throw AWS.util.error( - new Error('source_profile ' + sourceProfileName + ' set in ' + - this.filename + ' using profile ' + this.profile + - ' does not exist'), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - - var sourceCredentials = { - accessKeyId: sourceProfile['aws_access_key_id'], - secretAccessKey: sourceProfile['aws_secret_access_key'], - sessionToken: sourceProfile['aws_session_token'] - }; - - if (!sourceCredentials.accessKeyId || !sourceCredentials.secretAccessKey) { - throw AWS.util.error( - new Error('Credentials not set in source_profile ' + - sourceProfileName + ' set in ' + this.filename + - ' using profile ' + this.profile), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - - var sts = new STS({ - credentials: new AWS.Credentials(sourceCredentials) - }); - - var roleParams = { - RoleArn: roleArn, - RoleSessionName: roleSessionName || 'aws-sdk-js-' + Date.now() - }; - - if (externalId) { - roleParams.ExternalId = externalId; - } - - sts.assumeRole(roleParams, function (err, data) { - if (err) { - callback(err); - return; - } - - self.accessKeyId = data.Credentials.AccessKeyId; - self.secretAccessKey = data.Credentials.SecretAccessKey; - self.sessionToken = data.Credentials.SessionToken; - self.expireTime = data.Credentials.Expiration; - callback(); - }); - }, - - /** - * @api private - */ - loadDefaultFilename: function loadDefaultFilename() { - var env = process.env; - var home = env.HOME || - env.USERPROFILE || - (env.HOMEPATH ? ((env.HOMEDRIVE || 'C:/') + env.HOMEPATH) : null); - if (!home) { - throw AWS.util.error( - new Error('Cannot load credentials, HOME path not set'), - { code: 'SharedIniFileCredentialsProviderFailure' } - ); - } - - this.filename = path.join(home, '.aws', 'credentials'); - } -}); diff --git a/node_modules/aws-sdk/lib/credentials/temporary_credentials.js b/node_modules/aws-sdk/lib/credentials/temporary_credentials.js deleted file mode 100644 index a3e78a1..0000000 --- a/node_modules/aws-sdk/lib/credentials/temporary_credentials.js +++ /dev/null @@ -1,112 +0,0 @@ -var AWS = require('../core'); -var STS = require('../../clients/sts'); - -/** - * Represents temporary credentials retrieved from {AWS.STS}. Without any - * extra parameters, credentials will be fetched from the - * {AWS.STS.getSessionToken} operation. If an IAM role is provided, the - * {AWS.STS.assumeRole} operation will be used to fetch credentials for the - * role instead. - * - * To setup temporary credentials, configure a set of master credentials - * using the standard credentials providers (environment, EC2 instance metadata, - * or from the filesystem), then set the global credentials to a new - * temporary credentials object: - * - * ```javascript - * // Note that environment credentials are loaded by default, - * // the following line is shown for clarity: - * AWS.config.credentials = new AWS.EnvironmentCredentials('AWS'); - * - * // Now set temporary credentials seeded from the master credentials - * AWS.config.credentials = new AWS.TemporaryCredentials(); - * - * // subsequent requests will now use temporary credentials from AWS STS. - * new AWS.S3().listBucket(function(err, data) { ... }); - * ``` - * - * @!attribute masterCredentials - * @return [AWS.Credentials] the master (non-temporary) credentials used to - * get and refresh temporary credentials from AWS STS. - * @note (see constructor) - */ -AWS.TemporaryCredentials = AWS.util.inherit(AWS.Credentials, { - /** - * Creates a new temporary credentials object. - * - * @note In order to create temporary credentials, you first need to have - * "master" credentials configured in {AWS.Config.credentials}. These - * master credentials are necessary to retrieve the temporary credentials, - * as well as refresh the credentials when they expire. - * @param params [map] a map of options that are passed to the - * {AWS.STS.assumeRole} or {AWS.STS.getSessionToken} operations. - * If a `RoleArn` parameter is passed in, credentials will be based on the - * IAM role. - * @example Creating a new credentials object for generic temporary credentials - * AWS.config.credentials = new AWS.TemporaryCredentials(); - * @example Creating a new credentials object for an IAM role - * AWS.config.credentials = new AWS.TemporaryCredentials({ - * RoleArn: 'arn:aws:iam::1234567890:role/TemporaryCredentials', - * }); - * @see AWS.STS.assumeRole - * @see AWS.STS.getSessionToken - */ - constructor: function TemporaryCredentials(params) { - AWS.Credentials.call(this); - this.loadMasterCredentials(); - this.expired = true; - - this.params = params || {}; - if (this.params.RoleArn) { - this.params.RoleSessionName = - this.params.RoleSessionName || 'temporary-credentials'; - } - }, - - /** - * Refreshes credentials using {AWS.STS.assumeRole} or - * {AWS.STS.getSessionToken}, depending on whether an IAM role ARN was passed - * to the credentials {constructor}. - * - * @callback callback function(err) - * Called when the STS service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - var self = this; - self.createClients(); - if (!callback) callback = function(err) { if (err) throw err; }; - - self.service.config.credentials = self.masterCredentials; - var operation = self.params.RoleArn ? - self.service.assumeRole : self.service.getSessionToken; - operation.call(self.service, function (err, data) { - if (!err) { - self.service.credentialsFrom(data, self); - } - callback(err); - }); - }, - - /** - * @api private - */ - loadMasterCredentials: function loadMasterCredentials() { - this.masterCredentials = AWS.config.credentials; - while (this.masterCredentials.masterCredentials) { - this.masterCredentials = this.masterCredentials.masterCredentials; - } - }, - - /** - * @api private - */ - createClients: function() { - this.service = this.service || new STS({params: this.params}); - } - -}); diff --git a/node_modules/aws-sdk/lib/credentials/web_identity_credentials.js b/node_modules/aws-sdk/lib/credentials/web_identity_credentials.js deleted file mode 100644 index e4f6907..0000000 --- a/node_modules/aws-sdk/lib/credentials/web_identity_credentials.js +++ /dev/null @@ -1,96 +0,0 @@ -var AWS = require('../core'); -var STS = require('../../clients/sts'); - -/** - * Represents credentials retrieved from STS Web Identity Federation support. - * - * By default this provider gets credentials using the - * {AWS.STS.assumeRoleWithWebIdentity} service operation. This operation - * requires a `RoleArn` containing the ARN of the IAM trust policy for the - * application for which credentials will be given. In addition, the - * `WebIdentityToken` must be set to the token provided by the identity - * provider. See {constructor} for an example on creating a credentials - * object with proper `RoleArn` and `WebIdentityToken` values. - * - * ## Refreshing Credentials from Identity Service - * - * In addition to AWS credentials expiring after a given amount of time, the - * login token from the identity provider will also expire. Once this token - * expires, it will not be usable to refresh AWS credentials, and another - * token will be needed. The SDK does not manage refreshing of the token value, - * but this can be done through a "refresh token" supported by most identity - * providers. Consult the documentation for the identity provider for refreshing - * tokens. Once the refreshed token is acquired, you should make sure to update - * this new token in the credentials object's {params} property. The following - * code will update the WebIdentityToken, assuming you have retrieved an updated - * token from the identity provider: - * - * ```javascript - * AWS.config.credentials.params.WebIdentityToken = updatedToken; - * ``` - * - * Future calls to `credentials.refresh()` will now use the new token. - * - * @!attribute params - * @return [map] the map of params passed to - * {AWS.STS.assumeRoleWithWebIdentity}. To update the token, set the - * `params.WebIdentityToken` property. - * @!attribute data - * @return [map] the raw data response from the call to - * {AWS.STS.assumeRoleWithWebIdentity}. Use this if you want to get - * access to other properties from the response. - */ -AWS.WebIdentityCredentials = AWS.util.inherit(AWS.Credentials, { - /** - * Creates a new credentials object. - * @param (see AWS.STS.assumeRoleWithWebIdentity) - * @example Creating a new credentials object - * AWS.config.credentials = new AWS.WebIdentityCredentials({ - * RoleArn: 'arn:aws:iam::1234567890:role/WebIdentity', - * WebIdentityToken: 'ABCDEFGHIJKLMNOP', // token from identity service - * RoleSessionName: 'web' // optional name, defaults to web-identity - * }); - * @see AWS.STS.assumeRoleWithWebIdentity - */ - constructor: function WebIdentityCredentials(params) { - AWS.Credentials.call(this); - this.expired = true; - this.params = params; - this.params.RoleSessionName = this.params.RoleSessionName || 'web-identity'; - this.data = null; - }, - - /** - * Refreshes credentials using {AWS.STS.assumeRoleWithWebIdentity} - * - * @callback callback function(err) - * Called when the STS service responds (or fails). When - * this callback is called with no error, it means that the credentials - * information has been loaded into the object (as the `accessKeyId`, - * `secretAccessKey`, and `sessionToken` properties). - * @param err [Error] if an error occurred, this value will be filled - * @see get - */ - refresh: function refresh(callback) { - var self = this; - self.createClients(); - if (!callback) callback = function(err) { if (err) throw err; }; - - self.service.assumeRoleWithWebIdentity(function (err, data) { - self.data = null; - if (!err) { - self.data = data; - self.service.credentialsFrom(data, self); - } - callback(err); - }); - }, - - /** - * @api private - */ - createClients: function() { - this.service = this.service || new STS({params: this.params}); - } - -}); diff --git a/node_modules/aws-sdk/lib/dynamodb/converter.js b/node_modules/aws-sdk/lib/dynamodb/converter.js deleted file mode 100644 index a5e35e3..0000000 --- a/node_modules/aws-sdk/lib/dynamodb/converter.js +++ /dev/null @@ -1,96 +0,0 @@ -var util = require('../core').util; -var typeOf = require('./types').typeOf; -var DynamoDBSet = require('./set'); - -function convertInput(data) { - if (typeOf(data) === 'Object') { - var map = {M: {}}; - for (var key in data) { - map['M'][key] = convertInput(data[key]); - } - return map; - } else if (typeOf(data) === 'Array') { - var list = {L: []}; - for (var i = 0; i < data.length; i++) { - list['L'].push(convertInput(data[i])); - } - return list; - } else if (typeOf(data) === 'Set') { - return formatSet(data); - } else if (typeOf(data) === 'String') { - return { 'S': data }; - } else if (typeOf(data) === 'Number') { - return { 'N': data.toString() }; - } else if (typeOf(data) === 'Binary') { - return { 'B': data }; - } else if (typeOf(data) === 'Boolean') { - return {'BOOL': data}; - } else if (typeOf(data) === 'null') { - return {'NULL': true}; - } -} - -function formatSet(data) { - var map = {}; - switch (data.type) { - case 'String': map['SS'] = data.values; break; - case 'Binary': map['BS'] = data.values; break; - case 'Number': map['NS'] = data.values.map(function (value) { - return value.toString(); - }); - } - return map; -} - -function convertOutput(data) { - var list, map, i; - for (var type in data) { - var values = data[type]; - if (type === 'M') { - map = {}; - for (var key in values) { - map[key] = convertOutput(values[key]); - } - return map; - } else if (type === 'L') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(convertOutput(values[i])); - } - return list; - } else if (type === 'SS') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(values[i] + ''); - } - return new DynamoDBSet(list); - } else if (type === 'NS') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(Number(values[i])); - } - return new DynamoDBSet(list); - } else if (type === 'BS') { - list = []; - for (i = 0; i < values.length; i++) { - list.push(new util.Buffer(values[i])); - } - return new DynamoDBSet(list); - } else if (type === 'S') { - return values + ''; - } else if (type === 'N') { - return Number(values); - } else if (type === 'B') { - return new util.Buffer(values); - } else if (type === 'BOOL') { - return (values === 'true' || values === 'TRUE' || values === true); - } else if (type === 'NULL') { - return null; - } - } -} - -module.exports = { - input: convertInput, - output: convertOutput -}; diff --git a/node_modules/aws-sdk/lib/dynamodb/document_client.js b/node_modules/aws-sdk/lib/dynamodb/document_client.js deleted file mode 100644 index f3f9756..0000000 --- a/node_modules/aws-sdk/lib/dynamodb/document_client.js +++ /dev/null @@ -1,519 +0,0 @@ -var AWS = require('../core'); -var Translator = require('./translator'); -var DynamoDBSet = require('./set'); - -/** - * The document client simplifies working with items in Amazon DynamoDB - * by abstracting away the notion of attribute values. This abstraction - * annotates native JavaScript types supplied as input parameters, as well - * as converts annotated response data to native JavaScript types. - * - * ## Marshalling Input and Unmarshalling Response Data - * - * The document client affords developers the use of native JavaScript types - * instead of `AttributeValue`s to simplify the JavaScript development - * experience with Amazon DynamoDB. JavaScript objects passed in as parameters - * are marshalled into `AttributeValue` shapes required by Amazon DynamoDB. - * Responses from DynamoDB are unmarshalled into plain JavaScript objects - * by the `DocumentClient`. The `DocumentClient`, does not accept - * `AttributeValue`s in favor of native JavaScript types. - * - * | JavaScript Type | DynamoDB AttributeValue | - * |:----------------------------------------------------------------------:|-------------------------| - * | String | S | - * | Number | N | - * | Boolean | BOOL | - * | null | NULL | - * | Array | L | - * | Object | M | - * | Buffer, File, Blob, ArrayBuffer, DataView, and JavaScript typed arrays | B | - * - * ## Support for Sets - * - * The `DocumentClient` offers a convenient way to create sets from - * JavaScript Arrays. The type of set is inferred from the first element - * in the array. DynamoDB supports string, number, and binary sets. To - * learn more about supported types see the - * [Amazon DynamoDB Data Model Documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html) - * For more information see {AWS.DynamoDB.DocumentClient.createSet} - * - */ -AWS.DynamoDB.DocumentClient = AWS.util.inherit({ - - /** - * @api private - */ - operations: { - batchGetItem: 'batchGet', - batchWriteItem: 'batchWrite', - putItem: 'put', - getItem: 'get', - deleteItem: 'delete', - updateItem: 'update', - scan: 'scan', - query: 'query' - }, - - /** - * Creates a DynamoDB document client with a set of configuration options. - * - * @option options params [map] An optional map of parameters to bind to every - * request sent by this service object. - * @option options service [AWS.DynamoDB] An optional pre-configured instance - * of the AWS.DynamoDB service object to use for requests. The object may - * bound parameters used by the document client. - * @see AWS.DynamoDB.constructor - * - */ - constructor: function DocumentClient(options) { - var self = this; - self.options = options || {}; - self.configure(self.options); - }, - - /** - * @api private - */ - configure: function configure(options) { - var self = this; - self.service = options.service; - self.bindServiceObject(options); - self.attrValue = - self.service.api.operations.putItem.input.members.Item.value.shape; - }, - - /** - * @api private - */ - bindServiceObject: function bindServiceObject(options) { - var self = this; - options = options || {}; - - if (!self.service) { - self.service = new AWS.DynamoDB(options); - } else { - var config = AWS.util.copy(self.service.config); - self.service = new self.service.constructor.__super__(config); - self.service.config.params = - AWS.util.merge(self.service.config.params || {}, options.params); - } - }, - - /** - * Returns the attributes of one or more items from one or more tables - * by delegating to `AWS.DynamoDB.batchGetItem()`. - * - * Supply the same parameters as {AWS.DynamoDB.batchGetItem} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.batchGetItem - * @example Get items from multiple tables - * var params = { - * RequestItems: { - * 'Table-1': { - * Keys: [ - * { - * HashKey: 'haskey', - * NumberRangeKey: 1 - * } - * ] - * }, - * 'Table-2': { - * Keys: [ - * { foo: 'bar' }, - * ] - * } - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.batchGet(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - batchGet: function(params, callback) { - var self = this; - var request = self.service.batchGetItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Puts or deletes multiple items in one or more tables by delegating - * to `AWS.DynamoDB.batchWriteItem()`. - * - * Supply the same parameters as {AWS.DynamoDB.batchWriteItem} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.batchWriteItem - * @example Write to and delete from a table - * var params = { - * RequestItems: { - * 'Table-1': [ - * { - * DeleteRequest: { - * Key: { HashKey: 'someKey' } - * } - * }, - * { - * PutRequest: { - * Item: { - * HashKey: 'anotherKey', - * NumAttribute: 1, - * BoolAttribute: true, - * ListAttribute: [1, 'two', false], - * MapAttribute: { foo: 'bar' } - * } - * } - * } - * ] - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.batchWrite(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - batchWrite: function(params, callback) { - var self = this; - var request = self.service.batchWriteItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Deletes a single item in a table by primary key by delegating to - * `AWS.DynamoDB.deleteItem()` - * - * Supply the same parameters as {AWS.DynamoDB.deleteItem} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.deleteItem - * @example Delete an item from a table - * var params = { - * TableName : 'Table', - * Key: { - * HashKey: 'hashkey', - * NumberRangeKey: 1 - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.delete(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - delete: function(params, callback) { - var self = this; - var request = self.service.deleteItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Returns a set of attributes for the item with the given primary key - * by delegating to `AWS.DynamoDB.getItem()`. - * - * Supply the same parameters as {AWS.DynamoDB.getItem} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.getItem - * @example Get an item from a table - * var params = { - * TableName : 'Table', - * Key: { - * HashKey: 'hashkey' - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.get(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - get: function(params, callback) { - var self = this; - var request = self.service.getItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Creates a new item, or replaces an old item with a new item by - * delegating to `AWS.DynamoDB.putItem()`. - * - * Supply the same parameters as {AWS.DynamoDB.putItem} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.putItem - * @example Create a new item in a table - * var params = { - * TableName : 'Table', - * Item: { - * HashKey: 'haskey', - * NumAttribute: 1, - * BoolAttribute: true, - * ListAttribute: [1, 'two', false], - * MapAttribute: { foo: 'bar'}, - * NullAttribute: null - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.put(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - put: function put(params, callback) { - var self = this; - var request = self.service.putItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Edits an existing item's attributes, or adds a new item to the table if - * it does not already exist by delegating to `AWS.DynamoDB.updateItem()`. - * - * Supply the same parameters as {AWS.DynamoDB.updateItem} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.updateItem - * @example Update an item with expressions - * var params = { - * TableName: 'Table', - * Key: { HashKey : 'hashkey' }, - * UpdateExpression: 'set #a = :x + :y', - * ConditionExpression: '#a < :MAX', - * ExpressionAttributeNames: {'#a' : 'Sum'}, - * ExpressionAttributeValues: { - * ':x' : 20, - * ':y' : 45, - * ':MAX' : 100, - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.update(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - update: function(params, callback) { - var self = this; - var request = self.service.updateItem(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Returns one or more items and item attributes by accessing every item - * in a table or a secondary index. - * - * Supply the same parameters as {AWS.DynamoDB.scan} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.scan - * @example Scan the table with a filter expression - * var params = { - * TableName : 'Table', - * FilterExpression : 'Year = :this_year', - * ExpressionAttributeValues : {':this_year' : 2015} - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.scan(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - scan: function(params, callback) { - var self = this; - var request = self.service.scan(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Directly access items from a table by primary key or a secondary index. - * - * Supply the same parameters as {AWS.DynamoDB.query} with - * `AttributeValue`s substituted by native JavaScript types. - * - * @see AWS.DynamoDB.query - * @example Query an index - * var params = { - * TableName: 'Table', - * IndexName: 'Index', - * KeyConditionExpression: 'HashKey = :hkey and RangeKey > :rkey', - * ExpressionAttributeValues: { - * ':hkey': 'key', - * ':rkey': 2015 - * } - * }; - * - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * docClient.query(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - query: function(params, callback) { - var self = this; - var request = self.service.query(params); - self.setupRequest(request); - self.setupResponse(request); - if (typeof callback === 'function') { - request.send(callback); - } - return request; - }, - - /** - * Creates a set of elements inferring the type of set from - * the type of the first element. Amazon DynamoDB currently supports - * the number sets, string sets, and binary sets. For more information - * about DynamoDB data types see the documentation on the - * [Amazon DynamoDB Data Model](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DataModel.html#DataModel.DataTypes). - * - * @param list [Array] Collection to represent your DynamoDB Set - * @param options [map] - * * **validate** [Boolean] set to true if you want to validate the type - * of each element in the set. Defaults to `false`. - * @example Creating a number set - * var docClient = new AWS.DynamoDB.DocumentClient(); - * - * var params = { - * Item: { - * hashkey: 'hashkey' - * numbers: docClient.createSet([1, 2, 3]); - * } - * }; - * - * docClient.put(params, function(err, data) { - * if (err) console.log(err); - * else console.log(data); - * }); - * - */ - createSet: function(list, options) { - options = options || {}; - return new DynamoDBSet(list, options); - }, - - /** - * @api private - */ - getTranslator: function() { - return new Translator({attrValue: this.attrValue}); - }, - - /** - * @api private - */ - setupRequest: function setupRequest(request) { - var self = this; - var translator = self.getTranslator(); - var operation = request.operation; - var inputShape = request.service.api.operations[operation].input; - request._events.validate.unshift(function(req) { - req.rawParams = AWS.util.copy(req.params); - req.params = translator.translateInput(req.rawParams, inputShape); - }); - }, - - /** - * @api private - */ - setupResponse: function setupResponse(request) { - var self = this; - var translator = self.getTranslator(); - var outputShape = self.service.api.operations[request.operation].output; - request.on('extractData', function(response) { - response.data = translator.translateOutput(response.data, outputShape); - }); - - var response = request.response; - response.nextPage = function(cb) { - var resp = this; - var req = resp.request; - var config; - var service = req.service; - var operation = req.operation; - try { - config = service.paginationConfig(operation, true); - } catch (e) { resp.error = e; } - - if (!resp.hasNextPage()) { - if (cb) cb(resp.error, null); - else if (resp.error) throw resp.error; - return null; - } - - var params = AWS.util.copy(req.rawParams); - if (!resp.nextPageTokens) { - return cb ? cb(null, null) : null; - } else { - var inputTokens = config.inputToken; - if (typeof inputTokens === 'string') inputTokens = [inputTokens]; - for (var i = 0; i < inputTokens.length; i++) { - params[inputTokens[i]] = resp.nextPageTokens[i]; - } - return self[operation](params, cb); - } - }; - } - -}); - -module.exports = AWS.DynamoDB.DocumentClient; diff --git a/node_modules/aws-sdk/lib/dynamodb/set.js b/node_modules/aws-sdk/lib/dynamodb/set.js deleted file mode 100644 index e07d555..0000000 --- a/node_modules/aws-sdk/lib/dynamodb/set.js +++ /dev/null @@ -1,53 +0,0 @@ -var util = require('../core').util; -var typeOf = require('./types').typeOf; - -var DynamoDBSet = util.inherit({ - - constructor: function Set(list, options) { - options = options || {}; - this.initialize(list, options.validate); - }, - - initialize: function(list, validate) { - var self = this; - self.values = [].concat(list); - self.detectType(); - if (validate) { - self.validate(); - } - }, - - detectType: function() { - var self = this; - var value = self.values[0]; - if (typeOf(value) === 'String') { - self.type = 'String'; - } else if (typeOf(value) === 'Number') { - self.type = 'Number'; - } else if (typeOf(value) === 'Binary') { - self.type = 'Binary'; - } else { - throw util.error(new Error(), { - code: 'InvalidSetType', - message: 'Sets can contain string, number, or binary values' - }); - } - }, - - validate: function() { - var self = this; - var length = self.values.length; - var values = self.values; - for (var i = 0; i < length; i++) { - if (typeOf(values[i]) !== self.type) { - throw util.error(new Error(), { - code: 'InvalidType', - message: self.type + ' Set contains ' + typeOf(values[i]) + ' value' - }); - } - } - } - -}); - -module.exports = DynamoDBSet; diff --git a/node_modules/aws-sdk/lib/dynamodb/translator.js b/node_modules/aws-sdk/lib/dynamodb/translator.js deleted file mode 100644 index 116c095..0000000 --- a/node_modules/aws-sdk/lib/dynamodb/translator.js +++ /dev/null @@ -1,79 +0,0 @@ -var util = require('../core').util; -var convert = require('./converter'); - -var Translator = function(options) { - options = options || {}; - this.attrValue = options.attrValue; -}; - -Translator.prototype.translateInput = function(value, shape) { - this.mode = 'input'; - return this.translate(value, shape); -}; - -Translator.prototype.translateOutput = function(value, shape) { - this.mode = 'output'; - return this.translate(value, shape); -}; - -Translator.prototype.translate = function(value, shape) { - var self = this; - if (!shape || value === undefined) return undefined; - - if (shape.shape === self.attrValue) { - return convert[self.mode](value); - } - switch (shape.type) { - case 'structure': return self.translateStructure(value, shape); - case 'map': return self.translateMap(value, shape); - case 'list': return self.translateList(value, shape); - default: return self.translateScalar(value, shape); - } -}; - -Translator.prototype.translateStructure = function(structure, shape) { - var self = this; - if (structure == null) return undefined; - - var struct = {}; - util.each(structure, function(name, value) { - var memberShape = shape.members[name]; - if (memberShape) { - var result = self.translate(value, memberShape); - if (result !== undefined) struct[name] = result; - } - }); - return struct; -}; - -Translator.prototype.translateList = function(list, shape) { - var self = this; - if (list == null) return undefined; - - var out = []; - util.arrayEach(list, function(value) { - var result = self.translate(value, shape.member); - if (result === undefined) out.push(null); - else out.push(result); - }); - return out; -}; - -Translator.prototype.translateMap = function(map, shape) { - var self = this; - if (map == null) return undefined; - - var out = {}; - util.each(map, function(key, value) { - var result = self.translate(value, shape.value); - if (result === undefined) out[key] = null; - else out[key] = result; - }); - return out; -}; - -Translator.prototype.translateScalar = function(value, shape) { - return shape.toType(value); -}; - -module.exports = Translator; diff --git a/node_modules/aws-sdk/lib/dynamodb/types.js b/node_modules/aws-sdk/lib/dynamodb/types.js deleted file mode 100644 index 0a0b1d3..0000000 --- a/node_modules/aws-sdk/lib/dynamodb/types.js +++ /dev/null @@ -1,40 +0,0 @@ -var util = require('../core').util; - -function typeOf(data) { - if (data === null && typeof data === 'object') { - return 'null'; - } else if (data !== undefined && isBinary(data)) { - return 'Binary'; - } else if (data !== undefined && data.constructor) { - return util.typeName(data.constructor); - } else { - return 'undefined'; - } -} - -function isBinary(data) { - var types = [ - 'Buffer', 'File', 'Blob', 'ArrayBuffer', 'DataView', - 'Int8Array', 'Uint8Array', 'Uint8ClampedArray', - 'Int16Array', 'Uint16Array', 'Int32Array', 'Uint32Array', - 'Float32Array', 'Float64Array' - ]; - if (util.isNode()) { - var Stream = util.stream.Stream; - if (util.Buffer.isBuffer(data) || data instanceof Stream) - return true; - } else { - for (var i = 0; i < types.length; i++) { - if (data !== undefined && data.constructor) { - if (util.isType(data, types[i])) return true; - if (util.typeName(data.constructor) === types[i]) return true; - } - } - } - return false; -} - -module.exports = { - typeOf: typeOf, - isBinary: isBinary -}; diff --git a/node_modules/aws-sdk/lib/event_listeners.js b/node_modules/aws-sdk/lib/event_listeners.js deleted file mode 100644 index 8b23891..0000000 --- a/node_modules/aws-sdk/lib/event_listeners.js +++ /dev/null @@ -1,471 +0,0 @@ -var AWS = require('./core'); -var SequentialExecutor = require('./sequential_executor'); - -/** - * The namespace used to register global event listeners for request building - * and sending. - */ -AWS.EventListeners = { - /** - * @!attribute VALIDATE_CREDENTIALS - * A request listener that validates whether the request is being - * sent with credentials. - * Handles the {AWS.Request~validate 'validate' Request event} - * @example Sending a request without validating credentials - * var listener = AWS.EventListeners.Core.VALIDATE_CREDENTIALS; - * request.removeListener('validate', listener); - * @readonly - * @return [Function] - * @!attribute VALIDATE_REGION - * A request listener that validates whether the region is set - * for a request. - * Handles the {AWS.Request~validate 'validate' Request event} - * @example Sending a request without validating region configuration - * var listener = AWS.EventListeners.Core.VALIDATE_REGION; - * request.removeListener('validate', listener); - * @readonly - * @return [Function] - * @!attribute VALIDATE_PARAMETERS - * A request listener that validates input parameters in a request. - * Handles the {AWS.Request~validate 'validate' Request event} - * @example Sending a request without validating parameters - * var listener = AWS.EventListeners.Core.VALIDATE_PARAMETERS; - * request.removeListener('validate', listener); - * @example Disable parameter validation globally - * AWS.EventListeners.Core.removeListener('validate', - * AWS.EventListeners.Core.VALIDATE_REGION); - * @readonly - * @return [Function] - * @!attribute SEND - * A request listener that initiates the HTTP connection for a - * request being sent. Handles the {AWS.Request~send 'send' Request event} - * @example Replacing the HTTP handler - * var listener = AWS.EventListeners.Core.SEND; - * request.removeListener('send', listener); - * request.on('send', function(response) { - * customHandler.send(response); - * }); - * @return [Function] - * @readonly - * @!attribute HTTP_DATA - * A request listener that reads data from the HTTP connection in order - * to build the response data. - * Handles the {AWS.Request~httpData 'httpData' Request event}. - * Remove this handler if you are overriding the 'httpData' event and - * do not want extra data processing and buffering overhead. - * @example Disabling default data processing - * var listener = AWS.EventListeners.Core.HTTP_DATA; - * request.removeListener('httpData', listener); - * @return [Function] - * @readonly - */ - Core: {} /* doc hack */ -}; - -AWS.EventListeners = { - Core: new SequentialExecutor().addNamedListeners(function(add, addAsync) { - addAsync('VALIDATE_CREDENTIALS', 'validate', - function VALIDATE_CREDENTIALS(req, done) { - if (!req.service.api.signatureVersion) return done(); // none - req.service.config.getCredentials(function(err) { - if (err) { - req.response.error = AWS.util.error(err, - {code: 'CredentialsError', message: 'Missing credentials in config'}); - } - done(); - }); - }); - - add('VALIDATE_REGION', 'validate', function VALIDATE_REGION(req) { - if (!req.service.config.region && !req.service.isGlobalEndpoint) { - req.response.error = AWS.util.error(new Error(), - {code: 'ConfigError', message: 'Missing region in config'}); - } - }); - - add('VALIDATE_PARAMETERS', 'validate', function VALIDATE_PARAMETERS(req) { - var rules = req.service.api.operations[req.operation].input; - var validation = req.service.config.paramValidation; - new AWS.ParamValidator(validation).validate(rules, req.params); - }); - - addAsync('COMPUTE_SHA256', 'afterBuild', function COMPUTE_SHA256(req, done) { - req.haltHandlersOnError(); - if (!req.service.api.signatureVersion) return done(); // none - if (req.service.getSignerClass(req) === AWS.Signers.V4) { - var body = req.httpRequest.body || ''; - AWS.util.computeSha256(body, function(err, sha) { - if (err) { - done(err); - } - else { - req.httpRequest.headers['X-Amz-Content-Sha256'] = sha; - done(); - } - }); - } else { - done(); - } - }); - - add('SET_CONTENT_LENGTH', 'afterBuild', function SET_CONTENT_LENGTH(req) { - if (req.httpRequest.headers['Content-Length'] === undefined) { - var length = AWS.util.string.byteLength(req.httpRequest.body); - req.httpRequest.headers['Content-Length'] = length; - } - }); - - add('SET_HTTP_HOST', 'afterBuild', function SET_HTTP_HOST(req) { - req.httpRequest.headers['Host'] = req.httpRequest.endpoint.host; - }); - - add('RESTART', 'restart', function RESTART() { - var err = this.response.error; - if (!err || !err.retryable) return; - - this.httpRequest = new AWS.HttpRequest( - this.service.endpoint, - this.service.region - ); - - if (this.response.retryCount < this.service.config.maxRetries) { - this.response.retryCount++; - } else { - this.response.error = null; - } - }); - - addAsync('SIGN', 'sign', function SIGN(req, done) { - var service = req.service; - if (!service.api.signatureVersion) return done(); // none - - service.config.getCredentials(function (err, credentials) { - if (err) { - req.response.error = err; - return done(); - } - - try { - var date = AWS.util.date.getDate(); - var SignerClass = service.getSignerClass(req); - var signer = new SignerClass(req.httpRequest, - service.api.signingName || service.api.endpointPrefix, - service.config.signatureCache); - signer.setServiceClientId(service._clientId); - - // clear old authorization headers - delete req.httpRequest.headers['Authorization']; - delete req.httpRequest.headers['Date']; - delete req.httpRequest.headers['X-Amz-Date']; - - // add new authorization - signer.addAuthorization(credentials, date); - req.signedAt = date; - } catch (e) { - req.response.error = e; - } - done(); - }); - }); - - add('VALIDATE_RESPONSE', 'validateResponse', function VALIDATE_RESPONSE(resp) { - if (this.service.successfulResponse(resp, this)) { - resp.data = {}; - resp.error = null; - } else { - resp.data = null; - resp.error = AWS.util.error(new Error(), - {code: 'UnknownError', message: 'An unknown error occurred.'}); - } - }); - - addAsync('SEND', 'send', function SEND(resp, done) { - resp.httpResponse._abortCallback = done; - resp.error = null; - resp.data = null; - - function callback(httpResp) { - resp.httpResponse.stream = httpResp; - - httpResp.on('headers', function onHeaders(statusCode, headers) { - resp.request.emit('httpHeaders', [statusCode, headers, resp]); - - if (!resp.httpResponse.streaming) { - if (AWS.HttpClient.streamsApiVersion === 2) { // streams2 API check - httpResp.on('readable', function onReadable() { - var data = httpResp.read(); - if (data !== null) { - resp.request.emit('httpData', [data, resp]); - } - }); - } else { // legacy streams API - httpResp.on('data', function onData(data) { - resp.request.emit('httpData', [data, resp]); - }); - } - } - }); - - httpResp.on('end', function onEnd() { - resp.request.emit('httpDone'); - done(); - }); - } - - function progress(httpResp) { - httpResp.on('sendProgress', function onSendProgress(value) { - resp.request.emit('httpUploadProgress', [value, resp]); - }); - - httpResp.on('receiveProgress', function onReceiveProgress(value) { - resp.request.emit('httpDownloadProgress', [value, resp]); - }); - } - - function error(err) { - resp.error = AWS.util.error(err, { - code: 'NetworkingError', - region: resp.request.httpRequest.region, - hostname: resp.request.httpRequest.endpoint.hostname, - retryable: true - }); - resp.request.emit('httpError', [resp.error, resp], function() { - done(); - }); - } - - function executeSend() { - var http = AWS.HttpClient.getInstance(); - var httpOptions = resp.request.service.config.httpOptions || {}; - try { - var stream = http.handleRequest(resp.request.httpRequest, httpOptions, - callback, error); - progress(stream); - } catch (err) { - error(err); - } - } - - var timeDiff = (AWS.util.date.getDate() - this.signedAt) / 1000; - if (timeDiff >= 60 * 10) { // if we signed 10min ago, re-sign - this.emit('sign', [this], function(err) { - if (err) done(err); - else executeSend(); - }); - } else { - executeSend(); - } - }); - - add('HTTP_HEADERS', 'httpHeaders', - function HTTP_HEADERS(statusCode, headers, resp) { - resp.httpResponse.statusCode = statusCode; - resp.httpResponse.headers = headers; - resp.httpResponse.body = new AWS.util.Buffer(''); - resp.httpResponse.buffers = []; - resp.httpResponse.numBytes = 0; - var dateHeader = headers.date || headers.Date; - if (dateHeader) { - var serverTime = Date.parse(dateHeader); - if (resp.request.service.config.correctClockSkew - && AWS.util.isClockSkewed(serverTime)) { - AWS.util.applyClockOffset(serverTime); - } - } - }); - - add('HTTP_DATA', 'httpData', function HTTP_DATA(chunk, resp) { - if (chunk) { - if (AWS.util.isNode()) { - resp.httpResponse.numBytes += chunk.length; - - var total = resp.httpResponse.headers['content-length']; - var progress = { loaded: resp.httpResponse.numBytes, total: total }; - resp.request.emit('httpDownloadProgress', [progress, resp]); - } - - resp.httpResponse.buffers.push(new AWS.util.Buffer(chunk)); - } - }); - - add('HTTP_DONE', 'httpDone', function HTTP_DONE(resp) { - // convert buffers array into single buffer - if (resp.httpResponse.buffers && resp.httpResponse.buffers.length > 0) { - var body = AWS.util.buffer.concat(resp.httpResponse.buffers); - resp.httpResponse.body = body; - } - delete resp.httpResponse.numBytes; - delete resp.httpResponse.buffers; - }); - - add('FINALIZE_ERROR', 'retry', function FINALIZE_ERROR(resp) { - if (resp.httpResponse.statusCode) { - resp.error.statusCode = resp.httpResponse.statusCode; - if (resp.error.retryable === undefined) { - resp.error.retryable = this.service.retryableError(resp.error, this); - } - } - }); - - add('INVALIDATE_CREDENTIALS', 'retry', function INVALIDATE_CREDENTIALS(resp) { - if (!resp.error) return; - switch (resp.error.code) { - case 'RequestExpired': // EC2 only - case 'ExpiredTokenException': - case 'ExpiredToken': - resp.error.retryable = true; - resp.request.service.config.credentials.expired = true; - } - }); - - add('EXPIRED_SIGNATURE', 'retry', function EXPIRED_SIGNATURE(resp) { - var err = resp.error; - if (!err) return; - if (typeof err.code === 'string' && typeof err.message === 'string') { - if (err.code.match(/Signature/) && err.message.match(/expired/)) { - resp.error.retryable = true; - } - } - }); - - add('CLOCK_SKEWED', 'retry', function CLOCK_SKEWED(resp) { - if (!resp.error) return; - if (this.service.clockSkewError(resp.error) - && this.service.config.correctClockSkew - && AWS.config.isClockSkewed) { - resp.error.retryable = true; - } - }); - - add('REDIRECT', 'retry', function REDIRECT(resp) { - if (resp.error && resp.error.statusCode >= 300 && - resp.error.statusCode < 400 && resp.httpResponse.headers['location']) { - this.httpRequest.endpoint = - new AWS.Endpoint(resp.httpResponse.headers['location']); - this.httpRequest.headers['Host'] = this.httpRequest.endpoint.host; - resp.error.redirect = true; - resp.error.retryable = true; - } - }); - - add('RETRY_CHECK', 'retry', function RETRY_CHECK(resp) { - if (resp.error) { - if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { - resp.error.retryDelay = 0; - } else if (resp.retryCount < resp.maxRetries) { - resp.error.retryDelay = this.service.retryDelays(resp.retryCount) || 0; - } - } - }); - - addAsync('RESET_RETRY_STATE', 'afterRetry', function RESET_RETRY_STATE(resp, done) { - var delay, willRetry = false; - - if (resp.error) { - delay = resp.error.retryDelay || 0; - if (resp.error.retryable && resp.retryCount < resp.maxRetries) { - resp.retryCount++; - willRetry = true; - } else if (resp.error.redirect && resp.redirectCount < resp.maxRedirects) { - resp.redirectCount++; - willRetry = true; - } - } - - if (willRetry) { - resp.error = null; - setTimeout(done, delay); - } else { - done(); - } - }); - }), - - CorePost: new SequentialExecutor().addNamedListeners(function(add) { - add('EXTRACT_REQUEST_ID', 'extractData', AWS.util.extractRequestId); - add('EXTRACT_REQUEST_ID', 'extractError', AWS.util.extractRequestId); - - add('ENOTFOUND_ERROR', 'httpError', function ENOTFOUND_ERROR(err) { - if (err.code === 'NetworkingError' && err.errno === 'ENOTFOUND') { - var message = 'Inaccessible host: `' + err.hostname + - '\'. This service may not be available in the `' + err.region + - '\' region.'; - this.response.error = AWS.util.error(new Error(message), { - code: 'UnknownEndpoint', - region: err.region, - hostname: err.hostname, - retryable: true, - originalError: err - }); - } - }); - }), - - Logger: new SequentialExecutor().addNamedListeners(function(add) { - add('LOG_REQUEST', 'complete', function LOG_REQUEST(resp) { - var req = resp.request; - var logger = req.service.config.logger; - if (!logger) return; - - function buildMessage() { - var time = AWS.util.date.getDate().getTime(); - var delta = (time - req.startTime.getTime()) / 1000; - var ansi = logger.isTTY ? true : false; - var status = resp.httpResponse.statusCode; - var params = require('util').inspect(req.params, true, null); - - var message = ''; - if (ansi) message += '\x1B[33m'; - message += '[AWS ' + req.service.serviceIdentifier + ' ' + status; - message += ' ' + delta.toString() + 's ' + resp.retryCount + ' retries]'; - if (ansi) message += '\x1B[0;1m'; - message += ' ' + AWS.util.string.lowerFirst(req.operation); - message += '(' + params + ')'; - if (ansi) message += '\x1B[0m'; - return message; - } - - var line = buildMessage(); - if (typeof logger.log === 'function') { - logger.log(line); - } else if (typeof logger.write === 'function') { - logger.write(line + '\n'); - } - }); - }), - - Json: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/json'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - Rest: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/rest'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - RestJson: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/rest_json'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - RestXml: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/rest_xml'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }), - - Query: new SequentialExecutor().addNamedListeners(function(add) { - var svc = require('./protocol/query'); - add('BUILD', 'build', svc.buildRequest); - add('EXTRACT_DATA', 'extractData', svc.extractData); - add('EXTRACT_ERROR', 'extractError', svc.extractError); - }) -}; diff --git a/node_modules/aws-sdk/lib/http.js b/node_modules/aws-sdk/lib/http.js deleted file mode 100644 index 394088f..0000000 --- a/node_modules/aws-sdk/lib/http.js +++ /dev/null @@ -1,208 +0,0 @@ -var AWS = require('./core'); -var inherit = AWS.util.inherit; - -/** - * The endpoint that a service will talk to, for example, - * `'https://ec2.ap-southeast-1.amazonaws.com'`. If - * you need to override an endpoint for a service, you can - * set the endpoint on a service by passing the endpoint - * object with the `endpoint` option key: - * - * ```javascript - * var ep = new AWS.Endpoint('awsproxy.example.com'); - * var s3 = new AWS.S3({endpoint: ep}); - * s3.service.endpoint.hostname == 'awsproxy.example.com' - * ``` - * - * Note that if you do not specify a protocol, the protocol will - * be selected based on your current {AWS.config} configuration. - * - * @!attribute protocol - * @return [String] the protocol (http or https) of the endpoint - * URL - * @!attribute hostname - * @return [String] the host portion of the endpoint, e.g., - * example.com - * @!attribute host - * @return [String] the host portion of the endpoint including - * the port, e.g., example.com:80 - * @!attribute port - * @return [Integer] the port of the endpoint - * @!attribute href - * @return [String] the full URL of the endpoint - */ -AWS.Endpoint = inherit({ - - /** - * @overload Endpoint(endpoint) - * Constructs a new endpoint given an endpoint URL. If the - * URL omits a protocol (http or https), the default protocol - * set in the global {AWS.config} will be used. - * @param endpoint [String] the URL to construct an endpoint from - */ - constructor: function Endpoint(endpoint, config) { - AWS.util.hideProperties(this, ['slashes', 'auth', 'hash', 'search', 'query']); - - if (typeof endpoint === 'undefined' || endpoint === null) { - throw new Error('Invalid endpoint: ' + endpoint); - } else if (typeof endpoint !== 'string') { - return AWS.util.copy(endpoint); - } - - if (!endpoint.match(/^http/)) { - var useSSL = config && config.sslEnabled !== undefined ? - config.sslEnabled : AWS.config.sslEnabled; - endpoint = (useSSL ? 'https' : 'http') + '://' + endpoint; - } - - AWS.util.update(this, AWS.util.urlParse(endpoint)); - - // Ensure the port property is set as an integer - if (this.port) { - this.port = parseInt(this.port, 10); - } else { - this.port = this.protocol === 'https:' ? 443 : 80; - } - } - -}); - -/** - * The low level HTTP request object, encapsulating all HTTP header - * and body data sent by a service request. - * - * @!attribute method - * @return [String] the HTTP method of the request - * @!attribute path - * @return [String] the path portion of the URI, e.g., - * "/list/?start=5&num=10" - * @!attribute headers - * @return [map] - * a map of header keys and their respective values - * @!attribute body - * @return [String] the request body payload - * @!attribute endpoint - * @return [AWS.Endpoint] the endpoint for the request - * @!attribute region - * @api private - * @return [String] the region, for signing purposes only. - */ -AWS.HttpRequest = inherit({ - - /** - * @api private - */ - constructor: function HttpRequest(endpoint, region, customUserAgent) { - endpoint = new AWS.Endpoint(endpoint); - this.method = 'POST'; - this.path = endpoint.path || '/'; - this.headers = {}; - this.body = ''; - this.endpoint = endpoint; - this.region = region; - this.setUserAgent(customUserAgent); - }, - - /** - * @api private - */ - setUserAgent: function setUserAgent(customUserAgent) { - var prefix = AWS.util.isBrowser() ? 'X-Amz-' : ''; - var customSuffix = ''; - if (typeof customUserAgent === 'string' && customUserAgent) { - customSuffix += ' ' + customUserAgent; - } - this.headers[prefix + 'User-Agent'] = AWS.util.userAgent() + customSuffix; - }, - - /** - * @return [String] the part of the {path} excluding the - * query string - */ - pathname: function pathname() { - return this.path.split('?', 1)[0]; - }, - - /** - * @return [String] the query string portion of the {path} - */ - search: function search() { - var query = this.path.split('?', 2)[1]; - if (query) { - query = AWS.util.queryStringParse(query); - return AWS.util.queryParamsToString(query); - } - return ''; - } - -}); - -/** - * The low level HTTP response object, encapsulating all HTTP header - * and body data returned from the request. - * - * @!attribute statusCode - * @return [Integer] the HTTP status code of the response (e.g., 200, 404) - * @!attribute headers - * @return [map] - * a map of response header keys and their respective values - * @!attribute body - * @return [String] the response body payload - * @!attribute [r] streaming - * @return [Boolean] whether this response is being streamed at a low-level. - * Defaults to `false` (buffered reads). Do not modify this manually, use - * {createUnbufferedStream} to convert the stream to unbuffered mode - * instead. - */ -AWS.HttpResponse = inherit({ - - /** - * @api private - */ - constructor: function HttpResponse() { - this.statusCode = undefined; - this.headers = {}; - this.body = undefined; - this.streaming = false; - this.stream = null; - }, - - /** - * Disables buffering on the HTTP response and returns the stream for reading. - * @return [Stream, XMLHttpRequest, null] the underlying stream object. - * Use this object to directly read data off of the stream. - * @note This object is only available after the {AWS.Request~httpHeaders} - * event has fired. This method must be called prior to - * {AWS.Request~httpData}. - * @example Taking control of a stream - * request.on('httpHeaders', function(statusCode, headers) { - * if (statusCode < 300) { - * if (headers.etag === 'xyz') { - * // pipe the stream, disabling buffering - * var stream = this.response.httpResponse.createUnbufferedStream(); - * stream.pipe(process.stdout); - * } else { // abort this request and set a better error message - * this.abort(); - * this.response.error = new Error('Invalid ETag'); - * } - * } - * }).send(console.log); - */ - createUnbufferedStream: function createUnbufferedStream() { - this.streaming = true; - return this.stream; - } -}); - - -AWS.HttpClient = inherit({}); - -/** - * @api private - */ -AWS.HttpClient.getInstance = function getInstance() { - if (this.singleton === undefined) { - this.singleton = new this(); - } - return this.singleton; -}; diff --git a/node_modules/aws-sdk/lib/http/node.js b/node_modules/aws-sdk/lib/http/node.js deleted file mode 100644 index 644f993..0000000 --- a/node_modules/aws-sdk/lib/http/node.js +++ /dev/null @@ -1,169 +0,0 @@ -var AWS = require('../core'); -var Stream = AWS.util.stream.Stream; -var TransformStream = AWS.util.stream.Transform; -var ReadableStream = AWS.util.stream.Readable; -require('../http'); - -/** - * @api private - */ -AWS.NodeHttpClient = AWS.util.inherit({ - handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { - var self = this; - var cbAlreadyCalled = false; - var endpoint = httpRequest.endpoint; - var pathPrefix = ''; - if (!httpOptions) httpOptions = {}; - if (httpOptions.proxy) { - pathPrefix = endpoint.protocol + '//' + endpoint.hostname; - if (endpoint.port !== 80 && endpoint.port !== 443) { - pathPrefix += ':' + endpoint.port; - } - endpoint = new AWS.Endpoint(httpOptions.proxy); - } - - var useSSL = endpoint.protocol === 'https:'; - var http = useSSL ? require('https') : require('http'); - var options = { - host: endpoint.hostname, - port: endpoint.port, - method: httpRequest.method, - headers: httpRequest.headers, - path: pathPrefix + httpRequest.path - }; - - if (useSSL && !httpOptions.agent) { - options.agent = this.sslAgent(); - } - - AWS.util.update(options, httpOptions); - delete options.proxy; // proxy isn't an HTTP option - delete options.timeout; // timeout isn't an HTTP option - - var stream = http.request(options, function (httpResp) { - if (cbAlreadyCalled) return; cbAlreadyCalled = true; - - callback(httpResp); - httpResp.emit('headers', httpResp.statusCode, httpResp.headers); - }); - httpRequest.stream = stream; // attach stream to httpRequest - - // timeout support - stream.setTimeout(httpOptions.timeout || 0, function() { - if (cbAlreadyCalled) return; cbAlreadyCalled = true; - - var msg = 'Connection timed out after ' + httpOptions.timeout + 'ms'; - errCallback(AWS.util.error(new Error(msg), {code: 'TimeoutError'})); - stream.abort(); - }); - - stream.on('error', function() { - if (cbAlreadyCalled) return; cbAlreadyCalled = true; - errCallback.apply(this, arguments); - }); - - var expect = httpRequest.headers.Expect || httpRequest.headers.expect; - if (expect === '100-continue') { - stream.on('continue', function() { - self.writeBody(stream, httpRequest); - }); - } else { - this.writeBody(stream, httpRequest); - } - - return stream; - }, - - writeBody: function writeBody(stream, httpRequest) { - var body = httpRequest.body; - var totalBytes = parseInt(httpRequest.headers['Content-Length'], 10); - - if (body instanceof Stream) { - // For progress support of streaming content - - // pipe the data through a transform stream to emit 'sendProgress' events - var progressStream = this.progressStream(stream, totalBytes); - if (progressStream) { - body.pipe(progressStream).pipe(stream); - } else { - body.pipe(stream); - } - } else if (body) { - // The provided body is a buffer/string and is already fully available in memory - - // For performance it's best to send it as a whole by calling stream.end(body), - // Callers expect a 'sendProgress' event which is best emitted once - // the http request stream has been fully written and all data flushed. - // The use of totalBytes is important over body.length for strings where - // length is char length and not byte length. - stream.once('finish', function() { - stream.emit('sendProgress', { - loaded: totalBytes, - total: totalBytes - }); - }); - stream.end(body); - } else { - // no request body - stream.end(); - } - }, - - sslAgent: function sslAgent() { - var https = require('https'); - - if (!AWS.NodeHttpClient.sslAgent) { - AWS.NodeHttpClient.sslAgent = new https.Agent({rejectUnauthorized: true}); - AWS.NodeHttpClient.sslAgent.setMaxListeners(0); - - // delegate maxSockets to globalAgent, set a default limit of 50 if current value is Infinity. - // Users can bypass this default by supplying their own Agent as part of SDK configuration. - Object.defineProperty(AWS.NodeHttpClient.sslAgent, 'maxSockets', { - enumerable: true, - get: function() { - var defaultMaxSockets = 50; - var globalAgent = https.globalAgent; - if (globalAgent && globalAgent.maxSockets !== Infinity && typeof globalAgent.maxSockets === 'number') { - return globalAgent.maxSockets; - } - return defaultMaxSockets; - } - }); - } - return AWS.NodeHttpClient.sslAgent; - }, - - progressStream: function progressStream(stream, totalBytes) { - if (typeof TransformStream === 'undefined') { - // for node 0.8 there is no streaming progress - return; - } - var loadedBytes = 0; - var reporter = new TransformStream(); - reporter._transform = function(chunk, encoding, callback) { - if (chunk) { - loadedBytes += chunk.length; - stream.emit('sendProgress', { - loaded: loadedBytes, - total: totalBytes - }); - } - callback(null, chunk); - }; - return reporter; - }, - - emitter: null -}); - -/** - * @!ignore - */ - -/** - * @api private - */ -AWS.HttpClient.prototype = AWS.NodeHttpClient.prototype; - -/** - * @api private - */ -AWS.HttpClient.streamsApiVersion = ReadableStream ? 2 : 1; diff --git a/node_modules/aws-sdk/lib/http/xhr.js b/node_modules/aws-sdk/lib/http/xhr.js deleted file mode 100644 index 9fc80a7..0000000 --- a/node_modules/aws-sdk/lib/http/xhr.js +++ /dev/null @@ -1,122 +0,0 @@ -var AWS = require('../core'); -var EventEmitter = require('events').EventEmitter; -require('../http'); - -/** - * @api private - */ -AWS.XHRClient = AWS.util.inherit({ - handleRequest: function handleRequest(httpRequest, httpOptions, callback, errCallback) { - var self = this; - var endpoint = httpRequest.endpoint; - var emitter = new EventEmitter(); - var href = endpoint.protocol + '//' + endpoint.hostname; - if (endpoint.port !== 80 && endpoint.port !== 443) { - href += ':' + endpoint.port; - } - href += httpRequest.path; - - var xhr = new XMLHttpRequest(), headersEmitted = false; - httpRequest.stream = xhr; - - xhr.addEventListener('readystatechange', function() { - try { - if (xhr.status === 0) return; // 0 code is invalid - } catch (e) { return; } - - if (this.readyState >= this.HEADERS_RECEIVED && !headersEmitted) { - try { xhr.responseType = 'arraybuffer'; } catch (e) {} - emitter.statusCode = xhr.status; - emitter.headers = self.parseHeaders(xhr.getAllResponseHeaders()); - emitter.emit('headers', emitter.statusCode, emitter.headers); - headersEmitted = true; - } - if (this.readyState === this.DONE) { - self.finishRequest(xhr, emitter); - } - }, false); - xhr.upload.addEventListener('progress', function (evt) { - emitter.emit('sendProgress', evt); - }); - xhr.addEventListener('progress', function (evt) { - emitter.emit('receiveProgress', evt); - }, false); - xhr.addEventListener('timeout', function () { - errCallback(AWS.util.error(new Error('Timeout'), {code: 'TimeoutError'})); - }, false); - xhr.addEventListener('error', function () { - errCallback(AWS.util.error(new Error('Network Failure'), { - code: 'NetworkingError' - })); - }, false); - - callback(emitter); - xhr.open(httpRequest.method, href, httpOptions.xhrAsync !== false); - AWS.util.each(httpRequest.headers, function (key, value) { - if (key !== 'Content-Length' && key !== 'User-Agent' && key !== 'Host') { - xhr.setRequestHeader(key, value); - } - }); - - if (httpOptions.timeout && httpOptions.xhrAsync !== false) { - xhr.timeout = httpOptions.timeout; - } - - if (httpOptions.xhrWithCredentials) { - xhr.withCredentials = true; - } - - try { - xhr.send(httpRequest.body); - } catch (err) { - if (httpRequest.body && typeof httpRequest.body.buffer === 'object') { - xhr.send(httpRequest.body.buffer); // send ArrayBuffer directly - } else { - throw err; - } - } - - return emitter; - }, - - parseHeaders: function parseHeaders(rawHeaders) { - var headers = {}; - AWS.util.arrayEach(rawHeaders.split(/\r?\n/), function (line) { - var key = line.split(':', 1)[0]; - var value = line.substring(key.length + 2); - if (key.length > 0) headers[key.toLowerCase()] = value; - }); - return headers; - }, - - finishRequest: function finishRequest(xhr, emitter) { - var buffer; - if (xhr.responseType === 'arraybuffer' && xhr.response) { - var ab = xhr.response; - buffer = new AWS.util.Buffer(ab.byteLength); - var view = new Uint8Array(ab); - for (var i = 0; i < buffer.length; ++i) { - buffer[i] = view[i]; - } - } - - try { - if (!buffer && typeof xhr.responseText === 'string') { - buffer = new AWS.util.Buffer(xhr.responseText); - } - } catch (e) {} - - if (buffer) emitter.emit('data', buffer); - emitter.emit('end'); - } -}); - -/** - * @api private - */ -AWS.HttpClient.prototype = AWS.XHRClient.prototype; - -/** - * @api private - */ -AWS.HttpClient.streamsApiVersion = 1; diff --git a/node_modules/aws-sdk/lib/json/builder.js b/node_modules/aws-sdk/lib/json/builder.js deleted file mode 100644 index 53cb9eb..0000000 --- a/node_modules/aws-sdk/lib/json/builder.js +++ /dev/null @@ -1,56 +0,0 @@ -var util = require('../util'); - -function JsonBuilder() { } - -JsonBuilder.prototype.build = function(value, shape) { - return JSON.stringify(translate(value, shape)); -}; - -function translate(value, shape) { - if (!shape || value === undefined || value === null) return undefined; - - switch (shape.type) { - case 'structure': return translateStructure(value, shape); - case 'map': return translateMap(value, shape); - case 'list': return translateList(value, shape); - default: return translateScalar(value, shape); - } -} - -function translateStructure(structure, shape) { - var struct = {}; - util.each(structure, function(name, value) { - var memberShape = shape.members[name]; - if (memberShape) { - if (memberShape.location !== 'body') return; - var locationName = memberShape.isLocationName ? memberShape.name : name; - var result = translate(value, memberShape); - if (result !== undefined) struct[locationName] = result; - } - }); - return struct; -} - -function translateList(list, shape) { - var out = []; - util.arrayEach(list, function(value) { - var result = translate(value, shape.member); - if (result !== undefined) out.push(result); - }); - return out; -} - -function translateMap(map, shape) { - var out = {}; - util.each(map, function(key, value) { - var result = translate(value, shape.value); - if (result !== undefined) out[key] = result; - }); - return out; -} - -function translateScalar(value, shape) { - return shape.toWireFormat(value); -} - -module.exports = JsonBuilder; diff --git a/node_modules/aws-sdk/lib/json/parser.js b/node_modules/aws-sdk/lib/json/parser.js deleted file mode 100644 index dc3b33f..0000000 --- a/node_modules/aws-sdk/lib/json/parser.js +++ /dev/null @@ -1,64 +0,0 @@ -var util = require('../util'); - -function JsonParser() { } - -JsonParser.prototype.parse = function(value, shape) { - return translate(JSON.parse(value), shape); -}; - -function translate(value, shape) { - if (!shape || value === undefined) return undefined; - - switch (shape.type) { - case 'structure': return translateStructure(value, shape); - case 'map': return translateMap(value, shape); - case 'list': return translateList(value, shape); - default: return translateScalar(value, shape); - } -} - -function translateStructure(structure, shape) { - if (structure == null) return undefined; - - var struct = {}; - var shapeMembers = shape.members; - util.each(shapeMembers, function(name, memberShape) { - var locationName = memberShape.isLocationName ? memberShape.name : name; - if (Object.prototype.hasOwnProperty.call(structure, locationName)) { - var value = structure[locationName]; - var result = translate(value, memberShape); - if (result !== undefined) struct[name] = result; - } - }); - return struct; -} - -function translateList(list, shape) { - if (list == null) return undefined; - - var out = []; - util.arrayEach(list, function(value) { - var result = translate(value, shape.member); - if (result === undefined) out.push(null); - else out.push(result); - }); - return out; -} - -function translateMap(map, shape) { - if (map == null) return undefined; - - var out = {}; - util.each(map, function(key, value) { - var result = translate(value, shape.value); - if (result === undefined) out[key] = null; - else out[key] = result; - }); - return out; -} - -function translateScalar(value, shape) { - return shape.toType(value); -} - -module.exports = JsonParser; diff --git a/node_modules/aws-sdk/lib/metadata_service.js b/node_modules/aws-sdk/lib/metadata_service.js deleted file mode 100644 index 08f5081..0000000 --- a/node_modules/aws-sdk/lib/metadata_service.js +++ /dev/null @@ -1,121 +0,0 @@ -var AWS = require('./core'); -require('./http'); -var inherit = AWS.util.inherit; - -/** - * Represents a metadata service available on EC2 instances. Using the - * {request} method, you can receieve metadata about any available resource - * on the metadata service. - * - * @!attribute [r] httpOptions - * @return [map] a map of options to pass to the underlying HTTP request: - * - * * **timeout** (Number) — a timeout value in milliseconds to wait - * before aborting the connection. Set to 0 for no timeout. - * - * @!macro nobrowser - */ -AWS.MetadataService = inherit({ - /** - * @return [String] the hostname of the instance metadata service - */ - host: '169.254.169.254', - - /** - * @!ignore - */ - - /** - * Default HTTP options. By default, the metadata service is set to not - * timeout on long requests. This means that on non-EC2 machines, this - * request will never return. If you are calling this operation from an - * environment that may not always run on EC2, set a `timeout` value so - * the SDK will abort the request after a given number of milliseconds. - */ - httpOptions: { timeout: 0 }, - - /** - * Creates a new MetadataService object with a given set of options. - * - * @option options host [String] the hostname of the instance metadata - * service - * @option options httpOptions [map] a map of options to pass to the - * underlying HTTP request: - * - * * **timeout** (Number) — a timeout value in milliseconds to wait - * before aborting the connection. Set to 0 for no timeout. - * @option options maxRetries [Integer] the maximum number of retries to - * perform for timeout errors - * @option options retryDelayOptions [map] A set of options to configure the - * retry delay on retryable errors. See AWS.Config for details. - */ - constructor: function MetadataService(options) { - AWS.util.update(this, options); - }, - - /** - * Sends a request to the instance metadata service for a given resource. - * - * @param path [String] the path of the resource to get - * @callback callback function(err, data) - * Called when a response is available from the service. - * @param err [Error, null] if an error occurred, this value will be set - * @param data [String, null] if the request was successful, the body of - * the response - */ - request: function request(path, callback) { - path = path || '/'; - var httpRequest = new AWS.HttpRequest('http://' + this.host + path); - httpRequest.method = 'GET'; - AWS.util.handleRequestWithRetries(httpRequest, this, callback); - }, - - /** - * @api private - */ - loadCredentialsCallbacks: [], - - /** - * Loads a set of credentials stored in the instance metadata service - * - * @api private - * @callback callback function(err, credentials) - * Called when credentials are loaded from the resource - * @param err [Error] if an error occurred, this value will be set - * @param credentials [Object] the raw JSON object containing all - * metadata from the credentials resource - */ - loadCredentials: function loadCredentials(callback) { - var self = this; - var basePath = '/latest/meta-data/iam/security-credentials/'; - self.loadCredentialsCallbacks.push(callback); - if (self.loadCredentialsCallbacks.length > 1) { return; } - - function callbacks(err, creds) { - var cb; - while ((cb = self.loadCredentialsCallbacks.shift()) !== undefined) { - cb(err, creds); - } - } - - self.request(basePath, function (err, roleName) { - if (err) callbacks(err); - else { - roleName = roleName.split('\n')[0]; // grab first (and only) role - self.request(basePath + roleName, function (credErr, credData) { - if (credErr) callbacks(credErr); - else { - try { - var credentials = JSON.parse(credData); - callbacks(null, credentials); - } catch (parseError) { - callbacks(parseError); - } - } - }); - } - }); - } -}); - -module.exports = AWS.MetadataService; diff --git a/node_modules/aws-sdk/lib/model/api.js b/node_modules/aws-sdk/lib/model/api.js deleted file mode 100644 index 53c7384..0000000 --- a/node_modules/aws-sdk/lib/model/api.js +++ /dev/null @@ -1,63 +0,0 @@ -var Collection = require('./collection'); -var Operation = require('./operation'); -var Shape = require('./shape'); -var Paginator = require('./paginator'); -var ResourceWaiter = require('./resource_waiter'); - -var util = require('../util'); -var property = util.property; -var memoizedProperty = util.memoizedProperty; - -function Api(api, options) { - api = api || {}; - options = options || {}; - options.api = this; - - api.metadata = api.metadata || {}; - - property(this, 'isApi', true, false); - property(this, 'apiVersion', api.metadata.apiVersion); - property(this, 'endpointPrefix', api.metadata.endpointPrefix); - property(this, 'signingName', api.metadata.signingName); - property(this, 'globalEndpoint', api.metadata.globalEndpoint); - property(this, 'signatureVersion', api.metadata.signatureVersion); - property(this, 'jsonVersion', api.metadata.jsonVersion); - property(this, 'targetPrefix', api.metadata.targetPrefix); - property(this, 'protocol', api.metadata.protocol); - property(this, 'timestampFormat', api.metadata.timestampFormat); - property(this, 'xmlNamespaceUri', api.metadata.xmlNamespace); - property(this, 'abbreviation', api.metadata.serviceAbbreviation); - property(this, 'fullName', api.metadata.serviceFullName); - - memoizedProperty(this, 'className', function() { - var name = api.metadata.serviceAbbreviation || api.metadata.serviceFullName; - if (!name) return null; - - name = name.replace(/^Amazon|AWS\s*|\(.*|\s+|\W+/g, ''); - if (name === 'ElasticLoadBalancing') name = 'ELB'; - return name; - }); - - property(this, 'operations', new Collection(api.operations, options, function(name, operation) { - return new Operation(name, operation, options); - }, util.string.lowerFirst)); - - property(this, 'shapes', new Collection(api.shapes, options, function(name, shape) { - return Shape.create(shape, options); - })); - - property(this, 'paginators', new Collection(api.paginators, options, function(name, paginator) { - return new Paginator(name, paginator, options); - })); - - property(this, 'waiters', new Collection(api.waiters, options, function(name, waiter) { - return new ResourceWaiter(name, waiter, options); - }, util.string.lowerFirst)); - - if (options.documentation) { - property(this, 'documentation', api.documentation); - property(this, 'documentationUrl', api.documentationUrl); - } -} - -module.exports = Api; diff --git a/node_modules/aws-sdk/lib/model/collection.js b/node_modules/aws-sdk/lib/model/collection.js deleted file mode 100644 index 439103f..0000000 --- a/node_modules/aws-sdk/lib/model/collection.js +++ /dev/null @@ -1,20 +0,0 @@ -var memoizedProperty = require('../util').memoizedProperty; - -function memoize(name, value, fn, nameTr) { - memoizedProperty(this, nameTr(name), function() { - return fn(name, value); - }); -} - -function Collection(iterable, options, fn, nameTr) { - nameTr = nameTr || String; - var self = this; - - for (var id in iterable) { - if (Object.prototype.hasOwnProperty.call(iterable, id)) { - memoize.call(self, id, iterable[id], fn, nameTr); - } - } -} - -module.exports = Collection; diff --git a/node_modules/aws-sdk/lib/model/operation.js b/node_modules/aws-sdk/lib/model/operation.js deleted file mode 100644 index 616d5fe..0000000 --- a/node_modules/aws-sdk/lib/model/operation.js +++ /dev/null @@ -1,53 +0,0 @@ -var Shape = require('./shape'); - -var util = require('../util'); -var property = util.property; -var memoizedProperty = util.memoizedProperty; - -function Operation(name, operation, options) { - options = options || {}; - - property(this, 'name', operation.name || name); - property(this, 'api', options.api, false); - - operation.http = operation.http || {}; - property(this, 'httpMethod', operation.http.method || 'POST'); - property(this, 'httpPath', operation.http.requestUri || '/'); - property(this, 'authtype', operation.authtype || ''); - - memoizedProperty(this, 'input', function() { - if (!operation.input) { - return new Shape.create({type: 'structure'}, options); - } - return Shape.create(operation.input, options); - }); - - memoizedProperty(this, 'output', function() { - if (!operation.output) { - return new Shape.create({type: 'structure'}, options); - } - return Shape.create(operation.output, options); - }); - - memoizedProperty(this, 'errors', function() { - var list = []; - if (!operation.errors) return null; - - for (var i = 0; i < operation.errors.length; i++) { - list.push(Shape.create(operation.errors[i], options)); - } - - return list; - }); - - memoizedProperty(this, 'paginator', function() { - return options.api.paginators[name]; - }); - - if (options.documentation) { - property(this, 'documentation', operation.documentation); - property(this, 'documentationUrl', operation.documentationUrl); - } -} - -module.exports = Operation; diff --git a/node_modules/aws-sdk/lib/model/paginator.js b/node_modules/aws-sdk/lib/model/paginator.js deleted file mode 100644 index 1fad68e..0000000 --- a/node_modules/aws-sdk/lib/model/paginator.js +++ /dev/null @@ -1,11 +0,0 @@ -var property = require('../util').property; - -function Paginator(name, paginator) { - property(this, 'inputToken', paginator.input_token); - property(this, 'limitKey', paginator.limit_key); - property(this, 'moreResults', paginator.more_results); - property(this, 'outputToken', paginator.output_token); - property(this, 'resultKey', paginator.result_key); -} - -module.exports = Paginator; diff --git a/node_modules/aws-sdk/lib/model/resource_waiter.js b/node_modules/aws-sdk/lib/model/resource_waiter.js deleted file mode 100644 index 110482b..0000000 --- a/node_modules/aws-sdk/lib/model/resource_waiter.js +++ /dev/null @@ -1,30 +0,0 @@ -var util = require('../util'); -var property = util.property; - -function ResourceWaiter(name, waiter, options) { - options = options || {}; - property(this, 'name', name); - property(this, 'api', options.api, false); - - if (waiter.operation) { - property(this, 'operation', util.string.lowerFirst(waiter.operation)); - } - - var self = this; - var keys = [ - 'type', - 'description', - 'delay', - 'maxAttempts', - 'acceptors' - ]; - - keys.forEach(function(key) { - var value = waiter[key]; - if (value) { - property(self, key, value); - } - }); -} - -module.exports = ResourceWaiter; diff --git a/node_modules/aws-sdk/lib/model/shape.js b/node_modules/aws-sdk/lib/model/shape.js deleted file mode 100644 index 44ac3d7..0000000 --- a/node_modules/aws-sdk/lib/model/shape.js +++ /dev/null @@ -1,346 +0,0 @@ -var Collection = require('./collection'); - -var util = require('../util'); - -function property(obj, name, value) { - if (value !== null && value !== undefined) { - util.property.apply(this, arguments); - } -} - -function memoizedProperty(obj, name) { - if (!obj.constructor.prototype[name]) { - util.memoizedProperty.apply(this, arguments); - } -} - -function Shape(shape, options, memberName) { - options = options || {}; - - property(this, 'shape', shape.shape); - property(this, 'api', options.api, false); - property(this, 'type', shape.type); - property(this, 'enum', shape.enum); - property(this, 'min', shape.min); - property(this, 'max', shape.max); - property(this, 'pattern', shape.pattern); - property(this, 'location', shape.location || this.location || 'body'); - property(this, 'name', this.name || shape.xmlName || shape.queryName || - shape.locationName || memberName); - property(this, 'isStreaming', shape.streaming || this.isStreaming || false); - property(this, 'isComposite', shape.isComposite || false); - property(this, 'isShape', true, false); - property(this, 'isQueryName', shape.queryName ? true : false, false); - property(this, 'isLocationName', shape.locationName ? true : false, false); - - if (options.documentation) { - property(this, 'documentation', shape.documentation); - property(this, 'documentationUrl', shape.documentationUrl); - } - - if (shape.xmlAttribute) { - property(this, 'isXmlAttribute', shape.xmlAttribute || false); - } - - // type conversion and parsing - property(this, 'defaultValue', null); - this.toWireFormat = function(value) { - if (value === null || value === undefined) return ''; - return value; - }; - this.toType = function(value) { return value; }; -} - -/** - * @api private - */ -Shape.normalizedTypes = { - character: 'string', - double: 'float', - long: 'integer', - short: 'integer', - biginteger: 'integer', - bigdecimal: 'float', - blob: 'binary' -}; - -/** - * @api private - */ -Shape.types = { - 'structure': StructureShape, - 'list': ListShape, - 'map': MapShape, - 'boolean': BooleanShape, - 'timestamp': TimestampShape, - 'float': FloatShape, - 'integer': IntegerShape, - 'string': StringShape, - 'base64': Base64Shape, - 'binary': BinaryShape -}; - -Shape.resolve = function resolve(shape, options) { - if (shape.shape) { - var refShape = options.api.shapes[shape.shape]; - if (!refShape) { - throw new Error('Cannot find shape reference: ' + shape.shape); - } - - return refShape; - } else { - return null; - } -}; - -Shape.create = function create(shape, options, memberName) { - if (shape.isShape) return shape; - - var refShape = Shape.resolve(shape, options); - if (refShape) { - var filteredKeys = Object.keys(shape); - if (!options.documentation) { - filteredKeys = filteredKeys.filter(function(name) { - return !name.match(/documentation/); - }); - } - if (filteredKeys === ['shape']) { // no inline customizations - return refShape; - } - - // create an inline shape with extra members - var InlineShape = function() { - refShape.constructor.call(this, shape, options, memberName); - }; - InlineShape.prototype = refShape; - return new InlineShape(); - } else { - // set type if not set - if (!shape.type) { - if (shape.members) shape.type = 'structure'; - else if (shape.member) shape.type = 'list'; - else if (shape.key) shape.type = 'map'; - else shape.type = 'string'; - } - - // normalize types - var origType = shape.type; - if (Shape.normalizedTypes[shape.type]) { - shape.type = Shape.normalizedTypes[shape.type]; - } - - if (Shape.types[shape.type]) { - return new Shape.types[shape.type](shape, options, memberName); - } else { - throw new Error('Unrecognized shape type: ' + origType); - } - } -}; - -function CompositeShape(shape) { - Shape.apply(this, arguments); - property(this, 'isComposite', true); - - if (shape.flattened) { - property(this, 'flattened', shape.flattened || false); - } -} - -function StructureShape(shape, options) { - var requiredMap = null, firstInit = !this.isShape; - - CompositeShape.apply(this, arguments); - - if (firstInit) { - property(this, 'defaultValue', function() { return {}; }); - property(this, 'members', {}); - property(this, 'memberNames', []); - property(this, 'required', []); - property(this, 'isRequired', function() { return false; }); - } - - if (shape.members) { - property(this, 'members', new Collection(shape.members, options, function(name, member) { - return Shape.create(member, options, name); - })); - memoizedProperty(this, 'memberNames', function() { - return shape.xmlOrder || Object.keys(shape.members); - }); - } - - if (shape.required) { - property(this, 'required', shape.required); - property(this, 'isRequired', function(name) { - if (!requiredMap) { - requiredMap = {}; - for (var i = 0; i < shape.required.length; i++) { - requiredMap[shape.required[i]] = true; - } - } - - return requiredMap[name]; - }, false, true); - } - - property(this, 'resultWrapper', shape.resultWrapper || null); - - if (shape.payload) { - property(this, 'payload', shape.payload); - } - - if (typeof shape.xmlNamespace === 'string') { - property(this, 'xmlNamespaceUri', shape.xmlNamespace); - } else if (typeof shape.xmlNamespace === 'object') { - property(this, 'xmlNamespacePrefix', shape.xmlNamespace.prefix); - property(this, 'xmlNamespaceUri', shape.xmlNamespace.uri); - } -} - -function ListShape(shape, options) { - var self = this, firstInit = !this.isShape; - CompositeShape.apply(this, arguments); - - if (firstInit) { - property(this, 'defaultValue', function() { return []; }); - } - - if (shape.member) { - memoizedProperty(this, 'member', function() { - return Shape.create(shape.member, options); - }); - } - - if (this.flattened) { - var oldName = this.name; - memoizedProperty(this, 'name', function() { - return self.member.name || oldName; - }); - } -} - -function MapShape(shape, options) { - var firstInit = !this.isShape; - CompositeShape.apply(this, arguments); - - if (firstInit) { - property(this, 'defaultValue', function() { return {}; }); - property(this, 'key', Shape.create({type: 'string'}, options)); - property(this, 'value', Shape.create({type: 'string'}, options)); - } - - if (shape.key) { - memoizedProperty(this, 'key', function() { - return Shape.create(shape.key, options); - }); - } - if (shape.value) { - memoizedProperty(this, 'value', function() { - return Shape.create(shape.value, options); - }); - } -} - -function TimestampShape(shape) { - var self = this; - Shape.apply(this, arguments); - - if (this.location === 'header') { - property(this, 'timestampFormat', 'rfc822'); - } else if (shape.timestampFormat) { - property(this, 'timestampFormat', shape.timestampFormat); - } else if (this.api) { - if (this.api.timestampFormat) { - property(this, 'timestampFormat', this.api.timestampFormat); - } else { - switch (this.api.protocol) { - case 'json': - case 'rest-json': - property(this, 'timestampFormat', 'unixTimestamp'); - break; - case 'rest-xml': - case 'query': - case 'ec2': - property(this, 'timestampFormat', 'iso8601'); - break; - } - } - } - - this.toType = function(value) { - if (value === null || value === undefined) return null; - if (typeof value.toUTCString === 'function') return value; - return typeof value === 'string' || typeof value === 'number' ? - util.date.parseTimestamp(value) : null; - }; - - this.toWireFormat = function(value) { - return util.date.format(value, self.timestampFormat); - }; -} - -function StringShape() { - Shape.apply(this, arguments); - - if (this.api) { - switch (this.api.protocol) { - case 'rest-xml': - case 'query': - case 'ec2': - this.toType = function(value) { return value || ''; }; - } - } -} - -function FloatShape() { - Shape.apply(this, arguments); - - this.toType = function(value) { - if (value === null || value === undefined) return null; - return parseFloat(value); - }; - this.toWireFormat = this.toType; -} - -function IntegerShape() { - Shape.apply(this, arguments); - - this.toType = function(value) { - if (value === null || value === undefined) return null; - return parseInt(value, 10); - }; - this.toWireFormat = this.toType; -} - -function BinaryShape() { - Shape.apply(this, arguments); - this.toType = util.base64.decode; - this.toWireFormat = util.base64.encode; -} - -function Base64Shape() { - BinaryShape.apply(this, arguments); -} - -function BooleanShape() { - Shape.apply(this, arguments); - - this.toType = function(value) { - if (typeof value === 'boolean') return value; - if (value === null || value === undefined) return null; - return value === 'true'; - }; -} - -/** - * @api private - */ -Shape.shapes = { - StructureShape: StructureShape, - ListShape: ListShape, - MapShape: MapShape, - StringShape: StringShape, - BooleanShape: BooleanShape, - Base64Shape: Base64Shape -}; - -module.exports = Shape; diff --git a/node_modules/aws-sdk/lib/node_loader.js b/node_modules/aws-sdk/lib/node_loader.js deleted file mode 100644 index adb25a2..0000000 --- a/node_modules/aws-sdk/lib/node_loader.js +++ /dev/null @@ -1,67 +0,0 @@ -var util = require('./util'); - -// node.js specific modules -util.crypto.lib = require('crypto'); -util.Buffer = require('buffer').Buffer; -util.domain = require('domain'); -util.stream = require('stream'); -util.url = require('url'); -util.querystring = require('querystring'); - -var AWS = require('./core'); - -// Use default API loader function -require('./api_loader'); - -// Load the xml2js XML parser -AWS.XML.Parser = require('./xml/node_parser'); - -// Load Node HTTP client -require('./http/node'); - -// Load custom credential providers -require('./credentials/ec2_metadata_credentials'); -require('./credentials/ecs_credentials'); -require('./credentials/environment_credentials'); -require('./credentials/file_system_credentials'); -require('./credentials/shared_ini_file_credentials'); - -// Setup default chain providers -// If this changes, please update documentation for -// AWS.CredentialProviderChain.defaultProviders in -// credentials/credential_provider_chain.js -AWS.CredentialProviderChain.defaultProviders = [ - function () { return new AWS.EnvironmentCredentials('AWS'); }, - function () { return new AWS.EnvironmentCredentials('AMAZON'); }, - function () { return new AWS.SharedIniFileCredentials(); }, - function () { - if (AWS.ECSCredentials.prototype.getECSRelativeUri() !== undefined) { - return new AWS.ECSCredentials(); - } - return new AWS.EC2MetadataCredentials(); - } -]; - -// Update configuration keys -AWS.util.update(AWS.Config.prototype.keys, { - credentials: function () { - var credentials = null; - new AWS.CredentialProviderChain([ - function () { return new AWS.EnvironmentCredentials('AWS'); }, - function () { return new AWS.EnvironmentCredentials('AMAZON'); }, - function () { return new AWS.SharedIniFileCredentials({ disableAssumeRole: true }); } - ]).resolve(function(err, creds) { - if (!err) credentials = creds; - }); - return credentials; - }, - credentialProvider: function() { - return new AWS.CredentialProviderChain(); - }, - region: function() { - return process.env.AWS_REGION || process.env.AMAZON_REGION; - } -}); - -// Reset configuration -AWS.config = new AWS.Config(); diff --git a/node_modules/aws-sdk/lib/param_validator.js b/node_modules/aws-sdk/lib/param_validator.js deleted file mode 100644 index cc42698..0000000 --- a/node_modules/aws-sdk/lib/param_validator.js +++ /dev/null @@ -1,254 +0,0 @@ -var AWS = require('./core'); - -/** - * @api private - */ -AWS.ParamValidator = AWS.util.inherit({ - /** - * Create a new validator object. - * - * @param validation [Boolean|map] whether input parameters should be - * validated against the operation description before sending the - * request. Pass a map to enable any of the following specific - * validation features: - * - * * **min** [Boolean] — Validates that a value meets the min - * constraint. This is enabled by default when paramValidation is set - * to `true`. - * * **max** [Boolean] — Validates that a value meets the max - * constraint. - * * **pattern** [Boolean] — Validates that a string value matches a - * regular expression. - * * **enum** [Boolean] — Validates that a string value matches one - * of the allowable enum values. - */ - constructor: function ParamValidator(validation) { - if (validation === true || validation === undefined) { - validation = {'min': true}; - } - this.validation = validation; - }, - - validate: function validate(shape, params, context) { - this.errors = []; - this.validateMember(shape, params || {}, context || 'params'); - - if (this.errors.length > 1) { - var msg = this.errors.join('\n* '); - msg = 'There were ' + this.errors.length + - ' validation errors:\n* ' + msg; - throw AWS.util.error(new Error(msg), - {code: 'MultipleValidationErrors', errors: this.errors}); - } else if (this.errors.length === 1) { - throw this.errors[0]; - } else { - return true; - } - }, - - fail: function fail(code, message) { - this.errors.push(AWS.util.error(new Error(message), {code: code})); - }, - - validateStructure: function validateStructure(shape, params, context) { - this.validateType(params, context, ['object'], 'structure'); - - var paramName; - for (var i = 0; shape.required && i < shape.required.length; i++) { - paramName = shape.required[i]; - var value = params[paramName]; - if (value === undefined || value === null) { - this.fail('MissingRequiredParameter', - 'Missing required key \'' + paramName + '\' in ' + context); - } - } - - // validate hash members - for (paramName in params) { - if (!Object.prototype.hasOwnProperty.call(params, paramName)) continue; - - var paramValue = params[paramName], - memberShape = shape.members[paramName]; - - if (memberShape !== undefined) { - var memberContext = [context, paramName].join('.'); - this.validateMember(memberShape, paramValue, memberContext); - } else { - this.fail('UnexpectedParameter', - 'Unexpected key \'' + paramName + '\' found in ' + context); - } - } - - return true; - }, - - validateMember: function validateMember(shape, param, context) { - switch (shape.type) { - case 'structure': - return this.validateStructure(shape, param, context); - case 'list': - return this.validateList(shape, param, context); - case 'map': - return this.validateMap(shape, param, context); - default: - return this.validateScalar(shape, param, context); - } - }, - - validateList: function validateList(shape, params, context) { - if (this.validateType(params, context, [Array])) { - this.validateRange(shape, params.length, context, 'list member count'); - // validate array members - for (var i = 0; i < params.length; i++) { - this.validateMember(shape.member, params[i], context + '[' + i + ']'); - } - } - }, - - validateMap: function validateMap(shape, params, context) { - if (this.validateType(params, context, ['object'], 'map')) { - // Build up a count of map members to validate range traits. - var mapCount = 0; - for (var param in params) { - if (!Object.prototype.hasOwnProperty.call(params, param)) continue; - // Validate any map key trait constraints - this.validateMember(shape.key, param, - context + '[key=\'' + param + '\']') - this.validateMember(shape.value, params[param], - context + '[\'' + param + '\']'); - mapCount++; - } - this.validateRange(shape, mapCount, context, 'map member count'); - } - }, - - validateScalar: function validateScalar(shape, value, context) { - switch (shape.type) { - case null: - case undefined: - case 'string': - return this.validateString(shape, value, context); - case 'base64': - case 'binary': - return this.validatePayload(value, context); - case 'integer': - case 'float': - return this.validateNumber(shape, value, context); - case 'boolean': - return this.validateType(value, context, ['boolean']); - case 'timestamp': - return this.validateType(value, context, [Date, - /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/, 'number'], - 'Date object, ISO-8601 string, or a UNIX timestamp'); - default: - return this.fail('UnkownType', 'Unhandled type ' + - shape.type + ' for ' + context); - } - }, - - validateString: function validateString(shape, value, context) { - if (this.validateType(value, context, ['string'])) { - this.validateEnum(shape, value, context); - this.validateRange(shape, value.length, context, 'string length'); - this.validatePattern(shape, value, context); - } - }, - - validatePattern: function validatePattern(shape, value, context) { - if (this.validation['pattern'] && shape['pattern'] !== undefined) { - if (!(new RegExp(shape['pattern'])).test(value)) { - this.fail('PatternMatchError', 'Provided value "' + value + '" ' - + 'does not match regex pattern /' + shape['pattern'] + '/ for ' - + context); - } - } - }, - - validateRange: function validateRange(shape, value, context, descriptor) { - if (this.validation['min']) { - if (shape['min'] !== undefined && value < shape['min']) { - this.fail('MinRangeError', 'Expected ' + descriptor + ' >= ' - + shape['min'] + ', but found ' + value + ' for ' + context); - } - } - if (this.validation['max']) { - if (shape['max'] !== undefined && value > shape['max']) { - this.fail('MaxRangeError', 'Expected ' + descriptor + ' <= ' - + shape['max'] + ', but found ' + value + ' for ' + context); - } - } - }, - - validateEnum: function validateRange(shape, value, context) { - if (this.validation['enum'] && shape['enum'] !== undefined) { - // Fail if the string value is not present in the enum list - if (shape['enum'].indexOf(value) === -1) { - this.fail('EnumError', 'Found string value of ' + value + ', but ' - + 'expected ' + shape['enum'].join('|') + ' for ' + context); - } - } - }, - - validateType: function validateType(value, context, acceptedTypes, type) { - // We will not log an error for null or undefined, but we will return - // false so that callers know that the expected type was not strictly met. - if (value === null || value === undefined) return false; - - var foundInvalidType = false; - for (var i = 0; i < acceptedTypes.length; i++) { - if (typeof acceptedTypes[i] === 'string') { - if (typeof value === acceptedTypes[i]) return true; - } else if (acceptedTypes[i] instanceof RegExp) { - if ((value || '').toString().match(acceptedTypes[i])) return true; - } else { - if (value instanceof acceptedTypes[i]) return true; - if (AWS.util.isType(value, acceptedTypes[i])) return true; - if (!type && !foundInvalidType) acceptedTypes = acceptedTypes.slice(); - acceptedTypes[i] = AWS.util.typeName(acceptedTypes[i]); - } - foundInvalidType = true; - } - - var acceptedType = type; - if (!acceptedType) { - acceptedType = acceptedTypes.join(', ').replace(/,([^,]+)$/, ', or$1'); - } - - var vowel = acceptedType.match(/^[aeiou]/i) ? 'n' : ''; - this.fail('InvalidParameterType', 'Expected ' + context + ' to be a' + - vowel + ' ' + acceptedType); - return false; - }, - - validateNumber: function validateNumber(shape, value, context) { - if (value === null || value === undefined) return; - if (typeof value === 'string') { - var castedValue = parseFloat(value); - if (castedValue.toString() === value) value = castedValue; - } - if (this.validateType(value, context, ['number'])) { - this.validateRange(shape, value, context, 'numeric value'); - } - }, - - validatePayload: function validatePayload(value, context) { - if (value === null || value === undefined) return; - if (typeof value === 'string') return; - if (value && typeof value.byteLength === 'number') return; // typed arrays - if (AWS.util.isNode()) { // special check for buffer/stream in Node.js - var Stream = AWS.util.stream.Stream; - if (AWS.util.Buffer.isBuffer(value) || value instanceof Stream) return; - } - - var types = ['Buffer', 'Stream', 'File', 'Blob', 'ArrayBuffer', 'DataView']; - if (value) { - for (var i = 0; i < types.length; i++) { - if (AWS.util.isType(value, types[i])) return; - if (AWS.util.typeName(value.constructor) === types[i]) return; - } - } - - this.fail('InvalidParameterType', 'Expected ' + context + ' to be a ' + - 'string, Buffer, Stream, Blob, or typed array object'); - } -}); diff --git a/node_modules/aws-sdk/lib/protocol/json.js b/node_modules/aws-sdk/lib/protocol/json.js deleted file mode 100644 index b9c9d8c..0000000 --- a/node_modules/aws-sdk/lib/protocol/json.js +++ /dev/null @@ -1,62 +0,0 @@ -var util = require('../util'); -var JsonBuilder = require('../json/builder'); -var JsonParser = require('../json/parser'); - -function buildRequest(req) { - var httpRequest = req.httpRequest; - var api = req.service.api; - var target = api.targetPrefix + '.' + api.operations[req.operation].name; - var version = api.jsonVersion || '1.0'; - var input = api.operations[req.operation].input; - var builder = new JsonBuilder(); - - if (version === 1) version = '1.0'; - httpRequest.body = builder.build(req.params || {}, input); - httpRequest.headers['Content-Type'] = 'application/x-amz-json-' + version; - httpRequest.headers['X-Amz-Target'] = target; -} - -function extractError(resp) { - var error = {}; - var httpResponse = resp.httpResponse; - - error.code = httpResponse.headers['x-amzn-errortype'] || 'UnknownError'; - if (typeof error.code === 'string') { - error.code = error.code.split(':')[0]; - } - - if (httpResponse.body.length > 0) { - var e = JSON.parse(httpResponse.body.toString()); - if (e.__type || e.code) { - error.code = (e.__type || e.code).split('#').pop(); - } - if (error.code === 'RequestEntityTooLarge') { - error.message = 'Request body must be less than 1 MB'; - } else { - error.message = (e.message || e.Message || null); - } - } else { - error.statusCode = httpResponse.statusCode; - error.message = httpResponse.statusCode.toString(); - } - - resp.error = util.error(new Error(), error); -} - -function extractData(resp) { - var body = resp.httpResponse.body.toString() || '{}'; - if (resp.request.service.config.convertResponseTypes === false) { - resp.data = JSON.parse(body); - } else { - var operation = resp.request.service.api.operations[resp.request.operation]; - var shape = operation.output || {}; - var parser = new JsonParser(); - resp.data = parser.parse(body, shape); - } -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; diff --git a/node_modules/aws-sdk/lib/protocol/query.js b/node_modules/aws-sdk/lib/protocol/query.js deleted file mode 100644 index 2e1adcb..0000000 --- a/node_modules/aws-sdk/lib/protocol/query.js +++ /dev/null @@ -1,97 +0,0 @@ -var AWS = require('../core'); -var util = require('../util'); -var QueryParamSerializer = require('../query/query_param_serializer'); -var Shape = require('../model/shape'); - -function buildRequest(req) { - var operation = req.service.api.operations[req.operation]; - var httpRequest = req.httpRequest; - httpRequest.headers['Content-Type'] = - 'application/x-www-form-urlencoded; charset=utf-8'; - httpRequest.params = { - Version: req.service.api.apiVersion, - Action: operation.name - }; - - // convert the request parameters into a list of query params, - // e.g. Deeply.NestedParam.0.Name=value - var builder = new QueryParamSerializer(); - builder.serialize(req.params, operation.input, function(name, value) { - httpRequest.params[name] = value; - }); - httpRequest.body = util.queryParamsToString(httpRequest.params); -} - -function extractError(resp) { - var data, body = resp.httpResponse.body.toString(); - if (body.match('= 0 ? '&' : '?'); - var parts = []; - util.arrayEach(Object.keys(queryString).sort(), function(key) { - if (!Array.isArray(queryString[key])) { - queryString[key] = [queryString[key]]; - } - for (var i = 0; i < queryString[key].length; i++) { - parts.push(util.uriEscape(String(key)) + '=' + queryString[key][i]); - } - }); - uri += parts.join('&'); - } - - req.httpRequest.path = uri; -} - -function populateHeaders(req) { - var operation = req.service.api.operations[req.operation]; - util.each(operation.input.members, function (name, member) { - var value = req.params[name]; - if (value === null || value === undefined) return; - - if (member.location === 'headers' && member.type === 'map') { - util.each(value, function(key, memberValue) { - req.httpRequest.headers[member.name + key] = memberValue; - }); - } else if (member.location === 'header') { - value = member.toWireFormat(value).toString(); - req.httpRequest.headers[member.name] = value; - } - }); -} - -function buildRequest(req) { - populateMethod(req); - populateURI(req); - populateHeaders(req); -} - -function extractError() { -} - -function extractData(resp) { - var req = resp.request; - var data = {}; - var r = resp.httpResponse; - var operation = req.service.api.operations[req.operation]; - var output = operation.output; - - // normalize headers names to lower-cased keys for matching - var headers = {}; - util.each(r.headers, function (k, v) { - headers[k.toLowerCase()] = v; - }); - - util.each(output.members, function(name, member) { - var header = (member.name || name).toLowerCase(); - if (member.location === 'headers' && member.type === 'map') { - data[name] = {}; - var location = member.isLocationName ? member.name : ''; - var pattern = new RegExp('^' + location + '(.+)', 'i'); - util.each(r.headers, function (k, v) { - var result = k.match(pattern); - if (result !== null) { - data[name][result[1]] = v; - } - }); - } else if (member.location === 'header') { - if (headers[header] !== undefined) { - data[name] = headers[header]; - } - } else if (member.location === 'statusCode') { - data[name] = parseInt(r.statusCode, 10); - } - }); - - resp.data = data; -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; diff --git a/node_modules/aws-sdk/lib/protocol/rest_json.js b/node_modules/aws-sdk/lib/protocol/rest_json.js deleted file mode 100644 index 992bbb5..0000000 --- a/node_modules/aws-sdk/lib/protocol/rest_json.js +++ /dev/null @@ -1,67 +0,0 @@ -var util = require('../util'); -var Rest = require('./rest'); -var Json = require('./json'); -var JsonBuilder = require('../json/builder'); -var JsonParser = require('../json/parser'); - -function populateBody(req) { - var builder = new JsonBuilder(); - var input = req.service.api.operations[req.operation].input; - - if (input.payload) { - var params = {}; - var payloadShape = input.members[input.payload]; - params = req.params[input.payload]; - if (params === undefined) return; - - if (payloadShape.type === 'structure') { - req.httpRequest.body = builder.build(params, payloadShape); - } else { // non-JSON payload - req.httpRequest.body = params; - } - } else { - req.httpRequest.body = builder.build(req.params, input); - } -} - -function buildRequest(req) { - Rest.buildRequest(req); - - // never send body payload on GET/HEAD/DELETE - if (['GET', 'HEAD', 'DELETE'].indexOf(req.httpRequest.method) < 0) { - populateBody(req); - } -} - -function extractError(resp) { - Json.extractError(resp); -} - -function extractData(resp) { - Rest.extractData(resp); - - var req = resp.request; - var rules = req.service.api.operations[req.operation].output || {}; - if (rules.payload) { - var payloadMember = rules.members[rules.payload]; - var body = resp.httpResponse.body; - if (payloadMember.isStreaming) { - resp.data[rules.payload] = body; - } else if (payloadMember.type === 'structure' || payloadMember.type === 'list') { - var parser = new JsonParser(); - resp.data[rules.payload] = parser.parse(body, payloadMember); - } else { - resp.data[rules.payload] = body.toString(); - } - } else { - var data = resp.data; - Json.extractData(resp); - resp.data = util.merge(data, resp.data); - } -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; diff --git a/node_modules/aws-sdk/lib/protocol/rest_xml.js b/node_modules/aws-sdk/lib/protocol/rest_xml.js deleted file mode 100644 index ebfd1b6..0000000 --- a/node_modules/aws-sdk/lib/protocol/rest_xml.js +++ /dev/null @@ -1,87 +0,0 @@ -var AWS = require('../core'); -var util = require('../util'); -var Rest = require('./rest'); - -function populateBody(req) { - var input = req.service.api.operations[req.operation].input; - var builder = new AWS.XML.Builder(); - var params = req.params; - - var payload = input.payload; - if (payload) { - var payloadMember = input.members[payload]; - params = params[payload]; - if (params === undefined) return; - - if (payloadMember.type === 'structure') { - var rootElement = payloadMember.name; - req.httpRequest.body = builder.toXML(params, payloadMember, rootElement, true); - } else { // non-xml payload - req.httpRequest.body = params; - } - } else { - req.httpRequest.body = builder.toXML(params, input, input.name || - input.shape || util.string.upperFirst(req.operation) + 'Request'); - } -} - -function buildRequest(req) { - Rest.buildRequest(req); - - // never send body payload on GET/HEAD - if (['GET', 'HEAD'].indexOf(req.httpRequest.method) < 0) { - populateBody(req); - } -} - -function extractError(resp) { - Rest.extractError(resp); - - var data = new AWS.XML.Parser().parse(resp.httpResponse.body.toString()); - if (data.Errors) data = data.Errors; - if (data.Error) data = data.Error; - if (data.Code) { - resp.error = util.error(new Error(), { - code: data.Code, - message: data.Message - }); - } else { - resp.error = util.error(new Error(), { - code: resp.httpResponse.statusCode, - message: null - }); - } -} - -function extractData(resp) { - Rest.extractData(resp); - - var parser; - var req = resp.request; - var body = resp.httpResponse.body; - var operation = req.service.api.operations[req.operation]; - var output = operation.output; - - var payload = output.payload; - if (payload) { - var payloadMember = output.members[payload]; - if (payloadMember.isStreaming) { - resp.data[payload] = body; - } else if (payloadMember.type === 'structure') { - parser = new AWS.XML.Parser(); - resp.data[payload] = parser.parse(body.toString(), payloadMember); - } else { - resp.data[payload] = body.toString(); - } - } else if (body.length > 0) { - parser = new AWS.XML.Parser(); - var data = parser.parse(body.toString(), output); - util.update(resp.data, data); - } -} - -module.exports = { - buildRequest: buildRequest, - extractError: extractError, - extractData: extractData -}; diff --git a/node_modules/aws-sdk/lib/query/query_param_serializer.js b/node_modules/aws-sdk/lib/query/query_param_serializer.js deleted file mode 100644 index 169acf2..0000000 --- a/node_modules/aws-sdk/lib/query/query_param_serializer.js +++ /dev/null @@ -1,81 +0,0 @@ -var util = require('../util'); - -function QueryParamSerializer() { -} - -QueryParamSerializer.prototype.serialize = function(params, shape, fn) { - serializeStructure('', params, shape, fn); -}; - -function ucfirst(shape) { - if (shape.isQueryName || shape.api.protocol !== 'ec2') { - return shape.name; - } else { - return shape.name[0].toUpperCase() + shape.name.substr(1); - } -} - -function serializeStructure(prefix, struct, rules, fn) { - util.each(rules.members, function(name, member) { - var value = struct[name]; - if (value === null || value === undefined) return; - - var memberName = ucfirst(member); - memberName = prefix ? prefix + '.' + memberName : memberName; - serializeMember(memberName, value, member, fn); - }); -} - -function serializeMap(name, map, rules, fn) { - var i = 1; - util.each(map, function (key, value) { - var prefix = rules.flattened ? '.' : '.entry.'; - var position = prefix + (i++) + '.'; - var keyName = position + (rules.key.name || 'key'); - var valueName = position + (rules.value.name || 'value'); - serializeMember(name + keyName, key, rules.key, fn); - serializeMember(name + valueName, value, rules.value, fn); - }); -} - -function serializeList(name, list, rules, fn) { - var memberRules = rules.member || {}; - - if (list.length === 0) { - fn.call(this, name, null); - return; - } - - util.arrayEach(list, function (v, n) { - var suffix = '.' + (n + 1); - if (rules.api.protocol === 'ec2') { - // Do nothing for EC2 - suffix = suffix + ''; // make linter happy - } else if (rules.flattened) { - if (memberRules.name) { - var parts = name.split('.'); - parts.pop(); - parts.push(ucfirst(memberRules)); - name = parts.join('.'); - } - } else { - suffix = '.member' + suffix; - } - serializeMember(name + suffix, v, memberRules, fn); - }); -} - -function serializeMember(name, value, rules, fn) { - if (value === null || value === undefined) return; - if (rules.type === 'structure') { - serializeStructure(name, value, rules, fn); - } else if (rules.type === 'list') { - serializeList(name, value, rules, fn); - } else if (rules.type === 'map') { - serializeMap(name, value, rules, fn); - } else { - fn(name, rules.toWireFormat(value).toString()); - } -} - -module.exports = QueryParamSerializer; diff --git a/node_modules/aws-sdk/lib/region_config.js b/node_modules/aws-sdk/lib/region_config.js deleted file mode 100644 index 68d63fa..0000000 --- a/node_modules/aws-sdk/lib/region_config.js +++ /dev/null @@ -1,69 +0,0 @@ -var util = require('./util'); -var regionConfig = require('./region_config.json'); - -function generateRegionPrefix(region) { - if (!region) return null; - - var parts = region.split('-'); - if (parts.length < 3) return null; - return parts.slice(0, parts.length - 2).join('-') + '-*'; -} - -function derivedKeys(service) { - var region = service.config.region; - var regionPrefix = generateRegionPrefix(region); - var endpointPrefix = service.api.endpointPrefix; - - return [ - [region, endpointPrefix], - [regionPrefix, endpointPrefix], - [region, '*'], - [regionPrefix, '*'], - ['*', endpointPrefix], - ['*', '*'] - ].map(function(item) { - return item[0] && item[1] ? item.join('/') : null; - }); -} - -function applyConfig(service, config) { - util.each(config, function(key, value) { - if (key === 'globalEndpoint') return; - if (service.config[key] === undefined || service.config[key] === null) { - service.config[key] = value; - } - }); -} - -function configureEndpoint(service) { - var keys = derivedKeys(service); - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (!key) continue; - - if (Object.prototype.hasOwnProperty.call(regionConfig.rules, key)) { - var config = regionConfig.rules[key]; - if (typeof config === 'string') { - config = regionConfig.patterns[config]; - } - - // set dualstack endpoint - if (service.config.useDualstack && util.isDualstackAvailable(service)) { - config = util.copy(config); - config.endpoint = '{service}.dualstack.{region}.amazonaws.com'; - } - - // set global endpoint - service.isGlobalEndpoint = !!config.globalEndpoint; - - // signature version - if (!config.signatureVersion) config.signatureVersion = 'v4'; - - // merge config - applyConfig(service, config); - return; - } - } -} - -module.exports = configureEndpoint; diff --git a/node_modules/aws-sdk/lib/region_config.json b/node_modules/aws-sdk/lib/region_config.json deleted file mode 100644 index 38a614a..0000000 --- a/node_modules/aws-sdk/lib/region_config.json +++ /dev/null @@ -1,62 +0,0 @@ -{ - "rules": { - "*/*": { - "endpoint": "{service}.{region}.amazonaws.com" - }, - "cn-*/*": { - "endpoint": "{service}.{region}.amazonaws.com.cn" - }, - "*/cloudfront": "globalSSL", - "*/iam": "globalSSL", - "*/sts": "globalSSL", - "*/importexport": { - "endpoint": "{service}.amazonaws.com", - "signatureVersion": "v2", - "globalEndpoint": true - }, - "*/route53": { - "endpoint": "https://{service}.amazonaws.com", - "signatureVersion": "v3https", - "globalEndpoint": true - }, - "*/waf": "globalSSL", - "us-gov-*/iam": "globalGovCloud", - "us-gov-*/sts": { - "endpoint": "{service}.{region}.amazonaws.com" - }, - "us-gov-west-1/s3": "s3dash", - "us-west-1/s3": "s3dash", - "us-west-2/s3": "s3dash", - "eu-west-1/s3": "s3dash", - "ap-southeast-1/s3": "s3dash", - "ap-southeast-2/s3": "s3dash", - "ap-northeast-1/s3": "s3dash", - "sa-east-1/s3": "s3dash", - "us-east-1/s3": { - "endpoint": "{service}.amazonaws.com", - "signatureVersion": "s3" - }, - "us-east-1/sdb": { - "endpoint": "{service}.amazonaws.com", - "signatureVersion": "v2" - }, - "*/sdb": { - "endpoint": "{service}.{region}.amazonaws.com", - "signatureVersion": "v2" - } - }, - - "patterns": { - "globalSSL": { - "endpoint": "https://{service}.amazonaws.com", - "globalEndpoint": true - }, - "globalGovCloud": { - "endpoint": "{service}.us-gov.amazonaws.com" - }, - "s3dash": { - "endpoint": "{service}-{region}.amazonaws.com", - "signatureVersion": "s3" - } - } -} diff --git a/node_modules/aws-sdk/lib/request.js b/node_modules/aws-sdk/lib/request.js deleted file mode 100644 index 9282e8c..0000000 --- a/node_modules/aws-sdk/lib/request.js +++ /dev/null @@ -1,756 +0,0 @@ -var AWS = require('./core'); -var AcceptorStateMachine = require('./state_machine'); -var inherit = AWS.util.inherit; -var domain = AWS.util.domain; -var jmespath = require('jmespath'); - -/** - * @api private - */ -var hardErrorStates = {success: 1, error: 1, complete: 1}; - -function isTerminalState(machine) { - return Object.prototype.hasOwnProperty.call(hardErrorStates, machine._asm.currentState); -} - -var fsm = new AcceptorStateMachine(); -fsm.setupStates = function() { - var transition = function(_, done) { - var self = this; - self._haltHandlersOnError = false; - - self.emit(self._asm.currentState, function(err) { - if (err) { - if (isTerminalState(self)) { - if (domain && self.domain instanceof domain.Domain) { - err.domainEmitter = self; - err.domain = self.domain; - err.domainThrown = false; - self.domain.emit('error', err); - } else { - throw err; - } - } else { - self.response.error = err; - done(err); - } - } else { - done(self.response.error); - } - }); - - }; - - this.addState('validate', 'build', 'error', transition); - this.addState('build', 'afterBuild', 'restart', transition); - this.addState('afterBuild', 'sign', 'restart', transition); - this.addState('sign', 'send', 'retry', transition); - this.addState('retry', 'afterRetry', 'afterRetry', transition); - this.addState('afterRetry', 'sign', 'error', transition); - this.addState('send', 'validateResponse', 'retry', transition); - this.addState('validateResponse', 'extractData', 'extractError', transition); - this.addState('extractError', 'extractData', 'retry', transition); - this.addState('extractData', 'success', 'retry', transition); - this.addState('restart', 'build', 'error', transition); - this.addState('success', 'complete', 'complete', transition); - this.addState('error', 'complete', 'complete', transition); - this.addState('complete', null, null, transition); -}; -fsm.setupStates(); - -/** - * ## Asynchronous Requests - * - * All requests made through the SDK are asynchronous and use a - * callback interface. Each service method that kicks off a request - * returns an `AWS.Request` object that you can use to register - * callbacks. - * - * For example, the following service method returns the request - * object as "request", which can be used to register callbacks: - * - * ```javascript - * // request is an AWS.Request object - * var request = ec2.describeInstances(); - * - * // register callbacks on request to retrieve response data - * request.on('success', function(response) { - * console.log(response.data); - * }); - * ``` - * - * When a request is ready to be sent, the {send} method should - * be called: - * - * ```javascript - * request.send(); - * ``` - * - * ## Removing Default Listeners for Events - * - * Request objects are built with default listeners for the various events, - * depending on the service type. In some cases, you may want to remove - * some built-in listeners to customize behaviour. Doing this requires - * access to the built-in listener functions, which are exposed through - * the {AWS.EventListeners.Core} namespace. For instance, you may - * want to customize the HTTP handler used when sending a request. In this - * case, you can remove the built-in listener associated with the 'send' - * event, the {AWS.EventListeners.Core.SEND} listener and add your own. - * - * ## Multiple Callbacks and Chaining - * - * You can register multiple callbacks on any request object. The - * callbacks can be registered for different events, or all for the - * same event. In addition, you can chain callback registration, for - * example: - * - * ```javascript - * request. - * on('success', function(response) { - * console.log("Success!"); - * }). - * on('error', function(response) { - * console.log("Error!"); - * }). - * on('complete', function(response) { - * console.log("Always!"); - * }). - * send(); - * ``` - * - * The above example will print either "Success! Always!", or "Error! Always!", - * depending on whether the request succeeded or not. - * - * @!attribute httpRequest - * @readonly - * @!group HTTP Properties - * @return [AWS.HttpRequest] the raw HTTP request object - * containing request headers and body information - * sent by the service. - * - * @!attribute startTime - * @readonly - * @!group Operation Properties - * @return [Date] the time that the request started - * - * @!group Request Building Events - * - * @!event validate(request) - * Triggered when a request is being validated. Listeners - * should throw an error if the request should not be sent. - * @param request [Request] the request object being sent - * @see AWS.EventListeners.Core.VALIDATE_CREDENTIALS - * @see AWS.EventListeners.Core.VALIDATE_REGION - * @example Ensuring that a certain parameter is set before sending a request - * var req = s3.putObject(params); - * req.on('validate', function() { - * if (!req.params.Body.match(/^Hello\s/)) { - * throw new Error('Body must start with "Hello "'); - * } - * }); - * req.send(function(err, data) { ... }); - * - * @!event build(request) - * Triggered when the request payload is being built. Listeners - * should fill the necessary information to send the request - * over HTTP. - * @param (see AWS.Request~validate) - * @example Add a custom HTTP header to a request - * var req = s3.putObject(params); - * req.on('build', function() { - * req.httpRequest.headers['Custom-Header'] = 'value'; - * }); - * req.send(function(err, data) { ... }); - * - * @!event sign(request) - * Triggered when the request is being signed. Listeners should - * add the correct authentication headers and/or adjust the body, - * depending on the authentication mechanism being used. - * @param (see AWS.Request~validate) - * - * @!group Request Sending Events - * - * @!event send(response) - * Triggered when the request is ready to be sent. Listeners - * should call the underlying transport layer to initiate - * the sending of the request. - * @param response [Response] the response object - * @context [Request] the request object that was sent - * @see AWS.EventListeners.Core.SEND - * - * @!event retry(response) - * Triggered when a request failed and might need to be retried or redirected. - * If the response is retryable, the listener should set the - * `response.error.retryable` property to `true`, and optionally set - * `response.error.retryCount` to the millisecond delay for the next attempt. - * In the case of a redirect, `response.error.redirect` should be set to - * `true` with `retryCount` set to an optional delay on the next request. - * - * If a listener decides that a request should not be retried, - * it should set both `retryable` and `redirect` to false. - * - * Note that a retryable error will be retried at most - * {AWS.Config.maxRetries} times (based on the service object's config). - * Similarly, a request that is redirected will only redirect at most - * {AWS.Config.maxRedirects} times. - * - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * @example Adding a custom retry for a 404 response - * request.on('retry', function(response) { - * // this resource is not yet available, wait 10 seconds to get it again - * if (response.httpResponse.statusCode === 404 && response.error) { - * response.error.retryable = true; // retry this error - * response.error.retryCount = 10000; // wait 10 seconds - * } - * }); - * - * @!group Data Parsing Events - * - * @!event extractError(response) - * Triggered on all non-2xx requests so that listeners can extract - * error details from the response body. Listeners to this event - * should set the `response.error` property. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!event extractData(response) - * Triggered in successful requests to allow listeners to - * de-serialize the response body into `response.data`. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!group Completion Events - * - * @!event success(response) - * Triggered when the request completed successfully. - * `response.data` will contain the response data and - * `response.error` will be null. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!event error(error, response) - * Triggered when an error occurs at any point during the - * request. `response.error` will contain details about the error - * that occurred. `response.data` will be null. - * @param error [Error] the error object containing details about - * the error that occurred. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!event complete(response) - * Triggered whenever a request cycle completes. `response.error` - * should be checked, since the request may have failed. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!group HTTP Events - * - * @!event httpHeaders(statusCode, headers, response) - * Triggered when headers are sent by the remote server - * @param statusCode [Integer] the HTTP response code - * @param headers [map] the response headers - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!event httpData(chunk, response) - * Triggered when data is sent by the remote server - * @param chunk [Buffer] the buffer data containing the next data chunk - * from the server - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * @see AWS.EventListeners.Core.HTTP_DATA - * - * @!event httpUploadProgress(progress, response) - * Triggered when the HTTP request has uploaded more data - * @param progress [map] An object containing the `loaded` and `total` bytes - * of the request. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * @note This event will not be emitted in Node.js 0.8.x. - * - * @!event httpDownloadProgress(progress, response) - * Triggered when the HTTP request has downloaded more data - * @param progress [map] An object containing the `loaded` and `total` bytes - * of the request. - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * @note This event will not be emitted in Node.js 0.8.x. - * - * @!event httpError(error, response) - * Triggered when the HTTP request failed - * @param error [Error] the error object that was thrown - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @!event httpDone(response) - * Triggered when the server is finished sending data - * @param (see AWS.Request~send) - * @context (see AWS.Request~send) - * - * @see AWS.Response - */ -AWS.Request = inherit({ - - /** - * Creates a request for an operation on a given service with - * a set of input parameters. - * - * @param service [AWS.Service] the service to perform the operation on - * @param operation [String] the operation to perform on the service - * @param params [Object] parameters to send to the operation. - * See the operation's documentation for the format of the - * parameters. - */ - constructor: function Request(service, operation, params) { - var endpoint = service.endpoint; - var region = service.config.region; - var customUserAgent = service.config.customUserAgent; - - // global endpoints sign as us-east-1 - if (service.isGlobalEndpoint) region = 'us-east-1'; - - this.domain = domain && domain.active; - this.service = service; - this.operation = operation; - this.params = params || {}; - this.httpRequest = new AWS.HttpRequest(endpoint, region, customUserAgent); - this.startTime = AWS.util.date.getDate(); - - this.response = new AWS.Response(this); - this._asm = new AcceptorStateMachine(fsm.states, 'validate'); - this._haltHandlersOnError = false; - - AWS.SequentialExecutor.call(this); - this.emit = this.emitEvent; - }, - - /** - * @!group Sending a Request - */ - - /** - * @overload send(callback = null) - * Sends the request object. - * - * @callback callback function(err, data) - * If a callback is supplied, it is called when a response is returned - * from the service. - * @context [AWS.Request] the request object being sent. - * @param err [Error] the error object returned from the request. - * Set to `null` if the request is successful. - * @param data [Object] the de-serialized data returned from - * the request. Set to `null` if a request error occurs. - * @example Sending a request with a callback - * request = s3.putObject({Bucket: 'bucket', Key: 'key'}); - * request.send(function(err, data) { console.log(err, data); }); - * @example Sending a request with no callback (using event handlers) - * request = s3.putObject({Bucket: 'bucket', Key: 'key'}); - * request.on('complete', function(response) { ... }); // register a callback - * request.send(); - */ - send: function send(callback) { - if (callback) { - this.on('complete', function (resp) { - callback.call(resp, resp.error, resp.data); - }); - } - this.runTo(); - - return this.response; - }, - - /** - * @!method promise() - * Returns a 'thenable' promise. - * - * Two callbacks can be provided to the `then` method on the returned promise. - * The first callback will be called if the promise is fulfilled, and the second - * callback will be called if the promise is rejected. - * @callback fulfilledCallback function(data) - * Called if the promise is fulfilled. - * @param data [Object] the de-serialized data returned from the request. - * @callback rejectedCallback function(error) - * Called if the promise is rejected. - * @param error [Error] the error object returned from the request. - * @return [Promise] A promise that represents the state of the request. - * @example Sending a request using promises. - * var request = s3.putObject({Bucket: 'bucket', Key: 'key'}); - * var result = request.promise(); - * result.then(function(data) { ... }, function(error) { ... }); - */ - - /** - * @api private - */ - build: function build(callback) { - return this.runTo('send', callback); - }, - - /** - * @api private - */ - runTo: function runTo(state, done) { - this._asm.runTo(state, done, this); - return this; - }, - - /** - * Aborts a request, emitting the error and complete events. - * - * @!macro nobrowser - * @example Aborting a request after sending - * var params = { - * Bucket: 'bucket', Key: 'key', - * Body: new Buffer(1024 * 1024 * 5) // 5MB payload - * }; - * var request = s3.putObject(params); - * request.send(function (err, data) { - * if (err) console.log("Error:", err.code, err.message); - * else console.log(data); - * }); - * - * // abort request in 1 second - * setTimeout(request.abort.bind(request), 1000); - * - * // prints "Error: RequestAbortedError Request aborted by user" - * @return [AWS.Request] the same request object, for chaining. - * @since v1.4.0 - */ - abort: function abort() { - this.removeAllListeners('validateResponse'); - this.removeAllListeners('extractError'); - this.on('validateResponse', function addAbortedError(resp) { - resp.error = AWS.util.error(new Error('Request aborted by user'), { - code: 'RequestAbortedError', retryable: false - }); - }); - - if (this.httpRequest.stream) { // abort HTTP stream - this.httpRequest.stream.abort(); - if (this.httpRequest._abortCallback) { - this.httpRequest._abortCallback(); - } else { - this.removeAllListeners('send'); // haven't sent yet, so let's not - } - } - - return this; - }, - - /** - * Iterates over each page of results given a pageable request, calling - * the provided callback with each page of data. After all pages have been - * retrieved, the callback is called with `null` data. - * - * @note This operation can generate multiple requests to a service. - * @example Iterating over multiple pages of objects in an S3 bucket - * var pages = 1; - * s3.listObjects().eachPage(function(err, data) { - * if (err) return; - * console.log("Page", pages++); - * console.log(data); - * }); - * @example Iterating over multiple pages with an asynchronous callback - * s3.listObjects(params).eachPage(function(err, data, done) { - * doSomethingAsyncAndOrExpensive(function() { - * // The next page of results isn't fetched until done is called - * done(); - * }); - * }); - * @callback callback function(err, data, [doneCallback]) - * Called with each page of resulting data from the request. If the - * optional `doneCallback` is provided in the function, it must be called - * when the callback is complete. - * - * @param err [Error] an error object, if an error occurred. - * @param data [Object] a single page of response data. If there is no - * more data, this object will be `null`. - * @param doneCallback [Function] an optional done callback. If this - * argument is defined in the function declaration, it should be called - * when the next page is ready to be retrieved. This is useful for - * controlling serial pagination across asynchronous operations. - * @return [Boolean] if the callback returns `false`, pagination will - * stop. - * - * @see AWS.Request.eachItem - * @see AWS.Response.nextPage - * @since v1.4.0 - */ - eachPage: function eachPage(callback) { - // Make all callbacks async-ish - callback = AWS.util.fn.makeAsync(callback, 3); - - function wrappedCallback(response) { - callback.call(response, response.error, response.data, function (result) { - if (result === false) return; - - if (response.hasNextPage()) { - response.nextPage().on('complete', wrappedCallback).send(); - } else { - callback.call(response, null, null, AWS.util.fn.noop); - } - }); - } - - this.on('complete', wrappedCallback).send(); - }, - - /** - * Enumerates over individual items of a request, paging the responses if - * necessary. - * - * @api experimental - * @since v1.4.0 - */ - eachItem: function eachItem(callback) { - var self = this; - function wrappedCallback(err, data) { - if (err) return callback(err, null); - if (data === null) return callback(null, null); - - var config = self.service.paginationConfig(self.operation); - var resultKey = config.resultKey; - if (Array.isArray(resultKey)) resultKey = resultKey[0]; - var items = jmespath.search(data, resultKey); - var continueIteration = true; - AWS.util.arrayEach(items, function(item) { - continueIteration = callback(null, item); - if (continueIteration === false) { - return AWS.util.abort; - } - }); - return continueIteration; - } - - this.eachPage(wrappedCallback); - }, - - /** - * @return [Boolean] whether the operation can return multiple pages of - * response data. - * @see AWS.Response.eachPage - * @since v1.4.0 - */ - isPageable: function isPageable() { - return this.service.paginationConfig(this.operation) ? true : false; - }, - - /** - * Converts the request object into a readable stream that - * can be read from or piped into a writable stream. - * - * @note The data read from a readable stream contains only - * the raw HTTP body contents. - * @example Manually reading from a stream - * request.createReadStream().on('data', function(data) { - * console.log("Got data:", data.toString()); - * }); - * @example Piping a request body into a file - * var out = fs.createWriteStream('/path/to/outfile.jpg'); - * s3.service.getObject(params).createReadStream().pipe(out); - * @return [Stream] the readable stream object that can be piped - * or read from (by registering 'data' event listeners). - * @!macro nobrowser - */ - createReadStream: function createReadStream() { - var streams = AWS.util.stream; - var req = this; - var stream = null; - - if (AWS.HttpClient.streamsApiVersion === 2) { - stream = new streams.PassThrough(); - req.send(); - } else { - stream = new streams.Stream(); - stream.readable = true; - - stream.sent = false; - stream.on('newListener', function(event) { - if (!stream.sent && event === 'data') { - stream.sent = true; - process.nextTick(function() { req.send(); }); - } - }); - } - - this.on('httpHeaders', function streamHeaders(statusCode, headers, resp) { - if (statusCode < 300) { - req.removeListener('httpData', AWS.EventListeners.Core.HTTP_DATA); - req.removeListener('httpError', AWS.EventListeners.Core.HTTP_ERROR); - req.on('httpError', function streamHttpError(error) { - resp.error = error; - resp.error.retryable = false; - }); - - var shouldCheckContentLength = false; - var expectedLen; - if (req.httpRequest.method !== 'HEAD') { - expectedLen = parseInt(headers['content-length'], 10); - } - if (expectedLen !== undefined && !isNaN(expectedLen) && expectedLen >= 0) { - shouldCheckContentLength = true; - var receivedLen = 0; - } - - var checkContentLengthAndEmit = function checkContentLengthAndEmit() { - if (shouldCheckContentLength && receivedLen !== expectedLen) { - stream.emit('error', AWS.util.error( - new Error('Stream content length mismatch. Received ' + - receivedLen + ' of ' + expectedLen + ' bytes.'), - { code: 'StreamContentLengthMismatch' } - )); - } else if (AWS.HttpClient.streamsApiVersion === 2) { - stream.end(); - } else { - stream.emit('end') - } - } - - var httpStream = resp.httpResponse.createUnbufferedStream(); - - if (AWS.HttpClient.streamsApiVersion === 2) { - if (shouldCheckContentLength) { - var lengthAccumulator = new streams.PassThrough(); - lengthAccumulator._write = function(chunk) { - if (chunk && chunk.length) { - receivedLen += chunk.length; - } - return streams.PassThrough.prototype._write.apply(this, arguments); - }; - - lengthAccumulator.on('end', checkContentLengthAndEmit); - httpStream.pipe(lengthAccumulator).pipe(stream, { end: false }); - } else { - httpStream.pipe(stream); - } - } else { - - if (shouldCheckContentLength) { - httpStream.on('data', function(arg) { - if (arg && arg.length) { - receivedLen += arg.length; - } - }); - } - - httpStream.on('data', function(arg) { - stream.emit('data', arg); - }); - httpStream.on('end', checkContentLengthAndEmit); - } - - httpStream.on('error', function(err) { - shouldCheckContentLength = false; - stream.emit('error', err); - }); - } - }); - - this.on('error', function(err) { - stream.emit('error', err); - }); - - return stream; - }, - - /** - * @param [Array,Response] args This should be the response object, - * or an array of args to send to the event. - * @api private - */ - emitEvent: function emit(eventName, args, done) { - if (typeof args === 'function') { done = args; args = null; } - if (!done) done = function() { }; - if (!args) args = this.eventParameters(eventName, this.response); - - var origEmit = AWS.SequentialExecutor.prototype.emit; - origEmit.call(this, eventName, args, function (err) { - if (err) this.response.error = err; - done.call(this, err); - }); - }, - - /** - * @api private - */ - eventParameters: function eventParameters(eventName) { - switch (eventName) { - case 'restart': - case 'validate': - case 'sign': - case 'build': - case 'afterValidate': - case 'afterBuild': - return [this]; - case 'error': - return [this.response.error, this.response]; - default: - return [this.response]; - } - }, - - /** - * @api private - */ - presign: function presign(expires, callback) { - if (!callback && typeof expires === 'function') { - callback = expires; - expires = null; - } - return new AWS.Signers.Presign().sign(this.toGet(), expires, callback); - }, - - /** - * @api private - */ - isPresigned: function isPresigned() { - return Object.prototype.hasOwnProperty.call(this.httpRequest.headers, 'presigned-expires'); - }, - - /** - * @api private - */ - toUnauthenticated: function toUnauthenticated() { - this.removeListener('validate', AWS.EventListeners.Core.VALIDATE_CREDENTIALS); - this.removeListener('sign', AWS.EventListeners.Core.SIGN); - return this; - }, - - /** - * @api private - */ - toGet: function toGet() { - if (this.service.api.protocol === 'query' || - this.service.api.protocol === 'ec2') { - this.removeListener('build', this.buildAsGet); - this.addListener('build', this.buildAsGet); - } - return this; - }, - - /** - * @api private - */ - buildAsGet: function buildAsGet(request) { - request.httpRequest.method = 'GET'; - request.httpRequest.path = request.service.endpoint.path + - '?' + request.httpRequest.body; - request.httpRequest.body = ''; - - // don't need these headers on a GET request - delete request.httpRequest.headers['Content-Length']; - delete request.httpRequest.headers['Content-Type']; - }, - - /** - * @api private - */ - haltHandlersOnError: function haltHandlersOnError() { - this._haltHandlersOnError = true; - } -}); - -AWS.util.addPromisesToRequests(AWS.Request); - -AWS.util.mixin(AWS.Request, AWS.SequentialExecutor); diff --git a/node_modules/aws-sdk/lib/resource_waiter.js b/node_modules/aws-sdk/lib/resource_waiter.js deleted file mode 100644 index a2fe364..0000000 --- a/node_modules/aws-sdk/lib/resource_waiter.js +++ /dev/null @@ -1,178 +0,0 @@ -/** - * Copyright 2012-2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You - * may not use this file except in compliance with the License. A copy of - * the License is located at - * - * http://aws.amazon.com/apache2.0/ - * - * or in the "license" file accompanying this file. This file is - * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF - * ANY KIND, either express or implied. See the License for the specific - * language governing permissions and limitations under the License. - */ - -var AWS = require('./core'); -var inherit = AWS.util.inherit; -var jmespath = require('jmespath'); - -/** - * @api private - */ -function CHECK_ACCEPTORS(resp) { - var waiter = resp.request._waiter; - var acceptors = waiter.config.acceptors; - var acceptorMatched = false; - var state = 'retry'; - - acceptors.forEach(function(acceptor) { - if (!acceptorMatched) { - var matcher = waiter.matchers[acceptor.matcher]; - if (matcher && matcher(resp, acceptor.expected, acceptor.argument)) { - acceptorMatched = true; - state = acceptor.state; - } - } - }); - - if (!acceptorMatched && resp.error) state = 'failure'; - - if (state === 'success') { - waiter.setSuccess(resp); - } else { - waiter.setError(resp, state === 'retry'); - } -} - -/** - * @api private - */ -AWS.ResourceWaiter = inherit({ - /** - * Waits for a given state on a service object - * @param service [Service] the service object to wait on - * @param state [String] the state (defined in waiter configuration) to wait - * for. - * @example Create a waiter for running EC2 instances - * var ec2 = new AWS.EC2; - * var waiter = new AWS.ResourceWaiter(ec2, 'instanceRunning'); - */ - constructor: function constructor(service, state) { - this.service = service; - this.state = state; - this.loadWaiterConfig(this.state); - }, - - service: null, - - state: null, - - config: null, - - matchers: { - path: function(resp, expected, argument) { - var result = jmespath.search(resp.data, argument); - return jmespath.strictDeepEqual(result,expected); - }, - - pathAll: function(resp, expected, argument) { - var results = jmespath.search(resp.data, argument); - if (!Array.isArray(results)) results = [results]; - var numResults = results.length; - if (!numResults) return false; - for (var ind = 0 ; ind < numResults; ind++) { - if (!jmespath.strictDeepEqual(results[ind], expected)) { - return false; - } - } - return true; - }, - - pathAny: function(resp, expected, argument) { - var results = jmespath.search(resp.data, argument); - if (!Array.isArray(results)) results = [results]; - var numResults = results.length; - for (var ind = 0 ; ind < numResults; ind++) { - if (jmespath.strictDeepEqual(results[ind], expected)) { - return true; - } - } - return false; - }, - - status: function(resp, expected) { - var statusCode = resp.httpResponse.statusCode; - return (typeof statusCode === 'number') && (statusCode === expected); - }, - - error: function(resp, expected) { - if (typeof expected === 'string' && resp.error) { - return expected === resp.error.code; - } - // if expected is not string, can be boolean indicating presence of error - return expected === !!resp.error; - } - }, - - listeners: new AWS.SequentialExecutor().addNamedListeners(function(add) { - add('RETRY_CHECK', 'retry', function(resp) { - var waiter = resp.request._waiter; - if (resp.error && resp.error.code === 'ResourceNotReady') { - resp.error.retryDelay = (waiter.config.delay || 0) * 1000; - } - }); - - add('CHECK_OUTPUT', 'extractData', CHECK_ACCEPTORS); - - add('CHECK_ERROR', 'extractError', CHECK_ACCEPTORS); - }), - - /** - * @return [AWS.Request] - */ - wait: function wait(params, callback) { - if (typeof params === 'function') { - callback = params; params = undefined; - } - - var request = this.service.makeRequest(this.config.operation, params); - request._waiter = this; - request.response.maxRetries = this.config.maxAttempts; - request.addListeners(this.listeners); - - if (callback) request.send(callback); - return request; - }, - - setSuccess: function setSuccess(resp) { - resp.error = null; - resp.data = resp.data || {}; - resp.request.removeAllListeners('extractData'); - }, - - setError: function setError(resp, retryable) { - resp.data = null; - resp.error = AWS.util.error(resp.error || new Error(), { - code: 'ResourceNotReady', - message: 'Resource is not in the state ' + this.state, - retryable: retryable - }); - }, - - /** - * Loads waiter configuration from API configuration - * - * @api private - */ - loadWaiterConfig: function loadWaiterConfig(state) { - if (!this.service.api.waiters[state]) { - throw new AWS.util.error(new Error(), { - code: 'StateNotFoundError', - message: 'State ' + state + ' not found.' - }); - } - - this.config = this.service.api.waiters[state]; - } -}); diff --git a/node_modules/aws-sdk/lib/response.js b/node_modules/aws-sdk/lib/response.js deleted file mode 100644 index 568f831..0000000 --- a/node_modules/aws-sdk/lib/response.js +++ /dev/null @@ -1,201 +0,0 @@ -var AWS = require('./core'); -var inherit = AWS.util.inherit; -var jmespath = require('jmespath'); - -/** - * This class encapsulates the response information - * from a service request operation sent through {AWS.Request}. - * The response object has two main properties for getting information - * back from a request: - * - * ## The `data` property - * - * The `response.data` property contains the serialized object data - * retrieved from the service request. For instance, for an - * Amazon DynamoDB `listTables` method call, the response data might - * look like: - * - * ``` - * > resp.data - * { TableNames: - * [ 'table1', 'table2', ... ] } - * ``` - * - * The `data` property can be null if an error occurs (see below). - * - * ## The `error` property - * - * In the event of a service error (or transfer error), the - * `response.error` property will be filled with the given - * error data in the form: - * - * ``` - * { code: 'SHORT_UNIQUE_ERROR_CODE', - * message: 'Some human readable error message' } - * ``` - * - * In the case of an error, the `data` property will be `null`. - * Note that if you handle events that can be in a failure state, - * you should always check whether `response.error` is set - * before attempting to access the `response.data` property. - * - * @!attribute data - * @readonly - * @!group Data Properties - * @note Inside of a {AWS.Request~httpData} event, this - * property contains a single raw packet instead of the - * full de-serialized service response. - * @return [Object] the de-serialized response data - * from the service. - * - * @!attribute error - * An structure containing information about a service - * or networking error. - * @readonly - * @!group Data Properties - * @note This attribute is only filled if a service or - * networking error occurs. - * @return [Error] - * * code [String] a unique short code representing the - * error that was emitted. - * * message [String] a longer human readable error message - * * retryable [Boolean] whether the error message is - * retryable. - * * statusCode [Numeric] in the case of a request that reached the service, - * this value contains the response status code. - * * time [Date] the date time object when the error occurred. - * * hostname [String] set when a networking error occurs to easily - * identify the endpoint of the request. - * * region [String] set when a networking error occurs to easily - * identify the region of the request. - * - * @!attribute requestId - * @readonly - * @!group Data Properties - * @return [String] the unique request ID associated with the response. - * Log this value when debugging requests for AWS support. - * - * @!attribute retryCount - * @readonly - * @!group Operation Properties - * @return [Integer] the number of retries that were - * attempted before the request was completed. - * - * @!attribute redirectCount - * @readonly - * @!group Operation Properties - * @return [Integer] the number of redirects that were - * followed before the request was completed. - * - * @!attribute httpResponse - * @readonly - * @!group HTTP Properties - * @return [AWS.HttpResponse] the raw HTTP response object - * containing the response headers and body information - * from the server. - * - * @see AWS.Request - */ -AWS.Response = inherit({ - - /** - * @api private - */ - constructor: function Response(request) { - this.request = request; - this.data = null; - this.error = null; - this.retryCount = 0; - this.redirectCount = 0; - this.httpResponse = new AWS.HttpResponse(); - if (request) { - this.maxRetries = request.service.numRetries(); - this.maxRedirects = request.service.config.maxRedirects; - } - }, - - /** - * Creates a new request for the next page of response data, calling the - * callback with the page data if a callback is provided. - * - * @callback callback function(err, data) - * Called when a page of data is returned from the next request. - * - * @param err [Error] an error object, if an error occurred in the request - * @param data [Object] the next page of data, or null, if there are no - * more pages left. - * @return [AWS.Request] the request object for the next page of data - * @return [null] if no callback is provided and there are no pages left - * to retrieve. - * @since v1.4.0 - */ - nextPage: function nextPage(callback) { - var config; - var service = this.request.service; - var operation = this.request.operation; - try { - config = service.paginationConfig(operation, true); - } catch (e) { this.error = e; } - - if (!this.hasNextPage()) { - if (callback) callback(this.error, null); - else if (this.error) throw this.error; - return null; - } - - var params = AWS.util.copy(this.request.params); - if (!this.nextPageTokens) { - return callback ? callback(null, null) : null; - } else { - var inputTokens = config.inputToken; - if (typeof inputTokens === 'string') inputTokens = [inputTokens]; - for (var i = 0; i < inputTokens.length; i++) { - params[inputTokens[i]] = this.nextPageTokens[i]; - } - return service.makeRequest(this.request.operation, params, callback); - } - }, - - /** - * @return [Boolean] whether more pages of data can be returned by further - * requests - * @since v1.4.0 - */ - hasNextPage: function hasNextPage() { - this.cacheNextPageTokens(); - if (this.nextPageTokens) return true; - if (this.nextPageTokens === undefined) return undefined; - else return false; - }, - - /** - * @api private - */ - cacheNextPageTokens: function cacheNextPageTokens() { - if (Object.prototype.hasOwnProperty.call(this, 'nextPageTokens')) return this.nextPageTokens; - this.nextPageTokens = undefined; - - var config = this.request.service.paginationConfig(this.request.operation); - if (!config) return this.nextPageTokens; - - this.nextPageTokens = null; - if (config.moreResults) { - if (!jmespath.search(this.data, config.moreResults)) { - return this.nextPageTokens; - } - } - - var exprs = config.outputToken; - if (typeof exprs === 'string') exprs = [exprs]; - AWS.util.arrayEach.call(this, exprs, function (expr) { - var output = jmespath.search(this.data, expr); - if (output) { - this.nextPageTokens = this.nextPageTokens || []; - this.nextPageTokens.push(output); - } - }); - - return this.nextPageTokens; - } - -}); diff --git a/node_modules/aws-sdk/lib/s3/managed_upload.js b/node_modules/aws-sdk/lib/s3/managed_upload.js deleted file mode 100644 index 1dcb1e6..0000000 --- a/node_modules/aws-sdk/lib/s3/managed_upload.js +++ /dev/null @@ -1,601 +0,0 @@ -var AWS = require('../core'); -var byteLength = AWS.util.string.byteLength; -var Buffer = AWS.util.Buffer; - -/** - * The managed uploader allows for easy and efficient uploading of buffers, - * blobs, or streams, using a configurable amount of concurrency to perform - * multipart uploads where possible. This abstraction also enables uploading - * streams of unknown size due to the use of multipart uploads. - * - * To construct a managed upload object, see the {constructor} function. - * - * ## Tracking upload progress - * - * The managed upload object can also track progress by attaching an - * 'httpUploadProgress' listener to the upload manager. This event is similar - * to {AWS.Request~httpUploadProgress} but groups all concurrent upload progress - * into a single event. See {AWS.S3.ManagedUpload~httpUploadProgress} for more - * information. - * - * ## Handling Multipart Cleanup - * - * By default, this class will automatically clean up any multipart uploads - * when an individual part upload fails. This behavior can be disabled in order - * to manually handle failures by setting the `leavePartsOnError` configuration - * option to `true` when initializing the upload object. - * - * @!event httpUploadProgress(progress) - * Triggered when the uploader has uploaded more data. - * @note The `total` property may not be set if the stream being uploaded has - * not yet finished chunking. In this case the `total` will be undefined - * until the total stream size is known. - * @note This event will not be emitted in Node.js 0.8.x. - * @param progress [map] An object containing the `loaded` and `total` bytes - * of the request and the `key` of the S3 object. Note that `total` may be undefined until the payload - * size is known. - * @context (see AWS.Request~send) - */ -AWS.S3.ManagedUpload = AWS.util.inherit({ - /** - * Creates a managed upload object with a set of configuration options. - * - * @note A "Body" parameter is required to be set prior to calling {send}. - * @option options params [map] a map of parameters to pass to the upload - * requests. The "Body" parameter is required to be specified either on - * the service or in the params option. - * @note ContentMD5 should not be provided when using the managed upload object. - * Instead, setting "computeChecksums" to true will enable automatic ContentMD5 generation - * by the managed upload object. - * @option options queueSize [Number] (4) the size of the concurrent queue - * manager to upload parts in parallel. Set to 1 for synchronous uploading - * of parts. Note that the uploader will buffer at most queueSize * partSize - * bytes into memory at any given time. - * @option options partSize [Number] (5mb) the size in bytes for each - * individual part to be uploaded. Adjust the part size to ensure the number - * of parts does not exceed {maxTotalParts}. See {minPartSize} for the - * minimum allowed part size. - * @option options leavePartsOnError [Boolean] (false) whether to abort the - * multipart upload if an error occurs. Set to true if you want to handle - * failures manually. - * @option options service [AWS.S3] an optional S3 service object to use for - * requests. This object might have bound parameters used by the uploader. - * @example Creating a default uploader for a stream object - * var upload = new AWS.S3.ManagedUpload({ - * params: {Bucket: 'bucket', Key: 'key', Body: stream} - * }); - * @example Creating an uploader with concurrency of 1 and partSize of 10mb - * var upload = new AWS.S3.ManagedUpload({ - * partSize: 10 * 1024 * 1024, queueSize: 1, - * params: {Bucket: 'bucket', Key: 'key', Body: stream} - * }); - * @see send - */ - constructor: function ManagedUpload(options) { - var self = this; - AWS.SequentialExecutor.call(self); - self.body = null; - self.sliceFn = null; - self.callback = null; - self.parts = {}; - self.completeInfo = []; - self.fillQueue = function() { - self.callback(new Error('Unsupported body payload ' + typeof self.body)); - }; - - self.configure(options); - }, - - /** - * @api private - */ - configure: function configure(options) { - options = options || {}; - this.partSize = this.minPartSize; - - if (options.queueSize) this.queueSize = options.queueSize; - if (options.partSize) this.partSize = options.partSize; - if (options.leavePartsOnError) this.leavePartsOnError = true; - - if (this.partSize < this.minPartSize) { - throw new Error('partSize must be greater than ' + - this.minPartSize); - } - - this.service = options.service; - this.bindServiceObject(options.params); - this.validateBody(); - this.adjustTotalBytes(); - }, - - /** - * @api private - */ - leavePartsOnError: false, - - /** - * @api private - */ - queueSize: 4, - - /** - * @api private - */ - partSize: null, - - /** - * @readonly - * @return [Number] the minimum number of bytes for an individual part - * upload. - */ - minPartSize: 1024 * 1024 * 5, - - /** - * @readonly - * @return [Number] the maximum allowed number of parts in a multipart upload. - */ - maxTotalParts: 10000, - - /** - * Initiates the managed upload for the payload. - * - * @callback callback function(err, data) - * @param err [Error] an error or null if no error occurred. - * @param data [map] The response data from the successful upload: - * * `Location` (String) the URL of the uploaded object - * * `ETag` (String) the ETag of the uploaded object - * * `Bucket` (String) the bucket to which the object was uploaded - * * `Key` (String) the key to which the object was uploaded - * @example Sending a managed upload object - * var params = {Bucket: 'bucket', Key: 'key', Body: stream}; - * var upload = new AWS.S3.ManagedUpload({params: params}); - * upload.send(function(err, data) { - * console.log(err, data); - * }); - */ - send: function(callback) { - var self = this; - self.failed = false; - self.callback = callback || function(err) { if (err) throw err; }; - - var runFill = true; - if (self.sliceFn) { - self.fillQueue = self.fillBuffer; - } else if (AWS.util.isNode()) { - var Stream = AWS.util.stream.Stream; - if (self.body instanceof Stream) { - runFill = false; - self.fillQueue = self.fillStream; - self.partBuffers = []; - self.body. - on('readable', function() { self.fillQueue(); }). - on('end', function() { - self.isDoneChunking = true; - self.numParts = self.totalPartNumbers; - self.fillQueue.call(self); - }); - } - } - - if (runFill) self.fillQueue.call(self); - }, - - /** - * Aborts a managed upload, including all concurrent upload requests. - * @note By default, calling this function will cleanup a multipart upload - * if one was created. To leave the multipart upload around after aborting - * a request, configure `leavePartsOnError` to `true` in the {constructor}. - * @note Calling {abort} in the browser environment will not abort any requests - * that are already in flight. If a multipart upload was created, any parts - * not yet uploaded will not be sent, and the multipart upload will be cleaned up. - * @example Aborting an upload - * var params = { - * Bucket: 'bucket', Key: 'key', - * Body: new Buffer(1024 * 1024 * 25) // 25MB payload - * }; - * var upload = s3.upload(params); - * upload.send(function (err, data) { - * if (err) console.log("Error:", err.code, err.message); - * else console.log(data); - * }); - * - * // abort request in 1 second - * setTimeout(upload.abort.bind(upload), 1000); - */ - abort: function() { - this.cleanup(AWS.util.error(new Error('Request aborted by user'), { - code: 'RequestAbortedError', retryable: false - })); - }, - - /** - * @api private - */ - validateBody: function validateBody() { - var self = this; - self.body = self.service.config.params.Body; - if (!self.body) throw new Error('params.Body is required'); - if (typeof self.body === 'string') { - self.body = new AWS.util.Buffer(self.body); - } - self.sliceFn = AWS.util.arraySliceFn(self.body); - }, - - /** - * @api private - */ - bindServiceObject: function bindServiceObject(params) { - params = params || {}; - var self = this; - - // bind parameters to new service object - if (!self.service) { - self.service = new AWS.S3({params: params}); - } else { - var config = AWS.util.copy(self.service.config); - self.service = new self.service.constructor.__super__(config); - self.service.config.params = - AWS.util.merge(self.service.config.params || {}, params); - } - }, - - /** - * @api private - */ - adjustTotalBytes: function adjustTotalBytes() { - var self = this; - try { // try to get totalBytes - self.totalBytes = byteLength(self.body); - } catch (e) { } - - // try to adjust partSize if we know payload length - if (self.totalBytes) { - var newPartSize = Math.ceil(self.totalBytes / self.maxTotalParts); - if (newPartSize > self.partSize) self.partSize = newPartSize; - } else { - self.totalBytes = undefined; - } - }, - - /** - * @api private - */ - isDoneChunking: false, - - /** - * @api private - */ - partPos: 0, - - /** - * @api private - */ - totalChunkedBytes: 0, - - /** - * @api private - */ - totalUploadedBytes: 0, - - /** - * @api private - */ - totalBytes: undefined, - - /** - * @api private - */ - numParts: 0, - - /** - * @api private - */ - totalPartNumbers: 0, - - /** - * @api private - */ - activeParts: 0, - - /** - * @api private - */ - doneParts: 0, - - /** - * @api private - */ - parts: null, - - /** - * @api private - */ - completeInfo: null, - - /** - * @api private - */ - failed: false, - - /** - * @api private - */ - multipartReq: null, - - /** - * @api private - */ - partBuffers: null, - - /** - * @api private - */ - partBufferLength: 0, - - /** - * @api private - */ - fillBuffer: function fillBuffer() { - var self = this; - var bodyLen = byteLength(self.body); - - if (bodyLen === 0) { - self.isDoneChunking = true; - self.numParts = 1; - self.nextChunk(self.body); - return; - } - - while (self.activeParts < self.queueSize && self.partPos < bodyLen) { - var endPos = Math.min(self.partPos + self.partSize, bodyLen); - var buf = self.sliceFn.call(self.body, self.partPos, endPos); - self.partPos += self.partSize; - - if (byteLength(buf) < self.partSize || self.partPos === bodyLen) { - self.isDoneChunking = true; - self.numParts = self.totalPartNumbers + 1; - } - self.nextChunk(buf); - } - }, - - /** - * @api private - */ - fillStream: function fillStream() { - var self = this; - if (self.activeParts >= self.queueSize) return; - - var buf = self.body.read(self.partSize - self.partBufferLength) || - self.body.read(); - if (buf) { - self.partBuffers.push(buf); - self.partBufferLength += buf.length; - self.totalChunkedBytes += buf.length; - } - - if (self.partBufferLength >= self.partSize) { - // if we have single buffer we avoid copyfull concat - var pbuf = self.partBuffers.length === 1 ? - self.partBuffers[0] : Buffer.concat(self.partBuffers); - self.partBuffers = []; - self.partBufferLength = 0; - - // if we have more than partSize, push the rest back on the queue - if (pbuf.length > self.partSize) { - var rest = pbuf.slice(self.partSize); - self.partBuffers.push(rest); - self.partBufferLength += rest.length; - pbuf = pbuf.slice(0, self.partSize); - } - - self.nextChunk(pbuf); - } - - if (self.isDoneChunking && !self.isDoneSending) { - // if we have single buffer we avoid copyfull concat - pbuf = self.partBuffers.length === 1 ? - self.partBuffers[0] : Buffer.concat(self.partBuffers); - self.partBuffers = []; - self.partBufferLength = 0; - self.totalBytes = self.totalChunkedBytes; - self.isDoneSending = true; - - if (self.numParts === 0 || pbuf.length > 0) { - self.numParts++; - self.nextChunk(pbuf); - } - } - - self.body.read(0); - }, - - /** - * @api private - */ - nextChunk: function nextChunk(chunk) { - var self = this; - if (self.failed) return null; - - var partNumber = ++self.totalPartNumbers; - if (self.isDoneChunking && partNumber === 1) { - var req = self.service.putObject({Body: chunk}); - req._managedUpload = self; - req.on('httpUploadProgress', self.progress).send(self.finishSinglePart); - return null; - } else if (self.service.config.params.ContentMD5) { - var err = AWS.util.error(new Error('The Content-MD5 you specified is invalid for multi-part uploads.'), { - code: 'InvalidDigest', retryable: false - }); - - self.cleanup(err); - return null; - } - - if (self.completeInfo[partNumber] && self.completeInfo[partNumber].ETag !== null) { - return null; // Already uploaded this part. - } - - self.activeParts++; - if (!self.service.config.params.UploadId) { - - if (!self.multipartReq) { // create multipart - self.multipartReq = self.service.createMultipartUpload(); - self.multipartReq.on('success', function(resp) { - self.service.config.params.UploadId = resp.data.UploadId; - self.multipartReq = null; - }); - self.queueChunks(chunk, partNumber); - self.multipartReq.on('error', function(err) { - self.cleanup(err); - }); - self.multipartReq.send(); - } else { - self.queueChunks(chunk, partNumber); - } - } else { // multipart is created, just send - self.uploadPart(chunk, partNumber); - } - }, - - /** - * @api private - */ - uploadPart: function uploadPart(chunk, partNumber) { - var self = this; - - var partParams = { - Body: chunk, - ContentLength: AWS.util.string.byteLength(chunk), - PartNumber: partNumber - }; - - var partInfo = {ETag: null, PartNumber: partNumber}; - self.completeInfo[partNumber] = partInfo; - - var req = self.service.uploadPart(partParams); - self.parts[partNumber] = req; - req._lastUploadedBytes = 0; - req._managedUpload = self; - req.on('httpUploadProgress', self.progress); - req.send(function(err, data) { - delete self.parts[partParams.PartNumber]; - self.activeParts--; - - if (!err && (!data || !data.ETag)) { - var message = 'No access to ETag property on response.'; - if (AWS.util.isBrowser()) { - message += ' Check CORS configuration to expose ETag header.'; - } - - err = AWS.util.error(new Error(message), { - code: 'ETagMissing', retryable: false - }); - } - if (err) return self.cleanup(err); - - partInfo.ETag = data.ETag; - self.doneParts++; - if (self.isDoneChunking && self.doneParts === self.numParts) { - self.finishMultiPart(); - } else { - self.fillQueue.call(self); - } - }); - }, - - /** - * @api private - */ - queueChunks: function queueChunks(chunk, partNumber) { - var self = this; - self.multipartReq.on('success', function() { - self.uploadPart(chunk, partNumber); - }); - }, - - /** - * @api private - */ - cleanup: function cleanup(err) { - var self = this; - if (self.failed) return; - - // clean up stream - if (typeof self.body.removeAllListeners === 'function' && - typeof self.body.resume === 'function') { - self.body.removeAllListeners('readable'); - self.body.removeAllListeners('end'); - self.body.resume(); - } - - if (self.service.config.params.UploadId && !self.leavePartsOnError) { - self.service.abortMultipartUpload().send(); - } - - AWS.util.each(self.parts, function(partNumber, part) { - part.removeAllListeners('complete'); - part.abort(); - }); - - self.activeParts = 0; - self.partPos = 0; - self.numParts = 0; - self.totalPartNumbers = 0; - self.parts = {}; - self.failed = true; - self.callback(err); - }, - - /** - * @api private - */ - finishMultiPart: function finishMultiPart() { - var self = this; - var completeParams = { MultipartUpload: { Parts: self.completeInfo.slice(1) } }; - self.service.completeMultipartUpload(completeParams, function(err, data) { - if (err) return self.cleanup(err); - else self.callback(err, data); - }); - }, - - /** - * @api private - */ - finishSinglePart: function finishSinglePart(err, data) { - var upload = this.request._managedUpload; - var httpReq = this.request.httpRequest; - var endpoint = httpReq.endpoint; - if (err) return upload.callback(err); - data.Location = - [endpoint.protocol, '//', endpoint.host, httpReq.path].join(''); - data.key = this.request.params.Key; // will stay undocumented - data.Key = this.request.params.Key; - data.Bucket = this.request.params.Bucket; - upload.callback(err, data); - }, - - /** - * @api private - */ - progress: function progress(info) { - var upload = this._managedUpload; - if (this.operation === 'putObject') { - info.part = 1; - info.key = this.params.Key; - } else { - upload.totalUploadedBytes += info.loaded - this._lastUploadedBytes; - this._lastUploadedBytes = info.loaded; - info = { - loaded: upload.totalUploadedBytes, - total: upload.totalBytes, - part: this.params.PartNumber, - key: this.params.Key - }; - } - upload.emit('httpUploadProgress', [info]); - } -}); - -AWS.util.mixin(AWS.S3.ManagedUpload, AWS.SequentialExecutor); -module.exports = AWS.S3.ManagedUpload; diff --git a/node_modules/aws-sdk/lib/sequential_executor.js b/node_modules/aws-sdk/lib/sequential_executor.js deleted file mode 100644 index 88c002b..0000000 --- a/node_modules/aws-sdk/lib/sequential_executor.js +++ /dev/null @@ -1,231 +0,0 @@ -var AWS = require('./core'); - -/** - * @api private - * @!method on(eventName, callback) - * Registers an event listener callback for the event given by `eventName`. - * Parameters passed to the callback function depend on the individual event - * being triggered. See the event documentation for those parameters. - * - * @param eventName [String] the event name to register the listener for - * @param callback [Function] the listener callback function - * @return [AWS.SequentialExecutor] the same object for chaining - */ -AWS.SequentialExecutor = AWS.util.inherit({ - - constructor: function SequentialExecutor() { - this._events = {}; - }, - - /** - * @api private - */ - listeners: function listeners(eventName) { - return this._events[eventName] ? this._events[eventName].slice(0) : []; - }, - - on: function on(eventName, listener) { - if (this._events[eventName]) { - this._events[eventName].push(listener); - } else { - this._events[eventName] = [listener]; - } - return this; - }, - - /** - * @api private - */ - onAsync: function onAsync(eventName, listener) { - listener._isAsync = true; - return this.on(eventName, listener); - }, - - removeListener: function removeListener(eventName, listener) { - var listeners = this._events[eventName]; - if (listeners) { - var length = listeners.length; - var position = -1; - for (var i = 0; i < length; ++i) { - if (listeners[i] === listener) { - position = i; - } - } - if (position > -1) { - listeners.splice(position, 1); - } - } - return this; - }, - - removeAllListeners: function removeAllListeners(eventName) { - if (eventName) { - delete this._events[eventName]; - } else { - this._events = {}; - } - return this; - }, - - /** - * @api private - */ - emit: function emit(eventName, eventArgs, doneCallback) { - if (!doneCallback) doneCallback = function() { }; - var listeners = this.listeners(eventName); - var count = listeners.length; - this.callListeners(listeners, eventArgs, doneCallback); - return count > 0; - }, - - /** - * @api private - */ - callListeners: function callListeners(listeners, args, doneCallback, prevError) { - var self = this; - var error = prevError || null; - - function callNextListener(err) { - if (err) { - error = AWS.util.error(error || new Error(), err); - if (self._haltHandlersOnError) { - return doneCallback.call(self, error); - } - } - self.callListeners(listeners, args, doneCallback, error); - } - - while (listeners.length > 0) { - var listener = listeners.shift(); - if (listener._isAsync) { // asynchronous listener - listener.apply(self, args.concat([callNextListener])); - return; // stop here, callNextListener will continue - } else { // synchronous listener - try { - listener.apply(self, args); - } catch (err) { - error = AWS.util.error(error || new Error(), err); - } - if (error && self._haltHandlersOnError) { - doneCallback.call(self, error); - return; - } - } - } - doneCallback.call(self, error); - }, - - /** - * Adds or copies a set of listeners from another list of - * listeners or SequentialExecutor object. - * - * @param listeners [map>, AWS.SequentialExecutor] - * a list of events and callbacks, or an event emitter object - * containing listeners to add to this emitter object. - * @return [AWS.SequentialExecutor] the emitter object, for chaining. - * @example Adding listeners from a map of listeners - * emitter.addListeners({ - * event1: [function() { ... }, function() { ... }], - * event2: [function() { ... }] - * }); - * emitter.emit('event1'); // emitter has event1 - * emitter.emit('event2'); // emitter has event2 - * @example Adding listeners from another emitter object - * var emitter1 = new AWS.SequentialExecutor(); - * emitter1.on('event1', function() { ... }); - * emitter1.on('event2', function() { ... }); - * var emitter2 = new AWS.SequentialExecutor(); - * emitter2.addListeners(emitter1); - * emitter2.emit('event1'); // emitter2 has event1 - * emitter2.emit('event2'); // emitter2 has event2 - */ - addListeners: function addListeners(listeners) { - var self = this; - - // extract listeners if parameter is an SequentialExecutor object - if (listeners._events) listeners = listeners._events; - - AWS.util.each(listeners, function(event, callbacks) { - if (typeof callbacks === 'function') callbacks = [callbacks]; - AWS.util.arrayEach(callbacks, function(callback) { - self.on(event, callback); - }); - }); - - return self; - }, - - /** - * Registers an event with {on} and saves the callback handle function - * as a property on the emitter object using a given `name`. - * - * @param name [String] the property name to set on this object containing - * the callback function handle so that the listener can be removed in - * the future. - * @param (see on) - * @return (see on) - * @example Adding a named listener DATA_CALLBACK - * var listener = function() { doSomething(); }; - * emitter.addNamedListener('DATA_CALLBACK', 'data', listener); - * - * // the following prints: true - * console.log(emitter.DATA_CALLBACK == listener); - */ - addNamedListener: function addNamedListener(name, eventName, callback) { - this[name] = callback; - this.addListener(eventName, callback); - return this; - }, - - /** - * @api private - */ - addNamedAsyncListener: function addNamedAsyncListener(name, eventName, callback) { - callback._isAsync = true; - return this.addNamedListener(name, eventName, callback); - }, - - /** - * Helper method to add a set of named listeners using - * {addNamedListener}. The callback contains a parameter - * with a handle to the `addNamedListener` method. - * - * @callback callback function(add) - * The callback function is called immediately in order to provide - * the `add` function to the block. This simplifies the addition of - * a large group of named listeners. - * @param add [Function] the {addNamedListener} function to call - * when registering listeners. - * @example Adding a set of named listeners - * emitter.addNamedListeners(function(add) { - * add('DATA_CALLBACK', 'data', function() { ... }); - * add('OTHER', 'otherEvent', function() { ... }); - * add('LAST', 'lastEvent', function() { ... }); - * }); - * - * // these properties are now set: - * emitter.DATA_CALLBACK; - * emitter.OTHER; - * emitter.LAST; - */ - addNamedListeners: function addNamedListeners(callback) { - var self = this; - callback( - function() { - self.addNamedListener.apply(self, arguments); - }, - function() { - self.addNamedAsyncListener.apply(self, arguments); - } - ); - return this; - } -}); - -/** - * {on} is the prefered method. - * @api private - */ -AWS.SequentialExecutor.prototype.addListener = AWS.SequentialExecutor.prototype.on; - -module.exports = AWS.SequentialExecutor; diff --git a/node_modules/aws-sdk/lib/service.js b/node_modules/aws-sdk/lib/service.js deleted file mode 100644 index 43aaa3e..0000000 --- a/node_modules/aws-sdk/lib/service.js +++ /dev/null @@ -1,539 +0,0 @@ -var AWS = require('./core'); -var Api = require('./model/api'); -var regionConfig = require('./region_config'); -var inherit = AWS.util.inherit; -var clientCount = 0; - -/** - * The service class representing an AWS service. - * - * @abstract - * - * @!attribute apiVersions - * @return [Array] the list of API versions supported by this service. - * @readonly - */ -AWS.Service = inherit({ - /** - * Create a new service object with a configuration object - * - * @param config [map] a map of configuration options - */ - constructor: function Service(config) { - if (!this.loadServiceClass) { - throw AWS.util.error(new Error(), - 'Service must be constructed with `new\' operator'); - } - var ServiceClass = this.loadServiceClass(config || {}); - if (ServiceClass) { - var originalConfig = AWS.util.copy(config); - var svc = new ServiceClass(config); - Object.defineProperty(svc, '_originalConfig', { - get: function() { return originalConfig; }, - enumerable: false, - configurable: true - }); - svc._clientId = ++clientCount; - return svc; - } - this.initialize(config); - }, - - /** - * @api private - */ - initialize: function initialize(config) { - var svcConfig = AWS.config[this.serviceIdentifier]; - - this.config = new AWS.Config(AWS.config); - if (svcConfig) this.config.update(svcConfig, true); - if (config) this.config.update(config, true); - - this.validateService(); - if (!this.config.endpoint) regionConfig(this); - - this.config.endpoint = this.endpointFromTemplate(this.config.endpoint); - this.setEndpoint(this.config.endpoint); - }, - - /** - * @api private - */ - validateService: function validateService() { - }, - - /** - * @api private - */ - loadServiceClass: function loadServiceClass(serviceConfig) { - var config = serviceConfig; - if (!AWS.util.isEmpty(this.api)) { - return null; - } else if (config.apiConfig) { - return AWS.Service.defineServiceApi(this.constructor, config.apiConfig); - } else if (!this.constructor.services) { - return null; - } else { - config = new AWS.Config(AWS.config); - config.update(serviceConfig, true); - var version = config.apiVersions[this.constructor.serviceIdentifier]; - version = version || config.apiVersion; - return this.getLatestServiceClass(version); - } - }, - - /** - * @api private - */ - getLatestServiceClass: function getLatestServiceClass(version) { - version = this.getLatestServiceVersion(version); - if (this.constructor.services[version] === null) { - AWS.Service.defineServiceApi(this.constructor, version); - } - - return this.constructor.services[version]; - }, - - /** - * @api private - */ - getLatestServiceVersion: function getLatestServiceVersion(version) { - if (!this.constructor.services || this.constructor.services.length === 0) { - throw new Error('No services defined on ' + - this.constructor.serviceIdentifier); - } - - if (!version) { - version = 'latest'; - } else if (AWS.util.isType(version, Date)) { - version = AWS.util.date.iso8601(version).split('T')[0]; - } - - if (Object.hasOwnProperty(this.constructor.services, version)) { - return version; - } - - var keys = Object.keys(this.constructor.services).sort(); - var selectedVersion = null; - for (var i = keys.length - 1; i >= 0; i--) { - // versions that end in "*" are not available on disk and can be - // skipped, so do not choose these as selectedVersions - if (keys[i][keys[i].length - 1] !== '*') { - selectedVersion = keys[i]; - } - if (keys[i].substr(0, 10) <= version) { - return selectedVersion; - } - } - - throw new Error('Could not find ' + this.constructor.serviceIdentifier + - ' API to satisfy version constraint `' + version + '\''); - }, - - /** - * @api private - */ - api: {}, - - /** - * @api private - */ - defaultRetryCount: 3, - - /** - * Calls an operation on a service with the given input parameters. - * - * @param operation [String] the name of the operation to call on the service. - * @param params [map] a map of input options for the operation - * @callback callback function(err, data) - * If a callback is supplied, it is called when a response is returned - * from the service. - * @param err [Error] the error object returned from the request. - * Set to `null` if the request is successful. - * @param data [Object] the de-serialized data returned from - * the request. Set to `null` if a request error occurs. - */ - makeRequest: function makeRequest(operation, params, callback) { - if (typeof params === 'function') { - callback = params; - params = null; - } - - params = params || {}; - if (this.config.params) { // copy only toplevel bound params - var rules = this.api.operations[operation]; - if (rules) { - params = AWS.util.copy(params); - AWS.util.each(this.config.params, function(key, value) { - if (rules.input.members[key]) { - if (params[key] === undefined || params[key] === null) { - params[key] = value; - } - } - }); - } - } - - var request = new AWS.Request(this, operation, params); - this.addAllRequestListeners(request); - - if (callback) request.send(callback); - return request; - }, - - /** - * Calls an operation on a service with the given input parameters, without - * any authentication data. This method is useful for "public" API operations. - * - * @param operation [String] the name of the operation to call on the service. - * @param params [map] a map of input options for the operation - * @callback callback function(err, data) - * If a callback is supplied, it is called when a response is returned - * from the service. - * @param err [Error] the error object returned from the request. - * Set to `null` if the request is successful. - * @param data [Object] the de-serialized data returned from - * the request. Set to `null` if a request error occurs. - */ - makeUnauthenticatedRequest: function makeUnauthenticatedRequest(operation, params, callback) { - if (typeof params === 'function') { - callback = params; - params = {}; - } - - var request = this.makeRequest(operation, params).toUnauthenticated(); - return callback ? request.send(callback) : request; - }, - - /** - * Waits for a given state - * - * @param state [String] the state on the service to wait for - * @param params [map] a map of parameters to pass with each request - * @callback callback function(err, data) - * If a callback is supplied, it is called when a response is returned - * from the service. - * @param err [Error] the error object returned from the request. - * Set to `null` if the request is successful. - * @param data [Object] the de-serialized data returned from - * the request. Set to `null` if a request error occurs. - */ - waitFor: function waitFor(state, params, callback) { - var waiter = new AWS.ResourceWaiter(this, state); - return waiter.wait(params, callback); - }, - - /** - * @api private - */ - addAllRequestListeners: function addAllRequestListeners(request) { - var list = [AWS.events, AWS.EventListeners.Core, this.serviceInterface(), - AWS.EventListeners.CorePost]; - for (var i = 0; i < list.length; i++) { - if (list[i]) request.addListeners(list[i]); - } - - // disable parameter validation - if (!this.config.paramValidation) { - request.removeListener('validate', - AWS.EventListeners.Core.VALIDATE_PARAMETERS); - } - - if (this.config.logger) { // add logging events - request.addListeners(AWS.EventListeners.Logger); - } - - this.setupRequestListeners(request); - }, - - /** - * Override this method to setup any custom request listeners for each - * new request to the service. - * - * @abstract - */ - setupRequestListeners: function setupRequestListeners() { - }, - - /** - * Gets the signer class for a given request - * @api private - */ - getSignerClass: function getSignerClass() { - var version; - if (this.config.signatureVersion) { - version = this.config.signatureVersion; - } else { - version = this.api.signatureVersion; - } - return AWS.Signers.RequestSigner.getVersion(version); - }, - - /** - * @api private - */ - serviceInterface: function serviceInterface() { - switch (this.api.protocol) { - case 'ec2': return AWS.EventListeners.Query; - case 'query': return AWS.EventListeners.Query; - case 'json': return AWS.EventListeners.Json; - case 'rest-json': return AWS.EventListeners.RestJson; - case 'rest-xml': return AWS.EventListeners.RestXml; - } - if (this.api.protocol) { - throw new Error('Invalid service `protocol\' ' + - this.api.protocol + ' in API config'); - } - }, - - /** - * @api private - */ - successfulResponse: function successfulResponse(resp) { - return resp.httpResponse.statusCode < 300; - }, - - /** - * How many times a failed request should be retried before giving up. - * the defaultRetryCount can be overriden by service classes. - * - * @api private - */ - numRetries: function numRetries() { - if (this.config.maxRetries !== undefined) { - return this.config.maxRetries; - } else { - return this.defaultRetryCount; - } - }, - - /** - * @api private - */ - retryDelays: function retryDelays(retryCount) { - return AWS.util.calculateRetryDelay(retryCount, this.config.retryDelayOptions); - }, - - /** - * @api private - */ - retryableError: function retryableError(error) { - if (this.networkingError(error)) return true; - if (this.expiredCredentialsError(error)) return true; - if (this.throttledError(error)) return true; - if (error.statusCode >= 500) return true; - return false; - }, - - /** - * @api private - */ - networkingError: function networkingError(error) { - return error.code === 'NetworkingError'; - }, - - /** - * @api private - */ - expiredCredentialsError: function expiredCredentialsError(error) { - // TODO : this only handles *one* of the expired credential codes - return (error.code === 'ExpiredTokenException'); - }, - - /** - * @api private - */ - clockSkewError: function clockSkewError(error) { - switch (error.code) { - case 'RequestTimeTooSkewed': - case 'RequestExpired': - case 'InvalidSignatureException': - case 'SignatureDoesNotMatch': - case 'AuthFailure': - case 'RequestInTheFuture': - return true; - default: return false; - } - }, - - /** - * @api private - */ - throttledError: function throttledError(error) { - // this logic varies between services - switch (error.code) { - case 'ProvisionedThroughputExceededException': - case 'Throttling': - case 'ThrottlingException': - case 'RequestLimitExceeded': - case 'RequestThrottled': - return true; - default: - return false; - } - }, - - /** - * @api private - */ - endpointFromTemplate: function endpointFromTemplate(endpoint) { - if (typeof endpoint !== 'string') return endpoint; - - var e = endpoint; - e = e.replace(/\{service\}/g, this.api.endpointPrefix); - e = e.replace(/\{region\}/g, this.config.region); - e = e.replace(/\{scheme\}/g, this.config.sslEnabled ? 'https' : 'http'); - return e; - }, - - /** - * @api private - */ - setEndpoint: function setEndpoint(endpoint) { - this.endpoint = new AWS.Endpoint(endpoint, this.config); - }, - - /** - * @api private - */ - paginationConfig: function paginationConfig(operation, throwException) { - var paginator = this.api.operations[operation].paginator; - if (!paginator) { - if (throwException) { - var e = new Error(); - throw AWS.util.error(e, 'No pagination configuration for ' + operation); - } - return null; - } - - return paginator; - } -}); - -AWS.util.update(AWS.Service, { - - /** - * Adds one method for each operation described in the api configuration - * - * @api private - */ - defineMethods: function defineMethods(svc) { - AWS.util.each(svc.prototype.api.operations, function iterator(method) { - if (svc.prototype[method]) return; - var operation = svc.prototype.api.operations[method]; - if (operation.authtype === 'none') { - svc.prototype[method] = function (params, callback) { - return this.makeUnauthenticatedRequest(method, params, callback); - }; - } else { - svc.prototype[method] = function (params, callback) { - return this.makeRequest(method, params, callback); - }; - } - }); - }, - - /** - * Defines a new Service class using a service identifier and list of versions - * including an optional set of features (functions) to apply to the class - * prototype. - * - * @param serviceIdentifier [String] the identifier for the service - * @param versions [Array] a list of versions that work with this - * service - * @param features [Object] an object to attach to the prototype - * @return [Class] the service class defined by this function. - */ - defineService: function defineService(serviceIdentifier, versions, features) { - AWS.Service._serviceMap[serviceIdentifier] = true; - if (!Array.isArray(versions)) { - features = versions; - versions = []; - } - - var svc = inherit(AWS.Service, features || {}); - - if (typeof serviceIdentifier === 'string') { - AWS.Service.addVersions(svc, versions); - - var identifier = svc.serviceIdentifier || serviceIdentifier; - svc.serviceIdentifier = identifier; - } else { // defineService called with an API - svc.prototype.api = serviceIdentifier; - AWS.Service.defineMethods(svc); - } - - return svc; - }, - - /** - * @api private - */ - addVersions: function addVersions(svc, versions) { - if (!Array.isArray(versions)) versions = [versions]; - - svc.services = svc.services || {}; - for (var i = 0; i < versions.length; i++) { - if (svc.services[versions[i]] === undefined) { - svc.services[versions[i]] = null; - } - } - - svc.apiVersions = Object.keys(svc.services).sort(); - }, - - /** - * @api private - */ - defineServiceApi: function defineServiceApi(superclass, version, apiConfig) { - var svc = inherit(superclass, { - serviceIdentifier: superclass.serviceIdentifier - }); - - function setApi(api) { - if (api.isApi) { - svc.prototype.api = api; - } else { - svc.prototype.api = new Api(api); - } - } - - if (typeof version === 'string') { - if (apiConfig) { - setApi(apiConfig); - } else { - try { - setApi(AWS.apiLoader(superclass.serviceIdentifier, version)); - } catch (err) { - throw AWS.util.error(err, { - message: 'Could not find API configuration ' + - superclass.serviceIdentifier + '-' + version - }); - } - } - if (!Object.prototype.hasOwnProperty.call(superclass.services, version)) { - superclass.apiVersions = superclass.apiVersions.concat(version).sort(); - } - superclass.services[version] = svc; - } else { - setApi(version); - } - - AWS.Service.defineMethods(svc); - return svc; - }, - - /** - * @api private - */ - hasService: function(identifier) { - return Object.prototype.hasOwnProperty.call(AWS.Service._serviceMap, identifier); - }, - - /** - * @api private - */ - _serviceMap: {} -}); - -module.exports = AWS.Service; \ No newline at end of file diff --git a/node_modules/aws-sdk/lib/services/apigateway.js b/node_modules/aws-sdk/lib/services/apigateway.js deleted file mode 100644 index feceff0..0000000 --- a/node_modules/aws-sdk/lib/services/apigateway.js +++ /dev/null @@ -1,34 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.APIGateway.prototype, { -/** - * Sets the Accept header to application/json. - * - * @api private - */ - setAcceptHeader: function setAcceptHeader(req) { - var httpRequest = req.httpRequest; - httpRequest.headers['Accept'] = 'application/json'; - }, - - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('build', this.setAcceptHeader); - if (request.operation === 'getSdk') { - request.addListener('extractData', this.useRawPayload); - } - }, - - useRawPayload: function useRawPayload(resp) { - var req = resp.request; - var operation = req.operation; - var rules = req.service.api.operations[operation].output || {}; - if (rules.payload) { - var body = resp.httpResponse.body; - resp.data[rules.payload] = body; - } - } -}); - diff --git a/node_modules/aws-sdk/lib/services/cloudfront.js b/node_modules/aws-sdk/lib/services/cloudfront.js deleted file mode 100644 index 3a918c2..0000000 --- a/node_modules/aws-sdk/lib/services/cloudfront.js +++ /dev/null @@ -1,12 +0,0 @@ -var AWS = require('../core'); - -// pull in CloudFront signer -require('../cloudfront/signer'); - -AWS.util.update(AWS.CloudFront.prototype, { - - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('extractData', AWS.util.hoistPayloadMember); - } - -}); diff --git a/node_modules/aws-sdk/lib/services/cloudsearchdomain.js b/node_modules/aws-sdk/lib/services/cloudsearchdomain.js deleted file mode 100644 index e9c9431..0000000 --- a/node_modules/aws-sdk/lib/services/cloudsearchdomain.js +++ /dev/null @@ -1,120 +0,0 @@ -var AWS = require('../core'); - -/** - * Constructs a service interface object. Each API operation is exposed as a - * function on service. - * - * ### Sending a Request Using CloudSearchDomain - * - * ```javascript - * var csd = new AWS.CloudSearchDomain({endpoint: 'my.host.tld'}); - * csd.search(params, function (err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - * ``` - * - * ### Locking the API Version - * - * In order to ensure that the CloudSearchDomain object uses this specific API, - * you can construct the object by passing the `apiVersion` option to the - * constructor: - * - * ```javascript - * var csd = new AWS.CloudSearchDomain({ - * endpoint: 'my.host.tld', - * apiVersion: '2013-01-01' - * }); - * ``` - * - * You can also set the API version globally in `AWS.config.apiVersions` using - * the **cloudsearchdomain** service identifier: - * - * ```javascript - * AWS.config.apiVersions = { - * cloudsearchdomain: '2013-01-01', - * // other service API versions - * }; - * - * var csd = new AWS.CloudSearchDomain({endpoint: 'my.host.tld'}); - * ``` - * - * @note You *must* provide an `endpoint` configuration parameter when - * constructing this service. See {constructor} for more information. - * - * @!method constructor(options = {}) - * Constructs a service object. This object has one method for each - * API operation. - * - * @example Constructing a CloudSearchDomain object - * var csd = new AWS.CloudSearchDomain({endpoint: 'my.host.tld'}); - * @note You *must* provide an `endpoint` when constructing this service. - * @option (see AWS.Config.constructor) - * - * @service cloudsearchdomain - * @version 2013-01-01 - */ -AWS.util.update(AWS.CloudSearchDomain.prototype, { - /** - * @api private - */ - validateService: function validateService() { - if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { - var msg = 'AWS.CloudSearchDomain requires an explicit ' + - '`endpoint\' configuration option.'; - throw AWS.util.error(new Error(), - {name: 'InvalidEndpoint', message: msg}); - } - }, - - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.removeListener('validate', - AWS.EventListeners.Core.VALIDATE_CREDENTIALS - ); - request.onAsync('validate', this.validateCredentials); - request.addListener('validate', this.updateRegion); - if (request.operation === 'search') { - request.addListener('build', this.convertGetToPost); - } - }, - - /** - * @api private - */ - validateCredentials: function(req, done) { - if (!req.service.api.signatureVersion) return done(); // none - req.service.config.getCredentials(function(err) { - if (err) { - req.removeListener('sign', AWS.EventListeners.Core.SIGN); - } - done(); - }); - }, - - /** - * @api private - */ - convertGetToPost: function(request) { - var httpRequest = request.httpRequest - // convert queries to POST to avoid length restrictions - var path = httpRequest.path.split('?') - httpRequest.method = 'POST' - httpRequest.path = path[0] - httpRequest.body = path[1] - httpRequest.headers['Content-Length'] = httpRequest.body.length - httpRequest.headers['Content-Type'] = 'application/x-www-form-urlencoded' - }, - - /** - * @api private - */ - updateRegion: function updateRegion(request) { - var endpoint = request.httpRequest.endpoint.hostname; - var zones = endpoint.split('.'); - request.httpRequest.region = zones[1] || request.httpRequest.region; - } - -}); diff --git a/node_modules/aws-sdk/lib/services/cognitoidentity.js b/node_modules/aws-sdk/lib/services/cognitoidentity.js deleted file mode 100644 index 7fa7048..0000000 --- a/node_modules/aws-sdk/lib/services/cognitoidentity.js +++ /dev/null @@ -1,15 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.CognitoIdentity.prototype, { - getOpenIdToken: function getOpenIdToken(params, callback) { - return this.makeUnauthenticatedRequest('getOpenIdToken', params, callback); - }, - - getId: function getId(params, callback) { - return this.makeUnauthenticatedRequest('getId', params, callback); - }, - - getCredentialsForIdentity: function getCredentialsForIdentity(params, callback) { - return this.makeUnauthenticatedRequest('getCredentialsForIdentity', params, callback); - } -}); diff --git a/node_modules/aws-sdk/lib/services/dynamodb.js b/node_modules/aws-sdk/lib/services/dynamodb.js deleted file mode 100644 index a95bd97..0000000 --- a/node_modules/aws-sdk/lib/services/dynamodb.js +++ /dev/null @@ -1,53 +0,0 @@ -var AWS = require('../core'); -require('../dynamodb/document_client'); - -AWS.util.update(AWS.DynamoDB.prototype, { - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - if (request.service.config.dynamoDbCrc32) { - request.removeListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); - request.addListener('extractData', this.checkCrc32); - request.addListener('extractData', AWS.EventListeners.Json.EXTRACT_DATA); - } - }, - - /** - * @api private - */ - checkCrc32: function checkCrc32(resp) { - if (!resp.httpResponse.streaming && !resp.request.service.crc32IsValid(resp)) { - resp.data = null; - resp.error = AWS.util.error(new Error(), { - code: 'CRC32CheckFailed', - message: 'CRC32 integrity check failed', - retryable: true - }); - resp.request.haltHandlersOnError(); - throw (resp.error); - } - }, - - /** - * @api private - */ - crc32IsValid: function crc32IsValid(resp) { - var crc = resp.httpResponse.headers['x-amz-crc32']; - if (!crc) return true; // no (valid) CRC32 header - return parseInt(crc, 10) === AWS.util.crypto.crc32(resp.httpResponse.body); - }, - - /** - * @api private - */ - defaultRetryCount: 10, - - /** - * @api private - */ - retryDelays: function retryDelays(retryCount) { - var delay = retryCount > 0 ? (50 * Math.pow(2, retryCount - 1)) : 0; - return delay; - } -}); diff --git a/node_modules/aws-sdk/lib/services/ec2.js b/node_modules/aws-sdk/lib/services/ec2.js deleted file mode 100644 index 94122bd..0000000 --- a/node_modules/aws-sdk/lib/services/ec2.js +++ /dev/null @@ -1,62 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.EC2.prototype, { - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.removeListener('extractError', AWS.EventListeners.Query.EXTRACT_ERROR); - request.addListener('extractError', this.extractError); - - if (request.operation === 'copySnapshot') { - request.onAsync('validate', this.buildCopySnapshotPresignedUrl); - } - }, - - /** - * @api private - */ - buildCopySnapshotPresignedUrl: function buildCopySnapshotPresignedUrl(req, done) { - if (req.params.PresignedUrl || req._subRequest) { - return done(); - } - - req.params = AWS.util.copy(req.params); - req.params.DestinationRegion = req.service.config.region; - - var config = AWS.util.copy(req.service.config); - delete config.endpoint; - config.region = req.params.SourceRegion; - var svc = new req.service.constructor(config); - var newReq = svc[req.operation](req.params); - newReq._subRequest = true; - newReq.presign(function(err, url) { - if (err) done(err); - else { - req.params.PresignedUrl = url; - done(); - } - }); - }, - - /** - * @api private - */ - extractError: function extractError(resp) { - // EC2 nests the error code and message deeper than other AWS Query services. - var httpResponse = resp.httpResponse; - var data = new AWS.XML.Parser().parse(httpResponse.body.toString() || ''); - if (data.Errors) { - resp.error = AWS.util.error(new Error(), { - code: data.Errors.Error.Code, - message: data.Errors.Error.Message - }); - } else { - resp.error = AWS.util.error(new Error(), { - code: httpResponse.statusCode, - message: null - }); - } - resp.error.requestId = data.RequestID || null; - } -}); diff --git a/node_modules/aws-sdk/lib/services/glacier.js b/node_modules/aws-sdk/lib/services/glacier.js deleted file mode 100644 index 115cff4..0000000 --- a/node_modules/aws-sdk/lib/services/glacier.js +++ /dev/null @@ -1,114 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.Glacier.prototype, { - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - if (Array.isArray(request._events.validate)) { - request._events.validate.unshift(this.validateAccountId); - } else { - request.on('validate', this.validateAccountId); - } - request.removeListener('afterBuild', - AWS.EventListeners.Core.COMPUTE_SHA256); - request.on('build', this.addGlacierApiVersion); - request.on('build', this.addTreeHashHeaders); - }, - - /** - * @api private - */ - validateAccountId: function validateAccountId(request) { - if (request.params.accountId !== undefined) return; - request.params = AWS.util.copy(request.params); - request.params.accountId = '-'; - }, - - /** - * @api private - */ - addGlacierApiVersion: function addGlacierApiVersion(request) { - var version = request.service.api.apiVersion; - request.httpRequest.headers['x-amz-glacier-version'] = version; - }, - - /** - * @api private - */ - addTreeHashHeaders: function addTreeHashHeaders(request) { - if (request.params.body === undefined) return; - - var hashes = request.service.computeChecksums(request.params.body); - request.httpRequest.headers['X-Amz-Content-Sha256'] = hashes.linearHash; - - if (!request.httpRequest.headers['x-amz-sha256-tree-hash']) { - request.httpRequest.headers['x-amz-sha256-tree-hash'] = hashes.treeHash; - } - }, - - /** - * @!group Computing Checksums - */ - - /** - * Computes the SHA-256 linear and tree hash checksums for a given - * block of Buffer data. Pass the tree hash of the computed checksums - * as the checksum input to the {completeMultipartUpload} when performing - * a multi-part upload. - * - * @example Calculate checksum of 5.5MB data chunk - * var glacier = new AWS.Glacier(); - * var data = new Buffer(5.5 * 1024 * 1024); - * data.fill('0'); // fill with zeros - * var results = glacier.computeChecksums(data); - * // Result: { linearHash: '68aff0c5a9...', treeHash: '154e26c78f...' } - * @param data [Buffer, String] data to calculate the checksum for - * @return [map] a map containing - * the linearHash and treeHash properties representing hex based digests - * of the respective checksums. - * @see completeMultipartUpload - */ - computeChecksums: function computeChecksums(data) { - if (!AWS.util.Buffer.isBuffer(data)) data = new AWS.util.Buffer(data); - - var mb = 1024 * 1024; - var hashes = []; - var hash = AWS.util.crypto.createHash('sha256'); - - // build leaf nodes in 1mb chunks - for (var i = 0; i < data.length; i += mb) { - var chunk = data.slice(i, Math.min(i + mb, data.length)); - hash.update(chunk); - hashes.push(AWS.util.crypto.sha256(chunk)); - } - - return { - linearHash: hash.digest('hex'), - treeHash: this.buildHashTree(hashes) - }; - }, - - /** - * @api private - */ - buildHashTree: function buildHashTree(hashes) { - // merge leaf nodes - while (hashes.length > 1) { - var tmpHashes = []; - for (var i = 0; i < hashes.length; i += 2) { - if (hashes[i + 1]) { - var tmpHash = new AWS.util.Buffer(64); - tmpHash.write(hashes[i], 0, 32, 'binary'); - tmpHash.write(hashes[i + 1], 32, 32, 'binary'); - tmpHashes.push(AWS.util.crypto.sha256(tmpHash)); - } else { - tmpHashes.push(hashes[i]); - } - } - hashes = tmpHashes; - } - - return AWS.util.crypto.toHex(hashes[0]); - } -}); diff --git a/node_modules/aws-sdk/lib/services/iotdata.js b/node_modules/aws-sdk/lib/services/iotdata.js deleted file mode 100644 index 1f09b40..0000000 --- a/node_modules/aws-sdk/lib/services/iotdata.js +++ /dev/null @@ -1,88 +0,0 @@ -var AWS = require('../core'); - -/** - * Constructs a service interface object. Each API operation is exposed as a - * function on service. - * - * ### Sending a Request Using IotData - * - * ```javascript - * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'}); - * iotdata.getThingShadow(params, function (err, data) { - * if (err) console.log(err, err.stack); // an error occurred - * else console.log(data); // successful response - * }); - * ``` - * - * ### Locking the API Version - * - * In order to ensure that the IotData object uses this specific API, - * you can construct the object by passing the `apiVersion` option to the - * constructor: - * - * ```javascript - * var iotdata = new AWS.IotData({ - * endpoint: 'my.host.tld', - * apiVersion: '2015-05-28' - * }); - * ``` - * - * You can also set the API version globally in `AWS.config.apiVersions` using - * the **iotdata** service identifier: - * - * ```javascript - * AWS.config.apiVersions = { - * iotdata: '2015-05-28', - * // other service API versions - * }; - * - * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'}); - * ``` - * - * @note You *must* provide an `endpoint` configuration parameter when - * constructing this service. See {constructor} for more information. - * - * @!method constructor(options = {}) - * Constructs a service object. This object has one method for each - * API operation. - * - * @example Constructing a IotData object - * var iotdata = new AWS.IotData({endpoint: 'my.host.tld'}); - * @note You *must* provide an `endpoint` when constructing this service. - * @option (see AWS.Config.constructor) - * - * @service iotdata - * @version 2015-05-28 - */ -AWS.util.update(AWS.IotData.prototype, { - /** - * @api private - */ - validateService: function validateService() { - if (!this.config.endpoint || this.config.endpoint.indexOf('{') >= 0) { - var msg = 'AWS.IotData requires an explicit ' + - '`endpoint\' configuration option.'; - throw AWS.util.error(new Error(), - {name: 'InvalidEndpoint', message: msg}); - } - }, - - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('validateResponse', this.validateResponseBody) - }, - - /** - * @api private - */ - validateResponseBody: function validateResponseBody(resp) { - var body = resp.httpResponse.body.toString() || '{}'; - var bodyCheck = body.trim(); - if (!bodyCheck || bodyCheck.charAt(0) !== '{') { - resp.httpResponse.body = ''; - } - } - -}); diff --git a/node_modules/aws-sdk/lib/services/machinelearning.js b/node_modules/aws-sdk/lib/services/machinelearning.js deleted file mode 100644 index e2808f4..0000000 --- a/node_modules/aws-sdk/lib/services/machinelearning.js +++ /dev/null @@ -1,24 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.MachineLearning.prototype, { - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - if (request.operation === 'predict') { - request.addListener('build', this.buildEndpoint); - } - }, - - /** - * Updates request endpoint from PredictEndpoint - * @api private - */ - buildEndpoint: function buildEndpoint(request) { - var url = request.params.PredictEndpoint; - if (url) { - request.httpRequest.endpoint = new AWS.Endpoint(url); - } - } - -}); diff --git a/node_modules/aws-sdk/lib/services/route53.js b/node_modules/aws-sdk/lib/services/route53.js deleted file mode 100644 index fe6a721..0000000 --- a/node_modules/aws-sdk/lib/services/route53.js +++ /dev/null @@ -1,32 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.Route53.prototype, { - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.on('build', this.sanitizeUrl); - }, - - /** - * @api private - */ - sanitizeUrl: function sanitizeUrl(request) { - var path = request.httpRequest.path; - request.httpRequest.path = path.replace(/\/%2F\w+%2F/, '/'); - }, - - /** - * @return [Boolean] whether the error can be retried - * @api private - */ - retryableError: function retryableError(error) { - if (error.code === 'PriorRequestNotComplete' && - error.statusCode === 400) { - return true; - } else { - var _super = AWS.Service.prototype.retryableError; - return _super.call(this, error); - } - } -}); diff --git a/node_modules/aws-sdk/lib/services/s3.js b/node_modules/aws-sdk/lib/services/s3.js deleted file mode 100644 index 1ebd3c8..0000000 --- a/node_modules/aws-sdk/lib/services/s3.js +++ /dev/null @@ -1,832 +0,0 @@ -var AWS = require('../core'); - -// Pull in managed upload extension -require('../s3/managed_upload'); - -/** - * @api private - */ -var operationsWith200StatusCodeError = { - 'completeMultipartUpload': true, - 'copyObject': true, - 'uploadPartCopy': true -}; - -/** - * @api private - */ - var regionRedirectErrorCodes = [ - 'AuthorizationHeaderMalformed', // non-head operations on virtual-hosted global bucket endpoints - 'BadRequest', // head operations on virtual-hosted global bucket endpoints - 'PermanentRedirect', // non-head operations on path-style or regional endpoints - 301 // head operations on path-style or regional endpoints - ]; - -AWS.util.update(AWS.S3.prototype, { - /** - * @api private - */ - getSignerClass: function getSignerClass(request) { - var defaultApiVersion = this.api.signatureVersion; - var userDefinedVersion = this._originalConfig ? this._originalConfig.signatureVersion : null; - var regionDefinedVersion = this.config.signatureVersion; - var isPresigned = request ? request.isPresigned() : false; - /* - 1) User defined version specified: - a) always return user defined version - 2) No user defined version specified: - a) default to lowest version the region supports - */ - if (userDefinedVersion) { - userDefinedVersion = userDefinedVersion === 'v2' ? 's3' : userDefinedVersion; - return AWS.Signers.RequestSigner.getVersion(userDefinedVersion); - } - if (regionDefinedVersion) { - defaultApiVersion = regionDefinedVersion; - } - - return AWS.Signers.RequestSigner.getVersion(defaultApiVersion); - }, - - /** - * @api private - */ - validateService: function validateService() { - var msg; - var messages = []; - - // default to us-east-1 when no region is provided - if (!this.config.region) this.config.region = 'us-east-1'; - - if (!this.config.endpoint && this.config.s3BucketEndpoint) { - messages.push('An endpoint must be provided when configuring ' + - '`s3BucketEndpoint` to true.'); - } - if (this.config.useAccelerateEndpoint && this.config.useDualstack) { - messages.push('`useAccelerateEndpoint` and `useDualstack` ' + - 'cannot both be configured to true.'); - } - if (messages.length === 1) { - msg = messages[0]; - } else if (messages.length > 1) { - msg = 'Multiple configuration errors:\n' + messages.join('\n'); - } - if (msg) { - throw AWS.util.error(new Error(), - {name: 'InvalidEndpoint', message: msg}); - } - }, - - /** - * @api private - */ - shouldDisableBodySigning: function shouldDisableBodySigning(request) { - var signerClass = this.getSignerClass(); - if (this.config.s3DisableBodySigning === true && signerClass === AWS.Signers.V4 - && request.httpRequest.endpoint.protocol === 'https:') { - return true; - } - return false; - }, - - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('validate', this.validateScheme); - request.addListener('validate', this.validateBucketEndpoint); - request.addListener('validate', this.correctBucketRegionFromCache); - request.addListener('build', this.addContentType); - request.addListener('build', this.populateURI); - request.addListener('build', this.computeContentMd5); - request.addListener('build', this.computeSseCustomerKeyMd5); - request.addListener('afterBuild', this.addExpect100Continue); - request.removeListener('validate', - AWS.EventListeners.Core.VALIDATE_REGION); - request.addListener('extractError', this.extractError); - request.onAsync('extractError', this.requestBucketRegion); - request.addListener('extractData', this.extractData); - request.addListener('extractData', AWS.util.hoistPayloadMember); - request.addListener('beforePresign', this.prepareSignedUrl); - if (AWS.util.isBrowser()) { - request.onAsync('retry', this.reqRegionForNetworkingError); - } - if (this.shouldDisableBodySigning(request)) { - request.removeListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); - request.addListener('afterBuild', this.disableBodySigning); - } - }, - - /** - * @api private - */ - validateScheme: function(req) { - var params = req.params, - scheme = req.httpRequest.endpoint.protocol, - sensitive = params.SSECustomerKey || params.CopySourceSSECustomerKey; - if (sensitive && scheme !== 'https:') { - var msg = 'Cannot send SSE keys over HTTP. Set \'sslEnabled\'' + - 'to \'true\' in your configuration'; - throw AWS.util.error(new Error(), - { code: 'ConfigError', message: msg }); - } - }, - - /** - * @api private - */ - validateBucketEndpoint: function(req) { - if (!req.params.Bucket && req.service.config.s3BucketEndpoint) { - var msg = 'Cannot send requests to root API with `s3BucketEndpoint` set.'; - throw AWS.util.error(new Error(), - { code: 'ConfigError', message: msg }); - } - }, - - /** - * @api private - */ - isValidAccelerateOperation: function isValidAccelerateOperation(operation) { - var invalidOperations = [ - 'createBucket', - 'deleteBucket', - 'listBuckets' - ]; - return invalidOperations.indexOf(operation) === -1; - }, - - - /** - * S3 prefers dns-compatible bucket names to be moved from the uri path - * to the hostname as a sub-domain. This is not possible, even for dns-compat - * buckets when using SSL and the bucket name contains a dot ('.'). The - * ssl wildcard certificate is only 1-level deep. - * - * @api private - */ - populateURI: function populateURI(req) { - var httpRequest = req.httpRequest; - var b = req.params.Bucket; - var service = req.service; - var endpoint = httpRequest.endpoint; - - if (b) { - if (!service.pathStyleBucketName(b)) { - if (service.config.useAccelerateEndpoint && service.isValidAccelerateOperation(req.operation)) { - endpoint.hostname = b + '.s3-accelerate.amazonaws.com'; - } else if (!service.config.s3BucketEndpoint) { - endpoint.hostname = - b + '.' + endpoint.hostname; - } - - var port = endpoint.port; - if (port !== 80 && port !== 443) { - endpoint.host = endpoint.hostname + ':' + - endpoint.port; - } else { - endpoint.host = endpoint.hostname; - } - - httpRequest.virtualHostedBucket = b; // needed for signing the request - service.removeVirtualHostedBucketFromPath(req); - } - } - }, - - /** - * Takes the bucket name out of the path if bucket is virtual-hosted - * - * @api private - */ - removeVirtualHostedBucketFromPath: function removeVirtualHostedBucketFromPath(req) { - var httpRequest = req.httpRequest; - var bucket = httpRequest.virtualHostedBucket; - if (bucket && httpRequest.path) { - httpRequest.path = httpRequest.path.replace(new RegExp('/' + bucket), ''); - if (httpRequest.path[0] !== '/') { - httpRequest.path = '/' + httpRequest.path; - } - } - }, - - /** - * Adds Expect: 100-continue header if payload is greater-or-equal 1MB - * @api private - */ - addExpect100Continue: function addExpect100Continue(req) { - var len = req.httpRequest.headers['Content-Length']; - if (AWS.util.isNode() && len >= 1024 * 1024) { - req.httpRequest.headers['Expect'] = '100-continue'; - } - }, - - /** - * Adds a default content type if none is supplied. - * - * @api private - */ - addContentType: function addContentType(req) { - var httpRequest = req.httpRequest; - if (httpRequest.method === 'GET' || httpRequest.method === 'HEAD') { - // Content-Type is not set in GET/HEAD requests - delete httpRequest.headers['Content-Type']; - return; - } - - if (!httpRequest.headers['Content-Type']) { // always have a Content-Type - httpRequest.headers['Content-Type'] = 'application/octet-stream'; - } - - var contentType = httpRequest.headers['Content-Type']; - if (AWS.util.isBrowser()) { - if (typeof httpRequest.body === 'string' && !contentType.match(/;\s*charset=/)) { - var charset = '; charset=UTF-8'; - httpRequest.headers['Content-Type'] += charset; - } else { - var replaceFn = function(_, prefix, charsetName) { - return prefix + charsetName.toUpperCase(); - }; - - httpRequest.headers['Content-Type'] = - contentType.replace(/(;\s*charset=)(.+)$/, replaceFn); - } - } - }, - - /** - * @api private - */ - computableChecksumOperations: { - putBucketCors: true, - putBucketLifecycle: true, - putBucketLifecycleConfiguration: true, - putBucketTagging: true, - deleteObjects: true, - putBucketReplication: true - }, - - /** - * Checks whether checksums should be computed for the request. - * If the request requires checksums to be computed, this will always - * return true, otherwise it depends on whether {AWS.Config.computeChecksums} - * is set. - * - * @param req [AWS.Request] the request to check against - * @return [Boolean] whether to compute checksums for a request. - * @api private - */ - willComputeChecksums: function willComputeChecksums(req) { - if (this.computableChecksumOperations[req.operation]) return true; - if (!this.config.computeChecksums) return false; - - // TODO: compute checksums for Stream objects - if (!AWS.util.Buffer.isBuffer(req.httpRequest.body) && - typeof req.httpRequest.body !== 'string') { - return false; - } - - var rules = req.service.api.operations[req.operation].input.members; - - // Sha256 signing disabled, and not a presigned url - if (req.service.shouldDisableBodySigning(req) && !Object.prototype.hasOwnProperty.call(req.httpRequest.headers, 'presigned-expires')) { - if (rules.ContentMD5 && !req.params.ContentMD5) { - return true; - } - } - - // V4 signer uses SHA256 signatures so only compute MD5 if it is required - if (req.service.getSignerClass(req) === AWS.Signers.V4) { - if (rules.ContentMD5 && !rules.ContentMD5.required) return false; - } - - if (rules.ContentMD5 && !req.params.ContentMD5) return true; - }, - - /** - * A listener that computes the Content-MD5 and sets it in the header. - * @see AWS.S3.willComputeChecksums - * @api private - */ - computeContentMd5: function computeContentMd5(req) { - if (req.service.willComputeChecksums(req)) { - var md5 = AWS.util.crypto.md5(req.httpRequest.body, 'base64'); - req.httpRequest.headers['Content-MD5'] = md5; - } - }, - - /** - * @api private - */ - computeSseCustomerKeyMd5: function computeSseCustomerKeyMd5(req) { - var keys = { - SSECustomerKey: 'x-amz-server-side-encryption-customer-key-MD5', - CopySourceSSECustomerKey: 'x-amz-copy-source-server-side-encryption-customer-key-MD5' - }; - AWS.util.each(keys, function(key, header) { - if (req.params[key]) { - var value = AWS.util.crypto.md5(req.params[key], 'base64'); - req.httpRequest.headers[header] = value; - } - }); - }, - - /** - * Returns true if the bucket name should be left in the URI path for - * a request to S3. This function takes into account the current - * endpoint protocol (e.g. http or https). - * - * @api private - */ - pathStyleBucketName: function pathStyleBucketName(bucketName) { - // user can force path style requests via the configuration - if (this.config.s3ForcePathStyle) return true; - if (this.config.s3BucketEndpoint) return false; - - if (this.dnsCompatibleBucketName(bucketName)) { - return (this.config.sslEnabled && bucketName.match(/\./)) ? true : false; - } else { - return true; // not dns compatible names must always use path style - } - }, - - /** - * Returns true if the bucket name is DNS compatible. Buckets created - * outside of the classic region MUST be DNS compatible. - * - * @api private - */ - dnsCompatibleBucketName: function dnsCompatibleBucketName(bucketName) { - var b = bucketName; - var domain = new RegExp(/^[a-z0-9][a-z0-9\.\-]{1,61}[a-z0-9]$/); - var ipAddress = new RegExp(/(\d+\.){3}\d+/); - var dots = new RegExp(/\.\./); - return (b.match(domain) && !b.match(ipAddress) && !b.match(dots)) ? true : false; - }, - - /** - * @return [Boolean] whether response contains an error - * @api private - */ - successfulResponse: function successfulResponse(resp) { - var req = resp.request; - var httpResponse = resp.httpResponse; - if (operationsWith200StatusCodeError[req.operation] && - httpResponse.body.toString().match('')) { - return false; - } else { - return httpResponse.statusCode < 300; - } - }, - - /** - * @return [Boolean] whether the error can be retried - * @api private - */ - retryableError: function retryableError(error, request) { - if (operationsWith200StatusCodeError[request.operation] && - error.statusCode === 200) { - return true; - } else if (request._requestRegionForBucket && - request.service.bucketRegionCache[request._requestRegionForBucket]) { - return false; - } else if (error && error.code === 'RequestTimeout') { - return true; - } else if (error && - regionRedirectErrorCodes.indexOf(error.code) != -1 && - error.region && error.region != request.httpRequest.region) { - request.httpRequest.region = error.region; - if (error.statusCode === 301) { - request.service.updateReqBucketRegion(request); - } - return true; - } else { - var _super = AWS.Service.prototype.retryableError; - return _super.call(this, error, request); - } - }, - - /** - * Updates httpRequest with region. If region is not provided, then - * the httpRequest will be updated based on httpRequest.region - * - * @api private - */ - updateReqBucketRegion: function updateReqBucketRegion(request, region) { - var httpRequest = request.httpRequest; - if (typeof region === 'string' && region.length) { - httpRequest.region = region; - } - if (!httpRequest.endpoint.host.match(/s3(?!-accelerate).*\.amazonaws\.com$/)) { - return; - } - var service = request.service; - var s3Config = service.config; - var s3BucketEndpoint = s3Config.s3BucketEndpoint; - if (s3BucketEndpoint) { - delete s3Config.s3BucketEndpoint; - } - var newConfig = AWS.util.copy(s3Config); - delete newConfig.endpoint; - newConfig.region = httpRequest.region; - - httpRequest.endpoint = (new AWS.S3(newConfig)).endpoint; - service.populateURI(request); - s3Config.s3BucketEndpoint = s3BucketEndpoint; - httpRequest.headers.Host = httpRequest.endpoint.host; - - if (request._asm.currentState === 'validate') { - request.removeListener('build', service.populateURI); - request.addListener('build', service.removeVirtualHostedBucketFromPath); - } - }, - - /** - * Provides a specialized parser for getBucketLocation -- all other - * operations are parsed by the super class. - * - * @api private - */ - extractData: function extractData(resp) { - var req = resp.request; - if (req.operation === 'getBucketLocation') { - var match = resp.httpResponse.body.toString().match(/>(.+)<\/Location/); - delete resp.data['_']; - if (match) { - resp.data.LocationConstraint = match[1]; - } else { - resp.data.LocationConstraint = ''; - } - } - var bucket = req.params.Bucket || null; - if (req.operation === 'deleteBucket' && typeof bucket === 'string' && !resp.error) { - req.service.clearBucketRegionCache(bucket); - } else { - var headers = resp.httpResponse.headers || {}; - var region = headers['x-amz-bucket-region'] || null; - if (!region && req.operation === 'createBucket' && !resp.error) { - var createBucketConfiguration = req.params.CreateBucketConfiguration; - if (!createBucketConfiguration) { - region = 'us-east-1'; - } else if (createBucketConfiguration.LocationConstraint === 'EU') { - region = 'eu-west-1'; - } else { - region = createBucketConfiguration.LocationConstraint; - } - } - if (region) { - if (bucket && region !== req.service.bucketRegionCache[bucket]) { - req.service.bucketRegionCache[bucket] = region; - } - } - } - req.service.extractRequestIds(resp); - }, - - /** - * Extracts an error object from the http response. - * - * @api private - */ - extractError: function extractError(resp) { - var codes = { - 304: 'NotModified', - 403: 'Forbidden', - 400: 'BadRequest', - 404: 'NotFound' - }; - - var req = resp.request; - var code = resp.httpResponse.statusCode; - var body = resp.httpResponse.body || ''; - - var headers = resp.httpResponse.headers || {}; - var region = headers['x-amz-bucket-region'] || null; - var bucket = req.params.Bucket || null; - var bucketRegionCache = req.service.bucketRegionCache; - if (region && bucket && region !== bucketRegionCache[bucket]) { - bucketRegionCache[bucket] = region; - } - - var cachedRegion; - if (codes[code] && body.length === 0) { - if (bucket && !region) { - cachedRegion = bucketRegionCache[bucket] || null; - if (cachedRegion !== req.httpRequest.region) { - region = cachedRegion; - } - } - resp.error = AWS.util.error(new Error(), { - code: codes[code], - message: null, - region: region - }); - } else { - var data = new AWS.XML.Parser().parse(body.toString()); - - if (data.Region && !region) { - region = data.Region; - if (bucket && region !== bucketRegionCache[bucket]) { - bucketRegionCache[bucket] = region; - } - } else if (bucket && !region && !data.Region) { - cachedRegion = bucketRegionCache[bucket] || null; - if (cachedRegion !== req.httpRequest.region) { - region = cachedRegion; - } - } - - resp.error = AWS.util.error(new Error(), { - code: data.Code || code, - message: data.Message || null, - region: region - }); - } - req.service.extractRequestIds(resp); - }, - - /** - * If region was not obtained synchronously, then send async request - * to get bucket region for errors resulting from wrong region. - * - * @api private - */ - requestBucketRegion: function requestBucketRegion(resp, done) { - var error = resp.error; - var req = resp.request; - var bucket = req.params.Bucket || null; - - if (!error || !bucket || error.region || req.operation === 'listObjects' || - (AWS.util.isNode() && req.operation === 'headBucket') || - (error.statusCode === 400 && req.operation !== 'headObject') || - regionRedirectErrorCodes.indexOf(error.code) === -1) { - return done(); - } - var reqOperation = AWS.util.isNode() ? 'headBucket' : 'listObjects'; - var reqParams = {Bucket: bucket}; - if (reqOperation === 'listObjects') reqParams.MaxKeys = 0; - var regionReq = req.service[reqOperation](reqParams); - regionReq._requestRegionForBucket = bucket; - regionReq.send(function() { - var region = req.service.bucketRegionCache[bucket] || null; - error.region = region; - done(); - }); - }, - - /** - * For browser only. If NetworkingError received, will attempt to obtain - * the bucket region. - * - * @api private - */ - reqRegionForNetworkingError: function reqRegionForNetworkingError(resp, done) { - if (!AWS.util.isBrowser()) { - return done(); - } - var error = resp.error; - var request = resp.request; - var bucket = request.params.Bucket; - if (!error || error.code !== 'NetworkingError' || !bucket || - request.httpRequest.region === 'us-east-1') { - return done(); - } - var service = request.service; - var bucketRegionCache = service.bucketRegionCache; - var cachedRegion = bucketRegionCache[bucket] || null; - - if (cachedRegion && cachedRegion !== request.httpRequest.region) { - service.updateReqBucketRegion(request, cachedRegion); - done(); - } else if (!service.dnsCompatibleBucketName(bucket)) { - service.updateReqBucketRegion(request, 'us-east-1'); - if (bucketRegionCache[bucket] !== 'us-east-1') { - bucketRegionCache[bucket] = 'us-east-1'; - } - done(); - } else if (request.httpRequest.virtualHostedBucket) { - var getRegionReq = service.listObjects({Bucket: bucket, MaxKeys: 0}); - service.updateReqBucketRegion(getRegionReq, 'us-east-1'); - getRegionReq._requestRegionForBucket = bucket; - - getRegionReq.send(function() { - var region = service.bucketRegionCache[bucket] || null; - if (region && region !== request.httpRequest.region) { - service.updateReqBucketRegion(request, region); - } - done(); - }); - } else { - // DNS-compatible path-style - // (s3ForcePathStyle or bucket name with dot over https) - // Cannot obtain region information for this case - done(); - } - }, - - /** - * Cache for bucket region. - * - * @api private - */ - bucketRegionCache: {}, - - /** - * Clears bucket region cache. - * - * @api private - */ - clearBucketRegionCache: function(buckets) { - var bucketRegionCache = this.bucketRegionCache; - if (!buckets) { - buckets = Object.keys(bucketRegionCache); - } else if (typeof buckets === 'string') { - buckets = [buckets]; - } - for (var i = 0; i < buckets.length; i++) { - delete bucketRegionCache[buckets[i]]; - } - return bucketRegionCache; - }, - - /** - * Corrects request region if bucket's cached region is different - * - * @api private - */ - correctBucketRegionFromCache: function correctBucketRegionFromCache(req) { - var bucket = req.params.Bucket || null; - if (bucket) { - var service = req.service; - var requestRegion = req.httpRequest.region; - var cachedRegion = service.bucketRegionCache[bucket]; - if (cachedRegion && cachedRegion !== requestRegion) { - service.updateReqBucketRegion(req, cachedRegion); - } - } - }, - - /** - * Extracts S3 specific request ids from the http response. - * - * @api private - */ - extractRequestIds: function extractRequestIds(resp) { - var extendedRequestId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-id-2'] : null; - var cfId = resp.httpResponse.headers ? resp.httpResponse.headers['x-amz-cf-id'] : null; - resp.extendedRequestId = extendedRequestId; - resp.cfId = cfId; - - if (resp.error) { - resp.error.requestId = resp.requestId || null; - resp.error.extendedRequestId = extendedRequestId; - resp.error.cfId = cfId; - } - }, - - /** - * Get a pre-signed URL for a given operation name. - * - * @note You must ensure that you have static or previously resolved - * credentials if you call this method synchronously (with no callback), - * otherwise it may not properly sign the request. If you cannot guarantee - * this (you are using an asynchronous credential provider, i.e., EC2 - * IAM roles), you should always call this method with an asynchronous - * callback. - * @param operation [String] the name of the operation to call - * @param params [map] parameters to pass to the operation. See the given - * operation for the expected operation parameters. In addition, you can - * also pass the "Expires" parameter to inform S3 how long the URL should - * work for. - * @option params Expires [Integer] (900) the number of seconds to expire - * the pre-signed URL operation in. Defaults to 15 minutes. - * @param callback [Function] if a callback is provided, this function will - * pass the URL as the second parameter (after the error parameter) to - * the callback function. - * @return [String] if called synchronously (with no callback), returns the - * signed URL. - * @return [null] nothing is returned if a callback is provided. - * @example Pre-signing a getObject operation (synchronously) - * var params = {Bucket: 'bucket', Key: 'key'}; - * var url = s3.getSignedUrl('getObject', params); - * console.log('The URL is', url); - * @example Pre-signing a putObject (asynchronously) - * var params = {Bucket: 'bucket', Key: 'key'}; - * s3.getSignedUrl('putObject', params, function (err, url) { - * console.log('The URL is', url); - * }); - * @example Pre-signing a putObject operation with a specific payload - * var params = {Bucket: 'bucket', Key: 'key', Body: 'body'}; - * var url = s3.getSignedUrl('putObject', params); - * console.log('The URL is', url); - * @example Passing in a 1-minute expiry time for a pre-signed URL - * var params = {Bucket: 'bucket', Key: 'key', Expires: 60}; - * var url = s3.getSignedUrl('getObject', params); - * console.log('The URL is', url); // expires in 60 seconds - */ - getSignedUrl: function getSignedUrl(operation, params, callback) { - params = AWS.util.copy(params || {}); - var expires = params.Expires || 900; - delete params.Expires; // we can't validate this - var request = this.makeRequest(operation, params); - return request.presign(expires, callback); - }, - - /** - * @api private - */ - prepareSignedUrl: function prepareSignedUrl(request) { - request.addListener('validate', request.service.noPresignedContentLength); - request.removeListener('build', request.service.addContentType); - if (!request.params.Body) { - // no Content-MD5/SHA-256 if body is not provided - request.removeListener('build', request.service.computeContentMd5); - } else { - request.addListener('afterBuild', AWS.EventListeners.Core.COMPUTE_SHA256); - } - }, - - /** - * @api private - * @param request - */ - disableBodySigning: function disableBodySigning(request) { - var headers = request.httpRequest.headers; - // Add the header to anything that isn't a presigned url, unless that presigned url had a body defined - if (!Object.prototype.hasOwnProperty.call(headers, 'presigned-expires')) { - headers['X-Amz-Content-Sha256'] = 'UNSIGNED-PAYLOAD'; - } - }, - - /** - * @api private - */ - noPresignedContentLength: function noPresignedContentLength(request) { - if (request.params.ContentLength !== undefined) { - throw AWS.util.error(new Error(), {code: 'UnexpectedParameter', - message: 'ContentLength is not supported in pre-signed URLs.'}); - } - }, - - createBucket: function createBucket(params, callback) { - // When creating a bucket *outside* the classic region, the location - // constraint must be set for the bucket and it must match the endpoint. - // This chunk of code will set the location constraint param based - // on the region (when possible), but it will not override a passed-in - // location constraint. - if (typeof params === 'function' || !params) { - callback = callback || params; - params = {}; - } - var hostname = this.endpoint.hostname; - if (hostname !== this.api.globalEndpoint && !params.CreateBucketConfiguration) { - params.CreateBucketConfiguration = { LocationConstraint: this.config.region }; - } - return this.makeRequest('createBucket', params, callback); - }, - - /** - * @overload upload(params = {}, [options], [callback]) - * Uploads an arbitrarily sized buffer, blob, or stream, using intelligent - * concurrent handling of parts if the payload is large enough. You can - * configure the concurrent queue size by setting `options`. Note that this - * is the only operation for which the SDK can retry requests with stream - * bodies. - * - * @param (see AWS.S3.putObject) - * @option (see AWS.S3.ManagedUpload.constructor) - * @return [AWS.S3.ManagedUpload] the managed upload object that can call - * `send()` or track progress. - * @example Uploading a stream object - * var params = {Bucket: 'bucket', Key: 'key', Body: stream}; - * s3.upload(params, function(err, data) { - * console.log(err, data); - * }); - * @example Uploading a stream with concurrency of 1 and partSize of 10mb - * var params = {Bucket: 'bucket', Key: 'key', Body: stream}; - * var options = {partSize: 10 * 1024 * 1024, queueSize: 1}; - * s3.upload(params, options, function(err, data) { - * console.log(err, data); - * }); - * @callback callback function(err, data) - * @param err [Error] an error or null if no error occurred. - * @param data [map] The response data from the successful upload: - * * `Location` (String) the URL of the uploaded object - * * `ETag` (String) the ETag of the uploaded object - * * `Bucket` (String) the bucket to which the object was uploaded - * * `Key` (String) the key to which the object was uploaded - * @see AWS.S3.ManagedUpload - */ - upload: function upload(params, options, callback) { - if (typeof options === 'function' && callback === undefined) { - callback = options; - options = null; - } - - options = options || {}; - options = AWS.util.merge(options || {}, {service: this, params: params}); - - var uploader = new AWS.S3.ManagedUpload(options); - if (typeof callback === 'function') uploader.send(callback); - return uploader; - } -}); diff --git a/node_modules/aws-sdk/lib/services/sqs.js b/node_modules/aws-sdk/lib/services/sqs.js deleted file mode 100644 index 42aaf2e..0000000 --- a/node_modules/aws-sdk/lib/services/sqs.js +++ /dev/null @@ -1,131 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.SQS.prototype, { - /** - * @api private - */ - setupRequestListeners: function setupRequestListeners(request) { - request.addListener('build', this.buildEndpoint); - - if (request.service.config.computeChecksums) { - if (request.operation === 'sendMessage') { - request.addListener('extractData', this.verifySendMessageChecksum); - } else if (request.operation === 'sendMessageBatch') { - request.addListener('extractData', this.verifySendMessageBatchChecksum); - } else if (request.operation === 'receiveMessage') { - request.addListener('extractData', this.verifyReceiveMessageChecksum); - } - } - }, - - /** - * @api private - */ - verifySendMessageChecksum: function verifySendMessageChecksum(response) { - if (!response.data) return; - - var md5 = response.data.MD5OfMessageBody; - var body = this.params.MessageBody; - var calculatedMd5 = this.service.calculateChecksum(body); - if (calculatedMd5 !== md5) { - var msg = 'Got "' + response.data.MD5OfMessageBody + - '", expecting "' + calculatedMd5 + '".'; - this.service.throwInvalidChecksumError(response, - [response.data.MessageId], msg); - } - }, - - /** - * @api private - */ - verifySendMessageBatchChecksum: function verifySendMessageBatchChecksum(response) { - if (!response.data) return; - - var service = this.service; - var entries = {}; - var errors = []; - var messageIds = []; - AWS.util.arrayEach(response.data.Successful, function (entry) { - entries[entry.Id] = entry; - }); - AWS.util.arrayEach(this.params.Entries, function (entry) { - if (entries[entry.Id]) { - var md5 = entries[entry.Id].MD5OfMessageBody; - var body = entry.MessageBody; - if (!service.isChecksumValid(md5, body)) { - errors.push(entry.Id); - messageIds.push(entries[entry.Id].MessageId); - } - } - }); - - if (errors.length > 0) { - service.throwInvalidChecksumError(response, messageIds, - 'Invalid messages: ' + errors.join(', ')); - } - }, - - /** - * @api private - */ - verifyReceiveMessageChecksum: function verifyReceiveMessageChecksum(response) { - if (!response.data) return; - - var service = this.service; - var messageIds = []; - AWS.util.arrayEach(response.data.Messages, function(message) { - var md5 = message.MD5OfBody; - var body = message.Body; - if (!service.isChecksumValid(md5, body)) { - messageIds.push(message.MessageId); - } - }); - - if (messageIds.length > 0) { - service.throwInvalidChecksumError(response, messageIds, - 'Invalid messages: ' + messageIds.join(', ')); - } - }, - - /** - * @api private - */ - throwInvalidChecksumError: function throwInvalidChecksumError(response, ids, message) { - response.error = AWS.util.error(new Error(), { - retryable: true, - code: 'InvalidChecksum', - messageIds: ids, - message: response.request.operation + - ' returned an invalid MD5 response. ' + message - }); - }, - - /** - * @api private - */ - isChecksumValid: function isChecksumValid(checksum, data) { - return this.calculateChecksum(data) === checksum; - }, - - /** - * @api private - */ - calculateChecksum: function calculateChecksum(data) { - return AWS.util.crypto.md5(data, 'hex'); - }, - - /** - * @api private - */ - buildEndpoint: function buildEndpoint(request) { - var url = request.httpRequest.params.QueueUrl; - if (url) { - request.httpRequest.endpoint = new AWS.Endpoint(url); - - // signature version 4 requires the region name to be set, - // sqs queue urls contain the region name - var matches = request.httpRequest.endpoint.host.match(/^sqs\.(.+?)\./); - if (matches) request.httpRequest.region = matches[1]; - } - } -}); diff --git a/node_modules/aws-sdk/lib/services/sts.js b/node_modules/aws-sdk/lib/services/sts.js deleted file mode 100644 index 6e9fd00..0000000 --- a/node_modules/aws-sdk/lib/services/sts.js +++ /dev/null @@ -1,47 +0,0 @@ -var AWS = require('../core'); - -AWS.util.update(AWS.STS.prototype, { - /** - * @overload credentialsFrom(data, credentials = null) - * Creates a credentials object from STS response data containing - * credentials information. Useful for quickly setting AWS credentials. - * - * @note This is a low-level utility function. If you want to load temporary - * credentials into your process for subsequent requests to AWS resources, - * you should use {AWS.TemporaryCredentials} instead. - * @param data [map] data retrieved from a call to {getFederatedToken}, - * {getSessionToken}, {assumeRole}, or {assumeRoleWithWebIdentity}. - * @param credentials [AWS.Credentials] an optional credentials object to - * fill instead of creating a new object. Useful when modifying an - * existing credentials object from a refresh call. - * @return [AWS.TemporaryCredentials] the set of temporary credentials - * loaded from a raw STS operation response. - * @example Using credentialsFrom to load global AWS credentials - * var sts = new AWS.STS(); - * sts.getSessionToken(function (err, data) { - * if (err) console.log("Error getting credentials"); - * else { - * AWS.config.credentials = sts.credentialsFrom(data); - * } - * }); - * @see AWS.TemporaryCredentials - */ - credentialsFrom: function credentialsFrom(data, credentials) { - if (!data) return null; - if (!credentials) credentials = new AWS.TemporaryCredentials(); - credentials.expired = false; - credentials.accessKeyId = data.Credentials.AccessKeyId; - credentials.secretAccessKey = data.Credentials.SecretAccessKey; - credentials.sessionToken = data.Credentials.SessionToken; - credentials.expireTime = data.Credentials.Expiration; - return credentials; - }, - - assumeRoleWithWebIdentity: function assumeRoleWithWebIdentity(params, callback) { - return this.makeUnauthenticatedRequest('assumeRoleWithWebIdentity', params, callback); - }, - - assumeRoleWithSAML: function assumeRoleWithSAML(params, callback) { - return this.makeUnauthenticatedRequest('assumeRoleWithSAML', params, callback); - } -}); diff --git a/node_modules/aws-sdk/lib/services/swf.js b/node_modules/aws-sdk/lib/services/swf.js deleted file mode 100644 index d252087..0000000 --- a/node_modules/aws-sdk/lib/services/swf.js +++ /dev/null @@ -1,10 +0,0 @@ -var AWS = require('../core'); - -AWS.util.hideProperties(AWS, ['SimpleWorkflow']); - -/** - * @constant - * @readonly - * Backwards compatibility for access to the {AWS.SWF} service class. - */ -AWS.SimpleWorkflow = AWS.SWF; diff --git a/node_modules/aws-sdk/lib/signers/presign.js b/node_modules/aws-sdk/lib/signers/presign.js deleted file mode 100644 index cb3f53a..0000000 --- a/node_modules/aws-sdk/lib/signers/presign.js +++ /dev/null @@ -1,115 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -/** - * @api private - */ -var expiresHeader = 'presigned-expires'; - -/** - * @api private - */ -function signedUrlBuilder(request) { - var expires = request.httpRequest.headers[expiresHeader]; - var signerClass = request.service.getSignerClass(request); - - delete request.httpRequest.headers['User-Agent']; - delete request.httpRequest.headers['X-Amz-User-Agent']; - - if (signerClass === AWS.Signers.V4) { - if (expires > 604800) { // one week expiry is invalid - var message = 'Presigning does not support expiry time greater ' + - 'than a week with SigV4 signing.'; - throw AWS.util.error(new Error(), { - code: 'InvalidExpiryTime', message: message, retryable: false - }); - } - request.httpRequest.headers[expiresHeader] = expires; - } else if (signerClass === AWS.Signers.S3) { - request.httpRequest.headers[expiresHeader] = parseInt( - AWS.util.date.unixTimestamp() + expires, 10).toString(); - } else { - throw AWS.util.error(new Error(), { - message: 'Presigning only supports S3 or SigV4 signing.', - code: 'UnsupportedSigner', retryable: false - }); - } -} - -/** - * @api private - */ -function signedUrlSigner(request) { - var endpoint = request.httpRequest.endpoint; - var parsedUrl = AWS.util.urlParse(request.httpRequest.path); - var queryParams = {}; - - if (parsedUrl.search) { - queryParams = AWS.util.queryStringParse(parsedUrl.search.substr(1)); - } - - AWS.util.each(request.httpRequest.headers, function (key, value) { - if (key === expiresHeader) key = 'Expires'; - if (key.indexOf('x-amz-meta-') === 0) { - // Delete existing, potentially not normalized key - delete queryParams[key]; - key = key.toLowerCase(); - } - queryParams[key] = value; - }); - delete request.httpRequest.headers[expiresHeader]; - - var auth = queryParams['Authorization'].split(' '); - if (auth[0] === 'AWS') { - auth = auth[1].split(':'); - queryParams['AWSAccessKeyId'] = auth[0]; - queryParams['Signature'] = auth[1]; - } else if (auth[0] === 'AWS4-HMAC-SHA256') { // SigV4 signing - auth.shift(); - var rest = auth.join(' '); - var signature = rest.match(/Signature=(.*?)(?:,|\s|\r?\n|$)/)[1]; - queryParams['X-Amz-Signature'] = signature; - delete queryParams['Expires']; - } - delete queryParams['Authorization']; - delete queryParams['Host']; - - // build URL - endpoint.pathname = parsedUrl.pathname; - endpoint.search = AWS.util.queryParamsToString(queryParams); -} - -/** - * @api private - */ -AWS.Signers.Presign = inherit({ - /** - * @api private - */ - sign: function sign(request, expireTime, callback) { - request.httpRequest.headers[expiresHeader] = expireTime || 3600; - request.on('build', signedUrlBuilder); - request.on('sign', signedUrlSigner); - request.removeListener('afterBuild', - AWS.EventListeners.Core.SET_CONTENT_LENGTH); - request.removeListener('afterBuild', - AWS.EventListeners.Core.COMPUTE_SHA256); - - request.emit('beforePresign', [request]); - - if (callback) { - request.build(function() { - if (this.response.error) callback(this.response.error); - else { - callback(null, AWS.util.urlFormat(request.httpRequest.endpoint)); - } - }); - } else { - request.build(); - if (request.response.error) throw request.response.error; - return AWS.util.urlFormat(request.httpRequest.endpoint); - } - } -}); - -module.exports = AWS.Signers.Presign; diff --git a/node_modules/aws-sdk/lib/signers/request_signer.js b/node_modules/aws-sdk/lib/signers/request_signer.js deleted file mode 100644 index 6f869dd..0000000 --- a/node_modules/aws-sdk/lib/signers/request_signer.js +++ /dev/null @@ -1,37 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -/** - * @api private - */ -AWS.Signers.RequestSigner = inherit({ - constructor: function RequestSigner(request) { - this.request = request; - }, - - setServiceClientId: function setServiceClientId(id) { - this.serviceClientId = id; - }, - - getServiceClientId: function getServiceClientId() { - return this.serviceClientId; - } -}); - -AWS.Signers.RequestSigner.getVersion = function getVersion(version) { - switch (version) { - case 'v2': return AWS.Signers.V2; - case 'v3': return AWS.Signers.V3; - case 'v4': return AWS.Signers.V4; - case 's3': return AWS.Signers.S3; - case 'v3https': return AWS.Signers.V3Https; - } - throw new Error('Unknown signing version ' + version); -}; - -require('./v2'); -require('./v3'); -require('./v3https'); -require('./v4'); -require('./s3'); -require('./presign'); diff --git a/node_modules/aws-sdk/lib/signers/s3.js b/node_modules/aws-sdk/lib/signers/s3.js deleted file mode 100644 index 632e2f1..0000000 --- a/node_modules/aws-sdk/lib/signers/s3.js +++ /dev/null @@ -1,169 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -/** - * @api private - */ -AWS.Signers.S3 = inherit(AWS.Signers.RequestSigner, { - /** - * When building the stringToSign, these sub resource params should be - * part of the canonical resource string with their NON-decoded values - */ - subResources: { - 'acl': 1, - 'accelerate': 1, - 'cors': 1, - 'lifecycle': 1, - 'delete': 1, - 'location': 1, - 'logging': 1, - 'notification': 1, - 'partNumber': 1, - 'policy': 1, - 'requestPayment': 1, - 'replication': 1, - 'restore': 1, - 'tagging': 1, - 'torrent': 1, - 'uploadId': 1, - 'uploads': 1, - 'versionId': 1, - 'versioning': 1, - 'versions': 1, - 'website': 1 - }, - - // when building the stringToSign, these querystring params should be - // part of the canonical resource string with their NON-encoded values - responseHeaders: { - 'response-content-type': 1, - 'response-content-language': 1, - 'response-expires': 1, - 'response-cache-control': 1, - 'response-content-disposition': 1, - 'response-content-encoding': 1 - }, - - addAuthorization: function addAuthorization(credentials, date) { - if (!this.request.headers['presigned-expires']) { - this.request.headers['X-Amz-Date'] = AWS.util.date.rfc822(date); - } - - if (credentials.sessionToken) { - // presigned URLs require this header to be lowercased - this.request.headers['x-amz-security-token'] = credentials.sessionToken; - } - - var signature = this.sign(credentials.secretAccessKey, this.stringToSign()); - var auth = 'AWS ' + credentials.accessKeyId + ':' + signature; - - this.request.headers['Authorization'] = auth; - }, - - stringToSign: function stringToSign() { - var r = this.request; - - var parts = []; - parts.push(r.method); - parts.push(r.headers['Content-MD5'] || ''); - parts.push(r.headers['Content-Type'] || ''); - - // This is the "Date" header, but we use X-Amz-Date. - // The S3 signing mechanism requires us to pass an empty - // string for this Date header regardless. - parts.push(r.headers['presigned-expires'] || ''); - - var headers = this.canonicalizedAmzHeaders(); - if (headers) parts.push(headers); - parts.push(this.canonicalizedResource()); - - return parts.join('\n'); - - }, - - canonicalizedAmzHeaders: function canonicalizedAmzHeaders() { - - var amzHeaders = []; - - AWS.util.each(this.request.headers, function (name) { - if (name.match(/^x-amz-/i)) - amzHeaders.push(name); - }); - - amzHeaders.sort(function (a, b) { - return a.toLowerCase() < b.toLowerCase() ? -1 : 1; - }); - - var parts = []; - AWS.util.arrayEach.call(this, amzHeaders, function (name) { - parts.push(name.toLowerCase() + ':' + String(this.request.headers[name])); - }); - - return parts.join('\n'); - - }, - - canonicalizedResource: function canonicalizedResource() { - - var r = this.request; - - var parts = r.path.split('?'); - var path = parts[0]; - var querystring = parts[1]; - - var resource = ''; - - if (r.virtualHostedBucket) - resource += '/' + r.virtualHostedBucket; - - resource += path; - - if (querystring) { - - // collect a list of sub resources and query params that need to be signed - var resources = []; - - AWS.util.arrayEach.call(this, querystring.split('&'), function (param) { - var name = param.split('=')[0]; - var value = param.split('=')[1]; - if (this.subResources[name] || this.responseHeaders[name]) { - var subresource = { name: name }; - if (value !== undefined) { - if (this.subResources[name]) { - subresource.value = value; - } else { - subresource.value = decodeURIComponent(value); - } - } - resources.push(subresource); - } - }); - - resources.sort(function (a, b) { return a.name < b.name ? -1 : 1; }); - - if (resources.length) { - - querystring = []; - AWS.util.arrayEach(resources, function (res) { - if (res.value === undefined) { - querystring.push(res.name); - } else { - querystring.push(res.name + '=' + res.value); - } - }); - - resource += '?' + querystring.join('&'); - } - - } - - return resource; - - }, - - sign: function sign(secret, string) { - return AWS.util.crypto.hmac(secret, string, 'base64', 'sha1'); - } -}); - -module.exports = AWS.Signers.S3; diff --git a/node_modules/aws-sdk/lib/signers/v2.js b/node_modules/aws-sdk/lib/signers/v2.js deleted file mode 100644 index 9c7d03f..0000000 --- a/node_modules/aws-sdk/lib/signers/v2.js +++ /dev/null @@ -1,45 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -/** - * @api private - */ -AWS.Signers.V2 = inherit(AWS.Signers.RequestSigner, { - addAuthorization: function addAuthorization(credentials, date) { - - if (!date) date = AWS.util.date.getDate(); - - var r = this.request; - - r.params.Timestamp = AWS.util.date.iso8601(date); - r.params.SignatureVersion = '2'; - r.params.SignatureMethod = 'HmacSHA256'; - r.params.AWSAccessKeyId = credentials.accessKeyId; - - if (credentials.sessionToken) { - r.params.SecurityToken = credentials.sessionToken; - } - - delete r.params.Signature; // delete old Signature for re-signing - r.params.Signature = this.signature(credentials); - - r.body = AWS.util.queryParamsToString(r.params); - r.headers['Content-Length'] = r.body.length; - }, - - signature: function signature(credentials) { - return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); - }, - - stringToSign: function stringToSign() { - var parts = []; - parts.push(this.request.method); - parts.push(this.request.endpoint.host.toLowerCase()); - parts.push(this.request.pathname()); - parts.push(AWS.util.queryParamsToString(this.request.params)); - return parts.join('\n'); - } - -}); - -module.exports = AWS.Signers.V2; diff --git a/node_modules/aws-sdk/lib/signers/v3.js b/node_modules/aws-sdk/lib/signers/v3.js deleted file mode 100644 index 40f342d..0000000 --- a/node_modules/aws-sdk/lib/signers/v3.js +++ /dev/null @@ -1,74 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -/** - * @api private - */ -AWS.Signers.V3 = inherit(AWS.Signers.RequestSigner, { - addAuthorization: function addAuthorization(credentials, date) { - - var datetime = AWS.util.date.rfc822(date); - - this.request.headers['X-Amz-Date'] = datetime; - - if (credentials.sessionToken) { - this.request.headers['x-amz-security-token'] = credentials.sessionToken; - } - - this.request.headers['X-Amzn-Authorization'] = - this.authorization(credentials, datetime); - - }, - - authorization: function authorization(credentials) { - return 'AWS3 ' + - 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + - 'Algorithm=HmacSHA256,' + - 'SignedHeaders=' + this.signedHeaders() + ',' + - 'Signature=' + this.signature(credentials); - }, - - signedHeaders: function signedHeaders() { - var headers = []; - AWS.util.arrayEach(this.headersToSign(), function iterator(h) { - headers.push(h.toLowerCase()); - }); - return headers.sort().join(';'); - }, - - canonicalHeaders: function canonicalHeaders() { - var headers = this.request.headers; - var parts = []; - AWS.util.arrayEach(this.headersToSign(), function iterator(h) { - parts.push(h.toLowerCase().trim() + ':' + String(headers[h]).trim()); - }); - return parts.sort().join('\n') + '\n'; - }, - - headersToSign: function headersToSign() { - var headers = []; - AWS.util.each(this.request.headers, function iterator(k) { - if (k === 'Host' || k === 'Content-Encoding' || k.match(/^X-Amz/i)) { - headers.push(k); - } - }); - return headers; - }, - - signature: function signature(credentials) { - return AWS.util.crypto.hmac(credentials.secretAccessKey, this.stringToSign(), 'base64'); - }, - - stringToSign: function stringToSign() { - var parts = []; - parts.push(this.request.method); - parts.push('/'); - parts.push(''); - parts.push(this.canonicalHeaders()); - parts.push(this.request.body); - return AWS.util.crypto.sha256(parts.join('\n')); - } - -}); - -module.exports = AWS.Signers.V3; diff --git a/node_modules/aws-sdk/lib/signers/v3https.js b/node_modules/aws-sdk/lib/signers/v3https.js deleted file mode 100644 index b70a930..0000000 --- a/node_modules/aws-sdk/lib/signers/v3https.js +++ /dev/null @@ -1,22 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -require('./v3'); - -/** - * @api private - */ -AWS.Signers.V3Https = inherit(AWS.Signers.V3, { - authorization: function authorization(credentials) { - return 'AWS3-HTTPS ' + - 'AWSAccessKeyId=' + credentials.accessKeyId + ',' + - 'Algorithm=HmacSHA256,' + - 'Signature=' + this.signature(credentials); - }, - - stringToSign: function stringToSign() { - return this.request.headers['X-Amz-Date']; - } -}); - -module.exports = AWS.Signers.V3Https; diff --git a/node_modules/aws-sdk/lib/signers/v4.js b/node_modules/aws-sdk/lib/signers/v4.js deleted file mode 100644 index a1f8e63..0000000 --- a/node_modules/aws-sdk/lib/signers/v4.js +++ /dev/null @@ -1,241 +0,0 @@ -var AWS = require('../core'); -var inherit = AWS.util.inherit; - -/** - * @api private - */ -var cachedSecret = {}; - -/** - * @api private - */ -var cacheQueue = []; - -/** - * @api private - */ -var maxCacheEntries = 50; - -/** - * @api private - */ -var expiresHeader = 'presigned-expires'; - -/** - * @api private - */ -AWS.Signers.V4 = inherit(AWS.Signers.RequestSigner, { - constructor: function V4(request, serviceName, signatureCache) { - AWS.Signers.RequestSigner.call(this, request); - this.serviceName = serviceName; - this.signatureCache = signatureCache; - }, - - algorithm: 'AWS4-HMAC-SHA256', - - addAuthorization: function addAuthorization(credentials, date) { - var datetime = AWS.util.date.iso8601(date).replace(/[:\-]|\.\d{3}/g, ''); - - if (this.isPresigned()) { - this.updateForPresigned(credentials, datetime); - } else { - this.addHeaders(credentials, datetime); - } - - this.request.headers['Authorization'] = - this.authorization(credentials, datetime); - }, - - addHeaders: function addHeaders(credentials, datetime) { - this.request.headers['X-Amz-Date'] = datetime; - if (credentials.sessionToken) { - this.request.headers['x-amz-security-token'] = credentials.sessionToken; - } - }, - - updateForPresigned: function updateForPresigned(credentials, datetime) { - var credString = this.credentialString(datetime); - var qs = { - 'X-Amz-Date': datetime, - 'X-Amz-Algorithm': this.algorithm, - 'X-Amz-Credential': credentials.accessKeyId + '/' + credString, - 'X-Amz-Expires': this.request.headers[expiresHeader], - 'X-Amz-SignedHeaders': this.signedHeaders() - }; - - if (credentials.sessionToken) { - qs['X-Amz-Security-Token'] = credentials.sessionToken; - } - - if (this.request.headers['Content-Type']) { - qs['Content-Type'] = this.request.headers['Content-Type']; - } - if (this.request.headers['Content-MD5']) { - qs['Content-MD5'] = this.request.headers['Content-MD5']; - } - if (this.request.headers['Cache-Control']) { - qs['Cache-Control'] = this.request.headers['Cache-Control']; - } - - // need to pull in any other X-Amz-* headers - AWS.util.each.call(this, this.request.headers, function(key, value) { - if (key === expiresHeader) return; - if (this.isSignableHeader(key)) { - var lowerKey = key.toLowerCase(); - // Metadata should be normalized - if (lowerKey.indexOf('x-amz-meta-') === 0) { - qs[lowerKey] = value; - } else if (lowerKey.indexOf('x-amz-') === 0) { - qs[key] = value; - } - } - }); - - var sep = this.request.path.indexOf('?') >= 0 ? '&' : '?'; - this.request.path += sep + AWS.util.queryParamsToString(qs); - }, - - authorization: function authorization(credentials, datetime) { - var parts = []; - var credString = this.credentialString(datetime); - parts.push(this.algorithm + ' Credential=' + - credentials.accessKeyId + '/' + credString); - parts.push('SignedHeaders=' + this.signedHeaders()); - parts.push('Signature=' + this.signature(credentials, datetime)); - return parts.join(', '); - }, - - signature: function signature(credentials, datetime) { - var cache = null; - var cacheIdentifier = this.serviceName + (this.getServiceClientId() ? '_' + this.getServiceClientId() : ''); - if (this.signatureCache) { - var cache = cachedSecret[cacheIdentifier]; - // If there isn't already a cache entry, we'll be adding one - if (!cache) { - cacheQueue.push(cacheIdentifier); - if (cacheQueue.length > maxCacheEntries) { - // remove the oldest entry (may not be last one used) - delete cachedSecret[cacheQueue.shift()]; - } - } - - } - var date = datetime.substr(0, 8); - - if (!cache || - cache.akid !== credentials.accessKeyId || - cache.region !== this.request.region || - cache.date !== date) { - - var kSecret = credentials.secretAccessKey; - var kDate = AWS.util.crypto.hmac('AWS4' + kSecret, date, 'buffer'); - var kRegion = AWS.util.crypto.hmac(kDate, this.request.region, 'buffer'); - var kService = AWS.util.crypto.hmac(kRegion, this.serviceName, 'buffer'); - var kCredentials = AWS.util.crypto.hmac(kService, 'aws4_request', 'buffer'); - - if (!this.signatureCache) { - return AWS.util.crypto.hmac(kCredentials, this.stringToSign(datetime), 'hex'); - } - - cachedSecret[cacheIdentifier] = { - region: this.request.region, date: date, - key: kCredentials, akid: credentials.accessKeyId - }; - } - - var key = cachedSecret[cacheIdentifier].key; - return AWS.util.crypto.hmac(key, this.stringToSign(datetime), 'hex'); - }, - - stringToSign: function stringToSign(datetime) { - var parts = []; - parts.push('AWS4-HMAC-SHA256'); - parts.push(datetime); - parts.push(this.credentialString(datetime)); - parts.push(this.hexEncodedHash(this.canonicalString())); - return parts.join('\n'); - }, - - canonicalString: function canonicalString() { - var parts = [], pathname = this.request.pathname(); - if (this.serviceName !== 's3') pathname = AWS.util.uriEscapePath(pathname); - - parts.push(this.request.method); - parts.push(pathname); - parts.push(this.request.search()); - parts.push(this.canonicalHeaders() + '\n'); - parts.push(this.signedHeaders()); - parts.push(this.hexEncodedBodyHash()); - return parts.join('\n'); - }, - - canonicalHeaders: function canonicalHeaders() { - var headers = []; - AWS.util.each.call(this, this.request.headers, function (key, item) { - headers.push([key, item]); - }); - headers.sort(function (a, b) { - return a[0].toLowerCase() < b[0].toLowerCase() ? -1 : 1; - }); - var parts = []; - AWS.util.arrayEach.call(this, headers, function (item) { - var key = item[0].toLowerCase(); - if (this.isSignableHeader(key)) { - parts.push(key + ':' + - this.canonicalHeaderValues(item[1].toString())); - } - }); - return parts.join('\n'); - }, - - canonicalHeaderValues: function canonicalHeaderValues(values) { - return values.replace(/\s+/g, ' ').replace(/^\s+|\s+$/g, ''); - }, - - signedHeaders: function signedHeaders() { - var keys = []; - AWS.util.each.call(this, this.request.headers, function (key) { - key = key.toLowerCase(); - if (this.isSignableHeader(key)) keys.push(key); - }); - return keys.sort().join(';'); - }, - - credentialString: function credentialString(datetime) { - var parts = []; - parts.push(datetime.substr(0, 8)); - parts.push(this.request.region); - parts.push(this.serviceName); - parts.push('aws4_request'); - return parts.join('/'); - }, - - hexEncodedHash: function hash(string) { - return AWS.util.crypto.sha256(string, 'hex'); - }, - - hexEncodedBodyHash: function hexEncodedBodyHash() { - if (this.isPresigned() && this.serviceName === 's3' && !this.request.body) { - return 'UNSIGNED-PAYLOAD'; - } else if (this.request.headers['X-Amz-Content-Sha256']) { - return this.request.headers['X-Amz-Content-Sha256']; - } else { - return this.hexEncodedHash(this.request.body || ''); - } - }, - - unsignableHeaders: ['authorization', 'content-type', 'content-length', - 'user-agent', expiresHeader, 'expect'], - - isSignableHeader: function isSignableHeader(key) { - if (key.toLowerCase().indexOf('x-amz-') === 0) return true; - return this.unsignableHeaders.indexOf(key) < 0; - }, - - isPresigned: function isPresigned() { - return this.request.headers[expiresHeader] ? true : false; - } - -}); - -module.exports = AWS.Signers.V4; diff --git a/node_modules/aws-sdk/lib/state_machine.js b/node_modules/aws-sdk/lib/state_machine.js deleted file mode 100644 index 0be8922..0000000 --- a/node_modules/aws-sdk/lib/state_machine.js +++ /dev/null @@ -1,42 +0,0 @@ -function AcceptorStateMachine(states, state) { - this.currentState = state || null; - this.states = states || {}; -} - -AcceptorStateMachine.prototype.runTo = function runTo(finalState, done, bindObject, inputError) { - if (typeof finalState === 'function') { - inputError = bindObject; bindObject = done; - done = finalState; finalState = null; - } - - var self = this; - var state = self.states[self.currentState]; - state.fn.call(bindObject || self, inputError, function(err) { - if (err) { - if (state.fail) self.currentState = state.fail; - else return done ? done.call(bindObject, err) : null; - } else { - if (state.accept) self.currentState = state.accept; - else return done ? done.call(bindObject) : null; - } - if (self.currentState === finalState) { - return done ? done.call(bindObject, err) : null; - } - - self.runTo(finalState, done, bindObject, err); - }); -}; - -AcceptorStateMachine.prototype.addState = function addState(name, acceptState, failState, fn) { - if (typeof acceptState === 'function') { - fn = acceptState; acceptState = null; failState = null; - } else if (typeof failState === 'function') { - fn = failState; failState = null; - } - - if (!this.currentState) this.currentState = name; - this.states[name] = { accept: acceptState, fail: failState, fn: fn }; - return this; -}; - -module.exports = AcceptorStateMachine; diff --git a/node_modules/aws-sdk/lib/util.js b/node_modules/aws-sdk/lib/util.js deleted file mode 100644 index df20d25..0000000 --- a/node_modules/aws-sdk/lib/util.js +++ /dev/null @@ -1,846 +0,0 @@ -/* eslint guard-for-in:0 */ -var AWS; - -/** - * A set of utility methods for use with the AWS SDK. - * - * @!attribute abort - * Return this value from an iterator function {each} or {arrayEach} - * to break out of the iteration. - * @example Breaking out of an iterator function - * AWS.util.each({a: 1, b: 2, c: 3}, function(key, value) { - * if (key == 'b') return AWS.util.abort; - * }); - * @see each - * @see arrayEach - * @api private - */ -var util = { - engine: function engine() { - if (util.isBrowser() && typeof navigator !== 'undefined') { - return navigator.userAgent; - } else { - return process.platform + '/' + process.version; - } - }, - - userAgent: function userAgent() { - var name = util.isBrowser() ? 'js' : 'nodejs'; - var agent = 'aws-sdk-' + name + '/' + require('./core').VERSION; - if (name === 'nodejs') agent += ' ' + util.engine(); - return agent; - }, - - isBrowser: function isBrowser() { return process && process.browser; }, - isNode: function isNode() { return !util.isBrowser(); }, - uriEscape: function uriEscape(string) { - var output = encodeURIComponent(string); - output = output.replace(/[^A-Za-z0-9_.~\-%]+/g, escape); - - // AWS percent-encodes some extra non-standard characters in a URI - output = output.replace(/[*]/g, function(ch) { - return '%' + ch.charCodeAt(0).toString(16).toUpperCase(); - }); - - return output; - }, - - uriEscapePath: function uriEscapePath(string) { - var parts = []; - util.arrayEach(string.split('/'), function (part) { - parts.push(util.uriEscape(part)); - }); - return parts.join('/'); - }, - - urlParse: function urlParse(url) { - return util.url.parse(url); - }, - - urlFormat: function urlFormat(url) { - return util.url.format(url); - }, - - queryStringParse: function queryStringParse(qs) { - return util.querystring.parse(qs); - }, - - queryParamsToString: function queryParamsToString(params) { - var items = []; - var escape = util.uriEscape; - var sortedKeys = Object.keys(params).sort(); - - util.arrayEach(sortedKeys, function(name) { - var value = params[name]; - var ename = escape(name); - var result = ename + '='; - if (Array.isArray(value)) { - var vals = []; - util.arrayEach(value, function(item) { vals.push(escape(item)); }); - result = ename + '=' + vals.sort().join('&' + ename + '='); - } else if (value !== undefined && value !== null) { - result = ename + '=' + escape(value); - } - items.push(result); - }); - - return items.join('&'); - }, - - readFileSync: function readFileSync(path) { - if (util.isBrowser()) return null; - return require('fs').readFileSync(path, 'utf-8'); - }, - - base64: { - - encode: function encode64(string) { - return new util.Buffer(string).toString('base64'); - }, - - decode: function decode64(string) { - return new util.Buffer(string, 'base64'); - } - - }, - - buffer: { - toStream: function toStream(buffer) { - if (!util.Buffer.isBuffer(buffer)) buffer = new util.Buffer(buffer); - - var readable = new (util.stream.Readable)(); - var pos = 0; - readable._read = function(size) { - if (pos >= buffer.length) return readable.push(null); - - var end = pos + size; - if (end > buffer.length) end = buffer.length; - readable.push(buffer.slice(pos, end)); - pos = end; - }; - - return readable; - }, - - /** - * Concatenates a list of Buffer objects. - */ - concat: function(buffers) { - var length = 0, - offset = 0, - buffer = null, i; - - for (i = 0; i < buffers.length; i++) { - length += buffers[i].length; - } - - buffer = new util.Buffer(length); - - for (i = 0; i < buffers.length; i++) { - buffers[i].copy(buffer, offset); - offset += buffers[i].length; - } - - return buffer; - } - }, - - string: { - byteLength: function byteLength(string) { - if (string === null || string === undefined) return 0; - if (typeof string === 'string') string = new util.Buffer(string); - - if (typeof string.byteLength === 'number') { - return string.byteLength; - } else if (typeof string.length === 'number') { - return string.length; - } else if (typeof string.size === 'number') { - return string.size; - } else if (typeof string.path === 'string') { - return require('fs').lstatSync(string.path).size; - } else { - throw util.error(new Error('Cannot determine length of ' + string), - { object: string }); - } - }, - - upperFirst: function upperFirst(string) { - return string[0].toUpperCase() + string.substr(1); - }, - - lowerFirst: function lowerFirst(string) { - return string[0].toLowerCase() + string.substr(1); - } - }, - - ini: { - parse: function string(ini) { - var currentSection, map = {}; - util.arrayEach(ini.split(/\r?\n/), function(line) { - line = line.split(/(^|\s)[;#]/)[0]; // remove comments - var section = line.match(/^\s*\[([^\[\]]+)\]\s*$/); - if (section) { - currentSection = section[1]; - } else if (currentSection) { - var item = line.match(/^\s*(.+?)\s*=\s*(.+?)\s*$/); - if (item) { - map[currentSection] = map[currentSection] || {}; - map[currentSection][item[1]] = item[2]; - } - } - }); - - return map; - } - }, - - fn: { - noop: function() {}, - - /** - * Turn a synchronous function into as "async" function by making it call - * a callback. The underlying function is called with all but the last argument, - * which is treated as the callback. The callback is passed passed a first argument - * of null on success to mimick standard node callbacks. - */ - makeAsync: function makeAsync(fn, expectedArgs) { - if (expectedArgs && expectedArgs <= fn.length) { - return fn; - } - - return function() { - var args = Array.prototype.slice.call(arguments, 0); - var callback = args.pop(); - var result = fn.apply(null, args); - callback(result); - }; - } - }, - - /** - * Date and time utility functions. - */ - date: { - - /** - * @return [Date] the current JavaScript date object. Since all - * AWS services rely on this date object, you can override - * this function to provide a special time value to AWS service - * requests. - */ - getDate: function getDate() { - if (!AWS) AWS = require('./core'); - if (AWS.config.systemClockOffset) { // use offset when non-zero - return new Date(new Date().getTime() + AWS.config.systemClockOffset); - } else { - return new Date(); - } - }, - - /** - * @return [String] the date in ISO-8601 format - */ - iso8601: function iso8601(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.toISOString().replace(/\.\d{3}Z$/, 'Z'); - }, - - /** - * @return [String] the date in RFC 822 format - */ - rfc822: function rfc822(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.toUTCString(); - }, - - /** - * @return [Integer] the UNIX timestamp value for the current time - */ - unixTimestamp: function unixTimestamp(date) { - if (date === undefined) { date = util.date.getDate(); } - return date.getTime() / 1000; - }, - - /** - * @param [String,number,Date] date - * @return [Date] - */ - from: function format(date) { - if (typeof date === 'number') { - return new Date(date * 1000); // unix timestamp - } else { - return new Date(date); - } - }, - - /** - * Given a Date or date-like value, this function formats the - * date into a string of the requested value. - * @param [String,number,Date] date - * @param [String] formatter Valid formats are: - # * 'iso8601' - # * 'rfc822' - # * 'unixTimestamp' - * @return [String] - */ - format: function format(date, formatter) { - if (!formatter) formatter = 'iso8601'; - return util.date[formatter](util.date.from(date)); - }, - - parseTimestamp: function parseTimestamp(value) { - if (typeof value === 'number') { // unix timestamp (number) - return new Date(value * 1000); - } else if (value.match(/^\d+$/)) { // unix timestamp - return new Date(value * 1000); - } else if (value.match(/^\d{4}/)) { // iso8601 - return new Date(value); - } else if (value.match(/^\w{3},/)) { // rfc822 - return new Date(value); - } else { - throw util.error( - new Error('unhandled timestamp format: ' + value), - {code: 'TimestampParserError'}); - } - } - - }, - - crypto: { - crc32Table: [ - 0x00000000, 0x77073096, 0xEE0E612C, 0x990951BA, 0x076DC419, - 0x706AF48F, 0xE963A535, 0x9E6495A3, 0x0EDB8832, 0x79DCB8A4, - 0xE0D5E91E, 0x97D2D988, 0x09B64C2B, 0x7EB17CBD, 0xE7B82D07, - 0x90BF1D91, 0x1DB71064, 0x6AB020F2, 0xF3B97148, 0x84BE41DE, - 0x1ADAD47D, 0x6DDDE4EB, 0xF4D4B551, 0x83D385C7, 0x136C9856, - 0x646BA8C0, 0xFD62F97A, 0x8A65C9EC, 0x14015C4F, 0x63066CD9, - 0xFA0F3D63, 0x8D080DF5, 0x3B6E20C8, 0x4C69105E, 0xD56041E4, - 0xA2677172, 0x3C03E4D1, 0x4B04D447, 0xD20D85FD, 0xA50AB56B, - 0x35B5A8FA, 0x42B2986C, 0xDBBBC9D6, 0xACBCF940, 0x32D86CE3, - 0x45DF5C75, 0xDCD60DCF, 0xABD13D59, 0x26D930AC, 0x51DE003A, - 0xC8D75180, 0xBFD06116, 0x21B4F4B5, 0x56B3C423, 0xCFBA9599, - 0xB8BDA50F, 0x2802B89E, 0x5F058808, 0xC60CD9B2, 0xB10BE924, - 0x2F6F7C87, 0x58684C11, 0xC1611DAB, 0xB6662D3D, 0x76DC4190, - 0x01DB7106, 0x98D220BC, 0xEFD5102A, 0x71B18589, 0x06B6B51F, - 0x9FBFE4A5, 0xE8B8D433, 0x7807C9A2, 0x0F00F934, 0x9609A88E, - 0xE10E9818, 0x7F6A0DBB, 0x086D3D2D, 0x91646C97, 0xE6635C01, - 0x6B6B51F4, 0x1C6C6162, 0x856530D8, 0xF262004E, 0x6C0695ED, - 0x1B01A57B, 0x8208F4C1, 0xF50FC457, 0x65B0D9C6, 0x12B7E950, - 0x8BBEB8EA, 0xFCB9887C, 0x62DD1DDF, 0x15DA2D49, 0x8CD37CF3, - 0xFBD44C65, 0x4DB26158, 0x3AB551CE, 0xA3BC0074, 0xD4BB30E2, - 0x4ADFA541, 0x3DD895D7, 0xA4D1C46D, 0xD3D6F4FB, 0x4369E96A, - 0x346ED9FC, 0xAD678846, 0xDA60B8D0, 0x44042D73, 0x33031DE5, - 0xAA0A4C5F, 0xDD0D7CC9, 0x5005713C, 0x270241AA, 0xBE0B1010, - 0xC90C2086, 0x5768B525, 0x206F85B3, 0xB966D409, 0xCE61E49F, - 0x5EDEF90E, 0x29D9C998, 0xB0D09822, 0xC7D7A8B4, 0x59B33D17, - 0x2EB40D81, 0xB7BD5C3B, 0xC0BA6CAD, 0xEDB88320, 0x9ABFB3B6, - 0x03B6E20C, 0x74B1D29A, 0xEAD54739, 0x9DD277AF, 0x04DB2615, - 0x73DC1683, 0xE3630B12, 0x94643B84, 0x0D6D6A3E, 0x7A6A5AA8, - 0xE40ECF0B, 0x9309FF9D, 0x0A00AE27, 0x7D079EB1, 0xF00F9344, - 0x8708A3D2, 0x1E01F268, 0x6906C2FE, 0xF762575D, 0x806567CB, - 0x196C3671, 0x6E6B06E7, 0xFED41B76, 0x89D32BE0, 0x10DA7A5A, - 0x67DD4ACC, 0xF9B9DF6F, 0x8EBEEFF9, 0x17B7BE43, 0x60B08ED5, - 0xD6D6A3E8, 0xA1D1937E, 0x38D8C2C4, 0x4FDFF252, 0xD1BB67F1, - 0xA6BC5767, 0x3FB506DD, 0x48B2364B, 0xD80D2BDA, 0xAF0A1B4C, - 0x36034AF6, 0x41047A60, 0xDF60EFC3, 0xA867DF55, 0x316E8EEF, - 0x4669BE79, 0xCB61B38C, 0xBC66831A, 0x256FD2A0, 0x5268E236, - 0xCC0C7795, 0xBB0B4703, 0x220216B9, 0x5505262F, 0xC5BA3BBE, - 0xB2BD0B28, 0x2BB45A92, 0x5CB36A04, 0xC2D7FFA7, 0xB5D0CF31, - 0x2CD99E8B, 0x5BDEAE1D, 0x9B64C2B0, 0xEC63F226, 0x756AA39C, - 0x026D930A, 0x9C0906A9, 0xEB0E363F, 0x72076785, 0x05005713, - 0x95BF4A82, 0xE2B87A14, 0x7BB12BAE, 0x0CB61B38, 0x92D28E9B, - 0xE5D5BE0D, 0x7CDCEFB7, 0x0BDBDF21, 0x86D3D2D4, 0xF1D4E242, - 0x68DDB3F8, 0x1FDA836E, 0x81BE16CD, 0xF6B9265B, 0x6FB077E1, - 0x18B74777, 0x88085AE6, 0xFF0F6A70, 0x66063BCA, 0x11010B5C, - 0x8F659EFF, 0xF862AE69, 0x616BFFD3, 0x166CCF45, 0xA00AE278, - 0xD70DD2EE, 0x4E048354, 0x3903B3C2, 0xA7672661, 0xD06016F7, - 0x4969474D, 0x3E6E77DB, 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, - 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, - 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, - 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, - 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, - 0x2D02EF8D], - - crc32: function crc32(data) { - var tbl = util.crypto.crc32Table; - var crc = 0 ^ -1; - - if (typeof data === 'string') { - data = new util.Buffer(data); - } - - for (var i = 0; i < data.length; i++) { - var code = data.readUInt8(i); - crc = (crc >>> 8) ^ tbl[(crc ^ code) & 0xFF]; - } - return (crc ^ -1) >>> 0; - }, - - hmac: function hmac(key, string, digest, fn) { - if (!digest) digest = 'binary'; - if (digest === 'buffer') { digest = undefined; } - if (!fn) fn = 'sha256'; - if (typeof string === 'string') string = new util.Buffer(string); - return util.crypto.lib.createHmac(fn, key).update(string).digest(digest); - }, - - md5: function md5(data, digest, callback) { - return util.crypto.hash('md5', data, digest, callback); - }, - - sha256: function sha256(data, digest, callback) { - return util.crypto.hash('sha256', data, digest, callback); - }, - - hash: function(algorithm, data, digest, callback) { - var hash = util.crypto.createHash(algorithm); - if (!digest) { digest = 'binary'; } - if (digest === 'buffer') { digest = undefined; } - if (typeof data === 'string') data = new util.Buffer(data); - var sliceFn = util.arraySliceFn(data); - var isBuffer = util.Buffer.isBuffer(data); - //Identifying objects with an ArrayBuffer as buffers - if (util.isBrowser() && typeof ArrayBuffer !== 'undefined' && data && data.buffer instanceof ArrayBuffer) isBuffer = true; - - if (callback && typeof data === 'object' && - typeof data.on === 'function' && !isBuffer) { - data.on('data', function(chunk) { hash.update(chunk); }); - data.on('error', function(err) { callback(err); }); - data.on('end', function() { callback(null, hash.digest(digest)); }); - } else if (callback && sliceFn && !isBuffer && - typeof FileReader !== 'undefined') { - // this might be a File/Blob - var index = 0, size = 1024 * 512; - var reader = new FileReader(); - reader.onerror = function() { - callback(new Error('Failed to read data.')); - }; - reader.onload = function() { - var buf = new util.Buffer(new Uint8Array(reader.result)); - hash.update(buf); - index += buf.length; - reader._continueReading(); - }; - reader._continueReading = function() { - if (index >= data.size) { - callback(null, hash.digest(digest)); - return; - } - - var back = index + size; - if (back > data.size) back = data.size; - reader.readAsArrayBuffer(sliceFn.call(data, index, back)); - }; - - reader._continueReading(); - } else { - if (util.isBrowser() && typeof data === 'object' && !isBuffer) { - data = new util.Buffer(new Uint8Array(data)); - } - var out = hash.update(data).digest(digest); - if (callback) callback(null, out); - return out; - } - }, - - toHex: function toHex(data) { - var out = []; - for (var i = 0; i < data.length; i++) { - out.push(('0' + data.charCodeAt(i).toString(16)).substr(-2, 2)); - } - return out.join(''); - }, - - createHash: function createHash(algorithm) { - return util.crypto.lib.createHash(algorithm); - } - - }, - - /** @!ignore */ - - /* Abort constant */ - abort: {}, - - each: function each(object, iterFunction) { - for (var key in object) { - if (Object.prototype.hasOwnProperty.call(object, key)) { - var ret = iterFunction.call(this, key, object[key]); - if (ret === util.abort) break; - } - } - }, - - arrayEach: function arrayEach(array, iterFunction) { - for (var idx in array) { - if (Object.prototype.hasOwnProperty.call(array, idx)) { - var ret = iterFunction.call(this, array[idx], parseInt(idx, 10)); - if (ret === util.abort) break; - } - } - }, - - update: function update(obj1, obj2) { - util.each(obj2, function iterator(key, item) { - obj1[key] = item; - }); - return obj1; - }, - - merge: function merge(obj1, obj2) { - return util.update(util.copy(obj1), obj2); - }, - - copy: function copy(object) { - if (object === null || object === undefined) return object; - var dupe = {}; - // jshint forin:false - for (var key in object) { - dupe[key] = object[key]; - } - return dupe; - }, - - isEmpty: function isEmpty(obj) { - for (var prop in obj) { - if (Object.prototype.hasOwnProperty.call(obj, prop)) { - return false; - } - } - return true; - }, - - arraySliceFn: function arraySliceFn(obj) { - var fn = obj.slice || obj.webkitSlice || obj.mozSlice; - return typeof fn === 'function' ? fn : null; - }, - - isType: function isType(obj, type) { - // handle cross-"frame" objects - if (typeof type === 'function') type = util.typeName(type); - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - typeName: function typeName(type) { - if (Object.prototype.hasOwnProperty.call(type, 'name')) return type.name; - var str = type.toString(); - var match = str.match(/^\s*function (.+)\(/); - return match ? match[1] : str; - }, - - error: function error(err, options) { - var originalError = null; - if (typeof err.message === 'string' && err.message !== '') { - if (typeof options === 'string' || (options && options.message)) { - originalError = util.copy(err); - originalError.message = err.message; - } - } - err.message = err.message || null; - - if (typeof options === 'string') { - err.message = options; - } else if (typeof options === 'object' && options !== null) { - util.update(err, options); - if (options.message) - err.message = options.message; - if (options.code || options.name) - err.code = options.code || options.name; - if (options.stack) - err.stack = options.stack; - } - - if (typeof Object.defineProperty === 'function') { - Object.defineProperty(err, 'name', {writable: true, enumerable: false}); - Object.defineProperty(err, 'message', {enumerable: true}); - } - - err.name = options && options.name || err.name || err.code || 'Error'; - err.time = new Date(); - - if (originalError) err.originalError = originalError; - - return err; - }, - - /** - * @api private - */ - inherit: function inherit(klass, features) { - var newObject = null; - if (features === undefined) { - features = klass; - klass = Object; - newObject = {}; - } else { - var ctor = function ConstructorWrapper() {}; - ctor.prototype = klass.prototype; - newObject = new ctor(); - } - - // constructor not supplied, create pass-through ctor - if (features.constructor === Object) { - features.constructor = function() { - if (klass !== Object) { - return klass.apply(this, arguments); - } - }; - } - - features.constructor.prototype = newObject; - util.update(features.constructor.prototype, features); - features.constructor.__super__ = klass; - return features.constructor; - }, - - /** - * @api private - */ - mixin: function mixin() { - var klass = arguments[0]; - for (var i = 1; i < arguments.length; i++) { - // jshint forin:false - for (var prop in arguments[i].prototype) { - var fn = arguments[i].prototype[prop]; - if (prop !== 'constructor') { - klass.prototype[prop] = fn; - } - } - } - return klass; - }, - - /** - * @api private - */ - hideProperties: function hideProperties(obj, props) { - if (typeof Object.defineProperty !== 'function') return; - - util.arrayEach(props, function (key) { - Object.defineProperty(obj, key, { - enumerable: false, writable: true, configurable: true }); - }); - }, - - /** - * @api private - */ - property: function property(obj, name, value, enumerable, isValue) { - var opts = { - configurable: true, - enumerable: enumerable !== undefined ? enumerable : true - }; - if (typeof value === 'function' && !isValue) { - opts.get = value; - } - else { - opts.value = value; opts.writable = true; - } - - Object.defineProperty(obj, name, opts); - }, - - /** - * @api private - */ - memoizedProperty: function memoizedProperty(obj, name, get, enumerable) { - var cachedValue = null; - - // build enumerable attribute for each value with lazy accessor. - util.property(obj, name, function() { - if (cachedValue === null) { - cachedValue = get(); - } - return cachedValue; - }, enumerable); - }, - - /** - * TODO Remove in major version revision - * This backfill populates response data without the - * top-level payload name. - * - * @api private - */ - hoistPayloadMember: function hoistPayloadMember(resp) { - var req = resp.request; - var operation = req.operation; - var output = req.service.api.operations[operation].output; - if (output.payload) { - var payloadMember = output.members[output.payload]; - var responsePayload = resp.data[output.payload]; - if (payloadMember.type === 'structure') { - util.each(responsePayload, function(key, value) { - util.property(resp.data, key, value, false); - }); - } - } - }, - - /** - * Compute SHA-256 checksums of streams - * - * @api private - */ - computeSha256: function computeSha256(body, done) { - if (util.isNode()) { - var Stream = util.stream.Stream; - var fs = require('fs'); - if (body instanceof Stream) { - if (typeof body.path === 'string') { // assume file object - var settings = {}; - if (typeof body.start === 'number') { - settings.start = body.start; - } - if (typeof body.end === 'number') { - settings.end = body.end; - } - body = fs.createReadStream(body.path, settings); - } else { // TODO support other stream types - return done(new Error('Non-file stream objects are ' + - 'not supported with SigV4')); - } - } - } - - util.crypto.sha256(body, 'hex', function(err, sha) { - if (err) done(err); - else done(null, sha); - }); - }, - - /** - * @api private - */ - isClockSkewed: function isClockSkewed(serverTime) { - if (serverTime) { - util.property(AWS.config, 'isClockSkewed', - Math.abs(new Date().getTime() - serverTime) >= 300000, false); - return AWS.config.isClockSkewed; - } - }, - - applyClockOffset: function applyClockOffset(serverTime) { - if (serverTime) - AWS.config.systemClockOffset = serverTime - new Date().getTime(); - }, - - /** - * @api private - */ - extractRequestId: function extractRequestId(resp) { - var requestId = resp.httpResponse.headers['x-amz-request-id'] || - resp.httpResponse.headers['x-amzn-requestid']; - - if (!requestId && resp.data && resp.data.ResponseMetadata) { - requestId = resp.data.ResponseMetadata.RequestId; - } - - if (requestId) { - resp.requestId = requestId; - } - - if (resp.error) { - resp.error.requestId = requestId; - } - }, - - /** - * @api private - */ - addPromisesToRequests: function addPromisesToRequests(constructor, PromiseDependency) { - PromiseDependency = PromiseDependency || null; - if (!PromiseDependency && typeof Promise !== 'undefined') { - PromiseDependency = Promise; - } - if (typeof PromiseDependency !== 'function') { - delete constructor.prototype.promise; - return; - } - constructor.prototype.promise = function promise() { - var self = this; - return new PromiseDependency(function(resolve, reject) { - self.on('complete', function(resp) { - if (resp.error) { - reject(resp.error); - } else { - resolve(resp.data); - } - }); - self.runTo(); - }); - } - }, - - /** - * @api private - */ - isDualstackAvailable: function isDualstackAvailable(service) { - if (!service) return false; - var metadata = require('../apis/metadata.json'); - if (typeof service !== 'string') service = service.serviceIdentifier; - if (typeof service !== 'string' || !metadata.hasOwnProperty(service)) return false; - return !!metadata[service].dualstackAvailable; - }, - - /** - * @api private - */ - calculateRetryDelay: function calculateRetryDelay(retryCount, retryDelayOptions) { - if (!retryDelayOptions) retryDelayOptions = {}; - var customBackoff = retryDelayOptions.customBackoff || null; - if (typeof customBackoff === 'function') { - return customBackoff(retryCount); - } - var base = retryDelayOptions.base || 100; - var delay = Math.random() * (Math.pow(2, retryCount) * base); - return delay; - }, - - /** - * @api private - */ - handleRequestWithRetries: function handleRequestWithRetries(httpRequest, options, cb) { - if (!options) options = {}; - var http = AWS.HttpClient.getInstance(); - var httpOptions = options.httpOptions || {}; - var retryCount = 0; - - var errCallback = function(err) { - var maxRetries = options.maxRetries || 0; - if (err && err.code === 'TimeoutError') err.retryable = true; - if (err && err.retryable && retryCount < maxRetries) { - retryCount++; - var delay = util.calculateRetryDelay(retryCount, options.retryDelayOptions); - setTimeout(sendRequest, delay + (err.retryAfter || 0)); - } else { - cb(err); - } - }; - - var sendRequest = function() { - var data = ''; - http.handleRequest(httpRequest, httpOptions, function(httpResponse) { - httpResponse.on('data', function(chunk) { data += chunk.toString(); }); - httpResponse.on('end', function() { - var statusCode = httpResponse.statusCode; - if (statusCode < 300) { - cb(null, data); - } else { - var retryAfter = parseInt(httpResponse.headers['retry-after'], 10) * 1000 || 0; - var err = util.error(new Error(), - { retryable: statusCode >= 500 || statusCode === 429 } - ); - if (retryAfter && err.retryable) err.retryAfter = retryAfter; - errCallback(err); - } - }); - }, errCallback); - }; - - process.nextTick(sendRequest); - } - -}; - -module.exports = util; diff --git a/node_modules/aws-sdk/lib/xml/browser_parser.js b/node_modules/aws-sdk/lib/xml/browser_parser.js deleted file mode 100644 index 951ed74..0000000 --- a/node_modules/aws-sdk/lib/xml/browser_parser.js +++ /dev/null @@ -1,186 +0,0 @@ -var util = require('../util'); -var Shape = require('../model/shape'); - -function DomXmlParser() { } - -DomXmlParser.prototype.parse = function(xml, shape) { - if (xml.replace(/^\s+/, '') === '') return {}; - - var result, error; - try { - if (window.DOMParser) { - try { - var parser = new DOMParser(); - result = parser.parseFromString(xml, 'text/xml'); - } catch (syntaxError) { - throw util.error(new Error('Parse error in document'), - { - originalError: syntaxError, - code: 'XMLParserError', - retryable: true - }); - } - - if (result.documentElement === null) { - throw util.error(new Error('Cannot parse empty document.'), - { - code: 'XMLParserError', - retryable: true - }); - } - - var isError = result.getElementsByTagName('parsererror')[0]; - if (isError && (isError.parentNode === result || - isError.parentNode.nodeName === 'body' || - isError.parentNode.parentNode === result || - isError.parentNode.parentNode.nodeName === 'body')) { - var errorElement = isError.getElementsByTagName('div')[0] || isError; - throw util.error(new Error(errorElement.textContent || 'Parser error in document'), - { - code: 'XMLParserError', - retryable: true - }); - } - } else if (window.ActiveXObject) { - result = new window.ActiveXObject('Microsoft.XMLDOM'); - result.async = false; - - if (!result.loadXML(xml)) { - throw util.error(new Error('Parse error in document'), - { - code: 'XMLParserError', - retryable: true - }); - } - } else { - throw new Error('Cannot load XML parser'); - } - } catch (e) { - error = e; - } - - if (result && result.documentElement && !error) { - var data = parseXml(result.documentElement, shape); - var metadata = result.getElementsByTagName('ResponseMetadata')[0]; - if (metadata) { - data.ResponseMetadata = parseXml(metadata, {}); - } - return data; - } else if (error) { - throw util.error(error || new Error(), {code: 'XMLParserError', retryable: true}); - } else { // empty xml document - return {}; - } -}; - -function parseXml(xml, shape) { - if (!shape) shape = {}; - switch (shape.type) { - case 'structure': return parseStructure(xml, shape); - case 'map': return parseMap(xml, shape); - case 'list': return parseList(xml, shape); - case undefined: case null: return parseUnknown(xml); - default: return parseScalar(xml, shape); - } -} - -function parseStructure(xml, shape) { - var data = {}; - if (xml === null) return data; - - util.each(shape.members, function(memberName, memberShape) { - if (memberShape.isXmlAttribute) { - if (Object.prototype.hasOwnProperty.call(xml.attributes, memberShape.name)) { - var value = xml.attributes[memberShape.name].value; - data[memberName] = parseXml({textContent: value}, memberShape); - } - } else { - var xmlChild = memberShape.flattened ? xml : - xml.getElementsByTagName(memberShape.name)[0]; - if (xmlChild) { - data[memberName] = parseXml(xmlChild, memberShape); - } else if (!memberShape.flattened && memberShape.type === 'list') { - data[memberName] = memberShape.defaultValue; - } - } - }); - - return data; -} - -function parseMap(xml, shape) { - var data = {}; - var xmlKey = shape.key.name || 'key'; - var xmlValue = shape.value.name || 'value'; - var tagName = shape.flattened ? shape.name : 'entry'; - - var child = xml.firstElementChild; - while (child) { - if (child.nodeName === tagName) { - var key = child.getElementsByTagName(xmlKey)[0].textContent; - var value = child.getElementsByTagName(xmlValue)[0]; - data[key] = parseXml(value, shape.value); - } - child = child.nextElementSibling; - } - return data; -} - -function parseList(xml, shape) { - var data = []; - var tagName = shape.flattened ? shape.name : (shape.member.name || 'member'); - - var child = xml.firstElementChild; - while (child) { - if (child.nodeName === tagName) { - data.push(parseXml(child, shape.member)); - } - child = child.nextElementSibling; - } - return data; -} - -function parseScalar(xml, shape) { - if (xml.getAttribute) { - var encoding = xml.getAttribute('encoding'); - if (encoding === 'base64') { - shape = new Shape.create({type: encoding}); - } - } - - var text = xml.textContent; - if (text === '') text = null; - if (typeof shape.toType === 'function') { - return shape.toType(text); - } else { - return text; - } -} - -function parseUnknown(xml) { - if (xml === undefined || xml === null) return ''; - - // empty object - if (!xml.firstElementChild) { - if (xml.parentNode.parentNode === null) return {}; - if (xml.childNodes.length === 0) return ''; - else return xml.textContent; - } - - // object, parse as structure - var shape = {type: 'structure', members: {}}; - var child = xml.firstElementChild; - while (child) { - var tag = child.nodeName; - if (Object.prototype.hasOwnProperty.call(shape.members, tag)) { - // multiple tags of the same name makes it a list - shape.members[tag].type = 'list'; - } else { - shape.members[tag] = {name: tag}; - } - child = child.nextElementSibling; - } - return parseStructure(xml, shape); -} - -module.exports = DomXmlParser; diff --git a/node_modules/aws-sdk/lib/xml/builder.js b/node_modules/aws-sdk/lib/xml/builder.js deleted file mode 100644 index 400deeb..0000000 --- a/node_modules/aws-sdk/lib/xml/builder.js +++ /dev/null @@ -1,86 +0,0 @@ -var util = require('../util'); -var builder = require('xmlbuilder'); - -function XmlBuilder() { } - -XmlBuilder.prototype.toXML = function(params, shape, rootElement, noEmpty) { - var xml = builder.create(rootElement); - applyNamespaces(xml, shape); - serialize(xml, params, shape); - return xml.children.length > 0 || noEmpty ? xml.root().toString() : ''; -}; - -function serialize(xml, value, shape) { - switch (shape.type) { - case 'structure': return serializeStructure(xml, value, shape); - case 'map': return serializeMap(xml, value, shape); - case 'list': return serializeList(xml, value, shape); - default: return serializeScalar(xml, value, shape); - } -} - -function serializeStructure(xml, params, shape) { - util.arrayEach(shape.memberNames, function(memberName) { - var memberShape = shape.members[memberName]; - if (memberShape.location !== 'body') return; - - var value = params[memberName]; - var name = memberShape.name; - if (value !== undefined && value !== null) { - if (memberShape.isXmlAttribute) { - xml.att(name, value); - } else if (memberShape.flattened) { - serialize(xml, value, memberShape); - } else { - var element = xml.ele(name); - applyNamespaces(element, memberShape); - serialize(element, value, memberShape); - } - } - }); -} - -function serializeMap(xml, map, shape) { - var xmlKey = shape.key.name || 'key'; - var xmlValue = shape.value.name || 'value'; - - util.each(map, function(key, value) { - var entry = xml.ele(shape.flattened ? shape.name : 'entry'); - serialize(entry.ele(xmlKey), key, shape.key); - serialize(entry.ele(xmlValue), value, shape.value); - }); -} - -function serializeList(xml, list, shape) { - if (shape.flattened) { - util.arrayEach(list, function(value) { - var name = shape.member.name || shape.name; - var element = xml.ele(name); - serialize(element, value, shape.member); - }); - } else { - util.arrayEach(list, function(value) { - var name = shape.member.name || 'member'; - var element = xml.ele(name); - serialize(element, value, shape.member); - }); - } -} - -function serializeScalar(xml, value, shape) { - xml.txt(shape.toWireFormat(value)); -} - -function applyNamespaces(xml, shape) { - var uri, prefix = 'xmlns'; - if (shape.xmlNamespaceUri) { - uri = shape.xmlNamespaceUri; - if (shape.xmlNamespacePrefix) prefix += ':' + shape.xmlNamespacePrefix; - } else if (xml.isRoot && shape.api.xmlNamespaceUri) { - uri = shape.api.xmlNamespaceUri; - } - - if (uri) xml.att(prefix, uri); -} - -module.exports = XmlBuilder; diff --git a/node_modules/aws-sdk/lib/xml/node_parser.js b/node_modules/aws-sdk/lib/xml/node_parser.js deleted file mode 100644 index 876a1a0..0000000 --- a/node_modules/aws-sdk/lib/xml/node_parser.js +++ /dev/null @@ -1,159 +0,0 @@ -var util = require('../util'); -var Shape = require('../model/shape'); - -var xml2js = require('xml2js'); - -/** - * @api private - */ -var options = { // options passed to xml2js parser - explicitCharkey: false, // undocumented - trim: false, // trim the leading/trailing whitespace from text nodes - normalize: false, // trim interior whitespace inside text nodes - explicitRoot: false, // return the root node in the resulting object? - emptyTag: null, // the default value for empty nodes - explicitArray: true, // always put child nodes in an array - ignoreAttrs: false, // ignore attributes, only create text nodes - mergeAttrs: false, // merge attributes and child elements - validator: null // a callable validator -}; - -function NodeXmlParser() { } - -NodeXmlParser.prototype.parse = function(xml, shape) { - shape = shape || {}; - - var result = null; - var error = null; - - var parser = new xml2js.Parser(options); - parser.parseString(xml, function (e, r) { - error = e; - result = r; - }); - - if (result) { - var data = parseXml(result, shape); - if (result.ResponseMetadata) { - data.ResponseMetadata = parseXml(result.ResponseMetadata[0], {}); - } - return data; - } else if (error) { - throw util.error(error, {code: 'XMLParserError', retryable: true}); - } else { // empty xml document - return parseXml({}, shape); - } -}; - -function parseXml(xml, shape) { - switch (shape.type) { - case 'structure': return parseStructure(xml, shape); - case 'map': return parseMap(xml, shape); - case 'list': return parseList(xml, shape); - case undefined: case null: return parseUnknown(xml); - default: return parseScalar(xml, shape); - } -} - -function parseStructure(xml, shape) { - var data = {}; - if (xml === null) return data; - - util.each(shape.members, function(memberName, memberShape) { - var xmlName = memberShape.name; - if (Object.prototype.hasOwnProperty.call(xml, xmlName) && Array.isArray(xml[xmlName])) { - var xmlChild = xml[xmlName]; - if (!memberShape.flattened) xmlChild = xmlChild[0]; - - data[memberName] = parseXml(xmlChild, memberShape); - } else if (memberShape.isXmlAttribute && - xml.$ && Object.prototype.hasOwnProperty.call(xml.$, xmlName)) { - data[memberName] = parseScalar(xml.$[xmlName], memberShape); - } else if (memberShape.type === 'list') { - data[memberName] = memberShape.defaultValue; - } - }); - - return data; -} - -function parseMap(xml, shape) { - var data = {}; - if (xml === null) return data; - - var xmlKey = shape.key.name || 'key'; - var xmlValue = shape.value.name || 'value'; - var iterable = shape.flattened ? xml : xml.entry; - - if (Array.isArray(iterable)) { - util.arrayEach(iterable, function(child) { - data[child[xmlKey][0]] = parseXml(child[xmlValue][0], shape.value); - }); - } - - return data; -} - -function parseList(xml, shape) { - var data = []; - var name = shape.member.name || 'member'; - if (shape.flattened) { - util.arrayEach(xml, function(xmlChild) { - data.push(parseXml(xmlChild, shape.member)); - }); - } else if (xml && Array.isArray(xml[name])) { - util.arrayEach(xml[name], function(child) { - data.push(parseXml(child, shape.member)); - }); - } - - return data; -} - -function parseScalar(text, shape) { - if (text && text.$ && text.$.encoding === 'base64') { - shape = new Shape.create({type: text.$.encoding}); - } - if (text && text._) text = text._; - - if (typeof shape.toType === 'function') { - return shape.toType(text); - } else { - return text; - } -} - -function parseUnknown(xml) { - if (xml === undefined || xml === null) return ''; - if (typeof xml === 'string') return xml; - - // parse a list - if (Array.isArray(xml)) { - var arr = []; - for (i = 0; i < xml.length; i++) { - arr.push(parseXml(xml[i], {})); - } - return arr; - } - - // empty object - var keys = Object.keys(xml), i; - if (keys.length === 0 || keys === ['$']) { - return {}; - } - - // object, parse as structure - var data = {}; - for (i = 0; i < keys.length; i++) { - var key = keys[i], value = xml[key]; - if (key === '$') continue; - if (value.length > 1) { // this member is a list - data[key] = parseList(value, {member: {}}); - } else { // this member is a single item - data[key] = parseXml(value[0], {}); - } - } - return data; -} - -module.exports = NodeXmlParser; diff --git a/node_modules/aws-sdk/node_modules/buffer/.npmignore b/node_modules/aws-sdk/node_modules/buffer/.npmignore deleted file mode 100644 index a274035..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/.npmignore +++ /dev/null @@ -1,2 +0,0 @@ -.zuul.yml -perf/ diff --git a/node_modules/aws-sdk/node_modules/buffer/.travis.yml b/node_modules/aws-sdk/node_modules/buffer/.travis.yml deleted file mode 100644 index 6789094..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: -- 'node' -sudo: false -env: - global: - - secure: AUsK+8fYSpwIMHcVt8Mu9SpG9RPHp4XDAwCQfpU3d5U65q8OVVC6C+XjvnNmEd2PoEJRHem8ZXEyRVfGM1sttKZLZP70TEKZOpOiRQnZiTQCAJ92TfGsDj/F4LoWSjUZUpfeg9b3iSp8G5dVw3+q9QZPIu6eykASK6bfcg//Cyg= - - secure: eQBKJWu7XbhAN4ZvOOhMenC0IPpoYj+wZVVzzsLwUppfJqlrHV0CUW8rJdvZNiaGhYhoyHTnAcynpTE5kZfg3XjevOvF8PGY5wUYCki9BI+rp+pvVPZE/DNUAQpFR2gd2nxMJ4kYv7GVb6i/DfuqJa0h8IuY4zcMuKWwbQd3Az8= diff --git a/node_modules/aws-sdk/node_modules/buffer/AUTHORS.md b/node_modules/aws-sdk/node_modules/buffer/AUTHORS.md deleted file mode 100644 index 8df343a..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/AUTHORS.md +++ /dev/null @@ -1,44 +0,0 @@ -# Authors - -#### Ordered by first contribution. - -- Romain Beauxis (toots@rastageeks.org) -- Tobias Koppers (tobias.koppers@googlemail.com) -- Janus (ysangkok@gmail.com) -- Rainer Dreyer (rdrey1@gmail.com) -- Tõnis Tiigi (tonistiigi@gmail.com) -- James Halliday (mail@substack.net) -- Michael Williamson (mike@zwobble.org) -- elliottcable (github@elliottcable.name) -- rafael (rvalle@livelens.net) -- Andrew Kelley (superjoe30@gmail.com) -- Andreas Madsen (amwebdk@gmail.com) -- Mike Brevoort (mike.brevoort@pearson.com) -- Brian White (mscdex@mscdex.net) -- Feross Aboukhadijeh (feross@feross.org) -- Ruben Verborgh (ruben@verborgh.org) -- eliang (eliang.cs@gmail.com) -- Jesse Tane (jesse.tane@gmail.com) -- Alfonso Boza (alfonso@cloud.com) -- Mathias Buus (mathiasbuus@gmail.com) -- Devon Govett (devongovett@gmail.com) -- Daniel Cousens (github@dcousens.com) -- Joseph Dykstra (josephdykstra@gmail.com) -- Parsha Pourkhomami (parshap+git@gmail.com) -- Damjan KoÅ¡ir (damjan.kosir@gmail.com) -- daverayment (dave.rayment@gmail.com) -- kawanet (u-suke@kawa.net) -- Linus Unnebäck (linus@folkdatorn.se) -- Nolan Lawson (nolan.lawson@gmail.com) -- Calvin Metcalf (calvin.metcalf@gmail.com) -- Koki Takahashi (hakatasiloving@gmail.com) -- Guy Bedford (guybedford@gmail.com) -- Jan Schär (jscissr@gmail.com) -- RaulTsc (tomescu.raul@gmail.com) -- Matthieu Monsch (monsch@alum.mit.edu) -- Dan Ehrenberg (littledan@chromium.org) -- Kirill Fomichev (fanatid@ya.ru) -- Yusuke Kawasaki (u-suke@kawa.net) -- DC (dcposch@dcpos.ch) - -#### Generated by bin/update-authors.sh. diff --git a/node_modules/aws-sdk/node_modules/buffer/LICENSE b/node_modules/aws-sdk/node_modules/buffer/LICENSE deleted file mode 100644 index d6bf75d..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) Feross Aboukhadijeh, and other contributors. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/buffer/README.md b/node_modules/aws-sdk/node_modules/buffer/README.md deleted file mode 100644 index d3b82f6..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/README.md +++ /dev/null @@ -1,378 +0,0 @@ -# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url] - -#### The buffer module from [node.js](https://nodejs.org/), for the browser. - -[![saucelabs][saucelabs-image]][saucelabs-url] - -[travis-image]: https://img.shields.io/travis/feross/buffer/master.svg -[travis-url]: https://travis-ci.org/feross/buffer -[npm-image]: https://img.shields.io/npm/v/buffer.svg -[npm-url]: https://npmjs.org/package/buffer -[downloads-image]: https://img.shields.io/npm/dm/buffer.svg -[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg -[saucelabs-url]: https://saucelabs.com/u/buffer - -With [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module. - -The goal is to provide an API that is 100% identical to -[node's Buffer API](https://nodejs.org/api/buffer.html). Read the -[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, -instance methods, and class methods that are supported. - -## features - -- Manipulate binary data like a boss, in all browsers -- even IE6! -- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`) -- Extremely small bundle size (**5.04KB minified + gzipped**, 35.5KB with comments) -- Excellent browser support (IE 6+, Chrome 4+, Firefox 3+, Safari 5.1+, Opera 11+, iOS, etc.) -- Preserves Node API exactly, with one minor difference (see below) -- Square-bracket `buf[4]` notation works, even in old browsers like IE6! -- Does not modify any browser prototypes or put anything on `window` -- Comprehensive test suite (including all buffer tests from node.js core) - - -## install - -To use this module directly (without browserify), install it: - -```bash -npm install buffer -``` - -This module was previously called **native-buffer-browserify**, but please use **buffer** -from now on. - -A standalone bundle is available [here](https://wzrd.in/standalone/buffer), for non-browserify users. - - -## usage - -The module's API is identical to node's `Buffer` API. Read the -[official docs](https://nodejs.org/api/buffer.html) for the full list of properties, -instance methods, and class methods that are supported. - -As mentioned above, `require('buffer')` or use the `Buffer` global with -[browserify](http://browserify.org) and this module will automatically be included -in your bundle. Almost any npm module will work in the browser, even if it assumes that -the node `Buffer` API will be available. - -To depend on this module explicitly (without browserify), require it like this: - -```js -var Buffer = require('buffer/').Buffer // note: the trailing slash is important! -``` - -To require this module explicitly, use `require('buffer/')` which tells the node.js module -lookup algorithm (also used by browserify) to use the **npm module** named `buffer` -instead of the **node.js core** module named `buffer`! - - -## how does it work? - -The Buffer constructor returns instances of `Uint8Array` that have their prototype -changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of `Uint8Array`, -so the returned instances will have all the node `Buffer` methods and the -`Uint8Array` methods. Square bracket notation works as expected -- it returns a -single octet. - -The `Uint8Array` prototype remains unmodified. - - -## one minor difference - -#### In old browsers, `buf.slice()` does not modify parent buffer's memory - -If you only support modern browsers (specifically, those with typed array support), -then this issue does not affect you. If you support super old browsers, then read on. - -In node, the `slice()` method returns a new `Buffer` that shares underlying memory -with the original Buffer. When you modify one buffer, you modify the other. -[Read more.](https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end) - -In browsers with typed array support, this `Buffer` implementation supports this -behavior. In browsers without typed arrays, an alternate buffer implementation is -used that is based on `Object` which has no mechanism to point separate -`Buffer`s to the same underlying slab of memory. - -You can see which browser versions lack typed array support -[here](https://github.com/feross/buffer/blob/master/index.js#L22-L48). - - -## tracking the latest node api - -This module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer -API is considered **stable** in the -[node stability index](https://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index), -so it is unlikely that there will ever be breaking changes. -Nonetheless, when/if the Buffer API changes in node, this module's API will change -accordingly. - -## related packages - -- [`buffer-equals`](https://www.npmjs.com/package/buffer-equals) - Node.js 0.12 buffer.equals() ponyfill -- [`buffer-reverse`](https://www.npmjs.com/package/buffer-reverse) - A lite module for reverse-operations on buffers -- [`buffer-xor`](https://www.npmjs.com/package/buffer-xor) - A simple module for bitwise-xor on buffers -- [`is-buffer`](https://www.npmjs.com/package/is-buffer) - Determine if an object is a Buffer without including the whole `Buffer` package -- [`typedarray-to-buffer`](https://www.npmjs.com/package/typedarray-to-buffer) - Convert a typed array to a Buffer without a copy - -## performance - -See perf tests in `/perf`. - -`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a -sanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will -always be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module, -which is included to compare against. - -NOTE: Performance has improved since these benchmarks were taken. PR welcoem to update the README. - -### Chrome 38 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ | -| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | | -| | | | | -| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | | -| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | | -| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | | -| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | | -| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | | -| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ | -| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | | -| | | | | -| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ | -| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | | -| | | | | -| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ | -| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | | -| | | | | -| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | | -| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | | -| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ | - - -### Firefox 33 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | | -| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ | -| | | | | -| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | | -| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | | -| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | | -| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | | -| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | | -| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | | -| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ | -| | | | | -| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | | -| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ | -| | | | | -| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ | -| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | | -| | | | | -| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | | -| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | | -| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ | - -### Safari 8 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ | -| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | | -| | | | | -| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | | -| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | | -| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | | -| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ | -| | | | | -| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | | -| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | | -| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ | -| | | | | -| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | | -| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ | -| | | | | -| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | | -| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ | -| | | | | -| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | | -| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ | -| | | | | -| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | | -| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | | -| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ | - - -### Node 0.11.14 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | | -| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ | -| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | | -| | | | | -| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | | -| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ | -| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | | -| | | | | -| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | | -| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ | -| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | | -| | | | | -| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | | -| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ | -| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | | -| | | | | -| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | | -| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | | -| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | | -| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ | -| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | | -| | | | | -| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ | -| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | | -| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | | -| | | | | -| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ | -| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | | -| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | | -| | | | | -| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | | -| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | | -| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ | -| | | | | -| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | | -| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ | -| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | | -| | | | | -| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | | -| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ | -| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | | - -### iojs 1.8.1 - -| Method | Operations | Accuracy | Sampled | Fastest | -|:-------|:-----------|:---------|:--------|:-------:| -| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | | -| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | | -| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ | -| | | | | -| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | | -| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | | -| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ | -| | | | | -| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | | -| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | | -| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ | -| | | | | -| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | | -| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ | -| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | | -| | | | | -| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | | -| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | | -| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ | -| | | | | -| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | | -| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ | -| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | | -| | | | | -| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ | -| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | | -| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | | -| | | | | -| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ | -| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | | -| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | | -| | | | | -| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | | -| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | | -| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ | -| | | | | -| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | | -| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | | -| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ | -| | | | | -| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | | -| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ | -| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | | -| | | | | - -## Testing the project - -First, install the project: - - npm install - -Then, to run tests in Node.js, run: - - npm run test-node - -To test locally in a browser, you can run: - - npm run test-browser-local - -This will print out a URL that you can then open in a browser to run the tests, using [Zuul](https://github.com/defunctzombie/zuul). - -To run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run: - - npm test - -This is what's run in Travis, to check against various browsers. The list of browsers is kept in the `.zuul.yml` file. - -## JavaScript Standard Style - -This module uses [JavaScript Standard Style](https://github.com/feross/standard). - -[![JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard) - -To test that the code conforms to the style, `npm install` and run: - - ./node_modules/.bin/standard - -## credit - -This was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify). - - -## license - -MIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis. diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js b/node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js deleted file mode 100755 index 97efde0..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/bin/download-node-tests.js +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env node - -var concat = require('concat-stream') -var cp = require('child_process') -var fs = require('fs') -var hyperquest = require('hyperquest') -var path = require('path') -var split = require('split') -var through = require('through2') - -var url = 'https://api.github.com/repos/nodejs/node/contents' -var dirs = [ - '/test/parallel', - '/test/pummel' -] - -cp.execSync('rm -rf node/*.js', { cwd: path.join(__dirname, '../test') }) - -var httpOpts = { - headers: { - 'User-Agent': null - // auth if github rate-limits you... - // 'Authorization': 'Basic ' + Buffer('username:password').toString('base64'), - } -} - -dirs.forEach(function (dir) { - var req = hyperquest(url + dir, httpOpts) - req.pipe(concat(function (data) { - if (req.response.statusCode !== 200) { - throw new Error(url + dir + ': ' + data.toString()) - } - downloadBufferTests(dir, JSON.parse(data)) - })) -}) - -function downloadBufferTests (dir, files) { - files.forEach(function (file) { - if (!/test-buffer.*/.test(file.name)) return - - if (file.name === 'test-buffer-fakes.js') { - // These teses only apply to node, where they're calling into C++ and need to - // ensure the prototype can't be faked, or else there will be a segfault. - return - } - - console.log(file.download_url) - - var out = path.join(__dirname, '../test/node', file.name) - hyperquest(file.download_url, httpOpts) - .pipe(split()) - .pipe(testfixer(file.name)) - .pipe(fs.createWriteStream(out)) - .on('finish', function () { - console.log('wrote ' + file.name) - }) - }) -} - -function testfixer (filename) { - var firstline = true - - return through(function (line, enc, cb) { - line = line.toString() - - if (firstline) { - // require buffer explicitly - var preamble = 'var Buffer = require(\'../../\').Buffer;\n' - if (/use strict/.test(line)) line += '\n' + preamble - else line + preamble + '\n' + line - firstline = false - } - - // use `var` instead of `const`/`let` - line = line.replace(/(const|let) /g, 'var ') - - // make `var common = require('common')` work - line = line.replace(/(var common = require.*)/g, 'var common = { skip: function () {} };') - - // make `require('../common')` work - line = line.replace(/require\('\.\.\/common'\);/g, '') - - // require browser buffer - line = line.replace(/(.*)require\('buffer'\)(.*)/g, '$1require(\'../../\')$2') - - // comment out console logs - line = line.replace(/(.*console\..*)/g, '// $1') - - // we can't reliably test typed array max-sizes in the browser - if (filename === 'test-buffer-big.js') { - line = line.replace(/(.*new Int8Array.*RangeError.*)/, '// $1') - line = line.replace(/(.*new ArrayBuffer.*RangeError.*)/, '// $1') - line = line.replace(/(.*new Float64Array.*RangeError.*)/, '// $1') - } - - // https://github.com/nodejs/node/blob/v0.12/test/parallel/test-buffer.js#L1138 - // unfortunately we can't run this because crypto-browserify doesn't work in old - // versions of ie - if (filename === 'test-buffer.js') { - line = line.replace(/^(\s*)(var crypto = require.*)/, '$1// $2') - line = line.replace(/(crypto.createHash.*\))/, '1 /*$1*/') - } - - cb(null, line + '\n') - }) -} diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/test.js b/node_modules/aws-sdk/node_modules/buffer/bin/test.js deleted file mode 100644 index 5a86f1b..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/bin/test.js +++ /dev/null @@ -1,41 +0,0 @@ -#!/usr/bin/env node - -var cp = require('child_process') -var fs = require('fs') -var path = require('path') - -var shouldRunBrowserTests = !process.env.TRAVIS_PULL_REQUEST || - process.env.TRAVIS_PULL_REQUEST === 'false' - -var node = cp.spawn('npm', ['run', 'test-node'], { stdio: 'inherit' }) -node.on('close', function (code) { - if (code === 0 && shouldRunBrowserTests) { - runBrowserTests() - } else { - process.exit(code) - } -}) - -function runBrowserTests () { - var zuulYmlPath = path.join(__dirname, '..', '.zuul.yml') - - writeES5ZuulYml() - cp.spawn('npm', ['run', 'test-browser-es5'], { stdio: 'inherit' }) - .on('close', function (code) { - if (code !== 0) process.exit(code) - writeES6ZuulYml() - cp.spawn('npm', ['run', 'test-browser-es6'], { stdio: 'inherit' }) - .on('close', function (code) { - process.exit(code) - }) - }) - - function writeES5ZuulYml () { - fs.writeFileSync(zuulYmlPath, fs.readFileSync(path.join(__dirname, 'zuul-es5.yml'))) - } - - function writeES6ZuulYml () { - fs.writeFileSync(zuulYmlPath, fs.readFileSync(path.join(__dirname, 'zuul-es6.yml'))) - } -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh b/node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh deleted file mode 100755 index efcbc78..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/bin/update-authors.sh +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/sh -# Update AUTHORS.md based on git history. - -git log --reverse --format='%aN (%aE)' | perl -we ' -BEGIN { - %seen = (), @authors = (); -} -while (<>) { - next if $seen{$_}; - next if /(support\@greenkeeper.io)/; - next if /(dcousens\@users.noreply.github.com)/; - next if /(cmetcalf\@appgeo.com)/; - $seen{$_} = push @authors, "- ", $_; -} -END { - print "# Authors\n\n"; - print "#### Ordered by first contribution.\n\n"; - print @authors, "\n"; - print "#### Generated by bin/update-authors.sh.\n"; -} -' > AUTHORS.md diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml b/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml deleted file mode 100644 index 3673bcc..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es5.yml +++ /dev/null @@ -1,14 +0,0 @@ -ui: tape -scripts: - - ./test/_polyfill.js -browsers: - - name: safari - version: latest - - name: ie - version: 8..latest - - name: microsoftedge - version: 13..latest - - name: android - version: 4.4..latest - - name: iphone - version: latest diff --git a/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml b/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml deleted file mode 100644 index 8054ad6..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/bin/zuul-es6.yml +++ /dev/null @@ -1,6 +0,0 @@ -ui: tape -browsers: - - name: chrome - version: '-1..latest' - - name: firefox - version: '-1..latest' diff --git a/node_modules/aws-sdk/node_modules/buffer/index.js b/node_modules/aws-sdk/node_modules/buffer/index.js deleted file mode 100644 index 0fcd80a..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/index.js +++ /dev/null @@ -1,1789 +0,0 @@ -/*! - * The buffer module from node.js, for the browser. - * - * @author Feross Aboukhadijeh - * @license MIT - */ -/* eslint-disable no-proto */ - -'use strict' - -var base64 = require('base64-js') -var ieee754 = require('ieee754') -var isArray = require('isarray') - -exports.Buffer = Buffer -exports.SlowBuffer = SlowBuffer -exports.INSPECT_MAX_BYTES = 50 - -/** - * If `Buffer.TYPED_ARRAY_SUPPORT`: - * === true Use Uint8Array implementation (fastest) - * === false Use Object implementation (most compatible, even IE6) - * - * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+, - * Opera 11.6+, iOS 4.2+. - * - * Due to various browser bugs, sometimes the Object implementation will be used even - * when the browser supports typed arrays. - * - * Note: - * - * - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances, - * See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438. - * - * - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function. - * - * - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of - * incorrect length in some situations. - - * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they - * get the Object implementation, which is slower but behaves correctly. - */ -Buffer.TYPED_ARRAY_SUPPORT = global.TYPED_ARRAY_SUPPORT !== undefined - ? global.TYPED_ARRAY_SUPPORT - : typedArraySupport() - -/* - * Export kMaxLength after typed array support is determined. - */ -exports.kMaxLength = kMaxLength() - -function typedArraySupport () { - try { - var arr = new Uint8Array(1) - arr.__proto__ = {__proto__: Uint8Array.prototype, foo: function () { return 42 }} - return arr.foo() === 42 && // typed array instances can be augmented - typeof arr.subarray === 'function' && // chrome 9-10 lack `subarray` - arr.subarray(1, 1).byteLength === 0 // ie10 has broken `subarray` - } catch (e) { - return false - } -} - -function kMaxLength () { - return Buffer.TYPED_ARRAY_SUPPORT - ? 0x7fffffff - : 0x3fffffff -} - -function createBuffer (that, length) { - if (kMaxLength() < length) { - throw new RangeError('Invalid typed array length') - } - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = new Uint8Array(length) - that.__proto__ = Buffer.prototype - } else { - // Fallback: Return an object instance of the Buffer class - if (that === null) { - that = new Buffer(length) - } - that.length = length - } - - return that -} - -/** - * The Buffer constructor returns instances of `Uint8Array` that have their - * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of - * `Uint8Array`, so the returned instances will have all the node `Buffer` methods - * and the `Uint8Array` methods. Square bracket notation works as expected -- it - * returns a single octet. - * - * The `Uint8Array` prototype remains unmodified. - */ - -function Buffer (arg, encodingOrOffset, length) { - if (!Buffer.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer)) { - return new Buffer(arg, encodingOrOffset, length) - } - - // Common case. - if (typeof arg === 'number') { - if (typeof encodingOrOffset === 'string') { - throw new Error( - 'If encoding is specified then the first argument must be a string' - ) - } - return allocUnsafe(this, arg) - } - return from(this, arg, encodingOrOffset, length) -} - -Buffer.poolSize = 8192 // not used by this implementation - -// TODO: Legacy, not needed anymore. Remove in next major version. -Buffer._augment = function (arr) { - arr.__proto__ = Buffer.prototype - return arr -} - -function from (that, value, encodingOrOffset, length) { - if (typeof value === 'number') { - throw new TypeError('"value" argument must not be a number') - } - - if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) { - return fromArrayBuffer(that, value, encodingOrOffset, length) - } - - if (typeof value === 'string') { - return fromString(that, value, encodingOrOffset) - } - - return fromObject(that, value) -} - -/** - * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError - * if value is a number. - * Buffer.from(str[, encoding]) - * Buffer.from(array) - * Buffer.from(buffer) - * Buffer.from(arrayBuffer[, byteOffset[, length]]) - **/ -Buffer.from = function (value, encodingOrOffset, length) { - return from(null, value, encodingOrOffset, length) -} - -if (Buffer.TYPED_ARRAY_SUPPORT) { - Buffer.prototype.__proto__ = Uint8Array.prototype - Buffer.__proto__ = Uint8Array - if (typeof Symbol !== 'undefined' && Symbol.species && - Buffer[Symbol.species] === Buffer) { - // Fix subarray() in ES2016. See: https://github.com/feross/buffer/pull/97 - Object.defineProperty(Buffer, Symbol.species, { - value: null, - configurable: true - }) - } -} - -function assertSize (size) { - if (typeof size !== 'number') { - throw new TypeError('"size" argument must be a number') - } else if (size < 0) { - throw new RangeError('"size" argument must not be negative') - } -} - -function alloc (that, size, fill, encoding) { - assertSize(size) - if (size <= 0) { - return createBuffer(that, size) - } - if (fill !== undefined) { - // Only pay attention to encoding if it's a string. This - // prevents accidentally sending in a number that would - // be interpretted as a start offset. - return typeof encoding === 'string' - ? createBuffer(that, size).fill(fill, encoding) - : createBuffer(that, size).fill(fill) - } - return createBuffer(that, size) -} - -/** - * Creates a new filled Buffer instance. - * alloc(size[, fill[, encoding]]) - **/ -Buffer.alloc = function (size, fill, encoding) { - return alloc(null, size, fill, encoding) -} - -function allocUnsafe (that, size) { - assertSize(size) - that = createBuffer(that, size < 0 ? 0 : checked(size) | 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) { - for (var i = 0; i < size; ++i) { - that[i] = 0 - } - } - return that -} - -/** - * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance. - * */ -Buffer.allocUnsafe = function (size) { - return allocUnsafe(null, size) -} -/** - * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance. - */ -Buffer.allocUnsafeSlow = function (size) { - return allocUnsafe(null, size) -} - -function fromString (that, string, encoding) { - if (typeof encoding !== 'string' || encoding === '') { - encoding = 'utf8' - } - - if (!Buffer.isEncoding(encoding)) { - throw new TypeError('"encoding" must be a valid string encoding') - } - - var length = byteLength(string, encoding) | 0 - that = createBuffer(that, length) - - var actual = that.write(string, encoding) - - if (actual !== length) { - // Writing a hex string, for example, that contains invalid characters will - // cause everything after the first invalid character to be ignored. (e.g. - // 'abxxcd' will be treated as 'ab') - that = that.slice(0, actual) - } - - return that -} - -function fromArrayLike (that, array) { - var length = array.length < 0 ? 0 : checked(array.length) | 0 - that = createBuffer(that, length) - for (var i = 0; i < length; i += 1) { - that[i] = array[i] & 255 - } - return that -} - -function fromArrayBuffer (that, array, byteOffset, length) { - array.byteLength // this throws if `array` is not a valid ArrayBuffer - - if (byteOffset < 0 || array.byteLength < byteOffset) { - throw new RangeError('\'offset\' is out of bounds') - } - - if (array.byteLength < byteOffset + (length || 0)) { - throw new RangeError('\'length\' is out of bounds') - } - - if (byteOffset === undefined && length === undefined) { - array = new Uint8Array(array) - } else if (length === undefined) { - array = new Uint8Array(array, byteOffset) - } else { - array = new Uint8Array(array, byteOffset, length) - } - - if (Buffer.TYPED_ARRAY_SUPPORT) { - // Return an augmented `Uint8Array` instance, for best performance - that = array - that.__proto__ = Buffer.prototype - } else { - // Fallback: Return an object instance of the Buffer class - that = fromArrayLike(that, array) - } - return that -} - -function fromObject (that, obj) { - if (Buffer.isBuffer(obj)) { - var len = checked(obj.length) | 0 - that = createBuffer(that, len) - - if (that.length === 0) { - return that - } - - obj.copy(that, 0, 0, len) - return that - } - - if (obj) { - if ((typeof ArrayBuffer !== 'undefined' && - obj.buffer instanceof ArrayBuffer) || 'length' in obj) { - if (typeof obj.length !== 'number' || isnan(obj.length)) { - return createBuffer(that, 0) - } - return fromArrayLike(that, obj) - } - - if (obj.type === 'Buffer' && isArray(obj.data)) { - return fromArrayLike(that, obj.data) - } - } - - throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.') -} - -function checked (length) { - // Note: cannot use `length < kMaxLength()` here because that fails when - // length is NaN (which is otherwise coerced to zero.) - if (length >= kMaxLength()) { - throw new RangeError('Attempt to allocate Buffer larger than maximum ' + - 'size: 0x' + kMaxLength().toString(16) + ' bytes') - } - return length | 0 -} - -function SlowBuffer (length) { - if (+length != length) { // eslint-disable-line eqeqeq - length = 0 - } - return Buffer.alloc(+length) -} - -Buffer.isBuffer = function isBuffer (b) { - return !!(b != null && b._isBuffer) -} - -Buffer.compare = function compare (a, b) { - if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) { - throw new TypeError('Arguments must be Buffers') - } - - if (a === b) return 0 - - var x = a.length - var y = b.length - - for (var i = 0, len = Math.min(x, y); i < len; ++i) { - if (a[i] !== b[i]) { - x = a[i] - y = b[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -Buffer.isEncoding = function isEncoding (encoding) { - switch (String(encoding).toLowerCase()) { - case 'hex': - case 'utf8': - case 'utf-8': - case 'ascii': - case 'latin1': - case 'binary': - case 'base64': - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return true - default: - return false - } -} - -Buffer.concat = function concat (list, length) { - if (!isArray(list)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - - if (list.length === 0) { - return Buffer.alloc(0) - } - - var i - if (length === undefined) { - length = 0 - for (i = 0; i < list.length; ++i) { - length += list[i].length - } - } - - var buffer = Buffer.allocUnsafe(length) - var pos = 0 - for (i = 0; i < list.length; ++i) { - var buf = list[i] - if (!Buffer.isBuffer(buf)) { - throw new TypeError('"list" argument must be an Array of Buffers') - } - buf.copy(buffer, pos) - pos += buf.length - } - return buffer -} - -function byteLength (string, encoding) { - if (Buffer.isBuffer(string)) { - return string.length - } - if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' && - (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) { - return string.byteLength - } - if (typeof string !== 'string') { - string = '' + string - } - - var len = string.length - if (len === 0) return 0 - - // Use a for loop to avoid recursion - var loweredCase = false - for (;;) { - switch (encoding) { - case 'ascii': - case 'latin1': - case 'binary': - return len - case 'utf8': - case 'utf-8': - case undefined: - return utf8ToBytes(string).length - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return len * 2 - case 'hex': - return len >>> 1 - case 'base64': - return base64ToBytes(string).length - default: - if (loweredCase) return utf8ToBytes(string).length // assume utf8 - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} -Buffer.byteLength = byteLength - -function slowToString (encoding, start, end) { - var loweredCase = false - - // No need to verify that "this.length <= MAX_UINT32" since it's a read-only - // property of a typed array. - - // This behaves neither like String nor Uint8Array in that we set start/end - // to their upper/lower bounds if the value passed is out of range. - // undefined is handled specially as per ECMA-262 6th Edition, - // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization. - if (start === undefined || start < 0) { - start = 0 - } - // Return early if start > this.length. Done here to prevent potential uint32 - // coercion fail below. - if (start > this.length) { - return '' - } - - if (end === undefined || end > this.length) { - end = this.length - } - - if (end <= 0) { - return '' - } - - // Force coersion to uint32. This will also coerce falsey/NaN values to 0. - end >>>= 0 - start >>>= 0 - - if (end <= start) { - return '' - } - - if (!encoding) encoding = 'utf8' - - while (true) { - switch (encoding) { - case 'hex': - return hexSlice(this, start, end) - - case 'utf8': - case 'utf-8': - return utf8Slice(this, start, end) - - case 'ascii': - return asciiSlice(this, start, end) - - case 'latin1': - case 'binary': - return latin1Slice(this, start, end) - - case 'base64': - return base64Slice(this, start, end) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return utf16leSlice(this, start, end) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = (encoding + '').toLowerCase() - loweredCase = true - } - } -} - -// The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect -// Buffer instances. -Buffer.prototype._isBuffer = true - -function swap (b, n, m) { - var i = b[n] - b[n] = b[m] - b[m] = i -} - -Buffer.prototype.swap16 = function swap16 () { - var len = this.length - if (len % 2 !== 0) { - throw new RangeError('Buffer size must be a multiple of 16-bits') - } - for (var i = 0; i < len; i += 2) { - swap(this, i, i + 1) - } - return this -} - -Buffer.prototype.swap32 = function swap32 () { - var len = this.length - if (len % 4 !== 0) { - throw new RangeError('Buffer size must be a multiple of 32-bits') - } - for (var i = 0; i < len; i += 4) { - swap(this, i, i + 3) - swap(this, i + 1, i + 2) - } - return this -} - -Buffer.prototype.swap64 = function swap64 () { - var len = this.length - if (len % 8 !== 0) { - throw new RangeError('Buffer size must be a multiple of 64-bits') - } - for (var i = 0; i < len; i += 8) { - swap(this, i, i + 7) - swap(this, i + 1, i + 6) - swap(this, i + 2, i + 5) - swap(this, i + 3, i + 4) - } - return this -} - -Buffer.prototype.toString = function toString () { - var length = this.length | 0 - if (length === 0) return '' - if (arguments.length === 0) return utf8Slice(this, 0, length) - return slowToString.apply(this, arguments) -} - -Buffer.prototype.equals = function equals (b) { - if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer') - if (this === b) return true - return Buffer.compare(this, b) === 0 -} - -Buffer.prototype.inspect = function inspect () { - var str = '' - var max = exports.INSPECT_MAX_BYTES - if (this.length > 0) { - str = this.toString('hex', 0, max).match(/.{2}/g).join(' ') - if (this.length > max) str += ' ... ' - } - return '' -} - -Buffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) { - if (!Buffer.isBuffer(target)) { - throw new TypeError('Argument must be a Buffer') - } - - if (start === undefined) { - start = 0 - } - if (end === undefined) { - end = target ? target.length : 0 - } - if (thisStart === undefined) { - thisStart = 0 - } - if (thisEnd === undefined) { - thisEnd = this.length - } - - if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) { - throw new RangeError('out of range index') - } - - if (thisStart >= thisEnd && start >= end) { - return 0 - } - if (thisStart >= thisEnd) { - return -1 - } - if (start >= end) { - return 1 - } - - start >>>= 0 - end >>>= 0 - thisStart >>>= 0 - thisEnd >>>= 0 - - if (this === target) return 0 - - var x = thisEnd - thisStart - var y = end - start - var len = Math.min(x, y) - - var thisCopy = this.slice(thisStart, thisEnd) - var targetCopy = target.slice(start, end) - - for (var i = 0; i < len; ++i) { - if (thisCopy[i] !== targetCopy[i]) { - x = thisCopy[i] - y = targetCopy[i] - break - } - } - - if (x < y) return -1 - if (y < x) return 1 - return 0 -} - -// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`, -// OR the last index of `val` in `buffer` at offset <= `byteOffset`. -// -// Arguments: -// - buffer - a Buffer to search -// - val - a string, Buffer, or number -// - byteOffset - an index into `buffer`; will be clamped to an int32 -// - encoding - an optional encoding, relevant is val is a string -// - dir - true for indexOf, false for lastIndexOf -function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) { - // Empty buffer means no match - if (buffer.length === 0) return -1 - - // Normalize byteOffset - if (typeof byteOffset === 'string') { - encoding = byteOffset - byteOffset = 0 - } else if (byteOffset > 0x7fffffff) { - byteOffset = 0x7fffffff - } else if (byteOffset < -0x80000000) { - byteOffset = -0x80000000 - } - byteOffset = +byteOffset // Coerce to Number. - if (isNaN(byteOffset)) { - // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer - byteOffset = dir ? 0 : (buffer.length - 1) - } - - // Normalize byteOffset: negative offsets start from the end of the buffer - if (byteOffset < 0) byteOffset = buffer.length + byteOffset - if (byteOffset >= buffer.length) { - if (dir) return -1 - else byteOffset = buffer.length - 1 - } else if (byteOffset < 0) { - if (dir) byteOffset = 0 - else return -1 - } - - // Normalize val - if (typeof val === 'string') { - val = Buffer.from(val, encoding) - } - - // Finally, search either indexOf (if dir is true) or lastIndexOf - if (Buffer.isBuffer(val)) { - // Special case: looking for empty string/buffer always fails - if (val.length === 0) { - return -1 - } - return arrayIndexOf(buffer, val, byteOffset, encoding, dir) - } else if (typeof val === 'number') { - val = val & 0xFF // Search for a byte value [0-255] - if (Buffer.TYPED_ARRAY_SUPPORT && - typeof Uint8Array.prototype.indexOf === 'function') { - if (dir) { - return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset) - } else { - return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset) - } - } - return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir) - } - - throw new TypeError('val must be string, number or Buffer') -} - -function arrayIndexOf (arr, val, byteOffset, encoding, dir) { - var indexSize = 1 - var arrLength = arr.length - var valLength = val.length - - if (encoding !== undefined) { - encoding = String(encoding).toLowerCase() - if (encoding === 'ucs2' || encoding === 'ucs-2' || - encoding === 'utf16le' || encoding === 'utf-16le') { - if (arr.length < 2 || val.length < 2) { - return -1 - } - indexSize = 2 - arrLength /= 2 - valLength /= 2 - byteOffset /= 2 - } - } - - function read (buf, i) { - if (indexSize === 1) { - return buf[i] - } else { - return buf.readUInt16BE(i * indexSize) - } - } - - var i - if (dir) { - var foundIndex = -1 - for (i = byteOffset; i < arrLength; i++) { - if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) { - if (foundIndex === -1) foundIndex = i - if (i - foundIndex + 1 === valLength) return foundIndex * indexSize - } else { - if (foundIndex !== -1) i -= i - foundIndex - foundIndex = -1 - } - } - } else { - if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength - for (i = byteOffset; i >= 0; i--) { - var found = true - for (var j = 0; j < valLength; j++) { - if (read(arr, i + j) !== read(val, j)) { - found = false - break - } - } - if (found) return i - } - } - - return -1 -} - -Buffer.prototype.includes = function includes (val, byteOffset, encoding) { - return this.indexOf(val, byteOffset, encoding) !== -1 -} - -Buffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, true) -} - -Buffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) { - return bidirectionalIndexOf(this, val, byteOffset, encoding, false) -} - -function hexWrite (buf, string, offset, length) { - offset = Number(offset) || 0 - var remaining = buf.length - offset - if (!length) { - length = remaining - } else { - length = Number(length) - if (length > remaining) { - length = remaining - } - } - - // must be an even number of digits - var strLen = string.length - if (strLen % 2 !== 0) throw new TypeError('Invalid hex string') - - if (length > strLen / 2) { - length = strLen / 2 - } - for (var i = 0; i < length; ++i) { - var parsed = parseInt(string.substr(i * 2, 2), 16) - if (isNaN(parsed)) return i - buf[offset + i] = parsed - } - return i -} - -function utf8Write (buf, string, offset, length) { - return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length) -} - -function asciiWrite (buf, string, offset, length) { - return blitBuffer(asciiToBytes(string), buf, offset, length) -} - -function latin1Write (buf, string, offset, length) { - return asciiWrite(buf, string, offset, length) -} - -function base64Write (buf, string, offset, length) { - return blitBuffer(base64ToBytes(string), buf, offset, length) -} - -function ucs2Write (buf, string, offset, length) { - return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length) -} - -Buffer.prototype.write = function write (string, offset, length, encoding) { - // Buffer#write(string) - if (offset === undefined) { - encoding = 'utf8' - length = this.length - offset = 0 - // Buffer#write(string, encoding) - } else if (length === undefined && typeof offset === 'string') { - encoding = offset - length = this.length - offset = 0 - // Buffer#write(string, offset[, length][, encoding]) - } else if (isFinite(offset)) { - offset = offset | 0 - if (isFinite(length)) { - length = length | 0 - if (encoding === undefined) encoding = 'utf8' - } else { - encoding = length - length = undefined - } - // legacy write(string, encoding, offset, length) - remove in v0.13 - } else { - throw new Error( - 'Buffer.write(string, encoding, offset[, length]) is no longer supported' - ) - } - - var remaining = this.length - offset - if (length === undefined || length > remaining) length = remaining - - if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) { - throw new RangeError('Attempt to write outside buffer bounds') - } - - if (!encoding) encoding = 'utf8' - - var loweredCase = false - for (;;) { - switch (encoding) { - case 'hex': - return hexWrite(this, string, offset, length) - - case 'utf8': - case 'utf-8': - return utf8Write(this, string, offset, length) - - case 'ascii': - return asciiWrite(this, string, offset, length) - - case 'latin1': - case 'binary': - return latin1Write(this, string, offset, length) - - case 'base64': - // Warning: maxLength not taken into account in base64Write - return base64Write(this, string, offset, length) - - case 'ucs2': - case 'ucs-2': - case 'utf16le': - case 'utf-16le': - return ucs2Write(this, string, offset, length) - - default: - if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding) - encoding = ('' + encoding).toLowerCase() - loweredCase = true - } - } -} - -Buffer.prototype.toJSON = function toJSON () { - return { - type: 'Buffer', - data: Array.prototype.slice.call(this._arr || this, 0) - } -} - -function base64Slice (buf, start, end) { - if (start === 0 && end === buf.length) { - return base64.fromByteArray(buf) - } else { - return base64.fromByteArray(buf.slice(start, end)) - } -} - -function utf8Slice (buf, start, end) { - end = Math.min(buf.length, end) - var res = [] - - var i = start - while (i < end) { - var firstByte = buf[i] - var codePoint = null - var bytesPerSequence = (firstByte > 0xEF) ? 4 - : (firstByte > 0xDF) ? 3 - : (firstByte > 0xBF) ? 2 - : 1 - - if (i + bytesPerSequence <= end) { - var secondByte, thirdByte, fourthByte, tempCodePoint - - switch (bytesPerSequence) { - case 1: - if (firstByte < 0x80) { - codePoint = firstByte - } - break - case 2: - secondByte = buf[i + 1] - if ((secondByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F) - if (tempCodePoint > 0x7F) { - codePoint = tempCodePoint - } - } - break - case 3: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F) - if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) { - codePoint = tempCodePoint - } - } - break - case 4: - secondByte = buf[i + 1] - thirdByte = buf[i + 2] - fourthByte = buf[i + 3] - if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) { - tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F) - if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) { - codePoint = tempCodePoint - } - } - } - } - - if (codePoint === null) { - // we did not generate a valid codePoint so insert a - // replacement char (U+FFFD) and advance only 1 byte - codePoint = 0xFFFD - bytesPerSequence = 1 - } else if (codePoint > 0xFFFF) { - // encode to utf16 (surrogate pair dance) - codePoint -= 0x10000 - res.push(codePoint >>> 10 & 0x3FF | 0xD800) - codePoint = 0xDC00 | codePoint & 0x3FF - } - - res.push(codePoint) - i += bytesPerSequence - } - - return decodeCodePointsArray(res) -} - -// Based on http://stackoverflow.com/a/22747272/680742, the browser with -// the lowest limit is Chrome, with 0x10000 args. -// We go 1 magnitude less, for safety -var MAX_ARGUMENTS_LENGTH = 0x1000 - -function decodeCodePointsArray (codePoints) { - var len = codePoints.length - if (len <= MAX_ARGUMENTS_LENGTH) { - return String.fromCharCode.apply(String, codePoints) // avoid extra slice() - } - - // Decode in chunks to avoid "call stack size exceeded". - var res = '' - var i = 0 - while (i < len) { - res += String.fromCharCode.apply( - String, - codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH) - ) - } - return res -} - -function asciiSlice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i] & 0x7F) - } - return ret -} - -function latin1Slice (buf, start, end) { - var ret = '' - end = Math.min(buf.length, end) - - for (var i = start; i < end; ++i) { - ret += String.fromCharCode(buf[i]) - } - return ret -} - -function hexSlice (buf, start, end) { - var len = buf.length - - if (!start || start < 0) start = 0 - if (!end || end < 0 || end > len) end = len - - var out = '' - for (var i = start; i < end; ++i) { - out += toHex(buf[i]) - } - return out -} - -function utf16leSlice (buf, start, end) { - var bytes = buf.slice(start, end) - var res = '' - for (var i = 0; i < bytes.length; i += 2) { - res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256) - } - return res -} - -Buffer.prototype.slice = function slice (start, end) { - var len = this.length - start = ~~start - end = end === undefined ? len : ~~end - - if (start < 0) { - start += len - if (start < 0) start = 0 - } else if (start > len) { - start = len - } - - if (end < 0) { - end += len - if (end < 0) end = 0 - } else if (end > len) { - end = len - } - - if (end < start) end = start - - var newBuf - if (Buffer.TYPED_ARRAY_SUPPORT) { - newBuf = this.subarray(start, end) - newBuf.__proto__ = Buffer.prototype - } else { - var sliceLen = end - start - newBuf = new Buffer(sliceLen, undefined) - for (var i = 0; i < sliceLen; ++i) { - newBuf[i] = this[i + start] - } - } - - return newBuf -} - -/* - * Need to make sure that buffer isn't trying to write out of bounds. - */ -function checkOffset (offset, ext, length) { - if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint') - if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length') -} - -Buffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - - return val -} - -Buffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - checkOffset(offset, byteLength, this.length) - } - - var val = this[offset + --byteLength] - var mul = 1 - while (byteLength > 0 && (mul *= 0x100)) { - val += this[offset + --byteLength] * mul - } - - return val -} - -Buffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - return this[offset] -} - -Buffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return this[offset] | (this[offset + 1] << 8) -} - -Buffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - return (this[offset] << 8) | this[offset + 1] -} - -Buffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return ((this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16)) + - (this[offset + 3] * 0x1000000) -} - -Buffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] * 0x1000000) + - ((this[offset + 1] << 16) | - (this[offset + 2] << 8) | - this[offset + 3]) -} - -Buffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var val = this[offset] - var mul = 1 - var i = 0 - while (++i < byteLength && (mul *= 0x100)) { - val += this[offset + i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) { - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) checkOffset(offset, byteLength, this.length) - - var i = byteLength - var mul = 1 - var val = this[offset + --i] - while (i > 0 && (mul *= 0x100)) { - val += this[offset + --i] * mul - } - mul *= 0x80 - - if (val >= mul) val -= Math.pow(2, 8 * byteLength) - - return val -} - -Buffer.prototype.readInt8 = function readInt8 (offset, noAssert) { - if (!noAssert) checkOffset(offset, 1, this.length) - if (!(this[offset] & 0x80)) return (this[offset]) - return ((0xff - this[offset] + 1) * -1) -} - -Buffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset] | (this[offset + 1] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 2, this.length) - var val = this[offset + 1] | (this[offset] << 8) - return (val & 0x8000) ? val | 0xFFFF0000 : val -} - -Buffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset]) | - (this[offset + 1] << 8) | - (this[offset + 2] << 16) | - (this[offset + 3] << 24) -} - -Buffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - - return (this[offset] << 24) | - (this[offset + 1] << 16) | - (this[offset + 2] << 8) | - (this[offset + 3]) -} - -Buffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, true, 23, 4) -} - -Buffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 4, this.length) - return ieee754.read(this, offset, false, 23, 4) -} - -Buffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, true, 52, 8) -} - -Buffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) { - if (!noAssert) checkOffset(offset, 8, this.length) - return ieee754.read(this, offset, false, 52, 8) -} - -function checkInt (buf, value, offset, ext, max, min) { - if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance') - if (value > max || value < min) throw new RangeError('"value" argument is out of bounds') - if (offset + ext > buf.length) throw new RangeError('Index out of range') -} - -Buffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var mul = 1 - var i = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - byteLength = byteLength | 0 - if (!noAssert) { - var maxBytes = Math.pow(2, 8 * byteLength) - 1 - checkInt(this, value, offset, byteLength, maxBytes, 0) - } - - var i = byteLength - 1 - var mul = 1 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - this[offset + i] = (value / mul) & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - this[offset] = (value & 0xff) - return offset + 1 -} - -function objectWriteUInt16 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) { - buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>> - (littleEndian ? i : 1 - i) * 8 - } -} - -Buffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -function objectWriteUInt32 (buf, value, offset, littleEndian) { - if (value < 0) value = 0xffffffff + value + 1 - for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) { - buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff - } -} - -Buffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset + 3] = (value >>> 24) - this[offset + 2] = (value >>> 16) - this[offset + 1] = (value >>> 8) - this[offset] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -Buffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = 0 - var mul = 1 - var sub = 0 - this[offset] = value & 0xFF - while (++i < byteLength && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) { - var limit = Math.pow(2, 8 * byteLength - 1) - - checkInt(this, value, offset, byteLength, limit - 1, -limit) - } - - var i = byteLength - 1 - var mul = 1 - var sub = 0 - this[offset + i] = value & 0xFF - while (--i >= 0 && (mul *= 0x100)) { - if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) { - sub = 1 - } - this[offset + i] = ((value / mul) >> 0) - sub & 0xFF - } - - return offset + byteLength -} - -Buffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80) - if (!Buffer.TYPED_ARRAY_SUPPORT) value = Math.floor(value) - if (value < 0) value = 0xff + value + 1 - this[offset] = (value & 0xff) - return offset + 1 -} - -Buffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - } else { - objectWriteUInt16(this, value, offset, true) - } - return offset + 2 -} - -Buffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 8) - this[offset + 1] = (value & 0xff) - } else { - objectWriteUInt16(this, value, offset, false) - } - return offset + 2 -} - -Buffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value & 0xff) - this[offset + 1] = (value >>> 8) - this[offset + 2] = (value >>> 16) - this[offset + 3] = (value >>> 24) - } else { - objectWriteUInt32(this, value, offset, true) - } - return offset + 4 -} - -Buffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) { - value = +value - offset = offset | 0 - if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000) - if (value < 0) value = 0xffffffff + value + 1 - if (Buffer.TYPED_ARRAY_SUPPORT) { - this[offset] = (value >>> 24) - this[offset + 1] = (value >>> 16) - this[offset + 2] = (value >>> 8) - this[offset + 3] = (value & 0xff) - } else { - objectWriteUInt32(this, value, offset, false) - } - return offset + 4 -} - -function checkIEEE754 (buf, value, offset, ext, max, min) { - if (offset + ext > buf.length) throw new RangeError('Index out of range') - if (offset < 0) throw new RangeError('Index out of range') -} - -function writeFloat (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38) - } - ieee754.write(buf, value, offset, littleEndian, 23, 4) - return offset + 4 -} - -Buffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) { - return writeFloat(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) { - return writeFloat(this, value, offset, false, noAssert) -} - -function writeDouble (buf, value, offset, littleEndian, noAssert) { - if (!noAssert) { - checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308) - } - ieee754.write(buf, value, offset, littleEndian, 52, 8) - return offset + 8 -} - -Buffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) { - return writeDouble(this, value, offset, true, noAssert) -} - -Buffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) { - return writeDouble(this, value, offset, false, noAssert) -} - -// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length) -Buffer.prototype.copy = function copy (target, targetStart, start, end) { - if (!start) start = 0 - if (!end && end !== 0) end = this.length - if (targetStart >= target.length) targetStart = target.length - if (!targetStart) targetStart = 0 - if (end > 0 && end < start) end = start - - // Copy 0 bytes; we're done - if (end === start) return 0 - if (target.length === 0 || this.length === 0) return 0 - - // Fatal error conditions - if (targetStart < 0) { - throw new RangeError('targetStart out of bounds') - } - if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds') - if (end < 0) throw new RangeError('sourceEnd out of bounds') - - // Are we oob? - if (end > this.length) end = this.length - if (target.length - targetStart < end - start) { - end = target.length - targetStart + start - } - - var len = end - start - var i - - if (this === target && start < targetStart && targetStart < end) { - // descending copy from end - for (i = len - 1; i >= 0; --i) { - target[i + targetStart] = this[i + start] - } - } else if (len < 1000 || !Buffer.TYPED_ARRAY_SUPPORT) { - // ascending copy from start - for (i = 0; i < len; ++i) { - target[i + targetStart] = this[i + start] - } - } else { - Uint8Array.prototype.set.call( - target, - this.subarray(start, start + len), - targetStart - ) - } - - return len -} - -// Usage: -// buffer.fill(number[, offset[, end]]) -// buffer.fill(buffer[, offset[, end]]) -// buffer.fill(string[, offset[, end]][, encoding]) -Buffer.prototype.fill = function fill (val, start, end, encoding) { - // Handle string cases: - if (typeof val === 'string') { - if (typeof start === 'string') { - encoding = start - start = 0 - end = this.length - } else if (typeof end === 'string') { - encoding = end - end = this.length - } - if (val.length === 1) { - var code = val.charCodeAt(0) - if (code < 256) { - val = code - } - } - if (encoding !== undefined && typeof encoding !== 'string') { - throw new TypeError('encoding must be a string') - } - if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) { - throw new TypeError('Unknown encoding: ' + encoding) - } - } else if (typeof val === 'number') { - val = val & 255 - } - - // Invalid ranges are not set to a default, so can range check early. - if (start < 0 || this.length < start || this.length < end) { - throw new RangeError('Out of range index') - } - - if (end <= start) { - return this - } - - start = start >>> 0 - end = end === undefined ? this.length : end >>> 0 - - if (!val) val = 0 - - var i - if (typeof val === 'number') { - for (i = start; i < end; ++i) { - this[i] = val - } - } else { - var bytes = Buffer.isBuffer(val) - ? val - : utf8ToBytes(new Buffer(val, encoding).toString()) - var len = bytes.length - for (i = 0; i < end - start; ++i) { - this[i + start] = bytes[i % len] - } - } - - return this -} - -// HELPER FUNCTIONS -// ================ - -var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g - -function base64clean (str) { - // Node strips out invalid characters like \n and \t from the string, base64-js does not - str = stringtrim(str).replace(INVALID_BASE64_RE, '') - // Node converts strings with length < 2 to '' - if (str.length < 2) return '' - // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not - while (str.length % 4 !== 0) { - str = str + '=' - } - return str -} - -function stringtrim (str) { - if (str.trim) return str.trim() - return str.replace(/^\s+|\s+$/g, '') -} - -function toHex (n) { - if (n < 16) return '0' + n.toString(16) - return n.toString(16) -} - -function utf8ToBytes (string, units) { - units = units || Infinity - var codePoint - var length = string.length - var leadSurrogate = null - var bytes = [] - - for (var i = 0; i < length; ++i) { - codePoint = string.charCodeAt(i) - - // is surrogate component - if (codePoint > 0xD7FF && codePoint < 0xE000) { - // last char was a lead - if (!leadSurrogate) { - // no lead yet - if (codePoint > 0xDBFF) { - // unexpected trail - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } else if (i + 1 === length) { - // unpaired lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - continue - } - - // valid lead - leadSurrogate = codePoint - - continue - } - - // 2 leads in a row - if (codePoint < 0xDC00) { - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - leadSurrogate = codePoint - continue - } - - // valid surrogate pair - codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000 - } else if (leadSurrogate) { - // valid bmp char, but last char was a lead - if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD) - } - - leadSurrogate = null - - // encode utf8 - if (codePoint < 0x80) { - if ((units -= 1) < 0) break - bytes.push(codePoint) - } else if (codePoint < 0x800) { - if ((units -= 2) < 0) break - bytes.push( - codePoint >> 0x6 | 0xC0, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x10000) { - if ((units -= 3) < 0) break - bytes.push( - codePoint >> 0xC | 0xE0, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else if (codePoint < 0x110000) { - if ((units -= 4) < 0) break - bytes.push( - codePoint >> 0x12 | 0xF0, - codePoint >> 0xC & 0x3F | 0x80, - codePoint >> 0x6 & 0x3F | 0x80, - codePoint & 0x3F | 0x80 - ) - } else { - throw new Error('Invalid code point') - } - } - - return bytes -} - -function asciiToBytes (str) { - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - // Node's code seems to be doing this and not & 0x7F.. - byteArray.push(str.charCodeAt(i) & 0xFF) - } - return byteArray -} - -function utf16leToBytes (str, units) { - var c, hi, lo - var byteArray = [] - for (var i = 0; i < str.length; ++i) { - if ((units -= 2) < 0) break - - c = str.charCodeAt(i) - hi = c >> 8 - lo = c % 256 - byteArray.push(lo) - byteArray.push(hi) - } - - return byteArray -} - -function base64ToBytes (str) { - return base64.toByteArray(base64clean(str)) -} - -function blitBuffer (src, dst, offset, length) { - for (var i = 0; i < length; ++i) { - if ((i + offset >= dst.length) || (i >= src.length)) break - dst[i + offset] = src[i] - } - return i -} - -function isnan (val) { - return val !== val // eslint-disable-line no-self-compare -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE deleted file mode 100644 index 96d3f68..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2014 - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md deleted file mode 100644 index e546d86..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/README.md +++ /dev/null @@ -1,32 +0,0 @@ -base64-js -========= - -`base64-js` does basic base64 encoding/decoding in pure JS. - -[![build status](https://secure.travis-ci.org/beatgammit/base64-js.png)](http://travis-ci.org/beatgammit/base64-js) - -[![testling badge](https://ci.testling.com/beatgammit/base64-js.png)](https://ci.testling.com/beatgammit/base64-js) - -Many browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data. - -Sometimes encoding/decoding binary data in the browser is useful, and that is what this module does. - -## install - -With [npm](https://npmjs.org) do: - -`npm install base64-js` - -## methods - -`var base64 = require('base64-js')` - -`base64` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument. - -* `byteLength` - Takes a base64 string and returns length of byte array -* `toByteArray` - Takes a base64 string and returns a byte array -* `fromByteArray` - Takes a byte array and returns a base64 string - -## license - -MIT diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js deleted file mode 100644 index 22ad807..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/base64js.min.js +++ /dev/null @@ -1 +0,0 @@ -(function(r){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=r()}else if(typeof define==="function"&&define.amd){define([],r)}else{var e;if(typeof window!=="undefined"){e=window}else if(typeof global!=="undefined"){e=global}else if(typeof self!=="undefined"){e=self}else{e=this}e.base64js=r()}})(function(){var r,e,t;return function r(e,t,n){function o(i,a){if(!t[i]){if(!e[i]){var u=typeof require=="function"&&require;if(!a&&u)return u(i,!0);if(f)return f(i,!0);var d=new Error("Cannot find module '"+i+"'");throw d.code="MODULE_NOT_FOUND",d}var c=t[i]={exports:{}};e[i][0].call(c.exports,function(r){var t=e[i][1][r];return o(t?t:r)},c,c.exports,r,e,t,n)}return t[i].exports}var f=typeof require=="function"&&require;for(var i=0;i0){throw new Error("Invalid string. Length must be a multiple of 4")}return r[e-2]==="="?2:r[e-1]==="="?1:0}function c(r){return r.length*3/4-d(r)}function v(r){var e,t,n,i,a,u;var c=r.length;a=d(r);u=new f(c*3/4-a);n=a>0?c-4:c;var v=0;for(e=0,t=0;e>16&255;u[v++]=i>>8&255;u[v++]=i&255}if(a===2){i=o[r.charCodeAt(e)]<<2|o[r.charCodeAt(e+1)]>>4;u[v++]=i&255}else if(a===1){i=o[r.charCodeAt(e)]<<10|o[r.charCodeAt(e+1)]<<4|o[r.charCodeAt(e+2)]>>2;u[v++]=i>>8&255;u[v++]=i&255}return u}function l(r){return n[r>>18&63]+n[r>>12&63]+n[r>>6&63]+n[r&63]}function h(r,e,t){var n;var o=[];for(var f=e;fd?d:u+a))}if(o===1){e=r[t-1];f+=n[e>>2];f+=n[e<<4&63];f+="=="}else if(o===2){e=(r[t-2]<<8)+r[t-1];f+=n[e>>10];f+=n[e>>4&63];f+=n[e<<2&63];f+="="}i.push(f);return i.join("")}},{}]},{},[])("/")}); diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js deleted file mode 100644 index 8e806ac..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/index.js +++ /dev/null @@ -1,114 +0,0 @@ -'use strict' - -exports.byteLength = byteLength -exports.toByteArray = toByteArray -exports.fromByteArray = fromByteArray - -var lookup = [] -var revLookup = [] -var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array - -var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -for (var i = 0, len = code.length; i < len; ++i) { - lookup[i] = code[i] - revLookup[code.charCodeAt(i)] = i -} - -revLookup['-'.charCodeAt(0)] = 62 -revLookup['_'.charCodeAt(0)] = 63 - -function placeHoldersCount (b64) { - var len = b64.length - if (len % 4 > 0) { - throw new Error('Invalid string. Length must be a multiple of 4') - } - - // the number of equal signs (place holders) - // if there are two placeholders, than the two characters before it - // represent one byte - // if there is only one, then the three characters before it represent 2 bytes - // this is just a cheap hack to not do indexOf twice - return b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0 -} - -function byteLength (b64) { - // base64 is 4/3 + up to two characters of the original data - return b64.length * 3 / 4 - placeHoldersCount(b64) -} - -function toByteArray (b64) { - var i, j, l, tmp, placeHolders, arr - var len = b64.length - placeHolders = placeHoldersCount(b64) - - arr = new Arr(len * 3 / 4 - placeHolders) - - // if there are placeholders, only get up to the last complete 4 chars - l = placeHolders > 0 ? len - 4 : len - - var L = 0 - - for (i = 0, j = 0; i < l; i += 4, j += 3) { - tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)] - arr[L++] = (tmp >> 16) & 0xFF - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - if (placeHolders === 2) { - tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4) - arr[L++] = tmp & 0xFF - } else if (placeHolders === 1) { - tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2) - arr[L++] = (tmp >> 8) & 0xFF - arr[L++] = tmp & 0xFF - } - - return arr -} - -function tripletToBase64 (num) { - return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F] -} - -function encodeChunk (uint8, start, end) { - var tmp - var output = [] - for (var i = start; i < end; i += 3) { - tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]) - output.push(tripletToBase64(tmp)) - } - return output.join('') -} - -function fromByteArray (uint8) { - var tmp - var len = uint8.length - var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes - var output = '' - var parts = [] - var maxChunkLength = 16383 // must be multiple of 3 - - // go through the array every three bytes, we'll deal with trailing stuff later - for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) { - parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength))) - } - - // pad the end with zeros, but make sure to not forget the extra bytes - if (extraBytes === 1) { - tmp = uint8[len - 1] - output += lookup[tmp >> 2] - output += lookup[(tmp << 4) & 0x3F] - output += '==' - } else if (extraBytes === 2) { - tmp = (uint8[len - 2] << 8) + (uint8[len - 1]) - output += lookup[tmp >> 10] - output += lookup[(tmp >> 4) & 0x3F] - output += lookup[(tmp << 2) & 0x3F] - output += '=' - } - - parts.push(output) - - return parts.join('') -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json deleted file mode 100644 index acb6736..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/package.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "name": "base64-js", - "version": "1.2.0", - "description": "Base64 encoding/decoding in pure JS", - "keywords": [ - "base64" - ], - "homepage": "https://github.com/beatgammit/base64-js", - "bugs": { - "url": "https://github.com/beatgammit/base64-js/issues" - }, - "license": "MIT", - "author": { - "name": "T. Jameson Little", - "email": "t.jameson.little@gmail.com" - }, - "files": [ - "test", - "index.js", - "base64js.min.js" - ], - "main": "index.js", - "repository": { - "type": "git", - "url": "git://github.com/beatgammit/base64-js.git" - }, - "scripts": { - "build": "browserify -s base64js -r ./ | uglifyjs -m > base64js.min.js", - "lint": "standard", - "test": "npm run lint && npm run unit", - "unit": "tape test/*.js" - }, - "devDependencies": { - "benchmark": "^2.1.0", - "browserify": "^13.0.0", - "standard": "*", - "tape": "4.x", - "uglify-js": "^2.6.2" - }, - "readme": "base64-js\n=========\n\n`base64-js` does basic base64 encoding/decoding in pure JS.\n\n[![build status](https://secure.travis-ci.org/beatgammit/base64-js.png)](http://travis-ci.org/beatgammit/base64-js)\n\n[![testling badge](https://ci.testling.com/beatgammit/base64-js.png)](https://ci.testling.com/beatgammit/base64-js)\n\nMany browsers already have base64 encoding/decoding functionality, but it is for text data, not all-purpose binary data.\n\nSometimes encoding/decoding binary data in the browser is useful, and that is what this module does.\n\n## install\n\nWith [npm](https://npmjs.org) do:\n\n`npm install base64-js`\n\n## methods\n\n`var base64 = require('base64-js')`\n\n`base64` has three exposed functions, `byteLength`, `toByteArray` and `fromByteArray`, which both take a single argument.\n\n* `byteLength` - Takes a base64 string and returns length of byte array\n* `toByteArray` - Takes a base64 string and returns a byte array\n* `fromByteArray` - Takes a byte array and returns a base64 string\n\n## license\n\nMIT\n", - "readmeFilename": "README.md", - "_id": "base64-js@1.2.0", - "_shasum": "a39992d723584811982be5e290bb6a53d86700f1", - "_resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.2.0.tgz", - "_from": "base64-js@>=1.0.2 <2.0.0" -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js deleted file mode 100644 index be16ebe..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/big-data.js +++ /dev/null @@ -1,24 +0,0 @@ -var test = require('tape') -var b64 = require('../') - -test('convert big data to base64', function (t) { - var b64str, arr, i, length - var big = new Uint8Array(64 * 1024 * 1024) - for (i = 0, length = big.length; i < length; ++i) { - big[i] = i % 256 - } - b64str = b64.fromByteArray(big) - arr = b64.toByteArray(b64str) - t.ok(equal(arr, big)) - t.end() -}) - -function equal (a, b) { - var i - var length = a.length - if (length !== b.length) return false - for (i = 0; i < length; ++i) { - if (a[i] !== b[i]) return false - } - return true -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js deleted file mode 100644 index d68e105..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/convert.js +++ /dev/null @@ -1,48 +0,0 @@ -var test = require('tape') -var b64 = require('../') -var checks = [ - 'a', - 'aa', - 'aaa', - 'hi', - 'hi!', - 'hi!!', - 'sup', - 'sup?', - 'sup?!' -] - -test('convert to base64 and back', function (t) { - t.plan(checks.length * 2) - - for (var i = 0; i < checks.length; i++) { - var check = checks[i] - var b64Str, arr, str - - b64Str = b64.fromByteArray(map(check, function (char) { return char.charCodeAt(0) })) - - arr = b64.toByteArray(b64Str) - str = map(arr, function (byte) { return String.fromCharCode(byte) }).join('') - - t.equal(check, str, 'Checked ' + check) - t.equal(b64.byteLength(b64Str), arr.length, 'Checked length for ' + check) - } -}) - -function map (arr, callback) { - var res = [] - var kValue, mappedValue - - for (var k = 0, len = arr.length; k < len; k++) { - if ((typeof arr === 'string' && !!arr.charAt(k))) { - kValue = arr.charAt(k) - mappedValue = callback(kValue, k, arr) - res[k] = mappedValue - } else if (typeof arr !== 'string' && k in arr) { - kValue = arr[k] - mappedValue = callback(kValue, k, arr) - res[k] = mappedValue - } - } - return res -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js deleted file mode 100644 index 3203b33..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/base64-js/test/url-safe.js +++ /dev/null @@ -1,18 +0,0 @@ -var test = require('tape') -var b64 = require('../') - -test('decode url-safe style base64 strings', function (t) { - var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff] - - var actual = b64.toByteArray('//++/++/++//') - for (var i = 0; i < actual.length; i++) { - t.equal(actual[i], expected[i]) - } - - actual = b64.toByteArray('__--_--_--__') - for (i = 0; i < actual.length; i++) { - t.equal(actual[i], expected[i]) - } - - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml deleted file mode 100644 index 6c45b34..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.travis.yml +++ /dev/null @@ -1,7 +0,0 @@ -language: node_js -node_js: -- 'node' -env: - global: - - secure: f3NrmOV/A7oACn47J1mkIpH8Sn/LINtluZvo/9pGo3Ss4+D2lyt7UawpedHtnYgU9WEyjPSi7pDWopUrIzusQ2trLYRJr8WAOEyHlgaepDyy4BW3ghGMKHMsS05kilYLP8nu1sRd6y1AcUYKw+kUrrSPanI7kViWVQ5d5DuwXO8= - - secure: a6teILh33z5fbGQbh5/EkFfAyXfa2fPJG1upy9K+jLAbG4WZxXD+YmXG9Tz33/2NJm6UplGfTJ8IQEXgxEfAFk3ao3xfKxzm3i64XxtroSlXIFNSiQKogxDfLEtWDoNNCodPHaV3ATEqxGJ5rkkUeU1+ROWW0sjG5JR26k8/Hfg= diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml deleted file mode 100644 index b5ba0c4..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/.zuul.yml +++ /dev/null @@ -1,20 +0,0 @@ -ui: tape -scripts: - - "./test/_polyfill.js" -browsers: - - name: chrome - version: latest - - name: firefox - version: latest - - name: safari - version: latest - - name: ie - version: 11 - - name: microsoftedge - version: latest - - name: opera - version: latest - - name: android - version: latest - - name: iphone - version: latest diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE deleted file mode 100644 index f37a2eb..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/LICENSE +++ /dev/null @@ -1,28 +0,0 @@ -Copyright (c) 2008, Fair Oaks Labs, Inc. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither the name of Fair Oaks Labs, Inc. nor the names of its contributors - may be used to endorse or promote products derived from this software - without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md deleted file mode 100644 index 11f4d40..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/README.md +++ /dev/null @@ -1,47 +0,0 @@ -# ieee754 [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url] - -[![saucelabs][saucelabs-image]][saucelabs-url] - -[travis-image]: https://img.shields.io/travis/feross/ieee754/master.svg -[travis-url]: https://travis-ci.org/feross/ieee754 -[npm-image]: https://img.shields.io/npm/v/ieee754.svg -[npm-url]: https://npmjs.org/package/ieee754 -[downloads-image]: https://img.shields.io/npm/dm/ieee754.svg -[saucelabs-image]: https://saucelabs.com/browser-matrix/ieee754.svg -[saucelabs-url]: https://saucelabs.com/u/ieee754 - -### Read/write IEEE754 floating point numbers from/to a Buffer or array-like object. - -## install - -``` -npm install ieee754 -``` - -## methods - -`var ieee754 = require('ieee754')` - -The `ieee754` object has the following functions: - -``` -ieee754.read = function (buffer, offset, isLE, mLen, nBytes) -ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) -``` - -The arguments mean the following: - -- buffer = the buffer -- offset = offset into the buffer -- value = value to set (only for `write`) -- isLe = is little endian? -- mLen = mantissa length -- nBytes = number of bytes - -## what is ieee754? - -The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point computation. [Read more](http://en.wikipedia.org/wiki/IEEE_floating_point). - -## license - -BSD 3 Clause. Copyright (c) 2008, Fair Oaks Labs, Inc. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js deleted file mode 100644 index 95e190c..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/index.js +++ /dev/null @@ -1,84 +0,0 @@ -exports.read = function (buffer, offset, isLE, mLen, nBytes) { - var e, m - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var nBits = -7 - var i = isLE ? (nBytes - 1) : 0 - var d = isLE ? -1 : 1 - var s = buffer[offset + i] - - i += d - - e = s & ((1 << (-nBits)) - 1) - s >>= (-nBits) - nBits += eLen - for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - m = e & ((1 << (-nBits)) - 1) - e >>= (-nBits) - nBits += mLen - for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {} - - if (e === 0) { - e = 1 - eBias - } else if (e === eMax) { - return m ? NaN : ((s ? -1 : 1) * Infinity) - } else { - m = m + Math.pow(2, mLen) - e = e - eBias - } - return (s ? -1 : 1) * m * Math.pow(2, e - mLen) -} - -exports.write = function (buffer, value, offset, isLE, mLen, nBytes) { - var e, m, c - var eLen = nBytes * 8 - mLen - 1 - var eMax = (1 << eLen) - 1 - var eBias = eMax >> 1 - var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0) - var i = isLE ? 0 : (nBytes - 1) - var d = isLE ? 1 : -1 - var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0 - - value = Math.abs(value) - - if (isNaN(value) || value === Infinity) { - m = isNaN(value) ? 1 : 0 - e = eMax - } else { - e = Math.floor(Math.log(value) / Math.LN2) - if (value * (c = Math.pow(2, -e)) < 1) { - e-- - c *= 2 - } - if (e + eBias >= 1) { - value += rt / c - } else { - value += rt * Math.pow(2, 1 - eBias) - } - if (value * c >= 2) { - e++ - c /= 2 - } - - if (e + eBias >= eMax) { - m = 0 - e = eMax - } else if (e + eBias >= 1) { - m = (value * c - 1) * Math.pow(2, mLen) - e = e + eBias - } else { - m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen) - e = 0 - } - } - - for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {} - - e = (e << mLen) | m - eLen += mLen - for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {} - - buffer[offset + i - d] |= s * 128 -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json deleted file mode 100644 index 7c35993..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "ieee754", - "description": "Read/write IEEE754 floating point numbers from/to a Buffer or array-like object", - "version": "1.1.8", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "http://feross.org" - }, - "contributors": [ - { - "name": "Romain Beauxis", - "email": "toots@rastageeks.org" - } - ], - "devDependencies": { - "standard": "*", - "tape": "^4.0.0", - "zuul": "^3.0.0" - }, - "keywords": [ - "IEEE 754", - "buffer", - "convert", - "floating point", - "ieee754" - ], - "license": "BSD-3-Clause", - "main": "index.js", - "repository": { - "type": "git", - "url": "git://github.com/feross/ieee754.git" - }, - "scripts": { - "test": "standard && npm run test-node && npm run test-browser", - "test-browser": "zuul -- test/*.js", - "test-browser-local": "zuul --local -- test/*.js", - "test-node": "tape test/*.js" - }, - "gitHead": "53d3f869cc527852156b8307353c55addc3e03ae", - "bugs": { - "url": "https://github.com/feross/ieee754/issues" - }, - "homepage": "https://github.com/feross/ieee754#readme", - "_id": "ieee754@1.1.8", - "_shasum": "be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4", - "_from": "ieee754@>=1.1.4 <2.0.0", - "_npmVersion": "3.10.3", - "_nodeVersion": "6.7.0", - "_npmUser": { - "name": "feross", - "email": "feross@feross.org" - }, - "dist": { - "shasum": "be33d40ac10ef1926701f6f08a2d86fbfd1ad3e4", - "tarball": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz" - }, - "maintainers": [ - { - "name": "feross", - "email": "feross@feross.org" - } - ], - "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/ieee754-1.1.8.tgz_1475481601035_0.6688473029062152" - }, - "directories": {}, - "_resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.8.tgz", - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js deleted file mode 100644 index 58fae2b..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/ieee754/test/basic.js +++ /dev/null @@ -1,23 +0,0 @@ -var ieee754 = require('../') -var test = require('tape') - -var EPSILON = 0.00001 - -test('read float', function (t) { - var buf = new Buffer(4) - buf.writeFloatLE(42.42, 0) - var num = ieee754.read(buf, 0, true, 23, 4) - t.ok(Math.abs(num - 42.42) < EPSILON) - - t.end() -}) - -test('write float', function (t) { - var buf = new Buffer(4) - ieee754.write(buf, 42.42, 0, true, 23, 4) - - var num = buf.readFloatLE(0) - t.ok(Math.abs(num - 42.42) < EPSILON) - - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml deleted file mode 100644 index cc4dba2..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - "0.8" - - "0.10" diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile deleted file mode 100644 index 787d56e..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/Makefile +++ /dev/null @@ -1,6 +0,0 @@ - -test: - @node_modules/.bin/tape test.js - -.PHONY: test - diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md deleted file mode 100644 index 16d2c59..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/README.md +++ /dev/null @@ -1,60 +0,0 @@ - -# isarray - -`Array#isArray` for older browsers. - -[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray) -[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray) - -[![browser support](https://ci.testling.com/juliangruber/isarray.png) -](https://ci.testling.com/juliangruber/isarray) - -## Usage - -```js -var isArray = require('isarray'); - -console.log(isArray([])); // => true -console.log(isArray({})); // => false -``` - -## Installation - -With [npm](http://npmjs.org) do - -```bash -$ npm install isarray -``` - -Then bundle for the browser with -[browserify](https://github.com/substack/browserify). - -With [component](http://component.io) do - -```bash -$ component install juliangruber/isarray -``` - -## License - -(MIT) - -Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to -use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies -of the Software, and to permit persons to whom the Software is furnished to do -so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json deleted file mode 100644 index 9e31b68..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/component.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name" : "isarray", - "description" : "Array#isArray for older browsers", - "version" : "0.0.1", - "repository" : "juliangruber/isarray", - "homepage": "https://github.com/juliangruber/isarray", - "main" : "index.js", - "scripts" : [ - "index.js" - ], - "dependencies" : {}, - "keywords": ["browser","isarray","array"], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT" -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js deleted file mode 100644 index a57f634..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/index.js +++ /dev/null @@ -1,5 +0,0 @@ -var toString = {}.toString; - -module.exports = Array.isArray || function (arr) { - return toString.call(arr) == '[object Array]'; -}; diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json deleted file mode 100644 index 92bed21..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/package.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "name": "isarray", - "description": "Array#isArray for older browsers", - "version": "1.0.0", - "repository": { - "type": "git", - "url": "git://github.com/juliangruber/isarray.git" - }, - "homepage": "https://github.com/juliangruber/isarray", - "main": "index.js", - "dependencies": {}, - "devDependencies": { - "tape": "~2.13.4" - }, - "keywords": [ - "browser", - "isarray", - "array" - ], - "author": { - "name": "Julian Gruber", - "email": "mail@juliangruber.com", - "url": "http://juliangruber.com" - }, - "license": "MIT", - "testling": { - "files": "test.js", - "browsers": [ - "ie/8..latest", - "firefox/17..latest", - "firefox/nightly", - "chrome/22..latest", - "chrome/canary", - "opera/12..latest", - "opera/next", - "safari/5.1..latest", - "ipad/6.0..latest", - "iphone/6.0..latest", - "android-browser/4.2..latest" - ] - }, - "scripts": { - "test": "tape test.js" - }, - "readme": "\n# isarray\n\n`Array#isArray` for older browsers.\n\n[![build status](https://secure.travis-ci.org/juliangruber/isarray.svg)](http://travis-ci.org/juliangruber/isarray)\n[![downloads](https://img.shields.io/npm/dm/isarray.svg)](https://www.npmjs.org/package/isarray)\n\n[![browser support](https://ci.testling.com/juliangruber/isarray.png)\n](https://ci.testling.com/juliangruber/isarray)\n\n## Usage\n\n```js\nvar isArray = require('isarray');\n\nconsole.log(isArray([])); // => true\nconsole.log(isArray({})); // => false\n```\n\n## Installation\n\nWith [npm](http://npmjs.org) do\n\n```bash\n$ npm install isarray\n```\n\nThen bundle for the browser with\n[browserify](https://github.com/substack/browserify).\n\nWith [component](http://component.io) do\n\n```bash\n$ component install juliangruber/isarray\n```\n\n## License\n\n(MIT)\n\nCopyright (c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/juliangruber/isarray/issues" - }, - "_id": "isarray@1.0.0", - "_shasum": "bb935d48582cba168c06834957a54a3e07124f11", - "_resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "_from": "isarray@>=1.0.0 <2.0.0" -} diff --git a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js b/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js deleted file mode 100644 index e0c3444..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/node_modules/isarray/test.js +++ /dev/null @@ -1,20 +0,0 @@ -var isArray = require('./'); -var test = require('tape'); - -test('is array', function(t){ - t.ok(isArray([])); - t.notOk(isArray({})); - t.notOk(isArray(null)); - t.notOk(isArray(false)); - - var obj = {}; - obj[0] = true; - t.notOk(isArray(obj)); - - var arr = []; - arr.foo = 'bar'; - t.ok(isArray(arr)); - - t.end(); -}); - diff --git a/node_modules/aws-sdk/node_modules/buffer/package.json b/node_modules/aws-sdk/node_modules/buffer/package.json deleted file mode 100644 index e1f6a33..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/package.json +++ /dev/null @@ -1,89 +0,0 @@ -{ - "name": "buffer", - "description": "Node.js Buffer API, for the browser", - "version": "4.9.1", - "author": { - "name": "Feross Aboukhadijeh", - "email": "feross@feross.org", - "url": "http://feross.org" - }, - "bugs": { - "url": "https://github.com/feross/buffer/issues" - }, - "contributors": [ - { - "name": "Romain Beauxis", - "email": "toots@rastageeks.org" - }, - { - "name": "James Halliday", - "email": "mail@substack.net" - } - ], - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - }, - "devDependencies": { - "benchmark": "^2.0.0", - "browserify": "^13.0.0", - "concat-stream": "^1.4.7", - "hyperquest": "^2.0.0", - "is-buffer": "^1.1.1", - "is-nan": "^1.0.1", - "split": "^1.0.0", - "standard": "^7.0.0", - "tape": "^4.0.0", - "through2": "^2.0.0", - "zuul": "^3.0.0" - }, - "homepage": "https://github.com/feross/buffer", - "jspm": { - "map": { - "./index.js": { - "node": "@node/buffer" - } - } - }, - "keywords": [ - "arraybuffer", - "browser", - "browserify", - "buffer", - "compatible", - "dataview", - "uint8array" - ], - "license": "MIT", - "main": "index.js", - "repository": { - "type": "git", - "url": "git://github.com/feross/buffer.git" - }, - "scripts": { - "perf": "browserify --debug perf/bracket-notation.js > perf/bundle.js && open perf/index.html", - "perf-node": "node perf/bracket-notation.js && node perf/concat.js && node perf/copy-big.js && node perf/copy.js && node perf/new-big.js && node perf/new.js && node perf/readDoubleBE.js && node perf/readFloatBE.js && node perf/readUInt32LE.js && node perf/slice.js && node perf/writeFloatBE.js", - "size": "browserify -r ./ | uglifyjs -c -m | gzip | wc -c", - "test": "standard && node ./bin/test.js", - "test-browser-es5": "zuul --ui tape -- test/*.js", - "test-browser-es5-local": "zuul --ui tape --local -- test/*.js", - "test-browser-es6": "zuul --ui tape -- test/*.js test/node/*.js", - "test-browser-es6-local": "zuul --ui tape --local -- test/*.js test/node/*.js", - "test-node": "tape test/*.js test/node/*.js && OBJECT_IMPL=true tape test/*.js", - "update-authors": "./bin/update-authors.sh" - }, - "standard": { - "ignore": [ - "test/node/*.js", - "test/_polyfill.js", - "perf/*.js" - ] - }, - "readme": "# buffer [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][npm-url]\n\n#### The buffer module from [node.js](https://nodejs.org/), for the browser.\n\n[![saucelabs][saucelabs-image]][saucelabs-url]\n\n[travis-image]: https://img.shields.io/travis/feross/buffer/master.svg\n[travis-url]: https://travis-ci.org/feross/buffer\n[npm-image]: https://img.shields.io/npm/v/buffer.svg\n[npm-url]: https://npmjs.org/package/buffer\n[downloads-image]: https://img.shields.io/npm/dm/buffer.svg\n[saucelabs-image]: https://saucelabs.com/browser-matrix/buffer.svg\n[saucelabs-url]: https://saucelabs.com/u/buffer\n\nWith [browserify](http://browserify.org), simply `require('buffer')` or use the `Buffer` global and you will get this module.\n\nThe goal is to provide an API that is 100% identical to\n[node's Buffer API](https://nodejs.org/api/buffer.html). Read the\n[official docs](https://nodejs.org/api/buffer.html) for the full list of properties,\ninstance methods, and class methods that are supported.\n\n## features\n\n- Manipulate binary data like a boss, in all browsers -- even IE6!\n- Super fast. Backed by Typed Arrays (`Uint8Array`/`ArrayBuffer`, not `Object`)\n- Extremely small bundle size (**5.04KB minified + gzipped**, 35.5KB with comments)\n- Excellent browser support (IE 6+, Chrome 4+, Firefox 3+, Safari 5.1+, Opera 11+, iOS, etc.)\n- Preserves Node API exactly, with one minor difference (see below)\n- Square-bracket `buf[4]` notation works, even in old browsers like IE6!\n- Does not modify any browser prototypes or put anything on `window`\n- Comprehensive test suite (including all buffer tests from node.js core)\n\n\n## install\n\nTo use this module directly (without browserify), install it:\n\n```bash\nnpm install buffer\n```\n\nThis module was previously called **native-buffer-browserify**, but please use **buffer**\nfrom now on.\n\nA standalone bundle is available [here](https://wzrd.in/standalone/buffer), for non-browserify users.\n\n\n## usage\n\nThe module's API is identical to node's `Buffer` API. Read the\n[official docs](https://nodejs.org/api/buffer.html) for the full list of properties,\ninstance methods, and class methods that are supported.\n\nAs mentioned above, `require('buffer')` or use the `Buffer` global with\n[browserify](http://browserify.org) and this module will automatically be included\nin your bundle. Almost any npm module will work in the browser, even if it assumes that\nthe node `Buffer` API will be available.\n\nTo depend on this module explicitly (without browserify), require it like this:\n\n```js\nvar Buffer = require('buffer/').Buffer // note: the trailing slash is important!\n```\n\nTo require this module explicitly, use `require('buffer/')` which tells the node.js module\nlookup algorithm (also used by browserify) to use the **npm module** named `buffer`\ninstead of the **node.js core** module named `buffer`!\n\n\n## how does it work?\n\nThe Buffer constructor returns instances of `Uint8Array` that have their prototype\nchanged to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of `Uint8Array`,\nso the returned instances will have all the node `Buffer` methods and the\n`Uint8Array` methods. Square bracket notation works as expected -- it returns a\nsingle octet.\n\nThe `Uint8Array` prototype remains unmodified.\n\n\n## one minor difference\n\n#### In old browsers, `buf.slice()` does not modify parent buffer's memory\n\nIf you only support modern browsers (specifically, those with typed array support),\nthen this issue does not affect you. If you support super old browsers, then read on.\n\nIn node, the `slice()` method returns a new `Buffer` that shares underlying memory\nwith the original Buffer. When you modify one buffer, you modify the other.\n[Read more.](https://nodejs.org/api/buffer.html#buffer_buf_slice_start_end)\n\nIn browsers with typed array support, this `Buffer` implementation supports this\nbehavior. In browsers without typed arrays, an alternate buffer implementation is\nused that is based on `Object` which has no mechanism to point separate\n`Buffer`s to the same underlying slab of memory.\n\nYou can see which browser versions lack typed array support\n[here](https://github.com/feross/buffer/blob/master/index.js#L22-L48).\n\n\n## tracking the latest node api\n\nThis module tracks the Buffer API in the latest (unstable) version of node.js. The Buffer\nAPI is considered **stable** in the\n[node stability index](https://nodejs.org/docs/latest/api/documentation.html#documentation_stability_index),\nso it is unlikely that there will ever be breaking changes.\nNonetheless, when/if the Buffer API changes in node, this module's API will change\naccordingly.\n\n## related packages\n\n- [`buffer-equals`](https://www.npmjs.com/package/buffer-equals) - Node.js 0.12 buffer.equals() ponyfill\n- [`buffer-reverse`](https://www.npmjs.com/package/buffer-reverse) - A lite module for reverse-operations on buffers\n- [`buffer-xor`](https://www.npmjs.com/package/buffer-xor) - A simple module for bitwise-xor on buffers\n- [`is-buffer`](https://www.npmjs.com/package/is-buffer) - Determine if an object is a Buffer without including the whole `Buffer` package\n- [`typedarray-to-buffer`](https://www.npmjs.com/package/typedarray-to-buffer) - Convert a typed array to a Buffer without a copy\n\n## performance\n\nSee perf tests in `/perf`.\n\n`BrowserBuffer` is the browser `buffer` module (this repo). `Uint8Array` is included as a\nsanity check (since `BrowserBuffer` uses `Uint8Array` under the hood, `Uint8Array` will\nalways be at least a bit faster). Finally, `NodeBuffer` is the node.js buffer module,\nwhich is included to compare against.\n\nNOTE: Performance has improved since these benchmarks were taken. PR welcoem to update the README.\n\n### Chrome 38\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 11,457,464 ops/sec | ±0.86% | 66 | ✓ |\n| Uint8Array#bracket-notation | 10,824,332 ops/sec | ±0.74% | 65 | |\n| | | | |\n| BrowserBuffer#concat | 450,532 ops/sec | ±0.76% | 68 | |\n| Uint8Array#concat | 1,368,911 ops/sec | ±1.50% | 62 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 903,001 ops/sec | ±0.96% | 67 | |\n| Uint8Array#copy(16000) | 1,422,441 ops/sec | ±1.04% | 66 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 11,431,358 ops/sec | ±0.46% | 69 | |\n| Uint8Array#copy(16) | 13,944,163 ops/sec | ±1.12% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#new(16000) | 106,329 ops/sec | ±6.70% | 44 | |\n| Uint8Array#new(16000) | 131,001 ops/sec | ±2.85% | 31 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 1,554,491 ops/sec | ±1.60% | 65 | |\n| Uint8Array#new(16) | 6,623,930 ops/sec | ±1.66% | 65 | ✓ |\n| | | | |\n| BrowserBuffer#readDoubleBE | 112,830 ops/sec | ±0.51% | 69 | ✓ |\n| DataView#getFloat64 | 93,500 ops/sec | ±0.57% | 68 | |\n| | | | |\n| BrowserBuffer#readFloatBE | 146,678 ops/sec | ±0.95% | 68 | ✓ |\n| DataView#getFloat32 | 99,311 ops/sec | ±0.41% | 67 | |\n| | | | |\n| BrowserBuffer#readUInt32LE | 843,214 ops/sec | ±0.70% | 69 | ✓ |\n| DataView#getUint32 | 103,024 ops/sec | ±0.64% | 67 | |\n| | | | |\n| BrowserBuffer#slice | 1,013,941 ops/sec | ±0.75% | 67 | |\n| Uint8Array#subarray | 1,903,928 ops/sec | ±0.53% | 67 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 61,387 ops/sec | ±0.90% | 67 | |\n| DataView#setFloat32 | 141,249 ops/sec | ±0.40% | 66 | ✓ |\n\n\n### Firefox 33\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 20,800,421 ops/sec | ±1.84% | 60 | |\n| Uint8Array#bracket-notation | 20,826,235 ops/sec | ±2.02% | 61 | ✓ |\n| | | | |\n| BrowserBuffer#concat | 153,076 ops/sec | ±2.32% | 61 | |\n| Uint8Array#concat | 1,255,674 ops/sec | ±8.65% | 52 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 1,105,312 ops/sec | ±1.16% | 63 | |\n| Uint8Array#copy(16000) | 1,615,911 ops/sec | ±0.55% | 66 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 16,357,599 ops/sec | ±0.73% | 68 | |\n| Uint8Array#copy(16) | 31,436,281 ops/sec | ±1.05% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#new(16000) | 52,995 ops/sec | ±6.01% | 35 | |\n| Uint8Array#new(16000) | 87,686 ops/sec | ±5.68% | 45 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 252,031 ops/sec | ±1.61% | 66 | |\n| Uint8Array#new(16) | 8,477,026 ops/sec | ±0.49% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readDoubleBE | 99,871 ops/sec | ±0.41% | 69 | |\n| DataView#getFloat64 | 285,663 ops/sec | ±0.70% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readFloatBE | 115,540 ops/sec | ±0.42% | 69 | |\n| DataView#getFloat32 | 288,722 ops/sec | ±0.82% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readUInt32LE | 633,926 ops/sec | ±1.08% | 67 | ✓ |\n| DataView#getUint32 | 294,808 ops/sec | ±0.79% | 64 | |\n| | | | |\n| BrowserBuffer#slice | 349,425 ops/sec | ±0.46% | 69 | |\n| Uint8Array#subarray | 5,965,819 ops/sec | ±0.60% | 65 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 59,980 ops/sec | ±0.41% | 67 | |\n| DataView#setFloat32 | 317,634 ops/sec | ±0.63% | 68 | ✓ |\n\n### Safari 8\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 10,279,729 ops/sec | ±2.25% | 56 | ✓ |\n| Uint8Array#bracket-notation | 10,030,767 ops/sec | ±2.23% | 59 | |\n| | | | |\n| BrowserBuffer#concat | 144,138 ops/sec | ±1.38% | 65 | |\n| Uint8Array#concat | 4,950,764 ops/sec | ±1.70% | 63 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 1,058,548 ops/sec | ±1.51% | 64 | |\n| Uint8Array#copy(16000) | 1,409,666 ops/sec | ±1.17% | 65 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 6,282,529 ops/sec | ±1.88% | 58 | |\n| Uint8Array#copy(16) | 11,907,128 ops/sec | ±2.87% | 58 | ✓ |\n| | | | |\n| BrowserBuffer#new(16000) | 101,663 ops/sec | ±3.89% | 57 | |\n| Uint8Array#new(16000) | 22,050,818 ops/sec | ±6.51% | 46 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 176,072 ops/sec | ±2.13% | 64 | |\n| Uint8Array#new(16) | 24,385,731 ops/sec | ±5.01% | 51 | ✓ |\n| | | | |\n| BrowserBuffer#readDoubleBE | 41,341 ops/sec | ±1.06% | 67 | |\n| DataView#getFloat64 | 322,280 ops/sec | ±0.84% | 68 | ✓ |\n| | | | |\n| BrowserBuffer#readFloatBE | 46,141 ops/sec | ±1.06% | 65 | |\n| DataView#getFloat32 | 337,025 ops/sec | ±0.43% | 69 | ✓ |\n| | | | |\n| BrowserBuffer#readUInt32LE | 151,551 ops/sec | ±1.02% | 66 | |\n| DataView#getUint32 | 308,278 ops/sec | ±0.94% | 67 | ✓ |\n| | | | |\n| BrowserBuffer#slice | 197,365 ops/sec | ±0.95% | 66 | |\n| Uint8Array#subarray | 9,558,024 ops/sec | ±3.08% | 58 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 17,518 ops/sec | ±1.03% | 63 | |\n| DataView#setFloat32 | 319,751 ops/sec | ±0.48% | 68 | ✓ |\n\n\n### Node 0.11.14\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 10,489,828 ops/sec | ±3.25% | 90 | |\n| Uint8Array#bracket-notation | 10,534,884 ops/sec | ±0.81% | 92 | ✓ |\n| NodeBuffer#bracket-notation | 10,389,910 ops/sec | ±0.97% | 87 | |\n| | | | |\n| BrowserBuffer#concat | 487,830 ops/sec | ±2.58% | 88 | |\n| Uint8Array#concat | 1,814,327 ops/sec | ±1.28% | 88 | ✓ |\n| NodeBuffer#concat | 1,636,523 ops/sec | ±1.88% | 73 | |\n| | | | |\n| BrowserBuffer#copy(16000) | 1,073,665 ops/sec | ±0.77% | 90 | |\n| Uint8Array#copy(16000) | 1,348,517 ops/sec | ±0.84% | 89 | ✓ |\n| NodeBuffer#copy(16000) | 1,289,533 ops/sec | ±0.82% | 93 | |\n| | | | |\n| BrowserBuffer#copy(16) | 12,782,706 ops/sec | ±0.74% | 85 | |\n| Uint8Array#copy(16) | 14,180,427 ops/sec | ±0.93% | 92 | ✓ |\n| NodeBuffer#copy(16) | 11,083,134 ops/sec | ±1.06% | 89 | |\n| | | | |\n| BrowserBuffer#new(16000) | 141,678 ops/sec | ±3.30% | 67 | |\n| Uint8Array#new(16000) | 161,491 ops/sec | ±2.96% | 60 | |\n| NodeBuffer#new(16000) | 292,699 ops/sec | ±3.20% | 55 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 1,655,466 ops/sec | ±2.41% | 82 | |\n| Uint8Array#new(16) | 14,399,926 ops/sec | ±0.91% | 94 | ✓ |\n| NodeBuffer#new(16) | 3,894,696 ops/sec | ±0.88% | 92 | |\n| | | | |\n| BrowserBuffer#readDoubleBE | 109,582 ops/sec | ±0.75% | 93 | ✓ |\n| DataView#getFloat64 | 91,235 ops/sec | ±0.81% | 90 | |\n| NodeBuffer#readDoubleBE | 88,593 ops/sec | ±0.96% | 81 | |\n| | | | |\n| BrowserBuffer#readFloatBE | 139,854 ops/sec | ±1.03% | 85 | ✓ |\n| DataView#getFloat32 | 98,744 ops/sec | ±0.80% | 89 | |\n| NodeBuffer#readFloatBE | 92,769 ops/sec | ±0.94% | 93 | |\n| | | | |\n| BrowserBuffer#readUInt32LE | 710,861 ops/sec | ±0.82% | 92 | |\n| DataView#getUint32 | 117,893 ops/sec | ±0.84% | 91 | |\n| NodeBuffer#readUInt32LE | 851,412 ops/sec | ±0.72% | 93 | ✓ |\n| | | | |\n| BrowserBuffer#slice | 1,673,877 ops/sec | ±0.73% | 94 | |\n| Uint8Array#subarray | 6,919,243 ops/sec | ±0.67% | 90 | ✓ |\n| NodeBuffer#slice | 4,617,604 ops/sec | ±0.79% | 93 | |\n| | | | |\n| BrowserBuffer#writeFloatBE | 66,011 ops/sec | ±0.75% | 93 | |\n| DataView#setFloat32 | 127,760 ops/sec | ±0.72% | 93 | ✓ |\n| NodeBuffer#writeFloatBE | 103,352 ops/sec | ±0.83% | 93 | |\n\n### iojs 1.8.1\n\n| Method | Operations | Accuracy | Sampled | Fastest |\n|:-------|:-----------|:---------|:--------|:-------:|\n| BrowserBuffer#bracket-notation | 10,990,488 ops/sec | ±1.11% | 91 | |\n| Uint8Array#bracket-notation | 11,268,757 ops/sec | ±0.65% | 97 | |\n| NodeBuffer#bracket-notation | 11,353,260 ops/sec | ±0.83% | 94 | ✓ |\n| | | | |\n| BrowserBuffer#concat | 378,954 ops/sec | ±0.74% | 94 | |\n| Uint8Array#concat | 1,358,288 ops/sec | ±0.97% | 87 | |\n| NodeBuffer#concat | 1,934,050 ops/sec | ±1.11% | 78 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16000) | 894,538 ops/sec | ±0.56% | 84 | |\n| Uint8Array#copy(16000) | 1,442,656 ops/sec | ±0.71% | 96 | |\n| NodeBuffer#copy(16000) | 1,457,898 ops/sec | ±0.53% | 92 | ✓ |\n| | | | |\n| BrowserBuffer#copy(16) | 12,870,457 ops/sec | ±0.67% | 95 | |\n| Uint8Array#copy(16) | 16,643,989 ops/sec | ±0.61% | 93 | ✓ |\n| NodeBuffer#copy(16) | 14,885,848 ops/sec | ±0.74% | 94 | |\n| | | | |\n| BrowserBuffer#new(16000) | 109,264 ops/sec | ±4.21% | 63 | |\n| Uint8Array#new(16000) | 138,916 ops/sec | ±1.87% | 61 | |\n| NodeBuffer#new(16000) | 281,449 ops/sec | ±3.58% | 51 | ✓ |\n| | | | |\n| BrowserBuffer#new(16) | 1,362,935 ops/sec | ±0.56% | 99 | |\n| Uint8Array#new(16) | 6,193,090 ops/sec | ±0.64% | 95 | ✓ |\n| NodeBuffer#new(16) | 4,745,425 ops/sec | ±1.56% | 90 | |\n| | | | |\n| BrowserBuffer#readDoubleBE | 118,127 ops/sec | ±0.59% | 93 | ✓ |\n| DataView#getFloat64 | 107,332 ops/sec | ±0.65% | 91 | |\n| NodeBuffer#readDoubleBE | 116,274 ops/sec | ±0.94% | 95 | |\n| | | | |\n| BrowserBuffer#readFloatBE | 150,326 ops/sec | ±0.58% | 95 | ✓ |\n| DataView#getFloat32 | 110,541 ops/sec | ±0.57% | 98 | |\n| NodeBuffer#readFloatBE | 121,599 ops/sec | ±0.60% | 87 | |\n| | | | |\n| BrowserBuffer#readUInt32LE | 814,147 ops/sec | ±0.62% | 93 | |\n| DataView#getUint32 | 137,592 ops/sec | ±0.64% | 90 | |\n| NodeBuffer#readUInt32LE | 931,650 ops/sec | ±0.71% | 96 | ✓ |\n| | | | |\n| BrowserBuffer#slice | 878,590 ops/sec | ±0.68% | 93 | |\n| Uint8Array#subarray | 2,843,308 ops/sec | ±1.02% | 90 | |\n| NodeBuffer#slice | 4,998,316 ops/sec | ±0.68% | 90 | ✓ |\n| | | | |\n| BrowserBuffer#writeFloatBE | 65,927 ops/sec | ±0.74% | 93 | |\n| DataView#setFloat32 | 139,823 ops/sec | ±0.97% | 89 | ✓ |\n| NodeBuffer#writeFloatBE | 135,763 ops/sec | ±0.65% | 96 | |\n| | | | |\n\n## Testing the project\n\nFirst, install the project:\n\n npm install\n\nThen, to run tests in Node.js, run:\n\n npm run test-node\n\nTo test locally in a browser, you can run:\n\n npm run test-browser-local\n\nThis will print out a URL that you can then open in a browser to run the tests, using [Zuul](https://github.com/defunctzombie/zuul).\n\nTo run automated browser tests using Saucelabs, ensure that your `SAUCE_USERNAME` and `SAUCE_ACCESS_KEY` environment variables are set, then run:\n\n npm test\n\nThis is what's run in Travis, to check against various browsers. The list of browsers is kept in the `.zuul.yml` file.\n\n## JavaScript Standard Style\n\nThis module uses [JavaScript Standard Style](https://github.com/feross/standard).\n\n[![JavaScript Style Guide](https://cdn.rawgit.com/feross/standard/master/badge.svg)](https://github.com/feross/standard)\n\nTo test that the code conforms to the style, `npm install` and run:\n\n ./node_modules/.bin/standard\n\n## credit\n\nThis was originally forked from [buffer-browserify](https://github.com/toots/buffer-browserify).\n\n\n## license\n\nMIT. Copyright (C) [Feross Aboukhadijeh](http://feross.org), and other contributors. Originally forked from an MIT-licensed module by Romain Beauxis.\n", - "readmeFilename": "README.md", - "_id": "buffer@4.9.1", - "_shasum": "6d1bb601b07a4efced97094132093027c95bc298", - "_resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.1.tgz", - "_from": "buffer@4.9.1" -} diff --git a/node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js b/node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js deleted file mode 100644 index 61f9c18..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/_polyfill.js +++ /dev/null @@ -1,150 +0,0 @@ -if (!Array.prototype.forEach) { - - Array.prototype.forEach = function(callback, thisArg) { - - var T, k; - - if (this == null) { - throw new TypeError(' this is null or not defined'); - } - - // 1. Let O be the result of calling ToObject passing the |this| value as the argument. - var O = Object(this); - - // 2. Let lenValue be the result of calling the Get internal method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = O.length >>> 0; - - // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - if (typeof callback !== "function") { - throw new TypeError(callback + ' is not a function'); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 1) { - T = thisArg; - } - - // 6. Let k be 0 - k = 0; - - // 7. Repeat, while k < len - while (k < len) { - - var kValue; - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal method of O with argument Pk. - kValue = O[k]; - - // ii. Call the Call internal method of callback with T as the this value and - // argument list containing kValue, k, and O. - callback.call(T, kValue, k, O); - } - // d. Increase k by 1. - k++; - } - // 8. return undefined - }; -} - -if (!Array.isArray) { - Array.isArray = function(arg) { - return Object.prototype.toString.call(arg) === '[object Array]'; - }; -} - -if (!Array.prototype.map) { - - Array.prototype.map = function(callback, thisArg) { - - var T, A, k; - - if (this == null) { - throw new TypeError(' this is null or not defined'); - } - - // 1. Let O be the result of calling ToObject passing the |this| - // value as the argument. - var O = Object(this); - - // 2. Let lenValue be the result of calling the Get internal - // method of O with the argument "length". - // 3. Let len be ToUint32(lenValue). - var len = O.length >>> 0; - - // 4. If IsCallable(callback) is false, throw a TypeError exception. - // See: http://es5.github.com/#x9.11 - if (typeof callback !== 'function') { - throw new TypeError(callback + ' is not a function'); - } - - // 5. If thisArg was supplied, let T be thisArg; else let T be undefined. - if (arguments.length > 1) { - T = thisArg; - } - - // 6. Let A be a new array created as if by the expression new Array(len) - // where Array is the standard built-in constructor with that name and - // len is the value of len. - A = new Array(len); - - // 7. Let k be 0 - k = 0; - - // 8. Repeat, while k < len - while (k < len) { - - var kValue, mappedValue; - - // a. Let Pk be ToString(k). - // This is implicit for LHS operands of the in operator - // b. Let kPresent be the result of calling the HasProperty internal - // method of O with argument Pk. - // This step can be combined with c - // c. If kPresent is true, then - if (k in O) { - - // i. Let kValue be the result of calling the Get internal - // method of O with argument Pk. - kValue = O[k]; - - // ii. Let mappedValue be the result of calling the Call internal - // method of callback with T as the this value and argument - // list containing kValue, k, and O. - mappedValue = callback.call(T, kValue, k, O); - - // iii. Call the DefineOwnProperty internal method of A with arguments - // Pk, Property Descriptor - // { Value: mappedValue, - // Writable: true, - // Enumerable: true, - // Configurable: true }, - // and false. - - // In browsers that support Object.defineProperty, use the following: - // Object.defineProperty(A, k, { - // value: mappedValue, - // writable: true, - // enumerable: true, - // configurable: true - // }); - - // For best browser support, use the following: - A[k] = mappedValue; - } - // d. Increase k by 1. - k++; - } - - // 9. return A - return A; - }; -} diff --git a/node_modules/aws-sdk/node_modules/buffer/test/base64.js b/node_modules/aws-sdk/node_modules/buffer/test/base64.js deleted file mode 100644 index e4ecc56..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/base64.js +++ /dev/null @@ -1,47 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('base64: ignore whitespace', function (t) { - var text = '\n YW9ldQ== ' - var buf = new B(text, 'base64') - t.equal(buf.toString(), 'aoeu') - t.end() -}) - -test('base64: strings without padding', function (t) { - t.equal((new B('YW9ldQ', 'base64').toString()), 'aoeu') - t.end() -}) - -test('base64: newline in utf8 -- should not be an issue', function (t) { - t.equal( - new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK', 'base64').toString('utf8'), - '---\ntitle: Three dashes marks the spot\ntags:\n' - ) - t.end() -}) - -test('base64: newline in base64 -- should get stripped', function (t) { - t.equal( - new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\nICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'), - '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-' - ) - t.end() -}) - -test('base64: tab characters in base64 - should get stripped', function (t) { - t.equal( - new B('LS0tCnRpdGxlOiBUaHJlZSBkYXNoZXMgbWFya3MgdGhlIHNwb3QKdGFnczoK\t\t\t\tICAtIHlhbWwKICAtIGZyb250LW1hdHRlcgogIC0gZGFzaGVzCmV4cGFuZWQt', 'base64').toString('utf8'), - '---\ntitle: Three dashes marks the spot\ntags:\n - yaml\n - front-matter\n - dashes\nexpaned-' - ) - t.end() -}) - -test('base64: invalid non-alphanumeric characters -- should be stripped', function (t) { - t.equal( - new B('!"#$%&\'()*,.:;<=>?@[\\]^`{|}~', 'base64').toString('utf8'), - '' - ) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/basic.js b/node_modules/aws-sdk/node_modules/buffer/test/basic.js deleted file mode 100644 index 0368ed9..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/basic.js +++ /dev/null @@ -1,85 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('instanceof Buffer', function (t) { - var buf = new B([1, 2]) - t.ok(buf instanceof B) - t.end() -}) - -test('convert to Uint8Array in modern browsers', function (t) { - if (B.TYPED_ARRAY_SUPPORT) { - var buf = new B([1, 2]) - var uint8array = new Uint8Array(buf.buffer) - t.ok(uint8array instanceof Uint8Array) - t.equal(uint8array[0], 1) - t.equal(uint8array[1], 2) - } else { - t.pass('object impl: skipping test') - } - t.end() -}) - -test('indexes from a string', function (t) { - var buf = new B('abc') - t.equal(buf[0], 97) - t.equal(buf[1], 98) - t.equal(buf[2], 99) - t.end() -}) - -test('indexes from an array', function (t) { - var buf = new B([ 97, 98, 99 ]) - t.equal(buf[0], 97) - t.equal(buf[1], 98) - t.equal(buf[2], 99) - t.end() -}) - -test('setting index value should modify buffer contents', function (t) { - var buf = new B([ 97, 98, 99 ]) - t.equal(buf[2], 99) - t.equal(buf.toString(), 'abc') - - buf[2] += 10 - t.equal(buf[2], 109) - t.equal(buf.toString(), 'abm') - t.end() -}) - -test('storing negative number should cast to unsigned', function (t) { - var buf = new B(1) - - if (B.TYPED_ARRAY_SUPPORT) { - // This does not work with the object implementation -- nothing we can do! - buf[0] = -3 - t.equal(buf[0], 253) - } - - buf = new B(1) - buf.writeInt8(-3, 0) - t.equal(buf[0], 253) - - t.end() -}) - -test('test that memory is copied from array-like', function (t) { - if (B.TYPED_ARRAY_SUPPORT) { - var u = new Uint8Array(4) - var b = new B(u) - b[0] = 1 - b[1] = 2 - b[2] = 3 - b[3] = 4 - - t.equal(u[0], 0) - t.equal(u[1], 0) - t.equal(u[2], 0) - t.equal(u[3], 0) - } else { - t.pass('object impl: skipping test') - } - - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/compare.js b/node_modules/aws-sdk/node_modules/buffer/test/compare.js deleted file mode 100644 index 62b478c..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/compare.js +++ /dev/null @@ -1,59 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('buffer.compare', function (t) { - var b = new B(1).fill('a') - var c = new B(1).fill('c') - var d = new B(2).fill('aa') - - t.equal(b.compare(c), -1) - t.equal(c.compare(d), 1) - t.equal(d.compare(b), 1) - t.equal(b.compare(d), -1) - - // static method - t.equal(B.compare(b, c), -1) - t.equal(B.compare(c, d), 1) - t.equal(B.compare(d, b), 1) - t.equal(B.compare(b, d), -1) - t.end() -}) - -test('buffer.compare argument validation', function (t) { - t.throws(function () { - var b = new B(1) - B.compare(b, 'abc') - }) - - t.throws(function () { - var b = new B(1) - B.compare('abc', b) - }) - - t.throws(function () { - var b = new B(1) - b.compare('abc') - }) - t.end() -}) - -test('buffer.equals', function (t) { - var b = new B(5).fill('abcdf') - var c = new B(5).fill('abcdf') - var d = new B(5).fill('abcde') - var e = new B(6).fill('abcdef') - - t.ok(b.equals(c)) - t.ok(!c.equals(d)) - t.ok(!d.equals(e)) - t.end() -}) - -test('buffer.equals argument validation', function (t) { - t.throws(function () { - var b = new B(1) - b.equals('abc') - }) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/constructor.js b/node_modules/aws-sdk/node_modules/buffer/test/constructor.js deleted file mode 100644 index cec5cdc..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/constructor.js +++ /dev/null @@ -1,193 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('new buffer from array', function (t) { - t.equal( - new B([1, 2, 3]).toString(), - '\u0001\u0002\u0003' - ) - t.end() -}) - -test('new buffer from array w/ negatives', function (t) { - t.equal( - new B([-1, -2, -3]).toString('hex'), - 'fffefd' - ) - t.end() -}) - -test('new buffer from array with mixed signed input', function (t) { - t.equal( - new B([-255, 255, -128, 128, 512, -512, 511, -511]).toString('hex'), - '01ff80800000ff01' - ) - t.end() -}) - -test('new buffer from string', function (t) { - t.equal( - new B('hey', 'utf8').toString(), - 'hey' - ) - t.end() -}) - -test('new buffer from buffer', function (t) { - var b1 = new B('asdf') - var b2 = new B(b1) - t.equal(b1.toString('hex'), b2.toString('hex')) - t.end() -}) - -test('new buffer from ArrayBuffer', function (t) { - if (typeof ArrayBuffer !== 'undefined') { - var arraybuffer = new Uint8Array([0, 1, 2, 3]).buffer - var b = new B(arraybuffer) - t.equal(b.length, 4) - t.equal(b[0], 0) - t.equal(b[1], 1) - t.equal(b[2], 2) - t.equal(b[3], 3) - t.equal(b[4], undefined) - } - t.end() -}) - -test('new buffer from ArrayBuffer, shares memory', function (t) { - if (Buffer.TYPED_ARRAY_SUPPORT) { - var u = new Uint8Array([0, 1, 2, 3]) - var arraybuffer = u.buffer - var b = new B(arraybuffer) - t.equal(b.length, 4) - t.equal(b[0], 0) - t.equal(b[1], 1) - t.equal(b[2], 2) - t.equal(b[3], 3) - t.equal(b[4], undefined) - - // changing the Uint8Array (and thus the ArrayBuffer), changes the Buffer - u[0] = 10 - t.equal(b[0], 10) - u[1] = 11 - t.equal(b[1], 11) - u[2] = 12 - t.equal(b[2], 12) - u[3] = 13 - t.equal(b[3], 13) - } - t.end() -}) - -test('new buffer from Uint8Array', function (t) { - if (typeof Uint8Array !== 'undefined') { - var b1 = new Uint8Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Uint16Array', function (t) { - if (typeof Uint16Array !== 'undefined') { - var b1 = new Uint16Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Uint32Array', function (t) { - if (typeof Uint32Array !== 'undefined') { - var b1 = new Uint32Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Int16Array', function (t) { - if (typeof Int16Array !== 'undefined') { - var b1 = new Int16Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Int32Array', function (t) { - if (typeof Int32Array !== 'undefined') { - var b1 = new Int32Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Float32Array', function (t) { - if (typeof Float32Array !== 'undefined') { - var b1 = new Float32Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from Float64Array', function (t) { - if (typeof Float64Array !== 'undefined') { - var b1 = new Float64Array([0, 1, 2, 3]) - var b2 = new B(b1) - t.equal(b1.length, b2.length) - t.equal(b1[0], 0) - t.equal(b1[1], 1) - t.equal(b1[2], 2) - t.equal(b1[3], 3) - t.equal(b1[4], undefined) - } - t.end() -}) - -test('new buffer from buffer.toJSON() output', function (t) { - if (typeof JSON === 'undefined') { - // ie6, ie7 lack support - t.end() - return - } - var buf = new B('test') - var json = JSON.stringify(buf) - var obj = JSON.parse(json) - var copy = new B(obj) - t.ok(buf.equals(copy)) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/from-string.js b/node_modules/aws-sdk/node_modules/buffer/test/from-string.js deleted file mode 100644 index e25db26..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/from-string.js +++ /dev/null @@ -1,132 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('detect utf16 surrogate pairs', function (t) { - var text = '\uD83D\uDE38' + '\uD83D\uDCAD' + '\uD83D\uDC4D' - var buf = new B(text) - t.equal(text, buf.toString()) - t.end() -}) - -test('detect utf16 surrogate pairs over U+20000 until U+10FFFF', function (t) { - var text = '\uD842\uDFB7' + '\uD93D\uDCAD' + '\uDBFF\uDFFF' - var buf = new B(text) - t.equal(text, buf.toString()) - t.end() -}) - -test('replace orphaned utf16 surrogate lead code point', function (t) { - var text = '\uD83D\uDE38' + '\uD83D' + '\uD83D\uDC4D' - var buf = new B(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ])) - t.end() -}) - -test('replace orphaned utf16 surrogate trail code point', function (t) { - var text = '\uD83D\uDE38' + '\uDCAD' + '\uD83D\uDC4D' - var buf = new B(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xef, 0xbf, 0xbd, 0xf0, 0x9f, 0x91, 0x8d ])) - t.end() -}) - -test('do not write partial utf16 code units', function (t) { - var f = new B([0, 0, 0, 0, 0]) - t.equal(f.length, 5) - var size = f.write('ã‚ã„ã†ãˆãŠ', 'utf16le') - t.equal(size, 4) - t.deepEqual(f, new B([0x42, 0x30, 0x44, 0x30, 0x00])) - t.end() -}) - -test('handle partial utf16 code points when encoding to utf8 the way node does', function (t) { - var text = '\uD83D\uDE38' + '\uD83D\uDC4D' - - var buf = new B(8) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0xf0, 0x9f, 0x91, 0x8d ])) - - buf = new B(7) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00, 0x00 ])) - - buf = new B(6) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00, 0x00 ])) - - buf = new B(5) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8, 0x00 ])) - - buf = new B(4) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0xf0, 0x9f, 0x98, 0xb8 ])) - - buf = new B(3) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x00, 0x00, 0x00 ])) - - buf = new B(2) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x00, 0x00 ])) - - buf = new B(1) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x00 ])) - - t.end() -}) - -test('handle invalid utf16 code points when encoding to utf8 the way node does', function (t) { - var text = 'a' + '\uDE38\uD83D' + 'b' - - var buf = new B(8) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd, 0x62 ])) - - buf = new B(7) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0xef, 0xbf, 0xbd ])) - - buf = new B(6) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00, 0x00 ])) - - buf = new B(5) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd, 0x00 ])) - - buf = new B(4) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0xef, 0xbf, 0xbd ])) - - buf = new B(3) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0x00, 0x00 ])) - - buf = new B(2) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61, 0x00 ])) - - buf = new B(1) - buf.fill(0) - buf.write(text) - t.deepEqual(buf, new B([ 0x61 ])) - - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js b/node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js deleted file mode 100644 index 3744b23..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/is-buffer.js +++ /dev/null @@ -1,22 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var isBuffer = require('is-buffer') -var test = require('tape') - -test('is-buffer tests', function (t) { - t.ok(isBuffer(new B(4)), 'new Buffer(4)') - - t.notOk(isBuffer(undefined), 'undefined') - t.notOk(isBuffer(null), 'null') - t.notOk(isBuffer(''), 'empty string') - t.notOk(isBuffer(true), 'true') - t.notOk(isBuffer(false), 'false') - t.notOk(isBuffer(0), '0') - t.notOk(isBuffer(1), '1') - t.notOk(isBuffer(1.0), '1.0') - t.notOk(isBuffer('string'), 'string') - t.notOk(isBuffer({}), '{}') - t.notOk(isBuffer(function foo () {}), 'function foo () {}') - - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/methods.js b/node_modules/aws-sdk/node_modules/buffer/test/methods.js deleted file mode 100644 index f4bd3f2..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/methods.js +++ /dev/null @@ -1,127 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('buffer.toJSON', function (t) { - var data = [1, 2, 3, 4] - t.deepEqual( - new B(data).toJSON(), - { type: 'Buffer', data: [ 1, 2, 3, 4 ] } - ) - t.end() -}) - -test('buffer.copy', function (t) { - // copied from nodejs.org example - var buf1 = new B(26) - var buf2 = new B(26) - - for (var i = 0; i < 26; i++) { - buf1[i] = i + 97 // 97 is ASCII a - buf2[i] = 33 // ASCII ! - } - - buf1.copy(buf2, 8, 16, 20) - - t.equal( - buf2.toString('ascii', 0, 25), - '!!!!!!!!qrst!!!!!!!!!!!!!' - ) - t.end() -}) - -test('test offset returns are correct', function (t) { - var b = new B(16) - t.equal(4, b.writeUInt32LE(0, 0)) - t.equal(6, b.writeUInt16LE(0, 4)) - t.equal(7, b.writeUInt8(0, 6)) - t.equal(8, b.writeInt8(0, 7)) - t.equal(16, b.writeDoubleLE(0, 8)) - t.end() -}) - -test('concat() a varying number of buffers', function (t) { - var zero = [] - var one = [ new B('asdf') ] - var long = [] - for (var i = 0; i < 10; i++) { - long.push(new B('asdf')) - } - - var flatZero = B.concat(zero) - var flatOne = B.concat(one) - var flatLong = B.concat(long) - var flatLongLen = B.concat(long, 40) - - t.equal(flatZero.length, 0) - t.equal(flatOne.toString(), 'asdf') - t.deepEqual(flatOne, one[0]) - t.equal(flatLong.toString(), (new Array(10 + 1).join('asdf'))) - t.equal(flatLongLen.toString(), (new Array(10 + 1).join('asdf'))) - t.end() -}) - -test('fill', function (t) { - var b = new B(10) - b.fill(2) - t.equal(b.toString('hex'), '02020202020202020202') - t.end() -}) - -test('fill (string)', function (t) { - var b = new B(10) - b.fill('abc') - t.equal(b.toString(), 'abcabcabca') - b.fill('Õ§') - t.equal(b.toString(), 'Õ§Õ§Õ§Õ§Õ§') - t.end() -}) - -test('copy() empty buffer with sourceEnd=0', function (t) { - var source = new B([42]) - var destination = new B([43]) - source.copy(destination, 0, 0, 0) - t.equal(destination.readUInt8(0), 43) - t.end() -}) - -test('copy() after slice()', function (t) { - var source = new B(200) - var dest = new B(200) - var expected = new B(200) - for (var i = 0; i < 200; i++) { - source[i] = i - dest[i] = 0 - } - - source.slice(2).copy(dest) - source.copy(expected, 0, 2) - t.deepEqual(dest, expected) - t.end() -}) - -test('copy() ascending', function (t) { - var b = new B('abcdefghij') - b.copy(b, 0, 3, 10) - t.equal(b.toString(), 'defghijhij') - t.end() -}) - -test('copy() descending', function (t) { - var b = new B('abcdefghij') - b.copy(b, 3, 0, 7) - t.equal(b.toString(), 'abcabcdefg') - t.end() -}) - -test('buffer.slice sets indexes', function (t) { - t.equal((new B('hallo')).slice(0, 5).toString(), 'hallo') - t.end() -}) - -test('buffer.slice out of range', function (t) { - t.plan(2) - t.equal((new B('hallo')).slice(0, 10).toString(), 'hallo') - t.equal((new B('hallo')).slice(10, 2).toString(), '') - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js deleted file mode 100644 index b524f51..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-alloc.js +++ /dev/null @@ -1,1501 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - -var common = { skip: function () {} }; -var assert = require('assert'); - -var Buffer = require('../../').Buffer; - -// counter to ensure unique value is always copied -var cntr = 0; - -var b = Buffer.allocUnsafe(1024); - -// console.log('b.length == %d', b.length); -assert.strictEqual(1024, b.length); - -b[0] = -1; -assert.strictEqual(b[0], 255); - -for (var i = 0; i < 1024; i++) { - b[i] = i % 256; -} - -for (var i = 0; i < 1024; i++) { - assert.strictEqual(i % 256, b[i]); -} - -var c = Buffer.allocUnsafe(512); -// console.log('c.length == %d', c.length); -assert.strictEqual(512, c.length); - -var d = Buffer.from([]); -assert.strictEqual(0, d.length); - -var ui32 = new Uint32Array(4).fill(42); -var e = Buffer.from(ui32); -for (var [index, value] of e.entries()) { - assert.strictEqual(value, ui32[index]); -} - -// First check Buffer#fill() works as expected. - -assert.throws(function() { - Buffer.allocUnsafe(8).fill('a', -1); -}); - -assert.throws(function() { - Buffer.allocUnsafe(8).fill('a', 0, 9); -}); - -// Make sure this doesn't hang indefinitely. -Buffer.allocUnsafe(8).fill(''); -Buffer.alloc(8, ''); - -{ - var buf = Buffer.alloc(64, 10); - for (var i = 0; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill(11, 0, buf.length >> 1); - for (var i = 0; i < buf.length >> 1; i++) - assert.equal(buf[i], 11); - for (var i = (buf.length >> 1) + 1; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill('h'); - for (var i = 0; i < buf.length; i++) - assert.equal('h'.charCodeAt(0), buf[i]); - - buf.fill(0); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(null); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(1, 16, 32); - for (var i = 0; i < 16; i++) - assert.equal(0, buf[i]); - for (var i = 16; i < 32; i++) - assert.equal(1, buf[i]); - for (var i = 32; i < buf.length; i++) - assert.equal(0, buf[i]); -} - -{ - var buf = Buffer.alloc(10, 'abc'); - assert.equal(buf.toString(), 'abcabcabca'); - buf.fill('Õ§'); - assert.equal(buf.toString(), 'Õ§Õ§Õ§Õ§Õ§'); -} - -{ - // copy 512 bytes, from 0 to 512. - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 512); -// console.log('copied %d bytes from b into c', copied); - assert.strictEqual(512, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy c into b, without specifying sourceEnd - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0, 0); -// console.log('copied %d bytes from c into b w/o sourceEnd', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy c into b, without specifying sourceStart - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0); -// console.log('copied %d bytes from c into b w/o sourceStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy longer buffer b to shorter c without targetStart - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c); -// console.log('copied %d bytes from b into c w/o targetStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy starting near end of b to c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2)); -// console.log('copied %d bytes from end of b into beginning of c', copied); - assert.strictEqual(Math.floor(c.length / 2), copied); - for (var i = 0; i < Math.floor(c.length / 2); i++) { - assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]); - } - for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) { - assert.strictEqual(c[c.length - 1], c[i]); - } -} - -{ - // try to copy 513 bytes, and check we don't overrun c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 513); -// console.log('copied %d bytes from b trying to overrun c', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy 768 bytes from b into b - b.fill(++cntr); - b.fill(++cntr, 256); - var copied = b.copy(b, 0, 256, 1024); -// console.log('copied %d bytes from b into b', copied); - assert.strictEqual(768, copied); - for (var i = 0; i < b.length; i++) { - assert.strictEqual(cntr, b[i]); - } -} - -// copy string longer than buffer length (failure will segfault) -var bb = Buffer.allocUnsafe(10); -bb.fill('hello crazy world'); - - -// try to copy from before the beginning of b -assert.doesNotThrow(() => { b.copy(c, 0, 100, 10); }); - -// copy throws at negative sourceStart -assert.throws(function() { - Buffer.allocUnsafe(5).copy(Buffer.allocUnsafe(5), 0, -1); -}, RangeError); - -{ - // check sourceEnd resets to targetEnd if former is greater than the latter - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 1025); -// console.log('copied %d bytes from b into c', copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -// throw with negative sourceEnd -// console.log('test copy at negative sourceEnd'); -assert.throws(function() { - b.copy(c, 0, 0, -1); -}, RangeError); - -// when sourceStart is greater than sourceEnd, zero copied -assert.equal(b.copy(c, 0, 100, 10), 0); - -// when targetStart > targetLength, zero copied -assert.equal(b.copy(c, 512, 0, 10), 0); - -var caught_error; - -// invalid encoding for Buffer.toString -caught_error = null; -try { - b.toString('invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// invalid encoding for Buffer.write -caught_error = null; -try { - b.write('test string', 0, 5, 'invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// try to create 0-length buffers -Buffer.from(''); -Buffer.from('', 'ascii'); -Buffer.from('', 'latin1'); -Buffer.alloc(0); -Buffer.allocUnsafe(0); - -// try to write a 0-length string beyond the end of b -assert.throws(function() { - b.write('', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// throw when writing past bounds from the pool -assert.throws(function() { - b.write('a', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// try to copy 0 bytes worth of data into an empty buffer -b.copy(Buffer.alloc(0), 0, 0, 0); - -// try to copy 0 bytes past the end of the target buffer -b.copy(Buffer.alloc(0), 1, 1, 1); -b.copy(Buffer.alloc(1), 1, 1, 1); - -// try to copy 0 bytes from past the end of the source buffer -b.copy(Buffer.alloc(1), 0, 2048, 2048); - -var rangeBuffer = Buffer.from('abc'); - -// if start >= buffer's length, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 3), ''); -assert.equal(rangeBuffer.toString('ascii', +Infinity), ''); -assert.equal(rangeBuffer.toString('ascii', 3.14, 3), ''); -assert.equal(rangeBuffer.toString('ascii', 'Infinity', 3), ''); - -// if end <= 0, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 1, 0), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -1.2), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -100), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -Infinity), ''); - -// if start < 0, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', -1, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -1.99, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -Infinity, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); - -// if start is an invalid integer, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', 'node.js', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', {}, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', [], 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', NaN, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', null, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', undefined, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', false, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '', 3), 'abc'); - -// but, if start is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '1', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '3', 3), ''); -assert.equal(rangeBuffer.toString('ascii', Number(3), 3), ''); -assert.equal(rangeBuffer.toString('ascii', '3.14', 3), ''); -assert.equal(rangeBuffer.toString('ascii', '1.99', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 1.99, 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', true, 3), 'bc'); - -// if end > buffer's length, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 5), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 6.99), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Infinity), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '5'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '6.99'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 'Infinity'), 'abc'); - -// if end is an invalid integer, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 'node.js'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, {}), ''); -assert.equal(rangeBuffer.toString('ascii', 0, NaN), ''); -assert.equal(rangeBuffer.toString('ascii', 0, undefined), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, null), ''); -assert.equal(rangeBuffer.toString('ascii', 0, []), ''); -assert.equal(rangeBuffer.toString('ascii', 0, false), ''); -assert.equal(rangeBuffer.toString('ascii', 0, ''), ''); - -// but, if end is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', 0, '-1'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '1'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-Infinity'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '3'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Number(3)), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '3.14'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '1.99'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-1.99'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, 1.99), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, true), 'a'); - -// try toString() with a object as a encoding -assert.equal(rangeBuffer.toString({toString: function() { - return 'ascii'; -}}), 'abc'); - -// testing for smart defaults and ability to pass string values as offset -var writeTest = Buffer.from('abcdes'); -writeTest.write('n', 'ascii'); -writeTest.write('o', '1', 'ascii'); -writeTest.write('d', '2', 'ascii'); -writeTest.write('e', 3, 'ascii'); -writeTest.write('j', 4, 'ascii'); -assert.equal(writeTest.toString(), 'nodejs'); - -// ASCII slice test -{ - var asciiString = 'hello world'; - - for (var i = 0; i < asciiString.length; i++) { - b[i] = asciiString.charCodeAt(i); - } - var asciiSlice = b.toString('ascii', 0, asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var written = b.write(asciiString, offset, 'ascii'); - assert.equal(asciiString.length, written); - var asciiSlice = b.toString('ascii', offset, offset + asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var sliceA = b.slice(offset, offset + asciiString.length); - var sliceB = b.slice(offset, offset + asciiString.length); - for (var i = 0; i < asciiString.length; i++) { - assert.equal(sliceA[i], sliceB[i]); - } -} - -// UTF-8 slice test - -var utf8String = '¡hέlló wôrld!'; -var offset = 100; - -b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8'); -var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var written = b.write(utf8String, offset, 'utf8'); -assert.equal(Buffer.byteLength(utf8String), written); -utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String)); -var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String)); -for (var i = 0; i < Buffer.byteLength(utf8String); i++) { - assert.equal(sliceA[i], sliceB[i]); -} - -{ - var slice = b.slice(100, 150); - assert.equal(50, slice.length); - for (var i = 0; i < 50; i++) { - assert.equal(b[100 + i], slice[i]); - } -} - -{ - // make sure only top level parent propagates from allocPool - var b = Buffer.allocUnsafe(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(b.parent, c.parent); - assert.equal(b.parent, d.parent); -} - -{ - // also from a non-pooled instance - var b = Buffer.allocUnsafeSlow(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(c.parent, d.parent); -} - -{ - // Bug regression test - var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語 - var buffer = Buffer.allocUnsafe(32); - var size = buffer.write(testValue, 0, 'utf8'); -// console.log('bytes written to buffer: ' + size); - var slice = buffer.toString('utf8', 0, size); - assert.equal(slice, testValue); -} - -{ - // Test triple slice - var a = Buffer.allocUnsafe(8); - for (var i = 0; i < 8; i++) a[i] = i; - var b = a.slice(4, 8); - assert.equal(4, b[0]); - assert.equal(5, b[1]); - assert.equal(6, b[2]); - assert.equal(7, b[3]); - var c = b.slice(2, 4); - assert.equal(6, c[0]); - assert.equal(7, c[1]); -} - -{ - var d = Buffer.from([23, 42, 255]); - assert.equal(d.length, 3); - assert.equal(d[0], 23); - assert.equal(d[1], 42); - assert.equal(d[2], 255); - assert.deepStrictEqual(d, Buffer.from(d)); -} - -{ - var e = Buffer.from('über'); -// console.error('uber: \'%s\'', e.toString()); - assert.deepStrictEqual(e, Buffer.from([195, 188, 98, 101, 114])); -} - -{ - var f = Buffer.from('über', 'ascii'); -// console.error('f.length: %d (should be 4)', f.length); - assert.deepStrictEqual(f, Buffer.from([252, 98, 101, 114])); -} - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - { - var f = Buffer.from('über', encoding); -// console.error('f.length: %d (should be 8)', f.length); - assert.deepStrictEqual(f, Buffer.from([252, 0, 98, 0, 101, 0, 114, 0])); - } - - { - var f = Buffer.from('привет', encoding); -// console.error('f.length: %d (should be 12)', f.length); - assert.deepStrictEqual(f, - Buffer.from([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4])); - assert.equal(f.toString(encoding), 'привет'); - } - - { - var f = Buffer.from([0, 0, 0, 0, 0]); - assert.equal(f.length, 5); - var size = f.write('ã‚ã„ã†ãˆãŠ', encoding); -// console.error('bytes written to buffer: %d (should be 4)', size); - assert.equal(size, 4); - assert.deepStrictEqual(f, Buffer.from([0x42, 0x30, 0x44, 0x30, 0x00])); - } -}); - -{ - var f = Buffer.from('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D) - assert.equal(f.length, 4); - assert.deepStrictEqual(f, Buffer.from('3DD84DDC', 'hex')); -} - - -var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4}; -var g = Buffer.from(arrayIsh); -assert.deepStrictEqual(g, Buffer.from([0, 1, 2, 3])); -var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4}; -g = Buffer.from(strArrayIsh); -assert.deepStrictEqual(g, Buffer.from([0, 1, 2, 3])); - - -// -// Test toString('base64') -// -assert.equal('TWFu', (Buffer.from('Man')).toString('base64')); - -{ - // test that regular and URL-safe base64 both work - var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]; - assert.deepStrictEqual(Buffer.from('//++/++/++//', 'base64'), - Buffer.from(expected)); - assert.deepStrictEqual(Buffer.from('__--_--_--__', 'base64'), - Buffer.from(expected)); -} - -{ - // big example - var quote = 'Man is distinguished, not only by his reason, but by this ' + - 'singular passion from other animals, which is a lust ' + - 'of the mind, that by a perseverance of delight in the ' + - 'continued and indefatigable generation of knowledge, ' + - 'exceeds the short vehemence of any carnal pleasure.'; - var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb' + - '24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci' + - 'BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQ' + - 'gYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' + - 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ' + - 'GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm' + - '5hbCBwbGVhc3VyZS4='; - assert.equal(expected, (Buffer.from(quote)).toString('base64')); - - var b = Buffer.allocUnsafe(1024); - var bytesWritten = b.write(expected, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores whitespace - var expectedWhite = expected.slice(0, 60) + ' \n' + - expected.slice(60, 120) + ' \n' + - expected.slice(120, 180) + ' \n' + - expected.slice(180, 240) + ' \n' + - expected.slice(240, 300) + '\n' + - expected.slice(300, 360) + '\n'; - b = Buffer.allocUnsafe(1024); - bytesWritten = b.write(expectedWhite, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder on the constructor works - // even in the presence of whitespace. - b = Buffer.from(expectedWhite, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores illegal chars - var expectedIllegal = expected.slice(0, 60) + ' \x80' + - expected.slice(60, 120) + ' \xff' + - expected.slice(120, 180) + ' \x00' + - expected.slice(180, 240) + ' \x98' + - expected.slice(240, 300) + '\x03' + - expected.slice(300, 360); - b = Buffer.from(expectedIllegal, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); -} - -assert.equal(Buffer.from('', 'base64').toString(), ''); -assert.equal(Buffer.from('K', 'base64').toString(), ''); - -// multiple-of-4 with padding -assert.equal(Buffer.from('Kg==', 'base64').toString(), '*'); -assert.equal(Buffer.from('Kio=', 'base64').toString(), '**'); -assert.equal(Buffer.from('Kioq', 'base64').toString(), '***'); -assert.equal(Buffer.from('KioqKg==', 'base64').toString(), '****'); -assert.equal(Buffer.from('KioqKio=', 'base64').toString(), '*****'); -assert.equal(Buffer.from('KioqKioq', 'base64').toString(), '******'); -assert.equal(Buffer.from('KioqKioqKg==', 'base64').toString(), '*******'); -assert.equal(Buffer.from('KioqKioqKio=', 'base64').toString(), '********'); -assert.equal(Buffer.from('KioqKioqKioq', 'base64').toString(), '*********'); -assert.equal(Buffer.from('KioqKioqKioqKg==', 'base64').toString(), - '**********'); -assert.equal(Buffer.from('KioqKioqKioqKio=', 'base64').toString(), - '***********'); -assert.equal(Buffer.from('KioqKioqKioqKioq', 'base64').toString(), - '************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKg==', 'base64').toString(), - '*************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKio=', 'base64').toString(), - '**************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioq', 'base64').toString(), - '***************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKg==', 'base64').toString(), - '****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKio=', 'base64').toString(), - '*****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioq', 'base64').toString(), - '******************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(), - '*******************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(), - '********************'); - -// no padding, not a multiple of 4 -assert.equal(Buffer.from('Kg', 'base64').toString(), '*'); -assert.equal(Buffer.from('Kio', 'base64').toString(), '**'); -assert.equal(Buffer.from('KioqKg', 'base64').toString(), '****'); -assert.equal(Buffer.from('KioqKio', 'base64').toString(), '*****'); -assert.equal(Buffer.from('KioqKioqKg', 'base64').toString(), '*******'); -assert.equal(Buffer.from('KioqKioqKio', 'base64').toString(), '********'); -assert.equal(Buffer.from('KioqKioqKioqKg', 'base64').toString(), '**********'); -assert.equal(Buffer.from('KioqKioqKioqKio', 'base64').toString(), - '***********'); -assert.equal(Buffer.from('KioqKioqKioqKioqKg', 'base64').toString(), - '*************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKio', 'base64').toString(), - '**************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKg', 'base64').toString(), - '****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKio', 'base64').toString(), - '*****************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(), - '*******************'); -assert.equal(Buffer.from('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(), - '********************'); - -// handle padding graciously, multiple-of-4 or not -assert.equal( - Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==', 'base64').length, - 32 -); -assert.equal( - Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=', 'base64').length, - 32 -); -assert.equal( - Buffer.from('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw', 'base64').length, - 32 -); -assert.equal( - Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==', 'base64').length, - 31 -); -assert.equal( - Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=', 'base64').length, - 31 -); -assert.equal( - Buffer.from('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg', 'base64').length, - 31 -); - -// This string encodes single '.' character in UTF-16 -var dot = Buffer.from('//4uAA==', 'base64'); -assert.equal(dot[0], 0xff); -assert.equal(dot[1], 0xfe); -assert.equal(dot[2], 0x2e); -assert.equal(dot[3], 0x00); -assert.equal(dot.toString('base64'), '//4uAA=='); - -{ - // Writing base64 at a position > 0 should not mangle the result. - // - // https://github.com/joyent/node/issues/402 - var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh']; - var b = Buffer.allocUnsafe(64); - var pos = 0; - - for (var i = 0; i < segments.length; ++i) { - pos += b.write(segments[i], pos, 'base64'); - } - assert.equal(b.toString('latin1', 0, pos), 'Madness?! This is node.js!'); -} - -// Regression test for https://github.com/nodejs/node/issues/3496. -// assert.equal(Buffer.from('=bad'.repeat(1e4), 'base64').length, 0); - -{ - // Creating buffers larger than pool size. - var l = Buffer.poolSize + 5; - var s = ''; - for (var i = 0; i < l; i++) { - s += 'h'; - } - - var b = Buffer.from(s); - - for (var i = 0; i < l; i++) { - assert.equal('h'.charCodeAt(0), b[i]); - } - - var sb = b.toString(); - assert.equal(sb.length, s.length); - assert.equal(sb, s); -} - -{ - // Single argument slice - var b = Buffer.from('abcde'); - assert.equal('bcde', b.slice(1).toString()); -} - -// slice(0,0).length === 0 -assert.equal(0, Buffer.from('hello').slice(0, 0).length); - -// test hex toString -// console.log('Create hex string from buffer'); -var hexb = Buffer.allocUnsafe(256); -for (var i = 0; i < 256; i++) { - hexb[i] = i; -} -var hexStr = hexb.toString('hex'); -assert.equal(hexStr, - '000102030405060708090a0b0c0d0e0f' + - '101112131415161718191a1b1c1d1e1f' + - '202122232425262728292a2b2c2d2e2f' + - '303132333435363738393a3b3c3d3e3f' + - '404142434445464748494a4b4c4d4e4f' + - '505152535455565758595a5b5c5d5e5f' + - '606162636465666768696a6b6c6d6e6f' + - '707172737475767778797a7b7c7d7e7f' + - '808182838485868788898a8b8c8d8e8f' + - '909192939495969798999a9b9c9d9e9f' + - 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' + - 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + - 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + - 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + - 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + - 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); - -// console.log('Create buffer from hex string'); -var hexb2 = Buffer.from(hexStr, 'hex'); -for (var i = 0; i < 256; i++) { - assert.equal(hexb2[i], hexb[i]); -} - -{ - // test an invalid slice end. -// console.log('Try to slice off the end of the buffer'); - var b = Buffer.from([1, 2, 3, 4, 5]); - var b2 = b.toString('hex', 1, 10000); - var b3 = b.toString('hex', 1, 5); - var b4 = b.toString('hex', 1); - assert.equal(b2, b3); - assert.equal(b2, b4); -} - -function buildBuffer(data) { - if (Array.isArray(data)) { - var buffer = Buffer.allocUnsafe(data.length); - data.forEach(function(v, k) { - buffer[k] = v; - }); - return buffer; - } - return null; -} - -var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]); - -// console.log(x.inspect()); -assert.equal('', x.inspect()); - -{ - var z = x.slice(4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(5, z.length); - assert.equal(0x6f, z[0]); - assert.equal(0xa3, z[1]); - assert.equal(0x62, z[2]); - assert.equal(0x61, z[3]); - assert.equal(0x72, z[4]); -} - -{ - var z = x.slice(0); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(z.length, x.length); -} - -{ - var z = x.slice(0, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(4, z.length); - assert.equal(0x81, z[0]); - assert.equal(0xa3, z[1]); -} - -{ - var z = x.slice(0, 9); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(9, z.length); -} - -{ - var z = x.slice(1, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(3, z.length); - assert.equal(0xa3, z[0]); -} - -{ - var z = x.slice(2, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(2, z.length); - assert.equal(0x66, z[0]); - assert.equal(0x6f, z[1]); -} - -assert.equal(0, Buffer.from('hello').slice(0, 0).length); - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - var b = Buffer.allocUnsafe(10); - b.write('ã‚ã„ã†ãˆãŠ', encoding); - assert.equal(b.toString(encoding), 'ã‚ã„ã†ãˆãŠ'); -}); - -{ - // Binary encoding should write only one byte per character. - var b = Buffer.from([0xde, 0xad, 0xbe, 0xef]); - var s = String.fromCharCode(0xffff); - b.write(s, 0, 'latin1'); - assert.equal(0xff, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); - s = String.fromCharCode(0xaaee); - b.write(s, 0, 'latin1'); - assert.equal(0xee, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); -} - -{ - // #1210 Test UTF-8 string includes null character - var buf = Buffer.from('\0'); - assert.equal(buf.length, 1); - buf = Buffer.from('\0\0'); - assert.equal(buf.length, 2); -} - -{ - var buf = Buffer.allocUnsafe(2); - var written = buf.write(''); // 0byte - assert.equal(written, 0); - written = buf.write('\0'); // 1byte (v8 adds null terminator) - assert.equal(written, 1); - written = buf.write('a\0'); // 1byte * 2 - assert.equal(written, 2); - written = buf.write('ã‚'); // 3bytes - assert.equal(written, 0); - written = buf.write('\0ã‚'); // 1byte + 3bytes - assert.equal(written, 1); - written = buf.write('\0\0ã‚'); // 1byte * 2 + 3bytes - assert.equal(written, 2); -} - -{ - var buf = Buffer.allocUnsafe(10); - written = buf.write('ã‚ã„ã†'); // 3bytes * 3 (v8 adds null terminator) - assert.equal(written, 9); - written = buf.write('ã‚ã„ã†\0'); // 3bytes * 3 + 1byte - assert.equal(written, 10); -} - -{ - // #243 Test write() with maxLength - var buf = Buffer.allocUnsafe(4); - buf.fill(0xFF); - var written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 4); -// console.log(buf); - assert.equal(written, 3); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0x63); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcdef', 1, 2, 'hex'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0xAB); - assert.equal(buf[2], 0xCD); - assert.equal(buf[3], 0xFF); - - ['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - buf.fill(0xFF); - written = buf.write('abcd', 0, 2, encoding); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x00); - assert.equal(buf[2], 0xFF); - assert.equal(buf[3], 0xFF); - }); -} - -{ - // test offset returns are correct - var b = Buffer.allocUnsafe(16); - assert.equal(4, b.writeUInt32LE(0, 0)); - assert.equal(6, b.writeUInt16LE(0, 4)); - assert.equal(7, b.writeUInt8(0, 6)); - assert.equal(8, b.writeInt8(0, 7)); - assert.equal(16, b.writeDoubleLE(0, 8)); -} - -{ - // test unmatched surrogates not producing invalid utf8 output - // ef bf bd = utf-8 representation of unicode replacement character - // see https://codereview.chromium.org/121173009/ - var buf = Buffer.from('ab\ud800cd', 'utf8'); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x62); - assert.equal(buf[2], 0xef); - assert.equal(buf[3], 0xbf); - assert.equal(buf[4], 0xbd); - assert.equal(buf[5], 0x63); - assert.equal(buf[6], 0x64); -} - -{ - // test for buffer overrun - var buf = Buffer.from([0, 0, 0, 0, 0]); // length: 5 - var sub = buf.slice(0, 4); // length: 4 - written = sub.write('12345', 'latin1'); - assert.equal(written, 4); - assert.equal(buf[4], 0); -} - -// Check for fractional length args, junk length args, etc. -// https://github.com/joyent/node/issues/1758 - -// Call .fill() first, stops valgrind warning about uninitialized memory reads. -Buffer.allocUnsafe(3.3).fill().toString(); - // throws bad argument error in commit 43cb4ec -Buffer.alloc(3.3).fill().toString(); -assert.equal(Buffer.allocUnsafe(NaN).length, 0); -assert.equal(Buffer.allocUnsafe(3.3).length, 3); -assert.equal(Buffer.from({length: 3.3}).length, 3); -assert.equal(Buffer.from({length: 'BAM'}).length, 0); - -// Make sure that strings are not coerced to numbers. -assert.equal(Buffer.from('99').length, 2); -assert.equal(Buffer.from('13.37').length, 5); - -// Ensure that the length argument is respected. -'ascii utf8 hex base64 latin1'.split(' ').forEach(function(enc) { - assert.equal(Buffer.allocUnsafe(1).write('aaaaaa', 0, 1, enc), 1); -}); - -{ - // Regression test, guard against buffer overrun in the base64 decoder. - var a = Buffer.allocUnsafe(3); - var b = Buffer.from('xxx'); - a.write('aaaaaaaa', 'base64'); - assert.equal(b.toString(), 'xxx'); -} - -// issue GH-3416 -Buffer.from(Buffer.allocUnsafe(0), 0, 0); - -[ 'hex', - 'utf8', - 'utf-8', - 'ascii', - 'latin1', - 'binary', - 'base64', - 'ucs2', - 'ucs-2', - 'utf16le', - 'utf-16le' ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), true); - }); - -[ 'utf9', - 'utf-7', - 'Unicode-FTW', - 'new gnu gun', - false, - NaN, - {}, - Infinity, - [], - 1, - 0, - -1 ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), false); - }); - - -// GH-5110 -{ - var buffer = Buffer.from('test'); - var string = JSON.stringify(buffer); - - assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}'); - - assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) { - return value && value.type === 'Buffer' - ? Buffer.from(value.data) - : value; - })); -} - -// issue GH-7849 -{ - var buf = Buffer.from('test'); - var json = JSON.stringify(buf); - var obj = JSON.parse(json); - var copy = Buffer.from(obj); - - assert(buf.equals(copy)); -} - -// issue GH-4331 -assert.throws(function() { - Buffer.allocUnsafe(0xFFFFFFFF); -}, RangeError); -assert.throws(function() { - Buffer.allocUnsafe(0xFFFFFFFFF); -}, RangeError); - - -// attempt to overflow buffers, similar to previous bug in array buffers -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - - -// ensure negative values can't get past offset -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer.allocUnsafe(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -// offset checks -{ - var buf = Buffer.allocUnsafe(0); - - assert.throws(function() { buf.readUInt8(0); }, RangeError); - assert.throws(function() { buf.readInt8(0); }, RangeError); -} - -{ - var buf = Buffer.from([0xFF]); - - assert.equal(buf.readUInt8(0), 255); - assert.equal(buf.readInt8(0), -1); -} - -[16, 32].forEach(function(bits) { - var buf = Buffer.allocUnsafe(bits / 8 - 1); - - assert.throws(function() { buf['readUInt' + bits + 'BE'](0); }, - RangeError, - 'readUInt' + bits + 'BE'); - - assert.throws(function() { buf['readUInt' + bits + 'LE'](0); }, - RangeError, - 'readUInt' + bits + 'LE'); - - assert.throws(function() { buf['readInt' + bits + 'BE'](0); }, - RangeError, - 'readInt' + bits + 'BE()'); - - assert.throws(function() { buf['readInt' + bits + 'LE'](0); }, - RangeError, - 'readInt' + bits + 'LE()'); -}); - -[16, 32].forEach(function(bits) { - var buf = Buffer.from([0xFF, 0xFF, 0xFF, 0xFF]); - - assert.equal(buf['readUInt' + bits + 'BE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readUInt' + bits + 'LE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'BE'](0), - (0xFFFFFFFF >> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'LE'](0), - (0xFFFFFFFF >> (32 - bits))); -}); - -// test for common read(U)IntLE/BE -{ - var buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]); - - assert.strictEqual(buf.readUIntLE(0, 1), 0x01); - assert.strictEqual(buf.readUIntBE(0, 1), 0x01); - assert.strictEqual(buf.readUIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readUIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readUIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readUIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readUIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readUIntBE(0, 6), 0x010203040506); - assert.strictEqual(buf.readIntLE(0, 1), 0x01); - assert.strictEqual(buf.readIntBE(0, 1), 0x01); - assert.strictEqual(buf.readIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readIntBE(0, 6), 0x010203040506); -} - -// test for common write(U)IntLE/BE -{ - var buf = Buffer.allocUnsafe(3); - buf.writeUIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeUIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readUIntBE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readIntBE(0, 3), 0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]); - assert.equal(buf.readIntBE(0, 3), -0x123456); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0xcc, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123400); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcc, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x123400); - - buf = Buffer.allocUnsafe(3); - buf.writeIntLE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0xee]); - assert.equal(buf.readIntLE(0, 3), -0x120000); - - buf = Buffer.allocUnsafe(3); - buf.writeIntBE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xee, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x120000); - - buf = Buffer.allocUnsafe(5); - buf.writeUIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeUIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readUIntBE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readIntBE(0, 5), 0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntLE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 5), -0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntBE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]); - assert.equal(buf.readIntBE(0, 5), -0x1234567890); - - buf = Buffer.allocUnsafe(5); - buf.writeIntLE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0x00, 0xee, 0xff]); - assert.equal(buf.readIntLE(0, 5), -0x0012000000); - - buf = Buffer.allocUnsafe(5); - buf.writeIntBE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xff, 0xee, 0x00, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 5), -0x0012000000); -} - -// test Buffer slice -{ - var buf = Buffer.from('0123456789'); - assert.equal(buf.slice(-10, 10), '0123456789'); - assert.equal(buf.slice(-20, 10), '0123456789'); - assert.equal(buf.slice(-20, -10), ''); - assert.equal(buf.slice(), '0123456789'); - assert.equal(buf.slice(0), '0123456789'); - assert.equal(buf.slice(0, 0), ''); - assert.equal(buf.slice(undefined), '0123456789'); - assert.equal(buf.slice('foobar'), '0123456789'); - assert.equal(buf.slice(undefined, undefined), '0123456789'); - - assert.equal(buf.slice(2), '23456789'); - assert.equal(buf.slice(5), '56789'); - assert.equal(buf.slice(10), ''); - assert.equal(buf.slice(5, 8), '567'); - assert.equal(buf.slice(8, -1), '8'); - assert.equal(buf.slice(-10), '0123456789'); - assert.equal(buf.slice(0, -9), '0'); - assert.equal(buf.slice(0, -10), ''); - assert.equal(buf.slice(0, -1), '012345678'); - assert.equal(buf.slice(2, -2), '234567'); - assert.equal(buf.slice(0, 65536), '0123456789'); - assert.equal(buf.slice(65536, 0), ''); - assert.equal(buf.slice(-5, -8), ''); - assert.equal(buf.slice(-5, -3), '56'); - assert.equal(buf.slice(-10, 10), '0123456789'); - for (var i = 0, s = buf.toString(); i < buf.length; ++i) { - assert.equal(buf.slice(i), s.slice(i)); - assert.equal(buf.slice(0, i), s.slice(0, i)); - assert.equal(buf.slice(-i), s.slice(-i)); - assert.equal(buf.slice(0, -i), s.slice(0, -i)); - } - - var utf16Buf = Buffer.from('0123456789', 'utf16le'); - // assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer.from('012', 'utf16le')); - - assert.equal(buf.slice('0', '1'), '0'); - assert.equal(buf.slice('-5', '10'), '56789'); - assert.equal(buf.slice('-10', '10'), '0123456789'); - assert.equal(buf.slice('-10', '-5'), '01234'); - assert.equal(buf.slice('-10', '-0'), ''); - assert.equal(buf.slice('111'), ''); - assert.equal(buf.slice('0', '-111'), ''); - - // try to slice a zero length Buffer - // see https://github.com/joyent/node/issues/5881 - Buffer.alloc(0).slice(0, 1); -} - -// Regression test for #5482: should throw but not assert in C++ land. -assert.throws(function() { - Buffer.from('', 'buffer'); -}, TypeError); - -// Regression test for #6111. Constructing a buffer from another buffer -// should a) work, and b) not corrupt the source buffer. -{ - var a = [0]; - for (var i = 0; i < 7; ++i) a = a.concat(a); - a = a.map(function(_, i) { return i; }); - var b = Buffer.from(a); - var c = Buffer.from(b); - assert.strictEqual(b.length, a.length); - assert.strictEqual(c.length, a.length); - for (var i = 0, k = a.length; i < k; ++i) { - assert.strictEqual(a[i], i); - assert.strictEqual(b[i], i); - assert.strictEqual(c[i], i); - } -} - - -assert.throws(function() { - Buffer.allocUnsafe((-1 >>> 0) + 1); -}, RangeError); - -assert.throws(function() { - Buffer.allocUnsafeSlow((-1 >>> 0) + 1); -}, RangeError); - -if (common.hasCrypto) { - // Test truncation after decode - var crypto = require('crypto'); - - var b1 = Buffer.from('YW55=======', 'base64'); - var b2 = Buffer.from('YW55', 'base64'); - - assert.equal( - crypto.createHash('sha1').update(b1).digest('hex'), - crypto.createHash('sha1').update(b2).digest('hex') - ); -} else { - common.skip('missing crypto'); -} - -// Test Compare -{ - var b = Buffer.alloc(1, 'a'); - var c = Buffer.alloc(1, 'c'); - var d = Buffer.alloc(2, 'aa'); - - assert.equal(b.compare(c), -1); - assert.equal(c.compare(d), 1); - assert.equal(d.compare(b), 1); - assert.equal(b.compare(d), -1); - assert.equal(b.compare(b), 0); - - assert.equal(Buffer.compare(b, c), -1); - assert.equal(Buffer.compare(c, d), 1); - assert.equal(Buffer.compare(d, b), 1); - assert.equal(Buffer.compare(b, d), -1); - assert.equal(Buffer.compare(c, c), 0); - - assert.equal(Buffer.compare(Buffer.alloc(0), Buffer.alloc(0)), 0); - assert.equal(Buffer.compare(Buffer.alloc(0), Buffer.alloc(1)), -1); - assert.equal(Buffer.compare(Buffer.alloc(1), Buffer.alloc(0)), 1); -} - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - Buffer.compare(b, 'abc'); -}); - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - Buffer.compare('abc', b); -}); - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - b.compare('abc'); -}); - -// Test Equals -{ - var b = Buffer.alloc(5, 'abcdf'); - var c = Buffer.alloc(5, 'abcdf'); - var d = Buffer.alloc(5, 'abcde'); - var e = Buffer.alloc(6, 'abcdef'); - - assert.ok(b.equals(c)); - assert.ok(!c.equals(d)); - assert.ok(!d.equals(e)); - assert.ok(d.equals(d)); -} - -assert.throws(function() { - var b = Buffer.allocUnsafe(1); - b.equals('abc'); -}); - -// Regression test for https://github.com/nodejs/node/issues/649. -assert.throws(() => { Buffer.allocUnsafe(1422561062959).toString('utf8');}); - -var ps = Buffer.poolSize; -Buffer.poolSize = 0; -assert.equal(Buffer.allocUnsafe(1).parent, undefined); -Buffer.poolSize = ps; - -// Test Buffer.copy() segfault -assert.throws(function() { - Buffer.allocUnsafe(10).copy(); -}); - -var regErrorMsg = new RegExp('First argument must be a string, Buffer, ' + - 'ArrayBuffer, Array, or array-like object.'); - -assert.throws(function() { - Buffer.from(); -}, regErrorMsg); - -assert.throws(function() { - Buffer.from(null); -}, regErrorMsg); - - -// Test that ParseArrayIndex handles full uint32 -assert.throws(function() { - Buffer.from(new ArrayBuffer(0), -1 >>> 0); -}, /RangeError: 'offset' is out of bounds/); - -// ParseArrayIndex() should reject values that don't fit in a 32 bits size_t. -assert.throws(() => { - var a = Buffer(1).fill(0); - var b = Buffer(1).fill(0); - a.copy(b, 0, 0x100000000, 0x100000001); -}), /out of range index/; - -// Unpooled buffer (replaces SlowBuffer) -var ubuf = Buffer.allocUnsafeSlow(10); -assert(ubuf); -assert(ubuf.buffer); -assert.equal(ubuf.buffer.byteLength, 10); - -// Regression test -assert.doesNotThrow(() => { - Buffer.from(new ArrayBuffer()); -}); - -assert.throws(() => Buffer.alloc(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer.alloc(-100), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafe(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafe(-100), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafeSlow(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer.allocUnsafeSlow(-100), - '"size" argument must not be negative'); - -assert.throws(() => Buffer.alloc({ valueOf: () => 1 }), - /"size" argument must be a number/); -assert.throws(() => Buffer.alloc({ valueOf: () => -1 }), - /"size" argument must be a number/); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js deleted file mode 100644 index a418752..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-arraybuffer.js +++ /dev/null @@ -1,112 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -var Buffer = require('../../').Buffer; -var LENGTH = 16; - -var ab = new ArrayBuffer(LENGTH); -var dv = new DataView(ab); -var ui = new Uint8Array(ab); -var buf = Buffer.from(ab); - - -assert.ok(buf instanceof Buffer); -// For backwards compatibility of old .parent property test that if buf is not -// a slice then .parent should be undefined. -assert.equal(buf.parent, undefined); -assert.equal(buf.buffer, ab); -assert.equal(buf.length, ab.byteLength); - - -buf.fill(0xC); -for (var i = 0; i < LENGTH; i++) { - assert.equal(ui[i], 0xC); - ui[i] = 0xF; - assert.equal(buf[i], 0xF); -} - -buf.writeUInt32LE(0xF00, 0); -buf.writeUInt32BE(0xB47, 4); -buf.writeDoubleLE(3.1415, 8); - -assert.equal(dv.getUint32(0, true), 0xF00); -assert.equal(dv.getUint32(4), 0xB47); -assert.equal(dv.getFloat64(8, true), 3.1415); - - -// Now test protecting users from doing stupid things - -assert.throws(function() { - function AB() { } - Object.setPrototypeOf(AB, ArrayBuffer); - Object.setPrototypeOf(AB.prototype, ArrayBuffer.prototype); - Buffer.from(new AB()); -}, TypeError); - -// write{Double,Float}{LE,BE} with noAssert should not crash, cf. #3766 -var b = Buffer.allocUnsafe(1); -b.writeFloatLE(11.11, 0, true); -b.writeFloatBE(11.11, 0, true); -b.writeDoubleLE(11.11, 0, true); -b.writeDoubleBE(11.11, 0, true); - -// Test the byteOffset and length arguments -{ - var ab = new Uint8Array(5); - ab[0] = 1; - ab[1] = 2; - ab[2] = 3; - ab[3] = 4; - ab[4] = 5; - var buf = Buffer.from(ab.buffer, 1, 3); - assert.equal(buf.length, 3); - assert.equal(buf[0], 2); - assert.equal(buf[1], 3); - assert.equal(buf[2], 4); - buf[0] = 9; - assert.equal(ab[1], 9); - - assert.throws(() => Buffer.from(ab.buffer, 6), (err) => { - assert(err instanceof RangeError); - assert(/'offset' is out of bounds/.test(err.message)); - return true; - }); - assert.throws(() => Buffer.from(ab.buffer, 3, 6), (err) => { - assert(err instanceof RangeError); - assert(/'length' is out of bounds/.test(err.message)); - return true; - }); -} - -// Test the deprecated Buffer() version also -{ - var ab = new Uint8Array(5); - ab[0] = 1; - ab[1] = 2; - ab[2] = 3; - ab[3] = 4; - ab[4] = 5; - var buf = Buffer(ab.buffer, 1, 3); - assert.equal(buf.length, 3); - assert.equal(buf[0], 2); - assert.equal(buf[1], 3); - assert.equal(buf[2], 4); - buf[0] = 9; - assert.equal(ab[1], 9); - - assert.throws(() => Buffer(ab.buffer, 6), (err) => { - assert(err instanceof RangeError); - assert(/'offset' is out of bounds/.test(err.message)); - return true; - }); - assert.throws(() => Buffer(ab.buffer, 3, 6), (err) => { - assert(err instanceof RangeError); - assert(/'length' is out of bounds/.test(err.message)); - return true; - }); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js deleted file mode 100644 index 4a06098..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-ascii.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -// ASCII conversion in node.js simply masks off the high bits, -// it doesn't do transliteration. -assert.equal(Buffer.from('hérité').toString('ascii'), 'hC)ritC)'); - -// 71 characters, 78 bytes. The ’ character is a triple-byte sequence. -var input = 'C’est, graphiquement, la réunion d’un accent aigu ' + - 'et d’un accent grave.'; - -var expected = 'Cb\u0000\u0019est, graphiquement, la rC)union ' + - 'db\u0000\u0019un accent aigu et db\u0000\u0019un ' + - 'accent grave.'; - -var buf = Buffer.from(input); - -for (var i = 0; i < expected.length; ++i) { - assert.equal(buf.slice(i).toString('ascii'), expected.slice(i)); - - // Skip remainder of multi-byte sequence. - if (input.charCodeAt(i) > 65535) ++i; - if (input.charCodeAt(i) > 127) ++i; -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js deleted file mode 100644 index 282227d..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bad-overload.js +++ /dev/null @@ -1,18 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -assert.doesNotThrow(function() { - Buffer.allocUnsafe(10); -}); - -assert.throws(function() { - Buffer.from(10, 'hex'); -}); - -assert.doesNotThrow(function() { - Buffer.from('deadbeaf', 'hex'); -}); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js deleted file mode 100644 index fd7851d..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-badhex.js +++ /dev/null @@ -1,46 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); -var Buffer = require('../../').Buffer; - -// Test hex strings and bad hex strings -{ - var buf1 = Buffer.alloc(4); - assert.strictEqual(buf1.length, 4); - assert.deepStrictEqual(buf1, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf1.write('abcdxx', 0, 'hex'), 2); - assert.deepStrictEqual(buf1, new Buffer([0xab, 0xcd, 0x00, 0x00])); - assert.strictEqual(buf1.toString('hex'), 'abcd0000'); - assert.strictEqual(buf1.write('abcdef01', 0, 'hex'), 4); - assert.deepStrictEqual(buf1, new Buffer([0xab, 0xcd, 0xef, 0x01])); - assert.strictEqual(buf1.toString('hex'), 'abcdef01'); - - var buf2 = Buffer.from(buf1.toString('hex'), 'hex'); - assert.strictEqual(buf1.toString('hex'), buf2.toString('hex')); - - var buf3 = Buffer.alloc(5); - assert.strictEqual(buf3.write('abcdxx', 1, 'hex'), 2); - assert.strictEqual(buf3.toString('hex'), '00abcd0000'); - - var buf4 = Buffer.alloc(4); - assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf4.write('xxabcd', 0, 'hex'), 0); - assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf4.write('xxab', 1, 'hex'), 0); - assert.deepStrictEqual(buf4, new Buffer([0, 0, 0, 0])); - assert.strictEqual(buf4.write('cdxxab', 0, 'hex'), 1); - assert.deepStrictEqual(buf4, new Buffer([0xcd, 0, 0, 0])); - - var buf5 = Buffer.alloc(256); - for (var i = 0; i < 256; i++) - buf5[i] = i; - - var hex = buf5.toString('hex'); - assert.deepStrictEqual(Buffer.from(hex, 'hex'), buf5); - - var badHex = hex.slice(0, 256) + 'xx' + hex.slice(256, 510); - assert.deepStrictEqual(Buffer.from(badHex, 'hex'), buf5.slice(0, 128)); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js deleted file mode 100644 index 8d7dc35..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-bytelength.js +++ /dev/null @@ -1,90 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); -var Buffer = require('../../').Buffer; -var SlowBuffer = require('../../').SlowBuffer; - -// coerce values to string -assert.equal(Buffer.byteLength(32, 'latin1'), 2); -assert.equal(Buffer.byteLength(NaN, 'utf8'), 3); -assert.equal(Buffer.byteLength({}, 'latin1'), 15); -assert.equal(Buffer.byteLength(), 9); - -var buff = new Buffer(10); -assert(ArrayBuffer.isView(buff)); -var slowbuff = new SlowBuffer(10); -assert(ArrayBuffer.isView(slowbuff)); - -// buffer -var incomplete = Buffer.from([0xe4, 0xb8, 0xad, 0xe6, 0x96]); -assert.equal(Buffer.byteLength(incomplete), 5); -var ascii = Buffer.from('abc'); -assert.equal(Buffer.byteLength(ascii), 3); - -// ArrayBuffer -var buffer = new ArrayBuffer(8); -assert.equal(Buffer.byteLength(buffer), 8); - -// TypedArray -var int8 = new Int8Array(8); -assert.equal(Buffer.byteLength(int8), 8); -var uint8 = new Uint8Array(8); -assert.equal(Buffer.byteLength(uint8), 8); -var uintc8 = new Uint8ClampedArray(2); -assert.equal(Buffer.byteLength(uintc8), 2); -var int16 = new Int16Array(8); -assert.equal(Buffer.byteLength(int16), 16); -var uint16 = new Uint16Array(8); -assert.equal(Buffer.byteLength(uint16), 16); -var int32 = new Int32Array(8); -assert.equal(Buffer.byteLength(int32), 32); -var uint32 = new Uint32Array(8); -assert.equal(Buffer.byteLength(uint32), 32); -var float32 = new Float32Array(8); -assert.equal(Buffer.byteLength(float32), 32); -var float64 = new Float64Array(8); -assert.equal(Buffer.byteLength(float64), 64); - -// DataView -var dv = new DataView(new ArrayBuffer(2)); -assert.equal(Buffer.byteLength(dv), 2); - -// special case: zero length string -assert.equal(Buffer.byteLength('', 'ascii'), 0); -assert.equal(Buffer.byteLength('', 'HeX'), 0); - -// utf8 -assert.equal(Buffer.byteLength('∑éllö wørl∂!', 'utf-8'), 19); -assert.equal(Buffer.byteLength('κλμνξο', 'utf8'), 12); -assert.equal(Buffer.byteLength('挵挶挷挸挹', 'utf-8'), 15); -assert.equal(Buffer.byteLength('ð ¹ð ±“𠱸', 'UTF8'), 12); -// without an encoding, utf8 should be assumed -assert.equal(Buffer.byteLength('hey there'), 9); -assert.equal(Buffer.byteLength('𠱸挶νξ#xx :)'), 17); -assert.equal(Buffer.byteLength('hello world', ''), 11); -// it should also be assumed with unrecognized encoding -assert.equal(Buffer.byteLength('hello world', 'abc'), 11); -assert.equal(Buffer.byteLength('ßœ∑≈', 'unkn0wn enc0ding'), 10); - -// base64 -assert.equal(Buffer.byteLength('aGVsbG8gd29ybGQ=', 'base64'), 11); -assert.equal(Buffer.byteLength('bm9kZS5qcyByb2NrcyE=', 'base64'), 14); -assert.equal(Buffer.byteLength('aGkk', 'base64'), 3); -assert.equal(Buffer.byteLength('bHNrZGZsa3NqZmtsc2xrZmFqc2RsZmtqcw==', - 'base64'), 25); -// special padding -assert.equal(Buffer.byteLength('aaa=', 'base64'), 2); -assert.equal(Buffer.byteLength('aaaa==', 'base64'), 3); - -assert.equal(Buffer.byteLength('Il était tué'), 14); -assert.equal(Buffer.byteLength('Il était tué', 'utf8'), 14); -assert.equal(Buffer.byteLength('Il était tué', 'ascii'), 12); -assert.equal(Buffer.byteLength('Il était tué', 'latin1'), 12); -assert.equal(Buffer.byteLength('Il était tué', 'binary'), 12); -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - assert.equal(24, Buffer.byteLength('Il était tué', encoding)); -}); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js deleted file mode 100644 index f1984ed..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-compare-offset.js +++ /dev/null @@ -1,66 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -var a = Buffer.from([1, 2, 3, 4, 5, 6, 7, 8, 9, 0]); -var b = Buffer.from([5, 6, 7, 8, 9, 0, 1, 2, 3, 4]); - -assert.equal(-1, a.compare(b)); - -// Equivalent to a.compare(b). -assert.equal(-1, a.compare(b, 0)); -assert.equal(-1, a.compare(b, '0')); - -// Equivalent to a.compare(b). -assert.equal(-1, a.compare(b, 0, undefined, 0)); - -// Zero-length targer, return 1 -assert.equal(1, a.compare(b, 0, 0, 0)); -assert.equal(1, a.compare(b, '0', '0', '0')); - -// Equivalent to Buffer.compare(a, b.slice(6, 10)) -assert.equal(1, a.compare(b, 6, 10)); - -// Zero-length source, return -1 -assert.equal(-1, a.compare(b, 6, 10, 0, 0)); - -// Equivalent to Buffer.compare(a.slice(4), b.slice(0, 5)) -assert.equal(1, a.compare(b, 0, 5, 4)); - -// Equivalent to Buffer.compare(a.slice(1), b.slice(5)) -assert.equal(1, a.compare(b, 5, undefined, 1)); - -// Equivalent to Buffer.compare(a.slice(2), b.slice(2, 4)) -assert.equal(-1, a.compare(b, 2, 4, 2)); - -// Equivalent to Buffer.compare(a.slice(4), b.slice(0, 7)) -assert.equal(-1, a.compare(b, 0, 7, 4)); - -// Equivalent to Buffer.compare(a.slice(4, 6), b.slice(0, 7)); -assert.equal(-1, a.compare(b, 0, 7, 4, 6)); - -// zero length target -assert.equal(1, a.compare(b, 0, null)); - -// coerces to targetEnd == 5 -assert.equal(-1, a.compare(b, 0, {valueOf: () => 5})); - -// zero length target -assert.equal(1, a.compare(b, Infinity, -Infinity)); - -// zero length target because default for targetEnd <= targetSource -assert.equal(1, a.compare(b, '0xff')); - -var oor = /out of range index/; - -assert.throws(() => a.compare(b, 0, 100, 0), oor); -assert.throws(() => a.compare(b, 0, 1, 0, 100), oor); -assert.throws(() => a.compare(b, -1), oor); -assert.throws(() => a.compare(b, 0, '0xff'), oor); -assert.throws(() => a.compare(b, 0, Infinity), oor); -assert.throws(() => a.compare(b, -Infinity, Infinity), oor); -assert.throws(() => a.compare(), /Argument must be a Buffer/); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js deleted file mode 100644 index c0dc4da..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-concat.js +++ /dev/null @@ -1,40 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var zero = []; -var one = [ Buffer.from('asdf') ]; -var long = []; -for (var i = 0; i < 10; i++) long.push(Buffer.from('asdf')); - -var flatZero = Buffer.concat(zero); -var flatOne = Buffer.concat(one); -var flatLong = Buffer.concat(long); -var flatLongLen = Buffer.concat(long, 40); - -assert(flatZero.length === 0); -assert(flatOne.toString() === 'asdf'); -// A special case where concat used to return the first item, -// if the length is one. This check is to make sure that we don't do that. -assert(flatOne !== one[0]); -assert(flatLong.toString() === (new Array(10 + 1).join('asdf'))); -assert(flatLongLen.toString() === (new Array(10 + 1).join('asdf'))); - -assertWrongList(); -assertWrongList(null); -assertWrongList(Buffer.from('hello')); -assertWrongList([42]); -assertWrongList(['hello', 'world']); -assertWrongList(['hello', Buffer.from('world')]); - -function assertWrongList(value) { - assert.throws(function() { - Buffer.concat(value); - }, function(err) { - return err instanceof TypeError && - err.message === '"list" argument must be an Array of Buffers'; - }); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js deleted file mode 100644 index 7138094..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-fill.js +++ /dev/null @@ -1,272 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); -var os = require('os'); -var SIZE = 28; - -var buf1 = Buffer.allocUnsafe(SIZE); -var buf2 = Buffer.allocUnsafe(SIZE); - - -// Default encoding -testBufs('abc'); -testBufs('\u0222aa'); -testBufs('a\u0234b\u0235c\u0236'); -testBufs('abc', 4); -testBufs('abc', 5); -testBufs('abc', SIZE); -testBufs('\u0222aa', 2); -testBufs('\u0222aa', 8); -testBufs('a\u0234b\u0235c\u0236', 4); -testBufs('a\u0234b\u0235c\u0236', 12); -testBufs('abc', 4, -1); -testBufs('abc', 4, 1); -testBufs('abc', 5, 1); -testBufs('\u0222aa', 2, -1); -testBufs('\u0222aa', 8, 1); -testBufs('a\u0234b\u0235c\u0236', 4, -1); -testBufs('a\u0234b\u0235c\u0236', 4, 1); -testBufs('a\u0234b\u0235c\u0236', 12, 1); - - -// UTF8 -testBufs('abc', 'utf8'); -testBufs('\u0222aa', 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 'utf8'); -testBufs('abc', 4, 'utf8'); -testBufs('abc', 5, 'utf8'); -testBufs('abc', SIZE, 'utf8'); -testBufs('\u0222aa', 2, 'utf8'); -testBufs('\u0222aa', 8, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 4, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 12, 'utf8'); -testBufs('abc', 4, -1, 'utf8'); -testBufs('abc', 4, 1, 'utf8'); -testBufs('abc', 5, 1, 'utf8'); -testBufs('\u0222aa', 2, -1, 'utf8'); -testBufs('\u0222aa', 8, 1, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'utf8'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'utf8'); -assert.equal(Buffer.allocUnsafe(1).fill(0).fill('\u0222')[0], 0xc8); - - -// BINARY -testBufs('abc', 'binary'); -testBufs('\u0222aa', 'binary'); -testBufs('a\u0234b\u0235c\u0236', 'binary'); -testBufs('abc', 4, 'binary'); -testBufs('abc', 5, 'binary'); -testBufs('abc', SIZE, 'binary'); -testBufs('\u0222aa', 2, 'binary'); -testBufs('\u0222aa', 8, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 4, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 12, 'binary'); -testBufs('abc', 4, -1, 'binary'); -testBufs('abc', 4, 1, 'binary'); -testBufs('abc', 5, 1, 'binary'); -testBufs('\u0222aa', 2, -1, 'binary'); -testBufs('\u0222aa', 8, 1, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'binary'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'binary'); - - -// LATIN1 -testBufs('abc', 'latin1'); -testBufs('\u0222aa', 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 'latin1'); -testBufs('abc', 4, 'latin1'); -testBufs('abc', 5, 'latin1'); -testBufs('abc', SIZE, 'latin1'); -testBufs('\u0222aa', 2, 'latin1'); -testBufs('\u0222aa', 8, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 4, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 12, 'latin1'); -testBufs('abc', 4, -1, 'latin1'); -testBufs('abc', 4, 1, 'latin1'); -testBufs('abc', 5, 1, 'latin1'); -testBufs('\u0222aa', 2, -1, 'latin1'); -testBufs('\u0222aa', 8, 1, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'latin1'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'latin1'); - - -// UCS2 -testBufs('abc', 'ucs2'); -testBufs('\u0222aa', 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 'ucs2'); -testBufs('abc', 4, 'ucs2'); -testBufs('abc', SIZE, 'ucs2'); -testBufs('\u0222aa', 2, 'ucs2'); -testBufs('\u0222aa', 8, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 4, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 12, 'ucs2'); -testBufs('abc', 4, -1, 'ucs2'); -testBufs('abc', 4, 1, 'ucs2'); -testBufs('abc', 5, 1, 'ucs2'); -testBufs('\u0222aa', 2, -1, 'ucs2'); -testBufs('\u0222aa', 8, 1, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 4, -1, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 4, 1, 'ucs2'); -testBufs('a\u0234b\u0235c\u0236', 12, 1, 'ucs2'); -assert.equal(Buffer.allocUnsafe(1).fill('\u0222', 'ucs2')[0], - os.endianness() === 'LE' ? 0x22 : 0x02); - - -// HEX -testBufs('616263', 'hex'); -testBufs('c8a26161', 'hex'); -testBufs('61c8b462c8b563c8b6', 'hex'); -testBufs('616263', 4, 'hex'); -testBufs('616263', 5, 'hex'); -testBufs('616263', SIZE, 'hex'); -testBufs('c8a26161', 2, 'hex'); -testBufs('c8a26161', 8, 'hex'); -testBufs('61c8b462c8b563c8b6', 4, 'hex'); -testBufs('61c8b462c8b563c8b6', 12, 'hex'); -testBufs('616263', 4, -1, 'hex'); -testBufs('616263', 4, 1, 'hex'); -testBufs('616263', 5, 1, 'hex'); -testBufs('c8a26161', 2, -1, 'hex'); -testBufs('c8a26161', 8, 1, 'hex'); -testBufs('61c8b462c8b563c8b6', 4, -1, 'hex'); -testBufs('61c8b462c8b563c8b6', 4, 1, 'hex'); -testBufs('61c8b462c8b563c8b6', 12, 1, 'hex'); -// Make sure this operation doesn't go on forever -buf1.fill('yKJh', 'hex'); -assert.throws(() => buf1.fill('\u0222', 'hex')); - - -// BASE64 -testBufs('YWJj', 'ucs2'); -testBufs('yKJhYQ==', 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 'ucs2'); -testBufs('YWJj', 4, 'ucs2'); -testBufs('YWJj', SIZE, 'ucs2'); -testBufs('yKJhYQ==', 2, 'ucs2'); -testBufs('yKJhYQ==', 8, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 4, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 12, 'ucs2'); -testBufs('YWJj', 4, -1, 'ucs2'); -testBufs('YWJj', 4, 1, 'ucs2'); -testBufs('YWJj', 5, 1, 'ucs2'); -testBufs('yKJhYQ==', 2, -1, 'ucs2'); -testBufs('yKJhYQ==', 8, 1, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 4, -1, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 4, 1, 'ucs2'); -testBufs('Yci0Ysi1Y8i2', 12, 1, 'ucs2'); - - -// Buffer -function deepStrictEqualValues(buf, arr) { - for (var [index, value] of buf.entries()) { - assert.deepStrictEqual(value, arr[index]); - } -} - - -var buf2Fill = Buffer.allocUnsafe(1).fill(2); -deepStrictEqualValues(genBuffer(4, [buf2Fill]), [2, 2, 2, 2]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1]), [0, 2, 2, 2]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, 3]), [0, 2, 2, 0]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, 1]), [0, 0, 0, 0]); -deepStrictEqualValues(genBuffer(4, [buf2Fill, 1, -1]), [0, 0, 0, 0]); -var hexBufFill = Buffer.allocUnsafe(2).fill(0).fill('0102', 'hex'); -deepStrictEqualValues(genBuffer(4, [hexBufFill]), [1, 2, 1, 2]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1]), [0, 1, 2, 1]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, 3]), [0, 1, 2, 0]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, 1]), [0, 0, 0, 0]); -deepStrictEqualValues(genBuffer(4, [hexBufFill, 1, -1]), [0, 0, 0, 0]); - - -// Check exceptions -assert.throws(() => buf1.fill(0, -1)); -assert.throws(() => buf1.fill(0, 0, buf1.length + 1)); -assert.throws(() => buf1.fill('', -1)); -assert.throws(() => buf1.fill('', 0, buf1.length + 1)); -assert.throws(() => buf1.fill('a', 0, buf1.length, 'node rocks!')); -assert.throws(() => buf1.fill('a', 0, 0, NaN)); -assert.throws(() => buf1.fill('a', 0, 0, null)); -assert.throws(() => buf1.fill('a', 0, 0, 'foo')); - - -function genBuffer(size, args) { - var b = Buffer.allocUnsafe(size); - return b.fill(0).fill.apply(b, args); -} - - -function bufReset() { - buf1.fill(0); - buf2.fill(0); -} - - -// This is mostly accurate. Except write() won't write partial bytes to the -// string while fill() blindly copies bytes into memory. To account for that an -// error will be thrown if not all the data can be written, and the SIZE has -// been massaged to work with the input characters. -function writeToFill(string, offset, end, encoding) { - if (typeof offset === 'string') { - encoding = offset; - offset = 0; - end = buf2.length; - } else if (typeof end === 'string') { - encoding = end; - end = buf2.length; - } else if (end === undefined) { - end = buf2.length; - } - - if (offset < 0 || end > buf2.length) - throw new RangeError('Out of range index'); - - if (end <= offset) - return buf2; - - offset >>>= 0; - end >>>= 0; - assert(offset <= buf2.length); - - // Convert "end" to "length" (which write understands). - var length = end - offset < 0 ? 0 : end - offset; - - var wasZero = false; - do { - var written = buf2.write(string, offset, length, encoding); - offset += written; - // Safety check in case write falls into infinite loop. - if (written === 0) { - if (wasZero) - throw new Error('Could not write all data to Buffer'); - else - wasZero = true; - } - } while (offset < buf2.length); - - // Correction for UCS2 operations. - if (os.endianness() === 'BE' && encoding === 'ucs2') { - for (var i = 0; i < buf2.length; i += 2) { - var tmp = buf2[i]; - buf2[i] = buf2[i + 1]; - buf2[i + 1] = tmp; - } - } - - return buf2; -} - - -function testBufs(string, offset, length, encoding) { - bufReset(); - buf1.fill.apply(buf1, arguments); - // Swap bytes on BE archs for ucs2 encoding. - assert.deepStrictEqual(buf1.fill.apply(buf1, arguments), - writeToFill.apply(null, arguments)); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js deleted file mode 100644 index 2096a34..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-includes.js +++ /dev/null @@ -1,305 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var Buffer = require('../../').Buffer; - -var b = Buffer.from('abcdef'); -var buf_a = Buffer.from('a'); -var buf_bc = Buffer.from('bc'); -var buf_f = Buffer.from('f'); -var buf_z = Buffer.from('z'); -var buf_empty = Buffer.from(''); - -assert(b.includes('a')); -assert(!b.includes('a', 1)); -assert(!b.includes('a', -1)); -assert(!b.includes('a', -4)); -assert(b.includes('a', -b.length)); -assert(b.includes('a', NaN)); -assert(b.includes('a', -Infinity)); -assert(!b.includes('a', Infinity)); -assert(b.includes('bc')); -assert(!b.includes('bc', 2)); -assert(!b.includes('bc', -1)); -assert(!b.includes('bc', -3)); -assert(b.includes('bc', -5)); -assert(b.includes('bc', NaN)); -assert(b.includes('bc', -Infinity)); -assert(!b.includes('bc', Infinity)); -assert(b.includes('f'), b.length - 1); -assert(!b.includes('z')); -assert(!b.includes('')); -assert(!b.includes('', 1)); -assert(!b.includes('', b.length + 1)); -assert(!b.includes('', Infinity)); -assert(b.includes(buf_a)); -assert(!b.includes(buf_a, 1)); -assert(!b.includes(buf_a, -1)); -assert(!b.includes(buf_a, -4)); -assert(b.includes(buf_a, -b.length)); -assert(b.includes(buf_a, NaN)); -assert(b.includes(buf_a, -Infinity)); -assert(!b.includes(buf_a, Infinity)); -assert(b.includes(buf_bc)); -assert(!b.includes(buf_bc, 2)); -assert(!b.includes(buf_bc, -1)); -assert(!b.includes(buf_bc, -3)); -assert(b.includes(buf_bc, -5)); -assert(b.includes(buf_bc, NaN)); -assert(b.includes(buf_bc, -Infinity)); -assert(!b.includes(buf_bc, Infinity)); -assert(b.includes(buf_f), b.length - 1); -assert(!b.includes(buf_z)); -assert(!b.includes(buf_empty)); -assert(!b.includes(buf_empty, 1)); -assert(!b.includes(buf_empty, b.length + 1)); -assert(!b.includes(buf_empty, Infinity)); -assert(b.includes(0x61)); -assert(!b.includes(0x61, 1)); -assert(!b.includes(0x61, -1)); -assert(!b.includes(0x61, -4)); -assert(b.includes(0x61, -b.length)); -assert(b.includes(0x61, NaN)); -assert(b.includes(0x61, -Infinity)); -assert(!b.includes(0x61, Infinity)); -assert(!b.includes(0x0)); - -// test offsets -assert(b.includes('d', 2)); -assert(b.includes('f', 5)); -assert(b.includes('f', -1)); -assert(!b.includes('f', 6)); - -assert(b.includes(Buffer.from('d'), 2)); -assert(b.includes(Buffer.from('f'), 5)); -assert(b.includes(Buffer.from('f'), -1)); -assert(!b.includes(Buffer.from('f'), 6)); - -assert(!Buffer.from('ff').includes(Buffer.from('f'), 1, 'ucs2')); - -// test hex encoding -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .includes('64', 0, 'hex'), - true -); -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .includes(Buffer.from('64', 'hex'), 0, 'hex'), - true -); - -// test base64 encoding -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .includes('ZA==', 0, 'base64'), - true -); -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .includes(Buffer.from('ZA==', 'base64'), 0, 'base64'), - true -); - -// test ascii encoding -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .includes('d', 0, 'ascii'), - true -); -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .includes(Buffer.from('d', 'ascii'), 0, 'ascii'), - true -); - -// test latin1 encoding -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .includes('d', 0, 'latin1'), - true -); -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .includes(Buffer.from('d', 'latin1'), 0, 'latin1'), - true -); - -// test binary encoding -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .includes('d', 0, 'binary'), - true -); -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .includes(Buffer.from('d', 'binary'), 0, 'binary'), - true -); - - -// test usc2 encoding -var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - -assert(twoByteString.includes('\u0395', 4, 'ucs2')); -assert(twoByteString.includes('\u03a3', -4, 'ucs2')); -assert(twoByteString.includes('\u03a3', -6, 'ucs2')); -assert(twoByteString.includes( - Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')); -assert(!twoByteString.includes('\u03a3', -2, 'ucs2')); - -var mixedByteStringUcs2 = - Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2'); -assert(mixedByteStringUcs2.includes('bc', 0, 'ucs2')); -assert(mixedByteStringUcs2.includes('\u03a3', 0, 'ucs2')); -assert(!mixedByteStringUcs2.includes('\u0396', 0, 'ucs2')); - -assert( - 6, mixedByteStringUcs2.includes(Buffer.from('bc', 'ucs2'), 0, 'ucs2')); -assert( - 10, mixedByteStringUcs2.includes(Buffer.from('\u03a3', 'ucs2'), - 0, 'ucs2')); -assert( - -1, mixedByteStringUcs2.includes(Buffer.from('\u0396', 'ucs2'), - 0, 'ucs2')); - -twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - -// Test single char pattern -assert(twoByteString.includes('\u039a', 0, 'ucs2')); -assert(twoByteString.includes('\u0391', 0, 'ucs2'), 'Alpha'); -assert(twoByteString.includes('\u03a3', 0, 'ucs2'), 'First Sigma'); -assert(twoByteString.includes('\u03a3', 6, 'ucs2'), 'Second Sigma'); -assert(twoByteString.includes('\u0395', 0, 'ucs2'), 'Epsilon'); -assert(!twoByteString.includes('\u0392', 0, 'ucs2'), 'Not beta'); - -// Test multi-char pattern -assert(twoByteString.includes('\u039a\u0391', 0, 'ucs2'), 'Lambda Alpha'); -assert(twoByteString.includes('\u0391\u03a3', 0, 'ucs2'), 'Alpha Sigma'); -assert(twoByteString.includes('\u03a3\u03a3', 0, 'ucs2'), 'Sigma Sigma'); -assert(twoByteString.includes('\u03a3\u0395', 0, 'ucs2'), 'Sigma Epsilon'); - -var mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395'); -assert(mixedByteStringUtf8.includes('bc')); -assert(mixedByteStringUtf8.includes('bc', 5)); -assert(mixedByteStringUtf8.includes('bc', -8)); -assert(mixedByteStringUtf8.includes('\u03a3')); -assert(!mixedByteStringUtf8.includes('\u0396')); - - -// Test complex string includes algorithms. Only trigger for long strings. -// Long string that isn't a simple repeat of a shorter string. -var longString = 'A'; -for (var i = 66; i < 76; i++) { // from 'B' to 'K' - longString = longString + String.fromCharCode(i) + longString; -} - -var longBufferString = Buffer.from(longString); - -// pattern of 15 chars, repeated every 16 chars in long -var pattern = 'ABACABADABACABA'; -for (var i = 0; i < longBufferString.length - pattern.length; i += 7) { - var includes = longBufferString.includes(pattern, i); - assert(includes, 'Long ABACABA...-string at index ' + i); -} -assert(longBufferString.includes('AJABACA'), 'Long AJABACA, First J'); -assert(longBufferString.includes('AJABACA', 511), 'Long AJABACA, Second J'); - -pattern = 'JABACABADABACABA'; -assert(longBufferString.includes(pattern), 'Long JABACABA..., First J'); -assert(longBufferString.includes(pattern, 512), 'Long JABACABA..., Second J'); - -// Search for a non-ASCII string in a pure ASCII string. -var asciiString = Buffer.from( - 'arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf'); -assert(!asciiString.includes('\x2061')); -assert(asciiString.includes('leb', 0)); - -// Search in string containing many non-ASCII chars. -var allCodePoints = []; -for (var i = 0; i < 65536; i++) allCodePoints[i] = i; -var allCharsString = String.fromCharCode.apply(String, allCodePoints); -var allCharsBufferUtf8 = Buffer.from(allCharsString); -var allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2'); - -// Search for string long enough to trigger complex search with ASCII pattern -// and UC16 subject. -assert(!allCharsBufferUtf8.includes('notfound')); -assert(!allCharsBufferUcs2.includes('notfound')); - -// Find substrings in Utf8. -var lengths = [1, 3, 15]; // Single char, simple and complex. -var indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b]; -for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i]; - var length = lengths[lengthIndex]; - - if (index + length > 0x7F) { - length = 2 * length; - } - - if (index + length > 0x7FF) { - length = 3 * length; - } - - if (index + length > 0xFFFF) { - length = 4 * length; - } - - var patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length); - assert(index, allCharsBufferUtf8.includes(patternBufferUtf8)); - - var patternStringUtf8 = patternBufferUtf8.toString(); - assert(index, allCharsBufferUtf8.includes(patternStringUtf8)); - } -} - -// Find substrings in Usc2. -lengths = [2, 4, 16]; // Single char, simple and complex. -indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; -for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i] * 2; - var length = lengths[lengthIndex]; - - var patternBufferUcs2 = - allCharsBufferUcs2.slice(index, index + length); - assert( - index, allCharsBufferUcs2.includes(patternBufferUcs2, 0, 'ucs2')); - - var patternStringUcs2 = patternBufferUcs2.toString('ucs2'); - assert( - index, allCharsBufferUcs2.includes(patternStringUcs2, 0, 'ucs2')); - } -} - -assert.throws(function() { - b.includes(function() { }); -}); -assert.throws(function() { - b.includes({}); -}); -assert.throws(function() { - b.includes([]); -}); - -// test truncation of Number arguments to uint8 -{ - var buf = Buffer.from('this is a test'); - assert.ok(buf.includes(0x6973)); - assert.ok(buf.includes(0x697320)); - assert.ok(buf.includes(0x69732069)); - assert.ok(buf.includes(0x697374657374)); - assert.ok(buf.includes(0x69737374)); - assert.ok(buf.includes(0x69737465)); - assert.ok(buf.includes(0x69737465)); - assert.ok(buf.includes(-140)); - assert.ok(buf.includes(-152)); - assert.ok(!buf.includes(0xff)); - assert.ok(!buf.includes(0xffff)); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js deleted file mode 100644 index 24502c3..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-indexof.js +++ /dev/null @@ -1,523 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var Buffer = require('../../').Buffer; - -var b = Buffer.from('abcdef'); -var buf_a = Buffer.from('a'); -var buf_bc = Buffer.from('bc'); -var buf_f = Buffer.from('f'); -var buf_z = Buffer.from('z'); -var buf_empty = Buffer.from(''); - -assert.equal(b.indexOf('a'), 0); -assert.equal(b.indexOf('a', 1), -1); -assert.equal(b.indexOf('a', -1), -1); -assert.equal(b.indexOf('a', -4), -1); -assert.equal(b.indexOf('a', -b.length), 0); -assert.equal(b.indexOf('a', NaN), 0); -assert.equal(b.indexOf('a', -Infinity), 0); -assert.equal(b.indexOf('a', Infinity), -1); -assert.equal(b.indexOf('bc'), 1); -assert.equal(b.indexOf('bc', 2), -1); -assert.equal(b.indexOf('bc', -1), -1); -assert.equal(b.indexOf('bc', -3), -1); -assert.equal(b.indexOf('bc', -5), 1); -assert.equal(b.indexOf('bc', NaN), 1); -assert.equal(b.indexOf('bc', -Infinity), 1); -assert.equal(b.indexOf('bc', Infinity), -1); -assert.equal(b.indexOf('f'), b.length - 1); -assert.equal(b.indexOf('z'), -1); -assert.equal(b.indexOf(''), -1); -assert.equal(b.indexOf('', 1), -1); -assert.equal(b.indexOf('', b.length + 1), -1); -assert.equal(b.indexOf('', Infinity), -1); -assert.equal(b.indexOf(buf_a), 0); -assert.equal(b.indexOf(buf_a, 1), -1); -assert.equal(b.indexOf(buf_a, -1), -1); -assert.equal(b.indexOf(buf_a, -4), -1); -assert.equal(b.indexOf(buf_a, -b.length), 0); -assert.equal(b.indexOf(buf_a, NaN), 0); -assert.equal(b.indexOf(buf_a, -Infinity), 0); -assert.equal(b.indexOf(buf_a, Infinity), -1); -assert.equal(b.indexOf(buf_bc), 1); -assert.equal(b.indexOf(buf_bc, 2), -1); -assert.equal(b.indexOf(buf_bc, -1), -1); -assert.equal(b.indexOf(buf_bc, -3), -1); -assert.equal(b.indexOf(buf_bc, -5), 1); -assert.equal(b.indexOf(buf_bc, NaN), 1); -assert.equal(b.indexOf(buf_bc, -Infinity), 1); -assert.equal(b.indexOf(buf_bc, Infinity), -1); -assert.equal(b.indexOf(buf_f), b.length - 1); -assert.equal(b.indexOf(buf_z), -1); -assert.equal(b.indexOf(buf_empty), -1); -assert.equal(b.indexOf(buf_empty, 1), -1); -assert.equal(b.indexOf(buf_empty, b.length + 1), -1); -assert.equal(b.indexOf(buf_empty, Infinity), -1); -assert.equal(b.indexOf(0x61), 0); -assert.equal(b.indexOf(0x61, 1), -1); -assert.equal(b.indexOf(0x61, -1), -1); -assert.equal(b.indexOf(0x61, -4), -1); -assert.equal(b.indexOf(0x61, -b.length), 0); -assert.equal(b.indexOf(0x61, NaN), 0); -assert.equal(b.indexOf(0x61, -Infinity), 0); -assert.equal(b.indexOf(0x61, Infinity), -1); -assert.equal(b.indexOf(0x0), -1); - -// test offsets -assert.equal(b.indexOf('d', 2), 3); -assert.equal(b.indexOf('f', 5), 5); -assert.equal(b.indexOf('f', -1), 5); -assert.equal(b.indexOf('f', 6), -1); - -assert.equal(b.indexOf(Buffer.from('d'), 2), 3); -assert.equal(b.indexOf(Buffer.from('f'), 5), 5); -assert.equal(b.indexOf(Buffer.from('f'), -1), 5); -assert.equal(b.indexOf(Buffer.from('f'), 6), -1); - -assert.equal(Buffer.from('ff').indexOf(Buffer.from('f'), 1, 'ucs2'), -1); - -// test hex encoding -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .indexOf('64', 0, 'hex'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('hex'), 'hex') - .indexOf(Buffer.from('64', 'hex'), 0, 'hex'), - 3 -); - -// test base64 encoding -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .indexOf('ZA==', 0, 'base64'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('base64'), 'base64') - .indexOf(Buffer.from('ZA==', 'base64'), 0, 'base64'), - 3 -); - -// test ascii encoding -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .indexOf('d', 0, 'ascii'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('ascii'), 'ascii') - .indexOf(Buffer.from('d', 'ascii'), 0, 'ascii'), - 3 -); - -// test latin1 encoding -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .indexOf('d', 0, 'latin1'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('latin1'), 'latin1') - .indexOf(Buffer.from('d', 'latin1'), 0, 'latin1'), - 3 -); -assert.strictEqual( - Buffer.from('aa\u00e8aa', 'latin1') - .indexOf('\u00e8', 'latin1'), - 2 -); -assert.strictEqual( - Buffer.from('\u00e8', 'latin1') - .indexOf('\u00e8', 'latin1'), - 0 -); -assert.strictEqual( - Buffer.from('\u00e8', 'latin1') - .indexOf(Buffer.from('\u00e8', 'latin1'), 'latin1'), - 0 -); - -// test binary encoding -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .indexOf('d', 0, 'binary'), - 3 -); -assert.strictEqual( - Buffer.from(b.toString('binary'), 'binary') - .indexOf(Buffer.from('d', 'binary'), 0, 'binary'), - 3 -); -assert.strictEqual( - Buffer.from('aa\u00e8aa', 'binary') - .indexOf('\u00e8', 'binary'), - 2 -); -assert.strictEqual( - Buffer.from('\u00e8', 'binary') - .indexOf('\u00e8', 'binary'), - 0 -); -assert.strictEqual( - Buffer.from('\u00e8', 'binary') - .indexOf(Buffer.from('\u00e8', 'binary'), 'binary'), - 0 -); - - -// test optional offset with passed encoding -assert.equal(Buffer.from('aaaa0').indexOf('30', 'hex'), 4); -assert.equal(Buffer.from('aaaa00a').indexOf('3030', 'hex'), 4); - -{ - // test usc2 encoding - var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - - assert.equal(8, twoByteString.indexOf('\u0395', 4, 'ucs2')); - assert.equal(6, twoByteString.indexOf('\u03a3', -4, 'ucs2')); - assert.equal(4, twoByteString.indexOf('\u03a3', -6, 'ucs2')); - assert.equal(4, twoByteString.indexOf( - Buffer.from('\u03a3', 'ucs2'), -6, 'ucs2')); - assert.equal(-1, twoByteString.indexOf('\u03a3', -2, 'ucs2')); -} - -var mixedByteStringUcs2 = - Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395', 'ucs2'); -assert.equal(6, mixedByteStringUcs2.indexOf('bc', 0, 'ucs2')); -assert.equal(10, mixedByteStringUcs2.indexOf('\u03a3', 0, 'ucs2')); -assert.equal(-1, mixedByteStringUcs2.indexOf('\u0396', 0, 'ucs2')); - -assert.equal( - 6, mixedByteStringUcs2.indexOf(Buffer.from('bc', 'ucs2'), 0, 'ucs2')); -assert.equal( - 10, mixedByteStringUcs2.indexOf(Buffer.from('\u03a3', 'ucs2'), 0, 'ucs2')); -assert.equal( - -1, mixedByteStringUcs2.indexOf(Buffer.from('\u0396', 'ucs2'), 0, 'ucs2')); - -{ - var twoByteString = Buffer.from('\u039a\u0391\u03a3\u03a3\u0395', 'ucs2'); - - // Test single char pattern - assert.equal(0, twoByteString.indexOf('\u039a', 0, 'ucs2')); - assert.equal(2, twoByteString.indexOf('\u0391', 0, 'ucs2'), 'Alpha'); - assert.equal(4, twoByteString.indexOf('\u03a3', 0, 'ucs2'), 'First Sigma'); - assert.equal(6, twoByteString.indexOf('\u03a3', 6, 'ucs2'), 'Second Sigma'); - assert.equal(8, twoByteString.indexOf('\u0395', 0, 'ucs2'), 'Epsilon'); - assert.equal(-1, twoByteString.indexOf('\u0392', 0, 'ucs2'), 'Not beta'); - - // Test multi-char pattern - assert.equal( - 0, twoByteString.indexOf('\u039a\u0391', 0, 'ucs2'), 'Lambda Alpha'); - assert.equal( - 2, twoByteString.indexOf('\u0391\u03a3', 0, 'ucs2'), 'Alpha Sigma'); - assert.equal( - 4, twoByteString.indexOf('\u03a3\u03a3', 0, 'ucs2'), 'Sigma Sigma'); - assert.equal( - 6, twoByteString.indexOf('\u03a3\u0395', 0, 'ucs2'), 'Sigma Epsilon'); -} - -var mixedByteStringUtf8 = Buffer.from('\u039a\u0391abc\u03a3\u03a3\u0395'); -assert.equal(5, mixedByteStringUtf8.indexOf('bc')); -assert.equal(5, mixedByteStringUtf8.indexOf('bc', 5)); -assert.equal(5, mixedByteStringUtf8.indexOf('bc', -8)); -assert.equal(7, mixedByteStringUtf8.indexOf('\u03a3')); -assert.equal(-1, mixedByteStringUtf8.indexOf('\u0396')); - - -// Test complex string indexOf algorithms. Only trigger for long strings. -// Long string that isn't a simple repeat of a shorter string. -var longString = 'A'; -for (var i = 66; i < 76; i++) { // from 'B' to 'K' - longString = longString + String.fromCharCode(i) + longString; -} - -var longBufferString = Buffer.from(longString); - -// pattern of 15 chars, repeated every 16 chars in long -var pattern = 'ABACABADABACABA'; -for (var i = 0; i < longBufferString.length - pattern.length; i += 7) { - var index = longBufferString.indexOf(pattern, i); - assert.equal((i + 15) & ~0xf, index, 'Long ABACABA...-string at index ' + i); -} -assert.equal(510, longBufferString.indexOf('AJABACA'), 'Long AJABACA, First J'); -assert.equal( - 1534, longBufferString.indexOf('AJABACA', 511), 'Long AJABACA, Second J'); - -pattern = 'JABACABADABACABA'; -assert.equal( - 511, longBufferString.indexOf(pattern), 'Long JABACABA..., First J'); -assert.equal( - 1535, longBufferString.indexOf(pattern, 512), 'Long JABACABA..., Second J'); - -// Search for a non-ASCII string in a pure ASCII string. -var asciiString = Buffer.from( - 'arglebargleglopglyfarglebargleglopglyfarglebargleglopglyf'); -assert.equal(-1, asciiString.indexOf('\x2061')); -assert.equal(3, asciiString.indexOf('leb', 0)); - -// Search in string containing many non-ASCII chars. -var allCodePoints = []; -for (var i = 0; i < 65536; i++) allCodePoints[i] = i; -var allCharsString = String.fromCharCode.apply(String, allCodePoints); -var allCharsBufferUtf8 = Buffer.from(allCharsString); -var allCharsBufferUcs2 = Buffer.from(allCharsString, 'ucs2'); - -// Search for string long enough to trigger complex search with ASCII pattern -// and UC16 subject. -assert.equal(-1, allCharsBufferUtf8.indexOf('notfound')); -assert.equal(-1, allCharsBufferUcs2.indexOf('notfound')); - -// Needle is longer than haystack, but only because it's encoded as UTF-16 -assert.strictEqual(Buffer.from('aaaa').indexOf('a'.repeat(4), 'ucs2'), -1); - -assert.strictEqual(Buffer.from('aaaa').indexOf('a'.repeat(4), 'utf8'), 0); -assert.strictEqual(Buffer.from('aaaa').indexOf('你好', 'ucs2'), -1); - -// Haystack has odd length, but the needle is UCS2. -// assert.strictEqual(Buffer.from('aaaaa').indexOf('b', 'ucs2'), -1); - -{ - // Find substrings in Utf8. - var lengths = [1, 3, 15]; // Single char, simple and complex. - var indices = [0x5, 0x60, 0x400, 0x680, 0x7ee, 0xFF02, 0x16610, 0x2f77b]; - for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i]; - var length = lengths[lengthIndex]; - - if (index + length > 0x7F) { - length = 2 * length; - } - - if (index + length > 0x7FF) { - length = 3 * length; - } - - if (index + length > 0xFFFF) { - length = 4 * length; - } - - var patternBufferUtf8 = allCharsBufferUtf8.slice(index, index + length); - assert.equal(index, allCharsBufferUtf8.indexOf(patternBufferUtf8)); - - var patternStringUtf8 = patternBufferUtf8.toString(); - assert.equal(index, allCharsBufferUtf8.indexOf(patternStringUtf8)); - } - } -} - -{ - // Find substrings in Usc2. - var lengths = [2, 4, 16]; // Single char, simple and complex. - var indices = [0x5, 0x65, 0x105, 0x205, 0x285, 0x2005, 0x2085, 0xfff0]; - for (var lengthIndex = 0; lengthIndex < lengths.length; lengthIndex++) { - for (var i = 0; i < indices.length; i++) { - var index = indices[i] * 2; - var length = lengths[lengthIndex]; - - var patternBufferUcs2 = - allCharsBufferUcs2.slice(index, index + length); - assert.equal( - index, allCharsBufferUcs2.indexOf(patternBufferUcs2, 0, 'ucs2')); - - var patternStringUcs2 = patternBufferUcs2.toString('ucs2'); - assert.equal( - index, allCharsBufferUcs2.indexOf(patternStringUcs2, 0, 'ucs2')); - } - } -} - -assert.throws(function() { - b.indexOf(function() { }); -}); -assert.throws(function() { - b.indexOf({}); -}); -assert.throws(function() { - b.indexOf([]); -}); - -// All code for handling encodings is shared between Buffer.indexOf and -// Buffer.lastIndexOf, so only testing the separate lastIndexOf semantics. - -// Test lastIndexOf basic functionality; Buffer b contains 'abcdef'. -// lastIndexOf string: -assert.equal(b.lastIndexOf('a'), 0); -assert.equal(b.lastIndexOf('a', 1), 0); -assert.equal(b.lastIndexOf('b', 1), 1); -assert.equal(b.lastIndexOf('c', 1), -1); -assert.equal(b.lastIndexOf('a', -1), 0); -assert.equal(b.lastIndexOf('a', -4), 0); -assert.equal(b.lastIndexOf('a', -b.length), 0); -assert.equal(b.lastIndexOf('a', -b.length - 1), -1); -assert.equal(b.lastIndexOf('a', NaN), 0); -assert.equal(b.lastIndexOf('a', -Infinity), -1); -assert.equal(b.lastIndexOf('a', Infinity), 0); -// lastIndexOf Buffer: -assert.equal(b.lastIndexOf(buf_a), 0); -assert.equal(b.lastIndexOf(buf_a, 1), 0); -assert.equal(b.lastIndexOf(buf_a, -1), 0); -assert.equal(b.lastIndexOf(buf_a, -4), 0); -assert.equal(b.lastIndexOf(buf_a, -b.length), 0); -assert.equal(b.lastIndexOf(buf_a, -b.length - 1), -1); -assert.equal(b.lastIndexOf(buf_a, NaN), 0); -assert.equal(b.lastIndexOf(buf_a, -Infinity), -1); -assert.equal(b.lastIndexOf(buf_a, Infinity), 0); -assert.equal(b.lastIndexOf(buf_bc), 1); -assert.equal(b.lastIndexOf(buf_bc, 2), 1); -assert.equal(b.lastIndexOf(buf_bc, -1), 1); -assert.equal(b.lastIndexOf(buf_bc, -3), 1); -assert.equal(b.lastIndexOf(buf_bc, -5), 1); -assert.equal(b.lastIndexOf(buf_bc, -6), -1); -assert.equal(b.lastIndexOf(buf_bc, NaN), 1); -assert.equal(b.lastIndexOf(buf_bc, -Infinity), -1); -assert.equal(b.lastIndexOf(buf_bc, Infinity), 1); -assert.equal(b.lastIndexOf(buf_f), b.length - 1); -assert.equal(b.lastIndexOf(buf_z), -1); -assert.equal(b.lastIndexOf(buf_empty), -1); -assert.equal(b.lastIndexOf(buf_empty, 1), -1); -assert.equal(b.lastIndexOf(buf_empty, b.length + 1), -1); -assert.equal(b.lastIndexOf(buf_empty, Infinity), -1); -// lastIndexOf number: -assert.equal(b.lastIndexOf(0x61), 0); -assert.equal(b.lastIndexOf(0x61, 1), 0); -assert.equal(b.lastIndexOf(0x61, -1), 0); -assert.equal(b.lastIndexOf(0x61, -4), 0); -assert.equal(b.lastIndexOf(0x61, -b.length), 0); -assert.equal(b.lastIndexOf(0x61, -b.length - 1), -1); -assert.equal(b.lastIndexOf(0x61, NaN), 0); -assert.equal(b.lastIndexOf(0x61, -Infinity), -1); -assert.equal(b.lastIndexOf(0x61, Infinity), 0); -assert.equal(b.lastIndexOf(0x0), -1); - -// Test weird offset arguments. -// Behaviour should match String.lastIndexOf: -assert.equal(b.lastIndexOf('b', 0), -1); -assert.equal(b.lastIndexOf('b', undefined), 1); -assert.equal(b.lastIndexOf('b', null), -1); -assert.equal(b.lastIndexOf('b', {}), 1); -assert.equal(b.lastIndexOf('b', []), -1); -assert.equal(b.lastIndexOf('b', [2]), 1); - -// Test needles longer than the haystack. -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'ucs2'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'utf8'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'latin1'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 'binary'), -1); -assert.strictEqual(b.lastIndexOf(Buffer.from('aaaaaaaaaaaaaaa')), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 2, 'ucs2'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 3, 'utf8'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 5, 'latin1'), -1); -assert.strictEqual(b.lastIndexOf('aaaaaaaaaaaaaaa', 5, 'binary'), -1); -assert.strictEqual(b.lastIndexOf(Buffer.from('aaaaaaaaaaaaaaa'), 7), -1); - -// 你好 expands to a total of 6 bytes using UTF-8 and 4 bytes using UTF-16 -assert.strictEqual(buf_bc.lastIndexOf('你好', 'ucs2'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 'utf8'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 'latin1'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 'binary'), -1); -assert.strictEqual(buf_bc.lastIndexOf(Buffer.from('你好')), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 2, 'ucs2'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 3, 'utf8'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 5, 'latin1'), -1); -assert.strictEqual(buf_bc.lastIndexOf('你好', 5, 'binary'), -1); -assert.strictEqual(buf_bc.lastIndexOf(Buffer.from('你好'), 7), -1); - -// Test lastIndexOf on a longer buffer: -var bufferString = new Buffer('a man a plan a canal panama'); -assert.equal(15, bufferString.lastIndexOf('canal')); -assert.equal(21, bufferString.lastIndexOf('panama')); -assert.equal(0, bufferString.lastIndexOf('a man a plan a canal panama')); -assert.equal(-1, bufferString.lastIndexOf('a man a plan a canal mexico')); -assert.equal(-1, bufferString.lastIndexOf('a man a plan a canal mexico city')); -assert.equal(-1, bufferString.lastIndexOf(Buffer.from('a'.repeat(1000)))); -assert.equal(0, bufferString.lastIndexOf('a man a plan', 4)); -assert.equal(13, bufferString.lastIndexOf('a ')); -assert.equal(13, bufferString.lastIndexOf('a ', 13)); -assert.equal(6, bufferString.lastIndexOf('a ', 12)); -assert.equal(0, bufferString.lastIndexOf('a ', 5)); -assert.equal(13, bufferString.lastIndexOf('a ', -1)); -assert.equal(0, bufferString.lastIndexOf('a ', -27)); -assert.equal(-1, bufferString.lastIndexOf('a ', -28)); - -// Test lastIndexOf for the case that the first character can be found, -// but in a part of the buffer that does not make search to search -// due do length constraints. -var abInUCS2 = Buffer.from('ab', 'ucs2'); -assert.strictEqual(-1, Buffer.from('µaaaa¶bbbb', 'latin1').lastIndexOf('µ')); -assert.strictEqual(-1, Buffer.from('µaaaa¶bbbb', 'binary').lastIndexOf('µ')); -assert.strictEqual(-1, Buffer.from('bc').lastIndexOf('ab')); -assert.strictEqual(-1, Buffer.from('abc').lastIndexOf('qa')); -assert.strictEqual(-1, Buffer.from('abcdef').lastIndexOf('qabc')); -assert.strictEqual(-1, Buffer.from('bc').lastIndexOf(Buffer.from('ab'))); -assert.strictEqual(-1, Buffer.from('bc', 'ucs2').lastIndexOf('ab', 'ucs2')); -assert.strictEqual(-1, Buffer.from('bc', 'ucs2').lastIndexOf(abInUCS2)); - -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab')); -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 1)); -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 2)); -assert.strictEqual(0, Buffer.from('abc').lastIndexOf('ab', 3)); - -// The above tests test the LINEAR and SINGLE-CHAR strategies. -// Now, we test the BOYER-MOORE-HORSPOOL strategy. -// Test lastIndexOf on a long buffer w multiple matches: -pattern = 'JABACABADABACABA'; -assert.equal(1535, longBufferString.lastIndexOf(pattern)); -assert.equal(1535, longBufferString.lastIndexOf(pattern, 1535)); -assert.equal(511, longBufferString.lastIndexOf(pattern, 1534)); - -// Finally, give it a really long input to trigger fallback from BMH to -// regular BOYER-MOORE (which has better worst-case complexity). - -// Generate a really long Thue-Morse sequence of 'yolo' and 'swag', -// "yolo swag swag yolo swag yolo yolo swag" ..., goes on for about 5MB. -// This is hard to search because it all looks similar, but never repeats. - -// countBits returns the number of bits in the binary reprsentation of n. -function countBits(n) { - for (var count = 0; n > 0; count++) { - n = n & (n - 1); // remove top bit - } - return count; -} -var parts = []; -for (var i = 0; i < 1000000; i++) { - parts.push((countBits(i) % 2 === 0) ? 'yolo' : 'swag'); -} -var reallyLong = new Buffer(parts.join(' ')); -assert.equal('yolo swag swag yolo', reallyLong.slice(0, 19).toString()); - -// Expensive reverse searches. Stress test lastIndexOf: -pattern = reallyLong.slice(0, 100000); // First 1/50th of the pattern. -assert.equal(4751360, reallyLong.lastIndexOf(pattern)); -assert.equal(3932160, reallyLong.lastIndexOf(pattern, 4000000)); -assert.equal(2949120, reallyLong.lastIndexOf(pattern, 3000000)); -pattern = reallyLong.slice(100000, 200000); // Second 1/50th. -assert.equal(4728480, reallyLong.lastIndexOf(pattern)); -pattern = reallyLong.slice(0, 1000000); // First 1/5th. -assert.equal(3932160, reallyLong.lastIndexOf(pattern)); -pattern = reallyLong.slice(0, 2000000); // first 2/5ths. -assert.equal(0, reallyLong.lastIndexOf(pattern)); - -// test truncation of Number arguments to uint8 -{ - var buf = Buffer.from('this is a test'); - assert.strictEqual(buf.indexOf(0x6973), 3); - assert.strictEqual(buf.indexOf(0x697320), 4); - assert.strictEqual(buf.indexOf(0x69732069), 2); - assert.strictEqual(buf.indexOf(0x697374657374), 0); - assert.strictEqual(buf.indexOf(0x69737374), 0); - assert.strictEqual(buf.indexOf(0x69737465), 11); - assert.strictEqual(buf.indexOf(0x69737465), 11); - assert.strictEqual(buf.indexOf(-140), 0); - assert.strictEqual(buf.indexOf(-152), 1); - assert.strictEqual(buf.indexOf(0xff), -1); - assert.strictEqual(buf.indexOf(0xffff), -1); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js deleted file mode 100644 index 711d9f2..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inheritance.js +++ /dev/null @@ -1,42 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - - -function T(n) { - var ui8 = new Uint8Array(n); - Object.setPrototypeOf(ui8, T.prototype); - return ui8; -} -Object.setPrototypeOf(T.prototype, Buffer.prototype); -Object.setPrototypeOf(T, Buffer); - -T.prototype.sum = function sum() { - var cntr = 0; - for (var i = 0; i < this.length; i++) - cntr += this[i]; - return cntr; -}; - - -var vals = [new T(4), T(4)]; - -vals.forEach(function(t) { - assert.equal(t.constructor, T); - assert.equal(Object.getPrototypeOf(t), T.prototype); - assert.equal(Object.getPrototypeOf(Object.getPrototypeOf(t)), - Buffer.prototype); - - t.fill(5); - var cntr = 0; - for (var i = 0; i < t.length; i++) - cntr += t[i]; - assert.equal(t.length * 5, cntr); - - // Check this does not throw - t.toString(); -}); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js deleted file mode 100644 index d0ed590..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-inspect.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var util = require('util'); - -var buffer = require('../../'); - -buffer.INSPECT_MAX_BYTES = 2; - -var b = Buffer.allocUnsafe(4); -b.fill('1234'); - -var s = buffer.SlowBuffer(4); -s.fill('1234'); - -var expected = ''; - -assert.strictEqual(util.inspect(b), expected); -assert.strictEqual(util.inspect(s), expected); - -b = Buffer.allocUnsafe(2); -b.fill('12'); - -s = buffer.SlowBuffer(2); -s.fill('12'); - -expected = ''; - -assert.strictEqual(util.inspect(b), expected); -assert.strictEqual(util.inspect(s), expected); - -buffer.INSPECT_MAX_BYTES = Infinity; - -assert.doesNotThrow(function() { - assert.strictEqual(util.inspect(b), expected); - assert.strictEqual(util.inspect(s), expected); -}); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js deleted file mode 100644 index f27709f..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-iterator.js +++ /dev/null @@ -1,65 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - -var assert = require('assert'); - -var buffer = Buffer.from([1, 2, 3, 4, 5]); -var arr; -var b; - -// buffers should be iterable - -arr = []; - -for (b of buffer) - arr.push(b); - -assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); - - -// buffer iterators should be iterable - -arr = []; - -for (b of buffer[Symbol.iterator]()) - arr.push(b); - -assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); - - -// buffer#values() should return iterator for values - -arr = []; - -for (b of buffer.values()) - arr.push(b); - -assert.deepStrictEqual(arr, [1, 2, 3, 4, 5]); - - -// buffer#keys() should return iterator for keys - -arr = []; - -for (b of buffer.keys()) - arr.push(b); - -assert.deepStrictEqual(arr, [0, 1, 2, 3, 4]); - - -// buffer#entries() should return iterator for entries - -arr = []; - -for (b of buffer.entries()) - arr.push(b); - -assert.deepStrictEqual(arr, [ - [0, 1], - [1, 2], - [2, 3], - [3, 4], - [4, 5] -]); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js deleted file mode 100644 index 22ba29e..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-safe-unsafe.js +++ /dev/null @@ -1,27 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -var safe = Buffer.alloc(10); - -function isZeroFilled(buf) { - for (var n = 0; n < buf.length; n++) - if (buf[n] !== 0) return false; - return true; -} - -assert(isZeroFilled(safe)); - -// Test that unsafe allocations doesn't affect subsequent safe allocations -Buffer.allocUnsafe(10); -assert(isZeroFilled(new Float64Array(10))); - -new Buffer(10); -assert(isZeroFilled(new Float64Array(10))); - -Buffer.allocUnsafe(10); -assert(isZeroFilled(Buffer.alloc(10))); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js deleted file mode 100644 index 65cea21..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-slow.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); -var buffer = require('../../'); -var Buffer = buffer.Buffer; -var SlowBuffer = buffer.SlowBuffer; - -var ones = [1, 1, 1, 1]; - -// should create a Buffer -var sb = SlowBuffer(4); -assert(sb instanceof Buffer); -assert.strictEqual(sb.length, 4); -sb.fill(1); -for (var [key, value] of sb.entries()) { - assert.deepStrictEqual(value, ones[key]); -} - -// underlying ArrayBuffer should have the same length -assert.strictEqual(sb.buffer.byteLength, 4); - -// should work without new -sb = SlowBuffer(4); -assert(sb instanceof Buffer); -assert.strictEqual(sb.length, 4); -sb.fill(1); -for (var [key, value] of sb.entries()) { - assert.deepStrictEqual(value, ones[key]); -} - -// should work with edge cases -assert.strictEqual(SlowBuffer(0).length, 0); -try { - assert.strictEqual( - SlowBuffer(buffer.kMaxLength).length, buffer.kMaxLength); -} catch (e) { - assert.equal(e.message, 'Array buffer allocation failed'); -} - -// should work with number-coercible values -assert.strictEqual(SlowBuffer('6').length, 6); -assert.strictEqual(SlowBuffer(true).length, 1); - -// should create zero-length buffer if parameter is not a number -assert.strictEqual(SlowBuffer().length, 0); -assert.strictEqual(SlowBuffer(NaN).length, 0); -assert.strictEqual(SlowBuffer({}).length, 0); -assert.strictEqual(SlowBuffer('string').length, 0); - -// should throw with invalid length -assert.throws(function() { - SlowBuffer(Infinity); -}, 'invalid Buffer length'); -assert.throws(function() { - SlowBuffer(-1); -}, 'invalid Buffer length'); -assert.throws(function() { - SlowBuffer(buffer.kMaxLength + 1); -}, 'invalid Buffer length'); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js deleted file mode 100644 index 2ec1a7a..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-swap.js +++ /dev/null @@ -1,141 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - -// Test buffers small enough to use the JS implementation -var buf = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, - 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10]); - -assert.strictEqual(buf, buf.swap16()); -assert.deepStrictEqual(buf, Buffer.from([0x02, 0x01, 0x04, 0x03, 0x06, 0x05, - 0x08, 0x07, 0x0a, 0x09, 0x0c, 0x0b, - 0x0e, 0x0d, 0x10, 0x0f])); -buf.swap16(); // restore - -assert.strictEqual(buf, buf.swap32()); -assert.deepStrictEqual(buf, Buffer.from([0x04, 0x03, 0x02, 0x01, 0x08, 0x07, - 0x06, 0x05, 0x0c, 0x0b, 0x0a, 0x09, - 0x10, 0x0f, 0x0e, 0x0d])); -buf.swap32(); // restore - -assert.strictEqual(buf, buf.swap64()); -assert.deepStrictEqual(buf, Buffer.from([0x08, 0x07, 0x06, 0x05, 0x04, 0x03, - 0x02, 0x01, 0x10, 0x0f, 0x0e, 0x0d, - 0x0c, 0x0b, 0x0a, 0x09])); - -// Operates in-place -var buf3 = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7]); -buf3.slice(1, 5).swap32(); -assert.deepStrictEqual(buf3, Buffer.from([0x1, 0x5, 0x4, 0x3, 0x2, 0x6, 0x7])); - -buf3.slice(1, 5).swap16(); -assert.deepStrictEqual(buf3, Buffer.from([0x1, 0x4, 0x5, 0x2, 0x3, 0x6, 0x7])); - -var buf3_64 = Buffer.from([0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, - 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10]); -buf3_64.slice(2, 18).swap64(); -assert.deepStrictEqual(buf3_64, Buffer.from([0x01, 0x02, 0x0a, 0x09, 0x08, 0x07, - 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, - 0x10, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, - 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, - 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, - 0x0f, 0x10])); - -// Force use of native code (Buffer size above threshold limit for js impl) -var buf4A = new Uint32Array(256).fill(0x04030201); -var buf4 = Buffer.from(buf4A.buffer, buf4A.byteOffset); -var buf5A = new Uint32Array(256).fill(0x03040102); -var buf5 = Buffer.from(buf5A.buffer, buf5A.byteOffset); - -buf4.swap16(); -assert.deepStrictEqual(buf4, buf5); - -var buf6A = new Uint32Array(256).fill(0x04030201); -var buf6 = Buffer.from(buf6A.buffer); -var bu7A = new Uint32Array(256).fill(0x01020304); -var buf7 = Buffer.from(bu7A.buffer, bu7A.byteOffset); - -buf6.swap32(); -assert.deepStrictEqual(buf6, buf7); - -var buf8A = new Uint8Array(256 * 8); -var buf9A = new Uint8Array(256 * 8); -for (var i = 0; i < buf8A.length; i++) { - buf8A[i] = i % 8; - buf9A[buf9A.length - i - 1] = i % 8; -} -var buf8 = Buffer.from(buf8A.buffer, buf8A.byteOffset); -var buf9 = Buffer.from(buf9A.buffer, buf9A.byteOffset); - -buf8.swap64(); -assert.deepStrictEqual(buf8, buf9); - -// Test native code with buffers that are not memory-aligned -var buf10A = new Uint8Array(256 * 8); -var buf11A = new Uint8Array(256 * 8 - 2); -for (var i = 0; i < buf10A.length; i++) { - buf10A[i] = i % 2; -} -for (var i = 1; i < buf11A.length; i++) { - buf11A[buf11A.length - i] = (i + 1) % 2; -} -var buf10 = Buffer.from(buf10A.buffer, buf10A.byteOffset); -// 0|1 0|1 0|1... -var buf11 = Buffer.from(buf11A.buffer, buf11A.byteOffset); -// 0|0 1|0 1|0... - -buf10.slice(1, buf10.length - 1).swap16(); -assert.deepStrictEqual(buf10.slice(0, buf11.length), buf11); - - -var buf12A = new Uint8Array(256 * 8); -var buf13A = new Uint8Array(256 * 8 - 4); -for (var i = 0; i < buf12A.length; i++) { - buf12A[i] = i % 4; -} -for (var i = 1; i < buf13A.length; i++) { - buf13A[buf13A.length - i] = (i + 1) % 4; -} -var buf12 = Buffer.from(buf12A.buffer, buf12A.byteOffset); -// 0|1 2 3 0|1 2 3... -var buf13 = Buffer.from(buf13A.buffer, buf13A.byteOffset); -// 0|0 3 2 1|0 3 2... - -buf12.slice(1, buf12.length - 3).swap32(); -assert.deepStrictEqual(buf12.slice(0, buf13.length), buf13); - - -var buf14A = new Uint8Array(256 * 8); -var buf15A = new Uint8Array(256 * 8 - 8); -for (var i = 0; i < buf14A.length; i++) { - buf14A[i] = i % 8; -} -for (var i = 1; i < buf15A.length; i++) { - buf15A[buf15A.length - i] = (i + 1) % 8; -} -var buf14 = Buffer.from(buf14A.buffer, buf14A.byteOffset); -// 0|1 2 3 4 5 6 7 0|1 2 3 4... -var buf15 = Buffer.from(buf15A.buffer, buf15A.byteOffset); -// 0|0 7 6 5 4 3 2 1|0 7 6 5... - -buf14.slice(1, buf14.length - 7).swap64(); -assert.deepStrictEqual(buf14.slice(0, buf15.length), buf15); - -// Length assertions -var re16 = /Buffer size must be a multiple of 16-bits/; -var re32 = /Buffer size must be a multiple of 32-bits/; -var re64 = /Buffer size must be a multiple of 64-bits/; - -assert.throws(() => Buffer.from(buf3).swap16(), re16); -assert.throws(() => Buffer.alloc(1025).swap16(), re16); -assert.throws(() => Buffer.from(buf3).swap32(), re32); -assert.throws(() => buf3.slice(1, 3).swap32(), re32); -assert.throws(() => Buffer.alloc(1025).swap32(), re32); -assert.throws(() => buf3.slice(1, 3).swap64(), re64); -assert.throws(() => Buffer.alloc(1025).swap64(), re64); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js deleted file mode 100644 index 744b334..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-cli.js +++ /dev/null @@ -1,35 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - -// Flags: --zero-fill-buffers - -// when using --zero-fill-buffers, every Buffer and SlowBuffer -// instance must be zero filled upon creation - - -var SlowBuffer = require('../../').SlowBuffer; -var assert = require('assert'); - -function isZeroFilled(buf) { - for (var n = 0; n < buf.length; n++) - if (buf[n] > 0) return false; - return true; -} - -// This can be somewhat unreliable because the -// allocated memory might just already happen to -// contain all zeroes. The test is run multiple -// times to improve the reliability. -for (var i = 0; i < 50; i++) { - var bufs = [ - Buffer.alloc(20), - Buffer.allocUnsafe(20), - SlowBuffer(20), - Buffer(20), - new SlowBuffer(20) - ]; - for (var buf of bufs) { - assert(isZeroFilled(buf)); - } -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js deleted file mode 100644 index b21a6b2..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer-zero-fill-reset.js +++ /dev/null @@ -1,22 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - - - -var assert = require('assert'); - - -function testUint8Array(ui) { - var length = ui.length; - for (var i = 0; i < length; i++) - if (ui[i] !== 0) return false; - return true; -} - - -for (var i = 0; i < 100; i++) { - Buffer.alloc(0); - var ui = new Uint8Array(65); - assert.ok(testUint8Array(ui), 'Uint8Array is not zero-filled'); -} - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js b/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js deleted file mode 100644 index 2e94de2..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/node/test-buffer.js +++ /dev/null @@ -1,1534 +0,0 @@ -'use strict'; -var Buffer = require('../../').Buffer; - -var common = { skip: function () {} }; -var assert = require('assert'); - -var Buffer = require('../../').Buffer; -var SlowBuffer = require('../../').SlowBuffer; - -// counter to ensure unique value is always copied -var cntr = 0; - -var b = Buffer(1024); // safe constructor - -// console.log('b.length == %d', b.length); -assert.strictEqual(1024, b.length); - -b[0] = -1; -assert.strictEqual(b[0], 255); - -for (var i = 0; i < 1024; i++) { - b[i] = i % 256; -} - -for (var i = 0; i < 1024; i++) { - assert.strictEqual(i % 256, b[i]); -} - -var c = Buffer(512); -// console.log('c.length == %d', c.length); -assert.strictEqual(512, c.length); - -var d = new Buffer([]); -assert.strictEqual(0, d.length); - -var ui32 = new Uint32Array(4).fill(42); -var e = Buffer(ui32); -for (var [key, value] of e.entries()) { - assert.deepStrictEqual(value, ui32[key]); -} - -// First check Buffer#fill() works as expected. - -assert.throws(function() { - Buffer(8).fill('a', -1); -}); - -assert.throws(function() { - Buffer(8).fill('a', 0, 9); -}); - -// Make sure this doesn't hang indefinitely. -Buffer(8).fill(''); - -{ - var buf = new Buffer(64); - buf.fill(10); - for (var i = 0; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill(11, 0, buf.length >> 1); - for (var i = 0; i < buf.length >> 1; i++) - assert.equal(buf[i], 11); - for (var i = (buf.length >> 1) + 1; i < buf.length; i++) - assert.equal(buf[i], 10); - - buf.fill('h'); - for (var i = 0; i < buf.length; i++) - assert.equal('h'.charCodeAt(0), buf[i]); - - buf.fill(0); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(null); - for (var i = 0; i < buf.length; i++) - assert.equal(0, buf[i]); - - buf.fill(1, 16, 32); - for (var i = 0; i < 16; i++) - assert.equal(0, buf[i]); - for (var i = 16; i < 32; i++) - assert.equal(1, buf[i]); - for (var i = 32; i < buf.length; i++) - assert.equal(0, buf[i]); -} - -{ - var buf = new Buffer(10); - buf.fill('abc'); - assert.equal(buf.toString(), 'abcabcabca'); - buf.fill('Õ§'); - assert.equal(buf.toString(), 'Õ§Õ§Õ§Õ§Õ§'); -} - -{ - // copy 512 bytes, from 0 to 512. - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 512); -// console.log('copied %d bytes from b into c', copied); - assert.strictEqual(512, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy c into b, without specifying sourceEnd - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0, 0); -// console.log('copied %d bytes from c into b w/o sourceEnd', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy c into b, without specifying sourceStart - b.fill(++cntr); - c.fill(++cntr); - var copied = c.copy(b, 0); -// console.log('copied %d bytes from c into b w/o sourceStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(c[i], b[i]); - } -} - -{ - // copy longer buffer b to shorter c without targetStart - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c); -// console.log('copied %d bytes from b into c w/o targetStart', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy starting near end of b to c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, b.length - Math.floor(c.length / 2)); -// console.log('copied %d bytes from end of b into beginning of c', copied); - assert.strictEqual(Math.floor(c.length / 2), copied); - for (var i = 0; i < Math.floor(c.length / 2); i++) { - assert.strictEqual(b[b.length - Math.floor(c.length / 2) + i], c[i]); - } - for (var i = Math.floor(c.length / 2) + 1; i < c.length; i++) { - assert.strictEqual(c[c.length - 1], c[i]); - } -} - -{ - // try to copy 513 bytes, and check we don't overrun c - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 513); -// console.log('copied %d bytes from b trying to overrun c', copied); - assert.strictEqual(c.length, copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -{ - // copy 768 bytes from b into b - b.fill(++cntr); - b.fill(++cntr, 256); - var copied = b.copy(b, 0, 256, 1024); -// console.log('copied %d bytes from b into b', copied); - assert.strictEqual(768, copied); - for (var i = 0; i < b.length; i++) { - assert.strictEqual(cntr, b[i]); - } -} - -// copy string longer than buffer length (failure will segfault) -var bb = Buffer(10); -bb.fill('hello crazy world'); - - -// try to copy from before the beginning of b -assert.doesNotThrow(() => { b.copy(c, 0, 100, 10); }); - -// copy throws at negative sourceStart -assert.throws(function() { - Buffer(5).copy(Buffer(5), 0, -1); -}, RangeError); - -{ - // check sourceEnd resets to targetEnd if former is greater than the latter - b.fill(++cntr); - c.fill(++cntr); - var copied = b.copy(c, 0, 0, 1025); -// console.log('copied %d bytes from b into c', copied); - for (var i = 0; i < c.length; i++) { - assert.strictEqual(b[i], c[i]); - } -} - -// throw with negative sourceEnd -// console.log('test copy at negative sourceEnd'); -assert.throws(function() { - b.copy(c, 0, 0, -1); -}, RangeError); - -// when sourceStart is greater than sourceEnd, zero copied -assert.equal(b.copy(c, 0, 100, 10), 0); - -// when targetStart > targetLength, zero copied -assert.equal(b.copy(c, 512, 0, 10), 0); - -var caught_error; - -// invalid encoding for Buffer.toString -caught_error = null; -try { - b.toString('invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// invalid encoding for Buffer.write -caught_error = null; -try { - b.write('test string', 0, 5, 'invalid'); -} catch (err) { - caught_error = err; -} -assert.strictEqual('Unknown encoding: invalid', caught_error.message); - -// try to create 0-length buffers -new Buffer(''); -new Buffer('', 'ascii'); -new Buffer('', 'latin1'); -new Buffer('', 'binary'); -Buffer(0); - -// try to write a 0-length string beyond the end of b -assert.throws(function() { - b.write('', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// throw when writing past bounds from the pool -assert.throws(function() { - b.write('a', 2048); -}, RangeError); - -// throw when writing to negative offset -assert.throws(function() { - b.write('a', -1); -}, RangeError); - -// try to copy 0 bytes worth of data into an empty buffer -b.copy(Buffer(0), 0, 0, 0); - -// try to copy 0 bytes past the end of the target buffer -b.copy(Buffer(0), 1, 1, 1); -b.copy(Buffer(1), 1, 1, 1); - -// try to copy 0 bytes from past the end of the source buffer -b.copy(Buffer(1), 0, 2048, 2048); - -var rangeBuffer = new Buffer('abc'); - -// if start >= buffer's length, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 3), ''); -assert.equal(rangeBuffer.toString('ascii', +Infinity), ''); -assert.equal(rangeBuffer.toString('ascii', 3.14, 3), ''); -assert.equal(rangeBuffer.toString('ascii', 'Infinity', 3), ''); - -// if end <= 0, empty string will be returned -assert.equal(rangeBuffer.toString('ascii', 1, 0), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -1.2), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -100), ''); -assert.equal(rangeBuffer.toString('ascii', 1, -Infinity), ''); - -// if start < 0, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', -1, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -1.99, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', -Infinity, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); - -// if start is an invalid integer, start will be taken as zero -assert.equal(rangeBuffer.toString('ascii', 'node.js', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', {}, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', [], 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', NaN, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', null, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', undefined, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', false, 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '', 3), 'abc'); - -// but, if start is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', '-1', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '1', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-Infinity', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', '3', 3), ''); -assert.equal(rangeBuffer.toString('ascii', Number(3), 3), ''); -assert.equal(rangeBuffer.toString('ascii', '3.14', 3), ''); -assert.equal(rangeBuffer.toString('ascii', '1.99', 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', '-1.99', 3), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 1.99, 3), 'bc'); -assert.equal(rangeBuffer.toString('ascii', true, 3), 'bc'); - -// if end > buffer's length, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 5), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 6.99), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Infinity), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '5'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '6.99'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, 'Infinity'), 'abc'); - -// if end is an invalid integer, end will be taken as buffer's length -assert.equal(rangeBuffer.toString('ascii', 0, 'node.js'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, {}), ''); -assert.equal(rangeBuffer.toString('ascii', 0, NaN), ''); -assert.equal(rangeBuffer.toString('ascii', 0, undefined), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, null), ''); -assert.equal(rangeBuffer.toString('ascii', 0, []), ''); -assert.equal(rangeBuffer.toString('ascii', 0, false), ''); -assert.equal(rangeBuffer.toString('ascii', 0, ''), ''); - -// but, if end is an integer when coerced, then it will be coerced and used. -assert.equal(rangeBuffer.toString('ascii', 0, '-1'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '1'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-Infinity'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, '3'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, Number(3)), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '3.14'), 'abc'); -assert.equal(rangeBuffer.toString('ascii', 0, '1.99'), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, '-1.99'), ''); -assert.equal(rangeBuffer.toString('ascii', 0, 1.99), 'a'); -assert.equal(rangeBuffer.toString('ascii', 0, true), 'a'); - -// try toString() with a object as a encoding -assert.equal(rangeBuffer.toString({toString: function() { - return 'ascii'; -}}), 'abc'); - -// testing for smart defaults and ability to pass string values as offset -var writeTest = new Buffer('abcdes'); -writeTest.write('n', 'ascii'); -writeTest.write('o', '1', 'ascii'); -writeTest.write('d', '2', 'ascii'); -writeTest.write('e', 3, 'ascii'); -writeTest.write('j', 4, 'ascii'); -assert.equal(writeTest.toString(), 'nodejs'); - -// ASCII slice test -{ - var asciiString = 'hello world'; - - for (var i = 0; i < asciiString.length; i++) { - b[i] = asciiString.charCodeAt(i); - } - var asciiSlice = b.toString('ascii', 0, asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var written = b.write(asciiString, offset, 'ascii'); - assert.equal(asciiString.length, written); - var asciiSlice = b.toString('ascii', offset, offset + asciiString.length); - assert.equal(asciiString, asciiSlice); -} - -{ - var asciiString = 'hello world'; - var offset = 100; - - var sliceA = b.slice(offset, offset + asciiString.length); - var sliceB = b.slice(offset, offset + asciiString.length); - for (var i = 0; i < asciiString.length; i++) { - assert.equal(sliceA[i], sliceB[i]); - } -} - -// UTF-8 slice test - -var utf8String = '¡hέlló wôrld!'; -var offset = 100; - -b.write(utf8String, 0, Buffer.byteLength(utf8String), 'utf8'); -var utf8Slice = b.toString('utf8', 0, Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var written = b.write(utf8String, offset, 'utf8'); -assert.equal(Buffer.byteLength(utf8String), written); -utf8Slice = b.toString('utf8', offset, offset + Buffer.byteLength(utf8String)); -assert.equal(utf8String, utf8Slice); - -var sliceA = b.slice(offset, offset + Buffer.byteLength(utf8String)); -var sliceB = b.slice(offset, offset + Buffer.byteLength(utf8String)); -for (var i = 0; i < Buffer.byteLength(utf8String); i++) { - assert.equal(sliceA[i], sliceB[i]); -} - -{ - var slice = b.slice(100, 150); - assert.equal(50, slice.length); - for (var i = 0; i < 50; i++) { - assert.equal(b[100 + i], slice[i]); - } -} - -{ - // make sure only top level parent propagates from allocPool - var b = new Buffer(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(b.parent, c.parent); - assert.equal(b.parent, d.parent); -} - -{ - // also from a non-pooled instance - var b = new SlowBuffer(5); - var c = b.slice(0, 4); - var d = c.slice(0, 2); - assert.equal(c.parent, d.parent); -} - -{ - // Bug regression test - var testValue = '\u00F6\u65E5\u672C\u8A9E'; // ö日本語 - var buffer = new Buffer(32); - var size = buffer.write(testValue, 0, 'utf8'); -// console.log('bytes written to buffer: ' + size); - var slice = buffer.toString('utf8', 0, size); - assert.equal(slice, testValue); -} - -{ - // Test triple slice - var a = new Buffer(8); - for (var i = 0; i < 8; i++) a[i] = i; - var b = a.slice(4, 8); - assert.equal(4, b[0]); - assert.equal(5, b[1]); - assert.equal(6, b[2]); - assert.equal(7, b[3]); - var c = b.slice(2, 4); - assert.equal(6, c[0]); - assert.equal(7, c[1]); -} - -{ - var d = new Buffer([23, 42, 255]); - assert.equal(d.length, 3); - assert.equal(d[0], 23); - assert.equal(d[1], 42); - assert.equal(d[2], 255); - assert.deepStrictEqual(d, new Buffer(d)); -} - -{ - var e = new Buffer('über'); -// console.error('uber: \'%s\'', e.toString()); - assert.deepStrictEqual(e, new Buffer([195, 188, 98, 101, 114])); -} - -{ - var f = new Buffer('über', 'ascii'); -// console.error('f.length: %d (should be 4)', f.length); - assert.deepStrictEqual(f, new Buffer([252, 98, 101, 114])); -} - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - { - var f = new Buffer('über', encoding); -// console.error('f.length: %d (should be 8)', f.length); - assert.deepStrictEqual(f, new Buffer([252, 0, 98, 0, 101, 0, 114, 0])); - } - - { - var f = new Buffer('привет', encoding); -// console.error('f.length: %d (should be 12)', f.length); - var expected = new Buffer([63, 4, 64, 4, 56, 4, 50, 4, 53, 4, 66, 4]); - assert.deepStrictEqual(f, expected); - assert.equal(f.toString(encoding), 'привет'); - } - - { - var f = new Buffer([0, 0, 0, 0, 0]); - assert.equal(f.length, 5); - var size = f.write('ã‚ã„ã†ãˆãŠ', encoding); -// console.error('bytes written to buffer: %d (should be 4)', size); - assert.equal(size, 4); - assert.deepStrictEqual(f, new Buffer([0x42, 0x30, 0x44, 0x30, 0x00])); - } -}); - -{ - var f = new Buffer('\uD83D\uDC4D', 'utf-16le'); // THUMBS UP SIGN (U+1F44D) - assert.equal(f.length, 4); - assert.deepStrictEqual(f, new Buffer('3DD84DDC', 'hex')); -} - - -var arrayIsh = {0: 0, 1: 1, 2: 2, 3: 3, length: 4}; -var g = new Buffer(arrayIsh); -assert.deepStrictEqual(g, new Buffer([0, 1, 2, 3])); -var strArrayIsh = {0: '0', 1: '1', 2: '2', 3: '3', length: 4}; -g = new Buffer(strArrayIsh); -assert.deepStrictEqual(g, new Buffer([0, 1, 2, 3])); - - -// -// Test toString('base64') -// -assert.equal('TWFu', (new Buffer('Man')).toString('base64')); - -{ - // test that regular and URL-safe base64 both work - var expected = [0xff, 0xff, 0xbe, 0xff, 0xef, 0xbf, 0xfb, 0xef, 0xff]; - assert.deepStrictEqual(Buffer('//++/++/++//', 'base64'), Buffer(expected)); - assert.deepStrictEqual(Buffer('__--_--_--__', 'base64'), Buffer(expected)); -} - -{ - // big example - var quote = 'Man is distinguished, not only by his reason, but by this ' + - 'singular passion from other animals, which is a lust ' + - 'of the mind, that by a perseverance of delight in the ' + - 'continued and indefatigable generation of knowledge, ' + - 'exceeds the short vehemence of any carnal pleasure.'; - var expected = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb' + - '24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlci' + - 'BhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQ' + - 'gYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu' + - 'dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZ' + - 'GdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm' + - '5hbCBwbGVhc3VyZS4='; - assert.equal(expected, (new Buffer(quote)).toString('base64')); - - var b = new Buffer(1024); - var bytesWritten = b.write(expected, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores whitespace - var expectedWhite = expected.slice(0, 60) + ' \n' + - expected.slice(60, 120) + ' \n' + - expected.slice(120, 180) + ' \n' + - expected.slice(180, 240) + ' \n' + - expected.slice(240, 300) + '\n' + - expected.slice(300, 360) + '\n'; - b = new Buffer(1024); - bytesWritten = b.write(expectedWhite, 0, 'base64'); - assert.equal(quote.length, bytesWritten); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder on the constructor works - // even in the presence of whitespace. - b = new Buffer(expectedWhite, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); - - // check that the base64 decoder ignores illegal chars - var expectedIllegal = expected.slice(0, 60) + ' \x80' + - expected.slice(60, 120) + ' \xff' + - expected.slice(120, 180) + ' \x00' + - expected.slice(180, 240) + ' \x98' + - expected.slice(240, 300) + '\x03' + - expected.slice(300, 360); - b = new Buffer(expectedIllegal, 'base64'); - assert.equal(quote.length, b.length); - assert.equal(quote, b.toString('ascii', 0, quote.length)); -} - -assert.equal(new Buffer('', 'base64').toString(), ''); -assert.equal(new Buffer('K', 'base64').toString(), ''); - -// multiple-of-4 with padding -assert.equal(new Buffer('Kg==', 'base64').toString(), '*'); -assert.equal(new Buffer('Kio=', 'base64').toString(), '**'); -assert.equal(new Buffer('Kioq', 'base64').toString(), '***'); -assert.equal(new Buffer('KioqKg==', 'base64').toString(), '****'); -assert.equal(new Buffer('KioqKio=', 'base64').toString(), '*****'); -assert.equal(new Buffer('KioqKioq', 'base64').toString(), '******'); -assert.equal(new Buffer('KioqKioqKg==', 'base64').toString(), '*******'); -assert.equal(new Buffer('KioqKioqKio=', 'base64').toString(), '********'); -assert.equal(new Buffer('KioqKioqKioq', 'base64').toString(), '*********'); -assert.equal(new Buffer('KioqKioqKioqKg==', 'base64').toString(), - '**********'); -assert.equal(new Buffer('KioqKioqKioqKio=', 'base64').toString(), - '***********'); -assert.equal(new Buffer('KioqKioqKioqKioq', 'base64').toString(), - '************'); -assert.equal(new Buffer('KioqKioqKioqKioqKg==', 'base64').toString(), - '*************'); -assert.equal(new Buffer('KioqKioqKioqKioqKio=', 'base64').toString(), - '**************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioq', 'base64').toString(), - '***************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKg==', 'base64').toString(), - '****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKio=', 'base64').toString(), - '*****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioq', 'base64').toString(), - '******************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg==', 'base64').toString(), - '*******************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio=', 'base64').toString(), - '********************'); - -// no padding, not a multiple of 4 -assert.equal(new Buffer('Kg', 'base64').toString(), '*'); -assert.equal(new Buffer('Kio', 'base64').toString(), '**'); -assert.equal(new Buffer('KioqKg', 'base64').toString(), '****'); -assert.equal(new Buffer('KioqKio', 'base64').toString(), '*****'); -assert.equal(new Buffer('KioqKioqKg', 'base64').toString(), '*******'); -assert.equal(new Buffer('KioqKioqKio', 'base64').toString(), '********'); -assert.equal(new Buffer('KioqKioqKioqKg', 'base64').toString(), '**********'); -assert.equal(new Buffer('KioqKioqKioqKio', 'base64').toString(), '***********'); -assert.equal(new Buffer('KioqKioqKioqKioqKg', 'base64').toString(), - '*************'); -assert.equal(new Buffer('KioqKioqKioqKioqKio', 'base64').toString(), - '**************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKg', 'base64').toString(), - '****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKio', 'base64').toString(), - '*****************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKg', 'base64').toString(), - '*******************'); -assert.equal(new Buffer('KioqKioqKioqKioqKioqKioqKio', 'base64').toString(), - '********************'); - -// handle padding graciously, multiple-of-4 or not -assert.equal( - new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw==', 'base64').length, - 32 -); -assert.equal( - new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw=', 'base64').length, - 32 -); -assert.equal( - new Buffer('72INjkR5fchcxk9+VgdGPFJDxUBFR5/rMFsghgxADiw', 'base64').length, - 32 -); -assert.equal( - new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg==', 'base64').length, - 31 -); -assert.equal( - new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg=', 'base64').length, - 31 -); -assert.equal( - new Buffer('w69jACy6BgZmaFvv96HG6MYksWytuZu3T1FvGnulPg', 'base64').length, - 31 -); - -// This string encodes single '.' character in UTF-16 -var dot = new Buffer('//4uAA==', 'base64'); -assert.equal(dot[0], 0xff); -assert.equal(dot[1], 0xfe); -assert.equal(dot[2], 0x2e); -assert.equal(dot[3], 0x00); -assert.equal(dot.toString('base64'), '//4uAA=='); - -{ - // Writing base64 at a position > 0 should not mangle the result. - // - // https://github.com/joyent/node/issues/402 - var segments = ['TWFkbmVzcz8h', 'IFRoaXM=', 'IGlz', 'IG5vZGUuanMh']; - var b = new Buffer(64); - var pos = 0; - - for (var i = 0; i < segments.length; ++i) { - pos += b.write(segments[i], pos, 'base64'); - } - assert.equal(b.toString('latin1', 0, pos), 'Madness?! This is node.js!'); - assert.equal(b.toString('binary', 0, pos), 'Madness?! This is node.js!'); -} - -// Regression test for https://github.com/nodejs/node/issues/3496. -// assert.equal(Buffer('=bad'.repeat(1e4), 'base64').length, 0); - -{ - // Creating buffers larger than pool size. - var l = Buffer.poolSize + 5; - var s = 'h'.repeat(l); - - var b = new Buffer(s); - - for (var i = 0; i < l; i++) { - assert.equal('h'.charCodeAt(0), b[i]); - } - - var sb = b.toString(); - assert.equal(sb.length, s.length); - assert.equal(sb, s); -} - -{ - // Single argument slice - var b = new Buffer('abcde'); - assert.equal('bcde', b.slice(1).toString()); -} - -// slice(0,0).length === 0 -assert.equal(0, Buffer('hello').slice(0, 0).length); - -// test hex toString -// console.log('Create hex string from buffer'); -var hexb = new Buffer(256); -for (var i = 0; i < 256; i++) { - hexb[i] = i; -} -var hexStr = hexb.toString('hex'); -assert.equal(hexStr, - '000102030405060708090a0b0c0d0e0f' + - '101112131415161718191a1b1c1d1e1f' + - '202122232425262728292a2b2c2d2e2f' + - '303132333435363738393a3b3c3d3e3f' + - '404142434445464748494a4b4c4d4e4f' + - '505152535455565758595a5b5c5d5e5f' + - '606162636465666768696a6b6c6d6e6f' + - '707172737475767778797a7b7c7d7e7f' + - '808182838485868788898a8b8c8d8e8f' + - '909192939495969798999a9b9c9d9e9f' + - 'a0a1a2a3a4a5a6a7a8a9aaabacadaeaf' + - 'b0b1b2b3b4b5b6b7b8b9babbbcbdbebf' + - 'c0c1c2c3c4c5c6c7c8c9cacbcccdcecf' + - 'd0d1d2d3d4d5d6d7d8d9dadbdcdddedf' + - 'e0e1e2e3e4e5e6e7e8e9eaebecedeeef' + - 'f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff'); - -// console.log('Create buffer from hex string'); -var hexb2 = new Buffer(hexStr, 'hex'); -for (var i = 0; i < 256; i++) { - assert.equal(hexb2[i], hexb[i]); -} - -// Test single hex character throws TypeError -// - https://github.com/nodejs/node/issues/6770 -assert.throws(function() { - Buffer.from('A', 'hex'); -}, TypeError); - -// Test single base64 char encodes as 0 -// assert.strictEqual(Buffer.from('A', 'base64').length, 0); - -{ - // test an invalid slice end. -// console.log('Try to slice off the end of the buffer'); - var b = new Buffer([1, 2, 3, 4, 5]); - var b2 = b.toString('hex', 1, 10000); - var b3 = b.toString('hex', 1, 5); - var b4 = b.toString('hex', 1); - assert.equal(b2, b3); - assert.equal(b2, b4); -} - -function buildBuffer(data) { - if (Array.isArray(data)) { - var buffer = Buffer(data.length); - data.forEach(function(v, k) { - buffer[k] = v; - }); - return buffer; - } - return null; -} - -var x = buildBuffer([0x81, 0xa3, 0x66, 0x6f, 0x6f, 0xa3, 0x62, 0x61, 0x72]); - -// console.log(x.inspect()); -assert.equal('', x.inspect()); - -{ - var z = x.slice(4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(5, z.length); - assert.equal(0x6f, z[0]); - assert.equal(0xa3, z[1]); - assert.equal(0x62, z[2]); - assert.equal(0x61, z[3]); - assert.equal(0x72, z[4]); -} - -{ - var z = x.slice(0); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(z.length, x.length); -} - -{ - var z = x.slice(0, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(4, z.length); - assert.equal(0x81, z[0]); - assert.equal(0xa3, z[1]); -} - -{ - var z = x.slice(0, 9); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(9, z.length); -} - -{ - var z = x.slice(1, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(3, z.length); - assert.equal(0xa3, z[0]); -} - -{ - var z = x.slice(2, 4); -// console.log(z.inspect()); -// console.log(z.length); - assert.equal(2, z.length); - assert.equal(0x66, z[0]); - assert.equal(0x6f, z[1]); -} - -assert.equal(0, Buffer('hello').slice(0, 0).length); - -['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - var b = new Buffer(10); - b.write('ã‚ã„ã†ãˆãŠ', encoding); - assert.equal(b.toString(encoding), 'ã‚ã„ã†ãˆãŠ'); -}); - -{ - // latin1 encoding should write only one byte per character. - var b = Buffer([0xde, 0xad, 0xbe, 0xef]); - var s = String.fromCharCode(0xffff); - b.write(s, 0, 'latin1'); - assert.equal(0xff, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); - s = String.fromCharCode(0xaaee); - b.write(s, 0, 'latin1'); - assert.equal(0xee, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); -} - -{ - // Binary encoding should write only one byte per character. - var b = Buffer([0xde, 0xad, 0xbe, 0xef]); - var s = String.fromCharCode(0xffff); - b.write(s, 0, 'binary'); - assert.equal(0xff, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); - s = String.fromCharCode(0xaaee); - b.write(s, 0, 'binary'); - assert.equal(0xee, b[0]); - assert.equal(0xad, b[1]); - assert.equal(0xbe, b[2]); - assert.equal(0xef, b[3]); -} - -{ - // #1210 Test UTF-8 string includes null character - var buf = new Buffer('\0'); - assert.equal(buf.length, 1); - buf = new Buffer('\0\0'); - assert.equal(buf.length, 2); -} - -{ - var buf = new Buffer(2); - var written = buf.write(''); // 0byte - assert.equal(written, 0); - written = buf.write('\0'); // 1byte (v8 adds null terminator) - assert.equal(written, 1); - written = buf.write('a\0'); // 1byte * 2 - assert.equal(written, 2); - written = buf.write('ã‚'); // 3bytes - assert.equal(written, 0); - written = buf.write('\0ã‚'); // 1byte + 3bytes - assert.equal(written, 1); - written = buf.write('\0\0ã‚'); // 1byte * 2 + 3bytes - assert.equal(written, 2); -} - -{ - var buf = new Buffer(10); - written = buf.write('ã‚ã„ã†'); // 3bytes * 3 (v8 adds null terminator) - assert.equal(written, 9); - written = buf.write('ã‚ã„ã†\0'); // 3bytes * 3 + 1byte - assert.equal(written, 10); -} - -{ - // #243 Test write() with maxLength - var buf = new Buffer(4); - buf.fill(0xFF); - var written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 4); -// console.log(buf); - assert.equal(written, 3); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0x63); - - buf.fill(0xFF); - written = buf.write('abcd', 1, 2, 'utf8'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0x61); - assert.equal(buf[2], 0x62); - assert.equal(buf[3], 0xFF); - - buf.fill(0xFF); - written = buf.write('abcdef', 1, 2, 'hex'); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0xFF); - assert.equal(buf[1], 0xAB); - assert.equal(buf[2], 0xCD); - assert.equal(buf[3], 0xFF); - - ['ucs2', 'ucs-2', 'utf16le', 'utf-16le'].forEach(function(encoding) { - buf.fill(0xFF); - written = buf.write('abcd', 0, 2, encoding); -// console.log(buf); - assert.equal(written, 2); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x00); - assert.equal(buf[2], 0xFF); - assert.equal(buf[3], 0xFF); - }); -} - -{ - // test offset returns are correct - var b = new Buffer(16); - assert.equal(4, b.writeUInt32LE(0, 0)); - assert.equal(6, b.writeUInt16LE(0, 4)); - assert.equal(7, b.writeUInt8(0, 6)); - assert.equal(8, b.writeInt8(0, 7)); - assert.equal(16, b.writeDoubleLE(0, 8)); -} - -{ - // test unmatched surrogates not producing invalid utf8 output - // ef bf bd = utf-8 representation of unicode replacement character - // see https://codereview.chromium.org/121173009/ - var buf = new Buffer('ab\ud800cd', 'utf8'); - assert.equal(buf[0], 0x61); - assert.equal(buf[1], 0x62); - assert.equal(buf[2], 0xef); - assert.equal(buf[3], 0xbf); - assert.equal(buf[4], 0xbd); - assert.equal(buf[5], 0x63); - assert.equal(buf[6], 0x64); -} - -{ - // test for buffer overrun - var buf = new Buffer([0, 0, 0, 0, 0]); // length: 5 - var sub = buf.slice(0, 4); // length: 4 - written = sub.write('12345', 'latin1'); - assert.equal(written, 4); - assert.equal(buf[4], 0); - written = sub.write('12345', 'binary'); - assert.equal(written, 4); - assert.equal(buf[4], 0); -} - -// Check for fractional length args, junk length args, etc. -// https://github.com/joyent/node/issues/1758 - -// Call .fill() first, stops valgrind warning about uninitialized memory reads. -Buffer(3.3).fill().toString(); // throws bad argument error in commit 43cb4ec -assert.equal(Buffer(NaN).length, 0); -assert.equal(Buffer(3.3).length, 3); -assert.equal(Buffer({length: 3.3}).length, 3); -assert.equal(Buffer({length: 'BAM'}).length, 0); - -// Make sure that strings are not coerced to numbers. -assert.equal(Buffer('99').length, 2); -assert.equal(Buffer('13.37').length, 5); - -// Ensure that the length argument is respected. -'ascii utf8 hex base64 latin1 binary'.split(' ').forEach(function(enc) { - assert.equal(Buffer(1).write('aaaaaa', 0, 1, enc), 1); -}); - -{ - // Regression test, guard against buffer overrun in the base64 decoder. - var a = Buffer(3); - var b = Buffer('xxx'); - a.write('aaaaaaaa', 'base64'); - assert.equal(b.toString(), 'xxx'); -} - -// issue GH-3416 -Buffer(Buffer(0), 0, 0); - -[ 'hex', - 'utf8', - 'utf-8', - 'ascii', - 'latin1', - 'binary', - 'base64', - 'ucs2', - 'ucs-2', - 'utf16le', - 'utf-16le' ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), true); - }); - -[ 'utf9', - 'utf-7', - 'Unicode-FTW', - 'new gnu gun' ].forEach(function(enc) { - assert.equal(Buffer.isEncoding(enc), false); - }); - - -// GH-5110 -{ - var buffer = new Buffer('test'); - var string = JSON.stringify(buffer); - - assert.strictEqual(string, '{"type":"Buffer","data":[116,101,115,116]}'); - - assert.deepStrictEqual(buffer, JSON.parse(string, function(key, value) { - return value && value.type === 'Buffer' - ? new Buffer(value.data) - : value; - })); -} - -// issue GH-7849 -{ - var buf = new Buffer('test'); - var json = JSON.stringify(buf); - var obj = JSON.parse(json); - var copy = new Buffer(obj); - - assert(buf.equals(copy)); -} - -// issue GH-4331 -assert.throws(function() { - Buffer(0xFFFFFFFF); -}, RangeError); -assert.throws(function() { - Buffer(0xFFFFFFFFF); -}, RangeError); - -// issue GH-5587 -assert.throws(function() { - var buf = new Buffer(8); - buf.writeFloatLE(0, 5); -}, RangeError); -assert.throws(function() { - var buf = new Buffer(16); - buf.writeDoubleLE(0, 9); -}, RangeError); - - -// attempt to overflow buffers, similar to previous bug in array buffers -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(0xffffffff); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, 0xffffffff); -}, RangeError); - - -// ensure negative values can't get past offset -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.readFloatLE(-1); -}, RangeError); - -assert.throws(function() { - var buf = Buffer(8); - buf.writeFloatLE(0.0, -1); -}, RangeError); - -// offset checks -{ - var buf = new Buffer(0); - - assert.throws(function() { buf.readUInt8(0); }, RangeError); - assert.throws(function() { buf.readInt8(0); }, RangeError); -} - -{ - var buf = new Buffer([0xFF]); - - assert.equal(buf.readUInt8(0), 255); - assert.equal(buf.readInt8(0), -1); -} - -[16, 32].forEach(function(bits) { - var buf = new Buffer(bits / 8 - 1); - - assert.throws(function() { buf['readUInt' + bits + 'BE'](0); }, - RangeError, - 'readUInt' + bits + 'BE'); - - assert.throws(function() { buf['readUInt' + bits + 'LE'](0); }, - RangeError, - 'readUInt' + bits + 'LE'); - - assert.throws(function() { buf['readInt' + bits + 'BE'](0); }, - RangeError, - 'readInt' + bits + 'BE()'); - - assert.throws(function() { buf['readInt' + bits + 'LE'](0); }, - RangeError, - 'readInt' + bits + 'LE()'); -}); - -[16, 32].forEach(function(bits) { - var buf = new Buffer([0xFF, 0xFF, 0xFF, 0xFF]); - - assert.equal(buf['readUInt' + bits + 'BE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readUInt' + bits + 'LE'](0), - (0xFFFFFFFF >>> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'BE'](0), - (0xFFFFFFFF >> (32 - bits))); - - assert.equal(buf['readInt' + bits + 'LE'](0), - (0xFFFFFFFF >> (32 - bits))); -}); - -// test for common read(U)IntLE/BE -{ - var buf = new Buffer([0x01, 0x02, 0x03, 0x04, 0x05, 0x06]); - - assert.strictEqual(buf.readUIntLE(0, 1), 0x01); - assert.strictEqual(buf.readUIntBE(0, 1), 0x01); - assert.strictEqual(buf.readUIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readUIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readUIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readUIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readUIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readUIntBE(0, 6), 0x010203040506); - assert.strictEqual(buf.readIntLE(0, 1), 0x01); - assert.strictEqual(buf.readIntBE(0, 1), 0x01); - assert.strictEqual(buf.readIntLE(0, 3), 0x030201); - assert.strictEqual(buf.readIntBE(0, 3), 0x010203); - assert.strictEqual(buf.readIntLE(0, 5), 0x0504030201); - assert.strictEqual(buf.readIntBE(0, 5), 0x0102030405); - assert.strictEqual(buf.readIntLE(0, 6), 0x060504030201); - assert.strictEqual(buf.readIntBE(0, 6), 0x010203040506); -} - -// test for common write(U)IntLE/BE -{ - var buf = Buffer(3); - buf.writeUIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeUIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readUIntBE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeIntLE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeIntBE(0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56]); - assert.equal(buf.readIntBE(0, 3), 0x123456); - - buf = Buffer(3); - buf.writeIntLE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xaa, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123456); - - buf = Buffer(3); - buf.writeIntBE(-0x123456, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xaa]); - assert.equal(buf.readIntBE(0, 3), -0x123456); - - buf = Buffer(3); - buf.writeIntLE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0xcc, 0xed]); - assert.equal(buf.readIntLE(0, 3), -0x123400); - - buf = Buffer(3); - buf.writeIntBE(-0x123400, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcc, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x123400); - - buf = Buffer(3); - buf.writeIntLE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0xee]); - assert.equal(buf.readIntLE(0, 3), -0x120000); - - buf = Buffer(3); - buf.writeIntBE(-0x120000, 0, 3); - assert.deepStrictEqual(buf.toJSON().data, [0xee, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 3), -0x120000); - - buf = Buffer(5); - buf.writeUIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readUIntLE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeUIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readUIntBE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeIntLE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x90, 0x78, 0x56, 0x34, 0x12]); - assert.equal(buf.readIntLE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeIntBE(0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x12, 0x34, 0x56, 0x78, 0x90]); - assert.equal(buf.readIntBE(0, 5), 0x1234567890); - - buf = Buffer(5); - buf.writeIntLE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x70, 0x87, 0xa9, 0xcb, 0xed]); - assert.equal(buf.readIntLE(0, 5), -0x1234567890); - - buf = Buffer(5); - buf.writeIntBE(-0x1234567890, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xed, 0xcb, 0xa9, 0x87, 0x70]); - assert.equal(buf.readIntBE(0, 5), -0x1234567890); - - buf = Buffer(5); - buf.writeIntLE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0x00, 0x00, 0x00, 0xee, 0xff]); - assert.equal(buf.readIntLE(0, 5), -0x0012000000); - - buf = Buffer(5); - buf.writeIntBE(-0x0012000000, 0, 5); - assert.deepStrictEqual(buf.toJSON().data, [0xff, 0xee, 0x00, 0x00, 0x00]); - assert.equal(buf.readIntBE(0, 5), -0x0012000000); -} - -// test Buffer slice -{ - var buf = new Buffer('0123456789'); - assert.equal(buf.slice(-10, 10), '0123456789'); - assert.equal(buf.slice(-20, 10), '0123456789'); - assert.equal(buf.slice(-20, -10), ''); - assert.equal(buf.slice(), '0123456789'); - assert.equal(buf.slice(0), '0123456789'); - assert.equal(buf.slice(0, 0), ''); - assert.equal(buf.slice(undefined), '0123456789'); - assert.equal(buf.slice('foobar'), '0123456789'); - assert.equal(buf.slice(undefined, undefined), '0123456789'); - - assert.equal(buf.slice(2), '23456789'); - assert.equal(buf.slice(5), '56789'); - assert.equal(buf.slice(10), ''); - assert.equal(buf.slice(5, 8), '567'); - assert.equal(buf.slice(8, -1), '8'); - assert.equal(buf.slice(-10), '0123456789'); - assert.equal(buf.slice(0, -9), '0'); - assert.equal(buf.slice(0, -10), ''); - assert.equal(buf.slice(0, -1), '012345678'); - assert.equal(buf.slice(2, -2), '234567'); - assert.equal(buf.slice(0, 65536), '0123456789'); - assert.equal(buf.slice(65536, 0), ''); - assert.equal(buf.slice(-5, -8), ''); - assert.equal(buf.slice(-5, -3), '56'); - assert.equal(buf.slice(-10, 10), '0123456789'); - for (var i = 0, s = buf.toString(); i < buf.length; ++i) { - assert.equal(buf.slice(i), s.slice(i)); - assert.equal(buf.slice(0, i), s.slice(0, i)); - assert.equal(buf.slice(-i), s.slice(-i)); - assert.equal(buf.slice(0, -i), s.slice(0, -i)); - } - - var utf16Buf = new Buffer('0123456789', 'utf16le'); - assert.deepStrictEqual(utf16Buf.slice(0, 6), Buffer('012', 'utf16le')); - - assert.equal(buf.slice('0', '1'), '0'); - assert.equal(buf.slice('-5', '10'), '56789'); - assert.equal(buf.slice('-10', '10'), '0123456789'); - assert.equal(buf.slice('-10', '-5'), '01234'); - assert.equal(buf.slice('-10', '-0'), ''); - assert.equal(buf.slice('111'), ''); - assert.equal(buf.slice('0', '-111'), ''); - - // try to slice a zero length Buffer - // see https://github.com/joyent/node/issues/5881 - SlowBuffer(0).slice(0, 1); -} - -// Regression test for #5482: should throw but not assert in C++ land. -assert.throws(function() { - Buffer('', 'buffer'); -}, TypeError); - -// Regression test for #6111. Constructing a buffer from another buffer -// should a) work, and b) not corrupt the source buffer. -{ - var a = [0]; - for (var i = 0; i < 7; ++i) a = a.concat(a); - a = a.map(function(_, i) { return i; }); - var b = Buffer(a); - var c = Buffer(b); - assert.strictEqual(b.length, a.length); - assert.strictEqual(c.length, a.length); - for (var i = 0, k = a.length; i < k; ++i) { - assert.strictEqual(a[i], i); - assert.strictEqual(b[i], i); - assert.strictEqual(c[i], i); - } -} - - -assert.throws(function() { - new Buffer((-1 >>> 0) + 1); -}, RangeError); - -assert.throws(function() { - SlowBuffer((-1 >>> 0) + 1); -}, RangeError); - -if (common.hasCrypto) { - // Test truncation after decode - // var crypto = require('crypto'); - - var b1 = new Buffer('YW55=======', 'base64'); - var b2 = new Buffer('YW55', 'base64'); - - assert.equal( - 1 /*crypto.createHash('sha1').update(b1).digest('hex')*/, - 1 /*crypto.createHash('sha1').update(b2).digest('hex')*/ - ); -} else { - common.skip('missing crypto'); -} - -// Test Compare -{ - var b = new Buffer(1).fill('a'); - var c = new Buffer(1).fill('c'); - var d = new Buffer(2).fill('aa'); - - assert.equal(b.compare(c), -1); - assert.equal(c.compare(d), 1); - assert.equal(d.compare(b), 1); - assert.equal(b.compare(d), -1); - assert.equal(b.compare(b), 0); - - assert.equal(Buffer.compare(b, c), -1); - assert.equal(Buffer.compare(c, d), 1); - assert.equal(Buffer.compare(d, b), 1); - assert.equal(Buffer.compare(b, d), -1); - assert.equal(Buffer.compare(c, c), 0); - - assert.equal(Buffer.compare(Buffer(0), Buffer(0)), 0); - assert.equal(Buffer.compare(Buffer(0), Buffer(1)), -1); - assert.equal(Buffer.compare(Buffer(1), Buffer(0)), 1); -} - -assert.throws(function() { - var b = Buffer(1); - Buffer.compare(b, 'abc'); -}); - -assert.throws(function() { - var b = Buffer(1); - Buffer.compare('abc', b); -}); - -assert.throws(function() { - var b = Buffer(1); - b.compare('abc'); -}); - -// Test Equals -{ - var b = new Buffer(5).fill('abcdf'); - var c = new Buffer(5).fill('abcdf'); - var d = new Buffer(5).fill('abcde'); - var e = new Buffer(6).fill('abcdef'); - - assert.ok(b.equals(c)); - assert.ok(!c.equals(d)); - assert.ok(!d.equals(e)); - assert.ok(d.equals(d)); -} - -assert.throws(function() { - var b = Buffer(1); - b.equals('abc'); -}); - -// Regression test for https://github.com/nodejs/node/issues/649. -assert.throws(function() { Buffer(1422561062959).toString('utf8'); }); - -var ps = Buffer.poolSize; -Buffer.poolSize = 0; -assert.equal(Buffer(1).parent, undefined); -Buffer.poolSize = ps; - -// Test Buffer.copy() segfault -assert.throws(function() { - Buffer(10).copy(); -}); - -var regErrorMsg = new RegExp('First argument must be a string, Buffer, ' + - 'ArrayBuffer, Array, or array-like object.'); - -assert.throws(function() { - new Buffer(); -}, regErrorMsg); - -assert.throws(function() { - new Buffer(null); -}, regErrorMsg); - - -// Test prototype getters don't throw -assert.equal(Buffer.prototype.parent, undefined); -assert.equal(Buffer.prototype.offset, undefined); -assert.equal(SlowBuffer.prototype.parent, undefined); -assert.equal(SlowBuffer.prototype.offset, undefined); - -{ - // Test that large negative Buffer length inputs don't affect the pool offset. - // Use the fromArrayLike() variant here because it's more lenient - // about its input and passes the length directly to allocate(). - assert.deepStrictEqual(Buffer({ length: -Buffer.poolSize }), Buffer.from('')); - assert.deepStrictEqual(Buffer({ length: -100 }), Buffer.from('')); - - // Check pool offset after that by trying to write string into the pool. - assert.doesNotThrow(() => Buffer.from('abc')); -} - - -// Test failed or zero-sized Buffer allocations not affecting typed arrays -{ - var zeroArray = new Uint32Array(10).fill(0); - var sizes = [1e10, 0, 0.1, -1, 'a', undefined, null, NaN]; - var allocators = [ - Buffer, - SlowBuffer, - Buffer.alloc, - Buffer.allocUnsafe, - Buffer.allocUnsafeSlow - ]; - for (var allocator of allocators) { - for (var size of sizes) { - try { - allocator(size); - } catch (e) { - assert.deepStrictEqual(new Uint32Array(10), zeroArray); - } - } - } -} - -// Test that large negative Buffer length inputs throw errors. -assert.throws(() => Buffer(-Buffer.poolSize), - '"size" argument must not be negative'); -assert.throws(() => Buffer(-100), - '"size" argument must not be negative'); -assert.throws(() => Buffer(-1), - '"size" argument must not be negative'); - diff --git a/node_modules/aws-sdk/node_modules/buffer/test/slice.js b/node_modules/aws-sdk/node_modules/buffer/test/slice.js deleted file mode 100644 index 25c111c..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/slice.js +++ /dev/null @@ -1,37 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('modifying buffer created by .slice() modifies original memory', function (t) { - if (!B.TYPED_ARRAY_SUPPORT) return t.end() - - var buf1 = new B(26) - for (var i = 0; i < 26; i++) { - buf1[i] = i + 97 // 97 is ASCII a - } - - var buf2 = buf1.slice(0, 3) - t.equal(buf2.toString('ascii', 0, buf2.length), 'abc') - - buf2[0] = '!'.charCodeAt(0) - t.equal(buf1.toString('ascii', 0, buf2.length), '!bc') - - t.end() -}) - -test('modifying parent buffer modifies .slice() buffer\'s memory', function (t) { - if (!B.TYPED_ARRAY_SUPPORT) return t.end() - - var buf1 = new B(26) - for (var i = 0; i < 26; i++) { - buf1[i] = i + 97 // 97 is ASCII a - } - - var buf2 = buf1.slice(0, 3) - t.equal(buf2.toString('ascii', 0, buf2.length), 'abc') - - buf1[0] = '!'.charCodeAt(0) - t.equal(buf2.toString('ascii', 0, buf2.length), '!bc') - - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/static.js b/node_modules/aws-sdk/node_modules/buffer/test/static.js deleted file mode 100644 index 4de900b..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/static.js +++ /dev/null @@ -1,17 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('Buffer.isEncoding', function (t) { - t.equal(B.isEncoding('HEX'), true) - t.equal(B.isEncoding('hex'), true) - t.equal(B.isEncoding('bad'), false) - t.end() -}) - -test('Buffer.isBuffer', function (t) { - t.equal(B.isBuffer(new B('hey', 'utf8')), true) - t.equal(B.isBuffer(new B([1, 2, 3], 'utf8')), true) - t.equal(B.isBuffer('hey'), false) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/to-string.js b/node_modules/aws-sdk/node_modules/buffer/test/to-string.js deleted file mode 100644 index 2950d4d..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/to-string.js +++ /dev/null @@ -1,233 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('utf8 buffer to base64', function (t) { - t.equal( - new B('Õ×ab', 'utf8').toString('base64'), - '1YHXkGFi' - ) - t.end() -}) - -test('utf8 buffer to hex', function (t) { - t.equal( - new B('Õ×ab', 'utf8').toString('hex'), - 'd581d7906162' - ) - t.end() -}) - -test('utf8 to utf8', function (t) { - t.equal( - new B('öäüõÖÄÜÕ', 'utf8').toString('utf8'), - 'öäüõÖÄÜÕ' - ) - t.end() -}) - -test('utf16le to utf16', function (t) { - t.equal( - new B(new B('abcd', 'utf8').toString('utf16le'), 'utf16le').toString('utf8'), - 'abcd' - ) - t.end() -}) - -test('utf16le to hex', function (t) { - t.equal( - new B('abcd', 'utf16le').toString('hex'), - '6100620063006400' - ) - t.end() -}) - -test('ascii buffer to base64', function (t) { - t.equal( - new B('123456!@#$%^', 'ascii').toString('base64'), - 'MTIzNDU2IUAjJCVe' - ) - t.end() -}) - -test('ascii buffer to hex', function (t) { - t.equal( - new B('123456!@#$%^', 'ascii').toString('hex'), - '31323334353621402324255e' - ) - t.end() -}) - -test('base64 buffer to utf8', function (t) { - t.equal( - new B('1YHXkGFi', 'base64').toString('utf8'), - 'Õ×ab' - ) - t.end() -}) - -test('hex buffer to utf8', function (t) { - t.equal( - new B('d581d7906162', 'hex').toString('utf8'), - 'Õ×ab' - ) - t.end() -}) - -test('base64 buffer to ascii', function (t) { - t.equal( - new B('MTIzNDU2IUAjJCVe', 'base64').toString('ascii'), - '123456!@#$%^' - ) - t.end() -}) - -test('hex buffer to ascii', function (t) { - t.equal( - new B('31323334353621402324255e', 'hex').toString('ascii'), - '123456!@#$%^' - ) - t.end() -}) - -test('base64 buffer to binary', function (t) { - t.equal( - new B('MTIzNDU2IUAjJCVe', 'base64').toString('binary'), - '123456!@#$%^' - ) - t.end() -}) - -test('hex buffer to binary', function (t) { - t.equal( - new B('31323334353621402324255e', 'hex').toString('binary'), - '123456!@#$%^' - ) - t.end() -}) - -test('utf8 to binary', function (t) { - /* jshint -W100 */ - t.equal( - new B('öäüõÖÄÜÕ', 'utf8').toString('binary'), - 'öäüõÖÄÜÕ' - ) - /* jshint +W100 */ - t.end() -}) - -test('utf8 replacement chars (1 byte sequence)', function (t) { - t.equal( - new B([ 0x80 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0x7F ]).toString(), - '\u007F' - ) - t.end() -}) - -test('utf8 replacement chars (2 byte sequences)', function (t) { - t.equal( - new B([ 0xC7 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xC7, 0xB1 ]).toString(), - '\u01F1' - ) - t.equal( - new B([ 0xC0, 0xB1 ]).toString(), - '\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xC1, 0xB1 ]).toString(), - '\uFFFD\uFFFD' - ) - t.end() -}) - -test('utf8 replacement chars (3 byte sequences)', function (t) { - t.equal( - new B([ 0xE0 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xE0, 0xAC ]).toString(), - '\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xE0, 0xAC, 0xB9 ]).toString(), - '\u0B39' - ) - t.end() -}) - -test('utf8 replacement chars (4 byte sequences)', function (t) { - t.equal( - new B([ 0xF4 ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xF4, 0x8F ]).toString(), - '\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xF4, 0x8F, 0x80 ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xF4, 0x8F, 0x80, 0x84 ]).toString(), - '\uDBFC\uDC04' - ) - t.equal( - new B([ 0xFF ]).toString(), - '\uFFFD' - ) - t.equal( - new B([ 0xFF, 0x8F, 0x80, 0x84 ]).toString(), - '\uFFFD\uFFFD\uFFFD\uFFFD' - ) - t.end() -}) - -test('utf8 replacement chars on 256 random bytes', function (t) { - t.equal( - new B([ 152, 130, 206, 23, 243, 238, 197, 44, 27, 86, 208, 36, 163, 184, 164, 21, 94, 242, 178, 46, 25, 26, 253, 178, 72, 147, 207, 112, 236, 68, 179, 190, 29, 83, 239, 147, 125, 55, 143, 19, 157, 68, 157, 58, 212, 224, 150, 39, 128, 24, 94, 225, 120, 121, 75, 192, 112, 19, 184, 142, 203, 36, 43, 85, 26, 147, 227, 139, 242, 186, 57, 78, 11, 102, 136, 117, 180, 210, 241, 92, 3, 215, 54, 167, 249, 1, 44, 225, 146, 86, 2, 42, 68, 21, 47, 238, 204, 153, 216, 252, 183, 66, 222, 255, 15, 202, 16, 51, 134, 1, 17, 19, 209, 76, 238, 38, 76, 19, 7, 103, 249, 5, 107, 137, 64, 62, 170, 57, 16, 85, 179, 193, 97, 86, 166, 196, 36, 148, 138, 193, 210, 69, 187, 38, 242, 97, 195, 219, 252, 244, 38, 1, 197, 18, 31, 246, 53, 47, 134, 52, 105, 72, 43, 239, 128, 203, 73, 93, 199, 75, 222, 220, 166, 34, 63, 236, 11, 212, 76, 243, 171, 110, 78, 39, 205, 204, 6, 177, 233, 212, 243, 0, 33, 41, 122, 118, 92, 252, 0, 157, 108, 120, 70, 137, 100, 223, 243, 171, 232, 66, 126, 111, 142, 33, 3, 39, 117, 27, 107, 54, 1, 217, 227, 132, 13, 166, 3, 73, 53, 127, 225, 236, 134, 219, 98, 214, 125, 148, 24, 64, 142, 111, 231, 194, 42, 150, 185, 10, 182, 163, 244, 19, 4, 59, 135, 16 ]).toString(), - '\uFFFD\uFFFD\uFFFD\u0017\uFFFD\uFFFD\uFFFD\u002C\u001B\u0056\uFFFD\u0024\uFFFD\uFFFD\uFFFD\u0015\u005E\uFFFD\uFFFD\u002E\u0019\u001A\uFFFD\uFFFD\u0048\uFFFD\uFFFD\u0070\uFFFD\u0044\uFFFD\uFFFD\u001D\u0053\uFFFD\uFFFD\u007D\u0037\uFFFD\u0013\uFFFD\u0044\uFFFD\u003A\uFFFD\uFFFD\uFFFD\u0027\uFFFD\u0018\u005E\uFFFD\u0078\u0079\u004B\uFFFD\u0070\u0013\uFFFD\uFFFD\uFFFD\u0024\u002B\u0055\u001A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0039\u004E\u000B\u0066\uFFFD\u0075\uFFFD\uFFFD\uFFFD\u005C\u0003\uFFFD\u0036\uFFFD\uFFFD\u0001\u002C\uFFFD\uFFFD\u0056\u0002\u002A\u0044\u0015\u002F\uFFFD\u0319\uFFFD\uFFFD\uFFFD\u0042\uFFFD\uFFFD\u000F\uFFFD\u0010\u0033\uFFFD\u0001\u0011\u0013\uFFFD\u004C\uFFFD\u0026\u004C\u0013\u0007\u0067\uFFFD\u0005\u006B\uFFFD\u0040\u003E\uFFFD\u0039\u0010\u0055\uFFFD\uFFFD\u0061\u0056\uFFFD\uFFFD\u0024\uFFFD\uFFFD\uFFFD\uFFFD\u0045\uFFFD\u0026\uFFFD\u0061\uFFFD\uFFFD\uFFFD\uFFFD\u0026\u0001\uFFFD\u0012\u001F\uFFFD\u0035\u002F\uFFFD\u0034\u0069\u0048\u002B\uFFFD\uFFFD\uFFFD\u0049\u005D\uFFFD\u004B\uFFFD\u0726\u0022\u003F\uFFFD\u000B\uFFFD\u004C\uFFFD\uFFFD\u006E\u004E\u0027\uFFFD\uFFFD\u0006\uFFFD\uFFFD\uFFFD\uFFFD\u0000\u0021\u0029\u007A\u0076\u005C\uFFFD\u0000\uFFFD\u006C\u0078\u0046\uFFFD\u0064\uFFFD\uFFFD\uFFFD\uFFFD\u0042\u007E\u006F\uFFFD\u0021\u0003\u0027\u0075\u001B\u006B\u0036\u0001\uFFFD\uFFFD\uFFFD\u000D\uFFFD\u0003\u0049\u0035\u007F\uFFFD\uFFFD\uFFFD\uFFFD\u0062\uFFFD\u007D\uFFFD\u0018\u0040\uFFFD\u006F\uFFFD\uFFFD\u002A\uFFFD\uFFFD\u000A\uFFFD\uFFFD\uFFFD\u0013\u0004\u003B\uFFFD\u0010' - ) - t.end() -}) - -test('utf8 replacement chars for anything in the surrogate pair range', function (t) { - t.equal( - new B([ 0xED, 0x9F, 0xBF ]).toString(), - '\uD7FF' - ) - t.equal( - new B([ 0xED, 0xA0, 0x80 ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xED, 0xBE, 0x8B ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xED, 0xBF, 0xBF ]).toString(), - '\uFFFD\uFFFD\uFFFD' - ) - t.equal( - new B([ 0xEE, 0x80, 0x80 ]).toString(), - '\uE000' - ) - t.end() -}) - -test('utf8 don\'t replace the replacement char', function (t) { - t.equal( - new B('\uFFFD').toString(), - '\uFFFD' - ) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/write.js b/node_modules/aws-sdk/node_modules/buffer/test/write.js deleted file mode 100644 index 5841806..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/write.js +++ /dev/null @@ -1,131 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') -var isnan = require('is-nan') - -test('buffer.write string should get parsed as number', function (t) { - var b = new B(64) - b.writeUInt16LE('1003', 0) - t.equal(b.readUInt16LE(0), 1003) - t.end() -}) - -test('buffer.writeUInt8 a fractional number will get Math.floored', function (t) { - // Some extra work is necessary to make this test pass with the Object implementation - - var b = new B(1) - b.writeInt8(5.5, 0) - t.equal(b[0], 5) - t.end() -}) - -test('writeUint8 with a negative number throws', function (t) { - var buf = new B(1) - - t.throws(function () { - buf.writeUInt8(-3, 0) - }) - - t.end() -}) - -test('hex of write{Uint,Int}{8,16,32}{LE,BE}', function (t) { - t.plan(2 * (2 * 2 * 2 + 2)) - var hex = [ - '03', '0300', '0003', '03000000', '00000003', - 'fd', 'fdff', 'fffd', 'fdffffff', 'fffffffd' - ] - var reads = [ 3, 3, 3, 3, 3, -3, -3, -3, -3, -3 ] - var xs = ['UInt', 'Int'] - var ys = [8, 16, 32] - for (var i = 0; i < xs.length; i++) { - var x = xs[i] - for (var j = 0; j < ys.length; j++) { - var y = ys[j] - var endianesses = (y === 8) ? [''] : ['LE', 'BE'] - for (var k = 0; k < endianesses.length; k++) { - var z = endianesses[k] - - var v1 = new B(y / 8) - var writefn = 'write' + x + y + z - var val = (x === 'Int') ? -3 : 3 - v1[writefn](val, 0) - t.equal( - v1.toString('hex'), - hex.shift() - ) - var readfn = 'read' + x + y + z - t.equal( - v1[readfn](0), - reads.shift() - ) - } - } - } - t.end() -}) - -test('hex of write{Uint,Int}{8,16,32}{LE,BE} with overflow', function (t) { - if (!B.TYPED_ARRAY_SUPPORT) { - t.pass('object impl: skipping overflow test') - t.end() - return - } - - t.plan(3 * (2 * 2 * 2 + 2)) - var hex = [ - '', '03', '00', '030000', '000000', - '', 'fd', 'ff', 'fdffff', 'ffffff' - ] - var reads = [ - undefined, 3, 0, NaN, 0, - undefined, 253, -256, 16777213, -256 - ] - var xs = ['UInt', 'Int'] - var ys = [8, 16, 32] - for (var i = 0; i < xs.length; i++) { - var x = xs[i] - for (var j = 0; j < ys.length; j++) { - var y = ys[j] - var endianesses = (y === 8) ? [''] : ['LE', 'BE'] - for (var k = 0; k < endianesses.length; k++) { - var z = endianesses[k] - - var v1 = new B(y / 8 - 1) - var next = new B(4) - next.writeUInt32BE(0, 0) - var writefn = 'write' + x + y + z - var val = (x === 'Int') ? -3 : 3 - v1[writefn](val, 0, true) - t.equal( - v1.toString('hex'), - hex.shift() - ) - // check that nothing leaked to next buffer. - t.equal(next.readUInt32BE(0), 0) - // check that no bytes are read from next buffer. - next.writeInt32BE(~0, 0) - var readfn = 'read' + x + y + z - var r = reads.shift() - if (isnan(r)) t.pass('equal') - else t.equal(v1[readfn](0, true), r) - } - } - } - t.end() -}) -test('large values do not improperly roll over (ref #80)', function (t) { - var nums = [-25589992, -633756690, -898146932] - var out = new B(12) - out.fill(0) - out.writeInt32BE(nums[0], 0) - var newNum = out.readInt32BE(0) - t.equal(nums[0], newNum) - out.writeInt32BE(nums[1], 4) - newNum = out.readInt32BE(4) - t.equal(nums[1], newNum) - out.writeInt32BE(nums[2], 8) - newNum = out.readInt32BE(8) - t.equal(nums[2], newNum) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js b/node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js deleted file mode 100644 index 17d606a..0000000 --- a/node_modules/aws-sdk/node_modules/buffer/test/write_infinity.js +++ /dev/null @@ -1,45 +0,0 @@ -if (process.env.OBJECT_IMPL) global.TYPED_ARRAY_SUPPORT = false -var B = require('../').Buffer -var test = require('tape') - -test('write/read Infinity as a float', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(Infinity, 0), 4) - t.equal(buf.readFloatBE(0), Infinity) - t.end() -}) - -test('write/read -Infinity as a float', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(-Infinity, 0), 4) - t.equal(buf.readFloatBE(0), -Infinity) - t.end() -}) - -test('write/read Infinity as a double', function (t) { - var buf = new B(8) - t.equal(buf.writeDoubleBE(Infinity, 0), 8) - t.equal(buf.readDoubleBE(0), Infinity) - t.end() -}) - -test('write/read -Infinity as a double', function (t) { - var buf = new B(8) - t.equal(buf.writeDoubleBE(-Infinity, 0), 8) - t.equal(buf.readDoubleBE(0), -Infinity) - t.end() -}) - -test('write/read float greater than max', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(4e38, 0), 4) - t.equal(buf.readFloatBE(0), Infinity) - t.end() -}) - -test('write/read float less than min', function (t) { - var buf = new B(4) - t.equal(buf.writeFloatBE(-4e40, 0), 4) - t.equal(buf.readFloatBE(0), -Infinity) - t.end() -}) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore b/node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore deleted file mode 100644 index 3c3629e..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/.npmignore +++ /dev/null @@ -1 +0,0 @@ -node_modules diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml b/node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml deleted file mode 100644 index 3079f62..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/.travis.yml +++ /dev/null @@ -1,5 +0,0 @@ -language: node_js -node_js: - - 0.8 - - "0.10" - diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE b/node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE deleted file mode 100644 index 8abb57d..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/LICENSE +++ /dev/null @@ -1,24 +0,0 @@ -The MIT License - -Copyright (c) 2013 Dominic Tarr - -Permission is hereby granted, free of charge, -to any person obtaining a copy of this software and -associated documentation files (the "Software"), to -deal in the Software without restriction, including -without limitation the rights to use, copy, modify, -merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom -the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice -shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES -OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR -ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js b/node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js deleted file mode 100644 index 02698cc..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/example/bundle.js +++ /dev/null @@ -1,637 +0,0 @@ -var require = function (file, cwd) { - var resolved = require.resolve(file, cwd || '/'); - var mod = require.modules[resolved]; - if (!mod) throw new Error( - 'Failed to resolve module ' + file + ', tried ' + resolved - ); - var res = mod._cached ? mod._cached : mod(); - return res; -} - -require.paths = []; -require.modules = {}; -require.extensions = [".js",".coffee"]; - -require._core = { - 'assert': true, - 'events': true, - 'fs': true, - 'path': true, - 'vm': true -}; - -require.resolve = (function () { - return function (x, cwd) { - if (!cwd) cwd = '/'; - - if (require._core[x]) return x; - var path = require.modules.path(); - cwd = path.resolve('/', cwd); - var y = cwd || '/'; - - if (x.match(/^(?:\.\.?\/|\/)/)) { - var m = loadAsFileSync(path.resolve(y, x)) - || loadAsDirectorySync(path.resolve(y, x)); - if (m) return m; - } - - var n = loadNodeModulesSync(x, y); - if (n) return n; - - throw new Error("Cannot find module '" + x + "'"); - - function loadAsFileSync (x) { - if (require.modules[x]) { - return x; - } - - for (var i = 0; i < require.extensions.length; i++) { - var ext = require.extensions[i]; - if (require.modules[x + ext]) return x + ext; - } - } - - function loadAsDirectorySync (x) { - x = x.replace(/\/+$/, ''); - var pkgfile = x + '/package.json'; - if (require.modules[pkgfile]) { - var pkg = require.modules[pkgfile](); - var b = pkg.browserify; - if (typeof b === 'object' && b.main) { - var m = loadAsFileSync(path.resolve(x, b.main)); - if (m) return m; - } - else if (typeof b === 'string') { - var m = loadAsFileSync(path.resolve(x, b)); - if (m) return m; - } - else if (pkg.main) { - var m = loadAsFileSync(path.resolve(x, pkg.main)); - if (m) return m; - } - } - - return loadAsFileSync(x + '/index'); - } - - function loadNodeModulesSync (x, start) { - var dirs = nodeModulesPathsSync(start); - for (var i = 0; i < dirs.length; i++) { - var dir = dirs[i]; - var m = loadAsFileSync(dir + '/' + x); - if (m) return m; - var n = loadAsDirectorySync(dir + '/' + x); - if (n) return n; - } - - var m = loadAsFileSync(x); - if (m) return m; - } - - function nodeModulesPathsSync (start) { - var parts; - if (start === '/') parts = [ '' ]; - else parts = path.normalize(start).split('/'); - - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (parts[i] === 'node_modules') continue; - var dir = parts.slice(0, i + 1).join('/') + '/node_modules'; - dirs.push(dir); - } - - return dirs; - } - }; -})(); - -require.alias = function (from, to) { - var path = require.modules.path(); - var res = null; - try { - res = require.resolve(from + '/package.json', '/'); - } - catch (err) { - res = require.resolve(from, '/'); - } - var basedir = path.dirname(res); - - var keys = (Object.keys || function (obj) { - var res = []; - for (var key in obj) res.push(key) - return res; - })(require.modules); - - for (var i = 0; i < keys.length; i++) { - var key = keys[i]; - if (key.slice(0, basedir.length + 1) === basedir + '/') { - var f = key.slice(basedir.length); - require.modules[to + f] = require.modules[basedir + f]; - } - else if (key === basedir) { - require.modules[to] = require.modules[basedir]; - } - } -}; - -require.define = function (filename, fn) { - var dirname = require._core[filename] - ? '' - : require.modules.path().dirname(filename) - ; - - var require_ = function (file) { - return require(file, dirname) - }; - require_.resolve = function (name) { - return require.resolve(name, dirname); - }; - require_.modules = require.modules; - require_.define = require.define; - var module_ = { exports : {} }; - - require.modules[filename] = function () { - require.modules[filename]._cached = module_.exports; - fn.call( - module_.exports, - require_, - module_, - module_.exports, - dirname, - filename - ); - require.modules[filename]._cached = module_.exports; - return module_.exports; - }; -}; - -if (typeof process === 'undefined') process = {}; - -if (!process.nextTick) process.nextTick = (function () { - var queue = []; - var canPost = typeof window !== 'undefined' - && window.postMessage && window.addEventListener - ; - - if (canPost) { - window.addEventListener('message', function (ev) { - if (ev.source === window && ev.data === 'browserify-tick') { - ev.stopPropagation(); - if (queue.length > 0) { - var fn = queue.shift(); - fn(); - } - } - }, true); - } - - return function (fn) { - if (canPost) { - queue.push(fn); - window.postMessage('browserify-tick', '*'); - } - else setTimeout(fn, 0); - }; -})(); - -if (!process.title) process.title = 'browser'; - -if (!process.binding) process.binding = function (name) { - if (name === 'evals') return require('vm') - else throw new Error('No such module') -}; - -if (!process.cwd) process.cwd = function () { return '.' }; - -if (!process.env) process.env = {}; -if (!process.argv) process.argv = []; - -require.define("path", function (require, module, exports, __dirname, __filename) { -function filter (xs, fn) { - var res = []; - for (var i = 0; i < xs.length; i++) { - if (fn(xs[i], i, xs)) res.push(xs[i]); - } - return res; -} - -// resolves . and .. elements in a path array with directory names there -// must be no slashes, empty elements, or device names (c:\) in the array -// (so also no leading and trailing slashes - it does not distinguish -// relative and absolute paths) -function normalizeArray(parts, allowAboveRoot) { - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = parts.length; i >= 0; i--) { - var last = parts[i]; - if (last == '.') { - parts.splice(i, 1); - } else if (last === '..') { - parts.splice(i, 1); - up++; - } else if (up) { - parts.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (allowAboveRoot) { - for (; up--; up) { - parts.unshift('..'); - } - } - - return parts; -} - -// Regex to split a filename into [*, dir, basename, ext] -// posix version -var splitPathRe = /^(.+\/(?!$)|\/)?((?:.+?)?(\.[^.]*)?)$/; - -// path.resolve([from ...], to) -// posix version -exports.resolve = function() { -var resolvedPath = '', - resolvedAbsolute = false; - -for (var i = arguments.length; i >= -1 && !resolvedAbsolute; i--) { - var path = (i >= 0) - ? arguments[i] - : process.cwd(); - - // Skip empty and invalid entries - if (typeof path !== 'string' || !path) { - continue; - } - - resolvedPath = path + '/' + resolvedPath; - resolvedAbsolute = path.charAt(0) === '/'; -} - -// At this point the path should be resolved to a full absolute path, but -// handle relative paths to be safe (might happen when process.cwd() fails) - -// Normalize the path -resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) { - return !!p; - }), !resolvedAbsolute).join('/'); - - return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.'; -}; - -// path.normalize(path) -// posix version -exports.normalize = function(path) { -var isAbsolute = path.charAt(0) === '/', - trailingSlash = path.slice(-1) === '/'; - -// Normalize the path -path = normalizeArray(filter(path.split('/'), function(p) { - return !!p; - }), !isAbsolute).join('/'); - - if (!path && !isAbsolute) { - path = '.'; - } - if (path && trailingSlash) { - path += '/'; - } - - return (isAbsolute ? '/' : '') + path; -}; - - -// posix version -exports.join = function() { - var paths = Array.prototype.slice.call(arguments, 0); - return exports.normalize(filter(paths, function(p, index) { - return p && typeof p === 'string'; - }).join('/')); -}; - - -exports.dirname = function(path) { - var dir = splitPathRe.exec(path)[1] || ''; - var isWindows = false; - if (!dir) { - // No dirname - return '.'; - } else if (dir.length === 1 || - (isWindows && dir.length <= 3 && dir.charAt(1) === ':')) { - // It is just a slash or a drive letter with a slash - return dir; - } else { - // It is a full dirname, strip trailing slash - return dir.substring(0, dir.length - 1); - } -}; - - -exports.basename = function(path, ext) { - var f = splitPathRe.exec(path)[2] || ''; - // TODO: make this comparison case-insensitive on windows? - if (ext && f.substr(-1 * ext.length) === ext) { - f = f.substr(0, f.length - ext.length); - } - return f; -}; - - -exports.extname = function(path) { - return splitPathRe.exec(path)[3] || ''; -}; - -}); - -require.define("crypto", function (require, module, exports, __dirname, __filename) { -module.exports = require("crypto-browserify") -}); - -require.define("/node_modules/crypto-browserify/package.json", function (require, module, exports, __dirname, __filename) { -module.exports = {} -}); - -require.define("/node_modules/crypto-browserify/index.js", function (require, module, exports, __dirname, __filename) { -var sha = require('./sha') - -var algorithms = { - sha1: { - hex: sha.hex_sha1, - binary: sha.b64_sha1, - ascii: sha.str_sha1 - } -} - -function error () { - var m = [].slice.call(arguments).join(' ') - throw new Error([ - m, - 'we accept pull requests', - 'http://github.com/dominictarr/crypto-browserify' - ].join('\n')) -} - -exports.createHash = function (alg) { - alg = alg || 'sha1' - if(!algorithms[alg]) - error('algorithm:', alg, 'is not yet supported') - var s = '' - _alg = algorithms[alg] - return { - update: function (data) { - s += data - return this - }, - digest: function (enc) { - enc = enc || 'binary' - var fn - if(!(fn = _alg[enc])) - error('encoding:', enc , 'is not yet supported for algorithm', alg) - var r = fn(s) - s = null //not meant to use the hash after you've called digest. - return r - } - } -} -// the least I can do is make error messages for the rest of the node.js/crypto api. -;['createCredentials' -, 'createHmac' -, 'createCypher' -, 'createCypheriv' -, 'createDecipher' -, 'createDecipheriv' -, 'createSign' -, 'createVerify' -, 'createDeffieHellman', -, 'pbkdf2', -, 'randomBytes' ].forEach(function (name) { - exports[name] = function () { - error('sorry,', name, 'is not implemented yet') - } -}) - -}); - -require.define("/node_modules/crypto-browserify/sha.js", function (require, module, exports, __dirname, __filename) { -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -exports.hex_sha1 = hex_sha1; -exports.b64_sha1 = b64_sha1; -exports.str_sha1 = str_sha1; -exports.hex_hmac_sha1 = hex_hmac_sha1; -exports.b64_hmac_sha1 = b64_hmac_sha1; -exports.str_hmac_sha1 = str_hmac_sha1; - -/* - * Configurable variables. You may need to tweak these to be compatible with - * the server-side, but the defaults work in most cases. - */ -var hexcase = 0; /* hex output format. 0 - lowercase; 1 - uppercase */ -var b64pad = ""; /* base-64 pad character. "=" for strict RFC compliance */ -var chrsz = 8; /* bits per input character. 8 - ASCII; 16 - Unicode */ - -/* - * These are the functions you'll usually want to call - * They take string arguments and return either hex or base-64 encoded strings - */ -function hex_sha1(s){return binb2hex(core_sha1(str2binb(s),s.length * chrsz));} -function b64_sha1(s){return binb2b64(core_sha1(str2binb(s),s.length * chrsz));} -function str_sha1(s){return binb2str(core_sha1(str2binb(s),s.length * chrsz));} -function hex_hmac_sha1(key, data){ return binb2hex(core_hmac_sha1(key, data));} -function b64_hmac_sha1(key, data){ return binb2b64(core_hmac_sha1(key, data));} -function str_hmac_sha1(key, data){ return binb2str(core_hmac_sha1(key, data));} - -/* - * Perform a simple self-test to see if the VM is working - */ -function sha1_vm_test() -{ - return hex_sha1("abc") == "a9993e364706816aba3e25717850c26c9cd0d89d"; -} - -/* - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ -function core_sha1(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - var w = Array(80); - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - var e = -1009589776; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - var olde = e; - - for(var j = 0; j < 80; j++) - { - if(j < 16) w[j] = x[i + j]; - else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); - var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - -} - -/* - * Perform the appropriate triplet combination function for the current - * iteration - */ -function sha1_ft(t, b, c, d) -{ - if(t < 20) return (b & c) | ((~b) & d); - if(t < 40) return b ^ c ^ d; - if(t < 60) return (b & c) | (b & d) | (c & d); - return b ^ c ^ d; -} - -/* - * Determine the appropriate additive constant for the current iteration - */ -function sha1_kt(t) -{ - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; -} - -/* - * Calculate the HMAC-SHA1 of a key and some data - */ -function core_hmac_sha1(key, data) -{ - var bkey = str2binb(key); - if(bkey.length > 16) bkey = core_sha1(bkey, key.length * chrsz); - - var ipad = Array(16), opad = Array(16); - for(var i = 0; i < 16; i++) - { - ipad[i] = bkey[i] ^ 0x36363636; - opad[i] = bkey[i] ^ 0x5C5C5C5C; - } - - var hash = core_sha1(ipad.concat(str2binb(data)), 512 + data.length * chrsz); - return core_sha1(opad.concat(hash), 512 + 160); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -/* - * Convert an 8-bit or 16-bit string to an array of big-endian words - * In 8-bit function, characters >255 have their hi-byte silently ignored. - */ -function str2binb(str) -{ - var bin = Array(); - var mask = (1 << chrsz) - 1; - for(var i = 0; i < str.length * chrsz; i += chrsz) - bin[i>>5] |= (str.charCodeAt(i / chrsz) & mask) << (32 - chrsz - i%32); - return bin; -} - -/* - * Convert an array of big-endian words to a string - */ -function binb2str(bin) -{ - var str = ""; - var mask = (1 << chrsz) - 1; - for(var i = 0; i < bin.length * 32; i += chrsz) - str += String.fromCharCode((bin[i>>5] >>> (32 - chrsz - i%32)) & mask); - return str; -} - -/* - * Convert an array of big-endian words to a hex string. - */ -function binb2hex(binarray) -{ - var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i++) - { - str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) + - hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF); - } - return str; -} - -/* - * Convert an array of big-endian words to a base-64 string - */ -function binb2b64(binarray) -{ - var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - var str = ""; - for(var i = 0; i < binarray.length * 4; i += 3) - { - var triplet = (((binarray[i >> 2] >> 8 * (3 - i %4)) & 0xFF) << 16) - | (((binarray[i+1 >> 2] >> 8 * (3 - (i+1)%4)) & 0xFF) << 8 ) - | ((binarray[i+2 >> 2] >> 8 * (3 - (i+2)%4)) & 0xFF); - for(var j = 0; j < 4; j++) - { - if(i * 8 + j * 6 > binarray.length * 32) str += b64pad; - else str += tab.charAt((triplet >> 6*(3-j)) & 0x3F); - } - } - return str; -} - - -}); - -require.define("/test.js", function (require, module, exports, __dirname, __filename) { - var crypto = require('crypto') -var abc = crypto.createHash('sha1').update('abc').digest('hex') -console.log(abc) -//require('hello').inlineCall().call2() - -}); -require("/test.js"); diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html b/node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html deleted file mode 100644 index 9d55c6d..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/example/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - -
-  require('crypto').createHash('sha1').update('abc').digest('hex') == ''
-  
- - - diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js b/node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js deleted file mode 100644 index f1b0e4a..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/example/test.js +++ /dev/null @@ -1,4 +0,0 @@ -var crypto = require('crypto') -var abc = crypto.createHash('sha1').update('abc').digest('hex') -console.log(abc) -//require('hello').inlineCall().call2() diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js b/node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js deleted file mode 100644 index 4535e64..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/helpers.js +++ /dev/null @@ -1,35 +0,0 @@ -var Buffer = require('buffer').Buffer; -var intSize = 4; -var zeroBuffer = new Buffer(intSize); zeroBuffer.fill(0); -var chrsz = 8; - -function toArray(buf, bigEndian) { - if ((buf.length % intSize) !== 0) { - var len = buf.length + (intSize - (buf.length % intSize)); - buf = Buffer.concat([buf, zeroBuffer], len); - } - - var arr = []; - var fn = bigEndian ? buf.readInt32BE : buf.readInt32LE; - for (var i = 0; i < buf.length; i += intSize) { - arr.push(fn.call(buf, i)); - } - return arr; -} - -function toBuffer(arr, size, bigEndian) { - var buf = new Buffer(size); - var fn = bigEndian ? buf.writeInt32BE : buf.writeInt32LE; - for (var i = 0; i < arr.length; i++) { - fn.call(buf, arr[i], i * 4, true); - } - return buf; -} - -function hash(buf, fn, hashSize, bigEndian) { - if (!Buffer.isBuffer(buf)) buf = new Buffer(buf); - var arr = fn(toArray(buf, bigEndian), buf.length * chrsz); - return toBuffer(arr, hashSize, bigEndian); -} - -module.exports = { hash: hash }; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/index.js b/node_modules/aws-sdk/node_modules/crypto-browserify/index.js deleted file mode 100644 index 56fa434..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/index.js +++ /dev/null @@ -1,97 +0,0 @@ -var Buffer = require('buffer').Buffer -var sha = require('./sha') -var sha256 = require('./sha256') -var rng = require('./rng') -var md5 = require('./md5') - -var algorithms = { - sha1: sha, - sha256: sha256, - md5: md5 -} - -var blocksize = 64 -var zeroBuffer = new Buffer(blocksize); zeroBuffer.fill(0) -function hmac(fn, key, data) { - if(!Buffer.isBuffer(key)) key = new Buffer(key) - if(!Buffer.isBuffer(data)) data = new Buffer(data) - - if(key.length > blocksize) { - key = fn(key) - } else if(key.length < blocksize) { - key = Buffer.concat([key, zeroBuffer], blocksize) - } - - var ipad = new Buffer(blocksize), opad = new Buffer(blocksize) - for(var i = 0; i < blocksize; i++) { - ipad[i] = key[i] ^ 0x36 - opad[i] = key[i] ^ 0x5C - } - - var hash = fn(Buffer.concat([ipad, data])) - return fn(Buffer.concat([opad, hash])) -} - -function hash(alg, key) { - alg = alg || 'sha1' - var fn = algorithms[alg] - var bufs = [] - var length = 0 - if(!fn) error('algorithm:', alg, 'is not yet supported') - return { - update: function (data) { - if(!Buffer.isBuffer(data)) data = new Buffer(data) - - bufs.push(data) - length += data.length - return this - }, - digest: function (enc) { - var buf = Buffer.concat(bufs) - var r = key ? hmac(fn, key, buf) : fn(buf) - bufs = null - return enc ? r.toString(enc) : r - } - } -} - -function error () { - var m = [].slice.call(arguments).join(' ') - throw new Error([ - m, - 'we accept pull requests', - 'http://github.com/dominictarr/crypto-browserify' - ].join('\n')) -} - -exports.createHash = function (alg) { return hash(alg) } -exports.createHmac = function (alg, key) { return hash(alg, key) } -exports.randomBytes = function(size, callback) { - if (callback && callback.call) { - try { - callback.call(this, undefined, new Buffer(rng(size))) - } catch (err) { callback(err) } - } else { - return new Buffer(rng(size)) - } -} - -function each(a, f) { - for(var i in a) - f(a[i], i) -} - -// the least I can do is make error messages for the rest of the node.js/crypto api. -each(['createCredentials' -, 'createCipher' -, 'createCipheriv' -, 'createDecipher' -, 'createDecipheriv' -, 'createSign' -, 'createVerify' -, 'createDiffieHellman' -, 'pbkdf2'], function (name) { - exports[name] = function () { - error('sorry,', name, 'is not implemented yet') - } -}) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/md5.js b/node_modules/aws-sdk/node_modules/crypto-browserify/md5.js deleted file mode 100644 index 50eeb89..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/md5.js +++ /dev/null @@ -1,163 +0,0 @@ -/* - * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message - * Digest Algorithm, as defined in RFC 1321. - * Version 2.1 Copyright (C) Paul Johnston 1999 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for more info. - */ - -var helpers = require('./helpers'); - -/* - * Perform a simple self-test to see if the VM is working - */ -function md5_vm_test() -{ - return hex_md5("abc") == "900150983cd24fb0d6963f7d28e17f72"; -} - -/* - * Calculate the MD5 of an array of little-endian words, and a bit length - */ -function core_md5(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << ((len) % 32); - x[(((len + 64) >>> 9) << 4) + 14] = len; - - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - - a = md5_ff(a, b, c, d, x[i+ 0], 7 , -680876936); - d = md5_ff(d, a, b, c, x[i+ 1], 12, -389564586); - c = md5_ff(c, d, a, b, x[i+ 2], 17, 606105819); - b = md5_ff(b, c, d, a, x[i+ 3], 22, -1044525330); - a = md5_ff(a, b, c, d, x[i+ 4], 7 , -176418897); - d = md5_ff(d, a, b, c, x[i+ 5], 12, 1200080426); - c = md5_ff(c, d, a, b, x[i+ 6], 17, -1473231341); - b = md5_ff(b, c, d, a, x[i+ 7], 22, -45705983); - a = md5_ff(a, b, c, d, x[i+ 8], 7 , 1770035416); - d = md5_ff(d, a, b, c, x[i+ 9], 12, -1958414417); - c = md5_ff(c, d, a, b, x[i+10], 17, -42063); - b = md5_ff(b, c, d, a, x[i+11], 22, -1990404162); - a = md5_ff(a, b, c, d, x[i+12], 7 , 1804603682); - d = md5_ff(d, a, b, c, x[i+13], 12, -40341101); - c = md5_ff(c, d, a, b, x[i+14], 17, -1502002290); - b = md5_ff(b, c, d, a, x[i+15], 22, 1236535329); - - a = md5_gg(a, b, c, d, x[i+ 1], 5 , -165796510); - d = md5_gg(d, a, b, c, x[i+ 6], 9 , -1069501632); - c = md5_gg(c, d, a, b, x[i+11], 14, 643717713); - b = md5_gg(b, c, d, a, x[i+ 0], 20, -373897302); - a = md5_gg(a, b, c, d, x[i+ 5], 5 , -701558691); - d = md5_gg(d, a, b, c, x[i+10], 9 , 38016083); - c = md5_gg(c, d, a, b, x[i+15], 14, -660478335); - b = md5_gg(b, c, d, a, x[i+ 4], 20, -405537848); - a = md5_gg(a, b, c, d, x[i+ 9], 5 , 568446438); - d = md5_gg(d, a, b, c, x[i+14], 9 , -1019803690); - c = md5_gg(c, d, a, b, x[i+ 3], 14, -187363961); - b = md5_gg(b, c, d, a, x[i+ 8], 20, 1163531501); - a = md5_gg(a, b, c, d, x[i+13], 5 , -1444681467); - d = md5_gg(d, a, b, c, x[i+ 2], 9 , -51403784); - c = md5_gg(c, d, a, b, x[i+ 7], 14, 1735328473); - b = md5_gg(b, c, d, a, x[i+12], 20, -1926607734); - - a = md5_hh(a, b, c, d, x[i+ 5], 4 , -378558); - d = md5_hh(d, a, b, c, x[i+ 8], 11, -2022574463); - c = md5_hh(c, d, a, b, x[i+11], 16, 1839030562); - b = md5_hh(b, c, d, a, x[i+14], 23, -35309556); - a = md5_hh(a, b, c, d, x[i+ 1], 4 , -1530992060); - d = md5_hh(d, a, b, c, x[i+ 4], 11, 1272893353); - c = md5_hh(c, d, a, b, x[i+ 7], 16, -155497632); - b = md5_hh(b, c, d, a, x[i+10], 23, -1094730640); - a = md5_hh(a, b, c, d, x[i+13], 4 , 681279174); - d = md5_hh(d, a, b, c, x[i+ 0], 11, -358537222); - c = md5_hh(c, d, a, b, x[i+ 3], 16, -722521979); - b = md5_hh(b, c, d, a, x[i+ 6], 23, 76029189); - a = md5_hh(a, b, c, d, x[i+ 9], 4 , -640364487); - d = md5_hh(d, a, b, c, x[i+12], 11, -421815835); - c = md5_hh(c, d, a, b, x[i+15], 16, 530742520); - b = md5_hh(b, c, d, a, x[i+ 2], 23, -995338651); - - a = md5_ii(a, b, c, d, x[i+ 0], 6 , -198630844); - d = md5_ii(d, a, b, c, x[i+ 7], 10, 1126891415); - c = md5_ii(c, d, a, b, x[i+14], 15, -1416354905); - b = md5_ii(b, c, d, a, x[i+ 5], 21, -57434055); - a = md5_ii(a, b, c, d, x[i+12], 6 , 1700485571); - d = md5_ii(d, a, b, c, x[i+ 3], 10, -1894986606); - c = md5_ii(c, d, a, b, x[i+10], 15, -1051523); - b = md5_ii(b, c, d, a, x[i+ 1], 21, -2054922799); - a = md5_ii(a, b, c, d, x[i+ 8], 6 , 1873313359); - d = md5_ii(d, a, b, c, x[i+15], 10, -30611744); - c = md5_ii(c, d, a, b, x[i+ 6], 15, -1560198380); - b = md5_ii(b, c, d, a, x[i+13], 21, 1309151649); - a = md5_ii(a, b, c, d, x[i+ 4], 6 , -145523070); - d = md5_ii(d, a, b, c, x[i+11], 10, -1120210379); - c = md5_ii(c, d, a, b, x[i+ 2], 15, 718787259); - b = md5_ii(b, c, d, a, x[i+ 9], 21, -343485551); - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - } - return Array(a, b, c, d); - -} - -/* - * These functions implement the four basic operations the algorithm uses. - */ -function md5_cmn(q, a, b, x, s, t) -{ - return safe_add(bit_rol(safe_add(safe_add(a, q), safe_add(x, t)), s),b); -} -function md5_ff(a, b, c, d, x, s, t) -{ - return md5_cmn((b & c) | ((~b) & d), a, b, x, s, t); -} -function md5_gg(a, b, c, d, x, s, t) -{ - return md5_cmn((b & d) | (c & (~d)), a, b, x, s, t); -} -function md5_hh(a, b, c, d, x, s, t) -{ - return md5_cmn(b ^ c ^ d, a, b, x, s, t); -} -function md5_ii(a, b, c, d, x, s, t) -{ - return md5_cmn(c ^ (b | (~d)), a, b, x, s, t); -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function bit_rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -module.exports = function md5(buf) { - return helpers.hash(buf, core_md5, 16); -}; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/package.json b/node_modules/aws-sdk/node_modules/crypto-browserify/package.json deleted file mode 100644 index 50a90d5..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "author": { - "name": "Dominic Tarr", - "email": "dominic.tarr@gmail.com", - "url": "dominictarr.com" - }, - "name": "crypto-browserify", - "description": "partial implementation of crypto for the browser", - "version": "1.0.9", - "homepage": "https://github.com/dominictarr/crypto-browserify", - "repository": { - "type": "git", - "url": "git://github.com/dominictarr/crypto-browserify.git" - }, - "scripts": { - "test": "node test/node.js" - }, - "engines": { - "node": "*" - }, - "dependencies": {}, - "devDependencies": { - "brfs": "~0.0.8", - "tape": "~1.0.4" - }, - "testling": { - "files": "test/browser.js", - "browsers": [ - "ie/8..latest", - "chrome/20..latest", - "firefox/10..latest", - "safari/latest", - "opera/11.0..latest", - "iphone/6", - "ipad/6" - ] - }, - "optionalDependencies": {}, - "license": "MIT", - "readme": "# crypto-browserify\n\nA (partial) port of `crypto` to the browser.\n\n\n[![travis](https://secure.travis-ci.org/dominictarr/crypto-browserify.png?branch=master)](https://travis-ci.org/dominictarr/crypto-browserify)\n\n[![browser support](http://ci.testling.com/dominictarr/crypto-browserify.png)](http://ci.testling.com/dominictarr/crypto-browserify)\n\n\nBasically, I found some crypto implemented in JS lieing on the internet somewhere\nand wrapped it in the part of the `crypto` api that I am currently using.\n\nIn a way that will be compatible with [browserify](https://github.com/substack/node-browserify/).\n\nI will extend this if I need more features, or if anyone else wants to extend this,\nI will add you as a maintainer.\n\nProvided that you agree that it should replicate the [node.js/crypto](http://nodejs.org/api/crypto.html) api exactly, of course.\n\n", - "readmeFilename": "readme.markdown", - "bugs": { - "url": "https://github.com/dominictarr/crypto-browserify/issues" - }, - "_id": "crypto-browserify@1.0.9", - "_shasum": "cc5449685dfb85eb11c9828acc7cb87ab5bbfcc0", - "_resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-1.0.9.tgz", - "_from": "crypto-browserify@1.0.9" -} diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown b/node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown deleted file mode 100644 index 2ede636..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/readme.markdown +++ /dev/null @@ -1,20 +0,0 @@ -# crypto-browserify - -A (partial) port of `crypto` to the browser. - - -[![travis](https://secure.travis-ci.org/dominictarr/crypto-browserify.png?branch=master)](https://travis-ci.org/dominictarr/crypto-browserify) - -[![browser support](http://ci.testling.com/dominictarr/crypto-browserify.png)](http://ci.testling.com/dominictarr/crypto-browserify) - - -Basically, I found some crypto implemented in JS lieing on the internet somewhere -and wrapped it in the part of the `crypto` api that I am currently using. - -In a way that will be compatible with [browserify](https://github.com/substack/node-browserify/). - -I will extend this if I need more features, or if anyone else wants to extend this, -I will add you as a maintainer. - -Provided that you agree that it should replicate the [node.js/crypto](http://nodejs.org/api/crypto.html) api exactly, of course. - diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/rng.js b/node_modules/aws-sdk/node_modules/crypto-browserify/rng.js deleted file mode 100644 index bc858e8..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/rng.js +++ /dev/null @@ -1,31 +0,0 @@ -// Original code adapted from Robert Kieffer. -// details at https://github.com/broofa/node-uuid -(function() { - var _global = this; - - var mathRNG, whatwgRNG; - - // NOTE: Math.random() does not guarantee "cryptographic quality" - mathRNG = function(size) { - var bytes = new Array(size); - var r; - - for (var i = 0, r; i < size; i++) { - if ((i & 0x03) == 0) r = Math.random() * 0x100000000; - bytes[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return bytes; - } - - if (_global.crypto && crypto.getRandomValues) { - whatwgRNG = function(size) { - var bytes = new Uint8Array(size); - crypto.getRandomValues(bytes); - return bytes; - } - } - - module.exports = whatwgRNG || mathRNG; - -}()) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/sha.js b/node_modules/aws-sdk/node_modules/crypto-browserify/sha.js deleted file mode 100644 index 8942b62..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/sha.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined - * in FIPS PUB 180-1 - * Version 2.1a Copyright Paul Johnston 2000 - 2002. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * Distributed under the BSD License - * See http://pajhome.org.uk/crypt/md5 for details. - */ - -var helpers = require('./helpers'); - -/* - * Calculate the SHA-1 of an array of big-endian words, and a bit length - */ -function core_sha1(x, len) -{ - /* append padding */ - x[len >> 5] |= 0x80 << (24 - len % 32); - x[((len + 64 >> 9) << 4) + 15] = len; - - var w = Array(80); - var a = 1732584193; - var b = -271733879; - var c = -1732584194; - var d = 271733878; - var e = -1009589776; - - for(var i = 0; i < x.length; i += 16) - { - var olda = a; - var oldb = b; - var oldc = c; - var oldd = d; - var olde = e; - - for(var j = 0; j < 80; j++) - { - if(j < 16) w[j] = x[i + j]; - else w[j] = rol(w[j-3] ^ w[j-8] ^ w[j-14] ^ w[j-16], 1); - var t = safe_add(safe_add(rol(a, 5), sha1_ft(j, b, c, d)), - safe_add(safe_add(e, w[j]), sha1_kt(j))); - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } - - a = safe_add(a, olda); - b = safe_add(b, oldb); - c = safe_add(c, oldc); - d = safe_add(d, oldd); - e = safe_add(e, olde); - } - return Array(a, b, c, d, e); - -} - -/* - * Perform the appropriate triplet combination function for the current - * iteration - */ -function sha1_ft(t, b, c, d) -{ - if(t < 20) return (b & c) | ((~b) & d); - if(t < 40) return b ^ c ^ d; - if(t < 60) return (b & c) | (b & d) | (c & d); - return b ^ c ^ d; -} - -/* - * Determine the appropriate additive constant for the current iteration - */ -function sha1_kt(t) -{ - return (t < 20) ? 1518500249 : (t < 40) ? 1859775393 : - (t < 60) ? -1894007588 : -899497514; -} - -/* - * Add integers, wrapping at 2^32. This uses 16-bit operations internally - * to work around bugs in some JS interpreters. - */ -function safe_add(x, y) -{ - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -} - -/* - * Bitwise rotate a 32-bit number to the left. - */ -function rol(num, cnt) -{ - return (num << cnt) | (num >>> (32 - cnt)); -} - -module.exports = function sha1(buf) { - return helpers.hash(buf, core_sha1, 20, true); -}; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js b/node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js deleted file mode 100644 index 954d685..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/sha256.js +++ /dev/null @@ -1,79 +0,0 @@ - -/** - * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined - * in FIPS 180-2 - * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009. - * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet - * - */ - -var helpers = require('./helpers'); - -var safe_add = function(x, y) { - var lsw = (x & 0xFFFF) + (y & 0xFFFF); - var msw = (x >> 16) + (y >> 16) + (lsw >> 16); - return (msw << 16) | (lsw & 0xFFFF); -}; - -var S = function(X, n) { - return (X >>> n) | (X << (32 - n)); -}; - -var R = function(X, n) { - return (X >>> n); -}; - -var Ch = function(x, y, z) { - return ((x & y) ^ ((~x) & z)); -}; - -var Maj = function(x, y, z) { - return ((x & y) ^ (x & z) ^ (y & z)); -}; - -var Sigma0256 = function(x) { - return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); -}; - -var Sigma1256 = function(x) { - return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); -}; - -var Gamma0256 = function(x) { - return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); -}; - -var Gamma1256 = function(x) { - return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); -}; - -var core_sha256 = function(m, l) { - var K = new Array(0x428A2F98,0x71374491,0xB5C0FBCF,0xE9B5DBA5,0x3956C25B,0x59F111F1,0x923F82A4,0xAB1C5ED5,0xD807AA98,0x12835B01,0x243185BE,0x550C7DC3,0x72BE5D74,0x80DEB1FE,0x9BDC06A7,0xC19BF174,0xE49B69C1,0xEFBE4786,0xFC19DC6,0x240CA1CC,0x2DE92C6F,0x4A7484AA,0x5CB0A9DC,0x76F988DA,0x983E5152,0xA831C66D,0xB00327C8,0xBF597FC7,0xC6E00BF3,0xD5A79147,0x6CA6351,0x14292967,0x27B70A85,0x2E1B2138,0x4D2C6DFC,0x53380D13,0x650A7354,0x766A0ABB,0x81C2C92E,0x92722C85,0xA2BFE8A1,0xA81A664B,0xC24B8B70,0xC76C51A3,0xD192E819,0xD6990624,0xF40E3585,0x106AA070,0x19A4C116,0x1E376C08,0x2748774C,0x34B0BCB5,0x391C0CB3,0x4ED8AA4A,0x5B9CCA4F,0x682E6FF3,0x748F82EE,0x78A5636F,0x84C87814,0x8CC70208,0x90BEFFFA,0xA4506CEB,0xBEF9A3F7,0xC67178F2); - var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19); - var W = new Array(64); - var a, b, c, d, e, f, g, h, i, j; - var T1, T2; - /* append padding */ - m[l >> 5] |= 0x80 << (24 - l % 32); - m[((l + 64 >> 9) << 4) + 15] = l; - for (var i = 0; i < m.length; i += 16) { - a = HASH[0]; b = HASH[1]; c = HASH[2]; d = HASH[3]; e = HASH[4]; f = HASH[5]; g = HASH[6]; h = HASH[7]; - for (var j = 0; j < 64; j++) { - if (j < 16) { - W[j] = m[j + i]; - } else { - W[j] = safe_add(safe_add(safe_add(Gamma1256(W[j - 2]), W[j - 7]), Gamma0256(W[j - 15])), W[j - 16]); - } - T1 = safe_add(safe_add(safe_add(safe_add(h, Sigma1256(e)), Ch(e, f, g)), K[j]), W[j]); - T2 = safe_add(Sigma0256(a), Maj(a, b, c)); - h = g; g = f; f = e; e = safe_add(d, T1); d = c; c = b; b = a; a = safe_add(T1, T2); - } - HASH[0] = safe_add(a, HASH[0]); HASH[1] = safe_add(b, HASH[1]); HASH[2] = safe_add(c, HASH[2]); HASH[3] = safe_add(d, HASH[3]); - HASH[4] = safe_add(e, HASH[4]); HASH[5] = safe_add(f, HASH[5]); HASH[6] = safe_add(g, HASH[6]); HASH[7] = safe_add(h, HASH[7]); - } - return HASH; -}; - -module.exports = function sha256(buf) { - return helpers.hash(buf, core_sha256, 32, true); -}; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js b/node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js deleted file mode 100644 index ccc054b..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/browser.js +++ /dev/null @@ -1,100 +0,0 @@ -var test = require('tape'); -var Buffer = require('buffer').Buffer; - -var crypto = require('../'); - -var algorithms = ['sha1', 'sha256', 'md5']; -var encodings = ['binary', 'hex', 'base64']; - - -// We can't compare against node's crypto library directly because when -// using testling we only have another version of crypto-browserify to -// check against. So we'll use a cached version of the expected values -// generated by node crypto. -var EXPECTED = {}; - -EXPECTED['sha1-hash-binary'] = atob('qvTGHdzF6KLavt4PO0gs2a6pQ00='); -EXPECTED['sha1-hash-hex'] = 'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d'; -EXPECTED['sha1-hash-base64'] = 'qvTGHdzF6KLavt4PO0gs2a6pQ00='; - -EXPECTED['sha256-hash-binary'] = atob('LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ='); -EXPECTED['sha256-hash-hex'] = '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'; -EXPECTED['sha256-hash-base64'] = 'LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ='; - -EXPECTED['md5-hash-binary'] = atob('XUFAKrxLKna5cZ2REBfFkg=='); -EXPECTED['md5-hash-hex'] = '5d41402abc4b2a76b9719d911017c592'; -EXPECTED['md5-hash-base64'] = 'XUFAKrxLKna5cZ2REBfFkg=='; - -EXPECTED['sha1-hmac-binary'] = atob('URIFXAX5RPhXVe/FzYlw4ZTp9Fs='); -EXPECTED['sha1-hmac-hex'] = '5112055c05f944f85755efc5cd8970e194e9f45b'; -EXPECTED['sha1-hmac-base64'] = 'URIFXAX5RPhXVe/FzYlw4ZTp9Fs='; - -EXPECTED['sha256-hmac-binary'] = atob('iKqz7ejTrflNJquQ07r9SiCDBww7zOnAFO4EpEOEfAs='); -EXPECTED['sha256-hmac-hex'] = '88aab3ede8d3adf94d26ab90d3bafd4a2083070c3bcce9c014ee04a443847c0b'; -EXPECTED['sha256-hmac-base64'] = 'iKqz7ejTrflNJquQ07r9SiCDBww7zOnAFO4EpEOEfAs='; - -EXPECTED['md5-hmac-binary'] = atob('ut5jhjxh7QsxZYBuzWrO/A=='); -EXPECTED['md5-hmac-hex'] = 'bade63863c61ed0b3165806ecd6acefc'; -EXPECTED['md5-hmac-base64'] = 'ut5jhjxh7QsxZYBuzWrO/A=='; - -EXPECTED['md5-with-binary'] = '27549c8ff29ca52f7957f89c328dbb6d'; -EXPECTED['sha1-with-binary'] = '4fa10dda29053b237b5d9703151c852c61e6d8d7'; -EXPECTED['sha256-with-binary'] = '424ff84246aabc1560a2881b9664108dfe26784c762d930c4ff396c085f4183b'; - -EXPECTED['md5-empty-string'] = 'd41d8cd98f00b204e9800998ecf8427e'; -EXPECTED['sha1-empty-string'] = 'da39a3ee5e6b4b0d3255bfef95601890afd80709'; -EXPECTED['sha256-empty-string'] = 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855'; - - -algorithms.forEach(function (algorithm) { - encodings.forEach(function (encoding) { - test(algorithm + ' hash using ' + encoding, function (t) { - t.plan(1); - var actual = crypto.createHash(algorithm).update('hello', 'utf-8').digest(encoding); - var expected = EXPECTED[algorithm + '-hash-' + encoding]; - t.equal(actual, expected); - t.end(); - }); - - test(algorithm + ' hmac using ' + encoding, function (t) { - t.plan(1); - var actual = crypto.createHmac(algorithm, 'secret').update('hello', 'utf-8').digest(encoding); - var expected = EXPECTED[algorithm + '-hmac-' + encoding]; - t.equal(actual, expected); - t.end(); - }); - }); - - test(algorithm + ' with empty string', function (t) { - t.plan(1); - var actual = crypto.createHash(algorithm).update('', 'utf-8').digest('hex'); - var expected = EXPECTED[algorithm + '-empty-string']; - t.equal(actual, expected); - t.end(); - }); - - test(algorithm + ' with raw binary', function (t) { - t.plan(1); - var seed = 'hello'; - for (var i = 0; i < 1000; i++) { - seed = crypto.createHash(algorithm).update(seed).digest('binary'); - } - var actual = crypto.createHash(algorithm).update(seed).digest('hex'); - var expected = EXPECTED[algorithm + '-with-binary']; - t.equal(actual, expected); - t.end(); - }); -}); - - -test('randomBytes', function (t) { - t.plan(5); - t.equal(crypto.randomBytes(10).length, 10); - t.ok(crypto.randomBytes(10) instanceof Buffer); - crypto.randomBytes(10, function(ex, bytes) { - t.error(ex); - t.equal(bytes.length, 10); - t.ok(bytes instanceof Buffer); - t.end(); - }); -}); diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js b/node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js deleted file mode 100644 index fb9af5c..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/node.js +++ /dev/null @@ -1,77 +0,0 @@ -var test = require('tape'); - -var crypto = require('crypto'); -var cryptoB = require('../'); -var fs = require('fs'); - -function assertSame(name, fn) { - test(name, function (t) { - t.plan(1); - fn(crypto, function (err, expected) { - fn(cryptoB, function (err, actual) { - t.equal(actual, expected); - t.end(); - }); - }); - }); -} - -var algorithms = ['sha1', 'sha256', 'md5']; -var encodings = ['binary', 'hex', 'base64']; - - -algorithms.forEach(function (algorithm) { - encodings.forEach(function (encoding) { - assertSame(algorithm + ' hash using ' + encoding, function (crypto, cb) { - cb(null, crypto.createHash(algorithm).update('hellø', 'utf-8').digest(encoding)); - }) - - assertSame(algorithm + ' hmac using ' + encoding, function (crypto, cb) { - cb(null, crypto.createHmac(algorithm, 'secret').update('hellø', 'utf-8').digest(encoding)) - }) - }); - - assertSame(algorithm + ' with raw binary', function (crypto, cb) { - var seed = 'hellø'; - for (var i = 0; i < 1000; i++) { - seed = crypto.createHash(algorithm).update(new Buffer(seed)).digest('binary'); - } - cb(null, crypto.createHash(algorithm).update(new Buffer(seed)).digest('hex')); - }); - - assertSame(algorithm + ' empty string', function (crypto, cb) { - cb(null, crypto.createHash(algorithm).update('').digest('hex')); - }); -}); - -function pad(n, w) { - n = n + ''; return new Array(w - n.length + 1).join('0') + n; -} - -var vectors = fs.readdirSync(__dirname + '/vectors').sort(). - filter(function (t) { return t.match(/\.dat$/); }). - map(function (t) { return fs.readFileSync(__dirname + '/vectors/' + t); }); - -['md5', 'sha1', 'sha256'].forEach(function (algorithm) { - test(algorithm, function (t) { - function hash(data) { return cryptoB.createHash(algorithm).update(data).digest('hex'); } - - var hashes = fs.readFileSync(__dirname + '/vectors/byte-hashes.' + algorithm).toString().split(/\r?\n/); - t.plan(vectors.length); - for (var i = 0; i < vectors.length; i++) { - t.equal(hash(vectors[i]), hashes[i], 'byte' + pad(i, 4) + '.dat'); - } - }); -}); - -test('randomBytes', function (t) { - t.plan(5); - t.equal(cryptoB.randomBytes(10).length, 10); - t.ok(cryptoB.randomBytes(10) instanceof Buffer); - cryptoB.randomBytes(10, function(ex, bytes) { - t.error(ex); - t.equal(bytes.length, 10); - t.ok(bytes instanceof Buffer); - t.end(); - }); -}); diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json b/node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json deleted file mode 100644 index 4b435b0..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "browserify": { - "transform": [ - "brfs" - ] - } -} diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js b/node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js deleted file mode 100755 index 34d96b5..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/simple.js +++ /dev/null @@ -1,36 +0,0 @@ -var test = require("tape") - -var crypto = require('crypto') -var cryptoB = require('../') - -function assertSame (fn) { - test(fn.name, function (t) { - t.plan(1) - fn(crypto, function (err, expected) { - fn(cryptoB, function (err, actual) { - t.equal(actual, expected) - t.end() - }) - }) - }) -} - -assertSame(function sha1 (crypto, cb) { - cb(null, crypto.createHash('sha1').update('hello', 'utf-8').digest('hex')) -}) - -assertSame(function md5(crypto, cb) { - cb(null, crypto.createHash('md5').update('hello', 'utf-8').digest('hex')) -}) - -test('randomBytes', function (t) { - t.plan(5) - t.equal(cryptoB.randomBytes(10).length, 10) - t.ok(cryptoB.randomBytes(10) instanceof Buffer) - cryptoB.randomBytes(10, function(ex, bytes) { - t.error(ex) - t.equal(bytes.length, 10) - t.ok(bytes instanceof Buffer) - t.end() - }) -}) diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt deleted file mode 100755 index 99d14c9..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/Readme.txt +++ /dev/null @@ -1,25 +0,0 @@ - -File formats: - -There are two files included for this byte-oriented test. -One file contains the messages and the other file contains the hashes. - -The message files provided use "compact strings" to store the message values. -Compact strings are used to represented the messages in a compact form. -A compact string has the form - z || b || n(1) || n(2) || ... || n(z) -where z>=0 that represents the number of n, b is either 0 or 1, and -each n(i) is a decimal integer representing a positive number. -The length of the compact string is given by the summation of the n(i). - -The compact string is interpreted as the representation of the bit string -consisting of b repeated n(1) times, followed by 1-b repeated n(2) times, -followed by b repeated n(3) times, and so on. - -Example: - M = 5 1 7 13 5 1 2 - where z = 5 and b = 1. Then the compact string M represents the bit string - 1111111000000000000011111011 - where 1 is repeated 7 times, 0 is repeated 13 times, 1 is repeated 5 times, - 0 is repeated 1 time, and 1 is repeated 2 times. - diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 deleted file mode 100755 index 97a913a..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.md5 +++ /dev/null @@ -1,196 +0,0 @@ -d41d8cd98f00b204e9800998ecf8427e -c3e97dd6e97fb5125688c97f36720cbe -038701ca277a9d4de87bff428dd30a12 -bc60c6192e361d99b59d47250668a852 -542c3a0ab6b51bc6a88fa7bb567bca3e -e035f9e748a2a09a4fbdcf18c4f58bf1 -3b4cc9226a236742d72578c5915b6c3c -35950208a022baac90056636827158ce -84cedff2ed1b78b395cc8651094f4ce3 -7badf748f4cb700272a72edfea22e9bf -a1bb6e142739dbdb0925747d95e0a1ad -0cd9b72dfdee8efd2e1515f4c5a62284 -ef07c13e75d50578d09052aa21a7cffb -cf3b261af9344bf83b4dd82b30242c78 -530710f65fb98fff8eb927e2938cb8c5 -4e6d73658b27e19d4bb4500625001e39 -c8e5f2f272b1ef88ec62dd0d9d54e902 -031cbf1fb05b4ec09f3c93235d0f49ac -8c0e1400df02ba8c4809b705e5f5e114 -57ec48278e19f71f54c570a5ab306df7 -ecd3dc346a2337b95389a094a031610f -f11d91eae492225cbd82ef356aa96f9f -26bd8b480216c723ce75da98b9bd430c -80999c2d12f623e4f87e0550a8e3523a -00945c1bd739ce389ac24bb93f6f9a85 -7ab55f0bd5dca5b17ecaa7fef73ed87b -e3cedd606ad51dd18532abd3079a3e0c -df5ecc6732e22cc25836398a10222e97 -863b6d9962ee3761bbb9cd8a8367589e -683c9384e29efe82dd3ac847904c28e8 -b3d948e72159ddc9c600d75512c5f115 -ce8633a6cf189b07e022147bbbd0f350 -8df17372eb32a0afa4fc47837262ff61 -62c63ca91890ce6f78a59c0bdb1e7bab -1eda4bb0259a939548ec4ceb39facde4 -c4f37a2c450f2a23322513b372e668a5 -cab8f06436c5ad45f982490215836f4e -3a43bc720714a2a42a73a76085542f86 -03f2f4033b258e6eb1e101f1ed4c24b4 -2ceb33cec5ecad4a50f6bd3a831ae77c -dd808f695d28f93562cfcb164bc3cce4 -01c6d7a87e94bf685205ec8d7c5196af -ef0e93e8928f8bae1b216da8e661fc9b -c8da55117d7d4b7ee8ddc8dc4ba73aa6 -bbfc64583c6d4c2ef4b0358464d4d028 -3bb5864481f2e66387419dd1a168aadc -0d725d3a1d3d97d7b5ea8293bbbf32ba -915eb22a15f7673f983672b6c353b6c8 -13b51da3e8a1422bfd58b79c4e19de64 -e69d6c03102464f22c395f9fa27108de -132fa4cbedaa7bd965b0b5900211be48 -e37ff5d9f14249f327a19dd5296e6c7e -4881a65cf107b1d034ff3ecd64ab9cb4 -547e92d01c0b699cfdf43f91714cfe2d -aa2b3a055b56845f19109f21d3c783f4 -eb1f01cc647ece73b2192537200bb8b9 -1db274ef41b1ad71f713df2b05207e1a -d8b4ec343b4310345efc6da9cee8a2ec -082ee3b2be7910f7350368e395a63d90 -d247c4070ae1de106bcb438a2dacac23 -f8cbc4f3af45befc792679f2b113f1cb -9031006a437019c5dcd987a31731ebd9 -a6b62759ee3883258fbdeeb8b56e6283 -4933898605b4a1b970b674a2dde92292 -f0684ca20de4607232f3e158e81a37f2 -c0b3fdecb3bb7b4ff0c936f378ccb027 -50652123b5e0e51bb5bc3fdde3c6a750 -ed4526ba8226d969f47edbb27b2f1144 -80e6f61dff9da8673fa16dbbdb14d03d -1d52744bf1450d7c5cfdf1f0bbf967c1 -3438a953124960bcc44611923a8844ee -b2f341296dd7aabbd4fd8e011be68a7d -322dba69658a92e9a9ace4d7177fb97d -b94a434a98efa493fbbc989360671bb9 -cd9ce9a01ed810af70999d8ce4c63811 -4c639abb75a0ae0f22c3384cb9c68441 -fe31ffcced1717988c854c2f3492466e -b56d81337f9bbf0d838df831e9b40216 -0be9161adfeb2dd1c3f20338bfb3ec4b -be7b7c9fa1ab09d6578a3f2a82bfafe3 -f6bdc04b4611ddf0aa8403bcb04292f7 -1c7146a10f3c76b0c1dd4af354b14982 -0d3d987f94aee65f84436696bcf33ea4 -1a5c9ac3ee859361ad5477ea792506a3 -e827d60f27e35d8e5b05af748ba897dd -5b7899bf7a6267d9b3b8c82f241a1d7b -6dc9fe740cf4a4b93cb0953a3c2a6026 -27adf814806fd4a51c1ffc84122c5c8a -f74e94ab992c8f27de264993a09ab429 -5eee0f1591d10c159763749ec86b9ecb -46898964a3889615d9f7c22a81e0a0e7 -8fb58d6770971b0f12e40b31ad65b4a9 -eb4ce130268dc13731dcd16ff492d0a9 -23532a54e8005860ad5e77f4e3392827 -07fedc4dc4891d1a90c501a781a666f2 -83e8341035b37dd70a92a6eed5406927 -6c9f7b3b25734d58f21f5050642874a5 -ef661042e6624f4052ce86d8f233d780 -efe794cdfad5cb86656e29854a1f5c92 -e5f19a0045481443bae165f03598a9ba -b8fe8691321edbf308a9d60bb817c6af -f31fdd0f1aef106005e6d29b72229fa1 -239ed45c3cb734db446adfbbe3dab8a1 -2c2303411c7d25617a54106aca18070d -de179c41aca8bcdc388964024948ff8e -ca335b74d59bd50832267d3bf28f81df -dabda7a1cbaa8ea5104c57c8950b703a -076352a22ecea5ebc876812f62c1cb8d -ee0a2bdec712a9413623d8a920714b96 -a927c3a99f2843de4133377c690db9b7 -1fa98cff485549d49799dc8cf987a8af -74013a076a786a26c7e04217bb51031d -a44ca9661e967bb2e98af65277dac72f -d30897726b635548dbfa5cebffd9cd63 -4ad04a250b8029c9a7bf6529ee8793c3 -de41e337d96fd23619121ea709861e1a -18e070fd32cf732b9f37a0083320eec2 -7dd4b27ca8906182f684d0ee4ddb98c4 -70a440a8bd06ff40f6e9135946eb174d -b8d052366e752ce7c803abd24854e934 -8ab9dfff746ce3e62c6e04feb7b48528 -ecfca8b371616efe78e9916dbf825f5b -5f76da828c37fc4edb4557953539c92a -ecad54f76ce3bc233e02fc6fd7f94628 -e8a1cc06bfec7f677f36a693e1342400 -9ad0fe040e44a8e7146c3dd8582b6752 -4e56f978f94cf72158fd4311831b4f9f -3b95686fe49f50006607d5978aaa3efc -fa354daecc45f14b82b0e7e567d24282 -b7c30cf902e74c10e3d5c3af7e854f6b -e9369a7ec98e63186bdae77025cb5519 -57b441e2f3397d2628657e636cd2fc80 -8ae3a1e880ffb884260ec26e8fcd71a5 -eb7d8f9199945e8a1e5c3708da45e08b -d7dd1997c20a1029f9bd0fd1e2d2ed92 -a986ef62ef378583985cf0d0a34d17d0 -ad5bef0d6ad3434f871983ed09aaa43c -326f662a5c18a14d26c3d35131ea4b4e -ea4bf919aebf4add0024d91ee6f640d0 -9cc49e156084d2c757bd6d502bae8309 -9c18d4c75cc02337c277532ecea4b9fa -4159a65b7db275742e998fb855e7b9f3 -df34d37f6b4ef078bd9570efdd8fd2e2 -84d2c12c4f0c28d288464d33a23f227c -17b55bbd4222066960e54182e1e95f0b -75eb69b22793852bc892ce264c421a1e -de4abe78e28e2718200c76237f2ed42f -1149c8fc988799f43f6e5069355e108b -4129891ff13ddd62820f6f3cdbfa95da -c8758df3c9ad4d311516ea39fe734052 -360ddf0b658fd764ef5ae9bf7a8a1a12 -ad054e0e84e2b8e2b02ce4dee7688226 -cb434f8c5fad9793ed142805afa861a0 -83a3d5436f96cb2cb31d929794425f31 -34dde0f0fe7d4fdb359df1fccbf5fcde -7b77219e9549fad49e97c380f7e1f362 -053f4e89ae2355c5cb259d21e85eb9cd -fc45c5118f642cc479e6a550756f1a4e -0138351089a87a2ddc2d98255ce6b8cc -1f3e42daa4b315f2a0e6a530e0cc6976 -aec4974f238a6e04dcb07e20ad861230 -7a27fedaeec41b5832bda3169d76cd05 -154bd1371ae66ad3ab9a9ee6b1324e36 -a4594c9e974eed1fc159cc306dd7378a -431acd1a4a4d6036057c9906da8add5e -f6afe47bdedf075c7e188b2640152cf7 -8bc3bd8625778f64ed7c29698025f292 -51f6bb4db8e6e61cc4333450c6035139 -0baff1c675866bf259d3ac9417a33464 -6e8a56a9a005c6c6239ccbdf48f59aa8 -6565bceb49f962f797f49084f3f819a1 -2267037a7f3e753c653218fcf67ce9c7 -aca1ae6237f498986991565b0307f0da -785bb09a5f25730a3aed4de12da4d9ea -4eb5472f4e5243fcd4a76533789e829a -7d725ae9a8e569f49c56194226b64dee -7396f5d4491e79ec1ac0ce7a105bb233 -aa64644a4877da34e2197c5f2dc375c5 -2165718fc24bf21f1c4e0623c8e8d811 -e1f45852024724f00ced7935e297983a -deac06cde1f6b18a53a2cf0b03998da2 -8371f0970efbc6099c50afbbd4f0e477 -985d909280bc20607f4cb4941ae535f2 -abcdd18a791546544b52c0587dbd6107 -23e8b5a657c962a3e77979859ae1400e -cc4fab29cc180ffa888be396ce6aa6f5 -b553506daedf701ccdc437fbf3e6bbe4 -d707ae093ab94607010ddda09fc8a5a8 -76bdae04521ba996636c4dc431040031 -556c14fd0f3ff7bd6b435bd630e48811 -b500501957d4b8b412ea0102c842dd5e -d18506a74c66e4d8537269c10c783923 -c9b4b691f4d88b7d2b4d5b770b05c8bf -ba915c678f944fe5a480364ddc3382a8 -78134c91a1ffb2e21594daa2c2a932fc -6fc6c8790dfc301ee38b8b63e18def5c diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 deleted file mode 100755 index f251291..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha1 +++ /dev/null @@ -1,196 +0,0 @@ -da39a3ee5e6b4b0d3255bfef95601890afd80709 -3cdf2936da2fc556bfa533ab1eb59ce710ac80e5 -19c1e2048fa7393cfbf2d310ad8209ec11d996e5 -ca775d8c80faa6f87fa62beca6ca6089d63b56e5 -71ac973d0e4b50ae9e5043ff4d615381120a25a0 -a6b5b9f854cfb76701c3bddbf374b3094ea49cba -d87a0ee74e4b9ad72e6847c87bdeeb3d07844380 -1976b8dd509fe66bf09c9a8d33534d4ef4f63bfd -5a78f439b6db845bb8a558e4ceb106cd7b7ff783 -f871bce62436c1e280357416695ee2ef9b83695c -62b243d1b780e1d31cf1ba2de3f01c72aeea0e47 -1698994a273404848e56e7fda4457b5900de1342 -056f4cdc02791da7ed1eb2303314f7667518deef -9fe2da967bd8441eea1c32df68ddaa9dc1fc8e4b -73a31777b4ace9384efa8bbead45c51a71aba6dd -3f9d7c4e2384eddabff5dd8a31e23de3d03f42ac -4814908f72b93ffd011135bee347de9a08da838f -0978374b67a412a3102c5aa0b10e1a6596fc68eb -44ad6cb618bd935460d46d3f921d87b99ab91c1e -02dc989af265b09cf8485640842128dcf95e9f39 -67507b8d497b35d6e99fc01976d73f54aeca75cf -1eae0373c1317cb60c36a42a867b716039d441f5 -9c3834589e5bffac9f50950e0199b3ec2620bec8 -209f7abc7f3b878ee46cdf3a1fbb9c21c3474f32 -05fc054b00d97753a9b3e2da8fbba3ee808cef22 -0c4980ea3a46c757dfbfc5baa38ac6c8e72ddce7 -96a460d2972d276928b69864445bea353bdcffd2 -f3ef04d8fa8c6fa9850f394a4554c080956fa64b -f2a31d875d1d7b30874d416c4d2ea6baf0ffbafe -f4942d3b9e9588dcfdc6312a84df75d05f111c20 -310207df35b014e4676d30806fa34424813734dd -4da1955b2fa7c7e74e3f47d7360ce530bbf57ca3 -74c4bc5b26fb4a08602d40ccec6c6161b6c11478 -0b103ce297338dfc7395f7715ee47539b556ddb6 -efc72d99e3d2311ce14190c0b726bdc68f4b0821 -660edac0a8f4ce33da0d8dbae597650e97687250 -fe0a55a988b3b93946a63eb36b23785a5e6efc3e -0cbdf2a5781c59f907513147a0de3cc774b54bf3 -663e40fee5a44bfcb1c99ea5935a6b5bc9f583b0 -00162134256952dd9ae6b51efb159b35c3c138c7 -ceb88e4736e354416e2010fc1061b3b53b81664b -a6a2c4b6bcc41ddc67278f3df4d8d0b9dd7784ef -c23d083cd8820b57800a869f5f261d45e02dc55d -e8ac31927b78ddec41a31ca7a44eb7177165e7ab -e864ec5dbab0f9ff6984ab6ad43a8c9b81cc9f9c -cfed6269069417a84d6de2347220f4b858bcd530 -d9217bfb46c96348722c3783d29d4b1a3feda38c -dec24e5554f79697218d317315fa986229ce3350 -83a099df7071437ba5495a5b0bfbfefe1c0ef7f3 -aa3198e30891a83e33ce3bfa0587d86a197d4f80 -9b6acbeb4989cbee7015c7d515a75672ffde3442 -b021eb08a436b02658eaa7ba3c88d49f1219c035 -cae36dab8aea29f62e0855d9cb3cd8e7d39094b1 -02de8ba699f3c1b0cb5ad89a01f2346e630459d7 -88021458847dd39b4495368f7254941859fad44b -91a165295c666fe85c2adbc5a10329daf0cb81a0 -4b31312eaf8b506811151a9dbd162961f7548c4b -3fe70971b20558f7e9bac303ed2bc14bde659a62 -93fb769d5bf49d6c563685954e2aecc024dc02d6 -bc8827c3e614d515e83dea503989dea4fda6ea13 -e83868dbe4a389ab48e61cfc4ed894f32ae112ac -55c95459cde4b33791b4b2bcaaf840930af3f3bd -36bb0e2ba438a3e03214d9ed2b28a4d5c578fcaa -3acbf874199763eba20f3789dfc59572aca4cf33 -86be037c4d509c9202020767d860dab039cadace -51b57d7080a87394eec3eb2e0b242e553f2827c9 -1efbfa78866315ce6a71e457f3a750a38facab41 -57d6cb41aeec20236f365b3a490c61d0cfa39611 -c532cb64b4ba826372bccf2b4b5793d5b88bb715 -15833b5631032663e783686a209c6a2b47a1080e -d04f2043c96e10cd83b574b1e1c217052cd4a6b2 -e8882627c64db743f7db8b4413dd033fc63beb20 -cd2d32286b8867bc124a0af2236fc74be3622199 -019b70d745375091ed5c7b218445ec986d0f5a82 -e5ff5fec1dadbaed02bf2dad4026be6a96b3f2af -6f4e23b3f2e2c068d13921fe4e5e053ffed4e146 -25e179602a575c915067566fba6da930e97f8678 -67ded0e68e235c8a523e051e86108eeb757efbfd -af78536ea83c822796745556d62a3ee82c7be098 -64d7ac52e47834be72455f6c64325f9c358b610d -9d4866baa3639c13e541f250ffa3d8bc157a491f -2e258811961d3eb876f30e7019241a01f9517bec -8e0ebc487146f83bc9077a1630e0fb3ab3c89e63 -ce8953741fff3425d2311fbbf4ab481b669def70 -789d1d2dab52086bd90c0e137e2515ed9c6b59b5 -b76ce7472700dd68d6328b7aa8437fb051d15745 -f218669b596c5ffb0b1c14bd03c467fc873230a0 -1ff3bdbe0d504cb0cdfab17e6c37aba6b3cffded -2f3cbacbb14405a4652ed52793c1814fd8c4fce0 -982c8ab6ce164f481915af59aaed9fff2a391752 -5cd92012d488a07ece0e47901d0e083b6bd93e3f -69603fec02920851d4b3b8782e07b92bb2963009 -3e90f76437b1ea44cf98a08d83ea24cecf6e6191 -34c09f107c42d990eb4881d4bf2dddcab01563ae -474be0e5892eb2382109bfc5e3c8249a9283b03d -a04b4f75051786682483252438f6a75bf4705ec6 -be88a6716083eb50ed9416719d6a247661299383 -c67e38717fee1a5f65ec6c7c7c42afc00cd37f04 -959ac4082388e19e9be5de571c047ef10c174a8d -baa7aa7b7753fa0abdc4a541842b5d238d949f0a -351394dcebc08155d100fcd488578e6ae71d0e9c -ab8be94c5af60d9477ef1252d604e58e27b2a9ee -3429ec74a695fdd3228f152564952308afe0680a -907fa46c029bc67eaa8e4f46e3c2a232f85bd122 -2644c87d1fbbbc0fc8d65f64bca2492da15baae4 -110a3eeb408756e2e81abaf4c5dcd4d4c6afcf6d -cd4fdc35fac7e1adb5de40f47f256ef74d584959 -8e6e273208ac256f9eccf296f3f5a37bc8a0f9f7 -fe0606100bdbc268db39b503e0fdfe3766185828 -6c63c3e58047bcdb35a17f74eeba4e9b14420809 -bcc2bd305f0bcda8cf2d478ef9fe080486cb265f -ce5223fd3dd920a3b666481d5625b16457dcb5e8 -948886776e42e4f5fae1b2d0c906ac3759e3f8b0 -4c12a51fcfe242f832e3d7329304b11b75161efb -c54bdd2050504d92f551d378ad5fc72c9ed03932 -8f53e8fa79ea09fd1b682af5ed1515eca965604c -2d7e17f6294524ce78b33eab72cdd08e5ff6e313 -64582b4b57f782c9302bfe7d07f74aa176627a3a -6d88795b71d3e386bbd1eb830fb9f161ba98869f -86ad34a6463f12cee6de9596aba72f0df1397fd1 -7eb46685a57c0d466152dc339c8122548c757ed1 -e7a98fb0692684054407cc221abc60c199d6f52a -34df1306662206fd0a5fc2969a4beec4eb0197f7 -56cf7ebf08d10f0cb9fe7ee3b63a5c3a02bcb450 -3bae5cb8226642088da760a6f78b0cf8eddea9f1 -6475df681e061fa506672c27cbabfa9aa6ddff62 -79d81991fa4e4957c8062753439dbfd47bbb277d -bae224477b20302e881f5249f52ec6c34da8ecef -ede4deb4293cfe4138c2c056b7c46ff821cc0acc -a771fa5c812bd0c9596d869ec99e4f4ac988b13f -e99d566212bbbceee903946f6100c9c96039a8f4 -b48ce6b1d13903e3925ae0c88cb931388c013f9c -e647d5baf670d4bf3afc0a6b72a2424b0c64f194 -65c1cd932a06b05cd0b43afb3bc7891f6bcef45c -70ffae353a5cd0f8a65a8b2746d0f16281b25ec7 -cc8221f2b829b8cf39646bf46888317c3eb378ea -26accc2d6d51ff7bf3e5895588907765111bb69b -01072915b8e868d9b28e759cf2bc1aea4bb92165 -3016115711d74236adf0c371e47992f87a428598 -bf30417999c1368f008c1f19feca4d18a5e1c3c9 -62ba49087185f2742c26e1c1f4844112178bf673 -e1f6b9536f384dd3098285bbfd495a474140dc5a -b522dae1d67726eba7c4136d4e2f6d6d645ac43e -e9a021c3eb0b9f2c710554d4bf21b19f78e09478 -df13573188f3bf705e697a3e1f580145f2183377 -188835cfe52ecfa0c4135c2825f245dc29973970 -41b615a34ee2cec9d84a91b141cfab115821950b -ab3dd6221d2afe6613b815da1c389eec74aa0337 -0706d414b4aa7fb4a9051aa70d6856a7264054fb -3cbf8151f3a00b1d5a809cbb8c4f3135055a6bd1 -da5d6a0319272bbccea63acfa6799756ffda6840 -fb4429c95f6277b346d3b389413758dfffeedc98 -2c6e30d9c895b42dcccfc84c906ec88c09b20de1 -3de3189a5e19f225cdce254dff23dacd22c61363 -93530a9bc9a817f6922518a73a1505c411d05da2 -e31354345f832d31e05c1b842d405d4bd4588ec8 -3ff76957e80b60cf74d015ad431fca147b3af232 -34ae3b806be143a84dce82e4b830eb7d3d2bac69 -d7447e53d66bb5e4c26e8b41f83efd107bf4adda -77dd2a4482705bc2e9dc96ec0a13395771ac850c -eaa1465db1f59de3f25eb8629602b568e693bb57 -9329d5b40e0dc43aa25fed69a0fa9c211a948411 -e94c0b6aa62aa08c625faf817ddf8f51ec645273 -7ff02b909d82ad668e31e547e0fb66cb8e213771 -5bb3570858fa1744123bac2873b0bb9810f53fa1 -905f43940b3591ce39d1145acb1eca80ab5e43cd -336c79fbd82f33e490c577e3f791c3cbfe842aff -5c6d07a6b44f7a75a64f6ce592f3bae91e022210 -7e0d3e9d33127f4a30eb8d9c134a58409fa8695b -9a5f50dfcfb19286206c229019f0abf25283028c -dca737e269f9d8626d488988c996e06b352c0708 -b8ffc1d4972fce63241e0e77850ac46dde75dbfa -e9c9bf41c8549354151b977003ce1d830be667db -0942908960b54f96cb43452e583f4f9cb66e398a -fce34051c34d4b81b85ddc4b543cde8007e284b3 -61e8916532503627f4024d13884640a46f1d61d4 -f008d5d7853b6a17b7466cd9e18bd135e520faf4 -bd8d2e873cf659b5c77aac1616827ef8a3b1a3b3 -b25a04dd425302ed211a1c2412d2410fa10c63b6 -a404e21588123e0893718b4b44e91414a785b91f -a1e13bc55bf6dad83cf3aabda3287ad68681ea64 -d5fd35ffabed6733c92365929df0fb4cae864d15 -c12e9c280ee9c079e0506ff89f9b20536e0a83ef -e22769dc00748a9bbd6c05bbc8e81f2cd1dc4e2d -f29835a93475740e888e8c14318f3ca45a3c8606 -1a1d77c6d0f97c4b620faa90f3f8644408e4b13d -4ec84870e9bdd25f523c6dfb6edd605052ca4eaa -d689513fed08b80c39b67371959bc4e3fecb0537 -c4fed58f209fc3c34ad19f86a6dacadc86c04d33 -051888c6d00029c176de792b84dece2dc1c74b00 -1a3540bee05518505827954f58b751c475aeece0 -dfa19180359d5a7a38e842f172359caf4208fc05 -7b0fa84ebbcff7d7f4500f73d79660c4a3431b67 -9e886081c9acaad0f97b10810d1de6fcdce6b5f4 -a4d46e4ba0ae4b012f75b1b50d0534d578ae9cb6 -6342b199ee64c7b2c9cbcd4f2dcb65acef51516f diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 deleted file mode 100644 index 7332dea..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte-hashes.sha256 +++ /dev/null @@ -1,196 +0,0 @@ -e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 -09fc96082d34c2dfc1295d92073b5ea1dc8ef8da95f14dfded011ffb96d3e54b -33a633841666a5c291a82bfae65deac5c537d05f9fe926cbb5b7281bf90ad150 -8e2cc699f7e677265069f172d4cba15c146e954d7e4f2a8c176576035275b7a0 -8096d72b968a2dbb7ceee163c1981f7f1ec11ee10051b2dc2a8d7601d4e56971 -2cc06402328f034d1909fa7b95f34cdb5585ce7f9096bc4082c97904921f6304 -99a8d6823b803a8d41ed7c26322b4ac8fdc86ce4457ffaaf8600e99595f1577a -5d73704556bd458af1b90383d98591c1d01894d99b394fb7647d3d0cbd45f9a0 -3b9606c772ea20bf2889732b034f9fd476ceddefe8ec4e3704c5993e38dace1b -b858d7c61b67e1688c267ca83b57dd0947c4e5acc4eb3d130fbd92222b66a9ab -87574390294ef6d212b6d8c44ebd5c88e932036dadd0b827c6cb25cd120bfdf6 -afe90242f095e967523c12333b0093d4e532a0db0f27dcc25d44d23ffb62094b -55731252db2418c49f15d7f0f146c6506589f016a82c72cf8a6276ac6bd123c7 -c2e0ed603bfa67292b78a29264e409a2e0c98482cdb59cf4fe7cafff69853d11 -517f007a8b65d4197411c35b14edb1340490a9be7a6c66b8c827b1e101a05b5c -76c977fdc97261cd0956ce1319476d314bc57d8691c7884cd0a7ff3cf825c31f -f10c26637ea8ca2d0898fa661f087f13f174fe0ca1c91862ce3b6127c3430f51 -679b95521601c0ba63ce882046abd7a8cdb8e78d5c0ee9f38c21dc47ca846195 -af369f2162152e43847b4d0c595dcf2d27059563909425f37928bc01090f2f34 -7e1f6f080a60c402bb9c39578f75afc148a0746c656ca243f75038b82304bdf5 -8d6df02738597d95e2eb9e870d4177339728d9ab8b8d61aa96f0b6d1b5ad6efd -d0a9699291dead3f6fba3b648c28537a04caea4b96b145802c06125a17c3faba -d504026213b322cbcb0dbadd6a1fc6c708825019da9bac7aec973f750cbf2d3d -66c1a2578b41c3a200296e85d4d30a1876f8ca5cb941ffb1420e04d8e37149a5 -b8a87b047350912e4861e4aab7d1046d5372797ecea81d187f8e2c117db535dd -8d2b52d4d4074d471d037cdf9eeb13c18ef9ce4949fce00d106ef0880f2db5ed -3d182e9928b2433c94255452170e59e3f4cca3dd29ea2e9b01e94e89da595393 -17c3f5d88ed7f3f62be0e28913357d65916389c1633db8fb62b92e14230d3611 -93788128441c894247bd9ccd6fc8af146c0ee76cdbe4e1c5a8dfa81dd0c338b4 -c7855ac54d2c5767273eec327efe39fdb3bad74121bdd8d2065484268727539e -d1e1f2aca9cfe8c6460f576661190a8008705ef13207c4c7200a2d6b0605f519 -b1843454b0258016558abdbd899319c1fd12d03e0c3d9e882da03de9cb981777 -2834dcb6957b97fdde61b532d151ee4482bface8714fe36cd072b4783765901d -47d61de59879013f64eb78fa8f6c8b906f7d25b8e1c3ca888f32421749c0d042 -855fc59aa873328501ab0b1ce9c60a7d5582662c725605ebe02b64a13e34b3bc -e05939e8ff4ed77a11522dde249a74841c54970d984e0bb6f77ac64f1fa313b0 -078778fed0e382da5d7dd36f585e1f1aa9b92d4caf20b85c0f6dd346de8d3998 -263140810ae46430e19ac1a4a98b6204b63031b282ecb28594bd837268104308 -ed39f65ea0e6cd8fb39bc5d94a1554dfd0002733e01618161d58a7b7dc8be834 -89830272d1fd54040f9329a39c7f491f15eea851095e0bd2d0bb412baeda7445 -c9b63e8ac2e87494f98c9ece5d74f4540090c286166efdaedc6d59a0f623e5f8 -509e6b7dacb70bfa62f3964eba990b9c576fd2485c1040fefc8eab5f07269f4d -8bb7546f64ce1cab770407de791ab25f7bfbac3e071810310ee674c2824e59ac -ac5bf3cad821e7ad8b2ed7bbfbaaa5e7abb30606afd8ed5d6a18a0d0eba343d3 -f7995f433d17bee25f44c918de82eb147b3bfef24045ff8fb17ffedf559e06b7 -2c465ddc53e88894a2279e30b9e6feb064c66b15dcf5a38722f5c92d65a84bab -b0ced82dc52c4f9b1dec098a80a23a4a711f3a8c9c3684f0761b0e8a29ba560a -f8dce75572495bc241288c07246acf7a157d462a9c01d1491618f073e57f47e2 -46d89d780f178334d19e02c41d5af2e265e2190896dce94822b99c19adc3ff6f -968954bafff8e2a118d3aedffc6283b30efddbac0af2245195c2a32a665a5d54 -33f78a8a6adc466fed41020fa799aa537cc1c1bb4e938c06a1baec97f7b3c26c -5f7f49d1c307363de95d450b558275f8d5a6780ee47246268e6729f7733e535a -9f126c6e07ed2744cef5de1f468b2ed1c51a13ec3c8351935b9656458a3dc40f -b8e3d23621cb02bcae060bdf5b6b7db1f024651f98ec63766c20b7883bc033d2 -689c608602d5e5d37a0285eeb5006d97addd7c2b8e006770fad588eff621c971 -17c6f0073c4f92d5eedda57ca2506aa6002695c6b7bf12e4dbf4dd1a7fbceb08 -504472bf96d0a3da1098dacacac48886d1ab92929187de95c7f42eab9907801d -ad3a49ab7ad5b69182301d9ef971feab72f770f4d9f60f6db308ffea746db005 -5cdcb342f26857e8db5ac97a89da6197759adf384ab241a8112795241983238f -4ec9883c8ad72131c79f14e4f1e75042a61100a5bc290fc344ee3c2adc99c143 -375c64eb3361f34b4d89078fa95d082c74bced92436aa3d50031839375d6473e -8a0a36538da941bea6c614b2c038424588d8d2505039f70cbff291d4f0f9f6a1 -a4dd6338174ebeda6a25b88d754fa5b95cad27902eb0bc8321b76db62efb1abc -a644092a1de8e05e17908ce565d55fcf39e30585565d96bf1c13eeb9f3401803 -7697b1435a5bdc094038469fc5268615cbe94641b2165bee62466426ab414c97 -62f249a85b14b477e764e63e9821d3f44dd2c745293f3586eff976266311a39f -eb2c75aa7330a6589d09f58231d1218e4124ba49b7b0c5245a76a5101d136449 -90c096f9852990cf0fcfbd36ffeb577b4d106d66e9c7a18abdc6f7a3b1ddbab1 -327b0e47ba3bc200579ac67ac38968e0df655e2d22ffe3adf238f7ac9029a1de -bdf4ef8fcafbe13b772ca217eef56a316210e71f69cd943433087c68d9a67bb9 -72c955a5adaf9e49d565342b41b36ee5ab9b5a394d003b804e4e361a46bda571 -cbd287d6a6707e2cdc8e63a29f758facbdab375bb252183d3af877dea8d25260 -7aa856fd19741a16ec634b1f653cfd5ac224278652e0b0a2903e274be20a048f -8410cdb01c659f05741fd29469d0dbb0251b4fd8e708abeec4a879047fba7c37 -b5f811baf9c441d04f010f76bcd7eae80c5bb249a40ce37436f0a0296849b8ab -9be38d9ac8a9c30e8a5e86e3ede291b23bb381ee41dc662421e394f6b8b9881e -ef45cac2d6f325a523c40a989f5554e152f8d65cbd22d35824d1f28378658432 -8e3d126f3a316e0ec49741a3ae6215e29c4acaee364272b7087d9b766579e00c -a43ee360b1dc90c573bef4145e1d4557166d7cce6ea1ed33e0cbd909643c3621 -5396745f9645dad55b732efde57de49c2ae40624fee192579014dc2b79d814d5 -b617be050dedb47be64d82dc19e3d84b6799b5bada18944df5417759a85e445e -17d5520a82dd7c945de6a92200d036cd95bb16330f0f95df802d23e90c8e5c2c -b71e5a677801057ec719ae2655732720644bc8f999a8698876c92e4323d4ae0f -80c6a41efdfe452d1ad6f3b0d5eb31b962c332a9bb7e4f7ee6f4aaa18a3b81d4 -32ae8512b486d4523ca7a630556758655a5cff12aa5cfcb8dc5e65b21a257f4a -0f14c68ffe8c26e9d2ecdd5ea8027b6549b3e8742023ffbdc7547227cc27ec2c -85dff510ebd3f1fa617a2273ed67ef5abe4774cfe95657fe380e75b25090664d -7a852eb3b59ad350c9d47adf1ce0812d06866cca8e1f2c65c893e7952a62eea4 -49cfe8b6302a2d45b866a26c4940d777df4f588ebe1bafeb275a8a03a1eeb0aa -e6e49ebcd83acd3a9ec0b100e26c4d82388eb9378ecfcbf967a31c4951ad0c01 -9edf4d38cdd6e73e857f1ec91132499e7f930d2cdee6b3583a8f062ff7e9d848 -768dbebcd6aa66337810b7457964c63322904e9242229e5d98b808799f7f4cd4 -867a5ab42d15f9843d67438db495a8a581eddd39c3753f3d203225b60eaa9a3e -d7acd8d042b8c6802f6d9262055a6e296f3254674745f18cd1b21244e1acb9f0 -fe781c4d49e73ca9f82389b6d58f3def857cffe624acfb6a2a5a8e9559623f37 -96fb72ddb440bb1f00dbafc97768f9890effcc172fcc395de4f2a19318c46c86 -b63555a77fefcadecfa88a770e70f1d51d46ae68fc672ad4770804495eb1b867 -161d1a609fdeb2fa425761bf0b751dfd25e7a0a02995920921f99f63331b76d9 -c80931a1263d7f192937eea3e453006b19525ed981314ec3fd561d256e8e135d -a3b6ba9a5cba6071a99b1a43454053bfc3e6d1338ccf0063d5d71247a6b57566 -7d057dc07ed5a7c11590262a0a18c8cd614a029ca12fe08bfedc87307b5f65b9 -0b7744d3394c04618e6376cd450cc3fc81586493ab5081a9b3b155938d98563c -e8d1ea7154ec53c175761311295f69037865db32ec22976b6ddb981d226760ad -40aa287bdf661317439fa5ffa77cc9fa9ca3df504aae74b0ba83b2fbebbaac83 -ee2e8fb7206e2e8fdae91afcc3e903d534b304069f232c68f53407cfc6d0bbae -b940c011eaef2b772ba03659581d525e0b6148f9c59cb7120db55ce18bf6d695 -9574545ba02bd75bb1dcf038884bf9d7892bc017215308f01ebba7932c014a62 -da685c53ddf810225507141759e3c74ffeaa1c5eecbe150386a83027e7014077 -5c0769369e4fb9f9d9e599612923554fb2f1e6d87eaeed283f6106845b66b532 -19056a3d33ebe1b84a100c27fc72d0265ceeb9c573d7942a4d44983238d34ea7 -8a5e6e6cae30d4283fd70af96d9c53d8ea45ca48892d313981fe208b1384f0dc -880992dadfeccb31f289522214209eb87f41fea5fd3155ab274e9a6fdc6f9f64 -ea7a2b0e780fc6dc8843643a2bc18a17226a1bb3d9e1467cf0be2201decce2c7 -2077395cd7562dd5e9965ea620cedf32c805f50f748c4ee6e82af960c5ce2d66 -2dbdc632baa5d0831808518beb80e3737de5bbec3dd0438e75dd30b2ea7fbb90 -ced4cf34982e0abbef40e876659544c4ed01f1975351490984aaa429fef321b0 -69339b4534eecca329ef2af397ede2a882d7e315a871dd2b781b8e0f4277ee66 -79cfbb9b52e573e22cd3427ec258d69e2d19fd27de15df96ca9006ccebe7b58e -1203d54626871bccfa8abb8bbd740b9af3c7266bc8490a210074d7f2b0806ae8 -0c15140d3b5e4b180b0b1517a51fa08f82458c02185ef2bc59fae37543ef9011 -ab71b18daceecc7c8fde7cf5f77eacf118262d760bcd383dd7bfa2170895d518 -fa3174d3432fe38241a34a8387811b54c3d0f183468cef5cd6d3fb325b270b66 -c13fd9ed22d33aa45f73748782e4dbb835d180dc0662e160c0a6c445c76f0c72 -b88a842dc14c41c2b5bd74e48fdd2bd0d43cfeea1eb9b154bebfc4f03d8a102d -45ba1056e49828a0385b0b5f9e4933905973f15b2713fee1c1755e2a7a3e8d79 -a0d7d4fda9435ef292b761aed2c9fea576519437a824e96150a4324dcc757605 -7906439843a1c1758c232182eaa66d5e6bd5ad2fbc0157fdc5438e1038966dc4 -35e5a6c17906646cf15c2bed4884129b5134eb2b411400e4d8797126f51a4cb7 -d19ddbd98476519a07cd8917b95eb609e5b50e8088ad68cd7426e8139d5bffc2 -cafea6a1183ca8934867692684194ce9903b375a8036c4c5deb8fb379c3423cb -7e4734ce7e22a515bfe60e296640dec121a089f75034240408fe7be2ed9e5c87 -b09436c29cc3823c434a4689bb67a73a49164bd23ab40c4e04ed99320fd138d2 -d6752f5e2738cbaa2e154b749216babc990297af411dfa2b66c9f942480ff4b9 -0f0cc4994a2a88f58cc38afdf61ff43952473c437d235cec426139c8f43ffb5a -eb9dd875ecf9ec930b1482b8a50c337d48b31590f99cdfb80bbdd160ad4fb49b -ec7435c1c8e3eb1de2871cdc797bff6969b863e5b9fb005b3a7af4ff96680c63 -e5afd502015d80bb43ab7f92f138b35ce5fafa980c5fba78412ffcfa281f9d8d -14e7975021e84497b4daf367f6861c79820308883c4e1254c038a7458a3f2913 -bcefd79629a6d7a8afbf0c8ccfc2c5889f627989e71c3a212d900e3015e460fa -74661206cb19ec00619e1fcdcae443486adfa69a564672c9ee9f48f8ea35d5b2 -341bf4dff841088f3b902c2471b67b49498bda5c045e9befd58af93ade0a8df8 -e5239ecec9ea7737f614ebab502df1248c0a9a0183fc70441fd9ac88040846ce -58e09b4047770bc998b86a4191b7a11eec6fc65bd5e5d0fb6f30d4b7ee0cd683 -9e01666f3284aec585338d0b452aa1712b9d1392c4a265a2ecfc9dc4cadd002b -33aa52b6be6991965ae18124232f108ec7b400528e848e5d8a8d7cf75783ee19 -f854ce37a0821dee06b616d2e86383271c91e09328f884dfef2107712d267601 -a58035c4921e7114b97fde8d4cf04224971d49fc6b23ed5d61a29e133684c809 -4d8963b832c44bab059a206f162890fff4eafd71e535a03609a67fe3c31de9e3 -6ebf98b52fc3c4e77257d176b47d10729baeec4066a9bc78a89d7d02af7ab2cf -366cd811c075198d1749db7075c4c333b6f347b64e44b3744ef28a3957a0feb1 -712157d7d59011c4bf1ee690217f4b0f855816e9bbee6b6aff277b9645340c9a -1dc0a697f2a7c1da301b256e6822879f212beb56fbc7fe1b8e877ccd964c132a -6fb0514a46f06be4bc3798ae82fa6cf14103926f1969b3d70910a9c5d9589e58 -9731a6c8ef6c4d601781f231e5b17c0a5194495d5b01b27aefbb4cd857c0c7d1 -b18a49b7c4114fb94d16ffdce1e1677e6bde99bba443936af10cbedca6eeaf2a -ce197d61ddae42c8b8447aa698b3e7e5d51d9f0cd2034bc64f1a9d1b2b18e3cd -7d9a3aebb470990abb92303f0c2ce5d6c38f9a2198d8f1ae8ab7fbbbf007cc7d -e52d8c79b31f45d4894e0948089da5fc236d33dd79a80d2304043e8c234cf88c -b1870cae9e54cbe8ddd74782c98f6c9ec6eeb835e2765252530d71779685d4ea -69850fe71261572f61d56863a7dc12aeda7931225d0eafb5b7b45aef7b6c8586 -18fdfb38e4f516734cef5de8cba84a54a17cdaf13228621dfcd806c5e822eccd -9db6e6591134181c2c19bbc57f24e11ea161165cde584e1f58c4df2fb5ee8c88 -86eafcaf23edfef66753d664eaa7813b5a16d1abc01a95f74ae88a02e42cadfb -7be29e433c7e17875c71eea08d10ada5a17eea25ead94d41cb1711e8fd204c06 -c1f98aac0cfc98f30c3fa13fb8011b2a1d553e6c03edb8e2a35f47574237fc64 -981571f9393463f49cd5352c024a8998d7b139bc8aec7a512101edb18a7e0954 -8628162a5c9d34c94e60027175f819e98a356832a3d3898a7f11b95e171e2a73 -1c4530860ec79ab73b141a7e64b0de775192a002fa2f3832b6c24972797d5161 -d97097c16c4d0cf169e61cde78e807cd318b8938992066bfe4e266e14146fbba -3a18179cf693d234a8aa913b7362505533b414d60bf7eaf02427157759defaba -8ee61f98cea2659f5ab9d8ec444de3b3e843ab02baa7806e96230a64dee93774 -bc69420ce99aa58de5d5c9ae32c3528b02546347e8f85dca651187142bc2a40b -79b2d4da202168d2c6f7dbff6dba414f71e405731a287a23b58af903f9b1c770 -068c65431e6010461cd77e3d2859fbc978857d1195dc1506ab1b5c9344e1099f -918a1d14de8c5fa363fb3137cf5014020646a1a2235f78ef3ed0d034c74f5761 -ef88b649d012178186dcf0244835232b5b7392e0c1f8f141f5107e9ead559e74 -326f14fc54954b73d704935b213dc797311f7c8fcd88c238c8ab767286dc3f94 -0087e37129b9a2d58b0987a218a3c1be67cb1e08142cbcf889aa617ca3e4640d -93294033c9de9361a3c6cc0df539e2e459f6d2babbbc0623859e18af0d0ccf4e -49640215294d9263bc464538c3c29e42edea637d1427c2f04ebcd828d6fcb480 -ce5cfa5b3b0485805cf5bcc8c24594a6b6fec9249698d317ce20bc84d857eafe -c9ac43870e02c7b36bb1e7ba3ce2e234507c0076f8a77494f268777edf5ebffc -30eb195e3aad4c288af76c66e26c6096f5f7de1b56b43d638ab7119d73cfd214 -338225e3b94025d2b327d72ed3d763a66856e1d1ebcb632bc4d8752000ad9966 -69b6cc0729b2d2877d46a08f3c251ae18f043949a33797c3027668b23c969d68 -3d35c10650a2da8413a2a11b8e7fb891af5da3a9763584caa6cd71bbe68de6ba -baf3bcf323f3e5b91649eeb5f1be977a8bd91915a66297a22fdb1a906d1a7e53 -7fd9b3abc4684e6f8ee591bbac5a36c5060bb09ef7899690416e5300cc14fcd3 -429e454c0cd5d874d7887f8f8def3390a6e54af783c102af6bc3c75c62f3661f -0987d19048e10b925bcf394dfffcf259fc1a15e403673a80bfd4e7fd4f43cef0 -fc774a081d9c93d52bb6a8d99a06ccd7bf32a10154d302524b8c5c5dc1b2969f -6c6afa35f1aad6301dfde6c4ababe2da47d92033a9a41e84ca6f00e5eb29bc60 -1e858dd15069f54478023c4d8518cd5aa814fb15c9eb8df45c44efbb050587ed -5d73820315ebd00f0e419a7fe418ff109664add82a68387daffff4239a2c1b23 -f7f4721be31524d014bacf105b06bacc4bdb953bc04d5a048e1fd4ddc395667e -426cbfa5a10024c4f5deae9146222146c2d75a5bf13e8215c04d7dd17f455743 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0000.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0000.dat deleted file mode 100755 index e69de29..0000000 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat deleted file mode 100755 index 6f4f765..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0001.dat +++ /dev/null @@ -1 +0,0 @@ -$ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat deleted file mode 100755 index 26136c5..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0002.dat +++ /dev/null @@ -1 +0,0 @@ -pð \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat deleted file mode 100755 index d3b1468..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0003.dat +++ /dev/null @@ -1 +0,0 @@ -ð \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat deleted file mode 100755 index f00c578..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0004.dat +++ /dev/null @@ -1 +0,0 @@ -8x \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat deleted file mode 100755 index 9b3ac32..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0005.dat +++ /dev/null @@ -1 +0,0 @@ ->ü \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat deleted file mode 100755 index 611a56b..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0006.dat +++ /dev/null @@ -1 +0,0 @@ -çÇï \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat deleted file mode 100755 index 0af0f7a..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0007.dat +++ /dev/null @@ -1 +0,0 @@ -àûqøùÁü \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat deleted file mode 100755 index 90e3f79..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0008.dat +++ /dev/null @@ -1 +0,0 @@ -ÿ|`<€â \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat deleted file mode 100755 index 6012eb5..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0009.dat +++ /dev/null @@ -1 +0,0 @@ -ð?È`þø \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0010.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0010.dat deleted file mode 100755 index ebe52630c8dde36f510b471c69d19443ac0b89f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10 ScmbP#{D=I($H$M`GXMZ2yan$7 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0011.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0011.dat deleted file mode 100755 index bc046e158990bfb62680d518d7fe4a19edb5900d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11 ScmZRm-+%wWKc+f{AN2qtRRz-k diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat deleted file mode 100755 index 3464653..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0012.dat +++ /dev/null @@ -1 +0,0 @@ -Àø0óùÿ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat deleted file mode 100755 index 648b68f..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0013.dat +++ /dev/null @@ -1 +0,0 @@ -ÄüøÀðAÿ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat deleted file mode 100755 index b19f410..0000000 --- a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0014.dat +++ /dev/null @@ -1 +0,0 @@ -ÿ€GüÀ`0à<ÿ \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0015.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0015.dat deleted file mode 100755 index 1e4de6c147e0adf8399e1d77b2fcefbfdba5e93c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15 WcmZp$Z?XG-z@DF>{($`RKMVjhqz2Fc diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0016.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0016.dat deleted file mode 100755 index 7c4618363426e188afd40230ae39b42d1e1f4697..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 XcmezWpq{a@@qgog20I3Y`UZXgO05S? diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0017.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0017.dat deleted file mode 100755 index 5b4570382eb6a0a55b8e1dff42c098f1ec63a742..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17 ZcmZRuV2LM4K2`m5r diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0018.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0018.dat deleted file mode 100755 index 47c17ed443dd0eef0162ae4442cf28aea68d69b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18 acmb<_e?YG0{{#7d4Dug1{vW9SzyJVaEeZ+% diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0019.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0019.dat deleted file mode 100755 index 4ed952ace3454a17ac8512cf8337c17e58e96a5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19 bcmaFB-@wkp`2PX(2mK%R?-?o>|1kgnQ2+=c diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0020.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0020.dat deleted file mode 100755 index a7387d70212a852429e82c7554da6e91b128f92d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20 ccmaFPAi(fLg8##RhW`!rhyQ)x|HJqn0AaQYfB*mh diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0021.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0021.dat deleted file mode 100755 index a330c33d2f2b29e5a6a2aa5205851966f0987a85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21 dcmZRO|H1!<;Saw^?w-T|1kgnhR+Hc diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0024.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0024.dat deleted file mode 100755 index 37ab0ba8597eeefad9bfe1b6b8cd1e67ab7cb77b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24 gcmcC#Z+O7|fZw6ev82Ep%|6%z5hXDYtTnr!p diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0027.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0027.dat deleted file mode 100755 index b068ef30a9ff528e6b853fdc31e2890f30404330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27 jcmZSJ|6zY1fua7#e+K3cHtYxLAK3q3WT<2Qe}Dl1p_mJ* diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0028.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0028.dat deleted file mode 100755 index 98bc2d9fb11935124cb239f3aaf56eda2322f1c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 kcmZSJ|G~^4|DS>XAA>yu^Zy6z2mUkI)PG?7|HJ-20E>JJ{r~^~ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0029.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0029.dat deleted file mode 100755 index 97bfc3d26b0629ed401752421bd8067d960f87a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29 lcmZQzeDFa29|Q9r2LAsK`2RETG1ULz|Hn|lVE>=tKLD_73?%>n diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0030.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0030.dat deleted file mode 100755 index 25f09c046a5f98db79ae82f89230ae3eb11af853..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30 ocmV+(0O9|DLI1=403HAj|KR_C58wcQ_x}O@0sr6s00IBt0QhPUE&u=k diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0031.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0031.dat deleted file mode 100755 index 988f3aceab93215e177bf5ea1ce082c2b13c68c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31 ncmeyt&hY<0{XPc%{|wBJKm7l|Am8}Ef&YJl0`mvvhW~#6`5+Jt diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0032.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0032.dat deleted file mode 100755 index f31fdcb07327f91ae94f9f639957bc9ab658dfc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 ncmZRuP++M4!1({)`G4&H4=~jKkY`{xz;J;7za2l2XkY*U>YWZ4 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0033.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0033.dat deleted file mode 100755 index 396509b36f43bf87bcb901d7c5b3c6c3b873ce0c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33 pcmb3D!T$dT^8?2Jf9!uSSjaQj-(ft!^8Y^r{~rz}2F4He{{aZp4y6D9 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0034.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0034.dat deleted file mode 100755 index 55c11cbf7262028e4b49fbcbb89c1328a074b080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34 pcmZo*Z)0Ho|A4{%2Lpct{||m3Q@(+r{>K6S{~u~t*#9#y008h54g~-J diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0035.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0035.dat deleted file mode 100755 index cedccf77da8fce9db422c99ea5f5fc0ef99f89dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35 rcmZSl&mdvP&%plw0K*6Qf9wqj{684%|5?Z%V6boe|404-gZ+O1=D-ef diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0036.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0036.dat deleted file mode 100755 index f597deb279cff0381a0d2183922399cefc336398..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 36 scmexh|Nj6({Ram7|NIZw`Tx{0|NroZfBpgc|L6ZRFaV{VGyeYp0BLg+ApigX diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0037.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0037.dat deleted file mode 100755 index 6bcc7ebd4c052ac0771f2aa4c2e4cc79401ec18b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37 vcmV+=0NVcm0snv?0Ds^Beh2^f$N2y75B>lE;1A#cAODB{00Hm-f5HF%OVbkB diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0038.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0038.dat deleted file mode 100755 index 48e731d1b7f924137bfea46da957700f714b1c91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38 wcmV+>0NMWl0Du3$0sejg|Nj5*fB(<;2mSyL|G)?T`~W@x2mAnkzz2X2|Cgc@*Z=?k diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0039.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0039.dat deleted file mode 100755 index 5ebdf8c6988241556bf98b27281dd00c749fde5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 39 tcmezWpZP!gkN^K080!E1|Hr`m|A+j4dmv_z|IdG*{sZIx2S64B0|4Ry6~6!g diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0040.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0040.dat deleted file mode 100755 index 4ee0307884f5c04b5b3a7cdfb06c26a96f23dcf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40 ycmV+@0N4Nj{{R60`~U+F|L_6$01x5+{{!GZAOC;=d;kIezyW{$01gNL;Q#-cSQJhG diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0041.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0041.dat deleted file mode 100755 index 1f7c8259b0b275cb0190a21c6ade7c22f116f06a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41 wcmX@WVE>Q#4-W$ibnEyX8VEoU(U?a!a0Hhu4|1sGAZ>VAX-@s5009xk|aR2}S diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0042.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0042.dat deleted file mode 100755 index 9c9044f9c048850aaddf8b78ed4eb7c77fe28877..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42 zcmV+_0M-9Lpa2j5f&ah{@PGIK55NF_-~r$O1pfdZ{s000fCvBn06+i01OI>kKb_YT A761SM diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0043.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0043.dat deleted file mode 100755 index 572186163d02e67472a69f694e75fd0cb19cb27c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 zcmew$|DW-H!~X*f>>n7I|2Hs5F#i9;@c$3<|Njj22bljK|9^n_15nuh9|Hpb0`(Tn diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0044.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0044.dat deleted file mode 100755 index 963f6a806db5e7a99bd229dca7f5c6a454f40906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44 zcmV+{0Mq{m@xTAz0C)fg-~fOF@IUte05|~t0Qe97004kL|H1$K0RR7w@BknG@DKmQ C-WBZt diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0045.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0045.dat deleted file mode 100755 index 8bd9b41a582449ee1731fffee92450dc1f84d425..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45 zcmZROVPOCNhat}XKLdl!|NjT<|2IA;V37aAzzh_q|9?QfhyVYF{|)R91Q`GS2LQYd B6+Hj| diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0046.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0046.dat deleted file mode 100755 index 47ecdd2ee905719c00de330be6b9aa78e4748958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 zcmX@W!2Z9X{(l2wgZ=;W2mUeqKOp~y@&6Bo|Nr>^e_&%^IAH(3q2m7^1|ScJ0am*i AVE_OC diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0047.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0047.dat deleted file mode 100755 index 9d1116f69fa516b4b48d8ef29c6c3d2abab02f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47 zcmV~$u?+wr3xh` diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0048.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0048.dat deleted file mode 100755 index 13f3bd74b5b4d298fc57f12d6ca8de77fb4afa1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48 zcmV-00MGxx_y7a`06+im00aCF|9}AF|M)-t0048~|NIC4!~gyR003|R1ONCB|KI>0 G|M&oE9vKk; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0049.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0049.dat deleted file mode 100755 index 5d6a89dbc5bd2c7c911f6d65ff9d1bb1f99cada8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmezWf&cjbKMeN&7#QsTH`q4-$pZ`pjQxU=AM@V^`~MFZ4}!S-{}=#^ Ci5c_& diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0050.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0050.dat deleted file mode 100755 index 1dcf3abc55cc35721d11d961ac7eab050ffe2663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50 zcmV-20L}mZ`~U<0@DKO^2j7qX_y7U_{s4dg|9~Ix00A5T06+KuKmYIl{sF^)fC2yi IzyJsT|9}7)a{vGU diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0051.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0051.dat deleted file mode 100755 index f9c54997159994354805eb5ad8fce080428f456e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 51 zcmWm3u@wLi3`NnONis@CqqA0QVhak#Lv@P_X>@3ykbKLio{scnl@-5-WlYYNf(r-T B9q|AF diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0052.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0052.dat deleted file mode 100755 index 31af0d4cde291e26b1c87f94adf8fd72347ca4b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52 zcmZSh-}wIl^AA1-hW|h0|NjG04Gir6e=z=kz`*~3@gIZzhx!K$_5UBp|NjFNV+2Y5 F2LQz$8$$p9 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0053.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0053.dat deleted file mode 100755 index 79876b8d8566b1a7b54998033f0d2695f20d2573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 53 zcmWN`F%1A93`N18AfOVEQfo+K!$xty*n#lqcFD;&Qdmkb8XG)~73#=eZPP4YC!Fl3 FJU{0E9H;;Q diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0054.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0054.dat deleted file mode 100755 index 89373a1cb24321270061736038b9ed662840a4eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmWN`F%f_;5CFmZp`gP;Y|us8hk0X>f&>I)IM{Y$&_at?u%_wZ4a-_QV{y}k5xG`#v4jzySgY+}+xnErX2Gurz0Egc1lpU^v}$iDa@X)Uj!ANrv8pGwk5&IQ}om Kb*{QtG#@@m%^jlv diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0058.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0058.dat deleted file mode 100755 index 011f9fc10e3f6d3b107ab4b85933496af53be6ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 58 zcmWl{u?>JQ3;@BGC@3=mqj)nSs*J%ZjN%c}(O7xJ=?Ic$bqh{#9h1Lf5>InTT>6@3 K+_KYabHWEO;vFdf diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0059.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0059.dat deleted file mode 100755 index 372e4610303803057f838714a2f33e0a9efec2b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59 zcmWN`u?@f=3;@AL6e-y#jAllQltmc9B}K%C_HK65aZ{bNkIMxyXsZ||-5qCq74npa IlJZpj0hvV};{X5v diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0060.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0060.dat deleted file mode 100755 index 48cce5b3605ab2967ec6b100e105ad46141213cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60 zcmWm4F%f_;5CFl;q)3T`mx46n1S>c|0+En14Sx(JQ5Wql76kjsJZvtzjWYkQ6kZ6#IVxH1I($`6Nfx>!MHP~SHA@yJ>2v2hS Jl7_QZhYxkp93B7w diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0062.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0062.dat deleted file mode 100755 index 039ee6a5571b2707eb2e3a62cd105f982db03df7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 62 zcmWN`u?>JA5Qfp;T!MD80c+SX+BuqISTX{oCMTa1uX=KZRKtiu_uIO@IJ7CNCHcIa QQ`H#o@@OR%E*Z4x2d=#!82|tP diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0063.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0063.dat deleted file mode 100755 index a7f3d9c8cc6417f16cba08e9fd1f89cf69edef56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63 zcmezWf&c%11~!KO|39$*f55`P%)r3>0Vu-!|M&mHAhG|)8R{E=+#d|`5C8v2{=;B@ PU_Ow;Q2$^4{~rbbQf?x} diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0064.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0064.dat deleted file mode 100755 index 5f46b83eb162a4181978e162f03525b2ade17914..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64 zcmWN{K@os33^a)a8>V$gS Pw$P9Y-->z)TRr{*LA4yK diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0065.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0065.dat deleted file mode 100755 index 1bf5eda5faea553b2e2d2d427e15ae0840d4b785..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65 zcmZQz{KvrD{Q3X?2KN7d?En8^{@=jB#=ua)zz!1n!}tTlIKW^5r2g6e|6%|Cy!{`B Q`u_~_Ky?Pp|Nk=p00> diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0068.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0068.dat deleted file mode 100755 index 2c6732633ec6c19c70e7e33d1412e54a01ddaa79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68 zcmezWkHP+c{QnR2KNuMQ|B(OxkAdO;{~rwX{~PT8{|8b(7M`2W>0*gue{2TEEn SFxZ0>G5`7h@E=$?`+or5x*_`j diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0069.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0069.dat deleted file mode 100755 index 5609f91cc2a51be997d414f038faf7463a6f47fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69 zcmWm4u?@f=5JSJQ3j?XNO^jfu1m=(1v^MDhbNSP(}ziY UYm{gDqOgW_DQDbJ|Ep$)4o QKZwNEA=4SYxgExUAJT{-YybcN diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0073.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0073.dat deleted file mode 100755 index 2a7b1700bbfb2b9790c09875e29bc2fe769d4e12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73 zcmWlP!3lsc6vdt*zM~^_l#V7&;wp~P5emI{C_jEL34}nHM|-`y=`{*mWLOp2WNCqr SoG58%ev?ym{M$*>!8Cl8&?kcc diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0074.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0074.dat deleted file mode 100755 index 516f7e242e607ab26d3a6d596b0591a4f05ea99c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmWlQF$#b%5WoT*ZuAHG6d&cT{;A-i?CM;xWL~n!IP3N?L Vs2@l-Tk4dZRf=(F_!V*uihkP_B;x=8 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0076.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0076.dat deleted file mode 100755 index c311f8908f4a8b969def5617b3c11948ef5bc262..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76 zcmWm5u@QhE6a>+A3bnm7LMU686_jwi#Zd7<2n9di*-IUjRIN-efAo?e{JV! UW_`VUdK(K^8f$< diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0079.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0079.dat deleted file mode 100755 index bb83930f1f4724666d2feca18b66eed0c67dc5ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmWlPu@QhU48%T1;SNS%1vbcNPDckTWh9p=d?!q&lLR3dDZfFIGo7I==#0zYe9AE! VY3t9a9xAfBcOCV5#dpaX@Bv=*CkX%m diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0080.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0080.dat deleted file mode 100755 index cd8620bb1562e7e415b0106f7970710a88870913..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80 zcmWNJp%K6^48-17P?#0EiAQrb=_(y1BLo`stQZJLKupI=0$$QdX*5?UKm%hB))V|# U>Sigj^OR!A)2iEUfltJQ5Ca{hNXY_7VUw&y2csb|04rpKlwSacMPr?9*$;=7^s0q2QVy;YZX1i% b#z^!DSH%g068q26Y^H=%VaO*Nqk8oLVje3} diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0085.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0085.dat deleted file mode 100755 index e2f3c4b2ad50229c23536f2bcdf2eddf4827d720..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 85 zcmW-Xu?>JQ5X2l&Q2q#E6Gj7x#WG4pprnW}ABvN#vw>Y$bwKIiHHzMmUkY2*&h|4n TmUPtFCbi>4C1OVS;g0WFYNfZux%#?#kMb~4OZ6rm>g)}#P!Nc}Ob d+$J|AT~or}fYfSm${uOU3^z*!4p;m6_b>EPEd>Ao diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0087.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0087.dat deleted file mode 100755 index c289f0d871a1e8194230a886d4b64e0da1d094a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87 zcmWm5u?>JQ5JS-)QDg-QMAo2VB{sN>!YGMYBpoG`DI%Gpv#n=LjUZjhVH&{j((Qi1 g$}Sa1$}Solu$X#s7M~_nd2+5Zij{xgnEhe;0ATzmy8r+H diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0088.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0088.dat deleted file mode 100755 index 839cc69567d94bf0372a66019c4857b6114b6518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 88 zcmW-Y!3}^Q6vdj5$dM5kh0%00MsWm>m=Nm6+k0tCaX^*{$r;NVoJAd>iX2EdT%j diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0089.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0089.dat deleted file mode 100755 index 990cc8ea0f8265ce1b9ac39886de54eccf84455c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 89 zcmWlRu?>JQ5X6jV=rRJMWGDt8h{ZAr5(AJ93Ka7cZq6s$m`Intu-bwL-Skj_!f46A aovq0p)6(XSHA{B44|;2X9G}x@q<{~!hcGYz diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0090.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0090.dat deleted file mode 100755 index 689939ccbb6f9529e98e33070270580a20603f77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 90 zcmWlR%L#xm5JX?_kYg-BuoTe1Xi X;8ia=JQ5Cbowpk#zB!eA7U2%BY;j6fNh93ROi%a-NbDY@;2oScAGB9Mm-A5-+# a?MteVUA%#Pt;6ePPx?8az+4ZpI`jt#x-9en diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0093.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0093.dat deleted file mode 100755 index 0c4a5ebeecb292ca036b5a38931fd4606dccd7f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93 zcmW-Zu?c`c6vZM}*oZfhqj{USisB-I3s_owj9;q8%L-Q#T8~fa{5Ed bqT8C-UBi64pa#E`G^!7jHkmQKKeNFL$;2?H diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0094.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0094.dat deleted file mode 100755 index 650f3d0088d4902feb9fab56cd83eab4dd4e65aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 94 zcmWlR!3}^g3111+S|KfqWJ0BEe&R^tmS);W Z>w+Ue6o$osjY%(fpo*(;>A@&@#|QhAELQ*k diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0096.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0096.dat deleted file mode 100755 index d200428cffeba92c29a6f81cb97f6b7cabb8b7d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 96 zcmWNJy%B&Q6od25f|3zf!;aB(G&~n!1Ue`@KGP(Z-z{Aeqzpai(qUjLm@K=JP9;|2 bQ-SJQ5X26BkrE~#qc9plES6E|Xj7($Fqh_avh0VZvnIHxTEJJCFRE4;3X|I` dHRB>3@FMGDYF*Lfnc)dPn!P2LebYYMq90T{G&ukO diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0098.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0098.dat deleted file mode 100755 index 33d8657b875e4e43ca33fb5a48df9487fdc67449..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 98 zcmW-Z!3}^Q5CoTyh+S9;rHPf;3U=i49>j6sv&m*Mqr@lagjYIf1!zi)47brPZRQtr am5`|)gsP{;QoHTW>?8wao*By}R{IBF=rHpD diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0099.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0099.dat deleted file mode 100755 index 4a3331583c7eacec0dcac80ee11e7ce3081e3344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 99 zcmW-Xu?>VU0K|;Gpv(xF;X683VgU4F16Il=Kt&sgh9bhB(A>#)zM<2FpsPfK3AEH9 kGr`z+h99BOo`vR?0X~^;j+%PiYhTYRB;x6zTcv1?Klr~ctN;K2 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0100.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0100.dat deleted file mode 100755 index 12b6aa46f40d87fddf88a8c7ac067dfdd217111e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 100 zcmW;Du?>JQ3`EgGDJZ=FQbzGAjKBtj%{&StP^O6ZI5gMX`wm^wE`xgoB!{O$(;+SS gId5+5BP^{G^DDD+hGZ8}h^$&k$<*7Qr8o)c1JAZG-v9sr diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0101.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0101.dat deleted file mode 100755 index 620966b19d6b1cbd473837dab296713810322dfc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 101 zcmWlRu@S%^3s(5=nrzAXQgI(^&^7X*&|@N!oCkC86R diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0102.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0102.dat deleted file mode 100755 index 12de2a596d33417dd16105e1a9c92ea6f3f33c2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmW-Zxe>rH48y2Pk_sDROT)ZBBvw?aD!(`mDAvYX%Q08CC^wPtY=Qh e2^iA;N;=Y6^R%qmnoFeTqn_=joXMS6CFKuCE<4Wv diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0103.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0103.dat deleted file mode 100755 index f1f74fbe1b4435765327878da1374cf02dc02f54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 103 zcmW-Zu?@f=5CacU{0iwy`YED}0+TF}eT% diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0104.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0104.dat deleted file mode 100755 index 1a7557f727a714bf353d157e0f2f3111127aaf45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 104 zcmW-Zu?>JQ5Ce@;P%=VRU;}1hlK;^dg%Kzzq8xq-Tb56@Vn~fwI%hDY&N#>gxMj=! fDk#2IQ%;K9z{7u`-64xSb#)n~FB(jX7~TB`Jw!J* diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0105.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0105.dat deleted file mode 100755 index c021ab7978d175eb4cb08dec263ec660f683a584..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 105 zcmW-ZyAgmO5JaC|aG`cUDU=4KQHCKU80rkedYJ9L{iGX;<_;$5a;a}p1#cW`u2@h+H{BYV>yZG$r|Lz2kKBaauDF6Tf diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0106.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0106.dat deleted file mode 100755 index db0552b0bd206b31a80874ddfa1d6bd44bfd7073..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106 zcmW-Zu?>JQ5Cac^^d&7_7C~YaHc6;h3o!{Jq)ZWEEIP|~wxk9-AoWolR< diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0108.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0108.dat deleted file mode 100755 index cb49945753fcc5852b63010aa9ced77dc1f5dc71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 108 zcmW-Zu?@f=5Ce@Og^~p#F-lg+CSkKM3L~VXK)D!-cj5Cr6p(Z~^U$u;rBGJUP8hmO hKPkfNk*Q$<9;gwM!(voeZ;CRT2R8dum<7#Or60dpGXDSo diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0109.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0109.dat deleted file mode 100755 index 90bd802c2995bf25bab507a3cf9c69a2fa3fefaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 109 zcmXAh%L#xm5JV>^5fY#e-NvP8qoiv)Axxs$y60Jr@_wbAG(bKO&d!p9DpPk&}Gl3jOkwP gfz1oI_m#PPvH#I3r<8(cu%G^2@&Q#^ ge56d9zb1G1;W~7k$E4KQuyW8#bcP{8p97vt{0I9zJOBUy diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0114.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0114.dat deleted file mode 100755 index 14cf88e17102fae98ee82d3b74cce0c8783fe992..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 114 zcmW-Yu@!(Y5JI_^BBiaJqqv#LXz5%dBg8I6Jmf5Rz~e&>k}XvjkQ5)O=M`lDxTK7e k3)@X93yw_yyS5@okC&=(Bxj-TfDIgUYo>L=Tvq@42Wyf&BLDyZ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0115.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0115.dat deleted file mode 100755 index 939a09c0a2dcd0a48aa4b85df0e921371ebb950e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 115 zcmW-Zu@S%^3JQ3=}0bT=wY|4WL=)8 qQ}JQ5Ca`ir2LiwDWkATM#*Ry1&IZoiWDfupYG3oAIS!i4iuc6=7;ct^}-G$ pwwD8H7C5&1LtX)AOn_Y_hg~`=G8I?()=P_FsLdsP7{nwy@B`|IIqLub diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0121.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0121.dat deleted file mode 100755 index c8c5a60f2d0fede024c1d2e19ec74d9475b73228..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 121 zcmW-ZyA8k~5JQb9=#mjK3ZsS57=8^<6JZOC9kDl#Ml0B0h>+$1AaobIGb>u^} jOGMJiprbE0mSa))8@5bH*B)#+wkj`f1}6;wm`d>jaePFA diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0122.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0122.dat deleted file mode 100755 index d8cae0d0c7a1077c16da27100ae85ff5413f9062..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmWlR!3}^g3S4txJVmnB62TCVPFOzdZbfQ8Y rkR%mv%^!H;mW)Gny==1D)ofPFE;{8rTDJ_tzSxx>U2IZ2R#X=JHy|{j diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0123.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0123.dat deleted file mode 100755 index 1c41f9626f1f9e4f7087820967bd1572ae67a8ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 123 zcmXAiu?>JQ3JQ5CaVikOh!_6xO0kBo@mkj6j(p%HgE35&=@OHe m8xHAMsh}$}ub_PzeSUp0tZu-!BnwJZDQAcI@Pd0PYlI(2xIKjc diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0125.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0125.dat deleted file mode 100755 index 8a426aabb0e21f672edb21a91ee142a0e551ee5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmXAhyAgmO5JcCA&=Ry0O2bYpMM@zvHDpGH=Yq-J?HA~hs4F~DfS0V$LXj3IN>HUZ mK+YKQpw8Ov+t7Dgk&6>r{AUhNax;k~*SuW(6u0J9^8EluOGN7c diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0126.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0126.dat deleted file mode 100755 index 76ff47a4afc97a026a728f7954bb1bf9da1f25b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmW-Z!3}^g3qE9w}O~`0;G)Ae!0z7$CHBKK%Eaz3c|%tVd?C*{E{+Fc}il1VHr13Gx%_zgs3^$Tod+Dz`@B@uaK+*sJ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0129.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0129.dat deleted file mode 100755 index 4ce3fd497d3e4da89ac6e3d4175c050dbf8266d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129 zcmW-Z!3}^g3C3 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0131.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0131.dat deleted file mode 100755 index 8f74a1064cdfb6684e388ab04b2fbbb0cd1e863a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 385 zcmX|7IS#`x3}X?X+1e-QDScY}G(W{#*8p8I7*RHL!ySO@A3`T>lu$JOLlE3%^`^CG Wt5A39F3Z=>uaz`3ulcAU4txPSNyESZ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0132.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0132.dat deleted file mode 100755 index 34f485842e1b8c69979e870667642a50ba7c668a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 513 zcmXw$%MAk|5JM-5lpMDNN})99ESpYJ0>>OynLHb?v|v1*4{U@{GxKW(8EqdTju9xm zvas24hkeW;szrQtX*R57xXe!X7p$&eOgH9$^xg= zDARkp++}B~8HI$hCvIq9UGU|@RkzJYMOXRG7}Hu-NQy933UdSD&;)8Y4wiHB?4D;R z0ic3e8aFWu%|Tx5jzihNfx5>plB89Wd6xqJ$hT5>OQbc|k-tWqo_y;a%dF})%JU%p Hrz`6Zb8!a2 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0133.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0133.dat deleted file mode 100755 index a0331397d24422591ec8ff5154163a785ea0e463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmXw0IS#@=3^YO_Wj=tkJOpW<#y)K&K9Y`>G6jm6!*LONJob1NA{47rOUA68>&Ap& zw<%qP$D&k>R@fNPf8OWp%9h~G&4{OpmPZ5iCFq%lnkygxLqt=F&m>KtvCw6?son)y z8^J2y{2+EiEOp`Gb#$wcCa7{O;Vm9u`NrwB31D$H;j|-Bfp8!r&RGjzN^dEegPzmD z;Z-zuR(`vTL*~r*<$P4{JPp=EC{|`*=ZhMe>*$a~aL+OTI1%wW3;iGY@yQ}G7kV(o oX-4f&fw+U-TsBA{K)}G^zhY<7A!CpVOTs(7W^QKdSugeS4@pHVNB{r; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0134.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0134.dat deleted file mode 100755 index 66cd42d896cc90331ddd2f3d3a2eec62145c1e15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 769 zcmYjPOHRcw4D{1OD!Xpk3BxFOgo4 zdE+6o|A;^0i!q$e>heqLliuz~Yu{~EG+rc&e<&7LP%JLIZ_<2*^md@S@HxWb+#G%{Walgix1uK$_cP1#L~~98z{e zS#-2Jq-m;a-bY7Nwvs#3@iL|_;GS{IkHXBIOMrp!WfHsL3%9mUpLT7!Qu|&6a`7JK zdIi`;LHr%Mc!Pqe%WbK9bhOmyQaqd-r^9V+vB8ZAs>G6G{A>5(KQ`Rs)rI*HIk|w9`rVY GILANE6uu<@ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0136.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0136.dat deleted file mode 100755 index 6e7cddc95fb387a248c418af1c8a237261328fd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1025 zcmY*YNpiz545KH9^p+?1DSDc9>$m(A_XnBj#WVF(1;E8B53vXWBtw1#d0j;y4SRjbPbY2VWN zriu8<(QF=3!=57FdSW-!E8_TsWS=K-PrbQlogOChdxh}2mx^5in3vQPzT#Q5X;&sV bWA?QM4CMUy67i?QawyxsrAEE-b7}qn?ZgfX diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0137.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0137.dat deleted file mode 100755 index 18dffd1d938f8fd3423bf54ed57536bfcb87ccec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1153 zcmYjR%Z)=J4CEPFQza}rsKhZ*Q}M7JeD0a{9MBS`fSko8Rm1Bv?(yOc_(G1&JRrEzbIrdwn@ z$0xNRfIXP-lHT)>oQa;9I(07&5qu0`HE&5?as!7GnAN%rBv=Hd@h?HAA`3oqS{O!R zl#m0vxZb-mqx;F2A!ux_1d2=Tgki#V6}>29=yRVhzA#%p9v$LJ^i}8l$$%%!DGnB= z3-kVBJ`CbAxE$o9FdsUg-F(hpHQDdd$wnnCZ??Xxc=4-Z3UxoCdnZQQ{hDGqO+ro9 zOmcrF`52*4ukHi~Iy9(A^4)oPp@eOvN;@N2Xgp}kj{Vy L1H}IYGpzUzt1~Hu diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0138.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0138.dat deleted file mode 100755 index 40797906fe29ba8e364a2ff79d21fb52f1bd8422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1281 zcmZ8gyLH1b45Xj)UP@&Ht&vWnNu#mL8XCb}RQMS=9KJCN3OpQu13`(1oMYT%?s6@1 z!5%v>U-K3ga9wenJSq3(7CyTi*p1?F#>=C41&Yjo_ehQJbF5e3V{FaSs*QWE{h#(; z3|z0I$z~jVIDyG2wr{Stj|kf%nYsiN^Hd?1+bB58?bhC83>DV z*5?Nh&7v8qRCeC@AjQ>03P4Yb(r_+7zS`VFNQnUVn|$veA9Iv|)8!}^(kyD zl^u!m$T6S2Ck0YGCJ;I_JPLj?mu|3n2rK?^t+s>lp<+&fH{6zretie)@jF@1^zr9uHL zb%7M1ZHC~O4!f3kbAP6P~Qr6;BE4fP7mlq z&Qhlsrm(gKIo!pSG!BuIG@hJ|Szg4bpc+_vMC&zyo8+J((M1D`nF)a5C>k?cbsNdy zKd9gakg}O&C21Sqci~H&hq?K|Nf^h%(P1|gy)9fvVxDopkpH5i_)5=X#1gIFdRi(B z;OwHqw$W5lMW2$W4w*i~>8>$Q7*+w+nl{=2UjyfpwRE0ANyJHL!ETJo!&BKlay2}~ zC-_5lFUvNBOxcTq6a(Y#+$Dk z-R_Lxej9q}nNy0TssFN>S1qDt{A54f?Pe%s?PjHu0!)=!H)*xjS`94AxHE~~@mCxj zBO<|sM|24Yx=9vn`G%TI9^CkE61DL!;#$EP6lS|R6L?k1kxK@@;Ymsi0lh8ZFE@pp AqW}N^ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0140.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0140.dat deleted file mode 100755 index 07b7bf9a27d1dfe892b7512b85fd74d3f954a788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1537 zcmY*YyOqN*3{&0}DK8sn6qh%aG@3@y2q|6U*$03hDJ*1?0>O{yQtu^a*=4(#@c%3v zv^P8t_gogW-J3(_6Yie&593S@$Ioz-LM)`0(xlii1kjyDM_yd~3GxBraT|_cI43?{ zadh<@@TFuShkpl2#XeGOA_3M=y8;o623tRk>eFShr7Eu%sRQY!(Q=1!&!W+-^aqf zii?Njn)T+i`ZzZS!C~?)Uy9>faxH5i5FrLTtHYaCI?kDQ3_Fir@}sT_wwMk_kiE1{CjQw(oA7 z>O@Fvth>@ia72rE>a^qBRtX+LxBljror!%YX^S4vwura>MWPMrq%+CiVaPU9gcT%u n(5|=X9dU zkIqm@f4Q&LoFAaOG)MV&ZLgbbWcxG0c?J$zmFHEapgfvXW(-}kOE{c^&>Nj0m?bV! zXChr@!#Fe!1Pv^+Xm6WHh;`55ISqSZ&Os%HCS)Luh#?$A(NH`{NrTNWyA(VYJkS{)xN;r9!Dw5w0FX+{Nh(cIIi;HA_CmcBgF!CU2hOD( z0p}MFVYl1D8z#dSZti;6yzDpBlIDOt`GWx;<#@>JU@JaRX58tuDk{Wfdv-#U>vZg|nME4PxfH}T>wvu4=U<9-l_B^ClK(2Z diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0142.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0142.dat deleted file mode 100755 index fa95449caccef7497e72fde2a03c33b1cec47821..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1793 zcmY*Z$!S9|5S7Uxmw-!9BLS5rK^haJ5tZPhA;!vkvuXZ-rCHwW`Yxr^eW617yr}j= zlsvwS>jHQl+_?BGgUO}Xy!9F)8LJT;1(ci%$RiU=BH#=_9hX=NEQzEQ zHQcA(dNu)#ql)a&Ty^6IyUXMWP6@CwKwjZ3RVd?kuf1F(yyh+Ff-G!QG*52PEy{gI zRVP!V*gJKOd5v;yK_-km$S(9_clL_>Vv8EOLFF1y>$WcOYsTz-MB?uYhf`DJbXoUj z!MgV-0c5!3mV$$6-mO*w1n6{9MfM}DsJqU_U^PUP69SgzV7Xs74Q>~^()9r;p7!FQ zzPythYQWjzk~KmA5`v@;Hb3|#_8hf~2FGNK%Cm}!BE!5DAR>$2{w$olj3@?5dn)Pg=WMu}(|+0@ z(|^>mHAgNmh6=A_tFF{LS-?uD#d{`$d2mh20s(5K&kI%kN;ZI&W3{14(P`X{8k+;bFw?N=QQIQhdFiT=!Bg zv~|Cg?nhy;s-LkD6z2VWx&m7legx2<&WHoLX^@oxh!htwLVe(PIVX1ab9D`s(OZyL zCoRBLPdAHE#T08R`}AV!X?oRg4RzbqiukH7TbB#+0Qv2b%P@lhQ{!4-=HecD-Mt5= z#w4Y?W}^>pCy5SUYT+uqvfKh1iW#PPB((*FB+u{nlS^D z$Qlc&?nO{WM|b(81_GiZpeR{RVed|y0mjumq}wa|u;>L%n|)m`Aa#q+3Ve7LHTPDV zGmKb$qH=Hhv+vDYktIfqtzW`>j~s(snY5~XW`1NumMW~TLllzVK7A2-qWDC2xNWW9 zx~8-bCX~{s?aPsXvEum$Akj@V6b8UbEfAh*iDDI;Fl8vb#mFreki-8cIfj#cV^#)L!aZz=rl~tF pNS@^?Ow1V?nb-z-{D{<74NQ%jp9X2&Ki8o zRsmlvQm0)VoptNUZW4q=SMfldJ2SM55jY@i zt5c@9rS>zm_t=QtGJ#(W@*b;#^wA}pGE5y)vnVg$JUB(R{6=;rV`S%AzbStOBYWi! zVj1K!Qtp|I#m4P3g;yWNc1j$&*cUK6M8!!0?a%>X*7yvRa31Czlx+R@Rvt2DBG&qb zbHbmd6wk!jgW|;}jJ{iQhR%~gX2o4O7(OX-I_r^)pvf;n4zN~(g0=gFi=u+@4~%~>@$NxM$oONs&PsNaKEA}WP&uYo zFFJ2QlJtWOnTqX}X>|Gq(i@EU`mIHmwLUZeBfSmtz+5rI=9TYGvDKyGFW)gttfi!> PKad3}p4-#rL)ZEWrw-H0Z#V=tN5J=waVtlF2~$96m6aOhO1hr9ED!jXxko zHv{XN8SL{EggdvsaX*{VW$T6%{FLL$N|I3(YPQ5j_Z%Cpgtn|01^iu{I)~*xh~(`v z9lHl;&Q2y~KRGEe&(m*CJwHbghqzDa%I-?BG3Z2qi3uLdaBn0^9d%u2`XHop(Sw(z zqKikgdr6N>cBxFjU2fu7P>U*%kDq2&$gS9muRFsKFkH32V98FD>4=!ju-ui*iigxQ zopwJ#uU+~G!Gef~{nq&m?3VMs8T)7`6V2r7+!Zozlf~^&&ap-IwGSb3Tu#w}`-|`$ zx$8wm*(ESYt4Pm|m_z^IEuEU5bV_xtu*gt3nogkRG@5ZU`vuFs(o<*h;dW<Nf^075uzIkiGeYv~<#TtUm?gf(XiMARW^sXK z5dC`%OQYcXM>1UPeW}{>X#5-fDc4A>8qfIzQ=#YmGQw29fnUEVAovC)4j@4HIKvyBz&Grtg=SsJQ7$SIpPULruL$%GWRcEc)2;EdTL*DB@IDx zP@;}3$wp#DTsW9>4H`G}-@J8rxk%<3;m*Nkq&xks?!(wPUuP?sM=uB00CtwH_*>86 z&h&a5YL#U#Z+jHK3YZQ=!t>S9pi?MspLA=Qdi6jHGT&PCKgams1C^MSb=J~+Yb#7s zI^*x{29=m3KdbrKIxE~wV{UT+|FitQe6dDLddW|b6g7P%jGXrwmghm1ho-jEM1W(ue^=+*H8v6{N>nXqtKFc(ozp88=)kqlWT)+xm{>RE F`UgvJc02$8 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0147.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0147.dat deleted file mode 100755 index 3c84c27a871b87e9fc9e56d24d72e8e7cc8f7f87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2433 zcmZWp%a!CH40ONU_vW~p0TafYme6o$4uuf<*avSjl1g8OgMq5j2O)eMH2y3dlXt(? zx_C}Q=}Vx8?CwM#Z1G`EFh3JN)^fSTnw3nJCo`L?B$g!-P@~h?_Oc~WzGkeY0Bd<> zfhNiSK({h@mDZXT>1Y=(I~lzl+w*@_prpn|+i@>f z)o~+xh%0piTut+^OYKU#hKxHFi*ieI&rif=h?(!j4yTNTs6;B@5aG=w1Pb8ESBE7D z$V>5iN`4300&C;NNy(f8P^tOwkmB3%q|B<2#gDKGQix&jcJ_zDWlqyCRBzC&m5%Rppe&h>*N0 z4sy9IeK;s)@hqzJh#|e|2o5_2P zn<4x~o`ueDRHBWrVo@1AxKoH)JS&p5E;Q-^C9!bfC@MmV@E}%0WK%sf80D;@&fw6q zKWd^5Fl}A$LD|V71Kna`)*z$wv`a3gn{Q>oP`KkAj~=4C#hUXhTQoCU az=uk`JOhC5S!oZ4z^-~sAYBkf?)w{Tk05ja diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0148.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0148.dat deleted file mode 100755 index e11058cebfa45e19f8368ee2a8378a2ed872586b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2561 zcmah}%WWMo3|#vid@REk=11(8ZqDFV{K9(^#ZaQK&Af)IGS(#(*eNbb8Xvd7By z1L(R+#<1=TL|v;sI!pvQ@ridi8XB5Hb{5B1o1^J4xmU;=Rxf+Z9Z4Qf4d*m#l395yC#E_)+4$DBkvA#C$z8l7B*vi0;>C@ z$(4eKqg5lkCQrg%bLdM*bQMu}#ey$NBKbB*=OMHY2wZ1QYp%Kq;x2e*Ln#^qUEj_Q z^|TjclQ+-Z6kL_(^|fN`wF$Sm7*T4ir^O*ASzQyEm?Z`m=(4XypMQPUZ*Q3og?M;( zHIRf;kSj6uv7yOS5q*hM6{3kgqY_I z!$d}(Ca&Bpn7+9Tg@fdYV)*zE7zm^0X-q@-Xx=&JlrEHrjEg73jw16bD0#i_ahf|} H(V6@MFUBDf diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0149.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0149.dat deleted file mode 100755 index a058ae235bf451661030a91935a50b5eb88ee24d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2689 zcmZuyJC@rp43ys%+pTj0-XuI4d9&y!>e8xAk!LRc7|_dtq6RZVfQ0O|)|wwQ#hAx7 ze(^g{UN!z1%5|3r1lBs9Nz>I?$ozr~vHGo)+DRYa>sD;Ot7B^+QT8oN*|(7u-ED_WlNeB8z8ZM`D* zOXwuuhQKs=)h=+{OBI=uBG@;#ReN9yZ=KUr{ATJYgm+Y|mBy>3k@eprG}D3#fTR&J zkJ?BCc}dg-6Hb(1?+bO>DrBEiwI6OlPb?woYwU37Ec-)N$MFU7OfNwe)3^lL(r2t^ zV+>(R)98xlDMFYeR8lBkpqHfz_laW6=t;Yj1A+~B`P78-ip;3)`@^?S+O0@ZN?&`O z&2!S{-+V=LWCi|+>$Y?|i>JNN_1gy|0NkZEu#j1h3R8NKM=#9s#LVr~+QH)X7gW$PP%jJ6yktfH{0J6AYW2c-=iegF@BO2hX~k=(H#}#^(Xq0oUJ%z z05dq{HxPatqd{S9W3y;zuS{h}2)VsoZ8t%#E&Z)@^PB!LA)Alb##q7CMgYXgk>j@Z z>^^c;>u^`RCeuJaS9OpDR2#lAeo8O(no*C~LeDHRuuQiG-x#H`VbuzPSwU9}WW!Ys z8c&0K1_+C+ja67)fOh!A1!Y)bI;SQANv;O`U}-Va(E$E5|4o!!s{r`P*FTUILs|bx z(*xo-mg_l}6OkOViDbE4;+l_btpU#FMjXldmUB z_D{o@(C0X)lxj*9G*`Kwmf_5*07f!W@I?8C(BqkLz)Ekz1S1N5Eh!4S&^EPi@(um~ zv=h57$x+{v($)CCE$<2*={InTlXFPI6zH4MV)%_!=~ktY=(Aa~c8>k+X~7dC5fGV| z4rN+7nnr={&R0xY0DXuYCW!mg06&U1r$_|aJDb?`xm`VCl^PjjJ|bMK#1;aRiS!F{ ze=7M&NTGFh<0i>397{70w(OA8R1FAUdQm#7s=-*`ryV-0eQJ}8Dwh`OX-(LKvFK* zk*^yg6G$gphs>)oYa_X^6t-=|gm@~06eb+JTaTRqthAz~vnFnwQFtF>JDEk%RXJg_ nW>V!v4f++L)H5Z4FD-V-@e-Vw&{A)rzDiPt;0)}f+dB6jJ=}Pb diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0151.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0151.dat deleted file mode 100755 index 58b85ad5d08af2399b31af9cfbbcc59d99db6838..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2945 zcmZuyJF*-h44hXRZ1^tVDvmPOat1z`@lD8_zR{1 z<%*H&E=lKnN3o9j%7MpGbFAuP_v;FMeBWIR&#t08KE??R^51bht%cssTn-uxXl|w2 zGFI~a@SK%!p_XxBi6BSywBOs_n}x?jQYy%<-RO!cblplr$E5dp;26Eo>-7lQ9AL-U z%u?lKJmb*yV+Kia#i_$)0W#gLLaHbG1_CI#f%#i@nf&4ChGYZ$%1aG_tm?6b1-@yw zW%6;-y$s%|BA&}86tc?ENE^alLJjfS?ztO-e+grJDT<>88^vF0q9FGfMywfrtM`vqQ36h};&5zWSkML&CGIc{p`@!N zmXCcYmM8NLY(de<7n4$?aa%$oQAQOr#oSq*9JUP zAJ%<eMXjrkuJb<5J#g&a=e3KU`_9w70Z-oY#SZj}OJdvZX{p!?;(YMZx2JPN zqh6UgYWSviHC!S3N`4f7tM*Se0eE@s8m;$8DG)^KnF19+ge11LPJ1z^_PqYF2Lnt& zuGoT#?uaTXD`1cq2N$9gG3dB9w{}Bun+9@QHJ#I*qtFiJt!LqhBA}FrylA230L(zI53lvfsE4-jK%??4>vs z9BafDd9LeN(NcE8#XT{_`N+X+&-+5~JPdE_#)*riEXk(}|nH%ZOZp>8qg@UGa z+KKBoRr1$}h7|!^2tJQnkMCd(C%BO}c71~6!!-E!76DdI_h>fkJ~YtL>Pln`i!l*f z``i+}leea|n8Uebn9jO?*^rzyB>dbcfCQRI`M0a)7LSlUA%7^ti5?3> z1EgaBok!*>3+ZIc;Q8jSKsTz*)pGHi;SDF@WB2=U7a8PT$KiNOkhe}a#U&+sOc>Jv zb~__`NXAPkaPiv#AUk1m5bipne}KoMf|16dexLRPzWfRWo{AJ+_dugWR`FoVrjJc`?SBt>>GcVZAjgWs2n=*&WVA|D}Ccur> zCxc%w<(0~w5LMyJ7o_bL)e8aNjsO~RfP?Kh?IAvVzlX_IbDf?Lky1$CllV?Mckf^= z>6xGSNLqXolLMfrxd?f*l0ROM7!s+VVfg~mjoQDONMNH<40V^4tqQ|nnRUPa0Q-m} Aj{pDw diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0153.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0153.dat deleted file mode 100755 index bc2759316c58fa2eb31adb881a424857508c5ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3201 zcmZuz%ds3G3}ova_Ts7+0+|?R2AMb&GBH&z0pGlbEsrIkPm3{!L8x0TA(+`MMMs@x z@%+5*V>#gy!I!(;cmO_bTGMz)qllsY4~U+9FIFkwy{1xO+BLnw!zOB}z{(VqCHrqi zWhIo?b!M#*Iv`W@Bem%#P(1L(EtrzzXa-YA^&J1%&rF;~ajTS0(;g$ig=+epJ+yjc zkA+%k8SM(Yw*{Y5!(d>*T1|F?xAS@r@QRr_s9Lv1X;3v0neig@gshx|K_XY|O4|YC z#$*x~4$M%vuRK=Z+acnSv71*rP-CrisRzrk@aTr6le0Eh<`7J7S+qz-7T)x9tv1k= z{N+It-lhraY0C=$GEK!rxYso5b;Wxk9(u(7oX(Ig2H1`d30e%vNVO2_mowd1O7-dc zw)m5`ESa&r$Q}(#-^MAy$tAJN6ljK<($8&^?%4VFGxs1tEhMEZ+AGD>@cK*jL`AWU z6^AZI4!3N2%-O?;*_30mCtR9Tw9g(A=q;dJ7?BmZXZO6X~q z<9@l<$^As_{3X^N%!&*4^mowkmQa-! z5IX49y{C-&N8sqxP)(m8=GMWApSJSNW5TFV1$+iKfl?2n-n2VJsyU6!v(`P#@W#i6 zkS_KQezqh$*p=jLg?a+N;lNenpOKlr#iz^@wn~Wt*RF9jt`UPFfCd@|$vKYW7_V5Q z#`*}mNIM{w=0y(GbR2Kw`4@4|j=nRps&&HK_Fdo+D6x_9E%0ZUAIBMrORKQ3BDob; z4i5Y0Zc`!VA13-nwyDa){7rR_TUYG&y3AX)cf=-ROgIV=SctFiOo$ zLQ?M%min2_MM5fwyc7ZtH-gX)YkQEbt#D~To>U&nLWJy?>+|?y_P8W6kiz;rjHwhp zijN^3mvHl|M~mRk4Jqwh#P>-b%qlRp;wprdq!>X<&H=o#`4mh3TuK%!4&p9H zHitym4ouc%s3O_hn3VZbWj614JEZC2()ge(Rh$qU9>;IbLc)OE_f;~@ zL=f!OU)js#`_q!M!i0YqVQ1lTyhc{~j0ehyeM$C0ZuQs}t}0d3|JP4`hMqj%n`HFZ zl8<<)&{OHh}{}?CqD%X!GD5t zEwc?)Y{hV)x)h<7SNwWVHv}l>7hpK>b+1-!3 z941w98&9sAN9RM)dh#o36(Vx?-fpe6)06t_^FRWsKHI$kkhi+je0pw&6Ul{G+RGd& zc?$jFXyKfRr$e0Fu1I{*D}y`CkfcT^r!e4i8~p^5_Jvs66XfDv!sWh$bvXN7-+~Lqcv?$-htXKNZ}9r=_mhC-2}wW$2;d!zT0*;yI1L0` XL~=r*ohOjgmd?9k7xGN21c~w=1|3FC diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0155.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0155.dat deleted file mode 100755 index eaf5f9685c3627d4793f129872f45256af89f95e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3457 zcmZ`*%aI%*4DBf&=HjXiffSqpY57KHW~!VB8SEVQ(6wzn{g7bH0fh9PzRm33_kH(c zUxoC(uK(GG8h$v`gv5B7Hk@ZfG%{>KilDz8_z(s5;mVJxbm{fHzZ`HJ@50}I9DUzs z03XNic`E^A;*w`IJ)N(~JdPrUPP%rAp^=K|RcyY)-nxLW7q^fAeG7_M8o*d#0D~2} zEv1J97YqDLr)vmxr#_nFFbBn&h0k>&9F)C=@Wx2KF1uNYp{%95DA|1YnNyeCx?5S0 z2+IuF!fDTs?KsR^)B$OF@vjqYc9ZjOx`w*fw!3qLKRJ=Gc`L=@?U)Wx&%8~lby6O8 z$q*#hfpye9aFzAT1V23u5N)}Ygi6X06)G14OE}hwDu7$Z#gQt+5tY>#K1p{o=No~)3IZWASG`%C(?C|XYVy-2M)np2FijO@WRhbiwK zCv*SM2pv8PAlICKio?)JQ3S6LtxuKp*HQSy#(kmF5JImoVQr4rS3a1~7_8f>k~`yQ z^D%YP_*tVDmerJ+@Cw=6H{&jRz)T-gAATn_3Xk%!bu|Cw=Csq2CiK^k>3`m)?^hwRXVd3Bn5& zrzB$feK3`r*(+`(18@u9iQzZY_Xi^G+&6FecuKoAAH?n!z)yXKUo`F9X1de58Xvly zLbGP*)r%U!i42lEks9le*J6BIy)=oySaoA8i4rCZ($Oc#SmNMKqncxL<;?mAwN$7< diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0156.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0156.dat deleted file mode 100755 index 8ac675fc127d870d52263ce9e2633e5a665d02ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3585 zcmZuyOL83{3>=piS!SCZxd}JRaFbkRZW4}=UA%BTqF;*!Ou3$f)GY}i#$(v}xNP}m zjON??{Wiwm+>j!6UX5I$mW)##@_c8C=r8!*;Mj8&I69yt-{A}i%ofeJpG1VJhuAZk z4}r5lXZWGXSOGNI5%<~;Iz1bt7Y^LtrpSPL8>XJw|v!c^C2HN&ygd>0$mYTR&2XkkNn`XQSj0w?l0%J%T27xSz zuB&>m^*1ZMVCVeiz2Oo0k91K5i!;j(*~!#reARA2%@&3ahY=qZSB?&~fG^?(!>kdh zACM!bAd>1K0I_tQznbUsx{sFlvAgFx)3v35Jry$Xg$Tpy*@(8C?L56k8l$tvs`ekY zpKWGu1gJ!IwS@v{L%U;dUgEyv|%UNh&!Kq0x(EG=~G=P?!jmzQI!WQlS2K# zRnt_}9d})4e>_srpt`=8g2|!SnSYiC>a<9_oC6{JN)i->Lchv(#o`bXt*+2HD7u~A zy`9l<6s1&MOL1x_t zV{hz|PE-D1G%a7gAb|FA)-Pg@A|VdCe3fD$V8{-8N}kR%sFm3(+@8pPj!- p3*ZkBw%*MVT^;;ta!T@y5iB#30wRZ_f=(s~C{Sdfc>D7N>_0IQqDBA! diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0157.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0157.dat deleted file mode 100755 index c742c47ca1b96b228b09cba00ba3f5a4888d63d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3713 zcmZuyyK(F=43x)#Lw8`h6P8BKxG{C$7F2>?cEQc*;g1C+1|o=EEI>fI+qSYk&L^DP z>FW{R4|mCagg=b8LXg8AU>NVnn&A%Pi>%M&U{%2xiL*5Ws5M&b`<+IkI18&mEJ*7b z)5PzOzsT9ewafVvYB54HB@4`c67FKM|KjPj6s7Vk*^qX!ob{c-T*}HS6@lglb)X>W zjq?>48(ztTsc?JzxGP(aYr<`Vl%D9=w(jrGcmI$0GDSb^yRm&F~51dRzy;l zSGBM#*akQF_@cI4XX`px9NUdUIH;^4&UozzD;H7jr7{jG)iF<+s`YhKEt{3Dk}<)g z?21JG%ICYrnkM2~55$ebA=vM(0dShD93ie-_F0OumiVjb%w2T-lmm!+5|pXk8XVvU z*c8JK};UQv^Shu*o+O^4tj15#^+Xk2^bSUW4I3fR?7VETATHG5+C{{OV9VX zVWPDI1)L#!^X-TV)p=c`B;dndNH@O?@`F}La=2Xj$JKDQ^|EjHBfeHrQ&hBcv*&A+ zF{1{^NxvaB%eXA42}d8h4@a4R%uIpbxO%^7!`n`E>vMq0+U9NBk;--lx`K5U>SLy- zgx)gsfePn&5OJ_3N5nTm=ZAP1iM6(;1ww{^muWMDkp%X;?}d}c8uFrd%+{CRIpLOz zBfD|dbwwL!5}v9k@JojcKt&Dk8BUMyYm!5eZzuQ+gh!z3-(AOMORQyOm2n4Vcs17g zJW4X54iE6W43&>0Qb~|LJV>#stHC)Jv1TzPm+?(VK}Dy&1|whpdKm(o-hsa zT-Y%7HN%IM6LD_*bEE7cxAub=rY5jG8U!YMy#`_2uB1pjbnv->)B~nW-GkL7Uvy57 z;)@5rnX4Z}K-xnNPGI+~Z!RiLX2FUEQ8jBmE->)vLBkWSNr-UH=IG)4+yiqCbh2J3 RW5OC9bc8F75}od_{sUI=b6NlZ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0158.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0158.dat deleted file mode 100755 index 2998df4782a5d8ff3665c8137f6233822ccd7184..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3841 zcmZu!Ig%7H5bO;iSabM+zQ7OkEj-D?>$?;sOUxFN2#>r}q zR-tFW`{tY)ECX217-^ug#ZZl98&`!SYd1(*vVYuaXYaE(hP#td-L%#)n=Z78+fMEM zfR-tS*uz|9t=~ZFYGE5`eiN#?Xy(#Fb2E@HE)Nlk;RaK!Ih@{>J=e=J;>+ek$twtU ze}0G$##ldx=rL1!>}^bari;kB-&%=}CK+DYZO;L%;B~yKFU`!rkWig9eF$-k@d%W< z>4OOE3Vcf82B{aQlKsv>BR6)^|6vZ-bJXBsivDhpy_> z2w(2IXP(&N%%|d`843{!p}NM5xn!!#2dudx9(9Cxm(BJ*XLwvn0T60CO50xXVe_5* z=q{Ro7`%qBs#&VB7pWGTISk!ZUQjG!jb@-h79U#HaGiulylTH+a%~aPQ{FCfVV6}W zAs=hX>J$iK)rks@(UYTuIZ4}LvwbM#TO%24w&!6OxMj^J0xST~(@JfLmYdGCY$;kI zin!ec&hizhXs!9qRmLZ0V?DmKQT0q9i2HBe{xG(K0ijXoo(?wZtn5)3=v;&4JrJOGWATii%=b}!uAAy z9!^m+f9sOHnXbTU?9*{Wwm8t;aVtzs!Zrs|=hT+XPQB^p}{n(M;!tzCMLL6+TDE@@hvA zH`iRaHXlG}?1^Bq8VHc&E6!KJToOc1@UiqD6Ni62=cbEdp_0SeR7-k2b_;wLt%etu zLm@}qmPlDMIo?|1R$=tl-o io6x7oH%9s=#_JS3O+zR=Nt4}G6{_J*yLu5Mum1tVjEr0W diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0159.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0159.dat deleted file mode 100755 index 87d68a41c738ac1b72831042e739d5c47a51e344..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3969 zcmZuzORgg!3}lp%vdj^B4l)u)gQN8c<_sJm%eQ!X4CTKeEWp@RWn<_lbIRyNt@%^- zQ8m^n^3tuYj&JJH)kDkrrQW!H38XHkroJLz&b}az;JSrkONf1ovj(4-9C_02T?!it z8z}>MwHoHtIki;FO9tx{Z=gz2-5GmXOpTraw0q3E1Z1v5@O$-1hQzzL9`6sO&AB=t zLrbBR&X~k+#TCDJ?Xrbh67ic9K;6Q8r^YUzci)1l zIAUD_YdPPo$IME_?3sZ|0IQ_4fTiH=J{z13zdHb5if$W>{Cip{?PVVuvjcUgp06P~ z*W=UY>R$ck^pPqIRRIe>iPw>Nc13ZY{J^o(x{Od1E1YgZm&TK;** z!#IBLK^QEFxyBZ({Ut@&a)-n>7&0U=cRDuVQ}36m7E(=FjIN5dI>KCJb`>2)`ET{*_)RAQee&Smi;pOuyqs?F(QT>f^PkTh`&>5J^u%C;=G@220K@KWA<-fj-0^d!NZ}`!vysy zzmQFo(_d1=^X@0~#Vrpd6rtM9_yxf9mXS)w7_ z;s&B}JcmR9%DPWm*A*XNbgpt~WUc2n12_QaX@#-(J^v~JF~B)SxSu0Sh(TbDNVkLB zdJ&AFc|;`JRl{e9{=92Ap9QR&7^uekoJ5=&tm8P1f-Giqc1B%3m-n+0ZB0W+mpa0_ csaCY=LtE?oalOFocF;vkv@zOdFJ96fd1!9E!4>xrlXUGiWiH>MYtthiMr5~ zz@+Z5sIgP4c#nr*u>%$y+Xh_?3IdOGgg{*v`WGIuz=-}JOqu6_kj^MFqdFj(tl9Di z%r36e9lACgrU(PqE%e^Rg1gM#pOsFy-4tS)Hh>QS19)eF2UV*1{rhW)j^Y+ROR`m;h@@g8= z9)`AA^6+orw!fKZ0|b>^ql8IDQ?b?QMvD^Uba2%4%_S=uE)zIh|9ajz+;3Ri1G1+{?%;BnS1c=`tLzMH_a%eW!7Cz8a)baq~+LpG*oC2 z*_!&^vfxnZT67rIUMAa;|xlXXRCtZWYDz9~?*a3;+NC diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0161.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0161.dat deleted file mode 100755 index 22968e033d80c4234dde5a2571f7f55bcf796fa7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4225 zcmZu!OK#mT40Mr2mbpLy-=sR44fJB#^%^dEfw#;eh|52Rl(mpVa%M>V{E}^}?Z<8H zwSD*$$1C6i-7-Hp76LU)v7a2K=7^K#?-h05FGg6Cpc`d0iCLUt3>Cb3c+g4_A$~&l zJ)81gNorjLk{vi3n#`06=1kOZXIWo(JzDF3GqJBhn~}5@Tu(RA8KY8o?Y3_ zE0{iMi(odjZ~aV6L#ea(cCw@U#f}wtqQ?i8L7yE(ja2q@_=PnrL!r7ubldt9^ zvucVJ@0QWEE<^uu*0pWV7m>Est{>h=797rnv1DWrH~j?aJbSDsy)nbEB!DvxP%oik z;@O-`U=f+HVNH{i3o5y^n+_|Za9U^)CPrjev7)hVo(jIf0*Ux_4DkviNq8#LG}>#a&Cj&h$G6*K5UOy zaT}M*4+Q(%gIvGQd3>8<;k#stdL=~N!LHKiI1g|xj?)2#aA6J>zmY`10MrWI7}pmzP$ih^;F=L(o1UAGq(o0_w4D>Sw7>lhu9uj z9M9@{g|H*y6c=;@qduPoPr+m|B7( pV`T4QO{HZYd4mqL6u^VR|Fu*#aH$)!E;lt|L^kqdL#KSm{{x+8WYPct diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0162.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0162.dat deleted file mode 100755 index cca9a81861ed138b96def4876c41360905609056..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4353 zcmZ`+Npd713@nEazD$IlfPccz27Wg66rSK?9~|z{f>KLWbD)HjnMeZK;pY?M``F_X zE*OhKH*St|sE#)w&g35Cn=QCL1fM$ROY@6O`+wA1KDeH?FF`$Aa9K?$5$_ISCe zDbm;O15p)j-RN8IT~&7vR@#Ek1|Fr8$A&2h#hl@51wwL2@b}OohubnUDs~JAd9B)= zcd2Q&NL@{-DIq5hoT(r5DPiVK2S#g4s_>$SI4&hoz(t?`6dvY42)J@3{kZLJ$!2zQ zJ?y_y+z%;tU^7&2S9MZyWf1ywmvc$v5ere#eRpEw;XXA5$xM06a_5j33Y)%du`8@u6-A{?*CeZ}b8TnSrOgRSi#CsVrwqp5dBMi0+lz3f!7UpUN?AiEHTc&$dLrIj zR5eC&*h0i@M|0{IQe^Ojz8uO*)2fe=&NpP&LN&H4Sfy*pRO>p&o?J< zRS}S9MZksPE@ zf_Xr70M-(&L4;k-bSgn?1Bq9+)1!bP%0v~)YTDnaJtNQio+kNS4rnZW3IKKS$DvNe z^5#wyzM)bY=dsd3EKfWmhm!Wlrp~bYSOWQm(mENKETq&6=?p3>$7~z5jO1~g$RgT6 zq7BV%geXL&8^{W^c|3aU1VJvzou|Yjpsr?gxNjbqK7$1g;VM!I6mtg0GW8Q^^?czL z_8<|dCRPb~>Zp?a3N$-e#;mO3jJR(Q)Iv4OH^4{5F0J%JNL{gTTys*L69a%l$ASs469XK$b z_+GYxB#)OF;6w<;q~S$)BJ=<)<@RB`+@-=fNq!<1%XbC(H_Q*(B?emmj91(CNC5q! zM?t{pR}#-1)itTYO8M|UoNnit3r)>lOLLqG&Ja1isCI*-nB9yqHP_zWzeu```6Pwq zPJ3Nrg8DUg`}Lbd{4g)?OV?oVxZ=exOq;W$RGOg^*jvX6Eq3WHy8PTTfSU1}^&x67 zZqgmcbThOIhy84Bo$2Txg(mndRQ8L}b?xqSRM6B3Ixi0%@`SW9X8z4PPSD@$Y$$L) zFy3X%h`ryj8q1HU9ilF5fr$>`#Te1|;116FkqnK?XQq3@#CAq?c zMAC?1;bcR&HE3Jwj$hL69CB}V$I2RiLoW##(U#f*W>7y{kRsfUfIJ3t~CaJ~#4Z}n@y73k(j7pTQ#1x%pvKPAI!EjFHP9vqSH zRZMKgr4%>XK(-9J4{(tP55NOt0G)-vx9RMzGfaU3doi)fB|hzS^14Vn^91k9 zvIxclYYru6x-tb`TFA}*x&*WImQgsWf?ASwO<)^vKm8+vodbr4esCd1PR@|ZEBp}4 VF-?=^H=S7xeA;IotI$Z<{sTv@dUyZ; diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0164.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0164.dat deleted file mode 100755 index a7f5981c5ee6419c6b562dbb7663205992c28499..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4609 zcmaJ@%aI)+44f?=);EVhD3g*iU_ztHi4em2wpHHpSbw!(o;iS!S}h^Oym#L@u68_( zw5#-Sd`s2k4rl5@3ZsL}@zeLZzLUd8RUL0Z;zB{3uJ!e|3iF36a$T5x%TZ~RTvS!( z0ubl7%Q<{Cu1aRc6X?F&LD%JwXrxLJxZU?e?LnpgI)G5c1;ZYV-C+>ZGM01oYM$w< zS&jhsMV#URz;v;C{3T7e3A!dF2PAzuy0kW;7g$JmTCx|vFpBU+^AP<*Pq6=4@xJpE zY+de1P-2Rdu44&6+|Ai&y^yhkLB(P=s01D8=kk4XQTLH)j@`%_dwR22;|!F_C>Gwp zGl#4reg~zA$KIRU)5e&4Zp8oCkKG7lpn;bF9bz8(;y>Ill?JYK>=A+G+|fgOC4aKCx* zIF9%F3f$(|mB>)&qJLR$$pXCK$ipMS3i&58BAIoR-k9cYLCQtqhs0nlc}*H-(VoMy zv7x{n*^8Dp9M(F^LAJI9OUUh%a+Bu*r0oS@VFI?dhffzE%L&WFv@Zn(;Bd6W5KH4N#PM_D*L{Rb`3K{rFzeDUayOH%C>c#6 zKi7GtdjdUUqV#bz+`8<1uu^LSEA0jtQ`|a8C}#jX!~34K+qACvfWjk$v=Jxd5&#mq zp8(dWfa1>POZ7|H4Xrkxd(b_a@p1#nf;EfM6bo-e-BcqYrHDe$peof(y+6=-a(h|og^ z!hfv)%lxqlC-Y8ad~t#+;(^e&?k1iA01!_y!I)rzABfO;8vJds;*lf-%kjdcvGpoV z@_DlEshd=<^9+g*JiNoyusuvQYfT**l~kXnoB#E)O2<#~>O>`nT(htcLKzR1(Dm2c zP_zt9foI>P(WL2^?=JY7r-cvvi3E<6gt!V~%@%74o{n4A?z~YWK9s*d2=obsNV4z( zB#X}K(VE!PFB*#U&`YoAF5=;w0BX!iEbKAa;bSi^WTmEm>^O{0myQ;fCqTA0XSU|x ztpYtQz(Xw&wC@)hUj9goKrNTFmRxb!K%77{Y>=>!siBm7C#qBKDVmgBSNM;AJn1og diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0165.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0165.dat deleted file mode 100755 index eb72edb766cc37486850fef18c8f0964d8e995f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4737 zcmZ`+xse<(44f?)XI=uTVj8l<%tVGZnP@W5sbpx4s~zDXzy?Us7~*L(K=9eS`@Z`j zqun+>)iA!(ZhoFmR6ssMEGh5c1o4AhLw)8D)!zV(B1f*HAmo#ib_Z4T-5-`0t$$Eq z`Q_2a{|Y$`QbzD)hB4P+w@LgD({TPg8mNKi3piYa>P9Yx4H2fQ5evMjoxdI6B!WjV zqupO4%(bE@`=0I~rkK_smqVJFeAZ--?vN=|2ay2GMeJ}W#GnjKeCucM^Hx}b1>`BV z8|HBqe;g4vQVh4UkAwbjYVy8AV&B!;yBkxe|bDm1%OJZxqq54=Hn>A z64SQeBPBkkRJN=&9G9{B?Oi8^zN}$Jhu5=8?$FDL6rX=4Rwp6h z6mUaRZW3N@LBmG_Ib(?wu0f&Ffj***^H*njfYLk7WWlcltI3yxhoh!yv$E?BRlSFUgK$42FCGOhaPXc1S};h)Y*&` zUNR&9C?fF&)5XdIYjqM5+UC*8v7*N9WeF2 zKtnNA77CL0JT9n&mtoVY0AIIs*GDMf#L`@T#HcpcsFDMNP$Dc8hQJnaqWLA-IXg!~ z(G(#jHrpsd6F!&ueEuOctDUaO2b`r%=C~;4TqXi7Pc`?czcJ#T~KMwWo z%z9YLtZb7uT`b9fRq^GFP1JbaCx^{UfqW?Qek;3v=SyJLvUET^1vpnK>%=T!{m~r+ zmPh9bv>^6~Lb5BlShd!e5133m8Rw&=br*xh!x^{qwD9U^6s~zx49K%@4`MejDPwIN z0lNJ^rxD~e5-yjuaQuE7v6GClqs-Z5*phuGD}(y*9&bi#JI>xY40de(E+JGnIC-%% Kc1RPDR`?Iv{3$R1 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0166.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0166.dat deleted file mode 100755 index c6baf33a18e2c1988a1d6e27e0f85c947eaadd0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4865 zcma)9J96AG4Bd?jr*oT*S4f#oM-z{x8{`U_$puon@T`Il0X`7WOjt-H@bK^z*S@ZD zeLlu&uKps)JgN9)u+3q-acfgQ-hy5Z8ARx3#m(Qa3RBM9lx0ul6PkxMnDUZO}m zkEv73zIvi_;?z;dVwUuLR~Y5$O9C5^ z)?MB3BrCo_5TbiR^A#-5U2!AhVFY^KlDFG}PiVtA(cy-C%jD8z263?3BS1T)uT&c7qI}(_PwTn=WXF;}sP1(Al!_*+Wt;k+FO(imA<$ z?hZxA=W^o+@&rg?5rm}d^;p6wTwm9J6)Aa#K=S7*Xk+$ZhE!jEF$F31yhV+ktN>UX z42Ad0C0u=x46Ebnq{*HcpT=+P_Cm-^zD6#ejIn?Wf75_9k3m5LX@(>@t502#q>2mb zqBA`i2XG+L)To+j&Y?pc@Y4Wa4feKe?o2i}E@o5I4t$yYVT|_PNVCw9WPvpj;j$hG z3DlD@uZ^EKx#hVHR2G!Ox=V^&QkeI@^iDH25+k=iEe>86s)BdSEhx;A-v?=s;qmyk z6zYs>`lLc1?wE7I8v0Ea(r(&L{+@2F!AJ~v8yNT?FwJU+X#G1xlxvt+9OkeUa2|ze zJxKE(ClJ0p2hirFr1=K;ZoK$j%3pO~AziF)eER(}sGq>Id2nljMTx)gDsV$!!`REe zC=6SW3*V^>lbd#*lQqcYQ1wpBkTq{f6ze;jPj|Fy)1|2Qd7it&O)M`cCQgxvO9~?U zGYOUN!~ab%e&rgcHt}(sJ`5h;zv5BMqiCLh+gc{dU424JNc=voPBc;+J^LiBCxS2s zV7y!?RJ|2fxKEblfmbB_W(m%u!QzF@UE)Po-K=*9@djFK0DkjGohY#V&PH(^ri1rP ziM2mK R*>0vm>NbV8i{m$0{s9+nq&5Hm diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0167.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0167.dat deleted file mode 100755 index b10d7461b9a673299af7d55b01c1b61e59448b57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4993 zcmZ`+y_sAg41DJc99{{O^4f9+uFP~|N?2zO{Oub3kANk32x&A3NpO4D_3>K9-wVbU z8>&PUSkP*kb{69d~+wQ)T#gxiv3zU%&o*S z2S(;LO|x}Q=*36ACDbY{r@uvwJ|-731-#Ny$5!_}3PMI&jFac(2E5}W>^G__wmJ|M zbzG;1w)LCc4;`Tlz#XCmJC9r^E(|1DkNi>wojhsgjG3@hJ>FDR_ApO6L?+i&qy6_$ z$?WB^_|zw+_Qo?1CXGPeqU)gnNsa2pn4$}s9BBuey5>q3C?|gik7KVtlZ5*Z_h-Q} zj2!qo0QEh)@(MzH{YEg$(N?K|R`XDvsENN4&9l%~MSBD~Yy66`UPZ($aRD1Fafcf#1B zF`<6GdNDm-k4 z@g)x^O3M25-yIFDBp0UHf(4TR=sQR&BZo_EXBtDSa}A!h+GHKM%ywfIg0*Ar;0@{F z;e<}5k;!G18%B^^DHhxQljw0z3x*;-_-&_+j=!$WQ!3yA&1~HAxL09%)VM?18DY_G@?r@GBT|IU z6#43)Q?ZJpe@BLJ4cw@2Qhogd72o&S>pgkiftW>&1xqdc@fzruE={s13W$+)766wj zp9m&TJwW4+-jRtsI;MWEvFK}}YzK{6CQ>FvJU?WLdzrGJ8_^Dnvn(Mhx-GUG04_vN zqk%HS!nXA@2ymnJ^gk3PK^f5{&U9OclxdHPUJ-3_pGHYqm7Fs%sB$A?G}W)WM(<6W1b1PI+|>xUC7*iWro_vlQhYZ}bDm_X)BkeL9w z(SYQzR2$cOvxMtwN3ha0$~H1k)wUKpp}k46v+k}H33ZEI2R;_-({ns}E5PdEJso4x zVB0h%Xp(hZhEQilTn|%I*ybFB%)@Mx?H3akCFK;WRA0a2$QME;^OAz$wqrv7V>oCOEC$~g6)Auj=rW#3-#zR3q!xOFP{yac?jHjB7^nkps z)$|6Y4E~io($bu(a^Nv7QZ$x7CPq4ww*!^(pR=!g`~_MeMU`V%)Q z1MN_`tP7&FqQmXR==DMwMxtyYJ zNMIaXs90br*?oU*Il;ehWqhLITB@zf@Y;!F77EiE$<_*bGwVLLI#) z7)wN*RL`py9)o0Cx(F-Hy;10Q1;}!bPbAIbBS!?|HL;n!@=J6}0rHct!!p&=)UO7p zo7%#9esv>QUA#rdY!Q74^%(UiA^cGc#CDDqxLD!y43xRzj@bbtBD7&3C1nSPbs(Lk zG;(vxMz4SP$3jZd-5RADlfu1ET5xK=RJ72kLj!K{)hLVh=_^yyv-`bvRfhHZq7?QL HM4kQzTo$ey diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0169.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0169.dat deleted file mode 100755 index caf4906ff11febc8da34082f2d31e22dc0ef2f30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5249 zcmZ`+$#ESa5FM2cIw}NGa0Vz8XEKB~H>W`e|EPmXUyC1)+M0-cp1pij}qRFtvsc0F4p|>O03? z>S@lUB{<4`DCKS`0j}qF)Q;30=g6QK;h1|y`;q$>V5yd1PvS^iM`g>Y4r~~=Ov$lV zNWmU*^8}H9(IF#vP{e&oo7poInAgT$n6rK9pVou0r4}M71foj!M)G#c8ijE7f=)XC z=;rhoG9jQvE|Fu^$hm>A2?=1x&T^i!L`{OOQ!6-9$BKiyT95=PHdUo7F~oMYx#UZ_ zkIkFuN?ukYCYBbw%h{OkI*x9N3D!X^adKhtL?N4cElz~|5#&&qJG;5er`Y8xQ>TwA3|#M< zzfnSk6ycs-pyHst<;Mb6Y+CAskQDldzbC0$Owu&GthF0@E*KL>x46k>(@hY^aaK-` zz3GVjFzMxROTr_PyaH2NvC0znokE>F{93r+!ofcrR&EhS(c|BTaA+Adi4rHT=TcjS z)_1L_7+NBX$+6+l6L^3@+MSDB?vrrzl0(#*sx7e8w? z40%h+fGfJ=NsEc19*%gjQ)a&B<(V|34!;ZZF_8JbouN2Nm?dIZ-f^i~s9_1UZ1$bb zGj=tzQ))^(tcoIdMwhOD!2$>AjR3*t0a=;{L$g)BUqlrvjwsw#H$%Q-W;S8j>!wiz zUVz8(MRnu}vDxAu%49F)2l|uph3UJmKaonA;iN;BZX{rIMXXmq`p3qN1Os(SgNwp}Lr@%m%=7D$8G z@}6quQlTWXMfYs=vCyBkc3NZ*e0M^lm;UiQxy76ua`7mo5|=Y6iq|D2XI}2fjuW7e ke{e+Y*V0ggEwofbI*zx8PTG5i5YDLc9~ETnyfc~q11!8X7ytkO diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0170.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0170.dat deleted file mode 100755 index 40beda0c5cebdb07171e9342a833a1f7e4feff22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5377 zcma)AOK#jS40Rfyv&^(mVVji4dSM-i&C5u z2r})z26}Hf2i?@*qB(Ipe0hr-TQYm6S zb~^GTBwczl$c8taITFVr5JdDuDQeMrmUa6##=?Q)3lvSDSb_Q1LJ54De+V`nrg`Vq z_3*(SdkAv|ig1*cI;1>#7pDnQ9=Luh{frLUj!ef&b*cXh+`E$wKje{BD3%@uq0edE zi8lFmH3?=80P;GwO5Hkl<(*aQtr@`agK!ZHAJ6{+7$hzy(yzX#I0TdG&-KFCK0!mp< zt1Y=dtc?M6l)~*ptOcvXewZ}_04#`oL@IMwyVUOo0lzDgtd%ldU^~g6kDRokDy&bE zAQ(y*}VUGqO3_(!S*ko_|Srfz|nzlV^jW>^!c;QdMhl0?V_%s)V$ zVv3t8hwoezwH?yMeApKo;75BcNfK;!`i!X&;mMhgRq|H}xzaH+BB@Vm!uR8T-?%=; zr6p=aitPD~nuN9@ttJNc1wfU$5hq6h3%-!mpXQ+={T@qkze)3C1N`NoVGK36#tc`Q LEPd6gWr@N+8lcsV diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0171.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0171.dat deleted file mode 100755 index a3b06865031189858da367dbe39ca324768db66a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5505 zcmaJ@!I9lC2=$*mK;d;~sXtBS63d+0ns5@OU7EWnWi2eAMe^ zOmlJdx1&}1aO-t-)zbVEEf(nvT3LJ_OWD-_26VmExaRW?#JZu#9|GCZet|0)A=Pg) zMK6F{wi%5R7%XORG1{+CQC5E{kAYBFM$frr&53Z6k7Mcun=;XI8}y2M75?Nj^FEI1 zE=dxfo2TS$Tig)qj3Qk=>lJsgTt+f;3~Bad@nS{Zrk+d~qpTR_K+wp;B~S*LPlI2v zLD2x1E^aTZcmX?$LqN~3me`Mj5euz4ohz^+-tOaW~O0msKCL{+;Jli$fC$z(sMSYT5kK7QIV>p#^3^9@HQP~$lcjI)zVWKUAVW3VOo8%fj^b$j zy!`!Q@Nk4mHM7XNt3AzS!8iNw1jLg}cLF1+=HJS;Nc}<+vb|;t*f5yyacX0?^?=hT z*ZaI4n#j8kN(UrWI2xF;&IwP8_esuZc@-f_ zeX_I~1gxsUxmgAvR7MQYpo_|ACurWnEK42&8T-|&oum#=XCu{Tnyy%^6z2vO#~elT z#<>AN#29(nE8<;VyE|PYx$SkBh@QfLQxX$!E2_ewC7|xH)3(8!rU4Kesoy%$ukht}Q11KAF}8%~w%#hJ71syT-W&9lS);($KqWqX-Qo z8Y%)oW_f7rW~AG{=FHI9bv`5qTe4bGkPJ=?$ne1!eXxCOIZz5rBe~d4g{`YM%&=k8 zR)O2|&d(3v&Pr4%xUn@duCZ8J1h-<~BEVd6VimWP9lv?xV zd7g`&*K>Zxik@B{iEx$O^?CiayB<_b8W>c$J7)hzia*2$0&jpV3}(jQ!WE3N-9g~G zK-r-I5hjj_)*VnfN%b-52&O`m2jj860RT12^L&=)Q>SaE|C^fnXe%o@bRq>B35|SI z?(1rkoSH1GGGq97Eh_u*k6KxLXvoKcYGMQIPe-Z+vK{x<~oIg_)dRMYS+21`MS-6T#T1D2F zw|(i<0K!Q~DmgKkVkKllj z2{lqpO7+vx)wT82-D3TbJbOPh>ut!_Gt3SKLx;A->Xe=60jv}Js##$1ntiCM`iuK1 zx|L{p@HCf<+NV8?e>I8pS1~B5hsRUR;;J*I74Ox_`dgU+ z7AE)4AU{r*d7OcVVlWquXx5u?Q_DI7qEcRh5 z%6@9N4_q0#jp^|KTnmz-GQ*c8ru!{T!+&jq`IFYhL;q_|;M#c6`-L-)CR+Qu43W6%AsY z^w_ip)PZJ+Hxq@jz>SPOy!IFYateF!&B;#GKk$tUee=H*!rHf8c2D<`D2KLDIM!1M znI1_3ecX$sd5gR#d;m=NAa}k7o>5WDDsSe!7tvn0PQ#FqPiAiGBG`E_&Fe2W(c&)P z>e^CBukNgfxIM5eE@}4~s3v7`tiEXU4ZDMcy#qyq!xC(U2B@h!+o8vndpKB9nh5V_ d^^oHOd{(d)uA?0b$mQC&LC0UbEE8d_^gnAWldk{( diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0173.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0173.dat deleted file mode 100755 index b9d784e47e96159f5ded4642317657229264809f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5761 zcmZ`+yOrE94BUGcYU; zd_Cm(NZ|dgsI}qzH0beu-!ha=lF~GF800$ zQrHgRX*uD!xD@zWW1M+!&QP;-=_ltenNCVw9Z0&ZzAT1N=;;bg{N(Fe^wJ<1w-8Fdz1LCQ+8ABMI%G z6bnh&9)(HC|G5_I$U!n%NVXXEE~z)Iz65n<*pse-I8@>;bv-O*>3O=gpf$t3Fcgqv zY5z+q5{}p0#p#_cvZGTL0Y9BOjW`RK?HPIcYyp||yx6i+3Q9&mNt!RxaKbcZGDC-^ z=()z$Jwv3syBgSvI7ffA+m-IxU*)o-f%=>9NmvvfNTcx*4 zwqlqv_fH&L>X(_Za=y!y$$+3ReF;Xz6DPFE@YBGcEG##l__{(D1|H@x zu)WBOaHB-7YPm)|BjOJ4ou4b~WT%YMgjNprU`6-uJ&C8vEx(O2YmF|y;3hiQq?~*O zt!z?0FA$$H7u+@6kl@pX2SnfYnc5Q=0}GP=2z-=g{oTv)_ZD{12ZcLstk{u0BBl*_*N7+c~5Yp8xEx>S9|0xf%y2-AX7C zg{J1aeC#(9ikS?teiJL?9}%*>S^d|8JhfGNgyXQuat|lh-!z%Ae0sO!2LYMvC%t%1 zv0mv>I1y4QvBnbXO`Z&9cE$l9nREf#J>ZmNF#R(j`I3wqGz;^nE|z7Kb(vz*F|;M9 z5^r-I2APqU5OdN%CGQ8kB2lGC=!6jJW+lQ_e!ZG_EONT5wi_;9|FeQ4nWqYR z+mqJ^zL$qVn0;3;oi>Js$lAI{LwVZ%#sS!yW7^4mlGZZ848vSx%08sqHOGvx-Lvcr zmVOc3e_eT1bfU(wWlq~jqzVtu`DXW6%Jxw0Xmf>nINUOZ2xCS}z8HWh{~>|C*}v*b zg{nbu%qqniDUt`aT+bwom7I;iKXpJ3WsW#~0NCBIabssA(nCH2TT}LQGugE%2(ia3bMdo|7V0219|G~O>gMdJD&0@*z8No3Dxno&90_=#%9}O;>m0L>=G#JA1!ge>-+vd#Ry|rnbm$faRfa1dFXMw;tkQmNs7z5o=~4n0eaL zLHHn;)}d|ibuau#u{YXh37>}#TQEhgIscjL0Cq&u5`5_tzafFhrPmb- zrO^s&7Plr?Uw-ikOj10#3|_|n9xYu6d)pQ|tpV3*$u*yqz^tjR`Y!2xdV+h(#g#WJIPUbKGIyHH3CnJUnnA0KNkum`o|` zDAHZzSP=CEg!YAOJz?|?!w+1E68`cUsxesZ^d!m<#6`bOeFG-DT9r$iB_w%CMY8-P z3+%Pb{afNqvsI}o=#0}p9mlp2H4;oec2tIEQFVYpjbc(ZeyZE%b_A?i^Yd7fsFJ)p z;?y1xX0rukT8LL;8O^swfE#hqY`Twk(U56|IihF3%`D!`k;X~ki#+_{;;}x)wvpCn zCXcasKpco5dxeTur$7r68rbmX;8F-6Sw~fJ*6qF-*oDfLK5d{DoX~I2WCR^Zs6{#P z#^bvEFkf^%W3?E~x=A;zMr=5sD|Y^4Bt@OG5Kj{IC2;y{@C9?kTK%x2@AamD%cS#o zrz?UnTtxH0R5jbCfP4*;a-aN_K0W=6g54hr-XR48KcUWEU{%6KeF=_&N7eQ-4ahFTg zOe!T_s;9hqarTaVN~boJeaCJnnaqm{n6*YO>VqTOHFdI6zJ%ie C|548X diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0175.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0175.dat deleted file mode 100755 index 5c37de27f31f5abd0e3d86d4f4dc2d42dbe06b19..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6017 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 W#g%+qIsa!6a@dh-k+@#vGSGjvZ8!G- diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0180.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0180.dat deleted file mode 100755 index 157703c7fdf4dcb5aa1545b83b7b0dd1f2abbd97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6657 zcmaJ_OKu%G4D7%_ycxiAg6Jr^*kGiib#9^~%rXnZZ$wfgi-lMh|IDCbt|V+oh$QIQ|Dh}c;3yh^f#|ue=zGZU&pSolF>-0|uO(;|Vf{MBNY+2e zS9>y`S^}*o0|6-iKyWt?TW?cYXb2VGM<`4I!8k+H;D|;bmBjrSobC#xO_W&kyY2DI z@?VCEUZ%UV$XjLM$N4K{)~ligEFpKRSsVNP9M;!Rm#x~OqtvCIl|;>9{lywh_qyH| za9=vcysU`2Bguk8d+K=Y9`cGDihi2QgqDZPbLE<_nwaizru5dmZ#x<4dTs7BJ5JhG zDKjg&wIKHHyT&zEc6O*Y4sw7;MDl+&4%?jzUCGTeJ+&V8&G;ej*7O1ubQH>Qeja+g zO1Eqz;H)Om9h|Ntn4iiCsfPkQd-l4=+2d8cr{h4mOx?l`nC%G1gG3RZ)C#{2@oXBF zVG|-9W&6k@gDqTNt;Lel;XX3a0wg=uP>^GYr=rc|G-a)Oo6lmmq77gcqZ9$l3G&-( z1RWIP0$UXG@k-?faKVc7dQXJ*h;Eg)nNG(Dtfmx=iL3cpIDv*k{KA9L-6U0`pS{|E z%(#R*20@e}ZNm)d$!&@)AJPe?oP7l;Sz5<(>#`<%t1fFzQTykbaCwI%NUK-x@64t8 z@ELVUtM8|6=jQ9Y>I#f&8{s1}3;F3OQVT_^&~hV{?p}}PrcwJEf!8&mBilenCOGhb zU<%B02j^5OdXs!;>uIVS`BVet)SaBbBkW!NB*yaIdem8aC}DW<7S #}*w@o>|rOV>=IF=-LW0lW+&2D z-GkWD9UCOYdzIjZ`P^WRB5s!?9{>Ofa&~jAFzdaLTeM0dJq&Iv(o1V}i(5&uM}d}X z3DpoLz#byH7{CQ9Re(>sNdXOoCa2;!4 zmJj@1EM91jEAx6n)xJM9+5=@tK5~kUi;ATqcH}NyN7(IVm42zPtuydAiiV7Qylb!w zVTwjYoEVEbZCw;vQZok$(;5xkPh9|ZjX$h$ln1~A=V2tV7^~pB>iny zwkdqVQ6sw--AJ`(xFboGF*jS|04$h=FKFKG`F8;m)WSiw#QHs0$5`@&OJ`93{eK?D z0@he7YKOzs(9iNrUfeh={odbgJ``XVY&Phhvhd%@DypYesULA-)bS}+*Fo-g!4x&Z znkU%6hvL&t=zk#ox&D$Q>7Dqx_Ke)R8*#9AVp0`5mAR%INS)3a#tLi}L{AAp`m@M? zyG{2ef^Lqg5Y^d|UIhRoCby}3T@$<=nno1);f=|EOKxJ0d_nf0iS-7NV#;Z z{WR2_M_}Qf2cDKB50NV}&tQuP&^pmEE+5t0^a=|9)&n9D2hkm#Ijmr<1m{8}?)p1nVJ)n=?EpO!iPzfZT%lUyG{Q9 diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0181.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0181.dat deleted file mode 100755 index 2c08362b08efe0f7ec759f1b8c28e62daca86ebf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6785 zcmaJ^%aJ5049$*?m^!Wrn1W*y0j8xViwSj{L&xNR{t}`%6#6_p2@quWb?xKp*~U*q z5#qisK=(wL-lq^>38GE0ujir2omyeI zlSzuUMcs(n>}2?>Br~-R&82{=s2`+md{KNoL{USKsw2i29d_0fk@SudE!-)MS)idu zv@xIvS-3kk@6|LVNda5VfVNx#ZZl+kv6@I1ep~pG>!P#+5YN+>a}ABPDA3Nfr91}UNKD$36Y5T~vTXjqaT5cu&B0O9yVX`YKTzTic@cKlRBrr*Go!TLQxk<#@#k28w@Cj@r!V}@n3s?ulss}Uy*lJGD2>vRw}hy zuWKGBDb%xV2KjEI%Ky63wU31aeJl3lW2d$E4TJMfcY4xWd-~!Xy8e2BL%)}vl#}&oZmjTpd#q?!Y0@Kvs7&DJbjLkpX{#xq z9ZZ64Z`R+$LkbE)Y$ks0=U&hV0aI=4GT*OCHf>YA#M3pBeh`-YnEK3gj*?cu@|uu& zL13~R@GtJu*!J(#50jw!Y@%82eTNs!?$af4Q+PM4q5R_z;%Icpk(TY6(SpQ&kC;^nCkS!Yr=6Agpc%#`NAST$N?A&#(>Kem|>Vu?|% z6ziwqfxkfAnkS$xILYoqL2J^gpxTo%d0pE?7K01osMD}w*UYa$ksYeg2V3ocg`a_` zs#-QF7L&Iu5gBmVn8M{S*eO;E-`Ny=Y|=yDNe@wiu2e3ooPax_iC&cvx7H|!TF@rZ zmL27Vm^3^P55GdfKAz{F4YBO!nXkf(%2#Pfz4-PjY9ETl-MzUG_*%U2aM)N3CEEnA z!iTP-ua+g6oVv1RG8l1?+%*YG)dqX#rz+NtrepHa0Cz(rK>Y!I*wXwfI62*i6mkel z!Ib`YgbGB}j_qQL0+hQqTz;EIj7GirdW?1mSYef6$dUdEW+d*$1ar>(93mv2@cDZE zR~rb6VOg&zH&O?0LUV&7{V55*0AF(GViKX*BIsWUJZ#sxdj7LgdHj(@C^SuRtf;`{ ztM;9eB3RhM#`Kuf;dE+}<#J}Cu;E#U>ZKX~`Yfaq_9`*+aT z{WjRd@By~SP#vC1laQ`h|G*%^xD^NzQ|K$|05g0zgHu9LAF*K zX&g(0rB`8lqu2w=sRCBvb^xQq#@U}m-x^ApH!%8->F6(}!^xOq&gzh|w==@5T>wT% wo+rK?6J-|>kb&(*SL(Ono+6cUgEcVdUUhKWpCZoNnB!?^S45A5PeD-s0M@z2xc~qF diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0182.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0182.dat deleted file mode 100755 index 935f5740be4277cf66c0ff835d559bf96ed9c71e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6913 zcmai1OLAo=481O=;>_L-!WMc5cWF?SLAJ$G*g<;eL6>iYguVzjgNr^#M*;+Xex5nL zE;BxURWv4_VPGuY&nJs>eo@#@Yjg6Q@N)jL`vwKq-Sa$Ik__ky)MDO&vynxPi)heKH9Es}!XEkI=pl@(RMH^p3+T^!kOfSktAP=dtDlT#^RSG}uGTO77b z2j?r`0^T0n>tc}U=2Nvv%`>n&N>NrNgAI3MNoH!uxHa}Xo@WT!2-OrEL}Yu;x2h}6 z+p}b!kqHg*Dr^jMx?7V~ap}fm;^I3DZSdKSu(K!5`-NWpdu#e#YM#a|KAuG&nvs;$ zzgwLsvGOI8MZOj55cRq|vvH6JS>!HmPB2Wq0|46;cHJ!u(?5LRmQf4IPwHiY6ubCz zvXmlkN2&OSuAV@Bi^X$bSiFL|1=Uh7Sy{X{?OGcTf#=fushI64IQAzq_<5#GOJi8E zH9Gm5FjvIHeME3oD$WG68cA~9!K9H&<8AmrGsjp@cszO2^;neLk;P_>5@GWv&}gJFjFrMa7N zdN{^}_l>yZLlBaiOf5qDcd(j1MIY>?}8}xaTh(xFuIT8<>0MPZpOH&|J_waxzm@0h2 zz5tW*1n9Ufq}W5KR4vj6c656iYCuRM@huZ0WVY4$LbOj;<1FZyvFPM0F$-lv1hE5+ z;I*As^5XVAHgAdz8Jx+?)-RP9KZ^#}*haJQkQn@ezBi;8+^QvD2`{?`(fJ1%Do}k( z0&hGZ?U6kLL;oUz{3`{Lut0jeEen(8TXoOc!tilLy?rATwh2PU_dy_COhZHUO-La5 zD%$^)!CoN(!KzTBN7oMf>1xwOtnlcy=W{C>rT_3dAhHGztJ9Yblcq($-_fx2`rAA6 zW%q0KmRUPjHRm3a?AOmhOu-Ose?~-YW!a0>j0-ZS?D+RmD4;0=Nrmk3J0i~LH-RB- z@$Zyk{EoSWE3@C}^JSl8(|cMIxS2{wzQI2KY6-x)2CnI+3v29iGo|Xz=9G$5=|{@b zfQb9#rGP`vzeHHVWUpn@1XjX>7}m1nJMy;#v`kwq7>iA4YLA4gN$+UiI>>#91yOH0&REesNTz`>aFY7o7VBEexy@%f0Jf9 zQyoAtWSYass}7*_bP!Wb6?k2J)^8GHxJ8GYpgM9)#9L*tm5r}q%}y>DoqRZiwgFnk tR^;#<2$6X`{b>w0guzR2EJy!qgVK2iC_X*X{{hpi>wW+L diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0183.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0183.dat deleted file mode 100755 index 7f76afe5251f1436b780f3010b2015c243f466ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7041 zcmaJ^&6(UF40XOa>~Tt<6t|L2pfq=o7F7reyn7tuIiKD0 z`zUDo%Xs*GJ%3;);`@1;$g=)GB9_0!w$_(NvFRC+z3utE9FJfGMG|OuegWpOpqXy0 zu3QlGI6}fo8Joq9Nh5}jUR3f4Uy%TbwkG-}66 z5Z}m|Sd)0ZJ0AZ$zoY0f>jvP*8*~2n6>QlhW4(d6Ua%qY_1qz~W+8G) zjoIW<~DDlkT{=uA73^T1uzfIp(ET)=9vGTF>M~z(=^-?VlN2QmFsLg+ZQcrdsZAZg z#v+`tg8Z%Wb2VvVV9+|v=n?bTUo0*ASP-3cz}*Q68SzGxmunwog7@~n=Dbu=WnXe( z?bh^TCV+5t6t#fR2F?08!8S$LxP>*{*^fCnL{ipVK(<7OUIutYMOha39`EWxU0dJG<>jRJ=^k&I9 zt}bX}CI>Dh&z`i*Q;l6bi_z*v%-K3W{-Mm*?xR|jHV7>Xu=Al9sM%+d`3gdj#m6LW@YEDd@V;>^B zNPN7L)3CpOYyc!DG9lGEh9<6@>!x)BQ5+3!ea1?8B5G*)pf5#`pl5%l_kdD>(>iz| zS{lVa_aN`T`4htRb26_)TaI<{s+8S-G>^;JIc147Moo+outY>}+8>Ta%n1H}|tpgFV9>(`=v9QyqGeF1_u$&K0 z_O9A7XW*$~-4#IGx1th3d$A)JKBZTYc#A6LE0(ZYXzXk4q2hA|qW&)h_RIn}Oy2c1 L-U+MF6wKj2Ri%E^ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0184.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0184.dat deleted file mode 100755 index 2ccd7d4bd10741fc36c4091e659001687e812f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7169 zcmai1OOE9>4D_HEvz!YA@I?anX!g;x%Q52Ipm*sYjn@%Lkt}}P5ik}d7K9g7o34G}|_gE{-F&Nb>LL7zzvGuY4mCU4!cGaPZ0!Qt*eT4U zfQUcBa$CB)91Dn_=JYr1j36B?ZO0lvNfp9Sa)}^EnjQj{uM#hQ?o!PFKAE~5FvO4B z%xFNN{#>a>MDXZbKI%F@fe-_5FKf4L3>>Kt5?xCAlwiGBER;Vx6O?!dd{=o%uHQt$ z%#&xwYHJOzZBtXjrRT(Y1LxEPdV~2Dl^?H6RwD>;6Xjdoor?A~bvyFfc1`F&mn&8! zoiSHN!8jFWfUDj7dY(-cgqrCbHbus%EAbvTj*h_<0$`xAA%Ohq5Kf2?vn`G0r;4Uh zsEhki=+?wHK^Q`?_cKt!OY72Z3?lpRnDxp$WyE^O`Dvb|7_8@L_atZy5woU{UmWyB zyxV`di564%V$qdf`7=6gbbIRXPWS2v9F{!8ySw$}KTDk-gjRNA^&;;kG8w}--)8>W zjBCZ|wkR?yzQu7c{LXLY`+BBanDTHBtD^Ypf9}oBN#IjUF==@P_cZ*zL&!4QNJ>wE zvxQ||Je59guXM>Z$-`PH{D2=@$MdW5bdov4FdeWy;mvzD@r(xGQ_>WgcinQbfqc4Z z>Y=DOZT1Z`r_G81u4pD4N=Ib_P3Jl?9)-( zA2r6ToJ zlNKo1<$Ikr8iX&cY8eGX6HyhDVlj71lMP3yRzci3O%7b+E8~0|2~+&-xW+mY8is$f zO))T8%-1ZOFHO$=-6Zmt=O`lp~&t@H^-Q&>QSUUDSI4cFSJ>e_B>)SdU-UVXk0| z0`!Sfke^3hwm`ym;3@M`r&scF?qpHrYE_ofJAuP+r7($)EbWDNs<4_+qB-ytS-?K0 z<3^eb3|4o+L@>Y0S%WAew0vg*GZfyB)&bFMTG1d@@8lEx*;ZrDh6aSmJOXYFsJBm!mXAsPTn>;3ZPJN&rhP0xDFo^$RE_HB^ R#FD!s6VJm}0zwTU@;@PTlsy0d diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0185.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0185.dat deleted file mode 100755 index e6f94440c8eab3f7acd79fcfc9b79f160c1be012..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7297 zcma)9%ds3c43x_U9bX6&$|UA0^5(Rdfm2`zdz4FC8WAJ_Ha^_a9ESKb8X$<_+xI-D z=iBMwfaQLkA35%?=XsIm%kuXW{oR6`R@0ba{M!LlZKsG~*Mdgj*RK=sX0E|hl=gYv z0natey#^;4gb7$c>=@&r@1!p;Q_o~F9K<(z@1Ick1l;2tD&L`4o0F3iGp=r&g>a|K zW}njW049%~6=6f6lFFbqKa?WKv2MRgQp49nQe<1vv>iciKD$XCkXxxikP|3id+KIl z$sc(S2r+mh^73bCO`r)!w*CV~2npiY&>f7!5YOpL_O8sc$z4?xF2`wOZ|BwfXC6e( zIN4L$B5b~9i@pVxt!)*b+(o0BI82k`aAzjdSr_|!Q>dssccwXh7NJ@h+yb^Bb|KgG z3K%vRsL5+8QX&>^tc1P#%_QMEv;bp*2f;qTgi7@Z$9kz8hXi#CqiJQ+a`~N>7En~X%+^KR6%wc z{-^t5KbB#(MYDl`u)d>J0;mzSJ&Ihyr)K;dKOsgBnhUY&%<^lNbp-MNrafV{%T%kQ zi@6*GT}!?#2WXHP8wiLgo|=@#G*iI-#$;T@vU87KzUku88|>1oAC94qJY@pmI%C5! z!~6B|m;TNywSUMve?P{Z@9hW&uTX^(n?p{uIFPDz2<-e*nE1cvYtf-;n?DH$Q$Wb73(9DdRvl*wF?6?}bif&Uy(IiM2%eok#*H+n^8AOqfmvR4^1fygu zx4}IsV!C*rDr=Bi`GPqyAa|Q?mjDyT`xG<`D1AvNQ~7Llf}5&Lf?nV z4Ccq|Pf`w56Y%J$cMp-E3+2B9`3Q;HVOItW>x!o|Ra3CK^1h8cNv~Un8?NQiM$H@g zTDDC?i|7T(`t|9KURv^qgy7Ln1k_e*izy%SBuG_Wbg$An^w=WbBW0OM1F<_jTeXlC zEwb!z)&!g_`A$w5X3P`Ybgs2=e}npVxZ8zOFHT@rW)OMY57V7@as;a{{Z|tyDre-U3GWVSr>lqEq}D50ar{nC z_o~GAlln|mQjP9ais4FVL3wdP5Z@dxk5TiXaMM(gZX-0S3Np=xe!D>%(kVwr2RUUl zt?kEhd3$XM>;}TJrDbTM6Rc~(M)0yjNUU{EDGCUv-}6sh(g)flvvf$7vyEIsr7KhC zEjOZpVPB>#+|#Bw#Kbe%(V?k{%)K|x!25=kRmw9Xt$Af%Cd8A5)c9H0y;yaK?aN|h zrmVqeGAcz)O%T0yq!aY8m0r$u-rqUvF~NRKEUg!PKtDUW)8&o z8uppdfs-%4=~>N?-<&?PFC)u>M{PqL0o%j5t8j}J^s@fC`JVQj9EPXdNzYVnWyl@r z=_OrZAm_@Eg2}aP@9(k14=-rKuiF^9nt}O=}h= zvr2?C%919CoG|jK*&PGmB8R|k|GNV6r8eVG=Puv^I9z+~hPq<%k@a(?2!JeE#A)ZG z^Qu^JQXwWt?Cz^CVR0;sN{nW)X7yPObDS9{1>zm%P!C)eo`lHHB62zd8Z z-bK`d_MaRunhXi}193@cBySIiP7C*6D(p~9F%UaB92iJbuYa7b&!?$c1@ePHYF#1q zHZ|jSlZ&!t+~?Lsx+JZCK z_FqBZ+1IfAC^6L{(r1{jD+t zsH~!EcwIabNM#=wISZi69|PoxJeY-(t<_I?K5$YnI;TXV1hhC}!|MF`A@TJ8SF@@S zWtQg$Em;QVRxK3I0prw@Nqyzf$;%!pVVlw@nP8_K zJ%op$y(EJz1K|f3F1e!C9AMbXoeLjFwJXl Ht!(@U8r-BR diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0187.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0187.dat deleted file mode 100755 index 8b2326d53da082bcb9f754bf379ae51e02955441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7553 zcma)9%duQ3485-zNPdD7L(j^BicpKrG~2@yBRDa3s}neEMRe-EMm8H`gt!Voh4azIsY0c39i`gnbn z7&S>gU#~tzUJk7I@?oEbYiS%;Aj$zL?YpN+TKN0|d5FoycMo{vSOCT~yid#=86rs3 zsd08hRgOCzIL~UFg=76F!~-+4v>kt&RjqSFp9e~qOtb)*V#{#1=lkC8@=3z_kk3D4 z#E0DOn1@$d-VvER(;s)k1Ce!H(6A4T%04IP-O^YMJ8nHz`*!w@0LQ@DAg@7DLu?Ev z-b%W^5C-B|_0?4`Y%`kO@UXQn9oxW;x*W7-Hr$>DKriMIbetK@Z8S*~eGZ|d^~6QY z zT@IuMF-4SYJ5Er7a)kevjHBy2n}xlrkz$)WpABI{zV&@LcgFK{(&RrWDKtmP*;WVd{3sC$0bX|F>W&f6*LEK7 zgs_HDCwPu1NCmLHowHpMan`k{i&Ekyn_BZGH-*t&@p#qYTDm*tvf=lqIkXQl2eAy=6Q0~}l{k$?eK$&x|0B6*?BjFrdL z3qf^3j@4cTaev%IS z2*h6qw{8x+C!Bh=WC3&mW=T`+i!ae1+s`$QvP-|)#W2>oUf_CU#1KBe-|pviOj8M2 z*vNC4ombPZjm-6$G@PO2SXKQszoxpQw`x(m7k*B|j8ERb_1i|qjh%fx#c{k<=o7TR_w@!cV*jiM6f1?V9EK-A7#L8#wDGv@VZ=PbqU}` zGc0>I>hrK>=MC#n5Q}oZO!aa2K$(yLWY>es6mY;`hYJv&d;)G1E7an}OHx;wi-Jlp X&y<^>bKnvajp8LO`K!tG2e|(Mx%SBu diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0188.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0188.dat deleted file mode 100755 index be3ef386cf47c16338f460cd4bd2bbe84cf62d07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7681 zcmai2$&Dp946TL-ux}lL5*eUElQM8h1vr2S!2+B>ANyc*Ta>swQq*@HT3j9x z^ISiXJxVf!!P8LRzc2rOZqzG4JzTx)rBwRGx9cHrq@DC%(q|E&>Z0m zv`9W6@yf~MhXU62#+~M*a%8uB`jYWLN(qNE3@qv4a9g&E_4uhd?FVZa{dafJsN~b9 z4zjokt%1m6xtA#!l4VWC<*wmlQ20V>t}sslzh@g;&U1rA+J(WNI>^V{y;iua4OH1d z$L3rd2mv$~v~7Puej$?OZQ3;fk;&Cw$g+hh#BIqspdfida3Q4~t{ohama{4jt&m@pY9&pb+I?Ay5r;ixAVp zP#^WUt#irSk2NkugFvu&Ggjph0T(@9{bpDvaiBwAz~;cD>@$#z>!ydc&3Sr7&jFB| zK!=Z#prB|02&~K_9v9TrnF;9{ zz7E?#s_K%kf&lz?A}f`uvBpQ__979fOoPz$NWGDfnQXF!OWKZS^3b0&q2jyZM6hZX z$k*oCDEc0-j$`=#pz^IoA)cpnHn|(RrbYgA^yoOmOXufR4k;+qrIE09l_}aUv??w; z&FM;5N=j?7EeXkf(5{HTH1Me^1|cOJ##?bZgs~aFs)9zt42oRjSF6~_9W z-{cC5H=NBg2X9b$`^B5%C+Fgq#-o;|m&>QUt|uB;r%|?p&%Tp;2{Xj@kOBOMY1a3+ zOcw528K|2qHhUKaUvG@_ua1uxT0!jky&X&n*qcG5t4d;YbIUu-yooA^?4(4eAu!(h zc*WEf>^>zi7W_~l+I2PIT3E+ulo^3{t{~@-5w3C#AW)G@@gfueMzINKJO3D#f!^$9 z&`u-i)Zs_T-zh+hMi?bX(D`4Vq|quwe~Mryz~Qy>SKj`$_&mHK!nc-PM4hvN@3q=l zcw#@GOKX6+W4zZP7{wR)^<`qb@a^xZ5!x^W-KR6yEx?a#e;pV(`+bDdoez+ixDvwt zuIs0HMLKuyn}p?4?qiu(aix7YO%->40yX}0sTy(oKl#;&aQtHdB>5hs=W!OnJz!j- zPzgfL4S0*kpF5*P)&)IJ@AQ>iac*qN>Q?wA_snw0o5E!_4U7T<4o9AxIr5?Pm;rRE zN-6VjD#YDi2p^*B+ZS!kb4ckfg(n)?+u^s!iyTQrfht}U4hzu>dPC?Gbv9b--0X?A z#+IuiRFWXv4mFiQ1O=j>Q&hA~xgo1uKtsjS7P?Hpsh^3d#<5EeCMCHTrrjnFNs_=e zvznys%xB5mMZz@AFhc?lI|`U)MXMYa6%-9=QX9N9h&4ASL+6y!vi15cc!dh5*vYO_ T+ppvbTYs$t3Vn(7P)+(DbZqCx diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0189.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0189.dat deleted file mode 100755 index 01061ceebe875e6adaaa497eb2c2893814f6d3f0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7809 zcmaJ^P0|}X2z2UuRaquCn4{=u(k|E1QFMeXvq;4cgai#j*22?3)1bex{d&bw-(f@o z*-xOD*)eKSR(?IQo3d4HVr4|W~nuj2%x9Q5h<7ieleIiI}J%GYnD zrl4f`YZf#k$gY9eSnpeKs_7TPmB!uiv{*vbCg@IujL-CUq!%Zb?84kZAkm^<=f|`` z6+%vvq7_s;lz99so8$x2+Y{fW`=>2t=xWo9V47tI?b$4ir|^EqEy}Oc$wN)Ptj#&hsG%O3-Dn4bym17?fg2sd^H zADis9@c<){FEh;78h8oe|^ z(6d>^g3g`|ljrh+?T(DbH#m&!zc$KUW1`28o0J%~Ny??b`U>Pa@NGC5m*z!nE>zl` zsspH!bbbyX39R{!Nw92%GfyH}^0Sk|6Bi_#Nq!cj5q~1OIFHZk3P$M?TASwIm$_pC zlrj>CWb42=M@MZcWz#n`6~k;vr0i-$K$B>!=JC&ShA+!N z^d{+rQ*jLOr=MA;aqm_lN-8#PQC|k)Z;1}wWId>c6@U!>H9F8HtSZ4Trs^4JoA{Vd z(EvemZmN4Ghpan-8Ci)Xt9@&21$0ics1>=$l0dWC6RD>EO5qqxW8I}{?11>T@(?%f z4X9WS5zL6_b_+A5U6-$!H0iE^xUxhjn!YG_GJ1FSe5zz^lQ}YIH(EZUL!3nWPNV1Q z4P6{vm7q(8TP%+{T^6xXI2(tB1i4j1;>3HEiCcFMsPG&awWXBE`0{~lRzsDOZU z8&Pc19!}jON}%F1NsV1~^Y`;mU5P)^SFfIvoo>&S7a!Fagl^R+>tUj07dFEKwEHRf|6~0$B0W_LIVkmEf-5IoV;uP2jxUM6#xJL diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0190.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0190.dat deleted file mode 100755 index 5df1d2e0136776aad4627c88cb8cd0a5d92e8002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7937 zcma)AL6RIP4D1d&VvhTR{PengezEiJ z!TsTSU}+zVQiuQWT)lo%Wt3~hev36s_)PgLCQhr=*@%>M9e@fs&F9Edjipbn`}U?+ z0wIQ$Bt@|Msp1|w`Hv_4VkH=xO^P!v0Cqd>(;-(ek}w}FWK+1)S9i6*GfZ4fm#`FH zQyFZ29&5Nua4=bG3{Yd?c=Qp`kv*5RRrE}c>e+j}_-d6h1*Gg*@7mBUXo_5&`w3?; zL#N1e%Lh@4%o#|k06?P+dbIMwIyhcdtD?{1NK%8>`!uUX(Br-G9mr8Z(5Zkj>s-eY zb&afp#dXwe(_;-Uq=o?c2e5%nQU)Lys!R$|u@3PuXiM&51C6-oL;O--@j9fTP<5{8 zAVeAar!oa?Csf2`0N#N%JXus7fH0{?&&&tTra^J1=3jrHK4AiWA?L>$X|_HmjXN|$ z(9K4sKNhpGIjWD(fen}wrcs3bP2(unVDMw&<e-YK*xv3K{_GvW?`4jz2jD#{_K? zt(P(~VHS%En~v2gW8Zw>42OW)4YI$aS|*1+xH}ry1dbKcbp=7v2worohq+^nGW;p2 z03?knU|!H>0Y8MPfSzV|hZig(nXhyw<3nYL<=8;bAr&gyU=pbXD1q`a5~|wAUrT+O z)~QTKug0A(2VAF4sqU!gc5?9%8gc9&3LKx1zNyur1S|`c z2={;~75^fhM%XNk>}U_>B`7VktQ#9q-tiYxD863zoRxFoYldx_-=O^Dx5ppvyQmSl z$$S7TWUkh_f$R2yr@+`DFPq6c_9U)y_Go7&H3908>k0goeLULyjm>tv)=ykZ)|}y2 z;OVylg_%rU*UTaNwgz+7y)bz=C{N2L)!L0jDC`c#e!?vtjV^{PBoFeqYTgL*2hnlomivN;4VqSv zk{FzqBysQgI@oljosTzgh6LZOniJ01s1zxht>)gxB6%^ zKd2avo9LQ*F#FO$NMByeqz;!YpJtRSOzh(otBy6o3PTd82n^+BB_QzwFhPlTz}(ep zonfjj*9;BUy`|O7H8JLEqMlqu9Vt*26Sb{biTD(lG$(RfDKCv%$b>IeAGX!Q9a7fw zQF9;dNx6zc@{u4j$BdZzmCBrIx5>MNXtBi5GctZ+UJ)jH{LiK2I5=(E5r+-z*)hOk zUz*M@OLQw&9-+7Sub4mE{|Jtc!l!`wzJZXzC)afViQ9PJv#fkVCFs?~`EIz}jkC~0 z6??w^nuEGvk=GPAqSKo(X)n$^+N!{6lX9r&kOfq|rk49rfhIQ^z9}!LV!=isfk(MU zR#Vtx*EE?Tm-67xwGN<~8~ZF`4{p|sQLf^ diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0191.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0191.dat deleted file mode 100755 index 9b23e570285374511206eeb99d8903acc32a7e87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8065 zcmb7H%Z(g43~gf$K01K~6pB)E00yMc6pBKa;~4O|mXyRl)xhe|#n0m-MX^dVuUEFp zldr!S7;WDW-*4V+|B-VZ>sJ!omhbcRDhKrZv8Y9vMI!8jg2GdgRB>K6x8Oy9OHv$( zSS{L6Cw-WX;``$*3h*7c4dJU{wxJ+eTt|Zdv!JQCiZMK)&eqwEl_?Z6j{-aQFoHdhNSNO40JGFC7?dipTC>t5lA!dQfU@41 z6uZ!hPsBz<9`cP3634i6gu!cN0;Fhzl4Fx}ZwRPf`F3oQmkVG)Z@W{#igQuY5a-xb zn&+hD2fe8&M%BwjEx{B+Ttp>M@+8mI{FV<_P4LTPikytiOW#&l(Q2eQdfP{b{5B>-;TugIRFFFn7dluyE9 z<5y8-S5-+yk!bhHJ_$4w8;h|m8}4SkqBSdvh?qyRkSPyq$aqxNxnr(mK~70_)7!A-fH_@2vwXGDXAj-h8>9Q5fOjyC;cws{cf$<{RWn<0ka zd2xs8G$qJcAyONcRK%vFp2w#-RTzr~`0<=CnEh%L1A3X&n8^v2VqG2ZS)-#g-?I z+U9HC4u|GVN(WZAeCuRu5;h@*HB@kgKtib3CvS%91jU_aGIi3S-wv!)POEGk>a0p9 zae)2JA{bL{Y$3aPj*O-$fEFE}3jL*ICtmx!n5RRFx|-HS&m^SazW^QJoLzDp46Lh! z^^>p^_I8d~LSu&)DA^t1J|IjSFEDn2uzG-l9bGfO}=qV9eR8_X-n6!b=AH#)#njE6q2DR+45mBT;i!S1h)P;eZ07FT- zE0?AsE7kzB;%0x@T+*ffn;1hZa>B~9+SzfvQtXJ6O-&>;OMEH_M7?hlVBQFhnFeE( zJmQ3|vAvdGIDrw==5O^s50#`MyDbbgZtZ@4S_H=90Q2YLv))Vb* zI*6&BX+HS3@Mf!2+Ens0s@AM*YTPx*Hqa@}qK+OvsZ_XretfA}g@j3#1OG>di5$D# k#pxy5-rSC2ceu6Vv!Qf3C~J8FGNH4l;sJ^-5q~`Y0ZTkB*8l(j diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0192.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0192.dat deleted file mode 100755 index 3e1b7309d7e6c4fde1b560d2476bf5c240b21fb5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8193 zcmai2yOr%W4BR~qUg#233QLnRhi-`-xCNHr%nsgp*91ragAZi|B1jAdLlBbg?&ov7 z`d7M+*w5!#;NKPUZ;F-$g^2ODc=Gr|Fg8Af`pxFf`ehWia|Aix;Cx9x*?xUBz>@h` zj>5VE+D(6kfZKU_@~$R|f&B(*nx3i$P%H%H*E&%w;0jYiyJRZW+@EsU2;*6*ga{e7 zuq-ZEc?%pd1#T2bt$PoEg)P`j1ZTc&uGU)>6y%Htq_J6?CkHIxmKB3wUI_2t&ZZOu zv}X=*DuV>N{n#Wv2RrUEM6&9T-Gf~dXQOSZ2VGdnn)$SYiOwaMDUiLeMa33FLl3Z$ z_Vck90!a#utrU$I`I7ClJx?(gIW#aE8dn(u@b?0oBnh&h>FitakKkz3cghN?TFc;g zh(5`yq~@`M2oJSqq$R|+ucYuI25;af+hsnYzA(=W5nw3JCVN2N7qy7MasBJsXz_a4 zad2UPN71+6ILFR4 zdO)gjYaD-DJEo$beF-WTc>=~JmIhLe_{M?#DFzHlW}`g$075hJ&p?Z4MzgI4W5Jzt zGw$Z7DY>ee3t<_KoXgZT-J)VXe^W#}%@d3Qq8>RL@?jhPF<-QLUVkBqka9Im)n%y~ z6@?{sQgW0ghhQ+D904l;3}y$^GTZv3tj${o2<{F9FcnBS)^Sx6$0LCZY>v&3#}hF$ zcWq^wT7`Yoe=YaWh1x)p-e{J#;!Z4imG-7!cRlQLOElqS|CDw{;?0UTa2f4m-Qci& z8p=MtE*jwKNNP49mKnF6xf!=%SBiHFpwUvw9~g)n0mcKJ4-BNI>+HI7%`{# zxB+c6he5v&&o_PT{e=x^&xiiV-F4_jU0D}#&Xi1zj1hd2HF3-_33`m#a}rmE-_xO2 z9c|scfn0dpt`d+jN$mWeoqr8QKfUbtn1QmK+qRLry8iiT-`VURPHC95hZgP}B`c|e z9f8$D@G|y=yJUVCd#c3_EFLDHP|(Uk_a<)e-Lj@tJqupYK~%?!qt#1?t`l!unz%3s zs>`qSt!d63;$G^)T=eG3UPyLLi;u@Ja8vDQOn>bVkjOD2_v=kyv!Z%Nzb;*6U^Sqnpw#qlZwI>LSon%xTQG}SAqSKLrcHlRfmzYO0D6nVyeK7UHI6djF81b*GoWdCjB3M;o3WpRCC-bDMNf0jT0O06L{6cqUoZ0{Q)8! z)_3{8jf+Fl)8I5iu4#r7;P{6jjqUQ55+G-&hhmYh?*LmHNWnJyidU`z-L6!p=3|^- z#)^{Z`n&Bq{C;Ju6lO=R_~I^!(+LrF)xt{xj!S}ZbbVuj8Nx}HG6w@rGVu))Tz=Xt zaTXa4vTQgYFskCOVxQIt#JFXj4?RlKSPHp$_LME%gMct?6zVX%LaXk2EBft_G6{)v zibo_^9w*}HTfnl@-iSLpFWBL|nD%{;zquuwJmf4c=u8mwDm}E=@h~}gYy#BxWIZN$ zS^Y&xpW)6;3$P!@6+}-YT{mMo+j47j4N7sQ)aRqFz$1h*u4J5%Z$lg~w%NX?Ev(46 Jk;@39^&dPZ+YkT% diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0193.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0193.dat deleted file mode 100755 index 1c538767aa1478b87e1ae65f100f993a6a705d14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8321 zcmai3JB}qc4D7Lk3HJ!PhBF;ax|szy*lTp=bO9#=c<`P@NhFID)$X9hPq9c*pMJCZ zeqHwY{jJa6Dw6b#zW29{vrz9{SVQ0<{&o6Nzib+#9qF3Fe#ErX`qMgpY1mb)OEuu` z@DFmhR$NKZZ{QqQaCLEzrHugU&^eAQh2w#@qw_Rdqq2N*lppWwLf9q36XJslHjU$?!33}BX~@sp~cE8Mk-*|aKSTY*vCJuN&9HhC5tke&4?GOfvxM_ z(5eDqFeUY$zesS6Dm=T?UA@(dQWE50>JzLm!B4?OIqyHH{{@O|8W&_g*OkpYM*Ckt z@xG^&93G5GOL7w-a8|FEswX?A*Uucrq`}zGwB+6dZ-w1KVYl~RSJawdMi}TwM?LyF zZ8&7u<){qhr?|q(@YDYBHEtNY#kQUb^SS0G7!pb^_ScnG$-w@w^aG5w z0b^NAhv8?tPlNt`(kjnF?6?3cGWuc`^@ zNH*o~MG#~zMIkZ#Bu>w8_xsv$2){vzbyg-_s#>X$@?t*?vRh1++i;+Acbs!`?PX&IKLnYTSgYqm>`MU3XK8b&9T;+F~T}ID%*8r@^2Qlu}yFh z2N{xRD%=xzdY6f`M?j-lidZr`?P#eq?{6wPDOm!mIjpL5BATj^R5~R72_qlW8pTbU z9G~bb$LG<`_I!V@BmMx`KeeNbZChi-y^7b`ar21fs8*aJ*WEj_KXiZeStEXz%O1BZ z6rM&M$7$A`4=vF0AdBtw;gY!RU!(3yT*;z5j(sAx?ys`yB03D8?cj)i9UV6*vG9t0 z#aGKJC`_32%hFdQItfuDh_O;;IV3AbAMRm}URgm)3Q%PO@pq8GIqw$OoK85 z#>fYuqLq#JaqYT?o;C9}l>RE1hva^1c$4bkIwtiGY4o7ynQLpjWXcZi)SD|a;{;9L zIw{ovy3$Kejx0E8AAF)lc<-B;Q{D)MVWuj(^R(W)9y7vK%J;}lN0#~d2zLqwESRB2 z|B~f^+56>G_n<@Q5tvP~+te`>>f@k)8ZhcXf%KdZ@cG>_p35)7DoGkkJl5K2X5_; zsqB$tX+eo-`eCM>Vv_g!XY4?xA;&PX)``s%(WYkJ%QXS(z5naF{cpz(yA8=yfJ1vW zTnSveNL4jA tELQMaDQN73__9A;*{V8Z0Bp7f(hO>MFN;BG#wm5o-tF#k^#D0f{y)Ao?@0gv diff --git a/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0194.dat b/node_modules/aws-sdk/node_modules/crypto-browserify/test/vectors/byte0194.dat deleted file mode 100755 index 12e1e1f1361b14b33749e37c0c6bb10ff08c195d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8449 zcma)AOLFBl417~gO_shvcoZIu+T}`F>L|<&ymZyL#vuR_XaJ-tT1X(!XnY9j$$q{3 z_4d8LZif9}trvD{Nwyp~+j?$iV!g?5#SxQ!5{MnJk|7JtfW+=Bz@l@J+NUTsou z6tMMG45sf*3_5Lj>%Uet#RiKc9xYz_3o34Q*+g~^qJYB*Wu$vJNYm760oYqu~e z9iT9*gvbdf0SS^N$DrFnzkh2T3too#ig@x-B<=FG;J%c5stF&j{%WLBnhCWnVTWk8 zI4m*7-2xyi9n=S?(dJy6S+^;%_prE;pFTG*4VCjJzf0}YAwA%bm1H!9V@`VpX#k1F z-U~m*5oi)&4apujv?qWjcpqKeL;{bxx|1k0)r=eIA(U41f846_%{(#BfM?@E9j8QCCiK z-e62-*fuTx984oUjxXU$LAjUxRVMFz?3|fyy0xh?mr9gH?Ni_uvsPHO z++#xq%iGyleSnLCo-V?oO=AlOnp94EJh1yx*`)|oxDQheDp}qVXJ-=&-J><`Z2^FJ zfi$*Vd=Lpv=}eF>oEwCaY}6&1!uqgpq4AE=&CDgCs?b{8om2?)DM$5qkRQ&M#PC0T zE>07~?UcG0{pz|f0ZWY=H&JCq)(7cz5d`>QuplJ00L*VX!0)D7{STXVn&IL1&nEh! zJF-zaWGoArpOA4D&ou}((>cxGZUx<{!2ruEXVIp)o2f33IfV}=iIKOtZlp3W*29LM zVu&W#@xpJuj$T1-TZSv3Uri0Sn$hT?_&1PiW#)^o`=X{}}$=ZD7MPAN_J;PRURW6?s`+K9oM^V!3I=AS}8X^t@z_t!0?85sSsYWJC9v@*2>m zoQ&xSgy;4OS$f&wZ>E8{-ScYUUlAI}2uE_nF5!b4yy>J+zvPZM_6b|0xkJI+k z7X_gX$C zu{z>*&;ngLvLBKx(|meBpkwy{o{TJ?c&R5F0L($9Y`g#I& z@l}Qa^1}Vet*5FK&r{1XTd7J_n_$lX!AfI@x->z;jB!X6_0|w4OLME3qEoZ10vm#g z6N(l+RyhPhSpyGNB|ye(4<{iC>2JpJQ)(L?>S4FkwqC*fuW{Das$+><2r^cgBs;Xr z*H%KA&?Zz}uPZFz>OspF-G$#8ihr{NY^& z3OhA@*t0*ozQ|%1BtsQ7SrA3(`452Y+50=6SQM*>+>1Kad4ytF0N1zQZVLk{lX`mY zCdbiyiXUmXM=ieBEGnnKUWO%_4YZwg)~22&J1lUxKn4m*an|aJeix?!|^t zONol;dhYk^(6C!k1Y+z3r`Sq?2O`ZB{2`bIOdc>(0Rw<*uHj+%X91?9sgtp;w##;R z(zkIgmx<|ZHe$Sx%onlAgcg4*O?&YtQ&w0l>ROqiu({u#Db4SSJoKvrKHw=&CVZZs z5NJLTeO6E0HAVY&nfewFM$R{cd9g4>=$Y<~?7LlO_SH|-Ia|2(+*Sk)GZ?s{0}Q!s z{%V;RT%mHlP~1Sw8G1LXk|uN<-&4MF2ll@XH{vGoH-laNNL7F&{KwTX*lke^bK9(a zY3y!Mt;2gF`nPEK+2Hv31tqLMf^Q0)2=-$3HproBxRdw$72E`dWb3;7A@3_$oGUxp zuUov&)q0}kRN}i5)WXSyC)MV??}r4N9p;pGAGNOH0l{8>1toFzvxu4lz_-uq8Ub_M z1NO?m=~)r(VsLi4XCqkB6jnwrb#=ps{Q3x8Pn-FPFc%$RE1^H?Ylz^MVUP9 z_ztOXh$NaU~+`B(gmXD;?9pGtgnTpfJ{`U4GB)2_}H)X(ez;Z zW)f=`8`44-D-?Ymud%#BXbC5c;PBOUmbXgE(1v-LW76W2x*QV`b(9^Mv~w)1#mLG8 zgxB166vRa)u|jCVvJ1IGVrzo4nq#EeW=cTcW#tQT;{dw3`fh4!=i3HqrT <%= grunt.template.today("yyyy-mm-dd") %> */\n', - mangleProperties: {regex: /^_/} - }, - build: { - src: '<%= pkg.name %>.js', - dest: 'artifacts/<%= pkg.name %>.min.js' - } - }, - jshint: { - ignore_warning: { - options: { - '-W083': true - }, - src: ['jmespath.js', 'test/*.js', 'Gruntfile.js'] - } - }, - eslint: { - target: ['jmespath.js'] - } - }); - - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-jshint'); - grunt.loadNpmTasks('grunt-eslint'); - - // Default task(s). - grunt.registerTask('default', ['uglify', 'jshint', 'eslint']); - -}; diff --git a/node_modules/aws-sdk/node_modules/jmespath/LICENSE b/node_modules/aws-sdk/node_modules/jmespath/LICENSE deleted file mode 100644 index c1d496b..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/LICENSE +++ /dev/null @@ -1,13 +0,0 @@ -Copyright 2014 James Saryerwinnie - -Licensed under the Apache License, Version 2.0 (the "License"); -you may not use this file except in compliance with the License. -You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, software -distributed under the License is distributed on an "AS IS" BASIS, -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -See the License for the specific language governing permissions and -limitations under the License. diff --git a/node_modules/aws-sdk/node_modules/jmespath/README.md b/node_modules/aws-sdk/node_modules/jmespath/README.md deleted file mode 100644 index b1110c2..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/README.md +++ /dev/null @@ -1,57 +0,0 @@ -# jmespath.js - -[![Build Status](https://travis-ci.org/jmespath/jmespath.js.png?branch=master)](https://travis-ci.org/jmespath/jmespath.js) - -jmespath.js is a javascript implementation of JMESPath, -which is a query language for JSON. It will take a JSON -document and transform it into another JSON document -through a JMESPath expression. - -Using jmespath.js is really easy. There's a single function -you use, `jmespath.search`: - - -``` -> var jmespath = require('jmespath'); -> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, "foo.bar.baz[2]") -2 -``` - -In the example we gave the ``search`` function input data of -`{foo: {bar: {baz: [0, 1, 2, 3, 4]}}}` as well as the JMESPath -expression `foo.bar.baz[2]`, and the `search` function evaluated -the expression against the input data to produce the result ``2``. - -The JMESPath language can do a lot more than select an element -from a list. Here are a few more examples: - -``` -> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, "foo.bar") -{ baz: [ 0, 1, 2, 3, 4 ] } - -> jmespath.search({"foo": [{"first": "a", "last": "b"}, - {"first": "c", "last": "d"}]}, - "foo[*].first") -[ 'a', 'c' ] - -> jmespath.search({"foo": [{"age": 20}, {"age": 25}, - {"age": 30}, {"age": 35}, - {"age": 40}]}, - "foo[?age > `30`]") -[ { age: 35 }, { age: 40 } ] -``` - -## More Resources - -The example above only show a small amount of what -a JMESPath expression can do. If you want to take a -tour of the language, the *best* place to go is the -[JMESPath Tutorial](http://jmespath.org/tutorial.html). - -One of the best things about JMESPath is that it is -implemented in many different programming languages including -python, ruby, php, lua, etc. To see a complete list of libraries, -check out the [JMESPath libraries page](http://jmespath.org/libraries.html). - -And finally, the full JMESPath specification can be found -on the [JMESPath site](http://jmespath.org/specification.html). diff --git a/node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js b/node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js deleted file mode 100644 index ae76a6d..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/artifacts/jmespath.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jmespath 2016-03-22 */ -!function(a){"use strict";function b(a){return null!==a?"[object Array]"===Object.prototype.toString.call(a):!1}function c(a){return null!==a?"[object Object]"===Object.prototype.toString.call(a):!1}function d(a,e){if(a===e)return!0;var f=Object.prototype.toString.call(a);if(f!==Object.prototype.toString.call(e))return!1;if(b(a)===!0){if(a.length!==e.length)return!1;for(var g=0;g="a"&&"z">=a||a>="A"&&"Z">=a||"_"===a}function h(a){return a>="0"&&"9">=a||"-"===a}function i(a){return a>="a"&&"z">=a||a>="A"&&"Z">=a||a>="0"&&"9">=a||"_"===a}function j(){}function k(){}function l(a){this.runtime=a}function m(a){this.a=a,this.functionTable={abs:{b:this.c,d:[{types:[r]}]},avg:{b:this.e,d:[{types:[z]}]},ceil:{b:this.f,d:[{types:[r]}]},contains:{b:this.g,d:[{types:[t,u]},{types:[s]}]},ends_with:{b:this.h,d:[{types:[t]},{types:[t]}]},floor:{b:this.i,d:[{types:[r]}]},length:{b:this.j,d:[{types:[t,u,v]}]},map:{b:this.k,d:[{types:[x]},{types:[u]}]},max:{b:this.l,d:[{types:[z,A]}]},merge:{b:this.m,d:[{types:[v],variadic:!0}]},max_by:{b:this.n,d:[{types:[u]},{types:[x]}]},sum:{b:this.o,d:[{types:[z]}]},starts_with:{b:this.p,d:[{types:[t]},{types:[t]}]},min:{b:this.q,d:[{types:[z,A]}]},min_by:{b:this.r,d:[{types:[u]},{types:[x]}]},type:{b:this.s,d:[{types:[s]}]},keys:{b:this.t,d:[{types:[v]}]},values:{b:this.u,d:[{types:[v]}]},sort:{b:this.v,d:[{types:[A,z]}]},sort_by:{b:this.w,d:[{types:[u]},{types:[x]}]},join:{b:this.x,d:[{types:[t]},{types:[A]}]},reverse:{b:this.y,d:[{types:[t,u]}]},to_array:{b:this.z,d:[{types:[s]}]},to_string:{b:this.A,d:[{types:[s]}]},to_number:{b:this.B,d:[{types:[s]}]},not_null:{b:this.C,d:[{types:[s],variadic:!0}]}}}function n(a){var b=new k,c=b.parse(a);return c}function o(a){var b=new j;return b.tokenize(a)}function p(a,b){var c=new k,d=new m,e=new l(d);d.a=e;var f=c.parse(b);return e.search(f,a)}var q;q="function"==typeof String.prototype.trimLeft?function(a){return a.trimLeft()}:function(a){return a.match(/^\s*(.*)/)[1]};var r=0,s=1,t=2,u=3,v=4,w=5,x=6,y=7,z=8,A=9,B="EOF",C="UnquotedIdentifier",D="QuotedIdentifier",E="Rbracket",F="Rparen",G="Comma",H="Colon",I="Rbrace",J="Number",K="Current",L="Expref",M="Pipe",N="Or",O="And",P="EQ",Q="GT",R="LT",S="GTE",T="LTE",U="NE",V="Flatten",W="Star",X="Filter",Y="Dot",Z="Not",$="Lbrace",_="Lbracket",aa="Lparen",ba="Literal",ca={".":Y,"*":W,",":G,":":H,"{":$,"}":I,"]":E,"(":aa,")":F,"@":K},da={"<":!0,">":!0,"=":!0,"!":!0},ea={" ":!0," ":!0,"\n":!0};j.prototype={tokenize:function(a){var b=[];this.D=0;for(var c,d,e;this.D"===c?"="===a[this.D]?(this.D++,{type:S,value:">=",start:b}):{type:Q,value:">",start:b}:"="===c&&"="===a[this.D]?(this.D++,{type:P,value:"==",start:b}):void 0},J:function(a){this.D++;for(var b,c=this.D,d=a.length;"`"!==a[this.D]&&this.D=0)return!0;if(c.indexOf(a)>=0)return!0;if(!(d.indexOf(a[0])>=0))return!1;try{return JSON.parse(a),!0}catch(e){return!1}}};var fa={};fa[B]=0,fa[C]=0,fa[D]=0,fa[E]=0,fa[F]=0,fa[G]=0,fa[I]=0,fa[J]=0,fa[K]=0,fa[L]=0,fa[M]=1,fa[N]=2,fa[O]=3,fa[P]=5,fa[Q]=5,fa[R]=5,fa[S]=5,fa[T]=5,fa[U]=5,fa[V]=9,fa[W]=20,fa[X]=21,fa[Y]=40,fa[Z]=45,fa[$]=50,fa[_]=55,fa[aa]=60,k.prototype={parse:function(a){this.M(a),this.index=0;var b=this.expression(0);if(this.N(0)!==B){var c=this.O(0),d=new Error("Unexpected token type: "+c.type+", value: "+c.value);throw d.name="ParserError",d}return b},M:function(a){var b=new j,c=b.tokenize(a);c.push({type:B,value:"",start:a.length}),this.tokens=c},expression:function(a){var b=this.O(0);this.P();for(var c=this.nud(b),d=this.N(0);ab;){if(c===H)b++,this.P();else{if(c!==J){var d=this.N(0),e=new Error("Syntax error, unexpected token: "+d.value+"("+d.type+")");throw e.name="Parsererror",e}a[b]=this.O(0).value,this.P()}c=this.N(0)}return this.V(E),{type:"Slice",children:a}},Y:function(a,b){var c=this.expression(fa[b]);return{type:"Comparator",name:b,children:[a,c]}},X:function(a){var b=this.N(0),c=[C,D,W];return c.indexOf(b)>=0?this.expression(a):b===_?(this.V(_),this.U()):b===$?(this.V($),this.R()):void 0},Q:function(a){var b;if(fa[this.N(0)]<10)b={type:"Identity"};else if(this.N(0)===_)b=this.expression(a);else if(this.N(0)===X)b=this.expression(a);else{if(this.N(0)!==Y){var c=this.O(0),d=new Error("Sytanx error, unexpected token: "+c.value+"("+c.type+")");throw d.name="ParserError",d}this.V(Y),b=this.X(a)}return b},U:function(){for(var a=[];this.N(0)!==E;){var b=this.expression(0);if(a.push(b),this.N(0)===G&&(this.V(G),this.N(0)===E))throw new Error("Unexpected token Rbracket")}return this.V(E),{type:"MultiSelectList",children:a}},R:function(){for(var a,b,c,d,e=[],f=[C,D];;){if(a=this.O(0),f.indexOf(a.type)<0)throw new Error("Expecting an identifier token, got: "+a.type);if(b=a.value,this.P(),this.V(H),c=this.expression(0),d={type:"KeyValuePair",name:b,value:c},e.push(d),this.N(0)===G)this.V(G);else if(this.N(0)===I){this.V(I);break}}return{type:"MultiSelectHash",children:e}}},l.prototype={search:function(a,b){return this.visit(a,b)},visit:function(a,g){var h,i,j,k,l,m,n,o,p,q;switch(a.type){case"Field":return null===g?null:c(g)?(m=g[a.name],void 0===m?null:m):null;case"Subexpression":for(j=this.visit(a.children[0],g),q=1;qr&&(r=g.length+r),j=g[r],void 0===j&&(j=null),j;case"Slice":if(!b(g))return null;var s=a.children.slice(0),t=this.computeSliceParams(g.length,s),u=t[0],v=t[1],w=t[2];if(j=[],w>0)for(q=u;v>q;q+=w)j.push(g[q]);else for(q=u;q>v;q+=w)j.push(g[q]);return j;case"Projection":var x=this.visit(a.children[0],g);if(!b(x))return null;for(p=[],q=0;ql;break;case S:j=k>=l;break;case R:j=l>k;break;case T:j=l>=k;break;default:throw new Error("Unknown comparator: "+a.name)}return j;case V:var C=this.visit(a.children[0],g);if(!b(C))return null;var D=[];for(q=0;qe?!0:!1;return c=null===c?h?a-1:0:this.capSliceRange(a,c,e),d=null===d?h?-1:a:this.capSliceRange(a,d,e),f[0]=c,f[1]=d,f[2]=e,f},capSliceRange:function(a,b,c){return 0>b?(b+=a,0>b&&(b=0>c?-1:0)):b>=a&&(b=0>c?a-1:a),b}},m.prototype={callFunction:function(a,b){var c=this.functionTable[a];if(void 0===c)throw new Error("Unknown function: "+a+"()");return this.$(a,b,c.d),c.b.call(this,b)},$:function(a,b,c){var d;if(c[c.length-1].variadic){if(b.length=0;e--)d+=c[e];return d}var f=a[0].slice(0);return f.reverse(),f},c:function(a){return Math.abs(a[0])},f:function(a){return Math.ceil(a[0])},e:function(a){for(var b=0,c=a[0],d=0;d=0},i:function(a){return Math.floor(a[0])},j:function(a){return c(a[0])?Object.keys(a[0]).length:a[0].length},k:function(a){for(var b=[],c=this.a,d=a[0],e=a[1],f=0;f0){var b=this._(a[0][0]);if(b===r)return Math.max.apply(Math,a[0]);for(var c=a[0],d=c[0],e=1;e0){var b=this._(a[0][0]);if(b===r)return Math.min.apply(Math,a[0]);for(var c=a[0],d=c[0],e=1;eh?1:h>g?-1:a[0]-b[0]});for(var i=0;ig&&(g=c,b=e[h]);return b},r:function(a){for(var b,c,d=a[1],e=a[0],f=this.createKeyFunction(d,[r,t]),g=1/0,h=0;hc&&(g=c,b=e[h]);return b},createKeyFunction:function(a,b){var c=this,d=this.a,e=function(e){var f=d.visit(a,e);if(b.indexOf(c._(f))<0){var g="TypeError: expected one of "+b+", received "+c._(f);throw new Error(g)}return f};return e}},a.tokenize=o,a.compile=n,a.search=p,a.strictDeepEqual=d}("undefined"==typeof exports?this.jmespath={}:exports); \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/jmespath/bower.json b/node_modules/aws-sdk/node_modules/jmespath/bower.json deleted file mode 100644 index f0f626c..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "jmespath.js", - "main": "jmespath.js", - "version": "0.11.0", - "homepage": "https://github.com/jmespath/jmespath.js", - "authors": [ - "James Saryerwinnie " - ], - "description": "JMESPath implementation in javascript", - "moduleType": [ - "node" - ], - "keywords": [ - "jmespath" - ], - "license": "MIT", - "ignore": [ - "**/.*", - "node_modules", - "bower_components", - "test", - "tests" - ] -} diff --git a/node_modules/aws-sdk/node_modules/jmespath/g.sh b/node_modules/aws-sdk/node_modules/jmespath/g.sh deleted file mode 100755 index 5358000..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/g.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -grunt -uglifyjs artifacts/jmespath.min.js -b -o /tmp/jmespath.min.js -uglifyjs artifacts/jmespath.min.js -b -o ~/Source/jmespath.site/docs/_build/html/_static/js/jmespath.min.js -#cp artifacts/jmespath.min.js ~/Source/jmespath.site/docs/_build/html/_static/js/ diff --git a/node_modules/aws-sdk/node_modules/jmespath/index.html b/node_modules/aws-sdk/node_modules/jmespath/index.html deleted file mode 100644 index 5806e1e..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/index.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - JMESPath Demo - - - - - -
-
-

JSONPath Online Evaluator

-
-

Author: Kazuki Hamasaki [ashphy@ashphy.com]

-

This evaluator uses JSONPath - XPath for JSON

-
-
-
-
-

Inputs

-
- - - Example '$.phoneNumbers[*].type' See also JSONPath expressions - - -
-
-
-

Evaluation Results

-
false
-
-
-
- - - - - - - - - - - - diff --git a/node_modules/aws-sdk/node_modules/jmespath/james.html b/node_modules/aws-sdk/node_modules/jmespath/james.html deleted file mode 100644 index be8d3ab..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/james.html +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/node_modules/aws-sdk/node_modules/jmespath/jmespath.js b/node_modules/aws-sdk/node_modules/jmespath/jmespath.js deleted file mode 100644 index f59e8e4..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/jmespath.js +++ /dev/null @@ -1,1667 +0,0 @@ -(function(exports) { - "use strict"; - - function isArray(obj) { - if (obj !== null) { - return Object.prototype.toString.call(obj) === "[object Array]"; - } else { - return false; - } - } - - function isObject(obj) { - if (obj !== null) { - return Object.prototype.toString.call(obj) === "[object Object]"; - } else { - return false; - } - } - - function strictDeepEqual(first, second) { - // Check the scalar case first. - if (first === second) { - return true; - } - - // Check if they are the same type. - var firstType = Object.prototype.toString.call(first); - if (firstType !== Object.prototype.toString.call(second)) { - return false; - } - // We know that first and second have the same type so we can just check the - // first type from now on. - if (isArray(first) === true) { - // Short circuit if they're not the same length; - if (first.length !== second.length) { - return false; - } - for (var i = 0; i < first.length; i++) { - if (strictDeepEqual(first[i], second[i]) === false) { - return false; - } - } - return true; - } - if (isObject(first) === true) { - // An object is equal if it has the same key/value pairs. - var keysSeen = {}; - for (var key in first) { - if (hasOwnProperty.call(first, key)) { - if (strictDeepEqual(first[key], second[key]) === false) { - return false; - } - keysSeen[key] = true; - } - } - // Now check that there aren't any keys in second that weren't - // in first. - for (var key2 in second) { - if (hasOwnProperty.call(second, key2)) { - if (keysSeen[key2] !== true) { - return false; - } - } - } - return true; - } - return false; - } - - function isFalse(obj) { - // From the spec: - // A false value corresponds to the following values: - // Empty list - // Empty object - // Empty string - // False boolean - // null value - - // First check the scalar values. - if (obj === "" || obj === false || obj === null) { - return true; - } else if (isArray(obj) && obj.length === 0) { - // Check for an empty array. - return true; - } else if (isObject(obj)) { - // Check for an empty object. - for (var key in obj) { - // If there are any keys, then - // the object is not empty so the object - // is not false. - if (obj.hasOwnProperty(key)) { - return false; - } - } - return true; - } else { - return false; - } - } - - function objValues(obj) { - var keys = Object.keys(obj); - var values = []; - for (var i = 0; i < keys.length; i++) { - values.push(obj[keys[i]]); - } - return values; - } - - function merge(a, b) { - var merged = {}; - for (var key in a) { - merged[key] = a[key]; - } - for (var key2 in b) { - merged[key2] = b[key2]; - } - return merged; - } - - var trimLeft; - if (typeof String.prototype.trimLeft === "function") { - trimLeft = function(str) { - return str.trimLeft(); - }; - } else { - trimLeft = function(str) { - return str.match(/^\s*(.*)/)[1]; - }; - } - - // Type constants used to define functions. - var TYPE_NUMBER = 0; - var TYPE_ANY = 1; - var TYPE_STRING = 2; - var TYPE_ARRAY = 3; - var TYPE_OBJECT = 4; - var TYPE_BOOLEAN = 5; - var TYPE_EXPREF = 6; - var TYPE_NULL = 7; - var TYPE_ARRAY_NUMBER = 8; - var TYPE_ARRAY_STRING = 9; - - var TOK_EOF = "EOF"; - var TOK_UNQUOTEDIDENTIFIER = "UnquotedIdentifier"; - var TOK_QUOTEDIDENTIFIER = "QuotedIdentifier"; - var TOK_RBRACKET = "Rbracket"; - var TOK_RPAREN = "Rparen"; - var TOK_COMMA = "Comma"; - var TOK_COLON = "Colon"; - var TOK_RBRACE = "Rbrace"; - var TOK_NUMBER = "Number"; - var TOK_CURRENT = "Current"; - var TOK_EXPREF = "Expref"; - var TOK_PIPE = "Pipe"; - var TOK_OR = "Or"; - var TOK_AND = "And"; - var TOK_EQ = "EQ"; - var TOK_GT = "GT"; - var TOK_LT = "LT"; - var TOK_GTE = "GTE"; - var TOK_LTE = "LTE"; - var TOK_NE = "NE"; - var TOK_FLATTEN = "Flatten"; - var TOK_STAR = "Star"; - var TOK_FILTER = "Filter"; - var TOK_DOT = "Dot"; - var TOK_NOT = "Not"; - var TOK_LBRACE = "Lbrace"; - var TOK_LBRACKET = "Lbracket"; - var TOK_LPAREN= "Lparen"; - var TOK_LITERAL= "Literal"; - - // The "&", "[", "<", ">" tokens - // are not in basicToken because - // there are two token variants - // ("&&", "[?", "<=", ">="). This is specially handled - // below. - - var basicTokens = { - ".": TOK_DOT, - "*": TOK_STAR, - ",": TOK_COMMA, - ":": TOK_COLON, - "{": TOK_LBRACE, - "}": TOK_RBRACE, - "]": TOK_RBRACKET, - "(": TOK_LPAREN, - ")": TOK_RPAREN, - "@": TOK_CURRENT - }; - - var operatorStartToken = { - "<": true, - ">": true, - "=": true, - "!": true - }; - - var skipChars = { - " ": true, - "\t": true, - "\n": true - }; - - - function isAlpha(ch) { - return (ch >= "a" && ch <= "z") || - (ch >= "A" && ch <= "Z") || - ch === "_"; - } - - function isNum(ch) { - return (ch >= "0" && ch <= "9") || - ch === "-"; - } - function isAlphaNum(ch) { - return (ch >= "a" && ch <= "z") || - (ch >= "A" && ch <= "Z") || - (ch >= "0" && ch <= "9") || - ch === "_"; - } - - function Lexer() { - } - Lexer.prototype = { - tokenize: function(stream) { - var tokens = []; - this._current = 0; - var start; - var identifier; - var token; - while (this._current < stream.length) { - if (isAlpha(stream[this._current])) { - start = this._current; - identifier = this._consumeUnquotedIdentifier(stream); - tokens.push({type: TOK_UNQUOTEDIDENTIFIER, - value: identifier, - start: start}); - } else if (basicTokens[stream[this._current]] !== undefined) { - tokens.push({type: basicTokens[stream[this._current]], - value: stream[this._current], - start: this._current}); - this._current++; - } else if (isNum(stream[this._current])) { - token = this._consumeNumber(stream); - tokens.push(token); - } else if (stream[this._current] === "[") { - // No need to increment this._current. This happens - // in _consumeLBracket - token = this._consumeLBracket(stream); - tokens.push(token); - } else if (stream[this._current] === "\"") { - start = this._current; - identifier = this._consumeQuotedIdentifier(stream); - tokens.push({type: TOK_QUOTEDIDENTIFIER, - value: identifier, - start: start}); - } else if (stream[this._current] === "'") { - start = this._current; - identifier = this._consumeRawStringLiteral(stream); - tokens.push({type: TOK_LITERAL, - value: identifier, - start: start}); - } else if (stream[this._current] === "`") { - start = this._current; - var literal = this._consumeLiteral(stream); - tokens.push({type: TOK_LITERAL, - value: literal, - start: start}); - } else if (operatorStartToken[stream[this._current]] !== undefined) { - tokens.push(this._consumeOperator(stream)); - } else if (skipChars[stream[this._current]] !== undefined) { - // Ignore whitespace. - this._current++; - } else if (stream[this._current] === "&") { - start = this._current; - this._current++; - if (stream[this._current] === "&") { - this._current++; - tokens.push({type: TOK_AND, value: "&&", start: start}); - } else { - tokens.push({type: TOK_EXPREF, value: "&", start: start}); - } - } else if (stream[this._current] === "|") { - start = this._current; - this._current++; - if (stream[this._current] === "|") { - this._current++; - tokens.push({type: TOK_OR, value: "||", start: start}); - } else { - tokens.push({type: TOK_PIPE, value: "|", start: start}); - } - } else { - var error = new Error("Unknown character:" + stream[this._current]); - error.name = "LexerError"; - throw error; - } - } - return tokens; - }, - - _consumeUnquotedIdentifier: function(stream) { - var start = this._current; - this._current++; - while (this._current < stream.length && isAlphaNum(stream[this._current])) { - this._current++; - } - return stream.slice(start, this._current); - }, - - _consumeQuotedIdentifier: function(stream) { - var start = this._current; - this._current++; - var maxLength = stream.length; - while (stream[this._current] !== "\"" && this._current < maxLength) { - // You can escape a double quote and you can escape an escape. - var current = this._current; - if (stream[current] === "\\" && (stream[current + 1] === "\\" || - stream[current + 1] === "\"")) { - current += 2; - } else { - current++; - } - this._current = current; - } - this._current++; - return JSON.parse(stream.slice(start, this._current)); - }, - - _consumeRawStringLiteral: function(stream) { - var start = this._current; - this._current++; - var maxLength = stream.length; - while (stream[this._current] !== "'" && this._current < maxLength) { - // You can escape a single quote and you can escape an escape. - var current = this._current; - if (stream[current] === "\\" && (stream[current + 1] === "\\" || - stream[current + 1] === "'")) { - current += 2; - } else { - current++; - } - this._current = current; - } - this._current++; - var literal = stream.slice(start + 1, this._current - 1); - return literal.replace("\\'", "'"); - }, - - _consumeNumber: function(stream) { - var start = this._current; - this._current++; - var maxLength = stream.length; - while (isNum(stream[this._current]) && this._current < maxLength) { - this._current++; - } - var value = parseInt(stream.slice(start, this._current)); - return {type: TOK_NUMBER, value: value, start: start}; - }, - - _consumeLBracket: function(stream) { - var start = this._current; - this._current++; - if (stream[this._current] === "?") { - this._current++; - return {type: TOK_FILTER, value: "[?", start: start}; - } else if (stream[this._current] === "]") { - this._current++; - return {type: TOK_FLATTEN, value: "[]", start: start}; - } else { - return {type: TOK_LBRACKET, value: "[", start: start}; - } - }, - - _consumeOperator: function(stream) { - var start = this._current; - var startingChar = stream[start]; - this._current++; - if (startingChar === "!") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_NE, value: "!=", start: start}; - } else { - return {type: TOK_NOT, value: "!", start: start}; - } - } else if (startingChar === "<") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_LTE, value: "<=", start: start}; - } else { - return {type: TOK_LT, value: "<", start: start}; - } - } else if (startingChar === ">") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_GTE, value: ">=", start: start}; - } else { - return {type: TOK_GT, value: ">", start: start}; - } - } else if (startingChar === "=") { - if (stream[this._current] === "=") { - this._current++; - return {type: TOK_EQ, value: "==", start: start}; - } - } - }, - - _consumeLiteral: function(stream) { - this._current++; - var start = this._current; - var maxLength = stream.length; - var literal; - while(stream[this._current] !== "`" && this._current < maxLength) { - // You can escape a literal char or you can escape the escape. - var current = this._current; - if (stream[current] === "\\" && (stream[current + 1] === "\\" || - stream[current + 1] === "`")) { - current += 2; - } else { - current++; - } - this._current = current; - } - var literalString = trimLeft(stream.slice(start, this._current)); - literalString = literalString.replace("\\`", "`"); - if (this._looksLikeJSON(literalString)) { - literal = JSON.parse(literalString); - } else { - // Try to JSON parse it as "" - literal = JSON.parse("\"" + literalString + "\""); - } - // +1 gets us to the ending "`", +1 to move on to the next char. - this._current++; - return literal; - }, - - _looksLikeJSON: function(literalString) { - var startingChars = "[{\""; - var jsonLiterals = ["true", "false", "null"]; - var numberLooking = "-0123456789"; - - if (literalString === "") { - return false; - } else if (startingChars.indexOf(literalString[0]) >= 0) { - return true; - } else if (jsonLiterals.indexOf(literalString) >= 0) { - return true; - } else if (numberLooking.indexOf(literalString[0]) >= 0) { - try { - JSON.parse(literalString); - return true; - } catch (ex) { - return false; - } - } else { - return false; - } - } - }; - - var bindingPower = {}; - bindingPower[TOK_EOF] = 0; - bindingPower[TOK_UNQUOTEDIDENTIFIER] = 0; - bindingPower[TOK_QUOTEDIDENTIFIER] = 0; - bindingPower[TOK_RBRACKET] = 0; - bindingPower[TOK_RPAREN] = 0; - bindingPower[TOK_COMMA] = 0; - bindingPower[TOK_RBRACE] = 0; - bindingPower[TOK_NUMBER] = 0; - bindingPower[TOK_CURRENT] = 0; - bindingPower[TOK_EXPREF] = 0; - bindingPower[TOK_PIPE] = 1; - bindingPower[TOK_OR] = 2; - bindingPower[TOK_AND] = 3; - bindingPower[TOK_EQ] = 5; - bindingPower[TOK_GT] = 5; - bindingPower[TOK_LT] = 5; - bindingPower[TOK_GTE] = 5; - bindingPower[TOK_LTE] = 5; - bindingPower[TOK_NE] = 5; - bindingPower[TOK_FLATTEN] = 9; - bindingPower[TOK_STAR] = 20; - bindingPower[TOK_FILTER] = 21; - bindingPower[TOK_DOT] = 40; - bindingPower[TOK_NOT] = 45; - bindingPower[TOK_LBRACE] = 50; - bindingPower[TOK_LBRACKET] = 55; - bindingPower[TOK_LPAREN] = 60; - - function Parser() { - } - - Parser.prototype = { - parse: function(expression) { - this._loadTokens(expression); - this.index = 0; - var ast = this.expression(0); - if (this._lookahead(0) !== TOK_EOF) { - var t = this._lookaheadToken(0); - var error = new Error( - "Unexpected token type: " + t.type + ", value: " + t.value); - error.name = "ParserError"; - throw error; - } - return ast; - }, - - _loadTokens: function(expression) { - var lexer = new Lexer(); - var tokens = lexer.tokenize(expression); - tokens.push({type: TOK_EOF, value: "", start: expression.length}); - this.tokens = tokens; - }, - - expression: function(rbp) { - var leftToken = this._lookaheadToken(0); - this._advance(); - var left = this.nud(leftToken); - var currentToken = this._lookahead(0); - while (rbp < bindingPower[currentToken]) { - this._advance(); - left = this.led(currentToken, left); - currentToken = this._lookahead(0); - } - return left; - }, - - _lookahead: function(number) { - return this.tokens[this.index + number].type; - }, - - _lookaheadToken: function(number) { - return this.tokens[this.index + number]; - }, - - _advance: function() { - this.index++; - }, - - nud: function(token) { - var left; - var right; - var expression; - switch (token.type) { - case TOK_LITERAL: - return {type: "Literal", value: token.value}; - case TOK_UNQUOTEDIDENTIFIER: - return {type: "Field", name: token.value}; - case TOK_QUOTEDIDENTIFIER: - var node = {type: "Field", name: token.value}; - if (this._lookahead(0) === TOK_LPAREN) { - throw new Error("Quoted identifier not allowed for function names."); - } else { - return node; - } - break; - case TOK_NOT: - right = this.expression(bindingPower.Not); - return {type: "NotExpression", children: [right]}; - case TOK_STAR: - left = {type: "Identity"}; - right = null; - if (this._lookahead(0) === TOK_RBRACKET) { - // This can happen in a multiselect, - // [a, b, *] - right = {type: "Identity"}; - } else { - right = this._parseProjectionRHS(bindingPower.Star); - } - return {type: "ValueProjection", children: [left, right]}; - case TOK_FILTER: - return this.led(token.type, {type: "Identity"}); - case TOK_LBRACE: - return this._parseMultiselectHash(); - case TOK_FLATTEN: - left = {type: TOK_FLATTEN, children: [{type: "Identity"}]}; - right = this._parseProjectionRHS(bindingPower.Flatten); - return {type: "Projection", children: [left, right]}; - case TOK_LBRACKET: - if (this._lookahead(0) === TOK_NUMBER || this._lookahead(0) === TOK_COLON) { - right = this._parseIndexExpression(); - return this._projectIfSlice({type: "Identity"}, right); - } else if (this._lookahead(0) === TOK_STAR && - this._lookahead(1) === TOK_RBRACKET) { - this._advance(); - this._advance(); - right = this._parseProjectionRHS(bindingPower.Star); - return {type: "Projection", - children: [{type: "Identity"}, right]}; - } else { - return this._parseMultiselectList(); - } - break; - case TOK_CURRENT: - return {type: TOK_CURRENT}; - case TOK_EXPREF: - expression = this.expression(bindingPower.Expref); - return {type: "ExpressionReference", children: [expression]}; - case TOK_LPAREN: - var args = []; - while (this._lookahead(0) !== TOK_RPAREN) { - if (this._lookahead(0) === TOK_CURRENT) { - expression = {type: TOK_CURRENT}; - this._advance(); - } else { - expression = this.expression(0); - } - args.push(expression); - } - this._match(TOK_RPAREN); - return args[0]; - default: - this._errorToken(token); - } - }, - - led: function(tokenName, left) { - var right; - switch(tokenName) { - case TOK_DOT: - var rbp = bindingPower.Dot; - if (this._lookahead(0) !== TOK_STAR) { - right = this._parseDotRHS(rbp); - return {type: "Subexpression", children: [left, right]}; - } else { - // Creating a projection. - this._advance(); - right = this._parseProjectionRHS(rbp); - return {type: "ValueProjection", children: [left, right]}; - } - break; - case TOK_PIPE: - right = this.expression(bindingPower.Pipe); - return {type: TOK_PIPE, children: [left, right]}; - case TOK_OR: - right = this.expression(bindingPower.Or); - return {type: "OrExpression", children: [left, right]}; - case TOK_AND: - right = this.expression(bindingPower.And); - return {type: "AndExpression", children: [left, right]}; - case TOK_LPAREN: - var name = left.name; - var args = []; - var expression, node; - while (this._lookahead(0) !== TOK_RPAREN) { - if (this._lookahead(0) === TOK_CURRENT) { - expression = {type: TOK_CURRENT}; - this._advance(); - } else { - expression = this.expression(0); - } - if (this._lookahead(0) === TOK_COMMA) { - this._match(TOK_COMMA); - } - args.push(expression); - } - this._match(TOK_RPAREN); - node = {type: "Function", name: name, children: args}; - return node; - case TOK_FILTER: - var condition = this.expression(0); - this._match(TOK_RBRACKET); - if (this._lookahead(0) === TOK_FLATTEN) { - right = {type: "Identity"}; - } else { - right = this._parseProjectionRHS(bindingPower.Filter); - } - return {type: "FilterProjection", children: [left, right, condition]}; - case TOK_FLATTEN: - var leftNode = {type: TOK_FLATTEN, children: [left]}; - var rightNode = this._parseProjectionRHS(bindingPower.Flatten); - return {type: "Projection", children: [leftNode, rightNode]}; - case TOK_EQ: - case TOK_NE: - case TOK_GT: - case TOK_GTE: - case TOK_LT: - case TOK_LTE: - return this._parseComparator(left, tokenName); - case TOK_LBRACKET: - var token = this._lookaheadToken(0); - if (token.type === TOK_NUMBER || token.type === TOK_COLON) { - right = this._parseIndexExpression(); - return this._projectIfSlice(left, right); - } else { - this._match(TOK_STAR); - this._match(TOK_RBRACKET); - right = this._parseProjectionRHS(bindingPower.Star); - return {type: "Projection", children: [left, right]}; - } - break; - default: - this._errorToken(this._lookaheadToken(0)); - } - }, - - _match: function(tokenType) { - if (this._lookahead(0) === tokenType) { - this._advance(); - } else { - var t = this._lookaheadToken(0); - var error = new Error("Expected " + tokenType + ", got: " + t.type); - error.name = "ParserError"; - throw error; - } - }, - - _errorToken: function(token) { - var error = new Error("Invalid token (" + - token.type + "): \"" + - token.value + "\""); - error.name = "ParserError"; - throw error; - }, - - - _parseIndexExpression: function() { - if (this._lookahead(0) === TOK_COLON || this._lookahead(1) === TOK_COLON) { - return this._parseSliceExpression(); - } else { - var node = { - type: "Index", - value: this._lookaheadToken(0).value}; - this._advance(); - this._match(TOK_RBRACKET); - return node; - } - }, - - _projectIfSlice: function(left, right) { - var indexExpr = {type: "IndexExpression", children: [left, right]}; - if (right.type === "Slice") { - return { - type: "Projection", - children: [indexExpr, this._parseProjectionRHS(bindingPower.Star)] - }; - } else { - return indexExpr; - } - }, - - _parseSliceExpression: function() { - // [start:end:step] where each part is optional, as well as the last - // colon. - var parts = [null, null, null]; - var index = 0; - var currentToken = this._lookahead(0); - while (currentToken !== TOK_RBRACKET && index < 3) { - if (currentToken === TOK_COLON) { - index++; - this._advance(); - } else if (currentToken === TOK_NUMBER) { - parts[index] = this._lookaheadToken(0).value; - this._advance(); - } else { - var t = this._lookahead(0); - var error = new Error("Syntax error, unexpected token: " + - t.value + "(" + t.type + ")"); - error.name = "Parsererror"; - throw error; - } - currentToken = this._lookahead(0); - } - this._match(TOK_RBRACKET); - return { - type: "Slice", - children: parts - }; - }, - - _parseComparator: function(left, comparator) { - var right = this.expression(bindingPower[comparator]); - return {type: "Comparator", name: comparator, children: [left, right]}; - }, - - _parseDotRHS: function(rbp) { - var lookahead = this._lookahead(0); - var exprTokens = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER, TOK_STAR]; - if (exprTokens.indexOf(lookahead) >= 0) { - return this.expression(rbp); - } else if (lookahead === TOK_LBRACKET) { - this._match(TOK_LBRACKET); - return this._parseMultiselectList(); - } else if (lookahead === TOK_LBRACE) { - this._match(TOK_LBRACE); - return this._parseMultiselectHash(); - } - }, - - _parseProjectionRHS: function(rbp) { - var right; - if (bindingPower[this._lookahead(0)] < 10) { - right = {type: "Identity"}; - } else if (this._lookahead(0) === TOK_LBRACKET) { - right = this.expression(rbp); - } else if (this._lookahead(0) === TOK_FILTER) { - right = this.expression(rbp); - } else if (this._lookahead(0) === TOK_DOT) { - this._match(TOK_DOT); - right = this._parseDotRHS(rbp); - } else { - var t = this._lookaheadToken(0); - var error = new Error("Sytanx error, unexpected token: " + - t.value + "(" + t.type + ")"); - error.name = "ParserError"; - throw error; - } - return right; - }, - - _parseMultiselectList: function() { - var expressions = []; - while (this._lookahead(0) !== TOK_RBRACKET) { - var expression = this.expression(0); - expressions.push(expression); - if (this._lookahead(0) === TOK_COMMA) { - this._match(TOK_COMMA); - if (this._lookahead(0) === TOK_RBRACKET) { - throw new Error("Unexpected token Rbracket"); - } - } - } - this._match(TOK_RBRACKET); - return {type: "MultiSelectList", children: expressions}; - }, - - _parseMultiselectHash: function() { - var pairs = []; - var identifierTypes = [TOK_UNQUOTEDIDENTIFIER, TOK_QUOTEDIDENTIFIER]; - var keyToken, keyName, value, node; - for (;;) { - keyToken = this._lookaheadToken(0); - if (identifierTypes.indexOf(keyToken.type) < 0) { - throw new Error("Expecting an identifier token, got: " + - keyToken.type); - } - keyName = keyToken.value; - this._advance(); - this._match(TOK_COLON); - value = this.expression(0); - node = {type: "KeyValuePair", name: keyName, value: value}; - pairs.push(node); - if (this._lookahead(0) === TOK_COMMA) { - this._match(TOK_COMMA); - } else if (this._lookahead(0) === TOK_RBRACE) { - this._match(TOK_RBRACE); - break; - } - } - return {type: "MultiSelectHash", children: pairs}; - } - }; - - - function TreeInterpreter(runtime) { - this.runtime = runtime; - } - - TreeInterpreter.prototype = { - search: function(node, value) { - return this.visit(node, value); - }, - - visit: function(node, value) { - var matched, current, result, first, second, field, left, right, collected, i; - switch (node.type) { - case "Field": - if (value === null ) { - return null; - } else if (isObject(value)) { - field = value[node.name]; - if (field === undefined) { - return null; - } else { - return field; - } - } else { - return null; - } - break; - case "Subexpression": - result = this.visit(node.children[0], value); - for (i = 1; i < node.children.length; i++) { - result = this.visit(node.children[1], result); - if (result === null) { - return null; - } - } - return result; - case "IndexExpression": - left = this.visit(node.children[0], value); - right = this.visit(node.children[1], left); - return right; - case "Index": - if (!isArray(value)) { - return null; - } - var index = node.value; - if (index < 0) { - index = value.length + index; - } - result = value[index]; - if (result === undefined) { - result = null; - } - return result; - case "Slice": - if (!isArray(value)) { - return null; - } - var sliceParams = node.children.slice(0); - var computed = this.computeSliceParams(value.length, sliceParams); - var start = computed[0]; - var stop = computed[1]; - var step = computed[2]; - result = []; - if (step > 0) { - for (i = start; i < stop; i += step) { - result.push(value[i]); - } - } else { - for (i = start; i > stop; i += step) { - result.push(value[i]); - } - } - return result; - case "Projection": - // Evaluate left child. - var base = this.visit(node.children[0], value); - if (!isArray(base)) { - return null; - } - collected = []; - for (i = 0; i < base.length; i++) { - current = this.visit(node.children[1], base[i]); - if (current !== null) { - collected.push(current); - } - } - return collected; - case "ValueProjection": - // Evaluate left child. - base = this.visit(node.children[0], value); - if (!isObject(base)) { - return null; - } - collected = []; - var values = objValues(base); - for (i = 0; i < values.length; i++) { - current = this.visit(node.children[1], values[i]); - if (current !== null) { - collected.push(current); - } - } - return collected; - case "FilterProjection": - base = this.visit(node.children[0], value); - if (!isArray(base)) { - return null; - } - var filtered = []; - var finalResults = []; - for (i = 0; i < base.length; i++) { - matched = this.visit(node.children[2], base[i]); - if (!isFalse(matched)) { - filtered.push(base[i]); - } - } - for (var j = 0; j < filtered.length; j++) { - current = this.visit(node.children[1], filtered[j]); - if (current !== null) { - finalResults.push(current); - } - } - return finalResults; - case "Comparator": - first = this.visit(node.children[0], value); - second = this.visit(node.children[1], value); - switch(node.name) { - case TOK_EQ: - result = strictDeepEqual(first, second); - break; - case TOK_NE: - result = !strictDeepEqual(first, second); - break; - case TOK_GT: - result = first > second; - break; - case TOK_GTE: - result = first >= second; - break; - case TOK_LT: - result = first < second; - break; - case TOK_LTE: - result = first <= second; - break; - default: - throw new Error("Unknown comparator: " + node.name); - } - return result; - case TOK_FLATTEN: - var original = this.visit(node.children[0], value); - if (!isArray(original)) { - return null; - } - var merged = []; - for (i = 0; i < original.length; i++) { - current = original[i]; - if (isArray(current)) { - merged.push.apply(merged, current); - } else { - merged.push(current); - } - } - return merged; - case "Identity": - return value; - case "MultiSelectList": - if (value === null) { - return null; - } - collected = []; - for (i = 0; i < node.children.length; i++) { - collected.push(this.visit(node.children[i], value)); - } - return collected; - case "MultiSelectHash": - if (value === null) { - return null; - } - collected = {}; - var child; - for (i = 0; i < node.children.length; i++) { - child = node.children[i]; - collected[child.name] = this.visit(child.value, value); - } - return collected; - case "OrExpression": - matched = this.visit(node.children[0], value); - if (isFalse(matched)) { - matched = this.visit(node.children[1], value); - } - return matched; - case "AndExpression": - first = this.visit(node.children[0], value); - - if (isFalse(first) === true) { - return first; - } - return this.visit(node.children[1], value); - case "NotExpression": - first = this.visit(node.children[0], value); - return isFalse(first); - case "Literal": - return node.value; - case TOK_PIPE: - left = this.visit(node.children[0], value); - return this.visit(node.children[1], left); - case TOK_CURRENT: - return value; - case "Function": - var resolvedArgs = []; - for (i = 0; i < node.children.length; i++) { - resolvedArgs.push(this.visit(node.children[i], value)); - } - return this.runtime.callFunction(node.name, resolvedArgs); - case "ExpressionReference": - var refNode = node.children[0]; - // Tag the node with a specific attribute so the type - // checker verify the type. - refNode.jmespathType = TOK_EXPREF; - return refNode; - default: - throw new Error("Unknown node type: " + node.type); - } - }, - - computeSliceParams: function(arrayLength, sliceParams) { - var start = sliceParams[0]; - var stop = sliceParams[1]; - var step = sliceParams[2]; - var computed = [null, null, null]; - if (step === null) { - step = 1; - } else if (step === 0) { - var error = new Error("Invalid slice, step cannot be 0"); - error.name = "RuntimeError"; - throw error; - } - var stepValueNegative = step < 0 ? true : false; - - if (start === null) { - start = stepValueNegative ? arrayLength - 1 : 0; - } else { - start = this.capSliceRange(arrayLength, start, step); - } - - if (stop === null) { - stop = stepValueNegative ? -1 : arrayLength; - } else { - stop = this.capSliceRange(arrayLength, stop, step); - } - computed[0] = start; - computed[1] = stop; - computed[2] = step; - return computed; - }, - - capSliceRange: function(arrayLength, actualValue, step) { - if (actualValue < 0) { - actualValue += arrayLength; - if (actualValue < 0) { - actualValue = step < 0 ? -1 : 0; - } - } else if (actualValue >= arrayLength) { - actualValue = step < 0 ? arrayLength - 1 : arrayLength; - } - return actualValue; - } - - }; - - function Runtime(interpreter) { - this._interpreter = interpreter; - this.functionTable = { - // name: [function, ] - // The can be: - // - // { - // args: [[type1, type2], [type1, type2]], - // variadic: true|false - // } - // - // Each arg in the arg list is a list of valid types - // (if the function is overloaded and supports multiple - // types. If the type is "any" then no type checking - // occurs on the argument. Variadic is optional - // and if not provided is assumed to be false. - abs: {_func: this._functionAbs, _signature: [{types: [TYPE_NUMBER]}]}, - avg: {_func: this._functionAvg, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, - ceil: {_func: this._functionCeil, _signature: [{types: [TYPE_NUMBER]}]}, - contains: { - _func: this._functionContains, - _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}, - {types: [TYPE_ANY]}]}, - "ends_with": { - _func: this._functionEndsWith, - _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, - floor: {_func: this._functionFloor, _signature: [{types: [TYPE_NUMBER]}]}, - length: { - _func: this._functionLength, - _signature: [{types: [TYPE_STRING, TYPE_ARRAY, TYPE_OBJECT]}]}, - map: { - _func: this._functionMap, - _signature: [{types: [TYPE_EXPREF]}, {types: [TYPE_ARRAY]}]}, - max: { - _func: this._functionMax, - _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, - "merge": { - _func: this._functionMerge, - _signature: [{types: [TYPE_OBJECT], variadic: true}] - }, - "max_by": { - _func: this._functionMaxBy, - _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] - }, - sum: {_func: this._functionSum, _signature: [{types: [TYPE_ARRAY_NUMBER]}]}, - "starts_with": { - _func: this._functionStartsWith, - _signature: [{types: [TYPE_STRING]}, {types: [TYPE_STRING]}]}, - min: { - _func: this._functionMin, - _signature: [{types: [TYPE_ARRAY_NUMBER, TYPE_ARRAY_STRING]}]}, - "min_by": { - _func: this._functionMinBy, - _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] - }, - type: {_func: this._functionType, _signature: [{types: [TYPE_ANY]}]}, - keys: {_func: this._functionKeys, _signature: [{types: [TYPE_OBJECT]}]}, - values: {_func: this._functionValues, _signature: [{types: [TYPE_OBJECT]}]}, - sort: {_func: this._functionSort, _signature: [{types: [TYPE_ARRAY_STRING, TYPE_ARRAY_NUMBER]}]}, - "sort_by": { - _func: this._functionSortBy, - _signature: [{types: [TYPE_ARRAY]}, {types: [TYPE_EXPREF]}] - }, - join: { - _func: this._functionJoin, - _signature: [ - {types: [TYPE_STRING]}, - {types: [TYPE_ARRAY_STRING]} - ] - }, - reverse: { - _func: this._functionReverse, - _signature: [{types: [TYPE_STRING, TYPE_ARRAY]}]}, - "to_array": {_func: this._functionToArray, _signature: [{types: [TYPE_ANY]}]}, - "to_string": {_func: this._functionToString, _signature: [{types: [TYPE_ANY]}]}, - "to_number": {_func: this._functionToNumber, _signature: [{types: [TYPE_ANY]}]}, - "not_null": { - _func: this._functionNotNull, - _signature: [{types: [TYPE_ANY], variadic: true}] - } - }; - } - - Runtime.prototype = { - callFunction: function(name, resolvedArgs) { - var functionEntry = this.functionTable[name]; - if (functionEntry === undefined) { - throw new Error("Unknown function: " + name + "()"); - } - this._validateArgs(name, resolvedArgs, functionEntry._signature); - return functionEntry._func.call(this, resolvedArgs); - }, - - _validateArgs: function(name, args, signature) { - // Validating the args requires validating - // the correct arity and the correct type of each arg. - // If the last argument is declared as variadic, then we need - // a minimum number of args to be required. Otherwise it has to - // be an exact amount. - var pluralized; - if (signature[signature.length - 1].variadic) { - if (args.length < signature.length) { - pluralized = signature.length === 1 ? " argument" : " arguments"; - throw new Error("ArgumentError: " + name + "() " + - "takes at least" + signature.length + pluralized + - " but received " + args.length); - } - } else if (args.length !== signature.length) { - pluralized = signature.length === 1 ? " argument" : " arguments"; - throw new Error("ArgumentError: " + name + "() " + - "takes " + signature.length + pluralized + - " but received " + args.length); - } - var currentSpec; - var actualType; - var typeMatched; - for (var i = 0; i < signature.length; i++) { - typeMatched = false; - currentSpec = signature[i].types; - actualType = this._getTypeName(args[i]); - for (var j = 0; j < currentSpec.length; j++) { - if (this._typeMatches(actualType, currentSpec[j], args[i])) { - typeMatched = true; - break; - } - } - if (!typeMatched) { - throw new Error("TypeError: " + name + "() " + - "expected argument " + (i + 1) + - " to be type " + currentSpec + - " but received type " + actualType + - " instead."); - } - } - }, - - _typeMatches: function(actual, expected, argValue) { - if (expected === TYPE_ANY) { - return true; - } - if (expected === TYPE_ARRAY_STRING || - expected === TYPE_ARRAY_NUMBER || - expected === TYPE_ARRAY) { - // The expected type can either just be array, - // or it can require a specific subtype (array of numbers). - // - // The simplest case is if "array" with no subtype is specified. - if (expected === TYPE_ARRAY) { - return actual === TYPE_ARRAY; - } else if (actual === TYPE_ARRAY) { - // Otherwise we need to check subtypes. - // I think this has potential to be improved. - var subtype; - if (expected === TYPE_ARRAY_NUMBER) { - subtype = TYPE_NUMBER; - } else if (expected === TYPE_ARRAY_STRING) { - subtype = TYPE_STRING; - } - for (var i = 0; i < argValue.length; i++) { - if (!this._typeMatches( - this._getTypeName(argValue[i]), subtype, - argValue[i])) { - return false; - } - } - return true; - } - } else { - return actual === expected; - } - }, - _getTypeName: function(obj) { - switch (Object.prototype.toString.call(obj)) { - case "[object String]": - return TYPE_STRING; - case "[object Number]": - return TYPE_NUMBER; - case "[object Array]": - return TYPE_ARRAY; - case "[object Boolean]": - return TYPE_BOOLEAN; - case "[object Null]": - return TYPE_NULL; - case "[object Object]": - // Check if it's an expref. If it has, it's been - // tagged with a jmespathType attr of 'Expref'; - if (obj.jmespathType === TOK_EXPREF) { - return TYPE_EXPREF; - } else { - return TYPE_OBJECT; - } - } - }, - - _functionStartsWith: function(resolvedArgs) { - return resolvedArgs[0].lastIndexOf(resolvedArgs[1]) === 0; - }, - - _functionEndsWith: function(resolvedArgs) { - var searchStr = resolvedArgs[0]; - var suffix = resolvedArgs[1]; - return searchStr.indexOf(suffix, searchStr.length - suffix.length) !== -1; - }, - - _functionReverse: function(resolvedArgs) { - var typeName = this._getTypeName(resolvedArgs[0]); - if (typeName === TYPE_STRING) { - var originalStr = resolvedArgs[0]; - var reversedStr = ""; - for (var i = originalStr.length - 1; i >= 0; i--) { - reversedStr += originalStr[i]; - } - return reversedStr; - } else { - var reversedArray = resolvedArgs[0].slice(0); - reversedArray.reverse(); - return reversedArray; - } - }, - - _functionAbs: function(resolvedArgs) { - return Math.abs(resolvedArgs[0]); - }, - - _functionCeil: function(resolvedArgs) { - return Math.ceil(resolvedArgs[0]); - }, - - _functionAvg: function(resolvedArgs) { - var sum = 0; - var inputArray = resolvedArgs[0]; - for (var i = 0; i < inputArray.length; i++) { - sum += inputArray[i]; - } - return sum / inputArray.length; - }, - - _functionContains: function(resolvedArgs) { - return resolvedArgs[0].indexOf(resolvedArgs[1]) >= 0; - }, - - _functionFloor: function(resolvedArgs) { - return Math.floor(resolvedArgs[0]); - }, - - _functionLength: function(resolvedArgs) { - if (!isObject(resolvedArgs[0])) { - return resolvedArgs[0].length; - } else { - // As far as I can tell, there's no way to get the length - // of an object without O(n) iteration through the object. - return Object.keys(resolvedArgs[0]).length; - } - }, - - _functionMap: function(resolvedArgs) { - var mapped = []; - var interpreter = this._interpreter; - var exprefNode = resolvedArgs[0]; - var elements = resolvedArgs[1]; - for (var i = 0; i < elements.length; i++) { - mapped.push(interpreter.visit(exprefNode, elements[i])); - } - return mapped; - }, - - _functionMerge: function(resolvedArgs) { - var merged = {}; - for (var i = 0; i < resolvedArgs.length; i++) { - var current = resolvedArgs[i]; - for (var key in current) { - merged[key] = current[key]; - } - } - return merged; - }, - - _functionMax: function(resolvedArgs) { - if (resolvedArgs[0].length > 0) { - var typeName = this._getTypeName(resolvedArgs[0][0]); - if (typeName === TYPE_NUMBER) { - return Math.max.apply(Math, resolvedArgs[0]); - } else { - var elements = resolvedArgs[0]; - var maxElement = elements[0]; - for (var i = 1; i < elements.length; i++) { - if (maxElement.localeCompare(elements[i]) < 0) { - maxElement = elements[i]; - } - } - return maxElement; - } - } else { - return null; - } - }, - - _functionMin: function(resolvedArgs) { - if (resolvedArgs[0].length > 0) { - var typeName = this._getTypeName(resolvedArgs[0][0]); - if (typeName === TYPE_NUMBER) { - return Math.min.apply(Math, resolvedArgs[0]); - } else { - var elements = resolvedArgs[0]; - var minElement = elements[0]; - for (var i = 1; i < elements.length; i++) { - if (elements[i].localeCompare(minElement) < 0) { - minElement = elements[i]; - } - } - return minElement; - } - } else { - return null; - } - }, - - _functionSum: function(resolvedArgs) { - var sum = 0; - var listToSum = resolvedArgs[0]; - for (var i = 0; i < listToSum.length; i++) { - sum += listToSum[i]; - } - return sum; - }, - - _functionType: function(resolvedArgs) { - switch (this._getTypeName(resolvedArgs[0])) { - case TYPE_NUMBER: - return "number"; - case TYPE_STRING: - return "string"; - case TYPE_ARRAY: - return "array"; - case TYPE_OBJECT: - return "object"; - case TYPE_BOOLEAN: - return "boolean"; - case TYPE_EXPREF: - return "expref"; - case TYPE_NULL: - return "null"; - } - }, - - _functionKeys: function(resolvedArgs) { - return Object.keys(resolvedArgs[0]); - }, - - _functionValues: function(resolvedArgs) { - var obj = resolvedArgs[0]; - var keys = Object.keys(obj); - var values = []; - for (var i = 0; i < keys.length; i++) { - values.push(obj[keys[i]]); - } - return values; - }, - - _functionJoin: function(resolvedArgs) { - var joinChar = resolvedArgs[0]; - var listJoin = resolvedArgs[1]; - return listJoin.join(joinChar); - }, - - _functionToArray: function(resolvedArgs) { - if (this._getTypeName(resolvedArgs[0]) === TYPE_ARRAY) { - return resolvedArgs[0]; - } else { - return [resolvedArgs[0]]; - } - }, - - _functionToString: function(resolvedArgs) { - if (this._getTypeName(resolvedArgs[0]) === TYPE_STRING) { - return resolvedArgs[0]; - } else { - return JSON.stringify(resolvedArgs[0]); - } - }, - - _functionToNumber: function(resolvedArgs) { - var typeName = this._getTypeName(resolvedArgs[0]); - var convertedValue; - if (typeName === TYPE_NUMBER) { - return resolvedArgs[0]; - } else if (typeName === TYPE_STRING) { - convertedValue = +resolvedArgs[0]; - if (!isNaN(convertedValue)) { - return convertedValue; - } - } - return null; - }, - - _functionNotNull: function(resolvedArgs) { - for (var i = 0; i < resolvedArgs.length; i++) { - if (this._getTypeName(resolvedArgs[i]) !== TYPE_NULL) { - return resolvedArgs[i]; - } - } - return null; - }, - - _functionSort: function(resolvedArgs) { - var sortedArray = resolvedArgs[0].slice(0); - sortedArray.sort(); - return sortedArray; - }, - - _functionSortBy: function(resolvedArgs) { - var sortedArray = resolvedArgs[0].slice(0); - if (sortedArray.length === 0) { - return sortedArray; - } - var interpreter = this._interpreter; - var exprefNode = resolvedArgs[1]; - var requiredType = this._getTypeName( - interpreter.visit(exprefNode, sortedArray[0])); - if ([TYPE_NUMBER, TYPE_STRING].indexOf(requiredType) < 0) { - throw new Error("TypeError"); - } - var that = this; - // In order to get a stable sort out of an unstable - // sort algorithm, we decorate/sort/undecorate (DSU) - // by creating a new list of [index, element] pairs. - // In the cmp function, if the evaluated elements are - // equal, then the index will be used as the tiebreaker. - // After the decorated list has been sorted, it will be - // undecorated to extract the original elements. - var decorated = []; - for (var i = 0; i < sortedArray.length; i++) { - decorated.push([i, sortedArray[i]]); - } - decorated.sort(function(a, b) { - var exprA = interpreter.visit(exprefNode, a[1]); - var exprB = interpreter.visit(exprefNode, b[1]); - if (that._getTypeName(exprA) !== requiredType) { - throw new Error( - "TypeError: expected " + requiredType + ", received " + - that._getTypeName(exprA)); - } else if (that._getTypeName(exprB) !== requiredType) { - throw new Error( - "TypeError: expected " + requiredType + ", received " + - that._getTypeName(exprB)); - } - if (exprA > exprB) { - return 1; - } else if (exprA < exprB) { - return -1; - } else { - // If they're equal compare the items by their - // order to maintain relative order of equal keys - // (i.e. to get a stable sort). - return a[0] - b[0]; - } - }); - // Undecorate: extract out the original list elements. - for (var j = 0; j < decorated.length; j++) { - sortedArray[j] = decorated[j][1]; - } - return sortedArray; - }, - - _functionMaxBy: function(resolvedArgs) { - var exprefNode = resolvedArgs[1]; - var resolvedArray = resolvedArgs[0]; - var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); - var maxNumber = -Infinity; - var maxRecord; - var current; - for (var i = 0; i < resolvedArray.length; i++) { - current = keyFunction(resolvedArray[i]); - if (current > maxNumber) { - maxNumber = current; - maxRecord = resolvedArray[i]; - } - } - return maxRecord; - }, - - _functionMinBy: function(resolvedArgs) { - var exprefNode = resolvedArgs[1]; - var resolvedArray = resolvedArgs[0]; - var keyFunction = this.createKeyFunction(exprefNode, [TYPE_NUMBER, TYPE_STRING]); - var minNumber = Infinity; - var minRecord; - var current; - for (var i = 0; i < resolvedArray.length; i++) { - current = keyFunction(resolvedArray[i]); - if (current < minNumber) { - minNumber = current; - minRecord = resolvedArray[i]; - } - } - return minRecord; - }, - - createKeyFunction: function(exprefNode, allowedTypes) { - var that = this; - var interpreter = this._interpreter; - var keyFunc = function(x) { - var current = interpreter.visit(exprefNode, x); - if (allowedTypes.indexOf(that._getTypeName(current)) < 0) { - var msg = "TypeError: expected one of " + allowedTypes + - ", received " + that._getTypeName(current); - throw new Error(msg); - } - return current; - }; - return keyFunc; - } - - }; - - function compile(stream) { - var parser = new Parser(); - var ast = parser.parse(stream); - return ast; - } - - function tokenize(stream) { - var lexer = new Lexer(); - return lexer.tokenize(stream); - } - - function search(data, expression) { - var parser = new Parser(); - // This needs to be improved. Both the interpreter and runtime depend on - // each other. The runtime needs the interpreter to support exprefs. - // There's likely a clean way to avoid the cyclic dependency. - var runtime = new Runtime(); - var interpreter = new TreeInterpreter(runtime); - runtime._interpreter = interpreter; - var node = parser.parse(expression); - return interpreter.search(node, data); - } - - exports.tokenize = tokenize; - exports.compile = compile; - exports.search = search; - exports.strictDeepEqual = strictDeepEqual; -})(typeof exports === "undefined" ? this.jmespath = {} : exports); diff --git a/node_modules/aws-sdk/node_modules/jmespath/jp.js b/node_modules/aws-sdk/node_modules/jmespath/jp.js deleted file mode 100755 index c152108..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/jp.js +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env node -jmespath = require('./jmespath'); - -process.stdin.setEncoding('utf-8'); - - -if (process.argv.length < 2) { - console.log("Must provide a jmespath expression."); - process.exit(1); -} -var inputJSON = ""; - -process.stdin.on('readable', function() { - var chunk = process.stdin.read(); - if (chunk !== null) { - inputJSON += chunk; - } -}); - -process.stdin.on('end', function() { - var parsedInput = JSON.parse(inputJSON); - console.log(JSON.stringify(jmespath.search(parsedInput, process.argv[2]))); -}); diff --git a/node_modules/aws-sdk/node_modules/jmespath/l.js b/node_modules/aws-sdk/node_modules/jmespath/l.js deleted file mode 100644 index 27bf6dd..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/l.js +++ /dev/null @@ -1,189 +0,0 @@ -'use strict'; - -var Lexer = exports.Lexer = function() { - this.pos = 0; - this.buf = null; - this.buflen = 0; - - // Operator table, mapping operator -> token name - this.optable = { - '+': 'PLUS', - '-': 'MINUS', - '*': 'MULTIPLY', - '.': 'PERIOD', - '\\': 'BACKSLASH', - ':': 'COLON', - '%': 'PERCENT', - '|': 'PIPE', - '!': 'EXCLAMATION', - '?': 'QUESTION', - '#': 'POUND', - '&': 'AMPERSAND', - ';': 'SEMI', - ',': 'COMMA', - '(': 'L_PAREN', - ')': 'R_PAREN', - '<': 'L_ANG', - '>': 'R_ANG', - '{': 'L_BRACE', - '}': 'R_BRACE', - '[': 'L_BRACKET', - ']': 'R_BRACKET', - '=': 'EQUALS' - }; -} - -// Initialize the Lexer's buffer. This resets the lexer's internal -// state and subsequent tokens will be returned starting with the -// beginning of the new buffer. -Lexer.prototype.input = function(buf) { - this.pos = 0; - this.buf = buf; - this.buflen = buf.length; -} - -// Get the next token from the current buffer. A token is an object with -// the following properties: -// - name: name of the pattern that this token matched (taken from rules). -// - value: actual string value of the token. -// - pos: offset in the current buffer where the token starts. -// -// If there are no more tokens in the buffer, returns null. In case of -// an error throws Error. -Lexer.prototype.token = function() { - this._skipnontokens(); - if (this.pos >= this.buflen) { - return null; - } - - // The char at this.pos is part of a real token. Figure out which. - var c = this.buf.charAt(this.pos); - - // '/' is treated specially, because it starts a comment if followed by - // another '/'. If not followed by another '/', it's the DIVIDE - // operator. - if (c === '/') { - var next_c = this.buf.charAt(this.pos + 1); - if (next_c === '/') { - return this._process_comment(); - } else { - return {name: 'DIVIDE', value: '/', pos: this.pos++}; - } - } else { - // Look it up in the table of operators - var op = this.optable[c]; - if (op !== undefined) { - return {name: op, value: c, pos: this.pos++}; - } else { - // Not an operator - so it's the beginning of another token. - if (Lexer._isalpha(c)) { - return this._process_identifier(); - } else if (Lexer._isdigit(c)) { - return this._process_number(); - } else if (c === '"') { - return this._process_quote(); - } else { - throw Error('Token error at ' + this.pos); - } - } - } -} - -Lexer._isnewline = function(c) { - return c === '\r' || c === '\n'; -} - -Lexer._isdigit = function(c) { - return c >= '0' && c <= '9'; -} - -Lexer._isalpha = function(c) { - return (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - c === '_' || c === '$'; -} - -Lexer._isalphanum = function(c) { - return (c >= 'a' && c <= 'z') || - (c >= 'A' && c <= 'Z') || - (c >= '0' && c <= '9') || - c === '_' || c === '$'; -} - -Lexer.prototype._process_number = function() { - var endpos = this.pos + 1; - while (endpos < this.buflen && - Lexer._isdigit(this.buf.charAt(endpos))) { - endpos++; - } - - var tok = { - name: 'NUMBER', - value: this.buf.substring(this.pos, endpos), - pos: this.pos - }; - this.pos = endpos; - return tok; -} - -Lexer.prototype._process_comment = function() { - var endpos = this.pos + 2; - // Skip until the end of the line - var c = this.buf.charAt(this.pos + 2); - while (endpos < this.buflen && - !Lexer._isnewline(this.buf.charAt(endpos))) { - endpos++; - } - - var tok = { - name: 'COMMENT', - value: this.buf.substring(this.pos, endpos), - pos: this.pos - }; - this.pos = endpos + 1; - return tok; -} - -Lexer.prototype._process_identifier = function() { - var endpos = this.pos + 1; - while (endpos < this.buflen && - Lexer._isalphanum(this.buf.charAt(endpos))) { - endpos++; - } - - var tok = { - name: 'IDENTIFIER', - value: this.buf.substring(this.pos, endpos), - pos: this.pos - }; - this.pos = endpos; - return tok; -} - -Lexer.prototype._process_quote = function() { - // this.pos points at the opening quote. Find the ending quote. - var end_index = this.buf.indexOf('"', this.pos + 1); - - if (end_index === -1) { - throw Error('Unterminated quote at ' + this.pos); - } else { - var tok = { - name: 'QUOTE', - value: this.buf.substring(this.pos, end_index + 1), - pos: this.pos - }; - this.pos = end_index + 1; - return tok; - } -} - -Lexer.prototype._skipnontokens = function() { - while (this.pos < this.buflen) { - var c = this.buf.charAt(this.pos); - if (c == ' ' || c == '\t' || c == '\r' || c == '\n') { - this.pos++; - } else { - break; - } - } -} diff --git a/node_modules/aws-sdk/node_modules/jmespath/package.json b/node_modules/aws-sdk/node_modules/jmespath/package.json deleted file mode 100644 index 911394a..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/package.json +++ /dev/null @@ -1,55 +0,0 @@ -{ - "name": "jmespath", - "description": "JMESPath implementation in javascript", - "version": "0.15.0", - "author": { - "name": "James Saryerwinnie", - "email": "js@jamesls.com", - "url": "http://jamesls.com/" - }, - "homepage": "https://github.com/jmespath/jmespath.js", - "contributors": [], - "devDependencies": { - "grunt": "^0.4.5", - "grunt-contrib-jshint": "^0.11.0", - "grunt-contrib-uglify": "^0.11.1", - "grunt-eslint": "^17.3.1", - "mocha": "^2.1.0" - }, - "dependencies": {}, - "main": "jmespath.js", - "directories": { - "test": "test" - }, - "engines": { - "node": ">= 0.6.0" - }, - "repository": { - "type": "git", - "url": "git://github.com/jmespath/jmespath.js.git" - }, - "bugs": { - "url": "http://github.com/jmespath/jmespath.js/issues" - }, - "licenses": [ - { - "type": "Apache 2.0", - "url": "http://github.com/jmespath/jmespath.js/raw/master/LICENSE" - } - ], - "keywords": [ - "jmespath", - "jsonpath", - "json", - "xpath" - ], - "scripts": { - "test": "mocha test/" - }, - "readme": "# jmespath.js\n\n[![Build Status](https://travis-ci.org/jmespath/jmespath.js.png?branch=master)](https://travis-ci.org/jmespath/jmespath.js)\n\njmespath.js is a javascript implementation of JMESPath,\nwhich is a query language for JSON. It will take a JSON\ndocument and transform it into another JSON document\nthrough a JMESPath expression.\n\nUsing jmespath.js is really easy. There's a single function\nyou use, `jmespath.search`:\n\n\n```\n> var jmespath = require('jmespath');\n> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, \"foo.bar.baz[2]\")\n2\n```\n\nIn the example we gave the ``search`` function input data of\n`{foo: {bar: {baz: [0, 1, 2, 3, 4]}}}` as well as the JMESPath\nexpression `foo.bar.baz[2]`, and the `search` function evaluated\nthe expression against the input data to produce the result ``2``.\n\nThe JMESPath language can do a lot more than select an element\nfrom a list. Here are a few more examples:\n\n```\n> jmespath.search({foo: {bar: {baz: [0, 1, 2, 3, 4]}}}, \"foo.bar\")\n{ baz: [ 0, 1, 2, 3, 4 ] }\n\n> jmespath.search({\"foo\": [{\"first\": \"a\", \"last\": \"b\"},\n {\"first\": \"c\", \"last\": \"d\"}]},\n \"foo[*].first\")\n[ 'a', 'c' ]\n\n> jmespath.search({\"foo\": [{\"age\": 20}, {\"age\": 25},\n {\"age\": 30}, {\"age\": 35},\n {\"age\": 40}]},\n \"foo[?age > `30`]\")\n[ { age: 35 }, { age: 40 } ]\n```\n\n## More Resources\n\nThe example above only show a small amount of what\na JMESPath expression can do. If you want to take a\ntour of the language, the *best* place to go is the\n[JMESPath Tutorial](http://jmespath.org/tutorial.html).\n\nOne of the best things about JMESPath is that it is\nimplemented in many different programming languages including\npython, ruby, php, lua, etc. To see a complete list of libraries,\ncheck out the [JMESPath libraries page](http://jmespath.org/libraries.html).\n\nAnd finally, the full JMESPath specification can be found\non the [JMESPath site](http://jmespath.org/specification.html).\n", - "readmeFilename": "README.md", - "_id": "jmespath@0.15.0", - "_shasum": "a3f222a9aae9f966f5d27c796510e28091764217", - "_resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.15.0.tgz", - "_from": "jmespath@0.15.0" -} diff --git a/node_modules/aws-sdk/node_modules/jmespath/perf.js b/node_modules/aws-sdk/node_modules/jmespath/perf.js deleted file mode 100644 index 58794ec..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/perf.js +++ /dev/null @@ -1,33 +0,0 @@ -var jmespath = require('./jmespath') -var Benchmark = require('benchmark'); -var suite = new Benchmark.Suite; - -// add tests -suite.add('Parser#single_expr', function() { - jmespath.compile("foo"); -}) -.add('Parser#single_subexpr', function() { - jmespath.compile("foo.bar"); -}) -.add('Parser#deeply_nested_50', function() { - jmespath.compile("j49.j48.j47.j46.j45.j44.j43.j42.j41.j40.j39.j38.j37.j36.j35.j34.j33.j32.j31.j30.j29.j28.j27.j26.j25.j24.j23.j22.j21.j20.j19.j18.j17.j16.j15.j14.j13.j12.j11.j10.j9.j8.j7.j6.j5.j4.j3.j2.j1.j0"); - -}) -.add('Parser#deeply_nested_50_index', function() { - jmespath.compile("[49][48][47][46][45][44][43][42][41][40][39][38][37][36][35][34][33][32][31][30][29][28][27][26][25][24][23][22][21][20][19][18][17][16][15][14][13][12][11][10][9][8][7][6][5][4][3][2][1][0]"); -}) -.add('Parser#basic_list_projection', function() { - jmespath.compile("foo[*].bar"); -}) -.on('cycle', function(event) { - var bench = event.target; - var mean = bench.stats.mean * 1000; - var variance = bench.stats.variance * 1000000; - var result = 'Mean time: ' + mean.toFixed(6) + 'msec '; - result += event.target.toString(); - console.log(result); -}) -.on('complete', function() { -}) -// run async -.run({ 'async': false }); diff --git a/node_modules/aws-sdk/node_modules/jmespath/reservedWords.json b/node_modules/aws-sdk/node_modules/jmespath/reservedWords.json deleted file mode 100644 index 433cd35..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/reservedWords.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "vars": [ "define", "require", "exports"], - "props": ["compile", "search", "tokenize", "jmespath", "parse", "stringify", "prototype", "length"] -} diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance.js b/node_modules/aws-sdk/node_modules/jmespath/test/compliance.js deleted file mode 100644 index 6298e9e..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance.js +++ /dev/null @@ -1,56 +0,0 @@ -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); -var jmespath = require('../jmespath'); -var search = jmespath.search; - -// Compliance tests that aren't supported yet. -var notImplementedYet = []; - -function endsWith(str, suffix) { - return str.indexOf(suffix, str.length - suffix.length) !== -1; -} - -var listing = fs.readdirSync('test/compliance'); -for (var i = 0; i < listing.length; i++) { - var filename = 'test/compliance/' + listing[i]; - if (fs.statSync(filename).isFile() && endsWith(filename, '.json') && - notImplementedYet.indexOf(path.basename(filename)) === -1) { - addTestSuitesFromFile(filename); - } -} -function addTestSuitesFromFile(filename) { - describe(filename, function() { - var spec = JSON.parse(fs.readFileSync(filename, 'utf-8')); - var errorMsg; - for (var i = 0; i < spec.length; i++) { - var msg = "suite " + i + " for filename " + filename; - describe(msg, function() { - var given = spec[i].given; - var cases = spec[i].cases; - for (var j = 0; j < cases.length; j++) { - var testcase = cases[j]; - if (testcase.error !== undefined) { - // For now just verify that an error is thrown - // for error tests. - (function(testcase, given) { - it('should throw error for test ' + j, function() { - assert.throws( - function() { - search(given, testcase.expression); - }, Error, testcase.expression); - }); - })(testcase, given); - } else { - (function(testcase, given) { - it('should pass test ' + j + " expression: " + testcase.expression, function() { - assert.deepEqual(search(given, testcase.expression), - testcase.result); - }); - })(testcase, given); - } - } - }); - } - }); -} diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json deleted file mode 100644 index d550e96..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/basic.json +++ /dev/null @@ -1,96 +0,0 @@ -[{ - "given": - {"foo": {"bar": {"baz": "correct"}}}, - "cases": [ - { - "expression": "foo", - "result": {"bar": {"baz": "correct"}} - }, - { - "expression": "foo.bar", - "result": {"baz": "correct"} - }, - { - "expression": "foo.bar.baz", - "result": "correct" - }, - { - "expression": "foo\n.\nbar\n.baz", - "result": "correct" - }, - { - "expression": "foo.bar.baz.bad", - "result": null - }, - { - "expression": "foo.bar.bad", - "result": null - }, - { - "expression": "foo.bad", - "result": null - }, - { - "expression": "bad", - "result": null - }, - { - "expression": "bad.morebad.morebad", - "result": null - } - ] -}, -{ - "given": - {"foo": {"bar": ["one", "two", "three"]}}, - "cases": [ - { - "expression": "foo", - "result": {"bar": ["one", "two", "three"]} - }, - { - "expression": "foo.bar", - "result": ["one", "two", "three"] - } - ] -}, -{ - "given": ["one", "two", "three"], - "cases": [ - { - "expression": "one", - "result": null - }, - { - "expression": "two", - "result": null - }, - { - "expression": "three", - "result": null - }, - { - "expression": "one.two", - "result": null - } - ] -}, -{ - "given": - {"foo": {"1": ["one", "two", "three"], "-1": "bar"}}, - "cases": [ - { - "expression": "foo.\"1\"", - "result": ["one", "two", "three"] - }, - { - "expression": "foo.\"1\"[0]", - "result": "one" - }, - { - "expression": "foo.\"-1\"", - "result": "bar" - } - ] -} -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json deleted file mode 100644 index e3fa196..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/boolean.json +++ /dev/null @@ -1,257 +0,0 @@ -[ - { - "given": { - "outer": { - "foo": "foo", - "bar": "bar", - "baz": "baz" - } - }, - "cases": [ - { - "expression": "outer.foo || outer.bar", - "result": "foo" - }, - { - "expression": "outer.foo||outer.bar", - "result": "foo" - }, - { - "expression": "outer.bar || outer.baz", - "result": "bar" - }, - { - "expression": "outer.bar||outer.baz", - "result": "bar" - }, - { - "expression": "outer.bad || outer.foo", - "result": "foo" - }, - { - "expression": "outer.bad||outer.foo", - "result": "foo" - }, - { - "expression": "outer.foo || outer.bad", - "result": "foo" - }, - { - "expression": "outer.foo||outer.bad", - "result": "foo" - }, - { - "expression": "outer.bad || outer.alsobad", - "result": null - }, - { - "expression": "outer.bad||outer.alsobad", - "result": null - } - ] - }, - { - "given": { - "outer": { - "foo": "foo", - "bool": false, - "empty_list": [], - "empty_string": "" - } - }, - "cases": [ - { - "expression": "outer.empty_string || outer.foo", - "result": "foo" - }, - { - "expression": "outer.nokey || outer.bool || outer.empty_list || outer.empty_string || outer.foo", - "result": "foo" - } - ] - }, - { - "given": { - "True": true, - "False": false, - "Number": 5, - "EmptyList": [], - "Zero": 0 - }, - "cases": [ - { - "expression": "True && False", - "result": false - }, - { - "expression": "False && True", - "result": false - }, - { - "expression": "True && True", - "result": true - }, - { - "expression": "False && False", - "result": false - }, - { - "expression": "True && Number", - "result": 5 - }, - { - "expression": "Number && True", - "result": true - }, - { - "expression": "Number && False", - "result": false - }, - { - "expression": "Number && EmptyList", - "result": [] - }, - { - "expression": "Number && True", - "result": true - }, - { - "expression": "EmptyList && True", - "result": [] - }, - { - "expression": "EmptyList && False", - "result": [] - }, - { - "expression": "True || False", - "result": true - }, - { - "expression": "True || True", - "result": true - }, - { - "expression": "False || True", - "result": true - }, - { - "expression": "False || False", - "result": false - }, - { - "expression": "Number || EmptyList", - "result": 5 - }, - { - "expression": "Number || True", - "result": 5 - }, - { - "expression": "Number || True && False", - "result": 5 - }, - { - "expression": "(Number || True) && False", - "result": false - }, - { - "expression": "Number || (True && False)", - "result": 5 - }, - { - "expression": "!True", - "result": false - }, - { - "expression": "!False", - "result": true - }, - { - "expression": "!Number", - "result": false - }, - { - "expression": "!EmptyList", - "result": true - }, - { - "expression": "True && !False", - "result": true - }, - { - "expression": "True && !EmptyList", - "result": true - }, - { - "expression": "!False && !EmptyList", - "result": true - }, - { - "expression": "!(True && False)", - "result": true - }, - { - "expression": "!Zero", - "result": false - }, - { - "expression": "!!Zero", - "result": true - } - ] - }, - { - "given": { - "one": 1, - "two": 2, - "three": 3 - }, - "cases": [ - { - "expression": "one < two", - "result": true - }, - { - "expression": "one <= two", - "result": true - }, - { - "expression": "one == one", - "result": true - }, - { - "expression": "one == two", - "result": false - }, - { - "expression": "one > two", - "result": false - }, - { - "expression": "one >= two", - "result": false - }, - { - "expression": "one != two", - "result": true - }, - { - "expression": "one < two && three > one", - "result": true - }, - { - "expression": "one < two || three > one", - "result": true - }, - { - "expression": "one < two || three < one", - "result": true - }, - { - "expression": "two < one || three < one", - "result": false - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json deleted file mode 100644 index 0c26248..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/current.json +++ /dev/null @@ -1,25 +0,0 @@ -[ - { - "given": { - "foo": [{"name": "a"}, {"name": "b"}], - "bar": {"baz": "qux"} - }, - "cases": [ - { - "expression": "@", - "result": { - "foo": [{"name": "a"}, {"name": "b"}], - "bar": {"baz": "qux"} - } - }, - { - "expression": "@.bar", - "result": {"baz": "qux"} - }, - { - "expression": "@.foo[0]", - "result": {"name": "a"} - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json deleted file mode 100644 index 4a62d95..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/escape.json +++ /dev/null @@ -1,46 +0,0 @@ -[{ - "given": { - "foo.bar": "dot", - "foo bar": "space", - "foo\nbar": "newline", - "foo\"bar": "doublequote", - "c:\\\\windows\\path": "windows", - "/unix/path": "unix", - "\"\"\"": "threequotes", - "bar": {"baz": "qux"} - }, - "cases": [ - { - "expression": "\"foo.bar\"", - "result": "dot" - }, - { - "expression": "\"foo bar\"", - "result": "space" - }, - { - "expression": "\"foo\\nbar\"", - "result": "newline" - }, - { - "expression": "\"foo\\\"bar\"", - "result": "doublequote" - }, - { - "expression": "\"c:\\\\\\\\windows\\\\path\"", - "result": "windows" - }, - { - "expression": "\"/unix/path\"", - "result": "unix" - }, - { - "expression": "\"\\\"\\\"\\\"\"", - "result": "threequotes" - }, - { - "expression": "\"bar\".\"baz\"", - "result": "qux" - } - ] -}] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json deleted file mode 100644 index 5b9f52b..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/filters.json +++ /dev/null @@ -1,468 +0,0 @@ -[ - { - "given": {"foo": [{"name": "a"}, {"name": "b"}]}, - "cases": [ - { - "comment": "Matching a literal", - "expression": "foo[?name == 'a']", - "result": [{"name": "a"}] - } - ] - }, - { - "given": {"foo": [0, 1], "bar": [2, 3]}, - "cases": [ - { - "comment": "Matching a literal", - "expression": "*[?[0] == `0`]", - "result": [[], []] - } - ] - }, - { - "given": {"foo": [{"first": "foo", "last": "bar"}, - {"first": "foo", "last": "foo"}, - {"first": "foo", "last": "baz"}]}, - "cases": [ - { - "comment": "Matching an expression", - "expression": "foo[?first == last]", - "result": [{"first": "foo", "last": "foo"}] - }, - { - "comment": "Verify projection created from filter", - "expression": "foo[?first == last].first", - "result": ["foo"] - } - ] - }, - { - "given": {"foo": [{"age": 20}, - {"age": 25}, - {"age": 30}]}, - "cases": [ - { - "comment": "Greater than with a number", - "expression": "foo[?age > `25`]", - "result": [{"age": 30}] - }, - { - "expression": "foo[?age >= `25`]", - "result": [{"age": 25}, {"age": 30}] - }, - { - "comment": "Greater than with a number", - "expression": "foo[?age > `30`]", - "result": [] - }, - { - "comment": "Greater than with a number", - "expression": "foo[?age < `25`]", - "result": [{"age": 20}] - }, - { - "comment": "Greater than with a number", - "expression": "foo[?age <= `25`]", - "result": [{"age": 20}, {"age": 25}] - }, - { - "comment": "Greater than with a number", - "expression": "foo[?age < `20`]", - "result": [] - }, - { - "expression": "foo[?age == `20`]", - "result": [{"age": 20}] - }, - { - "expression": "foo[?age != `20`]", - "result": [{"age": 25}, {"age": 30}] - } - ] - }, - { - "given": {"foo": [{"top": {"name": "a"}}, - {"top": {"name": "b"}}]}, - "cases": [ - { - "comment": "Filter with subexpression", - "expression": "foo[?top.name == 'a']", - "result": [{"top": {"name": "a"}}] - } - ] - }, - { - "given": {"foo": [{"top": {"first": "foo", "last": "bar"}}, - {"top": {"first": "foo", "last": "foo"}}, - {"top": {"first": "foo", "last": "baz"}}]}, - "cases": [ - { - "comment": "Matching an expression", - "expression": "foo[?top.first == top.last]", - "result": [{"top": {"first": "foo", "last": "foo"}}] - }, - { - "comment": "Matching a JSON array", - "expression": "foo[?top == `{\"first\": \"foo\", \"last\": \"bar\"}`]", - "result": [{"top": {"first": "foo", "last": "bar"}}] - } - ] - }, - { - "given": {"foo": [ - {"key": true}, - {"key": false}, - {"key": 0}, - {"key": 1}, - {"key": [0]}, - {"key": {"bar": [0]}}, - {"key": null}, - {"key": [1]}, - {"key": {"a":2}} - ]}, - "cases": [ - { - "expression": "foo[?key == `true`]", - "result": [{"key": true}] - }, - { - "expression": "foo[?key == `false`]", - "result": [{"key": false}] - }, - { - "expression": "foo[?key == `0`]", - "result": [{"key": 0}] - }, - { - "expression": "foo[?key == `1`]", - "result": [{"key": 1}] - }, - { - "expression": "foo[?key == `[0]`]", - "result": [{"key": [0]}] - }, - { - "expression": "foo[?key == `{\"bar\": [0]}`]", - "result": [{"key": {"bar": [0]}}] - }, - { - "expression": "foo[?key == `null`]", - "result": [{"key": null}] - }, - { - "expression": "foo[?key == `[1]`]", - "result": [{"key": [1]}] - }, - { - "expression": "foo[?key == `{\"a\":2}`]", - "result": [{"key": {"a":2}}] - }, - { - "expression": "foo[?`true` == key]", - "result": [{"key": true}] - }, - { - "expression": "foo[?`false` == key]", - "result": [{"key": false}] - }, - { - "expression": "foo[?`0` == key]", - "result": [{"key": 0}] - }, - { - "expression": "foo[?`1` == key]", - "result": [{"key": 1}] - }, - { - "expression": "foo[?`[0]` == key]", - "result": [{"key": [0]}] - }, - { - "expression": "foo[?`{\"bar\": [0]}` == key]", - "result": [{"key": {"bar": [0]}}] - }, - { - "expression": "foo[?`null` == key]", - "result": [{"key": null}] - }, - { - "expression": "foo[?`[1]` == key]", - "result": [{"key": [1]}] - }, - { - "expression": "foo[?`{\"a\":2}` == key]", - "result": [{"key": {"a":2}}] - }, - { - "expression": "foo[?key != `true`]", - "result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?key != `false`]", - "result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?key != `0`]", - "result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?key != `1`]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?key != `null`]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?key != `[1]`]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}] - }, - { - "expression": "foo[?key != `{\"a\":2}`]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}] - }, - { - "expression": "foo[?`true` != key]", - "result": [{"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?`false` != key]", - "result": [{"key": true}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?`0` != key]", - "result": [{"key": true}, {"key": false}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?`1` != key]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?`null` != key]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": [1]}, {"key": {"a":2}}] - }, - { - "expression": "foo[?`[1]` != key]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": {"a":2}}] - }, - { - "expression": "foo[?`{\"a\":2}` != key]", - "result": [{"key": true}, {"key": false}, {"key": 0}, {"key": 1}, {"key": [0]}, - {"key": {"bar": [0]}}, {"key": null}, {"key": [1]}] - } - ] - }, - { - "given": {"reservations": [ - {"instances": [ - {"foo": 1, "bar": 2}, {"foo": 1, "bar": 3}, - {"foo": 1, "bar": 2}, {"foo": 2, "bar": 1}]}]}, - "cases": [ - { - "expression": "reservations[].instances[?bar==`1`]", - "result": [[{"foo": 2, "bar": 1}]] - }, - { - "expression": "reservations[*].instances[?bar==`1`]", - "result": [[{"foo": 2, "bar": 1}]] - }, - { - "expression": "reservations[].instances[?bar==`1`][]", - "result": [{"foo": 2, "bar": 1}] - } - ] - }, - { - "given": { - "baz": "other", - "foo": [ - {"bar": 1}, {"bar": 2}, {"bar": 3}, {"bar": 4}, {"bar": 1, "baz": 2} - ] - }, - "cases": [ - { - "expression": "foo[?bar==`1`].bar[0]", - "result": [] - } - ] - }, - { - "given": { - "foo": [ - {"a": 1, "b": {"c": "x"}}, - {"a": 1, "b": {"c": "y"}}, - {"a": 1, "b": {"c": "z"}}, - {"a": 2, "b": {"c": "z"}}, - {"a": 1, "baz": 2} - ] - }, - "cases": [ - { - "expression": "foo[?a==`1`].b.c", - "result": ["x", "y", "z"] - } - ] - }, - { - "given": {"foo": [{"name": "a"}, {"name": "b"}, {"name": "c"}]}, - "cases": [ - { - "comment": "Filter with or expression", - "expression": "foo[?name == 'a' || name == 'b']", - "result": [{"name": "a"}, {"name": "b"}] - }, - { - "expression": "foo[?name == 'a' || name == 'e']", - "result": [{"name": "a"}] - }, - { - "expression": "foo[?name == 'a' || name == 'b' || name == 'c']", - "result": [{"name": "a"}, {"name": "b"}, {"name": "c"}] - } - ] - }, - { - "given": {"foo": [{"a": 1, "b": 2}, {"a": 1, "b": 3}]}, - "cases": [ - { - "comment": "Filter with and expression", - "expression": "foo[?a == `1` && b == `2`]", - "result": [{"a": 1, "b": 2}] - }, - { - "expression": "foo[?a == `1` && b == `4`]", - "result": [] - } - ] - }, - { - "given": {"foo": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]}, - "cases": [ - { - "comment": "Filter with Or and And expressions", - "expression": "foo[?c == `3` || a == `1` && b == `4`]", - "result": [{"a": 1, "b": 2, "c": 3}] - }, - { - "expression": "foo[?b == `2` || a == `3` && b == `4`]", - "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] - }, - { - "expression": "foo[?a == `3` && b == `4` || b == `2`]", - "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] - }, - { - "expression": "foo[?(a == `3` && b == `4`) || b == `2`]", - "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] - }, - { - "expression": "foo[?((a == `3` && b == `4`)) || b == `2`]", - "result": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}] - }, - { - "expression": "foo[?a == `3` && (b == `4` || b == `2`)]", - "result": [{"a": 3, "b": 4}] - }, - { - "expression": "foo[?a == `3` && ((b == `4` || b == `2`))]", - "result": [{"a": 3, "b": 4}] - } - ] - }, - { - "given": {"foo": [{"a": 1, "b": 2, "c": 3}, {"a": 3, "b": 4}]}, - "cases": [ - { - "comment": "Verify precedence of or/and expressions", - "expression": "foo[?a == `1` || b ==`2` && c == `5`]", - "result": [{"a": 1, "b": 2, "c": 3}] - }, - { - "comment": "Parentheses can alter precedence", - "expression": "foo[?(a == `1` || b ==`2`) && c == `5`]", - "result": [] - }, - { - "comment": "Not expressions combined with and/or", - "expression": "foo[?!(a == `1` || b ==`2`)]", - "result": [{"a": 3, "b": 4}] - } - ] - }, - { - "given": { - "foo": [ - {"key": true}, - {"key": false}, - {"key": []}, - {"key": {}}, - {"key": [0]}, - {"key": {"a": "b"}}, - {"key": 0}, - {"key": 1}, - {"key": null}, - {"notkey": true} - ] - }, - "cases": [ - { - "comment": "Unary filter expression", - "expression": "foo[?key]", - "result": [ - {"key": true}, {"key": [0]}, {"key": {"a": "b"}}, - {"key": 0}, {"key": 1} - ] - }, - { - "comment": "Unary not filter expression", - "expression": "foo[?!key]", - "result": [ - {"key": false}, {"key": []}, {"key": {}}, - {"key": null}, {"notkey": true} - ] - }, - { - "comment": "Equality with null RHS", - "expression": "foo[?key == `null`]", - "result": [ - {"key": null}, {"notkey": true} - ] - } - ] - }, - { - "given": { - "foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - "cases": [ - { - "comment": "Using @ in a filter expression", - "expression": "foo[?@ < `5`]", - "result": [0, 1, 2, 3, 4] - }, - { - "comment": "Using @ in a filter expression", - "expression": "foo[?`5` > @]", - "result": [0, 1, 2, 3, 4] - }, - { - "comment": "Using @ in a filter expression", - "expression": "foo[?@ == @]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json deleted file mode 100644 index 8b8db36..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/functions.json +++ /dev/null @@ -1,825 +0,0 @@ -[{ - "given": - { - "foo": -1, - "zero": 0, - "numbers": [-1, 3, 4, 5], - "array": [-1, 3, 4, 5, "a", "100"], - "strings": ["a", "b", "c"], - "decimals": [1.01, 1.2, -1.5], - "str": "Str", - "false": false, - "empty_list": [], - "empty_hash": {}, - "objects": {"foo": "bar", "bar": "baz"}, - "null_key": null - }, - "cases": [ - { - "expression": "abs(foo)", - "result": 1 - }, - { - "expression": "abs(foo)", - "result": 1 - }, - { - "expression": "abs(str)", - "error": "invalid-type" - }, - { - "expression": "abs(array[1])", - "result": 3 - }, - { - "expression": "abs(array[1])", - "result": 3 - }, - { - "expression": "abs(`false`)", - "error": "invalid-type" - }, - { - "expression": "abs(`-24`)", - "result": 24 - }, - { - "expression": "abs(`-24`)", - "result": 24 - }, - { - "expression": "abs(`1`, `2`)", - "error": "invalid-arity" - }, - { - "expression": "abs()", - "error": "invalid-arity" - }, - { - "expression": "unknown_function(`1`, `2`)", - "error": "unknown-function" - }, - { - "expression": "avg(numbers)", - "result": 2.75 - }, - { - "expression": "avg(array)", - "error": "invalid-type" - }, - { - "expression": "avg('abc')", - "error": "invalid-type" - }, - { - "expression": "avg(foo)", - "error": "invalid-type" - }, - { - "expression": "avg(@)", - "error": "invalid-type" - }, - { - "expression": "avg(strings)", - "error": "invalid-type" - }, - { - "expression": "ceil(`1.2`)", - "result": 2 - }, - { - "expression": "ceil(decimals[0])", - "result": 2 - }, - { - "expression": "ceil(decimals[1])", - "result": 2 - }, - { - "expression": "ceil(decimals[2])", - "result": -1 - }, - { - "expression": "ceil('string')", - "error": "invalid-type" - }, - { - "expression": "contains('abc', 'a')", - "result": true - }, - { - "expression": "contains('abc', 'd')", - "result": false - }, - { - "expression": "contains(`false`, 'd')", - "error": "invalid-type" - }, - { - "expression": "contains(strings, 'a')", - "result": true - }, - { - "expression": "contains(decimals, `1.2`)", - "result": true - }, - { - "expression": "contains(decimals, `false`)", - "result": false - }, - { - "expression": "ends_with(str, 'r')", - "result": true - }, - { - "expression": "ends_with(str, 'tr')", - "result": true - }, - { - "expression": "ends_with(str, 'Str')", - "result": true - }, - { - "expression": "ends_with(str, 'SStr')", - "result": false - }, - { - "expression": "ends_with(str, 'foo')", - "result": false - }, - { - "expression": "ends_with(str, `0`)", - "error": "invalid-type" - }, - { - "expression": "floor(`1.2`)", - "result": 1 - }, - { - "expression": "floor('string')", - "error": "invalid-type" - }, - { - "expression": "floor(decimals[0])", - "result": 1 - }, - { - "expression": "floor(foo)", - "result": -1 - }, - { - "expression": "floor(str)", - "error": "invalid-type" - }, - { - "expression": "length('abc')", - "result": 3 - }, - { - "expression": "length('✓foo')", - "result": 4 - }, - { - "expression": "length('')", - "result": 0 - }, - { - "expression": "length(@)", - "result": 12 - }, - { - "expression": "length(strings[0])", - "result": 1 - }, - { - "expression": "length(str)", - "result": 3 - }, - { - "expression": "length(array)", - "result": 6 - }, - { - "expression": "length(objects)", - "result": 2 - }, - { - "expression": "length(`false`)", - "error": "invalid-type" - }, - { - "expression": "length(foo)", - "error": "invalid-type" - }, - { - "expression": "length(strings[0])", - "result": 1 - }, - { - "expression": "max(numbers)", - "result": 5 - }, - { - "expression": "max(decimals)", - "result": 1.2 - }, - { - "expression": "max(strings)", - "result": "c" - }, - { - "expression": "max(abc)", - "error": "invalid-type" - }, - { - "expression": "max(array)", - "error": "invalid-type" - }, - { - "expression": "max(decimals)", - "result": 1.2 - }, - { - "expression": "max(empty_list)", - "result": null - }, - { - "expression": "merge(`{}`)", - "result": {} - }, - { - "expression": "merge(`{}`, `{}`)", - "result": {} - }, - { - "expression": "merge(`{\"a\": 1}`, `{\"b\": 2}`)", - "result": {"a": 1, "b": 2} - }, - { - "expression": "merge(`{\"a\": 1}`, `{\"a\": 2}`)", - "result": {"a": 2} - }, - { - "expression": "merge(`{\"a\": 1, \"b\": 2}`, `{\"a\": 2, \"c\": 3}`, `{\"d\": 4}`)", - "result": {"a": 2, "b": 2, "c": 3, "d": 4} - }, - { - "expression": "min(numbers)", - "result": -1 - }, - { - "expression": "min(decimals)", - "result": -1.5 - }, - { - "expression": "min(abc)", - "error": "invalid-type" - }, - { - "expression": "min(array)", - "error": "invalid-type" - }, - { - "expression": "min(empty_list)", - "result": null - }, - { - "expression": "min(decimals)", - "result": -1.5 - }, - { - "expression": "min(strings)", - "result": "a" - }, - { - "expression": "type('abc')", - "result": "string" - }, - { - "expression": "type(`1.0`)", - "result": "number" - }, - { - "expression": "type(`2`)", - "result": "number" - }, - { - "expression": "type(`true`)", - "result": "boolean" - }, - { - "expression": "type(`false`)", - "result": "boolean" - }, - { - "expression": "type(`null`)", - "result": "null" - }, - { - "expression": "type(`[0]`)", - "result": "array" - }, - { - "expression": "type(`{\"a\": \"b\"}`)", - "result": "object" - }, - { - "expression": "type(@)", - "result": "object" - }, - { - "expression": "sort(keys(objects))", - "result": ["bar", "foo"] - }, - { - "expression": "keys(foo)", - "error": "invalid-type" - }, - { - "expression": "keys(strings)", - "error": "invalid-type" - }, - { - "expression": "keys(`false`)", - "error": "invalid-type" - }, - { - "expression": "sort(values(objects))", - "result": ["bar", "baz"] - }, - { - "expression": "keys(empty_hash)", - "result": [] - }, - { - "expression": "values(foo)", - "error": "invalid-type" - }, - { - "expression": "join(', ', strings)", - "result": "a, b, c" - }, - { - "expression": "join(', ', strings)", - "result": "a, b, c" - }, - { - "expression": "join(',', `[\"a\", \"b\"]`)", - "result": "a,b" - }, - { - "expression": "join(',', `[\"a\", 0]`)", - "error": "invalid-type" - }, - { - "expression": "join(', ', str)", - "error": "invalid-type" - }, - { - "expression": "join('|', strings)", - "result": "a|b|c" - }, - { - "expression": "join(`2`, strings)", - "error": "invalid-type" - }, - { - "expression": "join('|', decimals)", - "error": "invalid-type" - }, - { - "expression": "join('|', decimals[].to_string(@))", - "result": "1.01|1.2|-1.5" - }, - { - "expression": "join('|', empty_list)", - "result": "" - }, - { - "expression": "reverse(numbers)", - "result": [5, 4, 3, -1] - }, - { - "expression": "reverse(array)", - "result": ["100", "a", 5, 4, 3, -1] - }, - { - "expression": "reverse(`[]`)", - "result": [] - }, - { - "expression": "reverse('')", - "result": "" - }, - { - "expression": "reverse('hello world')", - "result": "dlrow olleh" - }, - { - "expression": "starts_with(str, 'S')", - "result": true - }, - { - "expression": "starts_with(str, 'St')", - "result": true - }, - { - "expression": "starts_with(str, 'Str')", - "result": true - }, - { - "expression": "starts_with(str, 'String')", - "result": false - }, - { - "expression": "starts_with(str, `0`)", - "error": "invalid-type" - }, - { - "expression": "sum(numbers)", - "result": 11 - }, - { - "expression": "sum(decimals)", - "result": 0.71 - }, - { - "expression": "sum(array)", - "error": "invalid-type" - }, - { - "expression": "sum(array[].to_number(@))", - "result": 111 - }, - { - "expression": "sum(`[]`)", - "result": 0 - }, - { - "expression": "to_array('foo')", - "result": ["foo"] - }, - { - "expression": "to_array(`0`)", - "result": [0] - }, - { - "expression": "to_array(objects)", - "result": [{"foo": "bar", "bar": "baz"}] - }, - { - "expression": "to_array(`[1, 2, 3]`)", - "result": [1, 2, 3] - }, - { - "expression": "to_array(false)", - "result": [false] - }, - { - "expression": "to_string('foo')", - "result": "foo" - }, - { - "expression": "to_string(`1.2`)", - "result": "1.2" - }, - { - "expression": "to_string(`[0, 1]`)", - "result": "[0,1]" - }, - { - "expression": "to_number('1.0')", - "result": 1.0 - }, - { - "expression": "to_number('1.1')", - "result": 1.1 - }, - { - "expression": "to_number('4')", - "result": 4 - }, - { - "expression": "to_number('notanumber')", - "result": null - }, - { - "expression": "to_number(`false`)", - "result": null - }, - { - "expression": "to_number(`null`)", - "result": null - }, - { - "expression": "to_number(`[0]`)", - "result": null - }, - { - "expression": "to_number(`{\"foo\": 0}`)", - "result": null - }, - { - "expression": "\"to_string\"(`1.0`)", - "error": "syntax" - }, - { - "expression": "sort(numbers)", - "result": [-1, 3, 4, 5] - }, - { - "expression": "sort(strings)", - "result": ["a", "b", "c"] - }, - { - "expression": "sort(decimals)", - "result": [-1.5, 1.01, 1.2] - }, - { - "expression": "sort(array)", - "error": "invalid-type" - }, - { - "expression": "sort(abc)", - "error": "invalid-type" - }, - { - "expression": "sort(empty_list)", - "result": [] - }, - { - "expression": "sort(@)", - "error": "invalid-type" - }, - { - "expression": "not_null(unknown_key, str)", - "result": "Str" - }, - { - "expression": "not_null(unknown_key, foo.bar, empty_list, str)", - "result": [] - }, - { - "expression": "not_null(unknown_key, null_key, empty_list, str)", - "result": [] - }, - { - "expression": "not_null(all, expressions, are_null)", - "result": null - }, - { - "expression": "not_null()", - "error": "invalid-arity" - }, - { - "description": "function projection on single arg function", - "expression": "numbers[].to_string(@)", - "result": ["-1", "3", "4", "5"] - }, - { - "description": "function projection on single arg function", - "expression": "array[].to_number(@)", - "result": [-1, 3, 4, 5, 100] - } - ] -}, { - "given": - { - "foo": [ - {"b": "b", "a": "a"}, - {"c": "c", "b": "b"}, - {"d": "d", "c": "c"}, - {"e": "e", "d": "d"}, - {"f": "f", "e": "e"} - ] - }, - "cases": [ - { - "description": "function projection on variadic function", - "expression": "foo[].not_null(f, e, d, c, b, a)", - "result": ["b", "c", "d", "e", "f"] - } - ] -}, { - "given": - { - "people": [ - {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, - {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, - {"age": 30, "age_str": "30", "bool": true, "name": "c"}, - {"age": 50, "age_str": "50", "bool": false, "name": "d"}, - {"age": 10, "age_str": "10", "bool": true, "name": 3} - ] - }, - "cases": [ - { - "description": "sort by field expression", - "expression": "sort_by(people, &age)", - "result": [ - {"age": 10, "age_str": "10", "bool": true, "name": 3}, - {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, - {"age": 30, "age_str": "30", "bool": true, "name": "c"}, - {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, - {"age": 50, "age_str": "50", "bool": false, "name": "d"} - ] - }, - { - "expression": "sort_by(people, &age_str)", - "result": [ - {"age": 10, "age_str": "10", "bool": true, "name": 3}, - {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, - {"age": 30, "age_str": "30", "bool": true, "name": "c"}, - {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, - {"age": 50, "age_str": "50", "bool": false, "name": "d"} - ] - }, - { - "description": "sort by function expression", - "expression": "sort_by(people, &to_number(age_str))", - "result": [ - {"age": 10, "age_str": "10", "bool": true, "name": 3}, - {"age": 20, "age_str": "20", "bool": true, "name": "a", "extra": "foo"}, - {"age": 30, "age_str": "30", "bool": true, "name": "c"}, - {"age": 40, "age_str": "40", "bool": false, "name": "b", "extra": "bar"}, - {"age": 50, "age_str": "50", "bool": false, "name": "d"} - ] - }, - { - "description": "function projection on sort_by function", - "expression": "sort_by(people, &age)[].name", - "result": [3, "a", "c", "b", "d"] - }, - { - "expression": "sort_by(people, &extra)", - "error": "invalid-type" - }, - { - "expression": "sort_by(people, &bool)", - "error": "invalid-type" - }, - { - "expression": "sort_by(people, &name)", - "error": "invalid-type" - }, - { - "expression": "sort_by(people, name)", - "error": "invalid-type" - }, - { - "expression": "sort_by(people, &age)[].extra", - "result": ["foo", "bar"] - }, - { - "expression": "sort_by(`[]`, &age)", - "result": [] - }, - { - "expression": "max_by(people, &age)", - "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} - }, - { - "expression": "max_by(people, &age_str)", - "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} - }, - { - "expression": "max_by(people, &bool)", - "error": "invalid-type" - }, - { - "expression": "max_by(people, &extra)", - "error": "invalid-type" - }, - { - "expression": "max_by(people, &to_number(age_str))", - "result": {"age": 50, "age_str": "50", "bool": false, "name": "d"} - }, - { - "expression": "min_by(people, &age)", - "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} - }, - { - "expression": "min_by(people, &age_str)", - "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} - }, - { - "expression": "min_by(people, &bool)", - "error": "invalid-type" - }, - { - "expression": "min_by(people, &extra)", - "error": "invalid-type" - }, - { - "expression": "min_by(people, &to_number(age_str))", - "result": {"age": 10, "age_str": "10", "bool": true, "name": 3} - } - ] -}, { - "given": - { - "people": [ - {"age": 10, "order": "1"}, - {"age": 10, "order": "2"}, - {"age": 10, "order": "3"}, - {"age": 10, "order": "4"}, - {"age": 10, "order": "5"}, - {"age": 10, "order": "6"}, - {"age": 10, "order": "7"}, - {"age": 10, "order": "8"}, - {"age": 10, "order": "9"}, - {"age": 10, "order": "10"}, - {"age": 10, "order": "11"} - ] - }, - "cases": [ - { - "description": "stable sort order", - "expression": "sort_by(people, &age)", - "result": [ - {"age": 10, "order": "1"}, - {"age": 10, "order": "2"}, - {"age": 10, "order": "3"}, - {"age": 10, "order": "4"}, - {"age": 10, "order": "5"}, - {"age": 10, "order": "6"}, - {"age": 10, "order": "7"}, - {"age": 10, "order": "8"}, - {"age": 10, "order": "9"}, - {"age": 10, "order": "10"}, - {"age": 10, "order": "11"} - ] - } - ] -}, { - "given": - { - "people": [ - {"a": 10, "b": 1, "c": "z"}, - {"a": 10, "b": 2, "c": null}, - {"a": 10, "b": 3}, - {"a": 10, "b": 4, "c": "z"}, - {"a": 10, "b": 5, "c": null}, - {"a": 10, "b": 6}, - {"a": 10, "b": 7, "c": "z"}, - {"a": 10, "b": 8, "c": null}, - {"a": 10, "b": 9} - ], - "empty": [] - }, - "cases": [ - { - "expression": "map(&a, people)", - "result": [10, 10, 10, 10, 10, 10, 10, 10, 10] - }, - { - "expression": "map(&c, people)", - "result": ["z", null, null, "z", null, null, "z", null, null] - }, - { - "expression": "map(&a, badkey)", - "error": "invalid-type" - }, - { - "expression": "map(&foo, empty)", - "result": [] - } - ] -}, { - "given": { - "array": [ - { - "foo": {"bar": "yes1"} - }, - { - "foo": {"bar": "yes2"} - }, - { - "foo1": {"bar": "no"} - } - ]}, - "cases": [ - { - "expression": "map(&foo.bar, array)", - "result": ["yes1", "yes2", null] - }, - { - "expression": "map(&foo1.bar, array)", - "result": [null, null, "no"] - }, - { - "expression": "map(&foo.bar.baz, array)", - "result": [null, null, null] - } - ] -}, { - "given": { - "array": [[1, 2, 3, [4]], [5, 6, 7, [8, 9]]] - }, - "cases": [ - { - "expression": "map(&[], array)", - "result": [[1, 2, 3, 4], [5, 6, 7, 8, 9]] - } - ] -} -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json deleted file mode 100644 index 7998a41..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/identifiers.json +++ /dev/null @@ -1,1377 +0,0 @@ -[ - { - "given": { - "__L": true - }, - "cases": [ - { - "expression": "__L", - "result": true - } - ] - }, - { - "given": { - "!\r": true - }, - "cases": [ - { - "expression": "\"!\\r\"", - "result": true - } - ] - }, - { - "given": { - "Y_1623": true - }, - "cases": [ - { - "expression": "Y_1623", - "result": true - } - ] - }, - { - "given": { - "x": true - }, - "cases": [ - { - "expression": "x", - "result": true - } - ] - }, - { - "given": { - "\tF\uCebb": true - }, - "cases": [ - { - "expression": "\"\\tF\\uCebb\"", - "result": true - } - ] - }, - { - "given": { - " \t": true - }, - "cases": [ - { - "expression": "\" \\t\"", - "result": true - } - ] - }, - { - "given": { - " ": true - }, - "cases": [ - { - "expression": "\" \"", - "result": true - } - ] - }, - { - "given": { - "v2": true - }, - "cases": [ - { - "expression": "v2", - "result": true - } - ] - }, - { - "given": { - "\t": true - }, - "cases": [ - { - "expression": "\"\\t\"", - "result": true - } - ] - }, - { - "given": { - "_X": true - }, - "cases": [ - { - "expression": "_X", - "result": true - } - ] - }, - { - "given": { - "\t4\ud9da\udd15": true - }, - "cases": [ - { - "expression": "\"\\t4\\ud9da\\udd15\"", - "result": true - } - ] - }, - { - "given": { - "v24_W": true - }, - "cases": [ - { - "expression": "v24_W", - "result": true - } - ] - }, - { - "given": { - "H": true - }, - "cases": [ - { - "expression": "\"H\"", - "result": true - } - ] - }, - { - "given": { - "\f": true - }, - "cases": [ - { - "expression": "\"\\f\"", - "result": true - } - ] - }, - { - "given": { - "E4": true - }, - "cases": [ - { - "expression": "\"E4\"", - "result": true - } - ] - }, - { - "given": { - "!": true - }, - "cases": [ - { - "expression": "\"!\"", - "result": true - } - ] - }, - { - "given": { - "tM": true - }, - "cases": [ - { - "expression": "tM", - "result": true - } - ] - }, - { - "given": { - " [": true - }, - "cases": [ - { - "expression": "\" [\"", - "result": true - } - ] - }, - { - "given": { - "R!": true - }, - "cases": [ - { - "expression": "\"R!\"", - "result": true - } - ] - }, - { - "given": { - "_6W": true - }, - "cases": [ - { - "expression": "_6W", - "result": true - } - ] - }, - { - "given": { - "\uaBA1\r": true - }, - "cases": [ - { - "expression": "\"\\uaBA1\\r\"", - "result": true - } - ] - }, - { - "given": { - "tL7": true - }, - "cases": [ - { - "expression": "tL7", - "result": true - } - ] - }, - { - "given": { - "<": true - }, - "cases": [ - { - "expression": "\">\"", - "result": true - } - ] - }, - { - "given": { - "hvu": true - }, - "cases": [ - { - "expression": "hvu", - "result": true - } - ] - }, - { - "given": { - "; !": true - }, - "cases": [ - { - "expression": "\"; !\"", - "result": true - } - ] - }, - { - "given": { - "hU": true - }, - "cases": [ - { - "expression": "hU", - "result": true - } - ] - }, - { - "given": { - "!I\n\/": true - }, - "cases": [ - { - "expression": "\"!I\\n\\/\"", - "result": true - } - ] - }, - { - "given": { - "\uEEbF": true - }, - "cases": [ - { - "expression": "\"\\uEEbF\"", - "result": true - } - ] - }, - { - "given": { - "U)\t": true - }, - "cases": [ - { - "expression": "\"U)\\t\"", - "result": true - } - ] - }, - { - "given": { - "fa0_9": true - }, - "cases": [ - { - "expression": "fa0_9", - "result": true - } - ] - }, - { - "given": { - "/": true - }, - "cases": [ - { - "expression": "\"/\"", - "result": true - } - ] - }, - { - "given": { - "Gy": true - }, - "cases": [ - { - "expression": "Gy", - "result": true - } - ] - }, - { - "given": { - "\b": true - }, - "cases": [ - { - "expression": "\"\\b\"", - "result": true - } - ] - }, - { - "given": { - "<": true - }, - "cases": [ - { - "expression": "\"<\"", - "result": true - } - ] - }, - { - "given": { - "\t": true - }, - "cases": [ - { - "expression": "\"\\t\"", - "result": true - } - ] - }, - { - "given": { - "\t&\\\r": true - }, - "cases": [ - { - "expression": "\"\\t&\\\\\\r\"", - "result": true - } - ] - }, - { - "given": { - "#": true - }, - "cases": [ - { - "expression": "\"#\"", - "result": true - } - ] - }, - { - "given": { - "B__": true - }, - "cases": [ - { - "expression": "B__", - "result": true - } - ] - }, - { - "given": { - "\nS \n": true - }, - "cases": [ - { - "expression": "\"\\nS \\n\"", - "result": true - } - ] - }, - { - "given": { - "Bp": true - }, - "cases": [ - { - "expression": "Bp", - "result": true - } - ] - }, - { - "given": { - ",\t;": true - }, - "cases": [ - { - "expression": "\",\\t;\"", - "result": true - } - ] - }, - { - "given": { - "B_q": true - }, - "cases": [ - { - "expression": "B_q", - "result": true - } - ] - }, - { - "given": { - "\/+\t\n\b!Z": true - }, - "cases": [ - { - "expression": "\"\\/+\\t\\n\\b!Z\"", - "result": true - } - ] - }, - { - "given": { - "\udadd\udfc7\\ueFAc": true - }, - "cases": [ - { - "expression": "\"\udadd\udfc7\\\\ueFAc\"", - "result": true - } - ] - }, - { - "given": { - ":\f": true - }, - "cases": [ - { - "expression": "\":\\f\"", - "result": true - } - ] - }, - { - "given": { - "\/": true - }, - "cases": [ - { - "expression": "\"\\/\"", - "result": true - } - ] - }, - { - "given": { - "_BW_6Hg_Gl": true - }, - "cases": [ - { - "expression": "_BW_6Hg_Gl", - "result": true - } - ] - }, - { - "given": { - "\udbcf\udc02": true - }, - "cases": [ - { - "expression": "\"\udbcf\udc02\"", - "result": true - } - ] - }, - { - "given": { - "zs1DC": true - }, - "cases": [ - { - "expression": "zs1DC", - "result": true - } - ] - }, - { - "given": { - "__434": true - }, - "cases": [ - { - "expression": "__434", - "result": true - } - ] - }, - { - "given": { - "\udb94\udd41": true - }, - "cases": [ - { - "expression": "\"\udb94\udd41\"", - "result": true - } - ] - }, - { - "given": { - "Z_5": true - }, - "cases": [ - { - "expression": "Z_5", - "result": true - } - ] - }, - { - "given": { - "z_M_": true - }, - "cases": [ - { - "expression": "z_M_", - "result": true - } - ] - }, - { - "given": { - "YU_2": true - }, - "cases": [ - { - "expression": "YU_2", - "result": true - } - ] - }, - { - "given": { - "_0": true - }, - "cases": [ - { - "expression": "_0", - "result": true - } - ] - }, - { - "given": { - "\b+": true - }, - "cases": [ - { - "expression": "\"\\b+\"", - "result": true - } - ] - }, - { - "given": { - "\"": true - }, - "cases": [ - { - "expression": "\"\\\"\"", - "result": true - } - ] - }, - { - "given": { - "D7": true - }, - "cases": [ - { - "expression": "D7", - "result": true - } - ] - }, - { - "given": { - "_62L": true - }, - "cases": [ - { - "expression": "_62L", - "result": true - } - ] - }, - { - "given": { - "\tK\t": true - }, - "cases": [ - { - "expression": "\"\\tK\\t\"", - "result": true - } - ] - }, - { - "given": { - "\n\\\f": true - }, - "cases": [ - { - "expression": "\"\\n\\\\\\f\"", - "result": true - } - ] - }, - { - "given": { - "I_": true - }, - "cases": [ - { - "expression": "I_", - "result": true - } - ] - }, - { - "given": { - "W_a0_": true - }, - "cases": [ - { - "expression": "W_a0_", - "result": true - } - ] - }, - { - "given": { - "BQ": true - }, - "cases": [ - { - "expression": "BQ", - "result": true - } - ] - }, - { - "given": { - "\tX$\uABBb": true - }, - "cases": [ - { - "expression": "\"\\tX$\\uABBb\"", - "result": true - } - ] - }, - { - "given": { - "Z9": true - }, - "cases": [ - { - "expression": "Z9", - "result": true - } - ] - }, - { - "given": { - "\b%\"\uda38\udd0f": true - }, - "cases": [ - { - "expression": "\"\\b%\\\"\uda38\udd0f\"", - "result": true - } - ] - }, - { - "given": { - "_F": true - }, - "cases": [ - { - "expression": "_F", - "result": true - } - ] - }, - { - "given": { - "!,": true - }, - "cases": [ - { - "expression": "\"!,\"", - "result": true - } - ] - }, - { - "given": { - "\"!": true - }, - "cases": [ - { - "expression": "\"\\\"!\"", - "result": true - } - ] - }, - { - "given": { - "Hh": true - }, - "cases": [ - { - "expression": "Hh", - "result": true - } - ] - }, - { - "given": { - "&": true - }, - "cases": [ - { - "expression": "\"&\"", - "result": true - } - ] - }, - { - "given": { - "9\r\\R": true - }, - "cases": [ - { - "expression": "\"9\\r\\\\R\"", - "result": true - } - ] - }, - { - "given": { - "M_k": true - }, - "cases": [ - { - "expression": "M_k", - "result": true - } - ] - }, - { - "given": { - "!\b\n\udb06\ude52\"\"": true - }, - "cases": [ - { - "expression": "\"!\\b\\n\udb06\ude52\\\"\\\"\"", - "result": true - } - ] - }, - { - "given": { - "6": true - }, - "cases": [ - { - "expression": "\"6\"", - "result": true - } - ] - }, - { - "given": { - "_7": true - }, - "cases": [ - { - "expression": "_7", - "result": true - } - ] - }, - { - "given": { - "0": true - }, - "cases": [ - { - "expression": "\"0\"", - "result": true - } - ] - }, - { - "given": { - "\\8\\": true - }, - "cases": [ - { - "expression": "\"\\\\8\\\\\"", - "result": true - } - ] - }, - { - "given": { - "b7eo": true - }, - "cases": [ - { - "expression": "b7eo", - "result": true - } - ] - }, - { - "given": { - "xIUo9": true - }, - "cases": [ - { - "expression": "xIUo9", - "result": true - } - ] - }, - { - "given": { - "5": true - }, - "cases": [ - { - "expression": "\"5\"", - "result": true - } - ] - }, - { - "given": { - "?": true - }, - "cases": [ - { - "expression": "\"?\"", - "result": true - } - ] - }, - { - "given": { - "sU": true - }, - "cases": [ - { - "expression": "sU", - "result": true - } - ] - }, - { - "given": { - "VH2&H\\\/": true - }, - "cases": [ - { - "expression": "\"VH2&H\\\\\\/\"", - "result": true - } - ] - }, - { - "given": { - "_C": true - }, - "cases": [ - { - "expression": "_C", - "result": true - } - ] - }, - { - "given": { - "_": true - }, - "cases": [ - { - "expression": "_", - "result": true - } - ] - }, - { - "given": { - "<\t": true - }, - "cases": [ - { - "expression": "\"<\\t\"", - "result": true - } - ] - }, - { - "given": { - "\uD834\uDD1E": true - }, - "cases": [ - { - "expression": "\"\\uD834\\uDD1E\"", - "result": true - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json deleted file mode 100644 index aa03b35..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/indices.json +++ /dev/null @@ -1,346 +0,0 @@ -[{ - "given": - {"foo": {"bar": ["zero", "one", "two"]}}, - "cases": [ - { - "expression": "foo.bar[0]", - "result": "zero" - }, - { - "expression": "foo.bar[1]", - "result": "one" - }, - { - "expression": "foo.bar[2]", - "result": "two" - }, - { - "expression": "foo.bar[3]", - "result": null - }, - { - "expression": "foo.bar[-1]", - "result": "two" - }, - { - "expression": "foo.bar[-2]", - "result": "one" - }, - { - "expression": "foo.bar[-3]", - "result": "zero" - }, - { - "expression": "foo.bar[-4]", - "result": null - } - ] -}, -{ - "given": - {"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]}, - "cases": [ - { - "expression": "foo.bar", - "result": null - }, - { - "expression": "foo[0].bar", - "result": "one" - }, - { - "expression": "foo[1].bar", - "result": "two" - }, - { - "expression": "foo[2].bar", - "result": "three" - }, - { - "expression": "foo[3].notbar", - "result": "four" - }, - { - "expression": "foo[3].bar", - "result": null - }, - { - "expression": "foo[0]", - "result": {"bar": "one"} - }, - { - "expression": "foo[1]", - "result": {"bar": "two"} - }, - { - "expression": "foo[2]", - "result": {"bar": "three"} - }, - { - "expression": "foo[3]", - "result": {"notbar": "four"} - }, - { - "expression": "foo[4]", - "result": null - } - ] -}, -{ - "given": [ - "one", "two", "three" - ], - "cases": [ - { - "expression": "[0]", - "result": "one" - }, - { - "expression": "[1]", - "result": "two" - }, - { - "expression": "[2]", - "result": "three" - }, - { - "expression": "[-1]", - "result": "three" - }, - { - "expression": "[-2]", - "result": "two" - }, - { - "expression": "[-3]", - "result": "one" - } - ] -}, -{ - "given": {"reservations": [ - {"instances": [{"foo": 1}, {"foo": 2}]} - ]}, - "cases": [ - { - "expression": "reservations[].instances[].foo", - "result": [1, 2] - }, - { - "expression": "reservations[].instances[].bar", - "result": [] - }, - { - "expression": "reservations[].notinstances[].foo", - "result": [] - }, - { - "expression": "reservations[].notinstances[].foo", - "result": [] - } - ] -}, -{ - "given": {"reservations": [{ - "instances": [ - {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]}, - {"foo": [{"bar": 5}, {"bar": 6}, {"notbar": [7]}, {"bar": 8}]}, - {"foo": "bar"}, - {"notfoo": [{"bar": 20}, {"bar": 21}, {"notbar": [7]}, {"bar": 22}]}, - {"bar": [{"baz": [1]}, {"baz": [2]}, {"baz": [3]}, {"baz": [4]}]}, - {"baz": [{"baz": [1, 2]}, {"baz": []}, {"baz": []}, {"baz": [3, 4]}]}, - {"qux": [{"baz": []}, {"baz": [1, 2, 3]}, {"baz": [4]}, {"baz": []}]} - ], - "otherkey": {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]} - }, { - "instances": [ - {"a": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]}, - {"b": [{"bar": 5}, {"bar": 6}, {"notbar": [7]}, {"bar": 8}]}, - {"c": "bar"}, - {"notfoo": [{"bar": 23}, {"bar": 24}, {"notbar": [7]}, {"bar": 25}]}, - {"qux": [{"baz": []}, {"baz": [1, 2, 3]}, {"baz": [4]}, {"baz": []}]} - ], - "otherkey": {"foo": [{"bar": 1}, {"bar": 2}, {"notbar": 3}, {"bar": 4}]} - } - ]}, - "cases": [ - { - "expression": "reservations[].instances[].foo[].bar", - "result": [1, 2, 4, 5, 6, 8] - }, - { - "expression": "reservations[].instances[].foo[].baz", - "result": [] - }, - { - "expression": "reservations[].instances[].notfoo[].bar", - "result": [20, 21, 22, 23, 24, 25] - }, - { - "expression": "reservations[].instances[].notfoo[].notbar", - "result": [[7], [7]] - }, - { - "expression": "reservations[].notinstances[].foo", - "result": [] - }, - { - "expression": "reservations[].instances[].foo[].notbar", - "result": [3, [7]] - }, - { - "expression": "reservations[].instances[].bar[].baz", - "result": [[1], [2], [3], [4]] - }, - { - "expression": "reservations[].instances[].baz[].baz", - "result": [[1, 2], [], [], [3, 4]] - }, - { - "expression": "reservations[].instances[].qux[].baz", - "result": [[], [1, 2, 3], [4], [], [], [1, 2, 3], [4], []] - }, - { - "expression": "reservations[].instances[].qux[].baz[]", - "result": [1, 2, 3, 4, 1, 2, 3, 4] - } - ] -}, -{ - "given": { - "foo": [ - [["one", "two"], ["three", "four"]], - [["five", "six"], ["seven", "eight"]], - [["nine"], ["ten"]] - ] - }, - "cases": [ - { - "expression": "foo[]", - "result": [["one", "two"], ["three", "four"], ["five", "six"], - ["seven", "eight"], ["nine"], ["ten"]] - }, - { - "expression": "foo[][0]", - "result": ["one", "three", "five", "seven", "nine", "ten"] - }, - { - "expression": "foo[][1]", - "result": ["two", "four", "six", "eight"] - }, - { - "expression": "foo[][0][0]", - "result": [] - }, - { - "expression": "foo[][2][2]", - "result": [] - }, - { - "expression": "foo[][0][0][100]", - "result": [] - } - ] -}, -{ - "given": { - "foo": [{ - "bar": [ - { - "qux": 2, - "baz": 1 - }, - { - "qux": 4, - "baz": 3 - } - ] - }, - { - "bar": [ - { - "qux": 6, - "baz": 5 - }, - { - "qux": 8, - "baz": 7 - } - ] - } - ] - }, - "cases": [ - { - "expression": "foo", - "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, - {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] - }, - { - "expression": "foo[]", - "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, - {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] - }, - { - "expression": "foo[].bar", - "result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}], - [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]] - }, - { - "expression": "foo[].bar[]", - "result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}, - {"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}] - }, - { - "expression": "foo[].bar[].baz", - "result": [1, 3, 5, 7] - } - ] -}, -{ - "given": { - "string": "string", - "hash": {"foo": "bar", "bar": "baz"}, - "number": 23, - "nullvalue": null - }, - "cases": [ - { - "expression": "string[]", - "result": null - }, - { - "expression": "hash[]", - "result": null - }, - { - "expression": "number[]", - "result": null - }, - { - "expression": "nullvalue[]", - "result": null - }, - { - "expression": "string[].foo", - "result": null - }, - { - "expression": "hash[].foo", - "result": null - }, - { - "expression": "number[].foo", - "result": null - }, - { - "expression": "nullvalue[].foo", - "result": null - }, - { - "expression": "nullvalue[].foo[].bar", - "result": null - } - ] -} -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json deleted file mode 100644 index b796d36..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/literal.json +++ /dev/null @@ -1,190 +0,0 @@ -[ - { - "given": { - "foo": [{"name": "a"}, {"name": "b"}], - "bar": {"baz": "qux"} - }, - "cases": [ - { - "expression": "`\"foo\"`", - "result": "foo" - }, - { - "comment": "Interpret escaped unicode.", - "expression": "`\"\\u03a6\"`", - "result": "Φ" - }, - { - "expression": "`\"✓\"`", - "result": "✓" - }, - { - "expression": "`[1, 2, 3]`", - "result": [1, 2, 3] - }, - { - "expression": "`{\"a\": \"b\"}`", - "result": {"a": "b"} - }, - { - "expression": "`true`", - "result": true - }, - { - "expression": "`false`", - "result": false - }, - { - "expression": "`null`", - "result": null - }, - { - "expression": "`0`", - "result": 0 - }, - { - "expression": "`1`", - "result": 1 - }, - { - "expression": "`2`", - "result": 2 - }, - { - "expression": "`3`", - "result": 3 - }, - { - "expression": "`4`", - "result": 4 - }, - { - "expression": "`5`", - "result": 5 - }, - { - "expression": "`6`", - "result": 6 - }, - { - "expression": "`7`", - "result": 7 - }, - { - "expression": "`8`", - "result": 8 - }, - { - "expression": "`9`", - "result": 9 - }, - { - "comment": "Escaping a backtick in quotes", - "expression": "`\"foo\\`bar\"`", - "result": "foo`bar" - }, - { - "comment": "Double quote in literal", - "expression": "`\"foo\\\"bar\"`", - "result": "foo\"bar" - }, - { - "expression": "`\"1\\`\"`", - "result": "1`" - }, - { - "comment": "Multiple literal expressions with escapes", - "expression": "`\"\\\\\"`.{a:`\"b\"`}", - "result": {"a": "b"} - }, - { - "comment": "literal . identifier", - "expression": "`{\"a\": \"b\"}`.a", - "result": "b" - }, - { - "comment": "literal . identifier . identifier", - "expression": "`{\"a\": {\"b\": \"c\"}}`.a.b", - "result": "c" - }, - { - "comment": "literal . identifier bracket-expr", - "expression": "`[0, 1, 2]`[1]", - "result": 1 - } - ] - }, - { - "comment": "Literals", - "given": {"type": "object"}, - "cases": [ - { - "comment": "Literal with leading whitespace", - "expression": "` {\"foo\": true}`", - "result": {"foo": true} - }, - { - "comment": "Literal with trailing whitespace", - "expression": "`{\"foo\": true} `", - "result": {"foo": true} - }, - { - "comment": "Literal on RHS of subexpr not allowed", - "expression": "foo.`\"bar\"`", - "error": "syntax" - } - ] - }, - { - "comment": "Raw String Literals", - "given": {}, - "cases": [ - { - "expression": "'foo'", - "result": "foo" - }, - { - "expression": "' foo '", - "result": " foo " - }, - { - "expression": "'0'", - "result": "0" - }, - { - "expression": "'newline\n'", - "result": "newline\n" - }, - { - "expression": "'\n'", - "result": "\n" - }, - { - "expression": "'✓'", - "result": "✓" - }, - { - "expression": "'ð„ž'", - "result": "ð„ž" - }, - { - "expression": "' [foo] '", - "result": " [foo] " - }, - { - "expression": "'[foo]'", - "result": "[foo]" - }, - { - "comment": "Do not interpret escaped unicode.", - "expression": "'\\u03a6'", - "result": "\\u03a6" - }, - { - "comment": "Can escape the single quote", - "expression": "'foo\\'bar'", - "result": "foo'bar" - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json deleted file mode 100644 index 8f2a481..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/multiselect.json +++ /dev/null @@ -1,393 +0,0 @@ -[{ - "given": { - "foo": { - "bar": "bar", - "baz": "baz", - "qux": "qux", - "nested": { - "one": { - "a": "first", - "b": "second", - "c": "third" - }, - "two": { - "a": "first", - "b": "second", - "c": "third" - }, - "three": { - "a": "first", - "b": "second", - "c": {"inner": "third"} - } - } - }, - "bar": 1, - "baz": 2, - "qux\"": 3 - }, - "cases": [ - { - "expression": "foo.{bar: bar}", - "result": {"bar": "bar"} - }, - { - "expression": "foo.{\"bar\": bar}", - "result": {"bar": "bar"} - }, - { - "expression": "foo.{\"foo.bar\": bar}", - "result": {"foo.bar": "bar"} - }, - { - "expression": "foo.{bar: bar, baz: baz}", - "result": {"bar": "bar", "baz": "baz"} - }, - { - "expression": "foo.{\"bar\": bar, \"baz\": baz}", - "result": {"bar": "bar", "baz": "baz"} - }, - { - "expression": "{\"baz\": baz, \"qux\\\"\": \"qux\\\"\"}", - "result": {"baz": 2, "qux\"": 3} - }, - { - "expression": "foo.{bar:bar,baz:baz}", - "result": {"bar": "bar", "baz": "baz"} - }, - { - "expression": "foo.{bar: bar,qux: qux}", - "result": {"bar": "bar", "qux": "qux"} - }, - { - "expression": "foo.{bar: bar, noexist: noexist}", - "result": {"bar": "bar", "noexist": null} - }, - { - "expression": "foo.{noexist: noexist, alsonoexist: alsonoexist}", - "result": {"noexist": null, "alsonoexist": null} - }, - { - "expression": "foo.badkey.{nokey: nokey, alsonokey: alsonokey}", - "result": null - }, - { - "expression": "foo.nested.*.{a: a,b: b}", - "result": [{"a": "first", "b": "second"}, - {"a": "first", "b": "second"}, - {"a": "first", "b": "second"}] - }, - { - "expression": "foo.nested.three.{a: a, cinner: c.inner}", - "result": {"a": "first", "cinner": "third"} - }, - { - "expression": "foo.nested.three.{a: a, c: c.inner.bad.key}", - "result": {"a": "first", "c": null} - }, - { - "expression": "foo.{a: nested.one.a, b: nested.two.b}", - "result": {"a": "first", "b": "second"} - }, - { - "expression": "{bar: bar, baz: baz}", - "result": {"bar": 1, "baz": 2} - }, - { - "expression": "{bar: bar}", - "result": {"bar": 1} - }, - { - "expression": "{otherkey: bar}", - "result": {"otherkey": 1} - }, - { - "expression": "{no: no, exist: exist}", - "result": {"no": null, "exist": null} - }, - { - "expression": "foo.[bar]", - "result": ["bar"] - }, - { - "expression": "foo.[bar,baz]", - "result": ["bar", "baz"] - }, - { - "expression": "foo.[bar,qux]", - "result": ["bar", "qux"] - }, - { - "expression": "foo.[bar,noexist]", - "result": ["bar", null] - }, - { - "expression": "foo.[noexist,alsonoexist]", - "result": [null, null] - } - ] -}, { - "given": { - "foo": {"bar": 1, "baz": [2, 3, 4]} - }, - "cases": [ - { - "expression": "foo.{bar:bar,baz:baz}", - "result": {"bar": 1, "baz": [2, 3, 4]} - }, - { - "expression": "foo.[bar,baz[0]]", - "result": [1, 2] - }, - { - "expression": "foo.[bar,baz[1]]", - "result": [1, 3] - }, - { - "expression": "foo.[bar,baz[2]]", - "result": [1, 4] - }, - { - "expression": "foo.[bar,baz[3]]", - "result": [1, null] - }, - { - "expression": "foo.[bar[0],baz[3]]", - "result": [null, null] - } - ] -}, { - "given": { - "foo": {"bar": 1, "baz": 2} - }, - "cases": [ - { - "expression": "foo.{bar: bar, baz: baz}", - "result": {"bar": 1, "baz": 2} - }, - { - "expression": "foo.[bar,baz]", - "result": [1, 2] - } - ] -}, { - "given": { - "foo": { - "bar": {"baz": [{"common": "first", "one": 1}, - {"common": "second", "two": 2}]}, - "ignoreme": 1, - "includeme": true - } - }, - "cases": [ - { - "expression": "foo.{bar: bar.baz[1],includeme: includeme}", - "result": {"bar": {"common": "second", "two": 2}, "includeme": true} - }, - { - "expression": "foo.{\"bar.baz.two\": bar.baz[1].two, includeme: includeme}", - "result": {"bar.baz.two": 2, "includeme": true} - }, - { - "expression": "foo.[includeme, bar.baz[*].common]", - "result": [true, ["first", "second"]] - }, - { - "expression": "foo.[includeme, bar.baz[*].none]", - "result": [true, []] - }, - { - "expression": "foo.[includeme, bar.baz[].common]", - "result": [true, ["first", "second"]] - } - ] -}, { - "given": { - "reservations": [{ - "instances": [ - {"id": "id1", - "name": "first"}, - {"id": "id2", - "name": "second"} - ]}, { - "instances": [ - {"id": "id3", - "name": "third"}, - {"id": "id4", - "name": "fourth"} - ]} - ]}, - "cases": [ - { - "expression": "reservations[*].instances[*].{id: id, name: name}", - "result": [[{"id": "id1", "name": "first"}, {"id": "id2", "name": "second"}], - [{"id": "id3", "name": "third"}, {"id": "id4", "name": "fourth"}]] - }, - { - "expression": "reservations[].instances[].{id: id, name: name}", - "result": [{"id": "id1", "name": "first"}, - {"id": "id2", "name": "second"}, - {"id": "id3", "name": "third"}, - {"id": "id4", "name": "fourth"}] - }, - { - "expression": "reservations[].instances[].[id, name]", - "result": [["id1", "first"], - ["id2", "second"], - ["id3", "third"], - ["id4", "fourth"]] - } - ] -}, -{ - "given": { - "foo": [{ - "bar": [ - { - "qux": 2, - "baz": 1 - }, - { - "qux": 4, - "baz": 3 - } - ] - }, - { - "bar": [ - { - "qux": 6, - "baz": 5 - }, - { - "qux": 8, - "baz": 7 - } - ] - } - ] - }, - "cases": [ - { - "expression": "foo", - "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, - {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] - }, - { - "expression": "foo[]", - "result": [{"bar": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}]}, - {"bar": [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]}] - }, - { - "expression": "foo[].bar", - "result": [[{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}], - [{"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}]] - }, - { - "expression": "foo[].bar[]", - "result": [{"qux": 2, "baz": 1}, {"qux": 4, "baz": 3}, - {"qux": 6, "baz": 5}, {"qux": 8, "baz": 7}] - }, - { - "expression": "foo[].bar[].[baz, qux]", - "result": [[1, 2], [3, 4], [5, 6], [7, 8]] - }, - { - "expression": "foo[].bar[].[baz]", - "result": [[1], [3], [5], [7]] - }, - { - "expression": "foo[].bar[].[baz, qux][]", - "result": [1, 2, 3, 4, 5, 6, 7, 8] - } - ] -}, -{ - "given": { - "foo": { - "baz": [ - { - "bar": "abc" - }, { - "bar": "def" - } - ], - "qux": ["zero"] - } - }, - "cases": [ - { - "expression": "foo.[baz[*].bar, qux[0]]", - "result": [["abc", "def"], "zero"] - } - ] -}, -{ - "given": { - "foo": { - "baz": [ - { - "bar": "a", - "bam": "b", - "boo": "c" - }, { - "bar": "d", - "bam": "e", - "boo": "f" - } - ], - "qux": ["zero"] - } - }, - "cases": [ - { - "expression": "foo.[baz[*].[bar, boo], qux[0]]", - "result": [[["a", "c" ], ["d", "f" ]], "zero"] - } - ] -}, -{ - "given": { - "foo": { - "baz": [ - { - "bar": "a", - "bam": "b", - "boo": "c" - }, { - "bar": "d", - "bam": "e", - "boo": "f" - } - ], - "qux": ["zero"] - } - }, - "cases": [ - { - "expression": "foo.[baz[*].not_there || baz[*].bar, qux[0]]", - "result": [["a", "d"], "zero"] - } - ] -}, -{ - "given": {"type": "object"}, - "cases": [ - { - "comment": "Nested multiselect", - "expression": "[[*],*]", - "result": [null, ["object"]] - } - ] -}, -{ - "given": [], - "cases": [ - { - "comment": "Nested multiselect", - "expression": "[[*]]", - "result": [[]] - } - ] -} -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json deleted file mode 100644 index b10c0a4..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/pipe.json +++ /dev/null @@ -1,131 +0,0 @@ -[{ - "given": { - "foo": { - "bar": { - "baz": "subkey" - }, - "other": { - "baz": "subkey" - }, - "other2": { - "baz": "subkey" - }, - "other3": { - "notbaz": ["a", "b", "c"] - }, - "other4": { - "notbaz": ["a", "b", "c"] - } - } - }, - "cases": [ - { - "expression": "foo.*.baz | [0]", - "result": "subkey" - }, - { - "expression": "foo.*.baz | [1]", - "result": "subkey" - }, - { - "expression": "foo.*.baz | [2]", - "result": "subkey" - }, - { - "expression": "foo.bar.* | [0]", - "result": "subkey" - }, - { - "expression": "foo.*.notbaz | [*]", - "result": [["a", "b", "c"], ["a", "b", "c"]] - }, - { - "expression": "{\"a\": foo.bar, \"b\": foo.other} | *.baz", - "result": ["subkey", "subkey"] - } - ] -}, { - "given": { - "foo": { - "bar": { - "baz": "one" - }, - "other": { - "baz": "two" - }, - "other2": { - "baz": "three" - }, - "other3": { - "notbaz": ["a", "b", "c"] - }, - "other4": { - "notbaz": ["d", "e", "f"] - } - } - }, - "cases": [ - { - "expression": "foo | bar", - "result": {"baz": "one"} - }, - { - "expression": "foo | bar | baz", - "result": "one" - }, - { - "expression": "foo|bar| baz", - "result": "one" - }, - { - "expression": "not_there | [0]", - "result": null - }, - { - "expression": "not_there | [0]", - "result": null - }, - { - "expression": "[foo.bar, foo.other] | [0]", - "result": {"baz": "one"} - }, - { - "expression": "{\"a\": foo.bar, \"b\": foo.other} | a", - "result": {"baz": "one"} - }, - { - "expression": "{\"a\": foo.bar, \"b\": foo.other} | b", - "result": {"baz": "two"} - }, - { - "expression": "foo.bam || foo.bar | baz", - "result": "one" - }, - { - "expression": "foo | not_there || bar", - "result": {"baz": "one"} - } - ] -}, { - "given": { - "foo": [{ - "bar": [{ - "baz": "one" - }, { - "baz": "two" - }] - }, { - "bar": [{ - "baz": "three" - }, { - "baz": "four" - }] - }] - }, - "cases": [ - { - "expression": "foo[*].bar[*] | [0][0]", - "result": {"baz": "one"} - } - ] -}] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json deleted file mode 100644 index 3594772..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/slice.json +++ /dev/null @@ -1,187 +0,0 @@ -[{ - "given": { - "foo": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], - "bar": { - "baz": 1 - } - }, - "cases": [ - { - "expression": "bar[0:10]", - "result": null - }, - { - "expression": "foo[0:10:1]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[0:10]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[0:10:]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[0::1]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[0::]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[0:]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[:10:1]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[::1]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[:10:]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[::]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[:]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[1:9]", - "result": [1, 2, 3, 4, 5, 6, 7, 8] - }, - { - "expression": "foo[0:10:2]", - "result": [0, 2, 4, 6, 8] - }, - { - "expression": "foo[5:]", - "result": [5, 6, 7, 8, 9] - }, - { - "expression": "foo[5::2]", - "result": [5, 7, 9] - }, - { - "expression": "foo[::2]", - "result": [0, 2, 4, 6, 8] - }, - { - "expression": "foo[::-1]", - "result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] - }, - { - "expression": "foo[1::2]", - "result": [1, 3, 5, 7, 9] - }, - { - "expression": "foo[10:0:-1]", - "result": [9, 8, 7, 6, 5, 4, 3, 2, 1] - }, - { - "expression": "foo[10:5:-1]", - "result": [9, 8, 7, 6] - }, - { - "expression": "foo[8:2:-2]", - "result": [8, 6, 4] - }, - { - "expression": "foo[0:20]", - "result": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] - }, - { - "expression": "foo[10:-20:-1]", - "result": [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] - }, - { - "expression": "foo[10:-20]", - "result": [] - }, - { - "expression": "foo[-4:-1]", - "result": [6, 7, 8] - }, - { - "expression": "foo[:-5:-1]", - "result": [9, 8, 7, 6] - }, - { - "expression": "foo[8:2:0]", - "error": "invalid-value" - }, - { - "expression": "foo[8:2:0:1]", - "error": "syntax" - }, - { - "expression": "foo[8:2&]", - "error": "syntax" - }, - { - "expression": "foo[2:a:3]", - "error": "syntax" - } - ] -}, { - "given": { - "foo": [{"a": 1}, {"a": 2}, {"a": 3}], - "bar": [{"a": {"b": 1}}, {"a": {"b": 2}}, - {"a": {"b": 3}}], - "baz": 50 - }, - "cases": [ - { - "expression": "foo[:2].a", - "result": [1, 2] - }, - { - "expression": "foo[:2].b", - "result": [] - }, - { - "expression": "foo[:2].a.b", - "result": [] - }, - { - "expression": "bar[::-1].a.b", - "result": [3, 2, 1] - }, - { - "expression": "bar[:2].a.b", - "result": [1, 2] - }, - { - "expression": "baz[:2].a", - "result": null - } - ] -}, { - "given": [{"a": 1}, {"a": 2}, {"a": 3}], - "cases": [ - { - "expression": "[:]", - "result": [{"a": 1}, {"a": 2}, {"a": 3}] - }, - { - "expression": "[:2].a", - "result": [1, 2] - }, - { - "expression": "[::-1].a", - "result": [3, 2, 1] - }, - { - "expression": "[:2].b", - "result": [] - } - ] -}] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json deleted file mode 100644 index 003c294..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/syntax.json +++ /dev/null @@ -1,616 +0,0 @@ -[{ - "comment": "Dot syntax", - "given": {"type": "object"}, - "cases": [ - { - "expression": "foo.bar", - "result": null - }, - { - "expression": "foo.1", - "error": "syntax" - }, - { - "expression": "foo.-11", - "error": "syntax" - }, - { - "expression": "foo", - "result": null - }, - { - "expression": "foo.", - "error": "syntax" - }, - { - "expression": "foo.", - "error": "syntax" - }, - { - "expression": ".foo", - "error": "syntax" - }, - { - "expression": "foo..bar", - "error": "syntax" - }, - { - "expression": "foo.bar.", - "error": "syntax" - }, - { - "expression": "foo[.]", - "error": "syntax" - } - ] -}, - { - "comment": "Simple token errors", - "given": {"type": "object"}, - "cases": [ - { - "expression": ".", - "error": "syntax" - }, - { - "expression": ":", - "error": "syntax" - }, - { - "expression": ",", - "error": "syntax" - }, - { - "expression": "]", - "error": "syntax" - }, - { - "expression": "[", - "error": "syntax" - }, - { - "expression": "}", - "error": "syntax" - }, - { - "expression": "{", - "error": "syntax" - }, - { - "expression": ")", - "error": "syntax" - }, - { - "expression": "(", - "error": "syntax" - }, - { - "expression": "((&", - "error": "syntax" - }, - { - "expression": "a[", - "error": "syntax" - }, - { - "expression": "a]", - "error": "syntax" - }, - { - "expression": "a][", - "error": "syntax" - }, - { - "expression": "!", - "error": "syntax" - } - ] - }, - { - "comment": "Boolean syntax errors", - "given": {"type": "object"}, - "cases": [ - { - "expression": "![!(!", - "error": "syntax" - } - ] - }, - { - "comment": "Wildcard syntax", - "given": {"type": "object"}, - "cases": [ - { - "expression": "*", - "result": ["object"] - }, - { - "expression": "*.*", - "result": [] - }, - { - "expression": "*.foo", - "result": [] - }, - { - "expression": "*[0]", - "result": [] - }, - { - "expression": ".*", - "error": "syntax" - }, - { - "expression": "*foo", - "error": "syntax" - }, - { - "expression": "*0", - "error": "syntax" - }, - { - "expression": "foo[*]bar", - "error": "syntax" - }, - { - "expression": "foo[*]*", - "error": "syntax" - } - ] - }, - { - "comment": "Flatten syntax", - "given": {"type": "object"}, - "cases": [ - { - "expression": "[]", - "result": null - } - ] - }, - { - "comment": "Simple bracket syntax", - "given": {"type": "object"}, - "cases": [ - { - "expression": "[0]", - "result": null - }, - { - "expression": "[*]", - "result": null - }, - { - "expression": "*.[0]", - "error": "syntax" - }, - { - "expression": "*.[\"0\"]", - "result": [[null]] - }, - { - "expression": "[*].bar", - "result": null - }, - { - "expression": "[*][0]", - "result": null - }, - { - "expression": "foo[#]", - "error": "syntax" - } - ] - }, - { - "comment": "Multi-select list syntax", - "given": {"type": "object"}, - "cases": [ - { - "expression": "foo[0]", - "result": null - }, - { - "comment": "Valid multi-select of a list", - "expression": "foo[0, 1]", - "error": "syntax" - }, - { - "expression": "foo.[0]", - "error": "syntax" - }, - { - "expression": "foo.[*]", - "result": null - }, - { - "comment": "Multi-select of a list with trailing comma", - "expression": "foo[0, ]", - "error": "syntax" - }, - { - "comment": "Multi-select of a list with trailing comma and no close", - "expression": "foo[0,", - "error": "syntax" - }, - { - "comment": "Multi-select of a list with trailing comma and no close", - "expression": "foo.[a", - "error": "syntax" - }, - { - "comment": "Multi-select of a list with extra comma", - "expression": "foo[0,, 1]", - "error": "syntax" - }, - { - "comment": "Multi-select of a list using an identifier index", - "expression": "foo[abc]", - "error": "syntax" - }, - { - "comment": "Multi-select of a list using identifier indices", - "expression": "foo[abc, def]", - "error": "syntax" - }, - { - "comment": "Multi-select of a list using an identifier index", - "expression": "foo[abc, 1]", - "error": "syntax" - }, - { - "comment": "Multi-select of a list using an identifier index with trailing comma", - "expression": "foo[abc, ]", - "error": "syntax" - }, - { - "comment": "Valid multi-select of a hash using an identifier index", - "expression": "foo.[abc]", - "result": null - }, - { - "comment": "Valid multi-select of a hash", - "expression": "foo.[abc, def]", - "result": null - }, - { - "comment": "Multi-select of a hash using a numeric index", - "expression": "foo.[abc, 1]", - "error": "syntax" - }, - { - "comment": "Multi-select of a hash with a trailing comma", - "expression": "foo.[abc, ]", - "error": "syntax" - }, - { - "comment": "Multi-select of a hash with extra commas", - "expression": "foo.[abc,, def]", - "error": "syntax" - }, - { - "comment": "Multi-select of a hash using number indices", - "expression": "foo.[0, 1]", - "error": "syntax" - } - ] - }, - { - "comment": "Multi-select hash syntax", - "given": {"type": "object"}, - "cases": [ - { - "comment": "No key or value", - "expression": "a{}", - "error": "syntax" - }, - { - "comment": "No closing token", - "expression": "a{", - "error": "syntax" - }, - { - "comment": "Not a key value pair", - "expression": "a{foo}", - "error": "syntax" - }, - { - "comment": "Missing value and closing character", - "expression": "a{foo:", - "error": "syntax" - }, - { - "comment": "Missing closing character", - "expression": "a{foo: 0", - "error": "syntax" - }, - { - "comment": "Missing value", - "expression": "a{foo:}", - "error": "syntax" - }, - { - "comment": "Trailing comma and no closing character", - "expression": "a{foo: 0, ", - "error": "syntax" - }, - { - "comment": "Missing value with trailing comma", - "expression": "a{foo: ,}", - "error": "syntax" - }, - { - "comment": "Accessing Array using an identifier", - "expression": "a{foo: bar}", - "error": "syntax" - }, - { - "expression": "a{foo: 0}", - "error": "syntax" - }, - { - "comment": "Missing key-value pair", - "expression": "a.{}", - "error": "syntax" - }, - { - "comment": "Not a key-value pair", - "expression": "a.{foo}", - "error": "syntax" - }, - { - "comment": "Missing value", - "expression": "a.{foo:}", - "error": "syntax" - }, - { - "comment": "Missing value with trailing comma", - "expression": "a.{foo: ,}", - "error": "syntax" - }, - { - "comment": "Valid multi-select hash extraction", - "expression": "a.{foo: bar}", - "result": null - }, - { - "comment": "Valid multi-select hash extraction", - "expression": "a.{foo: bar, baz: bam}", - "result": null - }, - { - "comment": "Trailing comma", - "expression": "a.{foo: bar, }", - "error": "syntax" - }, - { - "comment": "Missing key in second key-value pair", - "expression": "a.{foo: bar, baz}", - "error": "syntax" - }, - { - "comment": "Missing value in second key-value pair", - "expression": "a.{foo: bar, baz:}", - "error": "syntax" - }, - { - "comment": "Trailing comma", - "expression": "a.{foo: bar, baz: bam, }", - "error": "syntax" - }, - { - "comment": "Nested multi select", - "expression": "{\"\\\\\":{\" \":*}}", - "result": {"\\": {" ": ["object"]}} - } - ] - }, - { - "comment": "Or expressions", - "given": {"type": "object"}, - "cases": [ - { - "expression": "foo || bar", - "result": null - }, - { - "expression": "foo ||", - "error": "syntax" - }, - { - "expression": "foo.|| bar", - "error": "syntax" - }, - { - "expression": " || foo", - "error": "syntax" - }, - { - "expression": "foo || || foo", - "error": "syntax" - }, - { - "expression": "foo.[a || b]", - "result": null - }, - { - "expression": "foo.[a ||]", - "error": "syntax" - }, - { - "expression": "\"foo", - "error": "syntax" - } - ] - }, - { - "comment": "Filter expressions", - "given": {"type": "object"}, - "cases": [ - { - "expression": "foo[?bar==`\"baz\"`]", - "result": null - }, - { - "expression": "foo[? bar == `\"baz\"` ]", - "result": null - }, - { - "expression": "foo[ ?bar==`\"baz\"`]", - "error": "syntax" - }, - { - "expression": "foo[?bar==]", - "error": "syntax" - }, - { - "expression": "foo[?==]", - "error": "syntax" - }, - { - "expression": "foo[?==bar]", - "error": "syntax" - }, - { - "expression": "foo[?bar==baz?]", - "error": "syntax" - }, - { - "expression": "foo[?a.b.c==d.e.f]", - "result": null - }, - { - "expression": "foo[?bar==`[0, 1, 2]`]", - "result": null - }, - { - "expression": "foo[?bar==`[\"a\", \"b\", \"c\"]`]", - "result": null - }, - { - "comment": "Literal char not escaped", - "expression": "foo[?bar==`[\"foo`bar\"]`]", - "error": "syntax" - }, - { - "comment": "Literal char escaped", - "expression": "foo[?bar==`[\"foo\\`bar\"]`]", - "result": null - }, - { - "comment": "Unknown comparator", - "expression": "foo[?bar<>baz]", - "error": "syntax" - }, - { - "comment": "Unknown comparator", - "expression": "foo[?bar^baz]", - "error": "syntax" - }, - { - "expression": "foo[bar==baz]", - "error": "syntax" - }, - { - "comment": "Quoted identifier in filter expression no spaces", - "expression": "[?\"\\\\\">`\"foo\"`]", - "result": null - }, - { - "comment": "Quoted identifier in filter expression with spaces", - "expression": "[?\"\\\\\" > `\"foo\"`]", - "result": null - } - ] - }, - { - "comment": "Filter expression errors", - "given": {"type": "object"}, - "cases": [ - { - "expression": "bar.`\"anything\"`", - "error": "syntax" - }, - { - "expression": "bar.baz.noexists.`\"literal\"`", - "error": "syntax" - }, - { - "comment": "Literal wildcard projection", - "expression": "foo[*].`\"literal\"`", - "error": "syntax" - }, - { - "expression": "foo[*].name.`\"literal\"`", - "error": "syntax" - }, - { - "expression": "foo[].name.`\"literal\"`", - "error": "syntax" - }, - { - "expression": "foo[].name.`\"literal\"`.`\"subliteral\"`", - "error": "syntax" - }, - { - "comment": "Projecting a literal onto an empty list", - "expression": "foo[*].name.noexist.`\"literal\"`", - "error": "syntax" - }, - { - "expression": "foo[].name.noexist.`\"literal\"`", - "error": "syntax" - }, - { - "expression": "twolen[*].`\"foo\"`", - "error": "syntax" - }, - { - "comment": "Two level projection of a literal", - "expression": "twolen[*].threelen[*].`\"bar\"`", - "error": "syntax" - }, - { - "comment": "Two level flattened projection of a literal", - "expression": "twolen[].threelen[].`\"bar\"`", - "error": "syntax" - } - ] - }, - { - "comment": "Identifiers", - "given": {"type": "object"}, - "cases": [ - { - "expression": "foo", - "result": null - }, - { - "expression": "\"foo\"", - "result": null - }, - { - "expression": "\"\\\\\"", - "result": null - } - ] - }, - { - "comment": "Combined syntax", - "given": [], - "cases": [ - { - "expression": "*||*|*|*", - "result": null - }, - { - "expression": "*[]||[*]", - "result": [] - }, - { - "expression": "[*.*]", - "result": [null] - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json deleted file mode 100644 index 6b07b0b..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/unicode.json +++ /dev/null @@ -1,38 +0,0 @@ -[ - { - "given": {"foo": [{"✓": "✓"}, {"✓": "✗"}]}, - "cases": [ - { - "expression": "foo[].\"✓\"", - "result": ["✓", "✗"] - } - ] - }, - { - "given": {"☯": true}, - "cases": [ - { - "expression": "\"☯\"", - "result": true - } - ] - }, - { - "given": {"♪♫•*¨*•.¸¸â¤Â¸Â¸.•*¨*•♫♪": true}, - "cases": [ - { - "expression": "\"♪♫•*¨*•.¸¸â¤Â¸Â¸.•*¨*•♫♪\"", - "result": true - } - ] - }, - { - "given": {"☃": true}, - "cases": [ - { - "expression": "\"☃\"", - "result": true - } - ] - } -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json b/node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json deleted file mode 100644 index 3bcec30..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/compliance/wildcard.json +++ /dev/null @@ -1,460 +0,0 @@ -[{ - "given": { - "foo": { - "bar": { - "baz": "val" - }, - "other": { - "baz": "val" - }, - "other2": { - "baz": "val" - }, - "other3": { - "notbaz": ["a", "b", "c"] - }, - "other4": { - "notbaz": ["a", "b", "c"] - }, - "other5": { - "other": { - "a": 1, - "b": 1, - "c": 1 - } - } - } - }, - "cases": [ - { - "expression": "foo.*.baz", - "result": ["val", "val", "val"] - }, - { - "expression": "foo.bar.*", - "result": ["val"] - }, - { - "expression": "foo.*.notbaz", - "result": [["a", "b", "c"], ["a", "b", "c"]] - }, - { - "expression": "foo.*.notbaz[0]", - "result": ["a", "a"] - }, - { - "expression": "foo.*.notbaz[-1]", - "result": ["c", "c"] - } - ] -}, { - "given": { - "foo": { - "first-1": { - "second-1": "val" - }, - "first-2": { - "second-1": "val" - }, - "first-3": { - "second-1": "val" - } - } - }, - "cases": [ - { - "expression": "foo.*", - "result": [{"second-1": "val"}, {"second-1": "val"}, - {"second-1": "val"}] - }, - { - "expression": "foo.*.*", - "result": [["val"], ["val"], ["val"]] - }, - { - "expression": "foo.*.*.*", - "result": [[], [], []] - }, - { - "expression": "foo.*.*.*.*", - "result": [[], [], []] - } - ] -}, { - "given": { - "foo": { - "bar": "one" - }, - "other": { - "bar": "one" - }, - "nomatch": { - "notbar": "three" - } - }, - "cases": [ - { - "expression": "*.bar", - "result": ["one", "one"] - } - ] -}, { - "given": { - "top1": { - "sub1": {"foo": "one"} - }, - "top2": { - "sub1": {"foo": "one"} - } - }, - "cases": [ - { - "expression": "*", - "result": [{"sub1": {"foo": "one"}}, - {"sub1": {"foo": "one"}}] - }, - { - "expression": "*.sub1", - "result": [{"foo": "one"}, - {"foo": "one"}] - }, - { - "expression": "*.*", - "result": [[{"foo": "one"}], - [{"foo": "one"}]] - }, - { - "expression": "*.*.foo[]", - "result": ["one", "one"] - }, - { - "expression": "*.sub1.foo", - "result": ["one", "one"] - } - ] -}, -{ - "given": - {"foo": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}]}, - "cases": [ - { - "expression": "foo[*].bar", - "result": ["one", "two", "three"] - }, - { - "expression": "foo[*].notbar", - "result": ["four"] - } - ] -}, -{ - "given": - [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}], - "cases": [ - { - "expression": "[*]", - "result": [{"bar": "one"}, {"bar": "two"}, {"bar": "three"}, {"notbar": "four"}] - }, - { - "expression": "[*].bar", - "result": ["one", "two", "three"] - }, - { - "expression": "[*].notbar", - "result": ["four"] - } - ] -}, -{ - "given": { - "foo": { - "bar": [ - {"baz": ["one", "two", "three"]}, - {"baz": ["four", "five", "six"]}, - {"baz": ["seven", "eight", "nine"]} - ] - } - }, - "cases": [ - { - "expression": "foo.bar[*].baz", - "result": [["one", "two", "three"], ["four", "five", "six"], ["seven", "eight", "nine"]] - }, - { - "expression": "foo.bar[*].baz[0]", - "result": ["one", "four", "seven"] - }, - { - "expression": "foo.bar[*].baz[1]", - "result": ["two", "five", "eight"] - }, - { - "expression": "foo.bar[*].baz[2]", - "result": ["three", "six", "nine"] - }, - { - "expression": "foo.bar[*].baz[3]", - "result": [] - } - ] -}, -{ - "given": { - "foo": { - "bar": [["one", "two"], ["three", "four"]] - } - }, - "cases": [ - { - "expression": "foo.bar[*]", - "result": [["one", "two"], ["three", "four"]] - }, - { - "expression": "foo.bar[0]", - "result": ["one", "two"] - }, - { - "expression": "foo.bar[0][0]", - "result": "one" - }, - { - "expression": "foo.bar[0][0][0]", - "result": null - }, - { - "expression": "foo.bar[0][0][0][0]", - "result": null - }, - { - "expression": "foo[0][0]", - "result": null - } - ] -}, -{ - "given": { - "foo": [ - {"bar": [{"kind": "basic"}, {"kind": "intermediate"}]}, - {"bar": [{"kind": "advanced"}, {"kind": "expert"}]}, - {"bar": "string"} - ] - - }, - "cases": [ - { - "expression": "foo[*].bar[*].kind", - "result": [["basic", "intermediate"], ["advanced", "expert"]] - }, - { - "expression": "foo[*].bar[0].kind", - "result": ["basic", "advanced"] - } - ] -}, -{ - "given": { - "foo": [ - {"bar": {"kind": "basic"}}, - {"bar": {"kind": "intermediate"}}, - {"bar": {"kind": "advanced"}}, - {"bar": {"kind": "expert"}}, - {"bar": "string"} - ] - }, - "cases": [ - { - "expression": "foo[*].bar.kind", - "result": ["basic", "intermediate", "advanced", "expert"] - } - ] -}, -{ - "given": { - "foo": [{"bar": ["one", "two"]}, {"bar": ["three", "four"]}, {"bar": ["five"]}] - }, - "cases": [ - { - "expression": "foo[*].bar[0]", - "result": ["one", "three", "five"] - }, - { - "expression": "foo[*].bar[1]", - "result": ["two", "four"] - }, - { - "expression": "foo[*].bar[2]", - "result": [] - } - ] -}, -{ - "given": { - "foo": [{"bar": []}, {"bar": []}, {"bar": []}] - }, - "cases": [ - { - "expression": "foo[*].bar[0]", - "result": [] - } - ] -}, -{ - "given": { - "foo": [["one", "two"], ["three", "four"], ["five"]] - }, - "cases": [ - { - "expression": "foo[*][0]", - "result": ["one", "three", "five"] - }, - { - "expression": "foo[*][1]", - "result": ["two", "four"] - } - ] -}, -{ - "given": { - "foo": [ - [ - ["one", "two"], ["three", "four"] - ], [ - ["five", "six"], ["seven", "eight"] - ], [ - ["nine"], ["ten"] - ] - ] - }, - "cases": [ - { - "expression": "foo[*][0]", - "result": [["one", "two"], ["five", "six"], ["nine"]] - }, - { - "expression": "foo[*][1]", - "result": [["three", "four"], ["seven", "eight"], ["ten"]] - }, - { - "expression": "foo[*][0][0]", - "result": ["one", "five", "nine"] - }, - { - "expression": "foo[*][1][0]", - "result": ["three", "seven", "ten"] - }, - { - "expression": "foo[*][0][1]", - "result": ["two", "six"] - }, - { - "expression": "foo[*][1][1]", - "result": ["four", "eight"] - }, - { - "expression": "foo[*][2]", - "result": [] - }, - { - "expression": "foo[*][2][2]", - "result": [] - }, - { - "expression": "bar[*]", - "result": null - }, - { - "expression": "bar[*].baz[*]", - "result": null - } - ] -}, -{ - "given": { - "string": "string", - "hash": {"foo": "bar", "bar": "baz"}, - "number": 23, - "nullvalue": null - }, - "cases": [ - { - "expression": "string[*]", - "result": null - }, - { - "expression": "hash[*]", - "result": null - }, - { - "expression": "number[*]", - "result": null - }, - { - "expression": "nullvalue[*]", - "result": null - }, - { - "expression": "string[*].foo", - "result": null - }, - { - "expression": "hash[*].foo", - "result": null - }, - { - "expression": "number[*].foo", - "result": null - }, - { - "expression": "nullvalue[*].foo", - "result": null - }, - { - "expression": "nullvalue[*].foo[*].bar", - "result": null - } - ] -}, -{ - "given": { - "string": "string", - "hash": {"foo": "val", "bar": "val"}, - "number": 23, - "array": [1, 2, 3], - "nullvalue": null - }, - "cases": [ - { - "expression": "string.*", - "result": null - }, - { - "expression": "hash.*", - "result": ["val", "val"] - }, - { - "expression": "number.*", - "result": null - }, - { - "expression": "array.*", - "result": null - }, - { - "expression": "nullvalue.*", - "result": null - } - ] -}, -{ - "given": { - "a": [0, 1, 2], - "b": [0, 1, 2] - }, - "cases": [ - { - "expression": "*[0]", - "result": [0, 0] - } - ] -} -] diff --git a/node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js b/node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js deleted file mode 100644 index 15f61c1..0000000 --- a/node_modules/aws-sdk/node_modules/jmespath/test/jmespath.js +++ /dev/null @@ -1,217 +0,0 @@ -var assert = require('assert'); -var jmespath = require('../jmespath'); -var tokenize = jmespath.tokenize; -var compile = jmespath.compile; -var strictDeepEqual = jmespath.strictDeepEqual; - - -describe('tokenize', function() { - it('should tokenize unquoted identifier', function() { - assert.deepEqual(tokenize('foo'), - [{type: "UnquotedIdentifier", - value: "foo", - start: 0}]); - }); - it('should tokenize unquoted identifier with underscore', function() { - assert.deepEqual(tokenize('_underscore'), - [{type: "UnquotedIdentifier", - value: "_underscore", - start: 0}]); - }); - it('should tokenize unquoted identifier with numbers', function() { - assert.deepEqual(tokenize('foo123'), - [{type: "UnquotedIdentifier", - value: "foo123", - start: 0}]); - }); - it('should tokenize dotted lookups', function() { - assert.deepEqual( - tokenize('foo.bar'), - [{type: "UnquotedIdentifier", value: "foo", start: 0}, - {type: "Dot", value: ".", start: 3}, - {type: "UnquotedIdentifier", value: "bar", start: 4}, - ]); - }); - it('should tokenize numbers', function() { - assert.deepEqual( - tokenize('foo[0]'), - [{type: "UnquotedIdentifier", value: "foo", start: 0}, - {type: "Lbracket", value: "[", start: 3}, - {type: "Number", value: 0, start: 4}, - {type: "Rbracket", value: "]", start: 5}, - ]); - }); - it('should tokenize numbers with multiple digits', function() { - assert.deepEqual( - tokenize("12345"), - [{type: "Number", value: 12345, start: 0}]); - }); - it('should tokenize negative numbers', function() { - assert.deepEqual( - tokenize("-12345"), - [{type: "Number", value: -12345, start: 0}]); - }); - it('should tokenize quoted identifier', function() { - assert.deepEqual(tokenize('"foo"'), - [{type: "QuotedIdentifier", - value: "foo", - start: 0}]); - }); - it('should tokenize quoted identifier with unicode escape', function() { - assert.deepEqual(tokenize('"\\u2713"'), - [{type: "QuotedIdentifier", - value: "✓", - start: 0}]); - }); - it('should tokenize literal lists', function() { - assert.deepEqual(tokenize("`[0, 1]`"), - [{type: "Literal", - value: [0, 1], - start: 0}]); - }); - it('should tokenize literal dict', function() { - assert.deepEqual(tokenize("`{\"foo\": \"bar\"}`"), - [{type: "Literal", - value: {"foo": "bar"}, - start: 0}]); - }); - it('should tokenize literal strings', function() { - assert.deepEqual(tokenize("`\"foo\"`"), - [{type: "Literal", - value: "foo", - start: 0}]); - }); - it('should tokenize json literals', function() { - assert.deepEqual(tokenize("`true`"), - [{type: "Literal", - value: true, - start: 0}]); - }); - it('should not requiring surrounding quotes for strings', function() { - assert.deepEqual(tokenize("`foo`"), - [{type: "Literal", - value: "foo", - start: 0}]); - }); - it('should not requiring surrounding quotes for numbers', function() { - assert.deepEqual(tokenize("`20`"), - [{type: "Literal", - value: 20, - start: 0}]); - }); - it('should tokenize literal lists with chars afterwards', function() { - assert.deepEqual( - tokenize("`[0, 1]`[0]"), [ - {type: "Literal", value: [0, 1], start: 0}, - {type: "Lbracket", value: "[", start: 8}, - {type: "Number", value: 0, start: 9}, - {type: "Rbracket", value: "]", start: 10} - ]); - }); - it('should tokenize two char tokens with shared prefix', function() { - assert.deepEqual( - tokenize("[?foo]"), - [{type: "Filter", value: "[?", start: 0}, - {type: "UnquotedIdentifier", value: "foo", start: 2}, - {type: "Rbracket", value: "]", start: 5}] - ); - }); - it('should tokenize flatten operator', function() { - assert.deepEqual( - tokenize("[]"), - [{type: "Flatten", value: "[]", start: 0}]); - }); - it('should tokenize comparators', function() { - assert.deepEqual(tokenize("<"), - [{type: "LT", - value: "<", - start: 0}]); - }); - it('should tokenize two char tokens without shared prefix', function() { - assert.deepEqual( - tokenize("=="), - [{type: "EQ", value: "==", start: 0}] - ); - }); - it('should tokenize not equals', function() { - assert.deepEqual( - tokenize("!="), - [{type: "NE", value: "!=", start: 0}] - ); - }); - it('should tokenize the OR token', function() { - assert.deepEqual( - tokenize("a||b"), - [ - {type: "UnquotedIdentifier", value: "a", start: 0}, - {type: "Or", value: "||", start: 1}, - {type: "UnquotedIdentifier", value: "b", start: 3} - ] - ); - }); - it('should tokenize function calls', function() { - assert.deepEqual( - tokenize("abs(@)"), - [ - {type: "UnquotedIdentifier", value: "abs", start: 0}, - {type: "Lparen", value: "(", start: 3}, - {type: "Current", value: "@", start: 4}, - {type: "Rparen", value: ")", start: 5} - ] - ); - }); -}); - - -describe('parsing', function() { - it('should parse field node', function() { - assert.deepEqual(compile('foo'), - {type: 'Field', name: 'foo'}); - }); -}); - -describe('strictDeepEqual', function() { - it('should compare scalars', function() { - assert.strictEqual(strictDeepEqual('a', 'a'), true); - }); - it('should be false for different types', function() { - assert.strictEqual(strictDeepEqual('a', 2), false); - }); - it('should be false for arrays of different lengths', function() { - assert.strictEqual(strictDeepEqual([0, 1], [1, 2, 3]), false); - }); - it('should be true for identical arrays', function() { - assert.strictEqual(strictDeepEqual([0, 1], [0, 1]), true); - }); - it('should be true for nested arrays', function() { - assert.strictEqual( - strictDeepEqual([[0, 1], [2, 3]], [[0, 1], [2, 3]]), true); - }); - it('should be true for nested arrays of strings', function() { - assert.strictEqual( - strictDeepEqual([["a", "b"], ["c", "d"]], - [["a", "b"], ["c", "d"]]), true); - }); - it('should be false for different arrays of the same length', function() { - assert.strictEqual(strictDeepEqual([0, 1], [1, 2]), false); - }); - it('should handle object literals', function() { - assert.strictEqual(strictDeepEqual({a: 1, b: 2}, {a: 1, b: 2}), true); - }); - it('should handle keys in first not in second', function() { - assert.strictEqual(strictDeepEqual({a: 1, b: 2}, {a: 1}), false); - }); - it('should handle keys in second not in first', function() { - assert.strictEqual(strictDeepEqual({a: 1}, {a: 1, b: 2}), false); - }); - it('should handle nested objects', function() { - assert.strictEqual( - strictDeepEqual({a: {b: [1, 2]}}, - {a: {b: [1, 2]}}), true); - }); - it('should handle nested objects that are not equal', function() { - assert.strictEqual( - strictDeepEqual({a: {b: [1, 2]}}, - {a: {b: [1, 4]}}), false); - }); -}); diff --git a/node_modules/aws-sdk/node_modules/querystring/.History.md.un~ b/node_modules/aws-sdk/node_modules/querystring/.History.md.un~ deleted file mode 100644 index c96a7dd8c8c86e2e4b6af0478b1bc122b929528d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7960 zcmeI1O>0v@6ozk__}SL4mLj+rD1;VG%uP&mDblr2L05iY+Y|yOx0H0*MfHaW;zHes zKR`F`T=@gs`hk0K;X==IGN(>L?aJBB3n!DAdy@?3;XU`)S!)7yiU;&V2&^z8MM z_O~xGQz3{XCeC6fM$1j%OzWXru>3x=E^Ac0e$!mpo5+#Xq5{S_vTkUMz zuW+=IJ^08`5g#ydh*13&{hirr8vkDgRy%8%;>fZe=l$2h@R$S`78YHj-l(_SW!G%v zd987!mUrA@dr#qUMp?pSNJ_l70&gjVNBWOSOu%a%Tp;ai+aKUqn`0q4k1WKLz+3(o zyv!FzkZ`p#0hgesNr*^7R0*PsAtG=bmpCcGHEe#=fQ9Dmz#6q#%RwOxR6L$U>@xmX=tfkh&gPir=9Y8Y%7Y^LoR2jl5aQTOJ*#w5#Al zqW${GB%vb7^QPhnO@ ZFiAa69(m~N+kCx4vvqx5-`@NB>JPML-n9S# diff --git a/node_modules/aws-sdk/node_modules/querystring/.Readme.md.un~ b/node_modules/aws-sdk/node_modules/querystring/.Readme.md.un~ deleted file mode 100644 index 71613b59ba1b551647a6ba1b47180a44ac70212b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3225 zcmeHJyGjE=6dhxHHnxHY5fx2g(wK;m2tL4CM2U#VlB~&Ul8rO75g(v-*8YIKrG>3O zV4?PwVrgY5de3Y|*AUQ%YqbYXhTNHb%sprCofWHezFeNSA6e+|G>1{HPna%a9q zp?4>dB~Fx_m_f}bEc`<0w6uAF!lBtZI=41*ERw;dU*sfHzCq6QQM z(+C8rAq#$jR2#4V2qA}7&H7al*JZhx3SRRAv~Tn57%zhgoI^2MwfumpG2qeK*kR#H{5#i5Mo3~;7 L>#09+@^tYI$G;b9 diff --git a/node_modules/aws-sdk/node_modules/querystring/.package.json.un~ b/node_modules/aws-sdk/node_modules/querystring/.package.json.un~ deleted file mode 100644 index d86fe314c5aaeffce89d94a968668c5dc133ba5b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5710 zcmeHLOKTKC5T3-u_&`k*#kb>v5n;0rb>mwIL_}{n=tV>}yR&9w=i$t5j7Sb%Jt!(3 z#j~D7Px=RZ9K@@FM-@en9!0;erhB)O4H6P_n}%advIf~Yu2>IpEI{p6-nwZjxRQ_iVj17;! z7CJ2J*JjwJ>o);g0aDRz+b#V7{%--S(oLa`NW0+oTY(hIAm$NE$+IKoH;x2dTe_-tEeJ1%Z=M1ZOox*jx?OI z;BL#4u&_;g6>?JdLDdHdv+jf{mN*-jUEZjtZacu}T8rR|E0G&EBxgdCoe_|JP<3oZ zXPoEn(AB0BU5^`)>tD`Yi8Hi<9^r$q^VYWWHHj*1MG`eAH4Fdhb|Wvc+)NN4N9X%K3+ zEKs&QiS=YhP9l&-zN|bI3e_tiYvT!kL8pQ(EANE5Xp-L@KxffBJhNzqo*gxPshdMm zK?etI-&BrA!L`_lYweI$<0LH0a(RkNUQlh;oj4y(l>J8FxwY&0ao5jRyeew2 zos-I(uLPbK_$!kb(xC? zt2)(Y$kTvqZ^(7(P+!ME0h4Y(wM`b+Ts#Sv$$c2M2V_`zKp#dnPzh76GZof@h|h5W zrq(2C3>?Ad7${aGii>=7F@&MYL=<>>1t?2eW`Ch`$$B+bb0en~OsT8j8I-=rHMHF} zQ!I6w(N~VkwQ}StEA1tvTv3d)?|!(`M!&jb5IRx0!$fg^vZ61UbrHAJ%kDHfW@cd~ z(O;#|l`L}{QeLLg%tDteqM4b6{W(rzm1mM!mM6vG7$z~Zi~!6m;A}dp-<-?}fHC2X k7WsA2O1YvJ7SZOxmG@1!>PxuN-yAeobAJIY-TeCGFNStew*UYD diff --git a/node_modules/aws-sdk/node_modules/querystring/.travis.yml b/node_modules/aws-sdk/node_modules/querystring/.travis.yml deleted file mode 100644 index 895dbd3..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/.travis.yml +++ /dev/null @@ -1,4 +0,0 @@ -language: node_js -node_js: - - 0.6 - - 0.8 diff --git a/node_modules/aws-sdk/node_modules/querystring/History.md b/node_modules/aws-sdk/node_modules/querystring/History.md deleted file mode 100644 index 4fddbaf..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/History.md +++ /dev/null @@ -1,20 +0,0 @@ -# 0.2.0 / 2013-02-21 - - - Refactor into function per-module idiomatic style. - - Improved test coverage. - -# 0.1.0 / 2011-12-13 - - - Minor project reorganization - -# 0.0.3 / 2011-04-16 - - Support for AMD module loaders - -# 0.0.2 / 2011-04-16 - - - Ported unit tests - - Removed functionality that depended on Buffers - -# 0.0.1 / 2011-04-15 - - - Initial release diff --git a/node_modules/aws-sdk/node_modules/querystring/License.md b/node_modules/aws-sdk/node_modules/querystring/License.md deleted file mode 100644 index fc80e85..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/License.md +++ /dev/null @@ -1,19 +0,0 @@ - -Copyright 2012 Irakli Gozalishvili. All rights reserved. -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/querystring/Readme.md b/node_modules/aws-sdk/node_modules/querystring/Readme.md deleted file mode 100644 index a4fe252..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/Readme.md +++ /dev/null @@ -1,15 +0,0 @@ -# querystring - -[![Build Status](https://secure.travis-ci.org/Gozala/querystring.png)](http://travis-ci.org/Gozala/querystring) - - -[![Browser support](http://ci.testling.com/Gozala/querystring.png)](http://ci.testling.com/Gozala/querystring) - - - -Node's querystring module for all engines. - -## Install ## - - npm install querystring - diff --git a/node_modules/aws-sdk/node_modules/querystring/decode.js b/node_modules/aws-sdk/node_modules/querystring/decode.js deleted file mode 100644 index a6518b8..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/decode.js +++ /dev/null @@ -1,80 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -// If obj.hasOwnProperty has been overridden, then calling -// obj.hasOwnProperty(prop) will break. -// See: https://github.com/joyent/node/issues/1707 -function hasOwnProperty(obj, prop) { - return Object.prototype.hasOwnProperty.call(obj, prop); -} - -module.exports = function(qs, sep, eq, options) { - sep = sep || '&'; - eq = eq || '='; - var obj = {}; - - if (typeof qs !== 'string' || qs.length === 0) { - return obj; - } - - var regexp = /\+/g; - qs = qs.split(sep); - - var maxKeys = 1000; - if (options && typeof options.maxKeys === 'number') { - maxKeys = options.maxKeys; - } - - var len = qs.length; - // maxKeys <= 0 means that we should not limit keys count - if (maxKeys > 0 && len > maxKeys) { - len = maxKeys; - } - - for (var i = 0; i < len; ++i) { - var x = qs[i].replace(regexp, '%20'), - idx = x.indexOf(eq), - kstr, vstr, k, v; - - if (idx >= 0) { - kstr = x.substr(0, idx); - vstr = x.substr(idx + 1); - } else { - kstr = x; - vstr = ''; - } - - k = decodeURIComponent(kstr); - v = decodeURIComponent(vstr); - - if (!hasOwnProperty(obj, k)) { - obj[k] = v; - } else if (Array.isArray(obj[k])) { - obj[k].push(v); - } else { - obj[k] = [obj[k], v]; - } - } - - return obj; -}; diff --git a/node_modules/aws-sdk/node_modules/querystring/encode.js b/node_modules/aws-sdk/node_modules/querystring/encode.js deleted file mode 100644 index 4f2b561..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/encode.js +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -'use strict'; - -var stringifyPrimitive = function(v) { - switch (typeof v) { - case 'string': - return v; - - case 'boolean': - return v ? 'true' : 'false'; - - case 'number': - return isFinite(v) ? v : ''; - - default: - return ''; - } -}; - -module.exports = function(obj, sep, eq, name) { - sep = sep || '&'; - eq = eq || '='; - if (obj === null) { - obj = undefined; - } - - if (typeof obj === 'object') { - return Object.keys(obj).map(function(k) { - var ks = encodeURIComponent(stringifyPrimitive(k)) + eq; - if (Array.isArray(obj[k])) { - return obj[k].map(function(v) { - return ks + encodeURIComponent(stringifyPrimitive(v)); - }).join(sep); - } else { - return ks + encodeURIComponent(stringifyPrimitive(obj[k])); - } - }).join(sep); - - } - - if (!name) return ''; - return encodeURIComponent(stringifyPrimitive(name)) + eq + - encodeURIComponent(stringifyPrimitive(obj)); -}; diff --git a/node_modules/aws-sdk/node_modules/querystring/index.js b/node_modules/aws-sdk/node_modules/querystring/index.js deleted file mode 100644 index 99826ea..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/index.js +++ /dev/null @@ -1,4 +0,0 @@ -'use strict'; - -exports.decode = exports.parse = require('./decode'); -exports.encode = exports.stringify = require('./encode'); diff --git a/node_modules/aws-sdk/node_modules/querystring/package.json b/node_modules/aws-sdk/node_modules/querystring/package.json deleted file mode 100644 index f747141..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/package.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "name": "querystring", - "id": "querystring", - "version": "0.2.0", - "description": "Node's querystring module for all engines.", - "keywords": [ - "commonjs", - "query", - "querystring" - ], - "author": { - "name": "Irakli Gozalishvili", - "email": "rfobic@gmail.com" - }, - "repository": { - "type": "git", - "url": "git://github.com/Gozala/querystring.git", - "web": "https://github.com/Gozala/querystring" - }, - "bugs": { - "url": "http://github.com/Gozala/querystring/issues/" - }, - "devDependencies": { - "test": "~0.x.0", - "phantomify": "~0.x.0", - "retape": "~0.x.0", - "tape": "~0.1.5" - }, - "engines": { - "node": ">=0.4.x" - }, - "scripts": { - "test": "npm run test-node && npm run test-browser && npm run test-tap", - "test-browser": "node ./node_modules/phantomify/bin/cmd.js ./test/common-index.js", - "test-node": "node ./test/common-index.js", - "test-tap": "node ./test/tap-index.js" - }, - "testling": { - "files": "test/tap-index.js", - "browsers": { - "iexplore": [ - 9, - 10 - ], - "chrome": [ - 16, - 20, - 25, - "canary" - ], - "firefox": [ - 10, - 15, - 16, - 17, - 18, - "nightly" - ], - "safari": [ - 5, - 6 - ], - "opera": [ - 12 - ] - } - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/Gozala/enchain/License.md" - } - ], - "readme": "# querystring\n\n[![Build Status](https://secure.travis-ci.org/Gozala/querystring.png)](http://travis-ci.org/Gozala/querystring)\n\n\n[![Browser support](http://ci.testling.com/Gozala/querystring.png)](http://ci.testling.com/Gozala/querystring)\n\n\n\nNode's querystring module for all engines.\n\n## Install ##\n\n npm install querystring\n\n", - "readmeFilename": "Readme.md", - "homepage": "https://github.com/Gozala/querystring#readme", - "_id": "querystring@0.2.0", - "_shasum": "b209849203bb25df820da756e747005878521620", - "_resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "_from": "querystring@0.2.0" -} diff --git a/node_modules/aws-sdk/node_modules/querystring/test/.index.js.un~ b/node_modules/aws-sdk/node_modules/querystring/test/.index.js.un~ deleted file mode 100644 index 898eceddc9e485e85275e41f9b8b98294bb3fe08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 975 zcmWH`%$*;a=aT=Ffr(>^0h6blXhl42hkT^^Cju)3aORMz^9E7#J=A zF*0BTa+sh3AR2}l0?m@ovVde68R9P>DS$G8!VCjM7vN0bq2T0Y?V| z!&eEQ*`RoY1wSY%7)%?%(FA6L_)q|fPnbG}(P)AN3$18)G%;e2CfTCY!qUv5R1Kw) b)Z!8)O}(PhJdM ; :'); - }); -}; - -exports['test the weird objects, that they get parsed properly'] = function(assert) { - qsWeirdObjects.forEach(function(testCase) { - assert.deepEqual(testCase[2], qs.parse(testCase[1]), - 'parse ' + testCase[1]); - }); -}; - -exports['test non munge test cases'] = function(assert) { - qsNoMungeTestCases.forEach(function(testCase) { - assert.deepEqual(testCase[0], qs.stringify(testCase[1], '&', '=', false), - 'stringify ' + JSON.stringify(testCase[1]) + ' -> & ='); - }); -}; - -exports['test the nested qs-in-qs case'] = function(assert) { - var f = qs.parse('a=b&q=x%3Dy%26y%3Dz'); - f.q = qs.parse(f.q); - assert.deepEqual(f, { a: 'b', q: { x: 'y', y: 'z' } }, - 'parse a=b&q=x%3Dy%26y%3Dz'); -}; - -exports['test nested in colon'] = function(assert) { - var f = qs.parse('a:b;q:x%3Ay%3By%3Az', ';', ':'); - f.q = qs.parse(f.q, ';', ':'); - assert.deepEqual(f, { a: 'b', q: { x: 'y', y: 'z' } }, - 'parse a:b;q:x%3Ay%3By%3Az -> ; :'); -}; - -exports['test stringifying'] = function(assert) { - qsTestCases.forEach(function(testCase) { - assert.equal(testCase[1], qs.stringify(testCase[2]), - 'stringify ' + JSON.stringify(testCase[2])); - }); - - qsColonTestCases.forEach(function(testCase) { - assert.equal(testCase[1], qs.stringify(testCase[2], ';', ':'), - 'stringify ' + JSON.stringify(testCase[2]) + ' -> ; :'); - }); - - qsWeirdObjects.forEach(function(testCase) { - assert.equal(testCase[1], qs.stringify(testCase[0]), - 'stringify ' + JSON.stringify(testCase[0])); - }); -}; - -exports['test stringifying nested'] = function(assert) { - var f = qs.stringify({ - a: 'b', - q: qs.stringify({ - x: 'y', - y: 'z' - }) - }); - assert.equal(f, 'a=b&q=x%3Dy%26y%3Dz', - JSON.stringify({ - a: 'b', - 'qs.stringify -> q': { - x: 'y', - y: 'z' - } - })); - - var threw = false; - try { qs.parse(undefined); } catch(error) { threw = true; } - assert.ok(!threw, "does not throws on undefined"); -}; - -exports['test nested in colon'] = function(assert) { - var f = qs.stringify({ - a: 'b', - q: qs.stringify({ - x: 'y', - y: 'z' - }, ';', ':') - }, ';', ':'); - assert.equal(f, 'a:b;q:x%3Ay%3By%3Az', - 'stringify ' + JSON.stringify({ - a: 'b', - 'qs.stringify -> q': { - x: 'y', - y: 'z' - } - }) + ' -> ; : '); - - - assert.deepEqual({}, qs.parse(), 'parse undefined'); -}; diff --git a/node_modules/aws-sdk/node_modules/querystring/test/tap-index.js b/node_modules/aws-sdk/node_modules/querystring/test/tap-index.js deleted file mode 100644 index 70679b3..0000000 --- a/node_modules/aws-sdk/node_modules/querystring/test/tap-index.js +++ /dev/null @@ -1,3 +0,0 @@ -"use strict"; - -require("retape")(require("./index")) \ No newline at end of file diff --git a/node_modules/aws-sdk/node_modules/sax/LICENSE b/node_modules/aws-sdk/node_modules/sax/LICENSE deleted file mode 100644 index ccffa08..0000000 --- a/node_modules/aws-sdk/node_modules/sax/LICENSE +++ /dev/null @@ -1,41 +0,0 @@ -The ISC License - -Copyright (c) Isaac Z. Schlueter and Contributors - -Permission to use, copy, modify, and/or distribute this software for any -purpose with or without fee is hereby granted, provided that the above -copyright notice and this permission notice appear in all copies. - -THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR -IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -==== - -`String.fromCodePoint` by Mathias Bynens used according to terms of MIT -License, as follows: - - Copyright Mathias Bynens - - Permission is hereby granted, free of charge, to any person obtaining - a copy of this software and associated documentation files (the - "Software"), to deal in the Software without restriction, including - without limitation the rights to use, copy, modify, merge, publish, - distribute, sublicense, and/or sell copies of the Software, and to - permit persons to whom the Software is furnished to do so, subject to - the following conditions: - - The above copyright notice and this permission notice shall be - included in all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE - LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION - OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION - WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html b/node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html deleted file mode 100644 index a611e3f..0000000 --- a/node_modules/aws-sdk/node_modules/sax/LICENSE-W3C.html +++ /dev/null @@ -1,188 +0,0 @@ - -W3C Software Notice and License
- - - -
-

- W3C - -

- -
- - - -
-
- -
- - -
-
- -
- - -
-
-
- -
-
-

W3C Software Notice and License

-
-
-

This work (and included software, documentation such as READMEs, or other -related items) is being provided by the copyright holders under the following -license.

-

License

- -

-By obtaining, using and/or copying this work, you (the licensee) -agree that you have read, understood, and will comply with the following -terms and conditions.

- -

Permission to copy, modify, and distribute this software and its -documentation, with or without modification, for any purpose and without -fee or royalty is hereby granted, provided that you include the following on -ALL copies of the software and documentation or portions thereof, including -modifications:

- -
  • The full text of this NOTICE in a location viewable to users of the - redistributed or derivative work.
  • Any pre-existing intellectual property disclaimers, notices, or terms - and conditions. If none exist, the W3C Software Short - Notice should be included (hypertext is preferred, text is permitted) - within the body of any redistributed or derivative code.
  • Notice of any changes or modifications to the files, including the date - changes were made. (We recommend you provide URIs to the location from - which the code is derived.)
- -

Disclaimers

- -

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS -MAKE NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT -LIMITED TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR -PURPOSE OR THAT THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE -ANY THIRD PARTY PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

- -

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR -DOCUMENTATION.

- -

The name and trademarks of copyright holders may NOT be used in -advertising or publicity pertaining to the software without specific, written -prior permission. Title to copyright in this software and any associated -documentation will at all times remain with copyright holders.

- -

Notes

- -

This version: http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

- -

This formulation of W3C's notice and license became active on December 31 -2002. This version removes the copyright ownership notice such that this -license can be used with materials other than those owned by the W3C, -reflects that ERCIM is now a host of the W3C, includes references to this -specific dated version of the license, and removes the ambiguous grant of -"use". Otherwise, this version is the same as the previous -version and is written so as to preserve the Free -Software Foundation's assessment of GPL compatibility and OSI's certification -under the Open Source -Definition.

-
-
-
-
- - - -
- -
diff --git a/node_modules/aws-sdk/node_modules/sax/README.md b/node_modules/aws-sdk/node_modules/sax/README.md deleted file mode 100644 index 91a0314..0000000 --- a/node_modules/aws-sdk/node_modules/sax/README.md +++ /dev/null @@ -1,220 +0,0 @@ -# sax js - -A sax-style parser for XML and HTML. - -Designed with [node](http://nodejs.org/) in mind, but should work fine in -the browser or other CommonJS implementations. - -## What This Is - -* A very simple tool to parse through an XML string. -* A stepping stone to a streaming HTML parser. -* A handy way to deal with RSS and other mostly-ok-but-kinda-broken XML - docs. - -## What This Is (probably) Not - -* An HTML Parser - That's a fine goal, but this isn't it. It's just - XML. -* A DOM Builder - You can use it to build an object model out of XML, - but it doesn't do that out of the box. -* XSLT - No DOM = no querying. -* 100% Compliant with (some other SAX implementation) - Most SAX - implementations are in Java and do a lot more than this does. -* An XML Validator - It does a little validation when in strict mode, but - not much. -* A Schema-Aware XSD Thing - Schemas are an exercise in fetishistic - masochism. -* A DTD-aware Thing - Fetching DTDs is a much bigger job. - -## Regarding `Hello, world!').close(); - -// stream usage -// takes the same options as the parser -var saxStream = require("sax").createStream(strict, options) -saxStream.on("error", function (e) { - // unhandled errors will throw, since this is a proper node - // event emitter. - console.error("error!", e) - // clear the error - this._parser.error = null - this._parser.resume() -}) -saxStream.on("opentag", function (node) { - // same object as above -}) -// pipe is supported, and it's readable/writable -// same chunks coming in also go out. -fs.createReadStream("file.xml") - .pipe(saxStream) - .pipe(fs.createWriteStream("file-copy.xml")) -``` - - -## Arguments - -Pass the following arguments to the parser function. All are optional. - -`strict` - Boolean. Whether or not to be a jerk. Default: `false`. - -`opt` - Object bag of settings regarding string formatting. All default to `false`. - -Settings supported: - -* `trim` - Boolean. Whether or not to trim text and comment nodes. -* `normalize` - Boolean. If true, then turn any whitespace into a single - space. -* `lowercase` - Boolean. If true, then lowercase tag names and attribute names - in loose mode, rather than uppercasing them. -* `xmlns` - Boolean. If true, then namespaces are supported. -* `position` - Boolean. If false, then don't track line/col/position. -* `strictEntities` - Boolean. If true, only parse [predefined XML - entities](http://www.w3.org/TR/REC-xml/#sec-predefined-ent) - (`&`, `'`, `>`, `<`, and `"`) - -## Methods - -`write` - Write bytes onto the stream. You don't have to do this all at -once. You can keep writing as much as you want. - -`close` - Close the stream. Once closed, no more data may be written until -it is done processing the buffer, which is signaled by the `end` event. - -`resume` - To gracefully handle errors, assign a listener to the `error` -event. Then, when the error is taken care of, you can call `resume` to -continue parsing. Otherwise, the parser will not continue while in an error -state. - -## Members - -At all times, the parser object will have the following members: - -`line`, `column`, `position` - Indications of the position in the XML -document where the parser currently is looking. - -`startTagPosition` - Indicates the position where the current tag starts. - -`closed` - Boolean indicating whether or not the parser can be written to. -If it's `true`, then wait for the `ready` event to write again. - -`strict` - Boolean indicating whether or not the parser is a jerk. - -`opt` - Any options passed into the constructor. - -`tag` - The current tag being dealt with. - -And a bunch of other stuff that you probably shouldn't touch. - -## Events - -All events emit with a single argument. To listen to an event, assign a -function to `on`. Functions get executed in the this-context of -the parser object. The list of supported events are also in the exported -`EVENTS` array. - -When using the stream interface, assign handlers using the EventEmitter -`on` function in the normal fashion. - -`error` - Indication that something bad happened. The error will be hanging -out on `parser.error`, and must be deleted before parsing can continue. By -listening to this event, you can keep an eye on that kind of stuff. Note: -this happens *much* more in strict mode. Argument: instance of `Error`. - -`text` - Text node. Argument: string of text. - -`doctype` - The ``. Argument: -object with `name` and `body` members. Attributes are not parsed, as -processing instructions have implementation dependent semantics. - -`sgmldeclaration` - Random SGML declarations. Stuff like `` -would trigger this kind of event. This is a weird thing to support, so it -might go away at some point. SAX isn't intended to be used to parse SGML, -after all. - -`opentag` - An opening tag. Argument: object with `name` and `attributes`. -In non-strict mode, tag names are uppercased, unless the `lowercase` -option is set. If the `xmlns` option is set, then it will contain -namespace binding information on the `ns` member, and will have a -`local`, `prefix`, and `uri` member. - -`closetag` - A closing tag. In loose mode, tags are auto-closed if their -parent closes. In strict mode, well-formedness is enforced. Note that -self-closing tags will have `closeTag` emitted immediately after `openTag`. -Argument: tag name. - -`attribute` - An attribute node. Argument: object with `name` and `value`. -In non-strict mode, attribute names are uppercased, unless the `lowercase` -option is set. If the `xmlns` option is set, it will also contains namespace -information. - -`comment` - A comment node. Argument: the string of the comment. - -`opencdata` - The opening tag of a ``) of a `` tags trigger a `"script"` -event, and their contents are not checked for special xml characters. -If you pass `noscript: true`, then this behavior is suppressed. - -## Reporting Problems - -It's best to write a failing test if you find an issue. I will always -accept pull requests with failing tests if they demonstrate intended -behavior, but it is very hard to figure out what issue you're describing -without a test. Writing a test is also the best way for you yourself -to figure out if you really understand the issue you think you have with -sax-js. diff --git a/node_modules/aws-sdk/node_modules/sax/lib/sax.js b/node_modules/aws-sdk/node_modules/sax/lib/sax.js deleted file mode 100644 index ffb2d40..0000000 --- a/node_modules/aws-sdk/node_modules/sax/lib/sax.js +++ /dev/null @@ -1,1571 +0,0 @@ -;(function (sax) { // wrapper for non-node envs - sax.parser = function (strict, opt) { return new SAXParser(strict, opt) } - sax.SAXParser = SAXParser - sax.SAXStream = SAXStream - sax.createStream = createStream - - // When we pass the MAX_BUFFER_LENGTH position, start checking for buffer overruns. - // When we check, schedule the next check for MAX_BUFFER_LENGTH - (max(buffer lengths)), - // since that's the earliest that a buffer overrun could occur. This way, checks are - // as rare as required, but as often as necessary to ensure never crossing this bound. - // Furthermore, buffers are only tested at most once per write(), so passing a very - // large string into write() might have undesirable effects, but this is manageable by - // the caller, so it is assumed to be safe. Thus, a call to write() may, in the extreme - // edge case, result in creating at most one complete copy of the string passed in. - // Set to Infinity to have unlimited buffers. - sax.MAX_BUFFER_LENGTH = 64 * 1024 - - var buffers = [ - 'comment', 'sgmlDecl', 'textNode', 'tagName', 'doctype', - 'procInstName', 'procInstBody', 'entity', 'attribName', - 'attribValue', 'cdata', 'script' - ] - - sax.EVENTS = [ - 'text', - 'processinginstruction', - 'sgmldeclaration', - 'doctype', - 'comment', - 'attribute', - 'opentag', - 'closetag', - 'opencdata', - 'cdata', - 'closecdata', - 'error', - 'end', - 'ready', - 'script', - 'opennamespace', - 'closenamespace' - ] - - function SAXParser (strict, opt) { - if (!(this instanceof SAXParser)) { - return new SAXParser(strict, opt) - } - - var parser = this - clearBuffers(parser) - parser.q = parser.c = '' - parser.bufferCheckPosition = sax.MAX_BUFFER_LENGTH - parser.opt = opt || {} - parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags - parser.looseCase = parser.opt.lowercase ? 'toLowerCase' : 'toUpperCase' - parser.tags = [] - parser.closed = parser.closedRoot = parser.sawRoot = false - parser.tag = parser.error = null - parser.strict = !!strict - parser.noscript = !!(strict || parser.opt.noscript) - parser.state = S.BEGIN - parser.strictEntities = parser.opt.strictEntities - parser.ENTITIES = parser.strictEntities ? Object.create(sax.XML_ENTITIES) : Object.create(sax.ENTITIES) - parser.attribList = [] - - // namespaces form a prototype chain. - // it always points at the current tag, - // which protos to its parent tag. - if (parser.opt.xmlns) { - parser.ns = Object.create(rootNS) - } - - // mostly just for error reporting - parser.trackPosition = parser.opt.position !== false - if (parser.trackPosition) { - parser.position = parser.line = parser.column = 0 - } - emit(parser, 'onready') - } - - if (!Object.create) { - Object.create = function (o) { - function F () {} - F.prototype = o - var newf = new F() - return newf - } - } - - if (!Object.keys) { - Object.keys = function (o) { - var a = [] - for (var i in o) if (o.hasOwnProperty(i)) a.push(i) - return a - } - } - - function checkBufferLength (parser) { - var maxAllowed = Math.max(sax.MAX_BUFFER_LENGTH, 10) - var maxActual = 0 - for (var i = 0, l = buffers.length; i < l; i++) { - var len = parser[buffers[i]].length - if (len > maxAllowed) { - // Text/cdata nodes can get big, and since they're buffered, - // we can get here under normal conditions. - // Avoid issues by emitting the text node now, - // so at least it won't get any bigger. - switch (buffers[i]) { - case 'textNode': - closeText(parser) - break - - case 'cdata': - emitNode(parser, 'oncdata', parser.cdata) - parser.cdata = '' - break - - case 'script': - emitNode(parser, 'onscript', parser.script) - parser.script = '' - break - - default: - error(parser, 'Max buffer length exceeded: ' + buffers[i]) - } - } - maxActual = Math.max(maxActual, len) - } - // schedule the next check for the earliest possible buffer overrun. - var m = sax.MAX_BUFFER_LENGTH - maxActual - parser.bufferCheckPosition = m + parser.position - } - - function clearBuffers (parser) { - for (var i = 0, l = buffers.length; i < l; i++) { - parser[buffers[i]] = '' - } - } - - function flushBuffers (parser) { - closeText(parser) - if (parser.cdata !== '') { - emitNode(parser, 'oncdata', parser.cdata) - parser.cdata = '' - } - if (parser.script !== '') { - emitNode(parser, 'onscript', parser.script) - parser.script = '' - } - } - - SAXParser.prototype = { - end: function () { end(this) }, - write: write, - resume: function () { this.error = null; return this }, - close: function () { return this.write(null) }, - flush: function () { flushBuffers(this) } - } - - var Stream - try { - Stream = require('stream').Stream - } catch (ex) { - Stream = function () {} - } - - var streamWraps = sax.EVENTS.filter(function (ev) { - return ev !== 'error' && ev !== 'end' - }) - - function createStream (strict, opt) { - return new SAXStream(strict, opt) - } - - function SAXStream (strict, opt) { - if (!(this instanceof SAXStream)) { - return new SAXStream(strict, opt) - } - - Stream.apply(this) - - this._parser = new SAXParser(strict, opt) - this.writable = true - this.readable = true - - var me = this - - this._parser.onend = function () { - me.emit('end') - } - - this._parser.onerror = function (er) { - me.emit('error', er) - - // if didn't throw, then means error was handled. - // go ahead and clear error, so we can write again. - me._parser.error = null - } - - this._decoder = null - - streamWraps.forEach(function (ev) { - Object.defineProperty(me, 'on' + ev, { - get: function () { - return me._parser['on' + ev] - }, - set: function (h) { - if (!h) { - me.removeAllListeners(ev) - me._parser['on' + ev] = h - return h - } - me.on(ev, h) - }, - enumerable: true, - configurable: false - }) - }) - } - - SAXStream.prototype = Object.create(Stream.prototype, { - constructor: { - value: SAXStream - } - }) - - SAXStream.prototype.write = function (data) { - if (typeof Buffer === 'function' && - typeof Buffer.isBuffer === 'function' && - Buffer.isBuffer(data)) { - if (!this._decoder) { - var SD = require('string_decoder').StringDecoder - this._decoder = new SD('utf8') - } - data = this._decoder.write(data) - } - - this._parser.write(data.toString()) - this.emit('data', data) - return true - } - - SAXStream.prototype.end = function (chunk) { - if (chunk && chunk.length) { - this.write(chunk) - } - this._parser.end() - return true - } - - SAXStream.prototype.on = function (ev, handler) { - var me = this - if (!me._parser['on' + ev] && streamWraps.indexOf(ev) !== -1) { - me._parser['on' + ev] = function () { - var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments) - args.splice(0, 0, ev) - me.emit.apply(me, args) - } - } - - return Stream.prototype.on.call(me, ev, handler) - } - - // character classes and tokens - var whitespace = '\r\n\t ' - - // this really needs to be replaced with character classes. - // XML allows all manner of ridiculous numbers and digits. - var number = '0124356789' - var letter = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' - - // (Letter | "_" | ":") - var quote = '\'"' - var attribEnd = whitespace + '>' - var CDATA = '[CDATA[' - var DOCTYPE = 'DOCTYPE' - var XML_NAMESPACE = 'http://www.w3.org/XML/1998/namespace' - var XMLNS_NAMESPACE = 'http://www.w3.org/2000/xmlns/' - var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE } - - // turn all the string character sets into character class objects. - whitespace = charClass(whitespace) - number = charClass(number) - letter = charClass(letter) - - // http://www.w3.org/TR/REC-xml/#NT-NameStartChar - // This implementation works on strings, a single character at a time - // as such, it cannot ever support astral-plane characters (10000-EFFFF) - // without a significant breaking change to either this parser, or the - // JavaScript language. Implementation of an emoji-capable xml parser - // is left as an exercise for the reader. - var nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ - - var nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/ - - var entityStart = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/ - var entityBody = /[#:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/ - - quote = charClass(quote) - attribEnd = charClass(attribEnd) - - function charClass (str) { - return str.split('').reduce(function (s, c) { - s[c] = true - return s - }, {}) - } - - function isRegExp (c) { - return Object.prototype.toString.call(c) === '[object RegExp]' - } - - function is (charclass, c) { - return isRegExp(charclass) ? !!c.match(charclass) : charclass[c] - } - - function not (charclass, c) { - return !is(charclass, c) - } - - var S = 0 - sax.STATE = { - BEGIN: S++, // leading byte order mark or whitespace - BEGIN_WHITESPACE: S++, // leading whitespace - TEXT: S++, // general stuff - TEXT_ENTITY: S++, // & and such. - OPEN_WAKA: S++, // < - SGML_DECL: S++, // - SCRIPT: S++, // -``` - -In [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/): - -```js -var punycode = require('punycode'); -``` - -In [Rhino](http://www.mozilla.org/rhino/): - -```js -load('punycode.js'); -``` - -Using an AMD loader like [RequireJS](http://requirejs.org/): - -```js -require( - { - 'paths': { - 'punycode': 'path/to/punycode' - } - }, - ['punycode'], - function(punycode) { - console.log(punycode); - } -); -``` - -## API - -### `punycode.decode(string)` - -Converts a Punycode string of ASCII symbols to a string of Unicode symbols. - -```js -// decode domain name parts -punycode.decode('maana-pta'); // 'mañana' -punycode.decode('--dqo34k'); // '☃-⌘' -``` - -### `punycode.encode(string)` - -Converts a string of Unicode symbols to a Punycode string of ASCII symbols. - -```js -// encode domain name parts -punycode.encode('mañana'); // 'maana-pta' -punycode.encode('☃-⌘'); // '--dqo34k' -``` - -### `punycode.toUnicode(input)` - -Converts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode. - -```js -// decode domain names -punycode.toUnicode('xn--maana-pta.com'); -// → 'mañana.com' -punycode.toUnicode('xn----dqo34k.com'); -// → '☃-⌘.com' - -// decode email addresses -punycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'); -// → 'джумла@джpумлатеÑÑ‚.bрфa' -``` - -### `punycode.toASCII(input)` - -Converts a Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII. - -```js -// encode domain names -punycode.toASCII('mañana.com'); -// → 'xn--maana-pta.com' -punycode.toASCII('☃-⌘.com'); -// → 'xn----dqo34k.com' - -// encode email addresses -punycode.toASCII('джумла@джpумлатеÑÑ‚.bрфa'); -// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq' -``` - -### `punycode.ucs2` - -#### `punycode.ucs2.decode(string)` - -Creates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16. - -```js -punycode.ucs2.decode('abc'); -// → [0x61, 0x62, 0x63] -// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE: -punycode.ucs2.decode('\uD834\uDF06'); -// → [0x1D306] -``` - -#### `punycode.ucs2.encode(codePoints)` - -Creates a string based on an array of numeric code point values. - -```js -punycode.ucs2.encode([0x61, 0x62, 0x63]); -// → 'abc' -punycode.ucs2.encode([0x1D306]); -// → '\uD834\uDF06' -``` - -### `punycode.version` - -A string representing the current Punycode.js version number. - -## Unit tests & code coverage - -After cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`. - -Once that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`. - -To generate the code coverage report, use `grunt cover`. - -Feel free to fork if you see possible improvements! - -## Author - -| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias "Follow @mathias on Twitter") | -|---| -| [Mathias Bynens](https://mathiasbynens.be/) | - -## Contributors - -| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton "Follow @jdalton on Twitter") | -|---| -| [John-David Dalton](http://allyoucanleet.com/) | - -## License - -Punycode.js is available under the [MIT](https://mths.be/mit) license. diff --git a/node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json b/node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json deleted file mode 100644 index e1864b5..0000000 --- a/node_modules/aws-sdk/node_modules/url/node_modules/punycode/package.json +++ /dev/null @@ -1,61 +0,0 @@ -{ - "name": "punycode", - "version": "1.3.2", - "description": "A robust Punycode converter that fully complies to RFC 3492 and RFC 5891, and works on nearly all JavaScript platforms.", - "homepage": "https://mths.be/punycode", - "main": "punycode.js", - "keywords": [ - "punycode", - "unicode", - "idn", - "idna", - "dns", - "url", - "domain" - ], - "license": "MIT", - "author": { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - }, - "contributors": [ - { - "name": "Mathias Bynens", - "url": "https://mathiasbynens.be/" - }, - { - "name": "John-David Dalton", - "url": "http://allyoucanleet.com/" - } - ], - "repository": { - "type": "git", - "url": "git+https://github.com/bestiejs/punycode.js.git" - }, - "bugs": { - "url": "https://github.com/bestiejs/punycode.js/issues" - }, - "files": [ - "LICENSE-MIT.txt", - "punycode.js" - ], - "scripts": { - "test": "node tests/tests.js" - }, - "devDependencies": { - "coveralls": "^2.10.1", - "grunt": "^0.4.5", - "grunt-contrib-uglify": "^0.5.0", - "grunt-shell": "^0.7.0", - "istanbul": "^0.2.13", - "qunit-extras": "^1.2.0", - "qunitjs": "~1.11.0", - "requirejs": "^2.1.14" - }, - "readme": "# Punycode.js [![Build status](https://travis-ci.org/bestiejs/punycode.js.svg?branch=master)](https://travis-ci.org/bestiejs/punycode.js) [![Code coverage status](http://img.shields.io/coveralls/bestiejs/punycode.js/master.svg)](https://coveralls.io/r/bestiejs/punycode.js) [![Dependency status](https://gemnasium.com/bestiejs/punycode.js.svg)](https://gemnasium.com/bestiejs/punycode.js)\n\nA robust Punycode converter that fully complies to [RFC 3492](http://tools.ietf.org/html/rfc3492) and [RFC 5891](http://tools.ietf.org/html/rfc5891), and works on nearly all JavaScript platforms.\n\nThis JavaScript library is the result of comparing, optimizing and documenting different open-source implementations of the Punycode algorithm:\n\n* [The C example code from RFC 3492](http://tools.ietf.org/html/rfc3492#appendix-C)\n* [`punycode.c` by _Markus W. Scherer_ (IBM)](http://opensource.apple.com/source/ICU/ICU-400.42/icuSources/common/punycode.c)\n* [`punycode.c` by _Ben Noordhuis_](https://github.com/bnoordhuis/punycode/blob/master/punycode.c)\n* [JavaScript implementation by _some_](http://stackoverflow.com/questions/183485/can-anyone-recommend-a-good-free-javascript-for-punycode-to-unicode-conversion/301287#301287)\n* [`punycode.js` by _Ben Noordhuis_](https://github.com/joyent/node/blob/426298c8c1c0d5b5224ac3658c41e7c2a3fe9377/lib/punycode.js) (note: [not fully compliant](https://github.com/joyent/node/issues/2072))\n\nThis project is [bundled](https://github.com/joyent/node/blob/master/lib/punycode.js) with [Node.js v0.6.2+](https://github.com/joyent/node/compare/975f1930b1...61e796decc).\n\n## Installation\n\nVia [npm](http://npmjs.org/) (only required for Node.js releases older than v0.6.2):\n\n```bash\nnpm install punycode\n```\n\nVia [Bower](http://bower.io/):\n\n```bash\nbower install punycode\n```\n\nVia [Component](https://github.com/component/component):\n\n```bash\ncomponent install bestiejs/punycode.js\n```\n\nIn a browser:\n\n```html\n\n```\n\nIn [Narwhal](http://narwhaljs.org/), [Node.js](http://nodejs.org/), and [RingoJS](http://ringojs.org/):\n\n```js\nvar punycode = require('punycode');\n```\n\nIn [Rhino](http://www.mozilla.org/rhino/):\n\n```js\nload('punycode.js');\n```\n\nUsing an AMD loader like [RequireJS](http://requirejs.org/):\n\n```js\nrequire(\n {\n 'paths': {\n 'punycode': 'path/to/punycode'\n }\n },\n ['punycode'],\n function(punycode) {\n console.log(punycode);\n }\n);\n```\n\n## API\n\n### `punycode.decode(string)`\n\nConverts a Punycode string of ASCII symbols to a string of Unicode symbols.\n\n```js\n// decode domain name parts\npunycode.decode('maana-pta'); // 'mañana'\npunycode.decode('--dqo34k'); // '☃-⌘'\n```\n\n### `punycode.encode(string)`\n\nConverts a string of Unicode symbols to a Punycode string of ASCII symbols.\n\n```js\n// encode domain name parts\npunycode.encode('mañana'); // 'maana-pta'\npunycode.encode('☃-⌘'); // '--dqo34k'\n```\n\n### `punycode.toUnicode(input)`\n\nConverts a Punycode string representing a domain name or an email address to Unicode. Only the Punycoded parts of the input will be converted, i.e. it doesn’t matter if you call it on a string that has already been converted to Unicode.\n\n```js\n// decode domain names\npunycode.toUnicode('xn--maana-pta.com');\n// → 'mañana.com'\npunycode.toUnicode('xn----dqo34k.com');\n// → '☃-⌘.com'\n\n// decode email addresses\npunycode.toUnicode('джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq');\n// → 'джумла@джpумлатеÑÑ‚.bрфa'\n```\n\n### `punycode.toASCII(input)`\n\nConverts a Unicode string representing a domain name or an email address to Punycode. Only the non-ASCII parts of the input will be converted, i.e. it doesn’t matter if you call it with a domain that's already in ASCII.\n\n```js\n// encode domain names\npunycode.toASCII('mañana.com');\n// → 'xn--maana-pta.com'\npunycode.toASCII('☃-⌘.com');\n// → 'xn----dqo34k.com'\n\n// encode email addresses\npunycode.toASCII('джумла@джpумлатеÑÑ‚.bрфa');\n// → 'джумла@xn--p-8sbkgc5ag7bhce.xn--ba-lmcq'\n```\n\n### `punycode.ucs2`\n\n#### `punycode.ucs2.decode(string)`\n\nCreates an array containing the numeric code point values of each Unicode symbol in the string. While [JavaScript uses UCS-2 internally](https://mathiasbynens.be/notes/javascript-encoding), this function will convert a pair of surrogate halves (each of which UCS-2 exposes as separate characters) into a single code point, matching UTF-16.\n\n```js\npunycode.ucs2.decode('abc');\n// → [0x61, 0x62, 0x63]\n// surrogate pair for U+1D306 TETRAGRAM FOR CENTRE:\npunycode.ucs2.decode('\\uD834\\uDF06');\n// → [0x1D306]\n```\n\n#### `punycode.ucs2.encode(codePoints)`\n\nCreates a string based on an array of numeric code point values.\n\n```js\npunycode.ucs2.encode([0x61, 0x62, 0x63]);\n// → 'abc'\npunycode.ucs2.encode([0x1D306]);\n// → '\\uD834\\uDF06'\n```\n\n### `punycode.version`\n\nA string representing the current Punycode.js version number.\n\n## Unit tests & code coverage\n\nAfter cloning this repository, run `npm install --dev` to install the dependencies needed for Punycode.js development and testing. You may want to install Istanbul _globally_ using `npm install istanbul -g`.\n\nOnce that’s done, you can run the unit tests in Node using `npm test` or `node tests/tests.js`. To run the tests in Rhino, Ringo, Narwhal, PhantomJS, and web browsers as well, use `grunt test`.\n\nTo generate the code coverage report, use `grunt cover`.\n\nFeel free to fork if you see possible improvements!\n\n## Author\n\n| [![twitter/mathias](https://gravatar.com/avatar/24e08a9ea84deb17ae121074d0f17125?s=70)](https://twitter.com/mathias \"Follow @mathias on Twitter\") |\n|---|\n| [Mathias Bynens](https://mathiasbynens.be/) |\n\n## Contributors\n\n| [![twitter/jdalton](https://gravatar.com/avatar/299a3d891ff1920b69c364d061007043?s=70)](https://twitter.com/jdalton \"Follow @jdalton on Twitter\") |\n|---|\n| [John-David Dalton](http://allyoucanleet.com/) |\n\n## License\n\nPunycode.js is available under the [MIT](https://mths.be/mit) license.\n", - "readmeFilename": "README.md", - "_id": "punycode@1.3.2", - "_shasum": "9653a036fb7c1ee42342f2325cceefea3926c48d", - "_resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "_from": "punycode@1.3.2" -} diff --git a/node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js b/node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js deleted file mode 100644 index ac68597..0000000 --- a/node_modules/aws-sdk/node_modules/url/node_modules/punycode/punycode.js +++ /dev/null @@ -1,530 +0,0 @@ -/*! https://mths.be/punycode v1.3.2 by @mathias */ -;(function(root) { - - /** Detect free variables */ - var freeExports = typeof exports == 'object' && exports && - !exports.nodeType && exports; - var freeModule = typeof module == 'object' && module && - !module.nodeType && module; - var freeGlobal = typeof global == 'object' && global; - if ( - freeGlobal.global === freeGlobal || - freeGlobal.window === freeGlobal || - freeGlobal.self === freeGlobal - ) { - root = freeGlobal; - } - - /** - * The `punycode` object. - * @name punycode - * @type Object - */ - var punycode, - - /** Highest positive signed 32-bit float value */ - maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1 - - /** Bootstring parameters */ - base = 36, - tMin = 1, - tMax = 26, - skew = 38, - damp = 700, - initialBias = 72, - initialN = 128, // 0x80 - delimiter = '-', // '\x2D' - - /** Regular expressions */ - regexPunycode = /^xn--/, - regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars - regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators - - /** Error messages */ - errors = { - 'overflow': 'Overflow: input needs wider integers to process', - 'not-basic': 'Illegal input >= 0x80 (not a basic code point)', - 'invalid-input': 'Invalid input' - }, - - /** Convenience shortcuts */ - baseMinusTMin = base - tMin, - floor = Math.floor, - stringFromCharCode = String.fromCharCode, - - /** Temporary variable */ - key; - - /*--------------------------------------------------------------------------*/ - - /** - * A generic error utility function. - * @private - * @param {String} type The error type. - * @returns {Error} Throws a `RangeError` with the applicable error message. - */ - function error(type) { - throw RangeError(errors[type]); - } - - /** - * A generic `Array#map` utility function. - * @private - * @param {Array} array The array to iterate over. - * @param {Function} callback The function that gets called for every array - * item. - * @returns {Array} A new array of values returned by the callback function. - */ - function map(array, fn) { - var length = array.length; - var result = []; - while (length--) { - result[length] = fn(array[length]); - } - return result; - } - - /** - * A simple `Array#map`-like wrapper to work with domain name strings or email - * addresses. - * @private - * @param {String} domain The domain name or email address. - * @param {Function} callback The function that gets called for every - * character. - * @returns {Array} A new string of characters returned by the callback - * function. - */ - function mapDomain(string, fn) { - var parts = string.split('@'); - var result = ''; - if (parts.length > 1) { - // In email addresses, only the domain name should be punycoded. Leave - // the local part (i.e. everything up to `@`) intact. - result = parts[0] + '@'; - string = parts[1]; - } - // Avoid `split(regex)` for IE8 compatibility. See #17. - string = string.replace(regexSeparators, '\x2E'); - var labels = string.split('.'); - var encoded = map(labels, fn).join('.'); - return result + encoded; - } - - /** - * Creates an array containing the numeric code points of each Unicode - * character in the string. While JavaScript uses UCS-2 internally, - * this function will convert a pair of surrogate halves (each of which - * UCS-2 exposes as separate characters) into a single code point, - * matching UTF-16. - * @see `punycode.ucs2.encode` - * @see - * @memberOf punycode.ucs2 - * @name decode - * @param {String} string The Unicode input string (UCS-2). - * @returns {Array} The new array of code points. - */ - function ucs2decode(string) { - var output = [], - counter = 0, - length = string.length, - value, - extra; - while (counter < length) { - value = string.charCodeAt(counter++); - if (value >= 0xD800 && value <= 0xDBFF && counter < length) { - // high surrogate, and there is a next character - extra = string.charCodeAt(counter++); - if ((extra & 0xFC00) == 0xDC00) { // low surrogate - output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000); - } else { - // unmatched surrogate; only append this code unit, in case the next - // code unit is the high surrogate of a surrogate pair - output.push(value); - counter--; - } - } else { - output.push(value); - } - } - return output; - } - - /** - * Creates a string based on an array of numeric code points. - * @see `punycode.ucs2.decode` - * @memberOf punycode.ucs2 - * @name encode - * @param {Array} codePoints The array of numeric code points. - * @returns {String} The new Unicode string (UCS-2). - */ - function ucs2encode(array) { - return map(array, function(value) { - var output = ''; - if (value > 0xFFFF) { - value -= 0x10000; - output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800); - value = 0xDC00 | value & 0x3FF; - } - output += stringFromCharCode(value); - return output; - }).join(''); - } - - /** - * Converts a basic code point into a digit/integer. - * @see `digitToBasic()` - * @private - * @param {Number} codePoint The basic numeric code point value. - * @returns {Number} The numeric value of a basic code point (for use in - * representing integers) in the range `0` to `base - 1`, or `base` if - * the code point does not represent a value. - */ - function basicToDigit(codePoint) { - if (codePoint - 48 < 10) { - return codePoint - 22; - } - if (codePoint - 65 < 26) { - return codePoint - 65; - } - if (codePoint - 97 < 26) { - return codePoint - 97; - } - return base; - } - - /** - * Converts a digit/integer into a basic code point. - * @see `basicToDigit()` - * @private - * @param {Number} digit The numeric value of a basic code point. - * @returns {Number} The basic code point whose value (when used for - * representing integers) is `digit`, which needs to be in the range - * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is - * used; else, the lowercase form is used. The behavior is undefined - * if `flag` is non-zero and `digit` has no uppercase form. - */ - function digitToBasic(digit, flag) { - // 0..25 map to ASCII a..z or A..Z - // 26..35 map to ASCII 0..9 - return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5); - } - - /** - * Bias adaptation function as per section 3.4 of RFC 3492. - * http://tools.ietf.org/html/rfc3492#section-3.4 - * @private - */ - function adapt(delta, numPoints, firstTime) { - var k = 0; - delta = firstTime ? floor(delta / damp) : delta >> 1; - delta += floor(delta / numPoints); - for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) { - delta = floor(delta / baseMinusTMin); - } - return floor(k + (baseMinusTMin + 1) * delta / (delta + skew)); - } - - /** - * Converts a Punycode string of ASCII-only symbols to a string of Unicode - * symbols. - * @memberOf punycode - * @param {String} input The Punycode string of ASCII-only symbols. - * @returns {String} The resulting string of Unicode symbols. - */ - function decode(input) { - // Don't use UCS-2 - var output = [], - inputLength = input.length, - out, - i = 0, - n = initialN, - bias = initialBias, - basic, - j, - index, - oldi, - w, - k, - digit, - t, - /** Cached calculation results */ - baseMinusT; - - // Handle the basic code points: let `basic` be the number of input code - // points before the last delimiter, or `0` if there is none, then copy - // the first basic code points to the output. - - basic = input.lastIndexOf(delimiter); - if (basic < 0) { - basic = 0; - } - - for (j = 0; j < basic; ++j) { - // if it's not a basic code point - if (input.charCodeAt(j) >= 0x80) { - error('not-basic'); - } - output.push(input.charCodeAt(j)); - } - - // Main decoding loop: start just after the last delimiter if any basic code - // points were copied; start at the beginning otherwise. - - for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) { - - // `index` is the index of the next character to be consumed. - // Decode a generalized variable-length integer into `delta`, - // which gets added to `i`. The overflow checking is easier - // if we increase `i` as we go, then subtract off its starting - // value at the end to obtain `delta`. - for (oldi = i, w = 1, k = base; /* no condition */; k += base) { - - if (index >= inputLength) { - error('invalid-input'); - } - - digit = basicToDigit(input.charCodeAt(index++)); - - if (digit >= base || digit > floor((maxInt - i) / w)) { - error('overflow'); - } - - i += digit * w; - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - - if (digit < t) { - break; - } - - baseMinusT = base - t; - if (w > floor(maxInt / baseMinusT)) { - error('overflow'); - } - - w *= baseMinusT; - - } - - out = output.length + 1; - bias = adapt(i - oldi, out, oldi == 0); - - // `i` was supposed to wrap around from `out` to `0`, - // incrementing `n` each time, so we'll fix that now: - if (floor(i / out) > maxInt - n) { - error('overflow'); - } - - n += floor(i / out); - i %= out; - - // Insert `n` at position `i` of the output - output.splice(i++, 0, n); - - } - - return ucs2encode(output); - } - - /** - * Converts a string of Unicode symbols (e.g. a domain name label) to a - * Punycode string of ASCII-only symbols. - * @memberOf punycode - * @param {String} input The string of Unicode symbols. - * @returns {String} The resulting Punycode string of ASCII-only symbols. - */ - function encode(input) { - var n, - delta, - handledCPCount, - basicLength, - bias, - j, - m, - q, - k, - t, - currentValue, - output = [], - /** `inputLength` will hold the number of code points in `input`. */ - inputLength, - /** Cached calculation results */ - handledCPCountPlusOne, - baseMinusT, - qMinusT; - - // Convert the input in UCS-2 to Unicode - input = ucs2decode(input); - - // Cache the length - inputLength = input.length; - - // Initialize the state - n = initialN; - delta = 0; - bias = initialBias; - - // Handle the basic code points - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue < 0x80) { - output.push(stringFromCharCode(currentValue)); - } - } - - handledCPCount = basicLength = output.length; - - // `handledCPCount` is the number of code points that have been handled; - // `basicLength` is the number of basic code points. - - // Finish the basic string - if it is not empty - with a delimiter - if (basicLength) { - output.push(delimiter); - } - - // Main encoding loop: - while (handledCPCount < inputLength) { - - // All non-basic code points < n have been handled already. Find the next - // larger one: - for (m = maxInt, j = 0; j < inputLength; ++j) { - currentValue = input[j]; - if (currentValue >= n && currentValue < m) { - m = currentValue; - } - } - - // Increase `delta` enough to advance the decoder's state to , - // but guard against overflow - handledCPCountPlusOne = handledCPCount + 1; - if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) { - error('overflow'); - } - - delta += (m - n) * handledCPCountPlusOne; - n = m; - - for (j = 0; j < inputLength; ++j) { - currentValue = input[j]; - - if (currentValue < n && ++delta > maxInt) { - error('overflow'); - } - - if (currentValue == n) { - // Represent delta as a generalized variable-length integer - for (q = delta, k = base; /* no condition */; k += base) { - t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias); - if (q < t) { - break; - } - qMinusT = q - t; - baseMinusT = base - t; - output.push( - stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0)) - ); - q = floor(qMinusT / baseMinusT); - } - - output.push(stringFromCharCode(digitToBasic(q, 0))); - bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength); - delta = 0; - ++handledCPCount; - } - } - - ++delta; - ++n; - - } - return output.join(''); - } - - /** - * Converts a Punycode string representing a domain name or an email address - * to Unicode. Only the Punycoded parts of the input will be converted, i.e. - * it doesn't matter if you call it on a string that has already been - * converted to Unicode. - * @memberOf punycode - * @param {String} input The Punycoded domain name or email address to - * convert to Unicode. - * @returns {String} The Unicode representation of the given Punycode - * string. - */ - function toUnicode(input) { - return mapDomain(input, function(string) { - return regexPunycode.test(string) - ? decode(string.slice(4).toLowerCase()) - : string; - }); - } - - /** - * Converts a Unicode string representing a domain name or an email address to - * Punycode. Only the non-ASCII parts of the domain name will be converted, - * i.e. it doesn't matter if you call it with a domain that's already in - * ASCII. - * @memberOf punycode - * @param {String} input The domain name or email address to convert, as a - * Unicode string. - * @returns {String} The Punycode representation of the given domain name or - * email address. - */ - function toASCII(input) { - return mapDomain(input, function(string) { - return regexNonASCII.test(string) - ? 'xn--' + encode(string) - : string; - }); - } - - /*--------------------------------------------------------------------------*/ - - /** Define the public API */ - punycode = { - /** - * A string representing the current Punycode.js version number. - * @memberOf punycode - * @type String - */ - 'version': '1.3.2', - /** - * An object of methods to convert from JavaScript's internal character - * representation (UCS-2) to Unicode code points, and back. - * @see - * @memberOf punycode - * @type Object - */ - 'ucs2': { - 'decode': ucs2decode, - 'encode': ucs2encode - }, - 'decode': decode, - 'encode': encode, - 'toASCII': toASCII, - 'toUnicode': toUnicode - }; - - /** Expose `punycode` */ - // Some AMD build optimizers, like r.js, check for specific condition patterns - // like the following: - if ( - typeof define == 'function' && - typeof define.amd == 'object' && - define.amd - ) { - define('punycode', function() { - return punycode; - }); - } else if (freeExports && freeModule) { - if (module.exports == freeExports) { // in Node.js or RingoJS v0.8.0+ - freeModule.exports = punycode; - } else { // in Narwhal or RingoJS v0.7.0- - for (key in punycode) { - punycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]); - } - } - } else { // in Rhino or a web browser - root.punycode = punycode; - } - -}(this)); diff --git a/node_modules/aws-sdk/node_modules/url/package.json b/node_modules/aws-sdk/node_modules/url/package.json deleted file mode 100644 index 7bace76..0000000 --- a/node_modules/aws-sdk/node_modules/url/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "url", - "description": "The core `url` packaged standalone for use with Browserify.", - "version": "0.10.3", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "main": "./url.js", - "devDependencies": { - "assert": "1.1.1", - "mocha": "1.18.2", - "zuul": "2.0.0" - }, - "scripts": { - "test": "mocha --ui qunit test.js && zuul -- test.js", - "test-local": "zuul --local -- test.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/defunctzombie/node-url.git" - }, - "license": "MIT", - "readme": "# node-url\n\n[![Build Status](https://travis-ci.org/defunctzombie/node-url.svg?branch=master)](https://travis-ci.org/defunctzombie/node-url)\n\nThis module has utilities for URL resolution and parsing meant to have feature parity with node.js core [url](http://nodejs.org/api/url.html) module.\n\n```js\nvar url = require('url');\n```\n\n## api\n\nParsed URL objects have some or all of the following fields, depending on\nwhether or not they exist in the URL string. Any parts that are not in the URL\nstring will not be in the parsed object. Examples are shown for the URL\n\n`'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'`\n\n* `href`: The full URL that was originally parsed. Both the protocol and host are lowercased.\n\n Example: `'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'`\n\n* `protocol`: The request protocol, lowercased.\n\n Example: `'http:'`\n\n* `host`: The full lowercased host portion of the URL, including port\n information.\n\n Example: `'host.com:8080'`\n\n* `auth`: The authentication information portion of a URL.\n\n Example: `'user:pass'`\n\n* `hostname`: Just the lowercased hostname portion of the host.\n\n Example: `'host.com'`\n\n* `port`: The port number portion of the host.\n\n Example: `'8080'`\n\n* `pathname`: The path section of the URL, that comes after the host and\n before the query, including the initial slash if present.\n\n Example: `'/p/a/t/h'`\n\n* `search`: The 'query string' portion of the URL, including the leading\n question mark.\n\n Example: `'?query=string'`\n\n* `path`: Concatenation of `pathname` and `search`.\n\n Example: `'/p/a/t/h?query=string'`\n\n* `query`: Either the 'params' portion of the query string, or a\n querystring-parsed object.\n\n Example: `'query=string'` or `{'query':'string'}`\n\n* `hash`: The 'fragment' portion of the URL including the pound-sign.\n\n Example: `'#hash'`\n\nThe following methods are provided by the URL module:\n\n### url.parse(urlStr, [parseQueryString], [slashesDenoteHost])\n\nTake a URL string, and return an object.\n\nPass `true` as the second argument to also parse\nthe query string using the `querystring` module.\nDefaults to `false`.\n\nPass `true` as the third argument to treat `//foo/bar` as\n`{ host: 'foo', pathname: '/bar' }` rather than\n`{ pathname: '//foo/bar' }`. Defaults to `false`.\n\n### url.format(urlObj)\n\nTake a parsed URL object, and return a formatted URL string.\n\n* `href` will be ignored.\n* `protocol` is treated the same with or without the trailing `:` (colon).\n * The protocols `http`, `https`, `ftp`, `gopher`, `file` will be\n postfixed with `://` (colon-slash-slash).\n * All other protocols `mailto`, `xmpp`, `aim`, `sftp`, `foo`, etc will\n be postfixed with `:` (colon)\n* `auth` will be used if present.\n* `hostname` will only be used if `host` is absent.\n* `port` will only be used if `host` is absent.\n* `host` will be used in place of `hostname` and `port`\n* `pathname` is treated the same with or without the leading `/` (slash)\n* `search` will be used in place of `query`\n* `query` (object; see `querystring`) will only be used if `search` is absent.\n* `search` is treated the same with or without the leading `?` (question mark)\n* `hash` is treated the same with or without the leading `#` (pound sign, anchor)\n\n### url.resolve(from, to)\n\nTake a base URL, and a href URL, and resolve them as a browser would for\nan anchor tag. Examples:\n\n url.resolve('/one/two/three', 'four') // '/one/two/four'\n url.resolve('http://example.com/', '/one') // 'http://example.com/one'\n url.resolve('http://example.com/one', '/two') // 'http://example.com/two'\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/defunctzombie/node-url/issues" - }, - "homepage": "https://github.com/defunctzombie/node-url#readme", - "_id": "url@0.10.3", - "_shasum": "021e4d9c7705f21bbf37d03ceb58767402774c64", - "_resolved": "https://registry.npmjs.org/url/-/url-0.10.3.tgz", - "_from": "url@0.10.3" -} diff --git a/node_modules/aws-sdk/node_modules/url/test.js b/node_modules/aws-sdk/node_modules/url/test.js deleted file mode 100644 index b9663c7..0000000 --- a/node_modules/aws-sdk/node_modules/url/test.js +++ /dev/null @@ -1,1461 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var assert = require('assert'); -var util = require('util'); - -var url = require('./url'); - -test('god', function() { - -// URLs to parse, and expected data -// { url : parsed } -var parseTests = { - '//some_path' : { - 'href': '//some_path', - 'pathname': '//some_path', - 'path': '//some_path' - }, - - 'HTTP://www.example.com/' : { - 'href': 'http://www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'HTTP://www.example.com' : { - 'href': 'http://www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://www.ExAmPlE.com/' : { - 'href': 'http://www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://user:pw@www.ExAmPlE.com/' : { - 'href': 'http://user:pw@www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:pw', - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://USER:PW@www.ExAmPlE.com/' : { - 'href': 'http://USER:PW@www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'auth': 'USER:PW', - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://user@www.example.com/' : { - 'href': 'http://user@www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user', - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://user%3Apw@www.example.com/' : { - 'href': 'http://user:pw@www.example.com/', - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:pw', - 'host': 'www.example.com', - 'hostname': 'www.example.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://x.com/path?that\'s#all, folks' : { - 'href': 'http://x.com/path?that%27s#all,%20folks', - 'protocol': 'http:', - 'slashes': true, - 'host': 'x.com', - 'hostname': 'x.com', - 'search': '?that%27s', - 'query': 'that%27s', - 'pathname': '/path', - 'hash': '#all,%20folks', - 'path': '/path?that%27s' - }, - - 'HTTP://X.COM/Y' : { - 'href': 'http://x.com/Y', - 'protocol': 'http:', - 'slashes': true, - 'host': 'x.com', - 'hostname': 'x.com', - 'pathname': '/Y', - 'path': '/Y' - }, - - // an unexpected invalid char in the hostname. - 'HtTp://x.y.cOm*a/b/c?d=e#f gi' : { - 'href': 'http://x.y.com/*a/b/c?d=e#f%20g%3Ch%3Ei', - 'protocol': 'http:', - 'slashes': true, - 'host': 'x.y.com', - 'hostname': 'x.y.com', - 'pathname': '/*a/b/c', - 'search': '?d=e', - 'query': 'd=e', - 'hash': '#f%20g%3Ch%3Ei', - 'path': '/*a/b/c?d=e' - }, - - // make sure that we don't accidentally lcast the path parts. - 'HtTp://x.y.cOm*A/b/c?d=e#f gi' : { - 'href': 'http://x.y.com/*A/b/c?d=e#f%20g%3Ch%3Ei', - 'protocol': 'http:', - 'slashes': true, - 'host': 'x.y.com', - 'hostname': 'x.y.com', - 'pathname': '/*A/b/c', - 'search': '?d=e', - 'query': 'd=e', - 'hash': '#f%20g%3Ch%3Ei', - 'path': '/*A/b/c?d=e' - }, - - 'http://x...y...#p': { - 'href': 'http://x...y.../#p', - 'protocol': 'http:', - 'slashes': true, - 'host': 'x...y...', - 'hostname': 'x...y...', - 'hash': '#p', - 'pathname': '/', - 'path': '/' - }, - - 'http://x/p/"quoted"': { - 'href': 'http://x/p/%22quoted%22', - 'protocol': 'http:', - 'slashes': true, - 'host': 'x', - 'hostname': 'x', - 'pathname': '/p/%22quoted%22', - 'path': '/p/%22quoted%22' - }, - - ' Is a URL!': { - 'href': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!', - 'pathname': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!', - 'path': '%3Chttp://goo.corn/bread%3E%20Is%20a%20URL!' - }, - - 'http://www.narwhaljs.org/blog/categories?id=news' : { - 'href': 'http://www.narwhaljs.org/blog/categories?id=news', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.narwhaljs.org', - 'hostname': 'www.narwhaljs.org', - 'search': '?id=news', - 'query': 'id=news', - 'pathname': '/blog/categories', - 'path': '/blog/categories?id=news' - }, - - 'http://mt0.google.com/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=' : { - 'href': 'http://mt0.google.com/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=', - 'protocol': 'http:', - 'slashes': true, - 'host': 'mt0.google.com', - 'hostname': 'mt0.google.com', - 'pathname': '/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=', - 'path': '/vt/lyrs=m@114&hl=en&src=api&x=2&y=2&z=3&s=' - }, - - 'http://mt0.google.com/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' : { - 'href': 'http://mt0.google.com/vt/lyrs=m@114???&hl=en&src=api' + - '&x=2&y=2&z=3&s=', - 'protocol': 'http:', - 'slashes': true, - 'host': 'mt0.google.com', - 'hostname': 'mt0.google.com', - 'search': '???&hl=en&src=api&x=2&y=2&z=3&s=', - 'query': '??&hl=en&src=api&x=2&y=2&z=3&s=', - 'pathname': '/vt/lyrs=m@114', - 'path': '/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' - }, - - 'http://user:pass@mt0.google.com/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=': - { - 'href': 'http://user:pass@mt0.google.com/vt/lyrs=m@114???' + - '&hl=en&src=api&x=2&y=2&z=3&s=', - 'protocol': 'http:', - 'slashes': true, - 'host': 'mt0.google.com', - 'auth': 'user:pass', - 'hostname': 'mt0.google.com', - 'search': '???&hl=en&src=api&x=2&y=2&z=3&s=', - 'query': '??&hl=en&src=api&x=2&y=2&z=3&s=', - 'pathname': '/vt/lyrs=m@114', - 'path': '/vt/lyrs=m@114???&hl=en&src=api&x=2&y=2&z=3&s=' - }, - - 'file:///etc/passwd' : { - 'href': 'file:///etc/passwd', - 'slashes': true, - 'protocol': 'file:', - 'pathname': '/etc/passwd', - 'hostname': '', - 'host': '', - 'path': '/etc/passwd' - }, - - 'file://localhost/etc/passwd' : { - 'href': 'file://localhost/etc/passwd', - 'protocol': 'file:', - 'slashes': true, - 'pathname': '/etc/passwd', - 'hostname': 'localhost', - 'host': 'localhost', - 'path': '/etc/passwd' - }, - - 'file://foo/etc/passwd' : { - 'href': 'file://foo/etc/passwd', - 'protocol': 'file:', - 'slashes': true, - 'pathname': '/etc/passwd', - 'hostname': 'foo', - 'host': 'foo', - 'path': '/etc/passwd' - }, - - 'file:///etc/node/' : { - 'href': 'file:///etc/node/', - 'slashes': true, - 'protocol': 'file:', - 'pathname': '/etc/node/', - 'hostname': '', - 'host': '', - 'path': '/etc/node/' - }, - - 'file://localhost/etc/node/' : { - 'href': 'file://localhost/etc/node/', - 'protocol': 'file:', - 'slashes': true, - 'pathname': '/etc/node/', - 'hostname': 'localhost', - 'host': 'localhost', - 'path': '/etc/node/' - }, - - 'file://foo/etc/node/' : { - 'href': 'file://foo/etc/node/', - 'protocol': 'file:', - 'slashes': true, - 'pathname': '/etc/node/', - 'hostname': 'foo', - 'host': 'foo', - 'path': '/etc/node/' - }, - - 'http:/baz/../foo/bar' : { - 'href': 'http:/baz/../foo/bar', - 'protocol': 'http:', - 'pathname': '/baz/../foo/bar', - 'path': '/baz/../foo/bar' - }, - - 'http://user:pass@example.com:8000/foo/bar?baz=quux#frag' : { - 'href': 'http://user:pass@example.com:8000/foo/bar?baz=quux#frag', - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com:8000', - 'auth': 'user:pass', - 'port': '8000', - 'hostname': 'example.com', - 'hash': '#frag', - 'search': '?baz=quux', - 'query': 'baz=quux', - 'pathname': '/foo/bar', - 'path': '/foo/bar?baz=quux' - }, - - '//user:pass@example.com:8000/foo/bar?baz=quux#frag' : { - 'href': '//user:pass@example.com:8000/foo/bar?baz=quux#frag', - 'slashes': true, - 'host': 'example.com:8000', - 'auth': 'user:pass', - 'port': '8000', - 'hostname': 'example.com', - 'hash': '#frag', - 'search': '?baz=quux', - 'query': 'baz=quux', - 'pathname': '/foo/bar', - 'path': '/foo/bar?baz=quux' - }, - - '/foo/bar?baz=quux#frag' : { - 'href': '/foo/bar?baz=quux#frag', - 'hash': '#frag', - 'search': '?baz=quux', - 'query': 'baz=quux', - 'pathname': '/foo/bar', - 'path': '/foo/bar?baz=quux' - }, - - 'http:/foo/bar?baz=quux#frag' : { - 'href': 'http:/foo/bar?baz=quux#frag', - 'protocol': 'http:', - 'hash': '#frag', - 'search': '?baz=quux', - 'query': 'baz=quux', - 'pathname': '/foo/bar', - 'path': '/foo/bar?baz=quux' - }, - - 'mailto:foo@bar.com?subject=hello' : { - 'href': 'mailto:foo@bar.com?subject=hello', - 'protocol': 'mailto:', - 'host': 'bar.com', - 'auth' : 'foo', - 'hostname' : 'bar.com', - 'search': '?subject=hello', - 'query': 'subject=hello', - 'path': '?subject=hello' - }, - - 'javascript:alert(\'hello\');' : { - 'href': 'javascript:alert(\'hello\');', - 'protocol': 'javascript:', - 'pathname': 'alert(\'hello\');', - 'path': 'alert(\'hello\');' - }, - - 'xmpp:isaacschlueter@jabber.org' : { - 'href': 'xmpp:isaacschlueter@jabber.org', - 'protocol': 'xmpp:', - 'host': 'jabber.org', - 'auth': 'isaacschlueter', - 'hostname': 'jabber.org' - }, - - 'http://atpass:foo%40bar@127.0.0.1:8080/path?search=foo#bar' : { - 'href' : 'http://atpass:foo%40bar@127.0.0.1:8080/path?search=foo#bar', - 'protocol' : 'http:', - 'slashes': true, - 'host' : '127.0.0.1:8080', - 'auth' : 'atpass:foo@bar', - 'hostname' : '127.0.0.1', - 'port' : '8080', - 'pathname': '/path', - 'search' : '?search=foo', - 'query' : 'search=foo', - 'hash' : '#bar', - 'path': '/path?search=foo' - }, - - 'svn+ssh://foo/bar': { - 'href': 'svn+ssh://foo/bar', - 'host': 'foo', - 'hostname': 'foo', - 'protocol': 'svn+ssh:', - 'pathname': '/bar', - 'path': '/bar', - 'slashes': true - }, - - 'dash-test://foo/bar': { - 'href': 'dash-test://foo/bar', - 'host': 'foo', - 'hostname': 'foo', - 'protocol': 'dash-test:', - 'pathname': '/bar', - 'path': '/bar', - 'slashes': true - }, - - 'dash-test:foo/bar': { - 'href': 'dash-test:foo/bar', - 'host': 'foo', - 'hostname': 'foo', - 'protocol': 'dash-test:', - 'pathname': '/bar', - 'path': '/bar' - }, - - 'dot.test://foo/bar': { - 'href': 'dot.test://foo/bar', - 'host': 'foo', - 'hostname': 'foo', - 'protocol': 'dot.test:', - 'pathname': '/bar', - 'path': '/bar', - 'slashes': true - }, - - 'dot.test:foo/bar': { - 'href': 'dot.test:foo/bar', - 'host': 'foo', - 'hostname': 'foo', - 'protocol': 'dot.test:', - 'pathname': '/bar', - 'path': '/bar' - }, - - // IDNA tests - 'http://www.日本語.com/' : { - 'href': 'http://www.xn--wgv71a119e.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.xn--wgv71a119e.com', - 'hostname': 'www.xn--wgv71a119e.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://example.Bücher.com/' : { - 'href': 'http://example.xn--bcher-kva.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.xn--bcher-kva.com', - 'hostname': 'example.xn--bcher-kva.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://www.Äffchen.com/' : { - 'href': 'http://www.xn--ffchen-9ta.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.xn--ffchen-9ta.com', - 'hostname': 'www.xn--ffchen-9ta.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://www.Äffchen.cOm*A/b/c?d=e#f gi' : { - 'href': 'http://www.xn--ffchen-9ta.com/*A/b/c?d=e#f%20g%3Ch%3Ei', - 'protocol': 'http:', - 'slashes': true, - 'host': 'www.xn--ffchen-9ta.com', - 'hostname': 'www.xn--ffchen-9ta.com', - 'pathname': '/*A/b/c', - 'search': '?d=e', - 'query': 'd=e', - 'hash': '#f%20g%3Ch%3Ei', - 'path': '/*A/b/c?d=e' - }, - - 'http://SÉLIER.COM/' : { - 'href': 'http://xn--slier-bsa.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'xn--slier-bsa.com', - 'hostname': 'xn--slier-bsa.com', - 'pathname': '/', - 'path': '/' - }, - - 'http://ليهمابتكلموشعربي؟.ي؟/' : { - 'href': 'http://xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f', - 'hostname': 'xn--egbpdaj6bu4bxfgehfvwxn.xn--egb9f', - 'pathname': '/', - 'path': '/' - }, - - 'http://âž¡.ws/âž¡' : { - 'href': 'http://xn--hgi.ws/âž¡', - 'protocol': 'http:', - 'slashes': true, - 'host': 'xn--hgi.ws', - 'hostname': 'xn--hgi.ws', - 'pathname': '/âž¡', - 'path': '/âž¡' - }, - - 'http://bucket_name.s3.amazonaws.com/image.jpg': { - protocol: 'http:', - slashes: true, - host: 'bucket_name.s3.amazonaws.com', - hostname: 'bucket_name.s3.amazonaws.com', - pathname: '/image.jpg', - href: 'http://bucket_name.s3.amazonaws.com/image.jpg', - 'path': '/image.jpg' - }, - - 'git+http://github.com/joyent/node.git': { - protocol: 'git+http:', - slashes: true, - host: 'github.com', - hostname: 'github.com', - pathname: '/joyent/node.git', - path: '/joyent/node.git', - href: 'git+http://github.com/joyent/node.git' - }, - - //if local1@domain1 is uses as a relative URL it may - //be parse into auth@hostname, but here there is no - //way to make it work in url.parse, I add the test to be explicit - 'local1@domain1': { - 'pathname': 'local1@domain1', - 'path': 'local1@domain1', - 'href': 'local1@domain1' - }, - - //While this may seem counter-intuitive, a browser will parse - // as a path. - 'www.example.com' : { - 'href': 'www.example.com', - 'pathname': 'www.example.com', - 'path': 'www.example.com' - }, - - // ipv6 support - '[fe80::1]': { - 'href': '[fe80::1]', - 'pathname': '[fe80::1]', - 'path': '[fe80::1]' - }, - - 'coap://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]': { - 'protocol': 'coap:', - 'slashes': true, - 'host': '[fedc:ba98:7654:3210:fedc:ba98:7654:3210]', - 'hostname': 'fedc:ba98:7654:3210:fedc:ba98:7654:3210', - 'href': 'coap://[fedc:ba98:7654:3210:fedc:ba98:7654:3210]/', - 'pathname': '/', - 'path': '/' - }, - - 'coap://[1080:0:0:0:8:800:200C:417A]:61616/': { - 'protocol': 'coap:', - 'slashes': true, - 'host': '[1080:0:0:0:8:800:200c:417a]:61616', - 'port': '61616', - 'hostname': '1080:0:0:0:8:800:200c:417a', - 'href': 'coap://[1080:0:0:0:8:800:200c:417a]:61616/', - 'pathname': '/', - 'path': '/' - }, - - 'http://user:password@[3ffe:2a00:100:7031::1]:8080': { - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:password', - 'host': '[3ffe:2a00:100:7031::1]:8080', - 'port': '8080', - 'hostname': '3ffe:2a00:100:7031::1', - 'href': 'http://user:password@[3ffe:2a00:100:7031::1]:8080/', - 'pathname': '/', - 'path': '/' - }, - - 'coap://u:p@[::192.9.5.5]:61616/.well-known/r?n=Temperature': { - 'protocol': 'coap:', - 'slashes': true, - 'auth': 'u:p', - 'host': '[::192.9.5.5]:61616', - 'port': '61616', - 'hostname': '::192.9.5.5', - 'href': 'coap://u:p@[::192.9.5.5]:61616/.well-known/r?n=Temperature', - 'search': '?n=Temperature', - 'query': 'n=Temperature', - 'pathname': '/.well-known/r', - 'path': '/.well-known/r?n=Temperature' - }, - - // empty port - 'http://example.com:': { - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com', - 'hostname': 'example.com', - 'href': 'http://example.com/', - 'pathname': '/', - 'path': '/' - }, - - 'http://example.com:/a/b.html': { - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com', - 'hostname': 'example.com', - 'href': 'http://example.com/a/b.html', - 'pathname': '/a/b.html', - 'path': '/a/b.html' - }, - - 'http://example.com:?a=b': { - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com', - 'hostname': 'example.com', - 'href': 'http://example.com/?a=b', - 'search': '?a=b', - 'query': 'a=b', - 'pathname': '/', - 'path': '/?a=b' - }, - - 'http://example.com:#abc': { - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com', - 'hostname': 'example.com', - 'href': 'http://example.com/#abc', - 'hash': '#abc', - 'pathname': '/', - 'path': '/' - }, - - 'http://[fe80::1]:/a/b?a=b#abc': { - 'protocol': 'http:', - 'slashes': true, - 'host': '[fe80::1]', - 'hostname': 'fe80::1', - 'href': 'http://[fe80::1]/a/b?a=b#abc', - 'search': '?a=b', - 'query': 'a=b', - 'hash': '#abc', - 'pathname': '/a/b', - 'path': '/a/b?a=b' - }, - - 'http://-lovemonsterz.tumblr.com/rss': { - 'protocol': 'http:', - 'slashes': true, - 'host': '-lovemonsterz.tumblr.com', - 'hostname': '-lovemonsterz.tumblr.com', - 'href': 'http://-lovemonsterz.tumblr.com/rss', - 'pathname': '/rss', - 'path': '/rss', - }, - - 'http://-lovemonsterz.tumblr.com:80/rss': { - 'protocol': 'http:', - 'slashes': true, - 'port': '80', - 'host': '-lovemonsterz.tumblr.com:80', - 'hostname': '-lovemonsterz.tumblr.com', - 'href': 'http://-lovemonsterz.tumblr.com:80/rss', - 'pathname': '/rss', - 'path': '/rss', - }, - - 'http://user:pass@-lovemonsterz.tumblr.com/rss': { - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:pass', - 'host': '-lovemonsterz.tumblr.com', - 'hostname': '-lovemonsterz.tumblr.com', - 'href': 'http://user:pass@-lovemonsterz.tumblr.com/rss', - 'pathname': '/rss', - 'path': '/rss', - }, - - 'http://user:pass@-lovemonsterz.tumblr.com:80/rss': { - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:pass', - 'port': '80', - 'host': '-lovemonsterz.tumblr.com:80', - 'hostname': '-lovemonsterz.tumblr.com', - 'href': 'http://user:pass@-lovemonsterz.tumblr.com:80/rss', - 'pathname': '/rss', - 'path': '/rss', - }, - - 'http://_jabber._tcp.google.com/test': { - 'protocol': 'http:', - 'slashes': true, - 'host': '_jabber._tcp.google.com', - 'hostname': '_jabber._tcp.google.com', - 'href': 'http://_jabber._tcp.google.com/test', - 'pathname': '/test', - 'path': '/test', - }, - - 'http://user:pass@_jabber._tcp.google.com/test': { - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:pass', - 'host': '_jabber._tcp.google.com', - 'hostname': '_jabber._tcp.google.com', - 'href': 'http://user:pass@_jabber._tcp.google.com/test', - 'pathname': '/test', - 'path': '/test', - }, - - 'http://_jabber._tcp.google.com:80/test': { - 'protocol': 'http:', - 'slashes': true, - 'port': '80', - 'host': '_jabber._tcp.google.com:80', - 'hostname': '_jabber._tcp.google.com', - 'href': 'http://_jabber._tcp.google.com:80/test', - 'pathname': '/test', - 'path': '/test', - }, - - 'http://user:pass@_jabber._tcp.google.com:80/test': { - 'protocol': 'http:', - 'slashes': true, - 'auth': 'user:pass', - 'port': '80', - 'host': '_jabber._tcp.google.com:80', - 'hostname': '_jabber._tcp.google.com', - 'href': 'http://user:pass@_jabber._tcp.google.com:80/test', - 'pathname': '/test', - 'path': '/test', - }, - - 'http://a@b@c/': { - protocol: 'http:', - slashes: true, - auth: 'a@b', - host: 'c', - hostname: 'c', - href: 'http://a%40b@c/', - path: '/', - pathname: '/' - }, - - 'http://a@b?@c': { - protocol: 'http:', - slashes: true, - auth: 'a', - host: 'b', - hostname: 'b', - href: 'http://a@b/?@c', - path: '/?@c', - pathname: '/', - search: '?@c', - query: '@c' - }, - - 'http://a\r" \t\n<\'b:b@c\r\nd/e?f':{ - protocol: 'http:', - slashes: true, - auth: 'a\r" \t\n<\'b:b', - host: 'c', - port: null, - hostname: 'c', - hash: null, - search: '?f', - query: 'f', - pathname: '%0D%0Ad/e', - path: '%0D%0Ad/e?f', - href: 'http://a%0D%22%20%09%0A%3C\'b:b@c/%0D%0Ad/e?f' - } - -}; - -for (var u in parseTests) { - var actual = url.parse(u), - spaced = url.parse(' \t ' + u + '\n\t'); - expected = parseTests[u]; - - Object.keys(actual).forEach(function (i) { - if (expected[i] === undefined && actual[i] === null) { - expected[i] = null; - } - }); - - assert.deepEqual(actual, expected); - assert.deepEqual(spaced, expected); - - var expected = parseTests[u].href, - actual = url.format(parseTests[u]); - - assert.equal(actual, expected, - 'format(' + u + ') == ' + u + '\nactual:' + actual); -} - -var parseTestsWithQueryString = { - '/foo/bar?baz=quux#frag' : { - 'href': '/foo/bar?baz=quux#frag', - 'hash': '#frag', - 'search': '?baz=quux', - 'query': { - 'baz': 'quux' - }, - 'pathname': '/foo/bar', - 'path': '/foo/bar?baz=quux' - }, - 'http://example.com' : { - 'href': 'http://example.com/', - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com', - 'hostname': 'example.com', - 'query': {}, - 'search': '', - 'pathname': '/', - 'path': '/' - } -}; -for (var u in parseTestsWithQueryString) { - var actual = url.parse(u, true); - var expected = parseTestsWithQueryString[u]; - for (var i in actual) { - if (actual[i] === null && expected[i] === undefined) { - expected[i] = null; - } - } - - assert.deepEqual(actual, expected); -} - -// some extra formatting tests, just to verify -// that it'll format slightly wonky content to a valid url. -var formatTests = { - 'http://example.com?' : { - 'href': 'http://example.com/?', - 'protocol': 'http:', - 'slashes': true, - 'host': 'example.com', - 'hostname': 'example.com', - 'search': '?', - 'query': {}, - 'pathname': '/' - }, - 'http://example.com?foo=bar#frag' : { - 'href': 'http://example.com/?foo=bar#frag', - 'protocol': 'http:', - 'host': 'example.com', - 'hostname': 'example.com', - 'hash': '#frag', - 'search': '?foo=bar', - 'query': 'foo=bar', - 'pathname': '/' - }, - 'http://example.com?foo=@bar#frag' : { - 'href': 'http://example.com/?foo=@bar#frag', - 'protocol': 'http:', - 'host': 'example.com', - 'hostname': 'example.com', - 'hash': '#frag', - 'search': '?foo=@bar', - 'query': 'foo=@bar', - 'pathname': '/' - }, - 'http://example.com?foo=/bar/#frag' : { - 'href': 'http://example.com/?foo=/bar/#frag', - 'protocol': 'http:', - 'host': 'example.com', - 'hostname': 'example.com', - 'hash': '#frag', - 'search': '?foo=/bar/', - 'query': 'foo=/bar/', - 'pathname': '/' - }, - 'http://example.com?foo=?bar/#frag' : { - 'href': 'http://example.com/?foo=?bar/#frag', - 'protocol': 'http:', - 'host': 'example.com', - 'hostname': 'example.com', - 'hash': '#frag', - 'search': '?foo=?bar/', - 'query': 'foo=?bar/', - 'pathname': '/' - }, - 'http://example.com#frag=?bar/#frag' : { - 'href': 'http://example.com/#frag=?bar/#frag', - 'protocol': 'http:', - 'host': 'example.com', - 'hostname': 'example.com', - 'hash': '#frag=?bar/#frag', - 'pathname': '/' - }, - 'http://google.com" onload="alert(42)/' : { - 'href': 'http://google.com/%22%20onload=%22alert(42)/', - 'protocol': 'http:', - 'host': 'google.com', - 'pathname': '/%22%20onload=%22alert(42)/' - }, - 'http://a.com/a/b/c?s#h' : { - 'href': 'http://a.com/a/b/c?s#h', - 'protocol': 'http', - 'host': 'a.com', - 'pathname': 'a/b/c', - 'hash': 'h', - 'search': 's' - }, - 'xmpp:isaacschlueter@jabber.org' : { - 'href': 'xmpp:isaacschlueter@jabber.org', - 'protocol': 'xmpp:', - 'host': 'jabber.org', - 'auth': 'isaacschlueter', - 'hostname': 'jabber.org' - }, - 'http://atpass:foo%40bar@127.0.0.1/' : { - 'href': 'http://atpass:foo%40bar@127.0.0.1/', - 'auth': 'atpass:foo@bar', - 'hostname': '127.0.0.1', - 'protocol': 'http:', - 'pathname': '/' - }, - 'http://atslash%2F%40:%2F%40@foo/' : { - 'href': 'http://atslash%2F%40:%2F%40@foo/', - 'auth': 'atslash/@:/@', - 'hostname': 'foo', - 'protocol': 'http:', - 'pathname': '/' - }, - 'svn+ssh://foo/bar': { - 'href': 'svn+ssh://foo/bar', - 'hostname': 'foo', - 'protocol': 'svn+ssh:', - 'pathname': '/bar', - 'slashes': true - }, - 'dash-test://foo/bar': { - 'href': 'dash-test://foo/bar', - 'hostname': 'foo', - 'protocol': 'dash-test:', - 'pathname': '/bar', - 'slashes': true - }, - 'dash-test:foo/bar': { - 'href': 'dash-test:foo/bar', - 'hostname': 'foo', - 'protocol': 'dash-test:', - 'pathname': '/bar' - }, - 'dot.test://foo/bar': { - 'href': 'dot.test://foo/bar', - 'hostname': 'foo', - 'protocol': 'dot.test:', - 'pathname': '/bar', - 'slashes': true - }, - 'dot.test:foo/bar': { - 'href': 'dot.test:foo/bar', - 'hostname': 'foo', - 'protocol': 'dot.test:', - 'pathname': '/bar' - }, - // ipv6 support - 'coap:u:p@[::1]:61616/.well-known/r?n=Temperature': { - 'href': 'coap:u:p@[::1]:61616/.well-known/r?n=Temperature', - 'protocol': 'coap:', - 'auth': 'u:p', - 'hostname': '::1', - 'port': '61616', - 'pathname': '/.well-known/r', - 'search': 'n=Temperature' - }, - 'coap:[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616/s/stopButton': { - 'href': 'coap:[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616/s/stopButton', - 'protocol': 'coap', - 'host': '[fedc:ba98:7654:3210:fedc:ba98:7654:3210]:61616', - 'pathname': '/s/stopButton' - }, - - // encode context-specific delimiters in path and query, but do not touch - // other non-delimiter chars like `%`. - // - - // `#`,`?` in path - '/path/to/%%23%3F+=&.txt?foo=theA1#bar' : { - href : '/path/to/%%23%3F+=&.txt?foo=theA1#bar', - pathname: '/path/to/%#?+=&.txt', - query: { - foo: 'theA1' - }, - hash: "#bar" - }, - - // `#`,`?` in path + `#` in query - '/path/to/%%23%3F+=&.txt?foo=the%231#bar' : { - href : '/path/to/%%23%3F+=&.txt?foo=the%231#bar', - pathname: '/path/to/%#?+=&.txt', - query: { - foo: 'the#1' - }, - hash: "#bar" - }, - - // `?` and `#` in path and search - 'http://ex.com/foo%3F100%m%23r?abc=the%231?&foo=bar#frag': { - href: 'http://ex.com/foo%3F100%m%23r?abc=the%231?&foo=bar#frag', - protocol: 'http:', - hostname: 'ex.com', - hash: '#frag', - search: '?abc=the#1?&foo=bar', - pathname: '/foo?100%m#r', - }, - - // `?` and `#` in search only - 'http://ex.com/fooA100%mBr?abc=the%231?&foo=bar#frag': { - href: 'http://ex.com/fooA100%mBr?abc=the%231?&foo=bar#frag', - protocol: 'http:', - hostname: 'ex.com', - hash: '#frag', - search: '?abc=the#1?&foo=bar', - pathname: '/fooA100%mBr', - } -}; -for (var u in formatTests) { - var expect = formatTests[u].href; - delete formatTests[u].href; - var actual = url.format(u); - var actualObj = url.format(formatTests[u]); - assert.equal(actual, expect, - 'wonky format(' + u + ') == ' + expect + - '\nactual:' + actual); - assert.equal(actualObj, expect, - 'wonky format(' + JSON.stringify(formatTests[u]) + - ') == ' + expect + - '\nactual: ' + actualObj); -} - -/* - [from, path, expected] -*/ -var relativeTests = [ - ['/foo/bar/baz', 'quux', '/foo/bar/quux'], - ['/foo/bar/baz', 'quux/asdf', '/foo/bar/quux/asdf'], - ['/foo/bar/baz', 'quux/baz', '/foo/bar/quux/baz'], - ['/foo/bar/baz', '../quux/baz', '/foo/quux/baz'], - ['/foo/bar/baz', '/bar', '/bar'], - ['/foo/bar/baz/', 'quux', '/foo/bar/baz/quux'], - ['/foo/bar/baz/', 'quux/baz', '/foo/bar/baz/quux/baz'], - ['/foo/bar/baz', '../../../../../../../../quux/baz', '/quux/baz'], - ['/foo/bar/baz', '../../../../../../../quux/baz', '/quux/baz'], - ['foo/bar', '../../../baz', '../../baz'], - ['foo/bar/', '../../../baz', '../baz'], - ['http://example.com/b//c//d;p?q#blarg', 'https:#hash2', 'https:///#hash2'], - ['http://example.com/b//c//d;p?q#blarg', - 'https:/p/a/t/h?s#hash2', - 'https://p/a/t/h?s#hash2'], - ['http://example.com/b//c//d;p?q#blarg', - 'https://u:p@h.com/p/a/t/h?s#hash2', - 'https://u:p@h.com/p/a/t/h?s#hash2'], - ['http://example.com/b//c//d;p?q#blarg', - 'https:/a/b/c/d', - 'https://a/b/c/d'], - ['http://example.com/b//c//d;p?q#blarg', - 'http:#hash2', - 'http://example.com/b//c//d;p?q#hash2'], - ['http://example.com/b//c//d;p?q#blarg', - 'http:/p/a/t/h?s#hash2', - 'http://example.com/p/a/t/h?s#hash2'], - ['http://example.com/b//c//d;p?q#blarg', - 'http://u:p@h.com/p/a/t/h?s#hash2', - 'http://u:p@h.com/p/a/t/h?s#hash2'], - ['http://example.com/b//c//d;p?q#blarg', - 'http:/a/b/c/d', - 'http://example.com/a/b/c/d'], - ['/foo/bar/baz', '/../etc/passwd', '/etc/passwd'] -]; -relativeTests.forEach(function(relativeTest) { - var a = url.resolve(relativeTest[0], relativeTest[1]), - e = relativeTest[2]; - assert.equal(a, e, - 'resolve(' + [relativeTest[0], relativeTest[1]] + ') == ' + e + - '\n actual=' + a); -}); - - -// https://github.com/joyent/node/issues/568 -[ - undefined, - null, - true, - false, - 0.0, - 0, - [], - {} -].forEach(function(val) { - assert.throws(function() { url.parse(val); }, TypeError); -}); - - -// -// Tests below taken from Chiron -// http://code.google.com/p/chironjs/source/browse/trunk/src/test/http/url.js -// -// Copyright (c) 2002-2008 Kris Kowal -// used with permission under MIT License -// -// Changes marked with @isaacs - -var bases = [ - 'http://a/b/c/d;p?q', - 'http://a/b/c/d;p?q=1/2', - 'http://a/b/c/d;p=1/2?q', - 'fred:///s//a/b/c', - 'http:///s//a/b/c' -]; - -//[to, from, result] -var relativeTests2 = [ - // http://lists.w3.org/Archives/Public/uri/2004Feb/0114.html - ['../c', 'foo:a/b', 'foo:c'], - ['foo:.', 'foo:a', 'foo:'], - ['/foo/../../../bar', 'zz:abc', 'zz:/bar'], - ['/foo/../bar', 'zz:abc', 'zz:/bar'], - // @isaacs Disagree. Not how web browsers resolve this. - ['foo/../../../bar', 'zz:abc', 'zz:bar'], - // ['foo/../../../bar', 'zz:abc', 'zz:../../bar'], // @isaacs Added - ['foo/../bar', 'zz:abc', 'zz:bar'], - ['zz:.', 'zz:abc', 'zz:'], - ['/.', bases[0], 'http://a/'], - ['/.foo', bases[0], 'http://a/.foo'], - ['.foo', bases[0], 'http://a/b/c/.foo'], - - // http://gbiv.com/protocols/uri/test/rel_examples1.html - // examples from RFC 2396 - ['g:h', bases[0], 'g:h'], - ['g', bases[0], 'http://a/b/c/g'], - ['./g', bases[0], 'http://a/b/c/g'], - ['g/', bases[0], 'http://a/b/c/g/'], - ['/g', bases[0], 'http://a/g'], - ['//g', bases[0], 'http://g/'], - // changed with RFC 2396bis - //('?y', bases[0], 'http://a/b/c/d;p?y'], - ['?y', bases[0], 'http://a/b/c/d;p?y'], - ['g?y', bases[0], 'http://a/b/c/g?y'], - // changed with RFC 2396bis - //('#s', bases[0], CURRENT_DOC_URI + '#s'], - ['#s', bases[0], 'http://a/b/c/d;p?q#s'], - ['g#s', bases[0], 'http://a/b/c/g#s'], - ['g?y#s', bases[0], 'http://a/b/c/g?y#s'], - [';x', bases[0], 'http://a/b/c/;x'], - ['g;x', bases[0], 'http://a/b/c/g;x'], - ['g;x?y#s', bases[0], 'http://a/b/c/g;x?y#s'], - // changed with RFC 2396bis - //('', bases[0], CURRENT_DOC_URI], - ['', bases[0], 'http://a/b/c/d;p?q'], - ['.', bases[0], 'http://a/b/c/'], - ['./', bases[0], 'http://a/b/c/'], - ['..', bases[0], 'http://a/b/'], - ['../', bases[0], 'http://a/b/'], - ['../g', bases[0], 'http://a/b/g'], - ['../..', bases[0], 'http://a/'], - ['../../', bases[0], 'http://a/'], - ['../../g', bases[0], 'http://a/g'], - ['../../../g', bases[0], ('http://a/../g', 'http://a/g')], - ['../../../../g', bases[0], ('http://a/../../g', 'http://a/g')], - // changed with RFC 2396bis - //('/./g', bases[0], 'http://a/./g'], - ['/./g', bases[0], 'http://a/g'], - // changed with RFC 2396bis - //('/../g', bases[0], 'http://a/../g'], - ['/../g', bases[0], 'http://a/g'], - ['g.', bases[0], 'http://a/b/c/g.'], - ['.g', bases[0], 'http://a/b/c/.g'], - ['g..', bases[0], 'http://a/b/c/g..'], - ['..g', bases[0], 'http://a/b/c/..g'], - ['./../g', bases[0], 'http://a/b/g'], - ['./g/.', bases[0], 'http://a/b/c/g/'], - ['g/./h', bases[0], 'http://a/b/c/g/h'], - ['g/../h', bases[0], 'http://a/b/c/h'], - ['g;x=1/./y', bases[0], 'http://a/b/c/g;x=1/y'], - ['g;x=1/../y', bases[0], 'http://a/b/c/y'], - ['g?y/./x', bases[0], 'http://a/b/c/g?y/./x'], - ['g?y/../x', bases[0], 'http://a/b/c/g?y/../x'], - ['g#s/./x', bases[0], 'http://a/b/c/g#s/./x'], - ['g#s/../x', bases[0], 'http://a/b/c/g#s/../x'], - ['http:g', bases[0], ('http:g', 'http://a/b/c/g')], - ['http:', bases[0], ('http:', bases[0])], - // not sure where this one originated - ['/a/b/c/./../../g', bases[0], 'http://a/a/g'], - - // http://gbiv.com/protocols/uri/test/rel_examples2.html - // slashes in base URI's query args - ['g', bases[1], 'http://a/b/c/g'], - ['./g', bases[1], 'http://a/b/c/g'], - ['g/', bases[1], 'http://a/b/c/g/'], - ['/g', bases[1], 'http://a/g'], - ['//g', bases[1], 'http://g/'], - // changed in RFC 2396bis - //('?y', bases[1], 'http://a/b/c/?y'], - ['?y', bases[1], 'http://a/b/c/d;p?y'], - ['g?y', bases[1], 'http://a/b/c/g?y'], - ['g?y/./x', bases[1], 'http://a/b/c/g?y/./x'], - ['g?y/../x', bases[1], 'http://a/b/c/g?y/../x'], - ['g#s', bases[1], 'http://a/b/c/g#s'], - ['g#s/./x', bases[1], 'http://a/b/c/g#s/./x'], - ['g#s/../x', bases[1], 'http://a/b/c/g#s/../x'], - ['./', bases[1], 'http://a/b/c/'], - ['../', bases[1], 'http://a/b/'], - ['../g', bases[1], 'http://a/b/g'], - ['../../', bases[1], 'http://a/'], - ['../../g', bases[1], 'http://a/g'], - - // http://gbiv.com/protocols/uri/test/rel_examples3.html - // slashes in path params - // all of these changed in RFC 2396bis - ['g', bases[2], 'http://a/b/c/d;p=1/g'], - ['./g', bases[2], 'http://a/b/c/d;p=1/g'], - ['g/', bases[2], 'http://a/b/c/d;p=1/g/'], - ['g?y', bases[2], 'http://a/b/c/d;p=1/g?y'], - [';x', bases[2], 'http://a/b/c/d;p=1/;x'], - ['g;x', bases[2], 'http://a/b/c/d;p=1/g;x'], - ['g;x=1/./y', bases[2], 'http://a/b/c/d;p=1/g;x=1/y'], - ['g;x=1/../y', bases[2], 'http://a/b/c/d;p=1/y'], - ['./', bases[2], 'http://a/b/c/d;p=1/'], - ['../', bases[2], 'http://a/b/c/'], - ['../g', bases[2], 'http://a/b/c/g'], - ['../../', bases[2], 'http://a/b/'], - ['../../g', bases[2], 'http://a/b/g'], - - // http://gbiv.com/protocols/uri/test/rel_examples4.html - // double and triple slash, unknown scheme - ['g:h', bases[3], 'g:h'], - ['g', bases[3], 'fred:///s//a/b/g'], - ['./g', bases[3], 'fred:///s//a/b/g'], - ['g/', bases[3], 'fred:///s//a/b/g/'], - ['/g', bases[3], 'fred:///g'], // may change to fred:///s//a/g - ['//g', bases[3], 'fred://g'], // may change to fred:///s//g - ['//g/x', bases[3], 'fred://g/x'], // may change to fred:///s//g/x - ['///g', bases[3], 'fred:///g'], - ['./', bases[3], 'fred:///s//a/b/'], - ['../', bases[3], 'fred:///s//a/'], - ['../g', bases[3], 'fred:///s//a/g'], - - ['../../', bases[3], 'fred:///s//'], - ['../../g', bases[3], 'fred:///s//g'], - ['../../../g', bases[3], 'fred:///s/g'], - // may change to fred:///s//a/../../../g - ['../../../../g', bases[3], 'fred:///g'], - - // http://gbiv.com/protocols/uri/test/rel_examples5.html - // double and triple slash, well-known scheme - ['g:h', bases[4], 'g:h'], - ['g', bases[4], 'http:///s//a/b/g'], - ['./g', bases[4], 'http:///s//a/b/g'], - ['g/', bases[4], 'http:///s//a/b/g/'], - ['/g', bases[4], 'http:///g'], // may change to http:///s//a/g - ['//g', bases[4], 'http://g/'], // may change to http:///s//g - ['//g/x', bases[4], 'http://g/x'], // may change to http:///s//g/x - ['///g', bases[4], 'http:///g'], - ['./', bases[4], 'http:///s//a/b/'], - ['../', bases[4], 'http:///s//a/'], - ['../g', bases[4], 'http:///s//a/g'], - ['../../', bases[4], 'http:///s//'], - ['../../g', bases[4], 'http:///s//g'], - // may change to http:///s//a/../../g - ['../../../g', bases[4], 'http:///s/g'], - // may change to http:///s//a/../../../g - ['../../../../g', bases[4], 'http:///g'], - - // from Dan Connelly's tests in http://www.w3.org/2000/10/swap/uripath.py - ['bar:abc', 'foo:xyz', 'bar:abc'], - ['../abc', 'http://example/x/y/z', 'http://example/x/abc'], - ['http://example/x/abc', 'http://example2/x/y/z', 'http://example/x/abc'], - ['../r', 'http://ex/x/y/z', 'http://ex/x/r'], - ['q/r', 'http://ex/x/y', 'http://ex/x/q/r'], - ['q/r#s', 'http://ex/x/y', 'http://ex/x/q/r#s'], - ['q/r#s/t', 'http://ex/x/y', 'http://ex/x/q/r#s/t'], - ['ftp://ex/x/q/r', 'http://ex/x/y', 'ftp://ex/x/q/r'], - ['', 'http://ex/x/y', 'http://ex/x/y'], - ['', 'http://ex/x/y/', 'http://ex/x/y/'], - ['', 'http://ex/x/y/pdq', 'http://ex/x/y/pdq'], - ['z/', 'http://ex/x/y/', 'http://ex/x/y/z/'], - ['#Animal', - 'file:/swap/test/animal.rdf', - 'file:/swap/test/animal.rdf#Animal'], - ['../abc', 'file:/e/x/y/z', 'file:/e/x/abc'], - ['/example/x/abc', 'file:/example2/x/y/z', 'file:/example/x/abc'], - ['../r', 'file:/ex/x/y/z', 'file:/ex/x/r'], - ['/r', 'file:/ex/x/y/z', 'file:/r'], - ['q/r', 'file:/ex/x/y', 'file:/ex/x/q/r'], - ['q/r#s', 'file:/ex/x/y', 'file:/ex/x/q/r#s'], - ['q/r#', 'file:/ex/x/y', 'file:/ex/x/q/r#'], - ['q/r#s/t', 'file:/ex/x/y', 'file:/ex/x/q/r#s/t'], - ['ftp://ex/x/q/r', 'file:/ex/x/y', 'ftp://ex/x/q/r'], - ['', 'file:/ex/x/y', 'file:/ex/x/y'], - ['', 'file:/ex/x/y/', 'file:/ex/x/y/'], - ['', 'file:/ex/x/y/pdq', 'file:/ex/x/y/pdq'], - ['z/', 'file:/ex/x/y/', 'file:/ex/x/y/z/'], - ['file://meetings.example.com/cal#m1', - 'file:/devel/WWW/2000/10/swap/test/reluri-1.n3', - 'file://meetings.example.com/cal#m1'], - ['file://meetings.example.com/cal#m1', - 'file:/home/connolly/w3ccvs/WWW/2000/10/swap/test/reluri-1.n3', - 'file://meetings.example.com/cal#m1'], - ['./#blort', 'file:/some/dir/foo', 'file:/some/dir/#blort'], - ['./#', 'file:/some/dir/foo', 'file:/some/dir/#'], - // Ryan Lee - ['./', 'http://example/x/abc.efg', 'http://example/x/'], - - - // Graham Klyne's tests - // http://www.ninebynine.org/Software/HaskellUtils/Network/UriTest.xls - // 01-31 are from Connelly's cases - - // 32-49 - ['./q:r', 'http://ex/x/y', 'http://ex/x/q:r'], - ['./p=q:r', 'http://ex/x/y', 'http://ex/x/p=q:r'], - ['?pp/rr', 'http://ex/x/y?pp/qq', 'http://ex/x/y?pp/rr'], - ['y/z', 'http://ex/x/y?pp/qq', 'http://ex/x/y/z'], - ['local/qual@domain.org#frag', - 'mailto:local', - 'mailto:local/qual@domain.org#frag'], - ['more/qual2@domain2.org#frag', - 'mailto:local/qual1@domain1.org', - 'mailto:local/more/qual2@domain2.org#frag'], - ['y?q', 'http://ex/x/y?q', 'http://ex/x/y?q'], - ['/x/y?q', 'http://ex?p', 'http://ex/x/y?q'], - ['c/d', 'foo:a/b', 'foo:a/c/d'], - ['/c/d', 'foo:a/b', 'foo:/c/d'], - ['', 'foo:a/b?c#d', 'foo:a/b?c'], - ['b/c', 'foo:a', 'foo:b/c'], - ['../b/c', 'foo:/a/y/z', 'foo:/a/b/c'], - ['./b/c', 'foo:a', 'foo:b/c'], - ['/./b/c', 'foo:a', 'foo:/b/c'], - ['../../d', 'foo://a//b/c', 'foo://a/d'], - ['.', 'foo:a', 'foo:'], - ['..', 'foo:a', 'foo:'], - - // 50-57[cf. TimBL comments -- - // http://lists.w3.org/Archives/Public/uri/2003Feb/0028.html, - // http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html) - ['abc', 'http://example/x/y%2Fz', 'http://example/x/abc'], - ['../../x%2Fabc', 'http://example/a/x/y/z', 'http://example/a/x%2Fabc'], - ['../x%2Fabc', 'http://example/a/x/y%2Fz', 'http://example/a/x%2Fabc'], - ['abc', 'http://example/x%2Fy/z', 'http://example/x%2Fy/abc'], - ['q%3Ar', 'http://ex/x/y', 'http://ex/x/q%3Ar'], - ['/x%2Fabc', 'http://example/x/y%2Fz', 'http://example/x%2Fabc'], - ['/x%2Fabc', 'http://example/x/y/z', 'http://example/x%2Fabc'], - ['/x%2Fabc', 'http://example/x/y%2Fz', 'http://example/x%2Fabc'], - - // 70-77 - ['local2@domain2', 'mailto:local1@domain1?query1', 'mailto:local2@domain2'], - ['local2@domain2?query2', - 'mailto:local1@domain1', - 'mailto:local2@domain2?query2'], - ['local2@domain2?query2', - 'mailto:local1@domain1?query1', - 'mailto:local2@domain2?query2'], - ['?query2', 'mailto:local@domain?query1', 'mailto:local@domain?query2'], - ['local@domain?query2', 'mailto:?query1', 'mailto:local@domain?query2'], - ['?query2', 'mailto:local@domain?query1', 'mailto:local@domain?query2'], - ['http://example/a/b?c/../d', 'foo:bar', 'http://example/a/b?c/../d'], - ['http://example/a/b#c/../d', 'foo:bar', 'http://example/a/b#c/../d'], - - // 82-88 - // @isaacs Disagree. Not how browsers do it. - // ['http:this', 'http://example.org/base/uri', 'http:this'], - // @isaacs Added - ['http:this', 'http://example.org/base/uri', 'http://example.org/base/this'], - ['http:this', 'http:base', 'http:this'], - ['.//g', 'f:/a', 'f://g'], - ['b/c//d/e', 'f://example.org/base/a', 'f://example.org/base/b/c//d/e'], - ['m2@example.ord/c2@example.org', - 'mid:m@example.ord/c@example.org', - 'mid:m@example.ord/m2@example.ord/c2@example.org'], - ['mini1.xml', - 'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/', - 'file:///C:/DEV/Haskell/lib/HXmlToolbox-3.01/examples/mini1.xml'], - ['../b/c', 'foo:a/y/z', 'foo:a/b/c'], - - //changeing auth - ['http://diff:auth@www.example.com', - 'http://asdf:qwer@www.example.com', - 'http://diff:auth@www.example.com/'] -]; -relativeTests2.forEach(function(relativeTest) { - var a = url.resolve(relativeTest[1], relativeTest[0]), - e = relativeTest[2]; - assert.equal(a, e, - 'resolve(' + [relativeTest[1], relativeTest[0]] + ') == ' + e + - '\n actual=' + a); -}); - -//if format and parse are inverse operations then -//resolveObject(parse(x), y) == parse(resolve(x, y)) - -//host and hostname are special, in this case a '' value is important -var emptyIsImportant = {'host': true, 'hostname': ''}; - -//format: [from, path, expected] -relativeTests.forEach(function(relativeTest) { - var actual = url.resolveObject(url.parse(relativeTest[0]), relativeTest[1]), - expected = url.parse(relativeTest[2]); - - - assert.deepEqual(actual, expected); - - expected = relativeTest[2]; - actual = url.format(actual); - - assert.equal(actual, expected, - 'format(' + actual + ') == ' + expected + '\nactual:' + actual); -}); - -//format: [to, from, result] -// the test: ['.//g', 'f:/a', 'f://g'] is a fundimental problem -// url.parse('f:/a') does not have a host -// url.resolve('f:/a', './/g') does not have a host becuase you have moved -// down to the g directory. i.e. f: //g, however when this url is parsed -// f:// will indicate that the host is g which is not the case. -// it is unclear to me how to keep this information from being lost -// it may be that a pathname of ////g should colapse to /g but this seems -// to be a lot of work for an edge case. Right now I remove the test -if (relativeTests2[181][0] === './/g' && - relativeTests2[181][1] === 'f:/a' && - relativeTests2[181][2] === 'f://g') { - relativeTests2.splice(181, 1); -} -relativeTests2.forEach(function(relativeTest) { - var actual = url.resolveObject(url.parse(relativeTest[1]), relativeTest[0]), - expected = url.parse(relativeTest[2]); - - assert.deepEqual(actual, expected); - - var expected = relativeTest[2], - actual = url.format(actual); - - assert.equal(actual, expected, - 'format(' + relativeTest[1] + ') == ' + expected + - '\nactual:' + actual); -}); - -}); diff --git a/node_modules/aws-sdk/node_modules/url/url.js b/node_modules/aws-sdk/node_modules/url/url.js deleted file mode 100644 index ddc4ade..0000000 --- a/node_modules/aws-sdk/node_modules/url/url.js +++ /dev/null @@ -1,707 +0,0 @@ -// Copyright Joyent, Inc. and other Node contributors. -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to permit -// persons to whom the Software is furnished to do so, subject to the -// following conditions: -// -// The above copyright notice and this permission notice shall be included -// in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN -// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, -// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR -// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE -// USE OR OTHER DEALINGS IN THE SOFTWARE. - -var punycode = require('punycode'); - -exports.parse = urlParse; -exports.resolve = urlResolve; -exports.resolveObject = urlResolveObject; -exports.format = urlFormat; - -exports.Url = Url; - -function Url() { - this.protocol = null; - this.slashes = null; - this.auth = null; - this.host = null; - this.port = null; - this.hostname = null; - this.hash = null; - this.search = null; - this.query = null; - this.pathname = null; - this.path = null; - this.href = null; -} - -// Reference: RFC 3986, RFC 1808, RFC 2396 - -// define these here so at least they only have to be -// compiled once on the first module load. -var protocolPattern = /^([a-z0-9.+-]+:)/i, - portPattern = /:[0-9]*$/, - - // RFC 2396: characters reserved for delimiting URLs. - // We actually just auto-escape these. - delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'], - - // RFC 2396: characters not allowed for various reasons. - unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims), - - // Allowed by RFCs, but cause of XSS attacks. Always escape these. - autoEscape = ['\''].concat(unwise), - // Characters that are never ever allowed in a hostname. - // Note that any invalid chars are also handled, but these - // are the ones that are *expected* to be seen, so we fast-path - // them. - nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape), - hostEndingChars = ['/', '?', '#'], - hostnameMaxLen = 255, - hostnamePartPattern = /^[a-z0-9A-Z_-]{0,63}$/, - hostnamePartStart = /^([a-z0-9A-Z_-]{0,63})(.*)$/, - // protocols that can allow "unsafe" and "unwise" chars. - unsafeProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that never have a hostname. - hostlessProtocol = { - 'javascript': true, - 'javascript:': true - }, - // protocols that always contain a // bit. - slashedProtocol = { - 'http': true, - 'https': true, - 'ftp': true, - 'gopher': true, - 'file': true, - 'http:': true, - 'https:': true, - 'ftp:': true, - 'gopher:': true, - 'file:': true - }, - querystring = require('querystring'); - -function urlParse(url, parseQueryString, slashesDenoteHost) { - if (url && isObject(url) && url instanceof Url) return url; - - var u = new Url; - u.parse(url, parseQueryString, slashesDenoteHost); - return u; -} - -Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) { - if (!isString(url)) { - throw new TypeError("Parameter 'url' must be a string, not " + typeof url); - } - - var rest = url; - - // trim before proceeding. - // This is to support parse stuff like " http://foo.com \n" - rest = rest.trim(); - - var proto = protocolPattern.exec(rest); - if (proto) { - proto = proto[0]; - var lowerProto = proto.toLowerCase(); - this.protocol = lowerProto; - rest = rest.substr(proto.length); - } - - // figure out if it's got a host - // user@server is *always* interpreted as a hostname, and url - // resolution will treat //foo/bar as host=foo,path=bar because that's - // how the browser resolves relative URLs. - if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) { - var slashes = rest.substr(0, 2) === '//'; - if (slashes && !(proto && hostlessProtocol[proto])) { - rest = rest.substr(2); - this.slashes = true; - } - } - - if (!hostlessProtocol[proto] && - (slashes || (proto && !slashedProtocol[proto]))) { - - // there's a hostname. - // the first instance of /, ?, ;, or # ends the host. - // - // If there is an @ in the hostname, then non-host chars *are* allowed - // to the left of the last @ sign, unless some host-ending character - // comes *before* the @-sign. - // URLs are obnoxious. - // - // ex: - // http://a@b@c/ => user:a@b host:c - // http://a@b?@c => user:a host:c path:/?@c - - // v0.12 TODO(isaacs): This is not quite how Chrome does things. - // Review our test case against browsers more comprehensively. - - // find the first instance of any hostEndingChars - var hostEnd = -1; - for (var i = 0; i < hostEndingChars.length; i++) { - var hec = rest.indexOf(hostEndingChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - - // at this point, either we have an explicit point where the - // auth portion cannot go past, or the last @ char is the decider. - var auth, atSign; - if (hostEnd === -1) { - // atSign can be anywhere. - atSign = rest.lastIndexOf('@'); - } else { - // atSign must be in auth portion. - // http://a@b/c@d => host:b auth:a path:/c@d - atSign = rest.lastIndexOf('@', hostEnd); - } - - // Now we have a portion which is definitely the auth. - // Pull that off. - if (atSign !== -1) { - auth = rest.slice(0, atSign); - rest = rest.slice(atSign + 1); - this.auth = decodeURIComponent(auth); - } - - // the host is the remaining to the left of the first non-host char - hostEnd = -1; - for (var i = 0; i < nonHostChars.length; i++) { - var hec = rest.indexOf(nonHostChars[i]); - if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) - hostEnd = hec; - } - // if we still have not hit it, then the entire thing is a host. - if (hostEnd === -1) - hostEnd = rest.length; - - this.host = rest.slice(0, hostEnd); - rest = rest.slice(hostEnd); - - // pull out port. - this.parseHost(); - - // we've indicated that there is a hostname, - // so even if it's empty, it has to be present. - this.hostname = this.hostname || ''; - - // if hostname begins with [ and ends with ] - // assume that it's an IPv6 address. - var ipv6Hostname = this.hostname[0] === '[' && - this.hostname[this.hostname.length - 1] === ']'; - - // validate a little. - if (!ipv6Hostname) { - var hostparts = this.hostname.split(/\./); - for (var i = 0, l = hostparts.length; i < l; i++) { - var part = hostparts[i]; - if (!part) continue; - if (!part.match(hostnamePartPattern)) { - var newpart = ''; - for (var j = 0, k = part.length; j < k; j++) { - if (part.charCodeAt(j) > 127) { - // we replace non-ASCII char with a temporary placeholder - // we need this to make sure size of hostname is not - // broken by replacing non-ASCII by nothing - newpart += 'x'; - } else { - newpart += part[j]; - } - } - // we test again with ASCII char only - if (!newpart.match(hostnamePartPattern)) { - var validParts = hostparts.slice(0, i); - var notHost = hostparts.slice(i + 1); - var bit = part.match(hostnamePartStart); - if (bit) { - validParts.push(bit[1]); - notHost.unshift(bit[2]); - } - if (notHost.length) { - rest = '/' + notHost.join('.') + rest; - } - this.hostname = validParts.join('.'); - break; - } - } - } - } - - if (this.hostname.length > hostnameMaxLen) { - this.hostname = ''; - } else { - // hostnames are always lower case. - this.hostname = this.hostname.toLowerCase(); - } - - if (!ipv6Hostname) { - // IDNA Support: Returns a puny coded representation of "domain". - // It only converts the part of the domain name that - // has non ASCII characters. I.e. it dosent matter if - // you call it with a domain that already is in ASCII. - var domainArray = this.hostname.split('.'); - var newOut = []; - for (var i = 0; i < domainArray.length; ++i) { - var s = domainArray[i]; - newOut.push(s.match(/[^A-Za-z0-9_-]/) ? - 'xn--' + punycode.encode(s) : s); - } - this.hostname = newOut.join('.'); - } - - var p = this.port ? ':' + this.port : ''; - var h = this.hostname || ''; - this.host = h + p; - this.href += this.host; - - // strip [ and ] from the hostname - // the host field still retains them, though - if (ipv6Hostname) { - this.hostname = this.hostname.substr(1, this.hostname.length - 2); - if (rest[0] !== '/') { - rest = '/' + rest; - } - } - } - - // now rest is set to the post-host stuff. - // chop off any delim chars. - if (!unsafeProtocol[lowerProto]) { - - // First, make 100% sure that any "autoEscape" chars get - // escaped, even if encodeURIComponent doesn't think they - // need to be. - for (var i = 0, l = autoEscape.length; i < l; i++) { - var ae = autoEscape[i]; - var esc = encodeURIComponent(ae); - if (esc === ae) { - esc = escape(ae); - } - rest = rest.split(ae).join(esc); - } - } - - - // chop off from the tail first. - var hash = rest.indexOf('#'); - if (hash !== -1) { - // got a fragment string. - this.hash = rest.substr(hash); - rest = rest.slice(0, hash); - } - var qm = rest.indexOf('?'); - if (qm !== -1) { - this.search = rest.substr(qm); - this.query = rest.substr(qm + 1); - if (parseQueryString) { - this.query = querystring.parse(this.query); - } - rest = rest.slice(0, qm); - } else if (parseQueryString) { - // no query string, but parseQueryString still requested - this.search = ''; - this.query = {}; - } - if (rest) this.pathname = rest; - if (slashedProtocol[lowerProto] && - this.hostname && !this.pathname) { - this.pathname = '/'; - } - - //to support http.request - if (this.pathname || this.search) { - var p = this.pathname || ''; - var s = this.search || ''; - this.path = p + s; - } - - // finally, reconstruct the href based on what has been validated. - this.href = this.format(); - return this; -}; - -// format a parsed object into a url string -function urlFormat(obj) { - // ensure it's an object, and not a string url. - // If it's an obj, this is a no-op. - // this way, you can call url_format() on strings - // to clean up potentially wonky urls. - if (isString(obj)) obj = urlParse(obj); - if (!(obj instanceof Url)) return Url.prototype.format.call(obj); - return obj.format(); -} - -Url.prototype.format = function() { - var auth = this.auth || ''; - if (auth) { - auth = encodeURIComponent(auth); - auth = auth.replace(/%3A/i, ':'); - auth += '@'; - } - - var protocol = this.protocol || '', - pathname = this.pathname || '', - hash = this.hash || '', - host = false, - query = ''; - - if (this.host) { - host = auth + this.host; - } else if (this.hostname) { - host = auth + (this.hostname.indexOf(':') === -1 ? - this.hostname : - '[' + this.hostname + ']'); - if (this.port) { - host += ':' + this.port; - } - } - - if (this.query && - isObject(this.query) && - Object.keys(this.query).length) { - query = querystring.stringify(this.query); - } - - var search = this.search || (query && ('?' + query)) || ''; - - if (protocol && protocol.substr(-1) !== ':') protocol += ':'; - - // only the slashedProtocols get the //. Not mailto:, xmpp:, etc. - // unless they had them to begin with. - if (this.slashes || - (!protocol || slashedProtocol[protocol]) && host !== false) { - host = '//' + (host || ''); - if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname; - } else if (!host) { - host = ''; - } - - if (hash && hash.charAt(0) !== '#') hash = '#' + hash; - if (search && search.charAt(0) !== '?') search = '?' + search; - - pathname = pathname.replace(/[?#]/g, function(match) { - return encodeURIComponent(match); - }); - search = search.replace('#', '%23'); - - return protocol + host + pathname + search + hash; -}; - -function urlResolve(source, relative) { - return urlParse(source, false, true).resolve(relative); -} - -Url.prototype.resolve = function(relative) { - return this.resolveObject(urlParse(relative, false, true)).format(); -}; - -function urlResolveObject(source, relative) { - if (!source) return relative; - return urlParse(source, false, true).resolveObject(relative); -} - -Url.prototype.resolveObject = function(relative) { - if (isString(relative)) { - var rel = new Url(); - rel.parse(relative, false, true); - relative = rel; - } - - var result = new Url(); - Object.keys(this).forEach(function(k) { - result[k] = this[k]; - }, this); - - // hash is always overridden, no matter what. - // even href="" will remove it. - result.hash = relative.hash; - - // if the relative url is empty, then there's nothing left to do here. - if (relative.href === '') { - result.href = result.format(); - return result; - } - - // hrefs like //foo/bar always cut to the protocol. - if (relative.slashes && !relative.protocol) { - // take everything except the protocol from relative - Object.keys(relative).forEach(function(k) { - if (k !== 'protocol') - result[k] = relative[k]; - }); - - //urlParse appends trailing / to urls like http://www.example.com - if (slashedProtocol[result.protocol] && - result.hostname && !result.pathname) { - result.path = result.pathname = '/'; - } - - result.href = result.format(); - return result; - } - - if (relative.protocol && relative.protocol !== result.protocol) { - // if it's a known url protocol, then changing - // the protocol does weird things - // first, if it's not file:, then we MUST have a host, - // and if there was a path - // to begin with, then we MUST have a path. - // if it is file:, then the host is dropped, - // because that's known to be hostless. - // anything else is assumed to be absolute. - if (!slashedProtocol[relative.protocol]) { - Object.keys(relative).forEach(function(k) { - result[k] = relative[k]; - }); - result.href = result.format(); - return result; - } - - result.protocol = relative.protocol; - if (!relative.host && !hostlessProtocol[relative.protocol]) { - var relPath = (relative.pathname || '').split('/'); - while (relPath.length && !(relative.host = relPath.shift())); - if (!relative.host) relative.host = ''; - if (!relative.hostname) relative.hostname = ''; - if (relPath[0] !== '') relPath.unshift(''); - if (relPath.length < 2) relPath.unshift(''); - result.pathname = relPath.join('/'); - } else { - result.pathname = relative.pathname; - } - result.search = relative.search; - result.query = relative.query; - result.host = relative.host || ''; - result.auth = relative.auth; - result.hostname = relative.hostname || relative.host; - result.port = relative.port; - // to support http.request - if (result.pathname || result.search) { - var p = result.pathname || ''; - var s = result.search || ''; - result.path = p + s; - } - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; - } - - var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'), - isRelAbs = ( - relative.host || - relative.pathname && relative.pathname.charAt(0) === '/' - ), - mustEndAbs = (isRelAbs || isSourceAbs || - (result.host && relative.pathname)), - removeAllDots = mustEndAbs, - srcPath = result.pathname && result.pathname.split('/') || [], - relPath = relative.pathname && relative.pathname.split('/') || [], - psychotic = result.protocol && !slashedProtocol[result.protocol]; - - // if the url is a non-slashed url, then relative - // links like ../.. should be able - // to crawl up to the hostname, as well. This is strange. - // result.protocol has already been set by now. - // Later on, put the first path part into the host field. - if (psychotic) { - result.hostname = ''; - result.port = null; - if (result.host) { - if (srcPath[0] === '') srcPath[0] = result.host; - else srcPath.unshift(result.host); - } - result.host = ''; - if (relative.protocol) { - relative.hostname = null; - relative.port = null; - if (relative.host) { - if (relPath[0] === '') relPath[0] = relative.host; - else relPath.unshift(relative.host); - } - relative.host = null; - } - mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === ''); - } - - if (isRelAbs) { - // it's absolute. - result.host = (relative.host || relative.host === '') ? - relative.host : result.host; - result.hostname = (relative.hostname || relative.hostname === '') ? - relative.hostname : result.hostname; - result.search = relative.search; - result.query = relative.query; - srcPath = relPath; - // fall through to the dot-handling below. - } else if (relPath.length) { - // it's relative - // throw away the existing file, and take the new path instead. - if (!srcPath) srcPath = []; - srcPath.pop(); - srcPath = srcPath.concat(relPath); - result.search = relative.search; - result.query = relative.query; - } else if (!isNullOrUndefined(relative.search)) { - // just pull out the search. - // like href='?foo'. - // Put this after the other two cases because it simplifies the booleans - if (psychotic) { - result.hostname = result.host = srcPath.shift(); - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - result.search = relative.search; - result.query = relative.query; - //to support http.request - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.href = result.format(); - return result; - } - - if (!srcPath.length) { - // no path at all. easy. - // we've already handled the other stuff above. - result.pathname = null; - //to support http.request - if (result.search) { - result.path = '/' + result.search; - } else { - result.path = null; - } - result.href = result.format(); - return result; - } - - // if a url ENDs in . or .., then it must get a trailing slash. - // however, if it ends in anything else non-slashy, - // then it must NOT get a trailing slash. - var last = srcPath.slice(-1)[0]; - var hasTrailingSlash = ( - (result.host || relative.host) && (last === '.' || last === '..') || - last === ''); - - // strip single dots, resolve double dots to parent dir - // if the path tries to go above the root, `up` ends up > 0 - var up = 0; - for (var i = srcPath.length; i >= 0; i--) { - last = srcPath[i]; - if (last == '.') { - srcPath.splice(i, 1); - } else if (last === '..') { - srcPath.splice(i, 1); - up++; - } else if (up) { - srcPath.splice(i, 1); - up--; - } - } - - // if the path is allowed to go above the root, restore leading ..s - if (!mustEndAbs && !removeAllDots) { - for (; up--; up) { - srcPath.unshift('..'); - } - } - - if (mustEndAbs && srcPath[0] !== '' && - (!srcPath[0] || srcPath[0].charAt(0) !== '/')) { - srcPath.unshift(''); - } - - if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) { - srcPath.push(''); - } - - var isAbsolute = srcPath[0] === '' || - (srcPath[0] && srcPath[0].charAt(0) === '/'); - - // put the host back - if (psychotic) { - result.hostname = result.host = isAbsolute ? '' : - srcPath.length ? srcPath.shift() : ''; - //occationaly the auth can get stuck only in host - //this especialy happens in cases like - //url.resolveObject('mailto:local1@domain1', 'local2@domain2') - var authInHost = result.host && result.host.indexOf('@') > 0 ? - result.host.split('@') : false; - if (authInHost) { - result.auth = authInHost.shift(); - result.host = result.hostname = authInHost.shift(); - } - } - - mustEndAbs = mustEndAbs || (result.host && srcPath.length); - - if (mustEndAbs && !isAbsolute) { - srcPath.unshift(''); - } - - if (!srcPath.length) { - result.pathname = null; - result.path = null; - } else { - result.pathname = srcPath.join('/'); - } - - //to support request.http - if (!isNull(result.pathname) || !isNull(result.search)) { - result.path = (result.pathname ? result.pathname : '') + - (result.search ? result.search : ''); - } - result.auth = relative.auth || result.auth; - result.slashes = result.slashes || relative.slashes; - result.href = result.format(); - return result; -}; - -Url.prototype.parseHost = function() { - var host = this.host; - var port = portPattern.exec(host); - if (port) { - port = port[0]; - if (port !== ':') { - this.port = port.substr(1); - } - host = host.substr(0, host.length - port.length); - } - if (host) this.hostname = host; -}; - -function isString(arg) { - return typeof arg === "string"; -} - -function isObject(arg) { - return typeof arg === 'object' && arg !== null; -} - -function isNull(arg) { - return arg === null; -} -function isNullOrUndefined(arg) { - return arg == null; -} diff --git a/node_modules/aws-sdk/node_modules/xml2js/LICENSE b/node_modules/aws-sdk/node_modules/xml2js/LICENSE deleted file mode 100644 index e3b4222..0000000 --- a/node_modules/aws-sdk/node_modules/xml2js/LICENSE +++ /dev/null @@ -1,19 +0,0 @@ -Copyright 2010, 2011, 2012, 2013. All rights reserved. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to -deal in the Software without restriction, including without limitation the -rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -sell copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/xml2js/README.md b/node_modules/aws-sdk/node_modules/xml2js/README.md deleted file mode 100644 index 0dc3dfc..0000000 --- a/node_modules/aws-sdk/node_modules/xml2js/README.md +++ /dev/null @@ -1,406 +0,0 @@ -node-xml2js -=========== - -Ever had the urge to parse XML? And wanted to access the data in some sane, -easy way? Don't want to compile a C parser, for whatever reason? Then xml2js is -what you're looking for! - -Description -=========== - -Simple XML to JavaScript object converter. It supports bi-directional conversion. -Uses [sax-js](https://github.com/isaacs/sax-js/) and -[xmlbuilder-js](https://github.com/oozcitak/xmlbuilder-js/). - -Note: If you're looking for a full DOM parser, you probably want -[JSDom](https://github.com/tmpvar/jsdom). - -Installation -============ - -Simplest way to install `xml2js` is to use [npm](http://npmjs.org), just `npm -install xml2js` which will download xml2js and all dependencies. - -xml2js is also available via [Bower](http://bower.io/), just `bower install -xml2js` which will download xml2js and all dependencies. - -Usage -===== - -No extensive tutorials required because you are a smart developer! The task of -parsing XML should be an easy one, so let's make it so! Here's some examples. - -Shoot-and-forget usage ----------------------- - -You want to parse XML as simple and easy as possible? It's dangerous to go -alone, take this: - -```javascript -var parseString = require('xml2js').parseString; -var xml = "Hello xml2js!" -parseString(xml, function (err, result) { - console.dir(result); -}); -``` - -Can't get easier than this, right? This works starting with `xml2js` 0.2.3. -With CoffeeScript it looks like this: - -```coffeescript -{parseString} = require 'xml2js' -xml = "Hello xml2js!" -parseString xml, (err, result) -> - console.dir result -``` - -If you need some special options, fear not, `xml2js` supports a number of -options (see below), you can specify these as second argument: - -```javascript -parseString(xml, {trim: true}, function (err, result) { -}); -``` - -Simple as pie usage -------------------- - -That's right, if you have been using xml-simple or a home-grown -wrapper, this was added in 0.1.11 just for you: - -```javascript -var fs = require('fs'), - xml2js = require('xml2js'); - -var parser = new xml2js.Parser(); -fs.readFile(__dirname + '/foo.xml', function(err, data) { - parser.parseString(data, function (err, result) { - console.dir(result); - console.log('Done'); - }); -}); -``` - -Look ma, no event listeners! - -You can also use `xml2js` from -[CoffeeScript](http://jashkenas.github.com/coffee-script/), further reducing -the clutter: - -```coffeescript -fs = require 'fs', -xml2js = require 'xml2js' - -parser = new xml2js.Parser() -fs.readFile __dirname + '/foo.xml', (err, data) -> - parser.parseString data, (err, result) -> - console.dir result - console.log 'Done.' -``` - -But what happens if you forget the `new` keyword to create a new `Parser`? In -the middle of a nightly coding session, it might get lost, after all. Worry -not, we got you covered! Starting with 0.2.8 you can also leave it out, in -which case `xml2js` will helpfully add it for you, no bad surprises and -inexplicable bugs! - -"Traditional" usage -------------------- - -Alternatively you can still use the traditional `addListener` variant that was -supported since forever: - -```javascript -var fs = require('fs'), - xml2js = require('xml2js'); - -var parser = new xml2js.Parser(); -parser.addListener('end', function(result) { - console.dir(result); - console.log('Done.'); -}); -fs.readFile(__dirname + '/foo.xml', function(err, data) { - parser.parseString(data); -}); -``` - -If you want to parse multiple files, you have multiple possibilities: - - * You can create one `xml2js.Parser` per file. That's the recommended one - and is promised to always *just work*. - * You can call `reset()` on your parser object. - * You can hope everything goes well anyway. This behaviour is not - guaranteed work always, if ever. Use option #1 if possible. Thanks! - -So you wanna some JSON? ------------------------ - -Just wrap the `result` object in a call to `JSON.stringify` like this -`JSON.stringify(result)`. You get a string containing the JSON representation -of the parsed object that you can feed to JSON-hungry consumers. - -Displaying results ------------------- - -You might wonder why, using `console.dir` or `console.log` the output at some -level is only `[Object]`. Don't worry, this is not because `xml2js` got lazy. -That's because Node uses `util.inspect` to convert the object into strings and -that function stops after `depth=2` which is a bit low for most XML. - -To display the whole deal, you can use `console.log(util.inspect(result, false, -null))`, which displays the whole result. - -So much for that, but what if you use -[eyes](https://github.com/cloudhead/eyes.js) for nice colored output and it -truncates the output with `…`? Don't fear, there's also a solution for that, -you just need to increase the `maxLength` limit by creating a custom inspector -`var inspect = require('eyes').inspector({maxLength: false})` and then you can -easily `inspect(result)`. - -XML builder usage ------------------ - -Since 0.4.0, objects can be also be used to build XML: - -```javascript -var fs = require('fs'), - xml2js = require('xml2js'); - -var obj = {name: "Super", Surname: "Man", age: 23}; - -var builder = new xml2js.Builder(); -var xml = builder.buildObject(obj); -``` - -At the moment, a one to one bi-directional conversion is guaranteed only for -default configuration, except for `attrkey`, `charkey` and `explicitArray` options -you can redefine to your taste. Writing CDATA is supported via setting the `cdata` -option to `true`. - -Processing attribute, tag names and values ------------------------------------------- - -Since 0.4.1 you can optionally provide the parser with attribute name and tag name processors as well as element value processors (Since 0.4.14, you can also optionally provide the parser with attribute value processors): - -```javascript - -function nameToUpperCase(name){ - return name.toUpperCase(); -} - -//transform all attribute and tag names and values to uppercase -parseString(xml, { - tagNameProcessors: [nameToUpperCase], - attrNameProcessors: [nameToUpperCase], - valueProcessors: [nameToUpperCase], - attrValueProcessors: [nameToUpperCase]}, - function (err, result) { - // processed data -}); -``` - -The `tagNameProcessors`, `attrNameProcessors`, `attrValueProcessors` and `valueProcessors` options -accept an `Array` of functions with the following signature: - -```javascript -function (name){ - //do something with `name` - return name -} -``` - -Some processors are provided out-of-the-box and can be found in `lib/processors.js`: - -- `normalize`: transforms the name to lowercase. -(Automatically used when `options.normalize` is set to `true`) - -- `firstCharLowerCase`: transforms the first character to lower case. -E.g. 'MyTagName' becomes 'myTagName' - -- `stripPrefix`: strips the xml namespace prefix. E.g `` will become 'Bar'. -(N.B.: the `xmlns` prefix is NOT stripped.) - -- `parseNumbers`: parses integer-like strings as integers and float-like strings as floats -E.g. "0" becomes 0 and "15.56" becomes 15.56 - -- `parseBooleans`: parses boolean-like strings to booleans -E.g. "true" becomes true and "False" becomes false - -Options -======= - -Apart from the default settings, there are a number of options that can be -specified for the parser. Options are specified by ``new Parser({optionName: -value})``. Possible options are: - - * `attrkey` (default: `$`): Prefix that is used to access the attributes. - Version 0.1 default was `@`. - * `charkey` (default: `_`): Prefix that is used to access the character - content. Version 0.1 default was `#`. - * `explicitCharkey` (default: `false`) - * `trim` (default: `false`): Trim the whitespace at the beginning and end of - text nodes. - * `normalizeTags` (default: `false`): Normalize all tag names to lowercase. - * `normalize` (default: `false`): Trim whitespaces inside text nodes. - * `explicitRoot` (default: `true`): Set this if you want to get the root - node in the resulting object. - * `emptyTag` (default: `''`): what will the value of empty nodes be. - * `explicitArray` (default: `true`): Always put child nodes in an array if - true; otherwise an array is created only if there is more than one. - * `ignoreAttrs` (default: `false`): Ignore all XML attributes and only create - text nodes. - * `mergeAttrs` (default: `false`): Merge attributes and child elements as - properties of the parent, instead of keying attributes off a child - attribute object. This option is ignored if `ignoreAttrs` is `false`. - * `validator` (default `null`): You can specify a callable that validates - the resulting structure somehow, however you want. See unit tests - for an example. - * `xmlns` (default `false`): Give each element a field usually called '$ns' - (the first character is the same as attrkey) that contains its local name - and namespace URI. - * `explicitChildren` (default `false`): Put child elements to separate - property. Doesn't work with `mergeAttrs = true`. If element has no children - then "children" won't be created. Added in 0.2.5. - * `childkey` (default `$$`): Prefix that is used to access child elements if - `explicitChildren` is set to `true`. Added in 0.2.5. - * `preserveChildrenOrder` (default `false`): Modifies the behavior of - `explicitChildren` so that the value of the "children" property becomes an - ordered array. When this is `true`, every node will also get a `#name` field - whose value will correspond to the XML nodeName, so that you may iterate - the "children" array and still be able to determine node names. The named - (and potentially unordered) properties are also retained in this - configuration at the same level as the ordered "children" array. Added in - 0.4.9. - * `charsAsChildren` (default `false`): Determines whether chars should be - considered children if `explicitChildren` is on. Added in 0.2.5. - * `async` (default `false`): Should the callbacks be async? This *might* be - an incompatible change if your code depends on sync execution of callbacks. - Future versions of `xml2js` might change this default, so the recommendation - is to not depend on sync execution anyway. Added in 0.2.6. - * `strict` (default `true`): Set sax-js to strict or non-strict parsing mode. - Defaults to `true` which is *highly* recommended, since parsing HTML which - is not well-formed XML might yield just about anything. Added in 0.2.7. - * `attrNameProcessors` (default: `null`): Allows the addition of attribute - name processing functions. Accepts an `Array` of functions with following - signature: - ```javascript - function (name){ - //do something with `name` - return name - } - ``` - Added in 0.4.14 - * `attrValueProcessors` (default: `null`): Allows the addition of attribute - value processing functions. Accepts an `Array` of functions with following - signature: - ```javascript - function (name){ - //do something with `name` - return name - } - ``` - Added in 0.4.1 - * `tagNameProcessors` (default: `null`): Allows the addition of tag name - processing functions. Accepts an `Array` of functions with following - signature: - ```javascript - function (name){ - //do something with `name` - return name - } - ``` - Added in 0.4.1 - * `valueProcessors` (default: `null`): Allows the addition of element value - processing functions. Accepts an `Array` of functions with following - signature: - ```javascript - function (name){ - //do something with `name` - return name - } - ``` - Added in 0.4.6 - -Options for the `Builder` class -------------------------------- - - * `rootName` (default `root`): root element name to be used in case - `explicitRoot` is `false` or to override the root element name. - * `renderOpts` (default `{ 'pretty': true, 'indent': ' ', 'newline': '\n' }`): - Rendering options for xmlbuilder-js. - * pretty: prettify generated XML - * indent: whitespace for indentation (only when pretty) - * newline: newline char (only when pretty) - * `xmldec` (default `{ 'version': '1.0', 'encoding': 'UTF-8', 'standalone': true }`: - XML declaration attributes. - * `xmldec.version` A version number string, e.g. 1.0 - * `xmldec.encoding` Encoding declaration, e.g. UTF-8 - * `xmldec.standalone` standalone document declaration: true or false - * `doctype` (default `null`): optional DTD. Eg. `{'ext': 'hello.dtd'}` - * `headless` (default: `false`): omit the XML header. Added in 0.4.3. - * `cdata` (default: `false`): wrap text nodes in `` instead of - escaping when necessary. Does not add `` if it is not required. - Added in 0.4.5. - -`renderOpts`, `xmldec`,`doctype` and `headless` pass through to -[xmlbuilder-js](https://github.com/oozcitak/xmlbuilder-js). - -Updating to new version -======================= - -Version 0.2 changed the default parsing settings, but version 0.1.14 introduced -the default settings for version 0.2, so these settings can be tried before the -migration. - -```javascript -var xml2js = require('xml2js'); -var parser = new xml2js.Parser(xml2js.defaults["0.2"]); -``` - -To get the 0.1 defaults in version 0.2 you can just use -`xml2js.defaults["0.1"]` in the same place. This provides you with enough time -to migrate to the saner way of parsing in `xml2js` 0.2. We try to make the -migration as simple and gentle as possible, but some breakage cannot be -avoided. - -So, what exactly did change and why? In 0.2 we changed some defaults to parse -the XML in a more universal and sane way. So we disabled `normalize` and `trim` -so `xml2js` does not cut out any text content. You can reenable this at will of -course. A more important change is that we return the root tag in the resulting -JavaScript structure via the `explicitRoot` setting, so you need to access the -first element. This is useful for anybody who wants to know what the root node -is and preserves more information. The last major change was to enable -`explicitArray`, so everytime it is possible that one might embed more than one -sub-tag into a tag, xml2js >= 0.2 returns an array even if the array just -includes one element. This is useful when dealing with APIs that return -variable amounts of subtags. - -Running tests, development -========================== - -[![Build Status](https://travis-ci.org/Leonidas-from-XIV/node-xml2js.svg?branch=master)](https://travis-ci.org/Leonidas-from-XIV/node-xml2js) -[![Coverage Status](https://coveralls.io/repos/Leonidas-from-XIV/node-xml2js/badge.svg?branch=)](https://coveralls.io/r/Leonidas-from-XIV/node-xml2js?branch=master) -[![Dependency Status](https://david-dm.org/Leonidas-from-XIV/node-xml2js.svg)](https://david-dm.org/Leonidas-from-XIV/node-xml2js) - -The development requirements are handled by npm, you just need to install them. -We also have a number of unit tests, they can be run using `npm test` directly -from the project root. This runs zap to discover all the tests and execute -them. - -If you like to contribute, keep in mind that `xml2js` is written in -CoffeeScript, so don't develop on the JavaScript files that are checked into -the repository for convenience reasons. Also, please write some unit test to -check your behaviour and if it is some user-facing thing, add some -documentation to this README, so people will know it exists. Thanks in advance! - -Getting support -=============== - -Please, if you have a problem with the library, first make sure you read this -README. If you read this far, thanks, you're good. Then, please make sure your -problem really is with `xml2js`. It is? Okay, then I'll look at it. Send me a -mail and we can talk. Please don't open issues, as I don't think that is the -proper forum for support problems. Some problems might as well really be bugs -in `xml2js`, if so I'll let you know to open an issue instead :) - -But if you know you really found a bug, feel free to open an issue instead. diff --git a/node_modules/aws-sdk/node_modules/xml2js/lib/bom.js b/node_modules/aws-sdk/node_modules/xml2js/lib/bom.js deleted file mode 100644 index 0f6be31..0000000 --- a/node_modules/aws-sdk/node_modules/xml2js/lib/bom.js +++ /dev/null @@ -1,16 +0,0 @@ -// Generated by CoffeeScript 1.10.0 -(function() { - "use strict"; - var xml2js; - - xml2js = require('../lib/xml2js'); - - exports.stripBOM = function(str) { - if (str[0] === '\uFEFF') { - return str.substring(1); - } else { - return str; - } - }; - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xml2js/lib/processors.js b/node_modules/aws-sdk/node_modules/xml2js/lib/processors.js deleted file mode 100644 index 31ccde2..0000000 --- a/node_modules/aws-sdk/node_modules/xml2js/lib/processors.js +++ /dev/null @@ -1,34 +0,0 @@ -// Generated by CoffeeScript 1.10.0 -(function() { - "use strict"; - var prefixMatch; - - prefixMatch = new RegExp(/(?!xmlns)^.*:/); - - exports.normalize = function(str) { - return str.toLowerCase(); - }; - - exports.firstCharLowerCase = function(str) { - return str.charAt(0).toLowerCase() + str.slice(1); - }; - - exports.stripPrefix = function(str) { - return str.replace(prefixMatch, ''); - }; - - exports.parseNumbers = function(str) { - if (!isNaN(str)) { - str = str % 1 === 0 ? parseInt(str, 10) : parseFloat(str); - } - return str; - }; - - exports.parseBooleans = function(str) { - if (/^(?:true|false)$/i.test(str)) { - str = str.toLowerCase() === 'true'; - } - return str; - }; - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js b/node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js deleted file mode 100644 index f9b403b..0000000 --- a/node_modules/aws-sdk/node_modules/xml2js/lib/xml2js.js +++ /dev/null @@ -1,537 +0,0 @@ -// Generated by CoffeeScript 1.10.0 -(function() { - "use strict"; - var bom, builder, escapeCDATA, events, isEmpty, processName, processors, requiresCDATA, sax, setImmediate, wrapCDATA, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty, - bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; - - sax = require('sax'); - - events = require('events'); - - builder = require('xmlbuilder'); - - bom = require('./bom'); - - processors = require('./processors'); - - setImmediate = require('timers').setImmediate; - - isEmpty = function(thing) { - return typeof thing === "object" && (thing != null) && Object.keys(thing).length === 0; - }; - - processName = function(processors, processedName) { - var i, len, process; - for (i = 0, len = processors.length; i < len; i++) { - process = processors[i]; - processedName = process(processedName); - } - return processedName; - }; - - requiresCDATA = function(entry) { - return entry.indexOf('&') >= 0 || entry.indexOf('>') >= 0 || entry.indexOf('<') >= 0; - }; - - wrapCDATA = function(entry) { - return ""; - }; - - escapeCDATA = function(entry) { - return entry.replace(']]>', ']]]]>'); - }; - - exports.processors = processors; - - exports.defaults = { - "0.1": { - explicitCharkey: false, - trim: true, - normalize: true, - normalizeTags: false, - attrkey: "@", - charkey: "#", - explicitArray: false, - ignoreAttrs: false, - mergeAttrs: false, - explicitRoot: false, - validator: null, - xmlns: false, - explicitChildren: false, - childkey: '@@', - charsAsChildren: false, - async: false, - strict: true, - attrNameProcessors: null, - attrValueProcessors: null, - tagNameProcessors: null, - valueProcessors: null, - emptyTag: '' - }, - "0.2": { - explicitCharkey: false, - trim: false, - normalize: false, - normalizeTags: false, - attrkey: "$", - charkey: "_", - explicitArray: true, - ignoreAttrs: false, - mergeAttrs: false, - explicitRoot: true, - validator: null, - xmlns: false, - explicitChildren: false, - preserveChildrenOrder: false, - childkey: '$$', - charsAsChildren: false, - async: false, - strict: true, - attrNameProcessors: null, - attrValueProcessors: null, - tagNameProcessors: null, - valueProcessors: null, - rootName: 'root', - xmldec: { - 'version': '1.0', - 'encoding': 'UTF-8', - 'standalone': true - }, - doctype: null, - renderOpts: { - 'pretty': true, - 'indent': ' ', - 'newline': '\n' - }, - headless: false, - chunkSize: 10000, - emptyTag: '', - cdata: false - } - }; - - exports.ValidationError = (function(superClass) { - extend(ValidationError, superClass); - - function ValidationError(message) { - this.message = message; - } - - return ValidationError; - - })(Error); - - exports.Builder = (function() { - function Builder(opts) { - var key, ref, value; - this.options = {}; - ref = exports.defaults["0.2"]; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - value = ref[key]; - this.options[key] = value; - } - for (key in opts) { - if (!hasProp.call(opts, key)) continue; - value = opts[key]; - this.options[key] = value; - } - } - - Builder.prototype.buildObject = function(rootObj) { - var attrkey, charkey, render, rootElement, rootName; - attrkey = this.options.attrkey; - charkey = this.options.charkey; - if ((Object.keys(rootObj).length === 1) && (this.options.rootName === exports.defaults['0.2'].rootName)) { - rootName = Object.keys(rootObj)[0]; - rootObj = rootObj[rootName]; - } else { - rootName = this.options.rootName; - } - render = (function(_this) { - return function(element, obj) { - var attr, child, entry, index, key, value; - if (typeof obj !== 'object') { - if (_this.options.cdata && requiresCDATA(obj)) { - element.raw(wrapCDATA(obj)); - } else { - element.txt(obj); - } - } else { - for (key in obj) { - if (!hasProp.call(obj, key)) continue; - child = obj[key]; - if (key === attrkey) { - if (typeof child === "object") { - for (attr in child) { - value = child[attr]; - element = element.att(attr, value); - } - } - } else if (key === charkey) { - if (_this.options.cdata && requiresCDATA(child)) { - element = element.raw(wrapCDATA(child)); - } else { - element = element.txt(child); - } - } else if (Array.isArray(child)) { - for (index in child) { - if (!hasProp.call(child, index)) continue; - entry = child[index]; - if (typeof entry === 'string') { - if (_this.options.cdata && requiresCDATA(entry)) { - element = element.ele(key).raw(wrapCDATA(entry)).up(); - } else { - element = element.ele(key, entry).up(); - } - } else { - element = render(element.ele(key), entry).up(); - } - } - } else if (typeof child === "object") { - element = render(element.ele(key), child).up(); - } else { - if (typeof child === 'string' && _this.options.cdata && requiresCDATA(child)) { - element = element.ele(key).raw(wrapCDATA(child)).up(); - } else { - if (child == null) { - child = ''; - } - element = element.ele(key, child.toString()).up(); - } - } - } - } - return element; - }; - })(this); - rootElement = builder.create(rootName, this.options.xmldec, this.options.doctype, { - headless: this.options.headless - }); - return render(rootElement, rootObj).end(this.options.renderOpts); - }; - - return Builder; - - })(); - - exports.Parser = (function(superClass) { - extend(Parser, superClass); - - function Parser(opts) { - this.parseString = bind(this.parseString, this); - this.reset = bind(this.reset, this); - this.assignOrPush = bind(this.assignOrPush, this); - this.processAsync = bind(this.processAsync, this); - var key, ref, value; - if (!(this instanceof exports.Parser)) { - return new exports.Parser(opts); - } - this.options = {}; - ref = exports.defaults["0.2"]; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - value = ref[key]; - this.options[key] = value; - } - for (key in opts) { - if (!hasProp.call(opts, key)) continue; - value = opts[key]; - this.options[key] = value; - } - if (this.options.xmlns) { - this.options.xmlnskey = this.options.attrkey + "ns"; - } - if (this.options.normalizeTags) { - if (!this.options.tagNameProcessors) { - this.options.tagNameProcessors = []; - } - this.options.tagNameProcessors.unshift(processors.normalize); - } - this.reset(); - } - - Parser.prototype.processAsync = function() { - var chunk, err, error1; - try { - if (this.remaining.length <= this.options.chunkSize) { - chunk = this.remaining; - this.remaining = ''; - this.saxParser = this.saxParser.write(chunk); - return this.saxParser.close(); - } else { - chunk = this.remaining.substr(0, this.options.chunkSize); - this.remaining = this.remaining.substr(this.options.chunkSize, this.remaining.length); - this.saxParser = this.saxParser.write(chunk); - return setImmediate(this.processAsync); - } - } catch (error1) { - err = error1; - if (!this.saxParser.errThrown) { - this.saxParser.errThrown = true; - return this.emit(err); - } - } - }; - - Parser.prototype.assignOrPush = function(obj, key, newValue) { - if (!(key in obj)) { - if (!this.options.explicitArray) { - return obj[key] = newValue; - } else { - return obj[key] = [newValue]; - } - } else { - if (!(obj[key] instanceof Array)) { - obj[key] = [obj[key]]; - } - return obj[key].push(newValue); - } - }; - - Parser.prototype.reset = function() { - var attrkey, charkey, ontext, stack; - this.removeAllListeners(); - this.saxParser = sax.parser(this.options.strict, { - trim: false, - normalize: false, - xmlns: this.options.xmlns - }); - this.saxParser.errThrown = false; - this.saxParser.onerror = (function(_this) { - return function(error) { - _this.saxParser.resume(); - if (!_this.saxParser.errThrown) { - _this.saxParser.errThrown = true; - return _this.emit("error", error); - } - }; - })(this); - this.saxParser.onend = (function(_this) { - return function() { - if (!_this.saxParser.ended) { - _this.saxParser.ended = true; - return _this.emit("end", _this.resultObject); - } - }; - })(this); - this.saxParser.ended = false; - this.EXPLICIT_CHARKEY = this.options.explicitCharkey; - this.resultObject = null; - stack = []; - attrkey = this.options.attrkey; - charkey = this.options.charkey; - this.saxParser.onopentag = (function(_this) { - return function(node) { - var key, newValue, obj, processedKey, ref; - obj = {}; - obj[charkey] = ""; - if (!_this.options.ignoreAttrs) { - ref = node.attributes; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - if (!(attrkey in obj) && !_this.options.mergeAttrs) { - obj[attrkey] = {}; - } - newValue = _this.options.attrValueProcessors ? processName(_this.options.attrValueProcessors, node.attributes[key]) : node.attributes[key]; - processedKey = _this.options.attrNameProcessors ? processName(_this.options.attrNameProcessors, key) : key; - if (_this.options.mergeAttrs) { - _this.assignOrPush(obj, processedKey, newValue); - } else { - obj[attrkey][processedKey] = newValue; - } - } - } - obj["#name"] = _this.options.tagNameProcessors ? processName(_this.options.tagNameProcessors, node.name) : node.name; - if (_this.options.xmlns) { - obj[_this.options.xmlnskey] = { - uri: node.uri, - local: node.local - }; - } - return stack.push(obj); - }; - })(this); - this.saxParser.onclosetag = (function(_this) { - return function() { - var cdata, emptyStr, err, error1, key, node, nodeName, obj, objClone, old, s, xpath; - obj = stack.pop(); - nodeName = obj["#name"]; - if (!_this.options.explicitChildren || !_this.options.preserveChildrenOrder) { - delete obj["#name"]; - } - if (obj.cdata === true) { - cdata = obj.cdata; - delete obj.cdata; - } - s = stack[stack.length - 1]; - if (obj[charkey].match(/^\s*$/) && !cdata) { - emptyStr = obj[charkey]; - delete obj[charkey]; - } else { - if (_this.options.trim) { - obj[charkey] = obj[charkey].trim(); - } - if (_this.options.normalize) { - obj[charkey] = obj[charkey].replace(/\s{2,}/g, " ").trim(); - } - obj[charkey] = _this.options.valueProcessors ? processName(_this.options.valueProcessors, obj[charkey]) : obj[charkey]; - if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) { - obj = obj[charkey]; - } - } - if (isEmpty(obj)) { - obj = _this.options.emptyTag !== '' ? _this.options.emptyTag : emptyStr; - } - if (_this.options.validator != null) { - xpath = "/" + ((function() { - var i, len, results; - results = []; - for (i = 0, len = stack.length; i < len; i++) { - node = stack[i]; - results.push(node["#name"]); - } - return results; - })()).concat(nodeName).join("/"); - try { - obj = _this.options.validator(xpath, s && s[nodeName], obj); - } catch (error1) { - err = error1; - _this.emit("error", err); - } - } - if (_this.options.explicitChildren && !_this.options.mergeAttrs && typeof obj === 'object') { - if (!_this.options.preserveChildrenOrder) { - node = {}; - if (_this.options.attrkey in obj) { - node[_this.options.attrkey] = obj[_this.options.attrkey]; - delete obj[_this.options.attrkey]; - } - if (!_this.options.charsAsChildren && _this.options.charkey in obj) { - node[_this.options.charkey] = obj[_this.options.charkey]; - delete obj[_this.options.charkey]; - } - if (Object.getOwnPropertyNames(obj).length > 0) { - node[_this.options.childkey] = obj; - } - obj = node; - } else if (s) { - s[_this.options.childkey] = s[_this.options.childkey] || []; - objClone = {}; - for (key in obj) { - if (!hasProp.call(obj, key)) continue; - objClone[key] = obj[key]; - } - s[_this.options.childkey].push(objClone); - delete obj["#name"]; - if (Object.keys(obj).length === 1 && charkey in obj && !_this.EXPLICIT_CHARKEY) { - obj = obj[charkey]; - } - } - } - if (stack.length > 0) { - return _this.assignOrPush(s, nodeName, obj); - } else { - if (_this.options.explicitRoot) { - old = obj; - obj = {}; - obj[nodeName] = old; - } - _this.resultObject = obj; - _this.saxParser.ended = true; - return _this.emit("end", _this.resultObject); - } - }; - })(this); - ontext = (function(_this) { - return function(text) { - var charChild, s; - s = stack[stack.length - 1]; - if (s) { - s[charkey] += text; - if (_this.options.explicitChildren && _this.options.preserveChildrenOrder && _this.options.charsAsChildren && text.replace(/\\n/g, '').trim() !== '') { - s[_this.options.childkey] = s[_this.options.childkey] || []; - charChild = { - '#name': '__text__' - }; - charChild[charkey] = text; - s[_this.options.childkey].push(charChild); - } - return s; - } - }; - })(this); - this.saxParser.ontext = ontext; - return this.saxParser.oncdata = (function(_this) { - return function(text) { - var s; - s = ontext(text); - if (s) { - return s.cdata = true; - } - }; - })(this); - }; - - Parser.prototype.parseString = function(str, cb) { - var err, error1; - if ((cb != null) && typeof cb === "function") { - this.on("end", function(result) { - this.reset(); - return cb(null, result); - }); - this.on("error", function(err) { - this.reset(); - return cb(err); - }); - } - try { - str = str.toString(); - if (str.trim() === '') { - this.emit("end", null); - return true; - } - str = bom.stripBOM(str); - if (this.options.async) { - this.remaining = str; - setImmediate(this.processAsync); - return this.saxParser; - } - return this.saxParser.write(str).close(); - } catch (error1) { - err = error1; - if (!(this.saxParser.errThrown || this.saxParser.ended)) { - this.emit('error', err); - return this.saxParser.errThrown = true; - } else if (this.saxParser.ended) { - throw err; - } - } - }; - - return Parser; - - })(events.EventEmitter); - - exports.parseString = function(str, a, b) { - var cb, options, parser; - if (b != null) { - if (typeof b === 'function') { - cb = b; - } - if (typeof a === 'object') { - options = a; - } - } else { - if (typeof a === 'function') { - cb = a; - } - options = {}; - } - parser = new exports.Parser(options); - return parser.parseString(str, cb); - }; - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xml2js/package.json b/node_modules/aws-sdk/node_modules/xml2js/package.json deleted file mode 100644 index 2d013d9..0000000 --- a/node_modules/aws-sdk/node_modules/xml2js/package.json +++ /dev/null @@ -1,258 +0,0 @@ -{ - "name": "xml2js", - "description": "Simple XML to JavaScript object converter.", - "keywords": [ - "xml", - "json" - ], - "homepage": "https://github.com/Leonidas-from-XIV/node-xml2js", - "version": "0.4.15", - "author": { - "name": "Marek Kubica", - "email": "marek@xivilization.net", - "url": "https://xivilization.net" - }, - "contributors": [ - { - "name": "maqr", - "email": "maqr.lollerskates@gmail.com", - "url": "https://github.com/maqr" - }, - { - "name": "Ben Weaver", - "url": "http://benweaver.com/" - }, - { - "name": "Jae Kwon", - "url": "https://github.com/jaekwon" - }, - { - "name": "Jim Robert" - }, - { - "name": "Ștefan Rusu", - "url": "http://www.saltwaterc.eu/" - }, - { - "name": "Carter Cole", - "email": "carter.cole@cartercole.com", - "url": "http://cartercole.com/" - }, - { - "name": "Kurt Raschke", - "email": "kurt@kurtraschke.com", - "url": "http://www.kurtraschke.com/" - }, - { - "name": "Contra", - "email": "contra@australia.edu", - "url": "https://github.com/Contra" - }, - { - "name": "Marcelo Diniz", - "email": "marudiniz@gmail.com", - "url": "https://github.com/mdiniz" - }, - { - "name": "Michael Hart", - "url": "https://github.com/mhart" - }, - { - "name": "Zachary Scott", - "email": "zachary@zacharyscott.net", - "url": "http://zacharyscott.net/" - }, - { - "name": "Raoul Millais", - "url": "https://github.com/raoulmillais" - }, - { - "name": "Salsita Software", - "url": "http://www.salsitasoft.com/" - }, - { - "name": "Mike Schilling", - "email": "mike@emotive.com", - "url": "http://www.emotive.com/" - }, - { - "name": "Jackson Tian", - "email": "shyvo1987@gmail.com", - "url": "http://weibo.com/shyvo" - }, - { - "name": "Mikhail Zyatin", - "email": "mikhail.zyatin@gmail.com", - "url": "https://github.com/Sitin" - }, - { - "name": "Chris Tavares", - "email": "ctavares@microsoft.com", - "url": "https://github.com/christav" - }, - { - "name": "Frank Xu", - "email": "yyfrankyy@gmail.com", - "url": "http://f2e.us/" - }, - { - "name": "Guido D'Albore", - "email": "guido@bitstorm.it", - "url": "http://www.bitstorm.it/" - }, - { - "name": "Jack Senechal", - "url": "http://jacksenechal.com/" - }, - { - "name": "Matthias Hölzl", - "email": "tc@xantira.com", - "url": "https://github.com/hoelzl" - }, - { - "name": "Camille Reynders", - "email": "info@creynders.be", - "url": "http://www.creynders.be/" - }, - { - "name": "Taylor Gautier", - "url": "https://github.com/tsgautier" - }, - { - "name": "Todd Bryan", - "url": "https://github.com/toddrbryan" - }, - { - "name": "Leore Avidar", - "email": "leore.avidar@gmail.com", - "url": "http://leoreavidar.com/" - }, - { - "name": "Dave Aitken", - "email": "dave.aitken@gmail.com", - "url": "http://www.actionshrimp.com/" - }, - { - "name": "Shaney Orrowe", - "email": "shaney.orrowe@practiceweb.co.uk" - }, - { - "name": "Candle", - "email": "candle@candle.me.uk" - }, - { - "name": "Jess Telford", - "email": "hi@jes.st", - "url": "http://jes.st" - }, - { - "name": "Tom Hughes", - "email": "=0.6.0", - "xmlbuilder": ">=2.4.6" - }, - "devDependencies": { - "coffee-script": ">=1.10.0", - "coveralls": "^2.11.2", - "diff": ">=1.0.8", - "docco": ">=0.6.2", - "nyc": ">=2.2.1", - "zap": ">=0.2.9" - }, - "license": "MIT", - "bugs": { - "url": "https://github.com/Leonidas-from-XIV/node-xml2js/issues" - }, - "_id": "xml2js@0.4.15", - "_shasum": "95cd03ff2dd144ec28bc6273bf2b2890c581ad0c", - "_resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz", - "_from": "xml2js@0.4.15", - "_npmVersion": "2.13.3", - "_nodeVersion": "3.3.0", - "_npmUser": { - "name": "leonidas", - "email": "marek@xivilization.net" - }, - "maintainers": [ - { - "name": "leonidas", - "email": "marek@xivilization.net" - } - ], - "dist": { - "shasum": "95cd03ff2dd144ec28bc6273bf2b2890c581ad0c", - "tarball": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.15.tgz" - }, - "readme": "ERROR: No README data found!" -} diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore b/node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore deleted file mode 100644 index 3ca4980..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/.npmignore +++ /dev/null @@ -1,4 +0,0 @@ -.travis.yml -src -test -perf diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE b/node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE deleted file mode 100644 index e7cbac9..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/LICENSE +++ /dev/null @@ -1,21 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 Ozgur Ozcitak - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/README.md b/node_modules/aws-sdk/node_modules/xmlbuilder/README.md deleted file mode 100644 index dc1eec6..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/README.md +++ /dev/null @@ -1,84 +0,0 @@ -# xmlbuilder-js - -An XML builder for [node.js](http://nodejs.org/) similar to -[java-xmlbuilder](https://github.com/jmurty/java-xmlbuilder). - -[![NPM Version](http://img.shields.io/npm/v/xmlbuilder.svg?style=flat-square)](https://npmjs.com/package/xmlbuilder) -[![License](http://img.shields.io/npm/l/xmlbuilder.svg?style=flat-square)](http://opensource.org/licenses/MIT) -[![Build Status](http://img.shields.io/travis/oozcitak/xmlbuilder-js.svg?style=flat-square)](http://travis-ci.org/oozcitak/xmlbuilder-js) -[![Dependency Status](http://img.shields.io/david/oozcitak/xmlbuilder-js.svg?style=flat-square)](https://david-dm.org/oozcitak/xmlbuilder-js) -[![Dev Dependency Status](http://img.shields.io/david/dev/oozcitak/xmlbuilder-js.svg?style=flat-square)](https://david-dm.org/oozcitak/xmlbuilder-js) - -### Installation: - -``` sh -npm install xmlbuilder -``` - -### Usage: - -``` js -var builder = require('xmlbuilder'); -var xml = builder.create('root') - .ele('xmlbuilder', {'for': 'node-js'}) - .ele('repo', {'type': 'git'}, 'git://github.com/oozcitak/xmlbuilder-js.git') - .end({ pretty: true}); - -console.log(xml); -``` - -will result in: - -``` xml - - - - git://github.com/oozcitak/xmlbuilder-js.git - - -``` - -It is also possible to convert objects into nodes: - -``` js -builder.create({ - root: { - xmlbuilder: { - '@for': 'node-js', // attributes start with @ - repo: { - '@type': 'git', - '#text': 'git://github.com/oozcitak/xmlbuilder-js.git' // #text denotes element text - } - } - } -}); -``` - -If you need to do some processing: - -``` js -var root = builder.create('squares'); -root.com('f(x) = x^2'); -for(var i = 1; i <= 5; i++) -{ - var item = root.ele('data'); - item.att('x', i); - item.att('y', i * i); -} -``` - -This will result in: - -``` xml - - - - - - - - - -``` - -See the [wiki](https://github.com/oozcitak/xmlbuilder-js/wiki) for details. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js deleted file mode 100644 index 247c9d1..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLAttribute.js +++ /dev/null @@ -1,32 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLAttribute, create; - - create = require('lodash/object/create'); - - module.exports = XMLAttribute = (function() { - function XMLAttribute(parent, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing attribute name of element " + parent.name); - } - if (value == null) { - throw new Error("Missing attribute value for attribute " + name + " of element " + parent.name); - } - this.name = this.stringify.attName(name); - this.value = this.stringify.attValue(value); - } - - XMLAttribute.prototype.clone = function() { - return create(XMLAttribute.prototype, this); - }; - - XMLAttribute.prototype.toString = function(options, level) { - return ' ' + this.name + '="' + this.value + '"'; - }; - - return XMLAttribute; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js deleted file mode 100644 index 4282833..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLBuilder.js +++ /dev/null @@ -1,69 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLBuilder, XMLDeclaration, XMLDocType, XMLElement, XMLStringifier; - - XMLStringifier = require('./XMLStringifier'); - - XMLDeclaration = require('./XMLDeclaration'); - - XMLDocType = require('./XMLDocType'); - - XMLElement = require('./XMLElement'); - - module.exports = XMLBuilder = (function() { - function XMLBuilder(name, options) { - var root, temp; - if (name == null) { - throw new Error("Root element needs a name"); - } - if (options == null) { - options = {}; - } - this.options = options; - this.stringify = new XMLStringifier(options); - temp = new XMLElement(this, 'doc'); - root = temp.element(name); - root.isRoot = true; - root.documentObject = this; - this.rootObject = root; - if (!options.headless) { - root.declaration(options); - if ((options.pubID != null) || (options.sysID != null)) { - root.doctype(options); - } - } - } - - XMLBuilder.prototype.root = function() { - return this.rootObject; - }; - - XMLBuilder.prototype.end = function(options) { - return this.toString(options); - }; - - XMLBuilder.prototype.toString = function(options) { - var indent, newline, offset, pretty, r, ref, ref1, ref2; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - r = ''; - if (this.xmldec != null) { - r += this.xmldec.toString(options); - } - if (this.doctype != null) { - r += this.doctype.toString(options); - } - r += this.rootObject.toString(options); - if (pretty && r.slice(-newline.length) === newline) { - r = r.slice(0, -newline.length); - } - return r; - }; - - return XMLBuilder; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js deleted file mode 100644 index 00002f1..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLCData.js +++ /dev/null @@ -1,49 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLCData, XMLNode, create, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLCData = (function(superClass) { - extend(XMLCData, superClass); - - function XMLCData(parent, text) { - XMLCData.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing CDATA text"); - } - this.text = this.stringify.cdata(text); - } - - XMLCData.prototype.clone = function() { - return create(XMLCData.prototype, this); - }; - - XMLCData.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLCData; - - })(XMLNode); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js deleted file mode 100644 index ca23e95..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLComment.js +++ /dev/null @@ -1,49 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLComment, XMLNode, create, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLComment = (function(superClass) { - extend(XMLComment, superClass); - - function XMLComment(parent, text) { - XMLComment.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing comment text"); - } - this.text = this.stringify.comment(text); - } - - XMLComment.prototype.clone = function() { - return create(XMLComment.prototype, this); - }; - - XMLComment.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLComment; - - })(XMLNode); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js deleted file mode 100644 index 76b63bd..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDAttList.js +++ /dev/null @@ -1,72 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLDTDAttList, create; - - create = require('lodash/object/create'); - - module.exports = XMLDTDAttList = (function() { - function XMLDTDAttList(parent, elementName, attributeName, attributeType, defaultValueType, defaultValue) { - this.stringify = parent.stringify; - if (elementName == null) { - throw new Error("Missing DTD element name"); - } - if (attributeName == null) { - throw new Error("Missing DTD attribute name"); - } - if (!attributeType) { - throw new Error("Missing DTD attribute type"); - } - if (!defaultValueType) { - throw new Error("Missing DTD attribute default"); - } - if (defaultValueType.indexOf('#') !== 0) { - defaultValueType = '#' + defaultValueType; - } - if (!defaultValueType.match(/^(#REQUIRED|#IMPLIED|#FIXED|#DEFAULT)$/)) { - throw new Error("Invalid default value type; expected: #REQUIRED, #IMPLIED, #FIXED or #DEFAULT"); - } - if (defaultValue && !defaultValueType.match(/^(#FIXED|#DEFAULT)$/)) { - throw new Error("Default value only applies to #FIXED or #DEFAULT"); - } - this.elementName = this.stringify.eleName(elementName); - this.attributeName = this.stringify.attName(attributeName); - this.attributeType = this.stringify.dtdAttType(attributeType); - this.defaultValue = this.stringify.dtdAttDefault(defaultValue); - this.defaultValueType = defaultValueType; - } - - XMLDTDAttList.prototype.clone = function() { - return create(XMLDTDAttList.prototype, this); - }; - - XMLDTDAttList.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDAttList; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js deleted file mode 100644 index 7662593..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDElement.js +++ /dev/null @@ -1,52 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLDTDElement, create, isArray; - - create = require('lodash/object/create'); - - isArray = require('lodash/lang/isArray'); - - module.exports = XMLDTDElement = (function() { - function XMLDTDElement(parent, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing DTD element name"); - } - if (!value) { - value = '(#PCDATA)'; - } - if (isArray(value)) { - value = '(' + value.join(',') + ')'; - } - this.name = this.stringify.eleName(name); - this.value = this.stringify.dtdElementValue(value); - } - - XMLDTDElement.prototype.clone = function() { - return create(XMLDTDElement.prototype, this); - }; - - XMLDTDElement.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDElement; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js deleted file mode 100644 index 13481f9..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDEntity.js +++ /dev/null @@ -1,88 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLDTDEntity, create, isObject; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - module.exports = XMLDTDEntity = (function() { - function XMLDTDEntity(parent, pe, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing entity name"); - } - if (value == null) { - throw new Error("Missing entity value"); - } - this.pe = !!pe; - this.name = this.stringify.eleName(name); - if (!isObject(value)) { - this.value = this.stringify.dtdEntityValue(value); - } else { - if (!value.pubID && !value.sysID) { - throw new Error("Public and/or system identifiers are required for an external entity"); - } - if (value.pubID && !value.sysID) { - throw new Error("System identifier is required for a public external entity"); - } - if (value.pubID != null) { - this.pubID = this.stringify.dtdPubID(value.pubID); - } - if (value.sysID != null) { - this.sysID = this.stringify.dtdSysID(value.sysID); - } - if (value.nData != null) { - this.nData = this.stringify.dtdNData(value.nData); - } - if (this.pe && this.nData) { - throw new Error("Notation declaration is not allowed in a parameter entity"); - } - } - } - - XMLDTDEntity.prototype.clone = function() { - return create(XMLDTDEntity.prototype, this); - }; - - XMLDTDEntity.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDEntity; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js deleted file mode 100644 index 928a28c..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDTDNotation.js +++ /dev/null @@ -1,60 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLDTDNotation, create; - - create = require('lodash/object/create'); - - module.exports = XMLDTDNotation = (function() { - function XMLDTDNotation(parent, name, value) { - this.stringify = parent.stringify; - if (name == null) { - throw new Error("Missing notation name"); - } - if (!value.pubID && !value.sysID) { - throw new Error("Public or system identifiers are required for an external entity"); - } - this.name = this.stringify.eleName(name); - if (value.pubID != null) { - this.pubID = this.stringify.dtdPubID(value.pubID); - } - if (value.sysID != null) { - this.sysID = this.stringify.dtdSysID(value.sysID); - } - } - - XMLDTDNotation.prototype.clone = function() { - return create(XMLDTDNotation.prototype, this); - }; - - XMLDTDNotation.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDTDNotation; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js deleted file mode 100644 index 18d3aa9..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDeclaration.js +++ /dev/null @@ -1,73 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLDeclaration, XMLNode, create, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLDeclaration = (function(superClass) { - extend(XMLDeclaration, superClass); - - function XMLDeclaration(parent, version, encoding, standalone) { - var ref; - XMLDeclaration.__super__.constructor.call(this, parent); - if (isObject(version)) { - ref = version, version = ref.version, encoding = ref.encoding, standalone = ref.standalone; - } - if (!version) { - version = '1.0'; - } - if (version != null) { - this.version = this.stringify.xmlVersion(version); - } - if (encoding != null) { - this.encoding = this.stringify.xmlEncoding(encoding); - } - if (standalone != null) { - this.standalone = this.stringify.xmlStandalone(standalone); - } - } - - XMLDeclaration.prototype.clone = function() { - return create(XMLDeclaration.prototype, this); - }; - - XMLDeclaration.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLDeclaration; - - })(XMLNode); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js deleted file mode 100644 index 71460ff..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLDocType.js +++ /dev/null @@ -1,192 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLCData, XMLComment, XMLDTDAttList, XMLDTDElement, XMLDTDEntity, XMLDTDNotation, XMLDocType, XMLProcessingInstruction, create, isObject; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - XMLCData = require('./XMLCData'); - - XMLComment = require('./XMLComment'); - - XMLDTDAttList = require('./XMLDTDAttList'); - - XMLDTDEntity = require('./XMLDTDEntity'); - - XMLDTDElement = require('./XMLDTDElement'); - - XMLDTDNotation = require('./XMLDTDNotation'); - - XMLProcessingInstruction = require('./XMLProcessingInstruction'); - - module.exports = XMLDocType = (function() { - function XMLDocType(parent, pubID, sysID) { - var ref, ref1; - this.documentObject = parent; - this.stringify = this.documentObject.stringify; - this.children = []; - if (isObject(pubID)) { - ref = pubID, pubID = ref.pubID, sysID = ref.sysID; - } - if (sysID == null) { - ref1 = [pubID, sysID], sysID = ref1[0], pubID = ref1[1]; - } - if (pubID != null) { - this.pubID = this.stringify.dtdPubID(pubID); - } - if (sysID != null) { - this.sysID = this.stringify.dtdSysID(sysID); - } - } - - XMLDocType.prototype.clone = function() { - return create(XMLDocType.prototype, this); - }; - - XMLDocType.prototype.element = function(name, value) { - var child; - child = new XMLDTDElement(this, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.attList = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - var child; - child = new XMLDTDAttList(this, elementName, attributeName, attributeType, defaultValueType, defaultValue); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.entity = function(name, value) { - var child; - child = new XMLDTDEntity(this, false, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.pEntity = function(name, value) { - var child; - child = new XMLDTDEntity(this, true, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.notation = function(name, value) { - var child; - child = new XMLDTDNotation(this, name, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.cdata = function(value) { - var child; - child = new XMLCData(this, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.comment = function(value) { - var child; - child = new XMLComment(this, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.instruction = function(target, value) { - var child; - child = new XMLProcessingInstruction(this, target, value); - this.children.push(child); - return this; - }; - - XMLDocType.prototype.root = function() { - return this.documentObject.root(); - }; - - XMLDocType.prototype.document = function() { - return this.documentObject; - }; - - XMLDocType.prototype.toString = function(options, level) { - var child, i, indent, len, newline, offset, pretty, r, ref, ref1, ref2, ref3, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ' 0) { - r += ' ['; - if (pretty) { - r += newline; - } - ref3 = this.children; - for (i = 0, len = ref3.length; i < len; i++) { - child = ref3[i]; - r += child.toString(options, level + 1); - } - r += ']'; - } - r += '>'; - if (pretty) { - r += newline; - } - return r; - }; - - XMLDocType.prototype.ele = function(name, value) { - return this.element(name, value); - }; - - XMLDocType.prototype.att = function(elementName, attributeName, attributeType, defaultValueType, defaultValue) { - return this.attList(elementName, attributeName, attributeType, defaultValueType, defaultValue); - }; - - XMLDocType.prototype.ent = function(name, value) { - return this.entity(name, value); - }; - - XMLDocType.prototype.pent = function(name, value) { - return this.pEntity(name, value); - }; - - XMLDocType.prototype.not = function(name, value) { - return this.notation(name, value); - }; - - XMLDocType.prototype.dat = function(value) { - return this.cdata(value); - }; - - XMLDocType.prototype.com = function(value) { - return this.comment(value); - }; - - XMLDocType.prototype.ins = function(target, value) { - return this.instruction(target, value); - }; - - XMLDocType.prototype.up = function() { - return this.root(); - }; - - XMLDocType.prototype.doc = function() { - return this.document(); - }; - - return XMLDocType; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js deleted file mode 100644 index e03e1c2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLElement.js +++ /dev/null @@ -1,214 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLAttribute, XMLElement, XMLNode, XMLProcessingInstruction, create, every, isArray, isFunction, isObject, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - isObject = require('lodash/lang/isObject'); - - isArray = require('lodash/lang/isArray'); - - isFunction = require('lodash/lang/isFunction'); - - every = require('lodash/collection/every'); - - XMLNode = require('./XMLNode'); - - XMLAttribute = require('./XMLAttribute'); - - XMLProcessingInstruction = require('./XMLProcessingInstruction'); - - module.exports = XMLElement = (function(superClass) { - extend(XMLElement, superClass); - - function XMLElement(parent, name, attributes) { - XMLElement.__super__.constructor.call(this, parent); - if (name == null) { - throw new Error("Missing element name"); - } - this.name = this.stringify.eleName(name); - this.children = []; - this.instructions = []; - this.attributes = {}; - if (attributes != null) { - this.attribute(attributes); - } - } - - XMLElement.prototype.clone = function() { - var att, attName, clonedSelf, i, len, pi, ref, ref1; - clonedSelf = create(XMLElement.prototype, this); - if (clonedSelf.isRoot) { - clonedSelf.documentObject = null; - } - clonedSelf.attributes = {}; - ref = this.attributes; - for (attName in ref) { - if (!hasProp.call(ref, attName)) continue; - att = ref[attName]; - clonedSelf.attributes[attName] = att.clone(); - } - clonedSelf.instructions = []; - ref1 = this.instructions; - for (i = 0, len = ref1.length; i < len; i++) { - pi = ref1[i]; - clonedSelf.instructions.push(pi.clone()); - } - clonedSelf.children = []; - this.children.forEach(function(child) { - var clonedChild; - clonedChild = child.clone(); - clonedChild.parent = clonedSelf; - return clonedSelf.children.push(clonedChild); - }); - return clonedSelf; - }; - - XMLElement.prototype.attribute = function(name, value) { - var attName, attValue; - if (name != null) { - name = name.valueOf(); - } - if (isObject(name)) { - for (attName in name) { - if (!hasProp.call(name, attName)) continue; - attValue = name[attName]; - this.attribute(attName, attValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - if (!this.options.skipNullAttributes || (value != null)) { - this.attributes[name] = new XMLAttribute(this, name, value); - } - } - return this; - }; - - XMLElement.prototype.removeAttribute = function(name) { - var attName, i, len; - if (name == null) { - throw new Error("Missing attribute name"); - } - name = name.valueOf(); - if (isArray(name)) { - for (i = 0, len = name.length; i < len; i++) { - attName = name[i]; - delete this.attributes[attName]; - } - } else { - delete this.attributes[name]; - } - return this; - }; - - XMLElement.prototype.instruction = function(target, value) { - var i, insTarget, insValue, instruction, len; - if (target != null) { - target = target.valueOf(); - } - if (value != null) { - value = value.valueOf(); - } - if (isArray(target)) { - for (i = 0, len = target.length; i < len; i++) { - insTarget = target[i]; - this.instruction(insTarget); - } - } else if (isObject(target)) { - for (insTarget in target) { - if (!hasProp.call(target, insTarget)) continue; - insValue = target[insTarget]; - this.instruction(insTarget, insValue); - } - } else { - if (isFunction(value)) { - value = value.apply(); - } - instruction = new XMLProcessingInstruction(this, target, value); - this.instructions.push(instruction); - } - return this; - }; - - XMLElement.prototype.toString = function(options, level) { - var att, child, i, indent, instruction, j, len, len1, name, newline, offset, pretty, r, ref, ref1, ref2, ref3, ref4, ref5, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - ref3 = this.instructions; - for (i = 0, len = ref3.length; i < len; i++) { - instruction = ref3[i]; - r += instruction.toString(options, level + 1); - } - if (pretty) { - r += space; - } - r += '<' + this.name; - ref4 = this.attributes; - for (name in ref4) { - if (!hasProp.call(ref4, name)) continue; - att = ref4[name]; - r += att.toString(options); - } - if (this.children.length === 0 || every(this.children, function(e) { - return e.value === ''; - })) { - r += '/>'; - if (pretty) { - r += newline; - } - } else if (pretty && this.children.length === 1 && (this.children[0].value != null)) { - r += '>'; - r += this.children[0].value; - r += ''; - r += newline; - } else { - r += '>'; - if (pretty) { - r += newline; - } - ref5 = this.children; - for (j = 0, len1 = ref5.length; j < len1; j++) { - child = ref5[j]; - r += child.toString(options, level + 1); - } - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - } - return r; - }; - - XMLElement.prototype.att = function(name, value) { - return this.attribute(name, value); - }; - - XMLElement.prototype.ins = function(target, value) { - return this.instruction(target, value); - }; - - XMLElement.prototype.a = function(name, value) { - return this.attribute(name, value); - }; - - XMLElement.prototype.i = function(target, value) { - return this.instruction(target, value); - }; - - return XMLElement; - - })(XMLNode); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js deleted file mode 100644 index ed0a5bb..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLNode.js +++ /dev/null @@ -1,334 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLCData, XMLComment, XMLDeclaration, XMLDocType, XMLElement, XMLNode, XMLRaw, XMLText, isArray, isEmpty, isFunction, isObject, - hasProp = {}.hasOwnProperty; - - isObject = require('lodash/lang/isObject'); - - isArray = require('lodash/lang/isArray'); - - isFunction = require('lodash/lang/isFunction'); - - isEmpty = require('lodash/lang/isEmpty'); - - XMLElement = null; - - XMLCData = null; - - XMLComment = null; - - XMLDeclaration = null; - - XMLDocType = null; - - XMLRaw = null; - - XMLText = null; - - module.exports = XMLNode = (function() { - function XMLNode(parent) { - this.parent = parent; - this.options = this.parent.options; - this.stringify = this.parent.stringify; - if (XMLElement === null) { - XMLElement = require('./XMLElement'); - XMLCData = require('./XMLCData'); - XMLComment = require('./XMLComment'); - XMLDeclaration = require('./XMLDeclaration'); - XMLDocType = require('./XMLDocType'); - XMLRaw = require('./XMLRaw'); - XMLText = require('./XMLText'); - } - } - - XMLNode.prototype.clone = function() { - throw new Error("Cannot clone generic XMLNode"); - }; - - XMLNode.prototype.element = function(name, attributes, text) { - var item, j, key, lastChild, len, ref, val; - lastChild = null; - if (attributes == null) { - attributes = {}; - } - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref = [attributes, text], text = ref[0], attributes = ref[1]; - } - if (name != null) { - name = name.valueOf(); - } - if (isArray(name)) { - for (j = 0, len = name.length; j < len; j++) { - item = name[j]; - lastChild = this.element(item); - } - } else if (isFunction(name)) { - lastChild = this.element(name.apply()); - } else if (isObject(name)) { - for (key in name) { - if (!hasProp.call(name, key)) continue; - val = name[key]; - if (isFunction(val)) { - val = val.apply(); - } - if ((isObject(val)) && (isEmpty(val))) { - val = null; - } - if (!this.options.ignoreDecorators && this.stringify.convertAttKey && key.indexOf(this.stringify.convertAttKey) === 0) { - lastChild = this.attribute(key.substr(this.stringify.convertAttKey.length), val); - } else if (!this.options.ignoreDecorators && this.stringify.convertPIKey && key.indexOf(this.stringify.convertPIKey) === 0) { - lastChild = this.instruction(key.substr(this.stringify.convertPIKey.length), val); - } else if (isObject(val)) { - if (!this.options.ignoreDecorators && this.stringify.convertListKey && key.indexOf(this.stringify.convertListKey) === 0 && isArray(val)) { - lastChild = this.element(val); - } else { - lastChild = this.element(key); - lastChild.element(val); - } - } else { - lastChild = this.element(key, val); - } - } - } else { - if (!this.options.ignoreDecorators && this.stringify.convertTextKey && name.indexOf(this.stringify.convertTextKey) === 0) { - lastChild = this.text(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertCDataKey && name.indexOf(this.stringify.convertCDataKey) === 0) { - lastChild = this.cdata(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertCommentKey && name.indexOf(this.stringify.convertCommentKey) === 0) { - lastChild = this.comment(text); - } else if (!this.options.ignoreDecorators && this.stringify.convertRawKey && name.indexOf(this.stringify.convertRawKey) === 0) { - lastChild = this.raw(text); - } else { - lastChild = this.node(name, attributes, text); - } - } - if (lastChild == null) { - throw new Error("Could not create any elements with: " + name); - } - return lastChild; - }; - - XMLNode.prototype.insertBefore = function(name, attributes, text) { - var child, i, removed; - if (this.isRoot) { - throw new Error("Cannot insert elements at root level"); - } - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i); - child = this.parent.element(name, attributes, text); - Array.prototype.push.apply(this.parent.children, removed); - return child; - }; - - XMLNode.prototype.insertAfter = function(name, attributes, text) { - var child, i, removed; - if (this.isRoot) { - throw new Error("Cannot insert elements at root level"); - } - i = this.parent.children.indexOf(this); - removed = this.parent.children.splice(i + 1); - child = this.parent.element(name, attributes, text); - Array.prototype.push.apply(this.parent.children, removed); - return child; - }; - - XMLNode.prototype.remove = function() { - var i, ref; - if (this.isRoot) { - throw new Error("Cannot remove the root element"); - } - i = this.parent.children.indexOf(this); - [].splice.apply(this.parent.children, [i, i - i + 1].concat(ref = [])), ref; - return this.parent; - }; - - XMLNode.prototype.node = function(name, attributes, text) { - var child, ref; - if (name != null) { - name = name.valueOf(); - } - if (attributes == null) { - attributes = {}; - } - attributes = attributes.valueOf(); - if (!isObject(attributes)) { - ref = [attributes, text], text = ref[0], attributes = ref[1]; - } - child = new XMLElement(this, name, attributes); - if (text != null) { - child.text(text); - } - this.children.push(child); - return child; - }; - - XMLNode.prototype.text = function(value) { - var child; - child = new XMLText(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.cdata = function(value) { - var child; - child = new XMLCData(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.comment = function(value) { - var child; - child = new XMLComment(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.raw = function(value) { - var child; - child = new XMLRaw(this, value); - this.children.push(child); - return this; - }; - - XMLNode.prototype.declaration = function(version, encoding, standalone) { - var doc, xmldec; - doc = this.document(); - xmldec = new XMLDeclaration(doc, version, encoding, standalone); - doc.xmldec = xmldec; - return doc.root(); - }; - - XMLNode.prototype.doctype = function(pubID, sysID) { - var doc, doctype; - doc = this.document(); - doctype = new XMLDocType(doc, pubID, sysID); - doc.doctype = doctype; - return doctype; - }; - - XMLNode.prototype.up = function() { - if (this.isRoot) { - throw new Error("The root node has no parent. Use doc() if you need to get the document object."); - } - return this.parent; - }; - - XMLNode.prototype.root = function() { - var child; - if (this.isRoot) { - return this; - } - child = this.parent; - while (!child.isRoot) { - child = child.parent; - } - return child; - }; - - XMLNode.prototype.document = function() { - return this.root().documentObject; - }; - - XMLNode.prototype.end = function(options) { - return this.document().toString(options); - }; - - XMLNode.prototype.prev = function() { - var i; - if (this.isRoot) { - throw new Error("Root node has no siblings"); - } - i = this.parent.children.indexOf(this); - if (i < 1) { - throw new Error("Already at the first node"); - } - return this.parent.children[i - 1]; - }; - - XMLNode.prototype.next = function() { - var i; - if (this.isRoot) { - throw new Error("Root node has no siblings"); - } - i = this.parent.children.indexOf(this); - if (i === -1 || i === this.parent.children.length - 1) { - throw new Error("Already at the last node"); - } - return this.parent.children[i + 1]; - }; - - XMLNode.prototype.importXMLBuilder = function(xmlbuilder) { - var clonedRoot; - clonedRoot = xmlbuilder.root().clone(); - clonedRoot.parent = this; - clonedRoot.isRoot = false; - this.children.push(clonedRoot); - return this; - }; - - XMLNode.prototype.ele = function(name, attributes, text) { - return this.element(name, attributes, text); - }; - - XMLNode.prototype.nod = function(name, attributes, text) { - return this.node(name, attributes, text); - }; - - XMLNode.prototype.txt = function(value) { - return this.text(value); - }; - - XMLNode.prototype.dat = function(value) { - return this.cdata(value); - }; - - XMLNode.prototype.com = function(value) { - return this.comment(value); - }; - - XMLNode.prototype.doc = function() { - return this.document(); - }; - - XMLNode.prototype.dec = function(version, encoding, standalone) { - return this.declaration(version, encoding, standalone); - }; - - XMLNode.prototype.dtd = function(pubID, sysID) { - return this.doctype(pubID, sysID); - }; - - XMLNode.prototype.e = function(name, attributes, text) { - return this.element(name, attributes, text); - }; - - XMLNode.prototype.n = function(name, attributes, text) { - return this.node(name, attributes, text); - }; - - XMLNode.prototype.t = function(value) { - return this.text(value); - }; - - XMLNode.prototype.d = function(value) { - return this.cdata(value); - }; - - XMLNode.prototype.c = function(value) { - return this.comment(value); - }; - - XMLNode.prototype.r = function(value) { - return this.raw(value); - }; - - XMLNode.prototype.u = function() { - return this.up(); - }; - - return XMLNode; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js deleted file mode 100644 index f5d8c6c..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js +++ /dev/null @@ -1,51 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLProcessingInstruction, create; - - create = require('lodash/object/create'); - - module.exports = XMLProcessingInstruction = (function() { - function XMLProcessingInstruction(parent, target, value) { - this.stringify = parent.stringify; - if (target == null) { - throw new Error("Missing instruction target"); - } - this.target = this.stringify.insTarget(target); - if (value) { - this.value = this.stringify.insValue(value); - } - } - - XMLProcessingInstruction.prototype.clone = function() { - return create(XMLProcessingInstruction.prototype, this); - }; - - XMLProcessingInstruction.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += ''; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLProcessingInstruction; - - })(); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js deleted file mode 100644 index 499d0e2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLRaw.js +++ /dev/null @@ -1,49 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLNode, XMLRaw, create, - extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, - hasProp = {}.hasOwnProperty; - - create = require('lodash/object/create'); - - XMLNode = require('./XMLNode'); - - module.exports = XMLRaw = (function(superClass) { - extend(XMLRaw, superClass); - - function XMLRaw(parent, text) { - XMLRaw.__super__.constructor.call(this, parent); - if (text == null) { - throw new Error("Missing raw text"); - } - this.value = this.stringify.raw(text); - } - - XMLRaw.prototype.clone = function() { - return create(XMLRaw.prototype, this); - }; - - XMLRaw.prototype.toString = function(options, level) { - var indent, newline, offset, pretty, r, ref, ref1, ref2, space; - pretty = (options != null ? options.pretty : void 0) || false; - indent = (ref = options != null ? options.indent : void 0) != null ? ref : ' '; - offset = (ref1 = options != null ? options.offset : void 0) != null ? ref1 : 0; - newline = (ref2 = options != null ? options.newline : void 0) != null ? ref2 : '\n'; - level || (level = 0); - space = new Array(level + offset + 1).join(indent); - r = ''; - if (pretty) { - r += space; - } - r += this.value; - if (pretty) { - r += newline; - } - return r; - }; - - return XMLRaw; - - })(XMLNode); - -}).call(this); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js b/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js deleted file mode 100644 index ea2e4ed..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/lib/XMLStringifier.js +++ /dev/null @@ -1,167 +0,0 @@ -// Generated by CoffeeScript 1.9.1 -(function() { - var XMLStringifier, - bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }, - hasProp = {}.hasOwnProperty; - - module.exports = XMLStringifier = (function() { - function XMLStringifier(options) { - this.assertLegalChar = bind(this.assertLegalChar, this); - var key, ref, value; - this.allowSurrogateChars = options != null ? options.allowSurrogateChars : void 0; - ref = (options != null ? options.stringify : void 0) || {}; - for (key in ref) { - if (!hasProp.call(ref, key)) continue; - value = ref[key]; - this[key] = value; - } - } - - XMLStringifier.prototype.eleName = function(val) { - val = '' + val || ''; - return this.assertLegalChar(val); - }; - - XMLStringifier.prototype.eleText = function(val) { - val = '' + val || ''; - return this.assertLegalChar(this.elEscape(val)); - }; - - XMLStringifier.prototype.cdata = function(val) { - val = '' + val || ''; - if (val.match(/]]>/)) { - throw new Error("Invalid CDATA text: " + val); - } - return this.assertLegalChar(val); - }; - - XMLStringifier.prototype.comment = function(val) { - val = '' + val || ''; - if (val.match(/--/)) { - throw new Error("Comment text cannot contain double-hypen: " + val); - } - return this.assertLegalChar(val); - }; - - XMLStringifier.prototype.raw = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.attName = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.attValue = function(val) { - val = '' + val || ''; - return this.attEscape(val); - }; - - XMLStringifier.prototype.insTarget = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.insValue = function(val) { - val = '' + val || ''; - if (val.match(/\?>/)) { - throw new Error("Invalid processing instruction value: " + val); - } - return val; - }; - - XMLStringifier.prototype.xmlVersion = function(val) { - val = '' + val || ''; - if (!val.match(/1\.[0-9]+/)) { - throw new Error("Invalid version number: " + val); - } - return val; - }; - - XMLStringifier.prototype.xmlEncoding = function(val) { - val = '' + val || ''; - if (!val.match(/[A-Za-z](?:[A-Za-z0-9._-]|-)*/)) { - throw new Error("Invalid encoding: " + val); - } - return val; - }; - - XMLStringifier.prototype.xmlStandalone = function(val) { - if (val) { - return "yes"; - } else { - return "no"; - } - }; - - XMLStringifier.prototype.dtdPubID = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdSysID = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdElementValue = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdAttType = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdAttDefault = function(val) { - if (val != null) { - return '' + val || ''; - } else { - return val; - } - }; - - XMLStringifier.prototype.dtdEntityValue = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.dtdNData = function(val) { - return '' + val || ''; - }; - - XMLStringifier.prototype.convertAttKey = '@'; - - XMLStringifier.prototype.convertPIKey = '?'; - - XMLStringifier.prototype.convertTextKey = '#text'; - - XMLStringifier.prototype.convertCDataKey = '#cdata'; - - XMLStringifier.prototype.convertCommentKey = '#comment'; - - XMLStringifier.prototype.convertRawKey = '#raw'; - - XMLStringifier.prototype.convertListKey = '#list'; - - XMLStringifier.prototype.assertLegalChar = function(str) { - var chars, chr; - if (this.allowSurrogateChars) { - chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uFFFE-\uFFFF]/; - } else { - chars = /[\u0000-\u0008\u000B-\u000C\u000E-\u001F\uD800-\uDFFF\uFFFE-\uFFFF]/; - } - chr = str.match(chars); - if (chr) { - throw new Error("Invalid character (" + chr + ") in string: " + str + " at index " + chr.index); - } - return str; - }; - - XMLStringifier.prototype.elEscape = function(str) { - return str.replace(/&/g, '&').replace(//g, '>').replace(/\r/g, ' '); - }; - - XMLStringifier.prototype.attEscape = function(str) { - return str.replace(/&/g, '&').replace(/ -Based on Underscore.js, copyright 2009-2015 Jeremy Ashkenas, -DocumentCloud and Investigative Reporters & Editors - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md deleted file mode 100644 index b44492c..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/README.md +++ /dev/null @@ -1,116 +0,0 @@ -# lodash v3.5.0 - -The [modern build](https://github.com/lodash/lodash/wiki/Build-Differences) of [lodash](https://lodash.com/) exported as [Node.js](http://nodejs.org/)/[io.js](https://iojs.org/) modules. - -Generated using [lodash-cli](https://www.npmjs.com/package/lodash-cli): -```bash -$ lodash modularize modern exports=node -o ./ -$ lodash modern -d -o ./index.js -``` - -## Installation - -Using npm: - -```bash -$ {sudo -H} npm i -g npm -$ npm i --save lodash -``` - -In Node.js/io.js: - -```js -// load the modern build -var _ = require('lodash'); -// or a method category -var array = require('lodash/array'); -// or a method (great for smaller builds with browserify/webpack) -var chunk = require('lodash/array/chunk'); -``` - -See the [package source](https://github.com/lodash/lodash/tree/3.5.0-npm) for more details. - -**Note:**
-Don’t assign values to the [special variable](http://nodejs.org/api/repl.html#repl_repl_features) `_` when in the REPL.
-Install [n_](https://www.npmjs.com/package/n_) for a REPL that includes lodash by default. - -## Module formats - -lodash is also available in a variety of other builds & module formats. - - * npm packages for [modern](https://www.npmjs.com/package/lodash), [compatibility](https://www.npmjs.com/package/lodash-compat), & [per method](https://www.npmjs.com/browse/keyword/lodash-modularized) builds - * AMD modules for [modern](https://github.com/lodash/lodash/tree/3.5.0-amd) & [compatibility](https://github.com/lodash/lodash-compat/tree/3.5.0-amd) builds - * ES modules for the [modern](https://github.com/lodash/lodash/tree/3.5.0-es) build - -## Further Reading - - * [API Documentation](https://lodash.com/docs) - * [Build Differences](https://github.com/lodash/lodash/wiki/Build-Differences) - * [Changelog](https://github.com/lodash/lodash/wiki/Changelog) - * [Release Notes](https://github.com/lodash/lodash/releases) - * [Roadmap](https://github.com/lodash/lodash/wiki/Roadmap) - * [More Resources](https://github.com/lodash/lodash/wiki/Resources) - -## Features *not* in Underscore - - * ~100% [code coverage](https://coveralls.io/r/lodash) - * Follows [semantic versioning](http://semver.org/) for releases - * [Lazily evaluated](http://filimanjaro.com/blog/2014/introducing-lazy-evaluation/) chaining - * [_(…)](https://lodash.com/docs#_) supports intuitive chaining - * [_.add](https://lodash.com/docs#add) for mathematical composition - * [_.ary](https://lodash.com/docs#ary) & [_.rearg](https://lodash.com/docs#rearg) to change function argument limits & order - * [_.at](https://lodash.com/docs#at) for cherry-picking collection values - * [_.attempt](https://lodash.com/docs#attempt) to execute functions which may error without a try-catch - * [_.before](https://lodash.com/docs#before) to complement [_.after](https://lodash.com/docs#after) - * [_.bindKey](https://lodash.com/docs#bindKey) for binding [*“lazyâ€*](http://michaux.ca/articles/lazy-function-definition-pattern) defined methods - * [_.chunk](https://lodash.com/docs#chunk) for splitting an array into chunks of a given size - * [_.clone](https://lodash.com/docs#clone) supports shallow cloning of `Date` & `RegExp` objects - * [_.cloneDeep](https://lodash.com/docs#cloneDeep) for deep cloning arrays & objects - * [_.create](https://lodash.com/docs#create) for easier object inheritance - * [_.curry](https://lodash.com/docs#curry) & [_.curryRight](https://lodash.com/docs#curryRight) for creating [curried](http://hughfdjackson.com/javascript/why-curry-helps/) functions - * [_.debounce](https://lodash.com/docs#debounce) & [_.throttle](https://lodash.com/docs#throttle) are cancelable & accept options for more control - * [_.fill](https://lodash.com/docs#fill) to fill arrays with values - * [_.findKey](https://lodash.com/docs#findKey) for finding keys - * [_.flow](https://lodash.com/docs#flow) to complement [_.flowRight](https://lodash.com/docs#flowRight) (a.k.a `_.compose`) - * [_.forEach](https://lodash.com/docs#forEach) supports exiting early - * [_.forIn](https://lodash.com/docs#forIn) for iterating all enumerable properties - * [_.forOwn](https://lodash.com/docs#forOwn) for iterating own properties - * [_.inRange](https://lodash.com/docs#inRange) for checking whether a number is within a given range - * [_.isNative](https://lodash.com/docs#isNative) to check for native functions - * [_.isPlainObject](https://lodash.com/docs#isPlainObject) & [_.toPlainObject](https://lodash.com/docs#toPlainObject) to check for & convert to `Object` objects - * [_.isTypedArray](https://lodash.com/docs#isTypedArray) to check for typed arrays - * [_.matches](https://lodash.com/docs#matches) supports deep object comparisons - * [_.matchesProperty](https://lodash.com/docs#matchesProperty) to complement [_.matches](https://lodash.com/docs#matches) & [_.property](https://lodash.com/docs#property) - * [_.merge](https://lodash.com/docs#merge) for a deep [_.extend](https://lodash.com/docs#extend) - * [_.parseInt](https://lodash.com/docs#parseInt) for consistent cross-environment behavior - * [_.pull](https://lodash.com/docs#pull), [_.pullAt](https://lodash.com/docs#pullAt), & [_.remove](https://lodash.com/docs#remove) for mutating arrays - * [_.random](https://lodash.com/docs#random) supports returning floating-point numbers - * [_.runInContext](https://lodash.com/docs#runInContext) for collisionless mixins & easier mocking - * [_.slice](https://lodash.com/docs#slice) for creating subsets of array-like values - * [_.sortByAll](https://lodash.com/docs#sortByAll) & [_.sortByOrder](https://lodash.com/docs#sortByOrder) for sorting by multiple properties & orders - * [_.spread](https://lodash.com/docs#spread) for creating a function to spread an array of arguments to another - * [_.sum](https://lodash.com/docs#sum) to get the sum of values - * [_.support](https://lodash.com/docs#support) for flagging environment features - * [_.template](https://lodash.com/docs#template) supports [*“importsâ€*](https://lodash.com/docs#templateSettings-imports) options & [ES template delimiters](http://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components) - * [_.transform](https://lodash.com/docs#transform) as a powerful alternative to [_.reduce](https://lodash.com/docs#reduce) for transforming objects - * [_.xor](https://lodash.com/docs#xor) to complement [_.difference](https://lodash.com/docs#difference), [_.intersection](https://lodash.com/docs#intersection), & [_.union](https://lodash.com/docs#union) - * [_.valuesIn](https://lodash.com/docs#valuesIn) for getting values of all enumerable properties - * [_.bind](https://lodash.com/docs#bind), [_.curry](https://lodash.com/docs#curry), [_.partial](https://lodash.com/docs#partial), & - [more](https://lodash.com/docs "_.bindKey, _.curryRight, _.partialRight") support customizable argument placeholders - * [_.capitalize](https://lodash.com/docs#capitalize), [_.trim](https://lodash.com/docs#trim), & - [more](https://lodash.com/docs "_.camelCase, _.deburr, _.endsWith, _.escapeRegExp, _.kebabCase, _.pad, _.padLeft, _.padRight, _.repeat, _.snakeCase, _.startCase, _.startsWith, _.trimLeft, _.trimRight, _.trunc, _.words") string methods - * [_.clone](https://lodash.com/docs#clone), [_.isEqual](https://lodash.com/docs#isEqual), & - [more](https://lodash.com/docs "_.assign, _.cloneDeep, _.merge") accept callbacks - * [_.dropWhile](https://lodash.com/docs#dropWhile), [_.takeWhile](https://lodash.com/docs#takeWhile), & - [more](https://lodash.com/docs "_.drop, _.dropRightWhile, _.take, _.takeRightWhile") to complement [_.first](https://lodash.com/docs#first), [_.initial](https://lodash.com/docs#initial), [_.last](https://lodash.com/docs#last), & [_.rest](https://lodash.com/docs#rest) - * [_.findLast](https://lodash.com/docs#findLast), [_.findLastKey](https://lodash.com/docs#findLastKey), & - [more](https://lodash.com/docs "_.flowRight, _.forEachRight, _.forInRight, _.forOwnRight, _.partialRight") right-associative methods - * [_.includes](https://lodash.com/docs#includes), [_.toArray](https://lodash.com/docs#toArray), & - [more](https://lodash.com/docs "_.at, _.countBy, _.every, _.filter, _.find, _.findLast, _.forEach, _.forEachRight, _.groupBy, _.indexBy, _.invoke, _.map, _.max, _.min, _.partition, _.pluck, _.reduce, _.reduceRight, _.reject, _.shuffle, _.size, _.some, _.sortBy") accept strings - * [_#commit](https://lodash.com/docs#prototype-commit) & [_#plant](https://lodash.com/docs#prototype-plant) for working with chain sequences - * [_#thru](https://lodash.com/docs#thru) to pass values thru a chain sequence - -## Support - -Tested in Chrome 40-41, Firefox 35-36, IE 6-11, Opera 26-27, Safari 5-8, io.js 1.5.0, Node.js 0.8.28, 0.10.36, & 0.12.0, PhantomJS 1.9.8, RingoJS 0.11, & Rhino 1.7RC5. -Automated [browser](https://saucelabs.com/u/lodash) & [CI](https://travis-ci.org/lodash/lodash/) test runs are available. Special thanks to [Sauce Labs](https://saucelabs.com/) for providing automated browser testing. diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js deleted file mode 100644 index 6ef12c7..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array.js +++ /dev/null @@ -1,42 +0,0 @@ -module.exports = { - 'chunk': require('./array/chunk'), - 'compact': require('./array/compact'), - 'difference': require('./array/difference'), - 'drop': require('./array/drop'), - 'dropRight': require('./array/dropRight'), - 'dropRightWhile': require('./array/dropRightWhile'), - 'dropWhile': require('./array/dropWhile'), - 'fill': require('./array/fill'), - 'findIndex': require('./array/findIndex'), - 'findLastIndex': require('./array/findLastIndex'), - 'first': require('./array/first'), - 'flatten': require('./array/flatten'), - 'flattenDeep': require('./array/flattenDeep'), - 'head': require('./array/head'), - 'indexOf': require('./array/indexOf'), - 'initial': require('./array/initial'), - 'intersection': require('./array/intersection'), - 'last': require('./array/last'), - 'lastIndexOf': require('./array/lastIndexOf'), - 'object': require('./array/object'), - 'pull': require('./array/pull'), - 'pullAt': require('./array/pullAt'), - 'remove': require('./array/remove'), - 'rest': require('./array/rest'), - 'slice': require('./array/slice'), - 'sortedIndex': require('./array/sortedIndex'), - 'sortedLastIndex': require('./array/sortedLastIndex'), - 'tail': require('./array/tail'), - 'take': require('./array/take'), - 'takeRight': require('./array/takeRight'), - 'takeRightWhile': require('./array/takeRightWhile'), - 'takeWhile': require('./array/takeWhile'), - 'union': require('./array/union'), - 'uniq': require('./array/uniq'), - 'unique': require('./array/unique'), - 'unzip': require('./array/unzip'), - 'without': require('./array/without'), - 'xor': require('./array/xor'), - 'zip': require('./array/zip'), - 'zipObject': require('./array/zipObject') -}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js deleted file mode 100644 index 4de9b39..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/chunk.js +++ /dev/null @@ -1,47 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** Native method references. */ -var ceil = Math.ceil; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates an array of elements split into groups the length of `size`. - * If `collection` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the new array containing chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ -function chunk(array, size, guard) { - if (guard ? isIterateeCall(array, size, guard) : size == null) { - size = 1; - } else { - size = nativeMax(+size || 1, 1); - } - var index = 0, - length = array ? array.length : 0, - resIndex = -1, - result = Array(ceil(length / size)); - - while (index < length) { - result[++resIndex] = baseSlice(array, index, (index += size)); - } - return result; -} - -module.exports = chunk; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js deleted file mode 100644 index 1dc1c55..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/compact.js +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ -function compact(array) { - var index = -1, - length = array ? array.length : 0, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[++resIndex] = value; - } - } - return result; -} - -module.exports = compact; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js deleted file mode 100644 index d05774e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/difference.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseDifference = require('../internal/baseDifference'), - baseFlatten = require('../internal/baseFlatten'), - isArguments = require('../lang/isArguments'), - isArray = require('../lang/isArray'); - -/** - * Creates an array excluding all values of the provided arrays using - * `SameValueZero` for equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.difference([1, 2, 3], [4, 2]); - * // => [1, 3] - */ -function difference() { - var args = arguments, - index = -1, - length = args.length; - - while (++index < length) { - var value = args[index]; - if (isArray(value) || isArguments(value)) { - break; - } - } - return baseDifference(value, baseFlatten(args, false, true, ++index)); -} - -module.exports = difference; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js deleted file mode 100644 index 039a0b5..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/drop.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ -function drop(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - return baseSlice(array, n < 0 ? 0 : n); -} - -module.exports = drop; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js deleted file mode 100644 index 14b5eb6..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRight.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ -function dropRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - n = length - (+n || 0); - return baseSlice(array, 0, n < 0 ? 0 : n); -} - -module.exports = dropRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js deleted file mode 100644 index 8135410..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropRightWhile.js +++ /dev/null @@ -1,63 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseSlice = require('../internal/baseSlice'); - -/** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that match the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRightWhile([1, 2, 3], function(n) { - * return n > 1; - * }); - * // => [1] - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); - * // => ['barney', 'fred'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); - * // => ['barney'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.dropRightWhile(users, 'active'), 'user'); - * // => ['barney', 'fred', 'pebbles'] - */ -function dropRightWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - predicate = baseCallback(predicate, thisArg, 3); - while (length-- && predicate(array[length], length, array)) {} - return baseSlice(array, 0, length + 1); -} - -module.exports = dropRightWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js deleted file mode 100644 index 2c88099..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/dropWhile.js +++ /dev/null @@ -1,64 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseSlice = require('../internal/baseSlice'); - -/** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropWhile([1, 2, 3], function(n) { - * return n < 3; - * }); - * // => [3] - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); - * // => ['fred', 'pebbles'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.dropWhile(users, 'active', false), 'user'); - * // => ['pebbles'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.dropWhile(users, 'active'), 'user'); - * // => ['barney', 'fred', 'pebbles'] - */ -function dropWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - var index = -1; - predicate = baseCallback(predicate, thisArg, 3); - while (++index < length && predicate(array[index], index, array)) {} - return baseSlice(array, index); -} - -module.exports = dropWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js deleted file mode 100644 index 44811d3..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/fill.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseFill = require('../internal/baseFill'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ -function fill(array, value, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); -} - -module.exports = fill; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js deleted file mode 100644 index 0c2ef30..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findIndex.js +++ /dev/null @@ -1,64 +0,0 @@ -var baseCallback = require('../internal/baseCallback'); - -/** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for, instead of the element itself. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(chr) { - * return chr.user == 'barney'; - * }); - * // => 0 - * - * // using the `_.matches` callback shorthand - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // using the `_.matchesProperty` callback shorthand - * _.findIndex(users, 'active', false); - * // => 0 - * - * // using the `_.property` callback shorthand - * _.findIndex(users, 'active'); - * // => 2 - */ -function findIndex(array, predicate, thisArg) { - var index = -1, - length = array ? array.length : 0; - - predicate = baseCallback(predicate, thisArg, 3); - while (++index < length) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; -} - -module.exports = findIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js deleted file mode 100644 index 7fdcc4a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/findLastIndex.js +++ /dev/null @@ -1,62 +0,0 @@ -var baseCallback = require('../internal/baseCallback'); - -/** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(chr) { - * return chr.user == 'pebbles'; - * }); - * // => 2 - * - * // using the `_.matches` callback shorthand - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // using the `_.matchesProperty` callback shorthand - * _.findLastIndex(users, 'active', false); - * // => 2 - * - * // using the `_.property` callback shorthand - * _.findLastIndex(users, 'active'); - * // => 0 - */ -function findLastIndex(array, predicate, thisArg) { - var length = array ? array.length : 0; - predicate = baseCallback(predicate, thisArg, 3); - while (length--) { - if (predicate(array[length], length, array)) { - return length; - } - } - return -1; -} - -module.exports = findLastIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js deleted file mode 100644 index b3b9c79..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/first.js +++ /dev/null @@ -1,22 +0,0 @@ -/** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @alias head - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([]); - * // => undefined - */ -function first(array) { - return array ? array[0] : undefined; -} - -module.exports = first; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js deleted file mode 100644 index 4460c2d..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flatten.js +++ /dev/null @@ -1,32 +0,0 @@ -var baseFlatten = require('../internal/baseFlatten'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Flattens a nested array. If `isDeep` is `true` the array is recursively - * flattened, otherwise it is only flattened a single level. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to flatten. - * @param {boolean} [isDeep] Specify a deep flatten. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, 3, [4]]]); - * // => [1, 2, 3, [4]]; - * - * // using `isDeep` - * _.flatten([1, [2, 3, [4]]], true); - * // => [1, 2, 3, 4]; - */ -function flatten(array, isDeep, guard) { - var length = array ? array.length : 0; - if (guard && isIterateeCall(array, isDeep, guard)) { - isDeep = false; - } - return length ? baseFlatten(array, isDeep, false, 0) : []; -} - -module.exports = flatten; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js deleted file mode 100644 index ae498bb..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/flattenDeep.js +++ /dev/null @@ -1,21 +0,0 @@ -var baseFlatten = require('../internal/baseFlatten'); - -/** - * Recursively flattens a nested array. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to recursively flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, 3, [4]]]); - * // => [1, 2, 3, 4]; - */ -function flattenDeep(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, true, false, 0) : []; -} - -module.exports = flattenDeep; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js deleted file mode 100644 index 1961b08..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/head.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./first'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js deleted file mode 100644 index b6d2a7d..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/indexOf.js +++ /dev/null @@ -1,58 +0,0 @@ -var baseIndexOf = require('../internal/baseIndexOf'), - binaryIndex = require('../internal/binaryIndex'); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Gets the index at which the first occurrence of `value` is found in `array` - * using `SameValueZero` for equality comparisons. If `fromIndex` is negative, - * it is used as the offset from the end of `array`. If `array` is sorted - * providing `true` for `fromIndex` performs a faster binary search. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // using `fromIndex` - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - * - * // performing a binary search - * _.indexOf([1, 1, 2, 2], 2, true); - * // => 2 - */ -function indexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; - } else if (fromIndex) { - var index = binaryIndex(array, value), - other = array[index]; - - if (value === value ? (value === other) : (other !== other)) { - return index; - } - return -1; - } - return baseIndexOf(array, value, fromIndex || 0); -} - -module.exports = indexOf; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js deleted file mode 100644 index 59b7a7d..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/initial.js +++ /dev/null @@ -1,20 +0,0 @@ -var dropRight = require('./dropRight'); - -/** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ -function initial(array) { - return dropRight(array, 1); -} - -module.exports = initial; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js deleted file mode 100644 index bc7c803..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/intersection.js +++ /dev/null @@ -1,67 +0,0 @@ -var baseIndexOf = require('../internal/baseIndexOf'), - cacheIndexOf = require('../internal/cacheIndexOf'), - createCache = require('../internal/createCache'), - isArguments = require('../lang/isArguments'), - isArray = require('../lang/isArray'); - -/** - * Creates an array of unique values in all provided arrays using `SameValueZero` - * for equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of shared values. - * @example - * _.intersection([1, 2], [4, 2], [2, 1]); - * // => [2] - */ -function intersection() { - var args = [], - argsIndex = -1, - argsLength = arguments.length, - caches = [], - indexOf = baseIndexOf, - isCommon = true; - - while (++argsIndex < argsLength) { - var value = arguments[argsIndex]; - if (isArray(value) || isArguments(value)) { - args.push(value); - caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null); - } - } - argsLength = args.length; - var array = args[0], - index = -1, - length = array ? array.length : 0, - result = [], - seen = caches[0]; - - outer: - while (++index < length) { - value = array[index]; - if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { - argsIndex = argsLength; - while (--argsIndex) { - var cache = caches[argsIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) { - continue outer; - } - } - if (seen) { - seen.push(value); - } - result.push(value); - } - } - return result; -} - -module.exports = intersection; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js deleted file mode 100644 index 299af31..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/last.js +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ -function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; -} - -module.exports = last; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js deleted file mode 100644 index 02b8062..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/lastIndexOf.js +++ /dev/null @@ -1,60 +0,0 @@ -var binaryIndex = require('../internal/binaryIndex'), - indexOfNaN = require('../internal/indexOfNaN'); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max, - nativeMin = Math.min; - -/** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=array.length-1] The index to search from - * or `true` to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // using `fromIndex` - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - * - * // performing a binary search - * _.lastIndexOf([1, 1, 2, 2], 2, true); - * // => 3 - */ -function lastIndexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; - } else if (fromIndex) { - index = binaryIndex(array, value, true) - 1; - var other = array[index]; - if (value === value ? (value === other) : (other !== other)) { - return index; - } - return -1; - } - if (value !== value) { - return indexOfNaN(array, index, true); - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; -} - -module.exports = lastIndexOf; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js deleted file mode 100644 index f4a3453..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/object.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./zipObject'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js deleted file mode 100644 index 11e43a3..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pull.js +++ /dev/null @@ -1,55 +0,0 @@ -var baseIndexOf = require('../internal/baseIndexOf'); - -/** Used for native method references. */ -var arrayProto = Array.prototype; - -/** Native method references. */ -var splice = arrayProto.splice; - -/** - * Removes all provided values from `array` using `SameValueZero` for equality - * comparisons. - * - * **Notes:** - * - Unlike `_.without`, this method mutates `array`. - * - `SameValueZero` comparisons are like strict equality comparisons, e.g. `===`, - * except that `NaN` matches `NaN`. See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ -function pull() { - var args = arguments, - array = args[0]; - - if (!(array && array.length)) { - return array; - } - var index = 0, - indexOf = baseIndexOf, - length = args.length; - - while (++index < length) { - var fromIndex = 0, - value = args[index]; - - while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { - splice.call(array, fromIndex, 1); - } - } - return array; -} - -module.exports = pull; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js deleted file mode 100644 index 706e73c..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/pullAt.js +++ /dev/null @@ -1,33 +0,0 @@ -var baseFlatten = require('../internal/baseFlatten'), - basePullAt = require('../internal/basePullAt'); - -/** - * Removes elements from `array` corresponding to the given indexes and returns - * an array of the removed elements. Indexes may be specified as an array of - * indexes or as individual arguments. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove, - * specified as individual indexes or arrays of indexes. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [5, 10, 15, 20]; - * var evens = _.pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] - */ -function pullAt(array) { - return basePullAt(array || [], baseFlatten(arguments, false, false, 1)); -} - -module.exports = pullAt; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js deleted file mode 100644 index 52fc526..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/remove.js +++ /dev/null @@ -1,65 +0,0 @@ -var baseCallback = require('../internal/baseCallback'); - -/** Used for native method references. */ -var arrayProto = Array.prototype; - -/** Native method references. */ -var splice = arrayProto.splice; - -/** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is bound to - * `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * **Note:** Unlike `_.filter`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ -function remove(array, predicate, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = []; - - predicate = baseCallback(predicate, thisArg, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - splice.call(array, index--, 1); - length--; - } - } - return result; -} - -module.exports = remove; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js deleted file mode 100644 index 9bfb734..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/rest.js +++ /dev/null @@ -1,21 +0,0 @@ -var drop = require('./drop'); - -/** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @alias tail - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - */ -function rest(array) { - return drop(array, 1); -} - -module.exports = rest; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js deleted file mode 100644 index ee6fb73..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/slice.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This function is used instead of `Array#slice` to support node - * lists in IE < 9 and to ensure dense arrays are returned. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ -function slice(array, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - return baseSlice(array, start, end); -} - -module.exports = slice; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js deleted file mode 100644 index fdc5e30..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedIndex.js +++ /dev/null @@ -1,59 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - binaryIndex = require('../internal/binaryIndex'), - binaryIndexBy = require('../internal/binaryIndexBy'); - -/** - * Uses a binary search to determine the lowest index at which `value` should - * be inserted into `array` in order to maintain its sort order. If an iteratee - * function is provided it is invoked for `value` and each element of `array` - * to compute their sort ranking. The iteratee is bound to `thisArg` and - * invoked with one argument; (value). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - * - * _.sortedIndex([4, 4, 5, 5], 5); - * // => 2 - * - * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; - * - * // using an iteratee function - * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { - * return this.data[word]; - * }, dict); - * // => 1 - * - * // using the `_.property` callback shorthand - * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 1 - */ -function sortedIndex(array, value, iteratee, thisArg) { - return iteratee == null - ? binaryIndex(array, value) - : binaryIndexBy(array, value, baseCallback(iteratee, thisArg, 1)); -} - -module.exports = sortedIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js deleted file mode 100644 index 6936d4e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/sortedLastIndex.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - binaryIndex = require('../internal/binaryIndex'), - binaryIndexBy = require('../internal/binaryIndexBy'); - -/** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 4, 5, 5], 5); - * // => 4 - */ -function sortedLastIndex(array, value, iteratee, thisArg) { - return iteratee == null - ? binaryIndex(array, value, true) - : binaryIndexBy(array, value, baseCallback(iteratee, thisArg, 1), true); -} - -module.exports = sortedLastIndex; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js deleted file mode 100644 index c5dfe77..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/tail.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./rest'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js deleted file mode 100644 index 875917a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/take.js +++ /dev/null @@ -1,39 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ -function take(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - return baseSlice(array, 0, n < 0 ? 0 : n); -} - -module.exports = take; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js deleted file mode 100644 index 6e89c87..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRight.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ -function takeRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - n = length - (+n || 0); - return baseSlice(array, n < 0 ? 0 : n); -} - -module.exports = takeRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js deleted file mode 100644 index 57bb0ef..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeRightWhile.js +++ /dev/null @@ -1,63 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseSlice = require('../internal/baseSlice'); - -/** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRightWhile([1, 2, 3], function(n) { - * return n > 1; - * }); - * // => [2, 3] - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); - * // => ['pebbles'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); - * // => ['fred', 'pebbles'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.takeRightWhile(users, 'active'), 'user'); - * // => [] - */ -function takeRightWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - predicate = baseCallback(predicate, thisArg, 3); - while (length-- && predicate(array[length], length, array)) {} - return baseSlice(array, length + 1); -} - -module.exports = takeRightWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js deleted file mode 100644 index 890e34a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/takeWhile.js +++ /dev/null @@ -1,64 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseSlice = require('../internal/baseSlice'); - -/** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is bound to - * `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeWhile([1, 2, 3], function(n) { - * return n < 3; - * }); - * // => [1, 2] - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false}, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.takeWhile(users, 'active', false), 'user'); - * // => ['barney', 'fred'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.takeWhile(users, 'active'), 'user'); - * // => [] - */ -function takeWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - var index = -1; - predicate = baseCallback(predicate, thisArg, 3); - while (++index < length && predicate(array[index], index, array)) {} - return baseSlice(array, 0, index); -} - -module.exports = takeWhile; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js deleted file mode 100644 index bb78dac..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/union.js +++ /dev/null @@ -1,27 +0,0 @@ -var baseFlatten = require('../internal/baseFlatten'), - baseUniq = require('../internal/baseUniq'); - -/** - * Creates an array of unique values, in order, of the provided arrays using - * `SameValueZero` for equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([1, 2], [4, 2], [2, 1]); - * // => [1, 2, 4] - */ -function union() { - return baseUniq(baseFlatten(arguments, false, true, 0)); -} - -module.exports = union; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js deleted file mode 100644 index 6b30328..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/uniq.js +++ /dev/null @@ -1,74 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseUniq = require('../internal/baseUniq'), - isIterateeCall = require('../internal/isIterateeCall'), - sortedUniq = require('../internal/sortedUniq'); - -/** - * Creates a duplicate-value-free version of an array using `SameValueZero` - * for equality comparisons. Providing `true` for `isSorted` performs a faster - * search algorithm for sorted arrays. If an iteratee function is provided it - * is invoked for each value in the array to generate the criterion by which - * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @alias unique - * @category Array - * @param {Array} array The array to inspect. - * @param {boolean} [isSorted] Specify the array is sorted. - * @param {Function|Object|string} [iteratee] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1]); - * // => [1, 2] - * - * // using `isSorted` - * _.uniq([1, 1, 2], true); - * // => [1, 2] - * - * // using an iteratee function - * _.uniq([1, 2.5, 1.5, 2], function(n) { - * return this.floor(n); - * }, Math); - * // => [1, 2.5] - * - * // using the `_.property` callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ -function uniq(array, isSorted, iteratee, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (isSorted != null && typeof isSorted != 'boolean') { - thisArg = iteratee; - iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted; - isSorted = false; - } - iteratee = iteratee == null ? iteratee : baseCallback(iteratee, thisArg, 3); - return (isSorted) - ? sortedUniq(array, iteratee) - : baseUniq(array, iteratee); -} - -module.exports = uniq; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js deleted file mode 100644 index 396de1b..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unique.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./uniq'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js deleted file mode 100644 index f7f8558..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/unzip.js +++ /dev/null @@ -1,37 +0,0 @@ -var arrayMap = require('../internal/arrayMap'), - arrayMax = require('../internal/arrayMax'), - baseProperty = require('../internal/baseProperty'); - -/** Used to the length of n-tuples for `_.unzip`. */ -var getLength = baseProperty('length'); - -/** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-`_.zip` - * configuration. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - * - * _.unzip(zipped); - * // => [['fred', 'barney'], [30, 40], [true, false]] - */ -function unzip(array) { - var index = -1, - length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0, - result = Array(length); - - while (++index < length) { - result[index] = arrayMap(array, baseProperty(index)); - } - return result; -} - -module.exports = unzip; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js deleted file mode 100644 index e74c403..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/without.js +++ /dev/null @@ -1,28 +0,0 @@ -var baseDifference = require('../internal/baseDifference'), - baseSlice = require('../internal/baseSlice'); - -/** - * Creates an array excluding all provided values using `SameValueZero` for - * equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to filter. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.without([1, 2, 1, 3], 1, 2); - * // => [3] - */ -function without(array) { - return baseDifference(array, baseSlice(arguments, 1)); -} - -module.exports = without; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js deleted file mode 100644 index fcdec8e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/xor.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseDifference = require('../internal/baseDifference'), - baseUniq = require('../internal/baseUniq'), - isArguments = require('../lang/isArguments'), - isArray = require('../lang/isArray'); - -/** - * Creates an array that is the symmetric difference of the provided arrays. - * See [Wikipedia](https://en.wikipedia.org/wiki/Symmetric_difference) for - * more details. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of values. - * @example - * - * _.xor([1, 2], [4, 2]); - * // => [1, 4] - */ -function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArray(array) || isArguments(array)) { - var result = result - ? baseDifference(result, array).concat(baseDifference(array, result)) - : array; - } - } - return result ? baseUniq(result) : []; -} - -module.exports = xor; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js deleted file mode 100644 index 039bac0..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zip.js +++ /dev/null @@ -1,28 +0,0 @@ -var unzip = require('./unzip'); - -/** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second elements - * of the given arrays, and so on. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - */ -function zip() { - var length = arguments.length, - array = Array(length); - - while (length--) { - array[length] = arguments[length]; - } - return unzip(array); -} - -module.exports = zip; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js deleted file mode 100644 index bc3f952..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/array/zipObject.js +++ /dev/null @@ -1,39 +0,0 @@ -var isArray = require('../lang/isArray'); - -/** - * Creates an object composed from arrays of property names and values. Provide - * either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]` - * or two arrays, one of property names and one of corresponding values. - * - * @static - * @memberOf _ - * @alias object - * @category Array - * @param {Array} props The property names. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } - */ -function zipObject(props, values) { - var index = -1, - length = props ? props.length : 0, - result = {}; - - if (length && !values && !isArray(props[0])) { - values = []; - } - while (++index < length) { - var key = props[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; - } - } - return result; -} - -module.exports = zipObject; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js deleted file mode 100644 index 7992b73..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = { - 'chain': require('./chain/chain'), - 'commit': require('./chain/commit'), - 'lodash': require('./chain/lodash'), - 'plant': require('./chain/plant'), - 'reverse': require('./chain/reverse'), - 'run': require('./chain/run'), - 'tap': require('./chain/tap'), - 'thru': require('./chain/thru'), - 'toJSON': require('./chain/toJSON'), - 'toString': require('./chain/toString'), - 'value': require('./chain/value'), - 'valueOf': require('./chain/valueOf'), - 'wrapperChain': require('./chain/wrapperChain') -}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js deleted file mode 100644 index 453ba1e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/chain.js +++ /dev/null @@ -1,35 +0,0 @@ -var lodash = require('./lodash'); - -/** - * Creates a `lodash` object that wraps `value` with explicit method - * chaining enabled. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _.chain(users) - * .sortBy('age') - * .map(function(chr) { - * return chr.user + ' is ' + chr.age; - * }) - * .first() - * .value(); - * // => 'pebbles is 1' - */ -function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; -} - -module.exports = chain; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js deleted file mode 100644 index c732d1b..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/commit.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperCommit'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js deleted file mode 100644 index 8ac40ae..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/lodash.js +++ /dev/null @@ -1,122 +0,0 @@ -var LazyWrapper = require('../internal/LazyWrapper'), - LodashWrapper = require('../internal/LodashWrapper'), - baseLodash = require('../internal/baseLodash'), - isArray = require('../lang/isArray'), - isObjectLike = require('../internal/isObjectLike'), - wrapperClone = require('../internal/wrapperClone'); - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates a `lodash` object which wraps `value` to enable implicit chaining. - * Methods that operate on and return arrays, collections, and functions can - * be chained together. Methods that return a boolean or single value will - * automatically end the chain returning the unwrapped value. Explicit chaining - * may be enabled using `_.chain`. The execution of chained methods is lazy, - * that is, execution is deferred until `_#value` is implicitly or explicitly - * called. - * - * Lazy evaluation allows several methods to support shortcut fusion. Shortcut - * fusion is an optimization that merges iteratees to avoid creating intermediate - * arrays and reduce the number of iteratee executions. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, - * `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, - * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, - * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, - * and `where` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, - * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, - * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`, - * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`, - * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`, - * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`, - * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`, - * `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`, `merge`, - * `mixin`, `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`, - * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, - * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`, - * `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, - * `spread`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, - * `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, `transform`, - * `union`, `uniq`, `unshift`, `unzip`, `values`, `valuesIn`, `where`, - * `without`, `wrap`, `xor`, `zip`, and `zipObject` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`, - * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, - * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`, - * `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`, - * `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, - * `isFinite`,`isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, - * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, - * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, - * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, - * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, - * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, - * `startCase`, `startsWith`, `sum`, `template`, `trim`, `trimLeft`, - * `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words` - * - * The wrapper method `sample` will return a wrapped value when `n` is provided, - * otherwise an unwrapped value is returned. - * - * @name _ - * @constructor - * @category Chain - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(sum, n) { - * return sum + n; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(n) { - * return n * n; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ -function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); -} - -// Ensure wrappers are instances of `baseLodash`. -lodash.prototype = baseLodash.prototype; - -module.exports = lodash; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js deleted file mode 100644 index 04099f2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/plant.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperPlant'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js deleted file mode 100644 index f72a64a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/reverse.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperReverse'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js deleted file mode 100644 index 5e751a2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/run.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js deleted file mode 100644 index 3d0257e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/tap.js +++ /dev/null @@ -1,29 +0,0 @@ -/** - * This method invokes `interceptor` and returns `value`. The interceptor is - * bound to `thisArg` and invoked with one argument; (value). The purpose of - * this method is to "tap into" a method chain in order to perform operations - * on intermediate results within the chain. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @param {*} [thisArg] The `this` binding of `interceptor`. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ -function tap(value, interceptor, thisArg) { - interceptor.call(thisArg, value); - return value; -} - -module.exports = tap; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js deleted file mode 100644 index 8ccc996..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/thru.js +++ /dev/null @@ -1,25 +0,0 @@ -/** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @param {*} [thisArg] The `this` binding of `interceptor`. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _([1, 2, 3]) - * .last() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => [3] - */ -function thru(value, interceptor, thisArg) { - return interceptor.call(thisArg, value); -} - -module.exports = thru; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js deleted file mode 100644 index 5e751a2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toJSON.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js deleted file mode 100644 index c7bcbf9..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/toString.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperToString'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js deleted file mode 100644 index 5e751a2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/value.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js deleted file mode 100644 index 5e751a2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/valueOf.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./wrapperValue'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js deleted file mode 100644 index 3823481..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperChain.js +++ /dev/null @@ -1,32 +0,0 @@ -var chain = require('./chain'); - -/** - * Enables explicit method chaining on the wrapper object. - * - * @name chain - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // without explicit chaining - * _(users).first(); - * // => { 'user': 'barney', 'age': 36 } - * - * // with explicit chaining - * _(users).chain() - * .first() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ -function wrapperChain() { - return chain(this); -} - -module.exports = wrapperChain; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js deleted file mode 100644 index c46a787..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperCommit.js +++ /dev/null @@ -1,32 +0,0 @@ -var LodashWrapper = require('../internal/LodashWrapper'); - -/** - * Executes the chained sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapper = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapper = wrapper.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapper.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ -function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); -} - -module.exports = wrapperCommit; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js deleted file mode 100644 index a3de146..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperPlant.js +++ /dev/null @@ -1,45 +0,0 @@ -var baseLodash = require('../internal/baseLodash'), - wrapperClone = require('../internal/wrapperClone'); - -/** - * Creates a clone of the chained sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapper = _(array).map(function(value) { - * return Math.pow(value, 2); - * }); - * - * var other = [3, 4]; - * var otherWrapper = wrapper.plant(other); - * - * otherWrapper.value(); - * // => [9, 16] - * - * wrapper.value(); - * // => [1, 4] - */ -function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; -} - -module.exports = wrapperPlant; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js deleted file mode 100644 index 4518b3e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperReverse.js +++ /dev/null @@ -1,38 +0,0 @@ -var LazyWrapper = require('../internal/LazyWrapper'), - LodashWrapper = require('../internal/LodashWrapper'), - thru = require('./thru'); - -/** - * Reverses the wrapped array so the first element becomes the last, the - * second element becomes the second to last, and so on. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new reversed `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ -function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - if (this.__actions__.length) { - value = new LazyWrapper(this); - } - return new LodashWrapper(value.reverse(), this.__chain__); - } - return this.thru(function(value) { - return value.reverse(); - }); -} - -module.exports = wrapperReverse; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js deleted file mode 100644 index db975a5..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperToString.js +++ /dev/null @@ -1,17 +0,0 @@ -/** - * Produces the result of coercing the unwrapped value to a string. - * - * @name toString - * @memberOf _ - * @category Chain - * @returns {string} Returns the coerced string value. - * @example - * - * _([1, 2, 3]).toString(); - * // => '1,2,3' - */ -function wrapperToString() { - return (this.value() + ''); -} - -module.exports = wrapperToString; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js deleted file mode 100644 index 2734e41..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/chain/wrapperValue.js +++ /dev/null @@ -1,20 +0,0 @@ -var baseWrapperValue = require('../internal/baseWrapperValue'); - -/** - * Executes the chained sequence to extract the unwrapped value. - * - * @name value - * @memberOf _ - * @alias run, toJSON, valueOf - * @category Chain - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ -function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); -} - -module.exports = wrapperValue; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js deleted file mode 100644 index 0338857..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection.js +++ /dev/null @@ -1,44 +0,0 @@ -module.exports = { - 'all': require('./collection/all'), - 'any': require('./collection/any'), - 'at': require('./collection/at'), - 'collect': require('./collection/collect'), - 'contains': require('./collection/contains'), - 'countBy': require('./collection/countBy'), - 'detect': require('./collection/detect'), - 'each': require('./collection/each'), - 'eachRight': require('./collection/eachRight'), - 'every': require('./collection/every'), - 'filter': require('./collection/filter'), - 'find': require('./collection/find'), - 'findLast': require('./collection/findLast'), - 'findWhere': require('./collection/findWhere'), - 'foldl': require('./collection/foldl'), - 'foldr': require('./collection/foldr'), - 'forEach': require('./collection/forEach'), - 'forEachRight': require('./collection/forEachRight'), - 'groupBy': require('./collection/groupBy'), - 'include': require('./collection/include'), - 'includes': require('./collection/includes'), - 'indexBy': require('./collection/indexBy'), - 'inject': require('./collection/inject'), - 'invoke': require('./collection/invoke'), - 'map': require('./collection/map'), - 'max': require('./math/max'), - 'min': require('./math/min'), - 'partition': require('./collection/partition'), - 'pluck': require('./collection/pluck'), - 'reduce': require('./collection/reduce'), - 'reduceRight': require('./collection/reduceRight'), - 'reject': require('./collection/reject'), - 'sample': require('./collection/sample'), - 'select': require('./collection/select'), - 'shuffle': require('./collection/shuffle'), - 'size': require('./collection/size'), - 'some': require('./collection/some'), - 'sortBy': require('./collection/sortBy'), - 'sortByAll': require('./collection/sortByAll'), - 'sortByOrder': require('./collection/sortByOrder'), - 'sum': require('./math/sum'), - 'where': require('./collection/where') -}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js deleted file mode 100644 index d0839f7..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/all.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./every'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js deleted file mode 100644 index 900ac25..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/any.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./some'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js deleted file mode 100644 index 48a714f..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/at.js +++ /dev/null @@ -1,34 +0,0 @@ -var baseAt = require('../internal/baseAt'), - baseFlatten = require('../internal/baseFlatten'), - isLength = require('../internal/isLength'), - toIterable = require('../internal/toIterable'); - -/** - * Creates an array of elements corresponding to the given keys, or indexes, - * of `collection`. Keys may be specified as individual arguments or as arrays - * of keys. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [props] The property names - * or indexes of elements to pick, specified individually or in arrays. - * @returns {Array} Returns the new array of picked elements. - * @example - * - * _.at(['a', 'b', 'c'], [0, 2]); - * // => ['a', 'c'] - * - * _.at(['fred', 'barney', 'pebbles'], 0, 2); - * // => ['fred', 'pebbles'] - */ -function at(collection) { - var length = collection ? collection.length : 0; - if (isLength(length)) { - collection = toIterable(collection); - } - return baseAt(collection, baseFlatten(arguments, false, false, 1)); -} - -module.exports = at; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js deleted file mode 100644 index 0d1e1ab..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/collect.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./map'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js deleted file mode 100644 index 594722a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/contains.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./includes'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js deleted file mode 100644 index 7702d7b..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/countBy.js +++ /dev/null @@ -1,54 +0,0 @@ -var createAggregator = require('../internal/createAggregator'); - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is the number of times the key was returned by `iteratee`. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(n) { - * return Math.floor(n); - * }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(n) { - * return this.floor(n); - * }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ -var countBy = createAggregator(function(result, value, key) { - hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); -}); - -module.exports = countBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js deleted file mode 100644 index 2fb6303..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/detect.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./find'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js deleted file mode 100644 index 8800f42..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/each.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEach'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js deleted file mode 100644 index 3252b2a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/eachRight.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./forEachRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js deleted file mode 100644 index 276afb3..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/every.js +++ /dev/null @@ -1,62 +0,0 @@ -var arrayEvery = require('../internal/arrayEvery'), - baseCallback = require('../internal/baseCallback'), - baseEvery = require('../internal/baseEvery'), - isArray = require('../lang/isArray'); - -/** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * The predicate is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // using the `_.matchesProperty` callback shorthand - * _.every(users, 'active', false); - * // => true - * - * // using the `_.property` callback shorthand - * _.every(users, 'active'); - * // => false - */ -function every(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (typeof predicate != 'function' || typeof thisArg != 'undefined') { - predicate = baseCallback(predicate, thisArg, 3); - } - return func(collection, predicate); -} - -module.exports = every; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js deleted file mode 100644 index 673ae22..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/filter.js +++ /dev/null @@ -1,61 +0,0 @@ -var arrayFilter = require('../internal/arrayFilter'), - baseCallback = require('../internal/baseCallback'), - baseFilter = require('../internal/baseFilter'), - isArray = require('../lang/isArray'); - -/** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new filtered array. - * @example - * - * _.filter([4, 5, 6], function(n) { - * return n % 2 == 0; - * }); - * // => [4, 6] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.filter(users, 'active', false), 'user'); - * // => ['fred'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.filter(users, 'active'), 'user'); - * // => ['barney'] - */ -function filter(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayFilter : baseFilter; - predicate = baseCallback(predicate, thisArg, 3); - return func(collection, predicate); -} - -module.exports = filter; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js deleted file mode 100644 index 8e687d8..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/find.js +++ /dev/null @@ -1,66 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseEach = require('../internal/baseEach'), - baseFind = require('../internal/baseFind'), - findIndex = require('../array/findIndex'), - isArray = require('../lang/isArray'); - -/** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias detect - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.result(_.find(users, function(chr) { - * return chr.age < 40; - * }), 'user'); - * // => 'barney' - * - * // using the `_.matches` callback shorthand - * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); - * // => 'pebbles' - * - * // using the `_.matchesProperty` callback shorthand - * _.result(_.find(users, 'active', false), 'user'); - * // => 'fred' - * - * // using the `_.property` callback shorthand - * _.result(_.find(users, 'active'), 'user'); - * // => 'barney' - */ -function find(collection, predicate, thisArg) { - if (isArray(collection)) { - var index = findIndex(collection, predicate, thisArg); - return index > -1 ? collection[index] : undefined; - } - predicate = baseCallback(predicate, thisArg, 3); - return baseFind(collection, predicate, baseEach); -} - -module.exports = find; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js deleted file mode 100644 index f66f6cc..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findLast.js +++ /dev/null @@ -1,29 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseEachRight = require('../internal/baseEachRight'), - baseFind = require('../internal/baseFind'); - -/** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ -function findLast(collection, predicate, thisArg) { - predicate = baseCallback(predicate, thisArg, 3); - return baseFind(collection, predicate, baseEachRight); -} - -module.exports = findLast; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js deleted file mode 100644 index 2d62065..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/findWhere.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseMatches = require('../internal/baseMatches'), - find = require('./find'); - -/** - * Performs a deep comparison between each element in `collection` and the - * source object, returning the first element that has equivalent property - * values. - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. For comparing a single - * own or inherited property value see `_.matchesProperty`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Object} source The object of property values to match. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); - * // => 'barney' - * - * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); - * // => 'fred' - */ -function findWhere(collection, source) { - return find(collection, baseMatches(source)); -} - -module.exports = findWhere; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js deleted file mode 100644 index 26f53cf..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldl.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./reduce'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js deleted file mode 100644 index 8fb199e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/foldr.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./reduceRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js deleted file mode 100644 index 38cf796..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEach.js +++ /dev/null @@ -1,42 +0,0 @@ -var arrayEach = require('../internal/arrayEach'), - baseEach = require('../internal/baseEach'), - bindCallback = require('../internal/bindCallback'), - isArray = require('../lang/isArray'); - -/** - * Iterates over elements of `collection` invoking `iteratee` for each element. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). Iterator functions may exit iteration early - * by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a `length` property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2]).forEach(function(n) { - * console.log(n); - * }).value(); - * // => logs each value from left to right and returns the array - * - * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { - * console.log(n, key); - * }); - * // => logs each value-key pair and returns the object (iteration order is not guaranteed) - */ -function forEach(collection, iteratee, thisArg) { - return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) - ? arrayEach(collection, iteratee) - : baseEach(collection, bindCallback(iteratee, thisArg, 3)); -} - -module.exports = forEach; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js deleted file mode 100644 index 56bb8ff..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/forEachRight.js +++ /dev/null @@ -1,31 +0,0 @@ -var arrayEachRight = require('../internal/arrayEachRight'), - baseEachRight = require('../internal/baseEachRight'), - bindCallback = require('../internal/bindCallback'), - isArray = require('../lang/isArray'); - -/** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias eachRight - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2]).forEachRight(function(n) { - * console.log(n); - * }).join(','); - * // => logs each value from right to left and returns the array - */ -function forEachRight(collection, iteratee, thisArg) { - return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) - ? arrayEachRight(collection, iteratee) - : baseEachRight(collection, bindCallback(iteratee, thisArg, 3)); -} - -module.exports = forEachRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js deleted file mode 100644 index f2578b3..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/groupBy.js +++ /dev/null @@ -1,59 +0,0 @@ -var createAggregator = require('../internal/createAggregator'); - -/** Used for native method references. */ -var objectProto = Object.prototype; - -/** Used to check objects for own properties. */ -var hasOwnProperty = objectProto.hasOwnProperty; - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(n) { - * return Math.floor(n); - * }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(n) { - * return this.floor(n); - * }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using the `_.property` callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ -var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - result[key] = [value]; - } -}); - -module.exports = groupBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js deleted file mode 100644 index 594722a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/include.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./includes'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js deleted file mode 100644 index a383fab..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/includes.js +++ /dev/null @@ -1,61 +0,0 @@ -var baseIndexOf = require('../internal/baseIndexOf'), - isArray = require('../lang/isArray'), - isLength = require('../internal/isLength'), - isString = require('../lang/isString'), - values = require('../object/values'); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Checks if `value` is in `collection` using `SameValueZero` for equality - * comparisons. If `fromIndex` is negative, it is used as the offset from - * the end of `collection`. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @alias contains, include - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {*} target The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {boolean} Returns `true` if a matching element is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.includes('pebbles', 'eb'); - * // => true - */ -function includes(collection, target, fromIndex) { - var length = collection ? collection.length : 0; - if (!isLength(length)) { - collection = values(collection); - length = collection.length; - } - if (!length) { - return false; - } - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); - } else { - fromIndex = 0; - } - return (typeof collection == 'string' || !isArray(collection) && isString(collection)) - ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) - : (baseIndexOf(collection, target, fromIndex) > -1); -} - -module.exports = includes; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js deleted file mode 100644 index 0cc42d5..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/indexBy.js +++ /dev/null @@ -1,53 +0,0 @@ -var createAggregator = require('../internal/createAggregator'); - -/** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is the last element responsible for generating the key. The - * iteratee function is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keyData = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keyData, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keyData, function(object) { - * return String.fromCharCode(object.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keyData, function(object) { - * return this.fromCharCode(object.code); - * }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - */ -var indexBy = createAggregator(function(result, value, key) { - result[key] = value; -}); - -module.exports = indexBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js deleted file mode 100644 index 26f53cf..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/inject.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./reduce'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js deleted file mode 100644 index c305a04..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/invoke.js +++ /dev/null @@ -1,30 +0,0 @@ -var baseInvoke = require('../internal/baseInvoke'), - baseSlice = require('../internal/baseSlice'); - -/** - * Invokes the method named by `methodName` on each element in `collection`, - * returning an array of the results of each invoked method. Any additional - * arguments are provided to each invoked method. If `methodName` is a function - * it is invoked for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ -function invoke(collection, methodName) { - return baseInvoke(collection, methodName, baseSlice(arguments, 2)); -} - -module.exports = invoke; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js deleted file mode 100644 index f918be6..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/map.js +++ /dev/null @@ -1,68 +0,0 @@ -var arrayMap = require('../internal/arrayMap'), - baseCallback = require('../internal/baseCallback'), - baseMap = require('../internal/baseMap'), - isArray = require('../lang/isArray'); - -/** - * Creates an array of values by running each element in `collection` through - * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * Many lodash methods are guarded to work as interatees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`, - * `dropRight`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, `slice`, - * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, `trimRight`, - * `trunc`, `random`, `range`, `sample`, `uniq`, and `words` - * - * @static - * @memberOf _ - * @alias collect - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * create a `_.property` or `_.matches` style callback respectively. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new mapped array. - * @example - * - * function timesThree(n) { - * return n * 3; - * } - * - * _.map([1, 2], timesThree); - * // => [3, 6] - * - * _.map({ 'a': 1, 'b': 2 }, timesThree); - * // => [3, 6] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // using the `_.property` callback shorthand - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ -function map(collection, iteratee, thisArg) { - var func = isArray(collection) ? arrayMap : baseMap; - iteratee = baseCallback(iteratee, thisArg, 3); - return func(collection, iteratee); -} - -module.exports = map; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js deleted file mode 100644 index bb1d213..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/max.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../math/max'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js deleted file mode 100644 index eef13d0..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/min.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../math/min'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js deleted file mode 100644 index 4a5bdbe..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/partition.js +++ /dev/null @@ -1,66 +0,0 @@ -var createAggregator = require('../internal/createAggregator'); - -/** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, while the second of which - * contains elements `predicate` returns falsey for. The predicate is bound - * to `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * _.partition([1, 2, 3], function(n) { - * return n % 2; - * }); - * // => [[1, 3], [2]] - * - * _.partition([1.2, 2.3, 3.4], function(n) { - * return this.floor(n) % 2; - * }, Math); - * // => [[1.2, 3.4], [2.3]] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * var mapper = function(array) { - * return _.pluck(array, 'user'); - * }; - * - * // using the `_.matches` callback shorthand - * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); - * // => [['pebbles'], ['barney', 'fred']] - * - * // using the `_.matchesProperty` callback shorthand - * _.map(_.partition(users, 'active', false), mapper); - * // => [['barney', 'pebbles'], ['fred']] - * - * // using the `_.property` callback shorthand - * _.map(_.partition(users, 'active'), mapper); - * // => [['fred'], ['barney', 'pebbles']] - */ -var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); -}, function() { return [[], []]; }); - -module.exports = partition; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js deleted file mode 100644 index af85d5a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/pluck.js +++ /dev/null @@ -1,31 +0,0 @@ -var baseProperty = require('../internal/baseProperty'), - map = require('./map'); - -/** - * Gets the value of `key` from all elements in `collection`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string} key The key of the property to pluck. - * @returns {Array} Returns the property values. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * _.pluck(users, 'user'); - * // => ['barney', 'fred'] - * - * var userIndex = _.indexBy(users, 'user'); - * _.pluck(userIndex, 'age'); - * // => [36, 40] (iteration order is not guaranteed) - */ -function pluck(collection, key) { - return map(collection, baseProperty(key)); -} - -module.exports = pluck; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js deleted file mode 100644 index f02fd9c..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduce.js +++ /dev/null @@ -1,48 +0,0 @@ -var arrayReduce = require('../internal/arrayReduce'), - baseCallback = require('../internal/baseCallback'), - baseEach = require('../internal/baseEach'), - baseReduce = require('../internal/baseReduce'), - isArray = require('../lang/isArray'); - -/** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` through `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not provided the first element of `collection` is used as the initial - * value. The `iteratee` is bound to `thisArg`and invoked with four arguments; - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as interatees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `merge`, and `sortAllBy` - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { - * result[key] = n * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) - */ -function reduce(collection, iteratee, accumulator, thisArg) { - var func = isArray(collection) ? arrayReduce : baseReduce; - return func(collection, baseCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEach); -} - -module.exports = reduce; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js deleted file mode 100644 index d517632..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reduceRight.js +++ /dev/null @@ -1,34 +0,0 @@ -var arrayReduceRight = require('../internal/arrayReduceRight'), - baseCallback = require('../internal/baseCallback'), - baseEachRight = require('../internal/baseEachRight'), - baseReduce = require('../internal/baseReduce'), - isArray = require('../lang/isArray'); - -/** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ -function reduceRight(collection, iteratee, accumulator, thisArg) { - var func = isArray(collection) ? arrayReduceRight : baseReduce; - return func(collection, baseCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEachRight); -} - -module.exports = reduceRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js deleted file mode 100644 index e783fc7..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/reject.js +++ /dev/null @@ -1,61 +0,0 @@ -var arrayFilter = require('../internal/arrayFilter'), - baseCallback = require('../internal/baseCallback'), - baseFilter = require('../internal/baseFilter'), - isArray = require('../lang/isArray'); - -/** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new filtered array. - * @example - * - * _.reject([1, 2, 3, 4], function(n) { - * return n % 2 == 0; - * }); - * // => [1, 3] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.reject(users, 'active', false), 'user'); - * // => ['fred'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.reject(users, 'active'), 'user'); - * // => ['barney'] - */ -function reject(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayFilter : baseFilter; - predicate = baseCallback(predicate, thisArg, 3); - return func(collection, function(value, index, collection) { - return !predicate(value, index, collection); - }); -} - -module.exports = reject; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js deleted file mode 100644 index f090db1..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sample.js +++ /dev/null @@ -1,38 +0,0 @@ -var baseRandom = require('../internal/baseRandom'), - isIterateeCall = require('../internal/isIterateeCall'), - shuffle = require('./shuffle'), - toIterable = require('../internal/toIterable'); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMin = Math.min; - -/** - * Gets a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {*} Returns the random sample(s). - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] - */ -function sample(collection, n, guard) { - if (guard ? isIterateeCall(collection, n, guard) : n == null) { - collection = toIterable(collection); - var length = collection.length; - return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; - } - var result = shuffle(collection); - result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); - return result; -} - -module.exports = sample; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js deleted file mode 100644 index ade80f6..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/select.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./filter'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js deleted file mode 100644 index 7548c1a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/shuffle.js +++ /dev/null @@ -1,36 +0,0 @@ -var baseRandom = require('../internal/baseRandom'), - toIterable = require('../internal/toIterable'); - -/** - * Creates an array of shuffled values, using a version of the Fisher-Yates - * shuffle. See [Wikipedia](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle) - * for more details. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ -function shuffle(collection) { - collection = toIterable(collection); - - var index = -1, - length = collection.length, - result = Array(length); - - while (++index < length) { - var rand = baseRandom(0, index); - if (index != rand) { - result[index] = result[rand]; - } - result[rand] = collection[index]; - } - return result; -} - -module.exports = shuffle; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js deleted file mode 100644 index 2db4bcf..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/size.js +++ /dev/null @@ -1,29 +0,0 @@ -var isLength = require('../internal/isLength'), - keys = require('../object/keys'); - -/** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the size of `collection`. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ -function size(collection) { - var length = collection ? collection.length : 0; - return isLength(length) ? length : keys(collection).length; -} - -module.exports = size; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js deleted file mode 100644 index e256773..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/some.js +++ /dev/null @@ -1,63 +0,0 @@ -var arraySome = require('../internal/arraySome'), - baseCallback = require('../internal/baseCallback'), - baseSome = require('../internal/baseSome'), - isArray = require('../lang/isArray'); - -/** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * The function returns as soon as it finds a passing value and does not iterate - * over the entire collection. The predicate is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // using the `_.matchesProperty` callback shorthand - * _.some(users, 'active', false); - * // => true - * - * // using the `_.property` callback shorthand - * _.some(users, 'active'); - * // => true - */ -function some(collection, predicate, thisArg) { - var func = isArray(collection) ? arraySome : baseSome; - if (typeof predicate != 'function' || typeof thisArg != 'undefined') { - predicate = baseCallback(predicate, thisArg, 3); - } - return func(collection, predicate); -} - -module.exports = some; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js deleted file mode 100644 index b0f68ba..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortBy.js +++ /dev/null @@ -1,75 +0,0 @@ -var baseCallback = require('../internal/baseCallback'), - baseEach = require('../internal/baseEach'), - baseSortBy = require('../internal/baseSortBy'), - compareAscending = require('../internal/compareAscending'), - isIterateeCall = require('../internal/isIterateeCall'), - isLength = require('../internal/isLength'); - -/** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through `iteratee`. This method performs - * a stable sort, that is, it preserves the original sort order of equal elements. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|Object|string} [iteratee=_.identity] The function - * invoked per iteration. If a property name or an object is provided it is - * used to create a `_.property` or `_.matches` style callback respectively. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new sorted array. - * @example - * - * _.sortBy([1, 2, 3], function(n) { - * return Math.sin(n); - * }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(n) { - * return this.sin(n); - * }, Math); - * // => [3, 1, 2] - * - * var users = [ - * { 'user': 'fred' }, - * { 'user': 'pebbles' }, - * { 'user': 'barney' } - * ]; - * - * // using the `_.property` callback shorthand - * _.pluck(_.sortBy(users, 'user'), 'user'); - * // => ['barney', 'fred', 'pebbles'] - */ -function sortBy(collection, iteratee, thisArg) { - if (collection == null) { - return []; - } - var index = -1, - length = collection.length, - result = isLength(length) ? Array(length) : []; - - if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { - iteratee = null; - } - iteratee = baseCallback(iteratee, thisArg, 3); - baseEach(collection, function(value, key, collection) { - result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value }; - }); - return baseSortBy(result, compareAscending); -} - -module.exports = sortBy; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js deleted file mode 100644 index 9433989..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByAll.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseFlatten = require('../internal/baseFlatten'), - baseSortByOrder = require('../internal/baseSortByOrder'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * This method is like `_.sortBy` except that it sorts by property names - * instead of an iteratee function. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(string|string[])} props The property names to sort by, - * specified as individual property names or arrays of property names. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 26 }, - * { 'user': 'fred', 'age': 30 } - * ]; - * - * _.map(_.sortByAll(users, ['user', 'age']), _.values); - * // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] - */ -function sortByAll(collection) { - if (collection == null) { - return []; - } - var args = arguments, - guard = args[3]; - - if (guard && isIterateeCall(args[1], args[2], guard)) { - args = [collection, args[1]]; - } - return baseSortByOrder(collection, baseFlatten(args, false, false, 1), []); -} - -module.exports = sortByAll; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js deleted file mode 100644 index 4528e6d..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sortByOrder.js +++ /dev/null @@ -1,48 +0,0 @@ -var baseSortByOrder = require('../internal/baseSortByOrder'), - isArray = require('../lang/isArray'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** - * This method is like `_.sortByAll` except that it allows specifying the - * sort orders of the property names to sort by. A truthy value in `orders` - * will sort the corresponding property name in ascending order while a - * falsey value will sort it in descending order. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string[]} props The property names to sort by. - * @param {boolean[]} orders The sort orders of `props`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 26 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 } - * ]; - * - * // sort by `user` in ascending order and by `age` in descending order - * _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values); - * // => [['barney', 36], ['barney', 26], ['fred', 40], ['fred', 30]] - */ -function sortByOrder(collection, props, orders, guard) { - if (collection == null) { - return []; - } - if (guard && isIterateeCall(props, orders, guard)) { - orders = null; - } - if (!isArray(props)) { - props = props == null ? [] : [props]; - } - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseSortByOrder(collection, props, orders); -} - -module.exports = sortByOrder; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js deleted file mode 100644 index a2e9380..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/sum.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('../math/sum'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js deleted file mode 100644 index f603bf8..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/collection/where.js +++ /dev/null @@ -1,37 +0,0 @@ -var baseMatches = require('../internal/baseMatches'), - filter = require('./filter'); - -/** - * Performs a deep comparison between each element in `collection` and the - * source object, returning an array of all elements that have equivalent - * property values. - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. For comparing a single - * own or inherited property value see `_.matchesProperty`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Object} source The object of property values to match. - * @returns {Array} Returns the new filtered array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, - * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } - * ]; - * - * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); - * // => ['barney'] - * - * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); - * // => ['fred'] - */ -function where(collection, source) { - return filter(collection, baseMatches(source)); -} - -module.exports = where; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js deleted file mode 100644 index 195366e..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - 'now': require('./date/now') -}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js deleted file mode 100644 index 628225d..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/date/now.js +++ /dev/null @@ -1,24 +0,0 @@ -var isNative = require('../lang/isNative'); - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeNow = isNative(nativeNow = Date.now) && nativeNow; - -/** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Date - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => logs the number of milliseconds it took for the deferred function to be invoked - */ -var now = nativeNow || function() { - return new Date().getTime(); -}; - -module.exports = now; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js deleted file mode 100644 index 33ccefc..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function.js +++ /dev/null @@ -1,26 +0,0 @@ -module.exports = { - 'after': require('./function/after'), - 'ary': require('./function/ary'), - 'backflow': require('./function/backflow'), - 'before': require('./function/before'), - 'bind': require('./function/bind'), - 'bindAll': require('./function/bindAll'), - 'bindKey': require('./function/bindKey'), - 'compose': require('./function/compose'), - 'curry': require('./function/curry'), - 'curryRight': require('./function/curryRight'), - 'debounce': require('./function/debounce'), - 'defer': require('./function/defer'), - 'delay': require('./function/delay'), - 'flow': require('./function/flow'), - 'flowRight': require('./function/flowRight'), - 'memoize': require('./function/memoize'), - 'negate': require('./function/negate'), - 'once': require('./function/once'), - 'partial': require('./function/partial'), - 'partialRight': require('./function/partialRight'), - 'rearg': require('./function/rearg'), - 'spread': require('./function/spread'), - 'throttle': require('./function/throttle'), - 'wrap': require('./function/wrap') -}; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js deleted file mode 100644 index e6a5de4..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/after.js +++ /dev/null @@ -1,48 +0,0 @@ -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeIsFinite = global.isFinite; - -/** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it is called `n` or more times. - * - * @static - * @memberOf _ - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'done saving!' after the two async saves have completed - */ -function after(n, func) { - if (typeof func != 'function') { - if (typeof n == 'function') { - var temp = n; - n = func; - func = temp; - } else { - throw new TypeError(FUNC_ERROR_TEXT); - } - } - n = nativeIsFinite(n = +n) ? n : 0; - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; -} - -module.exports = after; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js deleted file mode 100644 index 9604c1b..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/ary.js +++ /dev/null @@ -1,34 +0,0 @@ -var createWrapper = require('../internal/createWrapper'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** Used to compose bitmasks for wrapper metadata. */ -var ARY_FLAG = 256; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates a function that accepts up to `n` arguments ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ -function ary(func, n, guard) { - if (guard && isIterateeCall(func, n, guard)) { - n = null; - } - n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); - return createWrapper(func, ARY_FLAG, null, null, null, null, n); -} - -module.exports = ary; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js deleted file mode 100644 index 1954e94..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/backflow.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flowRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js deleted file mode 100644 index 0ae3f97..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/before.js +++ /dev/null @@ -1,41 +0,0 @@ -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it is called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery('#add').on('click', _.before(5, addContactToList)); - * // => allows adding up to 4 contacts to the list - */ -function before(n, func) { - var result; - if (typeof func != 'function') { - if (typeof n == 'function') { - var temp = n; - n = func; - func = temp; - } else { - throw new TypeError(FUNC_ERROR_TEXT); - } - } - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } else { - func = null; - } - return result; - }; -} - -module.exports = before; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js deleted file mode 100644 index 155df05..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bind.js +++ /dev/null @@ -1,58 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - createWrapper = require('../internal/createWrapper'), - replaceHolders = require('../internal/replaceHolders'); - -/** Used to compose bitmasks for wrapper metadata. */ -var BIND_FLAG = 1, - PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and prepends any additional `_.bind` arguments to those provided to the - * bound function. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind` this method does not set the `length` - * property of bound functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var greet = function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * }; - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // using placeholders - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ -function bind(func, thisArg) { - var bitmask = BIND_FLAG; - if (arguments.length > 2) { - var partials = baseSlice(arguments, 2), - holders = replaceHolders(partials, bind.placeholder); - - bitmask |= PARTIAL_FLAG; - } - return createWrapper(func, bitmask, thisArg, partials, holders); -} - -// Assign default placeholders. -bind.placeholder = {}; - -module.exports = bind; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js deleted file mode 100644 index 82db5dc..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindAll.js +++ /dev/null @@ -1,41 +0,0 @@ -var baseBindAll = require('../internal/baseBindAll'), - baseFlatten = require('../internal/baseFlatten'), - functions = require('../object/functions'); - -/** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all enumerable function - * properties, own and inherited, of `object` are bound. - * - * **Note:** This method does not set the `length` property of bound functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...(string|string[])} [methodNames] The object method names to bind, - * specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs' when the element is clicked - */ -function bindAll(object) { - return baseBindAll(object, - arguments.length > 1 - ? baseFlatten(arguments, false, false, 1) - : functions(object) - ); -} - -module.exports = bindAll; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js deleted file mode 100644 index 8098d16..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/bindKey.js +++ /dev/null @@ -1,68 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - createWrapper = require('../internal/createWrapper'), - replaceHolders = require('../internal/replaceHolders'); - -/** Used to compose bitmasks for wrapper metadata. */ -var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes the method at `object[key]` and prepends - * any additional `_.bindKey` arguments to those provided to the bound function. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. - * See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // using placeholders - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ -function bindKey(object, key) { - var bitmask = BIND_FLAG | BIND_KEY_FLAG; - if (arguments.length > 2) { - var partials = baseSlice(arguments, 2), - holders = replaceHolders(partials, bindKey.placeholder); - - bitmask |= PARTIAL_FLAG; - } - return createWrapper(key, bitmask, object, partials, holders); -} - -// Assign default placeholders. -bindKey.placeholder = {}; - -module.exports = bindKey; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js deleted file mode 100644 index 1954e94..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/compose.js +++ /dev/null @@ -1 +0,0 @@ -module.exports = require('./flowRight'); diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js deleted file mode 100644 index 5f7afaf..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curry.js +++ /dev/null @@ -1,59 +0,0 @@ -var createWrapper = require('../internal/createWrapper'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** Used to compose bitmasks for wrapper metadata. */ -var CURRY_FLAG = 8; - -/** - * Creates a function that accepts one or more arguments of `func` that when - * called either invokes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` may be specified - * if `func.length` is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method does not set the `length` property of curried functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // using placeholders - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ -function curry(func, arity, guard) { - if (guard && isIterateeCall(func, arity, guard)) { - arity = null; - } - var result = createWrapper(func, CURRY_FLAG, null, null, null, null, null, arity); - result.placeholder = curry.placeholder; - return result; -} - -// Assign default placeholders. -curry.placeholder = {}; - -module.exports = curry; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js deleted file mode 100644 index c36ab21..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/curryRight.js +++ /dev/null @@ -1,56 +0,0 @@ -var createWrapper = require('../internal/createWrapper'), - isIterateeCall = require('../internal/isIterateeCall'); - -/** Used to compose bitmasks for wrapper metadata. */ -var CURRY_RIGHT_FLAG = 16; - -/** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method does not set the `length` property of curried functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // using placeholders - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ -function curryRight(func, arity, guard) { - if (guard && isIterateeCall(func, arity, guard)) { - arity = null; - } - var result = createWrapper(func, CURRY_RIGHT_FLAG, null, null, null, null, null, arity); - result.placeholder = curryRight.placeholder; - return result; -} - -// Assign default placeholders. -curryRight.placeholder = {}; - -module.exports = curryRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js deleted file mode 100644 index 5fdf7fc..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/debounce.js +++ /dev/null @@ -1,186 +0,0 @@ -var isObject = require('../lang/isObject'), - now = require('../date/now'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/* Native method references for those with the same name as other `lodash` methods. */ -var nativeMax = Math.max; - -/** - * Creates a function that delays invoking `func` until after `wait` milliseconds - * have elapsed since the last time it was invoked. The created function comes - * with a `cancel` method to cancel delayed invocations. Provide an options - * object to indicate that `func` should be invoked on the leading and/or - * trailing edge of the `wait` timeout. Subsequent calls to the debounced - * function return the result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify invoking on the leading - * edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be - * delayed before it is invoked. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // invoke `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // ensure `batchLog` is invoked once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * jQuery(source).on('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * })); - * - * // cancel a debounced call - * var todoChanges = _.debounce(batchLog, 1000); - * Object.observe(models.todo, todoChanges); - * - * Object.observe(models, function(changes) { - * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { - * todoChanges.cancel(); - * } - * }, ['delete']); - * - * // ...at some point `models.todo` is changed - * models.todo.completed = true; - * - * // ...before 1 second has passed `models.todo` is deleted - * // which cancels the debounced `todoChanges` call - * delete models.todo; - */ -function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = wait < 0 ? 0 : (+wait || 0); - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = options.leading; - maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); - trailing = 'trailing' in options ? options.trailing : trailing; - } - - function cancel() { - if (timeoutId) { - clearTimeout(timeoutId); - } - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - } - - function delayed() { - var remaining = wait - (now() - stamp); - if (remaining <= 0 || remaining > wait) { - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - var isCalled = trailingCall; - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } else { - timeoutId = setTimeout(delayed, remaining); - } - } - - function maxDelayed() { - if (timeoutId) { - clearTimeout(timeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (trailing || (maxWait !== wait)) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } - - function debounced() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0 || remaining > maxWait; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - return result; - } - debounced.cancel = cancel; - return debounced; -} - -module.exports = debounce; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js deleted file mode 100644 index ed31c24..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/defer.js +++ /dev/null @@ -1,24 +0,0 @@ -var baseDelay = require('../internal/baseDelay'); - -/** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // logs 'deferred' after one or more milliseconds - */ -function defer(func) { - return baseDelay(func, 1, arguments, 1); -} - -module.exports = defer; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js deleted file mode 100644 index 889e577..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/delay.js +++ /dev/null @@ -1,25 +0,0 @@ -var baseDelay = require('../internal/baseDelay'); - -/** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => logs 'later' after one second - */ -function delay(func, wait) { - return baseDelay(func, wait, arguments, 2); -} - -module.exports = delay; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js deleted file mode 100644 index da946f2..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flow.js +++ /dev/null @@ -1,25 +0,0 @@ -var createComposer = require('../internal/createComposer'); - -/** - * Creates a function that returns the result of invoking the provided - * functions with the `this` binding of the created function, where each - * successive invocation is supplied the return value of the previous. - * - * @static - * @memberOf _ - * @category Function - * @param {...Function} [funcs] Functions to invoke. - * @returns {Function} Returns the new function. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flow(_.add, square); - * addSquare(1, 2); - * // => 9 - */ -var flow = createComposer(); - -module.exports = flow; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js deleted file mode 100644 index f7981b3..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/flowRight.js +++ /dev/null @@ -1,25 +0,0 @@ -var createComposer = require('../internal/createComposer'); - -/** - * This method is like `_.flow` except that it creates a function that - * invokes the provided functions from right to left. - * - * @static - * @memberOf _ - * @alias backflow, compose - * @category Function - * @param {...Function} [funcs] Functions to invoke. - * @returns {Function} Returns the new function. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flowRight(square, _.add); - * addSquare(1, 2); - * // => 9 - */ -var flowRight = createComposer(true); - -module.exports = flowRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js deleted file mode 100644 index f80f4a9..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/memoize.js +++ /dev/null @@ -1,82 +0,0 @@ -var MapCache = require('../internal/MapCache'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is coerced to a string and used as the - * cache key. The `func` is invoked with the `this` binding of the memoized - * function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the ES `Map` method interface - * of `get`, `has`, and `set`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object) - * for more details. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var upperCase = _.memoize(function(string) { - * return string.toUpperCase(); - * }); - * - * upperCase('fred'); - * // => 'FRED' - * - * // modifying the result cache - * upperCase.cache.set('fred', 'BARNEY'); - * upperCase('fred'); - * // => 'BARNEY' - * - * // replacing `_.memoize.Cache` - * var object = { 'user': 'fred' }; - * var other = { 'user': 'barney' }; - * var identity = _.memoize(_.identity); - * - * identity(object); - * // => { 'user': 'fred' } - * identity(other); - * // => { 'user': 'fred' } - * - * _.memoize.Cache = WeakMap; - * var identity = _.memoize(_.identity); - * - * identity(object); - * // => { 'user': 'fred' } - * identity(other); - * // => { 'user': 'barney' } - */ -function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - cache = memoized.cache, - key = resolver ? resolver.apply(this, args) : args[0]; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - cache.set(key, result); - return result; - }; - memoized.cache = new memoize.Cache; - return memoized; -} - -// Assign cache to `_.memoize`. -memoize.Cache = MapCache; - -module.exports = memoize; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js deleted file mode 100644 index 8247939..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/negate.js +++ /dev/null @@ -1,32 +0,0 @@ -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ -function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - return !predicate.apply(this, arguments); - }; -} - -module.exports = negate; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js deleted file mode 100644 index 90c0ae9..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/once.js +++ /dev/null @@ -1,24 +0,0 @@ -var before = require('./before'); - -/** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first call. The `func` is invoked - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` invokes `createApplication` once - */ -function once(func) { - return before(func, 2); -} - -module.exports = once; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js deleted file mode 100644 index 70a1f9f..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partial.js +++ /dev/null @@ -1,50 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - createWrapper = require('../internal/createWrapper'), - replaceHolders = require('../internal/replaceHolders'); - -/** Used to compose bitmasks for wrapper metadata. */ -var PARTIAL_FLAG = 32; - -/** - * Creates a function that invokes `func` with `partial` arguments prepended - * to those provided to the new function. This method is like `_.bind` except - * it does **not** alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method does not set the `length` property of partially - * applied functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { - * return greeting + ' ' + name; - * }; - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // using placeholders - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ -function partial(func) { - var partials = baseSlice(arguments, 1), - holders = replaceHolders(partials, partial.placeholder); - - return createWrapper(func, PARTIAL_FLAG, null, partials, holders); -} - -// Assign default placeholders. -partial.placeholder = {}; - -module.exports = partial; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js deleted file mode 100644 index 1587ad0..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/partialRight.js +++ /dev/null @@ -1,49 +0,0 @@ -var baseSlice = require('../internal/baseSlice'), - createWrapper = require('../internal/createWrapper'), - replaceHolders = require('../internal/replaceHolders'); - -/** Used to compose bitmasks for wrapper metadata. */ -var PARTIAL_RIGHT_FLAG = 64; - -/** - * This method is like `_.partial` except that partially applied arguments - * are appended to those provided to the new function. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method does not set the `length` property of partially - * applied functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { - * return greeting + ' ' + name; - * }; - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // using placeholders - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ -function partialRight(func) { - var partials = baseSlice(arguments, 1), - holders = replaceHolders(partials, partialRight.placeholder); - - return createWrapper(func, PARTIAL_RIGHT_FLAG, null, partials, holders); -} - -// Assign default placeholders. -partialRight.placeholder = {}; - -module.exports = partialRight; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js deleted file mode 100644 index a1bcd52..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/rearg.js +++ /dev/null @@ -1,40 +0,0 @@ -var baseFlatten = require('../internal/baseFlatten'), - createWrapper = require('../internal/createWrapper'); - -/** Used to compose bitmasks for wrapper metadata. */ -var REARG_FLAG = 128; - -/** - * Creates a function that invokes `func` with arguments arranged according - * to the specified indexes where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes, - * specified as individual indexes or arrays of indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, 2, 0, 1); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - * - * var map = _.rearg(_.map, [1, 0]); - * map(function(n) { - * return n * 3; - * }, [1, 2, 3]); - * // => [3, 6, 9] - */ -function rearg(func) { - var indexes = baseFlatten(arguments, false, false, 1); - return createWrapper(func, REARG_FLAG, null, null, null, indexes); -} - -module.exports = rearg; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js deleted file mode 100644 index a14d72a..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/spread.js +++ /dev/null @@ -1,43 +0,0 @@ -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** - * Creates a function that invokes `func` with the `this` binding of the - * created function and the array of arguments provided to the created - * function much like [Function#apply](http://es5.github.io/#x15.3.4.3). - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to spread arguments over. - * @returns {*} Returns the new function. - * @example - * - * var spread = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * spread(['Fred', 'hello']); - * // => 'Fred says hello' - * - * // with a Promise - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ -function spread(func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function(array) { - return func.apply(this, array); - }; -} - -module.exports = spread; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js deleted file mode 100644 index 7c30e64..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/throttle.js +++ /dev/null @@ -1,72 +0,0 @@ -var debounce = require('./debounce'), - isObject = require('../lang/isObject'); - -/** Used as the `TypeError` message for "Functions" methods. */ -var FUNC_ERROR_TEXT = 'Expected a function'; - -/** Used as an internal `_.debounce` options object by `_.throttle`. */ -var debounceOptions = { - 'leading': false, - 'maxWait': 0, - 'trailing': false -}; - -/** - * Creates a function that only invokes `func` at most once per every `wait` - * milliseconds. The created function comes with a `cancel` method to cancel - * delayed invocations. Provide an options object to indicate that `func` - * should be invoked on the leading and/or trailing edge of the `wait` timeout. - * Subsequent calls to the throttled function return the result of the last - * `func` call. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify invoking on the leading - * edge of the timeout. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); - * - * // cancel a trailing throttled call - * jQuery(window).on('popstate', throttled.cancel); - */ -function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - debounceOptions.leading = leading; - debounceOptions.maxWait = +wait; - debounceOptions.trailing = trailing; - return debounce(func, wait, debounceOptions); -} - -module.exports = throttle; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js deleted file mode 100644 index 68b09af..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/function/wrap.js +++ /dev/null @@ -1,33 +0,0 @@ -var createWrapper = require('../internal/createWrapper'), - identity = require('../utility/identity'); - -/** Used to compose bitmasks for wrapper metadata. */ -var PARTIAL_FLAG = 32; - -/** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Any additional arguments provided to the function are - * appended to those provided to the wrapper function. The wrapper is invoked - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Function - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

' + func(text) + '

'; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

fred, barney, & pebbles

' - */ -function wrap(value, wrapper) { - wrapper = wrapper == null ? identity : wrapper; - return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []); -} - -module.exports = wrap; diff --git a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js b/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js deleted file mode 100644 index 52b19d7..0000000 --- a/node_modules/aws-sdk/node_modules/xmlbuilder/node_modules/lodash/index.js +++ /dev/null @@ -1,11599 +0,0 @@ -/** - * @license - * lodash 3.5.0 (Custom Build) - * Build: `lodash modern -d -o ./index.js` - * Copyright 2012-2015 The Dojo Foundation - * Based on Underscore.js 1.8.2 - * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - * Available under MIT license - */ -;(function() { - - /** Used as a safe reference for `undefined` in pre-ES5 environments. */ - var undefined; - - /** Used as the semantic version number. */ - var VERSION = '3.5.0'; - - /** Used to compose bitmasks for wrapper metadata. */ - var BIND_FLAG = 1, - BIND_KEY_FLAG = 2, - CURRY_BOUND_FLAG = 4, - CURRY_FLAG = 8, - CURRY_RIGHT_FLAG = 16, - PARTIAL_FLAG = 32, - PARTIAL_RIGHT_FLAG = 64, - REARG_FLAG = 128, - ARY_FLAG = 256; - - /** Used as default options for `_.trunc`. */ - var DEFAULT_TRUNC_LENGTH = 30, - DEFAULT_TRUNC_OMISSION = '...'; - - /** Used to detect when a function becomes hot. */ - var HOT_COUNT = 150, - HOT_SPAN = 16; - - /** Used to indicate the type of lazy iteratees. */ - var LAZY_DROP_WHILE_FLAG = 0, - LAZY_FILTER_FLAG = 1, - LAZY_MAP_FLAG = 2; - - /** Used as the `TypeError` message for "Functions" methods. */ - var FUNC_ERROR_TEXT = 'Expected a function'; - - /** Used as the internal argument placeholder. */ - var PLACEHOLDER = '__lodash_placeholder__'; - - /** `Object#toString` result references. */ - var argsTag = '[object Arguments]', - arrayTag = '[object Array]', - boolTag = '[object Boolean]', - dateTag = '[object Date]', - errorTag = '[object Error]', - funcTag = '[object Function]', - mapTag = '[object Map]', - numberTag = '[object Number]', - objectTag = '[object Object]', - regexpTag = '[object RegExp]', - setTag = '[object Set]', - stringTag = '[object String]', - weakMapTag = '[object WeakMap]'; - - var arrayBufferTag = '[object ArrayBuffer]', - float32Tag = '[object Float32Array]', - float64Tag = '[object Float64Array]', - int8Tag = '[object Int8Array]', - int16Tag = '[object Int16Array]', - int32Tag = '[object Int32Array]', - uint8Tag = '[object Uint8Array]', - uint8ClampedTag = '[object Uint8ClampedArray]', - uint16Tag = '[object Uint16Array]', - uint32Tag = '[object Uint32Array]'; - - /** Used to match empty string literals in compiled template source. */ - var reEmptyStringLeading = /\b__p \+= '';/g, - reEmptyStringMiddle = /\b(__p \+=) '' \+/g, - reEmptyStringTrailing = /(__e\(.*?\)|\b__t\)) \+\n'';/g; - - /** Used to match HTML entities and HTML characters. */ - var reEscapedHtml = /&(?:amp|lt|gt|quot|#39|#96);/g, - reUnescapedHtml = /[&<>"'`]/g, - reHasEscapedHtml = RegExp(reEscapedHtml.source), - reHasUnescapedHtml = RegExp(reUnescapedHtml.source); - - /** Used to match template delimiters. */ - var reEscape = /<%-([\s\S]+?)%>/g, - reEvaluate = /<%([\s\S]+?)%>/g, - reInterpolate = /<%=([\s\S]+?)%>/g; - - /** - * Used to match ES template delimiters. - * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-template-literal-lexical-components) - * for more details. - */ - var reEsTemplate = /\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g; - - /** Used to match `RegExp` flags from their coerced string values. */ - var reFlags = /\w*$/; - - /** Used to detect named functions. */ - var reFuncName = /^\s*function[ \n\r\t]+\w/; - - /** Used to detect hexadecimal string values. */ - var reHexPrefix = /^0[xX]/; - - /** Used to detect host constructors (Safari > 5). */ - var reHostCtor = /^\[object .+?Constructor\]$/; - - /** Used to match latin-1 supplementary letters (excluding mathematical operators). */ - var reLatin1 = /[\xc0-\xd6\xd8-\xde\xdf-\xf6\xf8-\xff]/g; - - /** Used to ensure capturing order of template delimiters. */ - var reNoMatch = /($^)/; - - /** - * Used to match `RegExp` special characters. - * See this [article on `RegExp` characters](http://www.regular-expressions.info/characters.html#special) - * for more details. - */ - var reRegExpChars = /[.*+?^${}()|[\]\/\\]/g, - reHasRegExpChars = RegExp(reRegExpChars.source); - - /** Used to detect functions containing a `this` reference. */ - var reThis = /\bthis\b/; - - /** Used to match unescaped characters in compiled string literals. */ - var reUnescapedString = /['\n\r\u2028\u2029\\]/g; - - /** Used to match words to create compound words. */ - var reWords = (function() { - var upper = '[A-Z\\xc0-\\xd6\\xd8-\\xde]', - lower = '[a-z\\xdf-\\xf6\\xf8-\\xff]+'; - - return RegExp(upper + '+(?=' + upper + lower + ')|' + upper + '?' + lower + '|' + upper + '+|[0-9]+', 'g'); - }()); - - /** Used to detect and test for whitespace. */ - var whitespace = ( - // Basic whitespace characters. - ' \t\x0b\f\xa0\ufeff' + - - // Line terminators. - '\n\r\u2028\u2029' + - - // Unicode category "Zs" space separators. - '\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000' - ); - - /** Used to assign default `context` object properties. */ - var contextProps = [ - 'Array', 'ArrayBuffer', 'Date', 'Error', 'Float32Array', 'Float64Array', - 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Math', 'Number', - 'Object', 'RegExp', 'Set', 'String', '_', 'clearTimeout', 'document', - 'isFinite', 'parseInt', 'setTimeout', 'TypeError', 'Uint8Array', - 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap', - 'window', 'WinRTError' - ]; - - /** Used to make template sourceURLs easier to identify. */ - var templateCounter = -1; - - /** Used to identify `toStringTag` values of typed arrays. */ - var typedArrayTags = {}; - typedArrayTags[float32Tag] = typedArrayTags[float64Tag] = - typedArrayTags[int8Tag] = typedArrayTags[int16Tag] = - typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] = - typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] = - typedArrayTags[uint32Tag] = true; - typedArrayTags[argsTag] = typedArrayTags[arrayTag] = - typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] = - typedArrayTags[dateTag] = typedArrayTags[errorTag] = - typedArrayTags[funcTag] = typedArrayTags[mapTag] = - typedArrayTags[numberTag] = typedArrayTags[objectTag] = - typedArrayTags[regexpTag] = typedArrayTags[setTag] = - typedArrayTags[stringTag] = typedArrayTags[weakMapTag] = false; - - /** Used to identify `toStringTag` values supported by `_.clone`. */ - var cloneableTags = {}; - cloneableTags[argsTag] = cloneableTags[arrayTag] = - cloneableTags[arrayBufferTag] = cloneableTags[boolTag] = - cloneableTags[dateTag] = cloneableTags[float32Tag] = - cloneableTags[float64Tag] = cloneableTags[int8Tag] = - cloneableTags[int16Tag] = cloneableTags[int32Tag] = - cloneableTags[numberTag] = cloneableTags[objectTag] = - cloneableTags[regexpTag] = cloneableTags[stringTag] = - cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] = - cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true; - cloneableTags[errorTag] = cloneableTags[funcTag] = - cloneableTags[mapTag] = cloneableTags[setTag] = - cloneableTags[weakMapTag] = false; - - /** Used as an internal `_.debounce` options object by `_.throttle`. */ - var debounceOptions = { - 'leading': false, - 'maxWait': 0, - 'trailing': false - }; - - /** Used to map latin-1 supplementary letters to basic latin letters. */ - var deburredLetters = { - '\xc0': 'A', '\xc1': 'A', '\xc2': 'A', '\xc3': 'A', '\xc4': 'A', '\xc5': 'A', - '\xe0': 'a', '\xe1': 'a', '\xe2': 'a', '\xe3': 'a', '\xe4': 'a', '\xe5': 'a', - '\xc7': 'C', '\xe7': 'c', - '\xd0': 'D', '\xf0': 'd', - '\xc8': 'E', '\xc9': 'E', '\xca': 'E', '\xcb': 'E', - '\xe8': 'e', '\xe9': 'e', '\xea': 'e', '\xeb': 'e', - '\xcC': 'I', '\xcd': 'I', '\xce': 'I', '\xcf': 'I', - '\xeC': 'i', '\xed': 'i', '\xee': 'i', '\xef': 'i', - '\xd1': 'N', '\xf1': 'n', - '\xd2': 'O', '\xd3': 'O', '\xd4': 'O', '\xd5': 'O', '\xd6': 'O', '\xd8': 'O', - '\xf2': 'o', '\xf3': 'o', '\xf4': 'o', '\xf5': 'o', '\xf6': 'o', '\xf8': 'o', - '\xd9': 'U', '\xda': 'U', '\xdb': 'U', '\xdc': 'U', - '\xf9': 'u', '\xfa': 'u', '\xfb': 'u', '\xfc': 'u', - '\xdd': 'Y', '\xfd': 'y', '\xff': 'y', - '\xc6': 'Ae', '\xe6': 'ae', - '\xde': 'Th', '\xfe': 'th', - '\xdf': 'ss' - }; - - /** Used to map characters to HTML entities. */ - var htmlEscapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - "'": ''', - '`': '`' - }; - - /** Used to map HTML entities to characters. */ - var htmlUnescapes = { - '&': '&', - '<': '<', - '>': '>', - '"': '"', - ''': "'", - '`': '`' - }; - - /** Used to determine if values are of the language type `Object`. */ - var objectTypes = { - 'function': true, - 'object': true - }; - - /** Used to escape characters for inclusion in compiled string literals. */ - var stringEscapes = { - '\\': '\\', - "'": "'", - '\n': 'n', - '\r': 'r', - '\u2028': 'u2028', - '\u2029': 'u2029' - }; - - /** Detect free variable `exports`. */ - var freeExports = objectTypes[typeof exports] && exports && !exports.nodeType && exports; - - /** Detect free variable `module`. */ - var freeModule = objectTypes[typeof module] && module && !module.nodeType && module; - - /** Detect free variable `global` from Node.js. */ - var freeGlobal = freeExports && freeModule && typeof global == 'object' && global; - - /** Detect free variable `window`. */ - var freeWindow = objectTypes[typeof window] && window; - - /** Detect the popular CommonJS extension `module.exports`. */ - var moduleExports = freeModule && freeModule.exports === freeExports && freeExports; - - /** - * Used as a reference to the global object. - * - * The `this` value is used if it is the global object to avoid Greasemonkey's - * restricted `window` object, otherwise the `window` object is used. - */ - var root = freeGlobal || ((freeWindow !== (this && this.window)) && freeWindow) || this; - - /*--------------------------------------------------------------------------*/ - - /** - * The base implementation of `compareAscending` which compares values and - * sorts them in ascending order without guaranteeing a stable sort. - * - * @private - * @param {*} value The value to compare to `other`. - * @param {*} other The value to compare to `value`. - * @returns {number} Returns the sort order indicator for `value`. - */ - function baseCompareAscending(value, other) { - if (value !== other) { - var valIsReflexive = value === value, - othIsReflexive = other === other; - - if (value > other || !valIsReflexive || (typeof value == 'undefined' && othIsReflexive)) { - return 1; - } - if (value < other || !othIsReflexive || (typeof other == 'undefined' && valIsReflexive)) { - return -1; - } - } - return 0; - } - - /** - * The base implementation of `_.indexOf` without support for binary searches. - * - * @private - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {number} fromIndex The index to search from. - * @returns {number} Returns the index of the matched value, else `-1`. - */ - function baseIndexOf(array, value, fromIndex) { - if (value !== value) { - return indexOfNaN(array, fromIndex); - } - var index = fromIndex - 1, - length = array.length; - - while (++index < length) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * The base implementation of `_.isFunction` without support for environments - * with incorrect `typeof` results. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - */ - function baseIsFunction(value) { - // Avoid a Chakra JIT bug in compatibility modes of IE 11. - // See https://github.com/jashkenas/underscore/issues/1621 for more details. - return typeof value == 'function' || false; - } - - /** - * Converts `value` to a string if it is not one. An empty string is returned - * for `null` or `undefined` values. - * - * @private - * @param {*} value The value to process. - * @returns {string} Returns the string. - */ - function baseToString(value) { - if (typeof value == 'string') { - return value; - } - return value == null ? '' : (value + ''); - } - - /** - * Used by `_.max` and `_.min` as the default callback for string values. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the code unit of the first character of the string. - */ - function charAtCallback(string) { - return string.charCodeAt(0); - } - - /** - * Used by `_.trim` and `_.trimLeft` to get the index of the first character - * of `string` that is not found in `chars`. - * - * @private - * @param {string} string The string to inspect. - * @param {string} chars The characters to find. - * @returns {number} Returns the index of the first character not found in `chars`. - */ - function charsLeftIndex(string, chars) { - var index = -1, - length = string.length; - - while (++index < length && chars.indexOf(string.charAt(index)) > -1) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimRight` to get the index of the last character - * of `string` that is not found in `chars`. - * - * @private - * @param {string} string The string to inspect. - * @param {string} chars The characters to find. - * @returns {number} Returns the index of the last character not found in `chars`. - */ - function charsRightIndex(string, chars) { - var index = string.length; - - while (index-- && chars.indexOf(string.charAt(index)) > -1) {} - return index; - } - - /** - * Used by `_.sortBy` to compare transformed elements of a collection and stable - * sort them in ascending order. - * - * @private - * @param {Object} object The object to compare to `other`. - * @param {Object} other The object to compare to `object`. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareAscending(object, other) { - return baseCompareAscending(object.criteria, other.criteria) || (object.index - other.index); - } - - /** - * Used by `_.sortByOrder` to compare multiple properties of each element - * in a collection and stable sort them in the following order: - * - * If orders is unspecified, sort in ascending order for all properties. - * Otherwise, for each property, sort in ascending order if its corresponding value in - * orders is true, and descending order if false. - * - * @private - * @param {Object} object The object to compare to `other`. - * @param {Object} other The object to compare to `object`. - * @param {boolean[]} orders The order to sort by for each property. - * @returns {number} Returns the sort order indicator for `object`. - */ - function compareMultiple(object, other, orders) { - var index = -1, - objCriteria = object.criteria, - othCriteria = other.criteria, - length = objCriteria.length, - ordersLength = orders.length; - - while (++index < length) { - var result = baseCompareAscending(objCriteria[index], othCriteria[index]); - if (result) { - if (index >= ordersLength) { - return result; - } - return result * (orders[index] ? 1 : -1); - } - } - // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications - // that causes it, under certain circumstances, to provide the same value for - // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 - // for more details. - // - // This also ensures a stable sort in V8 and other engines. - // See https://code.google.com/p/v8/issues/detail?id=90 for more details. - return object.index - other.index; - } - - /** - * Used by `_.deburr` to convert latin-1 supplementary letters to basic latin letters. - * - * @private - * @param {string} letter The matched letter to deburr. - * @returns {string} Returns the deburred letter. - */ - function deburrLetter(letter) { - return deburredLetters[letter]; - } - - /** - * Used by `_.escape` to convert characters to HTML entities. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeHtmlChar(chr) { - return htmlEscapes[chr]; - } - - /** - * Used by `_.template` to escape characters for inclusion in compiled - * string literals. - * - * @private - * @param {string} chr The matched character to escape. - * @returns {string} Returns the escaped character. - */ - function escapeStringChar(chr) { - return '\\' + stringEscapes[chr]; - } - - /** - * Gets the index at which the first occurrence of `NaN` is found in `array`. - * If `fromRight` is provided elements of `array` are iterated from right to left. - * - * @private - * @param {Array} array The array to search. - * @param {number} fromIndex The index to search from. - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {number} Returns the index of the matched `NaN`, else `-1`. - */ - function indexOfNaN(array, fromIndex, fromRight) { - var length = array.length, - index = fromIndex + (fromRight ? 0 : -1); - - while ((fromRight ? index-- : ++index < length)) { - var other = array[index]; - if (other !== other) { - return index; - } - } - return -1; - } - - /** - * Checks if `value` is object-like. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is object-like, else `false`. - */ - function isObjectLike(value) { - return (value && typeof value == 'object') || false; - } - - /** - * Used by `trimmedLeftIndex` and `trimmedRightIndex` to determine if a - * character code is whitespace. - * - * @private - * @param {number} charCode The character code to inspect. - * @returns {boolean} Returns `true` if `charCode` is whitespace, else `false`. - */ - function isSpace(charCode) { - return ((charCode <= 160 && (charCode >= 9 && charCode <= 13) || charCode == 32 || charCode == 160) || charCode == 5760 || charCode == 6158 || - (charCode >= 8192 && (charCode <= 8202 || charCode == 8232 || charCode == 8233 || charCode == 8239 || charCode == 8287 || charCode == 12288 || charCode == 65279))); - } - - /** - * Replaces all `placeholder` elements in `array` with an internal placeholder - * and returns an array of their indexes. - * - * @private - * @param {Array} array The array to modify. - * @param {*} placeholder The placeholder to replace. - * @returns {Array} Returns the new array of placeholder indexes. - */ - function replaceHolders(array, placeholder) { - var index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - if (array[index] === placeholder) { - array[index] = PLACEHOLDER; - result[++resIndex] = index; - } - } - return result; - } - - /** - * An implementation of `_.uniq` optimized for sorted arrays without support - * for callback shorthands and `this` binding. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The function invoked per iteration. - * @returns {Array} Returns the new duplicate-value-free array. - */ - function sortedUniq(array, iteratee) { - var seen, - index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value, index, array) : value; - - if (!index || seen !== computed) { - seen = computed; - result[++resIndex] = value; - } - } - return result; - } - - /** - * Used by `_.trim` and `_.trimLeft` to get the index of the first non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the first non-whitespace character. - */ - function trimmedLeftIndex(string) { - var index = -1, - length = string.length; - - while (++index < length && isSpace(string.charCodeAt(index))) {} - return index; - } - - /** - * Used by `_.trim` and `_.trimRight` to get the index of the last non-whitespace - * character of `string`. - * - * @private - * @param {string} string The string to inspect. - * @returns {number} Returns the index of the last non-whitespace character. - */ - function trimmedRightIndex(string) { - var index = string.length; - - while (index-- && isSpace(string.charCodeAt(index))) {} - return index; - } - - /** - * Used by `_.unescape` to convert HTML entities to characters. - * - * @private - * @param {string} chr The matched character to unescape. - * @returns {string} Returns the unescaped character. - */ - function unescapeHtmlChar(chr) { - return htmlUnescapes[chr]; - } - - /*--------------------------------------------------------------------------*/ - - /** - * Create a new pristine `lodash` function using the given `context` object. - * - * @static - * @memberOf _ - * @category Utility - * @param {Object} [context=root] The context object. - * @returns {Function} Returns a new `lodash` function. - * @example - * - * _.mixin({ 'add': function(a, b) { return a + b; } }); - * - * var lodash = _.runInContext(); - * lodash.mixin({ 'sub': function(a, b) { return a - b; } }); - * - * _.isFunction(_.add); - * // => true - * _.isFunction(_.sub); - * // => false - * - * lodash.isFunction(lodash.add); - * // => false - * lodash.isFunction(lodash.sub); - * // => true - * - * // using `context` to mock `Date#getTime` use in `_.now` - * var mock = _.runInContext({ - * 'Date': function() { - * return { 'getTime': getTimeMock }; - * } - * }); - * - * // or creating a suped-up `defer` in Node.js - * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer; - */ - function runInContext(context) { - // Avoid issues with some ES3 environments that attempt to use values, named - // after built-in constructors like `Object`, for the creation of literals. - // ES5 clears this up by stating that literals must use built-in constructors. - // See https://es5.github.io/#x11.1.5 for more details. - context = context ? _.defaults(root.Object(), context, _.pick(root, contextProps)) : root; - - /** Native constructor references. */ - var Array = context.Array, - Date = context.Date, - Error = context.Error, - Function = context.Function, - Math = context.Math, - Number = context.Number, - Object = context.Object, - RegExp = context.RegExp, - String = context.String, - TypeError = context.TypeError; - - /** Used for native method references. */ - var arrayProto = Array.prototype, - objectProto = Object.prototype, - stringProto = String.prototype; - - /** Used to detect DOM support. */ - var document = (document = context.window) && document.document; - - /** Used to resolve the decompiled source of functions. */ - var fnToString = Function.prototype.toString; - - /** Used to the length of n-tuples for `_.unzip`. */ - var getLength = baseProperty('length'); - - /** Used to check objects for own properties. */ - var hasOwnProperty = objectProto.hasOwnProperty; - - /** Used to generate unique IDs. */ - var idCounter = 0; - - /** - * Used to resolve the `toStringTag` of values. - * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.prototype.tostring) - * for more details. - */ - var objToString = objectProto.toString; - - /** Used to restore the original `_` reference in `_.noConflict`. */ - var oldDash = context._; - - /** Used to detect if a method is native. */ - var reNative = RegExp('^' + - escapeRegExp(objToString) - .replace(/toString|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$' - ); - - /** Native method references. */ - var ArrayBuffer = isNative(ArrayBuffer = context.ArrayBuffer) && ArrayBuffer, - bufferSlice = isNative(bufferSlice = ArrayBuffer && new ArrayBuffer(0).slice) && bufferSlice, - ceil = Math.ceil, - clearTimeout = context.clearTimeout, - floor = Math.floor, - getPrototypeOf = isNative(getPrototypeOf = Object.getPrototypeOf) && getPrototypeOf, - push = arrayProto.push, - propertyIsEnumerable = objectProto.propertyIsEnumerable, - Set = isNative(Set = context.Set) && Set, - setTimeout = context.setTimeout, - splice = arrayProto.splice, - Uint8Array = isNative(Uint8Array = context.Uint8Array) && Uint8Array, - WeakMap = isNative(WeakMap = context.WeakMap) && WeakMap; - - /** Used to clone array buffers. */ - var Float64Array = (function() { - // Safari 5 errors when using an array buffer to initialize a typed array - // where the array buffer's `byteLength` is not a multiple of the typed - // array's `BYTES_PER_ELEMENT`. - try { - var func = isNative(func = context.Float64Array) && func, - result = new func(new ArrayBuffer(10), 0, 1) && func; - } catch(e) {} - return result; - }()); - - /* Native method references for those with the same name as other `lodash` methods. */ - var nativeIsArray = isNative(nativeIsArray = Array.isArray) && nativeIsArray, - nativeCreate = isNative(nativeCreate = Object.create) && nativeCreate, - nativeIsFinite = context.isFinite, - nativeKeys = isNative(nativeKeys = Object.keys) && nativeKeys, - nativeMax = Math.max, - nativeMin = Math.min, - nativeNow = isNative(nativeNow = Date.now) && nativeNow, - nativeNumIsFinite = isNative(nativeNumIsFinite = Number.isFinite) && nativeNumIsFinite, - nativeParseInt = context.parseInt, - nativeRandom = Math.random; - - /** Used as references for `-Infinity` and `Infinity`. */ - var NEGATIVE_INFINITY = Number.NEGATIVE_INFINITY, - POSITIVE_INFINITY = Number.POSITIVE_INFINITY; - - /** Used as references for the maximum length and index of an array. */ - var MAX_ARRAY_LENGTH = Math.pow(2, 32) - 1, - MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1, - HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1; - - /** Used as the size, in bytes, of each `Float64Array` element. */ - var FLOAT64_BYTES_PER_ELEMENT = Float64Array ? Float64Array.BYTES_PER_ELEMENT : 0; - - /** - * Used as the maximum length of an array-like value. - * See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.max_safe_integer) - * for more details. - */ - var MAX_SAFE_INTEGER = Math.pow(2, 53) - 1; - - /** Used to store function metadata. */ - var metaMap = WeakMap && new WeakMap; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object which wraps `value` to enable implicit chaining. - * Methods that operate on and return arrays, collections, and functions can - * be chained together. Methods that return a boolean or single value will - * automatically end the chain returning the unwrapped value. Explicit chaining - * may be enabled using `_.chain`. The execution of chained methods is lazy, - * that is, execution is deferred until `_#value` is implicitly or explicitly - * called. - * - * Lazy evaluation allows several methods to support shortcut fusion. Shortcut - * fusion is an optimization that merges iteratees to avoid creating intermediate - * arrays and reduce the number of iteratee executions. - * - * Chaining is supported in custom builds as long as the `_#value` method is - * directly or indirectly included in the build. - * - * In addition to lodash methods, wrappers have `Array` and `String` methods. - * - * The wrapper `Array` methods are: - * `concat`, `join`, `pop`, `push`, `reverse`, `shift`, `slice`, `sort`, - * `splice`, and `unshift` - * - * The wrapper `String` methods are: - * `replace` and `split` - * - * The wrapper methods that support shortcut fusion are: - * `compact`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `filter`, - * `first`, `initial`, `last`, `map`, `pluck`, `reject`, `rest`, `reverse`, - * `slice`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `toArray`, - * and `where` - * - * The chainable wrapper methods are: - * `after`, `ary`, `assign`, `at`, `before`, `bind`, `bindAll`, `bindKey`, - * `callback`, `chain`, `chunk`, `commit`, `compact`, `concat`, `constant`, - * `countBy`, `create`, `curry`, `debounce`, `defaults`, `defer`, `delay`, - * `difference`, `drop`, `dropRight`, `dropRightWhile`, `dropWhile`, `fill`, - * `filter`, `flatten`, `flattenDeep`, `flow`, `flowRight`, `forEach`, - * `forEachRight`, `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `functions`, - * `groupBy`, `indexBy`, `initial`, `intersection`, `invert`, `invoke`, `keys`, - * `keysIn`, `map`, `mapValues`, `matches`, `matchesProperty`, `memoize`, `merge`, - * `mixin`, `negate`, `noop`, `omit`, `once`, `pairs`, `partial`, `partialRight`, - * `partition`, `pick`, `plant`, `pluck`, `property`, `propertyOf`, `pull`, - * `pullAt`, `push`, `range`, `rearg`, `reject`, `remove`, `rest`, `reverse`, - * `shuffle`, `slice`, `sort`, `sortBy`, `sortByAll`, `sortByOrder`, `splice`, - * `spread`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, `tap`, - * `throttle`, `thru`, `times`, `toArray`, `toPlainObject`, `transform`, - * `union`, `uniq`, `unshift`, `unzip`, `values`, `valuesIn`, `where`, - * `without`, `wrap`, `xor`, `zip`, and `zipObject` - * - * The wrapper methods that are **not** chainable by default are: - * `add`, `attempt`, `camelCase`, `capitalize`, `clone`, `cloneDeep`, `deburr`, - * `endsWith`, `escape`, `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, - * `findLast`, `findLastIndex`, `findLastKey`, `findWhere`, `first`, `has`, - * `identity`, `includes`, `indexOf`, `inRange`, `isArguments`, `isArray`, - * `isBoolean`, `isDate`, `isElement`, `isEmpty`, `isEqual`, `isError`, - * `isFinite`,`isFunction`, `isMatch`, `isNative`, `isNaN`, `isNull`, `isNumber`, - * `isObject`, `isPlainObject`, `isRegExp`, `isString`, `isUndefined`, - * `isTypedArray`, `join`, `kebabCase`, `last`, `lastIndexOf`, `max`, `min`, - * `noConflict`, `now`, `pad`, `padLeft`, `padRight`, `parseInt`, `pop`, - * `random`, `reduce`, `reduceRight`, `repeat`, `result`, `runInContext`, - * `shift`, `size`, `snakeCase`, `some`, `sortedIndex`, `sortedLastIndex`, - * `startCase`, `startsWith`, `sum`, `template`, `trim`, `trimLeft`, - * `trimRight`, `trunc`, `unescape`, `uniqueId`, `value`, and `words` - * - * The wrapper method `sample` will return a wrapped value when `n` is provided, - * otherwise an unwrapped value is returned. - * - * @name _ - * @constructor - * @category Chain - * @param {*} value The value to wrap in a `lodash` instance. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var wrapped = _([1, 2, 3]); - * - * // returns an unwrapped value - * wrapped.reduce(function(sum, n) { - * return sum + n; - * }); - * // => 6 - * - * // returns a wrapped value - * var squares = wrapped.map(function(n) { - * return n * n; - * }); - * - * _.isArray(squares); - * // => false - * - * _.isArray(squares.value()); - * // => true - */ - function lodash(value) { - if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) { - if (value instanceof LodashWrapper) { - return value; - } - if (hasOwnProperty.call(value, '__chain__') && hasOwnProperty.call(value, '__wrapped__')) { - return wrapperClone(value); - } - } - return new LodashWrapper(value); - } - - /** - * The function whose prototype all chaining wrappers inherit from. - * - * @private - */ - function baseLodash() { - // No operation performed. - } - - /** - * The base constructor for creating `lodash` wrapper objects. - * - * @private - * @param {*} value The value to wrap. - * @param {boolean} [chainAll] Enable chaining for all wrapper methods. - * @param {Array} [actions=[]] Actions to peform to resolve the unwrapped value. - */ - function LodashWrapper(value, chainAll, actions) { - this.__wrapped__ = value; - this.__actions__ = actions || []; - this.__chain__ = !!chainAll; - } - - /** - * An object environment feature flags. - * - * @static - * @memberOf _ - * @type Object - */ - var support = lodash.support = {}; - - (function(x) { - - /** - * Detect if functions can be decompiled by `Function#toString` - * (all but Firefox OS certified apps, older Opera mobile browsers, and - * the PlayStation 3; forced `false` for Windows 8 apps). - * - * @memberOf _.support - * @type boolean - */ - support.funcDecomp = !isNative(context.WinRTError) && reThis.test(runInContext); - - /** - * Detect if `Function#name` is supported (all but IE). - * - * @memberOf _.support - * @type boolean - */ - support.funcNames = typeof Function.name == 'string'; - - /** - * Detect if the DOM is supported. - * - * @memberOf _.support - * @type boolean - */ - try { - support.dom = document.createDocumentFragment().nodeType === 11; - } catch(e) { - support.dom = false; - } - - /** - * Detect if `arguments` object indexes are non-enumerable. - * - * In Firefox < 4, IE < 9, PhantomJS, and Safari < 5.1 `arguments` object - * indexes are non-enumerable. Chrome < 25 and Node.js < 0.11.0 treat - * `arguments` object indexes as non-enumerable and fail `hasOwnProperty` - * checks for indexes that exceed their function's formal parameters with - * associated values of `0`. - * - * @memberOf _.support - * @type boolean - */ - try { - support.nonEnumArgs = !propertyIsEnumerable.call(arguments, 1); - } catch(e) { - support.nonEnumArgs = true; - } - }(0, 0)); - - /** - * By default, the template delimiters used by lodash are like those in - * embedded Ruby (ERB). Change the following template settings to use - * alternative delimiters. - * - * @static - * @memberOf _ - * @type Object - */ - lodash.templateSettings = { - - /** - * Used to detect `data` property values to be HTML-escaped. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'escape': reEscape, - - /** - * Used to detect code to be evaluated. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'evaluate': reEvaluate, - - /** - * Used to detect `data` property values to inject. - * - * @memberOf _.templateSettings - * @type RegExp - */ - 'interpolate': reInterpolate, - - /** - * Used to reference the data object in the template text. - * - * @memberOf _.templateSettings - * @type string - */ - 'variable': '', - - /** - * Used to import variables into the compiled template. - * - * @memberOf _.templateSettings - * @type Object - */ - 'imports': { - - /** - * A reference to the `lodash` function. - * - * @memberOf _.templateSettings.imports - * @type Function - */ - '_': lodash - } - }; - - /*------------------------------------------------------------------------*/ - - /** - * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation. - * - * @private - * @param {*} value The value to wrap. - */ - function LazyWrapper(value) { - this.__wrapped__ = value; - this.__actions__ = null; - this.__dir__ = 1; - this.__dropCount__ = 0; - this.__filtered__ = false; - this.__iteratees__ = null; - this.__takeCount__ = POSITIVE_INFINITY; - this.__views__ = null; - } - - /** - * Creates a clone of the lazy wrapper object. - * - * @private - * @name clone - * @memberOf LazyWrapper - * @returns {Object} Returns the cloned `LazyWrapper` object. - */ - function lazyClone() { - var actions = this.__actions__, - iteratees = this.__iteratees__, - views = this.__views__, - result = new LazyWrapper(this.__wrapped__); - - result.__actions__ = actions ? arrayCopy(actions) : null; - result.__dir__ = this.__dir__; - result.__filtered__ = this.__filtered__; - result.__iteratees__ = iteratees ? arrayCopy(iteratees) : null; - result.__takeCount__ = this.__takeCount__; - result.__views__ = views ? arrayCopy(views) : null; - return result; - } - - /** - * Reverses the direction of lazy iteration. - * - * @private - * @name reverse - * @memberOf LazyWrapper - * @returns {Object} Returns the new reversed `LazyWrapper` object. - */ - function lazyReverse() { - if (this.__filtered__) { - var result = new LazyWrapper(this); - result.__dir__ = -1; - result.__filtered__ = true; - } else { - result = this.clone(); - result.__dir__ *= -1; - } - return result; - } - - /** - * Extracts the unwrapped value from its lazy wrapper. - * - * @private - * @name value - * @memberOf LazyWrapper - * @returns {*} Returns the unwrapped value. - */ - function lazyValue() { - var array = this.__wrapped__.value(); - if (!isArray(array)) { - return baseWrapperValue(array, this.__actions__); - } - var dir = this.__dir__, - isRight = dir < 0, - view = getView(0, array.length, this.__views__), - start = view.start, - end = view.end, - length = end - start, - index = isRight ? end : (start - 1), - takeCount = nativeMin(length, this.__takeCount__), - iteratees = this.__iteratees__, - iterLength = iteratees ? iteratees.length : 0, - resIndex = 0, - result = []; - - outer: - while (length-- && resIndex < takeCount) { - index += dir; - - var iterIndex = -1, - value = array[index]; - - while (++iterIndex < iterLength) { - var data = iteratees[iterIndex], - iteratee = data.iteratee, - type = data.type; - - if (type == LAZY_DROP_WHILE_FLAG) { - if (data.done && (isRight ? (index > data.index) : (index < data.index))) { - data.count = 0; - data.done = false; - } - data.index = index; - if (!data.done) { - var limit = data.limit; - if (!(data.done = limit > -1 ? (data.count++ >= limit) : !iteratee(value))) { - continue outer; - } - } - } else { - var computed = iteratee(value); - if (type == LAZY_MAP_FLAG) { - value = computed; - } else if (!computed) { - if (type == LAZY_FILTER_FLAG) { - continue outer; - } else { - break outer; - } - } - } - } - result[resIndex++] = value; - } - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a cache object to store key/value pairs. - * - * @private - * @static - * @name Cache - * @memberOf _.memoize - */ - function MapCache() { - this.__data__ = {}; - } - - /** - * Removes `key` and its value from the cache. - * - * @private - * @name delete - * @memberOf _.memoize.Cache - * @param {string} key The key of the value to remove. - * @returns {boolean} Returns `true` if the entry was removed successfully, else `false`. - */ - function mapDelete(key) { - return this.has(key) && delete this.__data__[key]; - } - - /** - * Gets the cached value for `key`. - * - * @private - * @name get - * @memberOf _.memoize.Cache - * @param {string} key The key of the value to get. - * @returns {*} Returns the cached value. - */ - function mapGet(key) { - return key == '__proto__' ? undefined : this.__data__[key]; - } - - /** - * Checks if a cached value for `key` exists. - * - * @private - * @name has - * @memberOf _.memoize.Cache - * @param {string} key The key of the entry to check. - * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. - */ - function mapHas(key) { - return key != '__proto__' && hasOwnProperty.call(this.__data__, key); - } - - /** - * Adds `value` to `key` of the cache. - * - * @private - * @name set - * @memberOf _.memoize.Cache - * @param {string} key The key of the value to cache. - * @param {*} value The value to cache. - * @returns {Object} Returns the cache object. - */ - function mapSet(key, value) { - if (key != '__proto__') { - this.__data__[key] = value; - } - return this; - } - - /*------------------------------------------------------------------------*/ - - /** - * - * Creates a cache object to store unique values. - * - * @private - * @param {Array} [values] The values to cache. - */ - function SetCache(values) { - var length = values ? values.length : 0; - - this.data = { 'hash': nativeCreate(null), 'set': new Set }; - while (length--) { - this.push(values[length]); - } - } - - /** - * Checks if `value` is in `cache` mimicking the return signature of - * `_.indexOf` by returning `0` if the value is found, else `-1`. - * - * @private - * @param {Object} cache The cache to search. - * @param {*} value The value to search for. - * @returns {number} Returns `0` if `value` is found, else `-1`. - */ - function cacheIndexOf(cache, value) { - var data = cache.data, - result = (typeof value == 'string' || isObject(value)) ? data.set.has(value) : data.hash[value]; - - return result ? 0 : -1; - } - - /** - * Adds `value` to the cache. - * - * @private - * @name push - * @memberOf SetCache - * @param {*} value The value to cache. - */ - function cachePush(value) { - var data = this.data; - if (typeof value == 'string' || isObject(value)) { - data.set.add(value); - } else { - data.hash[value] = true; - } - } - - /*------------------------------------------------------------------------*/ - - /** - * Copies the values of `source` to `array`. - * - * @private - * @param {Array} source The array to copy values from. - * @param {Array} [array=[]] The array to copy values to. - * @returns {Array} Returns `array`. - */ - function arrayCopy(source, array) { - var index = -1, - length = source.length; - - array || (array = Array(length)); - while (++index < length) { - array[index] = source[index]; - } - return array; - } - - /** - * A specialized version of `_.forEach` for arrays without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEach(array, iteratee) { - var index = -1, - length = array.length; - - while (++index < length) { - if (iteratee(array[index], index, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.forEachRight` for arrays without support for - * callback shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns `array`. - */ - function arrayEachRight(array, iteratee) { - var length = array.length; - - while (length--) { - if (iteratee(array[length], length, array) === false) { - break; - } - } - return array; - } - - /** - * A specialized version of `_.every` for arrays without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - */ - function arrayEvery(array, predicate) { - var index = -1, - length = array.length; - - while (++index < length) { - if (!predicate(array[index], index, array)) { - return false; - } - } - return true; - } - - /** - * A specialized version of `_.filter` for arrays without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function arrayFilter(array, predicate) { - var index = -1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result[++resIndex] = value; - } - } - return result; - } - - /** - * A specialized version of `_.map` for arrays without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function arrayMap(array, iteratee) { - var index = -1, - length = array.length, - result = Array(length); - - while (++index < length) { - result[index] = iteratee(array[index], index, array); - } - return result; - } - - /** - * A specialized version of `_.max` for arrays without support for iteratees. - * - * @private - * @param {Array} array The array to iterate over. - * @returns {*} Returns the maximum value. - */ - function arrayMax(array) { - var index = -1, - length = array.length, - result = NEGATIVE_INFINITY; - - while (++index < length) { - var value = array[index]; - if (value > result) { - result = value; - } - } - return result; - } - - /** - * A specialized version of `_.min` for arrays without support for iteratees. - * - * @private - * @param {Array} array The array to iterate over. - * @returns {*} Returns the minimum value. - */ - function arrayMin(array) { - var index = -1, - length = array.length, - result = POSITIVE_INFINITY; - - while (++index < length) { - var value = array[index]; - if (value < result) { - result = value; - } - } - return result; - } - - /** - * A specialized version of `_.reduce` for arrays without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initFromArray] Specify using the first element of `array` - * as the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduce(array, iteratee, accumulator, initFromArray) { - var index = -1, - length = array.length; - - if (initFromArray && length) { - accumulator = array[++index]; - } - while (++index < length) { - accumulator = iteratee(accumulator, array[index], index, array); - } - return accumulator; - } - - /** - * A specialized version of `_.reduceRight` for arrays without support for - * callback shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {boolean} [initFromArray] Specify using the last element of `array` - * as the initial value. - * @returns {*} Returns the accumulated value. - */ - function arrayReduceRight(array, iteratee, accumulator, initFromArray) { - var length = array.length; - if (initFromArray && length) { - accumulator = array[--length]; - } - while (length--) { - accumulator = iteratee(accumulator, array[length], length, array); - } - return accumulator; - } - - /** - * A specialized version of `_.some` for arrays without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array} array The array to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function arraySome(array, predicate) { - var index = -1, - length = array.length; - - while (++index < length) { - if (predicate(array[index], index, array)) { - return true; - } - } - return false; - } - - /** - * Used by `_.defaults` to customize its `_.assign` use. - * - * @private - * @param {*} objectValue The destination object property value. - * @param {*} sourceValue The source object property value. - * @returns {*} Returns the value to assign to the destination object. - */ - function assignDefaults(objectValue, sourceValue) { - return typeof objectValue == 'undefined' ? sourceValue : objectValue; - } - - /** - * Used by `_.template` to customize its `_.assign` use. - * - * **Note:** This method is like `assignDefaults` except that it ignores - * inherited property values when checking if a property is `undefined`. - * - * @private - * @param {*} objectValue The destination object property value. - * @param {*} sourceValue The source object property value. - * @param {string} key The key associated with the object and source values. - * @param {Object} object The destination object. - * @returns {*} Returns the value to assign to the destination object. - */ - function assignOwnDefaults(objectValue, sourceValue, key, object) { - return (typeof objectValue == 'undefined' || !hasOwnProperty.call(object, key)) - ? sourceValue - : objectValue; - } - - /** - * The base implementation of `_.assign` without support for argument juggling, - * multiple sources, and `this` binding `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [customizer] The function to customize assigning values. - * @returns {Object} Returns the destination object. - */ - function baseAssign(object, source, customizer) { - var props = keys(source); - if (!customizer) { - return baseCopy(source, object, props); - } - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index], - value = object[key], - result = customizer(value, source[key], key, object, source); - - if ((result === result ? (result !== value) : (value === value)) || - (typeof value == 'undefined' && !(key in object))) { - object[key] = result; - } - } - return object; - } - - /** - * The base implementation of `_.at` without support for strings and individual - * key arguments. - * - * @private - * @param {Array|Object} collection The collection to iterate over. - * @param {number[]|string[]} [props] The property names or indexes of elements to pick. - * @returns {Array} Returns the new array of picked elements. - */ - function baseAt(collection, props) { - var index = -1, - length = collection.length, - isArr = isLength(length), - propsLength = props.length, - result = Array(propsLength); - - while(++index < propsLength) { - var key = props[index]; - if (isArr) { - key = parseFloat(key); - result[index] = isIndex(key, length) ? collection[key] : undefined; - } else { - result[index] = collection[key]; - } - } - return result; - } - - /** - * Copies the properties of `source` to `object`. - * - * @private - * @param {Object} source The object to copy properties from. - * @param {Object} [object={}] The object to copy properties to. - * @param {Array} props The property names to copy. - * @returns {Object} Returns `object`. - */ - function baseCopy(source, object, props) { - if (!props) { - props = object; - object = {}; - } - var index = -1, - length = props.length; - - while (++index < length) { - var key = props[index]; - object[key] = source[key]; - } - return object; - } - - /** - * The base implementation of `_.bindAll` without support for individual - * method name arguments. - * - * @private - * @param {Object} object The object to bind and assign the bound methods to. - * @param {string[]} methodNames The object method names to bind. - * @returns {Object} Returns `object`. - */ - function baseBindAll(object, methodNames) { - var index = -1, - length = methodNames.length; - - while (++index < length) { - var key = methodNames[index]; - object[key] = createWrapper(object[key], BIND_FLAG, object); - } - return object; - } - - /** - * The base implementation of `_.callback` which supports specifying the - * number of arguments to provide to `func`. - * - * @private - * @param {*} [func=_.identity] The value to convert to a callback. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {number} [argCount] The number of arguments to provide to `func`. - * @returns {Function} Returns the callback. - */ - function baseCallback(func, thisArg, argCount) { - var type = typeof func; - if (type == 'function') { - return (typeof thisArg != 'undefined' && isBindable(func)) - ? bindCallback(func, thisArg, argCount) - : func; - } - if (func == null) { - return identity; - } - if (type == 'object') { - return baseMatches(func); - } - return typeof thisArg == 'undefined' - ? baseProperty(func + '') - : baseMatchesProperty(func + '', thisArg); - } - - /** - * The base implementation of `_.clone` without support for argument juggling - * and `this` binding `customizer` functions. - * - * @private - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {Function} [customizer] The function to customize cloning values. - * @param {string} [key] The key of `value`. - * @param {Object} [object] The object `value` belongs to. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates clones with source counterparts. - * @returns {*} Returns the cloned value. - */ - function baseClone(value, isDeep, customizer, key, object, stackA, stackB) { - var result; - if (customizer) { - result = object ? customizer(value, key, object) : customizer(value); - } - if (typeof result != 'undefined') { - return result; - } - if (!isObject(value)) { - return value; - } - var isArr = isArray(value); - if (isArr) { - result = initCloneArray(value); - if (!isDeep) { - return arrayCopy(value, result); - } - } else { - var tag = objToString.call(value), - isFunc = tag == funcTag; - - if (tag == objectTag || tag == argsTag || (isFunc && !object)) { - result = initCloneObject(isFunc ? {} : value); - if (!isDeep) { - return baseCopy(value, result, keys(value)); - } - } else { - return cloneableTags[tag] - ? initCloneByTag(value, tag, isDeep) - : (object ? value : {}); - } - } - // Check for circular references and return corresponding clone. - stackA || (stackA = []); - stackB || (stackB = []); - - var length = stackA.length; - while (length--) { - if (stackA[length] == value) { - return stackB[length]; - } - } - // Add the source value to the stack of traversed objects and associate it with its clone. - stackA.push(value); - stackB.push(result); - - // Recursively populate clone (susceptible to call stack limits). - (isArr ? arrayEach : baseForOwn)(value, function(subValue, key) { - result[key] = baseClone(subValue, isDeep, customizer, key, value, stackA, stackB); - }); - return result; - } - - /** - * The base implementation of `_.create` without support for assigning - * properties to the created object. - * - * @private - * @param {Object} prototype The object to inherit from. - * @returns {Object} Returns the new object. - */ - var baseCreate = (function() { - function Object() {} - return function(prototype) { - if (isObject(prototype)) { - Object.prototype = prototype; - var result = new Object; - Object.prototype = null; - } - return result || context.Object(); - }; - }()); - - /** - * The base implementation of `_.delay` and `_.defer` which accepts an index - * of where to slice the arguments to provide to `func`. - * - * @private - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {Object} args The `arguments` object to slice and provide to `func`. - * @returns {number} Returns the timer id. - */ - function baseDelay(func, wait, args, fromIndex) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return setTimeout(function() { func.apply(undefined, baseSlice(args, fromIndex)); }, wait); - } - - /** - * The base implementation of `_.difference` which accepts a single array - * of values to exclude. - * - * @private - * @param {Array} array The array to inspect. - * @param {Array} values The values to exclude. - * @returns {Array} Returns the new array of filtered values. - */ - function baseDifference(array, values) { - var length = array ? array.length : 0, - result = []; - - if (!length) { - return result; - } - var index = -1, - indexOf = getIndexOf(), - isCommon = indexOf == baseIndexOf, - cache = (isCommon && values.length >= 200) ? createCache(values) : null, - valuesLength = values.length; - - if (cache) { - indexOf = cacheIndexOf; - isCommon = false; - values = cache; - } - outer: - while (++index < length) { - var value = array[index]; - - if (isCommon && value === value) { - var valuesIndex = valuesLength; - while (valuesIndex--) { - if (values[valuesIndex] === value) { - continue outer; - } - } - result.push(value); - } - else if (indexOf(values, value, 0) < 0) { - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.forEach` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object|string} Returns `collection`. - */ - function baseEach(collection, iteratee) { - var length = collection ? collection.length : 0; - if (!isLength(length)) { - return baseForOwn(collection, iteratee); - } - var index = -1, - iterable = toObject(collection); - - while (++index < length) { - if (iteratee(iterable[index], index, iterable) === false) { - break; - } - } - return collection; - } - - /** - * The base implementation of `_.forEachRight` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array|Object|string} Returns `collection`. - */ - function baseEachRight(collection, iteratee) { - var length = collection ? collection.length : 0; - if (!isLength(length)) { - return baseForOwnRight(collection, iteratee); - } - var iterable = toObject(collection); - while (length--) { - if (iteratee(iterable[length], length, iterable) === false) { - break; - } - } - return collection; - } - - /** - * The base implementation of `_.every` without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false` - */ - function baseEvery(collection, predicate) { - var result = true; - baseEach(collection, function(value, index, collection) { - result = !!predicate(value, index, collection); - return result; - }); - return result; - } - - /** - * The base implementation of `_.fill` without an iteratee call guard. - * - * @private - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function baseFill(array, value, start, end) { - var length = array.length; - - start = start == null ? 0 : (+start || 0); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (typeof end == 'undefined' || end > length) ? length : (+end || 0); - if (end < 0) { - end += length; - } - length = start > end ? 0 : (end >>> 0); - start >>>= 0; - - while (start < length) { - array[start++] = value; - } - return array; - } - - /** - * The base implementation of `_.filter` without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {Array} Returns the new filtered array. - */ - function baseFilter(collection, predicate) { - var result = []; - baseEach(collection, function(value, index, collection) { - if (predicate(value, index, collection)) { - result.push(value); - } - }); - return result; - } - - /** - * The base implementation of `_.find`, `_.findLast`, `_.findKey`, and `_.findLastKey`, - * without support for callback shorthands and `this` binding, which iterates - * over `collection` using the provided `eachFunc`. - * - * @private - * @param {Array|Object|string} collection The collection to search. - * @param {Function} predicate The function invoked per iteration. - * @param {Function} eachFunc The function to iterate over `collection`. - * @param {boolean} [retKey] Specify returning the key of the found element - * instead of the element itself. - * @returns {*} Returns the found element or its key, else `undefined`. - */ - function baseFind(collection, predicate, eachFunc, retKey) { - var result; - eachFunc(collection, function(value, key, collection) { - if (predicate(value, key, collection)) { - result = retKey ? key : value; - return false; - } - }); - return result; - } - - /** - * The base implementation of `_.flatten` with added support for restricting - * flattening and specifying the start index. - * - * @private - * @param {Array} array The array to flatten. - * @param {boolean} isDeep Specify a deep flatten. - * @param {boolean} isStrict Restrict flattening to arrays and `arguments` objects. - * @param {number} fromIndex The index to start from. - * @returns {Array} Returns the new flattened array. - */ - function baseFlatten(array, isDeep, isStrict, fromIndex) { - var index = fromIndex - 1, - length = array.length, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index]; - - if (isObjectLike(value) && isLength(value.length) && (isArray(value) || isArguments(value))) { - if (isDeep) { - // Recursively flatten arrays (susceptible to call stack limits). - value = baseFlatten(value, isDeep, isStrict, 0); - } - var valIndex = -1, - valLength = value.length; - - result.length += valLength; - while (++valIndex < valLength) { - result[++resIndex] = value[valIndex]; - } - } else if (!isStrict) { - result[++resIndex] = value; - } - } - return result; - } - - /** - * The base implementation of `baseForIn` and `baseForOwn` which iterates - * over `object` properties returned by `keysFunc` invoking `iteratee` for - * each property. Iterator functions may exit iteration early by explicitly - * returning `false`. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - function baseFor(object, iteratee, keysFunc) { - var index = -1, - iterable = toObject(object), - props = keysFunc(object), - length = props.length; - - while (++index < length) { - var key = props[index]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - } - - /** - * This function is like `baseFor` except that it iterates over properties - * in the opposite order. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {Function} keysFunc The function to get the keys of `object`. - * @returns {Object} Returns `object`. - */ - function baseForRight(object, iteratee, keysFunc) { - var iterable = toObject(object), - props = keysFunc(object), - length = props.length; - - while (length--) { - var key = props[length]; - if (iteratee(iterable[key], key, iterable) === false) { - break; - } - } - return object; - } - - /** - * The base implementation of `_.forIn` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForIn(object, iteratee) { - return baseFor(object, iteratee, keysIn); - } - - /** - * The base implementation of `_.forOwn` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwn(object, iteratee) { - return baseFor(object, iteratee, keys); - } - - /** - * The base implementation of `_.forOwnRight` without support for callback - * shorthands and `this` binding. - * - * @private - * @param {Object} object The object to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Object} Returns `object`. - */ - function baseForOwnRight(object, iteratee) { - return baseForRight(object, iteratee, keys); - } - - /** - * The base implementation of `_.functions` which creates an array of - * `object` function property names filtered from those provided. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The property names to filter. - * @returns {Array} Returns the new array of filtered property names. - */ - function baseFunctions(object, props) { - var index = -1, - length = props.length, - resIndex = -1, - result = []; - - while (++index < length) { - var key = props[index]; - if (isFunction(object[key])) { - result[++resIndex] = key; - } - } - return result; - } - - /** - * The base implementation of `_.invoke` which requires additional arguments - * to be provided as an array of arguments rather than individually. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {Array} [args] The arguments to invoke the method with. - * @returns {Array} Returns the array of results. - */ - function baseInvoke(collection, methodName, args) { - var index = -1, - isFunc = typeof methodName == 'function', - length = collection ? collection.length : 0, - result = isLength(length) ? Array(length) : []; - - baseEach(collection, function(value) { - var func = isFunc ? methodName : (value != null && value[methodName]); - result[++index] = func ? func.apply(value, args) : undefined; - }); - return result; - } - - /** - * The base implementation of `_.isEqual` without support for `this` binding - * `customizer` functions. - * - * @private - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparing values. - * @param {boolean} [isWhere] Specify performing partial comparisons. - * @param {Array} [stackA] Tracks traversed `value` objects. - * @param {Array} [stackB] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - */ - function baseIsEqual(value, other, customizer, isWhere, stackA, stackB) { - // Exit early for identical values. - if (value === other) { - // Treat `+0` vs. `-0` as not equal. - return value !== 0 || (1 / value == 1 / other); - } - var valType = typeof value, - othType = typeof other; - - // Exit early for unlike primitive values. - if ((valType != 'function' && valType != 'object' && othType != 'function' && othType != 'object') || - value == null || other == null) { - // Return `false` unless both values are `NaN`. - return value !== value && other !== other; - } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, isWhere, stackA, stackB); - } - - /** - * A specialized version of `baseIsEqual` for arrays and objects which performs - * deep comparisons and tracks traversed objects enabling objects with circular - * references to be compared. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparing objects. - * @param {boolean} [isWhere] Specify performing partial comparisons. - * @param {Array} [stackA=[]] Tracks traversed `value` objects. - * @param {Array} [stackB=[]] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseIsEqualDeep(object, other, equalFunc, customizer, isWhere, stackA, stackB) { - var objIsArr = isArray(object), - othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; - - if (!objIsArr) { - objTag = objToString.call(object); - if (objTag == argsTag) { - objTag = objectTag; - } else if (objTag != objectTag) { - objIsArr = isTypedArray(object); - } - } - if (!othIsArr) { - othTag = objToString.call(other); - if (othTag == argsTag) { - othTag = objectTag; - } else if (othTag != objectTag) { - othIsArr = isTypedArray(other); - } - } - var objIsObj = objTag == objectTag, - othIsObj = othTag == objectTag, - isSameTag = objTag == othTag; - - if (isSameTag && !(objIsArr || objIsObj)) { - return equalByTag(object, other, objTag); - } - var valWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), - othWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); - - if (valWrapped || othWrapped) { - return equalFunc(valWrapped ? object.value() : object, othWrapped ? other.value() : other, customizer, isWhere, stackA, stackB); - } - if (!isSameTag) { - return false; - } - // Assume cyclic values are equal. - // For more information on detecting circular references see https://es5.github.io/#JO. - stackA || (stackA = []); - stackB || (stackB = []); - - var length = stackA.length; - while (length--) { - if (stackA[length] == object) { - return stackB[length] == other; - } - } - // Add `object` and `other` to the stack of traversed objects. - stackA.push(object); - stackB.push(other); - - var result = (objIsArr ? equalArrays : equalObjects)(object, other, equalFunc, customizer, isWhere, stackA, stackB); - - stackA.pop(); - stackB.pop(); - - return result; - } - - /** - * The base implementation of `_.isMatch` without support for callback - * shorthands or `this` binding. - * - * @private - * @param {Object} object The object to inspect. - * @param {Array} props The source property names to match. - * @param {Array} values The source values to match. - * @param {Array} strictCompareFlags Strict comparison flags for source values. - * @param {Function} [customizer] The function to customize comparing objects. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - */ - function baseIsMatch(object, props, values, strictCompareFlags, customizer) { - var length = props.length; - if (object == null) { - return !length; - } - var index = -1, - noCustomizer = !customizer; - - while (++index < length) { - if ((noCustomizer && strictCompareFlags[index]) - ? values[index] !== object[props[index]] - : !hasOwnProperty.call(object, props[index]) - ) { - return false; - } - } - index = -1; - while (++index < length) { - var key = props[index]; - if (noCustomizer && strictCompareFlags[index]) { - var result = hasOwnProperty.call(object, key); - } else { - var objValue = object[key], - srcValue = values[index]; - - result = customizer ? customizer(objValue, srcValue, key) : undefined; - if (typeof result == 'undefined') { - result = baseIsEqual(srcValue, objValue, customizer, true); - } - } - if (!result) { - return false; - } - } - return true; - } - - /** - * The base implementation of `_.map` without support for callback shorthands - * or `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @returns {Array} Returns the new mapped array. - */ - function baseMap(collection, iteratee) { - var result = []; - baseEach(collection, function(value, key, collection) { - result.push(iteratee(value, key, collection)); - }); - return result; - } - - /** - * The base implementation of `_.matches` which does not clone `source`. - * - * @private - * @param {Object} source The object of property values to match. - * @returns {Function} Returns the new function. - */ - function baseMatches(source) { - var props = keys(source), - length = props.length; - - if (length == 1) { - var key = props[0], - value = source[key]; - - if (isStrictComparable(value)) { - return function(object) { - return object != null && object[key] === value && hasOwnProperty.call(object, key); - }; - } - } - var values = Array(length), - strictCompareFlags = Array(length); - - while (length--) { - value = source[props[length]]; - values[length] = value; - strictCompareFlags[length] = isStrictComparable(value); - } - return function(object) { - return baseIsMatch(object, props, values, strictCompareFlags); - }; - } - - /** - * The base implementation of `_.matchesProperty` which does not coerce `key` - * to a string. - * - * @private - * @param {string} key The key of the property to get. - * @param {*} value The value to compare. - * @returns {Function} Returns the new function. - */ - function baseMatchesProperty(key, value) { - if (isStrictComparable(value)) { - return function(object) { - return object != null && object[key] === value; - }; - } - return function(object) { - return object != null && baseIsEqual(value, object[key], null, true); - }; - } - - /** - * The base implementation of `_.merge` without support for argument juggling, - * multiple sources, and `this` binding `customizer` functions. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {Function} [customizer] The function to customize merging properties. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - * @returns {Object} Returns the destination object. - */ - function baseMerge(object, source, customizer, stackA, stackB) { - if (!isObject(object)) { - return object; - } - var isSrcArr = isLength(source.length) && (isArray(source) || isTypedArray(source)); - (isSrcArr ? arrayEach : baseForOwn)(source, function(srcValue, key, source) { - if (isObjectLike(srcValue)) { - stackA || (stackA = []); - stackB || (stackB = []); - return baseMergeDeep(object, source, key, baseMerge, customizer, stackA, stackB); - } - var value = object[key], - result = customizer ? customizer(value, srcValue, key, object, source) : undefined, - isCommon = typeof result == 'undefined'; - - if (isCommon) { - result = srcValue; - } - if ((isSrcArr || typeof result != 'undefined') && - (isCommon || (result === result ? (result !== value) : (value === value)))) { - object[key] = result; - } - }); - return object; - } - - /** - * A specialized version of `baseMerge` for arrays and objects which performs - * deep merges and tracks traversed objects enabling objects with circular - * references to be merged. - * - * @private - * @param {Object} object The destination object. - * @param {Object} source The source object. - * @param {string} key The key of the value to merge. - * @param {Function} mergeFunc The function to merge values. - * @param {Function} [customizer] The function to customize merging properties. - * @param {Array} [stackA=[]] Tracks traversed source objects. - * @param {Array} [stackB=[]] Associates values with source counterparts. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function baseMergeDeep(object, source, key, mergeFunc, customizer, stackA, stackB) { - var length = stackA.length, - srcValue = source[key]; - - while (length--) { - if (stackA[length] == srcValue) { - object[key] = stackB[length]; - return; - } - } - var value = object[key], - result = customizer ? customizer(value, srcValue, key, object, source) : undefined, - isCommon = typeof result == 'undefined'; - - if (isCommon) { - result = srcValue; - if (isLength(srcValue.length) && (isArray(srcValue) || isTypedArray(srcValue))) { - result = isArray(value) - ? value - : (value ? arrayCopy(value) : []); - } - else if (isPlainObject(srcValue) || isArguments(srcValue)) { - result = isArguments(value) - ? toPlainObject(value) - : (isPlainObject(value) ? value : {}); - } - else { - isCommon = false; - } - } - // Add the source value to the stack of traversed objects and associate - // it with its merged value. - stackA.push(srcValue); - stackB.push(result); - - if (isCommon) { - // Recursively merge objects and arrays (susceptible to call stack limits). - object[key] = mergeFunc(result, srcValue, customizer, stackA, stackB); - } else if (result === result ? (result !== value) : (value === value)) { - object[key] = result; - } - } - - /** - * The base implementation of `_.property` which does not coerce `key` to a string. - * - * @private - * @param {string} key The key of the property to get. - * @returns {Function} Returns the new function. - */ - function baseProperty(key) { - return function(object) { - return object == null ? undefined : object[key]; - }; - } - - /** - * The base implementation of `_.pullAt` without support for individual - * index arguments. - * - * @private - * @param {Array} array The array to modify. - * @param {number[]} indexes The indexes of elements to remove. - * @returns {Array} Returns the new array of removed elements. - */ - function basePullAt(array, indexes) { - var length = indexes.length, - result = baseAt(array, indexes); - - indexes.sort(baseCompareAscending); - while (length--) { - var index = parseFloat(indexes[length]); - if (index != previous && isIndex(index)) { - var previous = index; - splice.call(array, index, 1); - } - } - return result; - } - - /** - * The base implementation of `_.random` without support for argument juggling - * and returning floating-point numbers. - * - * @private - * @param {number} min The minimum possible value. - * @param {number} max The maximum possible value. - * @returns {number} Returns the random number. - */ - function baseRandom(min, max) { - return min + floor(nativeRandom() * (max - min + 1)); - } - - /** - * The base implementation of `_.reduce` and `_.reduceRight` without support - * for callback shorthands or `this` binding, which iterates over `collection` - * using the provided `eachFunc`. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {*} accumulator The initial value. - * @param {boolean} initFromCollection Specify using the first or last element - * of `collection` as the initial value. - * @param {Function} eachFunc The function to iterate over `collection`. - * @returns {*} Returns the accumulated value. - */ - function baseReduce(collection, iteratee, accumulator, initFromCollection, eachFunc) { - eachFunc(collection, function(value, index, collection) { - accumulator = initFromCollection - ? (initFromCollection = false, value) - : iteratee(accumulator, value, index, collection); - }); - return accumulator; - } - - /** - * The base implementation of `setData` without support for hot loop detection. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var baseSetData = !metaMap ? identity : function(func, data) { - metaMap.set(func, data); - return func; - }; - - /** - * The base implementation of `_.slice` without an iteratee call guard. - * - * @private - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function baseSlice(array, start, end) { - var index = -1, - length = array.length; - - start = start == null ? 0 : (+start || 0); - if (start < 0) { - start = -start > length ? 0 : (length + start); - } - end = (typeof end == 'undefined' || end > length) ? length : (+end || 0); - if (end < 0) { - end += length; - } - length = start > end ? 0 : ((end - start) >>> 0); - start >>>= 0; - - var result = Array(length); - while (++index < length) { - result[index] = array[index + start]; - } - return result; - } - - /** - * The base implementation of `_.some` without support for callback shorthands - * or `this` binding. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} predicate The function invoked per iteration. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - */ - function baseSome(collection, predicate) { - var result; - - baseEach(collection, function(value, index, collection) { - result = predicate(value, index, collection); - return !result; - }); - return !!result; - } - - /** - * The base implementation of `_.sortBy` which uses `comparer` to define - * the sort order of `array` and replaces criteria objects with their - * corresponding values. - * - * @private - * @param {Array} array The array to sort. - * @param {Function} comparer The function to define sort order. - * @returns {Array} Returns `array`. - */ - function baseSortBy(array, comparer) { - var length = array.length; - - array.sort(comparer); - while (length--) { - array[length] = array[length].value; - } - return array; - } - - /** - * The base implementation of `_.sortByOrder` without param guards. - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string[]} props The property names to sort by. - * @param {boolean[]} orders The sort orders of `props`. - * @returns {Array} Returns the new sorted array. - */ - function baseSortByOrder(collection, props, orders) { - var index = -1, - length = collection.length, - result = isLength(length) ? Array(length) : []; - - baseEach(collection, function(value) { - var length = props.length, - criteria = Array(length); - - while (length--) { - criteria[length] = value == null ? undefined : value[props[length]]; - } - result[++index] = { 'criteria': criteria, 'index': index, 'value': value }; - }); - - return baseSortBy(result, function(object, other) { - return compareMultiple(object, other, orders); - }); - } - - /** - * The base implementation of `_.uniq` without support for callback shorthands - * and `this` binding. - * - * @private - * @param {Array} array The array to inspect. - * @param {Function} [iteratee] The function invoked per iteration. - * @returns {Array} Returns the new duplicate-value-free array. - */ - function baseUniq(array, iteratee) { - var index = -1, - indexOf = getIndexOf(), - length = array.length, - isCommon = indexOf == baseIndexOf, - isLarge = isCommon && length >= 200, - seen = isLarge ? createCache() : null, - result = []; - - if (seen) { - indexOf = cacheIndexOf; - isCommon = false; - } else { - isLarge = false; - seen = iteratee ? [] : result; - } - outer: - while (++index < length) { - var value = array[index], - computed = iteratee ? iteratee(value, index, array) : value; - - if (isCommon && value === value) { - var seenIndex = seen.length; - while (seenIndex--) { - if (seen[seenIndex] === computed) { - continue outer; - } - } - if (iteratee) { - seen.push(computed); - } - result.push(value); - } - else if (indexOf(seen, computed, 0) < 0) { - if (iteratee || isLarge) { - seen.push(computed); - } - result.push(value); - } - } - return result; - } - - /** - * The base implementation of `_.values` and `_.valuesIn` which creates an - * array of `object` property values corresponding to the property names - * returned by `keysFunc`. - * - * @private - * @param {Object} object The object to query. - * @param {Array} props The property names to get values for. - * @returns {Object} Returns the array of property values. - */ - function baseValues(object, props) { - var index = -1, - length = props.length, - result = Array(length); - - while (++index < length) { - result[index] = object[props[index]]; - } - return result; - } - - /** - * The base implementation of `wrapperValue` which returns the result of - * performing a sequence of actions on the unwrapped `value`, where each - * successive action is supplied the return value of the previous. - * - * @private - * @param {*} value The unwrapped value. - * @param {Array} actions Actions to peform to resolve the unwrapped value. - * @returns {*} Returns the resolved unwrapped value. - */ - function baseWrapperValue(value, actions) { - var result = value; - if (result instanceof LazyWrapper) { - result = result.value(); - } - var index = -1, - length = actions.length; - - while (++index < length) { - var args = [result], - action = actions[index]; - - push.apply(args, action.args); - result = action.func.apply(action.thisArg, args); - } - return result; - } - - /** - * Performs a binary search of `array` to determine the index at which `value` - * should be inserted into `array` in order to maintain its sort order. - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {boolean} [retHighest] Specify returning the highest, instead - * of the lowest, index at which a value should be inserted into `array`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function binaryIndex(array, value, retHighest) { - var low = 0, - high = array ? array.length : low; - - if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) { - while (low < high) { - var mid = (low + high) >>> 1, - computed = array[mid]; - - if (retHighest ? (computed <= value) : (computed < value)) { - low = mid + 1; - } else { - high = mid; - } - } - return high; - } - return binaryIndexBy(array, value, identity, retHighest); - } - - /** - * This function is like `binaryIndex` except that it invokes `iteratee` for - * `value` and each element of `array` to compute their sort ranking. The - * iteratee is invoked with one argument; (value). - * - * @private - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function} iteratee The function invoked per iteration. - * @param {boolean} [retHighest] Specify returning the highest, instead - * of the lowest, index at which a value should be inserted into `array`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - */ - function binaryIndexBy(array, value, iteratee, retHighest) { - value = iteratee(value); - - var low = 0, - high = array ? array.length : 0, - valIsNaN = value !== value, - valIsUndef = typeof value == 'undefined'; - - while (low < high) { - var mid = floor((low + high) / 2), - computed = iteratee(array[mid]), - isReflexive = computed === computed; - - if (valIsNaN) { - var setLow = isReflexive || retHighest; - } else if (valIsUndef) { - setLow = isReflexive && (retHighest || typeof computed != 'undefined'); - } else { - setLow = retHighest ? (computed <= value) : (computed < value); - } - if (setLow) { - low = mid + 1; - } else { - high = mid; - } - } - return nativeMin(high, MAX_ARRAY_INDEX); - } - - /** - * A specialized version of `baseCallback` which only supports `this` binding - * and specifying the number of arguments to provide to `func`. - * - * @private - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {number} [argCount] The number of arguments to provide to `func`. - * @returns {Function} Returns the callback. - */ - function bindCallback(func, thisArg, argCount) { - if (typeof func != 'function') { - return identity; - } - if (typeof thisArg == 'undefined') { - return func; - } - switch (argCount) { - case 1: return function(value) { - return func.call(thisArg, value); - }; - case 3: return function(value, index, collection) { - return func.call(thisArg, value, index, collection); - }; - case 4: return function(accumulator, value, index, collection) { - return func.call(thisArg, accumulator, value, index, collection); - }; - case 5: return function(value, other, key, object, source) { - return func.call(thisArg, value, other, key, object, source); - }; - } - return function() { - return func.apply(thisArg, arguments); - }; - } - - /** - * Creates a clone of the given array buffer. - * - * @private - * @param {ArrayBuffer} buffer The array buffer to clone. - * @returns {ArrayBuffer} Returns the cloned array buffer. - */ - function bufferClone(buffer) { - return bufferSlice.call(buffer, 0); - } - if (!bufferSlice) { - // PhantomJS has `ArrayBuffer` and `Uint8Array` but not `Float64Array`. - bufferClone = !(ArrayBuffer && Uint8Array) ? constant(null) : function(buffer) { - var byteLength = buffer.byteLength, - floatLength = Float64Array ? floor(byteLength / FLOAT64_BYTES_PER_ELEMENT) : 0, - offset = floatLength * FLOAT64_BYTES_PER_ELEMENT, - result = new ArrayBuffer(byteLength); - - if (floatLength) { - var view = new Float64Array(result, 0, floatLength); - view.set(new Float64Array(buffer, 0, floatLength)); - } - if (byteLength != offset) { - view = new Uint8Array(result, offset); - view.set(new Uint8Array(buffer, offset)); - } - return result; - }; - } - - /** - * Creates an array that is the composition of partially applied arguments, - * placeholders, and provided arguments into a single array of arguments. - * - * @private - * @param {Array|Object} args The provided arguments. - * @param {Array} partials The arguments to prepend to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgs(args, partials, holders) { - var holdersLength = holders.length, - argsIndex = -1, - argsLength = nativeMax(args.length - holdersLength, 0), - leftIndex = -1, - leftLength = partials.length, - result = Array(argsLength + leftLength); - - while (++leftIndex < leftLength) { - result[leftIndex] = partials[leftIndex]; - } - while (++argsIndex < holdersLength) { - result[holders[argsIndex]] = args[argsIndex]; - } - while (argsLength--) { - result[leftIndex++] = args[argsIndex++]; - } - return result; - } - - /** - * This function is like `composeArgs` except that the arguments composition - * is tailored for `_.partialRight`. - * - * @private - * @param {Array|Object} args The provided arguments. - * @param {Array} partials The arguments to append to those provided. - * @param {Array} holders The `partials` placeholder indexes. - * @returns {Array} Returns the new array of composed arguments. - */ - function composeArgsRight(args, partials, holders) { - var holdersIndex = -1, - holdersLength = holders.length, - argsIndex = -1, - argsLength = nativeMax(args.length - holdersLength, 0), - rightIndex = -1, - rightLength = partials.length, - result = Array(argsLength + rightLength); - - while (++argsIndex < argsLength) { - result[argsIndex] = args[argsIndex]; - } - var pad = argsIndex; - while (++rightIndex < rightLength) { - result[pad + rightIndex] = partials[rightIndex]; - } - while (++holdersIndex < holdersLength) { - result[pad + holders[holdersIndex]] = args[argsIndex++]; - } - return result; - } - - /** - * Creates a function that aggregates a collection, creating an accumulator - * object composed from the results of running each element in the collection - * through an iteratee. - * - * @private - * @param {Function} setter The function to set keys and values of the accumulator object. - * @param {Function} [initializer] The function to initialize the accumulator object. - * @returns {Function} Returns the new aggregator function. - */ - function createAggregator(setter, initializer) { - return function(collection, iteratee, thisArg) { - var result = initializer ? initializer() : {}; - iteratee = getCallback(iteratee, thisArg, 3); - - if (isArray(collection)) { - var index = -1, - length = collection.length; - - while (++index < length) { - var value = collection[index]; - setter(result, value, iteratee(value, index, collection), collection); - } - } else { - baseEach(collection, function(value, key, collection) { - setter(result, value, iteratee(value, key, collection), collection); - }); - } - return result; - }; - } - - /** - * Creates a function that assigns properties of source object(s) to a given - * destination object. - * - * @private - * @param {Function} assigner The function to assign values. - * @returns {Function} Returns the new assigner function. - */ - function createAssigner(assigner) { - return function() { - var args = arguments, - length = args.length, - object = args[0]; - - if (length < 2 || object == null) { - return object; - } - var customizer = args[length - 2], - thisArg = args[length - 1], - guard = args[3]; - - if (length > 3 && typeof customizer == 'function') { - customizer = bindCallback(customizer, thisArg, 5); - length -= 2; - } else { - customizer = (length > 2 && typeof thisArg == 'function') ? thisArg : null; - length -= (customizer ? 1 : 0); - } - if (guard && isIterateeCall(args[1], args[2], guard)) { - customizer = length == 3 ? null : customizer; - length = 2; - } - var index = 0; - while (++index < length) { - var source = args[index]; - if (source) { - assigner(object, source, customizer); - } - } - return object; - }; - } - - /** - * Creates a function that wraps `func` and invokes it with the `this` - * binding of `thisArg`. - * - * @private - * @param {Function} func The function to bind. - * @param {*} [thisArg] The `this` binding of `func`. - * @returns {Function} Returns the new bound function. - */ - function createBindWrapper(func, thisArg) { - var Ctor = createCtorWrapper(func); - - function wrapper() { - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(thisArg, arguments); - } - return wrapper; - } - - /** - * Creates a `Set` cache object to optimize linear searches of large arrays. - * - * @private - * @param {Array} [values] The values to cache. - * @returns {null|Object} Returns the new cache object if `Set` is supported, else `null`. - */ - var createCache = !(nativeCreate && Set) ? constant(null) : function(values) { - return new SetCache(values); - }; - - /** - * Creates a function to compose other functions into a single function. - * - * @private - * @param {boolean} [fromRight] Specify iterating from right to left. - * @returns {Function} Returns the new composer function. - */ - function createComposer(fromRight) { - return function() { - var length = arguments.length, - index = length, - fromIndex = fromRight ? (length - 1) : 0; - - if (!length) { - return function() { return arguments[0]; }; - } - var funcs = Array(length); - while (index--) { - funcs[index] = arguments[index]; - if (typeof funcs[index] != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - } - return function() { - var index = fromIndex, - result = funcs[index].apply(this, arguments); - - while ((fromRight ? index-- : ++index < length)) { - result = funcs[index].call(this, result); - } - return result; - }; - }; - } - - /** - * Creates a function that produces compound words out of the words in a - * given string. - * - * @private - * @param {Function} callback The function to combine each word. - * @returns {Function} Returns the new compounder function. - */ - function createCompounder(callback) { - return function(string) { - var index = -1, - array = words(deburr(string)), - length = array.length, - result = ''; - - while (++index < length) { - result = callback(result, array[index], index); - } - return result; - }; - } - - /** - * Creates a function that produces an instance of `Ctor` regardless of - * whether it was invoked as part of a `new` expression or by `call` or `apply`. - * - * @private - * @param {Function} Ctor The constructor to wrap. - * @returns {Function} Returns the new wrapped function. - */ - function createCtorWrapper(Ctor) { - return function() { - var thisBinding = baseCreate(Ctor.prototype), - result = Ctor.apply(thisBinding, arguments); - - // Mimic the constructor's `return` behavior. - // See https://es5.github.io/#x13.2.2 for more details. - return isObject(result) ? result : thisBinding; - }; - } - - /** - * Creates a function that gets the extremum value of a collection. - * - * @private - * @param {Function} arrayFunc The function to get the extremum value from an array. - * @param {boolean} [isMin] Specify returning the minimum, instead of the maximum, - * extremum value. - * @returns {Function} Returns the new extremum function. - */ - function createExtremum(arrayFunc, isMin) { - return function(collection, iteratee, thisArg) { - if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { - iteratee = null; - } - var func = getCallback(), - noIteratee = iteratee == null; - - if (!(func === baseCallback && noIteratee)) { - noIteratee = false; - iteratee = func(iteratee, thisArg, 3); - } - if (noIteratee) { - var isArr = isArray(collection); - if (!isArr && isString(collection)) { - iteratee = charAtCallback; - } else { - return arrayFunc(isArr ? collection : toIterable(collection)); - } - } - return extremumBy(collection, iteratee, isMin); - }; - } - - /** - * Creates a function that wraps `func` and invokes it with optional `this` - * binding of, partial application, and currying. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to prepend to those provided to the new function. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [partialsRight] The arguments to append to those provided to the new function. - * @param {Array} [holdersRight] The `partialsRight` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createHybridWrapper(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) { - var isAry = bitmask & ARY_FLAG, - isBind = bitmask & BIND_FLAG, - isBindKey = bitmask & BIND_KEY_FLAG, - isCurry = bitmask & CURRY_FLAG, - isCurryBound = bitmask & CURRY_BOUND_FLAG, - isCurryRight = bitmask & CURRY_RIGHT_FLAG; - - var Ctor = !isBindKey && createCtorWrapper(func), - key = func; - - function wrapper() { - // Avoid `arguments` object use disqualifying optimizations by - // converting it to an array before providing it to other functions. - var length = arguments.length, - index = length, - args = Array(length); - - while (index--) { - args[index] = arguments[index]; - } - if (partials) { - args = composeArgs(args, partials, holders); - } - if (partialsRight) { - args = composeArgsRight(args, partialsRight, holdersRight); - } - if (isCurry || isCurryRight) { - var placeholder = wrapper.placeholder, - argsHolders = replaceHolders(args, placeholder); - - length -= argsHolders.length; - if (length < arity) { - var newArgPos = argPos ? arrayCopy(argPos) : null, - newArity = nativeMax(arity - length, 0), - newsHolders = isCurry ? argsHolders : null, - newHoldersRight = isCurry ? null : argsHolders, - newPartials = isCurry ? args : null, - newPartialsRight = isCurry ? null : args; - - bitmask |= (isCurry ? PARTIAL_FLAG : PARTIAL_RIGHT_FLAG); - bitmask &= ~(isCurry ? PARTIAL_RIGHT_FLAG : PARTIAL_FLAG); - - if (!isCurryBound) { - bitmask &= ~(BIND_FLAG | BIND_KEY_FLAG); - } - var result = createHybridWrapper(func, bitmask, thisArg, newPartials, newsHolders, newPartialsRight, newHoldersRight, newArgPos, ary, newArity); - result.placeholder = placeholder; - return result; - } - } - var thisBinding = isBind ? thisArg : this; - if (isBindKey) { - func = thisBinding[key]; - } - if (argPos) { - args = reorder(args, argPos); - } - if (isAry && ary < args.length) { - args.length = ary; - } - var fn = (this && this !== root && this instanceof wrapper) ? (Ctor || createCtorWrapper(func)) : func; - return fn.apply(thisBinding, args); - } - return wrapper; - } - - /** - * Creates the pad required for `string` based on the given padding length. - * The `chars` string may be truncated if the number of padding characters - * exceeds the padding length. - * - * @private - * @param {string} string The string to create padding for. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the pad for `string`. - */ - function createPad(string, length, chars) { - var strLength = string.length; - length = +length; - - if (strLength >= length || !nativeIsFinite(length)) { - return ''; - } - var padLength = length - strLength; - chars = chars == null ? ' ' : (chars + ''); - return repeat(chars, ceil(padLength / chars.length)).slice(0, padLength); - } - - /** - * Creates a function that wraps `func` and invokes it with the optional `this` - * binding of `thisArg` and the `partials` prepended to those provided to - * the wrapper. - * - * @private - * @param {Function} func The function to partially apply arguments to. - * @param {number} bitmask The bitmask of flags. See `createWrapper` for more details. - * @param {*} thisArg The `this` binding of `func`. - * @param {Array} partials The arguments to prepend to those provided to the new function. - * @returns {Function} Returns the new bound function. - */ - function createPartialWrapper(func, bitmask, thisArg, partials) { - var isBind = bitmask & BIND_FLAG, - Ctor = createCtorWrapper(func); - - function wrapper() { - // Avoid `arguments` object use disqualifying optimizations by - // converting it to an array before providing it `func`. - var argsIndex = -1, - argsLength = arguments.length, - leftIndex = -1, - leftLength = partials.length, - args = Array(argsLength + leftLength); - - while (++leftIndex < leftLength) { - args[leftIndex] = partials[leftIndex]; - } - while (argsLength--) { - args[leftIndex++] = arguments[++argsIndex]; - } - var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func; - return fn.apply(isBind ? thisArg : this, args); - } - return wrapper; - } - - /** - * Creates a function that either curries or invokes `func` with optional - * `this` binding and partially applied arguments. - * - * @private - * @param {Function|string} func The function or method name to reference. - * @param {number} bitmask The bitmask of flags. - * The bitmask may be composed of the following flags: - * 1 - `_.bind` - * 2 - `_.bindKey` - * 4 - `_.curry` or `_.curryRight` of a bound function - * 8 - `_.curry` - * 16 - `_.curryRight` - * 32 - `_.partial` - * 64 - `_.partialRight` - * 128 - `_.rearg` - * 256 - `_.ary` - * @param {*} [thisArg] The `this` binding of `func`. - * @param {Array} [partials] The arguments to be partially applied. - * @param {Array} [holders] The `partials` placeholder indexes. - * @param {Array} [argPos] The argument positions of the new function. - * @param {number} [ary] The arity cap of `func`. - * @param {number} [arity] The arity of `func`. - * @returns {Function} Returns the new wrapped function. - */ - function createWrapper(func, bitmask, thisArg, partials, holders, argPos, ary, arity) { - var isBindKey = bitmask & BIND_KEY_FLAG; - if (!isBindKey && typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - var length = partials ? partials.length : 0; - if (!length) { - bitmask &= ~(PARTIAL_FLAG | PARTIAL_RIGHT_FLAG); - partials = holders = null; - } - length -= (holders ? holders.length : 0); - if (bitmask & PARTIAL_RIGHT_FLAG) { - var partialsRight = partials, - holdersRight = holders; - - partials = holders = null; - } - var data = !isBindKey && getData(func), - newData = [func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity]; - - if (data && data !== true) { - mergeData(newData, data); - bitmask = newData[1]; - arity = newData[9]; - } - newData[9] = arity == null - ? (isBindKey ? 0 : func.length) - : (nativeMax(arity - length, 0) || 0); - - if (bitmask == BIND_FLAG) { - var result = createBindWrapper(newData[0], newData[2]); - } else if ((bitmask == PARTIAL_FLAG || bitmask == (BIND_FLAG | PARTIAL_FLAG)) && !newData[4].length) { - result = createPartialWrapper.apply(undefined, newData); - } else { - result = createHybridWrapper.apply(undefined, newData); - } - var setter = data ? baseSetData : setData; - return setter(result, newData); - } - - /** - * A specialized version of `baseIsEqualDeep` for arrays with support for - * partial deep comparisons. - * - * @private - * @param {Array} array The array to compare. - * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparing arrays. - * @param {boolean} [isWhere] Specify performing partial comparisons. - * @param {Array} [stackA] Tracks traversed `value` objects. - * @param {Array} [stackB] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. - */ - function equalArrays(array, other, equalFunc, customizer, isWhere, stackA, stackB) { - var index = -1, - arrLength = array.length, - othLength = other.length, - result = true; - - if (arrLength != othLength && !(isWhere && othLength > arrLength)) { - return false; - } - // Deep compare the contents, ignoring non-numeric properties. - while (result && ++index < arrLength) { - var arrValue = array[index], - othValue = other[index]; - - result = undefined; - if (customizer) { - result = isWhere - ? customizer(othValue, arrValue, index) - : customizer(arrValue, othValue, index); - } - if (typeof result == 'undefined') { - // Recursively compare arrays (susceptible to call stack limits). - if (isWhere) { - var othIndex = othLength; - while (othIndex--) { - othValue = other[othIndex]; - result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); - if (result) { - break; - } - } - } else { - result = (arrValue && arrValue === othValue) || equalFunc(arrValue, othValue, customizer, isWhere, stackA, stackB); - } - } - } - return !!result; - } - - /** - * A specialized version of `baseIsEqualDeep` for comparing objects of - * the same `toStringTag`. - * - * **Note:** This function only supports comparing values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * @private - * @param {Object} value The object to compare. - * @param {Object} other The other object to compare. - * @param {string} tag The `toStringTag` of the objects to compare. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalByTag(object, other, tag) { - switch (tag) { - case boolTag: - case dateTag: - // Coerce dates and booleans to numbers, dates to milliseconds and booleans - // to `1` or `0` treating invalid dates coerced to `NaN` as not equal. - return +object == +other; - - case errorTag: - return object.name == other.name && object.message == other.message; - - case numberTag: - // Treat `NaN` vs. `NaN` as equal. - return (object != +object) - ? other != +other - // But, treat `-0` vs. `+0` as not equal. - : (object == 0 ? ((1 / object) == (1 / other)) : object == +other); - - case regexpTag: - case stringTag: - // Coerce regexes to strings and treat strings primitives and string - // objects as equal. See https://es5.github.io/#x15.10.6.4 for more details. - return object == (other + ''); - } - return false; - } - - /** - * A specialized version of `baseIsEqualDeep` for objects with support for - * partial deep comparisons. - * - * @private - * @param {Object} object The object to compare. - * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparing values. - * @param {boolean} [isWhere] Specify performing partial comparisons. - * @param {Array} [stackA] Tracks traversed `value` objects. - * @param {Array} [stackB] Tracks traversed `other` objects. - * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. - */ - function equalObjects(object, other, equalFunc, customizer, isWhere, stackA, stackB) { - var objProps = keys(object), - objLength = objProps.length, - othProps = keys(other), - othLength = othProps.length; - - if (objLength != othLength && !isWhere) { - return false; - } - var hasCtor, - index = -1; - - while (++index < objLength) { - var key = objProps[index], - result = hasOwnProperty.call(other, key); - - if (result) { - var objValue = object[key], - othValue = other[key]; - - result = undefined; - if (customizer) { - result = isWhere - ? customizer(othValue, objValue, key) - : customizer(objValue, othValue, key); - } - if (typeof result == 'undefined') { - // Recursively compare objects (susceptible to call stack limits). - result = (objValue && objValue === othValue) || equalFunc(objValue, othValue, customizer, isWhere, stackA, stackB); - } - } - if (!result) { - return false; - } - hasCtor || (hasCtor = key == 'constructor'); - } - if (!hasCtor) { - var objCtor = object.constructor, - othCtor = other.constructor; - - // Non `Object` object instances with different constructors are not equal. - if (objCtor != othCtor && - ('constructor' in object && 'constructor' in other) && - !(typeof objCtor == 'function' && objCtor instanceof objCtor && - typeof othCtor == 'function' && othCtor instanceof othCtor)) { - return false; - } - } - return true; - } - - /** - * Gets the extremum value of `collection` invoking `iteratee` for each value - * in `collection` to generate the criterion by which the value is ranked. - * The `iteratee` is invoked with three arguments; (value, index, collection). - * - * @private - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} iteratee The function invoked per iteration. - * @param {boolean} [isMin] Specify returning the minimum, instead of the - * maximum, extremum value. - * @returns {*} Returns the extremum value. - */ - function extremumBy(collection, iteratee, isMin) { - var exValue = isMin ? POSITIVE_INFINITY : NEGATIVE_INFINITY, - computed = exValue, - result = computed; - - baseEach(collection, function(value, index, collection) { - var current = iteratee(value, index, collection); - if ((isMin ? (current < computed) : (current > computed)) || - (current === exValue && current === result)) { - computed = current; - result = value; - } - }); - return result; - } - - /** - * Gets the appropriate "callback" function. If the `_.callback` method is - * customized this function returns the custom method, otherwise it returns - * the `baseCallback` function. If arguments are provided the chosen function - * is invoked with them and its result is returned. - * - * @private - * @returns {Function} Returns the chosen function or its result. - */ - function getCallback(func, thisArg, argCount) { - var result = lodash.callback || callback; - result = result === callback ? baseCallback : result; - return argCount ? result(func, thisArg, argCount) : result; - } - - /** - * Gets metadata for `func`. - * - * @private - * @param {Function} func The function to query. - * @returns {*} Returns the metadata for `func`. - */ - var getData = !metaMap ? noop : function(func) { - return metaMap.get(func); - }; - - /** - * Gets the appropriate "indexOf" function. If the `_.indexOf` method is - * customized this function returns the custom method, otherwise it returns - * the `baseIndexOf` function. If arguments are provided the chosen function - * is invoked with them and its result is returned. - * - * @private - * @returns {Function|number} Returns the chosen function or its result. - */ - function getIndexOf(collection, target, fromIndex) { - var result = lodash.indexOf || indexOf; - result = result === indexOf ? baseIndexOf : result; - return collection ? result(collection, target, fromIndex) : result; - } - - /** - * Gets the view, applying any `transforms` to the `start` and `end` positions. - * - * @private - * @param {number} start The start of the view. - * @param {number} end The end of the view. - * @param {Array} [transforms] The transformations to apply to the view. - * @returns {Object} Returns an object containing the `start` and `end` - * positions of the view. - */ - function getView(start, end, transforms) { - var index = -1, - length = transforms ? transforms.length : 0; - - while (++index < length) { - var data = transforms[index], - size = data.size; - - switch (data.type) { - case 'drop': start += size; break; - case 'dropRight': end -= size; break; - case 'take': end = nativeMin(end, start + size); break; - case 'takeRight': start = nativeMax(start, end - size); break; - } - } - return { 'start': start, 'end': end }; - } - - /** - * Initializes an array clone. - * - * @private - * @param {Array} array The array to clone. - * @returns {Array} Returns the initialized clone. - */ - function initCloneArray(array) { - var length = array.length, - result = new array.constructor(length); - - // Add array properties assigned by `RegExp#exec`. - if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) { - result.index = array.index; - result.input = array.input; - } - return result; - } - - /** - * Initializes an object clone. - * - * @private - * @param {Object} object The object to clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneObject(object) { - var Ctor = object.constructor; - if (!(typeof Ctor == 'function' && Ctor instanceof Ctor)) { - Ctor = Object; - } - return new Ctor; - } - - /** - * Initializes an object clone based on its `toStringTag`. - * - * **Note:** This function only supports cloning values with tags of - * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. - * - * - * @private - * @param {Object} object The object to clone. - * @param {string} tag The `toStringTag` of the object to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @returns {Object} Returns the initialized clone. - */ - function initCloneByTag(object, tag, isDeep) { - var Ctor = object.constructor; - switch (tag) { - case arrayBufferTag: - return bufferClone(object); - - case boolTag: - case dateTag: - return new Ctor(+object); - - case float32Tag: case float64Tag: - case int8Tag: case int16Tag: case int32Tag: - case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: - var buffer = object.buffer; - return new Ctor(isDeep ? bufferClone(buffer) : buffer, object.byteOffset, object.length); - - case numberTag: - case stringTag: - return new Ctor(object); - - case regexpTag: - var result = new Ctor(object.source, reFlags.exec(object)); - result.lastIndex = object.lastIndex; - } - return result; - } - - /** - * Checks if `func` is eligible for `this` binding. - * - * @private - * @param {Function} func The function to check. - * @returns {boolean} Returns `true` if `func` is eligible, else `false`. - */ - function isBindable(func) { - var support = lodash.support, - result = !(support.funcNames ? func.name : support.funcDecomp); - - if (!result) { - var source = fnToString.call(func); - if (!support.funcNames) { - result = !reFuncName.test(source); - } - if (!result) { - // Check if `func` references the `this` keyword and store the result. - result = reThis.test(source) || isNative(func); - baseSetData(func, result); - } - } - return result; - } - - /** - * Checks if `value` is a valid array-like index. - * - * @private - * @param {*} value The value to check. - * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index. - * @returns {boolean} Returns `true` if `value` is a valid index, else `false`. - */ - function isIndex(value, length) { - value = +value; - length = length == null ? MAX_SAFE_INTEGER : length; - return value > -1 && value % 1 == 0 && value < length; - } - - /** - * Checks if the provided arguments are from an iteratee call. - * - * @private - * @param {*} value The potential iteratee value argument. - * @param {*} index The potential iteratee index or key argument. - * @param {*} object The potential iteratee object argument. - * @returns {boolean} Returns `true` if the arguments are from an iteratee call, else `false`. - */ - function isIterateeCall(value, index, object) { - if (!isObject(object)) { - return false; - } - var type = typeof index; - if (type == 'number') { - var length = object.length, - prereq = isLength(length) && isIndex(index, length); - } else { - prereq = type == 'string' && index in object; - } - if (prereq) { - var other = object[index]; - return value === value ? (value === other) : (other !== other); - } - return false; - } - - /** - * Checks if `value` is a valid array-like length. - * - * **Note:** This function is based on ES `ToLength`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength) - * for more details. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a valid length, else `false`. - */ - function isLength(value) { - return typeof value == 'number' && value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER; - } - - /** - * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` if suitable for strict - * equality comparisons, else `false`. - */ - function isStrictComparable(value) { - return value === value && (value === 0 ? ((1 / value) > 0) : !isObject(value)); - } - - /** - * Merges the function metadata of `source` into `data`. - * - * Merging metadata reduces the number of wrappers required to invoke a function. - * This is possible because methods like `_.bind`, `_.curry`, and `_.partial` - * may be applied regardless of execution order. Methods like `_.ary` and `_.rearg` - * augment function arguments, making the order in which they are executed important, - * preventing the merging of metadata. However, we make an exception for a safe - * common case where curried functions have `_.ary` and or `_.rearg` applied. - * - * @private - * @param {Array} data The destination metadata. - * @param {Array} source The source metadata. - * @returns {Array} Returns `data`. - */ - function mergeData(data, source) { - var bitmask = data[1], - srcBitmask = source[1], - newBitmask = bitmask | srcBitmask; - - var arityFlags = ARY_FLAG | REARG_FLAG, - bindFlags = BIND_FLAG | BIND_KEY_FLAG, - comboFlags = arityFlags | bindFlags | CURRY_BOUND_FLAG | CURRY_RIGHT_FLAG; - - var isAry = bitmask & ARY_FLAG && !(srcBitmask & ARY_FLAG), - isRearg = bitmask & REARG_FLAG && !(srcBitmask & REARG_FLAG), - argPos = (isRearg ? data : source)[7], - ary = (isAry ? data : source)[8]; - - var isCommon = !(bitmask >= REARG_FLAG && srcBitmask > bindFlags) && - !(bitmask > bindFlags && srcBitmask >= REARG_FLAG); - - var isCombo = (newBitmask >= arityFlags && newBitmask <= comboFlags) && - (bitmask < REARG_FLAG || ((isRearg || isAry) && argPos.length <= ary)); - - // Exit early if metadata can't be merged. - if (!(isCommon || isCombo)) { - return data; - } - // Use source `thisArg` if available. - if (srcBitmask & BIND_FLAG) { - data[2] = source[2]; - // Set when currying a bound function. - newBitmask |= (bitmask & BIND_FLAG) ? 0 : CURRY_BOUND_FLAG; - } - // Compose partial arguments. - var value = source[3]; - if (value) { - var partials = data[3]; - data[3] = partials ? composeArgs(partials, value, source[4]) : arrayCopy(value); - data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : arrayCopy(source[4]); - } - // Compose partial right arguments. - value = source[5]; - if (value) { - partials = data[5]; - data[5] = partials ? composeArgsRight(partials, value, source[6]) : arrayCopy(value); - data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : arrayCopy(source[6]); - } - // Use source `argPos` if available. - value = source[7]; - if (value) { - data[7] = arrayCopy(value); - } - // Use source `ary` if it's smaller. - if (srcBitmask & ARY_FLAG) { - data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]); - } - // Use source `arity` if one is not provided. - if (data[9] == null) { - data[9] = source[9]; - } - // Use source `func` and merge bitmasks. - data[0] = source[0]; - data[1] = newBitmask; - - return data; - } - - /** - * A specialized version of `_.pick` that picks `object` properties specified - * by the `props` array. - * - * @private - * @param {Object} object The source object. - * @param {string[]} props The property names to pick. - * @returns {Object} Returns the new object. - */ - function pickByArray(object, props) { - object = toObject(object); - - var index = -1, - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index]; - if (key in object) { - result[key] = object[key]; - } - } - return result; - } - - /** - * A specialized version of `_.pick` that picks `object` properties `predicate` - * returns truthy for. - * - * @private - * @param {Object} object The source object. - * @param {Function} predicate The function invoked per iteration. - * @returns {Object} Returns the new object. - */ - function pickByCallback(object, predicate) { - var result = {}; - baseForIn(object, function(value, key, object) { - if (predicate(value, key, object)) { - result[key] = value; - } - }); - return result; - } - - /** - * Reorder `array` according to the specified indexes where the element at - * the first index is assigned as the first element, the element at - * the second index is assigned as the second element, and so on. - * - * @private - * @param {Array} array The array to reorder. - * @param {Array} indexes The arranged array indexes. - * @returns {Array} Returns `array`. - */ - function reorder(array, indexes) { - var arrLength = array.length, - length = nativeMin(indexes.length, arrLength), - oldArray = arrayCopy(array); - - while (length--) { - var index = indexes[length]; - array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined; - } - return array; - } - - /** - * Sets metadata for `func`. - * - * **Note:** If this function becomes hot, i.e. is invoked a lot in a short - * period of time, it will trip its breaker and transition to an identity function - * to avoid garbage collection pauses in V8. See [V8 issue 2070](https://code.google.com/p/v8/issues/detail?id=2070) - * for more details. - * - * @private - * @param {Function} func The function to associate metadata with. - * @param {*} data The metadata. - * @returns {Function} Returns `func`. - */ - var setData = (function() { - var count = 0, - lastCalled = 0; - - return function(key, value) { - var stamp = now(), - remaining = HOT_SPAN - (stamp - lastCalled); - - lastCalled = stamp; - if (remaining > 0) { - if (++count >= HOT_COUNT) { - return key; - } - } else { - count = 0; - } - return baseSetData(key, value); - }; - }()); - - /** - * A fallback implementation of `_.isPlainObject` which checks if `value` - * is an object created by the `Object` constructor or has a `[[Prototype]]` - * of `null`. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - */ - function shimIsPlainObject(value) { - var Ctor, - support = lodash.support; - - // Exit early for non `Object` objects. - if (!(isObjectLike(value) && objToString.call(value) == objectTag) || - (!hasOwnProperty.call(value, 'constructor') && - (Ctor = value.constructor, typeof Ctor == 'function' && !(Ctor instanceof Ctor)))) { - return false; - } - // IE < 9 iterates inherited properties before own properties. If the first - // iterated property is an object's own property then there are no inherited - // enumerable properties. - var result; - // In most environments an object's own properties are iterated before - // its inherited properties. If the last iterated property is an object's - // own property then there are no inherited enumerable properties. - baseForIn(value, function(subValue, key) { - result = key; - }); - return typeof result == 'undefined' || hasOwnProperty.call(value, result); - } - - /** - * A fallback implementation of `Object.keys` which creates an array of the - * own enumerable property names of `object`. - * - * @private - * @param {Object} object The object to inspect. - * @returns {Array} Returns the array of property names. - */ - function shimKeys(object) { - var props = keysIn(object), - propsLength = props.length, - length = propsLength && object.length, - support = lodash.support; - - var allowIndexes = length && isLength(length) && - (isArray(object) || (support.nonEnumArgs && isArguments(object))); - - var index = -1, - result = []; - - while (++index < propsLength) { - var key = props[index]; - if ((allowIndexes && isIndex(key, length)) || hasOwnProperty.call(object, key)) { - result.push(key); - } - } - return result; - } - - /** - * Converts `value` to an array-like object if it is not one. - * - * @private - * @param {*} value The value to process. - * @returns {Array|Object} Returns the array-like object. - */ - function toIterable(value) { - if (value == null) { - return []; - } - if (!isLength(value.length)) { - return values(value); - } - return isObject(value) ? value : Object(value); - } - - /** - * Converts `value` to an object if it is not one. - * - * @private - * @param {*} value The value to process. - * @returns {Object} Returns the object. - */ - function toObject(value) { - return isObject(value) ? value : Object(value); - } - - /** - * Creates a clone of `wrapper`. - * - * @private - * @param {Object} wrapper The wrapper to clone. - * @returns {Object} Returns the cloned wrapper. - */ - function wrapperClone(wrapper) { - return wrapper instanceof LazyWrapper - ? wrapper.clone() - : new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__, arrayCopy(wrapper.__actions__)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements split into groups the length of `size`. - * If `collection` can't be split evenly, the final chunk will be the remaining - * elements. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to process. - * @param {number} [size=1] The length of each chunk. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the new array containing chunks. - * @example - * - * _.chunk(['a', 'b', 'c', 'd'], 2); - * // => [['a', 'b'], ['c', 'd']] - * - * _.chunk(['a', 'b', 'c', 'd'], 3); - * // => [['a', 'b', 'c'], ['d']] - */ - function chunk(array, size, guard) { - if (guard ? isIterateeCall(array, size, guard) : size == null) { - size = 1; - } else { - size = nativeMax(+size || 1, 1); - } - var index = 0, - length = array ? array.length : 0, - resIndex = -1, - result = Array(ceil(length / size)); - - while (index < length) { - result[++resIndex] = baseSlice(array, index, (index += size)); - } - return result; - } - - /** - * Creates an array with all falsey values removed. The values `false`, `null`, - * `0`, `""`, `undefined`, and `NaN` are falsey. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to compact. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.compact([0, 1, false, 2, '', 3]); - * // => [1, 2, 3] - */ - function compact(array) { - var index = -1, - length = array ? array.length : 0, - resIndex = -1, - result = []; - - while (++index < length) { - var value = array[index]; - if (value) { - result[++resIndex] = value; - } - } - return result; - } - - /** - * Creates an array excluding all values of the provided arrays using - * `SameValueZero` for equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to inspect. - * @param {...Array} [values] The arrays of values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.difference([1, 2, 3], [4, 2]); - * // => [1, 3] - */ - function difference() { - var args = arguments, - index = -1, - length = args.length; - - while (++index < length) { - var value = args[index]; - if (isArray(value) || isArguments(value)) { - break; - } - } - return baseDifference(value, baseFlatten(args, false, true, ++index)); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the beginning. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.drop([1, 2, 3]); - * // => [2, 3] - * - * _.drop([1, 2, 3], 2); - * // => [3] - * - * _.drop([1, 2, 3], 5); - * // => [] - * - * _.drop([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function drop(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - return baseSlice(array, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements dropped from the end. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to drop. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRight([1, 2, 3]); - * // => [1, 2] - * - * _.dropRight([1, 2, 3], 2); - * // => [1] - * - * _.dropRight([1, 2, 3], 5); - * // => [] - * - * _.dropRight([1, 2, 3], 0); - * // => [1, 2, 3] - */ - function dropRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - n = length - (+n || 0); - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` excluding elements dropped from the end. - * Elements are dropped until `predicate` returns falsey. The predicate is - * bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that match the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropRightWhile([1, 2, 3], function(n) { - * return n > 1; - * }); - * // => [1] - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.dropRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); - * // => ['barney', 'fred'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.dropRightWhile(users, 'active', false), 'user'); - * // => ['barney'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.dropRightWhile(users, 'active'), 'user'); - * // => ['barney', 'fred', 'pebbles'] - */ - function dropRightWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - predicate = getCallback(predicate, thisArg, 3); - while (length-- && predicate(array[length], length, array)) {} - return baseSlice(array, 0, length + 1); - } - - /** - * Creates a slice of `array` excluding elements dropped from the beginning. - * Elements are dropped until `predicate` returns falsey. The predicate is - * bound to `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.dropWhile([1, 2, 3], function(n) { - * return n < 3; - * }); - * // => [3] - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.dropWhile(users, { 'user': 'barney', 'active': false }), 'user'); - * // => ['fred', 'pebbles'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.dropWhile(users, 'active', false), 'user'); - * // => ['pebbles'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.dropWhile(users, 'active'), 'user'); - * // => ['barney', 'fred', 'pebbles'] - */ - function dropWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - var index = -1; - predicate = getCallback(predicate, thisArg, 3); - while (++index < length && predicate(array[index], index, array)) {} - return baseSlice(array, index); - } - - /** - * Fills elements of `array` with `value` from `start` up to, but not - * including, `end`. - * - * **Note:** This method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to fill. - * @param {*} value The value to fill `array` with. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns `array`. - */ - function fill(array, value, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (start && typeof start != 'number' && isIterateeCall(array, value, start)) { - start = 0; - end = length; - } - return baseFill(array, value, start, end); - } - - /** - * This method is like `_.find` except that it returns the index of the first - * element `predicate` returns truthy for, instead of the element itself. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * _.findIndex(users, function(chr) { - * return chr.user == 'barney'; - * }); - * // => 0 - * - * // using the `_.matches` callback shorthand - * _.findIndex(users, { 'user': 'fred', 'active': false }); - * // => 1 - * - * // using the `_.matchesProperty` callback shorthand - * _.findIndex(users, 'active', false); - * // => 0 - * - * // using the `_.property` callback shorthand - * _.findIndex(users, 'active'); - * // => 2 - */ - function findIndex(array, predicate, thisArg) { - var index = -1, - length = array ? array.length : 0; - - predicate = getCallback(predicate, thisArg, 3); - while (++index < length) { - if (predicate(array[index], index, array)) { - return index; - } - } - return -1; - } - - /** - * This method is like `_.findIndex` except that it iterates over elements - * of `collection` from right to left. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {number} Returns the index of the found element, else `-1`. - * @example - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * _.findLastIndex(users, function(chr) { - * return chr.user == 'pebbles'; - * }); - * // => 2 - * - * // using the `_.matches` callback shorthand - * _.findLastIndex(users, { 'user': 'barney', 'active': true }); - * // => 0 - * - * // using the `_.matchesProperty` callback shorthand - * _.findLastIndex(users, 'active', false); - * // => 2 - * - * // using the `_.property` callback shorthand - * _.findLastIndex(users, 'active'); - * // => 0 - */ - function findLastIndex(array, predicate, thisArg) { - var length = array ? array.length : 0; - predicate = getCallback(predicate, thisArg, 3); - while (length--) { - if (predicate(array[length], length, array)) { - return length; - } - } - return -1; - } - - /** - * Gets the first element of `array`. - * - * @static - * @memberOf _ - * @alias head - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the first element of `array`. - * @example - * - * _.first([1, 2, 3]); - * // => 1 - * - * _.first([]); - * // => undefined - */ - function first(array) { - return array ? array[0] : undefined; - } - - /** - * Flattens a nested array. If `isDeep` is `true` the array is recursively - * flattened, otherwise it is only flattened a single level. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to flatten. - * @param {boolean} [isDeep] Specify a deep flatten. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flatten([1, [2, 3, [4]]]); - * // => [1, 2, 3, [4]]; - * - * // using `isDeep` - * _.flatten([1, [2, 3, [4]]], true); - * // => [1, 2, 3, 4]; - */ - function flatten(array, isDeep, guard) { - var length = array ? array.length : 0; - if (guard && isIterateeCall(array, isDeep, guard)) { - isDeep = false; - } - return length ? baseFlatten(array, isDeep, false, 0) : []; - } - - /** - * Recursively flattens a nested array. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to recursively flatten. - * @returns {Array} Returns the new flattened array. - * @example - * - * _.flattenDeep([1, [2, 3, [4]]]); - * // => [1, 2, 3, 4]; - */ - function flattenDeep(array) { - var length = array ? array.length : 0; - return length ? baseFlatten(array, true, false, 0) : []; - } - - /** - * Gets the index at which the first occurrence of `value` is found in `array` - * using `SameValueZero` for equality comparisons. If `fromIndex` is negative, - * it is used as the offset from the end of `array`. If `array` is sorted - * providing `true` for `fromIndex` performs a faster binary search. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=0] The index to search from or `true` - * to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.indexOf([1, 2, 1, 2], 2); - * // => 1 - * - * // using `fromIndex` - * _.indexOf([1, 2, 1, 2], 2, 2); - * // => 3 - * - * // performing a binary search - * _.indexOf([1, 1, 2, 2], 2, true); - * // => 2 - */ - function indexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : fromIndex; - } else if (fromIndex) { - var index = binaryIndex(array, value), - other = array[index]; - - if (value === value ? (value === other) : (other !== other)) { - return index; - } - return -1; - } - return baseIndexOf(array, value, fromIndex || 0); - } - - /** - * Gets all but the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.initial([1, 2, 3]); - * // => [1, 2] - */ - function initial(array) { - return dropRight(array, 1); - } - - /** - * Creates an array of unique values in all provided arrays using `SameValueZero` - * for equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of shared values. - * @example - * _.intersection([1, 2], [4, 2], [2, 1]); - * // => [2] - */ - function intersection() { - var args = [], - argsIndex = -1, - argsLength = arguments.length, - caches = [], - indexOf = getIndexOf(), - isCommon = indexOf == baseIndexOf; - - while (++argsIndex < argsLength) { - var value = arguments[argsIndex]; - if (isArray(value) || isArguments(value)) { - args.push(value); - caches.push((isCommon && value.length >= 120) ? createCache(argsIndex && value) : null); - } - } - argsLength = args.length; - var array = args[0], - index = -1, - length = array ? array.length : 0, - result = [], - seen = caches[0]; - - outer: - while (++index < length) { - value = array[index]; - if ((seen ? cacheIndexOf(seen, value) : indexOf(result, value, 0)) < 0) { - argsIndex = argsLength; - while (--argsIndex) { - var cache = caches[argsIndex]; - if ((cache ? cacheIndexOf(cache, value) : indexOf(args[argsIndex], value, 0)) < 0) { - continue outer; - } - } - if (seen) { - seen.push(value); - } - result.push(value); - } - } - return result; - } - - /** - * Gets the last element of `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @returns {*} Returns the last element of `array`. - * @example - * - * _.last([1, 2, 3]); - * // => 3 - */ - function last(array) { - var length = array ? array.length : 0; - return length ? array[length - 1] : undefined; - } - - /** - * This method is like `_.indexOf` except that it iterates over elements of - * `array` from right to left. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to search. - * @param {*} value The value to search for. - * @param {boolean|number} [fromIndex=array.length-1] The index to search from - * or `true` to perform a binary search on a sorted array. - * @returns {number} Returns the index of the matched value, else `-1`. - * @example - * - * _.lastIndexOf([1, 2, 1, 2], 2); - * // => 3 - * - * // using `fromIndex` - * _.lastIndexOf([1, 2, 1, 2], 2, 2); - * // => 1 - * - * // performing a binary search - * _.lastIndexOf([1, 1, 2, 2], 2, true); - * // => 3 - */ - function lastIndexOf(array, value, fromIndex) { - var length = array ? array.length : 0; - if (!length) { - return -1; - } - var index = length; - if (typeof fromIndex == 'number') { - index = (fromIndex < 0 ? nativeMax(length + fromIndex, 0) : nativeMin(fromIndex || 0, length - 1)) + 1; - } else if (fromIndex) { - index = binaryIndex(array, value, true) - 1; - var other = array[index]; - if (value === value ? (value === other) : (other !== other)) { - return index; - } - return -1; - } - if (value !== value) { - return indexOfNaN(array, index, true); - } - while (index--) { - if (array[index] === value) { - return index; - } - } - return -1; - } - - /** - * Removes all provided values from `array` using `SameValueZero` for equality - * comparisons. - * - * **Notes:** - * - Unlike `_.without`, this method mutates `array`. - * - `SameValueZero` comparisons are like strict equality comparisons, e.g. `===`, - * except that `NaN` matches `NaN`. See the [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {...*} [values] The values to remove. - * @returns {Array} Returns `array`. - * @example - * - * var array = [1, 2, 3, 1, 2, 3]; - * - * _.pull(array, 2, 3); - * console.log(array); - * // => [1, 1] - */ - function pull() { - var args = arguments, - array = args[0]; - - if (!(array && array.length)) { - return array; - } - var index = 0, - indexOf = getIndexOf(), - length = args.length; - - while (++index < length) { - var fromIndex = 0, - value = args[index]; - - while ((fromIndex = indexOf(array, value, fromIndex)) > -1) { - splice.call(array, fromIndex, 1); - } - } - return array; - } - - /** - * Removes elements from `array` corresponding to the given indexes and returns - * an array of the removed elements. Indexes may be specified as an array of - * indexes or as individual arguments. - * - * **Note:** Unlike `_.at`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {...(number|number[])} [indexes] The indexes of elements to remove, - * specified as individual indexes or arrays of indexes. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [5, 10, 15, 20]; - * var evens = _.pullAt(array, 1, 3); - * - * console.log(array); - * // => [5, 15] - * - * console.log(evens); - * // => [10, 20] - */ - function pullAt(array) { - return basePullAt(array || [], baseFlatten(arguments, false, false, 1)); - } - - /** - * Removes all elements from `array` that `predicate` returns truthy for - * and returns an array of the removed elements. The predicate is bound to - * `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * **Note:** Unlike `_.filter`, this method mutates `array`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to modify. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new array of removed elements. - * @example - * - * var array = [1, 2, 3, 4]; - * var evens = _.remove(array, function(n) { - * return n % 2 == 0; - * }); - * - * console.log(array); - * // => [1, 3] - * - * console.log(evens); - * // => [2, 4] - */ - function remove(array, predicate, thisArg) { - var index = -1, - length = array ? array.length : 0, - result = []; - - predicate = getCallback(predicate, thisArg, 3); - while (++index < length) { - var value = array[index]; - if (predicate(value, index, array)) { - result.push(value); - splice.call(array, index--, 1); - length--; - } - } - return result; - } - - /** - * Gets all but the first element of `array`. - * - * @static - * @memberOf _ - * @alias tail - * @category Array - * @param {Array} array The array to query. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.rest([1, 2, 3]); - * // => [2, 3] - */ - function rest(array) { - return drop(array, 1); - } - - /** - * Creates a slice of `array` from `start` up to, but not including, `end`. - * - * **Note:** This function is used instead of `Array#slice` to support node - * lists in IE < 9 and to ensure dense arrays are returned. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to slice. - * @param {number} [start=0] The start position. - * @param {number} [end=array.length] The end position. - * @returns {Array} Returns the slice of `array`. - */ - function slice(array, start, end) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (end && typeof end != 'number' && isIterateeCall(array, start, end)) { - start = 0; - end = length; - } - return baseSlice(array, start, end); - } - - /** - * Uses a binary search to determine the lowest index at which `value` should - * be inserted into `array` in order to maintain its sort order. If an iteratee - * function is provided it is invoked for `value` and each element of `array` - * to compute their sort ranking. The iteratee is bound to `thisArg` and - * invoked with one argument; (value). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedIndex([30, 50], 40); - * // => 1 - * - * _.sortedIndex([4, 4, 5, 5], 5); - * // => 2 - * - * var dict = { 'data': { 'thirty': 30, 'forty': 40, 'fifty': 50 } }; - * - * // using an iteratee function - * _.sortedIndex(['thirty', 'fifty'], 'forty', function(word) { - * return this.data[word]; - * }, dict); - * // => 1 - * - * // using the `_.property` callback shorthand - * _.sortedIndex([{ 'x': 30 }, { 'x': 50 }], { 'x': 40 }, 'x'); - * // => 1 - */ - function sortedIndex(array, value, iteratee, thisArg) { - var func = getCallback(iteratee); - return (func === baseCallback && iteratee == null) - ? binaryIndex(array, value) - : binaryIndexBy(array, value, func(iteratee, thisArg, 1)); - } - - /** - * This method is like `_.sortedIndex` except that it returns the highest - * index at which `value` should be inserted into `array` in order to - * maintain its sort order. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The sorted array to inspect. - * @param {*} value The value to evaluate. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {number} Returns the index at which `value` should be inserted - * into `array`. - * @example - * - * _.sortedLastIndex([4, 4, 5, 5], 5); - * // => 4 - */ - function sortedLastIndex(array, value, iteratee, thisArg) { - var func = getCallback(iteratee); - return (func === baseCallback && iteratee == null) - ? binaryIndex(array, value, true) - : binaryIndexBy(array, value, func(iteratee, thisArg, 1), true); - } - - /** - * Creates a slice of `array` with `n` elements taken from the beginning. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.take([1, 2, 3]); - * // => [1] - * - * _.take([1, 2, 3], 2); - * // => [1, 2] - * - * _.take([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.take([1, 2, 3], 0); - * // => [] - */ - function take(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - return baseSlice(array, 0, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with `n` elements taken from the end. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {number} [n=1] The number of elements to take. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRight([1, 2, 3]); - * // => [3] - * - * _.takeRight([1, 2, 3], 2); - * // => [2, 3] - * - * _.takeRight([1, 2, 3], 5); - * // => [1, 2, 3] - * - * _.takeRight([1, 2, 3], 0); - * // => [] - */ - function takeRight(array, n, guard) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (guard ? isIterateeCall(array, n, guard) : n == null) { - n = 1; - } - n = length - (+n || 0); - return baseSlice(array, n < 0 ? 0 : n); - } - - /** - * Creates a slice of `array` with elements taken from the end. Elements are - * taken until `predicate` returns falsey. The predicate is bound to `thisArg` - * and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeRightWhile([1, 2, 3], function(n) { - * return n > 1; - * }); - * // => [2, 3] - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false }, - * { 'user': 'pebbles', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.takeRightWhile(users, { 'user': 'pebbles', 'active': false }), 'user'); - * // => ['pebbles'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.takeRightWhile(users, 'active', false), 'user'); - * // => ['fred', 'pebbles'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.takeRightWhile(users, 'active'), 'user'); - * // => [] - */ - function takeRightWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - predicate = getCallback(predicate, thisArg, 3); - while (length-- && predicate(array[length], length, array)) {} - return baseSlice(array, length + 1); - } - - /** - * Creates a slice of `array` with elements taken from the beginning. Elements - * are taken until `predicate` returns falsey. The predicate is bound to - * `thisArg` and invoked with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to query. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the slice of `array`. - * @example - * - * _.takeWhile([1, 2, 3], function(n) { - * return n < 3; - * }); - * // => [1, 2] - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false}, - * { 'user': 'pebbles', 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.takeWhile(users, { 'user': 'barney', 'active': false }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.takeWhile(users, 'active', false), 'user'); - * // => ['barney', 'fred'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.takeWhile(users, 'active'), 'user'); - * // => [] - */ - function takeWhile(array, predicate, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - var index = -1; - predicate = getCallback(predicate, thisArg, 3); - while (++index < length && predicate(array[index], index, array)) {} - return baseSlice(array, 0, index); - } - - /** - * Creates an array of unique values, in order, of the provided arrays using - * `SameValueZero` for equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of combined values. - * @example - * - * _.union([1, 2], [4, 2], [2, 1]); - * // => [1, 2, 4] - */ - function union() { - return baseUniq(baseFlatten(arguments, false, true, 0)); - } - - /** - * Creates a duplicate-value-free version of an array using `SameValueZero` - * for equality comparisons. Providing `true` for `isSorted` performs a faster - * search algorithm for sorted arrays. If an iteratee function is provided it - * is invoked for each value in the array to generate the criterion by which - * uniqueness is computed. The `iteratee` is bound to `thisArg` and invoked - * with three arguments; (value, index, array). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @alias unique - * @category Array - * @param {Array} array The array to inspect. - * @param {boolean} [isSorted] Specify the array is sorted. - * @param {Function|Object|string} [iteratee] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new duplicate-value-free array. - * @example - * - * _.uniq([1, 2, 1]); - * // => [1, 2] - * - * // using `isSorted` - * _.uniq([1, 1, 2], true); - * // => [1, 2] - * - * // using an iteratee function - * _.uniq([1, 2.5, 1.5, 2], function(n) { - * return this.floor(n); - * }, Math); - * // => [1, 2.5] - * - * // using the `_.property` callback shorthand - * _.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x'); - * // => [{ 'x': 1 }, { 'x': 2 }] - */ - function uniq(array, isSorted, iteratee, thisArg) { - var length = array ? array.length : 0; - if (!length) { - return []; - } - if (isSorted != null && typeof isSorted != 'boolean') { - thisArg = iteratee; - iteratee = isIterateeCall(array, isSorted, thisArg) ? null : isSorted; - isSorted = false; - } - var func = getCallback(); - if (!(func === baseCallback && iteratee == null)) { - iteratee = func(iteratee, thisArg, 3); - } - return (isSorted && getIndexOf() == baseIndexOf) - ? sortedUniq(array, iteratee) - : baseUniq(array, iteratee); - } - - /** - * This method is like `_.zip` except that it accepts an array of grouped - * elements and creates an array regrouping the elements to their pre-`_.zip` - * configuration. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array of grouped elements to process. - * @returns {Array} Returns the new array of regrouped elements. - * @example - * - * var zipped = _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - * - * _.unzip(zipped); - * // => [['fred', 'barney'], [30, 40], [true, false]] - */ - function unzip(array) { - var index = -1, - length = (array && array.length && arrayMax(arrayMap(array, getLength))) >>> 0, - result = Array(length); - - while (++index < length) { - result[index] = arrayMap(array, baseProperty(index)); - } - return result; - } - - /** - * Creates an array excluding all provided values using `SameValueZero` for - * equality comparisons. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @category Array - * @param {Array} array The array to filter. - * @param {...*} [values] The values to exclude. - * @returns {Array} Returns the new array of filtered values. - * @example - * - * _.without([1, 2, 1, 3], 1, 2); - * // => [3] - */ - function without(array) { - return baseDifference(array, baseSlice(arguments, 1)); - } - - /** - * Creates an array that is the symmetric difference of the provided arrays. - * See [Wikipedia](https://en.wikipedia.org/wiki/Symmetric_difference) for - * more details. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to inspect. - * @returns {Array} Returns the new array of values. - * @example - * - * _.xor([1, 2], [4, 2]); - * // => [1, 4] - */ - function xor() { - var index = -1, - length = arguments.length; - - while (++index < length) { - var array = arguments[index]; - if (isArray(array) || isArguments(array)) { - var result = result - ? baseDifference(result, array).concat(baseDifference(array, result)) - : array; - } - } - return result ? baseUniq(result) : []; - } - - /** - * Creates an array of grouped elements, the first of which contains the first - * elements of the given arrays, the second of which contains the second elements - * of the given arrays, and so on. - * - * @static - * @memberOf _ - * @category Array - * @param {...Array} [arrays] The arrays to process. - * @returns {Array} Returns the new array of grouped elements. - * @example - * - * _.zip(['fred', 'barney'], [30, 40], [true, false]); - * // => [['fred', 30, true], ['barney', 40, false]] - */ - function zip() { - var length = arguments.length, - array = Array(length); - - while (length--) { - array[length] = arguments[length]; - } - return unzip(array); - } - - /** - * Creates an object composed from arrays of property names and values. Provide - * either a single two dimensional array, e.g. `[[key1, value1], [key2, value2]]` - * or two arrays, one of property names and one of corresponding values. - * - * @static - * @memberOf _ - * @alias object - * @category Array - * @param {Array} props The property names. - * @param {Array} [values=[]] The property values. - * @returns {Object} Returns the new object. - * @example - * - * _.zipObject(['fred', 'barney'], [30, 40]); - * // => { 'fred': 30, 'barney': 40 } - */ - function zipObject(props, values) { - var index = -1, - length = props ? props.length : 0, - result = {}; - - if (length && !values && !isArray(props[0])) { - values = []; - } - while (++index < length) { - var key = props[index]; - if (values) { - result[key] = values[index]; - } else if (key) { - result[key[0]] = key[1]; - } - } - return result; - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a `lodash` object that wraps `value` with explicit method - * chaining enabled. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to wrap. - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'pebbles', 'age': 1 } - * ]; - * - * var youngest = _.chain(users) - * .sortBy('age') - * .map(function(chr) { - * return chr.user + ' is ' + chr.age; - * }) - * .first() - * .value(); - * // => 'pebbles is 1' - */ - function chain(value) { - var result = lodash(value); - result.__chain__ = true; - return result; - } - - /** - * This method invokes `interceptor` and returns `value`. The interceptor is - * bound to `thisArg` and invoked with one argument; (value). The purpose of - * this method is to "tap into" a method chain in order to perform operations - * on intermediate results within the chain. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @param {*} [thisArg] The `this` binding of `interceptor`. - * @returns {*} Returns `value`. - * @example - * - * _([1, 2, 3]) - * .tap(function(array) { - * array.pop(); - * }) - * .reverse() - * .value(); - * // => [2, 1] - */ - function tap(value, interceptor, thisArg) { - interceptor.call(thisArg, value); - return value; - } - - /** - * This method is like `_.tap` except that it returns the result of `interceptor`. - * - * @static - * @memberOf _ - * @category Chain - * @param {*} value The value to provide to `interceptor`. - * @param {Function} interceptor The function to invoke. - * @param {*} [thisArg] The `this` binding of `interceptor`. - * @returns {*} Returns the result of `interceptor`. - * @example - * - * _([1, 2, 3]) - * .last() - * .thru(function(value) { - * return [value]; - * }) - * .value(); - * // => [3] - */ - function thru(value, interceptor, thisArg) { - return interceptor.call(thisArg, value); - } - - /** - * Enables explicit method chaining on the wrapper object. - * - * @name chain - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * // without explicit chaining - * _(users).first(); - * // => { 'user': 'barney', 'age': 36 } - * - * // with explicit chaining - * _(users).chain() - * .first() - * .pick('user') - * .value(); - * // => { 'user': 'barney' } - */ - function wrapperChain() { - return chain(this); - } - - /** - * Executes the chained sequence and returns the wrapped result. - * - * @name commit - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapper = _(array).push(3); - * - * console.log(array); - * // => [1, 2] - * - * wrapper = wrapper.commit(); - * console.log(array); - * // => [1, 2, 3] - * - * wrapper.last(); - * // => 3 - * - * console.log(array); - * // => [1, 2, 3] - */ - function wrapperCommit() { - return new LodashWrapper(this.value(), this.__chain__); - } - - /** - * Creates a clone of the chained sequence planting `value` as the wrapped value. - * - * @name plant - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new `lodash` wrapper instance. - * @example - * - * var array = [1, 2]; - * var wrapper = _(array).map(function(value) { - * return Math.pow(value, 2); - * }); - * - * var other = [3, 4]; - * var otherWrapper = wrapper.plant(other); - * - * otherWrapper.value(); - * // => [9, 16] - * - * wrapper.value(); - * // => [1, 4] - */ - function wrapperPlant(value) { - var result, - parent = this; - - while (parent instanceof baseLodash) { - var clone = wrapperClone(parent); - if (result) { - previous.__wrapped__ = clone; - } else { - result = clone; - } - var previous = clone; - parent = parent.__wrapped__; - } - previous.__wrapped__ = value; - return result; - } - - /** - * Reverses the wrapped array so the first element becomes the last, the - * second element becomes the second to last, and so on. - * - * **Note:** This method mutates the wrapped array. - * - * @name reverse - * @memberOf _ - * @category Chain - * @returns {Object} Returns the new reversed `lodash` wrapper instance. - * @example - * - * var array = [1, 2, 3]; - * - * _(array).reverse().value() - * // => [3, 2, 1] - * - * console.log(array); - * // => [3, 2, 1] - */ - function wrapperReverse() { - var value = this.__wrapped__; - if (value instanceof LazyWrapper) { - if (this.__actions__.length) { - value = new LazyWrapper(this); - } - return new LodashWrapper(value.reverse(), this.__chain__); - } - return this.thru(function(value) { - return value.reverse(); - }); - } - - /** - * Produces the result of coercing the unwrapped value to a string. - * - * @name toString - * @memberOf _ - * @category Chain - * @returns {string} Returns the coerced string value. - * @example - * - * _([1, 2, 3]).toString(); - * // => '1,2,3' - */ - function wrapperToString() { - return (this.value() + ''); - } - - /** - * Executes the chained sequence to extract the unwrapped value. - * - * @name value - * @memberOf _ - * @alias run, toJSON, valueOf - * @category Chain - * @returns {*} Returns the resolved unwrapped value. - * @example - * - * _([1, 2, 3]).value(); - * // => [1, 2, 3] - */ - function wrapperValue() { - return baseWrapperValue(this.__wrapped__, this.__actions__); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates an array of elements corresponding to the given keys, or indexes, - * of `collection`. Keys may be specified as individual arguments or as arrays - * of keys. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(number|number[]|string|string[])} [props] The property names - * or indexes of elements to pick, specified individually or in arrays. - * @returns {Array} Returns the new array of picked elements. - * @example - * - * _.at(['a', 'b', 'c'], [0, 2]); - * // => ['a', 'c'] - * - * _.at(['fred', 'barney', 'pebbles'], 0, 2); - * // => ['fred', 'pebbles'] - */ - function at(collection) { - var length = collection ? collection.length : 0; - if (isLength(length)) { - collection = toIterable(collection); - } - return baseAt(collection, baseFlatten(arguments, false, false, 1)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is the number of times the key was returned by `iteratee`. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.countBy([4.3, 6.1, 6.4], function(n) { - * return Math.floor(n); - * }); - * // => { '4': 1, '6': 2 } - * - * _.countBy([4.3, 6.1, 6.4], function(n) { - * return this.floor(n); - * }, Math); - * // => { '4': 1, '6': 2 } - * - * _.countBy(['one', 'two', 'three'], 'length'); - * // => { '3': 2, '5': 1 } - */ - var countBy = createAggregator(function(result, value, key) { - hasOwnProperty.call(result, key) ? ++result[key] : (result[key] = 1); - }); - - /** - * Checks if `predicate` returns truthy for **all** elements of `collection`. - * The predicate is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias all - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {boolean} Returns `true` if all elements pass the predicate check, - * else `false`. - * @example - * - * _.every([true, 1, null, 'yes'], Boolean); - * // => false - * - * var users = [ - * { 'user': 'barney', 'active': false }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.every(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // using the `_.matchesProperty` callback shorthand - * _.every(users, 'active', false); - * // => true - * - * // using the `_.property` callback shorthand - * _.every(users, 'active'); - * // => false - */ - function every(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayEvery : baseEvery; - if (typeof predicate != 'function' || typeof thisArg != 'undefined') { - predicate = getCallback(predicate, thisArg, 3); - } - return func(collection, predicate); - } - - /** - * Iterates over elements of `collection`, returning an array of all elements - * `predicate` returns truthy for. The predicate is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias select - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new filtered array. - * @example - * - * _.filter([4, 5, 6], function(n) { - * return n % 2 == 0; - * }); - * // => [4, 6] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.filter(users, { 'age': 36, 'active': true }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.filter(users, 'active', false), 'user'); - * // => ['fred'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.filter(users, 'active'), 'user'); - * // => ['barney'] - */ - function filter(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayFilter : baseFilter; - predicate = getCallback(predicate, thisArg, 3); - return func(collection, predicate); - } - - /** - * Iterates over elements of `collection`, returning the first element - * `predicate` returns truthy for. The predicate is bound to `thisArg` and - * invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias detect - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false }, - * { 'user': 'pebbles', 'age': 1, 'active': true } - * ]; - * - * _.result(_.find(users, function(chr) { - * return chr.age < 40; - * }), 'user'); - * // => 'barney' - * - * // using the `_.matches` callback shorthand - * _.result(_.find(users, { 'age': 1, 'active': true }), 'user'); - * // => 'pebbles' - * - * // using the `_.matchesProperty` callback shorthand - * _.result(_.find(users, 'active', false), 'user'); - * // => 'fred' - * - * // using the `_.property` callback shorthand - * _.result(_.find(users, 'active'), 'user'); - * // => 'barney' - */ - function find(collection, predicate, thisArg) { - if (isArray(collection)) { - var index = findIndex(collection, predicate, thisArg); - return index > -1 ? collection[index] : undefined; - } - predicate = getCallback(predicate, thisArg, 3); - return baseFind(collection, predicate, baseEach); - } - - /** - * This method is like `_.find` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * _.findLast([1, 2, 3, 4], function(n) { - * return n % 2 == 1; - * }); - * // => 3 - */ - function findLast(collection, predicate, thisArg) { - predicate = getCallback(predicate, thisArg, 3); - return baseFind(collection, predicate, baseEachRight); - } - - /** - * Performs a deep comparison between each element in `collection` and the - * source object, returning the first element that has equivalent property - * values. - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. For comparing a single - * own or inherited property value see `_.matchesProperty`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Object} source The object of property values to match. - * @returns {*} Returns the matched element, else `undefined`. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': true }, - * { 'user': 'fred', 'age': 40, 'active': false } - * ]; - * - * _.result(_.findWhere(users, { 'age': 36, 'active': true }), 'user'); - * // => 'barney' - * - * _.result(_.findWhere(users, { 'age': 40, 'active': false }), 'user'); - * // => 'fred' - */ - function findWhere(collection, source) { - return find(collection, baseMatches(source)); - } - - /** - * Iterates over elements of `collection` invoking `iteratee` for each element. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). Iterator functions may exit iteration early - * by explicitly returning `false`. - * - * **Note:** As with other "Collections" methods, objects with a `length` property - * are iterated like arrays. To avoid this behavior `_.forIn` or `_.forOwn` - * may be used for object iteration. - * - * @static - * @memberOf _ - * @alias each - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2]).forEach(function(n) { - * console.log(n); - * }).value(); - * // => logs each value from left to right and returns the array - * - * _.forEach({ 'a': 1, 'b': 2 }, function(n, key) { - * console.log(n, key); - * }); - * // => logs each value-key pair and returns the object (iteration order is not guaranteed) - */ - function forEach(collection, iteratee, thisArg) { - return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) - ? arrayEach(collection, iteratee) - : baseEach(collection, bindCallback(iteratee, thisArg, 3)); - } - - /** - * This method is like `_.forEach` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias eachRight - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array|Object|string} Returns `collection`. - * @example - * - * _([1, 2]).forEachRight(function(n) { - * console.log(n); - * }).join(','); - * // => logs each value from right to left and returns the array - */ - function forEachRight(collection, iteratee, thisArg) { - return (typeof iteratee == 'function' && typeof thisArg == 'undefined' && isArray(collection)) - ? arrayEachRight(collection, iteratee) - : baseEachRight(collection, bindCallback(iteratee, thisArg, 3)); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is an array of the elements responsible for generating the key. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * _.groupBy([4.2, 6.1, 6.4], function(n) { - * return Math.floor(n); - * }); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * _.groupBy([4.2, 6.1, 6.4], function(n) { - * return this.floor(n); - * }, Math); - * // => { '4': [4.2], '6': [6.1, 6.4] } - * - * // using the `_.property` callback shorthand - * _.groupBy(['one', 'two', 'three'], 'length'); - * // => { '3': ['one', 'two'], '5': ['three'] } - */ - var groupBy = createAggregator(function(result, value, key) { - if (hasOwnProperty.call(result, key)) { - result[key].push(value); - } else { - result[key] = [value]; - } - }); - - /** - * Checks if `value` is in `collection` using `SameValueZero` for equality - * comparisons. If `fromIndex` is negative, it is used as the offset from - * the end of `collection`. - * - * **Note:** `SameValueZero` comparisons are like strict equality comparisons, - * e.g. `===`, except that `NaN` matches `NaN`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-samevaluezero) - * for more details. - * - * @static - * @memberOf _ - * @alias contains, include - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {*} target The value to search for. - * @param {number} [fromIndex=0] The index to search from. - * @returns {boolean} Returns `true` if a matching element is found, else `false`. - * @example - * - * _.includes([1, 2, 3], 1); - * // => true - * - * _.includes([1, 2, 3], 1, 2); - * // => false - * - * _.includes({ 'user': 'fred', 'age': 40 }, 'fred'); - * // => true - * - * _.includes('pebbles', 'eb'); - * // => true - */ - function includes(collection, target, fromIndex) { - var length = collection ? collection.length : 0; - if (!isLength(length)) { - collection = values(collection); - length = collection.length; - } - if (!length) { - return false; - } - if (typeof fromIndex == 'number') { - fromIndex = fromIndex < 0 ? nativeMax(length + fromIndex, 0) : (fromIndex || 0); - } else { - fromIndex = 0; - } - return (typeof collection == 'string' || !isArray(collection) && isString(collection)) - ? (fromIndex < length && collection.indexOf(target, fromIndex) > -1) - : (getIndexOf(collection, target, fromIndex) > -1); - } - - /** - * Creates an object composed of keys generated from the results of running - * each element of `collection` through `iteratee`. The corresponding value - * of each key is the last element responsible for generating the key. The - * iteratee function is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the composed aggregate object. - * @example - * - * var keyData = [ - * { 'dir': 'left', 'code': 97 }, - * { 'dir': 'right', 'code': 100 } - * ]; - * - * _.indexBy(keyData, 'dir'); - * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keyData, function(object) { - * return String.fromCharCode(object.code); - * }); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - * - * _.indexBy(keyData, function(object) { - * return this.fromCharCode(object.code); - * }, String); - * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } - */ - var indexBy = createAggregator(function(result, value, key) { - result[key] = value; - }); - - /** - * Invokes the method named by `methodName` on each element in `collection`, - * returning an array of the results of each invoked method. Any additional - * arguments are provided to each invoked method. If `methodName` is a function - * it is invoked for, and `this` bound to, each element in `collection`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|string} methodName The name of the method to invoke or - * the function invoked per iteration. - * @param {...*} [args] The arguments to invoke the method with. - * @returns {Array} Returns the array of results. - * @example - * - * _.invoke([[5, 1, 7], [3, 2, 1]], 'sort'); - * // => [[1, 5, 7], [1, 2, 3]] - * - * _.invoke([123, 456], String.prototype.split, ''); - * // => [['1', '2', '3'], ['4', '5', '6']] - */ - function invoke(collection, methodName) { - return baseInvoke(collection, methodName, baseSlice(arguments, 2)); - } - - /** - * Creates an array of values by running each element in `collection` through - * `iteratee`. The `iteratee` is bound to `thisArg` and invoked with three - * arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * Many lodash methods are guarded to work as interatees for methods like - * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. - * - * The guarded methods are: - * `ary`, `callback`, `chunk`, `clone`, `create`, `curry`, `curryRight`, `drop`, - * `dropRight`, `fill`, `flatten`, `invert`, `max`, `min`, `parseInt`, `slice`, - * `sortBy`, `take`, `takeRight`, `template`, `trim`, `trimLeft`, `trimRight`, - * `trunc`, `random`, `range`, `sample`, `uniq`, and `words` - * - * @static - * @memberOf _ - * @alias collect - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * create a `_.property` or `_.matches` style callback respectively. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new mapped array. - * @example - * - * function timesThree(n) { - * return n * 3; - * } - * - * _.map([1, 2], timesThree); - * // => [3, 6] - * - * _.map({ 'a': 1, 'b': 2 }, timesThree); - * // => [3, 6] (iteration order is not guaranteed) - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * // using the `_.property` callback shorthand - * _.map(users, 'user'); - * // => ['barney', 'fred'] - */ - function map(collection, iteratee, thisArg) { - var func = isArray(collection) ? arrayMap : baseMap; - iteratee = getCallback(iteratee, thisArg, 3); - return func(collection, iteratee); - } - - /** - * Creates an array of elements split into two groups, the first of which - * contains elements `predicate` returns truthy for, while the second of which - * contains elements `predicate` returns falsey for. The predicate is bound - * to `thisArg` and invoked with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the array of grouped elements. - * @example - * - * _.partition([1, 2, 3], function(n) { - * return n % 2; - * }); - * // => [[1, 3], [2]] - * - * _.partition([1.2, 2.3, 3.4], function(n) { - * return this.floor(n) % 2; - * }, Math); - * // => [[1.2, 3.4], [2.3]] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true }, - * { 'user': 'pebbles', 'age': 1, 'active': false } - * ]; - * - * var mapper = function(array) { - * return _.pluck(array, 'user'); - * }; - * - * // using the `_.matches` callback shorthand - * _.map(_.partition(users, { 'age': 1, 'active': false }), mapper); - * // => [['pebbles'], ['barney', 'fred']] - * - * // using the `_.matchesProperty` callback shorthand - * _.map(_.partition(users, 'active', false), mapper); - * // => [['barney', 'pebbles'], ['fred']] - * - * // using the `_.property` callback shorthand - * _.map(_.partition(users, 'active'), mapper); - * // => [['fred'], ['barney', 'pebbles']] - */ - var partition = createAggregator(function(result, value, key) { - result[key ? 0 : 1].push(value); - }, function() { return [[], []]; }); - - /** - * Gets the value of `key` from all elements in `collection`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string} key The key of the property to pluck. - * @returns {Array} Returns the property values. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 } - * ]; - * - * _.pluck(users, 'user'); - * // => ['barney', 'fred'] - * - * var userIndex = _.indexBy(users, 'user'); - * _.pluck(userIndex, 'age'); - * // => [36, 40] (iteration order is not guaranteed) - */ - function pluck(collection, key) { - return map(collection, baseProperty(key)); - } - - /** - * Reduces `collection` to a value which is the accumulated result of running - * each element in `collection` through `iteratee`, where each successive - * invocation is supplied the return value of the previous. If `accumulator` - * is not provided the first element of `collection` is used as the initial - * value. The `iteratee` is bound to `thisArg`and invoked with four arguments; - * (accumulator, value, index|key, collection). - * - * Many lodash methods are guarded to work as interatees for methods like - * `_.reduce`, `_.reduceRight`, and `_.transform`. - * - * The guarded methods are: - * `assign`, `defaults`, `merge`, and `sortAllBy` - * - * @static - * @memberOf _ - * @alias foldl, inject - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * _.reduce([1, 2], function(sum, n) { - * return sum + n; - * }); - * // => 3 - * - * _.reduce({ 'a': 1, 'b': 2 }, function(result, n, key) { - * result[key] = n * 3; - * return result; - * }, {}); - * // => { 'a': 3, 'b': 6 } (iteration order is not guaranteed) - */ - function reduce(collection, iteratee, accumulator, thisArg) { - var func = isArray(collection) ? arrayReduce : baseReduce; - return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEach); - } - - /** - * This method is like `_.reduce` except that it iterates over elements of - * `collection` from right to left. - * - * @static - * @memberOf _ - * @alias foldr - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The initial value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * var array = [[0, 1], [2, 3], [4, 5]]; - * - * _.reduceRight(array, function(flattened, other) { - * return flattened.concat(other); - * }, []); - * // => [4, 5, 2, 3, 0, 1] - */ - function reduceRight(collection, iteratee, accumulator, thisArg) { - var func = isArray(collection) ? arrayReduceRight : baseReduce; - return func(collection, getCallback(iteratee, thisArg, 4), accumulator, arguments.length < 3, baseEachRight); - } - - /** - * The opposite of `_.filter`; this method returns the elements of `collection` - * that `predicate` does **not** return truthy for. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Array} Returns the new filtered array. - * @example - * - * _.reject([1, 2, 3, 4], function(n) { - * return n % 2 == 0; - * }); - * // => [1, 3] - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false }, - * { 'user': 'fred', 'age': 40, 'active': true } - * ]; - * - * // using the `_.matches` callback shorthand - * _.pluck(_.reject(users, { 'age': 40, 'active': true }), 'user'); - * // => ['barney'] - * - * // using the `_.matchesProperty` callback shorthand - * _.pluck(_.reject(users, 'active', false), 'user'); - * // => ['fred'] - * - * // using the `_.property` callback shorthand - * _.pluck(_.reject(users, 'active'), 'user'); - * // => ['barney'] - */ - function reject(collection, predicate, thisArg) { - var func = isArray(collection) ? arrayFilter : baseFilter; - predicate = getCallback(predicate, thisArg, 3); - return func(collection, function(value, index, collection) { - return !predicate(value, index, collection); - }); - } - - /** - * Gets a random element or `n` random elements from a collection. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to sample. - * @param {number} [n] The number of elements to sample. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {*} Returns the random sample(s). - * @example - * - * _.sample([1, 2, 3, 4]); - * // => 2 - * - * _.sample([1, 2, 3, 4], 2); - * // => [3, 1] - */ - function sample(collection, n, guard) { - if (guard ? isIterateeCall(collection, n, guard) : n == null) { - collection = toIterable(collection); - var length = collection.length; - return length > 0 ? collection[baseRandom(0, length - 1)] : undefined; - } - var result = shuffle(collection); - result.length = nativeMin(n < 0 ? 0 : (+n || 0), result.length); - return result; - } - - /** - * Creates an array of shuffled values, using a version of the Fisher-Yates - * shuffle. See [Wikipedia](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle) - * for more details. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to shuffle. - * @returns {Array} Returns the new shuffled array. - * @example - * - * _.shuffle([1, 2, 3, 4]); - * // => [4, 1, 3, 2] - */ - function shuffle(collection) { - collection = toIterable(collection); - - var index = -1, - length = collection.length, - result = Array(length); - - while (++index < length) { - var rand = baseRandom(0, index); - if (index != rand) { - result[index] = result[rand]; - } - result[rand] = collection[index]; - } - return result; - } - - /** - * Gets the size of `collection` by returning its length for array-like - * values or the number of own enumerable properties for objects. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to inspect. - * @returns {number} Returns the size of `collection`. - * @example - * - * _.size([1, 2, 3]); - * // => 3 - * - * _.size({ 'a': 1, 'b': 2 }); - * // => 2 - * - * _.size('pebbles'); - * // => 7 - */ - function size(collection) { - var length = collection ? collection.length : 0; - return isLength(length) ? length : keys(collection).length; - } - - /** - * Checks if `predicate` returns truthy for **any** element of `collection`. - * The function returns as soon as it finds a passing value and does not iterate - * over the entire collection. The predicate is bound to `thisArg` and invoked - * with three arguments; (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @alias any - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {boolean} Returns `true` if any element passes the predicate check, - * else `false`. - * @example - * - * _.some([null, 0, 'yes', false], Boolean); - * // => true - * - * var users = [ - * { 'user': 'barney', 'active': true }, - * { 'user': 'fred', 'active': false } - * ]; - * - * // using the `_.matches` callback shorthand - * _.some(users, { 'user': 'barney', 'active': false }); - * // => false - * - * // using the `_.matchesProperty` callback shorthand - * _.some(users, 'active', false); - * // => true - * - * // using the `_.property` callback shorthand - * _.some(users, 'active'); - * // => true - */ - function some(collection, predicate, thisArg) { - var func = isArray(collection) ? arraySome : baseSome; - if (typeof predicate != 'function' || typeof thisArg != 'undefined') { - predicate = getCallback(predicate, thisArg, 3); - } - return func(collection, predicate); - } - - /** - * Creates an array of elements, sorted in ascending order by the results of - * running each element in a collection through `iteratee`. This method performs - * a stable sort, that is, it preserves the original sort order of equal elements. - * The `iteratee` is bound to `thisArg` and invoked with three arguments; - * (value, index|key, collection). - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {Array|Function|Object|string} [iteratee=_.identity] The function - * invoked per iteration. If a property name or an object is provided it is - * used to create a `_.property` or `_.matches` style callback respectively. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Array} Returns the new sorted array. - * @example - * - * _.sortBy([1, 2, 3], function(n) { - * return Math.sin(n); - * }); - * // => [3, 1, 2] - * - * _.sortBy([1, 2, 3], function(n) { - * return this.sin(n); - * }, Math); - * // => [3, 1, 2] - * - * var users = [ - * { 'user': 'fred' }, - * { 'user': 'pebbles' }, - * { 'user': 'barney' } - * ]; - * - * // using the `_.property` callback shorthand - * _.pluck(_.sortBy(users, 'user'), 'user'); - * // => ['barney', 'fred', 'pebbles'] - */ - function sortBy(collection, iteratee, thisArg) { - if (collection == null) { - return []; - } - var index = -1, - length = collection.length, - result = isLength(length) ? Array(length) : []; - - if (thisArg && isIterateeCall(collection, iteratee, thisArg)) { - iteratee = null; - } - iteratee = getCallback(iteratee, thisArg, 3); - baseEach(collection, function(value, key, collection) { - result[++index] = { 'criteria': iteratee(value, key, collection), 'index': index, 'value': value }; - }); - return baseSortBy(result, compareAscending); - } - - /** - * This method is like `_.sortBy` except that it sorts by property names - * instead of an iteratee function. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {...(string|string[])} props The property names to sort by, - * specified as individual property names or arrays of property names. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 26 }, - * { 'user': 'fred', 'age': 30 } - * ]; - * - * _.map(_.sortByAll(users, ['user', 'age']), _.values); - * // => [['barney', 26], ['barney', 36], ['fred', 30], ['fred', 40]] - */ - function sortByAll(collection) { - if (collection == null) { - return []; - } - var args = arguments, - guard = args[3]; - - if (guard && isIterateeCall(args[1], args[2], guard)) { - args = [collection, args[1]]; - } - return baseSortByOrder(collection, baseFlatten(args, false, false, 1), []); - } - - /** - * This method is like `_.sortByAll` except that it allows specifying the - * sort orders of the property names to sort by. A truthy value in `orders` - * will sort the corresponding property name in ascending order while a - * falsey value will sort it in descending order. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to iterate over. - * @param {string[]} props The property names to sort by. - * @param {boolean[]} orders The sort orders of `props`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.reduce`. - * @returns {Array} Returns the new sorted array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 26 }, - * { 'user': 'fred', 'age': 40 }, - * { 'user': 'barney', 'age': 36 }, - * { 'user': 'fred', 'age': 30 } - * ]; - * - * // sort by `user` in ascending order and by `age` in descending order - * _.map(_.sortByOrder(users, ['user', 'age'], [true, false]), _.values); - * // => [['barney', 36], ['barney', 26], ['fred', 40], ['fred', 30]] - */ - function sortByOrder(collection, props, orders, guard) { - if (collection == null) { - return []; - } - if (guard && isIterateeCall(props, orders, guard)) { - orders = null; - } - if (!isArray(props)) { - props = props == null ? [] : [props]; - } - if (!isArray(orders)) { - orders = orders == null ? [] : [orders]; - } - return baseSortByOrder(collection, props, orders); - } - - /** - * Performs a deep comparison between each element in `collection` and the - * source object, returning an array of all elements that have equivalent - * property values. - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. For comparing a single - * own or inherited property value see `_.matchesProperty`. - * - * @static - * @memberOf _ - * @category Collection - * @param {Array|Object|string} collection The collection to search. - * @param {Object} source The object of property values to match. - * @returns {Array} Returns the new filtered array. - * @example - * - * var users = [ - * { 'user': 'barney', 'age': 36, 'active': false, 'pets': ['hoppy'] }, - * { 'user': 'fred', 'age': 40, 'active': true, 'pets': ['baby puss', 'dino'] } - * ]; - * - * _.pluck(_.where(users, { 'age': 36, 'active': false }), 'user'); - * // => ['barney'] - * - * _.pluck(_.where(users, { 'pets': ['dino'] }), 'user'); - * // => ['fred'] - */ - function where(collection, source) { - return filter(collection, baseMatches(source)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Gets the number of milliseconds that have elapsed since the Unix epoch - * (1 January 1970 00:00:00 UTC). - * - * @static - * @memberOf _ - * @category Date - * @example - * - * _.defer(function(stamp) { - * console.log(_.now() - stamp); - * }, _.now()); - * // => logs the number of milliseconds it took for the deferred function to be invoked - */ - var now = nativeNow || function() { - return new Date().getTime(); - }; - - /*------------------------------------------------------------------------*/ - - /** - * The opposite of `_.before`; this method creates a function that invokes - * `func` once it is called `n` or more times. - * - * @static - * @memberOf _ - * @category Function - * @param {number} n The number of calls before `func` is invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var saves = ['profile', 'settings']; - * - * var done = _.after(saves.length, function() { - * console.log('done saving!'); - * }); - * - * _.forEach(saves, function(type) { - * asyncSave({ 'type': type, 'complete': done }); - * }); - * // => logs 'done saving!' after the two async saves have completed - */ - function after(n, func) { - if (typeof func != 'function') { - if (typeof n == 'function') { - var temp = n; - n = func; - func = temp; - } else { - throw new TypeError(FUNC_ERROR_TEXT); - } - } - n = nativeIsFinite(n = +n) ? n : 0; - return function() { - if (--n < 1) { - return func.apply(this, arguments); - } - }; - } - - /** - * Creates a function that accepts up to `n` arguments ignoring any - * additional arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to cap arguments for. - * @param {number} [n=func.length] The arity cap. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new function. - * @example - * - * _.map(['6', '8', '10'], _.ary(parseInt, 1)); - * // => [6, 8, 10] - */ - function ary(func, n, guard) { - if (guard && isIterateeCall(func, n, guard)) { - n = null; - } - n = (func && n == null) ? func.length : nativeMax(+n || 0, 0); - return createWrapper(func, ARY_FLAG, null, null, null, null, n); - } - - /** - * Creates a function that invokes `func`, with the `this` binding and arguments - * of the created function, while it is called less than `n` times. Subsequent - * calls to the created function return the result of the last `func` invocation. - * - * @static - * @memberOf _ - * @category Function - * @param {number} n The number of calls at which `func` is no longer invoked. - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * jQuery('#add').on('click', _.before(5, addContactToList)); - * // => allows adding up to 4 contacts to the list - */ - function before(n, func) { - var result; - if (typeof func != 'function') { - if (typeof n == 'function') { - var temp = n; - n = func; - func = temp; - } else { - throw new TypeError(FUNC_ERROR_TEXT); - } - } - return function() { - if (--n > 0) { - result = func.apply(this, arguments); - } else { - func = null; - } - return result; - }; - } - - /** - * Creates a function that invokes `func` with the `this` binding of `thisArg` - * and prepends any additional `_.bind` arguments to those provided to the - * bound function. - * - * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for partially applied arguments. - * - * **Note:** Unlike native `Function#bind` this method does not set the `length` - * property of bound functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to bind. - * @param {*} thisArg The `this` binding of `func`. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var greet = function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * }; - * - * var object = { 'user': 'fred' }; - * - * var bound = _.bind(greet, object, 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * // using placeholders - * var bound = _.bind(greet, object, _, '!'); - * bound('hi'); - * // => 'hi fred!' - */ - function bind(func, thisArg) { - var bitmask = BIND_FLAG; - if (arguments.length > 2) { - var partials = baseSlice(arguments, 2), - holders = replaceHolders(partials, bind.placeholder); - - bitmask |= PARTIAL_FLAG; - } - return createWrapper(func, bitmask, thisArg, partials, holders); - } - - /** - * Binds methods of an object to the object itself, overwriting the existing - * method. Method names may be specified as individual arguments or as arrays - * of method names. If no method names are provided all enumerable function - * properties, own and inherited, of `object` are bound. - * - * **Note:** This method does not set the `length` property of bound functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Object} object The object to bind and assign the bound methods to. - * @param {...(string|string[])} [methodNames] The object method names to bind, - * specified as individual method names or arrays of method names. - * @returns {Object} Returns `object`. - * @example - * - * var view = { - * 'label': 'docs', - * 'onClick': function() { - * console.log('clicked ' + this.label); - * } - * }; - * - * _.bindAll(view); - * jQuery('#docs').on('click', view.onClick); - * // => logs 'clicked docs' when the element is clicked - */ - function bindAll(object) { - return baseBindAll(object, - arguments.length > 1 - ? baseFlatten(arguments, false, false, 1) - : functions(object) - ); - } - - /** - * Creates a function that invokes the method at `object[key]` and prepends - * any additional `_.bindKey` arguments to those provided to the bound function. - * - * This method differs from `_.bind` by allowing bound functions to reference - * methods that may be redefined or don't yet exist. - * See [Peter Michaux's article](http://michaux.ca/articles/lazy-function-definition-pattern) - * for more details. - * - * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * @static - * @memberOf _ - * @category Function - * @param {Object} object The object the method belongs to. - * @param {string} key The key of the method. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new bound function. - * @example - * - * var object = { - * 'user': 'fred', - * 'greet': function(greeting, punctuation) { - * return greeting + ' ' + this.user + punctuation; - * } - * }; - * - * var bound = _.bindKey(object, 'greet', 'hi'); - * bound('!'); - * // => 'hi fred!' - * - * object.greet = function(greeting, punctuation) { - * return greeting + 'ya ' + this.user + punctuation; - * }; - * - * bound('!'); - * // => 'hiya fred!' - * - * // using placeholders - * var bound = _.bindKey(object, 'greet', _, '!'); - * bound('hi'); - * // => 'hiya fred!' - */ - function bindKey(object, key) { - var bitmask = BIND_FLAG | BIND_KEY_FLAG; - if (arguments.length > 2) { - var partials = baseSlice(arguments, 2), - holders = replaceHolders(partials, bindKey.placeholder); - - bitmask |= PARTIAL_FLAG; - } - return createWrapper(key, bitmask, object, partials, holders); - } - - /** - * Creates a function that accepts one or more arguments of `func` that when - * called either invokes `func` returning its result, if all `func` arguments - * have been provided, or returns a function that accepts one or more of the - * remaining `func` arguments, and so on. The arity of `func` may be specified - * if `func.length` is not sufficient. - * - * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds, - * may be used as a placeholder for provided arguments. - * - * **Note:** This method does not set the `length` property of curried functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curry(abc); - * - * curried(1)(2)(3); - * // => [1, 2, 3] - * - * curried(1, 2)(3); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // using placeholders - * curried(1)(_, 3)(2); - * // => [1, 2, 3] - */ - function curry(func, arity, guard) { - if (guard && isIterateeCall(func, arity, guard)) { - arity = null; - } - var result = createWrapper(func, CURRY_FLAG, null, null, null, null, null, arity); - result.placeholder = curry.placeholder; - return result; - } - - /** - * This method is like `_.curry` except that arguments are applied to `func` - * in the manner of `_.partialRight` instead of `_.partial`. - * - * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for provided arguments. - * - * **Note:** This method does not set the `length` property of curried functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to curry. - * @param {number} [arity=func.length] The arity of `func`. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Function} Returns the new curried function. - * @example - * - * var abc = function(a, b, c) { - * return [a, b, c]; - * }; - * - * var curried = _.curryRight(abc); - * - * curried(3)(2)(1); - * // => [1, 2, 3] - * - * curried(2, 3)(1); - * // => [1, 2, 3] - * - * curried(1, 2, 3); - * // => [1, 2, 3] - * - * // using placeholders - * curried(3)(1, _)(2); - * // => [1, 2, 3] - */ - function curryRight(func, arity, guard) { - if (guard && isIterateeCall(func, arity, guard)) { - arity = null; - } - var result = createWrapper(func, CURRY_RIGHT_FLAG, null, null, null, null, null, arity); - result.placeholder = curryRight.placeholder; - return result; - } - - /** - * Creates a function that delays invoking `func` until after `wait` milliseconds - * have elapsed since the last time it was invoked. The created function comes - * with a `cancel` method to cancel delayed invocations. Provide an options - * object to indicate that `func` should be invoked on the leading and/or - * trailing edge of the `wait` timeout. Subsequent calls to the debounced - * function return the result of the last `func` invocation. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the debounced function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.debounce` and `_.throttle`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to debounce. - * @param {number} [wait=0] The number of milliseconds to delay. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=false] Specify invoking on the leading - * edge of the timeout. - * @param {number} [options.maxWait] The maximum time `func` is allowed to be - * delayed before it is invoked. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new debounced function. - * @example - * - * // avoid costly calculations while the window size is in flux - * jQuery(window).on('resize', _.debounce(calculateLayout, 150)); - * - * // invoke `sendMail` when the click event is fired, debouncing subsequent calls - * jQuery('#postbox').on('click', _.debounce(sendMail, 300, { - * 'leading': true, - * 'trailing': false - * })); - * - * // ensure `batchLog` is invoked once after 1 second of debounced calls - * var source = new EventSource('/stream'); - * jQuery(source).on('message', _.debounce(batchLog, 250, { - * 'maxWait': 1000 - * })); - * - * // cancel a debounced call - * var todoChanges = _.debounce(batchLog, 1000); - * Object.observe(models.todo, todoChanges); - * - * Object.observe(models, function(changes) { - * if (_.find(changes, { 'user': 'todo', 'type': 'delete'})) { - * todoChanges.cancel(); - * } - * }, ['delete']); - * - * // ...at some point `models.todo` is changed - * models.todo.completed = true; - * - * // ...before 1 second has passed `models.todo` is deleted - * // which cancels the debounced `todoChanges` call - * delete models.todo; - */ - function debounce(func, wait, options) { - var args, - maxTimeoutId, - result, - stamp, - thisArg, - timeoutId, - trailingCall, - lastCalled = 0, - maxWait = false, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - wait = wait < 0 ? 0 : (+wait || 0); - if (options === true) { - var leading = true; - trailing = false; - } else if (isObject(options)) { - leading = options.leading; - maxWait = 'maxWait' in options && nativeMax(+options.maxWait || 0, wait); - trailing = 'trailing' in options ? options.trailing : trailing; - } - - function cancel() { - if (timeoutId) { - clearTimeout(timeoutId); - } - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - } - - function delayed() { - var remaining = wait - (now() - stamp); - if (remaining <= 0 || remaining > wait) { - if (maxTimeoutId) { - clearTimeout(maxTimeoutId); - } - var isCalled = trailingCall; - maxTimeoutId = timeoutId = trailingCall = undefined; - if (isCalled) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } else { - timeoutId = setTimeout(delayed, remaining); - } - } - - function maxDelayed() { - if (timeoutId) { - clearTimeout(timeoutId); - } - maxTimeoutId = timeoutId = trailingCall = undefined; - if (trailing || (maxWait !== wait)) { - lastCalled = now(); - result = func.apply(thisArg, args); - if (!timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - } - } - - function debounced() { - args = arguments; - stamp = now(); - thisArg = this; - trailingCall = trailing && (timeoutId || !leading); - - if (maxWait === false) { - var leadingCall = leading && !timeoutId; - } else { - if (!maxTimeoutId && !leading) { - lastCalled = stamp; - } - var remaining = maxWait - (stamp - lastCalled), - isCalled = remaining <= 0 || remaining > maxWait; - - if (isCalled) { - if (maxTimeoutId) { - maxTimeoutId = clearTimeout(maxTimeoutId); - } - lastCalled = stamp; - result = func.apply(thisArg, args); - } - else if (!maxTimeoutId) { - maxTimeoutId = setTimeout(maxDelayed, remaining); - } - } - if (isCalled && timeoutId) { - timeoutId = clearTimeout(timeoutId); - } - else if (!timeoutId && wait !== maxWait) { - timeoutId = setTimeout(delayed, wait); - } - if (leadingCall) { - isCalled = true; - result = func.apply(thisArg, args); - } - if (isCalled && !timeoutId && !maxTimeoutId) { - args = thisArg = null; - } - return result; - } - debounced.cancel = cancel; - return debounced; - } - - /** - * Defers invoking the `func` until the current call stack has cleared. Any - * additional arguments are provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to defer. - * @param {...*} [args] The arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.defer(function(text) { - * console.log(text); - * }, 'deferred'); - * // logs 'deferred' after one or more milliseconds - */ - function defer(func) { - return baseDelay(func, 1, arguments, 1); - } - - /** - * Invokes `func` after `wait` milliseconds. Any additional arguments are - * provided to `func` when it is invoked. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to delay. - * @param {number} wait The number of milliseconds to delay invocation. - * @param {...*} [args] The arguments to invoke the function with. - * @returns {number} Returns the timer id. - * @example - * - * _.delay(function(text) { - * console.log(text); - * }, 1000, 'later'); - * // => logs 'later' after one second - */ - function delay(func, wait) { - return baseDelay(func, wait, arguments, 2); - } - - /** - * Creates a function that returns the result of invoking the provided - * functions with the `this` binding of the created function, where each - * successive invocation is supplied the return value of the previous. - * - * @static - * @memberOf _ - * @category Function - * @param {...Function} [funcs] Functions to invoke. - * @returns {Function} Returns the new function. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flow(_.add, square); - * addSquare(1, 2); - * // => 9 - */ - var flow = createComposer(); - - /** - * This method is like `_.flow` except that it creates a function that - * invokes the provided functions from right to left. - * - * @static - * @memberOf _ - * @alias backflow, compose - * @category Function - * @param {...Function} [funcs] Functions to invoke. - * @returns {Function} Returns the new function. - * @example - * - * function square(n) { - * return n * n; - * } - * - * var addSquare = _.flowRight(square, _.add); - * addSquare(1, 2); - * // => 9 - */ - var flowRight = createComposer(true); - - /** - * Creates a function that memoizes the result of `func`. If `resolver` is - * provided it determines the cache key for storing the result based on the - * arguments provided to the memoized function. By default, the first argument - * provided to the memoized function is coerced to a string and used as the - * cache key. The `func` is invoked with the `this` binding of the memoized - * function. - * - * **Note:** The cache is exposed as the `cache` property on the memoized - * function. Its creation may be customized by replacing the `_.memoize.Cache` - * constructor with one whose instances implement the ES `Map` method interface - * of `get`, `has`, and `set`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-properties-of-the-map-prototype-object) - * for more details. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to have its output memoized. - * @param {Function} [resolver] The function to resolve the cache key. - * @returns {Function} Returns the new memoizing function. - * @example - * - * var upperCase = _.memoize(function(string) { - * return string.toUpperCase(); - * }); - * - * upperCase('fred'); - * // => 'FRED' - * - * // modifying the result cache - * upperCase.cache.set('fred', 'BARNEY'); - * upperCase('fred'); - * // => 'BARNEY' - * - * // replacing `_.memoize.Cache` - * var object = { 'user': 'fred' }; - * var other = { 'user': 'barney' }; - * var identity = _.memoize(_.identity); - * - * identity(object); - * // => { 'user': 'fred' } - * identity(other); - * // => { 'user': 'fred' } - * - * _.memoize.Cache = WeakMap; - * var identity = _.memoize(_.identity); - * - * identity(object); - * // => { 'user': 'fred' } - * identity(other); - * // => { 'user': 'barney' } - */ - function memoize(func, resolver) { - if (typeof func != 'function' || (resolver && typeof resolver != 'function')) { - throw new TypeError(FUNC_ERROR_TEXT); - } - var memoized = function() { - var args = arguments, - cache = memoized.cache, - key = resolver ? resolver.apply(this, args) : args[0]; - - if (cache.has(key)) { - return cache.get(key); - } - var result = func.apply(this, args); - cache.set(key, result); - return result; - }; - memoized.cache = new memoize.Cache; - return memoized; - } - - /** - * Creates a function that negates the result of the predicate `func`. The - * `func` predicate is invoked with the `this` binding and arguments of the - * created function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} predicate The predicate to negate. - * @returns {Function} Returns the new function. - * @example - * - * function isEven(n) { - * return n % 2 == 0; - * } - * - * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven)); - * // => [1, 3, 5] - */ - function negate(predicate) { - if (typeof predicate != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function() { - return !predicate.apply(this, arguments); - }; - } - - /** - * Creates a function that is restricted to invoking `func` once. Repeat calls - * to the function return the value of the first call. The `func` is invoked - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to restrict. - * @returns {Function} Returns the new restricted function. - * @example - * - * var initialize = _.once(createApplication); - * initialize(); - * initialize(); - * // `initialize` invokes `createApplication` once - */ - function once(func) { - return before(func, 2); - } - - /** - * Creates a function that invokes `func` with `partial` arguments prepended - * to those provided to the new function. This method is like `_.bind` except - * it does **not** alter the `this` binding. - * - * The `_.partial.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method does not set the `length` property of partially - * applied functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { - * return greeting + ' ' + name; - * }; - * - * var sayHelloTo = _.partial(greet, 'hello'); - * sayHelloTo('fred'); - * // => 'hello fred' - * - * // using placeholders - * var greetFred = _.partial(greet, _, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - */ - function partial(func) { - var partials = baseSlice(arguments, 1), - holders = replaceHolders(partials, partial.placeholder); - - return createWrapper(func, PARTIAL_FLAG, null, partials, holders); - } - - /** - * This method is like `_.partial` except that partially applied arguments - * are appended to those provided to the new function. - * - * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic - * builds, may be used as a placeholder for partially applied arguments. - * - * **Note:** This method does not set the `length` property of partially - * applied functions. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to partially apply arguments to. - * @param {...*} [args] The arguments to be partially applied. - * @returns {Function} Returns the new partially applied function. - * @example - * - * var greet = function(greeting, name) { - * return greeting + ' ' + name; - * }; - * - * var greetFred = _.partialRight(greet, 'fred'); - * greetFred('hi'); - * // => 'hi fred' - * - * // using placeholders - * var sayHelloTo = _.partialRight(greet, 'hello', _); - * sayHelloTo('fred'); - * // => 'hello fred' - */ - function partialRight(func) { - var partials = baseSlice(arguments, 1), - holders = replaceHolders(partials, partialRight.placeholder); - - return createWrapper(func, PARTIAL_RIGHT_FLAG, null, partials, holders); - } - - /** - * Creates a function that invokes `func` with arguments arranged according - * to the specified indexes where the argument value at the first index is - * provided as the first argument, the argument value at the second index is - * provided as the second argument, and so on. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to rearrange arguments for. - * @param {...(number|number[])} indexes The arranged argument indexes, - * specified as individual indexes or arrays of indexes. - * @returns {Function} Returns the new function. - * @example - * - * var rearged = _.rearg(function(a, b, c) { - * return [a, b, c]; - * }, 2, 0, 1); - * - * rearged('b', 'c', 'a') - * // => ['a', 'b', 'c'] - * - * var map = _.rearg(_.map, [1, 0]); - * map(function(n) { - * return n * 3; - * }, [1, 2, 3]); - * // => [3, 6, 9] - */ - function rearg(func) { - var indexes = baseFlatten(arguments, false, false, 1); - return createWrapper(func, REARG_FLAG, null, null, null, indexes); - } - - /** - * Creates a function that invokes `func` with the `this` binding of the - * created function and the array of arguments provided to the created - * function much like [Function#apply](http://es5.github.io/#x15.3.4.3). - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to spread arguments over. - * @returns {*} Returns the new function. - * @example - * - * var spread = _.spread(function(who, what) { - * return who + ' says ' + what; - * }); - * - * spread(['Fred', 'hello']); - * // => 'Fred says hello' - * - * // with a Promise - * var numbers = Promise.all([ - * Promise.resolve(40), - * Promise.resolve(36) - * ]); - * - * numbers.then(_.spread(function(x, y) { - * return x + y; - * })); - * // => a Promise of 76 - */ - function spread(func) { - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - return function(array) { - return func.apply(this, array); - }; - } - - /** - * Creates a function that only invokes `func` at most once per every `wait` - * milliseconds. The created function comes with a `cancel` method to cancel - * delayed invocations. Provide an options object to indicate that `func` - * should be invoked on the leading and/or trailing edge of the `wait` timeout. - * Subsequent calls to the throttled function return the result of the last - * `func` call. - * - * **Note:** If `leading` and `trailing` options are `true`, `func` is invoked - * on the trailing edge of the timeout only if the the throttled function is - * invoked more than once during the `wait` timeout. - * - * See [David Corbacho's article](http://drupalmotion.com/article/debounce-and-throttle-visual-explanation) - * for details over the differences between `_.throttle` and `_.debounce`. - * - * @static - * @memberOf _ - * @category Function - * @param {Function} func The function to throttle. - * @param {number} [wait=0] The number of milliseconds to throttle invocations to. - * @param {Object} [options] The options object. - * @param {boolean} [options.leading=true] Specify invoking on the leading - * edge of the timeout. - * @param {boolean} [options.trailing=true] Specify invoking on the trailing - * edge of the timeout. - * @returns {Function} Returns the new throttled function. - * @example - * - * // avoid excessively updating the position while scrolling - * jQuery(window).on('scroll', _.throttle(updatePosition, 100)); - * - * // invoke `renewToken` when the click event is fired, but not more than once every 5 minutes - * jQuery('.interactive').on('click', _.throttle(renewToken, 300000, { - * 'trailing': false - * })); - * - * // cancel a trailing throttled call - * jQuery(window).on('popstate', throttled.cancel); - */ - function throttle(func, wait, options) { - var leading = true, - trailing = true; - - if (typeof func != 'function') { - throw new TypeError(FUNC_ERROR_TEXT); - } - if (options === false) { - leading = false; - } else if (isObject(options)) { - leading = 'leading' in options ? !!options.leading : leading; - trailing = 'trailing' in options ? !!options.trailing : trailing; - } - debounceOptions.leading = leading; - debounceOptions.maxWait = +wait; - debounceOptions.trailing = trailing; - return debounce(func, wait, debounceOptions); - } - - /** - * Creates a function that provides `value` to the wrapper function as its - * first argument. Any additional arguments provided to the function are - * appended to those provided to the wrapper function. The wrapper is invoked - * with the `this` binding of the created function. - * - * @static - * @memberOf _ - * @category Function - * @param {*} value The value to wrap. - * @param {Function} wrapper The wrapper function. - * @returns {Function} Returns the new function. - * @example - * - * var p = _.wrap(_.escape, function(func, text) { - * return '

' + func(text) + '

'; - * }); - * - * p('fred, barney, & pebbles'); - * // => '

fred, barney, & pebbles

' - */ - function wrap(value, wrapper) { - wrapper = wrapper == null ? identity : wrapper; - return createWrapper(wrapper, PARTIAL_FLAG, null, [value], []); - } - - /*------------------------------------------------------------------------*/ - - /** - * Creates a clone of `value`. If `isDeep` is `true` nested objects are cloned, - * otherwise they are assigned by reference. If `customizer` is provided it is - * invoked to produce the cloned values. If `customizer` returns `undefined` - * cloning is handled by the method instead. The `customizer` is bound to - * `thisArg` and invoked with two argument; (value [, index|key, object]). - * - * **Note:** This method is loosely based on the structured clone algorithm. - * The enumerable properties of `arguments` objects and objects created by - * constructors other than `Object` are cloned to plain `Object` objects. An - * empty object is returned for uncloneable values such as functions, DOM nodes, - * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm) - * for more details. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to clone. - * @param {boolean} [isDeep] Specify a deep clone. - * @param {Function} [customizer] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {*} Returns the cloned value. - * @example - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * var shallow = _.clone(users); - * shallow[0] === users[0]; - * // => true - * - * var deep = _.clone(users, true); - * deep[0] === users[0]; - * // => false - * - * // using a customizer callback - * var el = _.clone(document.body, function(value) { - * if (_.isElement(value)) { - * return value.cloneNode(false); - * } - * }); - * - * el === document.body - * // => false - * el.nodeName - * // => BODY - * el.childNodes.length; - * // => 0 - */ - function clone(value, isDeep, customizer, thisArg) { - if (isDeep && typeof isDeep != 'boolean' && isIterateeCall(value, isDeep, customizer)) { - isDeep = false; - } - else if (typeof isDeep == 'function') { - thisArg = customizer; - customizer = isDeep; - isDeep = false; - } - customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); - return baseClone(value, isDeep, customizer); - } - - /** - * Creates a deep clone of `value`. If `customizer` is provided it is invoked - * to produce the cloned values. If `customizer` returns `undefined` cloning - * is handled by the method instead. The `customizer` is bound to `thisArg` - * and invoked with two argument; (value [, index|key, object]). - * - * **Note:** This method is loosely based on the structured clone algorithm. - * The enumerable properties of `arguments` objects and objects created by - * constructors other than `Object` are cloned to plain `Object` objects. An - * empty object is returned for uncloneable values such as functions, DOM nodes, - * Maps, Sets, and WeakMaps. See the [HTML5 specification](http://www.w3.org/TR/html5/infrastructure.html#internal-structured-cloning-algorithm) - * for more details. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to deep clone. - * @param {Function} [customizer] The function to customize cloning values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {*} Returns the deep cloned value. - * @example - * - * var users = [ - * { 'user': 'barney' }, - * { 'user': 'fred' } - * ]; - * - * var deep = _.cloneDeep(users); - * deep[0] === users[0]; - * // => false - * - * // using a customizer callback - * var el = _.cloneDeep(document.body, function(value) { - * if (_.isElement(value)) { - * return value.cloneNode(true); - * } - * }); - * - * el === document.body - * // => false - * el.nodeName - * // => BODY - * el.childNodes.length; - * // => 20 - */ - function cloneDeep(value, customizer, thisArg) { - customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 1); - return baseClone(value, true, customizer); - } - - /** - * Checks if `value` is classified as an `arguments` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArguments(function() { return arguments; }()); - * // => true - * - * _.isArguments([1, 2, 3]); - * // => false - */ - function isArguments(value) { - var length = isObjectLike(value) ? value.length : undefined; - return (isLength(length) && objToString.call(value) == argsTag) || false; - } - - /** - * Checks if `value` is classified as an `Array` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isArray([1, 2, 3]); - * // => true - * - * _.isArray(function() { return arguments; }()); - * // => false - */ - var isArray = nativeIsArray || function(value) { - return (isObjectLike(value) && isLength(value.length) && objToString.call(value) == arrayTag) || false; - }; - - /** - * Checks if `value` is classified as a boolean primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isBoolean(false); - * // => true - * - * _.isBoolean(null); - * // => false - */ - function isBoolean(value) { - return (value === true || value === false || isObjectLike(value) && objToString.call(value) == boolTag) || false; - } - - /** - * Checks if `value` is classified as a `Date` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isDate(new Date); - * // => true - * - * _.isDate('Mon April 23 2012'); - * // => false - */ - function isDate(value) { - return (isObjectLike(value) && objToString.call(value) == dateTag) || false; - } - - /** - * Checks if `value` is a DOM element. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`. - * @example - * - * _.isElement(document.body); - * // => true - * - * _.isElement(''); - * // => false - */ - function isElement(value) { - return (value && value.nodeType === 1 && isObjectLike(value) && - (objToString.call(value).indexOf('Element') > -1)) || false; - } - // Fallback for environments without DOM support. - if (!support.dom) { - isElement = function(value) { - return (value && value.nodeType === 1 && isObjectLike(value) && !isPlainObject(value)) || false; - }; - } - - /** - * Checks if `value` is empty. A value is considered empty unless it is an - * `arguments` object, array, string, or jQuery-like collection with a length - * greater than `0` or an object with own enumerable properties. - * - * @static - * @memberOf _ - * @category Lang - * @param {Array|Object|string} value The value to inspect. - * @returns {boolean} Returns `true` if `value` is empty, else `false`. - * @example - * - * _.isEmpty(null); - * // => true - * - * _.isEmpty(true); - * // => true - * - * _.isEmpty(1); - * // => true - * - * _.isEmpty([1, 2, 3]); - * // => false - * - * _.isEmpty({ 'a': 1 }); - * // => false - */ - function isEmpty(value) { - if (value == null) { - return true; - } - var length = value.length; - if (isLength(length) && (isArray(value) || isString(value) || isArguments(value) || - (isObjectLike(value) && isFunction(value.splice)))) { - return !length; - } - return !keys(value).length; - } - - /** - * Performs a deep comparison between two values to determine if they are - * equivalent. If `customizer` is provided it is invoked to compare values. - * If `customizer` returns `undefined` comparisons are handled by the method - * instead. The `customizer` is bound to `thisArg` and invoked with three - * arguments; (value, other [, index|key]). - * - * **Note:** This method supports comparing arrays, booleans, `Date` objects, - * numbers, `Object` objects, regexes, and strings. Objects are compared by - * their own, not inherited, enumerable properties. Functions and DOM nodes - * are **not** supported. Provide a customizer function to extend support - * for comparing other values. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to compare. - * @param {*} other The other value to compare. - * @param {Function} [customizer] The function to customize comparing values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {boolean} Returns `true` if the values are equivalent, else `false`. - * @example - * - * var object = { 'user': 'fred' }; - * var other = { 'user': 'fred' }; - * - * object == other; - * // => false - * - * _.isEqual(object, other); - * // => true - * - * // using a customizer callback - * var array = ['hello', 'goodbye']; - * var other = ['hi', 'goodbye']; - * - * _.isEqual(array, other, function(value, other) { - * if (_.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/)) { - * return true; - * } - * }); - * // => true - */ - function isEqual(value, other, customizer, thisArg) { - customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3); - if (!customizer && isStrictComparable(value) && isStrictComparable(other)) { - return value === other; - } - var result = customizer ? customizer(value, other) : undefined; - return typeof result == 'undefined' ? baseIsEqual(value, other, customizer) : !!result; - } - - /** - * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`, - * `SyntaxError`, `TypeError`, or `URIError` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an error object, else `false`. - * @example - * - * _.isError(new Error); - * // => true - * - * _.isError(Error); - * // => false - */ - function isError(value) { - return (isObjectLike(value) && typeof value.message == 'string' && objToString.call(value) == errorTag) || false; - } - - /** - * Checks if `value` is a finite primitive number. - * - * **Note:** This method is based on ES `Number.isFinite`. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-number.isfinite) - * for more details. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a finite number, else `false`. - * @example - * - * _.isFinite(10); - * // => true - * - * _.isFinite('10'); - * // => false - * - * _.isFinite(true); - * // => false - * - * _.isFinite(Object(10)); - * // => false - * - * _.isFinite(Infinity); - * // => false - */ - var isFinite = nativeNumIsFinite || function(value) { - return typeof value == 'number' && nativeIsFinite(value); - }; - - /** - * Checks if `value` is classified as a `Function` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isFunction(_); - * // => true - * - * _.isFunction(/abc/); - * // => false - */ - var isFunction = !(baseIsFunction(/x/) || (Uint8Array && !baseIsFunction(Uint8Array))) ? baseIsFunction : function(value) { - // The use of `Object#toString` avoids issues with the `typeof` operator - // in older versions of Chrome and Safari which return 'function' for regexes - // and Safari 8 equivalents which return 'object' for typed array constructors. - return objToString.call(value) == funcTag; - }; - - /** - * Checks if `value` is the language type of `Object`. - * (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) - * - * **Note:** See the [ES5 spec](https://es5.github.io/#x8) for more details. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an object, else `false`. - * @example - * - * _.isObject({}); - * // => true - * - * _.isObject([1, 2, 3]); - * // => true - * - * _.isObject(1); - * // => false - */ - function isObject(value) { - // Avoid a V8 JIT bug in Chrome 19-20. - // See https://code.google.com/p/v8/issues/detail?id=2291 for more details. - var type = typeof value; - return type == 'function' || (value && type == 'object') || false; - } - - /** - * Performs a deep comparison between `object` and `source` to determine if - * `object` contains equivalent property values. If `customizer` is provided - * it is invoked to compare values. If `customizer` returns `undefined` - * comparisons are handled by the method instead. The `customizer` is bound - * to `thisArg` and invoked with three arguments; (value, other, index|key). - * - * **Note:** This method supports comparing properties of arrays, booleans, - * `Date` objects, numbers, `Object` objects, regexes, and strings. Functions - * and DOM nodes are **not** supported. Provide a customizer function to extend - * support for comparing other values. - * - * @static - * @memberOf _ - * @category Lang - * @param {Object} object The object to inspect. - * @param {Object} source The object of property values to match. - * @param {Function} [customizer] The function to customize comparing values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {boolean} Returns `true` if `object` is a match, else `false`. - * @example - * - * var object = { 'user': 'fred', 'age': 40 }; - * - * _.isMatch(object, { 'age': 40 }); - * // => true - * - * _.isMatch(object, { 'age': 36 }); - * // => false - * - * // using a customizer callback - * var object = { 'greeting': 'hello' }; - * var source = { 'greeting': 'hi' }; - * - * _.isMatch(object, source, function(value, other) { - * return _.every([value, other], RegExp.prototype.test, /^h(?:i|ello)$/) || undefined; - * }); - * // => true - */ - function isMatch(object, source, customizer, thisArg) { - var props = keys(source), - length = props.length; - - customizer = typeof customizer == 'function' && bindCallback(customizer, thisArg, 3); - if (!customizer && length == 1) { - var key = props[0], - value = source[key]; - - if (isStrictComparable(value)) { - return object != null && value === object[key] && hasOwnProperty.call(object, key); - } - } - var values = Array(length), - strictCompareFlags = Array(length); - - while (length--) { - value = values[length] = source[props[length]]; - strictCompareFlags[length] = isStrictComparable(value); - } - return baseIsMatch(object, props, values, strictCompareFlags, customizer); - } - - /** - * Checks if `value` is `NaN`. - * - * **Note:** This method is not the same as native `isNaN` which returns `true` - * for `undefined` and other non-numeric values. See the [ES5 spec](https://es5.github.io/#x15.1.2.4) - * for more details. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. - * @example - * - * _.isNaN(NaN); - * // => true - * - * _.isNaN(new Number(NaN)); - * // => true - * - * isNaN(undefined); - * // => true - * - * _.isNaN(undefined); - * // => false - */ - function isNaN(value) { - // An `NaN` primitive is the only value that is not equal to itself. - // Perform the `toStringTag` check first to avoid errors with some host objects in IE. - return isNumber(value) && value != +value; - } - - /** - * Checks if `value` is a native function. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a native function, else `false`. - * @example - * - * _.isNative(Array.prototype.push); - * // => true - * - * _.isNative(_); - * // => false - */ - function isNative(value) { - if (value == null) { - return false; - } - if (objToString.call(value) == funcTag) { - return reNative.test(fnToString.call(value)); - } - return (isObjectLike(value) && reHostCtor.test(value)) || false; - } - - /** - * Checks if `value` is `null`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `null`, else `false`. - * @example - * - * _.isNull(null); - * // => true - * - * _.isNull(void 0); - * // => false - */ - function isNull(value) { - return value === null; - } - - /** - * Checks if `value` is classified as a `Number` primitive or object. - * - * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are classified - * as numbers, use the `_.isFinite` method. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isNumber(8.4); - * // => true - * - * _.isNumber(NaN); - * // => true - * - * _.isNumber('8.4'); - * // => false - */ - function isNumber(value) { - return typeof value == 'number' || (isObjectLike(value) && objToString.call(value) == numberTag) || false; - } - - /** - * Checks if `value` is a plain object, that is, an object created by the - * `Object` constructor or one with a `[[Prototype]]` of `null`. - * - * **Note:** This method assumes objects created by the `Object` constructor - * have no inherited enumerable properties. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a plain object, else `false`. - * @example - * - * function Foo() { - * this.a = 1; - * } - * - * _.isPlainObject(new Foo); - * // => false - * - * _.isPlainObject([1, 2, 3]); - * // => false - * - * _.isPlainObject({ 'x': 0, 'y': 0 }); - * // => true - * - * _.isPlainObject(Object.create(null)); - * // => true - */ - var isPlainObject = !getPrototypeOf ? shimIsPlainObject : function(value) { - if (!(value && objToString.call(value) == objectTag)) { - return false; - } - var valueOf = value.valueOf, - objProto = isNative(valueOf) && (objProto = getPrototypeOf(valueOf)) && getPrototypeOf(objProto); - - return objProto - ? (value == objProto || getPrototypeOf(value) == objProto) - : shimIsPlainObject(value); - }; - - /** - * Checks if `value` is classified as a `RegExp` object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isRegExp(/abc/); - * // => true - * - * _.isRegExp('/abc/'); - * // => false - */ - function isRegExp(value) { - return (isObjectLike(value) && objToString.call(value) == regexpTag) || false; - } - - /** - * Checks if `value` is classified as a `String` primitive or object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isString('abc'); - * // => true - * - * _.isString(1); - * // => false - */ - function isString(value) { - return typeof value == 'string' || (isObjectLike(value) && objToString.call(value) == stringTag) || false; - } - - /** - * Checks if `value` is classified as a typed array. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is correctly classified, else `false`. - * @example - * - * _.isTypedArray(new Uint8Array); - * // => true - * - * _.isTypedArray([]); - * // => false - */ - function isTypedArray(value) { - return (isObjectLike(value) && isLength(value.length) && typedArrayTags[objToString.call(value)]) || false; - } - - /** - * Checks if `value` is `undefined`. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. - * @example - * - * _.isUndefined(void 0); - * // => true - * - * _.isUndefined(null); - * // => false - */ - function isUndefined(value) { - return typeof value == 'undefined'; - } - - /** - * Converts `value` to an array. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Array} Returns the converted array. - * @example - * - * (function() { - * return _.toArray(arguments).slice(1); - * }(1, 2, 3)); - * // => [2, 3] - */ - function toArray(value) { - var length = value ? value.length : 0; - if (!isLength(length)) { - return values(value); - } - if (!length) { - return []; - } - return arrayCopy(value); - } - - /** - * Converts `value` to a plain object flattening inherited enumerable - * properties of `value` to own properties of the plain object. - * - * @static - * @memberOf _ - * @category Lang - * @param {*} value The value to convert. - * @returns {Object} Returns the converted plain object. - * @example - * - * function Foo() { - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.assign({ 'a': 1 }, new Foo); - * // => { 'a': 1, 'b': 2 } - * - * _.assign({ 'a': 1 }, _.toPlainObject(new Foo)); - * // => { 'a': 1, 'b': 2, 'c': 3 } - */ - function toPlainObject(value) { - return baseCopy(value, keysIn(value)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object. Subsequent sources overwrite property assignments of previous sources. - * If `customizer` is provided it is invoked to produce the assigned values. - * The `customizer` is bound to `thisArg` and invoked with five arguments; - * (objectValue, sourceValue, key, object, source). - * - * @static - * @memberOf _ - * @alias extend - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @param {Function} [customizer] The function to customize assigning values. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {Object} Returns `object`. - * @example - * - * _.assign({ 'user': 'barney' }, { 'age': 40 }, { 'user': 'fred' }); - * // => { 'user': 'fred', 'age': 40 } - * - * // using a customizer callback - * var defaults = _.partialRight(_.assign, function(value, other) { - * return typeof value == 'undefined' ? other : value; - * }); - * - * defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); - * // => { 'user': 'barney', 'age': 36 } - */ - var assign = createAssigner(baseAssign); - - /** - * Creates an object that inherits from the given `prototype` object. If a - * `properties` object is provided its own enumerable properties are assigned - * to the created object. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} prototype The object to inherit from. - * @param {Object} [properties] The properties to assign to the object. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Object} Returns the new object. - * @example - * - * function Shape() { - * this.x = 0; - * this.y = 0; - * } - * - * function Circle() { - * Shape.call(this); - * } - * - * Circle.prototype = _.create(Shape.prototype, { - * 'constructor': Circle - * }); - * - * var circle = new Circle; - * circle instanceof Circle; - * // => true - * - * circle instanceof Shape; - * // => true - */ - function create(prototype, properties, guard) { - var result = baseCreate(prototype); - if (guard && isIterateeCall(prototype, properties, guard)) { - properties = null; - } - return properties ? baseCopy(properties, result, keys(properties)) : result; - } - - /** - * Assigns own enumerable properties of source object(s) to the destination - * object for all destination properties that resolve to `undefined`. Once a - * property is set, additional values of the same property are ignored. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @returns {Object} Returns `object`. - * @example - * - * _.defaults({ 'user': 'barney' }, { 'age': 36 }, { 'user': 'fred' }); - * // => { 'user': 'barney', 'age': 36 } - */ - function defaults(object) { - if (object == null) { - return object; - } - var args = arrayCopy(arguments); - args.push(assignDefaults); - return assign.apply(undefined, args); - } - - /** - * This method is like `_.findIndex` except that it returns the key of the - * first element `predicate` returns truthy for, instead of the element itself. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {string|undefined} Returns the key of the matched element, else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findKey(users, function(chr) { - * return chr.age < 40; - * }); - * // => 'barney' (iteration order is not guaranteed) - * - * // using the `_.matches` callback shorthand - * _.findKey(users, { 'age': 1, 'active': true }); - * // => 'pebbles' - * - * // using the `_.matchesProperty` callback shorthand - * _.findKey(users, 'active', false); - * // => 'fred' - * - * // using the `_.property` callback shorthand - * _.findKey(users, 'active'); - * // => 'barney' - */ - function findKey(object, predicate, thisArg) { - predicate = getCallback(predicate, thisArg, 3); - return baseFind(object, predicate, baseForOwn, true); - } - - /** - * This method is like `_.findKey` except that it iterates over elements of - * a collection in the opposite order. - * - * If a property name is provided for `predicate` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `predicate` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to search. - * @param {Function|Object|string} [predicate=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {string|undefined} Returns the key of the matched element, else `undefined`. - * @example - * - * var users = { - * 'barney': { 'age': 36, 'active': true }, - * 'fred': { 'age': 40, 'active': false }, - * 'pebbles': { 'age': 1, 'active': true } - * }; - * - * _.findLastKey(users, function(chr) { - * return chr.age < 40; - * }); - * // => returns `pebbles` assuming `_.findKey` returns `barney` - * - * // using the `_.matches` callback shorthand - * _.findLastKey(users, { 'age': 36, 'active': true }); - * // => 'barney' - * - * // using the `_.matchesProperty` callback shorthand - * _.findLastKey(users, 'active', false); - * // => 'fred' - * - * // using the `_.property` callback shorthand - * _.findLastKey(users, 'active'); - * // => 'pebbles' - */ - function findLastKey(object, predicate, thisArg) { - predicate = getCallback(predicate, thisArg, 3); - return baseFind(object, predicate, baseForOwnRight, true); - } - - /** - * Iterates over own and inherited enumerable properties of an object invoking - * `iteratee` for each property. The `iteratee` is bound to `thisArg` and invoked - * with three arguments; (value, key, object). Iterator functions may exit - * iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forIn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'a', 'b', and 'c' (iteration order is not guaranteed) - */ - function forIn(object, iteratee, thisArg) { - if (typeof iteratee != 'function' || typeof thisArg != 'undefined') { - iteratee = bindCallback(iteratee, thisArg, 3); - } - return baseFor(object, iteratee, keysIn); - } - - /** - * This method is like `_.forIn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forInRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'c', 'b', and 'a' assuming `_.forIn ` logs 'a', 'b', and 'c' - */ - function forInRight(object, iteratee, thisArg) { - iteratee = bindCallback(iteratee, thisArg, 3); - return baseForRight(object, iteratee, keysIn); - } - - /** - * Iterates over own enumerable properties of an object invoking `iteratee` - * for each property. The `iteratee` is bound to `thisArg` and invoked with - * three arguments; (value, key, object). Iterator functions may exit iteration - * early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwn(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'a' and 'b' (iteration order is not guaranteed) - */ - function forOwn(object, iteratee, thisArg) { - if (typeof iteratee != 'function' || typeof thisArg != 'undefined') { - iteratee = bindCallback(iteratee, thisArg, 3); - } - return baseForOwn(object, iteratee); - } - - /** - * This method is like `_.forOwn` except that it iterates over properties of - * `object` in the opposite order. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns `object`. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.forOwnRight(new Foo, function(value, key) { - * console.log(key); - * }); - * // => logs 'b' and 'a' assuming `_.forOwn` logs 'a' and 'b' - */ - function forOwnRight(object, iteratee, thisArg) { - iteratee = bindCallback(iteratee, thisArg, 3); - return baseForRight(object, iteratee, keys); - } - - /** - * Creates an array of function property names from all enumerable properties, - * own and inherited, of `object`. - * - * @static - * @memberOf _ - * @alias methods - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the new array of property names. - * @example - * - * _.functions(_); - * // => ['after', 'ary', 'assign', ...] - */ - function functions(object) { - return baseFunctions(object, keysIn(object)); - } - - /** - * Checks if `key` exists as a direct property of `object` instead of an - * inherited property. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @param {string} key The key to check. - * @returns {boolean} Returns `true` if `key` is a direct property, else `false`. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 3 }; - * - * _.has(object, 'b'); - * // => true - */ - function has(object, key) { - return object ? hasOwnProperty.call(object, key) : false; - } - - /** - * Creates an object composed of the inverted keys and values of `object`. - * If `object` contains duplicate values, subsequent values overwrite property - * assignments of previous values unless `multiValue` is `true`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to invert. - * @param {boolean} [multiValue] Allow multiple values per key. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {Object} Returns the new inverted object. - * @example - * - * var object = { 'a': 1, 'b': 2, 'c': 1 }; - * - * _.invert(object); - * // => { '1': 'c', '2': 'b' } - * - * // with `multiValue` - * _.invert(object, true); - * // => { '1': ['a', 'c'], '2': ['b'] } - */ - function invert(object, multiValue, guard) { - if (guard && isIterateeCall(object, multiValue, guard)) { - multiValue = null; - } - var index = -1, - props = keys(object), - length = props.length, - result = {}; - - while (++index < length) { - var key = props[index], - value = object[key]; - - if (multiValue) { - if (hasOwnProperty.call(result, value)) { - result[value].push(key); - } else { - result[value] = [key]; - } - } - else { - result[value] = key; - } - } - return result; - } - - /** - * Creates an array of the own enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. See the - * [ES spec](https://people.mozilla.org/~jorendorff/es6-draft.html#sec-object.keys) - * for more details. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keys(new Foo); - * // => ['a', 'b'] (iteration order is not guaranteed) - * - * _.keys('hi'); - * // => ['0', '1'] - */ - var keys = !nativeKeys ? shimKeys : function(object) { - if (object) { - var Ctor = object.constructor, - length = object.length; - } - if ((typeof Ctor == 'function' && Ctor.prototype === object) || - (typeof object != 'function' && (length && isLength(length)))) { - return shimKeys(object); - } - return isObject(object) ? nativeKeys(object) : []; - }; - - /** - * Creates an array of the own and inherited enumerable property names of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the array of property names. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.keysIn(new Foo); - * // => ['a', 'b', 'c'] (iteration order is not guaranteed) - */ - function keysIn(object) { - if (object == null) { - return []; - } - if (!isObject(object)) { - object = Object(object); - } - var length = object.length; - length = (length && isLength(length) && - (isArray(object) || (support.nonEnumArgs && isArguments(object))) && length) || 0; - - var Ctor = object.constructor, - index = -1, - isProto = typeof Ctor == 'function' && Ctor.prototype === object, - result = Array(length), - skipIndexes = length > 0; - - while (++index < length) { - result[index] = (index + ''); - } - for (var key in object) { - if (!(skipIndexes && isIndex(key, length)) && - !(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) { - result.push(key); - } - } - return result; - } - - /** - * Creates an object with the same keys as `object` and values generated by - * running each own enumerable property of `object` through `iteratee`. The - * iteratee function is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * If a property name is provided for `iteratee` the created `_.property` - * style callback returns the property value of the given element. - * - * If a value is also provided for `thisArg` the created `_.matchesProperty` - * style callback returns `true` for elements that have a matching property - * value, else `false`. - * - * If an object is provided for `iteratee` the created `_.matches` style - * callback returns `true` for elements that have the properties of the given - * object, else `false`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to iterate over. - * @param {Function|Object|string} [iteratee=_.identity] The function invoked - * per iteration. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {Object} Returns the new mapped object. - * @example - * - * _.mapValues({ 'a': 1, 'b': 2 }, function(n) { - * return n * 3; - * }); - * // => { 'a': 3, 'b': 6 } - * - * var users = { - * 'fred': { 'user': 'fred', 'age': 40 }, - * 'pebbles': { 'user': 'pebbles', 'age': 1 } - * }; - * - * // using the `_.property` callback shorthand - * _.mapValues(users, 'age'); - * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) - */ - function mapValues(object, iteratee, thisArg) { - var result = {}; - iteratee = getCallback(iteratee, thisArg, 3); - - baseForOwn(object, function(value, key, object) { - result[key] = iteratee(value, key, object); - }); - return result; - } - - /** - * Recursively merges own enumerable properties of the source object(s), that - * don't resolve to `undefined` into the destination object. Subsequent sources - * overwrite property assignments of previous sources. If `customizer` is - * provided it is invoked to produce the merged values of the destination and - * source properties. If `customizer` returns `undefined` merging is handled - * by the method instead. The `customizer` is bound to `thisArg` and invoked - * with five arguments; (objectValue, sourceValue, key, object, source). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The destination object. - * @param {...Object} [sources] The source objects. - * @param {Function} [customizer] The function to customize merging properties. - * @param {*} [thisArg] The `this` binding of `customizer`. - * @returns {Object} Returns `object`. - * @example - * - * var users = { - * 'data': [{ 'user': 'barney' }, { 'user': 'fred' }] - * }; - * - * var ages = { - * 'data': [{ 'age': 36 }, { 'age': 40 }] - * }; - * - * _.merge(users, ages); - * // => { 'data': [{ 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }] } - * - * // using a customizer callback - * var object = { - * 'fruits': ['apple'], - * 'vegetables': ['beet'] - * }; - * - * var other = { - * 'fruits': ['banana'], - * 'vegetables': ['carrot'] - * }; - * - * _.merge(object, other, function(a, b) { - * if (_.isArray(a)) { - * return a.concat(b); - * } - * }); - * // => { 'fruits': ['apple', 'banana'], 'vegetables': ['beet', 'carrot'] } - */ - var merge = createAssigner(baseMerge); - - /** - * The opposite of `_.pick`; this method creates an object composed of the - * own and inherited enumerable properties of `object` that are not omitted. - * Property names may be specified as individual arguments or as arrays of - * property names. If `predicate` is provided it is invoked for each property - * of `object` omitting the properties `predicate` returns truthy for. The - * predicate is bound to `thisArg` and invoked with three arguments; - * (value, key, object). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {Function|...(string|string[])} [predicate] The function invoked per - * iteration or property names to omit, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'user': 'fred', 'age': 40 }; - * - * _.omit(object, 'age'); - * // => { 'user': 'fred' } - * - * _.omit(object, _.isNumber); - * // => { 'user': 'fred' } - */ - function omit(object, predicate, thisArg) { - if (object == null) { - return {}; - } - if (typeof predicate != 'function') { - var props = arrayMap(baseFlatten(arguments, false, false, 1), String); - return pickByArray(object, baseDifference(keysIn(object), props)); - } - predicate = bindCallback(predicate, thisArg, 3); - return pickByCallback(object, function(value, key, object) { - return !predicate(value, key, object); - }); - } - - /** - * Creates a two dimensional array of the key-value pairs for `object`, - * e.g. `[[key1, value1], [key2, value2]]`. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to inspect. - * @returns {Array} Returns the new array of key-value pairs. - * @example - * - * _.pairs({ 'barney': 36, 'fred': 40 }); - * // => [['barney', 36], ['fred', 40]] (iteration order is not guaranteed) - */ - function pairs(object) { - var index = -1, - props = keys(object), - length = props.length, - result = Array(length); - - while (++index < length) { - var key = props[index]; - result[index] = [key, object[key]]; - } - return result; - } - - /** - * Creates an object composed of the picked `object` properties. Property - * names may be specified as individual arguments or as arrays of property - * names. If `predicate` is provided it is invoked for each property of `object` - * picking the properties `predicate` returns truthy for. The predicate is - * bound to `thisArg` and invoked with three arguments; (value, key, object). - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The source object. - * @param {Function|...(string|string[])} [predicate] The function invoked per - * iteration or property names to pick, specified as individual property - * names or arrays of property names. - * @param {*} [thisArg] The `this` binding of `predicate`. - * @returns {Object} Returns the new object. - * @example - * - * var object = { 'user': 'fred', 'age': 40 }; - * - * _.pick(object, 'user'); - * // => { 'user': 'fred' } - * - * _.pick(object, _.isString); - * // => { 'user': 'fred' } - */ - function pick(object, predicate, thisArg) { - if (object == null) { - return {}; - } - return typeof predicate == 'function' - ? pickByCallback(object, bindCallback(predicate, thisArg, 3)) - : pickByArray(object, baseFlatten(arguments, false, false, 1)); - } - - /** - * Resolves the value of property `key` on `object`. If the value of `key` is - * a function it is invoked with the `this` binding of `object` and its result - * is returned, else the property value is returned. If the property value is - * `undefined` the `defaultValue` is used in its place. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @param {string} key The key of the property to resolve. - * @param {*} [defaultValue] The value returned if the property value - * resolves to `undefined`. - * @returns {*} Returns the resolved value. - * @example - * - * var object = { 'user': 'fred', 'age': _.constant(40) }; - * - * _.result(object, 'user'); - * // => 'fred' - * - * _.result(object, 'age'); - * // => 40 - * - * _.result(object, 'status', 'busy'); - * // => 'busy' - * - * _.result(object, 'status', _.constant('busy')); - * // => 'busy' - */ - function result(object, key, defaultValue) { - var value = object == null ? undefined : object[key]; - if (typeof value == 'undefined') { - value = defaultValue; - } - return isFunction(value) ? value.call(object) : value; - } - - /** - * An alternative to `_.reduce`; this method transforms `object` to a new - * `accumulator` object which is the result of running each of its own enumerable - * properties through `iteratee`, with each invocation potentially mutating - * the `accumulator` object. The `iteratee` is bound to `thisArg` and invoked - * with four arguments; (accumulator, value, key, object). Iterator functions - * may exit iteration early by explicitly returning `false`. - * - * @static - * @memberOf _ - * @category Object - * @param {Array|Object} object The object to iterate over. - * @param {Function} [iteratee=_.identity] The function invoked per iteration. - * @param {*} [accumulator] The custom accumulator value. - * @param {*} [thisArg] The `this` binding of `iteratee`. - * @returns {*} Returns the accumulated value. - * @example - * - * _.transform([2, 3, 4], function(result, n) { - * result.push(n *= n); - * return n % 2 == 0; - * }); - * // => [4, 9] - * - * _.transform({ 'a': 1, 'b': 2 }, function(result, n, key) { - * result[key] = n * 3; - * }); - * // => { 'a': 3, 'b': 6 } - */ - function transform(object, iteratee, accumulator, thisArg) { - var isArr = isArray(object) || isTypedArray(object); - iteratee = getCallback(iteratee, thisArg, 4); - - if (accumulator == null) { - if (isArr || isObject(object)) { - var Ctor = object.constructor; - if (isArr) { - accumulator = isArray(object) ? new Ctor : []; - } else { - accumulator = baseCreate(isFunction(Ctor) && Ctor.prototype); - } - } else { - accumulator = {}; - } - } - (isArr ? arrayEach : baseForOwn)(object, function(value, index, object) { - return iteratee(accumulator, value, index, object); - }); - return accumulator; - } - - /** - * Creates an array of the own enumerable property values of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.values(new Foo); - * // => [1, 2] (iteration order is not guaranteed) - * - * _.values('hi'); - * // => ['h', 'i'] - */ - function values(object) { - return baseValues(object, keys(object)); - } - - /** - * Creates an array of the own and inherited enumerable property values - * of `object`. - * - * **Note:** Non-object values are coerced to objects. - * - * @static - * @memberOf _ - * @category Object - * @param {Object} object The object to query. - * @returns {Array} Returns the array of property values. - * @example - * - * function Foo() { - * this.a = 1; - * this.b = 2; - * } - * - * Foo.prototype.c = 3; - * - * _.valuesIn(new Foo); - * // => [1, 2, 3] (iteration order is not guaranteed) - */ - function valuesIn(object) { - return baseValues(object, keysIn(object)); - } - - /*------------------------------------------------------------------------*/ - - /** - * Checks if `n` is between `start` and up to but not including, `end`. If - * `end` is not specified it is set to `start` with `start` then set to `0`. - * - * @static - * @memberOf _ - * @category Number - * @param {number} n The number to check. - * @param {number} [start=0] The start of the range. - * @param {number} end The end of the range. - * @returns {boolean} Returns `true` if `n` is in the range, else `false`. - * @example - * - * _.inRange(3, 2, 4); - * // => true - * - * _.inRange(4, 8); - * // => true - * - * _.inRange(4, 2); - * // => false - * - * _.inRange(2, 2); - * // => false - * - * _.inRange(1.2, 2); - * // => true - * - * _.inRange(5.2, 4); - * // => false - */ - function inRange(value, start, end) { - start = +start || 0; - if (typeof end === 'undefined') { - end = start; - start = 0; - } else { - end = +end || 0; - } - return value >= start && value < end; - } - - /** - * Produces a random number between `min` and `max` (inclusive). If only one - * argument is provided a number between `0` and the given number is returned. - * If `floating` is `true`, or either `min` or `max` are floats, a floating-point - * number is returned instead of an integer. - * - * @static - * @memberOf _ - * @category Number - * @param {number} [min=0] The minimum possible value. - * @param {number} [max=1] The maximum possible value. - * @param {boolean} [floating] Specify returning a floating-point number. - * @returns {number} Returns the random number. - * @example - * - * _.random(0, 5); - * // => an integer between 0 and 5 - * - * _.random(5); - * // => also an integer between 0 and 5 - * - * _.random(5, true); - * // => a floating-point number between 0 and 5 - * - * _.random(1.2, 5.2); - * // => a floating-point number between 1.2 and 5.2 - */ - function random(min, max, floating) { - if (floating && isIterateeCall(min, max, floating)) { - max = floating = null; - } - var noMin = min == null, - noMax = max == null; - - if (floating == null) { - if (noMax && typeof min == 'boolean') { - floating = min; - min = 1; - } - else if (typeof max == 'boolean') { - floating = max; - noMax = true; - } - } - if (noMin && noMax) { - max = 1; - noMax = false; - } - min = +min || 0; - if (noMax) { - max = min; - min = 0; - } else { - max = +max || 0; - } - if (floating || min % 1 || max % 1) { - var rand = nativeRandom(); - return nativeMin(min + (rand * (max - min + parseFloat('1e-' + ((rand + '').length - 1)))), max); - } - return baseRandom(min, max); - } - - /*------------------------------------------------------------------------*/ - - /** - * Converts `string` to camel case. - * See [Wikipedia](https://en.wikipedia.org/wiki/CamelCase) for more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the camel cased string. - * @example - * - * _.camelCase('Foo Bar'); - * // => 'fooBar' - * - * _.camelCase('--foo-bar'); - * // => 'fooBar' - * - * _.camelCase('__foo_bar__'); - * // => 'fooBar' - */ - var camelCase = createCompounder(function(result, word, index) { - word = word.toLowerCase(); - return result + (index ? (word.charAt(0).toUpperCase() + word.slice(1)) : word); - }); - - /** - * Capitalizes the first character of `string`. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to capitalize. - * @returns {string} Returns the capitalized string. - * @example - * - * _.capitalize('fred'); - * // => 'Fred' - */ - function capitalize(string) { - string = baseToString(string); - return string && (string.charAt(0).toUpperCase() + string.slice(1)); - } - - /** - * Deburrs `string` by converting latin-1 supplementary letters to basic latin letters. - * See [Wikipedia](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table) - * for more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to deburr. - * @returns {string} Returns the deburred string. - * @example - * - * _.deburr('déjà vu'); - * // => 'deja vu' - */ - function deburr(string) { - string = baseToString(string); - return string && string.replace(reLatin1, deburrLetter); - } - - /** - * Checks if `string` ends with the given target string. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to search. - * @param {string} [target] The string to search for. - * @param {number} [position=string.length] The position to search from. - * @returns {boolean} Returns `true` if `string` ends with `target`, else `false`. - * @example - * - * _.endsWith('abc', 'c'); - * // => true - * - * _.endsWith('abc', 'b'); - * // => false - * - * _.endsWith('abc', 'b', 2); - * // => true - */ - function endsWith(string, target, position) { - string = baseToString(string); - target = (target + ''); - - var length = string.length; - position = typeof position == 'undefined' - ? length - : nativeMin(position < 0 ? 0 : (+position || 0), length); - - position -= target.length; - return position >= 0 && string.indexOf(target, position) == position; - } - - /** - * Converts the characters "&", "<", ">", '"', "'", and "\`", in `string` to - * their corresponding HTML entities. - * - * **Note:** No other characters are escaped. To escape additional characters - * use a third-party library like [_he_](https://mths.be/he). - * - * Though the ">" character is escaped for symmetry, characters like - * ">" and "/" don't require escaping in HTML and have no special meaning - * unless they're part of a tag or unquoted attribute value. - * See [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands) - * (under "semi-related fun fact") for more details. - * - * Backticks are escaped because in Internet Explorer < 9, they can break out - * of attribute values or HTML comments. See [#102](https://html5sec.org/#102), - * [#108](https://html5sec.org/#108), and [#133](https://html5sec.org/#133) of - * the [HTML5 Security Cheatsheet](https://html5sec.org/) for more details. - * - * When working with HTML you should always quote attribute values to reduce - * XSS vectors. See [Ryan Grove's article](http://wonko.com/post/html-escaping) - * for more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escape('fred, barney, & pebbles'); - * // => 'fred, barney, & pebbles' - */ - function escape(string) { - // Reset `lastIndex` because in IE < 9 `String#replace` does not. - string = baseToString(string); - return (string && reHasUnescapedHtml.test(string)) - ? string.replace(reUnescapedHtml, escapeHtmlChar) - : string; - } - - /** - * Escapes the `RegExp` special characters "\", "^", "$", ".", "|", "?", "*", - * "+", "(", ")", "[", "]", "{" and "}" in `string`. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to escape. - * @returns {string} Returns the escaped string. - * @example - * - * _.escapeRegExp('[lodash](https://lodash.com/)'); - * // => '\[lodash\]\(https://lodash\.com/\)' - */ - function escapeRegExp(string) { - string = baseToString(string); - return (string && reHasRegExpChars.test(string)) - ? string.replace(reRegExpChars, '\\$&') - : string; - } - - /** - * Converts `string` to kebab case. - * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles) for - * more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the kebab cased string. - * @example - * - * _.kebabCase('Foo Bar'); - * // => 'foo-bar' - * - * _.kebabCase('fooBar'); - * // => 'foo-bar' - * - * _.kebabCase('__foo_bar__'); - * // => 'foo-bar' - */ - var kebabCase = createCompounder(function(result, word, index) { - return result + (index ? '-' : '') + word.toLowerCase(); - }); - - /** - * Pads `string` on the left and right sides if it is shorter then the given - * padding length. The `chars` string may be truncated if the number of padding - * characters can't be evenly divided by the padding length. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.pad('abc', 8); - * // => ' abc ' - * - * _.pad('abc', 8, '_-'); - * // => '_-abc_-_' - * - * _.pad('abc', 3); - * // => 'abc' - */ - function pad(string, length, chars) { - string = baseToString(string); - length = +length; - - var strLength = string.length; - if (strLength >= length || !nativeIsFinite(length)) { - return string; - } - var mid = (length - strLength) / 2, - leftLength = floor(mid), - rightLength = ceil(mid); - - chars = createPad('', rightLength, chars); - return chars.slice(0, leftLength) + string + chars; - } - - /** - * Pads `string` on the left side if it is shorter then the given padding - * length. The `chars` string may be truncated if the number of padding - * characters exceeds the padding length. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padLeft('abc', 6); - * // => ' abc' - * - * _.padLeft('abc', 6, '_-'); - * // => '_-_abc' - * - * _.padLeft('abc', 3); - * // => 'abc' - */ - function padLeft(string, length, chars) { - string = baseToString(string); - return string && (createPad(string, length, chars) + string); - } - - /** - * Pads `string` on the right side if it is shorter then the given padding - * length. The `chars` string may be truncated if the number of padding - * characters exceeds the padding length. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to pad. - * @param {number} [length=0] The padding length. - * @param {string} [chars=' '] The string used as padding. - * @returns {string} Returns the padded string. - * @example - * - * _.padRight('abc', 6); - * // => 'abc ' - * - * _.padRight('abc', 6, '_-'); - * // => 'abc_-_' - * - * _.padRight('abc', 3); - * // => 'abc' - */ - function padRight(string, length, chars) { - string = baseToString(string); - return string && (string + createPad(string, length, chars)); - } - - /** - * Converts `string` to an integer of the specified radix. If `radix` is - * `undefined` or `0`, a `radix` of `10` is used unless `value` is a hexadecimal, - * in which case a `radix` of `16` is used. - * - * **Note:** This method aligns with the ES5 implementation of `parseInt`. - * See the [ES5 spec](https://es5.github.io/#E) for more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} string The string to convert. - * @param {number} [radix] The radix to interpret `value` by. - * @param- {Object} [guard] Enables use as a callback for functions like `_.map`. - * @returns {number} Returns the converted integer. - * @example - * - * _.parseInt('08'); - * // => 8 - * - * _.map(['6', '08', '10'], _.parseInt); - * // => [6, 8, 10] - */ - function parseInt(string, radix, guard) { - if (guard && isIterateeCall(string, radix, guard)) { - radix = 0; - } - return nativeParseInt(string, radix); - } - // Fallback for environments with pre-ES5 implementations. - if (nativeParseInt(whitespace + '08') != 8) { - parseInt = function(string, radix, guard) { - // Firefox < 21 and Opera < 15 follow ES3 for `parseInt`. - // Chrome fails to trim leading whitespace characters. - // See https://code.google.com/p/v8/issues/detail?id=3109 for more details. - if (guard ? isIterateeCall(string, radix, guard) : radix == null) { - radix = 0; - } else if (radix) { - radix = +radix; - } - string = trim(string); - return nativeParseInt(string, radix || (reHexPrefix.test(string) ? 16 : 10)); - }; - } - - /** - * Repeats the given string `n` times. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to repeat. - * @param {number} [n=0] The number of times to repeat the string. - * @returns {string} Returns the repeated string. - * @example - * - * _.repeat('*', 3); - * // => '***' - * - * _.repeat('abc', 2); - * // => 'abcabc' - * - * _.repeat('abc', 0); - * // => '' - */ - function repeat(string, n) { - var result = ''; - string = baseToString(string); - n = +n; - if (n < 1 || !string || !nativeIsFinite(n)) { - return result; - } - // Leverage the exponentiation by squaring algorithm for a faster repeat. - // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details. - do { - if (n % 2) { - result += string; - } - n = floor(n / 2); - string += string; - } while (n); - - return result; - } - - /** - * Converts `string` to snake case. - * See [Wikipedia](https://en.wikipedia.org/wiki/Snake_case) for more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the snake cased string. - * @example - * - * _.snakeCase('Foo Bar'); - * // => 'foo_bar' - * - * _.snakeCase('fooBar'); - * // => 'foo_bar' - * - * _.snakeCase('--foo-bar'); - * // => 'foo_bar' - */ - var snakeCase = createCompounder(function(result, word, index) { - return result + (index ? '_' : '') + word.toLowerCase(); - }); - - /** - * Converts `string` to start case. - * See [Wikipedia](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage) - * for more details. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to convert. - * @returns {string} Returns the start cased string. - * @example - * - * _.startCase('--foo-bar'); - * // => 'Foo Bar' - * - * _.startCase('fooBar'); - * // => 'Foo Bar' - * - * _.startCase('__foo_bar__'); - * // => 'Foo Bar' - */ - var startCase = createCompounder(function(result, word, index) { - return result + (index ? ' ' : '') + (word.charAt(0).toUpperCase() + word.slice(1)); - }); - - /** - * Checks if `string` starts with the given target string. - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The string to search. - * @param {string} [target] The string to search for. - * @param {number} [position=0] The position to search from. - * @returns {boolean} Returns `true` if `string` starts with `target`, else `false`. - * @example - * - * _.startsWith('abc', 'a'); - * // => true - * - * _.startsWith('abc', 'b'); - * // => false - * - * _.startsWith('abc', 'b', 1); - * // => true - */ - function startsWith(string, target, position) { - string = baseToString(string); - position = position == null - ? 0 - : nativeMin(position < 0 ? 0 : (+position || 0), string.length); - - return string.lastIndexOf(target, position) == position; - } - - /** - * Creates a compiled template function that can interpolate data properties - * in "interpolate" delimiters, HTML-escape interpolated data properties in - * "escape" delimiters, and execute JavaScript in "evaluate" delimiters. Data - * properties may be accessed as free variables in the template. If a setting - * object is provided it takes precedence over `_.templateSettings` values. - * - * **Note:** In the development build `_.template` utilizes sourceURLs for easier debugging. - * See the [HTML5 Rocks article on sourcemaps](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl) - * for more details. - * - * For more information on precompiling templates see - * [lodash's custom builds documentation](https://lodash.com/custom-builds). - * - * For more information on Chrome extension sandboxes see - * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval). - * - * @static - * @memberOf _ - * @category String - * @param {string} [string=''] The template string. - * @param {Object} [options] The options object. - * @param {RegExp} [options.escape] The HTML "escape" delimiter. - * @param {RegExp} [options.evaluate] The "evaluate" delimiter. - * @param {Object} [options.imports] An object to import into the template as free variables. - * @param {RegExp} [options.interpolate] The "interpolate" delimiter. - * @param {string} [options.sourceURL] The sourceURL of the template's compiled source. - * @param {string} [options.variable] The data object variable name. - * @param- {Object} [otherOptions] Enables the legacy `options` param signature. - * @returns {Function} Returns the compiled template function. - * @example - * - * // using the "interpolate" delimiter to create a compiled template - * var compiled = _.template('hello <%= user %>!'); - * compiled({ 'user': 'fred' }); - * // => 'hello fred!' - * - * // using the HTML "escape" delimiter to escape data property values - * var compiled = _.template('<%- value %>'); - * compiled({ 'value': ' -``` - -Or in node.js: - -``` -npm install uuid -``` - -```javascript -var uuid = require('uuid'); - -// Generate a v1 (time-based) id -uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' - -// Generate a v4 (random) id -uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1' -``` - -## API - -### uuid.v1([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v1 (timestamp-based) UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1. - * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used. - * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used. - * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Notes: - -1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.) - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v1({ - node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab], - clockseq: 0x1234, - msecs: new Date('2011-11-01').getTime(), - nsecs: 5678 -}); // -> "710b962e-041c-11e1-9234-0123456789ab" -``` - -Example: In-place generation of two binary IDs - -```javascript -// Generate two ids in an array -var arr = new Array(32); // -> [] -uuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15] -uuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15] - -// Optionally use uuid.unparse() to get stringify the ids -uuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115' -uuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115' -``` - -### uuid.v4([`options` [, `buffer` [, `offset`]]]) - -Generate and return a RFC4122 v4 UUID. - -* `options` - (Object) Optional uuid state to apply. Properties may include: - - * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values - * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values. - -* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. -* `offset` - (Number) Starting index in `buffer` at which to begin writing. - -Returns `buffer`, if specified, otherwise the string form of the UUID - -Example: Generate string UUID with fully-specified options - -```javascript -uuid.v4({ - random: [ - 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea, - 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36 - ] -}); -// -> "109156be-c4fb-41ea-b1b4-efe1671c5836" -``` - -Example: Generate two IDs in a single buffer - -```javascript -var buffer = new Array(32); // (or 'new Buffer' in node.js) -uuid.v4(null, buffer, 0); -uuid.v4(null, buffer, 16); -``` - -### uuid.parse(id[, buffer[, offset]]) -### uuid.unparse(buffer[, offset]) - -Parse and unparse UUIDs - - * `id` - (String) UUID(-like) string - * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used - * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0 - -Example parsing and unparsing a UUID string - -```javascript -var bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> -var string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10' -``` - -### uuid.noConflict() - -(Browsers only) Set `uuid` property back to it's previous value. - -Returns the uuid object. - -Example: - -```javascript -var myUuid = uuid.noConflict(); -myUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a' -``` - -## Deprecated APIs - -Support for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version. - -### uuid([format [, buffer [, offset]]]) - -uuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary). - -## Testing - -In node.js - -``` -> cd test -> node test.js -``` - -In Browser - -``` -open test/test.html -``` - -### Benchmarking - -Requires node.js - -``` -cd benchmark/ -npm install -node benchmark.js -``` - -For a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark) - -For browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance). - -## Release notes - -### 2.0.0 - -* Removed uuid.BufferClass - -### 1.4.0 - -* Improved module context detection -* Removed public RNG functions - -### 1.3.2 - -* Improve tests and handling of v1() options (Issue #24) -* Expose RNG option to allow for perf testing with different generators - -### 1.3.0 - -* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)! -* Support for node.js crypto API -* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code diff --git a/node_modules/uuid/benchmark/README.md b/node_modules/uuid/benchmark/README.md deleted file mode 100644 index aaeb2ea..0000000 --- a/node_modules/uuid/benchmark/README.md +++ /dev/null @@ -1,53 +0,0 @@ -# node-uuid Benchmarks - -### Results - -To see the results of our benchmarks visit https://github.com/broofa/node-uuid/wiki/Benchmark - -### Run them yourself - -node-uuid comes with some benchmarks to measure performance of generating UUIDs. These can be run using node.js. node-uuid is being benchmarked against some other uuid modules, that are available through npm namely `uuid` and `uuid-js`. - -To prepare and run the benchmark issue; - -``` -npm install uuid uuid-js -node benchmark/benchmark.js -``` - -You'll see an output like this one: - -``` -# v4 -nodeuuid.v4(): 854700 uuids/second -nodeuuid.v4('binary'): 788643 uuids/second -nodeuuid.v4('binary', buffer): 1336898 uuids/second -uuid(): 479386 uuids/second -uuid('binary'): 582072 uuids/second -uuidjs.create(4): 312304 uuids/second - -# v1 -nodeuuid.v1(): 938086 uuids/second -nodeuuid.v1('binary'): 683060 uuids/second -nodeuuid.v1('binary', buffer): 1644736 uuids/second -uuidjs.create(1): 190621 uuids/second -``` - -* The `uuid()` entries are for Nikhil Marathe's [uuid module](https://bitbucket.org/nikhilm/uuidjs) which is a wrapper around the native libuuid library. -* The `uuidjs()` entries are for Patrick Negri's [uuid-js module](https://github.com/pnegri/uuid-js) which is a pure javascript implementation based on [UUID.js](https://github.com/LiosK/UUID.js) by LiosK. - -If you want to get more reliable results you can run the benchmark multiple times and write the output into a log file: - -``` -for i in {0..9}; do node benchmark/benchmark.js >> benchmark/bench_0.4.12.log; done; -``` - -If you're interested in how performance varies between different node versions, you can issue the above command multiple times. - -You can then use the shell script `bench.sh` provided in this directory to calculate the averages over all benchmark runs and draw a nice plot: - -``` -(cd benchmark/ && ./bench.sh) -``` - -This assumes you have [gnuplot](http://www.gnuplot.info/) and [ImageMagick](http://www.imagemagick.org/) installed. You'll find a nice `bench.png` graph in the `benchmark/` directory then. diff --git a/node_modules/uuid/benchmark/bench.gnu b/node_modules/uuid/benchmark/bench.gnu deleted file mode 100644 index a342fbb..0000000 --- a/node_modules/uuid/benchmark/bench.gnu +++ /dev/null @@ -1,174 +0,0 @@ -#!/opt/local/bin/gnuplot -persist -# -# -# G N U P L O T -# Version 4.4 patchlevel 3 -# last modified March 2011 -# System: Darwin 10.8.0 -# -# Copyright (C) 1986-1993, 1998, 2004, 2007-2010 -# Thomas Williams, Colin Kelley and many others -# -# gnuplot home: http://www.gnuplot.info -# faq, bugs, etc: type "help seeking-assistance" -# immediate help: type "help" -# plot window: hit 'h' -set terminal postscript eps noenhanced defaultplex \ - leveldefault color colortext \ - solid linewidth 1.2 butt noclip \ - palfuncparam 2000,0.003 \ - "Helvetica" 14 -set output 'bench.eps' -unset clip points -set clip one -unset clip two -set bar 1.000000 front -set border 31 front linetype -1 linewidth 1.000 -set xdata -set ydata -set zdata -set x2data -set y2data -set timefmt x "%d/%m/%y,%H:%M" -set timefmt y "%d/%m/%y,%H:%M" -set timefmt z "%d/%m/%y,%H:%M" -set timefmt x2 "%d/%m/%y,%H:%M" -set timefmt y2 "%d/%m/%y,%H:%M" -set timefmt cb "%d/%m/%y,%H:%M" -set boxwidth -set style fill empty border -set style rectangle back fc lt -3 fillstyle solid 1.00 border lt -1 -set style circle radius graph 0.02, first 0, 0 -set dummy x,y -set format x "% g" -set format y "% g" -set format x2 "% g" -set format y2 "% g" -set format z "% g" -set format cb "% g" -set angles radians -unset grid -set key title "" -set key outside left top horizontal Right noreverse enhanced autotitles columnhead nobox -set key noinvert samplen 4 spacing 1 width 0 height 0 -set key maxcolumns 2 maxrows 0 -unset label -unset arrow -set style increment default -unset style line -set style line 1 linetype 1 linewidth 2.000 pointtype 1 pointsize default pointinterval 0 -unset style arrow -set style histogram clustered gap 2 title offset character 0, 0, 0 -unset logscale -set offsets graph 0.05, 0.15, 0, 0 -set pointsize 1.5 -set pointintervalbox 1 -set encoding default -unset polar -unset parametric -unset decimalsign -set view 60, 30, 1, 1 -set samples 100, 100 -set isosamples 10, 10 -set surface -unset contour -set clabel '%8.3g' -set mapping cartesian -set datafile separator whitespace -unset hidden3d -set cntrparam order 4 -set cntrparam linear -set cntrparam levels auto 5 -set cntrparam points 5 -set size ratio 0 1,1 -set origin 0,0 -set style data points -set style function lines -set xzeroaxis linetype -2 linewidth 1.000 -set yzeroaxis linetype -2 linewidth 1.000 -set zzeroaxis linetype -2 linewidth 1.000 -set x2zeroaxis linetype -2 linewidth 1.000 -set y2zeroaxis linetype -2 linewidth 1.000 -set ticslevel 0.5 -set mxtics default -set mytics default -set mztics default -set mx2tics default -set my2tics default -set mcbtics default -set xtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set xtics norangelimit -set xtics () -set ytics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set ytics autofreq norangelimit -set ztics border in scale 1,0.5 nomirror norotate offset character 0, 0, 0 -set ztics autofreq norangelimit -set nox2tics -set noy2tics -set cbtics border in scale 1,0.5 mirror norotate offset character 0, 0, 0 -set cbtics autofreq norangelimit -set title "" -set title offset character 0, 0, 0 font "" norotate -set timestamp bottom -set timestamp "" -set timestamp offset character 0, 0, 0 font "" norotate -set rrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale rfixmin -set autoscale rfixmax -set trange [ * : * ] noreverse nowriteback # (currently [-5.00000:5.00000] ) -set autoscale tfixmin -set autoscale tfixmax -set urange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale ufixmin -set autoscale ufixmax -set vrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale vfixmin -set autoscale vfixmax -set xlabel "" -set xlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set x2label "" -set x2label offset character 0, 0, 0 font "" textcolor lt -1 norotate -set xrange [ * : * ] noreverse nowriteback # (currently [-0.150000:3.15000] ) -set autoscale xfixmin -set autoscale xfixmax -set x2range [ * : * ] noreverse nowriteback # (currently [0.00000:3.00000] ) -set autoscale x2fixmin -set autoscale x2fixmax -set ylabel "" -set ylabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set y2label "" -set y2label offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set yrange [ 0.00000 : 1.90000e+06 ] noreverse nowriteback # (currently [:] ) -set autoscale yfixmin -set autoscale yfixmax -set y2range [ * : * ] noreverse nowriteback # (currently [0.00000:1.90000e+06] ) -set autoscale y2fixmin -set autoscale y2fixmax -set zlabel "" -set zlabel offset character 0, 0, 0 font "" textcolor lt -1 norotate -set zrange [ * : * ] noreverse nowriteback # (currently [-10.0000:10.0000] ) -set autoscale zfixmin -set autoscale zfixmax -set cblabel "" -set cblabel offset character 0, 0, 0 font "" textcolor lt -1 rotate by -270 -set cbrange [ * : * ] noreverse nowriteback # (currently [8.98847e+307:-8.98847e+307] ) -set autoscale cbfixmin -set autoscale cbfixmax -set zero 1e-08 -set lmargin -1 -set bmargin -1 -set rmargin -1 -set tmargin -1 -set pm3d explicit at s -set pm3d scansautomatic -set pm3d interpolate 1,1 flush begin noftriangles nohidden3d corners2color mean -set palette positive nops_allcF maxcolors 0 gamma 1.5 color model RGB -set palette rgbformulae 7, 5, 15 -set colorbox default -set colorbox vertical origin screen 0.9, 0.2, 0 size screen 0.05, 0.6, 0 front bdefault -set loadpath -set fontpath -set fit noerrorvariables -GNUTERM = "aqua" -plot 'bench_results.txt' using 2:xticlabel(1) w lp lw 2, '' using 3:xticlabel(1) w lp lw 2, '' using 4:xticlabel(1) w lp lw 2, '' using 5:xticlabel(1) w lp lw 2, '' using 6:xticlabel(1) w lp lw 2, '' using 7:xticlabel(1) w lp lw 2, '' using 8:xticlabel(1) w lp lw 2, '' using 9:xticlabel(1) w lp lw 2 -# EOF diff --git a/node_modules/uuid/benchmark/bench.sh b/node_modules/uuid/benchmark/bench.sh deleted file mode 100755 index d870a0c..0000000 --- a/node_modules/uuid/benchmark/bench.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# for a given node version run: -# for i in {0..9}; do node benchmark.js >> bench_0.6.2.log; done; - -PATTERNS=('nodeuuid.v1()' "nodeuuid.v1('binary'," 'nodeuuid.v4()' "nodeuuid.v4('binary'," "uuid()" "uuid('binary')" 'uuidjs.create(1)' 'uuidjs.create(4)' '140byte') -FILES=(node_uuid_v1_string node_uuid_v1_buf node_uuid_v4_string node_uuid_v4_buf libuuid_v4_string libuuid_v4_binary uuidjs_v1_string uuidjs_v4_string 140byte_es) -INDICES=(2 3 2 3 2 2 2 2 2) -VERSIONS=$( ls bench_*.log | sed -e 's/^bench_\([0-9\.]*\)\.log/\1/' | tr "\\n" " " ) -TMPJOIN="tmp_join" -OUTPUT="bench_results.txt" - -for I in ${!FILES[*]}; do - F=${FILES[$I]} - P=${PATTERNS[$I]} - INDEX=${INDICES[$I]} - echo "version $F" > $F - for V in $VERSIONS; do - (VAL=$( grep "$P" bench_$V.log | LC_ALL=en_US awk '{ sum += $'$INDEX' } END { print sum/NR }' ); echo $V $VAL) >> $F - done - if [ $I == 0 ]; then - cat $F > $TMPJOIN - else - join $TMPJOIN $F > $OUTPUT - cp $OUTPUT $TMPJOIN - fi - rm $F -done - -rm $TMPJOIN - -gnuplot bench.gnu -convert -density 200 -resize 800x560 -flatten bench.eps bench.png -rm bench.eps diff --git a/node_modules/uuid/benchmark/benchmark-native.c b/node_modules/uuid/benchmark/benchmark-native.c deleted file mode 100644 index dbfc75f..0000000 --- a/node_modules/uuid/benchmark/benchmark-native.c +++ /dev/null @@ -1,34 +0,0 @@ -/* -Test performance of native C UUID generation - -To Compile: cc -luuid benchmark-native.c -o benchmark-native -*/ - -#include -#include -#include -#include - -int main() { - uuid_t myid; - char buf[36+1]; - int i; - struct timeval t; - double start, finish; - - gettimeofday(&t, NULL); - start = t.tv_sec + t.tv_usec/1e6; - - int n = 2e5; - for (i = 0; i < n; i++) { - uuid_generate(myid); - uuid_unparse(myid, buf); - } - - gettimeofday(&t, NULL); - finish = t.tv_sec + t.tv_usec/1e6; - double dur = finish - start; - - printf("%d uuids/sec", (int)(n/dur)); - return 0; -} diff --git a/node_modules/uuid/benchmark/benchmark.js b/node_modules/uuid/benchmark/benchmark.js deleted file mode 100644 index 40e6efb..0000000 --- a/node_modules/uuid/benchmark/benchmark.js +++ /dev/null @@ -1,84 +0,0 @@ -try { - var nodeuuid = require('../uuid'); -} catch (e) { - console.error('node-uuid require failed - skipping tests'); -} - -try { - var uuid = require('uuid'); -} catch (e) { - console.error('uuid require failed - skipping tests'); -} - -try { - var uuidjs = require('uuid-js'); -} catch (e) { - console.error('uuid-js require failed - skipping tests'); -} - -var N = 5e5; - -function rate(msg, t) { - console.log(msg + ': ' + - (N / (Date.now() - t) * 1e3 | 0) + - ' uuids/second'); -} - -console.log('# v4'); - -// node-uuid - string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4(); - rate('nodeuuid.v4() - using node.js crypto RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4({rng: nodeuuid.mathRNG}); - rate('nodeuuid.v4() - using Math.random() RNG', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary'); - rate('nodeuuid.v4(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v4('binary', buffer); - rate('nodeuuid.v4(\'binary\', buffer)', t); -} - -// libuuid - string form -if (uuid) { - for (var i = 0, t = Date.now(); i < N; i++) uuid(); - rate('uuid()', t); - - for (var i = 0, t = Date.now(); i < N; i++) uuid('binary'); - rate('uuid(\'binary\')', t); -} - -// uuid-js - string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(4); - rate('uuidjs.create(4)', t); -} - -// 140byte.es -for (var i = 0, t = Date.now(); i < N; i++) 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,function(s,r){r=Math.random()*16|0;return (s=='x'?r:r&0x3|0x8).toString(16)}); -rate('140byte.es_v4', t); - -console.log(''); -console.log('# v1'); - -// node-uuid - v1 string form -if (nodeuuid) { - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1(); - rate('nodeuuid.v1()', t); - - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary'); - rate('nodeuuid.v1(\'binary\')', t); - - var buffer = new nodeuuid.BufferClass(16); - for (var i = 0, t = Date.now(); i < N; i++) nodeuuid.v1('binary', buffer); - rate('nodeuuid.v1(\'binary\', buffer)', t); -} - -// uuid-js - v1 string form -if (uuidjs) { - for (var i = 0, t = Date.now(); i < N; i++) uuidjs.create(1); - rate('uuidjs.create(1)', t); -} diff --git a/node_modules/uuid/benchmark/package.json b/node_modules/uuid/benchmark/package.json deleted file mode 100644 index 94e0b59..0000000 --- a/node_modules/uuid/benchmark/package.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "benchmark-uuid", - "private": true, - "description": "Benchmarks for node-uuid", - "dependencies": { - "uuid": "1.4.1", - "uuid-js": "0.7.4" - } -} diff --git a/node_modules/uuid/misc/compare.js b/node_modules/uuid/misc/compare.js deleted file mode 100644 index 3de3415..0000000 --- a/node_modules/uuid/misc/compare.js +++ /dev/null @@ -1,62 +0,0 @@ -var assert = require('assert'), - nodeuuid = require('../'), - uuidjs = require('uuid-js'), - util = require('util'), - exec = require('child_process').exec, - os = require('os'); - -// On Mac Os X / macports there's only the ossp-uuid package that provides uuid -// On Linux there's uuid-runtime which provides uuidgen -var uuidCmd = os.type() === 'Darwin' ? 'uuid -1' : 'uuidgen -t'; - -function compare(ids) { - console.log(ids); - for (var i = 0; i < ids.length; i++) { - var id = ids[i].split('-'); - id = [id[2], id[1], id[0]].join(''); - ids[i] = id; - } - var sorted = ([].concat(ids)).sort(); - - if (sorted.toString() !== ids.toString()) { - console.log('Warning: sorted !== ids'); - } else { - console.log('everything in order!'); - } -} - -// Test time order of v1 uuids -var ids = []; -while (ids.length < 10e3) ids.push(nodeuuid.v1()); - -var max = 10; -console.log('node-uuid:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(nodeuuid.v1()); -compare(ids); - -console.log(''); -console.log('uuidjs:'); -ids = []; -for (var i = 0; i < max; i++) ids.push(uuidjs.create(1).toString()); -compare(ids); - -console.log(''); -console.log('libuuid:'); -ids = []; -var count = 0; -var last = function() { - compare(ids); -} -var cb = function(err, stdout, stderr) { - ids.push(stdout.substring(0, stdout.length-1)); - count++; - if (count < max) { - return next(); - } - last(); -}; -var next = function() { - exec(uuidCmd, cb); -}; -next(); diff --git a/node_modules/uuid/misc/perf.js b/node_modules/uuid/misc/perf.js deleted file mode 100644 index bdc9eb4..0000000 --- a/node_modules/uuid/misc/perf.js +++ /dev/null @@ -1,102 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -var log = console.log; - -var generators = { - v1: uuid.v1, - v4: uuid.v4 -}; - -var UUID_FORMAT = { - v1: /[0-9a-f]{8}-[0-9a-f]{4}-1[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i, - v4: /[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}/i -}; - -var N = 1e4; - -// Get %'age an actual value differs from the ideal value -function divergence(actual, ideal) { - return Math.round(100*100*(actual - ideal)/ideal)/100; -} - -function rate(msg, t) { - log(msg + ': ' + (N / (Date.now() - t) * 1e3 | 0) + ' uuids\/second'); -} - -for (var version in generators) { - var counts = {}, max = 0; - var generator = generators[version]; - var format = UUID_FORMAT[version]; - - log('\nSanity check ' + N + ' ' + version + ' uuids'); - for (var i = 0, ok = 0; i < N; i++) { - id = generator(); - if (!format.test(id)) { - throw Error(id + ' is not a valid UUID string'); - } - - if (id != uuid.unparse(uuid.parse(id))) { - assert(fail, id + ' is not a valid id'); - } - - // Count digits for our randomness check - if (version == 'v4') { - var digits = id.replace(/-/g, '').split(''); - for (var j = digits.length-1; j >= 0; j--) { - var c = digits[j]; - max = Math.max(max, counts[c] = (counts[c] || 0) + 1); - } - } - } - - // Check randomness for v4 UUIDs - if (version == 'v4') { - // Limit that we get worried about randomness. (Purely empirical choice, this!) - var limit = 2*100*Math.sqrt(1/N); - - log('\nChecking v4 randomness. Distribution of Hex Digits (% deviation from ideal)'); - - for (var i = 0; i < 16; i++) { - var c = i.toString(16); - var bar = '', n = counts[c], p = Math.round(n/max*100|0); - - // 1-3,5-8, and D-F: 1:16 odds over 30 digits - var ideal = N*30/16; - if (i == 4) { - // 4: 1:1 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1 + 30/16); - } else if (i >= 8 && i <= 11) { - // 8-B: 1:4 odds on 1 digit, plus 1:16 odds on 30 digits - ideal = N*(1/4 + 30/16); - } else { - // Otherwise: 1:16 odds on 30 digits - ideal = N*30/16; - } - var d = divergence(n, ideal); - - // Draw bar using UTF squares (just for grins) - var s = n/max*50 | 0; - while (s--) bar += '='; - - assert(Math.abs(d) < limit, c + ' |' + bar + '| ' + counts[c] + ' (' + d + '% < ' + limit + '%)'); - } - } -} - -// Perf tests -for (var version in generators) { - log('\nPerformance testing ' + version + ' UUIDs'); - var generator = generators[version]; - var buf = new uuid.BufferClass(16); - - for (var i = 0, t = Date.now(); i < N; i++) generator(); - rate('uuid.' + version + '()', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary'); - rate('uuid.' + version + '(\'binary\')', t); - - for (var i = 0, t = Date.now(); i < N; i++) generator('binary', buf); - rate('uuid.' + version + '(\'binary\', buffer)', t); -} diff --git a/node_modules/uuid/package.json b/node_modules/uuid/package.json deleted file mode 100644 index 0d5d8bb..0000000 --- a/node_modules/uuid/package.json +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "uuid", - "version": "2.0.3", - "description": "Rigorous implementation of RFC4122 (v1 and v4) UUIDs.", - "keywords": [ - "uuid", - "guid", - "rfc4122" - ], - "author": { - "name": "Robert Kieffer", - "email": "robert@broofa.com" - }, - "contributors": [ - { - "name": "Christoph Tavan", - "email": "dev@tavan.de" - }, - { - "name": "Vincent Voyer", - "email": "vincent@zeroload.net" - } - ], - "license": "MIT", - "main": "./uuid.js", - "devDependencies": { - "mocha": "1.8.0" - }, - "scripts": { - "test": "mocha test/test.js" - }, - "browser": { - "./rng.js": "./rng-browser.js" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/defunctzombie/node-uuid.git" - }, - "testling": { - "browsers": [ - "ie6..latest", - "firefox/3.6..latest", - "chrome/22..latest", - "safari/5.1..latest" - ], - "harness": "mocha-tdd", - "files": "test/*.js" - }, - "readme": "# uuid [![Build Status](https://secure.travis-ci.org/defunctzombie/node-uuid.svg?branch=master)](http://travis-ci.org/defunctzombie/node-uuid) #\n\n[![browser support](https://ci.testling.com/defunctzombie/node-uuid.png)](https://ci.testling.com/defunctzombie/node-uuid)\n\nSimple, fast generation of [RFC4122](http://www.ietf.org/rfc/rfc4122.txt) UUIDS.\n\nFeatures:\n\n* Generate RFC4122 version 1 or version 4 UUIDs\n* Runs in node.js and all browsers.\n* Cryptographically strong random # generation on supporting platforms\n* 1185 bytes minified and gzip'ed (Want something smaller? Check this [crazy shit](https://gist.github.com/982883) out! )\n* [Annotated source code](http://broofa.github.com/node-uuid/docs/uuid.html)\n\n## Getting Started\n\nInstall it in your browser:\n\n```html\n\n```\n\nOr in node.js:\n\n```\nnpm install uuid\n```\n\n```javascript\nvar uuid = require('uuid');\n\n// Generate a v1 (time-based) id\nuuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n\n// Generate a v4 (random) id\nuuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'\n```\n\n## API\n\n### uuid.v1([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v1 (timestamp-based) UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `node` - (Array) Node id as Array of 6 bytes (per 4.1.6). Default: Randomly generated ID. See note 1.\n * `clockseq` - (Number between 0 - 0x3fff) RFC clock sequence. Default: An internally maintained clockseq is used.\n * `msecs` - (Number | Date) Time in milliseconds since unix Epoch. Default: The current time is used.\n * `nsecs` - (Number between 0-9999) additional time, in 100-nanosecond units. Ignored if `msecs` is unspecified. Default: internal uuid counter is used, as per 4.2.1.2.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nNotes:\n\n1. The randomly generated node id is only guaranteed to stay constant for the lifetime of the current JS runtime. (Future versions of this module may use persistent storage mechanisms to extend this guarantee.)\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v1({\n node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],\n clockseq: 0x1234,\n msecs: new Date('2011-11-01').getTime(),\n nsecs: 5678\n}); // -> \"710b962e-041c-11e1-9234-0123456789ab\"\n```\n\nExample: In-place generation of two binary IDs\n\n```javascript\n// Generate two ids in an array\nvar arr = new Array(32); // -> []\nuuid.v1(null, arr, 0); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\nuuid.v1(null, arr, 16); // -> [02 a2 ce 90 14 32 11 e1 85 58 0b 48 8e 4f c1 15 02 a3 1c b0 14 32 11 e1 85 58 0b 48 8e 4f c1 15]\n\n// Optionally use uuid.unparse() to get stringify the ids\nuuid.unparse(buffer); // -> '02a2ce90-1432-11e1-8558-0b488e4fc115'\nuuid.unparse(buffer, 16) // -> '02a31cb0-1432-11e1-8558-0b488e4fc115'\n```\n\n### uuid.v4([`options` [, `buffer` [, `offset`]]])\n\nGenerate and return a RFC4122 v4 UUID.\n\n* `options` - (Object) Optional uuid state to apply. Properties may include:\n\n * `random` - (Number[16]) Array of 16 numbers (0-255) to use in place of randomly generated values\n * `rng` - (Function) Random # generator to use. Set to one of the built-in generators - `uuid.mathRNG` (all platforms), `uuid.nodeRNG` (node.js only), `uuid.whatwgRNG` (WebKit only) - or a custom function that returns an array[16] of byte values.\n\n* `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written.\n* `offset` - (Number) Starting index in `buffer` at which to begin writing.\n\nReturns `buffer`, if specified, otherwise the string form of the UUID\n\nExample: Generate string UUID with fully-specified options\n\n```javascript\nuuid.v4({\n random: [\n 0x10, 0x91, 0x56, 0xbe, 0xc4, 0xfb, 0xc1, 0xea,\n 0x71, 0xb4, 0xef, 0xe1, 0x67, 0x1c, 0x58, 0x36\n ]\n});\n// -> \"109156be-c4fb-41ea-b1b4-efe1671c5836\"\n```\n\nExample: Generate two IDs in a single buffer\n\n```javascript\nvar buffer = new Array(32); // (or 'new Buffer' in node.js)\nuuid.v4(null, buffer, 0);\nuuid.v4(null, buffer, 16);\n```\n\n### uuid.parse(id[, buffer[, offset]])\n### uuid.unparse(buffer[, offset])\n\nParse and unparse UUIDs\n\n * `id` - (String) UUID(-like) string\n * `buffer` - (Array | Buffer) Array or buffer where UUID bytes are to be written. Default: A new Array or Buffer is used\n * `offset` - (Number) Starting index in `buffer` at which to begin writing. Default: 0\n\nExample parsing and unparsing a UUID string\n\n```javascript\nvar bytes = uuid.parse('797ff043-11eb-11e1-80d6-510998755d10'); // -> \nvar string = uuid.unparse(bytes); // -> '797ff043-11eb-11e1-80d6-510998755d10'\n```\n\n### uuid.noConflict()\n\n(Browsers only) Set `uuid` property back to it's previous value.\n\nReturns the uuid object.\n\nExample:\n\n```javascript\nvar myUuid = uuid.noConflict();\nmyUuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'\n```\n\n## Deprecated APIs\n\nSupport for the following v1.2 APIs is available in v1.3, but is deprecated and will be removed in the next major version.\n\n### uuid([format [, buffer [, offset]]])\n\nuuid() has become uuid.v4(), and the `format` argument is now implicit in the `buffer` argument. (i.e. if you specify a buffer, the format is assumed to be binary).\n\n## Testing\n\nIn node.js\n\n```\n> cd test\n> node test.js\n```\n\nIn Browser\n\n```\nopen test/test.html\n```\n\n### Benchmarking\n\nRequires node.js\n\n```\ncd benchmark/\nnpm install\nnode benchmark.js\n```\n\nFor a more complete discussion of uuid performance, please see the `benchmark/README.md` file, and the [benchmark wiki](https://github.com/broofa/uuid/wiki/Benchmark)\n\nFor browser performance [checkout the JSPerf tests](http://jsperf.com/node-uuid-performance).\n\n## Release notes\n\n### 2.0.0\n \n* Removed uuid.BufferClass\n\n### 1.4.0\n\n* Improved module context detection\n* Removed public RNG functions\n\n### 1.3.2\n\n* Improve tests and handling of v1() options (Issue #24)\n* Expose RNG option to allow for perf testing with different generators\n\n### 1.3.0\n\n* Support for version 1 ids, thanks to [@ctavan](https://github.com/ctavan)!\n* Support for node.js crypto API\n* De-emphasizing performance in favor of a) cryptographic quality PRNGs where available and b) more manageable code\n", - "readmeFilename": "README.md", - "bugs": { - "url": "https://github.com/defunctzombie/node-uuid/issues" - }, - "homepage": "https://github.com/defunctzombie/node-uuid#readme", - "_id": "uuid@2.0.3", - "_shasum": "67e2e863797215530dff318e5bf9dcebfd47b21a", - "_resolved": "https://registry.npmjs.org/uuid/-/uuid-2.0.3.tgz", - "_from": "uuid@>=2.0.3 <3.0.0" -} diff --git a/node_modules/uuid/rng-browser.js b/node_modules/uuid/rng-browser.js deleted file mode 100644 index 82ffaf6..0000000 --- a/node_modules/uuid/rng-browser.js +++ /dev/null @@ -1,32 +0,0 @@ - -var rng; - -var crypto = global.crypto || global.msCrypto; // for IE 11 -if (crypto && crypto.getRandomValues) { - // WHATWG crypto-based RNG - http://wiki.whatwg.org/wiki/Crypto - // Moderately fast, high quality - var _rnds8 = new Uint8Array(16); - rng = function whatwgRNG() { - crypto.getRandomValues(_rnds8); - return _rnds8; - }; -} - -if (!rng) { - // Math.random()-based (RNG) - // - // If all else fails, use Math.random(). It's fast, but is of unspecified - // quality. - var _rnds = new Array(16); - rng = function() { - for (var i = 0, r; i < 16; i++) { - if ((i & 0x03) === 0) r = Math.random() * 0x100000000; - _rnds[i] = r >>> ((i & 0x03) << 3) & 0xff; - } - - return _rnds; - }; -} - -module.exports = rng; - diff --git a/node_modules/uuid/rng.js b/node_modules/uuid/rng.js deleted file mode 100644 index 3977f79..0000000 --- a/node_modules/uuid/rng.js +++ /dev/null @@ -1,4 +0,0 @@ -var rb = require('crypto').randomBytes; -module.exports = function() { - return rb(16); -}; diff --git a/node_modules/uuid/test/mocha.opts b/node_modules/uuid/test/mocha.opts deleted file mode 100644 index e2bfcc5..0000000 --- a/node_modules/uuid/test/mocha.opts +++ /dev/null @@ -1 +0,0 @@ ---ui qunit diff --git a/node_modules/uuid/test/test.js b/node_modules/uuid/test/test.js deleted file mode 100644 index 4c9872f..0000000 --- a/node_modules/uuid/test/test.js +++ /dev/null @@ -1,105 +0,0 @@ -var assert = require('assert'); - -var uuid = require('../'); - -// Verify ordering of v1 ids created with explicit times -var TIME = 1321644961388; // 2011-11-18 11:36:01.388-08:00 - -function compare(name, ids) { - test(name, function() { - // avoid .map for older browsers - for (var i=0 ; i 10k ids created in 1ms', function() { - // Verify throw if too many ids created - var thrown = false; - try { - uuid.v1({msecs: TIME, nsecs: 10000}); - } catch (e) { - thrown = true; - } - assert(thrown, 'Exception thrown when > 10K ids created in 1 ms'); -}); - -test('clock regression by msec', function() { - // Verify clock regression bumps clockseq - var uidt = uuid.v1({msecs: TIME}); - var uidtb = uuid.v1({msecs: TIME - 1}); - assert( - parseInt(uidtb.split('-')[3], 16) - parseInt(uidt.split('-')[3], 16) === 1, - 'Clock regression by msec increments the clockseq' - ); -}); - -test('clock regression by nsec', function() { - // Verify clock regression bumps clockseq - var uidtn = uuid.v1({msecs: TIME, nsecs: 10}); - var uidtnb = uuid.v1({msecs: TIME, nsecs: 9}); - assert( - parseInt(uidtnb.split('-')[3], 16) - parseInt(uidtn.split('-')[3], 16) === 1, - 'Clock regression by nsec increments the clockseq' - ); -}); - -test('explicit options product expected id', function() { - // Verify explicit options produce expected id - var id = uuid.v1({ - msecs: 1321651533573, - nsecs: 5432, - clockseq: 0x385c, - node: [ 0x61, 0xcd, 0x3c, 0xbb, 0x32, 0x10 ] - }); - assert(id == 'd9428888-122b-11e1-b85c-61cd3cbb3210', 'Explicit options produce expected id'); -}); - -test('ids spanning 1ms boundary are 100ns apart', function() { - // Verify adjacent ids across a msec boundary are 1 time unit apart - var u0 = uuid.v1({msecs: TIME, nsecs: 9999}); - var u1 = uuid.v1({msecs: TIME + 1, nsecs: 0}); - - var before = u0.split('-')[0], after = u1.split('-')[0]; - var dt = parseInt(after, 16) - parseInt(before, 16); - assert(dt === 1, 'Ids spanning 1ms boundary are 100ns apart'); -}); - -test('parse/unparse', function() { - var id = '00112233445566778899aabbccddeeff'; - assert(uuid.unparse(uuid.parse(id.substr(0,10))) == - '00112233-4400-0000-0000-000000000000', 'Short parse'); - assert(uuid.unparse(uuid.parse('(this is the uuid -> ' + id + id)) == - '00112233-4455-6677-8899-aabbccddeeff', 'Dirty parse'); -}); - diff --git a/node_modules/uuid/uuid.js b/node_modules/uuid/uuid.js deleted file mode 100644 index be5bfed..0000000 --- a/node_modules/uuid/uuid.js +++ /dev/null @@ -1,183 +0,0 @@ -// uuid.js -// -// Copyright (c) 2010-2012 Robert Kieffer -// MIT License - http://opensource.org/licenses/mit-license.php - -// Unique ID creation requires a high quality random # generator. We feature -// detect to determine the best RNG source, normalizing to a function that -// returns 128-bits of randomness, since that's what's usually required -var _rng = require('./rng'); - -// Maps for number <-> hex string conversion -var _byteToHex = []; -var _hexToByte = {}; -for (var i = 0; i < 256; i++) { - _byteToHex[i] = (i + 0x100).toString(16).substr(1); - _hexToByte[_byteToHex[i]] = i; -} - -// **`parse()` - Parse a UUID into it's component bytes** -function parse(s, buf, offset) { - var i = (buf && offset) || 0, ii = 0; - - buf = buf || []; - s.toLowerCase().replace(/[0-9a-f]{2}/g, function(oct) { - if (ii < 16) { // Don't overflow! - buf[i + ii++] = _hexToByte[oct]; - } - }); - - // Zero out remaining bytes if string was short - while (ii < 16) { - buf[i + ii++] = 0; - } - - return buf; -} - -// **`unparse()` - Convert UUID byte array (ala parse()) into a string** -function unparse(buf, offset) { - var i = offset || 0, bth = _byteToHex; - return bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + '-' + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]] + - bth[buf[i++]] + bth[buf[i++]]; -} - -// **`v1()` - Generate time-based UUID** -// -// Inspired by https://github.com/LiosK/UUID.js -// and http://docs.python.org/library/uuid.html - -// random #'s we need to init node and clockseq -var _seedBytes = _rng(); - -// Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1) -var _nodeId = [ - _seedBytes[0] | 0x01, - _seedBytes[1], _seedBytes[2], _seedBytes[3], _seedBytes[4], _seedBytes[5] -]; - -// Per 4.2.2, randomize (14 bit) clockseq -var _clockseq = (_seedBytes[6] << 8 | _seedBytes[7]) & 0x3fff; - -// Previous uuid creation time -var _lastMSecs = 0, _lastNSecs = 0; - -// See https://github.com/broofa/node-uuid for API details -function v1(options, buf, offset) { - var i = buf && offset || 0; - var b = buf || []; - - options = options || {}; - - var clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; - - // UUID timestamps are 100 nano-second units since the Gregorian epoch, - // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so - // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs' - // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00. - var msecs = options.msecs !== undefined ? options.msecs : new Date().getTime(); - - // Per 4.2.1.2, use count of uuid's generated during the current clock - // cycle to simulate higher resolution clock - var nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; - - // Time since last uuid creation (in msecs) - var dt = (msecs - _lastMSecs) + (nsecs - _lastNSecs)/10000; - - // Per 4.2.1.2, Bump clockseq on clock regression - if (dt < 0 && options.clockseq === undefined) { - clockseq = clockseq + 1 & 0x3fff; - } - - // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new - // time interval - if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) { - nsecs = 0; - } - - // Per 4.2.1.2 Throw error if too many uuids are requested - if (nsecs >= 10000) { - throw new Error('uuid.v1(): Can\'t create more than 10M uuids/sec'); - } - - _lastMSecs = msecs; - _lastNSecs = nsecs; - _clockseq = clockseq; - - // Per 4.1.4 - Convert from unix epoch to Gregorian epoch - msecs += 12219292800000; - - // `time_low` - var tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000; - b[i++] = tl >>> 24 & 0xff; - b[i++] = tl >>> 16 & 0xff; - b[i++] = tl >>> 8 & 0xff; - b[i++] = tl & 0xff; - - // `time_mid` - var tmh = (msecs / 0x100000000 * 10000) & 0xfffffff; - b[i++] = tmh >>> 8 & 0xff; - b[i++] = tmh & 0xff; - - // `time_high_and_version` - b[i++] = tmh >>> 24 & 0xf | 0x10; // include version - b[i++] = tmh >>> 16 & 0xff; - - // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant) - b[i++] = clockseq >>> 8 | 0x80; - - // `clock_seq_low` - b[i++] = clockseq & 0xff; - - // `node` - var node = options.node || _nodeId; - for (var n = 0; n < 6; n++) { - b[i + n] = node[n]; - } - - return buf ? buf : unparse(b); -} - -// **`v4()` - Generate random UUID** - -// See https://github.com/broofa/node-uuid for API details -function v4(options, buf, offset) { - // Deprecated - 'format' argument, as supported in v1.2 - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options == 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || _rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ii++) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || unparse(rnds); -} - -// Export public API -var uuid = v4; -uuid.v1 = v1; -uuid.v4 = v4; -uuid.parse = parse; -uuid.unparse = unparse; - -module.exports = uuid; From a1bde0ed10e22a269734fb8c8e341d3050de06a5 Mon Sep 17 00:00:00 2001 From: ac360 Date: Wed, 12 Oct 2016 21:29:19 -0700 Subject: [PATCH 4/5] ignore .serverless --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5371c35..c515691 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ +.serverless *.log npm-debug.log pids From 47ddad4996cc975c151eca5d278e4e70f1433e1b Mon Sep 17 00:00:00 2001 From: ac360 Date: Wed, 12 Oct 2016 21:29:52 -0700 Subject: [PATCH 5/5] remove ignored files --- .../cloudformation-template-create-stack.json | 99 -- .../cloudformation-template-update-stack.json | 1051 ----------------- .serverless/serverless-crud.zip | Bin 2149353 -> 0 bytes 3 files changed, 1150 deletions(-) delete mode 100644 .serverless/cloudformation-template-create-stack.json delete mode 100644 .serverless/cloudformation-template-update-stack.json delete mode 100644 .serverless/serverless-crud.zip diff --git a/.serverless/cloudformation-template-create-stack.json b/.serverless/cloudformation-template-create-stack.json deleted file mode 100644 index 969844a..0000000 --- a/.serverless/cloudformation-template-create-stack.json +++ /dev/null @@ -1,99 +0,0 @@ -{ - "AWSTemplateFormatVersion": "2010-09-09", - "Description": "The AWS CloudFormation template for this Serverless application", - "Resources": { - "ServerlessDeploymentBucket": { - "Type": "AWS::S3::Bucket" - }, - "IamRoleLambdaExecution": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "Service": [ - "lambda.amazonaws.com" - ] - }, - "Action": [ - "sts:AssumeRole" - ] - } - ] - }, - "Path": "/" - } - }, - "IamPolicyLambdaExecution": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyName": "dev-serverless-crud-lambda", - "PolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents" - ], - "Resource": "arn:aws:logs:us-east-1:*:*" - }, - { - "Effect": "Allow", - "Action": [ - "dynamodb:DescribeTable", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:GetItem", - "dynamodb:PutItem", - "dynamodb:UpdateItem", - "dynamodb:DeleteItem" - ], - "Resource": "arn:aws:dynamodb:us-east-1:*:*" - } - ] - }, - "Roles": [ - { - "Ref": "IamRoleLambdaExecution" - } - ] - } - }, - "TodosDynamoDbTable": { - "Type": "AWS::DynamoDB::Table", - "DeletionPolicy": "Retain", - "Properties": { - "AttributeDefinitions": [ - { - "AttributeName": "id", - "AttributeType": "S" - } - ], - "KeySchema": [ - { - "AttributeName": "id", - "KeyType": "HASH" - } - ], - "ProvisionedThroughput": { - "ReadCapacityUnits": 1, - "WriteCapacityUnits": 1 - }, - "TableName": "todos" - } - } - }, - "Outputs": { - "ServerlessDeploymentBucketName": { - "Value": { - "Ref": "ServerlessDeploymentBucket" - } - } - } -} \ No newline at end of file diff --git a/.serverless/cloudformation-template-update-stack.json b/.serverless/cloudformation-template-update-stack.json deleted file mode 100644 index dfeb475..0000000 --- a/.serverless/cloudformation-template-update-stack.json +++ /dev/null @@ -1,1051 +0,0 @@ -{ - "AWSTemplateFormatVersion": "2010-09-09", - "Description": "The AWS CloudFormation template for this Serverless application", - "Resources": { - "ServerlessDeploymentBucket": { - "Type": "AWS::S3::Bucket" - }, - "IamRoleLambdaExecution": { - "Type": "AWS::IAM::Role", - "Properties": { - "AssumeRolePolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Principal": { - "Service": [ - "lambda.amazonaws.com" - ] - }, - "Action": [ - "sts:AssumeRole" - ] - } - ] - }, - "Path": "/" - } - }, - "IamPolicyLambdaExecution": { - "Type": "AWS::IAM::Policy", - "Properties": { - "PolicyName": "dev-serverless-crud-lambda", - "PolicyDocument": { - "Version": "2012-10-17", - "Statement": [ - { - "Effect": "Allow", - "Action": [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents" - ], - "Resource": "arn:aws:logs:us-east-1:*:*" - }, - { - "Effect": "Allow", - "Action": [ - "dynamodb:DescribeTable", - "dynamodb:Query", - "dynamodb:Scan", - "dynamodb:GetItem", - "dynamodb:PutItem", - "dynamodb:UpdateItem", - "dynamodb:DeleteItem" - ], - "Resource": "arn:aws:dynamodb:us-east-1:*:*" - } - ] - }, - "Roles": [ - { - "Ref": "IamRoleLambdaExecution" - } - ] - } - }, - "TodosDynamoDbTable": { - "Type": "AWS::DynamoDB::Table", - "DeletionPolicy": "Retain", - "Properties": { - "AttributeDefinitions": [ - { - "AttributeName": "id", - "AttributeType": "S" - } - ], - "KeySchema": [ - { - "AttributeName": "id", - "KeyType": "HASH" - } - ], - "ProvisionedThroughput": { - "ReadCapacityUnits": 1, - "WriteCapacityUnits": 1 - }, - "TableName": "todos" - } - }, - "CreateLambdaFunction": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Ref": "ServerlessDeploymentBucket" - }, - "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" - }, - "FunctionName": "serverless-crud-dev-create", - "Handler": "handler.create", - "MemorySize": 1024, - "Role": { - "Fn::GetAtt": [ - "IamRoleLambdaExecution", - "Arn" - ] - }, - "Runtime": "nodejs4.3", - "Timeout": 6 - } - }, - "ReadAllLambdaFunction": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Ref": "ServerlessDeploymentBucket" - }, - "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" - }, - "FunctionName": "serverless-crud-dev-readAll", - "Handler": "handler.readAll", - "MemorySize": 1024, - "Role": { - "Fn::GetAtt": [ - "IamRoleLambdaExecution", - "Arn" - ] - }, - "Runtime": "nodejs4.3", - "Timeout": 6 - } - }, - "ReadOneLambdaFunction": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Ref": "ServerlessDeploymentBucket" - }, - "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" - }, - "FunctionName": "serverless-crud-dev-readOne", - "Handler": "handler.readOne", - "MemorySize": 1024, - "Role": { - "Fn::GetAtt": [ - "IamRoleLambdaExecution", - "Arn" - ] - }, - "Runtime": "nodejs4.3", - "Timeout": 6 - } - }, - "UpdateLambdaFunction": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Ref": "ServerlessDeploymentBucket" - }, - "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" - }, - "FunctionName": "serverless-crud-dev-update", - "Handler": "handler.update", - "MemorySize": 1024, - "Role": { - "Fn::GetAtt": [ - "IamRoleLambdaExecution", - "Arn" - ] - }, - "Runtime": "nodejs4.3", - "Timeout": 6 - } - }, - "DeleteLambdaFunction": { - "Type": "AWS::Lambda::Function", - "Properties": { - "Code": { - "S3Bucket": { - "Ref": "ServerlessDeploymentBucket" - }, - "S3Key": "serverless/serverless-crud/dev/1476332749588-2016-10-13T04:25:49.588Z/serverless-crud.zip" - }, - "FunctionName": "serverless-crud-dev-delete", - "Handler": "handler.delete", - "MemorySize": 1024, - "Role": { - "Fn::GetAtt": [ - "IamRoleLambdaExecution", - "Arn" - ] - }, - "Runtime": "nodejs4.3", - "Timeout": 6 - } - }, - "ApiGatewayRestApi": { - "Type": "AWS::ApiGateway::RestApi", - "Properties": { - "Name": "dev-serverless-crud" - } - }, - "ApiGatewayResourceTodos": { - "Type": "AWS::ApiGateway::Resource", - "Properties": { - "ParentId": { - "Fn::GetAtt": [ - "ApiGatewayRestApi", - "RootResourceId" - ] - }, - "PathPart": "todos", - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayResourceTodosIdVar": { - "Type": "AWS::ApiGateway::Resource", - "Properties": { - "ParentId": { - "Ref": "ApiGatewayResourceTodos" - }, - "PathPart": "{id}", - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosPost": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "POST", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" - }, - "StatusCode": 200 - }, - { - "StatusCode": 400 - }, - { - "StatusCode": 401 - }, - { - "StatusCode": 403 - }, - { - "StatusCode": 404 - }, - { - "StatusCode": 422 - }, - { - "StatusCode": 500 - }, - { - "StatusCode": 502 - }, - { - "StatusCode": 504 - } - ], - "RequestParameters": {}, - "Integration": { - "IntegrationHttpMethod": "POST", - "Type": "AWS_PROXY", - "Uri": { - "Fn::Join": [ - "", - [ - "arn:aws:apigateway:", - { - "Ref": "AWS::Region" - }, - ":lambda:path/2015-03-31/functions/", - { - "Fn::GetAtt": [ - "CreateLambdaFunction", - "Arn" - ] - }, - "/invocations" - ] - ] - }, - "RequestTemplates": { - "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", - "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " - }, - "PassthroughBehavior": "NEVER", - "IntegrationResponses": [ - { - "StatusCode": 200, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'" - }, - "ResponseTemplates": {} - }, - { - "StatusCode": 400, - "SelectionPattern": ".*\\[400\\].*" - }, - { - "StatusCode": 401, - "SelectionPattern": ".*\\[401\\].*" - }, - { - "StatusCode": 403, - "SelectionPattern": ".*\\[403\\].*" - }, - { - "StatusCode": 404, - "SelectionPattern": ".*\\[404\\].*" - }, - { - "StatusCode": 422, - "SelectionPattern": ".*\\[422\\].*" - }, - { - "StatusCode": 500, - "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" - }, - { - "StatusCode": 502, - "SelectionPattern": ".*\\[502\\].*" - }, - { - "StatusCode": 504, - "SelectionPattern": ".*\\[504\\].*" - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodos" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosGet": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "GET", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" - }, - "StatusCode": 200 - }, - { - "StatusCode": 400 - }, - { - "StatusCode": 401 - }, - { - "StatusCode": 403 - }, - { - "StatusCode": 404 - }, - { - "StatusCode": 422 - }, - { - "StatusCode": 500 - }, - { - "StatusCode": 502 - }, - { - "StatusCode": 504 - } - ], - "RequestParameters": {}, - "Integration": { - "IntegrationHttpMethod": "POST", - "Type": "AWS_PROXY", - "Uri": { - "Fn::Join": [ - "", - [ - "arn:aws:apigateway:", - { - "Ref": "AWS::Region" - }, - ":lambda:path/2015-03-31/functions/", - { - "Fn::GetAtt": [ - "ReadAllLambdaFunction", - "Arn" - ] - }, - "/invocations" - ] - ] - }, - "RequestTemplates": { - "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", - "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " - }, - "PassthroughBehavior": "NEVER", - "IntegrationResponses": [ - { - "StatusCode": 200, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'" - }, - "ResponseTemplates": {} - }, - { - "StatusCode": 400, - "SelectionPattern": ".*\\[400\\].*" - }, - { - "StatusCode": 401, - "SelectionPattern": ".*\\[401\\].*" - }, - { - "StatusCode": 403, - "SelectionPattern": ".*\\[403\\].*" - }, - { - "StatusCode": 404, - "SelectionPattern": ".*\\[404\\].*" - }, - { - "StatusCode": 422, - "SelectionPattern": ".*\\[422\\].*" - }, - { - "StatusCode": 500, - "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" - }, - { - "StatusCode": 502, - "SelectionPattern": ".*\\[502\\].*" - }, - { - "StatusCode": 504, - "SelectionPattern": ".*\\[504\\].*" - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodos" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosIdVarGet": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "GET", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" - }, - "StatusCode": 200 - }, - { - "StatusCode": 400 - }, - { - "StatusCode": 401 - }, - { - "StatusCode": 403 - }, - { - "StatusCode": 404 - }, - { - "StatusCode": 422 - }, - { - "StatusCode": 500 - }, - { - "StatusCode": 502 - }, - { - "StatusCode": 504 - } - ], - "RequestParameters": {}, - "Integration": { - "IntegrationHttpMethod": "POST", - "Type": "AWS_PROXY", - "Uri": { - "Fn::Join": [ - "", - [ - "arn:aws:apigateway:", - { - "Ref": "AWS::Region" - }, - ":lambda:path/2015-03-31/functions/", - { - "Fn::GetAtt": [ - "ReadOneLambdaFunction", - "Arn" - ] - }, - "/invocations" - ] - ] - }, - "RequestTemplates": { - "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", - "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " - }, - "PassthroughBehavior": "NEVER", - "IntegrationResponses": [ - { - "StatusCode": 200, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'" - }, - "ResponseTemplates": {} - }, - { - "StatusCode": 400, - "SelectionPattern": ".*\\[400\\].*" - }, - { - "StatusCode": 401, - "SelectionPattern": ".*\\[401\\].*" - }, - { - "StatusCode": 403, - "SelectionPattern": ".*\\[403\\].*" - }, - { - "StatusCode": 404, - "SelectionPattern": ".*\\[404\\].*" - }, - { - "StatusCode": 422, - "SelectionPattern": ".*\\[422\\].*" - }, - { - "StatusCode": 500, - "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" - }, - { - "StatusCode": 502, - "SelectionPattern": ".*\\[502\\].*" - }, - { - "StatusCode": 504, - "SelectionPattern": ".*\\[504\\].*" - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodosIdVar" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosIdVarPut": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "PUT", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" - }, - "StatusCode": 200 - }, - { - "StatusCode": 400 - }, - { - "StatusCode": 401 - }, - { - "StatusCode": 403 - }, - { - "StatusCode": 404 - }, - { - "StatusCode": 422 - }, - { - "StatusCode": 500 - }, - { - "StatusCode": 502 - }, - { - "StatusCode": 504 - } - ], - "RequestParameters": {}, - "Integration": { - "IntegrationHttpMethod": "POST", - "Type": "AWS_PROXY", - "Uri": { - "Fn::Join": [ - "", - [ - "arn:aws:apigateway:", - { - "Ref": "AWS::Region" - }, - ":lambda:path/2015-03-31/functions/", - { - "Fn::GetAtt": [ - "UpdateLambdaFunction", - "Arn" - ] - }, - "/invocations" - ] - ] - }, - "RequestTemplates": { - "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", - "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " - }, - "PassthroughBehavior": "NEVER", - "IntegrationResponses": [ - { - "StatusCode": 200, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'" - }, - "ResponseTemplates": {} - }, - { - "StatusCode": 400, - "SelectionPattern": ".*\\[400\\].*" - }, - { - "StatusCode": 401, - "SelectionPattern": ".*\\[401\\].*" - }, - { - "StatusCode": 403, - "SelectionPattern": ".*\\[403\\].*" - }, - { - "StatusCode": 404, - "SelectionPattern": ".*\\[404\\].*" - }, - { - "StatusCode": 422, - "SelectionPattern": ".*\\[422\\].*" - }, - { - "StatusCode": 500, - "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" - }, - { - "StatusCode": 502, - "SelectionPattern": ".*\\[502\\].*" - }, - { - "StatusCode": 504, - "SelectionPattern": ".*\\[504\\].*" - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodosIdVar" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosIdVarDelete": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "DELETE", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "method.response.header.Access-Control-Allow-Origin" - }, - "StatusCode": 200 - }, - { - "StatusCode": 400 - }, - { - "StatusCode": 401 - }, - { - "StatusCode": 403 - }, - { - "StatusCode": 404 - }, - { - "StatusCode": 422 - }, - { - "StatusCode": 500 - }, - { - "StatusCode": 502 - }, - { - "StatusCode": 504 - } - ], - "RequestParameters": {}, - "Integration": { - "IntegrationHttpMethod": "POST", - "Type": "AWS_PROXY", - "Uri": { - "Fn::Join": [ - "", - [ - "arn:aws:apigateway:", - { - "Ref": "AWS::Region" - }, - ":lambda:path/2015-03-31/functions/", - { - "Fn::GetAtt": [ - "DeleteLambdaFunction", - "Arn" - ] - }, - "/invocations" - ] - ] - }, - "RequestTemplates": { - "application/json": "\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $input.json(\"$\"),\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n ", - "application/x-www-form-urlencoded": "\n #define( $body )\n {\n #foreach( $token in $input.path('$').split('&') )\n #set( $keyVal = $token.split('=') )\n #set( $keyValSize = $keyVal.size() )\n #if( $keyValSize >= 1 )\n #set( $key = $util.escapeJavaScript($util.urlDecode($keyVal[0])) )\n #if( $keyValSize >= 2 )\n #set( $val = $util.escapeJavaScript($util.urlDecode($keyVal[1])) )\n #else\n #set( $val = '' )\n #end\n \"$key\": \"$val\"#if($foreach.hasNext),#end\n #end\n #end\n }\n #end\n\n #define( $loop )\n {\n #foreach($key in $map.keySet())\n \"$util.escapeJavaScript($key)\":\n \"$util.escapeJavaScript($map.get($key))\"\n #if( $foreach.hasNext ) , #end\n #end\n }\n #end\n\n {\n \"body\": $body,\n \"method\": \"$context.httpMethod\",\n \"principalId\": \"$context.authorizer.principalId\",\n \"stage\": \"$context.stage\",\n\n #set( $map = $input.params().header )\n \"headers\": $loop,\n\n #set( $map = $input.params().querystring )\n \"query\": $loop,\n\n #set( $map = $input.params().path )\n \"path\": $loop,\n\n #set( $map = $context.identity )\n \"identity\": $loop,\n\n #set( $map = $stageVariables )\n \"stageVariables\": $loop\n }\n " - }, - "PassthroughBehavior": "NEVER", - "IntegrationResponses": [ - { - "StatusCode": 200, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'" - }, - "ResponseTemplates": {} - }, - { - "StatusCode": 400, - "SelectionPattern": ".*\\[400\\].*" - }, - { - "StatusCode": 401, - "SelectionPattern": ".*\\[401\\].*" - }, - { - "StatusCode": 403, - "SelectionPattern": ".*\\[403\\].*" - }, - { - "StatusCode": 404, - "SelectionPattern": ".*\\[404\\].*" - }, - { - "StatusCode": 422, - "SelectionPattern": ".*\\[422\\].*" - }, - { - "StatusCode": 500, - "SelectionPattern": ".*(Process\\s?exited\\s?before\\s?completing\\s?request|Task\\s?timed\\s?out\\s?|\\[500\\]).*" - }, - { - "StatusCode": 502, - "SelectionPattern": ".*\\[502\\].*" - }, - { - "StatusCode": 504, - "SelectionPattern": ".*\\[504\\].*" - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodosIdVar" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosOptions": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "OPTIONS", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": true, - "method.response.header.Access-Control-Allow-Headers": true, - "method.response.header.Access-Control-Allow-Methods": true - }, - "StatusCode": "200" - } - ], - "RequestParameters": {}, - "Integration": { - "Type": "MOCK", - "RequestTemplates": { - "application/json": "{statusCode:200}" - }, - "IntegrationResponses": [ - { - "StatusCode": "200", - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'", - "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'", - "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,GET,POST'" - }, - "ResponseTemplates": { - "application/json": "" - } - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodos" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayMethodTodosIdVarOptions": { - "Type": "AWS::ApiGateway::Method", - "Properties": { - "AuthorizationType": "NONE", - "HttpMethod": "OPTIONS", - "MethodResponses": [ - { - "ResponseModels": {}, - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": true, - "method.response.header.Access-Control-Allow-Headers": true, - "method.response.header.Access-Control-Allow-Methods": true - }, - "StatusCode": "200" - } - ], - "RequestParameters": {}, - "Integration": { - "Type": "MOCK", - "RequestTemplates": { - "application/json": "{statusCode:200}" - }, - "IntegrationResponses": [ - { - "StatusCode": "200", - "ResponseParameters": { - "method.response.header.Access-Control-Allow-Origin": "'*'", - "method.response.header.Access-Control-Allow-Headers": "'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'", - "method.response.header.Access-Control-Allow-Methods": "'OPTIONS,DELETE,PUT,GET'" - }, - "ResponseTemplates": { - "application/json": "" - } - } - ] - }, - "ResourceId": { - "Ref": "ApiGatewayResourceTodosIdVar" - }, - "RestApiId": { - "Ref": "ApiGatewayRestApi" - } - } - }, - "ApiGatewayDeployment1476332749599": { - "Type": "AWS::ApiGateway::Deployment", - "Properties": { - "RestApiId": { - "Ref": "ApiGatewayRestApi" - }, - "StageName": "dev" - }, - "DependsOn": [ - "ApiGatewayMethodTodosPost", - "ApiGatewayMethodTodosGet", - "ApiGatewayMethodTodosIdVarGet", - "ApiGatewayMethodTodosIdVarPut", - "ApiGatewayMethodTodosIdVarDelete" - ] - }, - "CreateLambdaPermissionApiGateway": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "FunctionName": { - "Fn::GetAtt": [ - "CreateLambdaFunction", - "Arn" - ] - }, - "Action": "lambda:InvokeFunction", - "Principal": "apigateway.amazonaws.com" - } - }, - "ReadAllLambdaPermissionApiGateway": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "FunctionName": { - "Fn::GetAtt": [ - "ReadAllLambdaFunction", - "Arn" - ] - }, - "Action": "lambda:InvokeFunction", - "Principal": "apigateway.amazonaws.com" - } - }, - "ReadOneLambdaPermissionApiGateway": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "FunctionName": { - "Fn::GetAtt": [ - "ReadOneLambdaFunction", - "Arn" - ] - }, - "Action": "lambda:InvokeFunction", - "Principal": "apigateway.amazonaws.com" - } - }, - "UpdateLambdaPermissionApiGateway": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "FunctionName": { - "Fn::GetAtt": [ - "UpdateLambdaFunction", - "Arn" - ] - }, - "Action": "lambda:InvokeFunction", - "Principal": "apigateway.amazonaws.com" - } - }, - "DeleteLambdaPermissionApiGateway": { - "Type": "AWS::Lambda::Permission", - "Properties": { - "FunctionName": { - "Fn::GetAtt": [ - "DeleteLambdaFunction", - "Arn" - ] - }, - "Action": "lambda:InvokeFunction", - "Principal": "apigateway.amazonaws.com" - } - } - }, - "Outputs": { - "ServerlessDeploymentBucketName": { - "Value": { - "Ref": "ServerlessDeploymentBucket" - } - }, - "CreateLambdaFunctionArn": { - "Description": "Lambda function info", - "Value": { - "Fn::GetAtt": [ - "CreateLambdaFunction", - "Arn" - ] - } - }, - "ReadAllLambdaFunctionArn": { - "Description": "Lambda function info", - "Value": { - "Fn::GetAtt": [ - "ReadAllLambdaFunction", - "Arn" - ] - } - }, - "ReadOneLambdaFunctionArn": { - "Description": "Lambda function info", - "Value": { - "Fn::GetAtt": [ - "ReadOneLambdaFunction", - "Arn" - ] - } - }, - "UpdateLambdaFunctionArn": { - "Description": "Lambda function info", - "Value": { - "Fn::GetAtt": [ - "UpdateLambdaFunction", - "Arn" - ] - } - }, - "DeleteLambdaFunctionArn": { - "Description": "Lambda function info", - "Value": { - "Fn::GetAtt": [ - "DeleteLambdaFunction", - "Arn" - ] - } - }, - "ServiceEndpoint": { - "Description": "URL of the service endpoint", - "Value": { - "Fn::Join": [ - "", - [ - "https://", - { - "Ref": "ApiGatewayRestApi" - }, - ".execute-api.us-east-1.amazonaws.com/dev" - ] - ] - } - } - } -} \ No newline at end of file diff --git a/.serverless/serverless-crud.zip b/.serverless/serverless-crud.zip deleted file mode 100644 index 937d6e39a6e81bd39d77896870a77731a93d62b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2149353 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
qP0{_h3y5+lGHA*+h#8=TwDEsMc+ioPjy? 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

pB7;TCevFTYR^rC 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%0DXLy)j<^fZ%UU^ta5WG`?a7@PRa3FrFx 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 z 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%0D&*P3z&P{KJ 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 z z=MRu5<L5Un@*OE3!ImQ1?GO%Gnd%Gq3WqwSg7dAR^dBghCKv(&p-MbOW% zI2u49TX_sd02l|8?&#q&bQhXkP)Ed5bLlCgv!YL_n#=_-CcK&onN#xEA(JPCe9VRd zdt5QHQb%y@E7F69kc)u5QeY*F551og8*CfV$`^tAeZdtW0aoWQmIALHm|LB_l_at* zUYHBKgMo{@_lEGg+?}@Bdf*ZoS&&euuiM-nF*8lOh zzX5*VOdJN2x7%-~tLwkbR@1*h_G=n23Jz+EnGqUN)j%$E$X*OXt7lJ_kmh^|$=KmO z&ntY^{=fFCoihLPC7>;I8o*Krmuoc?noBD1d)njE8Sg80TI_qYdH-@RA4uniz4o;O^&ad|Hf`?1J+R!-(ZLxC$ zpz0mC@Bgv&B76or(M=NbG+q2LXjKR4g1U?uTDJ^K_e-$Jm{kcx^|$r(MO|-TLILz! zhIFNocE{wH;{E~Ul6<9XpLsbXa{3XlO0>op)@Zs=@Qp!*R%#NGgYn$LUfBjDhw!u) zZAxSftCxr@9DnMQ*=&O^N_@0(@o05Dnfpa9mP*nOj!_2V
pVm^HezF$4>VQB7} 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
GT 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"+5s$Jt-tQ;J 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%0A|0UEN}0 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

s!lq~#?9vB0t5ROSF6Z|C(C>k=%!hGF#-4EQ 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�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�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%0Dfe37t1fHycN_ehF?{YOVz)h~`NzUF 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

ayxD|$muWh8QJ_$o{v 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 FB#sAf`j86Qx~4s1s&Q(%~N| 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

= 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

8P$u%KPB(0Ry>#>X?eq}gnEE#IN<)0SW+$N3g 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

8P$u%KPB(0Ry>#>X?eq}gnEE#IN<)0SW+$N3g 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